blockly
Version:
Blockly is a library for building visual programming editors.
84 lines • 3.31 kB
TypeScript
/**
* @license
* Copyright 2023 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import type { Block } from '../block.js';
import type { IContextMenu } from '../interfaces/i_contextmenu.js';
import type { IFocusableTree } from '../interfaces/i_focusable_tree.js';
import type { IIcon } from '../interfaces/i_icon.js';
import * as tooltip from '../tooltip.js';
import { Coordinate } from '../utils/coordinate.js';
import { Size } from '../utils/size.js';
import type { IconType } from './icon_types.js';
/**
* The abstract icon class. Icons are visual elements that live in the top-start
* corner of the block. Usually they provide more "meta" information about a
* block (such as warnings or comments) as opposed to fields, which provide
* "actual" information, related to how a block functions.
*/
export declare abstract class Icon implements IIcon, IContextMenu {
protected sourceBlock: Block;
/**
* The position of this icon relative to its blocks top-start,
* in workspace units.
*/
protected offsetInBlock: Coordinate;
/** The position of this icon in workspace coordinates. */
protected workspaceLocation: Coordinate;
/** The root svg element visually representing this icon. */
protected svgRoot: SVGGElement | null;
/** The tooltip for this icon. */
protected tooltip: tooltip.TipInfo;
/** The unique ID of this icon. */
private id;
constructor(sourceBlock: Block);
getType(): IconType<IIcon>;
initView(pointerdownListener: (e: PointerEvent) => void): void;
dispose(): void;
getWeight(): number;
getSize(): Size;
/**
* Sets the tooltip for this icon to the given value. Null to show the
* tooltip of the block.
*/
setTooltip(tip: tooltip.TipInfo | null): void;
/** Returns the tooltip for this icon. */
getTooltip(): tooltip.TipInfo;
applyColour(): void;
updateEditable(): void;
updateCollapsed(): void;
hideForInsertionMarker(): void;
isShownWhenCollapsed(): boolean;
setOffsetInBlock(offset: Coordinate): void;
private updateSvgRootOffset;
onLocationChange(blockOrigin: Coordinate): void;
onClick(): void;
/**
* Check whether the icon should be clickable while the block is in a flyout.
* The default is that icons are clickable in all flyouts (auto-closing or not).
* Subclasses may override this function to change this behavior.
*
* @param autoClosingFlyout true if the containing flyout is an auto-closing one.
* @returns Whether the icon should be clickable while the block is in a flyout.
*/
isClickableInFlyout(autoClosingFlyout: boolean): boolean;
/** 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;
/**
* Returns the block that this icon is attached to.
*
* @returns The block this icon is attached to.
*/
getSourceBlock(): Block;
showContextMenu(e: PointerEvent): void;
}
//# sourceMappingURL=icon.d.ts.map