@jbrowse/core 5.0.0-beta.11 → 5.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +450 -132
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.d.ts +6 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Attributes.js +18 -3
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseAttributes.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCard.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BaseCoreDetails.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.d.ts +5 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +6 -4
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.d.ts +2 -1
- package/esm/BaseFeatureWidget/BaseFeatureDetail/CoreDetails.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails.js +2 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FeatureWash.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldActionsButton.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/FieldName.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/Formatter.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/ParentFeatureLine.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js +4 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.d.ts +3 -2
- package/esm/BaseFeatureWidget/BaseFeatureDetail/UriField.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceBody.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.d.ts +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +15 -24
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +1 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequenceLegend.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +4 -4
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.d.ts +3 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/FeatureSequenceDialog.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.d.ts +1 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +2 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.d.ts +1 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +15 -36
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.d.ts +3 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/dialogs/TranscriptSelector.js +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.d.ts +4 -2
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/featureTypeUtil.js +29 -20
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.d.ts +13 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/model.js +28 -1
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +3 -3
- package/esm/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +2 -2
- package/esm/BaseFeatureWidget/stateModelFactory.d.ts +9 -0
- package/esm/BaseFeatureWidget/stateModelFactory.js +11 -0
- package/esm/BaseFeatureWidget/types.d.ts +2 -0
- package/esm/PluginManager.d.ts +7 -3
- package/esm/PluginManager.js +12 -3
- package/esm/ReExports/coreModules.generated.js +538 -518
- package/esm/ReExports/coreWorkerModules.generated.js +456 -438
- package/esm/ReExports/lazify.js +3 -2
- package/esm/ReExports/list.js +22 -6
- package/esm/ReExports/names.d.ts +1 -0
- package/esm/ReExports/names.generated.d.ts +2 -0
- package/esm/ReExports/names.generated.js +566 -0
- package/esm/ReExports/names.js +3 -0
- package/esm/TextSearch/TextSearchManager.d.ts +3 -3
- package/esm/TextSearch/TextSearchManager.js +6 -13
- package/esm/assemblyManager/assembly.d.ts +9 -0
- package/esm/assemblyManager/assembly.js +13 -0
- package/esm/assemblyManager/assemblyConfigSchema.d.ts +6 -1
- package/esm/assemblyManager/assemblyConfigSchema.js +23 -22
- package/esm/assemblyManager/assemblyManager.d.ts +11 -0
- package/esm/assemblyManager/assemblyManager.js +2 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.d.ts +9 -0
- package/esm/assemblyManager/expandAssemblyConfigShorthand.js +23 -0
- package/esm/checkPlugins.js +10 -4
- package/esm/configuration/configurationSchema.d.ts +51 -100
- package/esm/configuration/configurationSchema.js +59 -225
- package/esm/configuration/configurationSchemaUnion.d.ts +2 -1
- package/esm/configuration/configurationSchemaUnion.js +2 -1
- package/esm/configuration/configurationSlot.d.ts +18 -64
- package/esm/configuration/configurationSlot.js +32 -98
- package/esm/configuration/fillLocations.d.ts +4 -2
- package/esm/configuration/fillLocations.js +9 -3
- package/esm/configuration/formatAboutConfigSchema.d.ts +2 -2
- package/esm/configuration/formatAboutConfigSchema.js +2 -2
- package/esm/configuration/formatDetailsConfigSchema.d.ts +2 -2
- package/esm/configuration/formatDetailsConfigSchema.js +7 -5
- package/esm/configuration/getConf.d.ts +7 -36
- package/esm/configuration/getConf.js +20 -41
- package/esm/configuration/index.d.ts +4 -3
- package/esm/configuration/index.js +3 -2
- package/esm/configuration/partitionAdvanced.d.ts +12 -0
- package/esm/configuration/partitionAdvanced.js +42 -0
- package/esm/configuration/plot.d.ts +6 -0
- package/esm/configuration/plot.js +56 -9
- package/esm/configuration/readConfObject.d.ts +15 -17
- package/esm/configuration/readConfObject.js +19 -50
- package/esm/configuration/schemaRegistry.d.ts +0 -2
- package/esm/configuration/schemaTypes.js +5 -1
- package/esm/configuration/slotFacade.js +2 -2
- package/esm/configuration/snapshotPreprocess.d.ts +42 -18
- package/esm/configuration/snapshotPreprocess.js +95 -37
- package/esm/configuration/tabixShorthand.js +1 -3
- package/esm/configuration/types.d.ts +60 -159
- package/esm/data_adapters/BaseAdapter/BaseAdapter.d.ts +7 -0
- package/esm/data_adapters/BaseAdapter/BaseAdapter.js +7 -0
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +0 -22
- package/esm/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +0 -55
- package/esm/data_adapters/BaseAdapter/index.d.ts +0 -1
- package/esm/data_adapters/BaseAdapter/index.js +0 -1
- package/esm/data_adapters/BaseAdapter/rowSources.d.ts +2 -2
- package/esm/data_adapters/BaseAdapter/types.d.ts +1 -0
- package/esm/data_adapters/CytobandAdapter/configSchema.d.ts +2 -0
- package/esm/data_adapters/CytobandAdapter/configSchema.js +5 -0
- package/esm/data_adapters/dataAdapterCache.d.ts +25 -13
- package/esm/data_adapters/dataAdapterCache.js +68 -24
- package/esm/data_adapters/getFeatureAdapter.d.ts +9 -0
- package/esm/data_adapters/getFeatureAdapter.js +17 -0
- package/esm/pluggableElementTypes/DisplayType.d.ts +7 -0
- package/esm/pluggableElementTypes/DisplayType.js +7 -0
- package/esm/pluggableElementTypes/RpcMethodType.d.ts +7 -0
- package/esm/pluggableElementTypes/RpcMethodType.js +9 -0
- package/esm/pluggableElementTypes/addMenuItems.d.ts +2 -1
- package/esm/pluggableElementTypes/addMenuItems.js +2 -1
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +2 -0
- package/esm/pluggableElementTypes/models/BaseConnectionModelFactory.js +2 -0
- package/esm/pluggableElementTypes/models/BaseDisplayModel.d.ts +40 -5
- package/esm/pluggableElementTypes/models/BaseDisplayModel.js +57 -9
- package/esm/pluggableElementTypes/models/BaseTrackModel.d.ts +5 -7
- package/esm/pluggableElementTypes/models/BaseTrackModel.js +9 -10
- package/esm/pluggableElementTypes/models/BaseViewModel.d.ts +2 -0
- package/esm/pluggableElementTypes/models/BaseViewModel.js +2 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.d.ts +3 -0
- package/esm/pluggableElementTypes/models/InternetAccountModel.js +3 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.d.ts +3 -0
- package/esm/pluggableElementTypes/models/baseConnectionConfig.js +3 -0
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +3 -1
- package/esm/pluggableElementTypes/models/baseInternetAccountConfig.js +3 -1
- package/esm/pluggableElementTypes/models/baseTrackConfig.js +12 -1
- package/esm/pluggableElementTypes/models/components/SaveTrackData.js +2 -2
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.d.ts +1 -1
- package/esm/pluggableElementTypes/models/expandTrackConfigShorthand.js +1 -1
- package/esm/pluginDefinitions.d.ts +7 -0
- package/esm/pluginDefinitions.js +20 -0
- package/esm/rpc/RpcRegistry.d.ts +2 -11
- package/esm/rpc/byteBudget.d.ts +15 -0
- package/esm/rpc/byteBudget.js +23 -0
- package/esm/rpc/configSchema.d.ts +2 -0
- package/esm/rpc/configSchema.js +3 -1
- package/esm/rpc/coreRpcMethods.d.ts +1 -2
- package/esm/rpc/coreRpcMethods.js +1 -2
- package/esm/rpc/explainTransferError.js +3 -3
- package/esm/rpc/methods/CoreGetEncodedLayers.d.ts +2 -2
- package/esm/rpc/methods/CoreGetEncodedLayers.js +7 -5
- package/esm/rpc/methods/CoreLoadTrackCode.d.ts +17 -0
- package/esm/rpc/methods/CoreLoadTrackCode.js +24 -0
- package/esm/rpc/methods/layerFeatures.d.ts +9 -6
- package/esm/rpc/methods/layerFeatures.js +21 -5
- package/esm/ui/ActionLink.d.ts +3 -2
- package/esm/ui/ActionLink.js +4 -2
- package/esm/ui/AddCustomPluginDialog.d.ts +3 -2
- package/esm/ui/AddCustomPluginDialog.js +6 -4
- package/esm/ui/AppLogo.js +43 -3
- package/esm/ui/BaseTooltip.d.ts +3 -2
- package/esm/ui/BaseTooltip.js +4 -2
- package/esm/ui/CascadingMenu.js +14 -12
- package/esm/ui/CascadingMenuButton.d.ts +2 -2
- package/esm/ui/CascadingMenuButton.js +5 -4
- package/esm/ui/CascadingMenuHelpDialog.d.ts +3 -2
- package/esm/ui/CascadingMenuHelpDialog.js +4 -2
- package/esm/ui/CascadingMenuHelpIconButton.d.ts +4 -3
- package/esm/ui/CascadingMenuHelpIconButton.js +9 -5
- package/esm/ui/ColorPicker.d.ts +5 -4
- package/esm/ui/ColorPicker.js +6 -4
- package/esm/ui/ContextMenu.d.ts +1 -1
- package/esm/ui/ContextMenu.js +1 -1
- package/esm/ui/CopyToClipboardButton.d.ts +3 -2
- package/esm/ui/CopyToClipboardButton.js +4 -2
- package/esm/ui/Crosshairs.js +13 -10
- package/esm/ui/DOMPurifySanitizedHTML.d.ts +3 -2
- package/esm/ui/DOMPurifySanitizedHTML.js +4 -2
- package/esm/ui/DataGridFlexContainer.d.ts +3 -2
- package/esm/ui/DataGridFlexContainer.js +4 -2
- package/esm/ui/Dialog.d.ts +1 -1
- package/esm/ui/Dialog.js +5 -4
- package/esm/ui/DropDownMenu.js +2 -2
- package/esm/ui/EditableTypography.d.ts +1 -1
- package/esm/ui/EditableTypography.js +3 -2
- package/esm/ui/ErrorActions.d.ts +3 -2
- package/esm/ui/ErrorActions.js +4 -2
- package/esm/ui/ErrorBanner.d.ts +2 -2
- package/esm/ui/ErrorBanner.js +3 -2
- package/esm/ui/ErrorBar.d.ts +3 -2
- package/esm/ui/ErrorBar.js +4 -2
- package/esm/ui/ErrorMessage.d.ts +3 -2
- package/esm/ui/ErrorMessage.js +4 -2
- package/esm/ui/ErrorMessageStackTraceContents.d.ts +3 -2
- package/esm/ui/ErrorMessageStackTraceContents.js +4 -2
- package/esm/ui/ErrorMessageStackTraceDialog.d.ts +3 -2
- package/esm/ui/ErrorMessageStackTraceDialog.js +4 -2
- package/esm/ui/ErrorOverlay.d.ts +3 -2
- package/esm/ui/ErrorOverlay.js +4 -2
- package/esm/ui/ExportSvgDialog.d.ts +3 -2
- package/esm/ui/ExportSvgDialog.js +4 -2
- package/esm/ui/ExternalLink.d.ts +2 -1
- package/esm/ui/ExternalLink.js +4 -2
- package/esm/ui/FactoryResetDialog.d.ts +3 -2
- package/esm/ui/FactoryResetDialog.js +4 -2
- package/esm/ui/FatalErrorDialog.d.ts +3 -2
- package/esm/ui/FatalErrorDialog.js +6 -4
- package/esm/ui/FileDropZone.d.ts +3 -2
- package/esm/ui/FileDropZone.js +4 -2
- package/esm/ui/FileSelector/LocalFileChooser.js +4 -4
- package/esm/ui/FileSelector/LocationInput.d.ts +3 -2
- package/esm/ui/FileSelector/LocationInput.js +4 -2
- package/esm/ui/FileSelector/SourceTypeSelector.d.ts +3 -2
- package/esm/ui/FileSelector/SourceTypeSelector.js +8 -6
- package/esm/ui/GpuFallbackButton.d.ts +3 -2
- package/esm/ui/GpuFallbackButton.js +4 -2
- package/esm/ui/HoverMenu.d.ts +2 -2
- package/esm/ui/HoverMenu.js +7 -3
- package/esm/ui/HoverTooltip.d.ts +3 -2
- package/esm/ui/HoverTooltip.js +4 -2
- package/esm/ui/Icons.d.ts +5 -5
- package/esm/ui/Icons.js +11 -10
- package/esm/ui/InlineMenuControls.d.ts +2 -2
- package/esm/ui/InlineMenuControls.js +4 -3
- package/esm/ui/JexlFilterRowEditors.d.ts +4 -4
- package/esm/ui/JexlFilterRowEditors.js +9 -8
- package/esm/ui/LabeledCheckbox.d.ts +3 -2
- package/esm/ui/LabeledCheckbox.js +4 -2
- package/esm/ui/LazyBaseTooltip.d.ts +12 -3
- package/esm/ui/LazyBaseTooltip.js +4 -2
- package/esm/ui/LegendSwatchGlyph.js +1 -0
- package/esm/ui/LoadingDots.d.ts +2 -1
- package/esm/ui/LoadingDots.js +4 -2
- package/esm/ui/LoadingEllipses.d.ts +5 -2
- package/esm/ui/LoadingEllipses.js +5 -3
- package/esm/ui/LoadingOverlay.d.ts +3 -2
- package/esm/ui/LoadingOverlay.js +4 -2
- package/esm/ui/LoadingProgress.d.ts +3 -2
- package/esm/ui/LoadingProgress.js +4 -2
- package/esm/ui/Logo.d.ts +2 -2
- package/esm/ui/Logo.js +9 -8
- package/esm/ui/MenuItemChevron.d.ts +2 -2
- package/esm/ui/MenuItemChevron.js +3 -2
- package/esm/ui/MenuItemEndDecoration.d.ts +2 -2
- package/esm/ui/MenuItemEndDecoration.js +3 -2
- package/esm/ui/MenuItemTrailing.d.ts +2 -2
- package/esm/ui/MenuItemTrailing.js +7 -6
- package/esm/ui/MenuTypes.d.ts +21 -1
- package/esm/ui/MenuTypes.js +20 -0
- package/esm/ui/MonospaceTextField.d.ts +3 -2
- package/esm/ui/MonospaceTextField.js +4 -2
- package/esm/ui/NumberTextField.d.ts +2 -2
- package/esm/ui/NumberTextField.js +4 -2
- package/esm/ui/PaletteContext.d.ts +11 -9
- package/esm/ui/PaletteContext.js +33 -18
- package/esm/ui/PluginStoreCard.d.ts +3 -2
- package/esm/ui/PluginStoreCard.js +4 -2
- package/esm/ui/PopoverPicker.d.ts +3 -2
- package/esm/ui/PopoverPicker.js +4 -2
- package/esm/ui/PrerenderedCanvas.d.ts +2 -2
- package/esm/ui/PrerenderedCanvas.js +3 -2
- package/esm/ui/RedErrorMessageBox.d.ts +3 -2
- package/esm/ui/RedErrorMessageBox.js +4 -2
- package/esm/ui/RefNameAutocomplete/EndAdornment.d.ts +3 -2
- package/esm/ui/RefNameAutocomplete/EndAdornment.js +4 -2
- package/esm/ui/RefNameAutocomplete/HelpDialog.d.ts +3 -2
- package/esm/ui/RefNameAutocomplete/HelpDialog.js +4 -2
- package/esm/ui/ReplaceCurrentViewButton.d.ts +3 -2
- package/esm/ui/ReplaceCurrentViewButton.js +4 -2
- package/esm/ui/ResizeHandle.d.ts +2 -2
- package/esm/ui/ResizeHandle.js +3 -2
- package/esm/ui/SanitizedHTML.d.ts +3 -2
- package/esm/ui/SanitizedHTML.js +6 -4
- package/esm/ui/ScrollChrome.d.ts +3 -2
- package/esm/ui/ScrollChrome.js +4 -2
- package/esm/ui/ScrollEdgeShadow.d.ts +2 -2
- package/esm/ui/ScrollEdgeShadow.js +2 -2
- package/esm/ui/SessionJsonPanel.d.ts +3 -2
- package/esm/ui/SessionJsonPanel.js +4 -2
- package/esm/ui/ShareLinkField.d.ts +3 -2
- package/esm/ui/ShareLinkField.js +4 -2
- package/esm/ui/SingleSlider.d.ts +2 -2
- package/esm/ui/SingleSlider.js +4 -2
- package/esm/ui/SliderTooltip.d.ts +2 -1
- package/esm/ui/SliderTooltip.js +4 -2
- package/esm/ui/SnackbarContents.d.ts +3 -2
- package/esm/ui/SnackbarContents.js +4 -2
- package/esm/ui/SnackbarModel.d.ts +2 -0
- package/esm/ui/SnackbarModel.js +2 -0
- package/esm/ui/StackTraceButton.d.ts +3 -2
- package/esm/ui/StackTraceButton.js +4 -2
- package/esm/ui/StatusProgressBar.d.ts +3 -2
- package/esm/ui/StatusProgressBar.js +4 -2
- package/esm/ui/SubmitForm.d.ts +2 -1
- package/esm/ui/SubmitForm.js +4 -2
- package/esm/ui/SvgColorLegend.d.ts +3 -4
- package/esm/ui/SvgColorLegend.js +27 -18
- package/esm/ui/TagTextField.d.ts +2 -2
- package/esm/ui/TagTextField.js +4 -2
- package/esm/ui/ViewLoadingScreen.d.ts +3 -2
- package/esm/ui/ViewLoadingScreen.js +4 -2
- package/esm/ui/buildExtraTrackMenuItems.d.ts +2 -2
- package/esm/ui/colorScale.d.ts +5 -1
- package/esm/ui/colorScale.js +12 -10
- package/esm/ui/colors.d.ts +42 -31
- package/esm/ui/colors.js +85 -48
- package/esm/ui/filterMenuItems.d.ts +10 -31
- package/esm/ui/filterMenuItems.js +13 -14
- package/esm/ui/index.d.ts +1 -1
- package/esm/ui/index.js +1 -1
- package/esm/ui/launchTargetsMenuItem.js +9 -13
- package/esm/ui/legendMenuItem.d.ts +4 -4
- package/esm/ui/legendMenuItem.js +4 -4
- package/esm/ui/menuItemAdornment.d.ts +1 -1
- package/esm/ui/menuItemAdornment.js +1 -1
- package/esm/ui/menuItems.d.ts +1 -1
- package/esm/ui/menuItems.js +1 -1
- package/esm/ui/menuLabels.d.ts +2 -2
- package/esm/ui/menuLabels.js +2 -2
- package/esm/ui/multiTrackMenuItems.d.ts +2 -2
- package/esm/ui/palette.d.ts +2 -2
- package/esm/ui/palette.js +10 -10
- package/esm/ui/radioSubMenu.d.ts +5 -3
- package/esm/ui/radioSubMenu.js +2 -2
- package/esm/ui/rampKey.d.ts +15 -0
- package/esm/ui/rampKey.js +17 -0
- package/esm/ui/showSubMenu.d.ts +0 -5
- package/esm/ui/showSubMenu.js +6 -15
- package/esm/ui/theme.d.ts +2 -2
- package/esm/ui/theme.js +1 -1
- package/esm/ui/useAssemblySelection.d.ts +2 -0
- package/esm/ui/useMouseTracking.d.ts +8 -20
- package/esm/ui/useMouseTracking.js +23 -62
- package/esm/ui/usePlacedMenuFocus.d.ts +19 -0
- package/esm/ui/usePlacedMenuFocus.js +28 -0
- package/esm/util/Base1DViewModel.d.ts +5 -3
- package/esm/util/Base1DViewModel.js +5 -3
- package/esm/util/SvgCanvas.js +1 -1
- package/esm/util/aggregateFieldName.d.ts +1 -10
- package/esm/util/aggregateFieldName.js +1 -8
- package/esm/util/alignedBytes.d.ts +19 -0
- package/esm/util/alignedBytes.js +37 -0
- package/esm/util/analytics.d.ts +6 -9
- package/esm/util/analytics.js +148 -15
- package/esm/util/bezierConnector.d.ts +20 -0
- package/esm/util/bezierConnector.js +34 -96
- package/esm/util/cacheBudgets.d.ts +3 -0
- package/esm/util/cacheBudgets.js +3 -0
- package/esm/util/categoricalField.d.ts +24 -4
- package/esm/util/categoricalField.js +38 -5
- package/esm/util/cellMatches.js +14 -14
- package/esm/util/cellsStep.d.ts +3 -5
- package/esm/util/cellsStep.js +31 -29
- package/esm/util/color/index.d.ts +1 -1
- package/esm/util/color/index.js +2 -2
- package/esm/util/color-bits/bit.js +1 -1
- package/esm/util/color-bits/parse.js +28 -17
- package/esm/util/colorBits.d.ts +15 -4
- package/esm/util/colorBits.js +38 -15
- package/esm/util/colorRamp.d.ts +3 -3
- package/esm/util/colorRamp.js +20 -2
- package/esm/util/colorScale.d.ts +123 -22
- package/esm/util/colorScale.js +157 -28
- package/esm/util/colorSchemes.d.ts +7 -3
- package/esm/util/colorSchemes.js +8 -2
- package/esm/util/createSvgRasterCanvas.d.ts +14 -1
- package/esm/util/createSvgRasterCanvas.js +36 -12
- package/esm/util/diagonalizeRegions.js +18 -9
- package/esm/util/featureTransforms.d.ts +2 -2
- package/esm/util/featureTransforms.js +85 -135
- package/esm/util/fileHandleStore.js +5 -0
- package/esm/util/groupKeys.d.ts +5 -4
- package/esm/util/groupKeys.js +15 -9
- package/esm/util/index.js +1 -1
- package/esm/util/installFetch.d.ts +2 -2
- package/esm/util/installPrerequisiteFetch.d.ts +8 -3
- package/esm/util/installPrerequisiteFetch.js +9 -7
- package/esm/util/io/RemoteFileWithRangeCache.d.ts +1 -1
- package/esm/util/io/RemoteFileWithRangeCache.js +1 -1
- package/esm/util/isoformRank.d.ts +39 -0
- package/esm/util/isoformRank.js +118 -0
- package/esm/util/jexl.js +1 -1
- package/esm/util/layouts/GranularRectLayout.d.ts +19 -3
- package/esm/util/layouts/GranularRectLayout.js +57 -34
- package/esm/util/leadingEdgeAutorun.d.ts +9 -1
- package/esm/util/leadingEdgeAutorun.js +5 -2
- package/esm/util/markEncoding.d.ts +10 -8
- package/esm/util/markEncoding.js +50 -12
- package/esm/util/markEncodingTypes.d.ts +77 -21
- package/esm/util/originCut.d.ts +14 -0
- package/esm/util/originCut.js +19 -0
- package/esm/util/paintLayer.d.ts +1 -1
- package/esm/util/paintLayer.js +4 -3
- package/esm/util/pathSeries.d.ts +18 -0
- package/esm/util/pathSeries.js +143 -0
- package/esm/util/pressOwner.d.ts +20 -0
- package/esm/util/pressOwner.js +26 -0
- package/esm/util/quantileExtent.d.ts +23 -1
- package/esm/util/quantileExtent.js +25 -2
- package/esm/util/rowStackGeometry.d.ts +1 -1
- package/esm/util/rowStackGeometry.js +1 -1
- package/esm/util/sessionActivity.d.ts +36 -0
- package/esm/util/sessionActivity.js +88 -0
- package/esm/util/stepOutputs.d.ts +165 -0
- package/esm/util/stepOutputs.js +201 -0
- package/esm/util/stepTables.d.ts +7 -3
- package/esm/util/stepTables.js +86 -3
- package/esm/util/systemColorScheme.d.ts +4 -0
- package/esm/util/systemColorScheme.js +21 -0
- package/esm/util/tabix.d.ts +1 -1
- package/esm/util/tabix.js +1 -1
- package/esm/util/temporaryAssembly.d.ts +2 -2
- package/esm/util/temporaryAssembly.js +2 -3
- package/esm/util/thresholdScale.d.ts +1 -1
- package/esm/util/thresholdScale.js +1 -1
- package/esm/util/trackConfigDelta.d.ts +1 -1
- package/esm/util/tracks.d.ts +25 -15
- package/esm/util/tracks.js +68 -44
- package/esm/util/types/index.d.ts +15 -7
- package/esm/util/types/index.js +21 -2
- package/esm/util/usePanZoom.js +4 -10
- package/esm/util/useRowVirtualScroll.d.ts +1 -0
- package/esm/util/windowStep.d.ts +6 -0
- package/esm/util/windowStep.js +153 -0
- package/package.json +27 -16
- package/esm/data_adapters/BaseAdapter/featureDensity.d.ts +0 -40
- package/esm/data_adapters/BaseAdapter/featureDensity.js +0 -31
- package/esm/rpc/methods/CoreGetFeatureDensity.d.ts +0 -11
- package/esm/rpc/methods/CoreGetFeatureDensity.js +0 -22
- package/esm/rpc/methods/CoreLoadAdapterCode.d.ts +0 -13
- package/esm/rpc/methods/CoreLoadAdapterCode.js +0 -16
package/esm/ui/colors.js
CHANGED
|
@@ -98,11 +98,9 @@ export const paletteColors = {
|
|
|
98
98
|
* The wide qualitative palette: every scheme above, in order, deduped and with
|
|
99
99
|
* the neutrals dropped. ~40 entries.
|
|
100
100
|
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* would mean a track's automatic colors and the colors it takes when a user
|
|
105
|
-
* palettes it by hand were different palettes for no reason a reader could see.
|
|
101
|
+
* A feature's categorical color deals from it; a row's deals from
|
|
102
|
+
* `rowPaletteColorAt`, which re-lights tableau10 rather than reaching for
|
|
103
|
+
* another scheme's hues.
|
|
106
104
|
*
|
|
107
105
|
* `tableau10` leads because its hues are the most evenly separated, so a track
|
|
108
106
|
* with a handful of rows spends only that. The tail is what makes the 26
|
|
@@ -114,21 +112,16 @@ export const paletteColors = {
|
|
|
114
112
|
* re-palettes), while a by-position painter has no value to hash and wraps.
|
|
115
113
|
*
|
|
116
114
|
* **It holds 14 pairs `similarColors` calls the same** — five schemes' blues,
|
|
117
|
-
* oranges, greens, reds and pinks
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
* colors and 38 on 26; the loss is the birthday collision on 40 slots, not the
|
|
121
|
-
* near-twins, and only 3 of the pairs they land on read alike. Pruning to the
|
|
122
|
-
* 30 distinct entries makes that 23 and 24, so it costs ten colors and buys
|
|
123
|
-
* nothing.
|
|
115
|
+
* oranges, greens, reds and pinks. A dealt scale (`categoricalScale`'s `held`)
|
|
116
|
+
* steps over a twin of a color already dealt, so they cost a track only once
|
|
117
|
+
* it has more values than the 30 distinct entries.
|
|
124
118
|
*
|
|
125
|
-
* The near-twins bite
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
* with a figure refresh in it.
|
|
119
|
+
* The near-twins bite a `domain` instead, which spends the list in order: 30
|
|
120
|
+
* listed values take 30 colors and 7 of those pairs read alike. Ordering the
|
|
121
|
+
* distinct 30 first and the twins behind them fixes that outright (0 pairs at
|
|
122
|
+
* 30 listed values, 11 at 38 where the twins are reached anyway) and costs no
|
|
123
|
+
* colors — but it moves every hashed color in marks, GWAS, canvas, multi-row
|
|
124
|
+
* and the arrangement dialog, so it is a pass with a figure refresh in it.
|
|
132
125
|
*/
|
|
133
126
|
export const categoricalPalette = [
|
|
134
127
|
...new Set([...tableau10, ...set1, ...dark2, ...set2, ...category10].filter(hex => !NEUTRALS.has(hex.toLowerCase()))),
|
|
@@ -159,19 +152,24 @@ function freeSlot(value, size, taken) {
|
|
|
159
152
|
return slot;
|
|
160
153
|
}
|
|
161
154
|
/**
|
|
162
|
-
* The categorical rule every scaled channel resolves through.
|
|
163
|
-
* `domain`
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
155
|
+
* The categorical rule every scaled channel resolves through. The values
|
|
156
|
+
* `domain` lists take `range` in order, continuing into the `fallback`
|
|
157
|
+
* entries `range` lacks past its end. Any other value takes the slot derived
|
|
158
|
+
* from itself (`categoricalValueColor`'s, with no `domain`) unless a listed
|
|
159
|
+
* value holds it or one `isNear` calls the same, and then another slot derived
|
|
160
|
+
* from itself.
|
|
161
|
+
*
|
|
162
|
+
* With `held`, a value is dealt once, on first sight: its slot avoids every
|
|
163
|
+
* slot `held` already records and their near twins as well, so values met
|
|
164
|
+
* together never share an entry while the list has room, and the slot is
|
|
165
|
+
* recorded so the value keeps it as others arrive. A value nothing else
|
|
166
|
+
* collides with keeps the entry it takes without `held`. With no `domain`, the
|
|
167
|
+
* deal spends `range` before spilling into the `fallback` entries it lacks.
|
|
170
168
|
*/
|
|
171
|
-
export function categoricalScale(domain, range, { fallback = [], isNear, } = {}) {
|
|
169
|
+
export function categoricalScale(domain, range, { fallback = [], isNear, held, } = {}) {
|
|
172
170
|
const base = range.length ? range : fallback;
|
|
173
171
|
const listed = [...new Set((domain ?? []).map(String))].filter(v => v !== '');
|
|
174
|
-
if (listed.length === 0) {
|
|
172
|
+
if (listed.length === 0 && !held) {
|
|
175
173
|
return value => base[valueSlot(value, base.length)];
|
|
176
174
|
}
|
|
177
175
|
const seen = new Set(base.map(entryKey));
|
|
@@ -183,19 +181,44 @@ export function categoricalScale(domain, range, { fallback = [], isNear, } = {})
|
|
|
183
181
|
}),
|
|
184
182
|
];
|
|
185
183
|
const size = entries.length;
|
|
184
|
+
const twins = [];
|
|
185
|
+
const twinsOf = (slot) => (twins[slot] ??= entries.flatMap((entry, i) => i === slot || isNear?.(entries[slot], entry) ? [i] : []));
|
|
186
186
|
const rank = new Map(listed.map((value, i) => [value, i]));
|
|
187
|
-
const
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
187
|
+
const listedTaken = new Set(listed.flatMap((_, i) => twinsOf(i % size)));
|
|
188
|
+
const tiers = listed.length > 0
|
|
189
|
+
? [[0, size]]
|
|
190
|
+
: [[0, base.length], [base.length, size]];
|
|
191
|
+
const deal = (value, taken) => {
|
|
192
|
+
for (const [from, to] of tiers) {
|
|
193
|
+
const inTier = from === 0 && to === size
|
|
194
|
+
? taken
|
|
195
|
+
: new Set([...taken].filter(s => s >= from && s < to).map(s => s - from));
|
|
196
|
+
if (inTier.size < to - from) {
|
|
197
|
+
return from + freeSlot(value, to - from, inTier);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return valueSlot(value, tiers[0][1]);
|
|
201
|
+
};
|
|
192
202
|
return value => {
|
|
193
203
|
const i = rank.get(value);
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
204
|
+
if (i !== undefined) {
|
|
205
|
+
return entries[i % size];
|
|
206
|
+
}
|
|
207
|
+
if (!held) {
|
|
208
|
+
return entries[deal(value, listedTaken)];
|
|
209
|
+
}
|
|
210
|
+
let slot = held.get(value);
|
|
211
|
+
if (slot === undefined) {
|
|
212
|
+
const taken = new Set(listedTaken);
|
|
213
|
+
for (const s of held.values()) {
|
|
214
|
+
for (const twin of twinsOf(s)) {
|
|
215
|
+
taken.add(twin);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
slot = deal(value, taken);
|
|
219
|
+
held.set(value, slot);
|
|
220
|
+
}
|
|
221
|
+
return entries[slot];
|
|
199
222
|
};
|
|
200
223
|
}
|
|
201
224
|
const oklabByColor = new Map();
|
|
@@ -219,12 +242,14 @@ export function similarColors(a, b) {
|
|
|
219
242
|
/**
|
|
220
243
|
* `categoricalScale` for a color channel: `palette` (the wide palette when
|
|
221
244
|
* empty) spent in `domain` order and continued into the wide palette, and an
|
|
222
|
-
* unlisted value never on a listed value's color or one that reads the same
|
|
245
|
+
* unlisted value never on a listed value's color or one that reads the same,
|
|
246
|
+
* nor, with `held`, on the color of a value met before it.
|
|
223
247
|
*/
|
|
224
|
-
export function categoricalColorScale(domain, palette = []) {
|
|
248
|
+
export function categoricalColorScale(domain, palette = [], held) {
|
|
225
249
|
return categoricalScale(domain, palette, {
|
|
226
250
|
fallback: categoricalPalette,
|
|
227
251
|
isNear: similarColors,
|
|
252
|
+
held,
|
|
228
253
|
});
|
|
229
254
|
}
|
|
230
255
|
const MAX_CACHED_SCALES = 16;
|
|
@@ -316,11 +341,23 @@ const PALETTE_LAP_TONES = [
|
|
|
316
341
|
// and pinks all pin against the top of the sRGB gamut and converge there.
|
|
317
342
|
{ lightnessShift: 0.18, chromaScale: 0.8 },
|
|
318
343
|
];
|
|
344
|
+
// The color at `position` in `hexes`, each lap past the end re-lit.
|
|
345
|
+
function lapColorAt(hexes, position) {
|
|
346
|
+
const hex = hexes[position % hexes.length];
|
|
347
|
+
const lap = PALETTE_LAP_TONES[Math.floor(position / hexes.length) % PALETTE_LAP_TONES.length];
|
|
348
|
+
return lap ? relight(hex, lap.lightnessShift, lap.chromaScale) : hex;
|
|
349
|
+
}
|
|
319
350
|
/** The palette color for a chromosome at `position` in its assembly. */
|
|
320
351
|
export function refNamePaletteColorAt(position) {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
352
|
+
return lapColorAt(refNameColorHexes, position);
|
|
353
|
+
}
|
|
354
|
+
const rowColorHexes = tableau10.filter(hex => !NEUTRALS.has(hex));
|
|
355
|
+
/**
|
|
356
|
+
* The color the row palette deals the row or value at `position`: tableau10
|
|
357
|
+
* less its grey, then re-lit laps of it, as a karyotype's are.
|
|
358
|
+
*/
|
|
359
|
+
export function rowPaletteColorAt(position) {
|
|
360
|
+
return lapColorAt(rowColorHexes, position);
|
|
324
361
|
}
|
|
325
362
|
/**
|
|
326
363
|
* The color a refName paints, BY POSITION IN THE ASSEMBLY where the caller
|
|
@@ -353,7 +390,7 @@ const okabeIto = [
|
|
|
353
390
|
'#d55e00',
|
|
354
391
|
'#cc79a7',
|
|
355
392
|
];
|
|
356
|
-
// Paul Tol, "
|
|
393
|
+
// Paul Tol, "Color Schemes", SRON/EPS/TN/09-002 (2021), the bright scheme
|
|
357
394
|
const tolBright = [
|
|
358
395
|
'#4477aa',
|
|
359
396
|
'#ee6677',
|
|
@@ -362,7 +399,7 @@ const tolBright = [
|
|
|
362
399
|
'#66ccee',
|
|
363
400
|
'#aa3377',
|
|
364
401
|
];
|
|
365
|
-
// Paul Tol, "
|
|
402
|
+
// Paul Tol, "Color Schemes", SRON/EPS/TN/09-002 (2021), the muted scheme
|
|
366
403
|
const tolMuted = [
|
|
367
404
|
'#cc6677',
|
|
368
405
|
'#332288',
|
|
@@ -411,7 +448,7 @@ const namedPalettes = {
|
|
|
411
448
|
};
|
|
412
449
|
/**
|
|
413
450
|
* A palette named in `namedPalettes`, or a comma-separated list of CSS
|
|
414
|
-
*
|
|
451
|
+
* colors; undefined, with a warning, for anything else.
|
|
415
452
|
*/
|
|
416
453
|
export function paletteFromSpec(spec) {
|
|
417
454
|
if (typeof spec !== 'string' || spec === '') {
|
|
@@ -424,7 +461,7 @@ export function paletteFromSpec(spec) {
|
|
|
424
461
|
if (colors.every(isCssColor)) {
|
|
425
462
|
return colors;
|
|
426
463
|
}
|
|
427
|
-
console.warn(`palette "${spec}" is neither one of ${Object.keys(namedPalettes).join(', ')} nor a comma-separated list of CSS
|
|
464
|
+
console.warn(`palette "${spec}" is neither one of ${Object.keys(namedPalettes).join(', ')} nor a comma-separated list of CSS colors`);
|
|
428
465
|
return undefined;
|
|
429
466
|
}
|
|
430
467
|
export { category10, set1 };
|
|
@@ -13,7 +13,7 @@ import type { MenuItem } from './MenuTypes.ts';
|
|
|
13
13
|
* layout-affecting, and reachable only from the pinned feature's own
|
|
14
14
|
* right-click menu, so a pin left on another chromosome could not be reached);
|
|
15
15
|
* - an undo derived from the state's ABSENCE, so it vanished with the thing it
|
|
16
|
-
* undid (the canvas
|
|
16
|
+
* undid (the canvas color key's "×" was a one-way door for the session);
|
|
17
17
|
* - a count derived from a different predicate than the state's actual effect
|
|
18
18
|
* ("Filter by... (1)" for opening the filter dialog and pressing Submit).
|
|
19
19
|
*
|
|
@@ -57,41 +57,20 @@ export declare function clearAll(items: Reversibles): void;
|
|
|
57
57
|
export declare function undoItems(items: Reversibles, priority?: number): MenuItem[];
|
|
58
58
|
export interface FilterMenuOpts {
|
|
59
59
|
/**
|
|
60
|
-
* The display's narrowings, declared once (see {@link Reversible}).
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
60
|
+
* The display's narrowings, declared once (see {@link Reversible}). The count
|
|
61
|
+
* in the label, the undo rows inside the submenu and what "Clear all filters"
|
|
62
|
+
* clears all derive from it, so they cannot disagree. Count a narrowing when
|
|
63
|
+
* its value is not its **no-op** value, which is not always its config
|
|
64
|
+
* default: the alignments flag masks default non-zero and are the
|
|
65
|
+
* no-filtering state.
|
|
64
66
|
*/
|
|
65
|
-
narrowings
|
|
66
|
-
/**
|
|
67
|
-
* How many independent filters are narrowing the view right now, so the label
|
|
68
|
-
* can say that something is hiding data. Count a filter when its value is not
|
|
69
|
-
* its **no-op** value, which is not always its config default: the LD
|
|
70
|
-
* display's `minorAlleleFrequencyFilter` ships at 0.1 and is genuinely
|
|
71
|
-
* dropping variants, while the alignments flag masks default non-zero and are
|
|
72
|
-
* the no-filtering state, so they count only when edited away from it.
|
|
73
|
-
*
|
|
74
|
-
* This is usually the only affordance telling the user a filter is silently
|
|
75
|
-
* hiding rows — nothing else in the track chrome says so.
|
|
76
|
-
*
|
|
77
|
-
* Ignored when `narrowings` is given.
|
|
78
|
-
*/
|
|
79
|
-
activeCount?: number;
|
|
67
|
+
narrowings: Reversibles;
|
|
80
68
|
/** Opens the display's filter dialog, where it has a single one. */
|
|
81
69
|
onEdit?: () => void;
|
|
82
70
|
/** Controls that belong inside the submenu (inline sliders, further dialogs). */
|
|
83
71
|
subItems?: MenuItem[];
|
|
84
|
-
/**
|
|
85
|
-
* Recovery rows offered alongside "Clear all filters" once something is
|
|
86
|
-
* filtering — the canvas display's "Show N hidden features", for one.
|
|
87
|
-
*/
|
|
88
|
-
recoveryItems?: MenuItem[];
|
|
89
|
-
/** Turn every filter off. Offered only while `activeCount` is non-zero. */
|
|
90
|
-
onClear?: () => void;
|
|
91
|
-
/** Rides the top-level row; see the canvas display's RECOVERY_PRIORITY. */
|
|
72
|
+
/** Rides the top-level row, `TRACK_MENU_PRIORITY.recovery` on the canvas display. */
|
|
92
73
|
priority?: number;
|
|
93
|
-
/** Label for the dialog opener inside the submenu. */
|
|
94
|
-
editLabel?: string;
|
|
95
74
|
}
|
|
96
75
|
/**
|
|
97
76
|
* The "Filter by..." family, in the one shape every display uses.
|
|
@@ -109,4 +88,4 @@ export interface FilterMenuOpts {
|
|
|
109
88
|
* multi-sample variant track said nothing, anywhere, about the rows it was
|
|
110
89
|
* dropping.
|
|
111
90
|
*/
|
|
112
|
-
export declare function filterMenuItems({ narrowings,
|
|
91
|
+
export declare function filterMenuItems({ narrowings, onEdit, subItems, priority, }: FilterMenuOpts): MenuItem[];
|
|
@@ -46,36 +46,35 @@ export function undoItems(items, priority) {
|
|
|
46
46
|
* multi-sample variant track said nothing, anywhere, about the rows it was
|
|
47
47
|
* dropping.
|
|
48
48
|
*/
|
|
49
|
-
export function filterMenuItems({ narrowings,
|
|
50
|
-
|
|
51
|
-
// the pre-`Reversible` shape, kept for the displays that haven't adopted it.
|
|
52
|
-
const count = narrowings ? activeCount(narrowings) : explicitCount;
|
|
53
|
-
const recoveryItems = narrowings ? undoItems(narrowings) : explicitRecovery;
|
|
54
|
-
const onClear = narrowings
|
|
55
|
-
? () => {
|
|
56
|
-
clearAll(narrowings);
|
|
57
|
-
}
|
|
58
|
-
: explicitClear;
|
|
49
|
+
export function filterMenuItems({ narrowings, onEdit, subItems = [], priority, }) {
|
|
50
|
+
const count = activeCount(narrowings);
|
|
59
51
|
const label = count > 0 ? `Filter by... (${count})` : 'Filter by...';
|
|
60
52
|
const editItem = onEdit
|
|
61
53
|
? [
|
|
62
54
|
{
|
|
63
|
-
label:
|
|
55
|
+
label: 'Edit filters...',
|
|
64
56
|
icon: FilterAltIcon,
|
|
65
57
|
onClick: onEdit,
|
|
66
58
|
},
|
|
67
59
|
]
|
|
68
60
|
: [];
|
|
69
|
-
const clearItem =
|
|
61
|
+
const clearItem = count > 0
|
|
70
62
|
? [
|
|
71
63
|
{
|
|
72
64
|
label: 'Clear all filters',
|
|
73
65
|
icon: FilterAltOffIcon,
|
|
74
|
-
onClick:
|
|
66
|
+
onClick: () => {
|
|
67
|
+
clearAll(narrowings);
|
|
68
|
+
},
|
|
75
69
|
},
|
|
76
70
|
]
|
|
77
71
|
: [];
|
|
78
|
-
const rows = [
|
|
72
|
+
const rows = [
|
|
73
|
+
...editItem,
|
|
74
|
+
...subItems,
|
|
75
|
+
...undoItems(narrowings),
|
|
76
|
+
...clearItem,
|
|
77
|
+
];
|
|
79
78
|
if (!rows.length) {
|
|
80
79
|
return [];
|
|
81
80
|
}
|
package/esm/ui/index.d.ts
CHANGED
|
@@ -81,7 +81,7 @@ export { hoverBoxStyle } from './hoverBoxStyle.ts';
|
|
|
81
81
|
export { useMouseState, useMouseTracking } from './useMouseTracking.ts';
|
|
82
82
|
export type { MouseState, MouseTracker } from './useMouseTracking.ts';
|
|
83
83
|
export { VIEW_HEADER_HEIGHT } from './viewHeaderHeight.ts';
|
|
84
|
-
export { LEGEND_ROW_HEIGHT,
|
|
84
|
+
export { LEGEND_ROW_HEIGHT, LEGEND_SWATCH, default as SvgColorLegend, } from './SvgColorLegend.tsx';
|
|
85
85
|
export type { ColorLegendEntry } from './SvgColorLegend.tsx';
|
|
86
86
|
export { measureLegendText } from './measureLegendText.ts';
|
|
87
87
|
export { LegendSwatchGlyph } from './LegendSwatchGlyph.tsx';
|
package/esm/ui/index.js
CHANGED
|
@@ -75,7 +75,7 @@ export { default as Crosshairs } from './Crosshairs.js';
|
|
|
75
75
|
export { hoverBoxStyle } from './hoverBoxStyle.js';
|
|
76
76
|
export { useMouseState, useMouseTracking } from './useMouseTracking.js';
|
|
77
77
|
export { VIEW_HEADER_HEIGHT } from './viewHeaderHeight.js';
|
|
78
|
-
export { LEGEND_ROW_HEIGHT,
|
|
78
|
+
export { LEGEND_ROW_HEIGHT, LEGEND_SWATCH, default as SvgColorLegend, } from './SvgColorLegend.js';
|
|
79
79
|
export { measureLegendText } from './measureLegendText.js';
|
|
80
80
|
export { LegendSwatchGlyph } from './LegendSwatchGlyph.js';
|
|
81
81
|
export { MAX_LEGEND_ITEMS, legendEntries, legendIsReadable, legendSwatches, nonEmptyLegendSections, } from './legendSpec.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { subMenuIfAny } from './MenuTypes.js';
|
|
1
2
|
/**
|
|
2
3
|
* One launch offer, over the datasets that can serve it: nothing at all when
|
|
3
4
|
* none can, otherwise a submenu naming each. Which dataset a launch reads from
|
|
@@ -8,17 +9,12 @@
|
|
|
8
9
|
* data.
|
|
9
10
|
*/
|
|
10
11
|
export function launchTargetsMenuItem({ label, icon, entries, entryLabel, onSelect, }) {
|
|
11
|
-
return
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
onClick: onSelect(entry),
|
|
20
|
-
})),
|
|
21
|
-
},
|
|
22
|
-
]
|
|
23
|
-
: [];
|
|
12
|
+
return subMenuIfAny({
|
|
13
|
+
label,
|
|
14
|
+
icon,
|
|
15
|
+
subMenu: entries.map(entry => ({
|
|
16
|
+
label: entryLabel(entry),
|
|
17
|
+
onClick: onSelect(entry),
|
|
18
|
+
})),
|
|
19
|
+
});
|
|
24
20
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { MenuItem } from './MenuTypes.ts';
|
|
2
2
|
import type { SettingRowOptions } from './toggleMenuItems.ts';
|
|
3
3
|
/**
|
|
4
|
-
* The "Show legend" checkbox
|
|
5
|
-
* view's.
|
|
6
|
-
*
|
|
4
|
+
* The "Show legend" checkbox for a menu with no "Show..." submenu, such as the
|
|
5
|
+
* circular view's. Inside "Show..." the row reads "Legend"
|
|
6
|
+
* (`legendCheckboxItem` in `@jbrowse/display-kit/LegendMixin`).
|
|
7
7
|
*
|
|
8
8
|
* The `showLegend` **config slots** stay per display: their default values
|
|
9
9
|
* legitimately differ (a Hi-C color scale is off by default, a variant genotype
|
|
@@ -12,5 +12,5 @@ import type { SettingRowOptions } from './toggleMenuItems.ts';
|
|
|
12
12
|
* `synteny-core`'s color-by legend has no toggle at all: it comes up with the
|
|
13
13
|
* modes that have a key and is dismissed from its own close button.
|
|
14
14
|
*/
|
|
15
|
-
/** #menuBuilder showLegendCheckboxItem |
|
|
15
|
+
/** #menuBuilder showLegendCheckboxItem | a "Show legend" checkbox outside a "Show..." submenu */
|
|
16
16
|
export declare function showLegendCheckboxItem(checked: boolean, onToggle: () => void, opts?: SettingRowOptions): MenuItem;
|
package/esm/ui/legendMenuItem.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { checkboxItem } from './toggleMenuItems.js';
|
|
2
2
|
/**
|
|
3
|
-
* The "Show legend" checkbox
|
|
4
|
-
* view's.
|
|
5
|
-
*
|
|
3
|
+
* The "Show legend" checkbox for a menu with no "Show..." submenu, such as the
|
|
4
|
+
* circular view's. Inside "Show..." the row reads "Legend"
|
|
5
|
+
* (`legendCheckboxItem` in `@jbrowse/display-kit/LegendMixin`).
|
|
6
6
|
*
|
|
7
7
|
* The `showLegend` **config slots** stay per display: their default values
|
|
8
8
|
* legitimately differ (a Hi-C color scale is off by default, a variant genotype
|
|
@@ -11,7 +11,7 @@ import { checkboxItem } from './toggleMenuItems.js';
|
|
|
11
11
|
* `synteny-core`'s color-by legend has no toggle at all: it comes up with the
|
|
12
12
|
* modes that have a key and is dismissed from its own close button.
|
|
13
13
|
*/
|
|
14
|
-
/** #menuBuilder showLegendCheckboxItem |
|
|
14
|
+
/** #menuBuilder showLegendCheckboxItem | a "Show legend" checkbox outside a "Show..." submenu */
|
|
15
15
|
export function showLegendCheckboxItem(checked, onToggle, opts) {
|
|
16
16
|
return checkboxItem('Show legend', checked, onToggle, opts);
|
|
17
17
|
}
|
|
@@ -3,7 +3,7 @@ import type { MenuItem } from './MenuTypes.ts';
|
|
|
3
3
|
* The trailing control a menu row draws, resolved at the point of drawing.
|
|
4
4
|
*
|
|
5
5
|
* `endAdornment` is an element the builder already made — synteny's and
|
|
6
|
-
* wiggle's
|
|
6
|
+
* wiggle's color swatches — so the row hands it straight through.
|
|
7
7
|
*
|
|
8
8
|
* Lives in one place rather than at each of the four render sites, because the
|
|
9
9
|
* "does any row have one?" predicate and the rendering have to agree — a row
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The trailing control a menu row draws, resolved at the point of drawing.
|
|
3
3
|
*
|
|
4
4
|
* `endAdornment` is an element the builder already made — synteny's and
|
|
5
|
-
* wiggle's
|
|
5
|
+
* wiggle's color swatches — so the row hands it straight through.
|
|
6
6
|
*
|
|
7
7
|
* Lives in one place rather than at each of the four render sites, because the
|
|
8
8
|
* "does any row have one?" predicate and the rendering have to agree — a row
|
package/esm/ui/menuItems.d.ts
CHANGED
|
@@ -19,5 +19,5 @@ export { withHint } from './menuLabels.ts';
|
|
|
19
19
|
export { makeRadioSubMenu } from './radioSubMenu.ts';
|
|
20
20
|
export { showLegendCheckboxItem } from './legendMenuItem.ts';
|
|
21
21
|
export type { RadioOption, SettingRowOptions } from './toggleMenuItems.ts';
|
|
22
|
-
export { resolveSubMenu, staysOpenOnClick } from './MenuTypes.ts';
|
|
22
|
+
export { TRACK_MENU_PRIORITY, resolveSubMenu, staysOpenOnClick, subMenuIfAny, } from './MenuTypes.ts';
|
|
23
23
|
export type { BaseMenuItem, CheckboxMenuItem, ClickableMenuItem, CustomMenuItem, MenuDivider, MenuItem, MenuItemClickHandler, MenuItemsGetter, MenuSubHeader, NormalMenuItem, RadioMenuItem, SubMenuItem, } from './MenuTypes.ts';
|
package/esm/ui/menuItems.js
CHANGED
|
@@ -18,4 +18,4 @@ export { checkboxItem, radioItem, radioItems, toggleItem, withSubHeader, } from
|
|
|
18
18
|
export { withHint } from './menuLabels.js';
|
|
19
19
|
export { makeRadioSubMenu } from './radioSubMenu.js';
|
|
20
20
|
export { showLegendCheckboxItem } from './legendMenuItem.js';
|
|
21
|
-
export { resolveSubMenu, staysOpenOnClick } from './MenuTypes.js';
|
|
21
|
+
export { TRACK_MENU_PRIORITY, resolveSubMenu, staysOpenOnClick, subMenuIfAny, } from './MenuTypes.js';
|
package/esm/ui/menuLabels.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
/**
|
|
15
15
|
* #menuBuilder withHint | a row label carrying an aside that is only sometimes there
|
|
16
16
|
*
|
|
17
|
-
* `withHint('
|
|
17
|
+
* `withHint('Row separators', tooShort ? 'needs rows 4px or taller' :
|
|
18
18
|
* undefined)`.
|
|
19
19
|
*
|
|
20
20
|
* The rows that want this are the ones that can be on, correctly on, and doing
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* has no reason to hover, since from the tick it looks like it already works.
|
|
30
30
|
*
|
|
31
31
|
* AN EM DASH, NOT PARENTHESES. Two of these labels already end in a
|
|
32
|
-
* parenthetical of their own ("
|
|
32
|
+
* parenthetical of their own ("Conservation (% identity)", "Codon changes
|
|
33
33
|
* (amino acids)"), and a second pair straight after the first reads as a typo.
|
|
34
34
|
* It also keeps the aside distinct from the ` - ` that names a permanent half of
|
|
35
35
|
* a label ("Square view - average bp per pixel").
|
package/esm/ui/menuLabels.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
/**
|
|
15
15
|
* #menuBuilder withHint | a row label carrying an aside that is only sometimes there
|
|
16
16
|
*
|
|
17
|
-
* `withHint('
|
|
17
|
+
* `withHint('Row separators', tooShort ? 'needs rows 4px or taller' :
|
|
18
18
|
* undefined)`.
|
|
19
19
|
*
|
|
20
20
|
* The rows that want this are the ones that can be on, correctly on, and doing
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* has no reason to hover, since from the tick it looks like it already works.
|
|
30
30
|
*
|
|
31
31
|
* AN EM DASH, NOT PARENTHESES. Two of these labels already end in a
|
|
32
|
-
* parenthetical of their own ("
|
|
32
|
+
* parenthetical of their own ("Conservation (% identity)", "Codon changes
|
|
33
33
|
* (amino acids)"), and a second pair straight after the first reads as a typo.
|
|
34
34
|
* It also keeps the aside distinct from the ` - ` that names a permanent half of
|
|
35
35
|
* a label ("Square view - average bp per pixel").
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type PluginManager from '../PluginManager.ts';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AnyTrackConfig } from '../configuration/index.ts';
|
|
3
3
|
import type { AbstractSessionModel } from '../util/types/index.ts';
|
|
4
4
|
import type { MenuItem } from './MenuTypes.ts';
|
|
5
5
|
import type { IStateTreeNode } from '@jbrowse/mobx-state-tree';
|
|
6
6
|
export interface MultiTrackSelection extends IStateTreeNode {
|
|
7
|
-
selection:
|
|
7
|
+
selection: AnyTrackConfig[];
|
|
8
8
|
}
|
|
9
9
|
export interface MultiTrackMenuItemsProps {
|
|
10
10
|
session: AbstractSessionModel;
|
package/esm/ui/palette.d.ts
CHANGED
|
@@ -253,10 +253,10 @@ export interface JBrowsePalette extends StringColors, NeutralTokens, SemanticCol
|
|
|
253
253
|
mode: 'light' | 'dark';
|
|
254
254
|
primary: ColorQuad;
|
|
255
255
|
/**
|
|
256
|
-
* The primary
|
|
256
|
+
* The primary color where it marks something on the page's own ground,
|
|
257
257
|
* such as a checked box or a selected row. `primary.main` in light mode. In
|
|
258
258
|
* dark mode a primary as deep as midnight vanishes against the background,
|
|
259
|
-
* so it is the secondary text
|
|
259
|
+
* so it is the secondary text color, which the Material controls take there
|
|
260
260
|
* too.
|
|
261
261
|
*/
|
|
262
262
|
accent: string;
|
package/esm/ui/palette.js
CHANGED
|
@@ -264,7 +264,7 @@ export const colorPairRR = '#5555bb';
|
|
|
264
264
|
// the dullest (C* 20.4 against 34.6), which together is what "reads as a smudge"
|
|
265
265
|
// means. Reported on `cancer_sv/k562_bcr_abl_split`: "the arcs for the
|
|
266
266
|
// interchromosomal reads are very dark". The tell is a 2 px stroke — at that
|
|
267
|
-
// weight it was the only
|
|
267
|
+
// weight it was the only color in either scheme that disappeared, while as a
|
|
268
268
|
// large flat read fill it was merely dull. This slot has to survive both.
|
|
269
269
|
//
|
|
270
270
|
// The fix is that unmappedMate left the warm family (see its own note), which
|
|
@@ -330,7 +330,7 @@ export const colorShortInsert = '#f582c0';
|
|
|
330
330
|
* #color alignments-pair-orientation | Mate unmapped | Mate aligned nowhere
|
|
331
331
|
* #color alignments-insert-size | Mate unmapped | Mate aligned nowhere
|
|
332
332
|
*/
|
|
333
|
-
// A NON-
|
|
333
|
+
// A NON-COLOR, at the dark end of the neutral scale on BOTH themes. It takes
|
|
334
334
|
// the first half of the `readOverlap` pattern and not the second, and that split
|
|
335
335
|
// is the thing to understand here.
|
|
336
336
|
//
|
|
@@ -371,7 +371,7 @@ export const colorShortInsert = '#f582c0';
|
|
|
371
371
|
// has to survive, not a 40 px square.
|
|
372
372
|
//
|
|
373
373
|
// White was the previous dark value, and it reads as the loudest thing in a dark
|
|
374
|
-
// pileup — louder than the
|
|
374
|
+
// pileup — louder than the colored categories it is meant to be quieter than —
|
|
375
375
|
// which is the "glaring near-white blocks" failure `colorPairLRDark` already
|
|
376
376
|
// exists to avoid. Going dark also drops the one real cost white carried, dE 9.4
|
|
377
377
|
// to `readOverlap`'s dark #e4e4e4 — which the note that shipped it called dE 7,
|
|
@@ -385,10 +385,10 @@ export const colorShortInsert = '#f582c0';
|
|
|
385
385
|
//
|
|
386
386
|
// IGV goes further than any of this: `setPairOrientation` requires
|
|
387
387
|
// `mate.isMapped()`, so an unmapped mate falls through every branch and takes
|
|
388
|
-
// the default read
|
|
388
|
+
// the default read color. Going that far loses the one thing the category is
|
|
389
389
|
// for — under insert size, tlen is 0 and would otherwise paint
|
|
390
390
|
// `colorShortInsert`, a false claim — so it keeps a mark, and makes the mark a
|
|
391
|
-
// non-
|
|
391
|
+
// non-color.
|
|
392
392
|
export const colorUnmappedMate = '#000000';
|
|
393
393
|
// See colorUnmappedMate: the same dark neutral, lifted off the #121212 ground by
|
|
394
394
|
// the least that still reads as a read rather than as a hole.
|
|
@@ -594,12 +594,12 @@ const defaultBases = {
|
|
|
594
594
|
};
|
|
595
595
|
const defaultFramesCDS = [
|
|
596
596
|
null,
|
|
597
|
-
{ main: '#
|
|
598
|
-
{ main: '#
|
|
597
|
+
{ main: '#F46868' },
|
|
598
|
+
{ main: '#2EAA2E' },
|
|
599
599
|
{ main: '#8080FF' },
|
|
600
600
|
{ main: '#8080FF' },
|
|
601
|
-
{ main: '#
|
|
602
|
-
{ main: '#
|
|
601
|
+
{ main: '#2EAA2E' },
|
|
602
|
+
{ main: '#F46868' },
|
|
603
603
|
];
|
|
604
604
|
const defaultFrames = [
|
|
605
605
|
null,
|
|
@@ -726,7 +726,7 @@ export function resolvePalette(args = {}) {
|
|
|
726
726
|
const preset = presets[themeName] ?? presets.default ?? {};
|
|
727
727
|
const declared = themeName === 'default' ? { ...preset, ...configTheme?.palette } : preset;
|
|
728
728
|
// A palette that declares a `mode` is pinned to it: an admin who registers a
|
|
729
|
-
// dark `extraThemes` entry picked its
|
|
729
|
+
// dark `extraThemes` entry picked its colors for dark, and the light half
|
|
730
730
|
// they never wrote is not JBrowse's to invent. A `mode` in the config `theme`
|
|
731
731
|
// slot is the opposite — the site's starting point for the one palette that
|
|
732
732
|
// merges it — so a reader's own pick wins over that.
|
package/esm/ui/radioSubMenu.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MenuItem } from './MenuTypes.ts';
|
|
2
|
+
import type { RadioOption } from './toggleMenuItems.ts';
|
|
2
3
|
import type React from 'react';
|
|
3
4
|
/**
|
|
4
5
|
* Build a radio submenu from a `[value, label]` option table keyed on the
|
|
@@ -8,7 +9,7 @@ import type React from 'react';
|
|
|
8
9
|
* appended after the radios (e.g. a related checkbox) within the same submenu.
|
|
9
10
|
*
|
|
10
11
|
* Every display has a submenu of this shape naming the one thing it draws —
|
|
11
|
-
* wiggle's
|
|
12
|
+
* wiggle's and MAF's "Plot type", Hi-C's "Color scheme", the arc
|
|
12
13
|
* display's "Display mode". The labels stay display-specific (they name
|
|
13
14
|
* genuinely different choices); the construction is shared so a hand-rolled
|
|
14
15
|
* copy can't forget that a settings row keeps the menu open.
|
|
@@ -20,9 +21,10 @@ import type React from 'react';
|
|
|
20
21
|
export declare function makeRadioSubMenu<T extends string>(opts: {
|
|
21
22
|
label: string;
|
|
22
23
|
icon?: React.ElementType;
|
|
23
|
-
value: T;
|
|
24
|
+
value: T | undefined;
|
|
24
25
|
onChange: (value: T) => void;
|
|
25
|
-
|
|
26
|
+
/** `[value, label]` pairs, or `RadioOption`s for rows gated one by one */
|
|
27
|
+
options: readonly (readonly [T, string] | RadioOption<T>)[];
|
|
26
28
|
extraItems?: MenuItem[];
|
|
27
29
|
/**
|
|
28
30
|
* Prose for the group, on the row that opens it. One "?" here rather than one
|