use Collator.compare in place of localeCompare

This commit is contained in:
Michael "Z" Goddard committed 2019-03-19 17:14:05 -04:00
1 parent 6d5183f99d
commit f5d1dd7e03
1 file changed
+12 -4
+12 -4
View File
@@ -246,10 +246,7 @@ export default function (vm) {
lookupBlocks = vm.runtime.flyoutBlocks;
}
const sort = function (options) {
options.sort((str1, str2) => str1.localeCompare(str2, [], {
sensitivity: 'base',
numeric: true
}));
options.sort(ScratchBlocks.scratchBlocksUtils.compareStrings);
};
// 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('');
@@ -323,5 +320,16 @@ export default function (vm) {
vm.runtime.emit('PLAY_NOTE', noteNum, extensionId);
};
// Use a collator's compare instead of localeCompare which internally
// creates a collator. Using this is a lot faster in browsers that create a
// collator for every localeCompare call.
const collator = new Intl.Collator([], {
sensitivity: 'base',
numeric: true
});
ScratchBlocks.scratchBlocksUtils.compareStrings = function (str1, str2) {
return collator.compare(str1, str2);
};
return ScratchBlocks;
}