@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
package/esm/ui/PaletteContext.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, use, useEffect, useMemo, useSyncExternalStore, } from 'react';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import { onColorSchemeChange, prefersDarkColorScheme, } from '../util/systemColorScheme.js';
|
|
4
5
|
import { defaultStyleTheme } from './styleTheme.js';
|
|
5
6
|
/**
|
|
@@ -25,6 +26,7 @@ const StyleThemeContext = createContext(undefined);
|
|
|
25
26
|
* `theme` that sets `spacing` or `typography` reaches `makeStyles` and Material
|
|
26
27
|
* UI alike.
|
|
27
28
|
*/
|
|
29
|
+
// eslint-disable-next-line no-restricted-syntax -- drawn inside a frozen SVG figure
|
|
28
30
|
export function StyleThemeProvider({ theme, children, }) {
|
|
29
31
|
return _jsx(StyleThemeContext, { value: theme, children: children });
|
|
30
32
|
}
|
|
@@ -38,10 +40,10 @@ export function StyleThemeProvider({ theme, children, }) {
|
|
|
38
40
|
* write that the worker-side half of the rendering derives from. This one
|
|
39
41
|
* colors React and nothing else.
|
|
40
42
|
*/
|
|
41
|
-
export function PaletteProvider({ palette, children, }) {
|
|
43
|
+
export const PaletteProvider = observer(function PaletteProvider({ palette, children, }) {
|
|
42
44
|
const theme = useMemo(() => ({ ...defaultStyleTheme, palette }), [palette]);
|
|
43
45
|
return _jsx(StyleThemeProvider, { theme: theme, children: children });
|
|
44
|
-
}
|
|
46
|
+
});
|
|
45
47
|
export function useStyleTheme() {
|
|
46
48
|
return use(StyleThemeContext) ?? defaultStyleTheme;
|
|
47
49
|
}
|
|
@@ -59,17 +61,28 @@ function subscribeToColorScheme(onChange) {
|
|
|
59
61
|
observer?.disconnect();
|
|
60
62
|
};
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// one that declares both, or neither, gets the OS preference.
|
|
65
|
-
function readColorScheme() {
|
|
66
|
-
const declared = getComputedStyle(document.documentElement)
|
|
67
|
-
.getPropertyValue('color-scheme')
|
|
64
|
+
function schemesNamedIn(value) {
|
|
65
|
+
return value
|
|
68
66
|
.split(/\s+/)
|
|
69
67
|
.filter((word) => ['light', 'dark'].includes(word));
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
}
|
|
69
|
+
// The page's `color-scheme`, as the browser resolves it for form controls and
|
|
70
|
+
// the canvas: a page that names one of light or dark gets that one, a page that
|
|
71
|
+
// names both gets the OS preference, and a page that names neither is light
|
|
72
|
+
// whatever the OS says. The `<meta name="color-scheme">` tag stands in where no
|
|
73
|
+
// stylesheet sets the property, since the computed value does not reflect it.
|
|
74
|
+
function readColorScheme() {
|
|
75
|
+
const computed = schemesNamedIn(getComputedStyle(document.documentElement).getPropertyValue('color-scheme'));
|
|
76
|
+
const declared = new Set(computed.length > 0
|
|
77
|
+
? computed
|
|
78
|
+
: schemesNamedIn(document
|
|
79
|
+
.querySelector('meta[name="color-scheme"]')
|
|
80
|
+
?.getAttribute('content') ?? ''));
|
|
81
|
+
return declared.size === 2
|
|
82
|
+
? prefersDarkColorScheme()
|
|
83
|
+
? 'dark'
|
|
84
|
+
: 'light'
|
|
85
|
+
: declared.has('dark')
|
|
73
86
|
? 'dark'
|
|
74
87
|
: 'light';
|
|
75
88
|
}
|
|
@@ -86,9 +99,11 @@ function useResolvedMode(mode) {
|
|
|
86
99
|
* follow its dark mode mounts {@link SessionPaletteProvider}, which is this
|
|
87
100
|
* hook and the provider in one.
|
|
88
101
|
*
|
|
89
|
-
* Pass no mode and JBrowse follows the page
|
|
90
|
-
*
|
|
91
|
-
*
|
|
102
|
+
* Pass no mode and JBrowse follows the page's CSS `color-scheme`: light or dark
|
|
103
|
+
* where the page names one, the OS preference where it names both, and light
|
|
104
|
+
* where it names neither, so a page with no dark styling never gets a dark
|
|
105
|
+
* JBrowse from a dark OS. A host whose mode lives somewhere a stylesheet cannot
|
|
106
|
+
* see passes it.
|
|
92
107
|
*
|
|
93
108
|
* **Both halves are load-bearing, which is why the pairing is published as a
|
|
94
109
|
* component.** The palette is what *React* draws with; the config `theme` slot
|
|
@@ -122,8 +137,8 @@ export function useSessionPalette(session, mode) {
|
|
|
122
137
|
*
|
|
123
138
|
* `mode` is optional. Left out, JBrowse follows the page's declared
|
|
124
139
|
* `color-scheme` — so a host whose dark-mode toggle sets it, as most do, mounts
|
|
125
|
-
* this with a session and nothing else
|
|
126
|
-
* declares
|
|
140
|
+
* this with a session and nothing else. A page that declares `light dark`
|
|
141
|
+
* follows the OS, and a page that declares nothing stays light.
|
|
127
142
|
*
|
|
128
143
|
* A component rather than a documented pair of calls because the pair has a
|
|
129
144
|
* half that can be left out with nothing to show for it. `PaletteProvider` is
|
|
@@ -136,7 +151,7 @@ export function useSessionPalette(session, mode) {
|
|
|
136
151
|
* The session is the only thing that resolves a palette here, so a host
|
|
137
152
|
* supplying colors of its own mounts `PaletteProvider` directly instead.
|
|
138
153
|
*/
|
|
139
|
-
export function SessionPaletteProvider({ session, mode, children, }) {
|
|
154
|
+
export const SessionPaletteProvider = observer(function SessionPaletteProvider({ session, mode, children, }) {
|
|
140
155
|
const palette = useSessionPalette(session, mode);
|
|
141
156
|
return _jsx(PaletteProvider, { palette: palette, children: children });
|
|
142
|
-
}
|
|
157
|
+
});
|
|
@@ -8,10 +8,11 @@ import type { JBrowsePlugin } from '../util/types/index.ts';
|
|
|
8
8
|
* version-pinned, integrity-carrying, and refused when no published version
|
|
9
9
|
* supports this JBrowse.
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
declare const PluginStoreCard: ({ plugin, resolved, installed, disabled, onInstall, }: {
|
|
12
12
|
plugin: JBrowsePlugin;
|
|
13
13
|
resolved: ResolvedPlugin;
|
|
14
14
|
installed: boolean;
|
|
15
15
|
disabled?: boolean;
|
|
16
16
|
onInstall: (definition: PluginDefinition) => void;
|
|
17
|
-
})
|
|
17
|
+
}) => import("react").JSX.Element;
|
|
18
|
+
export default PluginStoreCard;
|
|
@@ -3,6 +3,7 @@ import AddIcon from '@mui/icons-material/Add';
|
|
|
3
3
|
import CheckIcon from '@mui/icons-material/Check';
|
|
4
4
|
import PersonIcon from '@mui/icons-material/Person';
|
|
5
5
|
import { Button, Card, CardActions, CardContent, Chip, Typography, } from '@mui/material';
|
|
6
|
+
import { observer } from 'mobx-react';
|
|
6
7
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
7
8
|
import ExternalLink from './ExternalLink.js';
|
|
8
9
|
const useStyles = makeStyles()({
|
|
@@ -33,7 +34,7 @@ const useStyles = makeStyles()({
|
|
|
33
34
|
* version-pinned, integrity-carrying, and refused when no published version
|
|
34
35
|
* supports this JBrowse.
|
|
35
36
|
*/
|
|
36
|
-
|
|
37
|
+
const PluginStoreCard = observer(function PluginStoreCard({ plugin, resolved, installed, disabled, onInstall, }) {
|
|
37
38
|
const { classes } = useStyles();
|
|
38
39
|
const { definition, compatible, supportedRanges, pluginVersion } = resolved;
|
|
39
40
|
const installable = compatible && definition !== undefined;
|
|
@@ -42,4 +43,5 @@ export default function PluginStoreCard({ plugin, resolved, installed, disabled,
|
|
|
42
43
|
onInstall(definition);
|
|
43
44
|
}
|
|
44
45
|
}, children: installed ? 'Installed' : 'Install' }) })] }));
|
|
45
|
-
}
|
|
46
|
+
});
|
|
47
|
+
export default PluginStoreCard;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
declare const PopoverPicker: ({ color, onChange, presetAlpha, unset, }: {
|
|
2
2
|
color: string;
|
|
3
3
|
onChange: (color: string) => void;
|
|
4
4
|
presetAlpha?: number;
|
|
5
5
|
unset?: boolean;
|
|
6
|
-
})
|
|
6
|
+
}) => import("react").JSX.Element;
|
|
7
|
+
export default PopoverPicker;
|
package/esm/ui/PopoverPicker.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
4
5
|
import { ColorPopover } from './ColorPicker.js';
|
|
5
6
|
import { swatchStyle } from './colorSwatchStyle.js';
|
|
@@ -13,7 +14,7 @@ const useStyles = makeStyles()({
|
|
|
13
14
|
boxSizing: 'border-box',
|
|
14
15
|
},
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
+
const PopoverPicker = observer(function PopoverPicker({ color, onChange, presetAlpha, unset, }) {
|
|
17
18
|
const [anchorEl, setAnchorEl] = useState(null);
|
|
18
19
|
const { classes, cx } = useStyles();
|
|
19
20
|
const isAuto = color === 'auto';
|
|
@@ -22,4 +23,5 @@ export default function PopoverPicker({ color, onChange, presetAlpha, unset, })
|
|
|
22
23
|
} }), _jsx(ColorPopover, { anchorEl: anchorEl, onClose: () => {
|
|
23
24
|
setAnchorEl(null);
|
|
24
25
|
}, color: isAuto ? 'blue' : color, onChange: onChange, presetAlpha: presetAlpha })] }));
|
|
25
|
-
}
|
|
26
|
+
});
|
|
27
|
+
export default PopoverPicker;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare
|
|
1
|
+
declare const PrerenderedCanvas: (props: {
|
|
2
2
|
width: number;
|
|
3
3
|
height: number;
|
|
4
4
|
highResolutionScaling?: number;
|
|
@@ -6,5 +6,5 @@ declare function PrerenderedCanvas(props: {
|
|
|
6
6
|
imageData?: unknown;
|
|
7
7
|
showSoftClip?: boolean;
|
|
8
8
|
blockKey?: string;
|
|
9
|
-
})
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
10
10
|
export default PrerenderedCanvas;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import { drawImageOntoCanvasContext } from '../util/offscreenCanvasPonyfill.js';
|
|
4
|
-
function PrerenderedCanvas(props) {
|
|
5
|
+
const PrerenderedCanvas = observer(function PrerenderedCanvas(props) {
|
|
5
6
|
const { width, height, highResolutionScaling = 1, style = {}, imageData, blockKey, showSoftClip, } = props;
|
|
6
7
|
const [done, setDone] = useState(false);
|
|
7
8
|
const featureCanvasRef = useRef(null);
|
|
@@ -30,5 +31,5 @@ function PrerenderedCanvas(props) {
|
|
|
30
31
|
]
|
|
31
32
|
.filter(f => !!f)
|
|
32
33
|
.join('_'), ref: featureCanvasRef, width: width * highResolutionScaling, height: height * highResolutionScaling, style: { width, height, ...style } }));
|
|
33
|
-
}
|
|
34
|
+
});
|
|
34
35
|
export default PrerenderedCanvas;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
2
3
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
3
4
|
const useStyles = makeStyles()(theme => ({
|
|
4
5
|
bg: {
|
|
@@ -16,7 +17,8 @@ const useStyles = makeStyles()(theme => ({
|
|
|
16
17
|
// that still showed either failed loudly — but an MST type error surfacing here
|
|
17
18
|
// over a view was captured and committed as if the figure were fine. Keying off
|
|
18
19
|
// `#f88` instead would break on the dark theme and on any restyle.
|
|
19
|
-
|
|
20
|
+
const RedErrorMessageBox = observer(function RedErrorMessageBox({ children, }) {
|
|
20
21
|
const { classes } = useStyles();
|
|
21
22
|
return (_jsx("div", { className: classes.bg, "data-testid": "error-message-box", children: children }));
|
|
22
|
-
}
|
|
23
|
+
});
|
|
24
|
+
export default RedErrorMessageBox;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { MenuItem } from '../Menu.tsx';
|
|
2
|
-
|
|
2
|
+
declare const EndAdornment: ({ showHelp, menuItems, }: {
|
|
3
3
|
showHelp?: boolean;
|
|
4
4
|
menuItems?: MenuItem[];
|
|
5
|
-
})
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
export default EndAdornment;
|
|
@@ -4,12 +4,13 @@ import Help from '@mui/icons-material/Help';
|
|
|
4
4
|
import MoreVertIcon from '@mui/icons-material/MoreVert';
|
|
5
5
|
import SearchIcon from '@mui/icons-material/Search';
|
|
6
6
|
import { InputAdornment } from '@mui/material';
|
|
7
|
+
import { observer } from 'mobx-react';
|
|
7
8
|
import CascadingMenuButton from '../CascadingMenuButton.js';
|
|
8
9
|
const HelpDialog = lazy(() => import('./HelpDialog.js'));
|
|
9
10
|
// The search-box overflow (⋮) menu: consumer-supplied rows (e.g. recent
|
|
10
11
|
// locations) sit above the built-in help entry. Rendered only when there is
|
|
11
12
|
// something to show, so a bare box keeps just its search icon.
|
|
12
|
-
|
|
13
|
+
const EndAdornment = observer(function EndAdornment({ showHelp, menuItems = [], }) {
|
|
13
14
|
const [helpDialogOpen, setHelpDialogOpen] = useState(false);
|
|
14
15
|
const items = [
|
|
15
16
|
...menuItems,
|
|
@@ -28,4 +29,5 @@ export default function EndAdornment({ showHelp, menuItems = [], }) {
|
|
|
28
29
|
return (_jsxs(InputAdornment, { position: "end", style: { marginRight: 7 }, children: [_jsx(SearchIcon, { fontSize: "small" }), items.length ? (_jsx(CascadingMenuButton, { menuItems: items, size: "small", stopPropagation: true, tooltip: "Search box options", children: _jsx(MoreVertIcon, { fontSize: "small" }) })) : null, helpDialogOpen ? (_jsx(Suspense, { fallback: null, children: _jsx(HelpDialog, { handleClose: () => {
|
|
29
30
|
setHelpDialogOpen(false);
|
|
30
31
|
} }) })) : null] }));
|
|
31
|
-
}
|
|
32
|
+
});
|
|
33
|
+
export default EndAdornment;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
2
3
|
import InfoDialog from '../InfoDialog.js';
|
|
3
|
-
|
|
4
|
+
const HelpDialog = observer(function HelpDialog({ handleClose, }) {
|
|
4
5
|
return (_jsxs(InfoDialog, { open: true, maxWidth: "xl", onClose: () => {
|
|
5
6
|
handleClose();
|
|
6
7
|
}, title: "Using the search box", children: [_jsx("h3", { children: "Searching" }), _jsxs("ul", { children: [_jsx("li", { children: "Jump to a feature or reference sequence by typing its name in the location box and pressing Enter." }), _jsxs("li", { children: ["Jump to a specific region by typing the region into the location box as: ", _jsx("code", { children: "ref:start..end" }), " or ", _jsx("code", { children: "ref:start-end" }), ". Commas are allowed in the start and end coordinates. A space-separated list of locstrings can be used to open up multiple chromosomes at a time"] }), _jsxs("li", { children: ["Find a group of reference sequences by typing a pattern containing", ' ', _jsx("code", { children: "*" }), ", which stands for any run of characters. The matches appear in the dropdown, with a row at the top that opens all of them at once. Useful on a fragmented or haplotype-resolved assembly, where the useful selection is a pattern rather than a list you keep by hand."] })] }), _jsx("h3", { children: "Example Searches" }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("code", { children: "BRCA" }), " - searches for the feature named BRCA"] }), _jsxs("li", { children: [_jsx("code", { children: "chr4" }), " - jumps to chromosome 4"] }), _jsxs("li", { children: [_jsx("code", { children: "chr4:79,500,000..80,000,000" }), " - jumps the region on chromosome 4 between 79.5Mb and 80Mb."] }), _jsxs("li", { children: [_jsx("code", { children: "chr1:1-100 chr2:1-100" }), " - create a split view of chr1:1-100 and chr2:1-100"] }), _jsxs("li", { children: [_jsx("code", { children: "chr1 chr2 chr3" }), " - open up multiple chromosomes at once"] }), _jsxs("li", { children: [_jsx("code", { children: "chr1:1-100[rev] chr2:1-100" }), " - open up the first region in the horizontally flipped orientation"] }), _jsxs("li", { children: [_jsx("code", { children: "chr1 100 200" }), " - use whitespace separated refname, start, end"] }), _jsxs("li", { children: [_jsx("code", { children: "*_hap1" }), " - list every reference sequence whose name ends in _hap1, and offer to open all of them"] })] })] }));
|
|
7
|
-
}
|
|
8
|
+
});
|
|
9
|
+
export default HelpDialog;
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* Pair it with `isSessionWithViewReplacement` — a session that cannot replace a
|
|
14
14
|
* view should not be offered the choice.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
declare const ReplaceCurrentViewButton: ({ disabled, onClick, }: {
|
|
17
17
|
disabled?: boolean;
|
|
18
18
|
onClick: () => void;
|
|
19
|
-
})
|
|
19
|
+
}) => import("react").JSX.Element;
|
|
20
|
+
export default ReplaceCurrentViewButton;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Button } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
/**
|
|
4
5
|
* The second way out of a launch dialog: put the view it builds in the slot the
|
|
5
6
|
* launching view occupies instead of appending it below. Offered by every launch
|
|
@@ -15,8 +16,9 @@ import { Button } from '@mui/material';
|
|
|
15
16
|
* Pair it with `isSessionWithViewReplacement` — a session that cannot replace a
|
|
16
17
|
* view should not be offered the choice.
|
|
17
18
|
*/
|
|
18
|
-
|
|
19
|
+
const ReplaceCurrentViewButton = observer(function ReplaceCurrentViewButton({ disabled, onClick, }) {
|
|
19
20
|
return (_jsx(Button, { type: "button", variant: "contained", color: "primary", disabled: disabled, onClick: () => {
|
|
20
21
|
onClick();
|
|
21
22
|
}, children: "Replace current view" }));
|
|
22
|
-
}
|
|
23
|
+
});
|
|
24
|
+
export default ReplaceCurrentViewButton;
|
package/esm/ui/ResizeHandle.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
declare
|
|
2
|
+
declare const ResizeHandle: ({ onDrag, onDragStart, onDragEnd, vertical, bar, grip, gain, className: originalClassName, onPointerDown, ...props }: {
|
|
3
3
|
onDrag: (distance: number) => void;
|
|
4
4
|
onDragStart?: () => void;
|
|
5
5
|
onDragEnd?: () => void;
|
|
@@ -13,5 +13,5 @@ declare function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical, bar, g
|
|
|
13
13
|
* and this handle sits below more than one of them.
|
|
14
14
|
*/
|
|
15
15
|
gain?: number;
|
|
16
|
-
} & Omit<React.ComponentPropsWithoutRef<'div'>, 'onDrag' | 'onDragStart' | 'onDragEnd'>)
|
|
16
|
+
} & Omit<React.ComponentPropsWithoutRef<'div'>, 'onDrag' | 'onDragStart' | 'onDragEnd'>) => React.JSX.Element;
|
|
17
17
|
export default ResizeHandle;
|
package/esm/ui/ResizeHandle.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
2
3
|
import { cx, makeStyles } from '../util/tss-react/index.js';
|
|
3
4
|
import { useResizeDrag } from '../util/useResizeDrag.js';
|
|
4
5
|
const layer = (color) => `linear-gradient(${color}, ${color})`;
|
|
@@ -57,7 +58,7 @@ const useStyles = makeStyles()(theme => ({
|
|
|
57
58
|
borderLeft: `1px solid ${theme.palette.text.disabled}`,
|
|
58
59
|
},
|
|
59
60
|
}));
|
|
60
|
-
function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical = false, bar = false, grip = false, gain, className: originalClassName, onPointerDown, ...props }) {
|
|
61
|
+
const ResizeHandle = observer(function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical = false, bar = false, grip = false, gain, className: originalClassName, onPointerDown, ...props }) {
|
|
61
62
|
const { classes } = useStyles();
|
|
62
63
|
// The gesture, including the per-frame coalescing, the delta measurement and
|
|
63
64
|
// the `data-gesture-owner` marker that keeps ancestor drags (the LGV
|
|
@@ -83,5 +84,5 @@ function ResizeHandle({ onDrag, onDragStart, onDragEnd, vertical = false, bar =
|
|
|
83
84
|
handleProps.onPointerDown(event);
|
|
84
85
|
onPointerDown?.(event);
|
|
85
86
|
} }));
|
|
86
|
-
}
|
|
87
|
+
});
|
|
87
88
|
export default ResizeHandle;
|
|
@@ -3,7 +3,8 @@ declare global {
|
|
|
3
3
|
setHTML?(html: string): void;
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
declare const SanitizedHTML: ({ html: pre, className, }: {
|
|
7
7
|
className?: string;
|
|
8
8
|
html: unknown;
|
|
9
|
-
})
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
10
|
+
export default SanitizedHTML;
|
package/esm/ui/SanitizedHTML.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Suspense, lazy, useLayoutEffect, useRef } from 'react';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import { escapeHTML, looksLikeHTML } from '../util/htmlText.js';
|
|
4
5
|
import { linkify } from '../util/index.js';
|
|
5
6
|
import { rewriteExternalAnchors } from './rewriteExternalAnchors.js';
|
|
@@ -7,7 +8,7 @@ const DOMPurifySanitizedHTML = lazy(() => import('./DOMPurifySanitizedHTML.js'))
|
|
|
7
8
|
function needsSanitization(str) {
|
|
8
9
|
return str.includes('<') || str.includes('://');
|
|
9
10
|
}
|
|
10
|
-
function SetHTML({ value, className }) {
|
|
11
|
+
const SetHTML = observer(function SetHTML({ value, className, }) {
|
|
11
12
|
const spanRef = useRef(null);
|
|
12
13
|
useLayoutEffect(() => {
|
|
13
14
|
const el = spanRef.current;
|
|
@@ -22,8 +23,8 @@ function SetHTML({ value, className }) {
|
|
|
22
23
|
}
|
|
23
24
|
}, [value]);
|
|
24
25
|
return _jsx("span", { ref: spanRef, className: className });
|
|
25
|
-
}
|
|
26
|
-
|
|
26
|
+
});
|
|
27
|
+
const SanitizedHTML = observer(function SanitizedHTML({ html: pre, className, }) {
|
|
27
28
|
const str = `${pre}`;
|
|
28
29
|
if (!needsSanitization(str)) {
|
|
29
30
|
return _jsx("span", { className: className, children: str });
|
|
@@ -34,4 +35,5 @@ export default function SanitizedHTML({ html: pre, className, }) {
|
|
|
34
35
|
return _jsx(SetHTML, { value: value, className: className });
|
|
35
36
|
}
|
|
36
37
|
return (_jsx(Suspense, { fallback: _jsx("span", { className: className }), children: _jsx(DOMPurifySanitizedHTML, { value: value, className: className }) }));
|
|
37
|
-
}
|
|
38
|
+
});
|
|
39
|
+
export default SanitizedHTML;
|
package/esm/ui/ScrollChrome.d.ts
CHANGED
|
@@ -4,10 +4,11 @@ import type { VirtualScrollModel } from '../util/useVirtualScrollWheel.ts';
|
|
|
4
4
|
* shadow saying content is hidden, and the scrollbar to reach it. Renders
|
|
5
5
|
* nothing when the content fits.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
declare const ScrollChrome: ({ model, controlsId, top, }: {
|
|
8
8
|
model: VirtualScrollModel;
|
|
9
9
|
/** `id` of the scrolled viewport element, for `aria-controls`. */
|
|
10
10
|
controlsId: string;
|
|
11
11
|
/** Viewport offset from the top, for a display with a sticky band above it. */
|
|
12
12
|
top?: number;
|
|
13
|
-
})
|
|
13
|
+
}) => import("react").JSX.Element;
|
|
14
|
+
export default ScrollChrome;
|
package/esm/ui/ScrollChrome.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
2
3
|
import ScrollEdgeShadow from './ScrollEdgeShadow.js';
|
|
3
4
|
import VerticalScrollbar from './VerticalScrollbar.js';
|
|
4
5
|
/**
|
|
@@ -6,6 +7,7 @@ import VerticalScrollbar from './VerticalScrollbar.js';
|
|
|
6
7
|
* shadow saying content is hidden, and the scrollbar to reach it. Renders
|
|
7
8
|
* nothing when the content fits.
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
+
const ScrollChrome = observer(function ScrollChrome({ model, controlsId, top = 0, }) {
|
|
10
11
|
return (_jsxs(_Fragment, { children: [_jsx(ScrollEdgeShadow, { model: model, top: top }), _jsx(VerticalScrollbar, { model: model, controlsId: controlsId, top: top })] }));
|
|
11
|
-
}
|
|
12
|
+
});
|
|
13
|
+
export default ScrollChrome;
|
|
@@ -14,9 +14,9 @@ import type { VirtualScrollModel } from '../util/useVirtualScrollWheel.ts';
|
|
|
14
14
|
*
|
|
15
15
|
* - **It costs nothing when nothing is hidden.** No content past an edge, no
|
|
16
16
|
* fade at that edge; a track that fits draws neither. So it is a readout of
|
|
17
|
-
* state, not a decoration — which a
|
|
17
|
+
* state, not a decoration — which a recolored bottom border could not be
|
|
18
18
|
* (and which would also need `showTrackOutlines`, an option the user can turn
|
|
19
|
-
* off, to have a border to
|
|
19
|
+
* off, to have a border to recolor).
|
|
20
20
|
* - **It says which way.** Scrolled to the bottom, the bottom fade goes and the
|
|
21
21
|
* top one appears, so "am I at the end" is answerable without scrolling.
|
|
22
22
|
*
|
|
@@ -44,9 +44,9 @@ const useStyles = makeStyles()(theme => {
|
|
|
44
44
|
*
|
|
45
45
|
* - **It costs nothing when nothing is hidden.** No content past an edge, no
|
|
46
46
|
* fade at that edge; a track that fits draws neither. So it is a readout of
|
|
47
|
-
* state, not a decoration — which a
|
|
47
|
+
* state, not a decoration — which a recolored bottom border could not be
|
|
48
48
|
* (and which would also need `showTrackOutlines`, an option the user can turn
|
|
49
|
-
* off, to have a border to
|
|
49
|
+
* off, to have a border to recolor).
|
|
50
50
|
* - **It says which way.** Scrolled to the bottom, the bottom fade goes and the
|
|
51
51
|
* top one appears, so "am I at the end" is answerable without scrolling.
|
|
52
52
|
*
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import LabeledCheckbox from './LabeledCheckbox.js';
|
|
4
5
|
import MonospaceTextField from './MonospaceTextField.js';
|
|
5
6
|
// The session a share or export dialog is about to hand over, as indented JSON
|
|
6
7
|
// behind a checkbox, so the sender can read what they are sending whichever
|
|
7
8
|
// link carries it. Shared by jbrowse-web's ShareDialog and jbrowse-desktop's
|
|
8
9
|
// ExportToWebDialog.
|
|
9
|
-
|
|
10
|
+
const SessionJsonPanel = observer(function SessionJsonPanel({ session, }) {
|
|
10
11
|
const [show, setShow] = useState(false);
|
|
11
12
|
return (_jsxs(_Fragment, { children: [_jsx(LabeledCheckbox, { checked: show, onChange: val => {
|
|
12
13
|
setShow(val);
|
|
13
14
|
}, label: "Show readable JSON" }), show ? (_jsx(MonospaceTextField, { label: "Session JSON", value: JSON.stringify(session, null, 2), readOnly: true, fullWidth: true, maxRows: 20 })) : null] }));
|
|
14
|
-
}
|
|
15
|
+
});
|
|
16
|
+
export default SessionJsonPanel;
|
package/esm/ui/ShareLinkField.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { TextField } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
// Read-only single-line field for a shareable URL; clicking selects the whole
|
|
4
5
|
// value so it's easy to copy. Shared by jbrowse-web's ShareDialog and
|
|
5
6
|
// jbrowse-desktop's ExportToWebDialog.
|
|
6
|
-
|
|
7
|
+
const ShareLinkField = observer(function ShareLinkField({ value, label = 'URL', }) {
|
|
7
8
|
return (_jsx(TextField, { label: label, value: value, variant: "filled", fullWidth: true, onClick: event => {
|
|
8
9
|
const target = event.target;
|
|
9
10
|
target.select();
|
|
@@ -12,4 +13,5 @@ export default function ShareLinkField({ value, label = 'URL', }) {
|
|
|
12
13
|
readOnly: true,
|
|
13
14
|
},
|
|
14
15
|
} }));
|
|
15
|
-
}
|
|
16
|
+
});
|
|
17
|
+
export default ShareLinkField;
|
package/esm/ui/SingleSlider.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ type Props = Omit<SliderProps, 'value' | 'defaultValue' | 'onChange' | 'onChange
|
|
|
4
4
|
onChange?: (value: number) => void;
|
|
5
5
|
onChangeCommitted?: (value: number) => void;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
export
|
|
7
|
+
declare const SingleSlider: (props: Props) => import("react").JSX.Element;
|
|
8
|
+
export default SingleSlider;
|
package/esm/ui/SingleSlider.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Slider } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import SliderTooltip from './SliderTooltip.js';
|
|
4
|
-
|
|
5
|
+
const SingleSlider = observer(function SingleSlider(props) {
|
|
5
6
|
const { onChange, onChangeCommitted, slots, ...rest } = props;
|
|
6
7
|
return (_jsx(Slider, { ...rest, slots: { valueLabel: SliderTooltip, ...slots }, onChange: (_, value) => {
|
|
7
8
|
onChange?.(typeof value === 'number' ? value : value[0]);
|
|
8
9
|
}, onChangeCommitted: (_, value) => {
|
|
9
10
|
onChangeCommitted?.(typeof value === 'number' ? value : value[0]);
|
|
10
11
|
} }));
|
|
11
|
-
}
|
|
12
|
+
});
|
|
13
|
+
export default SingleSlider;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { SliderValueLabelProps } from '@mui/material';
|
|
2
|
-
|
|
2
|
+
declare const SliderTooltip: (props: SliderValueLabelProps) => import("react").JSX.Element;
|
|
3
|
+
export default SliderTooltip;
|
package/esm/ui/SliderTooltip.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Tooltip } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
// Arrow tooltip above the thumb, used as SingleSlider's default value label so
|
|
4
5
|
// every slider (inline track-menu rows, the settings menus' size submenus, the
|
|
5
6
|
// LGV zoom control) shows one consistent value affordance instead of MUI's default
|
|
@@ -11,7 +12,8 @@ import { Tooltip } from '@mui/material';
|
|
|
11
12
|
// Popper. On the LGV zoom slider, whose value tracks live `bpPerPx`, that was a
|
|
12
13
|
// Tooltip and a Popper re-rendering on every animation frame of a wheel zoom to
|
|
13
14
|
// show nothing.
|
|
14
|
-
|
|
15
|
+
const SliderTooltip = observer(function SliderTooltip(props) {
|
|
15
16
|
const { children, open, value } = props;
|
|
16
17
|
return open ? (_jsx(Tooltip, { open: true, enterTouchDelay: 0, placement: "top", title: value, arrow: true, children: children })) : (children);
|
|
17
|
-
}
|
|
18
|
+
});
|
|
19
|
+
export default SliderTooltip;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SnackbarMessage } from './SnackbarModel.tsx';
|
|
2
|
-
|
|
2
|
+
declare const SnackbarContents: ({ onClose, contents, }: {
|
|
3
3
|
onClose: (_event: unknown, reason?: string) => void;
|
|
4
4
|
contents: SnackbarMessage;
|
|
5
|
-
})
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
export default SnackbarContents;
|
|
@@ -5,6 +5,7 @@ import CloseIcon from '@mui/icons-material/Close';
|
|
|
5
5
|
// See https://github.com/GMOD/jbrowse-components/issues/5325
|
|
6
6
|
import Report from '@mui/icons-material/Report';
|
|
7
7
|
import { Alert, Button, IconButton, Snackbar as MUISnackbar, } from '@mui/material';
|
|
8
|
+
import { observer } from 'mobx-react';
|
|
8
9
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
9
10
|
const useStyles = makeStyles()({
|
|
10
11
|
// preserve newlines in multi-line errors (e.g. MST validation dumps) while
|
|
@@ -17,7 +18,7 @@ const useStyles = makeStyles()({
|
|
|
17
18
|
overflowY: 'auto',
|
|
18
19
|
},
|
|
19
20
|
});
|
|
20
|
-
|
|
21
|
+
const SnackbarContents = observer(function SnackbarContents({ onClose, contents, }) {
|
|
21
22
|
const { classes } = useStyles();
|
|
22
23
|
const { actions } = contents;
|
|
23
24
|
return (_jsx(MUISnackbar, { open: true, onClose: onClose, anchorOrigin: { vertical: 'bottom', horizontal: 'center' }, children: _jsx(Alert, { onClose: onClose, action: actions?.length ? (_jsxs(_Fragment, { children: [actions.map((action, idx) => (_jsx(Button
|
|
@@ -26,4 +27,5 @@ export default function SnackbarContents({ onClose, contents, }) {
|
|
|
26
27
|
action.onClick();
|
|
27
28
|
onClose(e);
|
|
28
29
|
}, children: action.name === 'report' ? _jsx(Report, {}) : action.name }, idx))), _jsx(IconButton, { color: "inherit", onClick: onClose, children: _jsx(CloseIcon, {}) })] })) : null, severity: contents.level || 'warning', "data-testid": `snackbar-${contents.level || 'warning'}`, children: _jsx("div", { className: classes.message, children: contents.message }) }) }));
|
|
29
|
-
}
|
|
30
|
+
});
|
|
31
|
+
export default SnackbarContents;
|
|
@@ -11,6 +11,8 @@ export interface ErrorDialogState {
|
|
|
11
11
|
/**
|
|
12
12
|
* #stateModel SnackbarModel
|
|
13
13
|
* #category session
|
|
14
|
+
* Adds notifications to a session: the snackbar messages on screen, and the
|
|
15
|
+
* error shown in the stack-trace dialog.
|
|
14
16
|
*/
|
|
15
17
|
export default function SnackbarModel(): import("@jbrowse/mobx-state-tree").IModelType<{}, {
|
|
16
18
|
/**
|
package/esm/ui/SnackbarModel.js
CHANGED
|
@@ -3,6 +3,8 @@ import { observable } from 'mobx';
|
|
|
3
3
|
/**
|
|
4
4
|
* #stateModel SnackbarModel
|
|
5
5
|
* #category session
|
|
6
|
+
* Adds notifications to a session: the snackbar messages on screen, and the
|
|
7
|
+
* error shown in the stack-trace dialog.
|
|
6
8
|
*/
|
|
7
9
|
export default function SnackbarModel() {
|
|
8
10
|
return types
|