@jbrowse/core 5.0.0-beta.1 → 5.0.0-beta.11
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 +1709 -390
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +5 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +3 -5
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +34 -29
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +1 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +37 -14
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +1 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +15 -31
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.d.ts +4 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +12 -25
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.d.ts +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetailsFrame.js +11 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +8 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +24 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +4 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +17 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +5 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.d.ts +6 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/index.js +7 -18
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.d.ts +16 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/jexlFilterActions.js +49 -0
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.d.ts +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/util.js +6 -29
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceContents.js +7 -34
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceName.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +12 -0
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +12 -5
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/useSequenceData.js +8 -5
- package/esm/BaseFeatureWidget/configSchema.d.ts +1 -1
- package/esm/BaseFeatureWidget/formatDetails.d.ts +13 -29
- package/esm/BaseFeatureWidget/formatDetails.js +62 -83
- package/esm/BaseFeatureWidget/index.d.ts +2 -1
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +42 -29
- package/esm/BaseFeatureWidget/stateModelFactory.js +98 -98
- package/esm/BaseFeatureWidget/types.d.ts +12 -6
- package/esm/BaseFeatureWidget/util.d.ts +0 -10
- package/esm/BaseFeatureWidget/util.js +0 -17
- package/esm/CorePlugin.js +34 -3
- package/esm/PluginLoader.d.ts +24 -13
- package/esm/PluginLoader.js +167 -51
- package/esm/PluginManager.d.ts +130 -24
- package/esm/PluginManager.js +180 -32
- package/esm/ReExports/MuiDataGridReExports.d.ts +1 -0
- package/esm/ReExports/MuiDataGridReExports.js +2 -2
- package/esm/ReExports/coreModules.generated.d.ts +2 -0
- package/esm/ReExports/coreModules.generated.js +530 -0
- package/esm/ReExports/coreWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/coreWorkerModules.generated.js +490 -0
- package/esm/ReExports/frameworkModules.d.ts +2 -0
- package/esm/ReExports/frameworkModules.js +68 -0
- package/esm/ReExports/frameworkShared.d.ts +12 -0
- package/esm/ReExports/frameworkShared.js +16 -0
- package/esm/ReExports/frameworkWorkerModules.generated.d.ts +2 -0
- package/esm/ReExports/frameworkWorkerModules.generated.js +130 -0
- package/esm/ReExports/list.js +528 -79
- package/esm/ReExports/modules.d.ts +1 -1
- package/esm/ReExports/modules.js +10 -165
- package/esm/ReExports/registry.d.ts +1 -0
- package/esm/ReExports/registry.js +23 -5
- package/esm/ReExports/uiStub.d.ts +3 -0
- package/esm/ReExports/uiStub.js +33 -0
- package/esm/ReExports/workerModules.d.ts +2 -0
- package/esm/ReExports/workerModules.js +11 -0
- package/esm/TextSearch/TextSearchManager.d.ts +27 -13
- package/esm/TextSearch/TextSearchManager.js +77 -36
- package/esm/TextSearch/places.d.ts +12 -0
- package/esm/TextSearch/places.js +94 -0
- package/esm/assemblyManager/assembly.d.ts +21 -19
- package/esm/assemblyManager/assembly.js +28 -26
- package/esm/assemblyManager/assemblyAdapters.d.ts +1 -1
- package/esm/assemblyManager/assemblyAdapters.js +8 -2
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +31 -90
- package/esm/assemblyManager/assemblyConfigSchema.js +35 -47
- package/esm/assemblyManager/assemblyManager.d.ts +35 -180
- package/esm/assemblyManager/assemblyManager.js +47 -51
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +25 -18
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +78 -49
- package/esm/assemblyManager/geneticCodes.js +2 -5
- package/esm/assemblyManager/getSequenceAdapterConfig.d.ts +10 -0
- package/esm/assemblyManager/getSequenceAdapterConfig.js +10 -0
- package/esm/assemblyManager/indexAssemblyNames.d.ts +9 -0
- package/esm/assemblyManager/indexAssemblyNames.js +22 -0
- package/esm/assemblyManager/loadRefNameMap.d.ts +1 -1
- package/esm/assemblyManager/loadRefNameMap.js +4 -9
- package/esm/assemblyManager/refNameMapKey.d.ts +7 -0
- package/esm/assemblyManager/refNameMapKey.js +12 -0
- package/esm/checkPlugins.d.ts +2 -0
- package/esm/checkPlugins.js +38 -17
- package/esm/configuration/bamIndexFields.d.ts +49 -0
- package/esm/configuration/bamIndexFields.js +41 -0
- package/esm/configuration/configurationSchema.d.ts +101 -71
- package/esm/configuration/configurationSchema.js +207 -134
- package/esm/configuration/configurationSchemaUnion.d.ts +39 -0
- package/esm/configuration/configurationSchemaUnion.js +56 -0
- package/esm/configuration/configurationSlot.d.ts +150 -60
- package/esm/configuration/configurationSlot.js +103 -75
- package/esm/configuration/fillLocations.d.ts +14 -0
- package/esm/configuration/fillLocations.js +14 -0
- package/esm/configuration/formatAboutConfigSchema.d.ts +7 -21
- package/esm/configuration/formatDetailsConfigSchema.d.ts +11 -37
- package/esm/configuration/formatDetailsConfigSchema.js +10 -13
- package/esm/configuration/fullConfSnapshot.d.ts +4 -19
- package/esm/configuration/fullConfSnapshot.js +30 -52
- package/esm/configuration/getConf.d.ts +45 -41
- package/esm/configuration/getConf.js +111 -44
- package/esm/configuration/index.d.ts +26 -11
- package/esm/configuration/index.js +16 -7
- package/esm/configuration/indexType.d.ts +26 -0
- package/esm/configuration/indexType.js +38 -0
- package/esm/configuration/mergeFormatCallbacks.d.ts +6 -7
- package/esm/configuration/mergeFormatCallbacks.js +13 -10
- package/esm/configuration/plot.d.ts +61 -0
- package/esm/configuration/plot.js +142 -0
- package/esm/configuration/readConfObject.d.ts +2 -24
- package/esm/configuration/readConfObject.js +20 -63
- package/esm/configuration/requirements.d.ts +37 -0
- package/esm/configuration/requirements.js +88 -0
- package/esm/configuration/schemaRegistry.d.ts +32 -15
- package/esm/configuration/schemaRegistry.js +33 -35
- package/esm/configuration/schemaTypes.d.ts +21 -5
- package/esm/configuration/schemaTypes.js +66 -55
- package/esm/configuration/slotFacade.d.ts +12 -29
- package/esm/configuration/slotFacade.js +44 -23
- package/esm/configuration/snapshotPreprocess.d.ts +43 -0
- package/esm/configuration/snapshotPreprocess.js +161 -0
- package/esm/configuration/tabixIndexFields.d.ts +30 -4
- package/esm/configuration/tabixIndexFields.js +21 -4
- package/esm/configuration/tabixShorthand.d.ts +34 -17
- package/esm/configuration/tabixShorthand.js +49 -22
- package/esm/configuration/types.d.ts +182 -43
- package/esm/configuration/uriShorthand.d.ts +9 -0
- package/esm/configuration/uriShorthand.js +16 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +13 -19
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +12 -19
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +40 -2
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +68 -5
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +40 -0
- package/esm/data_adapters/BaseAdapter/featureDensity.js +31 -0
- package/esm/data_adapters/BaseAdapter/index.d.ts +23 -3
- package/esm/data_adapters/BaseAdapter/index.js +1 -0
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +37 -0
- package/esm/data_adapters/BaseAdapter/rowSources.js +7 -0
- package/esm/data_adapters/BaseAdapter/stats.d.ts +33 -1
- package/esm/data_adapters/BaseAdapter/stats.js +52 -13
- package/esm/data_adapters/BaseAdapter/types.d.ts +8 -12
- package/esm/data_adapters/BaseAdapter/zoomRange.d.ts +10 -0
- package/esm/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +7 -11
- package/esm/data_adapters/CytobandAdapter/configSchema.js +3 -17
- package/esm/data_adapters/dataAdapterCache.d.ts +19 -2
- package/esm/data_adapters/dataAdapterCache.js +44 -10
- package/esm/data_adapters/getFeatureAdapter.d.ts +6 -4
- package/esm/data_adapters/getFeatureAdapter.js +8 -8
- package/esm/data_adapters/getSequenceSubAdapter.d.ts +7 -9
- package/esm/data_adapters/getSequenceSubAdapter.js +8 -10
- package/esm/pluggableElementTypes/AdapterType.d.ts +8 -8
- package/esm/pluggableElementTypes/AdapterType.js +1 -1
- package/esm/pluggableElementTypes/DisplayType.d.ts +53 -16
- package/esm/pluggableElementTypes/DisplayType.js +28 -12
- package/esm/pluggableElementTypes/LazyStateModelElement.d.ts +32 -0
- package/esm/pluggableElementTypes/LazyStateModelElement.js +77 -0
- package/esm/pluggableElementTypes/PluggableElementBase.d.ts +3 -5
- package/esm/pluggableElementTypes/PluggableElementBase.js +3 -5
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +11 -1
- package/esm/pluggableElementTypes/RpcMethodType.js +25 -9
- package/esm/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +1 -2
- package/esm/pluggableElementTypes/TextSearchAdapterType.d.ts +7 -7
- package/esm/pluggableElementTypes/ViewType.d.ts +20 -4
- package/esm/pluggableElementTypes/ViewType.js +32 -4
- package/esm/pluggableElementTypes/WidgetType.d.ts +6 -0
- package/esm/pluggableElementTypes/WidgetType.js +6 -0
- package/esm/pluggableElementTypes/addMenuItems.d.ts +3 -2
- package/esm/pluggableElementTypes/extendElementType.d.ts +1 -2
- package/esm/pluggableElementTypes/extendElementType.js +9 -5
- package/esm/pluggableElementTypes/index.d.ts +2 -1
- package/esm/pluggableElementTypes/index.js +2 -9
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +19 -9
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +122 -28
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +155 -11
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +65 -16
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +179 -117
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +87 -18
- package/esm/pluggableElementTypes/models/BaseViewModel.js +54 -11
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +26 -16
- package/esm/pluggableElementTypes/models/assertDisplayContract.d.ts +15 -11
- package/esm/pluggableElementTypes/models/assertDisplayContract.js +25 -32
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +22 -18
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +5 -5
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +26 -31
- package/esm/pluggableElementTypes/models/baseTrackConfig.d.ts +108 -147
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +96 -73
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +4 -6
- package/esm/pluggableElementTypes/models/components/fetchTrackData.d.ts +3 -4
- package/esm/pluggableElementTypes/models/components/fetchTrackData.js +3 -3
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +23 -13
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +80 -48
- package/esm/pluggableElementTypes/models/index.d.ts +2 -3
- package/esm/pluggableElementTypes/models/index.js +2 -3
- package/esm/pluggableElementTypes/models/migrateTrackConfig.d.ts +15 -1
- package/esm/pluggableElementTypes/models/migrateTrackConfig.js +85 -25
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.d.ts +4 -3
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/genbank.js +141 -19
- package/esm/pluggableElementTypes/models/saveTrackFileTypes/types.d.ts +3 -3
- package/esm/pluginDefinitions.d.ts +34 -7
- package/esm/pluginDefinitions.js +54 -20
- package/esm/rpc/BaseRpcDriver.d.ts +2 -2
- package/esm/rpc/BaseRpcDriver.js +25 -30
- package/esm/rpc/MainThreadRpcDriver.d.ts +2 -2
- package/esm/rpc/MainThreadRpcDriver.js +13 -8
- package/esm/rpc/RpcClient.d.ts +18 -6
- package/esm/rpc/RpcClient.js +51 -16
- package/esm/rpc/RpcManager.d.ts +14 -10
- package/esm/rpc/RpcManager.js +11 -1
- package/esm/rpc/RpcRegistry.d.ts +40 -7
- package/esm/rpc/RpcServer.d.ts +3 -1
- package/esm/rpc/RpcServer.js +19 -12
- package/esm/rpc/WebWorkerRpcDriver.d.ts +11 -4
- package/esm/rpc/WebWorkerRpcDriver.js +64 -68
- package/esm/rpc/byteBudget.d.ts +20 -5
- package/esm/rpc/byteBudget.js +16 -5
- package/esm/rpc/configSchema.d.ts +7 -21
- package/esm/rpc/coreRpcMethods.d.ts +4 -0
- package/esm/rpc/coreRpcMethods.js +4 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.d.ts +13 -0
- package/esm/rpc/methods/CoreGetEncodedFeature.js +32 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +16 -0
- package/esm/rpc/methods/CoreGetEncodedLayers.js +59 -0
- package/esm/rpc/methods/CoreGetExportData.js +3 -4
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +11 -0
- package/esm/rpc/methods/CoreGetFeatureDensity.js +22 -0
- package/esm/rpc/methods/CoreGetFeatures.js +3 -5
- package/esm/rpc/methods/CoreGetRefNames.js +2 -12
- package/esm/rpc/methods/CoreGetRegionByteEstimate.js +1 -1
- package/esm/rpc/methods/CoreGetSequence.js +2 -2
- package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +13 -0
- package/esm/rpc/methods/CoreLoadAdapterCode.js +16 -0
- package/esm/rpc/methods/layerFeatures.d.ts +33 -0
- package/esm/rpc/methods/layerFeatures.js +29 -0
- package/esm/svg/SvgExport.js +6 -7
- package/esm/svg/SvgThemeProviders.d.ts +12 -0
- package/esm/svg/SvgThemeProviders.js +15 -0
- package/esm/svg/exportViewSvg.d.ts +28 -0
- package/esm/svg/exportViewSvg.js +13 -0
- package/esm/svg/normalizeSvgMarkup.d.ts +7 -0
- package/esm/svg/normalizeSvgMarkup.js +99 -0
- package/esm/svg/serializeSvg.d.ts +7 -0
- package/esm/svg/serializeSvg.js +11 -0
- package/esm/svg/svgId.d.ts +1 -1
- package/esm/svg/svgId.js +1 -1
- package/esm/svg/svgReady.d.ts +9 -7
- package/esm/svg/svgReady.js +8 -7
- package/esm/svg/trackNames.d.ts +7 -5
- package/esm/svg/trackNames.js +12 -9
- package/esm/svg/wrapSvgExport.js +6 -74
- package/esm/ui/AddCustomPluginDialog.js +3 -8
- package/esm/ui/AppReadyMarker.d.ts +45 -0
- package/esm/ui/AppReadyMarker.js +89 -0
- package/esm/ui/BaseExportSvgDialog.d.ts +1 -1
- package/esm/ui/CascadingMenu.js +181 -104
- package/esm/ui/DropDownMenu.js +2 -1
- package/esm/ui/ErrorBanner.js +1 -1
- package/esm/ui/ErrorBoundary.d.ts +2 -2
- package/esm/ui/ErrorMessageStackTraceContents.js +2 -1
- package/esm/ui/ErrorMessageStackTraceDialog.js +5 -11
- package/esm/ui/ExportSvgDialog.d.ts +1 -1
- package/esm/ui/FileDropZone.js +2 -1
- package/esm/ui/FileSelector/useInternetAccounts.d.ts +156 -96
- package/esm/ui/HoverMenu.d.ts +1 -2
- package/esm/ui/HoverMenu.js +6 -3
- package/esm/ui/JexlFilterDialog.d.ts +13 -10
- package/esm/ui/JexlFilterDialog.js +122 -50
- package/esm/ui/JexlFilterRowEditors.d.ts +15 -0
- package/esm/ui/JexlFilterRowEditors.js +90 -0
- package/esm/ui/LazyBaseTooltip.d.ts +4 -0
- package/esm/ui/LazyBaseTooltip.js +9 -0
- package/esm/ui/LegendSwatchGlyph.js +26 -21
- package/esm/ui/LoadingOverlay.d.ts +14 -0
- package/esm/ui/LoadingOverlay.js +4 -2
- package/esm/ui/MenuTypes.d.ts +23 -53
- package/esm/ui/MenuTypes.js +3 -0
- package/esm/ui/MonospaceTextField.d.ts +2 -1
- package/esm/ui/MonospaceTextField.js +23 -20
- package/esm/ui/PaletteContext.d.ts +10 -5
- package/esm/ui/PaletteContext.js +44 -6
- package/esm/ui/RefNameAutocomplete/SearchOption.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/SearchOption.js +45 -0
- package/esm/ui/RefNameAutocomplete/index.d.ts +1 -2
- package/esm/ui/RefNameAutocomplete/index.js +8 -2
- package/esm/ui/RefNameAutocomplete/util.d.ts +13 -0
- package/esm/ui/RefNameAutocomplete/util.js +42 -1
- package/esm/ui/ResizeHandle.d.ts +3 -1
- package/esm/ui/ResizeHandle.js +44 -11
- package/esm/ui/ScrollChrome.d.ts +13 -0
- package/esm/ui/ScrollChrome.js +11 -0
- package/esm/ui/ScrollEdgeShadow.d.ts +6 -9
- package/esm/ui/ScrollEdgeShadow.js +14 -35
- package/esm/ui/ScrollZoomToggle.d.ts +4 -27
- package/esm/ui/ScrollZoomToggle.js +34 -51
- package/esm/ui/SessionJsonPanel.d.ts +3 -0
- package/esm/ui/SessionJsonPanel.js +14 -0
- package/esm/ui/SettingsChangesTable.d.ts +1 -0
- package/esm/ui/SettingsChangesTable.js +49 -11
- package/esm/ui/ShareLinkField.d.ts +1 -3
- package/esm/ui/ShareLinkField.js +13 -40
- package/esm/ui/SizeSliderRow.d.ts +1 -3
- package/esm/ui/SizeSliderRow.js +4 -6
- package/esm/ui/SnackbarModel.js +79 -67
- package/esm/ui/StatusProgressBar.js +2 -2
- package/esm/ui/SvgColorLegend.d.ts +9 -4
- package/esm/ui/SvgColorLegend.js +82 -41
- package/esm/ui/VerticalScrollbar.d.ts +13 -34
- package/esm/ui/VerticalScrollbar.js +29 -83
- package/esm/ui/ViewLoadingScreen.d.ts +5 -4
- package/esm/ui/ViewLoadingScreen.js +8 -32
- package/esm/ui/colorScale.d.ts +92 -0
- package/esm/ui/colorScale.js +72 -0
- package/esm/ui/colors.d.ts +64 -0
- package/esm/ui/colors.js +230 -1
- package/esm/ui/hoverBoxStyle.d.ts +14 -2
- package/esm/ui/hoverBoxStyle.js +17 -2
- package/esm/ui/index.d.ts +12 -12
- package/esm/ui/index.js +14 -22
- package/esm/ui/launchViewMenu.js +15 -5
- package/esm/ui/legendMenuItem.d.ts +10 -32
- package/esm/ui/legendMenuItem.js +9 -36
- package/esm/ui/legendSpec.d.ts +15 -8
- package/esm/ui/legendSpec.js +14 -23
- package/esm/ui/makeSizeMenu.d.ts +0 -6
- package/esm/ui/makeSizeMenu.js +6 -30
- package/esm/ui/measureLegendText.js +1 -1
- package/esm/ui/menuItemAdornment.d.ts +9 -20
- package/esm/ui/menuItemAdornment.js +10 -32
- package/esm/ui/menuItems.d.ts +2 -7
- package/esm/ui/menuItems.js +1 -6
- package/esm/ui/multiTrackMenuItems.d.ts +6 -0
- package/esm/ui/palette.d.ts +118 -116
- package/esm/ui/palette.js +114 -75
- package/esm/ui/replaceViewAction.d.ts +1 -1
- package/esm/ui/replaceViewAction.js +1 -1
- package/esm/ui/theme.d.ts +43 -119
- package/esm/ui/theme.js +62 -78
- package/esm/ui/toggleMenuItems.d.ts +1 -3
- package/esm/ui/toggleMenuItems.js +6 -5
- package/esm/ui/useAssemblySelection.d.ts +4 -4
- package/esm/ui/viewHeaderHeight.d.ts +1 -0
- package/esm/ui/viewHeaderHeight.js +1 -0
- package/esm/util/Base1DUtils.d.ts +5 -3
- package/esm/util/Base1DUtils.js +14 -6
- package/esm/util/Base1DViewModel.d.ts +2 -1
- package/esm/util/Base1DViewModel.js +3 -2
- package/esm/util/SvgCanvas.d.ts +15 -13
- package/esm/util/SvgCanvas.js +76 -56
- package/esm/util/TimeTraveller.d.ts +3 -0
- package/esm/util/TimeTraveller.js +34 -2
- package/esm/util/aborting.d.ts +39 -0
- package/esm/util/aborting.js +88 -6
- package/esm/util/adapterMetadata.d.ts +1 -1
- package/esm/util/adapterMetadata.js +6 -5
- package/esm/util/addAndShowTrack.d.ts +2 -5
- package/esm/util/addAndShowTrack.js +5 -1
- package/esm/util/addRelativeUris.d.ts +17 -5
- package/esm/util/addRelativeUris.js +46 -10
- package/esm/util/addTrackFromWidget.d.ts +2 -5
- package/esm/util/addTrackFromWidget.js +5 -4
- package/esm/util/aggregateFieldName.d.ts +10 -0
- package/esm/util/aggregateFieldName.js +8 -0
- package/esm/util/analytics.js +46 -13
- package/esm/util/animationAllowed.d.ts +9 -0
- package/esm/util/animationAllowed.js +13 -0
- package/esm/util/applyRowResizeWheel.d.ts +10 -5
- package/esm/util/applyRowResizeWheel.js +10 -21
- package/esm/util/bandHeight.d.ts +10 -0
- package/esm/util/bandHeight.js +29 -0
- package/esm/util/bandLayout.d.ts +4 -4
- package/esm/util/bandLayout.js +4 -4
- package/esm/util/baseDisplayConfig.d.ts +8 -0
- package/esm/util/baseDisplayConfig.js +27 -0
- package/esm/util/bezierConnector.d.ts +4 -3
- package/esm/util/bezierConnector.js +38 -45
- package/esm/util/bgzfWorkerPool.d.ts +20 -74
- package/esm/util/bgzfWorkerPool.js +20 -74
- package/esm/util/binnedAggregate.d.ts +17 -0
- package/esm/util/binnedAggregate.js +275 -0
- package/esm/util/cacheBudgets.d.ts +22 -19
- package/esm/util/cacheBudgets.js +22 -19
- package/esm/util/cachedSetup.d.ts +16 -6
- package/esm/util/cachedSetup.js +108 -38
- package/esm/util/categoricalField.d.ts +56 -0
- package/esm/util/categoricalField.js +73 -0
- package/esm/util/cellMatches.d.ts +23 -0
- package/esm/util/cellMatches.js +264 -0
- package/esm/util/cellsStep.d.ts +29 -0
- package/esm/util/cellsStep.js +437 -0
- package/esm/util/clampToContig.d.ts +17 -0
- package/esm/util/clampToContig.js +19 -0
- package/esm/util/coarseStripHTML.js +1 -2
- package/esm/util/color/cssColorsLevel4.d.ts +1 -0
- package/esm/util/color/cssColorsLevel4.js +1 -0
- package/esm/util/color/index.d.ts +5 -3
- package/esm/util/color/index.js +7 -4
- package/esm/util/colorBits.d.ts +3 -3
- package/esm/util/colorBits.js +19 -44
- package/esm/util/colorRamp.d.ts +49 -5
- package/esm/util/colorRamp.js +169 -18
- package/esm/util/colorScale.d.ts +156 -0
- package/esm/util/colorScale.js +243 -0
- package/esm/util/colorSchemes.d.ts +21 -0
- package/esm/util/colorSchemes.js +30 -0
- package/esm/util/copyToClipboard.js +8 -1
- package/esm/util/{createStopTokenRotation.d.ts → createAbortRotation.d.ts} +21 -23
- package/esm/util/{createStopTokenRotation.js → createAbortRotation.js} +21 -52
- package/esm/util/createSvgRasterCanvas.d.ts +10 -0
- package/esm/util/cssColorParse.d.ts +15 -0
- package/esm/util/cssColorParse.js +53 -0
- package/esm/util/diagonalizeRegions.d.ts +2 -3
- package/esm/util/diagonalizeRegions.js +8 -13
- package/esm/util/expandLooseSearchIndex.d.ts +19 -0
- package/esm/util/expandLooseSearchIndex.js +29 -0
- package/esm/util/featureTable.d.ts +224 -0
- package/esm/util/featureTable.js +366 -0
- package/esm/util/featureTransforms.d.ts +81 -0
- package/esm/util/featureTransforms.js +1231 -0
- package/esm/util/featureTypes.d.ts +24 -0
- package/esm/util/featureTypes.js +35 -0
- package/esm/util/fetchAndMaybeUnzip.js +16 -9
- package/esm/util/fetchContext.d.ts +7 -8
- package/esm/util/fetchContext.js +3 -3
- package/esm/util/fetchHub.d.ts +4 -2
- package/esm/util/fetchHub.js +2 -2
- package/esm/util/fetchPhases.d.ts +10 -10
- package/esm/util/fetchSeq.d.ts +2 -3
- package/esm/util/fetchSeq.js +2 -2
- package/esm/util/fieldReader.d.ts +17 -0
- package/esm/util/fieldReader.js +62 -0
- package/esm/util/formatBytes.js +1 -1
- package/esm/util/formatGuessers.d.ts +25 -14
- package/esm/util/formatGuessers.js +42 -27
- package/esm/util/formatRelativeTime.js +1 -1
- package/esm/util/freezeDeep.d.ts +8 -10
- package/esm/util/freezeDeep.js +8 -10
- package/esm/util/getLocationUri.d.ts +2 -1
- package/esm/util/getLocationUri.js +8 -2
- package/esm/util/groupKeys.d.ts +76 -0
- package/esm/util/groupKeys.js +156 -0
- package/esm/util/highlights.d.ts +10 -6
- package/esm/util/highlights.js +12 -25
- package/esm/util/hooks.d.ts +31 -2
- package/esm/util/hooks.js +72 -3
- package/esm/util/index.d.ts +11 -11
- package/esm/util/index.js +11 -10
- package/esm/util/indexCandidates.d.ts +1 -31
- package/esm/util/indexCandidates.js +5 -63
- package/esm/util/installFetch.d.ts +77 -37
- package/esm/util/installFetch.js +65 -38
- package/esm/util/installInitAutorun.d.ts +14 -13
- package/esm/util/installInitAutorun.js +17 -17
- package/esm/util/installPrerequisiteFetch.d.ts +115 -0
- package/esm/util/installPrerequisiteFetch.js +111 -0
- package/esm/util/intervals.js +9 -4
- package/esm/util/io/index.js +22 -15
- package/esm/util/isDataCurrent.d.ts +7 -5
- package/esm/util/isDataCurrent.js +9 -6
- package/esm/util/isTextEntryFocused.d.ts +7 -0
- package/esm/util/isTextEntryFocused.js +16 -0
- package/esm/util/jexl.js +24 -21
- package/esm/util/jexlFilterRows.d.ts +89 -0
- package/esm/util/jexlFilterRows.js +252 -0
- package/esm/util/jexlFilters.d.ts +32 -57
- package/esm/util/jexlFilters.js +31 -29
- package/esm/util/jexlStrings.d.ts +3 -4
- package/esm/util/jexlStrings.js +2 -3
- package/esm/util/layouts/GranularRectLayout.d.ts +8 -1
- package/esm/util/layouts/GranularRectLayout.js +25 -8
- package/esm/util/lazyAfterAttach.d.ts +13 -0
- package/esm/util/lazyAfterAttach.js +31 -0
- package/esm/util/lazyWithPreload.d.ts +19 -0
- package/esm/util/lazyWithPreload.js +27 -0
- package/esm/util/legendCandidates.d.ts +72 -0
- package/esm/util/legendCandidates.js +138 -0
- package/esm/util/locString.js +5 -2
- package/esm/util/localStorage.js +4 -4
- package/esm/util/markEncoding.d.ts +150 -0
- package/esm/util/markEncoding.js +885 -0
- package/esm/util/markEncodingTypes.d.ts +595 -0
- package/esm/util/markEncodingTypes.js +8 -0
- package/esm/util/mst-reflection.d.ts +2 -20
- package/esm/util/mst-reflection.js +3 -53
- package/esm/util/mstUtils.d.ts +31 -23
- package/esm/util/mstUtils.js +39 -24
- package/esm/util/numericUtils.d.ts +7 -0
- package/esm/util/numericUtils.js +16 -0
- package/esm/util/numericValue.d.ts +14 -0
- package/esm/util/numericValue.js +34 -0
- package/esm/util/openFeatureWidget.d.ts +5 -0
- package/esm/util/openFeatureWidget.js +2 -2
- package/esm/util/openViews.d.ts +17 -0
- package/esm/util/openViews.js +22 -0
- package/esm/util/parentWalk.d.ts +1 -1
- package/esm/util/parentWalk.js +1 -1
- package/esm/util/parseLineByLine.d.ts +4 -5
- package/esm/util/parseLineByLine.js +8 -14
- package/esm/util/pluginStore.d.ts +6 -8
- package/esm/util/pluginStore.js +17 -16
- package/esm/util/preloadComponent.d.ts +5 -0
- package/esm/util/preloadComponent.js +11 -0
- package/esm/util/progress.d.ts +22 -22
- package/esm/util/progress.js +27 -26
- package/esm/util/quantileExtent.d.ts +49 -0
- package/esm/util/quantileExtent.js +162 -0
- package/esm/util/range.d.ts +13 -9
- package/esm/util/range.js +17 -8
- package/esm/util/renameRegions.d.ts +26 -6
- package/esm/util/renameRegions.js +68 -54
- package/esm/util/renderToStaticMarkup.js +24 -14
- package/esm/util/rxjs.d.ts +23 -8
- package/esm/util/rxjs.js +61 -15
- package/esm/util/samplesTsv.d.ts +49 -0
- package/esm/util/samplesTsv.js +86 -0
- package/esm/util/scheduleDetachedDestroy.d.ts +18 -0
- package/esm/util/scheduleDetachedDestroy.js +24 -0
- package/esm/util/scrollLatch.d.ts +1 -0
- package/esm/util/scrollLatch.js +8 -0
- package/esm/util/selectEncodedFeature.d.ts +16 -0
- package/esm/util/selectEncodedFeature.js +34 -0
- package/esm/util/sessionSharing.d.ts +7 -5
- package/esm/util/sessionSharing.js +23 -23
- package/esm/util/shapeNameList.d.ts +2 -0
- package/esm/util/shapeNameList.js +6 -0
- package/esm/util/shapeNames.d.ts +7 -0
- package/esm/util/shapeNames.js +11 -0
- package/esm/util/simpleFeature.d.ts +0 -1
- package/esm/util/springAnimate.js +1 -1
- package/esm/util/starFusion.d.ts +26 -0
- package/esm/util/starFusion.js +37 -0
- package/esm/util/stepTables.d.ts +96 -0
- package/esm/util/stepTables.js +277 -0
- package/esm/util/svAlt.d.ts +145 -0
- package/esm/util/svAlt.js +364 -0
- package/esm/util/svgColorProps.d.ts +11 -0
- package/esm/util/svgColorProps.js +28 -1
- package/esm/util/systemColorScheme.d.ts +12 -0
- package/esm/util/systemColorScheme.js +27 -0
- package/esm/util/tabix.d.ts +19 -10
- package/esm/util/tabix.js +19 -14
- package/esm/util/thresholdScale.d.ts +91 -0
- package/esm/util/thresholdScale.js +166 -0
- package/esm/util/timeGate.d.ts +4 -5
- package/esm/util/timeGate.js +4 -5
- package/esm/util/trackConfigDelta.d.ts +26 -26
- package/esm/util/trackConfigDelta.js +63 -47
- package/esm/util/tracks.d.ts +120 -66
- package/esm/util/tracks.js +501 -151
- package/esm/util/translateTranscript.d.ts +44 -0
- package/esm/util/translateTranscript.js +102 -0
- package/esm/util/types/data.d.ts +0 -2
- package/esm/util/types/index.d.ts +121 -22
- package/esm/util/types/index.js +9 -0
- package/esm/util/types/mst.d.ts +3 -0
- package/esm/util/types/mst.js +4 -0
- package/esm/util/types/renameIds.d.ts +1 -0
- package/esm/util/types/renameIds.js +29 -0
- package/esm/util/types/services.d.ts +1 -1
- package/esm/util/unknownSnapshotKeys.d.ts +53 -0
- package/esm/util/unknownSnapshotKeys.js +76 -0
- package/esm/util/useFeatureSequence.js +5 -5
- package/esm/util/useFetch.d.ts +3 -4
- package/esm/util/useFetch.js +19 -10
- package/esm/util/useFetchPlugins.d.ts +6 -2
- package/esm/util/useFetchPlugins.js +7 -3
- package/esm/util/usePanZoom.js +10 -3
- package/esm/util/usePanelVirtualScroll.d.ts +7 -35
- package/esm/util/usePanelVirtualScroll.js +9 -36
- package/esm/util/useRafCommit.js +1 -0
- package/esm/util/useRowVirtualScroll.d.ts +6 -29
- package/esm/util/useRowVirtualScroll.js +8 -49
- package/esm/util/useVirtualScrollWheel.d.ts +20 -4
- package/esm/util/useVirtualScrollWheel.js +40 -74
- package/esm/util/viewHighlights.d.ts +3 -0
- package/esm/util/viewHighlights.js +5 -0
- package/esm/util/viewStatus.d.ts +47 -15
- package/esm/util/viewStatus.js +34 -0
- package/esm/util/wheelZoom.d.ts +7 -1
- package/esm/util/wheelZoom.js +85 -19
- package/esm/util/whenViewSettled.d.ts +55 -8
- package/esm/util/whenViewSettled.js +56 -7
- package/esm/util/withFeatureDetails.js +4 -0
- package/esm/util/withLaunchInput.d.ts +174 -0
- package/esm/util/withLaunchInput.js +274 -0
- package/package.json +75 -24
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.d.ts +0 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Position.js +0 -8
- package/esm/BaseFeatureWidget/BaseFeatureDetail/types.d.ts +0 -8
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.d.ts +0 -80
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/DLGAP3.js +0 -583
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.d.ts +0 -141
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/test_data/NCDN.js +0 -1116
- package/esm/ReExports/BaseFeatureDetails.d.ts +0 -1
- package/esm/ReExports/BaseFeatureDetails.js +0 -10
- package/esm/ReExports/index.d.ts +0 -1
- package/esm/ReExports/index.js +0 -1
- package/esm/ReExports/publicUtil.d.ts +0 -1
- package/esm/ReExports/publicUtil.js +0 -28
- package/esm/configuration/promotableDefaults.d.ts +0 -199
- package/esm/configuration/promotableDefaults.js +0 -326
- package/esm/configuration/promotablePin.d.ts +0 -55
- package/esm/configuration/promotablePin.js +0 -1
- package/esm/configuration/promotableResolve.d.ts +0 -108
- package/esm/configuration/promotableResolve.js +0 -117
- package/esm/configuration/promotableSlots.d.ts +0 -12
- package/esm/configuration/promotableSlots.js +0 -45
- package/esm/configuration/slotShape.d.ts +0 -12
- package/esm/configuration/slotShape.js +0 -84
- package/esm/pluggableElementTypes/models/HighlightsMixin.d.ts +0 -51
- package/esm/pluggableElementTypes/models/HighlightsMixin.js +0 -78
- package/esm/ui/PinAdornment.d.ts +0 -5
- package/esm/ui/PinAdornment.js +0 -79
- package/esm/ui/SvgGradientLegend.d.ts +0 -26
- package/esm/ui/SvgGradientLegend.js +0 -26
- package/esm/ui/highlightChipReveal.d.ts +0 -32
- package/esm/ui/highlightChipReveal.js +0 -39
- package/esm/ui/promotableMenuItems.d.ts +0 -19
- package/esm/ui/promotableMenuItems.js +0 -89
- package/esm/ui/promotablePinCoverage.d.ts +0 -44
- package/esm/ui/promotablePinCoverage.js +0 -87
- package/esm/util/applyInitSettings.d.ts +0 -79
- package/esm/util/applyInitSettings.js +0 -91
- package/esm/util/openDisplays.d.ts +0 -23
- package/esm/util/openDisplays.js +0 -79
- package/esm/util/stopToken.d.ts +0 -211
- package/esm/util/stopToken.js +0 -438
- /package/esm/{BaseFeatureWidget/BaseFeatureDetail/types.js → data_adapters/BaseAdapter/zoomRange.js} +0 -0
package/esm/ui/CascadingMenu.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, use, useEffect,
|
|
2
|
+
import { createContext, memo, use, useEffect, useMemo, useState } from 'react';
|
|
3
3
|
import { Divider, ListItemIcon, ListItemText, ListSubheader, Menu, MenuItem, Tooltip, } from '@mui/material';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
6
|
-
import { useEventCallback } from '../util/useEventCallback.js';
|
|
7
6
|
import HoverMenu from './HoverMenu.js';
|
|
8
7
|
import { MenuItemTrailing } from './MenuItemTrailing.js';
|
|
9
|
-
import { staysOpenOnClick } from './MenuTypes.js';
|
|
8
|
+
import { resolveSubMenu, staysOpenOnClick } from './MenuTypes.js';
|
|
10
9
|
import { hasMenuItemAdornment } from './menuItemAdornment.js';
|
|
11
10
|
import { isAimedAtPanel } from './submenuAim.js';
|
|
12
11
|
// Compact section headers so tall menus (e.g. a display's flat "Show..."
|
|
@@ -24,6 +23,12 @@ const useStyles = makeStyles()(theme => ({
|
|
|
24
23
|
borderTop: `1px solid ${theme.palette.divider}`,
|
|
25
24
|
marginTop: 4,
|
|
26
25
|
},
|
|
26
|
+
// a leading subHeader has no rows above it to divide from, so the rule and
|
|
27
|
+
// its space would float against the menu's top edge
|
|
28
|
+
leadingSubHeader: {
|
|
29
|
+
borderTopWidth: 0,
|
|
30
|
+
marginTop: 0,
|
|
31
|
+
},
|
|
27
32
|
}));
|
|
28
33
|
const CascadingMenuContext = createContext(undefined);
|
|
29
34
|
function useCascadingMenu() {
|
|
@@ -59,57 +64,65 @@ function useCascadingMenu() {
|
|
|
59
64
|
*/
|
|
60
65
|
const submenuAimGraceMs = 120;
|
|
61
66
|
/**
|
|
62
|
-
*
|
|
67
|
+
* The hover intent that moves which submenu of ONE list is open.
|
|
63
68
|
*
|
|
64
69
|
* A click or ArrowRight says where the pointer meant to go and acts at once. A
|
|
65
70
|
* hover is read against {@link isAimedAtPanel}: outside the cone it acts at
|
|
66
71
|
* once too, and inside it defers, because the rows between a submenu row and
|
|
67
72
|
* its panel are exactly the ones a pointer on its way there has to cross.
|
|
73
|
+
*
|
|
74
|
+
* Built once per list, so every row gets the same handlers and a row whose
|
|
75
|
+
* open state didn't change skips the re-render a hover triggers.
|
|
68
76
|
*/
|
|
69
|
-
function
|
|
70
|
-
|
|
77
|
+
function createSubmenuHover(setOpenSubmenu) {
|
|
78
|
+
let openKey;
|
|
71
79
|
// the open panel's paper, so the cone has a real edge to open onto. Written
|
|
72
80
|
// by whichever CascadingSubmenu is open and cleared as it closes, so at most
|
|
73
81
|
// one submenu of this list ever owns it
|
|
74
|
-
const panelRef =
|
|
82
|
+
const panelRef = { current: null };
|
|
75
83
|
// where the pointer was when the open panel opened — the cone's tip
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
let apex;
|
|
85
|
+
// where the pointer last was while a panel is up. A row that slides under a
|
|
86
|
+
// resting pointer — the menu grew a fetch later and MUI moved it back into
|
|
87
|
+
// the viewport, or rows landed above — gets a mouseenter at that same point,
|
|
88
|
+
// and it is the layout that moved, not the pointer, so it is no hover.
|
|
89
|
+
let lastPoint;
|
|
90
|
+
let pending;
|
|
78
91
|
const cancelPending = () => {
|
|
79
|
-
if (pending
|
|
80
|
-
clearTimeout(pending.
|
|
81
|
-
pending
|
|
92
|
+
if (pending) {
|
|
93
|
+
clearTimeout(pending.timer);
|
|
94
|
+
pending = undefined;
|
|
82
95
|
}
|
|
83
96
|
};
|
|
84
|
-
useEffect(() => () => {
|
|
85
|
-
if (pending.current) {
|
|
86
|
-
clearTimeout(pending.current.timer);
|
|
87
|
-
}
|
|
88
|
-
}, []);
|
|
89
97
|
const commit = (key, point) => {
|
|
90
98
|
cancelPending();
|
|
91
|
-
apex
|
|
99
|
+
apex = key === undefined ? undefined : point;
|
|
100
|
+
lastPoint = point;
|
|
101
|
+
openKey = key;
|
|
92
102
|
setOpenSubmenu(key);
|
|
93
103
|
};
|
|
104
|
+
const restingUnderOpenPanel = (point) => openKey !== undefined &&
|
|
105
|
+
lastPoint !== undefined &&
|
|
106
|
+
point.x === lastPoint.x &&
|
|
107
|
+
point.y === lastPoint.y;
|
|
94
108
|
// 'unmeasured' is its own answer, not a lenient 'inside': a cone pointing at
|
|
95
109
|
// nothing would call every row crossed a veer-off, and a move handler that
|
|
96
110
|
// re-armed on it would hold the panel open for as long as the pointer kept
|
|
97
111
|
// moving anywhere at all
|
|
98
112
|
const aimAt = (point) => {
|
|
99
113
|
const panel = panelRef.current;
|
|
100
|
-
|
|
101
|
-
if (!panel || !tip) {
|
|
114
|
+
if (!panel || !apex) {
|
|
102
115
|
return 'unmeasured';
|
|
103
116
|
}
|
|
104
117
|
const rect = panel.getBoundingClientRect();
|
|
105
118
|
if (rect.width === 0 && rect.height === 0) {
|
|
106
119
|
return 'unmeasured';
|
|
107
120
|
}
|
|
108
|
-
return isAimedAtPanel(point,
|
|
121
|
+
return isAimedAtPanel(point, apex, rect) ? 'inside' : 'outside';
|
|
109
122
|
};
|
|
110
123
|
const defer = (key, point) => {
|
|
111
124
|
cancelPending();
|
|
112
|
-
pending
|
|
125
|
+
pending = {
|
|
113
126
|
key,
|
|
114
127
|
point,
|
|
115
128
|
timer: setTimeout(() => {
|
|
@@ -117,64 +130,120 @@ function useSubmenuHover() {
|
|
|
117
130
|
}, submenuAimGraceMs),
|
|
118
131
|
};
|
|
119
132
|
};
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const deferred = pending.current;
|
|
126
|
-
if (!deferred) {
|
|
127
|
-
return;
|
|
133
|
+
// the pointer arrived at a row wanting `key` open — undefined from a row with
|
|
134
|
+
// no submenu, i.e. "close whatever is"
|
|
135
|
+
const hoverSubmenu = (key, point) => {
|
|
136
|
+
if (key === openKey) {
|
|
137
|
+
cancelPending();
|
|
128
138
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
commit(deferred.key, deferred.point);
|
|
139
|
+
else if (restingUnderOpenPanel(point)) {
|
|
140
|
+
return;
|
|
132
141
|
}
|
|
133
|
-
else if (
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
|
|
142
|
+
else if (openKey === undefined || aimAt(point) === 'outside') {
|
|
143
|
+
// nothing to protect, or a pointer that was never heading for the open
|
|
144
|
+
// panel: either way there is nothing to wait for
|
|
145
|
+
commit(key, point);
|
|
137
146
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if (openSubmenu === undefined) {
|
|
141
|
-
return;
|
|
147
|
+
else {
|
|
148
|
+
defer(key, point);
|
|
142
149
|
}
|
|
143
|
-
|
|
144
|
-
return () => {
|
|
145
|
-
document.removeEventListener('mousemove', onPointerMove);
|
|
146
|
-
};
|
|
147
|
-
}, [openSubmenu, onPointerMove]);
|
|
150
|
+
};
|
|
148
151
|
return {
|
|
149
|
-
openSubmenu,
|
|
150
152
|
panelRef,
|
|
151
153
|
setSubmenu: commit,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
//
|
|
155
|
-
//
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
154
|
+
cancelPending,
|
|
155
|
+
hoverSubmenu,
|
|
156
|
+
// every row a pointer can rest on asks for the open panel to go away; only
|
|
157
|
+
// a row that owns a submenu, or the panel itself, keeps one up
|
|
158
|
+
closeOnHover: (event) => {
|
|
159
|
+
hoverSubmenu(undefined, { x: event.clientX, y: event.clientY });
|
|
160
|
+
},
|
|
161
|
+
// Watched only while a panel is up, and only a deferred change is waiting
|
|
162
|
+
// on it. A row's own hover cannot answer this alone: the pointer can leave
|
|
163
|
+
// the cone without ever crossing into another row, by turning around inside
|
|
164
|
+
// the one it is already on.
|
|
165
|
+
onPointerMove: (event) => {
|
|
166
|
+
lastPoint = { x: event.clientX, y: event.clientY };
|
|
167
|
+
const deferred = pending;
|
|
168
|
+
if (!deferred) {
|
|
169
|
+
return;
|
|
159
170
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
commit(key, point);
|
|
171
|
+
const aim = aimAt({ x: event.clientX, y: event.clientY });
|
|
172
|
+
if (aim === 'outside') {
|
|
173
|
+
commit(deferred.key, deferred.point);
|
|
164
174
|
}
|
|
165
|
-
else {
|
|
166
|
-
|
|
175
|
+
else if (aim === 'inside') {
|
|
176
|
+
// still traveling, so the grace starts over — it is there to catch a
|
|
177
|
+
// pointer that stops, and this one has not
|
|
178
|
+
defer(deferred.key, deferred.point);
|
|
167
179
|
}
|
|
168
180
|
},
|
|
169
181
|
};
|
|
170
182
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
183
|
+
function useSubmenuHover() {
|
|
184
|
+
const [openSubmenu, setOpenSubmenu] = useState();
|
|
185
|
+
const [hover] = useState(() => createSubmenuHover(setOpenSubmenu));
|
|
186
|
+
useEffect(() => hover.cancelPending, [hover]);
|
|
187
|
+
useEffect(() => {
|
|
188
|
+
if (openSubmenu === undefined) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
document.addEventListener('mousemove', hover.onPointerMove);
|
|
192
|
+
return () => {
|
|
193
|
+
document.removeEventListener('mousemove', hover.onPointerMove);
|
|
194
|
+
};
|
|
195
|
+
}, [openSubmenu, hover]);
|
|
196
|
+
return { openSubmenu, hover };
|
|
197
|
+
}
|
|
198
|
+
// One key per row, unique WITHIN the level — the React key, and for a submenu row
|
|
199
|
+
// also the identity of "which submenu is open".
|
|
200
|
+
//
|
|
201
|
+
// A row is named by its `id`, or by its label where it has none. Deliberately not
|
|
202
|
+
// the array index: the items are re-derived on every observable change (a checkbox
|
|
203
|
+
// toggle can add or drop a row above), so an index-keyed "open" flag would follow
|
|
204
|
+
// the position rather than the submenu and the open panel would jump to whichever
|
|
205
|
+
// row landed at that index.
|
|
206
|
+
//
|
|
207
|
+
// A NAME THAT REPEATS TAKES AN OCCURRENCE SUFFIX, so the level's keys are unique
|
|
208
|
+
// whatever its rows are called. Two ways a name repeats, and both shipped: a
|
|
209
|
+
// `label` is a `React.ReactNode`, so an element interpolates to `[object Object]`
|
|
210
|
+
// and a menu of them named every row the same — the favorites and recently-used
|
|
211
|
+
// track dropdowns did — and a label can simply be shared, since a list may dedupe
|
|
212
|
+
// on something other than its text, as the recent locations dedupe on the
|
|
213
|
+
// location. Handling it here rather than asking every caller for an `id` means
|
|
214
|
+
// neither case can reach React as one key for several rows; only the rows that
|
|
215
|
+
// genuinely repeat depend on their order among each other, and `id` is then a way
|
|
216
|
+
// to keep a row's identity across a reorder rather than a correctness obligation.
|
|
217
|
+
//
|
|
218
|
+
// The kind prefix is the render branch below: a submenu row and a clickable row
|
|
219
|
+
// sharing a label draw different components, which must not share a key.
|
|
220
|
+
function rowKeys(items) {
|
|
221
|
+
const seen = new Map();
|
|
222
|
+
return items.map(item => {
|
|
223
|
+
const kind = 'subMenu' in item
|
|
224
|
+
? 'subMenu'
|
|
225
|
+
: item.type === 'divider' || item.type === 'subHeader'
|
|
226
|
+
? item.type
|
|
227
|
+
: item.type === 'custom'
|
|
228
|
+
? 'custom'
|
|
229
|
+
: 'menuitem';
|
|
230
|
+
// a divider has no identity beyond its position among the other dividers.
|
|
231
|
+
// `'id' in item` rather than `item.id`: a divider and a subHeader are their
|
|
232
|
+
// own interfaces and carry neither an `id` nor, for the divider, a label
|
|
233
|
+
const name = item.type === 'divider'
|
|
234
|
+
? ''
|
|
235
|
+
: ('id' in item && item.id) || `${item.label}`;
|
|
236
|
+
const base = `${kind}-${name}`;
|
|
237
|
+
const seenBefore = seen.get(base) ?? 0;
|
|
238
|
+
seen.set(base, seenBefore + 1);
|
|
239
|
+
// The count LEADS, and every row carries one. A trailing suffix is drawn
|
|
240
|
+
// from the same alphabet as the label it disambiguates, so `x#1` beside two
|
|
241
|
+
// rows called `x` collided all over again — the second `x` took the first
|
|
242
|
+
// one's key. Leading, the count is the digits before the first `-` and the
|
|
243
|
+
// base is everything after, and `kind` always starts with a letter, so no
|
|
244
|
+
// two (count, base) pairs can spell one key.
|
|
245
|
+
return `${seenBefore}-${base}`;
|
|
246
|
+
});
|
|
178
247
|
}
|
|
179
248
|
// Where the aim cone's tip goes for a submenu opened from the keyboard, which
|
|
180
249
|
// has no pointer to put it at: the middle of the row, so a pointer picked up
|
|
@@ -280,12 +349,12 @@ function DisabledTooltip({ item, children, }) {
|
|
|
280
349
|
// toggle), whose content stops its own click so using it doesn't also open the
|
|
281
350
|
// submenu. Both go through `MenuItemTrailing`, so they land in the columns the
|
|
282
351
|
// clickable rows reserve rather than in a hand-assembled copy of them.
|
|
283
|
-
function CascadingSubmenu({ item, itemKey, inset, columns, hover, onNavigateBack, }) {
|
|
352
|
+
const CascadingSubmenu = memo(function CascadingSubmenu({ item, itemKey, inset, columns, open, hover, onNavigateBack, }) {
|
|
284
353
|
const { zIndex } = useCascadingMenu();
|
|
285
354
|
const [anchorEl, setAnchorEl] = useState(null);
|
|
286
355
|
// a rebuild can disable the row while its panel is up, and a disabled row has
|
|
287
356
|
// no way left to close it
|
|
288
|
-
const isOpen =
|
|
357
|
+
const isOpen = open && !item.disabled;
|
|
289
358
|
return (_jsxs(_Fragment, { children: [_jsx(DisabledTooltip, { item: item, children: _jsxs(MenuItem, { ref: setAnchorEl, "data-testid": makeTestId('submenu', item.label), disabled: item.disabled, "aria-haspopup": "menu", "aria-expanded": isOpen,
|
|
290
359
|
// keeps the panel visually attached to the row it hangs off: that
|
|
291
360
|
// row's own hover highlight is gone the moment the pointer moves
|
|
@@ -303,26 +372,41 @@ function CascadingSubmenu({ item, itemKey, inset, columns, hover, onNavigateBack
|
|
|
303
372
|
e.stopPropagation();
|
|
304
373
|
onNavigateBack?.();
|
|
305
374
|
}
|
|
306
|
-
}, children: [_jsx(MenuItemLeadingIcon, { Icon: item.icon }), _jsx(ListItemText, { primary: item.label, inset: inset }), _jsx(MenuItemTrailing, { item: item, columns: columns })] }) }), _jsx(HoverMenu, {
|
|
307
|
-
// the pointer completed the trip, so drop the close a row it crossed
|
|
308
|
-
// the way scheduled
|
|
309
|
-
onMouseEnter: hover.
|
|
310
|
-
// only while open: a panel MUI is still fading out is not something to
|
|
311
|
-
// aim at, and this list keeps one cone target for whichever submenu is
|
|
312
|
-
// up
|
|
313
|
-
paperRef: isOpen ? hover.panelRef : undefined, onClose: () => {
|
|
375
|
+
}, children: [_jsx(MenuItemLeadingIcon, { Icon: item.icon }), _jsx(ListItemText, { primary: item.label, inset: inset }), _jsx(MenuItemTrailing, { item: item, columns: columns })] }) }), isOpen ? (_jsx(HoverMenu, { anchorEl: anchorEl, anchorOrigin: { vertical: 'top', horizontal: 'right' }, transformOrigin: { vertical: 'top', horizontal: 'left' }, zIndex: zIndex,
|
|
376
|
+
// the pointer completed the trip, so drop the close a row it crossed
|
|
377
|
+
// on the way scheduled
|
|
378
|
+
onMouseEnter: hover.cancelPending, paperRef: hover.panelRef, onClose: () => {
|
|
314
379
|
hover.setSubmenu(undefined);
|
|
315
|
-
}, children: _jsx(
|
|
380
|
+
}, children: _jsx(SubMenuList, { item: item, onNavigateBack: () => {
|
|
316
381
|
hover.setSubmenu(undefined);
|
|
317
382
|
anchorEl?.focus();
|
|
318
|
-
} }) })] }));
|
|
319
|
-
}
|
|
383
|
+
} }) })) : null] }));
|
|
384
|
+
});
|
|
385
|
+
// Resolves the rows inside the panel, which mounts only while it is open:
|
|
386
|
+
// a function-form `subMenu` is not called by listing the parent menu. An
|
|
387
|
+
// observer so the observables that builder reads re-render the open panel, the
|
|
388
|
+
// way an array built in the root observer's render already did.
|
|
389
|
+
const SubMenuList = observer(function SubMenuList({ item, onNavigateBack, }) {
|
|
390
|
+
return (_jsx(CascadingMenuList, { menuItems: resolveSubMenu(item), onNavigateBack: onNavigateBack }));
|
|
391
|
+
});
|
|
320
392
|
// One clickable menu row: label (with optional leading icon) plus its trailing
|
|
321
393
|
// value/help/adornment decorations. The menu-wide `columns` flags let every row
|
|
322
394
|
// reserve matching decoration slots so the columns line up down the menu.
|
|
323
|
-
function CascadingMenuItem({ item, inset, columns, onNavigateBack, onHover, }) {
|
|
395
|
+
const CascadingMenuItem = memo(function CascadingMenuItem({ item, inset, columns, onNavigateBack, onHover, }) {
|
|
324
396
|
const { closeAfterItemClick, onMenuItemClick, onCloseRoot } = useCascadingMenu();
|
|
325
|
-
return (_jsx(DisabledTooltip, { item: item, children: _jsxs(MenuItem, { "data-testid": makeTestId('menuitem', item.label), disabled: item.disabled,
|
|
397
|
+
return (_jsx(DisabledTooltip, { item: item, children: _jsxs(MenuItem, { "data-testid": makeTestId('menuitem', item.label), disabled: item.disabled,
|
|
398
|
+
// A checkbox or radio row states its own value. The glyph
|
|
399
|
+
// `MenuItemEndDecoration` swaps is an `aria-hidden` icon, so without
|
|
400
|
+
// these a screen reader reads "Curved lines" identically whether the
|
|
401
|
+
// setting is on or off, and a test has no way to ask but the MUI icon's
|
|
402
|
+
// internal testid.
|
|
403
|
+
role: item.type === 'checkbox'
|
|
404
|
+
? 'menuitemcheckbox'
|
|
405
|
+
: item.type === 'radio'
|
|
406
|
+
? 'menuitemradio'
|
|
407
|
+
: undefined, "aria-checked": item.type === 'checkbox' || item.type === 'radio'
|
|
408
|
+
? item.checked
|
|
409
|
+
: undefined, onClick: () => {
|
|
326
410
|
// onCloseRoot runs before the callback, so item.onClick must NOT read
|
|
327
411
|
// model state that closing clears (e.g. a right-click menu's ephemeral
|
|
328
412
|
// hit/context fields): capture that state when the menu items are
|
|
@@ -337,38 +421,31 @@ function CascadingMenuItem({ item, inset, columns, onNavigateBack, onHover, }) {
|
|
|
337
421
|
onNavigateBack?.();
|
|
338
422
|
}
|
|
339
423
|
}, children: [_jsx(MenuItemLeadingIcon, { Icon: item.icon }), _jsx(ListItemText, { primary: item.label, secondary: item.subLabel, inset: inset }), _jsx(MenuItemTrailing, { item: item, columns: columns })] }) }));
|
|
340
|
-
}
|
|
424
|
+
});
|
|
341
425
|
function CascadingMenuList({ menuItems, onNavigateBack, }) {
|
|
342
|
-
const { classes } = useStyles();
|
|
343
|
-
const hover = useSubmenuHover();
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
//
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
};
|
|
351
|
-
const { hasIcon, columns } = getMenuColumnFlags(menuItems);
|
|
352
|
-
const sortedItems = menuItems.toSorted((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
426
|
+
const { classes, cx } = useStyles();
|
|
427
|
+
const { openSubmenu, hover } = useSubmenuHover();
|
|
428
|
+
const { closeOnHover } = hover;
|
|
429
|
+
const { hasIcon, columns } = useMemo(() => getMenuColumnFlags(menuItems), [menuItems]);
|
|
430
|
+
const sortedItems = useMemo(() => menuItems.toSorted((a, b) => (b.priority ?? 0) - (a.priority ?? 0)), [menuItems]);
|
|
431
|
+
// keyed after the sort, so an occurrence suffix counts up the level in the
|
|
432
|
+
// order it is drawn
|
|
433
|
+
const keys = useMemo(() => rowKeys(sortedItems), [sortedItems]);
|
|
353
434
|
return (_jsx(_Fragment, { children: sortedItems.map((item, idx) => {
|
|
435
|
+
const key = keys[idx];
|
|
354
436
|
if ('subMenu' in item) {
|
|
355
|
-
|
|
356
|
-
return (_jsx(CascadingSubmenu, { itemKey: key, item: item, inset: hasIcon && !item.icon, columns: columns, hover: hover, onNavigateBack: onNavigateBack }, key));
|
|
437
|
+
return (_jsx(CascadingSubmenu, { itemKey: key, item: item, inset: hasIcon && !item.icon, columns: columns, open: openSubmenu === key, hover: hover, onNavigateBack: onNavigateBack }, key));
|
|
357
438
|
}
|
|
358
439
|
if (item.type === 'divider') {
|
|
359
|
-
|
|
360
|
-
return _jsx(Divider, { component: "li" }, `divider-${idx}`);
|
|
440
|
+
return _jsx(Divider, { component: "li" }, key);
|
|
361
441
|
}
|
|
362
442
|
if (item.type === 'subHeader') {
|
|
363
|
-
return (_jsx(ListSubheader, { className: classes.subHeader, onMouseEnter: closeOnHover,
|
|
364
|
-
// a leading subHeader has no rows above it to divide from, so drop
|
|
365
|
-
// the divider rule that would otherwise float at the menu's top edge
|
|
366
|
-
sx: idx === 0 ? { borderTop: 'none', marginTop: 0 } : undefined, children: item.label }, `subHeader-${item.label}`));
|
|
443
|
+
return (_jsx(ListSubheader, { className: cx(classes.subHeader, idx === 0 && classes.leadingSubHeader), onMouseEnter: closeOnHover, children: item.label }, key));
|
|
367
444
|
}
|
|
368
445
|
if (item.type === 'custom') {
|
|
369
|
-
return
|
|
446
|
+
return _jsx(CustomMenuRow, { item: item, onHover: closeOnHover }, key);
|
|
370
447
|
}
|
|
371
|
-
return (_jsx(CascadingMenuItem, { item: item, inset: hasIcon && !item.icon, columns: columns, onNavigateBack: onNavigateBack, onHover: closeOnHover },
|
|
448
|
+
return (_jsx(CascadingMenuItem, { item: item, inset: hasIcon && !item.icon, columns: columns, onNavigateBack: onNavigateBack, onHover: closeOnHover }, key));
|
|
372
449
|
}) }));
|
|
373
450
|
}
|
|
374
451
|
const CascadingMenu = observer(function CascadingMenu({ onMenuItemClick, closeAfterItemClick = true, menuItems, open, onClose, anchorEl, anchorOrigin, transformOrigin, anchorReference, anchorPosition, style, }) {
|
package/esm/ui/DropDownMenu.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import ArrowDropDown from '@mui/icons-material/ArrowDropDown';
|
|
3
|
-
import { Button
|
|
3
|
+
import { Button } from '@mui/material';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
6
6
|
import CascadingMenuButton from './CascadingMenuButton.js';
|
|
7
|
+
import { alpha } from './palette.js';
|
|
7
8
|
const useStyles = makeStyles()(theme => ({
|
|
8
9
|
buttonRoot: {
|
|
9
10
|
'&:hover': {
|
package/esm/ui/ErrorBanner.js
CHANGED
|
@@ -11,8 +11,8 @@ interface Props {
|
|
|
11
11
|
FallbackComponent: React.FC<FallbackProps>;
|
|
12
12
|
/**
|
|
13
13
|
* clear the caught error when any of these changes, compared with `Object.is`
|
|
14
|
-
* element by element. For the cause a caller can name
|
|
15
|
-
*
|
|
14
|
+
* element by element. For the cause a caller can name, so a banner does not
|
|
15
|
+
* outlive it.
|
|
16
16
|
*/
|
|
17
17
|
resetKeys?: unknown[];
|
|
18
18
|
/** runs before the error clears, on either reset path */
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Typography
|
|
2
|
+
import { Typography } from '@mui/material';
|
|
3
3
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
4
4
|
import ExternalLink from './ExternalLink.js';
|
|
5
|
+
import { alpha } from './palette.js';
|
|
5
6
|
const EMAIL = 'jbrowse2@berkeley.edu';
|
|
6
7
|
const useStyles = makeStyles()(theme => ({
|
|
7
8
|
pre: {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { effectiveRenderer } from '@jbrowse/render-core/graphicsCapabilities';
|
|
3
3
|
import { useGraphicsCapabilities } from '@jbrowse/render-core/useGraphicsCapabilities';
|
|
4
|
-
import { hasSharedArrayBuffer } from '../util/stopToken.js';
|
|
5
4
|
import { useFetch } from '../util/useFetch.js';
|
|
6
5
|
import CopyToClipboardButton from './CopyToClipboardButton.js';
|
|
7
6
|
import ErrorMessageStackTraceContents from './ErrorMessageStackTraceContents.js';
|
|
@@ -15,12 +14,11 @@ export default function ErrorMessageStackTraceDialog({ error, onClose, extra, })
|
|
|
15
14
|
const errorText = error ? `${error}` : '';
|
|
16
15
|
const stackTrace = formatErrorStack(error);
|
|
17
16
|
const { data: mappedStackTrace, isLoading } = useFetch(['mappedStackTrace', stackTrace], () => mapStackTrace(stackTrace));
|
|
18
|
-
// The rung
|
|
19
|
-
// which rungs exist, since Canvas2D means neither and WebGL2 means no
|
|
20
|
-
// It
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
// the report they sent still said WebGL2.
|
|
17
|
+
// The rung createGpuHal built, not a list of the ones available: it already
|
|
18
|
+
// says which rungs exist, since Canvas2D means neither and WebGL2 means no
|
|
19
|
+
// WebGPU. It also honours the GPU banner's "disable GPU", which matters most
|
|
20
|
+
// in exactly this dialog — a user reporting a rendering bug has often already
|
|
21
|
+
// clicked it.
|
|
24
22
|
const graphicsInfo = graphicsCapabilities
|
|
25
23
|
? `Graphics: ${effectiveRenderer(graphicsCapabilities)}`
|
|
26
24
|
: '';
|
|
@@ -34,9 +32,6 @@ export default function ErrorMessageStackTraceDialog({ error, onClose, extra, })
|
|
|
34
32
|
const glRendererInfo = graphicsCapabilities?.glRenderer
|
|
35
33
|
? `GL renderer: ${graphicsCapabilities.glRenderer}${graphicsCapabilities.softwareWebgl ? ' (SOFTWARE RASTERIZER)' : ''}`
|
|
36
34
|
: '';
|
|
37
|
-
// Both paths cancel at await boundaries by posted message; SharedArrayBuffer
|
|
38
|
-
// additionally interrupts a synchronous worker loop mid-run.
|
|
39
|
-
const sabInfo = `Worker abort: postMessage${hasSharedArrayBuffer ? ' + SharedArrayBuffer' : ''}`;
|
|
40
35
|
const session = window
|
|
41
36
|
.JBrowseSession;
|
|
42
37
|
const version = session?.version;
|
|
@@ -53,7 +48,6 @@ export default function ErrorMessageStackTraceDialog({ error, onClose, extra, })
|
|
|
53
48
|
gpuInfo,
|
|
54
49
|
glRendererInfo,
|
|
55
50
|
rpcInfo,
|
|
56
|
-
sabInfo,
|
|
57
51
|
`Cross-origin isolated: ${crossOriginIsolated}`,
|
|
58
52
|
`CPU cores: ${navigator.hardwareConcurrency}`,
|
|
59
53
|
`Device pixel ratio: ${window.devicePixelRatio}`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BaseExportSvgOptions } from './BaseExportSvgDialog.tsx';
|
|
2
2
|
export default function ExportSvgDialog({ model, handleClose, }: {
|
|
3
3
|
model: {
|
|
4
|
-
exportSvg(opts: BaseExportSvgOptions): Promise<
|
|
4
|
+
exportSvg(opts: BaseExportSvgOptions): Promise<unknown>;
|
|
5
5
|
};
|
|
6
6
|
handleClose: () => void;
|
|
7
7
|
}): import("react").JSX.Element;
|
package/esm/ui/FileDropZone.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
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
|
-
import { Typography
|
|
4
|
+
import { Typography } from '@mui/material';
|
|
5
5
|
import { makeStyles } from '../util/tss-react/index.js';
|
|
6
|
+
import { alpha } from './palette.js';
|
|
6
7
|
const useStyles = makeStyles()(theme => ({
|
|
7
8
|
dropZone: {
|
|
8
9
|
textAlign: 'center',
|