Files
blockly/core/renderers/common/block_rendering.ts
Maribeth Bottorff 037eb59b89 chore: Lint TsDoc. (#6353)
* chore: add linting for tsdoc

* chore: don't require types on return

* chore: remove redundant fileoverview from ts

* chore: change return to returns and add some newlines

* chore: remove license tag

* chore: don't require params/return docs

* chore: remove spurious struct tags

* Revert "chore: change return to returns and add some newlines"

This reverts commit d6d8656a45.

* chore: don't auto-add param names

* chore: disable require-param bc it breaks on this

* return to returns and add line breaks

* chore: configure additional jsdoc rules

* chore: run format

* Revert "chore: remove license tag"

This reverts commit 173455588a.

* chore: allow license tag format

* chore: only require jsdoc on exported items

* chore: add missing jsdoc or silence where needed

* chore: run format

* chore: lint fixes
2022-08-23 14:27:22 -07:00

168 lines
5.2 KiB
TypeScript

/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
/**
* Namespace for block rendering functionality.
*
* @namespace Blockly.blockRendering
*/
import * as goog from '../../../closure/goog/goog.js';
goog.declareModuleId('Blockly.blockRendering');
import * as registry from '../../registry.js';
import type {Theme} from '../../theme.js';
import * as deprecation from '../../utils/deprecation.js';
import {Measurable} from '../measurables/base.js';
import {BottomRow} from '../measurables/bottom_row.js';
import {Connection} from '../measurables/connection.js';
import {ExternalValueInput} from '../measurables/external_value_input.js';
import {Field} from '../measurables/field.js';
import {Hat} from '../measurables/hat.js';
import {Icon} from '../measurables/icon.js';
import {InRowSpacer} from '../measurables/in_row_spacer.js';
import {InlineInput} from '../measurables/inline_input.js';
import {InputConnection} from '../measurables/input_connection.js';
import {InputRow} from '../measurables/input_row.js';
import {JaggedEdge} from '../measurables/jagged_edge.js';
import {NextConnection} from '../measurables/next_connection.js';
import {OutputConnection} from '../measurables/output_connection.js';
import {PreviousConnection} from '../measurables/previous_connection.js';
import {RoundCorner} from '../measurables/round_corner.js';
import {Row} from '../measurables/row.js';
import {SpacerRow} from '../measurables/spacer_row.js';
import {SquareCorner} from '../measurables/square_corner.js';
import {StatementInput} from '../measurables/statement_input.js';
import {TopRow} from '../measurables/top_row.js';
import {Types} from '../measurables/types.js';
import {ConstantProvider} from './constants.js';
import * as debug from './debug.js';
import {Debug} from './debugger.js';
import {Drawer} from './drawer.js';
import type {IPathObject} from './i_path_object.js';
import {RenderInfo} from './info.js';
import {MarkerSvg} from './marker_svg.js';
import {PathObject} from './path_object.js';
import {Renderer} from './renderer.js';
/**
* Returns whether the debugger is turned on.
*
* @returns Whether the debugger is turned on.
* @alias Blockly.blockRendering.isDebuggerEnabled
* @deprecated
* @internal
*/
export function isDebuggerEnabled(): boolean {
deprecation.warn(
'Blockly.blockRendering.isDebuggerEnabled()', 'September 2021',
'September 2022',
'the debug renderer in @blockly/dev-tools (See https://www.npmjs.com/package/@blockly/dev-tools.)');
return debug.isDebuggerEnabled();
}
/**
* Registers a new renderer.
*
* @param name The name of the renderer.
* @param rendererClass The new renderer class to register.
* @throws {Error} if a renderer with the same name has already been registered.
*/
export function register(name: string, rendererClass: Function) {
registry.register(registry.Type.RENDERER, name, rendererClass);
}
/**
* Unregisters the renderer registered with the given name.
*
* @param name The name of the renderer.
* @alias Blockly.blockRendering.unregister
*/
export function unregister(name: string) {
registry.unregister(registry.Type.RENDERER, name);
}
/**
* Turn on the blocks debugger.
*
* @alias Blockly.blockRendering.startDebugger
* @deprecated
* @internal
*/
export function startDebugger() {
deprecation.warn(
'Blockly.blockRendering.startDebugger()', 'September 2021',
'September 2022',
'the debug renderer in @blockly/dev-tools (See https://www.npmjs.com/package/@blockly/dev-tools.)');
debug.startDebugger();
}
/**
* Turn off the blocks debugger.
*
* @alias Blockly.blockRendering.stopDebugger
* @deprecated
* @internal
*/
export function stopDebugger() {
deprecation.warn(
'Blockly.blockRendering.stopDebugger()', 'September 2021',
'September 2022',
'the debug renderer in @blockly/dev-tools (See https://www.npmjs.com/package/@blockly/dev-tools.)');
debug.stopDebugger();
}
/**
* Initialize anything needed for rendering (constants, etc).
*
* @param name Name of the renderer to initialize.
* @param theme The workspace theme object.
* @param opt_rendererOverrides Rendering constant overrides.
* @returns The new instance of a renderer.
* Already initialized.
* @alias Blockly.blockRendering.init
* @internal
*/
export function init(
name: string, theme: Theme,
opt_rendererOverrides?: {[rendererConstant: string]: any}): Renderer {
const rendererClass = registry.getClass(registry.Type.RENDERER, name);
const renderer = new rendererClass!(name);
renderer.init(theme, opt_rendererOverrides);
return renderer;
}
export {BottomRow};
export {Connection};
export {ConstantProvider};
export {Debug};
export {Drawer};
export {ExternalValueInput};
export {Field};
export {Hat};
export {Icon};
export {InRowSpacer};
export {InlineInput};
export {InputConnection};
export {InputRow};
export {IPathObject};
export {JaggedEdge};
export {MarkerSvg};
export {Measurable};
export {NextConnection};
export {OutputConnection};
export {PathObject};
export {PreviousConnection};
export {Renderer};
export {RenderInfo};
export {RoundCorner};
export {Row};
export {SpacerRow};
export {SquareCorner};
export {StatementInput};
export {TopRow};
export {Types};