/** * @license * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type { IBoundedElement } from './interfaces/i_bounded_element.js'; import type { IFocusableNode } from './interfaces/i_focusable_node.js'; import type { IFocusableTree } from './interfaces/i_focusable_tree.js'; import type { IRenderedElement } from './interfaces/i_rendered_element.js'; import { Coordinate } from './utils/coordinate.js'; import { Rect } from './utils/rect.js'; import type * as toolbox from './utils/toolbox.js'; import type { WorkspaceSvg } from './workspace_svg.js'; /** * Class for a button or label in the flyout. */ export declare class FlyoutButton implements IBoundedElement, IRenderedElement, IFocusableNode { private readonly workspace; private readonly targetWorkspace; private readonly isFlyoutLabel; /** The horizontal margin around the text in the button. */ static TEXT_MARGIN_X: number; /** The vertical margin around the text in the button. */ static TEXT_MARGIN_Y: number; /** The radius of the flyout button's borders. */ static BORDER_RADIUS: number; private readonly text; private readonly position; private readonly callbackKey; private readonly cssClass; /** Mouse up event data. */ private onMouseDownWrapper; private onMouseUpWrapper; info: toolbox.ButtonOrLabelInfo; /** The width of the button's rect. */ width: number; /** The height of the button's rect. */ height: number; /** The root SVG group for the button or label. */ private svgGroup; /** The SVG element with the text of the label or button. */ private svgText; /** * Holds the cursors svg element when the cursor is attached to the button. * This is null if there is no cursor on the button. */ cursorSvg: SVGElement | null; /** The unique ID for this FlyoutButton. */ private id; /** * @param workspace The workspace in which to place this button. * @param targetWorkspace The flyout's target workspace. * @param json The JSON specifying the label/button. * @param isFlyoutLabel Whether this button should be styled as a label. * @internal */ constructor(workspace: WorkspaceSvg, targetWorkspace: WorkspaceSvg, json: toolbox.ButtonOrLabelInfo, isFlyoutLabel: boolean); createDom(): SVGElement; /** Correctly position the flyout button and make it visible. */ show(): void; /** Update SVG attributes to match internal state. */ private updateTransform; /** * Move the button to the given x, y coordinates. * * @param x The new x coordinate. * @param y The new y coordinate. */ moveTo(x: number, y: number): void; /** * Move the element by a relative offset. * * @param dx Horizontal offset in workspace units. * @param dy Vertical offset in workspace units. * @param _reason Why is this move happening? 'user', 'bump', 'snap'... */ moveBy(dx: number, dy: number, _reason?: string[]): void; /** @returns Whether or not the button is a label. */ isLabel(): boolean; /** * Location of the button. * * @returns x, y coordinates. * @internal */ getPosition(): Coordinate; /** * Returns the coordinates of a bounded element describing the dimensions of * the element. Coordinate system: workspace coordinates. * * @returns Object with coordinates of the bounded element. */ getBoundingRectangle(): Rect; /** @returns Text of the button. */ getButtonText(): string; /** * Get the button's target workspace. * * @returns The target workspace of the flyout where this button resides. */ getTargetWorkspace(): WorkspaceSvg; /** * Get the button's workspace. * * @returns The workspace in which to place this button. */ getWorkspace(): WorkspaceSvg; /** Dispose of this button. */ dispose(): void; /** * Add the cursor SVG to this buttons's SVG group. * * @param cursorSvg The SVG root of the cursor to be added to the button SVG * group. */ setCursorSvg(cursorSvg: SVGElement): void; /** * Do something when the button is clicked. * * @param e Pointer up event. */ private onMouseUp; private onMouseDown; /** * @returns The root SVG element of this rendered element. */ getSvgRoot(): SVGGElement; /** See IFocusableNode.getFocusableElement. */ getFocusableElement(): HTMLElement | SVGElement; /** See IFocusableNode.getFocusableTree. */ getFocusableTree(): IFocusableTree; /** See IFocusableNode.onNodeFocus. */ onNodeFocus(): void; /** See IFocusableNode.onNodeBlur. */ onNodeBlur(): void; /** See IFocusableNode.canBeFocused. */ canBeFocused(): boolean; } //# sourceMappingURL=flyout_button.d.ts.map