diff --git a/package.json b/package.json index fc9c43d385ecdd2e98b36581667eba06b769237c..5d7651fd70737f01ddbab3750cabbb7b4189df39 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "babel-plugin-transform-object-rest-spread": "^6.22.0", "babel-preset-es2015": "^6.22.0", "babel-preset-react": "^6.22.0", + "buffer-loader": "0.0.1", "chromedriver": "2.33.1", "classnames": "2.2.5", "copy-webpack-plugin": "^4.0.1", @@ -67,6 +68,7 @@ "postcss-simple-vars": "^4.0.0", "prop-types": "^15.5.10", "raf": "^3.4.0", + "raw-loader": "0.5.1", "react": "16.0.0", "react-contextmenu": "2.8.0", "react-dom": "16.0.0", @@ -84,9 +86,9 @@ "redux-throttle": "0.1.1", "rimraf": "^2.6.1", "scratch-audio": "latest", - "scratch-paint": "latest", "scratch-blocks": "latest", "scratch-l10n": "^2.0.0", + "scratch-paint": "latest", "scratch-render": "latest", "scratch-storage": "^0.3.0", "scratch-vm": "latest", diff --git a/src/lib/default-project/09dc888b0b7df19f70d81588ae73420e.svg b/src/lib/default-project/09dc888b0b7df19f70d81588ae73420e.svg new file mode 100755 index 0000000000000000000000000000000000000000..d449b3d15b955647f2198116743d0f4df619b24b Binary files /dev/null and b/src/lib/default-project/09dc888b0b7df19f70d81588ae73420e.svg differ diff --git a/src/lib/default-project/3696356a03a8d938318876a593572843.svg b/src/lib/default-project/3696356a03a8d938318876a593572843.svg new file mode 100755 index 0000000000000000000000000000000000000000..0ecb2de81d9e76af3920bab9afd30cec1fa9f8d6 Binary files /dev/null and b/src/lib/default-project/3696356a03a8d938318876a593572843.svg differ diff --git a/src/lib/default-project/5c81a336fab8be57adc039a8a2b33ca9.png b/src/lib/default-project/5c81a336fab8be57adc039a8a2b33ca9.png new file mode 100755 index 0000000000000000000000000000000000000000..da373d2cf3ab7c4c617d307eec5a044ae43917ee Binary files /dev/null and b/src/lib/default-project/5c81a336fab8be57adc039a8a2b33ca9.png differ diff --git a/src/lib/default-project/739b5e2a2435f6e1ec2993791b423146.png b/src/lib/default-project/739b5e2a2435f6e1ec2993791b423146.png new file mode 100755 index 0000000000000000000000000000000000000000..b395ac94c246fd4de8368a156f92010baa2abe21 Binary files /dev/null and b/src/lib/default-project/739b5e2a2435f6e1ec2993791b423146.png differ diff --git a/src/lib/default-project/83a9787d4cb6f3b7632b4ddfebf74367.wav b/src/lib/default-project/83a9787d4cb6f3b7632b4ddfebf74367.wav new file mode 100755 index 0000000000000000000000000000000000000000..fc3b2724a9c7cfef378eeb65499d44236ad2add8 Binary files /dev/null and b/src/lib/default-project/83a9787d4cb6f3b7632b4ddfebf74367.wav differ diff --git a/src/lib/default-project/83c36d806dc92327b9e7049a565c6bff.wav b/src/lib/default-project/83c36d806dc92327b9e7049a565c6bff.wav new file mode 100755 index 0000000000000000000000000000000000000000..45742d5ef6f09d05b0f0788cb055ffe54abfd9ad Binary files /dev/null and b/src/lib/default-project/83c36d806dc92327b9e7049a565c6bff.wav differ diff --git a/src/lib/default-project/index.js b/src/lib/default-project/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f797b4e711faa36ec70d6cc0f40562106b06b994 --- /dev/null +++ b/src/lib/default-project/index.js @@ -0,0 +1,45 @@ +import projectJson from './project.json'; +import popWav from '!buffer-loader!./83a9787d4cb6f3b7632b4ddfebf74367.wav'; +import meowWav from '!buffer-loader!./83c36d806dc92327b9e7049a565c6bff.wav'; +import backdrop from '!buffer-loader!./739b5e2a2435f6e1ec2993791b423146.png'; +import penLayer from '!buffer-loader!./5c81a336fab8be57adc039a8a2b33ca9.png'; +import costume1 from '!raw-loader!./09dc888b0b7df19f70d81588ae73420e.svg'; +import costume2 from '!raw-loader!./3696356a03a8d938318876a593572843.svg'; + +const encoder = new TextEncoder(); +export default [{ + id: 0, + assetType: 'Project', + dataFormat: 'JSON', + data: projectJson +}, { + id: '83a9787d4cb6f3b7632b4ddfebf74367', + assetType: 'Sound', + dataFormat: 'WAV', + data: popWav +}, { + id: '83c36d806dc92327b9e7049a565c6bff', + assetType: 'Sound', + dataFormat: 'WAV', + data: meowWav +}, { + id: '739b5e2a2435f6e1ec2993791b423146', + assetType: 'ImageBitmap', + dataFormat: 'PNG', + data: backdrop +}, { + id: '5c81a336fab8be57adc039a8a2b33ca9', + assetType: 'ImageBitmap', + dataFormat: 'PNG', + data: penLayer +}, { + id: '09dc888b0b7df19f70d81588ae73420e', + assetType: 'ImageVector', + dataFormat: 'SVG', + data: encoder.encode(costume1) +}, { + id: '3696356a03a8d938318876a593572843', + assetType: 'ImageVector', + dataFormat: 'SVG', + data: encoder.encode(costume2) +}]; diff --git a/src/lib/empty-project.json b/src/lib/default-project/project.json similarity index 100% rename from src/lib/empty-project.json rename to src/lib/default-project/project.json diff --git a/src/lib/storage.js b/src/lib/storage.js index d1c8f886dfb9f77125ba639f0608131d31bfb499..6d858e6c20e57f919cbaa6dfc3eb2080b9f915ce 100644 --- a/src/lib/storage.js +++ b/src/lib/storage.js @@ -1,5 +1,7 @@ import ScratchStorage from 'scratch-storage'; +import defaultProjectAssets from './default-project'; + const PROJECT_SERVER = 'https://cdn.projects.scratch.mit.edu'; const ASSET_SERVER = 'https://cdn.assets.scratch.mit.edu'; @@ -23,6 +25,12 @@ class Storage extends ScratchStorage { [this.AssetType.ImageVector, this.AssetType.ImageBitmap, this.AssetType.Sound], asset => `${ASSET_SERVER}/internalapi/asset/${asset.assetId}.${asset.dataFormat}/get/` ); + defaultProjectAssets.forEach(asset => this.cache( + this.AssetType[asset.assetType], + this.DataFormat[asset.dataFormat], + asset.data, + asset.id + )); } } diff --git a/webpack.config.js b/webpack.config.js index 1a874c70457a420392829ebf899da9b21a42e5d1..90b82103907d9ab35179af04129f843e9c7e3e3f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -65,6 +65,10 @@ module.exports = { } }] }, + { + test: /\.(png|wav)$/, + loader: 'raw-loader' + }, { test: /\.svg$/, loader: 'file-loader'