@jbrowse/core 5.0.0-beta.11 → 5.0.0-beta.14
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 +450 -132
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +6 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +18 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +15 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +4 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +1 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +1 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +15 -36
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +29 -20
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +13 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +28 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +9 -0
- package/esm/BaseFeatureWidget/stateModelFactory.js +11 -0
- package/esm/BaseFeatureWidget/types.d.ts +2 -0
- package/esm/PluginManager.d.ts +7 -3
- package/esm/PluginManager.js +12 -3
- package/esm/ReExports/coreModules.generated.js +538 -518
- package/esm/ReExports/coreWorkerModules.generated.js +456 -438
- package/esm/ReExports/lazify.js +3 -2
- package/esm/ReExports/list.js +22 -6
- package/esm/ReExports/names.d.ts +1 -0
- package/esm/ReExports/names.generated.d.ts +2 -0
- package/esm/ReExports/names.generated.js +566 -0
- package/esm/ReExports/names.js +3 -0
- package/esm/TextSearch/TextSearchManager.d.ts +3 -3
- package/esm/TextSearch/TextSearchManager.js +6 -13
- package/esm/assemblyManager/assembly.d.ts +9 -0
- package/esm/assemblyManager/assembly.js +13 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +6 -1
- package/esm/assemblyManager/assemblyConfigSchema.js +23 -22
- package/esm/assemblyManager/assemblyManager.d.ts +11 -0
- package/esm/assemblyManager/assemblyManager.js +2 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +9 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +23 -0
- package/esm/checkPlugins.js +10 -4
- package/esm/configuration/configurationSchema.d.ts +51 -100
- package/esm/configuration/configurationSchema.js +59 -225
- package/esm/configuration/configurationSchemaUnion.d.ts +2 -1
- package/esm/configuration/configurationSchemaUnion.js +2 -1
- package/esm/configuration/configurationSlot.d.ts +18 -64
- package/esm/configuration/configurationSlot.js +32 -98
- package/esm/configuration/fillLocations.d.ts +4 -2
- package/esm/configuration/fillLocations.js +9 -3
- package/esm/configuration/formatAboutConfigSchema.d.ts +2 -2
- package/esm/configuration/formatAboutConfigSchema.js +2 -2
- package/esm/configuration/formatDetailsConfigSchema.d.ts +2 -2
- package/esm/configuration/formatDetailsConfigSchema.js +7 -5
- package/esm/configuration/getConf.d.ts +7 -36
- package/esm/configuration/getConf.js +20 -41
- package/esm/configuration/index.d.ts +4 -3
- package/esm/configuration/index.js +3 -2
- package/esm/configuration/partitionAdvanced.d.ts +12 -0
- package/esm/configuration/partitionAdvanced.js +42 -0
- package/esm/configuration/plot.d.ts +6 -0
- package/esm/configuration/plot.js +56 -9
- package/esm/configuration/readConfObject.d.ts +15 -17
- package/esm/configuration/readConfObject.js +19 -50
- package/esm/configuration/schemaRegistry.d.ts +0 -2
- package/esm/configuration/schemaTypes.js +5 -1
- package/esm/configuration/slotFacade.js +2 -2
- package/esm/configuration/snapshotPreprocess.d.ts +42 -18
- package/esm/configuration/snapshotPreprocess.js +95 -37
- package/esm/configuration/tabixShorthand.js +1 -3
- package/esm/configuration/types.d.ts +60 -159
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +7 -0
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +0 -22
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +0 -55
- package/esm/data_adapters/BaseAdapter/index.d.ts +0 -1
- package/esm/data_adapters/BaseAdapter/index.js +0 -1
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +2 -2
- package/esm/data_adapters/BaseAdapter/types.d.ts +1 -0
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +2 -0
- package/esm/data_adapters/CytobandAdapter/configSchema.js +5 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +25 -13
- package/esm/data_adapters/dataAdapterCache.js +68 -24
- package/esm/data_adapters/getFeatureAdapter.d.ts +9 -0
- package/esm/data_adapters/getFeatureAdapter.js +17 -0
- package/esm/pluggableElementTypes/DisplayType.d.ts +7 -0
- package/esm/pluggableElementTypes/DisplayType.js +7 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +7 -0
- package/esm/pluggableElementTypes/RpcMethodType.js +9 -0
- package/esm/pluggableElementTypes/addMenuItems.d.ts +2 -1
- package/esm/pluggableElementTypes/addMenuItems.js +2 -1
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +2 -0
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +2 -0
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +40 -5
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +57 -9
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +5 -7
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +9 -10
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +2 -0
- package/esm/pluggableElementTypes/models/BaseViewModel.js +2 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +3 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +3 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +3 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +3 -0
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +3 -1
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +3 -1
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +12 -1
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +2 -2
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +1 -1
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +1 -1
- package/esm/pluginDefinitions.d.ts +7 -0
- package/esm/pluginDefinitions.js +20 -0
- package/esm/rpc/RpcRegistry.d.ts +2 -11
- package/esm/rpc/byteBudget.d.ts +15 -0
- package/esm/rpc/byteBudget.js +23 -0
- package/esm/rpc/configSchema.d.ts +2 -0
- package/esm/rpc/configSchema.js +3 -1
- package/esm/rpc/coreRpcMethods.d.ts +1 -2
- package/esm/rpc/coreRpcMethods.js +1 -2
- package/esm/rpc/explainTransferError.js +3 -3
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +2 -2
- package/esm/rpc/methods/CoreGetEncodedLayers.js +7 -5
- package/esm/rpc/methods/CoreLoadTrackCode.d.ts +17 -0
- package/esm/rpc/methods/CoreLoadTrackCode.js +24 -0
- package/esm/rpc/methods/layerFeatures.d.ts +9 -6
- package/esm/rpc/methods/layerFeatures.js +21 -5
- package/esm/ui/ActionLink.d.ts +3 -2
- package/esm/ui/ActionLink.js +4 -2
- package/esm/ui/AddCustomPluginDialog.d.ts +3 -2
- package/esm/ui/AddCustomPluginDialog.js +6 -4
- package/esm/ui/AppLogo.js +43 -3
- package/esm/ui/BaseTooltip.d.ts +3 -2
- package/esm/ui/BaseTooltip.js +4 -2
- package/esm/ui/CascadingMenu.js +14 -12
- package/esm/ui/CascadingMenuButton.d.ts +2 -2
- package/esm/ui/CascadingMenuButton.js +5 -4
- package/esm/ui/CascadingMenuHelpDialog.d.ts +3 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -2
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +4 -3
- package/esm/ui/CascadingMenuHelpIconButton.js +9 -5
- package/esm/ui/ColorPicker.d.ts +5 -4
- package/esm/ui/ColorPicker.js +6 -4
- package/esm/ui/ContextMenu.d.ts +1 -1
- package/esm/ui/ContextMenu.js +1 -1
- package/esm/ui/CopyToClipboardButton.d.ts +3 -2
- package/esm/ui/CopyToClipboardButton.js +4 -2
- package/esm/ui/Crosshairs.js +13 -10
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +3 -2
- package/esm/ui/DOMPurifySanitizedHTML.js +4 -2
- package/esm/ui/DataGridFlexContainer.d.ts +3 -2
- package/esm/ui/DataGridFlexContainer.js +4 -2
- package/esm/ui/Dialog.d.ts +1 -1
- package/esm/ui/Dialog.js +5 -4
- package/esm/ui/DropDownMenu.js +2 -2
- package/esm/ui/EditableTypography.d.ts +1 -1
- package/esm/ui/EditableTypography.js +3 -2
- package/esm/ui/ErrorActions.d.ts +3 -2
- package/esm/ui/ErrorActions.js +4 -2
- package/esm/ui/ErrorBanner.d.ts +2 -2
- package/esm/ui/ErrorBanner.js +3 -2
- package/esm/ui/ErrorBar.d.ts +3 -2
- package/esm/ui/ErrorBar.js +4 -2
- package/esm/ui/ErrorMessage.d.ts +3 -2
- package/esm/ui/ErrorMessage.js +4 -2
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +3 -2
- package/esm/ui/ErrorMessageStackTraceContents.js +4 -2
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +3 -2
- package/esm/ui/ErrorMessageStackTraceDialog.js +4 -2
- package/esm/ui/ErrorOverlay.d.ts +3 -2
- package/esm/ui/ErrorOverlay.js +4 -2
- package/esm/ui/ExportSvgDialog.d.ts +3 -2
- package/esm/ui/ExportSvgDialog.js +4 -2
- package/esm/ui/ExternalLink.d.ts +2 -1
- package/esm/ui/ExternalLink.js +4 -2
- package/esm/ui/FactoryResetDialog.d.ts +3 -2
- package/esm/ui/FactoryResetDialog.js +4 -2
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -4
- package/esm/ui/FileDropZone.d.ts +3 -2
- package/esm/ui/FileDropZone.js +4 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +4 -4
- package/esm/ui/FileSelector/LocationInput.d.ts +3 -2
- package/esm/ui/FileSelector/LocationInput.js +4 -2
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +3 -2
- package/esm/ui/FileSelector/SourceTypeSelector.js +8 -6
- package/esm/ui/GpuFallbackButton.d.ts +3 -2
- package/esm/ui/GpuFallbackButton.js +4 -2
- package/esm/ui/HoverMenu.d.ts +2 -2
- package/esm/ui/HoverMenu.js +7 -3
- package/esm/ui/HoverTooltip.d.ts +3 -2
- package/esm/ui/HoverTooltip.js +4 -2
- package/esm/ui/Icons.d.ts +5 -5
- package/esm/ui/Icons.js +11 -10
- package/esm/ui/InlineMenuControls.d.ts +2 -2
- package/esm/ui/InlineMenuControls.js +4 -3
- package/esm/ui/JexlFilterRowEditors.d.ts +4 -4
- package/esm/ui/JexlFilterRowEditors.js +9 -8
- package/esm/ui/LabeledCheckbox.d.ts +3 -2
- package/esm/ui/LabeledCheckbox.js +4 -2
- package/esm/ui/LazyBaseTooltip.d.ts +12 -3
- package/esm/ui/LazyBaseTooltip.js +4 -2
- package/esm/ui/LegendSwatchGlyph.js +1 -0
- package/esm/ui/LoadingDots.d.ts +2 -1
- package/esm/ui/LoadingDots.js +4 -2
- package/esm/ui/LoadingEllipses.d.ts +5 -2
- package/esm/ui/LoadingEllipses.js +5 -3
- package/esm/ui/LoadingOverlay.d.ts +3 -2
- package/esm/ui/LoadingOverlay.js +4 -2
- package/esm/ui/LoadingProgress.d.ts +3 -2
- package/esm/ui/LoadingProgress.js +4 -2
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +9 -8
- package/esm/ui/MenuItemChevron.d.ts +2 -2
- package/esm/ui/MenuItemChevron.js +3 -2
- package/esm/ui/MenuItemEndDecoration.d.ts +2 -2
- package/esm/ui/MenuItemEndDecoration.js +3 -2
- package/esm/ui/MenuItemTrailing.d.ts +2 -2
- package/esm/ui/MenuItemTrailing.js +7 -6
- package/esm/ui/MenuTypes.d.ts +21 -1
- package/esm/ui/MenuTypes.js +20 -0
- package/esm/ui/MonospaceTextField.d.ts +3 -2
- package/esm/ui/MonospaceTextField.js +4 -2
- package/esm/ui/NumberTextField.d.ts +2 -2
- package/esm/ui/NumberTextField.js +4 -2
- package/esm/ui/PaletteContext.d.ts +11 -9
- package/esm/ui/PaletteContext.js +33 -18
- package/esm/ui/PluginStoreCard.d.ts +3 -2
- package/esm/ui/PluginStoreCard.js +4 -2
- package/esm/ui/PopoverPicker.d.ts +3 -2
- package/esm/ui/PopoverPicker.js +4 -2
- package/esm/ui/PrerenderedCanvas.d.ts +2 -2
- package/esm/ui/PrerenderedCanvas.js +3 -2
- package/esm/ui/RedErrorMessageBox.d.ts +3 -2
- package/esm/ui/RedErrorMessageBox.js +4 -2
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +3 -2
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +4 -2
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -2
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +4 -2
- package/esm/ui/ReplaceCurrentViewButton.d.ts +3 -2
- package/esm/ui/ReplaceCurrentViewButton.js +4 -2
- package/esm/ui/ResizeHandle.d.ts +2 -2
- package/esm/ui/ResizeHandle.js +3 -2
- package/esm/ui/SanitizedHTML.d.ts +3 -2
- package/esm/ui/SanitizedHTML.js +6 -4
- package/esm/ui/ScrollChrome.d.ts +3 -2
- package/esm/ui/ScrollChrome.js +4 -2
- package/esm/ui/ScrollEdgeShadow.d.ts +2 -2
- package/esm/ui/ScrollEdgeShadow.js +2 -2
- package/esm/ui/SessionJsonPanel.d.ts +3 -2
- package/esm/ui/SessionJsonPanel.js +4 -2
- package/esm/ui/ShareLinkField.d.ts +3 -2
- package/esm/ui/ShareLinkField.js +4 -2
- package/esm/ui/SingleSlider.d.ts +2 -2
- package/esm/ui/SingleSlider.js +4 -2
- package/esm/ui/SliderTooltip.d.ts +2 -1
- package/esm/ui/SliderTooltip.js +4 -2
- package/esm/ui/SnackbarContents.d.ts +3 -2
- package/esm/ui/SnackbarContents.js +4 -2
- package/esm/ui/SnackbarModel.d.ts +2 -0
- package/esm/ui/SnackbarModel.js +2 -0
- package/esm/ui/StackTraceButton.d.ts +3 -2
- package/esm/ui/StackTraceButton.js +4 -2
- package/esm/ui/StatusProgressBar.d.ts +3 -2
- package/esm/ui/StatusProgressBar.js +4 -2
- package/esm/ui/SubmitForm.d.ts +2 -1
- package/esm/ui/SubmitForm.js +4 -2
- package/esm/ui/SvgColorLegend.d.ts +3 -4
- package/esm/ui/SvgColorLegend.js +27 -18
- package/esm/ui/TagTextField.d.ts +2 -2
- package/esm/ui/TagTextField.js +4 -2
- package/esm/ui/ViewLoadingScreen.d.ts +3 -2
- package/esm/ui/ViewLoadingScreen.js +4 -2
- package/esm/ui/buildExtraTrackMenuItems.d.ts +2 -2
- package/esm/ui/colorScale.d.ts +5 -1
- package/esm/ui/colorScale.js +12 -10
- package/esm/ui/colors.d.ts +42 -31
- package/esm/ui/colors.js +85 -48
- package/esm/ui/filterMenuItems.d.ts +10 -31
- package/esm/ui/filterMenuItems.js +13 -14
- package/esm/ui/index.d.ts +1 -1
- package/esm/ui/index.js +1 -1
- package/esm/ui/launchTargetsMenuItem.js +9 -13
- package/esm/ui/legendMenuItem.d.ts +4 -4
- package/esm/ui/legendMenuItem.js +4 -4
- package/esm/ui/menuItemAdornment.d.ts +1 -1
- package/esm/ui/menuItemAdornment.js +1 -1
- package/esm/ui/menuItems.d.ts +1 -1
- package/esm/ui/menuItems.js +1 -1
- package/esm/ui/menuLabels.d.ts +2 -2
- package/esm/ui/menuLabels.js +2 -2
- package/esm/ui/multiTrackMenuItems.d.ts +2 -2
- package/esm/ui/palette.d.ts +2 -2
- package/esm/ui/palette.js +10 -10
- package/esm/ui/radioSubMenu.d.ts +5 -3
- package/esm/ui/radioSubMenu.js +2 -2
- package/esm/ui/rampKey.d.ts +15 -0
- package/esm/ui/rampKey.js +17 -0
- package/esm/ui/showSubMenu.d.ts +0 -5
- package/esm/ui/showSubMenu.js +6 -15
- package/esm/ui/theme.d.ts +2 -2
- package/esm/ui/theme.js +1 -1
- package/esm/ui/useAssemblySelection.d.ts +2 -0
- package/esm/ui/useMouseTracking.d.ts +8 -20
- package/esm/ui/useMouseTracking.js +23 -62
- package/esm/ui/usePlacedMenuFocus.d.ts +19 -0
- package/esm/ui/usePlacedMenuFocus.js +28 -0
- package/esm/util/Base1DViewModel.d.ts +5 -3
- package/esm/util/Base1DViewModel.js +5 -3
- package/esm/util/SvgCanvas.js +1 -1
- package/esm/util/aggregateFieldName.d.ts +1 -10
- package/esm/util/aggregateFieldName.js +1 -8
- package/esm/util/alignedBytes.d.ts +19 -0
- package/esm/util/alignedBytes.js +37 -0
- package/esm/util/analytics.d.ts +6 -9
- package/esm/util/analytics.js +148 -15
- package/esm/util/bezierConnector.d.ts +20 -0
- package/esm/util/bezierConnector.js +34 -96
- package/esm/util/cacheBudgets.d.ts +3 -0
- package/esm/util/cacheBudgets.js +3 -0
- package/esm/util/categoricalField.d.ts +24 -4
- package/esm/util/categoricalField.js +38 -5
- package/esm/util/cellMatches.js +14 -14
- package/esm/util/cellsStep.d.ts +3 -5
- package/esm/util/cellsStep.js +31 -29
- package/esm/util/color/index.d.ts +1 -1
- package/esm/util/color/index.js +2 -2
- package/esm/util/color-bits/bit.js +1 -1
- package/esm/util/color-bits/parse.js +28 -17
- package/esm/util/colorBits.d.ts +15 -4
- package/esm/util/colorBits.js +38 -15
- package/esm/util/colorRamp.d.ts +3 -3
- package/esm/util/colorRamp.js +20 -2
- package/esm/util/colorScale.d.ts +123 -22
- package/esm/util/colorScale.js +157 -28
- package/esm/util/colorSchemes.d.ts +7 -3
- package/esm/util/colorSchemes.js +8 -2
- package/esm/util/createSvgRasterCanvas.d.ts +14 -1
- package/esm/util/createSvgRasterCanvas.js +36 -12
- package/esm/util/diagonalizeRegions.js +18 -9
- package/esm/util/featureTransforms.d.ts +2 -2
- package/esm/util/featureTransforms.js +85 -135
- package/esm/util/fileHandleStore.js +5 -0
- package/esm/util/groupKeys.d.ts +5 -4
- package/esm/util/groupKeys.js +15 -9
- package/esm/util/index.js +1 -1
- package/esm/util/installFetch.d.ts +2 -2
- package/esm/util/installPrerequisiteFetch.d.ts +8 -3
- package/esm/util/installPrerequisiteFetch.js +9 -7
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +1 -1
- package/esm/util/io/RemoteFileWithRangeCache.js +1 -1
- package/esm/util/isoformRank.d.ts +39 -0
- package/esm/util/isoformRank.js +118 -0
- package/esm/util/jexl.js +1 -1
- package/esm/util/layouts/GranularRectLayout.d.ts +19 -3
- package/esm/util/layouts/GranularRectLayout.js +57 -34
- package/esm/util/leadingEdgeAutorun.d.ts +9 -1
- package/esm/util/leadingEdgeAutorun.js +5 -2
- package/esm/util/markEncoding.d.ts +10 -8
- package/esm/util/markEncoding.js +50 -12
- package/esm/util/markEncodingTypes.d.ts +77 -21
- package/esm/util/originCut.d.ts +14 -0
- package/esm/util/originCut.js +19 -0
- package/esm/util/paintLayer.d.ts +1 -1
- package/esm/util/paintLayer.js +4 -3
- package/esm/util/pathSeries.d.ts +18 -0
- package/esm/util/pathSeries.js +143 -0
- package/esm/util/pressOwner.d.ts +20 -0
- package/esm/util/pressOwner.js +26 -0
- package/esm/util/quantileExtent.d.ts +23 -1
- package/esm/util/quantileExtent.js +25 -2
- package/esm/util/rowStackGeometry.d.ts +1 -1
- package/esm/util/rowStackGeometry.js +1 -1
- package/esm/util/sessionActivity.d.ts +36 -0
- package/esm/util/sessionActivity.js +88 -0
- package/esm/util/stepOutputs.d.ts +165 -0
- package/esm/util/stepOutputs.js +201 -0
- package/esm/util/stepTables.d.ts +7 -3
- package/esm/util/stepTables.js +86 -3
- package/esm/util/systemColorScheme.d.ts +4 -0
- package/esm/util/systemColorScheme.js +21 -0
- package/esm/util/tabix.d.ts +1 -1
- package/esm/util/tabix.js +1 -1
- package/esm/util/temporaryAssembly.d.ts +2 -2
- package/esm/util/temporaryAssembly.js +2 -3
- package/esm/util/thresholdScale.d.ts +1 -1
- package/esm/util/thresholdScale.js +1 -1
- package/esm/util/trackConfigDelta.d.ts +1 -1
- package/esm/util/tracks.d.ts +25 -15
- package/esm/util/tracks.js +68 -44
- package/esm/util/types/index.d.ts +15 -7
- package/esm/util/types/index.js +21 -2
- package/esm/util/usePanZoom.js +4 -10
- package/esm/util/useRowVirtualScroll.d.ts +1 -0
- package/esm/util/windowStep.d.ts +6 -0
- package/esm/util/windowStep.js +153 -0
- package/package.json +27 -16
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +0 -40
- package/esm/data_adapters/BaseAdapter/featureDensity.js +0 -31
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDensity.js +0 -22
- package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +0 -13
- package/esm/rpc/methods/CoreLoadAdapterCode.js +0 -16
|
@@ -24,15 +24,21 @@ function readsReference(pluginManager, adapterConfig) {
|
|
|
24
24
|
}
|
|
25
25
|
// Pruned by storeWithEvict (rejections) and by freeAdapterResources, which the
|
|
26
26
|
// CoreFreeResources RPC reaches when the last track holding an adapter config is
|
|
27
|
-
// closed (releaseAdapterSession).
|
|
28
|
-
// whose track stays open lives as long as its worker, by design.
|
|
29
|
-
|
|
27
|
+
// closed (releaseAdapterSession). The browser sets no size bound: an adapter
|
|
28
|
+
// whose track stays open lives as long as its worker, by design. A host with no
|
|
29
|
+
// tracks to close bounds it with keepAdapters. Ordered least recently
|
|
30
|
+
// requested first.
|
|
31
|
+
let adapterCache = new Map();
|
|
32
|
+
let requests = 0;
|
|
33
|
+
const lastRequests = new WeakMap();
|
|
30
34
|
/** stores a promise in the cache and auto-evicts if it rejects */
|
|
31
35
|
function storeWithEvict(key, p) {
|
|
32
36
|
p.catch(() => {
|
|
33
|
-
|
|
37
|
+
if (adapterCache.get(key) === p) {
|
|
38
|
+
adapterCache.delete(key);
|
|
39
|
+
}
|
|
34
40
|
});
|
|
35
|
-
adapterCache
|
|
41
|
+
adapterCache.set(key, p);
|
|
36
42
|
return p;
|
|
37
43
|
}
|
|
38
44
|
async function getAdapterPre(pluginManager, sessionId, adapterConfigSnapshot, keyedSequence) {
|
|
@@ -65,8 +71,13 @@ function getOrCreateEntry(pluginManager, sessionId, adapterConfigSnapshot, seque
|
|
|
65
71
|
const cacheKey = keyedSequence
|
|
66
72
|
? `${configKey}|${adapterConfigCacheKey(keyedSequence)}`
|
|
67
73
|
: configKey;
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
const cached = adapterCache.get(cacheKey);
|
|
75
|
+
if (cached) {
|
|
76
|
+
adapterCache.delete(cacheKey);
|
|
77
|
+
adapterCache.set(cacheKey, cached);
|
|
78
|
+
return cached;
|
|
79
|
+
}
|
|
80
|
+
return storeWithEvict(cacheKey, getAdapterPre(pluginManager, sessionId, adapterConfigSnapshot, keyedSequence));
|
|
70
81
|
}
|
|
71
82
|
/**
|
|
72
83
|
* instantiate a data adapter, or return a cached one with the same config.
|
|
@@ -77,6 +88,7 @@ function getOrCreateEntry(pluginManager, sessionId, adapterConfigSnapshot, seque
|
|
|
77
88
|
export async function getAdapter(pluginManager, sessionId, adapterConfigSnapshot, sequenceAdapter) {
|
|
78
89
|
const ret = await getOrCreateEntry(pluginManager, sessionId, adapterConfigSnapshot, sequenceAdapter);
|
|
79
90
|
ret.sessionIds.add(sessionId);
|
|
91
|
+
lastRequests.set(ret, ++requests);
|
|
80
92
|
return ret;
|
|
81
93
|
}
|
|
82
94
|
/**
|
|
@@ -84,20 +96,19 @@ export async function getAdapter(pluginManager, sessionId, adapterConfigSnapshot
|
|
|
84
96
|
* other session still claims. Reached from the CoreFreeResources RPC when the
|
|
85
97
|
* last track using an adapter config closes.
|
|
86
98
|
*
|
|
87
|
-
* Deleting the key
|
|
88
|
-
*
|
|
89
|
-
* — a whole parsed GFF3, a BAM chunk cache — become unreachable and are
|
|
90
|
-
* collected normally. There is nothing to free by hand.
|
|
99
|
+
* Deleting the key makes the instance unreachable from here, and for most
|
|
100
|
+
* adapters that is the whole reclamation: a parsed GFF3 goes with it.
|
|
91
101
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* their parsed chunks in a SharedReadCache
|
|
95
|
-
* and
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
102
|
+
* The indexed adapters are the exception, which is why an evicted adapter is
|
|
103
|
+
* also told so (`freeResources`). @gmod/bam, @gmod/cram and @gmod/tabix each
|
|
104
|
+
* hold their parsed chunks in a SharedReadCache charged to the shared budget,
|
|
105
|
+
* and the budget credits a dropped cache back only once the collector has
|
|
106
|
+
* taken it. A run that opens and closes a track per image has no GC to wait
|
|
107
|
+
* for. `jb2export batch` drew a callset from CRAM slices of long reads at
|
|
108
|
+
* about a record every two seconds, and before @gmod/shared-read-cache 2.1 two
|
|
109
|
+
* of its four processes reached the 4 GB heap limit 135 s in, with the budget
|
|
110
|
+
* at 3,100 MB against its 1,024 MB limit: the budget left each of 54 caches
|
|
111
|
+
* its last entry. 2.1 keeps one entry per budget instead.
|
|
101
112
|
*
|
|
102
113
|
* The refcount is what makes this safe to call on any track close: an adapter
|
|
103
114
|
* pulled in as a sub-adapter carries its parent's sessionId (getSubAdapter
|
|
@@ -109,20 +120,53 @@ export async function freeAdapterResources(args) {
|
|
|
109
120
|
if (!sessionId) {
|
|
110
121
|
return;
|
|
111
122
|
}
|
|
112
|
-
for (const [cacheKey, cacheEntryP] of
|
|
123
|
+
for (const [cacheKey, cacheEntryP] of [...adapterCache]) {
|
|
113
124
|
try {
|
|
114
125
|
const cacheEntry = await cacheEntryP;
|
|
115
126
|
cacheEntry.sessionIds.delete(sessionId);
|
|
116
127
|
if (cacheEntry.sessionIds.size === 0) {
|
|
117
|
-
|
|
128
|
+
evict(cacheKey, cacheEntryP);
|
|
129
|
+
cacheEntry.dataAdapter.freeResources();
|
|
118
130
|
}
|
|
119
131
|
}
|
|
120
132
|
catch (e) {
|
|
121
133
|
console.error(`dataAdapterCache: evicting failed adapter "${cacheKey}"`, e);
|
|
122
|
-
|
|
134
|
+
evict(cacheKey, cacheEntryP);
|
|
123
135
|
}
|
|
124
136
|
}
|
|
125
137
|
}
|
|
138
|
+
function evict(cacheKey, entry) {
|
|
139
|
+
if (adapterCache.get(cacheKey) === entry) {
|
|
140
|
+
adapterCache.delete(cacheKey);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** How many adapter requests the cache has answered. */
|
|
144
|
+
export function adapterRequests() {
|
|
145
|
+
return requests;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Evict every cached adapter `keep` declines, each told to free what it holds,
|
|
149
|
+
* whatever sessions claim it. `keep` sees the settled adapters most recently
|
|
150
|
+
* requested first, each with the {@link adapterRequests} count at its latest
|
|
151
|
+
* request. For a host with no tracks to close, such as `@jbrowse/tables`,
|
|
152
|
+
* which would otherwise keep an adapter, its parsed index and its share of the
|
|
153
|
+
* decoded-bytes budget for every file it ever read.
|
|
154
|
+
*/
|
|
155
|
+
export async function keepAdapters(keep) {
|
|
156
|
+
const cached = [...adapterCache].reverse();
|
|
157
|
+
const settled = await Promise.all(cached.map(([, entry]) => entry.catch(() => undefined)));
|
|
158
|
+
cached.forEach(([cacheKey, entry], i) => {
|
|
159
|
+
const adapter = settled[i];
|
|
160
|
+
if (adapter && !keep(adapter.dataAdapter, lastRequests.get(adapter) ?? 0)) {
|
|
161
|
+
evict(cacheKey, entry);
|
|
162
|
+
adapter.dataAdapter.freeResources();
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/** How many adapters the cache holds, failed and pending ones included. */
|
|
167
|
+
export function cachedAdapterCount() {
|
|
168
|
+
return adapterCache.size;
|
|
169
|
+
}
|
|
126
170
|
export function clearAdapterCache() {
|
|
127
|
-
adapterCache =
|
|
171
|
+
adapterCache = new Map();
|
|
128
172
|
}
|
|
@@ -22,3 +22,12 @@ export declare function getFeatureAdapter({ pluginManager, sessionId, adapterCon
|
|
|
22
22
|
* undefined, so callers get a definite type and no cast.
|
|
23
23
|
*/
|
|
24
24
|
export declare function getFeatureAdapterOrThrow(args: GetFeatureAdapterArgs): Promise<BaseFeatureDataAdapter>;
|
|
25
|
+
/**
|
|
26
|
+
* The cached adapter a `@jbrowse/tables` read uses, which every tables
|
|
27
|
+
* lookup goes through. A `READS_REFERENCE` adapter is keyed on its
|
|
28
|
+
* config and `sequenceAdapter`, so a lookup without the one the read uses
|
|
29
|
+
* builds a second instance with its own index.
|
|
30
|
+
*/
|
|
31
|
+
export declare function tablesAdapter(pluginManager: PluginManager, adapterConfig: Record<string, unknown>, sequenceAdapter: Record<string, unknown> | undefined): Promise<import("./BaseAdapter/util.ts").AnyDataAdapter>;
|
|
32
|
+
/** {@link tablesAdapter}, refusing an adapter that serves no features. */
|
|
33
|
+
export declare function tablesFeatureAdapter(pluginManager: PluginManager, adapterConfig: Record<string, unknown>, sequenceAdapter: Record<string, unknown> | undefined): Promise<BaseFeatureDataAdapter<import("../configuration/types.ts").AnyConfigurationModel> | BaseFeatureDataAdapter<import("../configuration/types.ts").AnyConfigurationModel> | import("./BaseAdapter/BaseSequenceAdapter.ts").BaseSequenceAdapter<import("../configuration/types.ts").AnyConfigurationModel>>;
|
|
@@ -25,3 +25,20 @@ export async function getFeatureAdapterOrThrow(args) {
|
|
|
25
25
|
}
|
|
26
26
|
return dataAdapter;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* The cached adapter a `@jbrowse/tables` read uses, which every tables
|
|
30
|
+
* lookup goes through. A `READS_REFERENCE` adapter is keyed on its
|
|
31
|
+
* config and `sequenceAdapter`, so a lookup without the one the read uses
|
|
32
|
+
* builds a second instance with its own index.
|
|
33
|
+
*/
|
|
34
|
+
export async function tablesAdapter(pluginManager, adapterConfig, sequenceAdapter) {
|
|
35
|
+
return (await getAdapter(pluginManager, 'tables', adapterConfig, sequenceAdapter)).dataAdapter;
|
|
36
|
+
}
|
|
37
|
+
/** {@link tablesAdapter}, refusing an adapter that serves no features. */
|
|
38
|
+
export async function tablesFeatureAdapter(pluginManager, adapterConfig, sequenceAdapter) {
|
|
39
|
+
const adapter = await tablesAdapter(pluginManager, adapterConfig, sequenceAdapter);
|
|
40
|
+
if (!isFeatureAdapter(adapter)) {
|
|
41
|
+
throw new Error(`adapter "${adapterConfig.type}" is not a feature adapter`);
|
|
42
|
+
}
|
|
43
|
+
return adapter;
|
|
44
|
+
}
|
|
@@ -53,6 +53,12 @@ export default class DisplayType extends LazyStateModelElement {
|
|
|
53
53
|
* not given one.
|
|
54
54
|
*/
|
|
55
55
|
adapterCapabilities: readonly string[];
|
|
56
|
+
/**
|
|
57
|
+
* The RPC methods this display's first fetch calls. A track launching with
|
|
58
|
+
* it loads their code in its worker beside the adapter's
|
|
59
|
+
* (`RpcMethodType.preload`).
|
|
60
|
+
*/
|
|
61
|
+
rpcMethods: readonly string[];
|
|
56
62
|
retiredTypes: readonly RetiredDisplayType[];
|
|
57
63
|
retiredState?: RetiredDisplayState;
|
|
58
64
|
/**
|
|
@@ -70,6 +76,7 @@ export default class DisplayType extends LazyStateModelElement {
|
|
|
70
76
|
ReactComponent: AnyReactComponentType;
|
|
71
77
|
helpText?: string;
|
|
72
78
|
adapterCapabilities?: readonly string[];
|
|
79
|
+
rpcMethods?: readonly string[];
|
|
73
80
|
retiredTypes?: readonly RetiredDisplayType[];
|
|
74
81
|
retiredState?: RetiredDisplayState;
|
|
75
82
|
plotExamples?: readonly PlotExample[];
|
|
@@ -24,6 +24,12 @@ export default class DisplayType extends LazyStateModelElement {
|
|
|
24
24
|
* not given one.
|
|
25
25
|
*/
|
|
26
26
|
adapterCapabilities;
|
|
27
|
+
/**
|
|
28
|
+
* The RPC methods this display's first fetch calls. A track launching with
|
|
29
|
+
* it loads their code in its worker beside the adapter's
|
|
30
|
+
* (`RpcMethodType.preload`).
|
|
31
|
+
*/
|
|
32
|
+
rpcMethods;
|
|
27
33
|
retiredTypes;
|
|
28
34
|
retiredState;
|
|
29
35
|
/**
|
|
@@ -42,6 +48,7 @@ export default class DisplayType extends LazyStateModelElement {
|
|
|
42
48
|
this.viewType = stuff.viewType;
|
|
43
49
|
this.helpText = stuff.helpText;
|
|
44
50
|
this.adapterCapabilities = stuff.adapterCapabilities ?? [];
|
|
51
|
+
this.rpcMethods = stuff.rpcMethods ?? [];
|
|
45
52
|
this.retiredTypes = stuff.retiredTypes ?? [];
|
|
46
53
|
this.retiredState = stuff.retiredState;
|
|
47
54
|
this.plotExamples = stuff.plotExamples ?? [];
|
|
@@ -70,6 +70,13 @@ export default abstract class RpcMethodType<MethodName extends string = string>
|
|
|
70
70
|
name: MethodName;
|
|
71
71
|
pluginManager: PluginManager;
|
|
72
72
|
constructor(pluginManager: PluginManager);
|
|
73
|
+
/**
|
|
74
|
+
* Start loading the code `execute` runs, for a method whose body is a dynamic
|
|
75
|
+
* import. A display that names the method in `rpcMethods` has its worker call
|
|
76
|
+
* this when its track launches, so the import lands beside the adapter's code
|
|
77
|
+
* instead of after the first request's refName lookup.
|
|
78
|
+
*/
|
|
79
|
+
preload(): Promise<unknown>;
|
|
73
80
|
serializeArguments(args: object): Promise<Record<string, unknown>>;
|
|
74
81
|
/**
|
|
75
82
|
* The reference sequence of the genome a call names in `assemblyName`, as a
|
|
@@ -167,6 +167,15 @@ export default class RpcMethodType extends PluggableElementBase {
|
|
|
167
167
|
super();
|
|
168
168
|
this.pluginManager = pluginManager;
|
|
169
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Start loading the code `execute` runs, for a method whose body is a dynamic
|
|
172
|
+
* import. A display that names the method in `rpcMethods` has its worker call
|
|
173
|
+
* this when its track launches, so the import lands beside the adapter's code
|
|
174
|
+
* instead of after the first request's refName lookup.
|
|
175
|
+
*/
|
|
176
|
+
async preload() {
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
170
179
|
async serializeArguments(args) {
|
|
171
180
|
const augmented = await this.augmentLocationObjects(this.attachReference(args));
|
|
172
181
|
return {
|
|
@@ -71,7 +71,8 @@ export declare function addViewMenuItems<N extends ViewTypeName, K extends MenuM
|
|
|
71
71
|
* Add items to a menu on a display type belonging to another plugin, e.g. an
|
|
72
72
|
* "open this read in a dotplot" entry on the alignments display's context menu.
|
|
73
73
|
* See {@link addViewMenuItems}; the name is checked against
|
|
74
|
-
* `DisplayTypeRegistry`.
|
|
74
|
+
* `DisplayTypeRegistry`. It matches the registered name only, so an item added
|
|
75
|
+
* to `LinearMarkDisplay` misses `LinearManhattanDisplay`, which subtypes it.
|
|
75
76
|
*
|
|
76
77
|
* ```ts
|
|
77
78
|
* addDisplayMenuItems(pluginManager, 'LinearAlignmentsDisplay', {
|
|
@@ -63,7 +63,8 @@ export function addViewMenuItems(pluginManager, name, options) {
|
|
|
63
63
|
* Add items to a menu on a display type belonging to another plugin, e.g. an
|
|
64
64
|
* "open this read in a dotplot" entry on the alignments display's context menu.
|
|
65
65
|
* See {@link addViewMenuItems}; the name is checked against
|
|
66
|
-
* `DisplayTypeRegistry`.
|
|
66
|
+
* `DisplayTypeRegistry`. It matches the registered name only, so an item added
|
|
67
|
+
* to `LinearMarkDisplay` misses `LinearManhattanDisplay`, which subtypes it.
|
|
67
68
|
*
|
|
68
69
|
* ```ts
|
|
69
70
|
* addDisplayMenuItems(pluginManager, 'LinearAlignmentsDisplay', {
|
|
@@ -3,6 +3,8 @@ import type { AnyConfigurationModel } from '../../configuration/index.ts';
|
|
|
3
3
|
type TrackConf = AnyConfigurationModel | Record<string, unknown>;
|
|
4
4
|
/**
|
|
5
5
|
* #stateModel BaseConnectionModel
|
|
6
|
+
* Holds the tracks a connection has loaded. Each connection type overrides
|
|
7
|
+
* `connect` to fetch them from its source.
|
|
6
8
|
*/
|
|
7
9
|
declare function stateModelFactory(pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<{
|
|
8
10
|
/**
|
|
@@ -3,6 +3,8 @@ import { ConfigurationReference, readConfObject, } from '../../configuration/ind
|
|
|
3
3
|
import configSchema from './baseConnectionConfig.js';
|
|
4
4
|
/**
|
|
5
5
|
* #stateModel BaseConnectionModel
|
|
6
|
+
* Holds the tracks a connection has loaded. Each connection type overrides
|
|
7
|
+
* `connect` to fetch them from its source.
|
|
6
8
|
*/
|
|
7
9
|
function stateModelFactory(pluginManager) {
|
|
8
10
|
return types
|
|
@@ -655,6 +655,21 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
655
655
|
* #method
|
|
656
656
|
*/
|
|
657
657
|
trackMenuItems(): MenuItem[];
|
|
658
|
+
/**
|
|
659
|
+
* #method
|
|
660
|
+
* What a config says that cannot be drawn as written: by default the
|
|
661
|
+
* schema's rules over its color objects and `scales.y`, the ones
|
|
662
|
+
* `jbrowse validate` runs. A display with rules of its own overrides it.
|
|
663
|
+
* `plotProblems` asks it of a draft and `notices` of the live config,
|
|
664
|
+
* so Edit plot and the corner never disagree.
|
|
665
|
+
*/
|
|
666
|
+
configProblemsOf(conf: AnyConfigurationModel): string[];
|
|
667
|
+
/**
|
|
668
|
+
* #getter
|
|
669
|
+
* What the loaded data says beside the config, such as a field no
|
|
670
|
+
* fetched feature carries. None unless a display overrides it.
|
|
671
|
+
*/
|
|
672
|
+
readonly liveNotices: string[];
|
|
658
673
|
} & {
|
|
659
674
|
/**
|
|
660
675
|
* #action
|
|
@@ -689,9 +704,11 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
689
704
|
* were applied. Each key runs through the display config schema's
|
|
690
705
|
* `preProcessSnapshot` (shorthand expansions and legacy-key migrations,
|
|
691
706
|
* as `showTrackGeneric` applies to a session spec's inline track keys),
|
|
692
|
-
* then writes the matching config slot. A key naming a
|
|
693
|
-
*
|
|
694
|
-
* lifted by that schema, and `null`
|
|
707
|
+
* then writes the matching config slot. A key naming a channel (`facet`,
|
|
708
|
+
* `color`, `rows`, any object with a one-value shorthand) replaces the
|
|
709
|
+
* whole object, its string shorthand lifted by that schema, and `null`
|
|
710
|
+
* clears it; `scales` names members inside it and leaves the rest. Keys
|
|
711
|
+
* that are not slots
|
|
695
712
|
* come back in `unapplied` as `{ key, reason }`, so a caller can tell a
|
|
696
713
|
* misspelling from a key that has an action instead of a slot.
|
|
697
714
|
*
|
|
@@ -738,6 +755,24 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
738
755
|
* checks it with `plotProblems` and hands it to `applyPlot`.
|
|
739
756
|
*/
|
|
740
757
|
readonly plot: Plot;
|
|
758
|
+
/**
|
|
759
|
+
* #getter
|
|
760
|
+
* `configProblemsOf` the live config.
|
|
761
|
+
*/
|
|
762
|
+
readonly configNotices: string[];
|
|
763
|
+
/**
|
|
764
|
+
* #getter
|
|
765
|
+
* Every line the display has to say about what it cannot draw as
|
|
766
|
+
* written, as an agent's settle report reads them: `configNotices`,
|
|
767
|
+
* then `liveNotices`.
|
|
768
|
+
*/
|
|
769
|
+
readonly notices: string[];
|
|
770
|
+
/**
|
|
771
|
+
* #getter
|
|
772
|
+
* The lines the display chrome's corner chip lists: `notices`, less any
|
|
773
|
+
* a display shows in a chip of its own.
|
|
774
|
+
*/
|
|
775
|
+
readonly cornerNotices: string[];
|
|
741
776
|
/**
|
|
742
777
|
* #getter
|
|
743
778
|
* The worked examples this display type declares, which "Edit plot..."
|
|
@@ -759,8 +794,8 @@ export declare const BaseDisplay: import("@jbrowse/mobx-state-tree").IModelType<
|
|
|
759
794
|
/**
|
|
760
795
|
* #method
|
|
761
796
|
* What a draft would report once applied, throwing a refusal as
|
|
762
|
-
* `liftPlot` does
|
|
763
|
-
*
|
|
797
|
+
* `liftPlot` does: `configProblemsOf` the lifted draft. The draft still
|
|
798
|
+
* applies, and draws what it can.
|
|
764
799
|
*/
|
|
765
800
|
plotProblems(draft: Plot): string[];
|
|
766
801
|
/**
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { hasParent, isAlive, types } from '@jbrowse/mobx-state-tree';
|
|
2
2
|
import { applyConfSettings, getConfigurationSchemaMetadata, getConf, setConf, } from '../../configuration/index.js';
|
|
3
|
-
import { liftPlot as liftPlotDraft, plotKeysOf, plotOf, plotWrites as plotWritesOf, } from '../../configuration/plot.js';
|
|
3
|
+
import { liftPlot as liftPlotDraft, plotKeysOf, plotOf, plotWrites as plotWritesOf, schemaPlotProblems, } from '../../configuration/plot.js';
|
|
4
4
|
import { getContainingTrack, getEnv, statusFraction, statusMessageText, } from '../../util/index.js';
|
|
5
5
|
import { ElementId } from '../../util/types/mst.js';
|
|
6
6
|
import { displaySetterName } from '../../util/unknownSnapshotKeys.js';
|
|
7
7
|
/**
|
|
8
8
|
* #stateModel BaseDisplay
|
|
9
9
|
* #category display
|
|
10
|
+
* Holds a display's parent track, the adapter config read from that track, its
|
|
11
|
+
* load status and error, and the component that draws it. Every display
|
|
12
|
+
* composes this model.
|
|
10
13
|
*/
|
|
11
14
|
function stateModelFactory() {
|
|
12
15
|
return types
|
|
@@ -77,7 +80,7 @@ function stateModelFactory() {
|
|
|
77
80
|
// This is a snapshot, so read a specific slot with an array path off the
|
|
78
81
|
// live node (`getConf(track, ['adapter', 'x'])`) rather than off this —
|
|
79
82
|
// `types.stripDefault` omits a slot at its default. See
|
|
80
|
-
//
|
|
83
|
+
// agent-docs/reference/CONFIG_PATTERN.md.
|
|
81
84
|
return getConf(self.parentTrack, 'adapter');
|
|
82
85
|
},
|
|
83
86
|
/**
|
|
@@ -175,6 +178,25 @@ function stateModelFactory() {
|
|
|
175
178
|
trackMenuItems() {
|
|
176
179
|
return [];
|
|
177
180
|
},
|
|
181
|
+
/**
|
|
182
|
+
* #method
|
|
183
|
+
* What a config says that cannot be drawn as written: by default the
|
|
184
|
+
* schema's rules over its color objects and `scales.y`, the ones
|
|
185
|
+
* `jbrowse validate` runs. A display with rules of its own overrides it.
|
|
186
|
+
* `plotProblems` asks it of a draft and `notices` of the live config,
|
|
187
|
+
* so Edit plot and the corner never disagree.
|
|
188
|
+
*/
|
|
189
|
+
configProblemsOf(conf) {
|
|
190
|
+
return schemaPlotProblems(conf);
|
|
191
|
+
},
|
|
192
|
+
/**
|
|
193
|
+
* #getter
|
|
194
|
+
* What the loaded data says beside the config, such as a field no
|
|
195
|
+
* fetched feature carries. None unless a display overrides it.
|
|
196
|
+
*/
|
|
197
|
+
get liveNotices() {
|
|
198
|
+
return [];
|
|
199
|
+
},
|
|
178
200
|
}))
|
|
179
201
|
.actions(self => ({
|
|
180
202
|
/**
|
|
@@ -217,9 +239,11 @@ function stateModelFactory() {
|
|
|
217
239
|
* were applied. Each key runs through the display config schema's
|
|
218
240
|
* `preProcessSnapshot` (shorthand expansions and legacy-key migrations,
|
|
219
241
|
* as `showTrackGeneric` applies to a session spec's inline track keys),
|
|
220
|
-
* then writes the matching config slot. A key naming a
|
|
221
|
-
*
|
|
222
|
-
* lifted by that schema, and `null`
|
|
242
|
+
* then writes the matching config slot. A key naming a channel (`facet`,
|
|
243
|
+
* `color`, `rows`, any object with a one-value shorthand) replaces the
|
|
244
|
+
* whole object, its string shorthand lifted by that schema, and `null`
|
|
245
|
+
* clears it; `scales` names members inside it and leaves the rest. Keys
|
|
246
|
+
* that are not slots
|
|
223
247
|
* come back in `unapplied` as `{ key, reason }`, so a caller can tell a
|
|
224
248
|
* misspelling from a key that has an action instead of a slot.
|
|
225
249
|
*
|
|
@@ -293,6 +317,31 @@ function stateModelFactory() {
|
|
|
293
317
|
get plot() {
|
|
294
318
|
return plotOf(self.configuration);
|
|
295
319
|
},
|
|
320
|
+
/**
|
|
321
|
+
* #getter
|
|
322
|
+
* `configProblemsOf` the live config.
|
|
323
|
+
*/
|
|
324
|
+
get configNotices() {
|
|
325
|
+
return self.configProblemsOf(self.configuration);
|
|
326
|
+
},
|
|
327
|
+
/**
|
|
328
|
+
* #getter
|
|
329
|
+
* Every line the display has to say about what it cannot draw as
|
|
330
|
+
* written, as an agent's settle report reads them: `configNotices`,
|
|
331
|
+
* then `liveNotices`.
|
|
332
|
+
*/
|
|
333
|
+
get notices() {
|
|
334
|
+
const { configNotices } = self;
|
|
335
|
+
return [...configNotices, ...self.liveNotices];
|
|
336
|
+
},
|
|
337
|
+
/**
|
|
338
|
+
* #getter
|
|
339
|
+
* The lines the display chrome's corner chip lists: `notices`, less any
|
|
340
|
+
* a display shows in a chip of its own.
|
|
341
|
+
*/
|
|
342
|
+
get cornerNotices() {
|
|
343
|
+
return self.notices;
|
|
344
|
+
},
|
|
296
345
|
/**
|
|
297
346
|
* #getter
|
|
298
347
|
* The worked examples this display type declares, which "Edit plot..."
|
|
@@ -324,12 +373,11 @@ function stateModelFactory() {
|
|
|
324
373
|
/**
|
|
325
374
|
* #method
|
|
326
375
|
* What a draft would report once applied, throwing a refusal as
|
|
327
|
-
* `liftPlot` does
|
|
328
|
-
*
|
|
376
|
+
* `liftPlot` does: `configProblemsOf` the lifted draft. The draft still
|
|
377
|
+
* applies, and draws what it can.
|
|
329
378
|
*/
|
|
330
379
|
plotProblems(draft) {
|
|
331
|
-
|
|
332
|
-
return [];
|
|
380
|
+
return self.configProblemsOf(liftPlotDraft(self.configuration, draft));
|
|
333
381
|
},
|
|
334
382
|
/**
|
|
335
383
|
* #method
|
|
@@ -9,9 +9,9 @@ import type { IType, Instance } from '@jbrowse/mobx-state-tree';
|
|
|
9
9
|
* #stateModel BaseTrackModel
|
|
10
10
|
* #category track
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Holds the UI state of a track that is *shown* in a view, with a reference to
|
|
13
|
+
* its track configuration and the displays drawing it. Only shown tracks have
|
|
14
|
+
* this model, and several shown tracks can use the same configuration.
|
|
15
15
|
*/
|
|
16
16
|
export declare function createBaseTrackModel(pm: PluginManager, trackType: string, baseTrackConfig: AnyConfigurationSchemaType): import("@jbrowse/mobx-state-tree").IModelType<{
|
|
17
17
|
/**
|
|
@@ -200,10 +200,8 @@ export declare function createBaseTrackModel(pm: PluginManager, trackType: strin
|
|
|
200
200
|
* completely untouched ones — `reaction` only fires on an actual change.
|
|
201
201
|
*
|
|
202
202
|
* `equals: compareStructural` is load-bearing, not an optimization:
|
|
203
|
-
* `self.configuration` is a re-resolving reference, and
|
|
204
|
-
*
|
|
205
|
-
* but still churns once, and a session without deltas replaces the frozen
|
|
206
|
-
* `jbrowse.tracks` entry, rehydrating a brand-new MST node every write).
|
|
203
|
+
* `self.configuration` is a re-resolving reference, and an undo or a
|
|
204
|
+
* session restore swaps the resolved node for a new working copy.
|
|
207
205
|
* Referential comparison would treat every such swap as a fresh change
|
|
208
206
|
* and re-fire the save, an unbounded debounced loop. Structural
|
|
209
207
|
* comparison settles once the content stops changing.
|
|
@@ -6,6 +6,7 @@ import { ConfigurationReference, getConf } from '../../configuration/index.js';
|
|
|
6
6
|
import { releaseAdapterSession, retainAdapterSession, } from '../../data_adapters/adapterSessionRefcount.js';
|
|
7
7
|
import { adapterConfigCacheKey } from '../../data_adapters/dataAdapterCache.js';
|
|
8
8
|
import { adapterByteLimit } from '../../rpc/byteBudget.js';
|
|
9
|
+
import { TRACK_MENU_PRIORITY } from '../../ui/MenuTypes.js';
|
|
9
10
|
import { getContainingView, getDialogHost, getEnv, getSession, } from '../../util/index.js';
|
|
10
11
|
import { getConfAssemblyNamesOrNone, viewDisplayNames, } from '../../util/tracks.js';
|
|
11
12
|
import { isSessionModelWithConfigEditing } from '../../util/types/index.js';
|
|
@@ -36,9 +37,9 @@ function getDisplayConf(displays, displayId) {
|
|
|
36
37
|
* #stateModel BaseTrackModel
|
|
37
38
|
* #category track
|
|
38
39
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
40
|
+
* Holds the UI state of a track that is *shown* in a view, with a reference to
|
|
41
|
+
* its track configuration and the displays drawing it. Only shown tracks have
|
|
42
|
+
* this model, and several shown tracks can use the same configuration.
|
|
42
43
|
*/
|
|
43
44
|
export function createBaseTrackModel(pm, trackType, baseTrackConfig) {
|
|
44
45
|
return types
|
|
@@ -324,10 +325,8 @@ export function createBaseTrackModel(pm, trackType, baseTrackConfig) {
|
|
|
324
325
|
* completely untouched ones — `reaction` only fires on an actual change.
|
|
325
326
|
*
|
|
326
327
|
* `equals: compareStructural` is load-bearing, not an optimization:
|
|
327
|
-
* `self.configuration` is a re-resolving reference, and
|
|
328
|
-
*
|
|
329
|
-
* but still churns once, and a session without deltas replaces the frozen
|
|
330
|
-
* `jbrowse.tracks` entry, rehydrating a brand-new MST node every write).
|
|
328
|
+
* `self.configuration` is a re-resolving reference, and an undo or a
|
|
329
|
+
* session restore swaps the resolved node for a new working copy.
|
|
331
330
|
* Referential comparison would treat every such swap as a fresh change
|
|
332
331
|
* and re-fire the save, an unbounded debounced loop. Structural
|
|
333
332
|
* comparison settles once the content stops changing.
|
|
@@ -449,9 +448,9 @@ export function createBaseTrackModel(pm, trackType, baseTrackConfig) {
|
|
|
449
448
|
*/
|
|
450
449
|
get saveTrackDataMenuItem() {
|
|
451
450
|
return {
|
|
452
|
-
label: 'Save track data',
|
|
451
|
+
label: 'Save track data...',
|
|
453
452
|
icon: Save,
|
|
454
|
-
priority:
|
|
453
|
+
priority: TRACK_MENU_PRIORITY.saveTrackData,
|
|
455
454
|
onClick: () => {
|
|
456
455
|
getDialogHost(self).queueDialog(handleClose => [
|
|
457
456
|
SaveTrackDataDlg,
|
|
@@ -477,7 +476,7 @@ export function createBaseTrackModel(pm, trackType, baseTrackConfig) {
|
|
|
477
476
|
{
|
|
478
477
|
type: 'subMenu',
|
|
479
478
|
label: 'Display types',
|
|
480
|
-
priority:
|
|
479
|
+
priority: TRACK_MENU_PRIORITY.displayTypes,
|
|
481
480
|
subMenu: compatDisp.map(d => {
|
|
482
481
|
const displayType = pm.getDisplayType(d.type);
|
|
483
482
|
return {
|
|
@@ -4,6 +4,8 @@ import type { Instance } from '@jbrowse/mobx-state-tree';
|
|
|
4
4
|
/**
|
|
5
5
|
* #stateModel BaseViewModel
|
|
6
6
|
* #category view
|
|
7
|
+
* Holds a view's id, the name shown in its header, its width and whether it is
|
|
8
|
+
* minimized. Every view composes this model.
|
|
7
9
|
*/
|
|
8
10
|
declare const BaseViewModel: import("@jbrowse/mobx-state-tree").IModelType<{
|
|
9
11
|
/**
|
|
@@ -27,6 +27,8 @@ function bodyInDom(view) {
|
|
|
27
27
|
/**
|
|
28
28
|
* #stateModel BaseViewModel
|
|
29
29
|
* #category view
|
|
30
|
+
* Holds a view's id, the name shown in its header, its width and whether it is
|
|
31
|
+
* minimized. Every view composes this model.
|
|
30
32
|
*/
|
|
31
33
|
const BaseViewModel = types
|
|
32
34
|
.model('BaseView', {
|
|
@@ -5,6 +5,9 @@ import type React from 'react';
|
|
|
5
5
|
/**
|
|
6
6
|
* #stateModel BaseInternetAccountModel
|
|
7
7
|
* #category internetAccount
|
|
8
|
+
* Adds a token header to each request for a file on one of the account's
|
|
9
|
+
* domains, keeping the token in `sessionStorage`. Every internet account type
|
|
10
|
+
* builds on this model.
|
|
8
11
|
*/
|
|
9
12
|
export declare const InternetAccount: import("@jbrowse/mobx-state-tree").IModelType<{
|
|
10
13
|
/**
|
|
@@ -9,6 +9,9 @@ import { uriMatchesDomains } from './uriMatchesDomains.js';
|
|
|
9
9
|
/**
|
|
10
10
|
* #stateModel BaseInternetAccountModel
|
|
11
11
|
* #category internetAccount
|
|
12
|
+
* Adds a token header to each request for a file on one of the account's
|
|
13
|
+
* domains, keeping the token in `sessionStorage`. Every internet account type
|
|
14
|
+
* builds on this model.
|
|
12
15
|
*/
|
|
13
16
|
export const InternetAccount = types
|
|
14
17
|
.model('InternetAccount', {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { Instance } from '@jbrowse/mobx-state-tree';
|
|
2
2
|
/**
|
|
3
3
|
* #config BaseConnection
|
|
4
|
+
* Holds a connection's name and the assemblies its tracks belong to. Every
|
|
5
|
+
* connection type has these slots.
|
|
6
|
+
*
|
|
4
7
|
* #gotcha JBrowse fetches the hub's track list when the connection loads and
|
|
5
8
|
* holds it in memory, and does **not** write it into a saved or shared session.
|
|
6
9
|
* The session stores only the tracks you open (under `connectionTrackConfigs`,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ConfigurationSchema } from '../../configuration/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* #config BaseConnection
|
|
4
|
+
* Holds a connection's name and the assemblies its tracks belong to. Every
|
|
5
|
+
* connection type has these slots.
|
|
6
|
+
*
|
|
4
7
|
* #gotcha JBrowse fetches the hub's track list when the connection loads and
|
|
5
8
|
* holds it in memory, and does **not** write it into a saved or shared session.
|
|
6
9
|
* The session stores only the tracks you open (under `connectionTrackConfigs`,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* #config BaseInternetAccount
|
|
3
|
-
*
|
|
3
|
+
* Holds an internet account's name and description, the domains it handles,
|
|
4
|
+
* and the request header it sends credentials in. Every internet account type
|
|
5
|
+
* has these slots.
|
|
4
6
|
*/
|
|
5
7
|
export declare const BaseInternetAccountConfig: import("../../configuration/configurationSchema.ts").ConfigurationSchemaType<{
|
|
6
8
|
readonly name: {
|