@xiamh/block-shareable-procedures-custom
Version:
A plugin that adds procedure blocks which are backed by explicit data models.
31 lines (24 loc) • 904 B
text/typescript
/**
* @license
* Copyright 2023 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import * as Blockly from 'blockly/core';
/* eslint-disable @typescript-eslint/naming-convention */
/** The interface for a block which models a procedure. */
export interface IProcedureBlock {
getProcedureModel(): Blockly.procedures.IProcedureModel;
doProcedureUpdate(): void;
isProcedureDef(): boolean;
}
/**
* A type guard which checks if the given block is a procedure block.
* @param block The block to check for procedure-y-ness.
* @returns Whether this block is a procedure block or not.
*/
export function isProcedureBlock(block: Blockly.Block |
IProcedureBlock): block is IProcedureBlock {
return (block as IProcedureBlock).getProcedureModel !== undefined &&
(block as IProcedureBlock).doProcedureUpdate !== undefined &&
(block as IProcedureBlock).isProcedureDef !== undefined;
}