From c5736bba65c70495ba1e9bac4648a3662914fda4 Mon Sep 17 00:00:00 2001 From: Maribeth Moffatt Date: Thu, 10 Apr 2025 10:34:35 -0700 Subject: [PATCH] feat: make block and workspace implement IContextMenu (#8876) --- core/block_svg.ts | 4 +++- core/workspace_svg.ts | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/block_svg.ts b/core/block_svg.ts index 1b76ed3f1..ca753fc0a 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -16,7 +16,6 @@ import './events/events_selected.js'; import {Block} from './block.js'; import * as blockAnimations from './block_animations.js'; -import {IDeletable} from './blockly.js'; import * as browserEvents from './browser_events.js'; import {BlockCopyData, BlockPaster} from './clipboard/block_paster.js'; import * as common from './common.js'; @@ -41,7 +40,9 @@ import {WarningIcon} from './icons/warning_icon.js'; import type {Input} from './inputs/input.js'; import type {IASTNodeLocationSvg} from './interfaces/i_ast_node_location_svg.js'; import type {IBoundedElement} from './interfaces/i_bounded_element.js'; +import {IContextMenu} from './interfaces/i_contextmenu.js'; import type {ICopyable} from './interfaces/i_copyable.js'; +import {IDeletable} from './interfaces/i_deletable.js'; import type {IDragStrategy, IDraggable} from './interfaces/i_draggable.js'; import {IIcon} from './interfaces/i_icon.js'; import * as internalConstants from './internal_constants.js'; @@ -72,6 +73,7 @@ export class BlockSvg implements IASTNodeLocationSvg, IBoundedElement, + IContextMenu, ICopyable, IDraggable, IDeletable diff --git a/core/workspace_svg.ts b/core/workspace_svg.ts index 68a1bd939..7dcd5b570 100644 --- a/core/workspace_svg.ts +++ b/core/workspace_svg.ts @@ -41,6 +41,7 @@ import {Gesture} from './gesture.js'; import {Grid} from './grid.js'; import type {IASTNodeLocationSvg} from './interfaces/i_ast_node_location_svg.js'; import type {IBoundedElement} from './interfaces/i_bounded_element.js'; +import {IContextMenu} from './interfaces/i_contextmenu.js'; import type {IDragTarget} from './interfaces/i_drag_target.js'; import type {IFlyout} from './interfaces/i_flyout.js'; import type {IMetricsManager} from './interfaces/i_metrics_manager.js'; @@ -90,7 +91,10 @@ const ZOOM_TO_FIT_MARGIN = 20; * Class for a workspace. This is an onscreen area with optional trashcan, * scrollbars, bubbles, and dragging. */ -export class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg { +export class WorkspaceSvg + extends Workspace + implements IASTNodeLocationSvg, IContextMenu +{ /** * A wrapper function called when a resize event occurs. * You can pass the result to `eventHandling.unbind`.