chore!: delete deprecations for v11. (#7732)

* chore: delete basic deprecations

* chore: remove deprecated align enum

* chore: remove generator deprecation

* chore: format
This commit is contained in:
Beka Westberg
2024-01-10 10:31:34 -08:00
parent 2e1297e765
commit 75007a064c
22 changed files with 6 additions and 782 deletions

View File

@@ -14,7 +14,7 @@ import * as Xml from '../core/xml.js';
import * as fieldRegistry from '../core/field_registry.js';
import * as xmlUtils from '../core/utils/xml.js';
import type {Abstract as AbstractEvent} from '../core/events/events_abstract.js';
import {Align} from '../core/inputs/input.js';
import {Align} from '../core/inputs/align.js';
import type {Block} from '../core/block.js';
import type {BlockSvg} from '../core/block_svg.js';
import type {BlockCreate} from '../core/events/events_block_create.js';

View File

@@ -28,8 +28,6 @@ import * as registry from './registry.js';
import {Coordinate} from './utils/coordinate.js';
import * as dom from './utils/dom.js';
import type {WorkspaceSvg} from './workspace_svg.js';
import {hasBubble} from './interfaces/i_has_bubble.js';
import * as deprecation from './utils/deprecation.js';
import * as layers from './layers.js';
/**
@@ -51,12 +49,6 @@ export class BlockDragger implements IBlockDragger {
protected wouldDeleteBlock_ = false;
protected startXY_: Coordinate;
/**
* @deprecated To be removed in v11. Updating icons is now handled by the
* block's `moveDuringDrag` method.
*/
protected dragIconData_: IconPositionData[] = [];
/**
* @param block The block to drag.
* @param workspace The workspace to drag on.
@@ -76,8 +68,6 @@ export class BlockDragger implements IBlockDragger {
* beginning of the drag in workspace coordinates.
*/
this.startXY_ = this.draggingBlock_.getRelativeToSurfaceXY();
this.dragIconData_ = initIconData(block, this.startXY_);
}
/**
@@ -86,7 +76,6 @@ export class BlockDragger implements IBlockDragger {
* @internal
*/
dispose() {
this.dragIconData_.length = 0;
if (this.draggedConnectionManager_) {
this.draggedConnectionManager_.dispose();
}
@@ -398,16 +387,6 @@ export class BlockDragger implements IBlockDragger {
return result;
}
/**
* Move all of the icons connected to this drag.
*
* @deprecated To be removed in v11. This is now handled by the block's
* `moveDuringDrag` method.
*/
protected dragIcons_() {
deprecation.warn('Blockly.BlockDragger.prototype.dragIcons_', 'v10', 'v11');
}
/**
* Get a list of the insertion markers that currently exist. Drags have 0, 1,
* or 2 insertion markers.
@@ -432,38 +411,4 @@ export interface IconPositionData {
icon: Icon;
}
/**
* Make a list of all of the icons (comment, warning, and mutator) that are
* on this block and its descendants. Moving an icon moves the bubble that
* extends from it if that bubble is open.
*
* @param block The root block that is being dragged.
* @param blockOrigin The top left of the given block in workspace coordinates.
* @returns The list of all icons and their locations.
*/
function initIconData(
block: BlockSvg,
blockOrigin: Coordinate,
): IconPositionData[] {
// Build a list of icons that need to be moved and where they started.
const dragIconData = [];
for (const icon of block.getIcons()) {
// Only bother to track icons whose bubble is visible.
if (hasBubble(icon) && !icon.bubbleIsVisible()) continue;
dragIconData.push({location: blockOrigin, icon: icon});
icon.onLocationChange(blockOrigin);
}
for (const child of block.getChildren(false)) {
dragIconData.push(
...initIconData(child, Coordinate.sum(blockOrigin, child.relativeCoords)),
);
}
// AnyDuringMigration because: Type '{ location: Coordinate | null; icon:
// Icon; }[]' is not assignable to type 'IconPositionData[]'.
return dragIconData as AnyDuringMigration;
}
registry.register(registry.Type.BLOCK_DRAGGER, registry.DEFAULT, BlockDragger);

View File

@@ -17,7 +17,6 @@ import './events/events_selected.js';
import {Block} from './block.js';
import * as blockAnimations from './block_animations.js';
import * as browserEvents from './browser_events.js';
import {CommentIcon} from './icons/comment_icon.js';
import * as common from './common.js';
import {config} from './config.js';
import type {Connection} from './connection.js';
@@ -59,7 +58,6 @@ import {WarningIcon} from './icons/warning_icon.js';
import type {Workspace} from './workspace.js';
import type {WorkspaceSvg} from './workspace_svg.js';
import * as renderManagement from './render_management.js';
import * as deprecation from './utils/deprecation.js';
import {IconType} from './icons/icon_types.js';
import {BlockCopyData, BlockPaster} from './clipboard/block_paster.js';
@@ -115,13 +113,6 @@ export class BlockSvg
/** Block's mutator icon (if any). */
mutator: MutatorIcon | null = null;
/**
* Block's warning icon (if any).
*
* @deprecated Use `setWarningText` to modify warnings on this block.
*/
warning: WarningIcon | null = null;
private svgGroup_: SVGGElement;
style: BlockStyle;
/** @internal */
@@ -911,18 +902,6 @@ export class BlockSvg
}
}
/**
* Get the comment icon attached to this block, or null if the block has no
* comment.
*
* @returns The comment icon attached to this block, or null.
* @deprecated Use getIcon. To be remove in v11.
*/
getCommentIcon(): CommentIcon | null {
deprecation.warn('getCommentIcon', 'v10', 'v11', 'getIcon');
return (this.getIcon(CommentIcon.TYPE) ?? null) as CommentIcon | null;
}
/**
* Set this block's warning text.
*
@@ -1010,7 +989,6 @@ export class BlockSvg
override addIcon<T extends IIcon>(icon: T): T {
super.addIcon(icon);
if (icon instanceof WarningIcon) this.warning = icon;
if (icon instanceof MutatorIcon) this.mutator = icon;
if (this.rendered) {
@@ -1041,7 +1019,6 @@ export class BlockSvg
override removeIcon(type: IconType<IIcon>): boolean {
const removed = super.removeIcon(type);
if (type.equals(WarningIcon.TYPE)) this.warning = null;
if (type.equals(MutatorIcon.TYPE)) this.mutator = null;
if (this.rendered) {

View File

@@ -22,7 +22,6 @@ import {BlockSvg} from './block_svg.js';
import {BlocklyOptions} from './blockly_options.js';
import {Blocks} from './blocks.js';
import * as browserEvents from './browser_events.js';
import {Bubble} from './bubbles/bubble.js';
import * as bubbles from './bubbles.js';
import {BubbleDragger} from './bubble_dragger.js';
import * as bumpObjects from './bump_objects.js';
@@ -123,9 +122,7 @@ import {Gesture} from './gesture.js';
import {Grid} from './grid.js';
import * as icons from './icons.js';
import {inject} from './inject.js';
import {Align} from './inputs/align.js';
import {Input} from './inputs/input.js';
import {inputTypes} from './inputs/input_types.js';
import * as inputs from './inputs.js';
import {InsertionMarkerManager} from './insertion_marker_manager.js';
import {IASTNodeLocation} from './interfaces/i_ast_node_location.js';
@@ -186,7 +183,6 @@ import * as renderManagement from './render_management.js';
import * as blockRendering from './renderers/common/block_rendering.js';
import * as constants from './constants.js';
import * as geras from './renderers/geras/geras.js';
import * as minimalist from './renderers/minimalist/minimalist.js';
import * as thrasos from './renderers/thrasos/thrasos.js';
import * as zelos from './renderers/zelos/zelos.js';
import {Scrollbar} from './scrollbar.js';
@@ -241,27 +237,6 @@ export const VERSION = 'uncompiled';
* namespace to put new functions on.
*/
/*
* Aliases for input alignments used in block defintions.
*/
/**
* @see Blockly.Input.Align.LEFT
* @deprecated Use `Blockly.inputs.Align.LEFT`. To be removed in v11.
*/
export const ALIGN_LEFT = Align.LEFT;
/**
* @see Blockly.Input.Align.CENTRE
* @deprecated Use `Blockly.inputs.Align.CENTER`. To be removed in v11.
*/
export const ALIGN_CENTRE = Align.CENTRE;
/**
* @see Blockly.Input.Align.RIGHT
* @deprecated Use `Blockly.inputs.Align.RIGHT`. To be removed in v11.
*/
export const ALIGN_RIGHT = Align.RIGHT;
/*
* Aliases for constants used for connection and input types.
*/
@@ -286,12 +261,6 @@ export const NEXT_STATEMENT = ConnectionType.NEXT_STATEMENT;
*/
export const PREVIOUS_STATEMENT = ConnectionType.PREVIOUS_STATEMENT;
/**
* @see inputTypes.DUMMY_INPUT
* @deprecated Use `Blockly.inputs.inputTypes.DUMMY`. To be removed in v11.
*/
export const DUMMY_INPUT = inputTypes.DUMMY;
/** Aliases for toolbox positions. */
/**
@@ -488,7 +457,6 @@ export {constants};
export {dialog};
export {fieldRegistry};
export {geras};
export {minimalist};
export {registry};
export {thrasos};
export {uiPosition};
@@ -502,8 +470,6 @@ export {BlockDragger};
export {BlockSvg};
export {Blocks};
export {bubbles};
/** @deprecated Use Blockly.bubbles.Bubble instead. To be removed in v11. */
export {Bubble};
export {BubbleDragger};
export {CollapsibleToolboxCategory};
export {ComponentManager};
@@ -648,9 +614,5 @@ export {WorkspaceDragger};
export {WorkspaceSvg};
export {ZoomControls};
export {config};
/** @deprecated Use Blockly.ConnectionType instead. */
export const connectionTypes = ConnectionType;
export {inject};
/** @deprecated Use Blockly.inputs.inputTypes instead. To be removed in v11. */
export {inputTypes};
export {serialization};

View File

@@ -12,30 +12,12 @@ import * as globalRegistry from './registry.js';
import {WorkspaceSvg} from './workspace_svg.js';
import * as registry from './clipboard/registry.js';
import {Coordinate} from './utils/coordinate.js';
import * as deprecation from './utils/deprecation.js';
/** Metadata about the object that is currently on the clipboard. */
let stashedCopyData: ICopyData | null = null;
let stashedWorkspace: WorkspaceSvg | null = null;
/**
* Copy a copyable element onto the local clipboard.
*
* @param toCopy The copyable element to be copied.
* @deprecated v11. Use `myCopyable.toCopyData()` instead. To be removed v12.
* @internal
*/
export function copy<T extends ICopyData>(toCopy: ICopyable<T>): T | null {
deprecation.warn(
'Blockly.clipboard.copy',
'v11',
'v12',
'myCopyable.toCopyData()',
);
return TEST_ONLY.copyInternal(toCopy);
}
/**
* Private version of copy for stubbing in tests.
*/
@@ -107,29 +89,6 @@ function pasteFromData<T extends ICopyData>(
?.paste(copyData, workspace, coordinate) ?? null) as ICopyable<T> | null;
}
/**
* Duplicate this copy-paste-able element.
*
* @param toDuplicate The element to be duplicated.
* @returns The element that was duplicated, or null if the duplication failed.
* @deprecated v11. Use
* `Blockly.clipboard.paste(myCopyable.toCopyData(), myWorkspace)` instead.
* To be removed v12.
* @internal
*/
export function duplicate<
U extends ICopyData,
T extends ICopyable<U> & IHasWorkspace,
>(toDuplicate: T): T | null {
deprecation.warn(
'Blockly.clipboard.duplicate',
'v11',
'v12',
'Blockly.clipboard.paste(myCopyable.toCopyData(), myWorkspace)',
);
return TEST_ONLY.duplicateInternal(toDuplicate);
}
/**
* Private version of duplicate for stubbing in tests.
*/

View File

@@ -16,7 +16,6 @@ import type {Block} from './block.js';
import * as common from './common.js';
import {Names, NameType} from './names.js';
import type {Workspace} from './workspace.js';
import {warn} from './utils/deprecation.js';
/**
* Deprecated, no-longer used type declaration for per-block-type generator
@@ -255,16 +254,7 @@ export class CodeGenerator {
// Look up block generator function in dictionary - but fall back
// to looking up on this if not found, for backwards compatibility.
let func = this.forBlock[block.type];
if (!func && (this as any)[block.type]) {
warn(
'block generator functions on CodeGenerator objects',
'10.0',
'11.0',
'the .forBlock[blockType] dictionary',
);
func = (this as any)[block.type];
}
const func = this.forBlock[block.type];
if (typeof func !== 'function') {
throw Error(
`${this.name_} generator does not know how to generate code ` +

View File

@@ -14,7 +14,6 @@ import * as dom from '../utils/dom.js';
import {Size} from '../utils/size.js';
import {Svg} from '../utils/svg.js';
import type {IconType} from './icon_types.js';
import * as deprecation from '../utils/deprecation.js';
import * as tooltip from '../tooltip.js';
/**
@@ -145,14 +144,4 @@ export abstract class Icon implements IIcon {
isClickableInFlyout(autoClosingFlyout: boolean): boolean {
return true;
}
/**
* Sets the visibility of the icon's bubble if one exists.
*
* @deprecated Use `setBubbleVisible` instead. To be removed in v11.
*/
setVisible(visibility: boolean): void {
deprecation.warn('setVisible', 'v10', 'v11', 'setBubbleVisible');
if (hasBubble(this)) this.setBubbleVisible(visibility);
}
}

View File

@@ -7,11 +7,9 @@
// Former goog.module ID: Blockly.Mutator
import type {Abstract} from '../events/events_abstract.js';
import type {Block} from '../block.js';
import {BlockChange} from '../events/events_block_change.js';
import type {BlocklyOptions} from '../blockly_options.js';
import type {BlockSvg} from '../block_svg.js';
import type {Connection} from '../connection.js';
import {Coordinate} from '../utils/coordinate.js';
import * as dom from '../utils/dom.js';
import * as eventUtils from '../events/utils.js';
@@ -22,7 +20,6 @@ import {Rect} from '../utils/rect.js';
import {Size} from '../utils/size.js';
import {Svg} from '../utils/svg.js';
import type {WorkspaceSvg} from '../workspace_svg.js';
import * as deprecation from '../utils/deprecation.js';
import {IconType} from './icon_types.js';
import * as renderManagement from '../render_management.js';
@@ -354,40 +351,4 @@ export class MutatorIcon extends Icon implements IHasBubble {
getWorkspace(): WorkspaceSvg | undefined {
return this.miniWorkspaceBubble?.getWorkspace();
}
/**
* Reconnects the given connection to the mutated input on the given block.
*
* @deprecated Use connection.reconnect instead. To be removed in v11.
*/
static reconnect(
connectionChild: Connection | null,
block: Block,
inputName: string,
): boolean {
deprecation.warn(
'MutatorIcon.reconnect',
'v10',
'v11',
'connection.reconnect',
);
if (!connectionChild) return false;
return connectionChild.reconnect(block, inputName);
}
/**
* Returns the parent workspace of a workspace that is inside a mini workspace
* bubble, taking into account whether the workspace is a flyout.
*
* @deprecated Use workspace.getRootWorkspace. To be removed in v11.
*/
static findParentWs(workspace: WorkspaceSvg): WorkspaceSvg | null {
deprecation.warn(
'MutatorIcon.findParentWs',
'v10',
'v11',
'workspace.getRootWorkspace',
);
return workspace.getRootWorkspace();
}
}

View File

@@ -22,6 +22,7 @@ import type {Field} from '../field.js';
import * as fieldRegistry from '../field_registry.js';
import type {RenderedConnection} from '../rendered_connection.js';
import {inputTypes} from './input_types.js';
import {Align} from './align.js';
/** Class for an input with optional fields. */
export class Input {
@@ -305,25 +306,3 @@ export class Input {
return this.sourceBlock.makeConnection_(type);
}
}
export namespace Input {
// TODO(v11): When this is removed in v11, also re-enable errors on access
// of deprecated things (in build_tasks.js).
/**
* Enum for alignment of inputs.
*
* @deprecated Use Blockly.inputs.Align. To be removed in v11.
*/
export enum Align {
LEFT = -1,
CENTRE = 0,
RIGHT = 1,
}
}
/** @deprecated Use Blockly.inputs.Align. To be removed in v11. */
/** @suppress {deprecated} */
export type Align = Input.Align;
/** @deprecated Use Blockly.inputs.Align. To be removed in v11. */
/** @suppress {deprecated} */
export const Align = Input.Align;

View File

@@ -12,83 +12,7 @@
// Former goog.module ID: Blockly.main
import * as Blockly from './blockly.js';
import * as Msg from './msg.js';
import * as colour from './utils/colour.js';
import * as deprecation from './utils/deprecation.js';
/*
* Aliased functions and properties that used to be on the Blockly namespace.
* Everything in this section is deprecated. Both external and internal code
* should avoid using these functions and use the designated replacements.
* Everything in this section will be removed in a future version of Blockly.
*/
// Add accessors for properties on Blockly that have now been deprecated.
// This will not work in uncompressed mode; it depends on Blockly being
// transpiled from a ES Module object to a plain object by Closure Compiler.
Object.defineProperties(Blockly, {
/**
* The richness of block colours, regardless of the hue.
* Must be in the range of 0 (inclusive) to 1 (exclusive).
*
* @name Blockly.HSV_SATURATION
* @type {number}
* @deprecated Use Blockly.utils.colour.getHsvSaturation() /
* .setHsvSaturation() instead. (July 2023)
* @suppress {checkTypes}
*/
HSV_SATURATION: {
get: function () {
deprecation.warn(
'Blockly.HSV_SATURATION',
'version 10',
'version 11',
'Blockly.utils.colour.getHsvSaturation()',
);
return colour.getHsvSaturation();
},
set: function (newValue) {
deprecation.warn(
'Blockly.HSV_SATURATION',
'version 10',
'version 11',
'Blockly.utils.colour.setHsvSaturation()',
);
colour.setHsvSaturation(newValue);
},
},
/**
* The intensity of block colours, regardless of the hue.
* Must be in the range of 0 (inclusive) to 1 (exclusive).
*
* @name Blockly.HSV_VALUE
* @type {number}
* @deprecated Use Blockly.utils.colour.getHsvValue() / .setHsvValue instead.
* (July 2023)
* @suppress {checkTypes}
*/
HSV_VALUE: {
get: function () {
deprecation.warn(
'Blockly.HSV_VALUE',
'version 10',
'version 11',
'Blockly.utils.colour.getHsvValue()',
);
return colour.getHsvValue();
},
set: function (newValue) {
deprecation.warn(
'Blockly.HSV_VALUE',
'version 10',
'version 11',
'Blockly.utils.colour.setHsvValue()',
);
colour.setHsvValue(newValue);
},
},
});
// If Blockly is compiled with ADVANCED_COMPILATION and/or loaded as a
// CJS or ES module there will not be a Blockly global variable

View File

@@ -12,7 +12,6 @@
// Former goog.module ID: Blockly.Options
import type {BlocklyOptions} from './blockly_options.js';
import * as deprecation from './utils/deprecation.js';
import * as registry from './registry.js';
import {Theme} from './theme.js';
import {Classic} from './theme/classic.js';
@@ -38,6 +37,7 @@ export class Options {
pathToMedia: string;
hasCategories: boolean;
moveOptions: MoveOptions;
/** @deprecated January 2019 */
hasScrollbars: boolean;
hasTrashcan: boolean;
maxTrashcanContents: number;
@@ -143,10 +143,6 @@ export class Options {
pathToMedia = options['media'].endsWith('/')
? options['media']
: options['media'] + '/';
} else if ('path' in options) {
// 'path' is a deprecated option which has been replaced by 'media'.
deprecation.warn('path', 'Nov 2014', 'Jul 2023', 'media');
pathToMedia = (options as any)['path'] + 'media/';
}
const rawOneBasedIndex = options['oneBasedIndex'];
const oneBasedIndex =
@@ -172,7 +168,6 @@ export class Options {
this.pathToMedia = pathToMedia;
this.hasCategories = hasCategories;
this.moveOptions = Options.parseMoveOptions_(options, hasCategories);
/** @deprecated January 2019 */
this.hasScrollbars = !!this.moveOptions.scrollbars;
this.hasTrashcan = hasTrashcan;
this.maxTrashcanContents = maxTrashcanContents;

View File

@@ -21,7 +21,6 @@ import {Types} from '../measurables/types.js';
import {isDynamicShape} from './constants.js';
import type {ConstantProvider, Notch, PuzzleTab} from './constants.js';
import type {RenderInfo} from './info.js';
import * as deprecation from '../../utils/deprecation.js';
/**
* An object that draws a block based on the given rendering information.
@@ -68,16 +67,6 @@ export class Drawer {
this.recordSizeOnBlock_();
}
/**
* Hide icons that were marked as hidden.
*
* @deprecated Manually hiding icons is no longer necessary. To be removed
* in v11.
*/
protected hideHiddenIcons_() {
deprecation.warn('hideHiddenIcons_', 'v10', 'v11');
}
/**
* Save sizing information back to the block
* Most of the rendering information can be thrown away at the end of the

View File

@@ -12,18 +12,12 @@ import type {ConstantProvider} from '../common/constants.js';
import {Measurable} from './base.js';
import {Types} from './types.js';
import {hasBubble} from '../../interfaces/i_has_bubble.js';
/**
* An object containing information about the space an icon takes up during
* rendering.
*/
export class Icon extends Measurable {
/**
* @deprecated Will be removed in v11. Create a subclass of the Icon
* measurable if this data is necessary for you.
*/
isVisible: boolean;
flipRtl = false;
/**
@@ -39,7 +33,6 @@ export class Icon extends Measurable {
) {
super(constants);
this.isVisible = hasBubble(icon) && icon.bubbleIsVisible();
this.type |= Types.ICON;
const size = icon.getSize();

View File

@@ -1,33 +0,0 @@
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
// Former goog.module ID: Blockly.minimalist.ConstantProvider
import {ConstantProvider as BaseConstantProvider} from '../common/constants.js';
import * as deprecation from '../../utils/deprecation.js';
/**
* An object that provides constants for rendering blocks in the minimalist
* renderer.
*
* @deprecated Use Blockly.blockRendering.ConstantProvider instead.
* To be removed in v11.
*/
export class ConstantProvider extends BaseConstantProvider {
/**
* @deprecated Use Blockly.blockRendering.ConstantProvider instead.
* To be removed in v11.
*/
constructor() {
super();
deprecation.warn(
'Blockly.minimalist.ConstantProvider',
'v10',
'v11',
'Blockly.blockRendering.ConstantProvider',
);
}
}

View File

@@ -1,39 +0,0 @@
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
// Former goog.module ID: Blockly.minimalist.Drawer
import type {BlockSvg} from '../../block_svg.js';
import {Drawer as BaseDrawer} from '../common/drawer.js';
import * as deprecation from '../../utils/deprecation.js';
import type {RenderInfo} from './info.js';
/**
* An object that draws a block based on the given rendering information.
*
* @deprecated Use Blockly.blockRendering.Drawer instead.
* To be removed in v11.
*/
export class Drawer extends BaseDrawer {
/**
* @param block The block to render.
* @param info An object containing all information needed to render this
* block.
*
* @deprecated Use Blockly.blockRendering.Drawer instead.
* To be removed in v11.
*/
constructor(block: BlockSvg, info: RenderInfo) {
super(block, info);
deprecation.warn(
'Blockly.minimalist.Drawer',
'v10',
'v11',
'Blockly.blockRendering.Drawer',
);
}
}

View File

@@ -1,53 +0,0 @@
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
// Former goog.module ID: Blockly.minimalist.RenderInfo
import type {BlockSvg} from '../../block_svg.js';
import {RenderInfo as BaseRenderInfo} from '../common/info.js';
import * as deprecation from '../../utils/deprecation.js';
import type {Renderer} from './renderer.js';
/**
* An object containing all sizing information needed to draw this block.
*
* This measure pass does not propagate changes to the block (although fields
* may choose to rerender when getSize() is called). However, calling it
* repeatedly may be expensive.
*
* @deprecated Use Blockly.blockRendering.RenderInfo instead. To be removed
* in v11.
*/
export class RenderInfo extends BaseRenderInfo {
// Exclamation is fine b/c this is assigned by the super constructor.
protected override renderer_!: Renderer;
/**
* @param renderer The renderer in use.
* @param block The block to measure.
* @deprecated Use Blockly.blockRendering.RenderInfo instead. To be removed
* in v11.
*/
constructor(renderer: Renderer, block: BlockSvg) {
super(renderer, block);
deprecation.warn(
'Blockly.minimalist.RenderInfo',
'v10',
'v11',
'Blockly.blockRendering.RenderInfo',
);
}
/**
* Get the block renderer in use.
*
* @returns The block renderer in use.
*/
override getRenderer(): Renderer {
return this.renderer_;
}
}

View File

@@ -1,16 +0,0 @@
/** @file Re-exports of Blockly.minimalist.* modules. */
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
// Former goog.module ID: Blockly.minimalist
import {ConstantProvider} from './constants.js';
import {Drawer} from './drawer.js';
import {RenderInfo} from './info.js';
import {Renderer} from './renderer.js';
export {ConstantProvider, Drawer, Renderer, RenderInfo};

View File

@@ -1,76 +0,0 @@
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
// Former goog.module ID: Blockly.minimalist.Renderer
import type {BlockSvg} from '../../block_svg.js';
import * as blockRendering from '../common/block_rendering.js';
import type {RenderInfo as BaseRenderInfo} from '../common/info.js';
import {Renderer as BaseRenderer} from '../common/renderer.js';
import * as deprecation from '../../utils/deprecation.js';
import {ConstantProvider} from './constants.js';
import {Drawer} from './drawer.js';
import {RenderInfo} from './info.js';
/**
* The minimalist renderer.
*
* @deprecated Use Blockly.blockRendering.Renderer instead. To be removed
* in v11.
*/
export class Renderer extends BaseRenderer {
/**
* @param name The renderer name.
* @deprecated Use Blockly.blockRendering.Renderer instead. To be removed
* in v11.
*/
constructor(name: string) {
super(name);
deprecation.warn(
'Blockly.minimalist.Renderer',
'v10',
'v11',
'Blockly.blockRendering.Renderer',
);
}
/**
* Create a new instance of the renderer's constant provider.
*
* @returns The constant provider.
*/
protected override makeConstants_(): ConstantProvider {
return new ConstantProvider();
}
/**
* Create a new instance of the renderer's render info object.
*
* @param block The block to measure.
* @returns The render info object.
*/
protected override makeRenderInfo_(block: BlockSvg): RenderInfo {
return new RenderInfo(this, block);
}
/**
* Create a new instance of the renderer's drawer.
*
* @param block The block to render.
* @param info An object containing all information needed to render this
* block.
* @returns The drawer.
*/
protected override makeDrawer_(
block: BlockSvg,
info: BaseRenderInfo,
): Drawer {
return new Drawer(block, info as RenderInfo);
}
}
blockRendering.register('minimalist', Renderer);

View File

@@ -6,7 +6,6 @@
// Former goog.module ID: Blockly.utils.dom
import * as deprecation from './deprecation.js';
import type {Svg} from './svg.js';
/**
@@ -154,24 +153,6 @@ export function insertAfter(newNode: Element, refNode: Element) {
}
}
/**
* Whether a node contains another node.
*
* @param parent The node that should contain the other node.
* @param descendant The node to test presence of.
* @returns Whether the parent node contains the descendant node.
* @deprecated Use native 'contains' DOM method.
*/
export function containsNode(parent: Node, descendant: Node): boolean {
deprecation.warn(
'Blockly.utils.dom.containsNode',
'version 10',
'version 11',
'Use native "contains" DOM method',
);
return parent.contains(descendant);
}
/**
* Sets the CSS transform property on an element. This function sets the
* non-vendor-prefixed and vendor-prefixed versions for backwards compatibility

View File

@@ -6,27 +6,6 @@
// Former goog.module ID: Blockly.utils.string
import * as deprecation from './deprecation.js';
/**
* Fast prefix-checker.
* Copied from Closure's goog.string.startsWith.
*
* @param str The string to check.
* @param prefix A string to look for at the start of `str`.
* @returns True if `str` begins with `prefix`.
* @deprecated Use built-in **string.startsWith** instead.
*/
export function startsWith(str: string, prefix: string): boolean {
deprecation.warn(
'Blockly.utils.string.startsWith()',
'April 2022',
'April 2023',
'Use built-in string.startsWith',
);
return str.startsWith(prefix);
}
/**
* Given an array of strings, return the length of the shortest one.
*

View File

@@ -24,7 +24,6 @@ import type {BlocklyOptions} from './blockly_options.js';
import * as browserEvents from './browser_events.js';
import * as common from './common.js';
import {ComponentManager} from './component_manager.js';
import {config} from './config.js';
import {ConnectionDB} from './connection_db.js';
import * as ContextMenu from './contextmenu.js';
import {ContextMenuRegistry} from './contextmenu_registry.js';
@@ -35,7 +34,6 @@ import {Gesture} from './gesture.js';
import {Grid} from './grid.js';
import type {IASTNodeLocationSvg} from './interfaces/i_ast_node_location_svg.js';
import type {IBoundedElement} from './interfaces/i_bounded_element.js';
import type {ICopyData, ICopyable} from './interfaces/i_copyable.js';
import type {IDragTarget} from './interfaces/i_drag_target.js';
import type {IFlyout} from './interfaces/i_flyout.js';
import type {IMetricsManager} from './interfaces/i_metrics_manager.js';
@@ -49,7 +47,6 @@ import * as registry from './registry.js';
import * as blockRendering from './renderers/common/block_rendering.js';
import type {Renderer} from './renderers/common/renderer.js';
import type {ScrollbarPair} from './scrollbar_pair.js';
import * as blocks from './serialization/blocks.js';
import type {Theme} from './theme.js';
import {Classic} from './theme/classic.js';
import {ThemeManager} from './theme_manager.js';
@@ -73,11 +70,9 @@ import {Workspace} from './workspace.js';
import {WorkspaceAudio} from './workspace_audio.js';
import {WorkspaceComment} from './workspace_comment.js';
import {WorkspaceCommentSvg} from './workspace_comment_svg.js';
import * as Xml from './xml.js';
import {ZoomControls} from './zoom_controls.js';
import {ContextMenuOption} from './contextmenu_registry.js';
import * as renderManagement from './render_management.js';
import * as deprecation from './utils/deprecation.js';
import {LayerManager} from './layer_manager.js';
/** Margin around the top/bottom/left/right after a zoomToFit call. */
@@ -1313,183 +1308,6 @@ export class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg {
}
}
/**
* Pastes the provided block or workspace comment onto the workspace.
* Does not check whether there is remaining capacity for the object, that
* should be done before calling this method.
*
* @param state The representation of the thing to paste.
* @returns The pasted thing, or null if the paste was not successful.
* @deprecated v10. Use `Blockly.clipboard.paste` instead. To be removed in
* v11.
*/
paste(
state: AnyDuringMigration | Element | DocumentFragment,
): ICopyable<ICopyData> | null {
deprecation.warn(
'Blockly.WorkspaceSvg.prototype.paste',
'v10',
'v11',
'Blockly.clipboard.paste',
);
if (!this.rendered || (!state['type'] && !state['tagName'])) {
return null;
}
if (this.currentGesture_) {
// Dragging while pasting? No.
this.currentGesture_.cancel();
}
const existingGroup = eventUtils.getGroup();
if (!existingGroup) {
eventUtils.setGroup(true);
}
let pastedThing;
try {
// Checks if this is JSON. JSON has a type property, while elements don't.
if (state['type']) {
pastedThing = this.pasteBlock_(null, state as blocks.State);
} else {
const xmlBlock = state as Element;
if (xmlBlock.tagName.toLowerCase() === 'comment') {
pastedThing = this.pasteWorkspaceComment_(xmlBlock);
} else {
pastedThing = this.pasteBlock_(xmlBlock, null);
}
}
} finally {
eventUtils.setGroup(existingGroup);
}
return pastedThing;
}
/**
* Paste the provided block onto the workspace.
*
* @param xmlBlock XML block element.
* @param jsonBlock JSON block representation.
* @returns The pasted block.
*/
private pasteBlock_(
xmlBlock: Element | null,
jsonBlock: blocks.State | null,
): BlockSvg {
eventUtils.disable();
let block: BlockSvg;
try {
let blockX = 0;
let blockY = 0;
if (xmlBlock) {
block = Xml.domToBlockInternal(xmlBlock, this) as BlockSvg;
blockX = parseInt(xmlBlock.getAttribute('x') ?? '0');
if (this.RTL) {
blockX = -blockX;
}
blockY = parseInt(xmlBlock.getAttribute('y') ?? '0');
} else if (jsonBlock) {
block = blocks.append(jsonBlock, this) as BlockSvg;
blockX = jsonBlock['x'] || 10;
if (this.RTL) {
blockX = this.getWidth() - blockX;
}
blockY = jsonBlock['y'] || 10;
}
// Move the duplicate to original position.
if (!isNaN(blockX) && !isNaN(blockY)) {
// Offset block until not clobbering another block and not in connection
// distance with neighbouring blocks.
let collide;
do {
collide = false;
const allBlocks = this.getAllBlocks(false);
for (let i = 0, otherBlock; (otherBlock = allBlocks[i]); i++) {
const otherXY = otherBlock.getRelativeToSurfaceXY();
if (
Math.abs(blockX - otherXY.x) <= 1 &&
Math.abs(blockY - otherXY.y) <= 1
) {
collide = true;
break;
}
}
if (!collide) {
// Check for blocks in snap range to any of its connections.
const connections = block!.getConnections_(false);
for (let i = 0, connection; (connection = connections[i]); i++) {
const neighbour = connection.closest(
config.snapRadius,
// This code doesn't work because it's passing absolute coords
// instead of relative coords. But we're deprecating the `paste`
// function anyway so we're not going to fix it.
new Coordinate(blockX, blockY),
);
if (neighbour.connection) {
collide = true;
break;
}
}
}
if (collide) {
if (this.RTL) {
blockX -= config.snapRadius;
} else {
blockX += config.snapRadius;
}
blockY += config.snapRadius * 2;
}
} while (collide);
// No 'reason' provided since events are disabled.
block!.moveTo(new Coordinate(blockX, blockY));
}
} finally {
eventUtils.enable();
}
if (eventUtils.isEnabled() && !block!.isShadow()) {
eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(block!));
}
block!.select();
return block!;
}
/**
* Paste the provided comment onto the workspace.
*
* @param xmlComment XML workspace comment element.
* @returns The pasted workspace comment.
*/
private pasteWorkspaceComment_(xmlComment: Element): WorkspaceCommentSvg {
eventUtils.disable();
let comment: WorkspaceCommentSvg;
try {
comment = WorkspaceCommentSvg.fromXmlRendered(xmlComment, this);
// Move the duplicate to original position.
let commentX = parseInt(xmlComment.getAttribute('x') ?? '0');
let commentY = parseInt(xmlComment.getAttribute('y') ?? '0');
if (!isNaN(commentX) && !isNaN(commentY)) {
if (this.RTL) {
commentX = -commentX;
}
// Offset workspace comment.
// TODO (#1719): Properly offset comment such that it's not interfering
// with any blocks.
commentX += 50;
commentY += 50;
// This code doesn't work because it's passing absolute coords
// instead of relative coords. But we're deprecating the `paste`
// function anyway so we're not going to fix it.
comment.moveBy(commentX, commentY);
}
} finally {
eventUtils.enable();
}
if (eventUtils.isEnabled()) {
WorkspaceComment.fireCreateEvent(comment);
}
comment.select();
return comment;
}
/**
* Refresh the toolbox unless there's a drag in progress.
*

View File

@@ -208,6 +208,8 @@ const JSCOMP_ERROR = [
'conformanceViolations',
'const',
'constantProperty',
'deprecated',
'deprecatedAnnotations',
'duplicateMessage',
'es5Strict',
'externsValidation',
@@ -254,8 +256,6 @@ const JSCOMP_ERROR = [
* it's generally sufficient to remove them from JSCOMP_ERROR.
*/
const JSCOMP_WARNING = [
'deprecated',
'deprecatedAnnotations',
];
/**