From 8806f95570025d571f06dabd35436d8c8004c7eb Mon Sep 17 00:00:00 2001 From: Aaron Dodson Date: Wed, 14 Jan 2026 09:32:06 -0800 Subject: [PATCH 1/2] fix: Remove unsafe cast in `ContinuousFlyout` --- .../src/ContinuousFlyout.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/continuous-toolbox/src/ContinuousFlyout.ts b/plugins/continuous-toolbox/src/ContinuousFlyout.ts index faa84cb7ca..569990a4ce 100644 --- a/plugins/continuous-toolbox/src/ContinuousFlyout.ts +++ b/plugins/continuous-toolbox/src/ContinuousFlyout.ts @@ -72,8 +72,17 @@ export class ContinuousFlyout extends Blockly.VerticalFlyout { * * @returns Toolbox that owns this flyout. */ - private getParentToolbox(): ContinuousToolbox { - return this.targetWorkspace.getToolbox() as ContinuousToolbox; + private getParentToolbox(): ContinuousToolbox | null { + const toolbox = this.targetWorkspace.getToolbox(); + if (!toolbox || toolbox instanceof ContinuousToolbox) return toolbox; + + console.log( + 'Expected a `ContinuousToolbox` instance but did not find one. ' + + 'Make sure `registerContinuousToolbox()` has been called and the ' + + 'continuous toolbox has been injected.' + ); + + return null; } /** @@ -110,7 +119,7 @@ export class ContinuousFlyout extends Blockly.VerticalFlyout { // Note that `FlyoutButton` represents both buttons and labels. element instanceof Blockly.FlyoutButton && element.isLabel() && - this.getParentToolbox().getCategoryByName(element.getButtonText()) + this.getParentToolbox()?.getCategoryByName(element.getButtonText()) ); } @@ -146,7 +155,7 @@ export class ContinuousFlyout extends Blockly.VerticalFlyout { ...this.scrollPositions.entries(), ].reverse()) { if (scaledPosition >= position) { - this.getParentToolbox().selectCategoryByName(name); + this.getParentToolbox()?.selectCategoryByName(name); return; } } @@ -271,7 +280,7 @@ export class ContinuousFlyout extends Blockly.VerticalFlyout { super.show(flyoutDef); this.recordScrollPositions(); this.getWorkspace().resizeContents(); - if (!this.getParentToolbox().getSelectedItem()) { + if (!this.getParentToolbox()?.getSelectedItem()) { this.selectCategoryByScrollPosition(0); } this.getRecyclableInflater().emptyRecycledBlocks(); From c40de13bf69b71b177f77168d618c4942fcf2b9b Mon Sep 17 00:00:00 2001 From: Aaron Dodson Date: Wed, 14 Jan 2026 10:56:33 -0800 Subject: [PATCH 2/2] fix: Upgrade console output to a warning --- plugins/continuous-toolbox/src/ContinuousFlyout.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/continuous-toolbox/src/ContinuousFlyout.ts b/plugins/continuous-toolbox/src/ContinuousFlyout.ts index 569990a4ce..ac638c428e 100644 --- a/plugins/continuous-toolbox/src/ContinuousFlyout.ts +++ b/plugins/continuous-toolbox/src/ContinuousFlyout.ts @@ -76,10 +76,10 @@ export class ContinuousFlyout extends Blockly.VerticalFlyout { const toolbox = this.targetWorkspace.getToolbox(); if (!toolbox || toolbox instanceof ContinuousToolbox) return toolbox; - console.log( + console.warn( 'Expected a `ContinuousToolbox` instance but did not find one. ' + - 'Make sure `registerContinuousToolbox()` has been called and the ' + - 'continuous toolbox has been injected.' + 'Make sure `registerContinuousToolbox()` has been called and the ' + + 'continuous toolbox has been injected.', ); return null;