diff --git a/package.json b/package.json index 6b32d44f06fddb1794c7cc6897e0ed2c1f68afde..f83f826fe736b0b758daa025e018a9fda572dfd2 100644 --- a/package.json +++ b/package.json @@ -105,12 +105,12 @@ "rimraf": "^2.6.1", "scratch-audio": "0.1.0-prerelease.20190114210212", "scratch-blocks": "0.1.0-prerelease.1549643185", - "scratch-l10n": "3.1.20190206143031", + "scratch-l10n": "3.1.20190207224638", "scratch-paint": "0.2.0-prerelease.20190114205252", - "scratch-render": "0.1.0-prerelease.20190128154859", + "scratch-render": "0.1.0-prerelease.20190208165820", "scratch-storage": "1.2.2", "scratch-svg-renderer": "0.2.0-prerelease.20190125192231", - "scratch-vm": "0.2.0-prerelease.20190207191220", + "scratch-vm": "0.2.0-prerelease.20190207224121", "selenium-webdriver": "3.6.0", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", diff --git a/src/components/loader/loader.jsx b/src/components/loader/loader.jsx index 6f4b9658a9ab90a2617b3b3f140010781a2c1ba9..c51621fc41ad8d52596284ace87bff81be1af8e2 100644 --- a/src/components/loader/loader.jsx +++ b/src/components/loader/loader.jsx @@ -120,15 +120,13 @@ class LoaderComponent extends React.Component { constructor (props) { super(props); this.state = { - messageNumber: 0 + messageNumber: this.chooseRandomMessage() }; } componentDidMount () { - this.chooseRandomMessage(); - // Start an interval to choose a new message every 5 seconds this.intervalId = setInterval(() => { - this.chooseRandomMessage(); + this.setState({messageNumber: this.chooseRandomMessage()}); }, 5000); } componentWillUnmount () { @@ -145,7 +143,7 @@ class LoaderComponent extends React.Component { break; } } - this.setState({messageNumber}); + return messageNumber; } render () { return ( diff --git a/src/lib/blocks.js b/src/lib/blocks.js index eadf6d6fff6ec22e75f019178aef53e262bf4b9a..9ca3c6d7ed7b3a33cb83d65992f56f7e9f1cecfe 100644 --- a/src/lib/blocks.js +++ b/src/lib/blocks.js @@ -245,8 +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(''); + 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 @@ -265,6 +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); + sort(spriteVariableOptions); } const spriteVariableMenuItems = spriteVariableOptions.map(variable => [variable, variable]); return spriteOptions.concat(spriteVariableMenuItems); diff --git a/src/lib/default-project/index.js b/src/lib/default-project/index.js index df1154b6e8a7b34534c5370790164edcb375a408..92f01c908c1b3dfd05a71636fc71cd0eddfb3181 100644 --- a/src/lib/default-project/index.js +++ b/src/lib/default-project/index.js @@ -1,4 +1,3 @@ -import {TextEncoder} from 'text-encoding'; import projectData from './project-data'; /* eslint-disable import/no-unresolved */ @@ -9,8 +8,16 @@ import costume1 from '!raw-loader!./09dc888b0b7df19f70d81588ae73420e.svg'; import costume2 from '!raw-loader!./3696356a03a8d938318876a593572843.svg'; /* eslint-enable import/no-unresolved */ -const encoder = new TextEncoder(); const defaultProject = translator => { + let _TextEncoder; + if (typeof TextEncoder === 'undefined') { + _TextEncoder = require('text-encoding').TextEncoder; + } else { + /* global TextEncoder */ + _TextEncoder = TextEncoder; + } + const encoder = new _TextEncoder(); + const projectJson = projectData(translator); return [{ id: 0,