@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
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
declare const FatalErrorDialog: ({ componentStack, error, onFactoryReset, resetButtonText, extraActions, }: {
|
|
2
2
|
componentStack?: string;
|
|
3
3
|
error?: unknown;
|
|
4
4
|
onFactoryReset: () => void;
|
|
5
5
|
resetButtonText?: string;
|
|
6
6
|
extraActions?: React.ReactNode;
|
|
7
|
-
})
|
|
7
|
+
}) => import("react").JSX.Element;
|
|
8
|
+
export default FatalErrorDialog;
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, } from '@mui/material';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
4
5
|
import ErrorBanner from './ErrorBanner.js';
|
|
5
6
|
import ErrorMessageStackTraceContents from './ErrorMessageStackTraceContents.js';
|
|
6
7
|
import FactoryResetDialog from './FactoryResetDialog.js';
|
|
7
|
-
const ResetComponent = ({ onFactoryReset, resetButtonText, })
|
|
8
|
+
const ResetComponent = observer(function ResetComponent({ onFactoryReset, resetButtonText, }) {
|
|
8
9
|
const [dialogOpen, setDialogOpen] = useState(false);
|
|
9
10
|
return (_jsxs(_Fragment, { children: [_jsx(Button, { "data-testid": "fatal-error", color: "primary", variant: "contained", onClick: () => {
|
|
10
11
|
setDialogOpen(true);
|
|
11
12
|
}, children: resetButtonText }), _jsx(FactoryResetDialog, { onClose: () => {
|
|
12
13
|
setDialogOpen(false);
|
|
13
14
|
}, open: dialogOpen, onFactoryReset: onFactoryReset })] }));
|
|
14
|
-
};
|
|
15
|
-
|
|
15
|
+
});
|
|
16
|
+
const FatalErrorDialog = observer(function FatalErrorDialog({ componentStack, error = 'No error message provided', onFactoryReset, resetButtonText = 'Factory Reset', extraActions, }) {
|
|
16
17
|
return (_jsxs(Dialog, { maxWidth: "xl", open: true, children: [_jsx(DialogTitle, { children: "Fatal error" }), _jsxs(DialogContent, { children: [_jsx(ErrorBanner, { error: error }), componentStack ? (_jsx(ErrorMessageStackTraceContents, { text: componentStack })) : null] }), _jsxs(DialogActions, { children: [extraActions, _jsx(Button, { color: "secondary", variant: "contained", onClick: () => {
|
|
17
18
|
window.location.reload();
|
|
18
19
|
}, children: "Refresh" }), _jsx(ResetComponent, { onFactoryReset: onFactoryReset, resetButtonText: resetButtonText })] })] }));
|
|
19
|
-
}
|
|
20
|
+
});
|
|
21
|
+
export default FatalErrorDialog;
|
package/esm/ui/FileDropZone.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface FileRejection {
|
|
|
14
14
|
* set, rejected files with their validation errors. Pass `message` to replace
|
|
15
15
|
* the default prompt and `children` for extra content (e.g. a Browse button).
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
declare const FileDropZone: ({ onDrop, accept, maxSize, multiple, message, children, className, }: {
|
|
18
18
|
onDrop: (accepted: File[], rejected: FileRejection[]) => void;
|
|
19
19
|
accept?: Accept;
|
|
20
20
|
maxSize?: number;
|
|
@@ -22,4 +22,5 @@ export default function FileDropZone({ onDrop, accept, maxSize, multiple, messag
|
|
|
22
22
|
message?: ReactNode;
|
|
23
23
|
children?: ReactNode;
|
|
24
24
|
className?: string;
|
|
25
|
-
})
|
|
25
|
+
}) => import("react").JSX.Element;
|
|
26
|
+
export default FileDropZone;
|
package/esm/ui/FileDropZone.js
CHANGED
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useRef, useState } from 'react';
|
|
3
3
|
import CloudUploadIcon from '@mui/icons-material/CloudUpload';
|
|
4
4
|
import { Typography } from '@mui/material';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
5
6
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
6
7
|
import { alpha } from './palette.js';
|
|
7
8
|
const useStyles = makeStyles()(theme => ({
|
|
@@ -67,7 +68,7 @@ function validate(file, accept, maxSize) {
|
|
|
67
68
|
* set, rejected files with their validation errors. Pass `message` to replace
|
|
68
69
|
* the default prompt and `children` for extra content (e.g. a Browse button).
|
|
69
70
|
*/
|
|
70
|
-
|
|
71
|
+
const FileDropZone = observer(function FileDropZone({ onDrop, accept, maxSize, multiple = true, message, children, className, }) {
|
|
71
72
|
const { classes, cx } = useStyles();
|
|
72
73
|
const inputRef = useRef(null);
|
|
73
74
|
// dragenter/dragleave fire for child elements too; ref-count them so
|
|
@@ -126,4 +127,5 @@ export default function FileDropZone({ onDrop, accept, maxSize, multiple = true,
|
|
|
126
127
|
// reset so selecting the same file again still fires onChange
|
|
127
128
|
event.target.value = '';
|
|
128
129
|
} }), _jsx(CloudUploadIcon, { className: classes.uploadIcon, fontSize: "large" }), _jsx(Typography, { color: "text.secondary", align: "center", children: message ?? 'Drag and drop files here, or click to browse' }), children] }));
|
|
129
|
-
}
|
|
130
|
+
});
|
|
131
|
+
export default FileDropZone;
|
|
@@ -58,7 +58,7 @@ async function pickFileHandleLocation() {
|
|
|
58
58
|
throw e;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
function FilePickerButton({ setLocation, }) {
|
|
61
|
+
const FilePickerButton = observer(function FilePickerButton({ setLocation, }) {
|
|
62
62
|
if (supportsFileSystemAccess) {
|
|
63
63
|
return (_jsx(Button, { variant: "outlined", onClick: async () => {
|
|
64
64
|
const loc = await pickFileHandleLocation();
|
|
@@ -91,8 +91,8 @@ function FilePickerButton({ setLocation, }) {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
} })] }));
|
|
94
|
-
}
|
|
95
|
-
function ReloadPrompt({ location, setLocation, }) {
|
|
94
|
+
});
|
|
95
|
+
const ReloadPrompt = observer(function ReloadPrompt({ location, setLocation, }) {
|
|
96
96
|
const handleReopen = async () => {
|
|
97
97
|
if (isFileHandleLocation(location)) {
|
|
98
98
|
try {
|
|
@@ -108,7 +108,7 @@ function ReloadPrompt({ location, setLocation, }) {
|
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
return (_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1 }, children: [_jsx(Typography, { color: "error", children: "(need to reload)" }), isFileHandleLocation(location) && (_jsx(Button, { size: "small", variant: "text", color: "primary", onClick: handleReopen, children: "Reopen" }))] }));
|
|
111
|
-
}
|
|
111
|
+
});
|
|
112
112
|
const LocalFileChooser = observer(function LocalFileChooser({ location, setLocation, }) {
|
|
113
113
|
const { classes } = useStyles();
|
|
114
114
|
const filename = getFilename(location);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { BaseInternetAccountModel } from '../../pluggableElementTypes/index.ts';
|
|
2
2
|
import type { FileLocation } from '../../util/types/index.ts';
|
|
3
|
-
|
|
3
|
+
declare const LocationInput: ({ toggleButtonValue, selectedAccount, location, inline, setLocation, }: {
|
|
4
4
|
toggleButtonValue: string;
|
|
5
5
|
selectedAccount?: BaseInternetAccountModel;
|
|
6
6
|
location?: FileLocation;
|
|
7
7
|
inline?: boolean;
|
|
8
8
|
setLocation: (arg: FileLocation) => void;
|
|
9
|
-
})
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
10
|
+
export default LocationInput;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
2
3
|
import LocalFileChooser from './LocalFileChooser.js';
|
|
3
4
|
import UrlChooser from './UrlChooser.js';
|
|
4
|
-
|
|
5
|
+
const LocationInput = observer(function LocationInput({ toggleButtonValue, selectedAccount, location, inline, setLocation, }) {
|
|
5
6
|
// `file` is the only toggle with an input of its own — URL and every account
|
|
6
7
|
// toggle share the URL box, which is what `selectorLabel` names. Anything
|
|
7
8
|
// else falling through to `null` drew a field label and a toggle group with
|
|
8
9
|
// nothing under them: picking Dropbox did it, and so did a location arriving
|
|
9
10
|
// already stamped with an `internetAccountId`.
|
|
10
11
|
return toggleButtonValue === 'file' ? (_jsx(LocalFileChooser, { location: location, setLocation: setLocation })) : (_jsx(UrlChooser, { location: location, setLocation: setLocation, label: selectedAccount?.selectorLabel, style: inline ? { margin: 0 } : undefined }));
|
|
11
|
-
}
|
|
12
|
+
});
|
|
13
|
+
export default LocationInput;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { BaseInternetAccountModel } from '../../pluggableElementTypes/index.ts';
|
|
2
|
-
|
|
2
|
+
declare const SourceTypeSelector: ({ value, sourceTypes, shownAccounts, hiddenAccounts, onChange, onHiddenAccountSelect, }: {
|
|
3
3
|
value: string;
|
|
4
4
|
sourceTypes: string[];
|
|
5
5
|
shownAccounts: BaseInternetAccountModel[];
|
|
6
6
|
hiddenAccounts: BaseInternetAccountModel[];
|
|
7
7
|
onChange: (event: React.MouseEvent, newValue: string | null) => void;
|
|
8
8
|
onHiddenAccountSelect: (id: string) => void;
|
|
9
|
-
})
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
10
|
+
export default SourceTypeSelector;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
|
|
3
3
|
import { ToggleButton, ToggleButtonGroup, Tooltip } from '@mui/material';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
4
5
|
import CascadingMenuButton from '../CascadingMenuButton.js';
|
|
5
6
|
import { getAccountLabel } from './util.js';
|
|
6
|
-
function AccountToggleButton({ account, }) {
|
|
7
|
+
const AccountToggleButton = observer(function AccountToggleButton({ account, }) {
|
|
7
8
|
return (_jsx(Tooltip, { title: account.name, children: _jsx(ToggleButton, { value: account.internetAccountId, children: getAccountLabel(account) }) }));
|
|
8
|
-
}
|
|
9
|
-
function MoreButton({ onClick, disabled, children, }) {
|
|
9
|
+
});
|
|
10
|
+
const MoreButton = observer(function MoreButton({ onClick, disabled, children, }) {
|
|
10
11
|
return (_jsx(ToggleButton, { value: "more", selected: false, disabled: disabled,
|
|
11
12
|
// ToggleButton types its target as HTMLElement, but it always renders a
|
|
12
13
|
// <button>, so narrowing to HTMLButtonElement for CascadingMenuButton's
|
|
@@ -14,12 +15,13 @@ function MoreButton({ onClick, disabled, children, }) {
|
|
|
14
15
|
onClick: e => {
|
|
15
16
|
onClick(e);
|
|
16
17
|
}, children: children }));
|
|
17
|
-
}
|
|
18
|
-
|
|
18
|
+
});
|
|
19
|
+
const SourceTypeSelector = observer(function SourceTypeSelector({ value, sourceTypes, shownAccounts, hiddenAccounts, onChange, onHiddenAccountSelect, }) {
|
|
19
20
|
return (_jsxs(ToggleButtonGroup, { value: value, exclusive: true, size: "small", onChange: onChange, "aria-label": "file, url, or account picker", children: [sourceTypes.includes('file') && (_jsx(ToggleButton, { value: "file", "aria-label": "local file", children: "File" })), _jsx(ToggleButton, { value: "url", "aria-label": "url", children: "URL" }), shownAccounts.map(account => (_jsx(AccountToggleButton, { account: account }, account.internetAccountId))), hiddenAccounts.length > 0 && (_jsxs(CascadingMenuButton, { menuItems: hiddenAccounts.map(account => ({
|
|
20
21
|
label: account.name,
|
|
21
22
|
onClick: () => {
|
|
22
23
|
onHiddenAccountSelect(account.internetAccountId);
|
|
23
24
|
},
|
|
24
25
|
})), ButtonComponent: MoreButton, anchorOrigin: { vertical: 'bottom', horizontal: 'center' }, transformOrigin: { vertical: 'top', horizontal: 'center' }, children: ["More", _jsx(ArrowDropDownIcon, {})] }))] }));
|
|
25
|
-
}
|
|
26
|
+
});
|
|
27
|
+
export default SourceTypeSelector;
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* predicate. Every place that repeated it is a place that could forget it, and
|
|
7
7
|
* two already had.
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
declare const GpuFallbackButton: ({ error, onRetry, }: {
|
|
10
10
|
error: unknown;
|
|
11
11
|
onRetry: () => void;
|
|
12
|
-
})
|
|
12
|
+
}) => import("react").JSX.Element | null;
|
|
13
|
+
export default GpuFallbackButton;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Button, Tooltip } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import { GPU_FALLBACK_LABEL, GPU_FALLBACK_TOOLTIP, disableGpuRendering, shouldOfferGpuFallback, } from './gpuFallback.js';
|
|
4
5
|
/**
|
|
5
6
|
* The "Use Canvas2D" remedy on a GPU error banner, for the MUI chrome.
|
|
@@ -9,7 +10,7 @@ import { GPU_FALLBACK_LABEL, GPU_FALLBACK_TOOLTIP, disableGpuRendering, shouldOf
|
|
|
9
10
|
* predicate. Every place that repeated it is a place that could forget it, and
|
|
10
11
|
* two already had.
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
const GpuFallbackButton = observer(function GpuFallbackButton({ error, onRetry, }) {
|
|
13
14
|
if (!shouldOfferGpuFallback(error)) {
|
|
14
15
|
return null;
|
|
15
16
|
}
|
|
@@ -17,4 +18,5 @@ export default function GpuFallbackButton({ error, onRetry, }) {
|
|
|
17
18
|
disableGpuRendering();
|
|
18
19
|
onRetry();
|
|
19
20
|
}, children: GPU_FALLBACK_LABEL }) }));
|
|
20
|
-
}
|
|
21
|
+
});
|
|
22
|
+
export default GpuFallbackButton;
|
package/esm/ui/HoverMenu.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PopoverOrigin } from '@mui/material';
|
|
2
|
-
declare
|
|
2
|
+
declare const HoverMenu: ({ anchorEl, onClose, onMouseEnter, paperRef, anchorOrigin, transformOrigin, zIndex, children, }: {
|
|
3
3
|
anchorEl: HTMLElement | null;
|
|
4
4
|
onClose: () => void;
|
|
5
5
|
onMouseEnter?: () => void;
|
|
@@ -8,5 +8,5 @@ declare function HoverMenu({ anchorEl, onClose, onMouseEnter, paperRef, anchorOr
|
|
|
8
8
|
transformOrigin: PopoverOrigin;
|
|
9
9
|
zIndex?: React.CSSProperties['zIndex'];
|
|
10
10
|
children: React.ReactNode;
|
|
11
|
-
})
|
|
11
|
+
}) => import("react").JSX.Element;
|
|
12
12
|
export default HoverMenu;
|
package/esm/ui/HoverMenu.js
CHANGED
|
@@ -2,6 +2,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
// this code adapted from material-ui-popup-state by Andy Edwards, MIT license
|
|
3
3
|
// https://github.com/jcoreio/material-ui-popup-state/blob/9dba66241a0c25b172c93ae7d9e45a9745f138e8/LICENSE.md
|
|
4
4
|
import { Menu } from '@mui/material';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
import { usePlacedMenuFocus } from './usePlacedMenuFocus.js';
|
|
5
7
|
// A Menu a hovering pointer can cross into: the root (which spans the viewport)
|
|
6
8
|
// is click-through so the gap between the opener row and the panel doesn't
|
|
7
9
|
// swallow the pointer, while the paper itself stays interactive. That root can
|
|
@@ -18,13 +20,15 @@ import { Menu } from '@mui/material';
|
|
|
18
20
|
// and `onMouseEnter`, which fires on the paper rather than the click-through
|
|
19
21
|
// root and so means "the pointer arrived here", not "the pointer is somewhere
|
|
20
22
|
// over the viewport".
|
|
21
|
-
function HoverMenu({ anchorEl, onClose, onMouseEnter, paperRef, anchorOrigin, transformOrigin, zIndex, children, }) {
|
|
22
|
-
|
|
23
|
+
const HoverMenu = observer(function HoverMenu({ anchorEl, onClose, onMouseEnter, paperRef, anchorOrigin, transformOrigin, zIndex, children, }) {
|
|
24
|
+
const { onEntering, ...focus } = usePlacedMenuFocus();
|
|
25
|
+
return (_jsx(Menu, { ...focus, open: true, anchorEl: anchorEl, onClose: onClose, anchorOrigin: anchorOrigin, transformOrigin: transformOrigin, style: { pointerEvents: 'none', zIndex }, hideBackdrop: true, slotProps: {
|
|
23
26
|
paper: {
|
|
24
27
|
style: { pointerEvents: 'auto' },
|
|
25
28
|
onMouseEnter,
|
|
26
29
|
ref: paperRef,
|
|
27
30
|
},
|
|
31
|
+
transition: { onEntering },
|
|
28
32
|
},
|
|
29
33
|
// A submenu is portaled in the DOM but is still a React *descendant* of
|
|
30
34
|
// the parent menu's list, so React replays its key events into the parent
|
|
@@ -36,5 +40,5 @@ function HoverMenu({ anchorEl, onClose, onMouseEnter, paperRef, anchorOrigin, tr
|
|
|
36
40
|
onKeyDown: e => {
|
|
37
41
|
e.stopPropagation();
|
|
38
42
|
}, children: children }));
|
|
39
|
-
}
|
|
43
|
+
});
|
|
40
44
|
export default HoverMenu;
|
package/esm/ui/HoverTooltip.d.ts
CHANGED
|
@@ -19,9 +19,10 @@ import type React from 'react';
|
|
|
19
19
|
* `BaseTooltip` is: it reaches @floating-ui (~266KB) and that barrel is on the
|
|
20
20
|
* eager plugin-entry path.
|
|
21
21
|
*/
|
|
22
|
-
|
|
22
|
+
declare const HoverTooltip: ({ hit, mouseState, children, }: {
|
|
23
23
|
/** The display's hover. Nothing is drawn when it is absent. */
|
|
24
24
|
hit: unknown;
|
|
25
25
|
mouseState: MouseState | undefined;
|
|
26
26
|
children: React.ReactNode;
|
|
27
|
-
})
|
|
27
|
+
}) => React.JSX.Element | null;
|
|
28
|
+
export default HoverTooltip;
|
package/esm/ui/HoverTooltip.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 BaseTooltip from './BaseTooltip.js';
|
|
3
4
|
/**
|
|
4
5
|
* `BaseTooltip` anchored to the chrome's pointer measurement, drawn only when
|
|
@@ -19,6 +20,7 @@ import BaseTooltip from './BaseTooltip.js';
|
|
|
19
20
|
* `BaseTooltip` is: it reaches @floating-ui (~266KB) and that barrel is on the
|
|
20
21
|
* eager plugin-entry path.
|
|
21
22
|
*/
|
|
22
|
-
|
|
23
|
+
const HoverTooltip = observer(function HoverTooltip({ hit, mouseState, children, }) {
|
|
23
24
|
return hit && mouseState ? (_jsx(BaseTooltip, { clientPoint: { x: mouseState.clientX, y: mouseState.clientY }, children: children })) : null;
|
|
24
|
-
}
|
|
25
|
+
});
|
|
26
|
+
export default HoverTooltip;
|
package/esm/ui/Icons.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SvgIconProps } from '@mui/material/SvgIcon';
|
|
2
2
|
export { default as InfoIcon } from '@mui/icons-material/Info';
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
7
|
-
export declare
|
|
3
|
+
export declare const Indexing: (props: SvgIconProps) => import("react").JSX.Element;
|
|
4
|
+
export declare const TrackSelector: (props: SvgIconProps) => import("react").JSX.Element;
|
|
5
|
+
export declare const DNA: (props: SvgIconProps) => import("react").JSX.Element;
|
|
6
|
+
export declare const Highlighter: (props: SvgIconProps) => import("react").JSX.Element;
|
|
7
|
+
export declare const Cable: (props: SvgIconProps) => import("react").JSX.Element;
|
package/esm/ui/Icons.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import SvgIcon from '@mui/material/SvgIcon';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
export { default as InfoIcon } from '@mui/icons-material/Info';
|
|
4
5
|
// https://materialdesignicons.com/ text-search icon
|
|
5
|
-
export function Indexing(props) {
|
|
6
|
+
export const Indexing = observer(function Indexing(props) {
|
|
6
7
|
return (_jsx(SvgIcon, { ...props, children: _jsx("path", { d: "M19.31 18.9L22.39 22L21 23.39L17.88 20.32C17.19 20.75 16.37 21 15.5 21C13 21 11 19 11 16.5C11 14 13 12 15.5 12C18 12 20 14 20 16.5C20 17.38 19.75 18.21 19.31 18.9M15.5 19C16.88 19 18 17.88 18 16.5C18 15.12 16.88 14 15.5 14C14.12 14 13 15.12 13 16.5C13 17.88 14.12 19 15.5 19M21 4V6H3V4H21M3 16V14H9V16H3M3 11V9H21V11H18.97C17.96 10.37 16.77 10 15.5 10C14.23 10 13.04 10.37 12.03 11H3Z" }) }));
|
|
7
|
-
}
|
|
8
|
+
});
|
|
8
9
|
// format-list-checkbox from https://materialdesignicons.com/
|
|
9
|
-
export function TrackSelector(props) {
|
|
10
|
+
export const TrackSelector = observer(function TrackSelector(props) {
|
|
10
11
|
return (_jsx(SvgIcon, { ...props, children: _jsx("path", { d: "M21 19v-2H8v2h13m0-6v-2H8v2h13M8 7h13V5H8v2M4 5v2h2V5H4M3 5a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V5m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2m1 6v2h2v-2H4m-1 0a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1v-2z" }) }));
|
|
11
|
-
}
|
|
12
|
+
});
|
|
12
13
|
// dna from https://materialdesignicons.com/
|
|
13
|
-
export function DNA(props) {
|
|
14
|
+
export const DNA = observer(function DNA(props) {
|
|
14
15
|
return (_jsx(SvgIcon, { ...props, children: _jsx("path", { fill: "currentColor", d: "M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z" }) }));
|
|
15
|
-
}
|
|
16
|
+
});
|
|
16
17
|
// bx-highlight from https://boxicons.com/ (MIT License, Copyright (c) Aniket
|
|
17
18
|
// Suvarna) — https://github.com/atisawd/boxicons/blob/master/svg/regular/bx-highlight.svg
|
|
18
|
-
export function Highlighter(props) {
|
|
19
|
+
export const Highlighter = observer(function Highlighter(props) {
|
|
19
20
|
return (_jsx(SvgIcon, { ...props, children: _jsx("path", { d: "m20.707 5.826-3.535-3.533a.999.999 0 0 0-1.408-.006L7.096 10.82a1.01 1.01 0 0 0-.273.488l-1.024 4.437L4 18h2.828l1.142-1.129 3.588-.828c.18-.042.345-.133.477-.262l8.667-8.535a1 1 0 0 0 .005-1.42zm-9.369 7.833-2.121-2.12 7.243-7.131 2.12 2.12-7.242 7.131zM4 20h16v2H4z" }) }));
|
|
20
|
-
}
|
|
21
|
-
export function Cable(props) {
|
|
21
|
+
});
|
|
22
|
+
export const Cable = observer(function Cable(props) {
|
|
22
23
|
return (_jsx(SvgIcon, { ...props, children: _jsx("path", { d: "M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z" }) }));
|
|
23
|
-
}
|
|
24
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { INLINE_MENU_ROW_WIDTH } from './inlineMenuRowWidth.ts';
|
|
2
|
-
export declare
|
|
2
|
+
export declare const ResetToDefaultButton: ({ disabled, title, onClick, }: {
|
|
3
3
|
disabled: boolean;
|
|
4
4
|
title?: string;
|
|
5
5
|
onClick: () => void;
|
|
6
|
-
})
|
|
6
|
+
}) => import("react").JSX.Element;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
/* eslint-disable react-refresh/only-export-components -- the shared row width belongs with these leaf menu-row primitives; no component state to fast-refresh */
|
|
3
2
|
import RestartAltIcon from '@mui/icons-material/RestartAlt';
|
|
4
3
|
import { IconButton, Tooltip } from '@mui/material';
|
|
4
|
+
/* eslint-disable react-refresh/only-export-components -- the shared row width belongs with these leaf menu-row primitives; no component state to fast-refresh */
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
5
6
|
// Shared width for inline track-menu control rows (the size sliders and the
|
|
6
7
|
// wiggle resolution stepper), so the rows line up when they stack in one menu
|
|
7
8
|
// and can't drift apart.
|
|
@@ -10,8 +11,8 @@ export { INLINE_MENU_ROW_WIDTH } from './inlineMenuRowWidth.js';
|
|
|
10
11
|
// a span so its Tooltip still shows while disabled at the default. Kept in one
|
|
11
12
|
// place so the icon/size/padding and the disabled-at-default behavior stay
|
|
12
13
|
// identical across the sibling controls.
|
|
13
|
-
export function ResetToDefaultButton({ disabled, title = 'Reset to default', onClick, }) {
|
|
14
|
+
export const ResetToDefaultButton = observer(function ResetToDefaultButton({ disabled, title = 'Reset to default', onClick, }) {
|
|
14
15
|
return (_jsx(Tooltip, { title: title, children: _jsx("span", { children: _jsx(IconButton, { size: "small", sx: { p: 0.25 }, disabled: disabled, onClick: () => {
|
|
15
16
|
onClick();
|
|
16
17
|
}, children: _jsx(RestartAltIcon, { fontSize: "small" }) }) }) }));
|
|
17
|
-
}
|
|
18
|
+
});
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { ConditionRow, FieldChoice, TextRow } from '../util/jexlFilterRows.ts';
|
|
2
2
|
import type { Jexl } from '@jbrowse/jexl';
|
|
3
3
|
export declare function compileError(line: string, jexl: Pick<Jexl, 'compile'>): string | undefined;
|
|
4
|
-
export declare
|
|
4
|
+
export declare const ConditionRowEditor: ({ row, choices, onChange, onRemove, }: {
|
|
5
5
|
row: ConditionRow;
|
|
6
6
|
choices: FieldChoice[];
|
|
7
7
|
onChange: (row: ConditionRow) => void;
|
|
8
8
|
onRemove: () => void;
|
|
9
|
-
})
|
|
10
|
-
export declare
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
10
|
+
export declare const TextRowEditor: ({ row, jexl, onChange, onRemove, }: {
|
|
11
11
|
row: TextRow;
|
|
12
12
|
jexl: Pick<Jexl, 'compile'>;
|
|
13
13
|
onChange: (row: TextRow) => void;
|
|
14
14
|
onRemove: () => void;
|
|
15
|
-
})
|
|
15
|
+
}) => import("react").JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import CloseIcon from '@mui/icons-material/Close';
|
|
3
3
|
import { Autocomplete, IconButton, ListItemText, MenuItem, TextField, } from '@mui/material';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
4
5
|
import { OPERATORS, stripJexlPrefix, typedField, withField, withOp, } from '../util/jexlFilterRows.js';
|
|
5
6
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
6
7
|
import MonospaceTextField from './MonospaceTextField.js';
|
|
@@ -42,10 +43,10 @@ export function compileError(line, jexl) {
|
|
|
42
43
|
return e instanceof Error ? e.message : String(e);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
function RemoveButton({ onClick }) {
|
|
46
|
+
const RemoveButton = observer(function RemoveButton({ onClick, }) {
|
|
46
47
|
return (_jsx(IconButton, { size: "small", "aria-label": "Remove condition", onClick: onClick, children: _jsx(CloseIcon, { fontSize: "small" }) }));
|
|
47
|
-
}
|
|
48
|
-
function ValueInput({ row, onChange, }) {
|
|
48
|
+
});
|
|
49
|
+
const ValueInput = observer(function ValueInput({ row, onChange, }) {
|
|
49
50
|
const { classes } = useStyles();
|
|
50
51
|
const { field, op, value } = row;
|
|
51
52
|
if (op === 'set' || op === '!set') {
|
|
@@ -63,8 +64,8 @@ function ValueInput({ row, onChange, }) {
|
|
|
63
64
|
}, renderInput: params => _jsx(TextField, { ...params, placeholder: "Value" }) })) : (_jsx(TextField, { className: classes.value, size: "small", placeholder: op === '~' ? 'Regular expression' : 'Value', type: field?.type === 'number' ? 'number' : 'text', disabled: !field, value: text, onChange: event => {
|
|
64
65
|
onChange({ ...row, value: event.target.value });
|
|
65
66
|
} }));
|
|
66
|
-
}
|
|
67
|
-
export function ConditionRowEditor({ row, choices, onChange, onRemove, }) {
|
|
67
|
+
});
|
|
68
|
+
export const ConditionRowEditor = observer(function ConditionRowEditor({ row, choices, onChange, onRemove, }) {
|
|
68
69
|
const { classes } = useStyles();
|
|
69
70
|
const { field } = row;
|
|
70
71
|
const grouped = choices.some(choice => choice.group);
|
|
@@ -81,10 +82,10 @@ export function ConditionRowEditor({ row, choices, onChange, onRemove, }) {
|
|
|
81
82
|
}, renderOption: ({ key, ...props }, choice) => (_jsx("li", { ...props, children: _jsx(ListItemText, { primary: choice.label, secondary: choice.description }) }, key)), renderInput: params => _jsx(TextField, { ...params, placeholder: "Field" }) }), _jsx(TextField, { className: classes.op, select: true, size: "small", disabled: !field, value: row.op, helperText: field?.multi ? 'any value' : undefined, onChange: event => {
|
|
82
83
|
onChange(withOp(row, event.target.value));
|
|
83
84
|
}, children: OPERATORS[field?.type ?? 'any'].map(({ op, label }) => (_jsx(MenuItem, { value: op, children: label }, op))) }), _jsx(ValueInput, { row: row, onChange: onChange }), _jsx(RemoveButton, { onClick: onRemove })] }));
|
|
84
|
-
}
|
|
85
|
-
export function TextRowEditor({ row, jexl, onChange, onRemove, }) {
|
|
85
|
+
});
|
|
86
|
+
export const TextRowEditor = observer(function TextRowEditor({ row, jexl, onChange, onRemove, }) {
|
|
86
87
|
const { classes } = useStyles();
|
|
87
88
|
return (_jsxs("div", { className: classes.row, children: [_jsx("div", { className: classes.expression, title: "An expression the field pickers cannot show", children: "\u0192" }), _jsx(MonospaceTextField, { className: classes.value, variant: "standard", fullWidth: true, value: row.text, error: compileError(row.text, jexl), onChange: text => {
|
|
88
89
|
onChange({ ...row, text });
|
|
89
90
|
} }), _jsx(RemoveButton, { onClick: onRemove })] }));
|
|
90
|
-
}
|
|
91
|
+
});
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
|
|
2
|
+
declare const LabeledCheckbox: ({ checked, onChange, label, className, disabled, size, }: {
|
|
3
3
|
checked: boolean;
|
|
4
4
|
onChange: (checked: boolean) => void;
|
|
5
5
|
label: ReactNode;
|
|
6
6
|
className?: string;
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
size?: 'small' | 'medium';
|
|
9
|
-
})
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
10
|
+
export default LabeledCheckbox;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Checkbox, FormControlLabel } from '@mui/material';
|
|
3
|
-
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
const LabeledCheckbox = observer(function LabeledCheckbox({ checked, onChange, label, className, disabled, size, }) {
|
|
4
5
|
return (_jsx(FormControlLabel, { className: className, disabled: disabled, control: _jsx(Checkbox, { size: size, checked: checked, onChange: event => {
|
|
5
6
|
onChange(event.target.checked);
|
|
6
7
|
} }), label: label }));
|
|
7
|
-
}
|
|
8
|
+
});
|
|
9
|
+
export default LabeledCheckbox;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { ComponentProps } from 'react';
|
|
2
|
-
declare const Lazy: import("react").LazyExoticComponent<
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
declare const Lazy: import("react").LazyExoticComponent<({ clientPoint: clientPointCoords, anchor, id, children, placement, }: {
|
|
3
|
+
placement?: import("./BaseTooltip.tsx").TooltipPlacement;
|
|
4
|
+
clientPoint?: {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
};
|
|
8
|
+
anchor?: HTMLElement;
|
|
9
|
+
id?: string;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
}) => import("react").ReactPortal | null>;
|
|
12
|
+
declare const LazyBaseTooltip: (props: ComponentProps<typeof Lazy>) => import("react").JSX.Element;
|
|
13
|
+
export default LazyBaseTooltip;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Suspense, lazy } from 'react';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
// The tooltip, behind its own chunk: @floating-ui is ~266KB and this is what
|
|
4
5
|
// lets the ui barrel export it without putting that on the startup path. A
|
|
5
6
|
// consumer that wants the eager component deep-imports './BaseTooltip.tsx'.
|
|
6
7
|
const Lazy = lazy(() => import('./BaseTooltip.js'));
|
|
7
|
-
|
|
8
|
+
const LazyBaseTooltip = observer(function LazyBaseTooltip(props) {
|
|
8
9
|
return (_jsx(Suspense, { fallback: null, children: _jsx(Lazy, { ...props }) }));
|
|
9
|
-
}
|
|
10
|
+
});
|
|
11
|
+
export default LazyBaseTooltip;
|
|
@@ -25,6 +25,7 @@ function glyphPathData(shape, size, x, y) {
|
|
|
25
25
|
//
|
|
26
26
|
// The shape fills the `size` box from (x, y) so a caller can lay swatches out on
|
|
27
27
|
// a fixed pitch.
|
|
28
|
+
// eslint-disable-next-line no-restricted-syntax -- drawn inside a frozen SVG figure
|
|
28
29
|
export function LegendSwatchGlyph({ swatch, size, x = 0, y = 0, }) {
|
|
29
30
|
return swatch.shape ? (_jsx("path", { d: glyphPathData(swatch.shape, size, x, y), fill: swatch.color })) : (_jsx("rect", { x: x, y: y, width: size, height: size, fill: swatch.color }));
|
|
30
31
|
}
|
package/esm/ui/LoadingDots.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
declare const LoadingDots: () => import("react").JSX.Element;
|
|
2
|
+
export default LoadingDots;
|
package/esm/ui/LoadingDots.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
2
3
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
3
4
|
import { dot1, dot2, dot3 } from './loadingDotKeyframes.js';
|
|
4
5
|
const useStyles = makeStyles()({
|
|
@@ -24,7 +25,8 @@ const useStyles = makeStyles()({
|
|
|
24
25
|
},
|
|
25
26
|
},
|
|
26
27
|
});
|
|
27
|
-
|
|
28
|
+
const LoadingDots = observer(function LoadingDots() {
|
|
28
29
|
const { classes } = useStyles();
|
|
29
30
|
return (_jsxs("span", { className: classes.dots, children: [_jsx("span", { children: "." }), _jsx("span", { children: "." }), _jsx("span", { children: "." })] }));
|
|
30
|
-
}
|
|
31
|
+
});
|
|
32
|
+
export default LoadingDots;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { TypographyProps } from '@mui/material';
|
|
2
2
|
interface Props extends TypographyProps {
|
|
3
3
|
message?: string;
|
|
4
|
+
/** false for a label that stands in for work not yet started, such as an
|
|
5
|
+
* off-screen view's placeholder, which a capture must not wait on */
|
|
6
|
+
busy?: boolean;
|
|
4
7
|
children?: never;
|
|
5
8
|
}
|
|
6
9
|
/**
|
|
@@ -19,5 +22,5 @@ interface Props extends TypographyProps {
|
|
|
19
22
|
* should carry the attribute too — see `isPageBusyInPage` in
|
|
20
23
|
* `@jbrowse/capture`, which is what reads it.
|
|
21
24
|
*/
|
|
22
|
-
|
|
23
|
-
export
|
|
25
|
+
declare const LoadingEllipses: ({ message, variant, busy, ...rest }: Props) => import("react").JSX.Element;
|
|
26
|
+
export default LoadingEllipses;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Typography } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
3
4
|
import LoadingDots from './LoadingDots.js';
|
|
4
5
|
/**
|
|
5
6
|
* The label every part of the app shows while it is working, and — through
|
|
@@ -17,6 +18,7 @@ import LoadingDots from './LoadingDots.js';
|
|
|
17
18
|
* should carry the attribute too — see `isPageBusyInPage` in
|
|
18
19
|
* `@jbrowse/capture`, which is what reads it.
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
|
-
return (_jsxs(Typography, { ...rest, variant: variant, "data-busy":
|
|
22
|
-
}
|
|
21
|
+
const LoadingEllipses = observer(function LoadingEllipses({ message, variant = 'body2', busy = true, ...rest }) {
|
|
22
|
+
return (_jsxs(Typography, { ...rest, variant: variant, "data-busy": busy || undefined, children: [message || 'Loading', _jsx(LoadingDots, {})] }));
|
|
23
|
+
});
|
|
24
|
+
export default LoadingEllipses;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* one `setTimeout` per loading pulse, which is the floor for these semantics.
|
|
13
13
|
*/
|
|
14
14
|
export declare function useDelayedFlag(active: boolean, delayMs: number): boolean;
|
|
15
|
-
|
|
15
|
+
declare const LoadingOverlay: ({ statusMessage, progress, isVisible, immediate, canceled, onCancel, onRetry, }: {
|
|
16
16
|
statusMessage?: string;
|
|
17
17
|
progress?: number;
|
|
18
18
|
isVisible?: boolean;
|
|
@@ -20,4 +20,5 @@ export default function LoadingOverlay({ statusMessage, progress, isVisible, imm
|
|
|
20
20
|
canceled?: boolean;
|
|
21
21
|
onCancel?: () => void;
|
|
22
22
|
onRetry?: () => void;
|
|
23
|
-
})
|
|
23
|
+
}) => import("react").JSX.Element | null;
|
|
24
|
+
export default LoadingOverlay;
|