Compare commits

..
Author SHA1 Message Date
chrisgarrity a1fa132280 Merge pull request #5793 from chrisgarrity/update-node-version
use node 10 for travis builds
2020-05-20 14:56:32 -04:00
Chris Garrity ad1af074fc use node 10 for travis builds
* chromedriver will no longer work on node 8
* paper.js has a problem with node 12
* node 10 is just right ;)
2020-05-20 14:48:39 -04:00
Chris Willis-Ford 952a584d74 Merge pull request #5434 from cwillisf/add-about-menu-button
Add about menu button
2020-05-20 11:15:51 -07:00
adroitwhiz 501caf7793 Merge pull request #5643 from adroitwhiz/fix-stage-costume-drag
Omit componentRef from DropAreaHOC's passed props
2020-05-19 23:54:21 -04:00
dependabot-preview[bot] cc22bfc636 Merge pull request #5779 from LLK/dependabot/npm_and_yarn/scratch-paint-0.2.0-prerelease.20200519001920 2020-05-19 02:46:16 +00:00
dependabot-preview[bot] ed945d392d Bump scratch-paint
Bumps [scratch-paint](https://github.com/LLK/scratch-paint) from 0.2.0-prerelease.20200516002830 to 0.2.0-prerelease.20200519001920.
- [Release notes](https://github.com/LLK/scratch-paint/releases)
- [Commits](https://github.com/LLK/scratch-paint/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-19 02:29:17 +00:00
dependabot-preview[bot] dee7462c57 Merge pull request #5692 from LLK/dependabot/npm_and_yarn/babel/preset-env-7.9.6 2020-05-17 05:57:45 +00:00
dependabot-preview[bot] 87b076c6a1 Bump @babel/preset-env from 7.6.3 to 7.9.6
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.6.3 to 7.9.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.6.3...v7.9.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-17 05:41:17 +00:00
dependabot-preview[bot] c966acd987 Merge pull request #5771 from LLK/dependabot/npm_and_yarn/autoprefixer-9.8.0 2020-05-17 05:38:30 +00:00
dependabot-preview[bot] 84d000a277 Bump autoprefixer from 9.6.4 to 9.8.0
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 9.6.4 to 9.8.0.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/9.6.4...9.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-17 05:22:39 +00:00
dependabot-preview[bot] fde5ecf24d Merge pull request #5764 from LLK/dependabot/npm_and_yarn/scratch-paint-0.2.0-prerelease.20200516002830 2020-05-16 00:50:06 +00:00
dependabot-preview[bot] 932542e30a Bump scratch-paint
Bumps [scratch-paint](https://github.com/LLK/scratch-paint) from 0.2.0-prerelease.20200515190220 to 0.2.0-prerelease.20200516002830.
- [Release notes](https://github.com/LLK/scratch-paint/releases)
- [Commits](https://github.com/LLK/scratch-paint/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-16 00:33:25 +00:00
Chris Willis-Ford 886e2ebb8f Merge pull request #5451 from cwillisf/telemetry-onShowPrivacyPolicy
add hook on telemetry dialog for displaying privacy policy
2020-05-15 16:15:01 -07:00
dependabot-preview[bot] d2f120da7e Merge pull request #5763 from LLK/dependabot/npm_and_yarn/scratch-paint-0.2.0-prerelease.20200515190220 2020-05-15 19:34:25 +00:00
dependabot-preview[bot] 45752c2660 Bump scratch-paint
Bumps [scratch-paint](https://github.com/LLK/scratch-paint) from 0.2.0-prerelease.20200514182959 to 0.2.0-prerelease.20200515190220.
- [Release notes](https://github.com/LLK/scratch-paint/releases)
- [Commits](https://github.com/LLK/scratch-paint/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 19:18:13 +00:00
DD Liu 2f7e9967ab Merge pull request #5759 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200514182959
Update scratch-paint to the latest version 🚀
2020-05-14 14:44:33 -04:00
greenkeeper[bot] fe7a943780 chore(package): update lockfile package-lock.json 2020-05-14 18:31:41 +00:00
greenkeeper[bot] 637a09d4e9 chore(package): update scratch-paint to version 0.2.0-prerelease.20200514182959 2020-05-14 18:31:36 +00:00
dependabot-preview[bot] cf52d1ee6c Merge pull request #5757 from LLK/dependabot/npm_and_yarn/handlebars-4.7.6 2020-05-14 13:31:28 +00:00
dependabot-preview[bot] 2eabf2aefd [Security] Bump handlebars from 4.4.3 to 4.7.6
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.4.3 to 4.7.6. **This update includes a security fix.**
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.4.3...v4.7.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 13:15:29 +00:00
dependabot-preview[bot] 832cf69e5d Merge pull request #5754 from LLK/dependabot/npm_and_yarn/eslint-plugin-react-7.20.0 2020-05-13 04:08:36 +00:00
dependabot-preview[bot] c039845b26 Bump eslint-plugin-react from 7.16.0 to 7.20.0
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.16.0 to 7.20.0.
- [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases)
- [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.16.0...v7.20.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-13 03:51:55 +00:00
dependabot-preview[bot] f6c586cec6 Merge pull request #5753 from LLK/dependabot/npm_and_yarn/scratch-l10n-3.9.20200512220101 2020-05-13 00:47:32 +00:00
dependabot-preview[bot] b36b300fc2 Bump scratch-l10n from 3.9.20200512112117 to 3.9.20200512220101
Bumps [scratch-l10n](https://github.com/LLK/scratch-l10n) from 3.9.20200512112117 to 3.9.20200512220101.
- [Release notes](https://github.com/LLK/scratch-l10n/releases)
- [Commits](https://github.com/LLK/scratch-l10n/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 22:05:37 +00:00
dependabot-preview[bot] 5c0a0c58e5 Merge pull request #5747 from LLK/dependabot/npm_and_yarn/scratch-render-0.1.0-prerelease.20200512203149 2020-05-12 21:52:01 +00:00
dependabot-preview[bot] a64f623c20 Bump scratch-render
Bumps [scratch-render](https://github.com/LLK/scratch-render) from 0.1.0-prerelease.20200511203322 to 0.1.0-prerelease.20200512203149.
- [Release notes](https://github.com/LLK/scratch-render/releases)
- [Commits](https://github.com/LLK/scratch-render/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 21:22:10 +00:00
dependabot-preview[bot] c688210751 Merge pull request #5749 from LLK/dependabot/npm_and_yarn/scratch-vm-0.2.0-prerelease.20200512204241 2020-05-12 21:19:26 +00:00
dependabot-preview[bot] c740407aea Merge pull request #5744 from LLK/dependabot/npm_and_yarn/scratch-paint-0.2.0-prerelease.20200512201624 2020-05-12 21:07:32 +00:00
dependabot-preview[bot] 05afad1f73 Bump scratch-vm
Bumps [scratch-vm](https://github.com/LLK/scratch-vm) from 0.2.0-prerelease.20200402182733 to 0.2.0-prerelease.20200512204241.
- [Release notes](https://github.com/LLK/scratch-vm/releases)
- [Commits](https://github.com/LLK/scratch-vm/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 20:48:21 +00:00
dependabot-preview[bot] c4676cc5a6 Bump scratch-paint
Bumps [scratch-paint](https://github.com/LLK/scratch-paint) from 0.2.0-prerelease.20200507195338 to 0.2.0-prerelease.20200512201624.
- [Release notes](https://github.com/LLK/scratch-paint/releases)
- [Commits](https://github.com/LLK/scratch-paint/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 20:42:03 +00:00
dependabot-preview[bot] f4c09b35e9 Merge pull request #5743 from LLK/dependabot/npm_and_yarn/scratch-blocks-0.1.0-prerelease.20200512201140 2020-05-12 20:39:19 +00:00
dependabot-preview[bot] 25136598e3 Bump scratch-blocks
Bumps [scratch-blocks](https://github.com/LLK/scratch-blocks) from 0.1.0-prerelease.20200507190920 to 0.1.0-prerelease.20200512201140.
- [Release notes](https://github.com/LLK/scratch-blocks/releases)
- [Commits](https://github.com/LLK/scratch-blocks/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 20:23:47 +00:00
dependabot-preview[bot] a7d141a83a Merge pull request #5739 from LLK/dependabot/npm_and_yarn/scratch-l10n-3.9.20200512112117 2020-05-12 13:40:11 +00:00
dependabot-preview[bot] 4366b08f94 Bump scratch-l10n from 3.8.20200505213509 to 3.9.20200512112117
Bumps [scratch-l10n](https://github.com/LLK/scratch-l10n) from 3.8.20200505213509 to 3.9.20200512112117.
- [Release notes](https://github.com/LLK/scratch-l10n/releases)
- [Commits](https://github.com/LLK/scratch-l10n/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 13:21:46 +00:00
Paul Kaplan dd43c53db8 Merge pull request #5164 from paulkaplan/moar-saving-telemetry
Emit projectDidSave for all types of saves, not just file exports
2020-05-12 08:12:37 -04:00
dependabot-preview[bot] 065e5b6d77 Merge pull request #5719 from LLK/dependabot/npm_and_yarn/scratch-blocks-0.1.0-prerelease.20200507190920 2020-05-12 00:17:55 +00:00
dependabot-preview[bot] 636286b427 Bump scratch-blocks
Bumps [scratch-blocks](https://github.com/LLK/scratch-blocks) from 0.1.0-prerelease.20200421135214 to 0.1.0-prerelease.20200507190920.
- [Release notes](https://github.com/LLK/scratch-blocks/releases)
- [Commits](https://github.com/LLK/scratch-blocks/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 21:42:34 +00:00
dependabot-preview[bot] bcbf4259a0 Merge pull request #5737 from LLK/dependabot/npm_and_yarn/scratch-render-0.1.0-prerelease.20200511203322 2020-05-11 21:39:52 +00:00
dependabot-preview[bot] b6f4de8796 Bump scratch-render
Bumps [scratch-render](https://github.com/LLK/scratch-render) from 0.1.0-prerelease.20200508204538 to 0.1.0-prerelease.20200511203322.
- [Release notes](https://github.com/LLK/scratch-render/releases)
- [Commits](https://github.com/LLK/scratch-render/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 21:13:31 +00:00
dependabot-preview[bot] ce7e4d085f Merge pull request #5733 from LLK/dependabot/npm_and_yarn/scratch-render-0.1.0-prerelease.20200508204538 2020-05-11 21:07:00 +00:00
adroitwhiz 5910c170f1 Merge pull request #5278 from adroitwhiz/fix-stage-white-line
Don't align-items: center in stage-overlay-content
2020-05-11 16:22:58 -04:00
dependabot-preview[bot] cfcba71f94 Merge pull request #5663 from LLK/dependabot/npm_and_yarn/webpack-4.43.0 2020-05-09 16:11:53 +00:00
dependabot-preview[bot] 3131ece71e Bump webpack from 4.41.0 to 4.43.0
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.0 to 4.43.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.0...v4.43.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-09 15:46:35 +00:00
dependabot-preview[bot] 93525be462 Merge pull request #5730 from LLK/dependabot/npm_and_yarn/webpack-dev-server-3.11.0 2020-05-09 15:44:01 +00:00
dependabot-preview[bot] 9ce52307d2 Bump scratch-render
Bumps [scratch-render](https://github.com/LLK/scratch-render) from 0.1.0-prerelease.20200507194753 to 0.1.0-prerelease.20200508204538.
- [Release notes](https://github.com/LLK/scratch-render/releases)
- [Commits](https://github.com/LLK/scratch-render/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-08 20:50:30 +00:00
Eric Rosenbaum 41f27bd860 Merge pull request #5731 from ericrosenbaum/BYIS-sprites
Add new people sprites
2020-05-08 15:50:43 -04:00
Benjamin Wheeler 6260f9c093 Merge pull request #5101 from LLK/file-download-safari
Allow some kind of downloading to work on iOS Safari
2020-05-08 15:01:56 -04:00
Eric Rosenbaum fbff6843f4 update sprite artwork 2020-05-08 14:07:59 -04:00
dependabot-preview[bot] 80662eb585 Bump webpack-dev-server from 3.8.2 to 3.11.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.8.2 to 3.11.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.8.2...v3.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-08 16:25:31 +00:00
DD Liu dd90ec866c Merge pull request #5722 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20200507194753
Update scratch-render to the latest version 🚀
2020-05-07 17:30:43 -04:00
DD Liu 893ab2c406 Merge branch 'develop' into greenkeeper/scratch-render-0.1.0-prerelease.20200507194753 2020-05-07 17:30:35 -04:00
DD Liu d25afb7c0e Merge pull request #5723 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200507195338
Update scratch-paint to the latest version 🚀
2020-05-07 17:29:11 -04:00
greenkeeper[bot] 86a05f55f3 chore(package): update lockfile package-lock.json 2020-05-07 19:56:06 +00:00
greenkeeper[bot] 27c352196d chore(package): update scratch-paint to version 0.2.0-prerelease.20200507195338 2020-05-07 19:56:02 +00:00
greenkeeper[bot] 8e9a17b4e7 chore(package): update lockfile package-lock.json 2020-05-07 19:54:25 +00:00
greenkeeper[bot] 3e2686cd67 chore(package): update scratch-render to version 0.1.0-prerelease.20200507194753 2020-05-07 19:54:21 +00:00
DD Liu a8595edf8f Merge pull request #5718 from LLK/greenkeeper/scratch-svg-renderer-0.2.0-prerelease.20200507183648
Update scratch-svg-renderer to the latest version 🚀
2020-05-07 15:46:05 -04:00
Eric Rosenbaum 1c2530ae09 add sprites and costumes 2020-05-07 15:16:40 -04:00
greenkeeper[bot] 527cc0b0fb chore(package): update lockfile package-lock.json 2020-05-07 19:14:09 +00:00
greenkeeper[bot] 78143a1b35 chore(package): update scratch-svg-renderer to version 0.2.0-prerelease.20200507183648 2020-05-07 19:14:05 +00:00
DD Liu 180192ae15 Merge pull request #5713 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200506211808
Update scratch-paint to the latest version 🚀
2020-05-06 18:55:51 -04:00
greenkeeper[bot] e74bba9257 chore(package): update lockfile package-lock.json 2020-05-06 21:44:39 +00:00
greenkeeper[bot] 55b3584799 chore(package): update scratch-paint to version 0.2.0-prerelease.20200506211808 2020-05-06 21:44:35 +00:00
DD Liu 773a2e8672 Merge pull request #5712 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20200506204308
Update scratch-render to the latest version 🚀
2020-05-06 17:11:24 -04:00
greenkeeper[bot] 083bb169d4 chore(package): update lockfile package-lock.json 2020-05-06 21:07:14 +00:00
greenkeeper[bot] eb180f6f03 chore(package): update scratch-render to version 0.1.0-prerelease.20200506204308 2020-05-06 21:07:10 +00:00
Karishma Chadha 98fff1e044 Merge pull request #5708 from LLK/greenkeeper/scratch-l10n-3.8.20200505213509
Update scratch-l10n to the latest version 🚀
2020-05-06 17:01:10 -04:00
Chris Willis-Ford 45de3567db Merge pull request #5709 from LLK/dependabot/npm_and_yarn/scratch-storage-1.3.3
Bump scratch-storage from 1.3.2 to 1.3.3
2020-05-06 12:11:07 -07:00
dependabot-preview[bot] 6320ae3a99 Bump scratch-storage from 1.3.2 to 1.3.3
Bumps [scratch-storage](https://github.com/LLK/scratch-storage) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/LLK/scratch-storage/releases)
- [Commits](https://github.com/LLK/scratch-storage/compare/v1.3.2...v1.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-06 18:53:25 +00:00
greenkeeper[bot] 24957f3de4 chore(package): update lockfile package-lock.json 2020-05-05 22:12:32 +00:00
greenkeeper[bot] 22bd7219d7 chore(package): update scratch-l10n to version 3.8.20200505213509 2020-05-05 22:12:28 +00:00
adroitwhiz aeb8238ecb Omit componentRef from DropAreaHOC's passed props 2020-05-05 17:50:16 -04:00
adroitwhiz bab0e4fd5c Merge pull request #5516 from adroitwhiz/clickblockscategory
Add clickBlocksCategory integration test helper function
2020-05-05 15:18:00 -04:00
DD Liu f425b27cf6 Merge pull request #5696 from fsih/updatePaint
Update paint
2020-04-30 12:00:51 -04:00
DD Liu 95ef21d3ad Update paint 2020-04-30 11:59:51 -04:00
DD Liu 9aba9ec3fb Merge pull request #5695 from fsih/updatePaint
Update paint
2020-04-29 18:52:56 -04:00
DD Liu 3e4cf00eca Update paint 2020-04-29 18:37:36 -04:00
DD Liu a8c5083aa3 Merge pull request #5684 from LLK/dependabot/npm_and_yarn/scratch-render-0.1.0-prerelease.20200427175234
Bump scratch-render from 0.1.0-prerelease.20200424190354 to 0.1.0-prerelease.20200427175234
2020-04-29 18:34:22 -04:00
DD Liu a1e72203c8 Merge pull request #5689 from LLK/dependabot/npm_and_yarn/scratch-l10n-3.8.20200428213506
Bump scratch-l10n from 3.8.20200421213407 to 3.8.20200428213506
2020-04-29 18:33:44 -04:00
dependabot-preview[bot] cc8f39e590 Bump scratch-l10n from 3.8.20200421213407 to 3.8.20200428213506
Bumps [scratch-l10n](https://github.com/LLK/scratch-l10n) from 3.8.20200421213407 to 3.8.20200428213506.
- [Release notes](https://github.com/LLK/scratch-l10n/releases)
- [Commits](https://github.com/LLK/scratch-l10n/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 21:39:44 +00:00
dependabot-preview[bot] 6f7962abd4 Bump scratch-render
Bumps [scratch-render](https://github.com/LLK/scratch-render) from 0.1.0-prerelease.20200424190354 to 0.1.0-prerelease.20200427175234.
- [Release notes](https://github.com/LLK/scratch-render/releases)
- [Commits](https://github.com/LLK/scratch-render/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 20:20:47 +00:00
DD Liu dcf92b2455 Merge pull request #5677 from LLK/dependabot/npm_and_yarn/scratch-render-0.1.0-prerelease.20200424190354
Bump scratch-render from 0.1.0-prerelease.20200422235043 to 0.1.0-prerelease.20200424190354
2020-04-24 22:20:02 -04:00
dependabot-preview[bot] 7a1db103ba Bump scratch-render
Bumps [scratch-render](https://github.com/LLK/scratch-render) from 0.1.0-prerelease.20200422235043 to 0.1.0-prerelease.20200424190354.
- [Release notes](https://github.com/LLK/scratch-render/releases)
- [Commits](https://github.com/LLK/scratch-render/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-24 19:08:47 +00:00
Benjamin Wheeler 394f2c8c16 Merge pull request #5669 from LLK/dependabot/npm_and_yarn/scratch-blocks-0.1.0-prerelease.20200421135214
Bump scratch-blocks from 0.1.0-prerelease.20200416142646 to 0.1.0-prerelease.20200421135214
2020-04-22 20:16:09 -04:00
dependabot-preview[bot] bbd95f4672 Bump scratch-blocks
Bumps [scratch-blocks](https://github.com/LLK/scratch-blocks) from 0.1.0-prerelease.20200416142646 to 0.1.0-prerelease.20200421135214.
- [Release notes](https://github.com/LLK/scratch-blocks/releases)
- [Commits](https://github.com/LLK/scratch-blocks/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-22 23:58:11 +00:00
DD Liu 5378c57537 Merge pull request #5671 from fsih/updateRender
Update render
2020-04-22 19:55:35 -04:00
DD Liu a93e9df129 Update render 2020-04-22 19:54:55 -04:00
Benjamin Wheeler 221978b24e Merge pull request #5668 from LLK/greenkeeper/scratch-l10n-3.8.20200421213407
Update scratch-l10n to the latest version 🚀
2020-04-22 18:42:02 -04:00
greenkeeper[bot] 333e95c898 chore(package): update lockfile package-lock.json 2020-04-22 03:50:41 +00:00
greenkeeper[bot] 953702e238 chore(package): update scratch-l10n to version 3.8.20200421213407 2020-04-22 03:50:36 +00:00
picklesrus fb3b1ced7c Merge pull request #5655 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.20200416142646
Update scratch-blocks to the latest version 🚀
2020-04-16 13:16:04 -04:00
greenkeeper[bot] 17ae4ea197 chore(package): update lockfile package-lock.json 2020-04-16 14:31:24 +00:00
greenkeeper[bot] 16d15bd4f1 chore(package): update scratch-blocks to version 0.1.0-prerelease.20200416142646 2020-04-16 14:31:20 +00:00
picklesrus a6b5c237cc Merge pull request #5645 from LLK/greenkeeper/scratch-l10n-3.8.20200414213430
Update scratch-l10n to the latest version 🚀
2020-04-15 15:54:08 -04:00
greenkeeper[bot] 10d014a7ff chore(package): update lockfile package-lock.json 2020-04-14 21:38:03 +00:00
greenkeeper[bot] e0019c93fc chore(package): update scratch-l10n to version 3.8.20200414213430 2020-04-14 21:37:58 +00:00
adroitwhiz 00e8b3cdb2 Add clickBlocksCategory helper 2020-04-14 10:02:31 -04:00
DD Liu f7853a9354 Merge pull request #5571 from fsih/updateRender
update render to revert pen change
2020-04-09 13:49:58 -04:00
DD Liu d972629c29 update render to revert pen change 2020-04-09 13:49:16 -04:00
chrisgarrity 9d27a1af23 Merge pull request #5570 from chrisgarrity/update-blocks-0408
Update scratch-blocks to the latest version
2020-04-08 15:32:49 -04:00
Chris Garrity 98ebd453d7 Update scratch-blocks to the latest version
scratch-blocks 0.1.0-prerelease.1586372076 updated translations
2020-04-08 15:30:38 -04:00
chrisgarrity 63b5a9a059 Merge pull request #5569 from LLK/greenkeeper/scratch-l10n-3.8.20200407213553
Greenkeeper/scratch l10n 3.8.20200407213553
2020-04-08 07:36:11 -04:00
greenkeeper[bot] 8ea62f5ea5 chore(package): update lockfile package-lock.json 2020-04-08 03:24:55 +00:00
greenkeeper[bot] bc2152641b chore(package): update scratch-l10n to version 3.8.20200407213553
Closes #5568
2020-04-08 03:24:50 +00:00
DD Liu 9883e0efb6 Merge pull request #5560 from fsih/updateStuff
Update render and vm with contributor prs
2020-04-02 20:02:38 -04:00
DD Liu 5a614a1041 Update render and vm with contributor prs 2020-04-02 16:24:36 -04:00
chrisgarrity ebf369e293 Merge pull request #5541 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1585138708
Greenkeeper/scratch blocks 0.1.0 prerelease.1585138708
2020-03-25 14:48:41 -04:00
chrisgarrity b6a63a55ad Merge branch 'develop' into greenkeeper/scratch-blocks-0.1.0-prerelease.1585138708 2020-03-25 13:06:53 -04:00
chrisgarrity 78fe4c921c Merge pull request #5540 from LLK/greenkeeper/scratch-l10n-3.8.20200325112845
Greenkeeper/scratch l10n 3.8.20200325112845
2020-03-25 12:51:38 -04:00
greenkeeper[bot] 953a42d35e chore(package): update lockfile package-lock.json 2020-03-25 12:30:49 +00:00
greenkeeper[bot] 584bfeee5e chore(package): update scratch-blocks to version 0.1.0-prerelease.1585138708
Closes #5535
2020-03-25 12:30:45 +00:00
greenkeeper[bot] f7d5c1898e chore(package): update lockfile package-lock.json 2020-03-25 11:38:32 +00:00
greenkeeper[bot] 77c5bc7254 chore(package): update scratch-l10n to version 3.8.20200325112845
Closes #5538
2020-03-25 11:38:27 +00:00
DD Liu a150efc743 Merge pull request #5526 from fsih/updateVm
Update vm
2020-03-19 14:19:18 -04:00
DD Liu 8b53d1ed57 Update vm 2020-03-19 14:12:58 -04:00
DD Liu 8e4c76f74f Merge pull request #5520 from LLK/greenkeeper/scratch-l10n-3.7.20200317213230
Update scratch-l10n to the latest version 🚀
2020-03-18 13:05:24 -04:00
DD Liu 9053277889 Merge branch 'develop' into greenkeeper/scratch-l10n-3.7.20200317213230 2020-03-18 13:05:16 -04:00
DD Liu 6baf5c0e48 Merge pull request #5518 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1584453125
Update scratch-blocks to the latest version 🚀
2020-03-18 13:04:16 -04:00
DD Liu 98c4e4df65 Merge pull request #5521 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20200318165714
Update scratch-vm to the latest version 🚀
2020-03-18 13:02:31 -04:00
greenkeeper[bot] 08160e588a chore(package): update lockfile package-lock.json 2020-03-18 17:00:00 +00:00
greenkeeper[bot] fc998b9779 chore(package): update scratch-vm to version 0.2.0-prerelease.20200318165714 2020-03-18 16:59:56 +00:00
Benjamin Wheeler d0eb28f11c Merge pull request #5362 from benjiwheeler/project-state-tests
refactor onLoadedProject() creator to handle success==false consistently; add tests of project state action creators
2020-03-18 12:04:53 -04:00
greenkeeper[bot] 4f7fd39f5e chore(package): update lockfile package-lock.json 2020-03-17 21:34:44 +00:00
greenkeeper[bot] 3aed7007e8 chore(package): update scratch-l10n to version 3.7.20200317213230 2020-03-17 21:34:39 +00:00
DD Liu 731f3bbf5d Merge pull request #5519 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20200317155559
Update scratch-vm to the latest version 🚀
2020-03-17 16:08:27 -04:00
greenkeeper[bot] 715e46fe1c chore(package): update lockfile package-lock.json 2020-03-17 16:18:25 +00:00
greenkeeper[bot] cc68eef196 chore(package): update scratch-vm to version 0.2.0-prerelease.20200317155559 2020-03-17 16:18:22 +00:00
greenkeeper[bot] 550e236f48 chore(package): update lockfile package-lock.json 2020-03-17 14:10:47 +00:00
greenkeeper[bot] 40415e2359 chore(package): update scratch-blocks to version 0.1.0-prerelease.1584453125 2020-03-17 14:10:43 +00:00
picklesrus d20b68c939 Merge pull request #5504 from picklesrus/update-scratch-blocks
Updates scratch-blocks manually
2020-03-11 15:50:55 -04:00
picklesrus 6af3fda54a Updates scratch-blocks manually because https://github.com/LLK/scratch-gui/pull/5501 had package-lock conflicts with the l10n PR 2020-03-11 15:46:32 -04:00
picklesrus 43191504ff Merge pull request #5503 from LLK/greenkeeper/scratch-l10n-3.7.20200310213125
Update scratch-l10n to the latest version 🚀
2020-03-11 15:31:09 -04:00
greenkeeper[bot] 3008feb1de chore(package): update lockfile package-lock.json 2020-03-10 21:33:39 +00:00
greenkeeper[bot] 78c2aea407 chore(package): update scratch-l10n to version 3.7.20200310213125 2020-03-10 21:33:36 +00:00
DD Liu b41b1c11bb Merge pull request #5502 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20200310202129
Update scratch-vm to the latest version 🚀
2020-03-10 16:59:00 -04:00
greenkeeper[bot] 8e82c2d1e3 chore(package): update lockfile package-lock.json 2020-03-10 20:29:16 +00:00
greenkeeper[bot] a75e2b0ecf chore(package): update scratch-vm to version 0.2.0-prerelease.20200310202129 2020-03-10 20:29:12 +00:00
Benjamin Wheeler a731370478 Merge pull request #5491 from benjiwheeler/unflakify-blocks-tests
unflakify four blocks integration tests
2020-03-05 22:26:24 -05:00
Ray Schamp f3ced9c9ea Merge pull request #5492 from rschamp/bump-dependencies
Bump scratch-blocks and scratch-l10n versions for release
2020-03-04 16:54:56 -05:00
rschamp dee0320164 Bump scratch-blocks and scratch-l10n 2020-03-04 16:53:51 -05:00
Ray Schamp 942b8d6e6a Merge pull request #5487 from LLK/greenkeeper/initial
Update dependencies to enable Greenkeeper 🌴
2020-03-04 16:48:24 -05:00
rschamp c296732753 Revert "chore(package): update lockfile package-lock.json"
This reverts commit 63bdc80388.
2020-03-04 16:44:20 -05:00
rschamp 212ffb42d3 Revert "chore(package): update dependencies"
This reverts commit a27ddaf4ad.
2020-03-04 16:44:20 -05:00
Ben Wheeler af0088df88 add findByXpath to wait for updated or new items to appear 2020-03-02 13:01:45 -05:00
greenkeeper[bot] 63bdc80388 chore(package): update lockfile package-lock.json 2020-02-28 19:25:19 +00:00
greenkeeper[bot] a27ddaf4ad chore(package): update dependencies 2020-02-28 19:25:15 +00:00
DD Liu 5ee641e70f Merge pull request #5484 from fsih/updateRender
Update render to roll back pen line drawing change
2020-02-28 13:01:11 -05:00
DD Liu e9d16dcd2a Update render to roll back pen line drawing change 2020-02-28 13:00:20 -05:00
DD Liu d156a3d995 Merge pull request #5479 from LLK/updateVm022720
Update vm
2020-02-27 16:58:35 -05:00
DD Liu 1019726bcf Update vm 2020-02-27 16:27:21 -05:00
DD Liu 3fbb7fe8d4 Merge pull request #5478 from fsih/updateRender
Update render
2020-02-27 16:06:06 -05:00
DD Liu 124a6496f5 Update render 2020-02-27 16:05:10 -05:00
Ben Wheeler 2e11787ac5 test resulting projectId; add comments; fix params 2020-02-26 17:05:22 -05:00
chrisgarrity 53bdab3425 Merge pull request #5476 from chrisgarrity/l10n-update-02-25
Update to latest l10n for translations
2020-02-26 16:06:43 -05:00
Chris Garrity 058fd000fa Update to latest l10n for translations 2020-02-26 15:53:25 -05:00
Eric Rosenbaum dc727f1b57 Merge pull request #5469 from ericrosenbaum/bugfix/revert-backdrops
Use 2.0 versions of some svg backdrops
2020-02-20 14:34:04 -05:00
Eric Rosenbaum bab503addb use 2.0 versions of some svg backdrops 2020-02-20 14:21:09 -05:00
Eric Rosenbaum 662726fa52 Merge pull request #5464 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1582033791
Update scratch-blocks to the latest version 🚀
2020-02-19 16:39:27 -05:00
Eric Rosenbaum a0b4aea8a1 Merge branch 'develop' into greenkeeper/scratch-blocks-0.1.0-prerelease.1582033791 2020-02-19 16:39:15 -05:00
Eric Rosenbaum b180dd4c0d Merge pull request #5465 from LLK/greenkeeper/scratch-l10n-3.7.20200218213016
Update scratch-l10n to the latest version 🚀
2020-02-19 16:10:09 -05:00
greenkeeper[bot] 02cdbf68cd chore(package): update lockfile package-lock.json 2020-02-18 22:28:15 +00:00
greenkeeper[bot] f1f1f54ec6 chore(package): update scratch-l10n to version 3.7.20200218213016 2020-02-18 22:28:10 +00:00
greenkeeper[bot] 256bb87858 chore(package): update lockfile package-lock.json 2020-02-18 13:52:38 +00:00
greenkeeper[bot] bdbf99f606 chore(package): update scratch-blocks to version 0.1.0-prerelease.1582033791 2020-02-18 13:52:34 +00:00
Eric Rosenbaum 8e3603aa8b Merge pull request #5395 from ericrosenbaum/feature/full-library-update
Asset library update
2020-02-14 14:02:42 -05:00
Eric Rosenbaum a5baf0cf5f Remove omega symbols from letter names 2020-02-13 15:50:00 -05:00
Ray Schamp 7912e4306c Merge pull request #5459 from LLK/ci-skip-gh-pages
Ignore commits on the gh-pages branch for CI
2020-02-13 15:33:52 -05:00
Ray Schamp 5fa8beb230 Ignore commits on the gh-pages branch for CI
Commits to gh-pages "fail" on CircleCI since there's no config on the branch. Skip these commits using a tag I can't write here because I do want CI to run on this commit :)
2020-02-13 13:14:34 -05:00
Karishma Chadha 9b4b47367b Merge pull request #5457 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200213174123
Update scratch-paint to the latest version 🚀
2020-02-13 12:55:41 -05:00
greenkeeper[bot] f69f4bfe2b chore(package): update lockfile package-lock.json 2020-02-13 17:49:16 +00:00
greenkeeper[bot] 306497c095 chore(package): update scratch-paint to version 0.2.0-prerelease.20200213174123 2020-02-13 17:49:12 +00:00
Karishma Chadha 17cff4775c Merge pull request #5449 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1581428931
Update scratch-blocks to the latest version 🚀
2020-02-12 18:01:33 -05:00
Karishma Chadha 2ee25bcc0f Merge branch 'develop' into greenkeeper/scratch-blocks-0.1.0-prerelease.1581428931 2020-02-12 18:00:54 -05:00
Karishma Chadha 7ed3a6b7c8 Merge pull request #5453 from LLK/greenkeeper/scratch-l10n-3.7.20200212141356
Update scratch-l10n to the latest version 🚀
2020-02-12 17:55:33 -05:00
Eric Rosenbaum 73fad0b7f5 Use title case for all sprite names 2020-02-12 14:34:51 -05:00
Eric Rosenbaum 147a4ed586 fix sprite position randomizer 2020-02-12 14:26:46 -05:00
Eric Rosenbaum b1a3c4b446 update libraries with more 3.0 style properties 2020-02-12 14:23:25 -05:00
DD Liu 4563b41429 Merge pull request #5455 from fsih/updatePaint
Update paint
2020-02-12 13:41:06 -05:00
DD Liu 0c8b982479 Update paint 2020-02-12 13:40:16 -05:00
greenkeeper[bot] e5811f15be chore(package): update lockfile package-lock.json 2020-02-12 14:17:55 +00:00
greenkeeper[bot] a4624da5f2 chore(package): update scratch-l10n to version 3.7.20200212141356 2020-02-12 14:17:51 +00:00
Christopher Willis-Ford 89a748dd2b add hook on telemetry dialog for displaying privacy policy 2020-02-11 10:11:23 -08:00
greenkeeper[bot] 5cccd63f6c chore(package): update lockfile package-lock.json 2020-02-11 13:51:34 +00:00
greenkeeper[bot] 33e01c1bdd chore(package): update scratch-blocks to version 0.1.0-prerelease.1581428931 2020-02-11 13:51:30 +00:00
Christopher Willis-Ford 8c6b52f43c mock editor-msgs.js to fix Jest/Babel error 2020-02-10 15:09:35 -08:00
Christopher Willis-Ford 2ebcd850d6 add unit tests for About button on menu bar 2020-02-10 13:49:54 -08:00
Christopher Willis-Ford 9d307f0e08 show clickable 'About' button if handler is present 2020-02-10 13:49:54 -08:00
Christopher Willis-Ford fde7349b2b optimize About icon SVG 2020-02-10 13:49:54 -08:00
DD Liu 93406fbef7 Merge pull request #5447 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200210174730
Update scratch-paint to the latest version 🚀
2020-02-10 13:21:31 -05:00
greenkeeper[bot] d7cb0126ad chore(package): update lockfile package-lock.json 2020-02-10 17:49:31 +00:00
greenkeeper[bot] 41831eede7 chore(package): update scratch-paint to version 0.2.0-prerelease.20200210174730 2020-02-10 17:49:26 +00:00
Benjamin Wheeler 923b931d90 Merge pull request #5411 from glenpike/glenpike-readme-patch-1
Add note about cloning to README
2020-02-10 10:05:07 -05:00
Bryce Taylor 600172f8fb Merge pull request #5443 from BryceLTaylor/skip-flakey-test
Skip blocks “renaming costume wtih special character” test
2020-02-07 16:50:50 -05:00
BryceLTaylor 41a50b87ab Skip blocks “renaming costume wtih special character” test 2020-02-07 14:05:22 -05:00
DD Liu d99360e021 Merge pull request #5441 from fsih/updateSvgRend
Add back rounded gradient strokes for 2.0 projects
2020-02-07 13:56:01 -05:00
DD Liu 4e4d359d18 Add back rounded gradient strokes for 2.0 projects 2020-02-06 18:08:08 -05:00
DD Liu 92f05792f9 Merge pull request #5439 from fsih/updatePaint
Update paint to roll back centering tool
2020-02-06 12:57:20 -05:00
DD Liu cd9d25ad48 Update paint to roll back centering tool 2020-02-06 12:56:09 -05:00
Benjamin Wheeler e34d5ed67e Merge pull request #5437 from LLK/revert-4809-refactor-file-uploader
Revert "refactor SB* file uploader into top-level HOC"
2020-02-06 11:38:58 -05:00
Benjamin Wheeler af4ad81811 Revert "refactor SB* file uploader into top-level HOC" 2020-02-06 11:33:03 -05:00
Paul Kaplan c368de81fa Merge pull request #5435 from paulkaplan/resync-paint-lock
Resync package-lock for scratch-paint
2020-02-05 19:25:34 -05:00
greenkeeper[bot] 0104f5bec8 chore(package): update lockfile package-lock.json 2020-02-05 19:23:20 -05:00
Christopher Willis-Ford 8690b696a5 add 'About' icon from @carljbowman 2020-02-05 15:59:34 -08:00
DD Liu ae8624e7e7 Merge pull request #5433 from fsih/updatePaint
update paint'
2020-02-05 17:42:54 -05:00
DD Liu 7f8b84829e update paint' 2020-02-05 17:42:12 -05:00
DD Liu d4078a795f Merge pull request #5432 from fsih/updateDeps
Update blocks and l10n
2020-02-05 16:41:42 -05:00
DD Liu f381a6a0d8 Update blocks and l10n 2020-02-05 16:40:00 -05:00
Benjamin Wheeler 962ce680c9 Merge pull request #5430 from benjiwheeler/reduce-project-state-file-size
reduce project state machine example image file size
2020-02-05 16:27:40 -05:00
Ben Wheeler 630ba84350 reduce project state image file size 2020-02-05 16:26:21 -05:00
Benjamin Wheeler 51843d6bef Merge pull request #5416 from benjiwheeler/project-state-diagram
Project state diagram
2020-02-05 16:22:04 -05:00
DD Liu 02be2155d9 Merge pull request #5428 from fsih/unUpdateDeps
Revert "Update dependencies"
2020-02-05 15:32:30 -05:00
DD Liu cca695b54e Revert "Update dependencies"
This is to remove the latest svg-renderer change, "add rounded edges to gradient strokes", because we would like to come up with a more comprehensive testing plan before adding it.
2020-02-05 15:13:31 -05:00
Ben Wheeler 4e633cb596 clearer project state example 2020-02-05 13:38:01 -05:00
DD Liu 8dc343c90d Merge pull request #5427 from LLK/greenkeeper/mkdirp-1.0.3
Greenkeeper/mkdirp 1.0.3
2020-02-05 13:03:56 -05:00
DD Liu 369eb8c3cf Merge pull request #5426 from LLK/greenkeeper/chromedriver-80.0.0
Greenkeeper/chromedriver 80.0.0
2020-02-05 11:02:41 -05:00
Eric Rosenbaum a7021e32a4 Default to first costume using sb3 property currentCostume
and remove the sb2 property currentCostumeIndex
2020-02-05 10:10:46 -05:00
Eric Rosenbaum 863276e75d Ballerina costume fixes 2020-02-05 09:44:12 -05:00
DD Liu de9dbe08f4 Merge pull request #5424 from fsih/updateDeps
Update dependencies
2020-02-04 21:38:46 -05:00
DD Liu c050829a75 Update dependencies 2020-02-04 21:28:20 -05:00
greenkeeper[bot] 6e57ea1c91 chore(package): update lockfile package-lock.json 2020-02-05 00:10:26 +00:00
greenkeeper[bot] 53d09e2162 chore(package): update chromedriver to version 80.0.0
Closes #5335
2020-02-05 00:10:22 +00:00
Benjamin Wheeler 5d9afb008a Merge pull request #4809 from benjiwheeler/refactor-file-uploader
refactor SB* file uploader into top-level HOC
2020-02-04 17:32:04 -05:00
Ben Wheeler d19cf91205 removed stale comments 2020-02-04 17:30:33 -05:00
DD Liu 4f70b0f924 Merge pull request #5417 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200204155336
Greenkeeper/scratch paint 0.2.0 prerelease.20200204155336
2020-02-04 16:41:51 -05:00
Ben Wheeler f8a0f46959 added project state example 2020-02-04 13:11:48 -05:00
Ben Wheeler faf0dd2f13 added project state diagram 2020-02-04 13:00:52 -05:00
Ben Wheeler cbb908831d Fixed typo 2020-02-04 11:30:57 -05:00
greenkeeper[bot] b44c0c355a chore(package): update lockfile package-lock.json 2020-02-04 16:09:21 +00:00
greenkeeper[bot] ffa364ed64 chore(package): update scratch-paint to version 0.2.0-prerelease.20200204155336
Closes #5405
2020-02-04 16:09:16 +00:00
Benjamin Wheeler 017de39c3b Added period 2020-02-03 18:04:41 -05:00
Glen Pike 01c7da1965 Add note about cloning to README
Because there are some very large files in the repository history
2020-02-03 21:02:14 +00:00
Ben Wheeler 59f428900c update menu-bar test per refactor 2020-02-03 11:16:42 -05:00
Ben Wheeler 48245be395 reverted project state changes in f2291d96 2020-01-30 14:18:13 -05:00
Eric Rosenbaum ca38789e3f Fix asset names and tags, remove duplicates 2020-01-30 12:34:15 -05:00
Ben Wheeler efed4d3721 file input is dynamically added to DOM, not rendered 2020-01-29 19:38:47 -05:00
DD Liu 95532e147d Merge pull request #5402 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200129174741
Greenkeeper/scratch paint 0.2.0 prerelease.20200129174741
2020-01-29 13:43:31 -05:00
DD Liu 3a56e609a5 Merge branch 'develop' into greenkeeper/scratch-paint-0.2.0-prerelease.20200129174741 2020-01-29 13:05:08 -05:00
Paul Kaplan e63842a336 Merge pull request #5400 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1580309823
Update scratch-blocks to the latest version 🚀
2020-01-29 13:00:34 -05:00
greenkeeper[bot] c9173427b9 chore(package): update lockfile package-lock.json 2020-01-29 17:49:28 +00:00
greenkeeper[bot] 3e5b65072c chore(package): update scratch-paint to version 0.2.0-prerelease.20200129174741
Closes #5401
2020-01-29 17:49:24 +00:00
greenkeeper[bot] 74828b3b09 chore(package): update lockfile package-lock.json 2020-01-29 15:03:07 +00:00
greenkeeper[bot] e77162791f chore(package): update scratch-blocks to version 0.1.0-prerelease.1580309823 2020-01-29 15:03:02 +00:00
Paul Kaplan 0c17cd956d Merge pull request #5399 from LLK/greenkeeper/scratch-l10n-3.7.20200128224436
Update scratch-l10n to the latest version 🚀
2020-01-29 08:46:15 -05:00
Paul Kaplan 287b29019a Merge pull request #5398 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20200128205403
Update scratch-render to the latest version 🚀
2020-01-29 06:02:37 -05:00
greenkeeper[bot] ed3b58bfb5 chore(package): update lockfile package-lock.json 2020-01-28 22:46:51 +00:00
greenkeeper[bot] c2cd6f21da chore(package): update scratch-l10n to version 3.7.20200128224436 2020-01-28 22:46:47 +00:00
greenkeeper[bot] 066e9dd6bd chore(package): update lockfile package-lock.json 2020-01-28 21:10:45 +00:00
greenkeeper[bot] 5a0860228e chore(package): update scratch-render to version 0.1.0-prerelease.20200128205403 2020-01-28 21:10:41 +00:00
Ben Wheeler f2291d963c continuing sb file uploader refactor into hoc
draft of refactor to make custom confirm modal work for upload; need to further edit sb-file-uploader

Add support for custom confirm modal to sb-file-uploader

Show custom confirm modal when confirming project upload

got custom upload refactor of file upload working, and tested failure case

cleaned up debug code, make project file upload work

simplified logic around canceling file upload

removed old sb-file-uploader.jsx; fixed linter errors

reverted two components to use old strings, not shared

(can do that refactor another time)

removed unnecessary confirm container

removed stray comment

moved, updated sb file uploader tests, related project state tests

removed custom modal, to reduce scope of changes

sb file uploader test uses intl
2020-01-28 14:57:09 -05:00
Benjamin Wheeler 97885c7518 Merge pull request #5198 from benjiwheeler/block-cloud-on-embed
simplify props of cloud-manager-hoc
2020-01-28 14:13:40 -05:00
Ben Wheeler 3a8fe3f1b2 reorganized switch and conditionals to be clearer; clarified test names 2020-01-27 16:25:26 -05:00
Ben Wheeler a23dd3e349 shouldNotModifyCloudData into prop canModifyCloudData ; add defaultProps 2020-01-27 14:29:56 -05:00
Paul Kaplan 79f3f6f3f8 Merge pull request #5333 from LLK/paulkaplan-patch-2
Do not show unsupported browser modal for googlebot
2020-01-27 11:47:32 -05:00
greenkeeper[bot] 175395cce3 chore(package): update lockfile package-lock.json 2020-01-24 21:10:12 +00:00
greenkeeper[bot] ee67ddf56f chore(package): update mkdirp to version 1.0.3
Closes #5396
2020-01-24 21:10:09 +00:00
Eric Rosenbaum 5c259b70db add tag to marian sprite, fix name of basketball 1 backdrop 2020-01-23 11:46:06 -05:00
Eric Rosenbaum 3dd86c28f9 update costume rotation test 2020-01-23 11:42:59 -05:00
Ray Schamp 4b75bc8f9d Merge pull request #5388 from LLK/greenkeeper/scratch-l10n-3.7.20200114224412
Update scratch-l10n to the latest version 🚀
2020-01-22 16:51:33 -05:00
Eric Rosenbaum 85cd56307d update asset libraries 2020-01-22 15:17:04 -05:00
greenkeeper[bot] 8a4adccae5 chore(package): update lockfile package-lock.json 2020-01-16 00:35:15 +00:00
greenkeeper[bot] 9908d44d81 chore(package): update scratch-l10n to version 3.7.20200114224412 2020-01-16 00:35:10 +00:00
Paul Kaplan d2c74c5198 Merge pull request #5385 from paulkaplan/libraries-3-format
Update library-item to handle 3.0 or 2.0 library formats
2020-01-15 15:32:29 -05:00
Paul Kaplan 80e91a3c5e Update library-item to handle 3.0 or 2.0 library formats 2020-01-14 10:54:30 -05:00
DD Liu 797ce1894b Merge pull request #5384 from fsih/updateRender
Update with render hotfix
2020-01-13 15:37:55 -05:00
DD Liu f41e1c829a Update with render hotfix 2020-01-13 14:59:24 -05:00
Paul Kaplan fa5994abbd Merge pull request #5377 from paulkaplan/fix-long-sound
[fixup] Implement sound downsampler to try to allow more sounds to be edited
2020-01-09 12:19:22 -05:00
Paul Kaplan 76f5cfe1cf Correctly return the sampleRate from the sample dropper 2020-01-09 12:12:41 -05:00
Paul Kaplan fcbf1b051b Make submitNewSamples async and use promises 2020-01-09 12:12:41 -05:00
Paul Kaplan 1dcba6ecd5 Merge pull request #5376 from LLK/revert-5338-fix-long-sound
Revert "Implement sound downsampler to try to allow more sounds to be edited"
2020-01-09 11:47:45 -05:00
Paul Kaplan 79277a1227 Revert "Implement sound downsampler to try to allow more sounds to be edited" 2020-01-09 11:47:08 -05:00
DD Liu e476548c64 Trigger rebuild because my build flaked? 2020-01-09 03:18:32 -05:00
DD Liu 8adb097cd1 Merge pull request #5374 from fsih/updateEmptyPaintBug
Fix empty paint bug
2020-01-09 02:52:28 -05:00
DD Liu 403a7a5883 Update package lock 2020-01-09 02:43:24 -05:00
DD Liu dd5562323e Update svgrenderer deps and renderer 2020-01-09 02:42:34 -05:00
Benjamin Wheeler f261f4614a Merge pull request #5370 from LLK/greenkeeper/scratch-l10n-3.7.20200108141814
Greenkeeper/scratch l10n 3.7.20200108141814
2020-01-08 21:59:19 -05:00
greenkeeper[bot] a93248df31 chore(package): update scratch-l10n to version 3.7.20200108141814
Closes #5354
2020-01-08 21:58:42 -05:00
Benjamin Wheeler 1fa8742dec Merge pull request #5360 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1578322100
Update scratch-blocks to the latest version 🚀
2020-01-08 21:53:40 -05:00
Ben Wheeler 8b0f2c16bc updated package-lock 2020-01-08 21:34:23 -05:00
greenkeeper[bot] 57988d63c2 chore(package): update lockfile package-lock.json 2020-01-08 21:34:23 -05:00
greenkeeper[bot] c3d3a7a464 chore(package): update scratch-blocks to version 0.1.0-prerelease.1578322100 2020-01-08 21:34:23 -05:00
Paul Kaplan e1102f91ef Merge pull request #5369 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200107211248
Update scratch-paint to the latest version 🚀
2020-01-08 10:03:50 -05:00
greenkeeper[bot] e10a3f282f chore(package): update lockfile package-lock.json 2020-01-07 21:59:34 +00:00
greenkeeper[bot] 0ef59001f1 chore(package): update scratch-paint to version 0.2.0-prerelease.20200107211248 2020-01-07 21:59:30 +00:00
DD Liu ad96f2eb30 Merge pull request #5368 from fsih/updateSvgRend
Update SVG Renderer
2020-01-07 16:22:38 -05:00
DD Liu 5fac48acc9 updateSvgRend 2020-01-07 16:04:33 -05:00
DD Liu b19139696b Merge pull request #5367 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20200107165446
Update scratch-paint to the latest version 🚀
2020-01-07 14:13:09 -05:00
DD Liu a5ccbfb8b9 Merge branch 'develop' into greenkeeper/scratch-paint-0.2.0-prerelease.20200107165446 2020-01-07 14:12:50 -05:00
DD Liu 7960eed191 Merge pull request #5366 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20200107165342
Update scratch-render to the latest version 🚀
2020-01-07 14:11:58 -05:00
greenkeeper[bot] cb0e24b5be chore(package): update lockfile package-lock.json 2020-01-07 17:01:55 +00:00
greenkeeper[bot] ccc12a02c3 chore(package): update scratch-paint to version 0.2.0-prerelease.20200107165446 2020-01-07 17:01:50 +00:00
greenkeeper[bot] d505af579a chore(package): update lockfile package-lock.json 2020-01-07 17:01:23 +00:00
greenkeeper[bot] 504097b495 chore(package): update scratch-render to version 0.1.0-prerelease.20200107165342 2020-01-07 17:01:19 +00:00
DD Liu 484eb6bc9f Merge pull request #5358 from LLK/greenkeeper/scratch-svg-renderer-0.2.0-prerelease.20200103191258
Update scratch-svg-renderer to the latest version 🚀
2020-01-07 11:48:59 -05:00
Benjamin Wheeler 96392659fd Merge pull request #5291 from benjiwheeler/standalone-new-project-title-fix
reset title on transitioning to isShowingWithoutId
2020-01-06 15:27:38 -05:00
Ben Wheeler a4e27112ab fixed typo 2020-01-06 15:11:18 -05:00
Ben Wheeler 50265fe843 added tests for project loading states 2020-01-06 15:10:51 -05:00
Ben Wheeler 461877b733 project state loading should error if can’t load default 2020-01-06 15:10:27 -05:00
greenkeeper[bot] 2c16a16da5 chore(package): update lockfile package-lock.json 2020-01-03 19:18:55 +00:00
greenkeeper[bot] ed0db53f36 chore(package): update scratch-svg-renderer to version 0.2.0-prerelease.20200103191258 2020-01-03 19:18:50 +00:00
Ben Wheeler f244da7705 added project-state integration test for new title 2020-01-02 14:29:04 -05:00
Benjamin Wheeler 3d1205e453 Merge pull request #5357 from LLK/greenkeeper/papaparse-5.1.1
Greenkeeper/papaparse 5.1.1
2019-12-30 23:18:50 -05:00
Ben Wheeler 3b1889b941 updated package lock 2019-12-30 23:17:43 -05:00
Paul Kaplan a908345491 Merge pull request #5338 from paulkaplan/fix-long-sound
Implement sound downsampler to try to allow more sounds to be edited
2019-12-30 14:22:34 -05:00
Karishma Chadha 50de01086a Merge pull request #5355 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20191227164934
Update scratch-vm to the latest version 🚀
2019-12-27 14:34:16 -05:00
greenkeeper[bot] 57863d99a1 chore(package): update lockfile package-lock.json 2019-12-27 16:52:17 +00:00
greenkeeper[bot] 3e93db7c0b chore(package): update scratch-vm to version 0.2.0-prerelease.20191227164934 2019-12-27 16:52:13 +00:00
Benjamin Wheeler 28f4cc737d Merge pull request #5343 from taybenlor/develop
Fix `doneUpdatingProject` call signature
2019-12-24 21:45:26 -05:00
chrisgarrity fa5cfb495f Merge pull request #5352 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1576850350
Update scratch-blocks to the latest version 🚀
2019-12-20 11:28:06 -05:00
greenkeeper[bot] 5b2e8a29e3 chore(package): update lockfile package-lock.json 2019-12-20 14:01:43 +00:00
greenkeeper[bot] a7fce92b18 chore(package): update scratch-blocks to version 0.1.0-prerelease.1576850350 2019-12-20 14:01:39 +00:00
chrisgarrity 12b8cfbb43 Merge pull request #5349 from LLK/greenkeeper/scratch-l10n-3.7.20191219145348
Update scratch-l10n to the latest version 🚀
2019-12-20 08:06:10 -05:00
Paul Kaplan d1d98337c8 Update docs and tests 2019-12-19 16:01:21 -05:00
greenkeeper[bot] 480f17d872 chore(package): update lockfile package-lock.json 2019-12-19 14:56:10 +00:00
greenkeeper[bot] 274cbbd356 chore(package): update scratch-l10n to version 3.7.20191219145348 2019-12-19 14:56:05 +00:00
Eric Rosenbaum bb80fa49ac Move backupDownSampler into util and add tests 2019-12-18 15:19:47 -05:00
greenkeeper[bot] 38e4c5bbfa chore(package): update lockfile package-lock.json 2019-12-18 11:54:33 +00:00
greenkeeper[bot] b3e5dd88fb chore(package): update papaparse to version 5.1.1
Closes #5018
2019-12-18 11:54:30 +00:00
Ben Taylor 6027bb9011 Fix doneUpdatingProject call signature
ProjectSaverHOC has been using the wrong call signature for `doneUpdatingProject` and `onUpdatedProject`.
2019-12-18 09:59:07 +11:00
picklesrus d62ede33e5 Merge pull request #5346 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20191217213717
Update scratch-paint to the latest version 🚀
2019-12-17 17:05:33 -05:00
greenkeeper[bot] 1a479c61b4 chore(package): update lockfile package-lock.json 2019-12-17 21:38:57 +00:00
greenkeeper[bot] 2e8adc7ac7 chore(package): update scratch-paint to version 0.2.0-prerelease.20191217213717 2019-12-17 21:38:53 +00:00
picklesrus 5c377e70c9 Merge pull request #5345 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191217212645
Update scratch-render to the latest version 🚀
2019-12-17 16:29:30 -05:00
greenkeeper[bot] 67fdd9bb51 chore(package): update lockfile package-lock.json 2019-12-17 21:28:34 +00:00
greenkeeper[bot] c68ec4ad16 chore(package): update scratch-render to version 0.1.0-prerelease.20191217212645 2019-12-17 21:28:30 +00:00
picklesrus 91e87f7d16 Merge pull request #5344 from LLK/greenkeeper/scratch-svg-renderer-0.2.0-prerelease.20191217211338
Update scratch-svg-renderer to the latest version 🚀
2019-12-17 16:19:48 -05:00
greenkeeper[bot] 762ffe53f0 chore(package): update lockfile package-lock.json 2019-12-17 21:15:45 +00:00
greenkeeper[bot] d63c8b1dbb chore(package): update scratch-svg-renderer to version 0.2.0-prerelease.20191217211338 2019-12-17 21:15:41 +00:00
Eric Rosenbaum e799708707 Use for loop instead of filter (20x faster) 2019-12-16 17:05:29 -05:00
Eric Rosenbaum b699e76972 Use backup down sampler when 22kHz not supported 2019-12-16 13:49:39 -05:00
Paul Kaplan 914ba4910b Use vendor prefixed offline audio context for safari 2019-12-12 15:57:25 -05:00
Paul Kaplan 748f8559e4 Remove the 11khz option because it doesnt work on safari 2019-12-12 15:56:59 -05:00
Paul Kaplan 8fae109811 Add downsampler 2019-12-12 12:30:12 -05:00
Paul Kaplan 7980c23ecc Make submitNewSamples async and use promises 2019-12-12 11:44:15 -05:00
DD Liu 5e4a2b788c Merge pull request #5337 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191211203739
Update scratch-render to the latest version 🚀
2019-12-11 15:59:48 -05:00
greenkeeper[bot] 8caff78e08 chore(package): update lockfile package-lock.json 2019-12-11 20:51:43 +00:00
greenkeeper[bot] e1c3bb6d96 chore(package): update scratch-render to version 0.1.0-prerelease.20191211203739 2019-12-11 20:51:39 +00:00
Paul Kaplan aebdcc855c Merge pull request #5336 from LLK/greenkeeper/scratch-l10n-3.6.20191210224141
Update scratch-l10n to the latest version 🚀
2019-12-11 11:17:10 -05:00
greenkeeper[bot] 86fd6ec8bf chore(package): update lockfile package-lock.json 2019-12-10 22:44:02 +00:00
greenkeeper[bot] b351cc599d chore(package): update scratch-l10n to version 3.6.20191210224141 2019-12-10 22:43:57 +00:00
Paul Kaplan 0230546a20 Merge pull request #5332 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20191210104711
Update scratch-paint to the latest version 🚀
2019-12-10 10:36:05 -05:00
Paul Kaplan 9638444a49 Do not show unsupported browser modal for googlebot
This modal may be preventing the crawler from correctly indexing pages, because it takes over the whole screen.
2019-12-10 06:47:41 -05:00
greenkeeper[bot] 984b87ead5 chore(package): update lockfile package-lock.json 2019-12-10 10:57:58 +00:00
greenkeeper[bot] 59c4f36b90 chore(package): update scratch-paint to version 0.2.0-prerelease.20191210104711 2019-12-10 10:57:54 +00:00
Paul Kaplan 21a6fe3a27 Merge pull request #5331 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20191209210523
Update scratch-paint to the latest version 🚀
2019-12-10 05:40:44 -05:00
greenkeeper[bot] 02f806fc9d chore(package): update lockfile package-lock.json 2019-12-09 21:40:37 +00:00
greenkeeper[bot] d9003c9d56 chore(package): update scratch-paint to version 0.2.0-prerelease.20191209210523 2019-12-09 21:40:33 +00:00
Paul Kaplan c944295140 Merge pull request #5329 from LLK/revert-5328-revert-5319-greenkeeper/scratch-render-0.1.0-prerelease.20191126210304
Bring back in renderer update with mipmap change
2019-12-05 10:29:15 -05:00
Paul Kaplan 2c64a62f23 Revert "Revert "Update scratch-render to the latest version 🚀"" 2019-12-05 10:26:15 -05:00
Paul Kaplan 8639f1838c Merge pull request #5328 from LLK/revert-5319-greenkeeper/scratch-render-0.1.0-prerelease.20191126210304
Revert "Update scratch-render to the latest version 🚀"
2019-12-05 09:33:36 -05:00
Paul Kaplan 4e80510b98 Revert "Update scratch-render to the latest version 🚀" 2019-12-05 09:30:15 -05:00
Paul Kaplan 9f58bd9ee3 Merge pull request #5323 from zoebentley/tutorial-images-es-419
Make Spanish tutorial images also load for Latinamerican Spanish
2019-12-04 09:46:37 -05:00
Paul Kaplan 236cc6f872 Merge pull request #5325 from LLK/greenkeeper/scratch-l10n-3.6.20191204142956
Update scratch-l10n to the latest version 🚀
2019-12-04 09:36:58 -05:00
greenkeeper[bot] b3d336a08f chore(package): update lockfile package-lock.json 2019-12-04 14:35:28 +00:00
greenkeeper[bot] 97fcbf85fc chore(package): update scratch-l10n to version 3.6.20191204142956 2019-12-04 14:35:20 +00:00
DD Liu e3b3bcc963 Merge pull request #5319 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191126210304
Update scratch-render to the latest version 🚀
2019-12-04 09:33:20 -05:00
Zoë Bentley 775b805e56 Make Spanish tutorial images also load for Latinamerican Spanish 2019-12-02 15:04:35 -05:00
greenkeeper[bot] a1124807ca chore(package): update lockfile package-lock.json 2019-11-26 21:04:55 +00:00
greenkeeper[bot] b1674c1b0c chore(package): update scratch-render to version 0.1.0-prerelease.20191126210304 2019-11-26 21:04:51 +00:00
Eric Rosenbaum 7148733acb Merge pull request #5315 from LLK/greenkeeper/scratch-l10n-3.6.20191120161253
Greenkeeper/scratch l10n 3.6.20191120161253
2019-11-20 12:50:08 -05:00
DD Liu e98862ef66 Merge pull request #5311 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20191119203901
Update scratch-vm to the latest version 🚀
2019-11-20 11:51:59 -05:00
greenkeeper[bot] 53a805026f chore(package): update lockfile package-lock.json 2019-11-20 16:45:02 +00:00
greenkeeper[bot] 84b168f757 chore(package): update scratch-l10n to version 3.6.20191120161253
Closes #5312
2019-11-20 16:44:57 +00:00
chrisgarrity 0a86a769e7 Merge pull request #5310 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1574180945
Translations: Update scratch-blocks to the latest version 🚀
2019-11-19 17:18:32 -05:00
greenkeeper[bot] 816fb10e16 chore(package): update lockfile package-lock.json 2019-11-19 21:43:25 +00:00
greenkeeper[bot] eece6a5f8d chore(package): update scratch-vm to version 0.2.0-prerelease.20191119203901 2019-11-19 21:43:18 +00:00
greenkeeper[bot] 27766042fa chore(package): update lockfile package-lock.json 2019-11-19 16:32:03 +00:00
greenkeeper[bot] 639330b9ce chore(package): update scratch-blocks to version 0.1.0-prerelease.1574180945 2019-11-19 16:31:59 +00:00
zoebentley 6f6a34ec50 Merge pull request #5305 from zoebentley/tutorial-reorder-HOC-2019-fixed
Reorder tutorials for HOC 2019
2019-11-19 11:00:15 -05:00
zoebentley 2560c0736e Merge pull request #5303 from zoebentley/spanish-localization
Add Spanish GIFs/PNGs for HOC 2019 and optimize many EN & ES GIFs/PNGs
2019-11-19 10:48:36 -05:00
Eric Rosenbaum 7a2d7d035e Merge pull request #5306 from ericrosenbaum/feature/update-vm
update vm
2019-11-19 09:56:31 -05:00
Ray Schamp 62ee7e069f Merge pull request #5205 from rschamp/trim-travis
Trim some unused config from the Travis config
2019-11-19 09:49:37 -05:00
Ray Schamp 3b82d52a84 Merge branch 'develop' into trim-travis 2019-11-19 09:37:52 -05:00
Eric Rosenbaum 435f335cff update vm 2019-11-18 17:46:55 -05:00
Zoë Bentley 6822d3b7dd Reorder tutorials for HOC 2019 2019-11-18 13:43:06 -05:00
Zoë Bentley 40e9c07b00 Add Spanish GIFs/PNGs for HOC 2019 and optimize many English and Spanish GIFs/PNGs 2019-11-18 13:22:51 -05:00
chrisgarrity c4bf772dd1 Merge pull request #5296 from LLK/greenkeeper/scratch-l10n-3.6.20191112223853
Greenkeeper/scratch l10n 3.6.20191112223853
2019-11-18 08:20:59 -05:00
DD Liu 886dbca01c Merge pull request #5298 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20191114200704
Update scratch-paint to the latest version 🚀
2019-11-14 16:09:46 -05:00
DD Liu 3ee5b44e7e Merge branch 'develop' into greenkeeper/scratch-paint-0.2.0-prerelease.20191114200704 2019-11-14 15:46:48 -05:00
DD Liu 0eb7d3017b Merge pull request #5297 from fsih/updateRender
Update render
2019-11-14 15:44:29 -05:00
greenkeeper[bot] 139c9f8043 chore(package): update lockfile package-lock.json 2019-11-14 20:31:18 +00:00
greenkeeper[bot] 3faedc4301 chore(package): update scratch-paint to version 0.2.0-prerelease.20191114200704 2019-11-14 20:31:13 +00:00
DD Liu faa81e77c7 Update render 2019-11-14 15:06:17 -05:00
DD Liu 58ff2606b3 Merge pull request #5295 from fsih/updateRender
Backing out the render change, because we want the recent render chan…
2019-11-14 11:02:14 -05:00
DD Liu dabdaf00d2 Backing out the render change, because we want the recent render changes to go in together, and they are separated rightn ow 2019-11-14 10:50:10 -05:00
greenkeeper[bot] 3eb56b4e9f chore(package): update lockfile package-lock.json 2019-11-12 23:29:47 +00:00
greenkeeper[bot] 61102e9de8 chore(package): update scratch-l10n to version 3.6.20191112223853
Closes #5285
2019-11-12 23:29:43 +00:00
Karishma Chadha ce164d81d7 Merge pull request #5258 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20191018142546
Greenkeeper/scratch vm 0.2.0 prerelease.20191018142546
2019-11-12 17:51:56 -05:00
Ben Wheeler 21d6ce111e added comments 2019-11-12 15:25:07 -05:00
Ben Wheeler fcb6de39f3 more precise case for resetting project title to default 2019-11-12 15:22:40 -05:00
Karishma Chadha e428083da8 Merge branch 'develop' into greenkeeper/scratch-vm-0.2.0-prerelease.20191018142546 2019-11-12 15:12:43 -05:00
Ben Wheeler 3c6e9723e3 reset title on transitioning to isShowingWithoutId 2019-11-12 15:04:55 -05:00
DD Liu 5afd19b1ce Merge pull request #5282 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191104214419
Update scratch-render to the latest version 🚀
brings in LLK/scratch-svg-renderer#99 via render
2019-11-04 20:07:58 -05:00
DD Liu 17ba917399 Merge branch 'develop' into greenkeeper/scratch-render-0.1.0-prerelease.20191104214419 2019-11-04 20:06:35 -05:00
DD Liu 73b53988fc Merge pull request #5283 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20191104214909
Update scratch-paint to the latest version 🚀
brings in LLK/scratch-svg-renderer#99 via paint
2019-11-04 20:05:58 -05:00
greenkeeper[bot] 39e1bac823 chore(package): update lockfile package-lock.json 2019-11-04 21:50:54 +00:00
greenkeeper[bot] c5f17db7d1 chore(package): update scratch-paint to version 0.2.0-prerelease.20191104214909 2019-11-04 21:50:50 +00:00
greenkeeper[bot] ca06418287 chore(package): update lockfile package-lock.json 2019-11-04 21:49:44 +00:00
greenkeeper[bot] a98562e03c chore(package): update scratch-render to version 0.1.0-prerelease.20191104214419 2019-11-04 21:49:39 +00:00
DD Liu 036c627130 Merge pull request #5281 from LLK/greenkeeper/scratch-svg-renderer-0.2.0-prerelease.20191104164753
Update scratch-svg-renderer to the latest version 🚀
brings in https://github.com/LLK/scratch-svg-renderer/pull/99
2019-11-04 16:35:41 -05:00
greenkeeper[bot] dd8fb2024d chore(package): update lockfile package-lock.json 2019-11-04 16:50:01 +00:00
greenkeeper[bot] c4b43dd321 chore(package): update scratch-svg-renderer to version 0.2.0-prerelease.20191104164753 2019-11-04 16:49:57 +00:00
chrisgarrity f4061aedaa Merge pull request #5274 from LLK/greenkeeper/scratch-l10n-3.6.20191029224007
Greenkeeper/scratch l10n 3.6.20191029224007
2019-11-04 07:50:25 -05:00
Paul Kaplan c3d7c086f8 Merge pull request #5277 from paulkaplan/publish-libs
Include library JSON files in package distribution
2019-11-04 05:11:02 -05:00
DD Liu 5ecaa2fb44 Merge pull request #5279 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191101193213
Update scratch-render to the latest version 🚀
brings in LLK/scratch-svg-renderer#84 via render
2019-11-01 20:32:13 -04:00
DD Liu 3a35693ce3 Merge branch 'develop' into greenkeeper/scratch-render-0.1.0-prerelease.20191101193213 2019-11-01 20:31:19 -04:00
DD Liu cd23935bc3 Merge pull request #5280 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20191101193358
Update scratch-paint to the latest version 🚀
brings in LLK/scratch-svg-renderer#84 via paint
2019-11-01 20:26:57 -04:00
greenkeeper[bot] 055853d746 chore(package): update lockfile package-lock.json 2019-11-01 19:39:25 +00:00
greenkeeper[bot] bae72c0413 chore(package): update scratch-paint to version 0.2.0-prerelease.20191101193358 2019-11-01 19:39:19 +00:00
greenkeeper[bot] ca927f111b chore(package): update lockfile package-lock.json 2019-11-01 19:38:39 +00:00
greenkeeper[bot] 13a0e9098f chore(package): update scratch-render to version 0.1.0-prerelease.20191101193213 2019-11-01 19:38:35 +00:00
DD Liu 3d3eb3d059 Merge pull request #5273 from LLK/greenkeeper/scratch-svg-renderer-0.2.0-prerelease.20191031221353
Update scratch-svg-renderer to the latest version 🚀
brings in https://github.com/LLK/scratch-svg-renderer/pull/84
2019-11-01 15:27:27 -04:00
adroitwhiz 9dcaa0985f Don't align-items: center in stage-overlay-content 2019-11-01 14:33:28 -04:00
Paul Kaplan f788870dc2 Merge pull request #5275 from LLK/greenkeeper/chromedriver-78.0.1
Greenkeeper/chromedriver 78.0.1
2019-11-01 11:00:19 -04:00
Paul Kaplan 6eaf6312b9 Include library JSON files in package distribution
Files like src/lib/libraries/sprites.json were being used by
packages like scratch-desktop in order to fetch all the library
assets for offline access. We stopped publishing src in #5263 to
stop bloating the dist with copies of src files. Explicitly
exporting the files that are needed by other repos is a better
long-term plan.

The files are now published to dist/libraries/*.json. Once this is
merged those repos that use the src/ path need to change it to e.g.
`require('scratch-gui/dist/libraries/backdrops.json')`
2019-11-01 10:54:52 -04:00
greenkeeper[bot] d3474992b7 chore(package): update lockfile package-lock.json 2019-10-31 22:16:09 +00:00
greenkeeper[bot] bdfe83e110 chore(package): update scratch-svg-renderer to version 0.2.0-prerelease.20191031221353 2019-10-31 22:16:05 +00:00
Chris Willis-Ford 19c9db0eb1 Merge pull request #5272 from cwillisf/chromedriver-autoplay-policy
tests: set --autoplay-policy=no-user-gesture-required
2019-10-31 10:18:15 -07:00
Karishma Chadha 2b642e9ef0 Merge pull request #5269 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191029200037
Update scratch-render to the latest version 🚀
2019-10-30 16:41:06 -04:00
Christopher Willis-Ford a55f9ae9ed tests: set --autoplay-policy=no-user-gesture-required 2019-10-30 10:40:50 -07:00
Karishma Chadha 054d3b1a8f Merge pull request #5271 from kchadha/tag-hotfix-branches
Create git tags for hotfix branches.
2019-10-30 10:56:51 -04:00
Karishma Chadha a27b27fa71 Create git tags for hotfix branches. 2019-10-30 09:28:03 -04:00
greenkeeper[bot] 3f51a86d9f chore(package): update lockfile package-lock.json 2019-10-29 23:46:19 +00:00
greenkeeper[bot] 3fe0fa9b44 chore(package): update scratch-l10n to version 3.6.20191029224007
Closes #5250
2019-10-29 23:46:14 +00:00
chrisgarrity 269ee1dd8e Merge pull request #5270 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1572384380
Update scratch-blocks to the latest version 🚀[Translation update]
2019-10-29 17:59:36 -04:00
greenkeeper[bot] 46cecc0c3a chore(package): update lockfile package-lock.json 2019-10-29 21:29:13 +00:00
greenkeeper[bot] b0945f80cf chore(package): update scratch-blocks to version 0.1.0-prerelease.1572384380 2019-10-29 21:29:08 +00:00
greenkeeper[bot] 89c88fec4c chore(package): update lockfile package-lock.json 2019-10-29 20:07:37 +00:00
greenkeeper[bot] 9a43442cf5 chore(package): update scratch-render to version 0.1.0-prerelease.20191029200037 2019-10-29 20:07:32 +00:00
greenkeeper[bot] 2bf8db0dfa chore(package): update lockfile package-lock.json 2019-10-28 15:48:43 +00:00
greenkeeper[bot] 78c38af7a6 chore(package): update chromedriver to version 78.0.1
Closes #5268
2019-10-28 15:48:38 +00:00
Eric Rosenbaum 19e392d061 Merge pull request #5263 from LLK/hotfix/hoc-2-tutorials-2019
[hotfix] Add 2 HoC tutorials
2019-10-24 15:24:32 -04:00
Eric Rosenbaum f19ac7459a Don’t publish duplicate assets 2019-10-22 14:57:09 -04:00
Eric Rosenbaum 3fe729c025 Remove duplicate 2019-10-22 14:26:29 -04:00
Zoë Bentley 428b5da5b6 Reduced file size of GIFs 2019-10-22 14:26:29 -04:00
Zoë Bentley 78d831d6af Linter
# Conflicts:
#	src/lib/libraries/decks/en-steps.js
#	src/lib/libraries/decks/index.jsx
2019-10-22 14:26:29 -04:00
Zoë Bentley 8f7a9d96f1 Edited one GIF to be slower
# Conflicts:
#	src/lib/libraries/decks/en-steps.js
#	src/lib/libraries/decks/index.jsx
#	src/lib/libraries/decks/translate-video.js
2019-10-22 14:26:29 -04:00
Zoë Bentley c23678ef3d Made Travis happy (shortened length of one GIF name) 2019-10-22 14:26:29 -04:00
Zoë Bentley 6f2a0b057a Code a Cartoon 10/21 2019-10-22 14:26:29 -04:00
Zoë Bentley e73c5ce91c Changed order of tutorials
# Conflicts:
#	package-lock.json
#	package.json
2019-10-22 14:26:29 -04:00
Zoë Bentley be8873a6e0 Changed order of tutorials actually 2019-10-22 14:26:29 -04:00
Zoë Bentley 43f5f0aebc Reverted the tips-library.jsx file to its correct state 2019-10-22 14:26:29 -04:00
Zoë Bentley 84b6c33813 Optimized images and made small tweaks to GIFs 2019-10-22 14:26:29 -04:00
Zoë Bentley deff6dd385 Added first draft of Code a Cartoon video and made some other small changes 2019-10-22 14:26:29 -04:00
Zoë Bentley ca0c47f742 Draft of Code a Cartoon tutorial for Oct 1st 2019-10-22 14:26:29 -04:00
Ray Schamp 5253554fff Merge pull request #4854 from towerofnix/list-whitespace
Always display whitespace in list monitors
2019-10-22 09:46:54 -04:00
Florrie 81c22f369c Always display whitespace in all monitors 2019-10-21 20:57:09 -03:00
Karishma Chadha fde5b56e65 Merge pull request #5259 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191021180653
Update scratch-render to the latest version 🚀
2019-10-21 16:28:09 -04:00
greenkeeper[bot] c7b4e1b832 chore(package): update lockfile package-lock.json 2019-10-21 18:53:21 +00:00
greenkeeper[bot] a37868f921 chore(package): update scratch-render to version 0.1.0-prerelease.20191021180653 2019-10-21 18:53:14 +00:00
Benjamin Wheeler 395b55868b Merge pull request #5168 from benjiwheeler/clear-title-on-default-project
Refactor title handling
2019-10-21 10:52:02 -04:00
Ben Wheeler e3fa196ade revised name of updateReduxProjectTitle, updateReduxProjectTitleWithDefault 2019-10-18 17:53:28 -04:00
Ben Wheeler f4a9bfac9f in titledhoc, consolidate function calls 2019-10-18 13:41:20 -04:00
Ben Wheeler b6ff1f40b5 better names for prop functions 2019-10-18 13:40:58 -04:00
greenkeeper[bot] 98c1846c12 chore(package): update lockfile package-lock.json 2019-10-18 14:29:49 +00:00
greenkeeper[bot] 03f3f12fcc chore(package): update scratch-vm to version 0.2.0-prerelease.20191018142546
Closes #5254
2019-10-18 14:29:45 +00:00
Paul Kaplan 758b0ef1ff Merge pull request #5253 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20191017151616
Update scratch-vm to the latest version 🚀
2019-10-17 14:24:55 -04:00
Ben Wheeler 68780ae6cf added back missing canEditTitle 2019-10-17 13:26:34 -04:00
Ben Wheeler 22e2c17ff4 don’t pass onUpdateProjectTitle below titledHIC 2019-10-17 13:26:33 -04:00
Ben Wheeler 9c33bbb2ee remove TitledHOC from playground, and explicitly pass canEditTitle 2019-10-17 13:26:33 -04:00
Ben Wheeler b63ac51fb1 move project title management into titled hoc 2019-10-17 13:26:33 -04:00
Ben Wheeler 91e2fc92f3 on showing project without id, tell owner of GUI to set title to default 2019-10-17 13:26:33 -04:00
Paul Kaplan a3f0652e7d Update scratch-vm to pull in video fixes 2019-10-17 11:25:32 -04:00
greenkeeper[bot] 7193c50bbe chore(package): update lockfile package-lock.json 2019-10-17 15:19:16 +00:00
greenkeeper[bot] be0259f543 chore(package): update scratch-vm to version 0.2.0-prerelease.20191017151616 2019-10-17 15:19:12 +00:00
Benjamin Wheeler 5fed732e7e Merge pull request #5241 from benjiwheeler/extension-line-height
Fix extension modal tiles' description line height
2019-10-16 17:42:51 -04:00
Paul Kaplan 33d7181432 Merge pull request #5248 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20191015002244
Update scratch-vm to the latest version 🚀
2019-10-14 22:13:23 -04:00
greenkeeper[bot] f6fa9e3e25 chore(package): update lockfile package-lock.json 2019-10-15 00:25:41 +00:00
greenkeeper[bot] dee9323f5c chore(package): update scratch-vm to version 0.2.0-prerelease.20191015002244 2019-10-15 00:25:37 +00:00
Paul Kaplan 3513a680a6 Merge pull request #5197 from paulkaplan/fix-backpack-thumbnailing
Draw backpack thumbnails smaller
2019-10-14 12:04:47 -04:00
Ben Wheeler b8833199e1 Fix extension line height 2019-10-10 22:25:24 -04:00
chrisgarrity 38aa76fae8 Merge pull request #5239 from chrisgarrity/update-blocks
Update blocks for swahili
2019-10-10 14:48:35 -04:00
Chris Garrity 18c7b58a16 Update blocks for swahili 2019-10-10 14:29:56 -04:00
DD Liu d7d38109a8 Merge pull request #5237 from fsih/updatePaint
Update paint to add swahili to overflow languages
2019-10-10 12:58:46 -04:00
DD Liu 2317758df8 update paint to add swahili to overflow languages 2019-10-10 12:15:29 -04:00
DD Liu 25c8253138 Merge pull request #5234 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20191001200908
Greenkeeper/scratch render 0.1.0 prerelease.20191001200908
2019-10-09 15:32:57 -04:00
chrisgarrity 75f9da9f22 Merge pull request #5233 from chrisgarrity/add-swahili
change l10n version to get swahili
2019-10-09 10:05:19 -04:00
Chris Garrity 8c3ab1df78 change l10n version to get swahili 2019-10-09 09:50:39 -04:00
chrisgarrity e04c290587 Merge pull request #5232 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1570622534
Update scratch-blocks to the latest version 🚀
2019-10-09 08:36:46 -04:00
greenkeeper[bot] 527f8dd3e7 chore(package): update lockfile package-lock.json 2019-10-09 12:17:56 +00:00
greenkeeper[bot] 251db0108d chore(package): update scratch-blocks to version 0.1.0-prerelease.1570622534 2019-10-09 12:17:51 +00:00
chrisgarrity 5100a1bd8a Merge pull request #5231 from LLK/greenkeeper/scratch-l10n-3.6.20191008224547
Greenkeeper/scratch l10n 3.6.20191008224547
2019-10-09 08:17:43 -04:00
greenkeeper[bot] ee5e2324a8 chore(package): update lockfile package-lock.json 2019-10-09 01:00:21 +00:00
greenkeeper[bot] 624bf7c965 chore(package): update scratch-l10n to version 3.6.20191008224547
Closes #5230
2019-10-09 01:00:17 +00:00
zoebentley 3089503ab1 Merge pull request #5228 from zoebentley/imagine-a-world
Changed title of Imagine If tutorial to Imagine a World
2019-10-08 08:44:07 -05:00
Zoë Bentley 8cac1b1bb7 Changed title of Imagine If tutorial to Imagine a World 2019-10-07 09:49:52 -04:00
Eric Rosenbaum 67fe5185fb Merge pull request #5218 from ericrosenbaum/feature/limit-loud-rms-no-waveshaper
Limit louder effect with a max RMS (w/o waveshaper)
2019-10-02 12:13:57 -04:00
greenkeeper[bot] 9122b26d1a chore(package): update lockfile package-lock.json 2019-10-01 20:12:23 +00:00
greenkeeper[bot] efcd2c9ebc chore(package): update scratch-render to version 0.1.0-prerelease.20191001200908
Closes #5217
2019-10-01 20:12:19 +00:00
Karishma Chadha 181c7ea93f Merge pull request #5222 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20191001145300
Greenkeeper/scratch vm 0.2.0 prerelease.20191001145300
2019-10-01 10:54:32 -05:00
greenkeeper[bot] a8a0bc437a chore(package): update lockfile package-lock.json 2019-10-01 14:55:57 +00:00
greenkeeper[bot] c6bc1c3450 chore(package): update scratch-vm to version 0.2.0-prerelease.20191001145300
Closes #5191
2019-10-01 14:55:53 +00:00
Ray Schamp 1ad0f43d23 Merge pull request #5220 from rschamp/ci/circle
Add config for CircleCI
2019-09-30 15:04:18 -04:00
rschamp a3400b3b0f Disable publishing
While CircleCI is running in parallel with Travis, let Travis continue to handle the deployments.
2019-09-30 14:22:58 -04:00
Eric Rosenbaum 523667dfaf Remove waveshaper from volume effect
the waveshaper node is implemented incorrectly on Mac Safari (https://bugs.webkit.org/show_bug.cgi?id=129333) and causes extreme distortion of the sound
2019-09-27 14:26:14 -04:00
Eric Rosenbaum 5599626405 Revert "Revert "Limit louder effect with a max RMS""
This reverts commit 45cb96f2d4.
2019-09-27 14:20:34 -04:00
Paul Kaplan d31d42cf3c Merge pull request #5216 from LLK/revert-5212-greenkeeper/scratch-render-0.1.0-prerelease.20190925202615
Revert "Update scratch-render to the latest version 🚀"
2019-09-26 10:05:56 -04:00
Paul Kaplan 11646d4877 Revert "Update scratch-render to the latest version 🚀" 2019-09-26 10:03:54 -04:00
Paul Kaplan e53c8ddd85 Merge pull request #5214 from LLK/revert-5149-feature/limit-louder-rms
Revert "Limit louder effect with a max RMS"
2019-09-26 09:49:33 -04:00
Paul Kaplan 45cb96f2d4 Revert "Limit louder effect with a max RMS" 2019-09-26 09:48:15 -04:00
Chris Willis-Ford ab0d58ed6c Merge pull request #5212 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20190925202615
Update scratch-render to the latest version 🚀
2019-09-25 13:59:22 -07:00
greenkeeper[bot] bdcddf5655 chore(package): update lockfile package-lock.json 2019-09-25 20:33:27 +00:00
greenkeeper[bot] 0f0219a4b1 chore(package): update scratch-render to version 0.1.0-prerelease.20190925202615 2019-09-25 20:32:57 +00:00
Eric Rosenbaum aa2890a2ca Merge pull request #5211 from LLK/greenkeeper/scratch-audio-0.1.0-prerelease.20190925183642
Update scratch-audio to the latest version 🚀
2019-09-25 15:49:01 -04:00
greenkeeper[bot] 43bddbba14 chore(package): update lockfile package-lock.json 2019-09-25 18:38:19 +00:00
greenkeeper[bot] e4af27cd40 chore(package): update scratch-audio to version 0.1.0-prerelease.20190925183642 2019-09-25 18:38:15 +00:00
chrisgarrity d390e67542 Merge pull request #5210 from LLK/greenkeeper/scratch-blocks-0.1.0-prerelease.1569422127
Update scratch-blocks to the latest version 🚀
2019-09-25 15:54:21 +01:00
greenkeeper[bot] a8b7be6197 chore(package): update lockfile package-lock.json 2019-09-25 14:38:29 +00:00
greenkeeper[bot] 35da6ace36 chore(package): update scratch-blocks to version 0.1.0-prerelease.1569422127 2019-09-25 14:38:25 +00:00
chrisgarrity 8590ceb4ce Merge pull request #5209 from LLK/greenkeeper/scratch-l10n-3.5.20190924223720
Update scratch-l10n to the latest version 🚀
2019-09-25 15:06:51 +01:00
greenkeeper[bot] 96e637cfc0 chore(package): update lockfile package-lock.json 2019-09-25 00:52:57 +00:00
greenkeeper[bot] f1470feb0a chore(package): update scratch-l10n to version 3.5.20190924223720 2019-09-25 00:52:53 +00:00
rschamp 7070b19562 Fix npm cache order in setup 2019-09-24 09:44:19 -04:00
rschamp 931a17462a Add build to build deploy step 2019-09-23 22:19:22 -04:00
rschamp 859e636d1a Moar parallel 2019-09-23 21:55:05 -04:00
rschamp 7ccf9f5bef FIx cache ordering 2019-09-23 21:35:26 -04:00
rschamp 0f589004a1 Use npm install to get better cache benefits 2019-09-23 21:31:42 -04:00
rschamp 2df4df0791 Use granular caching 2019-09-23 21:26:06 -04:00
rschamp 41296a9624 Optimize 2019-09-23 17:31:40 -04:00
rschamp 3dbfebe923 Parallelize 2019-09-23 16:27:30 -04:00
rschamp 47271e7af5 Remove greenkeeper-lockfile
According to https://blog.greenkeeper.io/announcing-native-lockfile-support-85381a37a0d0 it’s unnecessary since Sept 2018?!

Also remove the update step, it hasn’t been necessary since we began pinning the scratch-* packages.
2019-09-23 15:35:09 -04:00
rschamp 5e0fc58f27 De-alias workflow
The requirements for npm publishing and gh-pages are different anyway.
2019-09-23 15:29:33 -04:00
rschamp 5eb8438782 Aliasify
The equivalent config for Travis is only 87 lines long, and easy to read. Can CircleCI be similarly easy to read? Is this easy? Are you still reading this?
2019-09-23 14:43:06 -04:00
rschamp 4f0bf3c5aa Add config for gh-pages deploy 2019-09-23 13:59:22 -04:00
rschamp b02e5140b9 Trim some unused config from the Travis config
We no longer use the “smoke” branch, nor do we push to master in order to deploy to S3. So remove these from the Travis config so it’s clearer what we actually use.
2019-09-23 13:50:59 -04:00
DD Liu abe79b30ff Merge pull request #5203 from LLK/greenkeeper/scratch-paint-0.2.0-prerelease.20190923154429
Greenkeeper/scratch paint 0.2.0 prerelease.20190923154429
2019-09-23 12:38:24 -04:00
greenkeeper[bot] 5d1b1fb4c0 chore(package): update lockfile package-lock.json 2019-09-23 15:57:57 +00:00
greenkeeper[bot] 9265ee6323 chore(package): update scratch-paint to version 0.2.0-prerelease.20190923154429
Closes #5201
2019-09-23 15:57:51 +00:00
Ray Schamp 519256c50c Merge pull request #5194 from rschamp/dont-build-tags
Don’t push tags to gh-pages
2019-09-23 11:14:50 -04:00
Eric Rosenbaum 17324e5340 Merge pull request #5149 from ericrosenbaum/feature/limit-louder-rms
Limit louder effect with a max RMS
2019-09-23 10:52:17 -04:00
Ray Schamp 7d01844371 Merge pull request #5196 from rschamp/max-old-space-size
Allow Node to use more memory for old space
2019-09-20 14:35:40 -04:00
rschamp 745fa360c3 Actually use the tag for npm publish 2019-09-20 14:31:55 -04:00
rschamp 51fbae655e Use circle prefix in default NPM dist channel 2019-09-20 13:59:45 -04:00
rschamp c3119aae2c Set max-old-space-size for NPM publishing 2019-09-20 13:58:54 -04:00
rschamp bc1b787974 Allow Node to use more memory for old space
This flag essentially configures how much memory Node can use. If it’s too low, then Node processes may hang as Node spends time garbage collecting. Increasing it allows more memory to be used before garbage collection is necessary.  Travis VMs have 7.5GB of memory, so set the limit to just below that to avoid running out of memory completely.
2019-09-20 13:41:34 -04:00
Paul Kaplan fb4b492f1c Draw backpack thumbnails smaller 2019-09-20 13:37:02 -04:00
rschamp e3cc730cd7 Make npm publishing do the thing 2019-09-20 13:12:12 -04:00
rschamp 46743c9bf8 Make git tagging do the thing 2019-09-20 13:12:12 -04:00
rschamp d573e34501 Add NPM tagging configuration 2019-09-20 13:12:12 -04:00
rschamp fac69fbcf4 Tag after publishing 2019-09-20 13:12:12 -04:00
rschamp 99f2ac586d Try out yaml inheritance in preparation for parallelization 2019-09-20 13:12:12 -04:00
rschamp 33dc1f7095 Remove circle branch from deploy list 2019-09-20 13:12:12 -04:00
rschamp 0707527800 Cache builds by commit not build number 2019-09-20 13:12:12 -04:00
rschamp f71e117e3a Cache git checkouts 2019-09-20 13:12:12 -04:00
rschamp d011aca301 Add NPM publish step 2019-09-20 13:12:12 -04:00
rschamp 2c3f3349b5 Add coverage report 2019-09-20 13:12:12 -04:00
rschamp 10eef7234f Add build artifact 2019-09-20 13:12:12 -04:00
rschamp 17154cefec Add back jest and build steps with reporting 2019-09-20 13:12:12 -04:00
rschamp e3d4d6e9d7 Circle doesn’t know about eslint warnings
They show up as errors
2019-09-20 13:12:12 -04:00
rschamp 89918a304f Try uploading lint results 2019-09-20 13:12:12 -04:00
rschamp 74b795ada8 Reformat 2019-09-20 13:12:12 -04:00
rschamp 40a3b857da Keep config-dependent environment vars in the config
NODE_ENV isn’t one we’d want to change dynamically, so keep it checked in to the config
2019-09-20 13:12:12 -04:00
rschamp 615927f3f2 Add initial CircleCI config 2019-09-20 13:12:12 -04:00
rschamp 3d1ad740dd Don’t push tags to gh-pages
These builds make our gh-pages branch too large for GitHub to handle.
2019-09-20 10:18:15 -04:00
DD Liu 4c76f654b7 Merge pull request #5189 from fsih/reupdateAssets
Reupdate watermelon a and basketball background with asset exported from sketch
2019-09-19 16:31:57 -04:00
DD Liu bd835adcd4 Reupdate watermelon a and basketball background with asset exported from sketch 2019-09-19 15:21:17 -04:00
Karishma Chadha 78e4cfce68 Merge pull request #5183 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20190918022946
Update scratch-vm to the latest version 🚀
2019-09-18 09:34:28 -07:00
Eric Rosenbaum deb5889a2c Merge pull request #5182 from LLK/greenkeeper/scratch-l10n-3.5.20190917223712
Update scratch-l10n to the latest version 🚀
2019-09-18 11:10:26 -04:00
greenkeeper[bot] 2030ad54bc chore(package): update lockfile package-lock.json 2019-09-18 02:32:41 +00:00
greenkeeper[bot] a95604008d chore(package): update scratch-vm to version 0.2.0-prerelease.20190918022946 2019-09-18 02:32:37 +00:00
greenkeeper[bot] bb21288cff chore(package): update lockfile package-lock.json 2019-09-17 22:39:32 +00:00
greenkeeper[bot] f31977489f chore(package): update scratch-l10n to version 3.5.20190917223712 2019-09-17 22:39:28 +00:00
Paul Kaplan f179587c2e Merge pull request #5180 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20190917163837
Update scratch-vm to the latest version 🚀
2019-09-17 14:07:04 -04:00
greenkeeper[bot] fa3d9c9e1e chore(package): update lockfile package-lock.json 2019-09-17 16:41:32 +00:00
greenkeeper[bot] 459eb2b767 chore(package): update scratch-vm to version 0.2.0-prerelease.20190917163837 2019-09-17 16:41:29 +00:00
Paul Kaplan 4e1c6afe02 Merge pull request #5178 from paulkaplan/skip-flakey
Skip flakey test
2019-09-17 12:35:56 -04:00
Paul Kaplan dc69ccea64 Skip flakey test 2019-09-17 12:18:03 -04:00
Paul Kaplan 03d9f8f2c6 Merge pull request #5169 from LLK/recording-glitch
Use a larger buffer size for recording to prevent glitching
2019-09-17 11:10:20 -04:00
Paul Kaplan 5d006cf677 Merge pull request #5175 from LLK/greenkeeper/chromedriver-77.0.0
Update chromedriver to the latest version 🚀
2019-09-17 10:54:50 -04:00
DD Liu 6c9657e453 Merge pull request #5172 from fsih/fixAndroidAssets
Fix assets that aren't working correctly in Android libraries
2019-09-17 10:24:24 -04:00
greenkeeper[bot] e82ec50e7b chore(package): update lockfile package-lock.json 2019-09-17 00:00:43 +00:00
greenkeeper[bot] 09ccbb4c01 chore(package): update chromedriver to version 77.0.0 2019-09-17 00:00:38 +00:00
Karishma Chadha e3b2ab22a6 Merge pull request #5170 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20190916185023
Update scratch-vm to the latest version 🚀
2019-09-16 18:56:29 -04:00
DD Liu a2bc04e5d4 Fix assets that aren't working correctly in Android libraries 2019-09-16 16:27:55 -04:00
greenkeeper[bot] a4c81e55c0 chore(package): update lockfile package-lock.json 2019-09-16 18:57:52 +00:00
greenkeeper[bot] 2b571d9d83 chore(package): update scratch-vm to version 0.2.0-prerelease.20190916185023 2019-09-16 18:57:47 +00:00
Ray Schamp 6caaaf6f36 Merge pull request #5166 from rschamp/debug-chromedriver
Use not broken Travis VM distribution
2019-09-16 10:53:12 -04:00
Paul Kaplan 2b9550f3d9 Use single setState call instead of two 2019-09-13 14:05:07 -04:00
Paul Kaplan 94bb677fd8 Force meter and waveform to separate paint layer 2019-09-13 14:04:54 -04:00
Paul Kaplan 5b6f33e1a4 Use a larger buffer size for recording to prevent glitching 2019-09-13 12:46:25 -04:00
Paul Kaplan 32723a8876 Merge pull request #5114 from LLK/default-last-asset
Default blocks to last asset instead of first
2019-09-13 09:51:54 -04:00
rschamp a1fc068dd1 Un-hack 2019-09-12 14:50:32 -04:00
rschamp 225fc772f6 Bump travis dist version 2019-09-12 14:42:20 -04:00
Karishma Chadha 2a167ba775 Merge pull request #5165 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20190912174749
Update scratch-render to the latest version 🚀
2019-09-12 13:59:54 -04:00
greenkeeper[bot] 193717a1a9 chore(package): update lockfile package-lock.json 2019-09-12 17:49:51 +00:00
greenkeeper[bot] 4fc140ec2c chore(package): update scratch-render to version 0.1.0-prerelease.20190912174749 2019-09-12 17:49:47 +00:00
Paul Kaplan 2429f63e02 Emit projectDidSave for server saves, not just file exports 2019-09-12 12:12:01 -04:00
Ray Schamp 2ffac96579 Merge pull request #5163 from rschamp/bump-chromedriver
Ugly hack to keep being able to publish
2019-09-12 11:50:41 -04:00
rschamp bc57adc12c Ugly hack to keep being able to publish 2019-09-12 11:32:02 -04:00
Karishma Chadha dc64aa92fd Merge pull request #5151 from LLK/greenkeeper/scratch-vm-0.2.0-prerelease.20190904154449
Update scratch-vm to the latest version 🚀
2019-09-11 12:41:30 -04:00
chrisgarrity 8b5ff14ac9 Merge pull request #5161 from LLK/greenkeeper/scratch-l10n-3.5.20190910223701
Greenkeeper/scratch l10n 3.5.20190910223701
2019-09-11 11:56:30 -04:00
Karishma Chadha 6641c4696b Merge pull request #5154 from LLK/greenkeeper/scratch-render-0.1.0-prerelease.20190905011937
Update scratch-render to the latest version 🚀
2019-09-11 10:16:16 -04:00
Paul Kaplan a680d30930 Merge pull request #5143 from towerofnix/selector-padding
Use list-area:after to pad scroll area
2019-09-11 09:22:10 -04:00
Paul Kaplan 1dce71e787 Merge pull request #5115 from paulkaplan/fix-bluetooth-keyboards
Fix bluetooth keyboards with iOS keypress blocks
2019-09-11 09:12:40 -04:00
greenkeeper[bot] 1451416e6b chore(package): update lockfile package-lock.json 2019-09-10 22:39:16 +00:00
greenkeeper[bot] f4f20203f4 chore(package): update scratch-l10n to version 3.5.20190910223701
Closes #5150
2019-09-10 22:39:12 +00:00
Eric Rosenbaum 2df0c80b30 Simplify chunk counting logic 2019-09-10 10:35:19 -04:00
Eric Rosenbaum 6414985461 Calc tooLoud with chunkLevels, disable louder btn 2019-09-05 13:49:22 -04:00
greenkeeper[bot] 230debb911 chore(package): update lockfile package-lock.json 2019-09-05 01:21:30 +00:00
greenkeeper[bot] b42291d10b chore(package): update scratch-render to version 0.1.0-prerelease.20190905011937 2019-09-05 01:21:26 +00:00
greenkeeper[bot] f9ea1088e8 chore(package): update lockfile package-lock.json 2019-09-04 15:56:55 +00:00
greenkeeper[bot] bb837f57e2 chore(package): update scratch-vm to version 0.2.0-prerelease.20190904154449 2019-09-04 15:56:47 +00:00
Eric Rosenbaum 059d3f709b Use a waveshaper to hard limit samples 2019-09-04 11:01:10 -04:00
Eric Rosenbaum 26ca5da725 Limit louder effect with a max RMS 2019-09-03 18:13:45 -04:00
Florrie b74f19e6e6 Use list-area:after to pad scroll area 2019-09-02 23:26:46 -03:00
Paul Kaplan 7b9aed73f3 Fix multi-word matching in the blocks 2019-08-22 09:44:22 -04:00
Paul Kaplan 280f139ba2 Fix costume test 2019-08-21 16:05:29 -04:00
Paul Kaplan def5cdc450 Send keyCode if the key information is gone 2019-08-21 15:28:04 -04:00
Paul Kaplan 79fe377f19 Update integration tests 2019-08-21 15:17:34 -04:00
Paul Kaplan b2dd3ed421 Default blocks to last asset instead of first 2019-08-21 14:56:46 -04:00
Paul Kaplan 28cda95346 Allow some kind of downloading to work on Safari 2019-08-15 14:10:42 -04:00
Florrie 639fc6a994 Always display whitespace in list monitors 2019-05-26 11:18:25 -03:00
351 changed files with 23404 additions and 13871 deletions

No files matched your search

+207
View File
@@ -0,0 +1,207 @@
version: 2.1
aliases:
- &save_git_cache
save_cache:
paths:
- .git
key: v1-git-{{ .Revision }}
- &restore_git_cache
restore_cache:
keys:
- v1-git-{{ .Revision }}
- v1-git-
- &save_build_cache
save_cache:
paths:
- build
key: v1-build-{{ .Revision }}
- &restore_build_cache
restore_cache:
keys:
- v1-build-{{ .Revision }}
- &save_dist_cache
save_cache:
paths:
- dist
key: v1-dist-{{ .Revision }}
- &restore_dist_cache
restore_cache:
keys:
- v1-dist-{{ .Revision }}
- &save_npm_cache
save_cache:
paths:
- node_modules
key: v1-npm-{{ checksum "package-lock.json" }}
- &restore_npm_cache
restore_cache:
keys:
- v1-npm-{{ checksum "package-lock.json" }}
- v1-npm-
- &defaults
docker:
- image: circleci/node:8.16-browsers
working_directory: ~/repo
jobs:
setup:
<<: *defaults
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- run: npm install
- *save_git_cache
- *save_npm_cache
lint:
<<: *defaults
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- run:
name: Lint
command: npm run test:lint -- --quiet --output-file test-results/eslint/results.xml --format junit
- store_test_results:
path: test-results
unit:
<<: *defaults
environment:
JEST_JUNIT_OUTPUT_NAME: results.xml
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- run:
name: Unit
environment:
JEST_JUNIT_OUTPUT_DIR: test-results/unit
command: npm run test:unit -- --reporters="default" --reporters="jest-junit" --coverage --coverageReporters=text --coverageReporters=lcov
- store_artifacts:
path: coverage
- store_test_results:
path: test-results
build:
<<: *defaults
environment:
NODE_ENV: production
NODE_OPTIONS: --max-old-space-size=4000
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- run:
name: Build
command: npm run build
- *save_build_cache
- *save_dist_cache
store_build:
<<: *defaults
steps:
- *restore_build_cache
- store_artifacts:
path: build
store_dist:
<<: *defaults
steps:
- *restore_dist_cache
- store_artifacts:
path: dist
integration:
<<: *defaults
parallelism: 2
environment:
JEST_JUNIT_OUTPUT_NAME: results.txt
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- *restore_build_cache
- run:
name: Integration
environment:
JEST_JUNIT_OUTPUT_DIR: test-results/integration
command: |
export TESTFILES=$(circleci tests glob "test/integration/*.test.js" | circleci tests split --split-by=timings)
$(npm bin)/jest ${TESTFILES} --reporters="default" --reporters="jest-junit"
- store_test_results:
path: test-results
deploy-npm:
<<: *defaults
environment:
NODE_OPTIONS: --max-old-space-size=4000
steps:
- *restore_git_cache
- *restore_dist_cache
- checkout
- run: |
echo export RELEASE_VERSION="0.1.0-prerelease.$(date +'%Y%m%d%H%M%S')" >> $BASH_ENV
echo export NPM_TAG=circlelatest >> $BASH_ENV
if [ "$CIRCLE_BRANCH" == "master" ]
then echo export NPM_TAG=circlestable >> $BASH_ENV
fi
if [[ "$CIRCLE_BRANCH" == hotfix/* ]] # double brackets are important for matching the wildcard
then echo export NPM_TAG=circlehotfix >> $BASH_ENV
fi
- run: npm version --no-git-tag-version $RELEASE_VERSION
- run: |
npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN
npm publish --tag $NPM_TAG
- run: git tag $RELEASE_VERSION
- run: git push $CIRCLE_REPOSITORY_URL $RELEASE_VERSION
deploy-gh-pages:
<<: *defaults
steps:
- *restore_git_cache
- checkout
- *restore_npm_cache
- *restore_build_cache
- run: |
git config --global user.email $(git log --pretty=format:"%ae" -n1)
git config --global user.name $(git log --pretty=format:"%an" -n1)
- run: npm run deploy -- -e $CIRCLE_BRANCH
workflows:
version: 2
build-test-deploy:
jobs:
- setup
- lint:
requires:
- setup
- unit:
requires:
- setup
- build:
requires:
- setup
- integration:
requires:
- build
- store_build:
requires:
- build
- store_dist:
requires:
- build
# Disable deployment while running in parallel with Travis
# - deploy-npm:
# requires:
# - lint
# - unit
# - integration
# - build
# filters:
# branches:
# only:
# - master
# - develop
# - /^hotfix\/.*/
# - deploy-gh-pages:
# requires:
# - lint
# - unit
# - integration
# - build
+1
View File
@@ -12,6 +12,7 @@
*.svg binary
# Prefer LF for most file types
*.css text eol=lf
*.frag text eol=lf
*.htm text eol=lf
*.html text eol=lf
+1 -1
View File
@@ -14,6 +14,6 @@ npm-*
/dist
/.opt-in
# generated translation files
# Generated translation files
/translations
/locale
+3
View File
@@ -5,6 +5,9 @@
/node_modules
npm-*
# Double copies of all the static assets and tutorial gifs
/src
# Testing
/.nyc_output
/coverage
+6 -26
View File
@@ -1,31 +1,24 @@
language: node_js
sudo: required
dist: trusty
dist: xenial
addons:
chrome: stable
node_js:
- 8
- 10
env:
global:
- CHROMEDRIVER_VERSION=LATEST
- NODE_ENV=production
- SMOKE_URL=https://llk.github.io/scratch-gui/$TRAVIS_PULL_REQUEST_BRANCH
- NODE_OPTIONS=--max-old-space-size=7250
- NPM_TAG=latest
- RELEASE_VERSION="0.1.0-prerelease.$(date +'%Y%m%d%H%M%S')"
cache:
directories:
- node_modules
before_install:
# package-lock.json was introduced in npm@5
- '[[ $(node -v) =~ ^v9.*$ ]] || npm install -g npm@latest' # skipped when using node 9
- npm install -g greenkeeper-lockfile
install:
- npm --production=false install
- npm --production=false update
before_script: greenkeeper-lockfile-update
script:
- npm test
- if [ "$TRAVIS_EVENT_TYPE" == "pull_request" ] && [ "$TRAVIS_BRANCH" == "master" ]; then npm run test:smoke; fi
after_script: greenkeeper-lockfile-upload
before_deploy:
- >
if [ -z "$BEFORE_DEPLOY_RAN" ]; then
@@ -42,7 +35,6 @@ deploy:
branch:
- master
- develop
- smoke
- hotfix/*
condition: $TRAVIS_EVENT_TYPE != cron
skip_cleanup: true
@@ -55,25 +47,15 @@ deploy:
- master
- develop
- smoke
- hotfix/*
condition: $TRAVIS_EVENT_TYPE != cron
skip_cleanup: true
script: if npm info scratch-gui | grep -q $RELEASE_VERSION; then git tag $RELEASE_VERSION && git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git $RELEASE_VERSION; fi
- provider: s3
on:
branch:
- master
- $PREVIEW_BRANCH
condition: $TRAVIS_EVENT_TYPE != cron
access_key_id: $AWS_ACCESS_KEY_ID
secret_access_key: $AWS_SECRET_ACCESS_KEY
bucket: $AWS_BUCKET_NAME
acl: public_read
skip_cleanup: true
local_dir: build
- provider: script
on:
all_branches: true
condition: $TRAVIS_EVENT_TYPE != cron && ! $TRAVIS_BRANCH =~ ^greenkeeper/
tags: false # Don't push tags to gh-pages
skip_cleanup: true
script: npm run deploy -- -x -e $TRAVIS_BRANCH -r https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git
- provider: script
@@ -82,5 +64,3 @@ deploy:
condition: $TRAVIS_EVENT_TYPE == cron
skip_cleanup: true
script: npm run i18n:src && npm run i18n:push
after_deploy:
- 'curl -X POST -H "Fastly-Key: $FASTLY_TOKEN" -H "Accept: application/json" https://api.fastly.com/service/$FASTLY_SERVICE_ID/purge_all'
+58 -1
View File
@@ -18,6 +18,8 @@ cd scratch-gui
npm install
```
**You may want to add `--depth=1` to the `git clone` command because there are some [large files in the git repository history](https://github.com/LLK/scratch-gui/issues/5140).**
## Getting started
Running the project requires Node.js to be installed.
@@ -74,7 +76,7 @@ See [jest cli docs](https://facebook.github.io/jest/docs/en/cli.html#content) fo
*NOTE: If you're a windows user, please run these scripts in Windows `cmd.exe` instead of Git Bash/MINGW64.*
Before running any test, make sure you have run `npm install` from this (scratch-gui) repository's top level.
Before running any tests, make sure you have run `npm install` from this (scratch-gui) repository's top level.
#### Main testing command
@@ -194,5 +196,60 @@ Further reading: [Stack Overflow](https://stackoverflow.com/questions/46602286/n
You can publish the GUI to github.io so that others on the Internet can view it.
[Read the wiki for a step-by-step guide.](https://github.com/LLK/scratch-gui/wiki/Publishing-to-GitHub-Pages)
## Understanding the project state machine
Since so much code throughout scratch-gui depends on the state of the project, which goes through many different phases of loading, displaying and saving, we created a "finite state machine" to make it clear which state it is in at any moment. This is contained in the file src/reducers/project-state.js .
It can be hard to understand the code in src/reducers/project-state.js . There are several types of data and functions used, which relate to each other:
### Loading states
These include state constant strings like:
* `NOT_LOADED` (the default state),
* `ERROR`,
* `FETCHING_WITH_ID`,
* `LOADING_VM_WITH_ID`,
* `REMIXING`,
* `SHOWING_WITH_ID`,
* `SHOWING_WITHOUT_ID`,
* etc.
### Transitions
These are names for the action which causes a state change. Some examples are:
* `START_FETCHING_NEW`,
* `DONE_FETCHING_WITH_ID`,
* `DONE_LOADING_VM_WITH_ID`,
* `SET_PROJECT_ID`,
* `START_AUTO_UPDATING`,
### How transitions relate to loading states
As this diagram of the project state machine shows, various transition actions can move us from one loading state to another:
![Project state diagram](docs/project_state_diagram.svg)
_Note: for clarity, the diagram above excludes states and transitions relating to error handling._
#### Example
Here's an example of how states transition.
Suppose a user clicks on a project, and the page starts to load with url https://scratch.mit.edu/projects/123456 .
Here's what will happen in the project state machine:
![Project state example](docs/project_state_example.png)
1. When the app first mounts, the project state is `NOT_LOADED`.
2. The `SET_PROJECT_ID` redux action is dispatched (from src/lib/project-fetcher-hoc.jsx), with `projectId` set to `123456`. This transitions the state from `NOT_LOADED` to `FETCHING_WITH_ID`.
3. The `FETCHING_WITH_ID` state. In src/lib/project-fetcher-hoc.jsx, the `projectId` value `123456` is used to request the data for that project from the server.
4. When the server responds with the data, src/lib/project-fetcher-hoc.jsx dispatches the `DONE_FETCHING_WITH_ID` action, with `projectData` set. This transitions the state from `FETCHING_WITH_ID` to `LOADING_VM_WITH_ID`.
5. The `LOADING_VM_WITH_ID` state. In src/lib/vm-manager-hoc.jsx, we load the `projectData` into Scratch's virtual machine ("the vm").
6. When loading is done, src/lib/vm-manager-hoc.jsx dispatches the `DONE_LOADING_VM_WITH_ID` action. This transitions the state from `LOADING_VM_WITH_ID` to `SHOWING_WITH_ID`
7. The `SHOWING_WITH_ID` state. Now the project appears normally and is playable and editable.
## Donate
We provide [Scratch](https://scratch.mit.edu) free of charge, and want to keep it that way! Please consider making a [donation](https://secure.donationpay.org/scratchfoundation/) to support our continued engineering, design, community, and resource development efforts. Donations of any size are appreciated. Thank you!
+3
View File
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1381px" height="1012px" viewBox="-0.5 -0.5 1381 1012" content="&lt;mxfile host=&quot;www.draw.io&quot; modified=&quot;2020-02-04T16:31:44.889Z&quot; agent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36&quot; etag=&quot;8a2X5Jj65jOGG04xBBh1&quot; version=&quot;12.6.4&quot; type=&quot;device&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;58cdce13-f638-feb5-8d6f-7d28b1aa9fa0&quot;&gt;7V1Zd6O4Ev41OffJHImdRydxujOT7XSSXuYlh9g4YcY2GUw6yfz6KxYBEqtBErjbeYkthMCo9FXVV6XiSDlZv3/y7ZfnS2/hrI5ksHg/Uk6PZBmqEKJ/YctH0gKBFrc8+e4iacsabt3/nKQRJK2v7sLZEh0Dz1sF7gvZOPc2G2ceEG2273tvZLeltyKv+mI/JVcEWcPt3F45hW7f3EXwnP6MXPfPjvv0nFza1JIDj/b8nyffe90k1zuSlWX0Fx9e23ispP/22V54b7kmZXaknPieF8Sf1u8nzip8uPixxeedVRxN79t3NkGbExRTfrTgo6ZB+LgAS2OSjPDTXr06+CdENxp84IeDRkDzgL4cPwfrFWqD6CP6IS/h8W1g+8FtYAfh8aW7Wp14K8+PTlRA9Bd2DnzvHyd3ZLlMjkSPzllkg8ZPJzw099buPPm8sh+d1XH6rPFIG28TXdbbBGf22l2F4vfV8Rf2xk6aE1GDcvK97O7slfu0QW1z9AwddPB44fpIyFwvbNx6r+EUHhcfNH5yjh8477mm5MF/cry1E/gfqEtyVMeLIlklE6gnUvGWyZySND3npA232YmUP6VDZzONPiSTXT7x/z3CCw98/uv8z5/G2fftuxxsLieqWZzsBVoYyVfPD569J29jr2ZZ6/H81f+ZzljW5cLzXpLGv50g+EievP0aeKTkOO9u8D2cV0lLvv3IHTl9T6Y8+vKBv2zQz82dFH79kT+WnRZ9w+dVzhqaVn/uVKyJZJqQZD85Qc3jS55e+Mhq5993Vnbg/iSxps9knn9Tzq//Mh+Xp856onvw6uz934lSspL1VZAIPjHL+r+vHj4w2UYTNUUdIHh5zw6iT0/h/9Prq9nDxfX09Pzq08PXy4dv53efH85P8eDoXuPx494FgUKLIyAFoLDewiXkIjCeJgfW7mIRiZrvoJuzH6Ohwul88dxNED037fhIO60GhgyG8R0VlmmqTJLx87ohE5eaZVO5zidAUlVFjQdrPffJcDfhT8zGope+t1xukUzSspLeRCvxqRL4StHBUxu3bV/sTStxgmXiVCtJ8dDk5R59uqWtPFtl11959mIbzrLv/Y1m/9QO7PDRbBBMoSewrhTrqptpkn9Sw709u4Fz+2JH2POGrClqafjzBDdltahPQ4Ge1+vTkWhQBtoyXY4f1PecskwVaF5b6ry0JSzMbbOy7KUfIdDzGlICWGGyVZKEQg9HvHF8Fz2ycCZ7aFG9qEULfQzWGjQ6der79keuQ6I2KkFW0wxC1CBlQxcwGdR0Rx/i63dF51LZM3RG2j2eT7ByN84Er5roaLi8tCJc3s7uHm6+XP8xO7nLQXUGg28uWowpmp4vwivIur0OgS0BxPBxdUXPkVgPjSZBFbxVWRl1xoNpQtJPMJiYEhMKUHUOlkXps1E64CapNQV5GcxwrvQxyEN5C+WAUub4jxVQ0E2E97HXQIJM27m7eUKtentYwT5db1hBLommkvSDzAZVVBKrhKGKJsgaY2VUxWOYxg6kB09TrNyx5WKOFWTG1EmhgbpGDhHfaHJWJjq72nW6SbkQ9XadpdZ152TXyYxguACzd9Mvd3na5uz8YvZwfxO27A1mtkRJTF+wML5kA1DCyQYmddLFmMgWB6CsWvjMpevqOpatWWtZOtAg3WgQjQKlSRqTGowHMfbFnhcbNTCKSraKaB1JxICX7okiBmezu5PPoe6hWN7MdEd4VyBi90oxsYwpGE2KSVGxrZAiQT/NxFfzGA2yxTKkUCVqYgIKTyViDJa+tw5HdJAX4B9iCiNRpnRMQbMGVqVQeEyhk/ZUCO0pAWjs5P2Gh9g4sjhfqNGTxR25u7IK6S0otF1f4cp2gNhSFW7ygdnWiQDX93ddALffjZCGQ0oR5vjB1jfidlUFZtmNIRNi4wVJD3SXQUj4kTf67PhOOKnbzf/C6yBjwdlubSQDWrUrlTYX7nYPeVD2phOsB31kO2mqbpJOPWDi1dNxGgnIVv5PhIuPfwpzKz630q9m3x5OZ2fT+4u7/mu6Z1ZGu3V9sKDE0BFCszJkW3mcyxqw50ugQ2MxsTpYT7l5rX/6zmYxDVOLw5FenE3ckjx3s3a6W84bnp+VswzqZqfeImrBOuhDsQ6lcK13mLTxhoPrQr21k8LeQu3FBbEKB9dzQZVKpJoLOpg4eM3UWjgQ9qSDsEvMwWapWyNCPJdU/koMGaEk0cJZ2q+roCXreTBuhjVuBqeHtC700C+3P6MuVWEAIqhf7Kwp1Z4fOVOlbMv4k71Vus25AiwzNTUyIiP308BpqgBJK1ADMNHI5eHAIXeDwRzWAMmoz3QvXdI9cIQdLYxza4FMnsIoowlCi/K/k9Spqpymwgl452rhhPLjvbOeyiXNEoSCd9cPt9Ovsz0DsY6eQ82irgMxS4MWISITyAbIdIlKeoKKKOdCrZSvfo5EYz6dAFeCySAU3xq6JhTlKu3slrCNpVylgRSSE/Yekxt2w/vfOFF8HURyJCB8cnCturlWpj4gb1zuGHThIflYO2239RGeVeZoMfetzJa+lczatepkE6kGKVpqw/Y9ur9p8Td4qvXRXm22QVAhowcA4uTyPKu2944j04B0I11r6NhZxHkjChOTS5MlqsaIbIiyubQu+/x+D7KqNaCOq6IIbEri7Lc55f7mdHoX4sfx7Oz6y+zh5Mss/n5yffPjN4aPeCFVwgeSWquUIerJWfDgmcqDWYOy2oTlBRWlHVRACQCTtL+Sc2sAo2wDX/dkyF7Igl38sSALK4OoHFkup1f304sUYPYGS7I9wnJ6gucvHD/X+Sz64wI8emMiHTAU0m7BPkBfzlshRwWSZYL8nyoMnIa1YgAgXUNdV9vaMqZMARQAewRQeMCxAFR1nK4fgxgD1PT+7roMnkj6cGzwJB6Q6i2hsNCabJDQwahWClQhWlC5VF4yf1hXJCis0oHepdQBO0gKK8VkkBQqgYg9bGM07UZYda530M8yYl6Dqh/wVJdxZAE8X2aX598PmNO42uq8L6iRkMOm0qMmqSTGTFS00oRhTJdN3b0xJjNeZDZMTLOZwdwPKp9NhdppqKpUHCPGr94JAfR1tAbyWzNr+/Nhv3E8WTSPlOOlR+/6cQCyxi3lumlSLLTOBMp0XbLIyL/Ox1wqlbYucT1moTy5ZSyPMo2MJtuIgNpSCGNmJZVv5Rce1VNIoFKs+kQnuj9MKAOuwMaNH2dZdPPXhr5qCKh1Gy1QWvK1fzU8HvW6y5UqKMykSK/QVOUc8IX0eEuiikI+ubtXyAsA+eWJ7mzdaWQ0VwP11h1M5bjrCeiSAuxBXpvNfqGidyzhEDaXHFYBmQPKiEfT0AKnCoRaEhCWBtpUHaNrwaHbz9ffyusNHZIHBZTtUbATO9zGrC7Kt4e+jVjXPA2LlqzSkoUFkmVRBXySc2u0biaqlTGhneha3nyLphiSSiKNKsuSBXMMPrW1tYKBKSphw5TMXDRS2e0yjHZ+aJR/o8pK7V039Oe0r4NXLZJoX0cZr1O3qW1vMxKFc95ac1lcgHc0Mao+iIkhUaZA044jlvUIKwhIAXtDts6mfFtHtKkDVyM8KV6dLGIYP8zDtvRxmD/0tvThzR+1S+GdvuYPnRhj1Js/JdYJadRUzkwjZyCquKCB43+pDqcmlJFtUXUdvrYCr53wMQmwl0Eg4Yo/XsiVyEPVt4Ogp9LHm8Go/aZAMpR82TwML/ytAmPYbD/iZSCgHs8yd84gYuUpn8p810LrYqsqazjsV2KDb27xL8EuNpcjZ/jmIRz6ZeQ54CAzRViaHDCjXHENsnG0R05dcdtDQ5S6dDmzwxA+AeailqFSXRSDsp4YpeAYNDvZEKku9K+qyJFy6P36i9jfKh8i4eMM/cjNW1Flk0xnZAPPikZX/5hwKf9R/ir0YeumQbmDXbdrRhDnuHhr409mAd67Ym4B2xsw0TD69ReSTYS3VnFK/S7brj/69G/2iKjUk21o9aoGm+A3lVqhwBQR+Tu2LKrCN4a+Cy9/ONC/AkrnDE//6uMpndNQKDDHmuS2a7fZYsB4GyQseTtcXcrKSHYjydVcCoN3yTRuRsqs/a7XYXO3VbHl0atP8bunGv0NXQEUH6SxcTiIQXmwQbULu88KKVW0OywOsmXh/mxzVX61BXcMQlfEl1Fz9EtG9uN2D5TTP+RgFjExi7IX4WIGePCSgro8pF2EX8uX2kZKhxB5DwtH0M5KOhlUbVlqmRnVWb1Bm0GO296VrBFvYVQQTpmFAS2TTNHsyWgKMCKqs9P6GRFxIaQGE6IfIVAQWcZvhmtnTRxeDzdOpTwCskIdUCkDyQL5WECYyAa6lfs1x1BurnWdhZHRGNXMOgedvYcZ5xzUdMWGyVzgUaNSOLDQ9CUCoCQT42qSQtSSE1ZUJcVP1mo9LB92UOoLine truncated

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

+4008 -1505
View File
File diff suppressed because it is too large. Load diff
+15 -13
View File
@@ -6,7 +6,7 @@
"scripts": {
"build": "npm run clean && webpack --progress --colors --bail",
"clean": "rimraf ./build && mkdirp build && rimraf ./dist && mkdirp dist",
"deploy": "touch build/.nojekyll && gh-pages -t -d build -m \"Build for $(git log --pretty=format:%H -n1)\"",
"deploy": "touch build/.nojekyll && gh-pages -t -d build -m \"Build for $(git log --pretty=format:%H -n1) [skip ci]\"",
"prune": "./prune-gh-pages.sh",
"i18n:push": "tx-push-src scratch-editor interface translations/en.json",
"i18n:src": "rimraf ./translations/messages/src && babel src > tmp.js && rimraf tmp.js && build-i18n-src ./translations/messages/src ./translations/ && npm run i18n:push",
@@ -44,7 +44,7 @@
"babel-loader": "^8.0.4",
"base64-loader": "1.0.0",
"bowser": "1.9.4",
"chromedriver": "76.0.0",
"chromedriver": "80.0.0",
"classnames": "2.2.6",
"computed-style-to-inline-style": "3.0.0",
"copy-webpack-plugin": "^4.5.1",
@@ -67,6 +67,7 @@
"immutable": "3.8.2",
"intl": "1.2.5",
"jest": "^21.0.0",
"jest-junit": "^7.0.0",
"js-base64": "2.4.9",
"keymirror": "0.1.1",
"lodash.bindall": "4.4.0",
@@ -77,9 +78,9 @@
"lodash.pick": "4.4.0",
"lodash.throttle": "4.0.1",
"minilog": "3.1.0",
"mkdirp": "^0.5.1",
"mkdirp": "^1.0.3",
"omggif": "1.0.9",
"papaparse": "4.6.2",
"papaparse": "5.1.1",
"postcss-import": "^12.0.0",
"postcss-loader": "^3.0.0",
"postcss-simple-vars": "^5.0.1",
@@ -106,14 +107,14 @@
"redux-mock-store": "^1.2.3",
"redux-throttle": "0.1.1",
"rimraf": "^2.6.1",
"scratch-audio": "0.1.0-prerelease.20190114210212",
"scratch-l10n": "3.5.20190827223456",
"scratch-blocks": "0.1.0-prerelease.1568071968",
"scratch-paint": "0.2.0-prerelease.20190822205009",
"scratch-render": "0.1.0-prerelease.20190904212449",
"scratch-storage": "1.3.2",
"scratch-svg-renderer": "0.2.0-prerelease.20190822202608",
"scratch-vm": "0.2.0-prerelease.20190822194548",
"scratch-audio": "0.1.0-prerelease.20190925183642",
"scratch-blocks": "0.1.0-prerelease.20200512201140",
"scratch-l10n": "3.9.20200512220101",
"scratch-paint": "0.2.0-prerelease.20200519001920",
"scratch-render": "0.1.0-prerelease.20200512203149",
"scratch-storage": "1.3.3",
"scratch-svg-renderer": "0.2.0-prerelease.20200507183648",
"scratch-vm": "0.2.0-prerelease.20200512204241",
"selenium-webdriver": "3.6.0",
"startaudiocontext": "1.2.1",
"style-loader": "^0.23.0",
@@ -138,7 +139,8 @@
],
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/test/__mocks__/fileMock.js",
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js"
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js",
"editor-msgs(\\.js)?$": "<rootDir>/test/__mocks__/editor-msgs-mock.js"
}
}
}
+9 -1
View File
@@ -50,8 +50,16 @@ $fade-out-distance: 100px;
overflow-y: scroll;
display: flex;
flex-direction: column;
}
.list-area:after {
/* Make sure there is room to scroll beyond the last tile */
padding-bottom: 70px;
content: '';
display: block;
height: 70px;
width: 100%;
flex-shrink: 0;
order: 99999999;
}
.list-item {
+6 -4
View File
@@ -89,12 +89,12 @@ const GUIComponent = props => {
loading,
logo,
renderLogin,
onClickAbout,
onClickAccountNav,
onCloseAccountNav,
onLogOut,
onOpenRegistration,
onToggleLoginOpen,
onUpdateProjectTitle,
onActivateCostumesTab,
onActivateSoundsTab,
onActivateTab,
@@ -106,6 +106,7 @@ const GUIComponent = props => {
onRequestCloseTelemetryModal,
onSeeCommunity,
onShare,
onShowPrivacyPolicy,
onTelemetryModalCancel,
onTelemetryModalOptIn,
onTelemetryModalOptOut,
@@ -163,6 +164,7 @@ const GUIComponent = props => {
onOptIn={onTelemetryModalOptIn}
onOptOut={onTelemetryModalOptOut}
onRequestClose={onRequestCloseTelemetryModal}
onShowPrivacyPolicy={onShowPrivacyPolicy}
/>
) : null}
{loading ? (
@@ -219,6 +221,7 @@ const GUIComponent = props => {
logo={logo}
renderLogin={renderLogin}
showComingSoon={showComingSoon}
onClickAbout={onClickAbout}
onClickAccountNav={onClickAccountNav}
onClickLogo={onClickLogo}
onCloseAccountNav={onCloseAccountNav}
@@ -228,7 +231,6 @@ const GUIComponent = props => {
onSeeCommunity={onSeeCommunity}
onShare={onShare}
onToggleLoginOpen={onToggleLoginOpen}
onUpdateProjectTitle={onUpdateProjectTitle}
/>
<Box className={styles.bodyWrapper}>
<Box className={styles.flexWrapper}>
@@ -390,6 +392,7 @@ GUIComponent.propTypes = {
onActivateCostumesTab: PropTypes.func,
onActivateSoundsTab: PropTypes.func,
onActivateTab: PropTypes.func,
onClickAbout: PropTypes.func,
onClickAccountNav: PropTypes.func,
onClickLogo: PropTypes.func,
onCloseAccountNav: PropTypes.func,
@@ -401,12 +404,12 @@ GUIComponent.propTypes = {
onRequestCloseTelemetryModal: PropTypes.func,
onSeeCommunity: PropTypes.func,
onShare: PropTypes.func,
onShowPrivacyPolicy: PropTypes.func,
onTabSelect: PropTypes.func,
onTelemetryModalCancel: PropTypes.func,
onTelemetryModalOptIn: PropTypes.func,
onTelemetryModalOptOut: PropTypes.func,
onToggleLoginOpen: PropTypes.func,
onUpdateProjectTitle: PropTypes.func,
renderLogin: PropTypes.func,
showComingSoon: PropTypes.bool,
soundsTabVisible: PropTypes.bool,
@@ -433,7 +436,6 @@ GUIComponent.defaultProps = {
isCreating: false,
isShared: false,
loading: false,
onUpdateProjectTitle: () => {},
showComingSoon: false,
stageSizeMode: STAGE_SIZE_MODES.large
};
+3 -1
View File
@@ -139,7 +139,9 @@
.featured-description {
display: block;
font-weight: normal;
line-height: 2;
line-height: 1.375rem;
padding-top: .3125rem;
padding-bottom: .25rem;
}
.featured-extension-metadata {
+1
View File
@@ -0,0 +1 @@
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M10 2c4.418 0 8 3.582 8 8s-3.582 8-8 8-8-3.582-8-8 3.582-8 8-8zm-.072 10.42c-.256 0-.472.076-.648.227-.176.151-.264.338-.264.56 0 .25.091.445.273.584.182.139.395.209.639.209.236 0 .444-.07.624-.211s.27-.335.27-.581c0-.222-.086-.409-.258-.56-.172-.151-.384-.227-.636-.227zm.144-6.42c-.624 0-1.17.113-1.638.338-.468.225-.824.51-1.068.853-.244.343-.366.683-.366 1.017 0 .162.077.313.231.452.154.139.343.209.567.209.38 0 .638-.199.774-.597.144-.38.32-.668.528-.864.208-.196.532-.293.972-.293.376 0 .683.097.921.291.238.194.357.432.357.713 0 .144-.039.278-.117.402-.078.123-.174.235-.288.336-.114.1-.299.249-.555.446-.292.225-.524.42-.696.584-.172.164-.31.354-.414.571-.104.217-.156.473-.156.769 0 .236.071.414.213.534.142.12.317.18.525.18.4 0 .638-.183.714-.55l.099-.362.093-.206.183-.227.327-.288c.492-.387.833-.663 1.023-.827.19-.164.354-.358.492-.584.138-.225.207-.488.207-.787 0-.38-.121-.733-.363-1.057-.242-.324-.585-.58-1.029-.769-.444-.188-.956-.283-1.536-.283z" id="a"/></defs><g transform="translate(-2 -2)" fill="none"><mask><use xlink:href="#a"/></mask><use fill="#fff" xlink:href="#a"/></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

+6
View File
@@ -218,3 +218,9 @@
.mystuff > a {
background-image: url("/images/mystuff.png");
}
.about-icon {
height: 1.25rem;
margin: 0.5rem;
vertical-align: middle;
}
+19 -3
View File
@@ -69,6 +69,7 @@ import profileIcon from './icon--profile.png';
import remixIcon from './icon--remix.svg';
import dropdownCaret from './dropdown-caret.svg';
import languageIcon from '../language-selector/language-icon.svg';
import aboutIcon from './icon--about.svg';
import scratchLogo from './scratch-logo.svg';
@@ -141,6 +142,19 @@ MenuItemTooltip.propTypes = {
isRtl: PropTypes.bool
};
const AboutButton = props => (
<Button
className={classNames(styles.menuBarItem, styles.hoverable)}
iconClassName={styles.aboutIcon}
iconSrc={aboutIcon}
onClick={props.onClick}
/>
);
AboutButton.propTypes = {
onClick: PropTypes.func.isRequired
};
class MenuBar extends React.Component {
constructor (props) {
super(props);
@@ -311,6 +325,8 @@ class MenuBar extends React.Component {
{remixMessage}
</Button>
);
// Show the About button only if we have a handler for it (like in the desktop app)
const aboutButton = this.props.onClickAbout ? <AboutButton onClick={this.props.onClickAbout} /> : null;
return (
<Box
className={classNames(
@@ -395,7 +411,6 @@ class MenuBar extends React.Component {
<SBFileUploader
canSave={this.props.canSave}
userOwnsProject={this.props.userOwnsProject}
onUpdateProjectTitle={this.props.onUpdateProjectTitle}
>
{(className, renderFileInput, handleLoadProject) => (
<MenuItem
@@ -495,7 +510,6 @@ class MenuBar extends React.Component {
>
<ProjectTitleInput
className={classNames(styles.titleFieldGrowable)}
onUpdateProjectTitle={this.props.onUpdateProjectTitle}
/>
</MenuBarItemTooltip>
</div>
@@ -691,6 +705,8 @@ class MenuBar extends React.Component {
</React.Fragment>
)}
</div>
{aboutButton}
</Box>
);
}
@@ -724,6 +740,7 @@ MenuBar.propTypes = {
locale: PropTypes.string.isRequired,
loginMenuOpen: PropTypes.bool,
logo: PropTypes.string,
onClickAbout: PropTypes.func,
onClickAccount: PropTypes.func,
onClickEdit: PropTypes.func,
onClickFile: PropTypes.func,
@@ -746,7 +763,6 @@ MenuBar.propTypes = {
onSeeCommunity: PropTypes.func,
onShare: PropTypes.func,
onToggleLoginOpen: PropTypes.func,
onUpdateProjectTitle: PropTypes.func,
projectTitle: PropTypes.string,
renderLogin: PropTypes.func,
sessionExists: PropTypes.bool,
+21 -31
View File
@@ -1,9 +1,9 @@
import classNames from 'classnames';
import {connect} from 'react-redux';
import PropTypes from 'prop-types';
import bindAll from 'lodash.bindall';
import React from 'react';
import {defineMessages, intlShape, injectIntl} from 'react-intl';
import {setProjectTitle} from '../../reducers/project-title';
import BufferedInputHOC from '../forms/buffered-input-hoc.jsx';
import Input from '../forms/input.jsx';
@@ -19,39 +19,27 @@ const messages = defineMessages({
}
});
class ProjectTitleInput extends React.Component {
constructor (props) {
super(props);
bindAll(this, [
'handleUpdateProjectTitle'
]);
}
// call onUpdateProjectTitle if it is defined (only defined when gui
// is used within scratch-www)
handleUpdateProjectTitle (newTitle) {
if (this.props.onUpdateProjectTitle) {
this.props.onUpdateProjectTitle(newTitle);
}
}
render () {
return (
<BufferedInput
className={classNames(styles.titleField, this.props.className)}
maxLength="100"
placeholder={this.props.intl.formatMessage(messages.projectTitlePlaceholder)}
tabIndex="0"
type="text"
value={this.props.projectTitle}
onSubmit={this.handleUpdateProjectTitle}
/>
);
}
}
const ProjectTitleInput = ({
className,
intl,
onSubmit,
projectTitle
}) => (
<BufferedInput
className={classNames(styles.titleField, className)}
maxLength="100"
placeholder={intl.formatMessage(messages.projectTitlePlaceholder)}
tabIndex="0"
type="text"
value={projectTitle}
onSubmit={onSubmit}
/>
);
ProjectTitleInput.propTypes = {
className: PropTypes.string,
intl: intlShape.isRequired,
onUpdateProjectTitle: PropTypes.func,
onSubmit: PropTypes.func,
projectTitle: PropTypes.string
};
@@ -59,7 +47,9 @@ const mapStateToProps = state => ({
projectTitle: state.scratchGui.projectTitle
});
const mapDispatchToProps = () => ({});
const mapDispatchToProps = dispatch => ({
onSubmit: title => dispatch(setProjectTitle(title))
});
export default injectIntl(connect(
mapStateToProps,
+3 -1
View File
@@ -43,6 +43,7 @@
margin: 0 5px;
border-radius: calc($space / 2);
padding: 0 2px;
white-space: pre-wrap;
transform: translateZ(0); /* Fixes flickering in Safari */
}
@@ -53,6 +54,7 @@
text-align: center;
color: white;
font-size: 1rem;
white-space: pre-wrap;
transform: translateZ(0); /* Fixes flickering in Safari */
}
@@ -149,7 +151,7 @@
overflow: hidden; /* Don't let long values escape container */
text-overflow: ellipsis;
user-select: text; /* Allow selecting list values for 2.0 compatibility, only relevant in player */
white-space: nowrap;
white-space: pre;
}
.list-input {
+3 -1
View File
@@ -20,8 +20,10 @@
border: 1px solid $ui-black-transparent;
border-radius: 5px;
padding: 3px;
/* Force these to be on their own render layer because they update often */
transform: translateZ(0);
}
.meter-container {
margin-right: 5px;
height: 180px;
@@ -265,6 +265,7 @@ const SoundEditor = props => (
onClick={props.onSlower}
/>
<IconButton
disabled={props.tooLoud}
className={classNames(styles.effectButton, styles.flipInRtl)}
img={louderIcon}
title={<FormattedMessage {...messages.louder} />}
@@ -340,6 +341,7 @@ SoundEditor.propTypes = {
onUndo: PropTypes.func.isRequired,
playhead: PropTypes.number,
setRef: PropTypes.func,
tooLoud: PropTypes.bool.isRequired,
trimEnd: PropTypes.number,
trimStart: PropTypes.number
};
-1
View File
@@ -66,7 +66,6 @@
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
@@ -101,6 +101,9 @@ class TelemetryModal extends React.PureComponent {
privacyPolicyLink: (<a
className={styles.privacyPolicyLink}
href="https://scratch.mit.edu/privacy_policy/"
onClick={this.props.onShowPrivacyPolicy}
target="_blank"
rel="noopener noreferrer"
>
<FormattedMessage {...messages.privacyPolicyLink} />
</a>)
@@ -134,7 +137,8 @@ TelemetryModal.propTypes = {
onCancel: PropTypes.func,
onOptIn: PropTypes.func.isRequired,
onOptOut: PropTypes.func.isRequired,
onRequestClose: PropTypes.func
onRequestClose: PropTypes.func,
onShowPrivacyPolicy: PropTypes.func
};
export default injectIntl(TelemetryModal);
+3 -3
View File
@@ -340,9 +340,9 @@ class Blocks extends React.Component {
const targetSounds = target.getSounds();
const dynamicBlocksXML = this.props.vm.runtime.getBlocksXML();
return makeToolboxXML(target.isStage, target.id, dynamicBlocksXML,
targetCostumes[0].name,
stageCostumes[0].name,
targetSounds.length > 0 ? targetSounds[0].name : ''
targetCostumes[targetCostumes.length - 1].name,
stageCostumes[stageCostumes.length - 1].name,
targetSounds.length > 0 ? targetSounds[targetSounds.length - 1].name : ''
);
} catch {
return null;
+4 -30
View File
@@ -4,14 +4,13 @@ import {compose} from 'redux';
import {connect} from 'react-redux';
import ReactModal from 'react-modal';
import VM from 'scratch-vm';
import {defineMessages, injectIntl, intlShape} from 'react-intl';
import {injectIntl, intlShape} from 'react-intl';
import ErrorBoundaryHOC from '../lib/error-boundary-hoc.jsx';
import {
getIsError,
getIsShowingProject
} from '../reducers/project-state';
import {setProjectTitle} from '../reducers/project-title';
import {
activateTab,
BLOCKS_TAB_INDEX,
@@ -29,6 +28,7 @@ import {
import FontLoaderHOC from '../lib/font-loader-hoc.jsx';
import LocalizationHOC from '../lib/localization-hoc.jsx';
import ProjectFetcherHOC from '../lib/project-fetcher-hoc.jsx';
import TitledHOC from '../lib/titled-hoc.jsx';
import ProjectSaverHOC from '../lib/project-saver-hoc.jsx';
import QueryParserHOC from '../lib/query-parser-hoc.jsx';
import storage from '../lib/storage';
@@ -39,18 +39,9 @@ import cloudManagerHOC from '../lib/cloud-manager-hoc.jsx';
import GUIComponent from '../components/gui/gui.jsx';
import {setIsScratchDesktop} from '../lib/isScratchDesktop.js';
const messages = defineMessages({
defaultProjectTitle: {
id: 'gui.gui.defaultProjectTitle',
description: 'Default title for project',
defaultMessage: 'Scratch Project'
}
});
class GUI extends React.Component {
componentDidMount () {
setIsScratchDesktop(this.props.isScratchDesktop);
this.setReduxTitle(this.props.projectTitle);
this.props.onStorageInit(storage);
this.props.onVmInit(this.props.vm);
}
@@ -58,24 +49,12 @@ class GUI extends React.Component {
if (this.props.projectId !== prevProps.projectId && this.props.projectId !== null) {
this.props.onUpdateProjectId(this.props.projectId);
}
if (this.props.projectTitle !== prevProps.projectTitle) {
this.setReduxTitle(this.props.projectTitle);
}
if (this.props.isShowingProject && !prevProps.isShowingProject) {
// this only notifies container when a project changes from not yet loaded to loaded
// At this time the project view in www doesn't need to know when a project is unloaded
this.props.onProjectLoaded();
}
}
setReduxTitle (newTitle) {
if (newTitle === null || typeof newTitle === 'undefined') {
this.props.onUpdateReduxProjectTitle(
this.props.intl.formatMessage(messages.defaultProjectTitle)
);
} else {
this.props.onUpdateReduxProjectTitle(newTitle);
}
}
render () {
if (this.props.isError) {
throw new Error(
@@ -92,11 +71,9 @@ class GUI extends React.Component {
onProjectLoaded,
onStorageInit,
onUpdateProjectId,
onUpdateReduxProjectTitle,
onVmInit,
projectHost,
projectId,
projectTitle,
/* eslint-enable no-unused-vars */
children,
fetchingProject,
@@ -131,12 +108,9 @@ GUI.propTypes = {
onSeeCommunity: PropTypes.func,
onStorageInit: PropTypes.func,
onUpdateProjectId: PropTypes.func,
onUpdateProjectTitle: PropTypes.func,
onUpdateReduxProjectTitle: PropTypes.func,
onVmInit: PropTypes.func,
projectHost: PropTypes.string,
projectId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
projectTitle: PropTypes.string,
telemetryModalVisible: PropTypes.bool,
vm: PropTypes.instanceOf(VM).isRequired
};
@@ -186,8 +160,7 @@ const mapDispatchToProps = dispatch => ({
onActivateSoundsTab: () => dispatch(activateTab(SOUNDS_TAB_INDEX)),
onRequestCloseBackdropLibrary: () => dispatch(closeBackdropLibrary()),
onRequestCloseCostumeLibrary: () => dispatch(closeCostumeLibrary()),
onRequestCloseTelemetryModal: () => dispatch(closeTelemetryModal()),
onUpdateReduxProjectTitle: title => dispatch(setProjectTitle(title))
onRequestCloseTelemetryModal: () => dispatch(closeTelemetryModal())
});
const ConnectedGUI = injectIntl(connect(
@@ -204,6 +177,7 @@ const WrappedGui = compose(
FontLoaderHOC,
QueryParserHOC,
ProjectFetcherHOC,
TitledHOC,
ProjectSaverHOC,
vmListenerHOC,
vmManagerHOC,
+9 -6
View File
@@ -92,14 +92,16 @@ class LibraryItem extends React.PureComponent {
this.setState({iconIndex: nextIconIndex});
}
curIconMd5 () {
const iconMd5Prop = this.props.iconMd5;
if (this.props.icons &&
this.state.isRotatingIcon &&
this.state.iconIndex < this.props.icons.length &&
this.props.icons[this.state.iconIndex] &&
this.props.icons[this.state.iconIndex].baseLayerMD5) {
return this.props.icons[this.state.iconIndex].baseLayerMD5;
this.state.iconIndex < this.props.icons.length) {
const icon = this.props.icons[this.state.iconIndex] || {};
return icon.md5ext || // 3.0 library format
icon.baseLayerMD5 || // 2.0 library format, TODO GH-5084
iconMd5Prop;
}
return this.props.iconMd5;
return iconMd5Prop;
}
render () {
const iconMd5 = this.curIconMd5();
@@ -151,7 +153,8 @@ LibraryItem.propTypes = {
iconRawURL: PropTypes.string,
icons: PropTypes.arrayOf(
PropTypes.shape({
baseLayerMD5: PropTypes.string
baseLayerMD5: PropTypes.string, // 2.0 library format, TODO GH-5084
md5ext: PropTypes.string // 3.0 library format
})
),
id: PropTypes.number.isRequired,
+4 -4
View File
@@ -44,10 +44,10 @@ class RecordingStep extends React.Component {
alert(this.props.intl.formatMessage(messages.alertMsg)); // eslint-disable-line no-alert
}
handleLevelUpdate (level) {
this.setState({level});
if (this.props.recording) {
this.setState({levels: (this.state.levels || []).concat([level])});
}
this.setState({
level: level,
levels: this.props.recording ? (this.state.levels || []).concat([level]) : this.state.levels
});
}
handleRecord () {
this.audioRecorder.startRecording();
+5 -3
View File
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import React from 'react';
import {connect} from 'react-redux';
import {defineMessages, injectIntl, intlShape} from 'react-intl';
import {setProjectTitle} from '../reducers/project-title';
import log from '../lib/log';
import sharedMessages from '../lib/shared-messages';
@@ -131,7 +132,7 @@ class SBFileUploader extends React.Component {
// This is necessary in case the user wants to reload a project
if (filename) {
const uploadedProjectTitle = this.getProjectTitleFromFilename(filename);
this.props.onUpdateProjectTitle(uploadedProjectTitle);
this.props.onReceivedProjectTitle(uploadedProjectTitle);
}
this.resetFileInput();
})
@@ -179,9 +180,9 @@ SBFileUploader.propTypes = {
loadingState: PropTypes.oneOf(LoadingStates),
onLoadingFinished: PropTypes.func,
onLoadingStarted: PropTypes.func,
onUpdateProjectTitle: PropTypes.func,
projectChanged: PropTypes.bool,
requestProjectUpload: PropTypes.func,
onReceivedProjectTitle: PropTypes.func,
userOwnsProject: PropTypes.bool,
vm: PropTypes.shape({
loadProject: PropTypes.func
@@ -209,7 +210,8 @@ const mapDispatchToProps = (dispatch, ownProps) => ({
dispatch(closeFileMenu());
},
requestProjectUpload: loadingState => dispatch(requestProjectUpload(loadingState)),
onLoadingStarted: () => dispatch(openLoadingProject())
onLoadingStarted: () => dispatch(openLoadingProject()),
onReceivedProjectTitle: title => dispatch(setProjectTitle(title))
});
// Allow incoming props to override redux-provided props. Used to mock in tests.
+121 -84
View File
@@ -6,7 +6,12 @@ import VM from 'scratch-vm';
import {connect} from 'react-redux';
import {computeChunkedRMS, encodeAndAddSoundToVM, SOUND_BYTE_LIMIT} from '../lib/audio/audio-util.js';
import {
computeChunkedRMS,
encodeAndAddSoundToVM,
downsampleIfNeeded,
dropEveryOtherSample
} from '../lib/audio/audio-util.js';
import AudioEffects from '../lib/audio/audio-effects.js';
import SoundEditorComponent from '../components/sound-editor/sound-editor.jsx';
import AudioBufferPlayer from '../lib/audio/audio-buffer-player.js';
@@ -14,6 +19,8 @@ import log from '../lib/log.js';
const UNDO_STACK_SIZE = 99;
const MAX_RMS = 1.2;
class SoundEditor extends React.Component {
constructor (props) {
super(props);
@@ -37,7 +44,8 @@ class SoundEditor extends React.Component {
'paste',
'handleKeyPress',
'handleContainerClick',
'setRef'
'setRef',
'resampleBufferToRate'
]);
this.state = {
copyBuffer: null,
@@ -130,45 +138,32 @@ class SoundEditor extends React.Component {
});
}
submitNewSamples (samples, sampleRate, skipUndo) {
// Encode the new sound into a wav so that it can be stored
let wavBuffer = null;
try {
wavBuffer = WavEncoder.encode.sync({
sampleRate: sampleRate,
channelData: [samples]
return downsampleIfNeeded({samples, sampleRate}, this.resampleBufferToRate)
.then(({samples: newSamples, sampleRate: newSampleRate}) =>
WavEncoder.encode({
sampleRate: newSampleRate,
channelData: [newSamples]
}).then(wavBuffer => {
if (!skipUndo) {
this.redoStack = [];
if (this.undoStack.length >= UNDO_STACK_SIZE) {
this.undoStack.shift(); // Drop the first element off the array
}
this.undoStack.push(this.getUndoItem());
}
this.resetState(newSamples, newSampleRate);
this.props.vm.updateSoundBuffer(
this.props.soundIndex,
this.audioBufferPlayer.buffer,
new Uint8Array(wavBuffer));
return true; // Edit was successful
})
)
.catch(e => {
// Encoding failed, or the sound was too large to save so edit is rejected
log.error(`Encountered error while trying to encode sound update: ${e}`);
return false; // Edit was not applied
});
if (wavBuffer.byteLength > SOUND_BYTE_LIMIT) {
// Cancel the sound update by setting to null
wavBuffer = null;
log.error(`Refusing to encode sound larger than ${SOUND_BYTE_LIMIT} bytes`);
}
} catch (e) {
// This error state is mostly for the mock sounds used during testing.
// Any incorrect sound buffer trying to get interpretd as a Wav file
// should yield this error.
// This can also happen if the sound is too be allocated in memory.
log.error(`Encountered error while trying to encode sound update: ${e}`);
}
// Do not submit sound if it could not be encoded (i.e. if too large)
if (wavBuffer) {
if (!skipUndo) {
this.redoStack = [];
if (this.undoStack.length >= UNDO_STACK_SIZE) {
this.undoStack.shift(); // Drop the first element off the array
}
this.undoStack.push(this.getUndoItem());
}
this.resetState(samples, sampleRate);
this.props.vm.updateSoundBuffer(
this.props.soundIndex,
this.audioBufferPlayer.buffer,
new Uint8Array(wavBuffer));
return true; // Update succeeded
}
return false; // Update failed
}
handlePlay () {
this.audioBufferPlayer.stop();
@@ -207,13 +202,15 @@ class SoundEditor extends React.Component {
newSamples.set(firstPart, 0);
newSamples.set(secondPart, firstPart.length);
}
this.submitNewSamples(newSamples, sampleRate);
this.setState({
trimStart: null,
trimEnd: null
this.submitNewSamples(newSamples, sampleRate).then(() => {
this.setState({
trimStart: null,
trimEnd: null
});
});
}
handleDeleteInverse () {
// Delete everything outside of the trimmers
const {samples, sampleRate} = this.copyCurrentBuffer();
const sampleCount = samples.length;
const startIndex = Math.floor(this.state.trimStart * sampleCount);
@@ -222,10 +219,13 @@ class SoundEditor extends React.Component {
if (clippedSamples.length === 0) {
clippedSamples = new Float32Array(1);
}
this.submitNewSamples(clippedSamples, sampleRate);
this.setState({
trimStart: null,
trimEnd: null
this.submitNewSamples(clippedSamples, sampleRate).then(success => {
if (success) {
this.setState({
trimStart: null,
trimEnd: null
});
}
});
}
handleUpdateTrim (trimStart, trimEnd) {
@@ -255,16 +255,26 @@ class SoundEditor extends React.Component {
effects.process((renderedBuffer, adjustedTrimStart, adjustedTrimEnd) => {
const samples = renderedBuffer.getChannelData(0);
const sampleRate = renderedBuffer.sampleRate;
const success = this.submitNewSamples(samples, sampleRate);
if (success) {
if (this.state.trimStart === null) {
this.handlePlay();
} else {
this.setState({trimStart: adjustedTrimStart, trimEnd: adjustedTrimEnd}, this.handlePlay);
this.submitNewSamples(samples, sampleRate).then(success => {
if (success) {
if (this.state.trimStart === null) {
this.handlePlay();
} else {
this.setState({trimStart: adjustedTrimStart, trimEnd: adjustedTrimEnd}, this.handlePlay);
}
}
}
});
});
}
tooLoud () {
const numChunks = this.state.chunkLevels.length;
const startIndex = this.state.trimStart === null ?
0 : Math.floor(this.state.trimStart * numChunks);
const endIndex = this.state.trimEnd === null ?
numChunks - 1 : Math.ceil(this.state.trimEnd * numChunks);
const trimChunks = this.state.chunkLevels.slice(startIndex, endIndex);
return Math.max(...trimChunks) > MAX_RMS;
}
getUndoItem () {
return {
...this.copyCurrentBuffer(),
@@ -276,16 +286,22 @@ class SoundEditor extends React.Component {
this.redoStack.push(this.getUndoItem());
const {samples, sampleRate, trimStart, trimEnd} = this.undoStack.pop();
if (samples) {
this.submitNewSamples(samples, sampleRate, true);
this.setState({trimStart: trimStart, trimEnd: trimEnd}, this.handlePlay);
return this.submitNewSamples(samples, sampleRate, true).then(success => {
if (success) {
this.setState({trimStart: trimStart, trimEnd: trimEnd}, this.handlePlay);
}
});
}
}
handleRedo () {
const {samples, sampleRate, trimStart, trimEnd} = this.redoStack.pop();
if (samples) {
this.undoStack.push(this.getUndoItem());
this.submitNewSamples(samples, sampleRate, true);
this.setState({trimStart: trimStart, trimEnd: trimEnd}, this.handlePlay);
return this.submitNewSamples(samples, sampleRate, true).then(success => {
if (success) {
this.setState({trimStart: trimStart, trimEnd: trimEnd}, this.handlePlay);
}
});
}
}
handleCopy () {
@@ -311,25 +327,39 @@ class SoundEditor extends React.Component {
});
}
resampleBufferToRate (buffer, newRate) {
return new Promise(resolve => {
if (window.OfflineAudioContext) {
const sampleRateRatio = newRate / buffer.sampleRate;
const newLength = sampleRateRatio * buffer.samples.length;
const offlineContext = new window.OfflineAudioContext(1, newLength, newRate);
const source = offlineContext.createBufferSource();
const audioBuffer = offlineContext.createBuffer(1, buffer.samples.length, buffer.sampleRate);
audioBuffer.getChannelData(0).set(buffer.samples);
source.buffer = audioBuffer;
source.connect(offlineContext.destination);
source.start();
offlineContext.startRendering();
offlineContext.oncomplete = ({renderedBuffer}) => {
resolve({
samples: renderedBuffer.getChannelData(0),
sampleRate: newRate
});
};
return new Promise((resolve, reject) => {
const sampleRateRatio = newRate / buffer.sampleRate;
const newLength = sampleRateRatio * buffer.samples.length;
let offlineContext;
// Try to use either OfflineAudioContext or webkitOfflineAudioContext to resample
// The constructors will throw if trying to resample at an unsupported rate
// (e.g. Safari/webkitOAC does not support lower than 44khz).
try {
if (window.OfflineAudioContext) {
offlineContext = new window.OfflineAudioContext(1, newLength, newRate);
} else if (window.webkitOfflineAudioContext) {
offlineContext = new window.webkitOfflineAudioContext(1, newLength, newRate);
}
} catch {
// If no OAC available and downsampling by 2, downsample by dropping every other sample.
if (newRate === buffer.sampleRate / 2) {
return resolve(dropEveryOtherSample(buffer));
}
return reject('Could not resample');
}
const source = offlineContext.createBufferSource();
const audioBuffer = offlineContext.createBuffer(1, buffer.samples.length, buffer.sampleRate);
audioBuffer.getChannelData(0).set(buffer.samples);
source.buffer = audioBuffer;
source.connect(offlineContext.destination);
source.start();
offlineContext.startRendering();
offlineContext.oncomplete = ({renderedBuffer}) => {
resolve({
samples: renderedBuffer.getChannelData(0),
sampleRate: newRate
});
};
});
}
paste () {
@@ -340,8 +370,11 @@ class SoundEditor extends React.Component {
const newSamples = new Float32Array(newLength);
newSamples.set(samples, 0);
newSamples.set(this.state.copyBuffer.samples, samples.length);
this.submitNewSamples(newSamples, this.props.sampleRate, false);
this.handlePlay();
this.submitNewSamples(newSamples, this.props.sampleRate, false).then(success => {
if (success) {
this.handlePlay();
}
});
} else {
// else replace the selection with the pasted sound
const trimStartSamples = this.state.trimStart * samples.length;
@@ -360,11 +393,14 @@ class SoundEditor extends React.Component {
const newDurationSeconds = newSamples.length / this.state.copyBuffer.sampleRate;
const adjustedTrimStart = trimStartSeconds / newDurationSeconds;
const adjustedTrimEnd = trimEndSeconds / newDurationSeconds;
this.submitNewSamples(newSamples, this.props.sampleRate, false);
this.setState({
trimStart: adjustedTrimStart,
trimEnd: adjustedTrimEnd
}, this.handlePlay);
this.submitNewSamples(newSamples, this.props.sampleRate, false).then(success => {
if (success) {
this.setState({
trimStart: adjustedTrimStart,
trimEnd: adjustedTrimEnd
}, this.handlePlay);
}
});
}
}
handlePaste () {
@@ -399,6 +435,7 @@ class SoundEditor extends React.Component {
name={this.props.name}
playhead={this.state.playhead}
setRef={this.setRef}
tooLoud={this.tooLoud()}
trimEnd={this.state.trimEnd}
trimStart={this.state.trimStart}
onChangeName={this.handleChangeName}
+14 -14
View File
@@ -1,12 +1,12 @@
import 'get-float-time-domain-data';
import getUserMedia from 'get-user-media-promise';
import SharedAudioContext from './shared-audio-context.js';
import {computeRMS} from './audio-util.js';
import {computeRMS, computeChunkedRMS} from './audio-util.js';
class AudioRecorder {
constructor () {
this.audioContext = new SharedAudioContext();
this.bufferLength = 1024;
this.bufferLength = 8192;
this.userMediaStream = null;
this.mediaStreamSource = null;
@@ -51,7 +51,7 @@ class AudioRecorder {
this.userMediaStream = userMediaStream;
this.mediaStreamSource = this.audioContext.createMediaStreamSource(userMediaStream);
this.sourceNode = this.audioContext.createGain();
this.scriptProcessorNode = this.audioContext.createScriptProcessor(this.bufferLength, 2, 2);
this.scriptProcessorNode = this.audioContext.createScriptProcessor(this.bufferLength, 1, 1);
this.scriptProcessorNode.onaudioprocess = processEvent => {
if (this.recording && !this.disposed) {
@@ -68,9 +68,9 @@ class AudioRecorder {
const update = () => {
if (this.disposed) return;
requestAnimationFrame(update);
this.analyserNode.getFloatTimeDomainData(dataArray);
onUpdate(computeRMS(dataArray));
requestAnimationFrame(update);
};
requestAnimationFrame(update);
@@ -83,7 +83,16 @@ class AudioRecorder {
}
stop () {
const chunkLevels = this.buffers.map(buffer => computeRMS(buffer));
const buffer = new Float32Array(this.buffers.length * this.bufferLength);
let offset = 0;
for (let i = 0; i < this.buffers.length; i++) {
const bufferChunk = this.buffers[i];
buffer.set(bufferChunk, offset);
offset += bufferChunk.length;
}
const chunkLevels = computeChunkedRMS(buffer);
const maxRMS = Math.max.apply(null, chunkLevels);
const threshold = maxRMS / 8;
@@ -105,15 +114,6 @@ class AudioRecorder {
trimEnd = 1;
}
const buffer = new Float32Array(this.buffers.length * this.bufferLength);
let offset = 0;
for (let i = 0; i < this.buffers.length; i++) {
const bufferChunk = this.buffers[i];
buffer.set(bufferChunk, offset);
offset += bufferChunk.length;
}
return {
levels: chunkLevels,
samples: buffer,
+49 -1
View File
@@ -59,9 +59,57 @@ const encodeAndAddSoundToVM = function (vm, samples, sampleRate, name, callback)
});
};
/**
@typedef SoundBuffer
@type {Object}
@property {Float32Array} samples Array of audio samples
@property {number} sampleRate Audio sample rate
*/
/**
* Downsample the given buffer to try to reduce file size below SOUND_BYTE_LIMIT
* @param {SoundBuffer} buffer - Buffer to resample
* @param {function(SoundBuffer):Promise<SoundBuffer>} resampler - resampler function
* @returns {SoundBuffer} Downsampled buffer with half the sample rate
*/
const downsampleIfNeeded = (buffer, resampler) => {
const {samples, sampleRate} = buffer;
const duration = samples.length / sampleRate;
const encodedByteLength = samples.length * 2; /* bitDepth 16 bit */
// Resolve immediately if already within byte limit
if (encodedByteLength < SOUND_BYTE_LIMIT) {
return Promise.resolve({samples, sampleRate});
}
// If encodeable at 22khz, resample and call submitNewSamples again
if (duration * 22050 * 2 < SOUND_BYTE_LIMIT) {
return resampler({samples, sampleRate}, 22050);
}
// Cannot save this sound at 22khz, refuse to edit
// In the future we could introduce further compression here
return Promise.reject('Sound too large to save, refusing to edit');
};
/**
* Drop every other sample of an audio buffer as a last-resort way of downsampling.
* @param {SoundBuffer} buffer - Buffer to resample
* @returns {SoundBuffer} Downsampled buffer with half the sample rate
*/
const dropEveryOtherSample = buffer => {
const newLength = Math.floor(buffer.samples.length / 2);
const newSamples = new Float32Array(newLength);
for (let i = 0; i < newLength; i++) {
newSamples[i] = buffer.samples[i * 2];
}
return {
samples: newSamples,
sampleRate: buffer.sampleRate / 2
};
};
export {
computeRMS,
computeChunkedRMS,
encodeAndAddSoundToVM,
SOUND_BYTE_LIMIT
downsampleIfNeeded,
dropEveryOtherSample
};
+11 -6
View File
@@ -3,15 +3,20 @@ const jpegThumbnail = dataUrl => new Promise((resolve, reject) => {
image.onload = () => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
// TODO we may want to draw to a smaller, fixed size to optimize file size
canvas.width = image.width;
canvas.height = image.height;
const maxDimension = 96; // 3x the maximum displayed size of 32px
if (image.height > image.width) {
canvas.height = maxDimension;
canvas.width = (maxDimension / image.height) * image.width;
} else {
canvas.width = maxDimension;
canvas.height = (maxDimension / image.width) * image.height;
}
ctx.fillStyle = 'white'; // Create white background, since jpeg doesn't have transparency
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(image, 0, 0);
// TODO we can play with the `quality` option here to optimize file size
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
resolve(canvas.toDataURL('image/jpeg', 0.92 /* quality */)); // Default quality is 0.92
};
image.onerror = err => {
+16 -12
View File
@@ -54,13 +54,10 @@ const cloudManagerHOC = function (WrappedComponent) {
canUseCloud (props) {
return !!(props.cloudHost && props.username && props.vm && props.projectId && props.hasCloudPermission);
}
shouldNotModifyCloudData (props) {
return (props.hasEverEnteredEditor && !props.canSave);
}
shouldConnect (props) {
return !this.isConnected() && this.canUseCloud(props) &&
props.isShowingWithId && props.vm.runtime.hasCloudData() &&
!this.shouldNotModifyCloudData(props);
props.canModifyCloudData;
}
shouldDisconnect (props, prevProps) {
return this.isConnected() &&
@@ -70,7 +67,7 @@ const cloudManagerHOC = function (WrappedComponent) {
(props.projectId !== prevProps.projectId) ||
(props.username !== prevProps.username) ||
// Editing someone else's project
this.shouldNotModifyCloudData(props)
!props.canModifyCloudData
);
}
isConnected () {
@@ -102,11 +99,11 @@ const cloudManagerHOC = function (WrappedComponent) {
render () {
const {
/* eslint-disable no-unused-vars */
canModifyCloudData,
cloudHost,
projectId,
username,
hasCloudPermission,
hasEverEnteredEditor,
isShowingWithId,
onShowCloudInfo,
/* eslint-enable no-unused-vars */
@@ -124,23 +121,30 @@ const cloudManagerHOC = function (WrappedComponent) {
}
CloudManager.propTypes = {
canSave: PropTypes.bool.isRequired,
canModifyCloudData: PropTypes.bool.isRequired,
cloudHost: PropTypes.string,
hasCloudPermission: PropTypes.bool,
hasEverEnteredEditor: PropTypes.bool,
isShowingWithId: PropTypes.bool,
isShowingWithId: PropTypes.bool.isRequired,
onShowCloudInfo: PropTypes.func,
projectId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
username: PropTypes.string,
vm: PropTypes.instanceOf(VM).isRequired
};
const mapStateToProps = state => {
CloudManager.defaultProps = {
cloudHost: null,
hasCloudPermission: false,
onShowCloudInfo: () => {},
username: null
};
const mapStateToProps = (state, ownProps) => {
const loadingState = state.scratchGui.projectState.loadingState;
return {
hasEverEnteredEditor: state.scratchGui.mode.hasEverEnteredEditor,
isShowingWithId: getIsShowingWithId(loadingState),
projectId: state.scratchGui.projectState.projectId
projectId: state.scratchGui.projectState.projectId,
// if you're editing someone else's project, you can't modify cloud data
canModifyCloudData: (!state.scratchGui.mode.hasEverEnteredEditor || ownProps.canSave)
};
};
+19 -7
View File
@@ -8,11 +8,23 @@ export default (filename, blob) => {
return;
}
const url = window.URL.createObjectURL(blob);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.type = blob.type;
downloadLink.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(downloadLink);
if ('download' in HTMLAnchorElement.prototype) {
const url = window.URL.createObjectURL(blob);
downloadLink.href = url;
downloadLink.download = filename;
downloadLink.type = blob.type;
downloadLink.click();
document.body.removeChild(downloadLink);
window.URL.revokeObjectURL(url);
} else {
// iOS Safari, open a new page and set href to data-uri
let popup = window.open('', '_blank');
const reader = new FileReader();
reader.onloadend = function () {
popup.location.href = reader.result;
popup = null;
};
reader.readAsDataURL(blob);
}
};
+1 -1
View File
@@ -78,7 +78,7 @@ const DropAreaHOC = function (dragTypes) {
}
}
render () {
const componentProps = omit(this.props, ['onDrop', 'dragInfo']);
const componentProps = omit(this.props, ['onDrop', 'dragInfo', 'componentRef']);
return (
<WrappedComponent
containerRef={this.setRef}
+7 -7
View File
@@ -52,7 +52,7 @@
},
{
"name": "Basketball 1",
"md5": "e494c4f44897d94e0541f7036a302449.svg",
"md5": "ae21eac3d1814aee1d37ae82ea287816.svg",
"type": "backdrop",
"tags": [
"sports",
@@ -178,7 +178,7 @@
},
{
"name": "Blue Sky 2 ",
"md5": "5a906c2f272b77f59f0ef207857a8b3a.svg",
"md5": "8eb8790be5507fdccf73e7c1570bbbab.svg",
"type": "backdrop",
"tags": [
"outdoors",
@@ -286,7 +286,7 @@
},
{
"name": "Circles",
"md5": "4e29033ec2b891a8f1ca21242811d403.svg",
"md5": "c9847be305920807c5597d81576dd0c4.svg",
"type": "backdrop",
"tags": [
"patterns"
@@ -491,7 +491,7 @@
},
{
"name": "Hearts",
"md5": "26d3418b2fbc1af2c5fea82e1c3df1db.svg",
"md5": "f98526ccb0eec3ac7d6c8f8ab502825e.svg",
"type": "backdrop",
"tags": [
"patterns"
@@ -1050,7 +1050,7 @@
},
{
"name": "Underwater 1",
"md5": "fb907f72b310acc8b95cbf2d2cccabc9.svg",
"md5": "d3344650f594bcecdf46aa4a9441badd.svg",
"type": "backdrop",
"tags": [
"ocean",
@@ -1175,7 +1175,7 @@
},
{
"name": "Witch House",
"md5": "597b9a9813fe5d8d387283138a0b8f2b.svg",
"md5": "30085b2d27beb5acdbe895d8b3e64b04.svg",
"type": "backdrop",
"tags": [
"fantasy",
@@ -1190,7 +1190,7 @@
},
{
"name": "Woods",
"md5": "d26cfd278999c9e37d6af75c296a58df.svg",
"md5": "f3eb165d6f3fd23370f97079f2e631bf.svg",
"type": "backdrop",
"tags": [
"fantasy",
File diff suppressed because it is too large. Load diff
+90 -36
View File
@@ -3,7 +3,7 @@ import introMove from './steps/intro-move.en.gif';
import introSayHello from './steps/intro-say-hello.en.gif';
// Text to Speech
import speechAddExtension from './steps/speech-add-extension.en.gif';
import speechAddExtension from './steps/talking-1-add-extension.en.gif';
import speechSaySomething from './steps/speech-say-something.en.gif';
import speechSetVoice from './steps/speech-set-voice.en.gif';
import speechMoveAround from './steps/speech-move-around.en.gif';
@@ -15,12 +15,12 @@ import speechSpin from './steps/speech-spin.en.gif';
import speechGrowShrink from './steps/speech-grow-shrink.en.gif';
// Cartoon Network
import cnShowCharacter from './steps/cn-show-character.en.gif';
import cnShowCharacter from './steps/cn-show-character.gif';
import cnSay from './steps/cn-say.en.gif';
import cnGlide from './steps/cn-glide.en.gif';
import cnPickSprite from './steps/cn-pick-sprite.en.gif';
import cnPickSprite from './steps/cn-pick-sprite.gif';
import cnCollect from './steps/cn-collect.en.gif';
import cnVariable from './steps/cn-variable.en.gif';
import cnVariable from './steps/add-variable.en.gif';
import cnScore from './steps/cn-score.en.gif';
import cnBackdrop from './steps/cn-backdrop.en.gif';
@@ -43,20 +43,20 @@ import musicMakeBeat from './steps/music-make-beat.en.gif';
import musicMakeBeatbox from './steps/music-make-beatbox.en.gif';
// Chase-Game
import chaseGameAddBackdrop from './steps/chase-game-add-backdrop.en.gif';
import chaseGameAddBackdrop from './steps/chase-game-add-backdrop.gif';
import chaseGameAddSprite1 from './steps/chase-game-add-sprite1.en.gif';
import chaseGameRightLeft from './steps/chase-game-right-left.en.gif';
import chaseGameUpDown from './steps/chase-game-up-down.en.gif';
import chaseGameAddSprite2 from './steps/chase-game-add-sprite2.en.gif';
import chaseGameMoveRandomly from './steps/chase-game-move-randomly.en.gif';
import chaseGamePlaySound from './steps/chase-game-play-sound.en.gif';
import chaseGameAddVariable from './steps/chase-game-add-variable.en.gif';
import chaseGameAddVariable from './steps/add-variable.en.gif';
import chaseGameChangeScore from './steps/chase-game-change-score.en.gif';
// Clicker-Game (Pop Game)
import popGamePickSprite from './steps/pop-game-pick-sprite.en.gif';
import popGamePlaySound from './steps/pop-game-play-sound.en.gif';
import popGameAddScore from './steps/pop-game-add-score.en.gif';
import popGameAddScore from './steps/add-variable.en.gif';
import popGameChangeScore from './steps/pop-game-change-score.en.gif';
import popGameRandomPosition from './steps/pop-game-random-position.en.gif';
import popGameChangeColor from './steps/pop-game-change-color.en.gif';
@@ -73,22 +73,22 @@ import animateCharJump from './steps/animate-char-jump.en.gif';
import animateCharChangeColor from './steps/animate-char-change-color.en.gif';
// Tell A Story
import storyPickBackdrop from './steps/story-pick-backdrop.en.gif';
import storyPickSprite from './steps/story-pick-sprite.en.gif';
import storyPickBackdrop from './steps/story-pick-backdrop.gif';
import storyPickSprite from './steps/story-pick-sprite.gif';
import storySaySomething from './steps/story-say-something.en.gif';
import storyPickSprite2 from './steps/story-pick-sprite2.en.gif';
import storyPickSprite2 from './steps/story-pick-sprite2.gif';
import storyFlip from './steps/story-flip.en.gif';
import storyConversation from './steps/story-conversation.en.gif';
import storyPickBackdrop2 from './steps/story-pick-backdrop2.en.gif';
import storyPickBackdrop2 from './steps/story-pick-backdrop2.gif';
import storySwitchBackdrop from './steps/story-switch-backdrop.en.gif';
import storyHideCharacter from './steps/story-hide-character.en.gif';
import storyShowCharacter from './steps/story-show-character.en.gif';
// Video Sensing
import videoAddExtension from './steps/video-add-extension.en.gif';
import videoPet from './steps/video-pet.en.gif';
import videoAnimate from './steps/video-animate.en.gif';
import videoPop from './steps/video-pop.en.gif';
import videoPet from './steps/video-pet.en.png';
import videoAnimate from './steps/video-animate.en.png';
import videoPop from './steps/video-pop.en.png';
// Make it Fly
import flyChooseBackdrop from './steps/fly-choose-backdrop.en.gif';
@@ -98,7 +98,7 @@ import flyMoveArrows from './steps/fly-make-interactive.en.gif';
import flyChooseObject from './steps/fly-object-to-collect.en.gif';
import flyFlyingObject from './steps/fly-flying-heart.en.gif';
import flySelectFlyingSprite from './steps/fly-select-flyer.en.jpg';
import flyAddScore from './steps/fly-add-score.en.gif';
import flyAddScore from './steps/add-variable.en.gif';
import flyKeepScore from './steps/fly-keep-score.en.gif';
import flyAddScenery from './steps/fly-choose-scenery.en.gif';
import flyMoveScenery from './steps/fly-move-scenery.en.gif';
@@ -106,32 +106,32 @@ import flySwitchLooks from './steps/fly-switch-costume.en.gif';
// Pong
import pongAddBackdrop from './steps/pong-add-backdrop.en.png';
import pongAddBallSprite from './steps/pong-add-ball-sprite.en.png';
import pongAddBallSprite from './steps/pong-add-ball-sprite.png';
import pongBounceAround from './steps/pong-bounce-around.en.gif';
import pongAddPaddle from './steps/pong-add-a-paddle.en.gif';
import pongMoveThePaddle from './steps/pong-move-the-paddle.en.gif';
import pongSelectBallSprite from './steps/pong-select-ball.en.png';
import pongSelectBallSprite from './steps/pong-select-ball.png';
import pongAddMoreCodeToBall from './steps/pong-add-code-to-ball.en.png';
import pongAddAScore from './steps/pong-add-score.en.gif';
import pongAddAScore from './steps/add-variable.en.gif';
import pongChooseScoreFromMenu from './steps/pong-choose-score.en.png';
import pongInsertChangeScoreBlock from './steps/pong-insert-change-score.en.png';
import pongResetScore from './steps/pong-reset-score.en.png';
import pongAddLineSprite from './steps/pong-add-line.en.gif';
import pongGameOver from './steps/pong-game-over.en.png';
// Imagine If
// Imagine a World
import imagineTypeWhatYouWant from './steps/imagine-type-what-you-want.en.png';
import imagineClickGreenFlag from './steps/imagine-click-green-flag.en.png';
import imagineChooseBackdrop from './steps/imagine-choose-backdrop.en.png';
import imagineChooseSprite from './steps/imagine-choose-any-sprite.en.png';
import imagineChooseBackdrop from './steps/imagine-choose-backdrop.png';
import imagineChooseSprite from './steps/imagine-choose-any-sprite.png';
import imagineFlyAround from './steps/imagine-fly-around.en.png';
import imagineChooseAnotherSprite from './steps/imagine-choose-another-sprite.en.png';
import imagineChooseAnotherSprite from './steps/imagine-choose-another-sprite.png';
import imagineLeftRight from './steps/imagine-left-right.en.png';
import imagineUpDown from './steps/imagine-up-down.en.png';
import imagineChangeCostumes from './steps/imagine-change-costumes.en.png';
import imagineGlideToPoint from './steps/imagine-glide-to-point.en.png';
import imagineGrowShrink from './steps/imagine-grow-shrink.en.png';
import imagineChooseAnotherBackdrop from './steps/imagine-choose-another-backdrop.en.png';
import imagineChooseAnotherBackdrop from './steps/imagine-choose-another-backdrop.png';
import imagineSwitchBackdrops from './steps/imagine-switch-backdrops.en.gif';
import imagineRecordASound from './steps/imagine-record-a-sound.en.gif';
import imagineChooseSound from './steps/imagine-choose-sound.en.png';
@@ -170,6 +170,34 @@ import moveArrowKeysUpDown from './steps/move-arrow-keys-up-down.en.png';
import glideAroundBackAndForth from './steps/glide-around-back-and-forth.en.png';
import glideAroundPoint from './steps/glide-around-point.en.png';
// Code a Cartoon
import codeCartoonSaySomething from './steps/code-cartoon-01-say-something.en.png';
import codeCartoonAnimate from './steps/code-cartoon-02-animate.en.gif';
import codeCartoonSelectDifferentCharacter from './steps/code-cartoon-03-select-different-character.png';
import codeCartoonUseMinusSign from './steps/code-cartoon-04-use-minus-sign.en.gif';
import codeCartoonGrowShrink from './steps/code-cartoon-05-grow-shrink.en.gif';
import codeCartoonSelectDifferentCharacter2 from './steps/code-cartoon-06-select-another-different-character.png';
import codeCartoonJump from './steps/code-cartoon-07-jump.en.gif';
import codeCartoonChangeScenes from './steps/code-cartoon-08-change-scenes.en.gif';
import codeCartoonGlideAround from './steps/code-cartoon-09-glide-around.en.gif';
import codeCartoonChangeCostumes from './steps/code-cartoon-10-change-costumes.en.gif';
import codeCartoonChooseMoreCharacters from './steps/code-cartoon-11-choose-more-characters.en.jpg';
// Talking Tales
import talesAddExtension from './steps/talking-1-add-extension.en.gif';
import talesChooseSprite from './steps/talking-2-choose-sprite.en.png';
import talesSaySomething from './steps/talking-3-say-something.en.gif';
import talesChooseBackdrop from './steps/talking-4-choose-backdrop.en.png';
import talesSwitchBackdrop from './steps/talking-5-switch-backdrop.en.gif';
import talesChooseAnotherSprite from './steps/talking-6-choose-another-sprite.en.png';
import talesMoveAround from './steps/talking-7-move-around.en.gif';
import talesChooseAnotherBackdrop from './steps/talking-8-choose-another-backdrop.en.png';
import talesAnimateTalking from './steps/talking-9-animate.en.gif';
import talesChooseThirdBackdrop from './steps/talking-10-choose-third-backdrop.en.png';
import talesChooseSound from './steps/talking-11-choose-sound.en.gif';
import talesDanceMoves from './steps/talking-12-dance-moves.en.gif';
import talesAskAnswer from './steps/talking-13-ask-and-answer.en.gif';
const enImages = {
// Intro
introMove: introMove,
@@ -276,7 +304,7 @@ const enImages = {
flyAddScenery: flyAddScenery,
flyMoveScenery: flyMoveScenery,
flySwitchLooks: flySwitchLooks,
// Pong
pongAddBackdrop: pongAddBackdrop,
pongAddBallSprite: pongAddBallSprite,
@@ -291,8 +319,8 @@ const enImages = {
pongResetScore: pongResetScore,
pongAddLineSprite: pongAddLineSprite,
pongGameOver: pongGameOver,
// Imagine If
// Imagine a World
imagineTypeWhatYouWant: imagineTypeWhatYouWant,
imagineClickGreenFlag: imagineClickGreenFlag,
imagineChooseBackdrop: imagineChooseBackdrop,
@@ -308,26 +336,26 @@ const enImages = {
imagineSwitchBackdrops: imagineSwitchBackdrops,
imagineRecordASound: imagineRecordASound,
imagineChooseSound: imagineChooseSound,
// Add a Backdrop
addBackdrop: addBackdrop,
// Add Effects
addEffects: addEffects,
// Hide and Show
hideAndShow: hideAndShow,
// Switch Costumes
switchCostumes: switchCostumes,
// Change Size
changeSize: changeSize,
// Spin
spinTurn: spinTurn,
spinPointInDirection: spinPointInDirection,
// Record a Sound
recordASoundSoundsTab: recordASoundSoundsTab,
recordASoundClickRecord: recordASoundClickRecord,
@@ -341,9 +369,35 @@ const enImages = {
// Glide Around
glideAroundBackAndForth: glideAroundBackAndForth,
glideAroundPoint: glideAroundPoint
glideAroundPoint: glideAroundPoint,
// Code a Cartoon
codeCartoonSaySomething: codeCartoonSaySomething,
codeCartoonAnimate: codeCartoonAnimate,
codeCartoonSelectDifferentCharacter: codeCartoonSelectDifferentCharacter,
codeCartoonUseMinusSign: codeCartoonUseMinusSign,
codeCartoonGrowShrink: codeCartoonGrowShrink,
codeCartoonSelectDifferentCharacter2: codeCartoonSelectDifferentCharacter2,
codeCartoonJump: codeCartoonJump,
codeCartoonChangeScenes: codeCartoonChangeScenes,
codeCartoonGlideAround: codeCartoonGlideAround,
codeCartoonChangeCostumes: codeCartoonChangeCostumes,
codeCartoonChooseMoreCharacters: codeCartoonChooseMoreCharacters,
// Talking Tales
talesAddExtension: talesAddExtension,
talesChooseSprite: talesChooseSprite,
talesSaySomething: talesSaySomething,
talesAskAnswer: talesAskAnswer,
talesChooseBackdrop: talesChooseBackdrop,
talesSwitchBackdrop: talesSwitchBackdrop,
talesChooseAnotherSprite: talesChooseAnotherSprite,
talesMoveAround: talesMoveAround,
talesChooseAnotherBackdrop: talesChooseAnotherBackdrop,
talesAnimateTalking: talesAnimateTalking,
talesChooseThirdBackdrop: talesChooseThirdBackdrop,
talesChooseSound: talesChooseSound,
talesDanceMoves: talesDanceMoves
};
export {enImages};
+306 -91
View File
@@ -3,119 +3,227 @@ import introMove from './steps/intro-move.es.gif';
import introSayHello from './steps/intro-say-hello.es.gif';
// Text to Speech
// import speechAddExtension from './steps/speech-add-extension.es.gif';
// import speechSaySomething from './steps/speech-say-something.es.gif';
// import speechSetVoice from './steps/speech-set-voice.es.gif';
// import speechMoveAround from './steps/speech-move-around.es.gif';
// import speechAddBackdrop from './steps/speech-add-backdrop.es.gif';
// import speechAddSprite from './steps/speech-add-sprite.es.gif';
// import speechSong from './steps/speech-song.es.gif';
// import speechChangeColor from './steps/speech-change-color.es.gif';
// import speechSpin from './steps/speech-spin.es.gif';
// import speechGrowShrink from './steps/speech-grow-shrink.es.gif';
//
// // Cartoon Network
// import cnShowCharacter from './steps/cn-show-character.es.gif';
// import cnSay from './steps/cn-say.es.gif';
// import cnGlide from './steps/cn-glide.es.gif';
// import cnPickSprite from './steps/cn-pick-sprite.es.gif';
// import cnCollect from './steps/cn-collect.es.gif';
// import cnVariable from './steps/cn-variable.es.gif';
// import cnScore from './steps/cn-score.es.gif';
// import cnBackdrop from './steps/cn-backdrop.es.gif';
import speechAddExtension from './steps/speech-add-extension.es.gif';
import speechSaySomething from './steps/speech-say-something.es.png';
import speechSetVoice from './steps/speech-set-voice.es.png';
import speechMoveAround from './steps/speech-move-around.es.png';
import speechAddBackdrop from './steps/speech-add-backdrop.gif';
import speechAddSprite from './steps/speech-add-sprite.gif';
import speechSong from './steps/speech-song.es.png';
import speechChangeColor from './steps/speech-change-color.es.png';
import speechSpin from './steps/speech-spin.es.png';
import speechGrowShrink from './steps/speech-grow-shrink.es.png';
// Cartoon Network
import cnShowCharacter from './steps/cn-show-character.gif';
import cnSay from './steps/cn-say.es.png';
import cnGlide from './steps/cn-glide.es.png';
import cnPickSprite from './steps/cn-pick-sprite.gif';
import cnCollect from './steps/cn-collect.es.png';
import cnVariable from './steps/add-variable.es.gif';
import cnScore from './steps/cn-score.es.png';
import cnBackdrop from './steps/cn-backdrop.es.png';
// Add sprite
import addSprite from './steps/add-sprite.es.gif';
import addSprite from './steps/add-sprite.gif';
// Animate a name
import namePickLetter from './steps/name-pick-letter.es.gif';
import namePlaySound from './steps/name-play-sound.es.gif';
import namePickLetter2 from './steps/name-pick-letter2.es.gif';
import nameChangeColor from './steps/name-change-color.es.gif';
import nameSpin from './steps/name-spin.es.gif';
import nameGrow from './steps/name-grow.es.gif';
import namePickLetter from './steps/name-pick-letter.gif';
import namePlaySound from './steps/name-play-sound.es.png';
import namePickLetter2 from './steps/name-pick-letter2.gif';
import nameChangeColor from './steps/name-change-color.es.png';
import nameSpin from './steps/name-spin.es.png';
import nameGrow from './steps/name-grow.es.png';
// Make-Music
import musicPickInstrument from './steps/music-pick-instrument.es.gif';
import musicPlaySound from './steps/music-play-sound.es.gif';
import musicMakeSong from './steps/music-make-song.es.gif';
import musicMakeBeat from './steps/music-make-beat.es.gif';
import musicMakeBeatbox from './steps/music-make-beatbox.es.gif';
// Make Music
import musicPickInstrument from './steps/music-pick-instrument.gif';
import musicPlaySound from './steps/music-play-sound.es.png';
import musicMakeSong from './steps/music-make-song.es.png';
import musicMakeBeat from './steps/music-make-beat.es.png';
import musicMakeBeatbox from './steps/music-make-beatbox.es.png';
// Chase-Game
import chaseGameAddBackdrop from './steps/chase-game-add-backdrop.es.gif';
import chaseGameAddSprite1 from './steps/chase-game-add-sprite1.es.gif';
import chaseGameRightLeft from './steps/chase-game-right-left.es.gif';
import chaseGameUpDown from './steps/chase-game-up-down.es.gif';
import chaseGameAddSprite2 from './steps/chase-game-add-sprite2.es.gif';
import chaseGameMoveRandomly from './steps/chase-game-move-randomly.es.gif';
import chaseGamePlaySound from './steps/chase-game-play-sound.es.gif';
import chaseGameAddVariable from './steps/chase-game-add-variable.es.gif';
import chaseGameChangeScore from './steps/chase-game-change-score.es.gif';
import chaseGameAddBackdrop from './steps/chase-game-add-backdrop.gif';
import chaseGameAddSprite1 from './steps/chase-game-add-sprite1.gif';
import chaseGameRightLeft from './steps/chase-game-right-left.es.png';
import chaseGameUpDown from './steps/chase-game-up-down.es.png';
import chaseGameAddSprite2 from './steps/chase-game-add-sprite2.gif';
import chaseGameMoveRandomly from './steps/chase-game-move-randomly.es.png';
import chaseGamePlaySound from './steps/chase-game-play-sound.es.png';
import chaseGameAddVariable from './steps/add-variable.es.gif';
import chaseGameChangeScore from './steps/chase-game-change-score.es.png';
// Clicker-Game (Pop Game)
import popGamePickSprite from './steps/pop-game-pick-sprite.es.gif';
import popGamePlaySound from './steps/pop-game-play-sound.es.gif';
import popGameAddScore from './steps/pop-game-add-score.es.gif';
import popGameChangeScore from './steps/pop-game-change-score.es.gif';
import popGameRandomPosition from './steps/pop-game-random-position.es.gif';
import popGameChangeColor from './steps/pop-game-change-color.es.gif';
import popGameResetScore from './steps/pop-game-reset-score.es.gif';
import popGamePickSprite from './steps/pop-game-pick-sprite.gif';
import popGamePlaySound from './steps/pop-game-play-sound.es.png';
import popGameAddScore from './steps/add-variable.es.gif';
import popGameChangeScore from './steps/pop-game-change-score.es.png';
import popGameRandomPosition from './steps/pop-game-random-position.es.png';
import popGameChangeColor from './steps/pop-game-change-color.es.png';
import popGameResetScore from './steps/pop-game-reset-score.es.png';
// Animate A Character
import animateCharPickBackdrop from './steps/animate-char-pick-backdrop.es.gif';
import animateCharPickSprite from './steps/animate-char-pick-sprite.es.gif';
import animateCharSaySomething from './steps/animate-char-say-something.es.gif';
import animateCharAddSound from './steps/animate-char-add-sound.es.gif';
import animateCharTalk from './steps/animate-char-talk.es.gif';
import animateCharMove from './steps/animate-char-move.es.gif';
import animateCharJump from './steps/animate-char-jump.es.gif';
import animateCharChangeColor from './steps/animate-char-change-color.es.gif';
import animateCharPickBackdrop from './steps/animate-char-pick-backdrop.gif';
import animateCharPickSprite from './steps/animate-char-pick-sprite.gif';
import animateCharSaySomething from './steps/animate-char-say-something.es.png';
import animateCharAddSound from './steps/animate-char-add-sound.es.png';
import animateCharTalk from './steps/animate-char-talk.es.png';
import animateCharMove from './steps/animate-char-move.es.png';
import animateCharJump from './steps/animate-char-jump.es.png';
import animateCharChangeColor from './steps/animate-char-change-color.es.png';
// Tell A Story
import storyPickBackdrop from './steps/story-pick-backdrop.es.gif';
import storyPickSprite from './steps/story-pick-sprite.es.gif';
import storySaySomething from './steps/story-say-something.es.gif';
import storyPickSprite2 from './steps/story-pick-sprite2.es.gif';
import storyPickBackdrop from './steps/story-pick-backdrop.gif';
import storyPickSprite from './steps/story-pick-sprite.gif';
import storySaySomething from './steps/story-say-something.es.png';
import storyPickSprite2 from './steps/story-pick-sprite2.gif';
import storyFlip from './steps/story-flip.es.gif';
import storyConversation from './steps/story-conversation.es.gif';
import storyPickBackdrop2 from './steps/story-pick-backdrop2.es.gif';
import storySwitchBackdrop from './steps/story-switch-backdrop.es.gif';
import storyHideCharacter from './steps/story-hide-character.es.gif';
import storyShowCharacter from './steps/story-show-character.es.gif';
import storyConversation from './steps/story-conversation.es.png';
import storyPickBackdrop2 from './steps/story-pick-backdrop2.gif';
import storySwitchBackdrop from './steps/story-switch-backdrop.es.png';
import storyHideCharacter from './steps/story-hide-character.es.png';
import storyShowCharacter from './steps/story-show-character.es.png';
// Video Sensing
import videoAddExtension from './steps/video-add-extension.es.gif';
import videoPet from './steps/video-pet.es.gif';
import videoAnimate from './steps/video-animate.es.gif';
import videoPop from './steps/video-pop.es.gif';
import videoPet from './steps/video-pet.es.png';
import videoAnimate from './steps/video-animate.es.png';
import videoPop from './steps/video-pop.es.png';
// Make it Fly
import flyChooseBackdrop from './steps/fly-choose-backdrop.gif';
import flyChooseCharacter from './steps/fly-choose-character.png';
import flySaySomething from './steps/fly-say-something.es.png';
import flyMoveArrows from './steps/fly-make-interactive.es.png';
import flyChooseObject from './steps/fly-object-to-collect.png';
import flyFlyingObject from './steps/fly-flying-heart.es.png';
import flySelectFlyingSprite from './steps/fly-select-flyer.png';
import flyAddScore from './steps/add-variable.es.gif';
import flyKeepScore from './steps/fly-keep-score.es.png';
import flyAddScenery from './steps/fly-choose-scenery.gif';
import flyMoveScenery from './steps/fly-move-scenery.es.png';
import flySwitchLooks from './steps/fly-switch-costume.es.png';
// Pong
import pongAddBackdrop from './steps/pong-add-backdrop.png';
import pongAddBallSprite from './steps/pong-add-ball-sprite.png';
import pongBounceAround from './steps/pong-bounce-around.es.png';
import pongAddPaddle from './steps/pong-add-a-paddle.gif';
import pongMoveThePaddle from './steps/pong-move-the-paddle.es.png';
import pongSelectBallSprite from './steps/pong-select-ball.png';
import pongAddMoreCodeToBall from './steps/pong-add-code-to-ball.es.png';
import pongAddAScore from './steps/add-variable.es.gif';
import pongChooseScoreFromMenu from './steps/pong-choose-score.es.png';
import pongInsertChangeScoreBlock from './steps/pong-insert-change-score.es.png';
import pongResetScore from './steps/pong-reset-score.es.png';
import pongAddLineSprite from './steps/pong-add-line.gif';
import pongGameOver from './steps/pong-game-over.es.png';
// Imagine a World
import imagineTypeWhatYouWant from './steps/imagine-type-what-you-want.es.png';
import imagineClickGreenFlag from './steps/imagine-click-green-flag.es.png';
import imagineChooseBackdrop from './steps/imagine-choose-backdrop.png';
import imagineChooseSprite from './steps/imagine-choose-any-sprite.png';
import imagineFlyAround from './steps/imagine-fly-around.es.png';
import imagineChooseAnotherSprite from './steps/imagine-choose-another-sprite.png';
import imagineLeftRight from './steps/imagine-left-right.es.png';
import imagineUpDown from './steps/imagine-up-down.es.png';
import imagineChangeCostumes from './steps/imagine-change-costumes.es.png';
import imagineGlideToPoint from './steps/imagine-glide-to-point.es.png';
import imagineGrowShrink from './steps/imagine-grow-shrink.es.png';
import imagineChooseAnotherBackdrop from './steps/imagine-choose-another-backdrop.png';
import imagineSwitchBackdrops from './steps/imagine-switch-backdrops.es.png';
import imagineRecordASound from './steps/imagine-record-a-sound.es.gif';
import imagineChooseSound from './steps/imagine-choose-sound.es.png';
// Add a Backdrop
import addBackdrop from './steps/add-backdrop.png';
// Add Effects
import addEffects from './steps/add-effects.es.png';
// Hide and Show
import hideAndShow from './steps/hide-show.es.png';
// Switch Costumes
import switchCostumes from './steps/switch-costumes.es.png';
// Change Size
import changeSize from './steps/change-size.es.png';
// Spin
import spinTurn from './steps/spin-turn.es.png';
import spinPointInDirection from './steps/spin-point-in-direction.es.png';
// Record a Sound
import recordASoundSoundsTab from './steps/record-a-sound-sounds-tab.es.png';
import recordASoundClickRecord from './steps/record-a-sound-click-record.es.png';
import recordASoundPressRecordButton from './steps/record-a-sound-press-record-button.es.png';
import recordASoundChooseSound from './steps/record-a-sound-choose-sound.es.png';
import recordASoundPlayYourSound from './steps/record-a-sound-play-your-sound.es.png';
// Use Arrow Keys
import moveArrowKeysLeftRight from './steps/move-arrow-keys-left-right.es.png';
import moveArrowKeysUpDown from './steps/move-arrow-keys-up-down.es.png';
// Glide Around
import glideAroundBackAndForth from './steps/glide-around-back-and-forth.es.png';
import glideAroundPoint from './steps/glide-around-point.es.png';
// Code a Cartoon
import codeCartoonSaySomething from './steps/code-cartoon-01-say-something.es.png';
import codeCartoonAnimate from './steps/code-cartoon-02-animate.es.png';
import codeCartoonSelectDifferentCharacter from './steps/code-cartoon-03-select-different-character.png';
import codeCartoonUseMinusSign from './steps/code-cartoon-04-use-minus-sign.es.png';
import codeCartoonGrowShrink from './steps/code-cartoon-05-grow-shrink.es.png';
import codeCartoonSelectDifferentCharacter2 from './steps/code-cartoon-06-select-another-different-character.png';
import codeCartoonJump from './steps/code-cartoon-07-jump.es.png';
import codeCartoonChangeScenes from './steps/code-cartoon-08-change-scenes.es.png';
import codeCartoonGlideAround from './steps/code-cartoon-09-glide-around.es.png';
import codeCartoonChangeCostumes from './steps/code-cartoon-10-change-costumes.es.png';
import codeCartoonChooseMoreCharacters from './steps/code-cartoon-11-choose-more-characters.png';
// Talking Tales
import talesAddExtension from './steps/speech-add-extension.es.gif';
import talesChooseSprite from './steps/talking-2-choose-sprite.png';
import talesSaySomething from './steps/talking-3-say-something.es.png';
import talesChooseBackdrop from './steps/talking-4-choose-backdrop.png';
import talesSwitchBackdrop from './steps/talking-5-switch-backdrop.es.png';
import talesChooseAnotherSprite from './steps/talking-6-choose-another-sprite.png';
import talesMoveAround from './steps/talking-7-move-around.es.png';
import talesChooseAnotherBackdrop from './steps/talking-8-choose-another-backdrop.png';
import talesAnimateTalking from './steps/talking-9-animate.es.png';
import talesChooseThirdBackdrop from './steps/talking-10-choose-third-backdrop.png';
import talesChooseSound from './steps/talking-11-choose-sound.es.gif';
import talesDanceMoves from './steps/talking-12-dance-moves.es.png';
import talesAskAnswer from './steps/talking-13-ask-and-answer.es.png';
const esImages = {
// Intro
introMove: introMove,
introSayHello: introSayHello,
// // Text to Speech
// speechAddExtension: speechAddExtension,
// speechSaySomething: speechSaySomething,
// speechSetVoice: speechSetVoice,
// speechMoveAround: speechMoveAround,
// speechAddBackdrop: speechAddBackdrop,
// speechAddSprite: speechAddSprite,
// speechSong: speechSong,
// speechChangeColor: speechChangeColor,
// speechSpin: speechSpin,
// speechGrowShrink: speechGrowShrink,
//
// // Cartoon Network
// cnShowCharacter: cnShowCharacter,
// cnSay: cnSay,
// cnGlide: cnGlide,
// cnPickSprite: cnPickSprite,
// cnCollect: cnCollect,
// cnVariable: cnVariable,
// cnScore: cnScore,
// cnBackdrop: cnBackdrop,
// Text to Speech
speechAddExtension: speechAddExtension,
speechSaySomething: speechSaySomething,
speechSetVoice: speechSetVoice,
speechMoveAround: speechMoveAround,
speechAddBackdrop: speechAddBackdrop,
speechAddSprite: speechAddSprite,
speechSong: speechSong,
speechChangeColor: speechChangeColor,
speechSpin: speechSpin,
speechGrowShrink: speechGrowShrink,
// Cartoon Network
cnShowCharacter: cnShowCharacter,
cnSay: cnSay,
cnGlide: cnGlide,
cnPickSprite: cnPickSprite,
cnCollect: cnCollect,
cnVariable: cnVariable,
cnScore: cnScore,
cnBackdrop: cnBackdrop,
// Add sprite
addSprite: addSprite,
@@ -181,8 +289,115 @@ const esImages = {
videoAddExtension: videoAddExtension,
videoPet: videoPet,
videoAnimate: videoAnimate,
videoPop: videoPop
videoPop: videoPop,
// Make it Fly
flyChooseBackdrop: flyChooseBackdrop,
flyChooseCharacter: flyChooseCharacter,
flySaySomething: flySaySomething,
flyMoveArrows: flyMoveArrows,
flyChooseObject: flyChooseObject,
flyFlyingObject: flyFlyingObject,
flySelectFlyingSprite: flySelectFlyingSprite,
flyAddScore: flyAddScore,
flyKeepScore: flyKeepScore,
flyAddScenery: flyAddScenery,
flyMoveScenery: flyMoveScenery,
flySwitchLooks: flySwitchLooks,
// Pong
pongAddBackdrop: pongAddBackdrop,
pongAddBallSprite: pongAddBallSprite,
pongBounceAround: pongBounceAround,
pongAddPaddle: pongAddPaddle,
pongMoveThePaddle: pongMoveThePaddle,
pongSelectBallSprite: pongSelectBallSprite,
pongAddMoreCodeToBall: pongAddMoreCodeToBall,
pongAddAScore: pongAddAScore,
pongChooseScoreFromMenu: pongChooseScoreFromMenu,
pongInsertChangeScoreBlock: pongInsertChangeScoreBlock,
pongResetScore: pongResetScore,
pongAddLineSprite: pongAddLineSprite,
pongGameOver: pongGameOver,
// Imagine a World
imagineTypeWhatYouWant: imagineTypeWhatYouWant,
imagineClickGreenFlag: imagineClickGreenFlag,
imagineChooseBackdrop: imagineChooseBackdrop,
imagineChooseSprite: imagineChooseSprite,
imagineFlyAround: imagineFlyAround,
imagineChooseAnotherSprite: imagineChooseAnotherSprite,
imagineLeftRight: imagineLeftRight,
imagineUpDown: imagineUpDown,
imagineChangeCostumes: imagineChangeCostumes,
imagineGlideToPoint: imagineGlideToPoint,
imagineGrowShrink: imagineGrowShrink,
imagineChooseAnotherBackdrop: imagineChooseAnotherBackdrop,
imagineSwitchBackdrops: imagineSwitchBackdrops,
imagineRecordASound: imagineRecordASound,
imagineChooseSound: imagineChooseSound,
// Add a Backdrop
addBackdrop: addBackdrop,
// Add Effects
addEffects: addEffects,
// Hide and Show
hideAndShow: hideAndShow,
// Switch Costumes
switchCostumes: switchCostumes,
// Change Size
changeSize: changeSize,
// Spin
spinTurn: spinTurn,
spinPointInDirection: spinPointInDirection,
// Record a Sound
recordASoundSoundsTab: recordASoundSoundsTab,
recordASoundClickRecord: recordASoundClickRecord,
recordASoundPressRecordButton: recordASoundPressRecordButton,
recordASoundChooseSound: recordASoundChooseSound,
recordASoundPlayYourSound: recordASoundPlayYourSound,
// Use Arrow Keys
moveArrowKeysLeftRight: moveArrowKeysLeftRight,
moveArrowKeysUpDown: moveArrowKeysUpDown,
// Glide Around
glideAroundBackAndForth: glideAroundBackAndForth,
glideAroundPoint: glideAroundPoint,
// Code a Cartoon
codeCartoonSaySomething: codeCartoonSaySomething,
codeCartoonAnimate: codeCartoonAnimate,
codeCartoonSelectDifferentCharacter: codeCartoonSelectDifferentCharacter,
codeCartoonUseMinusSign: codeCartoonUseMinusSign,
codeCartoonGrowShrink: codeCartoonGrowShrink,
codeCartoonSelectDifferentCharacter2: codeCartoonSelectDifferentCharacter2,
codeCartoonJump: codeCartoonJump,
codeCartoonChangeScenes: codeCartoonChangeScenes,
codeCartoonGlideAround: codeCartoonGlideAround,
codeCartoonChangeCostumes: codeCartoonChangeCostumes,
codeCartoonChooseMoreCharacters: codeCartoonChooseMoreCharacters,
// Talking Tales
talesAddExtension: talesAddExtension,
talesChooseSprite: talesChooseSprite,
talesSaySomething: talesSaySomething,
talesAskAnswer: talesAskAnswer,
talesChooseBackdrop: talesChooseBackdrop,
talesSwitchBackdrop: talesSwitchBackdrop,
talesChooseAnotherSprite: talesChooseAnotherSprite,
talesMoveAround: talesMoveAround,
talesChooseAnotherBackdrop: talesChooseAnotherBackdrop,
talesAnimateTalking: talesAnimateTalking,
talesChooseThirdBackdrop: talesChooseThirdBackdrop,
talesChooseSound: talesChooseSound,
talesDanceMoves: talesDanceMoves
};
export {esImages};
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 802 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 520 KiB

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 872 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 669 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 710 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 KiB

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

After

Width:  |  Height:  |  Size: 204 KiB

Loaded 100 of 351 files, more files were not shown because too many files have changed in this diff. Show more