@jbrowse/core 5.0.0-beta.13 → 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 +365 -69
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +4 -2
- 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 +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +10 -19
- 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/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 +2 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +22 -6
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +13 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +28 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +2 -0
- package/esm/PluginManager.d.ts +1 -0
- package/esm/PluginManager.js +6 -0
- package/esm/ReExports/coreModules.generated.js +538 -524
- package/esm/ReExports/coreWorkerModules.generated.js +454 -441
- package/esm/ReExports/lazify.js +3 -2
- package/esm/ReExports/list.js +15 -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/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 +18 -5
- package/esm/configuration/configurationSchema.js +9 -7
- package/esm/configuration/configurationSchemaUnion.d.ts +2 -1
- package/esm/configuration/configurationSchemaUnion.js +2 -1
- package/esm/configuration/configurationSlot.js +4 -4
- 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 +5 -5
- package/esm/configuration/getConf.js +13 -4
- package/esm/configuration/index.d.ts +1 -1
- package/esm/configuration/index.js +1 -1
- package/esm/configuration/plot.d.ts +2 -2
- package/esm/configuration/plot.js +32 -18
- package/esm/configuration/schemaRegistry.d.ts +0 -2
- package/esm/configuration/slotFacade.js +2 -2
- package/esm/configuration/snapshotPreprocess.d.ts +42 -18
- package/esm/configuration/snapshotPreprocess.js +94 -34
- package/esm/configuration/tabixShorthand.js +1 -3
- 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/models/BaseConnectionModelFactory.d.ts +2 -0
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +2 -0
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +40 -6
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +56 -8
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +3 -3
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +7 -6
- 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 +9 -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 +0 -10
- package/esm/rpc/byteBudget.d.ts +8 -0
- package/esm/rpc/byteBudget.js +13 -0
- package/esm/rpc/configSchema.d.ts +2 -0
- package/esm/rpc/configSchema.js +3 -1
- package/esm/rpc/coreRpcMethods.d.ts +0 -1
- package/esm/rpc/coreRpcMethods.js +0 -1
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +2 -2
- package/esm/rpc/methods/CoreGetEncodedLayers.js +7 -5
- 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/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/colorScale.d.ts +5 -1
- package/esm/ui/colorScale.js +12 -10
- package/esm/ui/colors.d.ts +3 -3
- package/esm/ui/colors.js +7 -7
- 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/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/analytics.d.ts +4 -6
- package/esm/util/analytics.js +143 -12
- package/esm/util/bezierConnector.d.ts +20 -0
- package/esm/util/bezierConnector.js +34 -100
- package/esm/util/cacheBudgets.d.ts +3 -0
- package/esm/util/cacheBudgets.js +3 -0
- package/esm/util/categoricalField.d.ts +2 -2
- package/esm/util/categoricalField.js +3 -3
- 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 +6 -6
- 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 +14 -2
- package/esm/util/colorScale.d.ts +114 -20
- package/esm/util/colorScale.js +124 -26
- package/esm/util/colorSchemes.d.ts +6 -4
- package/esm/util/colorSchemes.js +6 -3
- 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/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 +74 -20
- 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 +3 -3
- package/esm/util/quantileExtent.js +3 -3
- 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/thresholdScale.d.ts +1 -1
- package/esm/util/thresholdScale.js +1 -1
- package/esm/util/tracks.js +1 -1
- package/esm/util/usePanZoom.js +4 -10
- package/esm/util/windowStep.d.ts +6 -0
- package/esm/util/windowStep.js +153 -0
- package/package.json +23 -15
- 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
|
@@ -2,7 +2,7 @@ import type { BaseOptions } from './types.ts';
|
|
|
2
2
|
/**
|
|
3
3
|
* #api
|
|
4
4
|
* One row an adapter lists: `name` is a value of the listing's field, and
|
|
5
|
-
* `label` and `color` are what the adapter names and
|
|
5
|
+
* `label` and `color` are what the adapter names and colors that row with.
|
|
6
6
|
*/
|
|
7
7
|
export interface ListedRowSource {
|
|
8
8
|
name: string;
|
|
@@ -13,7 +13,7 @@ export interface ListedRowSource {
|
|
|
13
13
|
* #api
|
|
14
14
|
* Every row an adapter has, in its own order, whatever the loaded regions hold,
|
|
15
15
|
* so a row display gives a row with nothing in view its place, label and
|
|
16
|
-
*
|
|
16
|
+
* color.
|
|
17
17
|
*/
|
|
18
18
|
export interface RowSourceListing {
|
|
19
19
|
/** The feature field the listed names are values of: `source` on a multi-BigWig, `alignments` on a MAF, whose per-species record is keyed by them. */
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ConfigurationSchema, expandUriShorthand, } from '../../configuration/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* #config CytobandAdapter
|
|
4
|
+
* Reads an assembly's cytoband file, which the linear genome view draws as
|
|
5
|
+
* ideogram banding in its overview bar.
|
|
4
6
|
*
|
|
5
7
|
* #example
|
|
6
8
|
* Goes on an ASSEMBLY, under `cytobands` — not on a track. It draws the
|
|
@@ -37,6 +39,9 @@ const configSchema = ConfigurationSchema('CytobandAdapter', {
|
|
|
37
39
|
},
|
|
38
40
|
}, {
|
|
39
41
|
explicitlyTyped: true,
|
|
42
|
+
closed: true,
|
|
43
|
+
// desktop's open-sequence dialog wrote the plural through v4.3
|
|
44
|
+
retired: { cytobandsLocation: cytobandLocation => ({ cytobandLocation }) },
|
|
40
45
|
/**
|
|
41
46
|
* #preProcessSnapshot
|
|
42
47
|
*
|
|
@@ -38,20 +38,19 @@ export type getSubAdapterType = (adapterConfigSnap: ConfigSnap) => ReturnType<ty
|
|
|
38
38
|
* other session still claims. Reached from the CoreFreeResources RPC when the
|
|
39
39
|
* last track using an adapter config closes.
|
|
40
40
|
*
|
|
41
|
-
* Deleting the key
|
|
42
|
-
*
|
|
43
|
-
* — a whole parsed GFF3, a BAM chunk cache — become unreachable and are
|
|
44
|
-
* collected normally. There is nothing to free by hand.
|
|
41
|
+
* Deleting the key makes the instance unreachable from here, and for most
|
|
42
|
+
* adapters that is the whole reclamation: a parsed GFF3 goes with it.
|
|
45
43
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* their parsed chunks in a SharedReadCache
|
|
49
|
-
* and
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
44
|
+
* The indexed adapters are the exception, which is why an evicted adapter is
|
|
45
|
+
* also told so (`freeResources`). @gmod/bam, @gmod/cram and @gmod/tabix each
|
|
46
|
+
* hold their parsed chunks in a SharedReadCache charged to the shared budget,
|
|
47
|
+
* and the budget credits a dropped cache back only once the collector has
|
|
48
|
+
* taken it. A run that opens and closes a track per image has no GC to wait
|
|
49
|
+
* for. `jb2export batch` drew a callset from CRAM slices of long reads at
|
|
50
|
+
* about a record every two seconds, and before @gmod/shared-read-cache 2.1 two
|
|
51
|
+
* of its four processes reached the 4 GB heap limit 135 s in, with the budget
|
|
52
|
+
* at 3,100 MB against its 1,024 MB limit: the budget left each of 54 caches
|
|
53
|
+
* its last entry. 2.1 keeps one entry per budget instead.
|
|
55
54
|
*
|
|
56
55
|
* The refcount is what makes this safe to call on any track close: an adapter
|
|
57
56
|
* pulled in as a sub-adapter carries its parent's sessionId (getSubAdapter
|
|
@@ -61,5 +60,18 @@ export type getSubAdapterType = (adapterConfigSnap: ConfigSnap) => ReturnType<ty
|
|
|
61
60
|
export declare function freeAdapterResources(args: {
|
|
62
61
|
sessionId?: string;
|
|
63
62
|
}): Promise<void>;
|
|
63
|
+
/** How many adapter requests the cache has answered. */
|
|
64
|
+
export declare function adapterRequests(): number;
|
|
65
|
+
/**
|
|
66
|
+
* Evict every cached adapter `keep` declines, each told to free what it holds,
|
|
67
|
+
* whatever sessions claim it. `keep` sees the settled adapters most recently
|
|
68
|
+
* requested first, each with the {@link adapterRequests} count at its latest
|
|
69
|
+
* request. For a host with no tracks to close, such as `@jbrowse/tables`,
|
|
70
|
+
* which would otherwise keep an adapter, its parsed index and its share of the
|
|
71
|
+
* decoded-bytes budget for every file it ever read.
|
|
72
|
+
*/
|
|
73
|
+
export declare function keepAdapters(keep: (dataAdapter: AnyDataAdapter, lastRequest: number) => boolean): Promise<void>;
|
|
74
|
+
/** How many adapters the cache holds, failed and pending ones included. */
|
|
75
|
+
export declare function cachedAdapterCount(): number;
|
|
64
76
|
export declare function clearAdapterCache(): void;
|
|
65
77
|
export {};
|
|
@@ -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
|
+
}
|
|
@@ -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,9 +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
|
-
*
|
|
764
|
-
* settings overrides it; the draft still applies, and draws what it can.
|
|
797
|
+
* `liftPlot` does: `configProblemsOf` the lifted draft. The draft still
|
|
798
|
+
* applies, and draws what it can.
|
|
765
799
|
*/
|
|
766
800
|
plotProblems(draft: Plot): string[];
|
|
767
801
|
/**
|
|
@@ -7,6 +7,9 @@ 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
|
-
*
|
|
329
|
-
* settings overrides it; the draft still applies, and draws what it can.
|
|
376
|
+
* `liftPlot` does: `configProblemsOf` the lifted draft. The draft still
|
|
377
|
+
* applies, and draws what it can.
|
|
330
378
|
*/
|
|
331
379
|
plotProblems(draft) {
|
|
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
|
/**
|
|
@@ -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
|
|
@@ -447,9 +448,9 @@ export function createBaseTrackModel(pm, trackType, baseTrackConfig) {
|
|
|
447
448
|
*/
|
|
448
449
|
get saveTrackDataMenuItem() {
|
|
449
450
|
return {
|
|
450
|
-
label: 'Save track data',
|
|
451
|
+
label: 'Save track data...',
|
|
451
452
|
icon: Save,
|
|
452
|
-
priority:
|
|
453
|
+
priority: TRACK_MENU_PRIORITY.saveTrackData,
|
|
453
454
|
onClick: () => {
|
|
454
455
|
getDialogHost(self).queueDialog(handleClose => [
|
|
455
456
|
SaveTrackDataDlg,
|
|
@@ -475,7 +476,7 @@ export function createBaseTrackModel(pm, trackType, baseTrackConfig) {
|
|
|
475
476
|
{
|
|
476
477
|
type: 'subMenu',
|
|
477
478
|
label: 'Display types',
|
|
478
|
-
priority:
|
|
479
|
+
priority: TRACK_MENU_PRIORITY.displayTypes,
|
|
479
480
|
subMenu: compatDisp.map(d => {
|
|
480
481
|
const displayType = pm.getDisplayType(d.type);
|
|
481
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: {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ConfigurationSchema } from '../../configuration/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* #config BaseInternetAccount
|
|
4
|
-
*
|
|
4
|
+
* Holds an internet account's name and description, the domains it handles,
|
|
5
|
+
* and the request header it sends credentials in. Every internet account type
|
|
6
|
+
* has these slots.
|
|
5
7
|
*/
|
|
6
8
|
export const BaseInternetAccountConfig = ConfigurationSchema('InternetAccount', {
|
|
7
9
|
/**
|