/** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { Coordinate } from '../utils/coordinate'; /** * Represents an object that can be dragged. */ export interface IDraggable extends IDragStrategy { /** * Returns the current location of the draggable in workspace * coordinates. * * @returns Coordinate of current location on workspace. */ getRelativeToSurfaceXY(): Coordinate; } export interface IDragStrategy { /** Returns true iff the element is currently movable. */ isMovable(): boolean; /** * Handles any drag startup (e.g moving elements to the front of the * workspace). * * @param e PointerEvent that started the drag; can be used to * check modifier keys, etc. May be missing when dragging is * triggered programatically rather than by user. */ startDrag(e?: PointerEvent): void; /** * Handles moving elements to the new location, and updating any * visuals based on that (e.g connection previews for blocks). * * @param newLoc Workspace coordinate to which the draggable has * been dragged. * @param e PointerEvent that continued the drag. Can be * used to check modifier keys, etc. */ drag(newLoc: Coordinate, e?: PointerEvent): void; /** * Handles any drag cleanup, including e.g. connecting or deleting * blocks. * * @param newLoc Workspace coordinate at which the drag finished. * been dragged. * @param e PointerEvent that finished the drag. Can be * used to check modifier keys, etc. */ endDrag(e?: PointerEvent): void; /** Moves the draggable back to where it was at the start of the drag. */ revertDrag(): void; } /** Returns whether the given object is an IDraggable or not. */ export declare function isDraggable(obj: any): obj is IDraggable; //# sourceMappingURL=i_draggable.d.ts.map