Files
blockly/core/interfaces/i_bubble.ts
Ben Henning 4074cee31b feat!: Make everything ISelectable focusable (#9004)
* feat!: Make bubbles, comments, and icons focusable

* feat!: Make ISelectable and ICopyable focusable.

* feat: Consolidate selection calls.

Now everything is based on focus with selection only being used as a
proxy.

* feat: Invert responsibility for setSelected().

Now setSelected() is only for quasi-external use.

* feat: Push up shadow check to getters.

Needed new common-level helper.

* chore: Lint fixes.

* feat!: Allow IFocusableNode to disable focus.

* chore: post-merge lint fixes

* fix: Fix tests + text bubble focusing.

This fixed then regressed a circular dependency causing the node and
advanced compilation steps to fail. This investigation is ongoing.

* fix: Clean up & fix imports.

This ensures the node and advanced compilation test steps now pass.

* fix: Lint fixes + revert commented out logic.

* chore: Remove unnecessary cast.

Addresses reviewer comment.

* fix: Some issues and a bunch of clean-ups.

This addresses a bunch of review comments, and fixes selecting workspace
comments.

* chore: Lint fix.

* fix: Remove unnecessary shadow consideration.

* chore: Revert import.

* chore: Some doc updates & added a warn statement.
2025-05-09 08:16:14 -07:00

65 lines
1.6 KiB
TypeScript

/**
* @license
* Copyright 2020 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
// Former goog.module ID: Blockly.IBubble
import type {Coordinate} from '../utils/coordinate.js';
import type {IContextMenu} from './i_contextmenu.js';
import type {IDraggable} from './i_draggable.js';
import {IFocusableNode} from './i_focusable_node.js';
/**
* A bubble interface.
*/
export interface IBubble extends IDraggable, IContextMenu, IFocusableNode {
/**
* Return the coordinates of the top-left corner of this bubble's body
* relative to the drawing surface's origin (0,0), in workspace units.
*
* @returns Object with .x and .y properties.
*/
getRelativeToSurfaceXY(): Coordinate;
/**
* Return the root node of the bubble's SVG group.
*
* @returns The root SVG node of the bubble's group.
*/
getSvgRoot(): SVGElement;
/**
* Sets whether or not this bubble is being dragged.
*
* @param adding True if dragging, false otherwise.
*/
setDragging(dragging: boolean): void;
/**
* Move this bubble during a drag.
*
* @param newLoc The location to translate to, in workspace coordinates.
*/
moveDuringDrag(newLoc: Coordinate): void;
/**
* Move the bubble to the specified location in workspace coordinates.
*
* @param x The x position to move to.
* @param y The y position to move to.
*/
moveTo(x: number, y: number): void;
/**
* Update the style of this bubble when it is dragged over a delete area.
*
* @param enable True if the bubble is about to be deleted, false otherwise.
*/
setDeleteStyle(enable: boolean): void;
/** Dispose of this bubble. */
dispose(): void;
}