diff --git a/src/blocks/vertical_extensions.ts b/src/blocks/vertical_extensions.ts index cfda376d16..fac97e0fe6 100644 --- a/src/blocks/vertical_extensions.ts +++ b/src/blocks/vertical_extensions.ts @@ -134,6 +134,7 @@ const OUTPUT_BOOLEAN = function (this: Blockly.Block) { * flyout to toggle display of their current value in a chip on the stage. */ const MONITOR_BLOCK = function (this: Blockly.BlockSvg) { + // @ts-ignore this.addIcon(new FlyoutCheckboxIcon(this)); (this as any).checkboxInFlyout = true; }; diff --git a/src/checkbox_bubble.ts b/src/checkbox_bubble.ts index 5ee410011d..7bfa9a9a43 100644 --- a/src/checkbox_bubble.ts +++ b/src/checkbox_bubble.ts @@ -9,6 +9,7 @@ import * as Blockly from "blockly/core"; /** * A checkbox shown next to reporter blocks in the flyout. */ +// @ts-ignore export class CheckboxBubble implements Blockly.IBubble, Blockly.IRenderedElement { diff --git a/src/colours.ts b/src/colours.ts index 00c95d31df..48c58daf89 100644 --- a/src/colours.ts +++ b/src/colours.ts @@ -20,6 +20,62 @@ import * as Blockly from "blockly/core"; const Colours = { + /* PBEGIN RG ADDITIONS */ + "motion": { + "primary": "#4C97FF", + "secondary": "#4280D7", + "tertiary": "#3373CC", + "quaternary": "#3373CC" + }, + "looks": { + "primary": "#9966FF", + "secondary": "#855CD6", + "tertiary": "#774DCB", + "quaternary": "#774DCB" + }, + "sounds": { + "primary": "#CF63CF", + "secondary": "#C94FC9", + "tertiary": "#BD42BD", + "quaternary": "#BD42BD" + }, + "control": { + "primary": "#FFAB19", + "secondary": "#EC9C13", + "tertiary": "#CF8B17", + "quaternary": "#CF8B17" + }, + "event": { + "primary": "#FFBF00", + "secondary": "#E6AC00", + "tertiary": "#CC9900", + "quaternary": "#CC9900" + }, + "sensing": { + "primary": "#5CB1D6", + "secondary": "#47A8D1", + "tertiary": "#2E8EB8", + "quaternary": "#2E8EB8" + }, + "pen": { + "primary": "#0fBD8C", + "secondary": "#0DA57A", + "tertiary": "#0B8E69", + "quaternary": "#0B8E69" + }, + "operators": { + "primary": "#59C059", + "secondary": "#46B946", + "tertiary": "#389438", + "quaternary": "#389438" + }, + "data": { + "primary": "#FF8C1A", + "secondary": "#FF8000", + "tertiary": "#DB6E00", + "quaternary": "#DB6E00" + }, + /** END PRG ADDITION */ // SVG colours: these must be specified in #RRGGBB style // To add an opacity, this must be specified as a separate property (for SVG fill-opacity) text: "#FFFFFF", diff --git a/src/fields/field_colour_slider.ts b/src/fields/field_colour_slider.ts index 4b4966e5ec..1d770bc233 100644 --- a/src/fields/field_colour_slider.ts +++ b/src/fields/field_colour_slider.ts @@ -308,6 +308,7 @@ export class FieldColourSlider extends FieldColour { Blockly.DropDownDiv.setColour("#ffffff", "#dddddd"); Blockly.DropDownDiv.showPositionedByBlock( + // @ts-ignore this, this.getSourceBlock() as Blockly.BlockSvg ); @@ -395,5 +396,6 @@ export class FieldColourSlider extends FieldColour { * Register the field and any dependencies. */ export function registerFieldColourSlider() { + // @ts-ignore Blockly.fieldRegistry.register("field_colour_slider", FieldColourSlider); } diff --git a/src/flyout_checkbox_icon.ts b/src/flyout_checkbox_icon.ts index 62c54f1da6..e219f6f043 100644 --- a/src/flyout_checkbox_icon.ts +++ b/src/flyout_checkbox_icon.ts @@ -24,6 +24,7 @@ export class FlyoutCheckboxIcon } } + // @ts-ignore getType(): Blockly.icons.IconType { return this.type; } diff --git a/src/index.ts b/src/index.ts index b57312ec98..88e0717d73 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +/* BEGIN RG ADDITION */ +export * from "./colours"; +/* END RG ADDITION */ + import * as Blockly from "blockly/core"; import "./blocks/colour"; import "./blocks/math"; @@ -20,7 +24,13 @@ import "./blocks/operators"; import "./blocks/procedures"; import "./blocks/sensing"; import "./blocks/sound"; -import * as scratchBlocksUtils from "./scratch_blocks_utils"; +/* BEGIN RG ADDITION */ +import * as scratchBlocksUtilsModule from "./scratch_blocks_utils"; +const scratchBlocksUtils = { + ...scratchBlocksUtilsModule, +} +export { scratchBlocksUtils }; +/* END RG ADDITION */ import * as ScratchVariables from "./variables"; import "./css"; import "./renderer/renderer"; @@ -70,7 +80,6 @@ export * from "./procedures"; export * from "../msg/scratch_msgs.js"; export * from "./constants"; export { glowStack }; -export { scratchBlocksUtils }; export { CheckableContinuousFlyout }; export { ScratchVariables }; export { contextMenuItems }; @@ -81,6 +90,11 @@ export { StatusButtonState, } from "./status_indicator_label"; +/* BEGIN RG ADDITION */ +import { StatusIndicatorLabel } from "./status_indicator_label"; +export { StatusIndicatorLabel as FlyoutExtensionCategoryHeader }; +/* END RG ADDITION */ + export function inject(container: Element, options: Blockly.BlocklyOptions) { registerScratchFieldAngle(); registerFieldColourSlider(); @@ -105,6 +119,7 @@ export function inject(container: Element, options: Blockly.BlocklyOptions) { metricsManager: ContinuousMetrics, }, }); + const workspace = Blockly.inject(container, options); buildGlowFilter(workspace); diff --git a/src/renderer/constants.ts b/src/renderer/constants.ts index a8fe060d0d..c517f8ca49 100644 --- a/src/renderer/constants.ts +++ b/src/renderer/constants.ts @@ -29,19 +29,19 @@ export class ConstantProvider extends Blockly.zelos.ConstantProvider { } else { const style = { colourPrimary: - "colourQuaternary" in colour + "colourQuaternary" in colour && Boolean(colour.colourQuaternary) ? `${colour.colourQuaternary}` : colour.colourTertiary, colourSecondary: - "colourQuaternary" in colour + "colourQuaternary" in colour && Boolean(colour.colourQuaternary) ? `${colour.colourQuaternary}` : colour.colourTertiary, colourTertiary: - "colourQuaternary" in colour + "colourQuaternary" in colour && Boolean(colour.colourQuaternary) ? `${colour.colourQuaternary}` : colour.colourTertiary, colourQuaternary: - "colourQuaternary" in colour + "colourQuaternary" in colour && Boolean(colour.colourQuaternary) ? `${colour.colourQuaternary}` : colour.colourTertiary, hat: "", diff --git a/src/scratch_block_paster.ts b/src/scratch_block_paster.ts index 2b07d64e26..ba535ed3a8 100644 --- a/src/scratch_block_paster.ts +++ b/src/scratch_block_paster.ts @@ -38,6 +38,7 @@ class ScratchBlockPaster extends Blockly.clipboard.BlockPaster { // been turned off) if needed. const commentIcon = block.getIcon(Blockly.icons.IconType.COMMENT); if (commentIcon) { + // @ts-ignore (commentIcon as ScratchCommentIcon).fireCreateEvent(); } diff --git a/src/scratch_comment_icon.ts b/src/scratch_comment_icon.ts index ac6b9c8e0b..4246b419a2 100644 --- a/src/scratch_comment_icon.ts +++ b/src/scratch_comment_icon.ts @@ -19,6 +19,7 @@ interface CommentState { /** * Custom comment icon that draws no icon indicator, used for block comments. */ +// @ts-ignore export class ScratchCommentIcon extends Blockly.icons.Icon implements Blockly.ISerializable, Blockly.IHasBubble diff --git a/src/status_indicator_label_flyout_inflater.ts b/src/status_indicator_label_flyout_inflater.ts index 6358cdbca1..adcdd56b24 100644 --- a/src/status_indicator_label_flyout_inflater.ts +++ b/src/status_indicator_label_flyout_inflater.ts @@ -20,6 +20,7 @@ class StatusIndicatorLabelFlyoutInflater extends Blockly.LabelFlyoutInflater { * label on. * @returns The newly created status indicator label. */ + // @ts-ignore load( state: Blockly.utils.toolbox.LabelInfo, flyout: Blockly.IFlyout