diff --git a/src/lib/blocks.js b/src/lib/blocks.js index b7ecc928a9b8e3d02430b95601b9683ad79b38a1..9ca3c6d7ed7b3a33cb83d65992f56f7e9f1cecfe 100644 --- a/src/lib/blocks.js +++ b/src/lib/blocks.js @@ -245,9 +245,15 @@ export default function (vm) { // The block was in the flyout so look up future block info there. lookupBlocks = vm.runtime.flyoutBlocks; } + const sort = function (options) { + options.sort((str1, str2) => str1.localeCompare(str2, [], { + sensitivity: 'base', + numeric: true + })); + }; // Get all the stage variables (no lists) so we can add them to menu when the stage is selected. const stageVariableOptions = vm.runtime.getTargetForStage().getAllVariableNamesInScopeByType(''); - stageVariableOptions.sort(ScratchBlocks.scratchBlocksUtils.compareStrings); + sort(stageVariableOptions); const stageVariableMenuItems = stageVariableOptions.map(variable => [variable, variable]); if (sensingOfBlock.inputs.OBJECT.shadow !== sensingOfBlock.inputs.OBJECT.block) { // There's a block dropped on top of the menu. It'd be nice to evaluate it and @@ -266,7 +272,7 @@ export default function (vm) { // The target should exist, but there are ways for it not to (e.g. #4203). if (target) { spriteVariableOptions = target.getAllVariableNamesInScopeByType('', true); - spriteVariableOptions.sort(ScratchBlocks.scratchBlocksUtils.compareStrings); + sort(spriteVariableOptions); } const spriteVariableMenuItems = spriteVariableOptions.map(variable => [variable, variable]); return spriteOptions.concat(spriteVariableMenuItems);