Files
blockly/core/interfaces/i_connection_checker.ts
Aaron Dodson f70f82327b refactor: Remove some uses of AnyDuringMigration (#6307)
* refactor: Remove uses of AnyDuringMigration from trashcan.ts.

* refactor: Remove uses of AnyDuringMigration in bubble.ts.

* refactor: Remove uses of AnyDuringMigration from connection_checker.ts.

* refactor: Remove uses of AnyDuringMigration from connection_db.ts.

* refactor: Remove uses of AnyDuringMigration in contextmenu_items.ts.

* refactor: Remove uses of AnyDuringMigration from grid.ts.

* refactor: Remove uses of AnyDuringMigration from i_drag_target.ts.

* refactor: Remove uses of AnyDuringMigration from i_ast_node_location_svg.ts.

* refactor: Remove uses of AnyDuringMigration from i_ast_node_location_with_block.ts.

* refactor: Remove uses of AnyDuringMigration from i_autohideable.ts.

* refactor: Remove uses of AnyDuringMigration from i_block_dragger.ts.

* refactor: Remove uses of AnyDuringMigration from i_bounded_element.ts.

* refactor: Remove uses of AnyDuringMigration from i_bubble.ts.

* refactor: Remove uses of AnyDuringMigration from i_collapsible_toolbox_item.ts.

* refactor: Remove uses of AnyDuringMigration from i_connection_checker.ts.

* refactor: Remove uses of AnyDuringMigration from i_contextmenu.ts.

* refactor: Remove uses of AnyDuringMigration in i_copyable.ts.

* refactor: Remove uses of AnyDuringMigration from i_deleteable.ts.

* refactor: Remove uses of AnyDuringMigration from i_delete_area.ts.

* refactor: Remove uses of AnyDuringMigration in i_flyout.ts.

* refactor: Remove uses of AnyDuringMigration in i_keyboard_accessible.ts.

* refactor: Remove uses of AnyDuringMigration in i_metrics_manager.ts.

* refactor: Remove uses of AnyDuringMigration from i_movable.ts.

* refactor: Remove uses of AnyDuringMigration in i_positionable.ts.

* refactor: Remove uses of AnyDuringMigration in i_selectable_toolbox_item.ts.

* refactor: Remove uses of AnyDuringMigration from i_selectable.ts.

* refactor: Remove uses of AnyDuringMigration in i_serializer.ts.

* refactor: Remove uses of AnyDuringMigration from i_styleable.ts.

* refactor: Remove uses of AnyDuringMigration in i_toolbox.ts.

* refactor: Make non-null checks explicit.
2022-08-04 10:09:24 -07:00

103 lines
3.7 KiB
TypeScript

/**
* @license
* Copyright 2020 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @fileoverview The interface for an object that encapsulates logic for
* checking whether a potential connection is safe and valid.
*/
/**
* The interface for an object that encapsulates logic for
* checking whether a potential connection is safe and valid.
* @namespace Blockly.IConnectionChecker
*/
import * as goog from '../../closure/goog/goog.js';
import type {Connection} from '../connection.js';
import type {RenderedConnection} from '../rendered_connection.js';
goog.declareModuleId('Blockly.IConnectionChecker');
/* eslint-disable-next-line no-unused-vars */
// Unused import preserved for side-effects. Remove if unneeded.
// import '../connection.js';
/* eslint-disable-next-line no-unused-vars */
// Unused import preserved for side-effects. Remove if unneeded.
// import '../rendered_connection.js';
/**
* Class for connection type checking logic.
* @alias Blockly.IConnectionChecker
*/
export interface IConnectionChecker {
/**
* Check whether the current connection can connect with the target
* connection.
* @param a Connection to check compatibility with.
* @param b Connection to check compatibility with.
* @param isDragging True if the connection is being made by dragging a block.
* @param opt_distance The max allowable distance between the connections for
* drag checks.
* @return Whether the connection is legal.
*/
canConnect(
a: Connection|null, b: Connection|null, isDragging: boolean,
opt_distance?: number): boolean;
/**
* Checks whether the current connection can connect with the target
* connection, and return an error code if there are problems.
* @param a Connection to check compatibility with.
* @param b Connection to check compatibility with.
* @param isDragging True if the connection is being made by dragging a block.
* @param opt_distance The max allowable distance between the connections for
* drag checks.
* @return Connection.CAN_CONNECT if the connection is legal, an error code
* otherwise.
*/
canConnectWithReason(
a: Connection|null, b: Connection|null, isDragging: boolean,
opt_distance?: number): number;
/**
* Helper method that translates a connection error code into a string.
* @param errorCode The error code.
* @param a One of the two connections being checked.
* @param b The second of the two connections being checked.
* @return A developer-readable error string.
*/
getErrorMessage(errorCode: number, a: Connection|null, b: Connection|null):
string;
/**
* Check that connecting the given connections is safe, meaning that it would
* not break any of Blockly's basic assumptions (e.g. no self connections).
* @param a The first of the connections to check.
* @param b The second of the connections to check.
* @return An enum with the reason this connection is safe or unsafe.
*/
doSafetyChecks(a: Connection|null, b: Connection|null): number;
/**
* Check whether this connection is compatible with another connection with
* respect to the value type system. E.g. square_root("Hello") is not
* compatible.
* @param a Connection to compare.
* @param b Connection to compare against.
* @return True if the connections share a type.
*/
doTypeChecks(a: Connection, b: Connection): boolean;
/**
* Check whether this connection can be made by dragging.
* @param a Connection to compare.
* @param b Connection to compare against.
* @param distance The maximum allowable distance between connections.
* @return True if the connection is allowed during a drag.
*/
doDragChecks(a: RenderedConnection, b: RenderedConnection, distance: number):
boolean;
}