When the package is installed as a dependency, it should warn the installer that React is a peerDependency. When installed this way, the devDependencies won't be installed, so only one version of React will be present. However when it's installed as a standalone project, React should be installed automatically as a devDependency.
I think this gives us the best of both worlds — simple development setup as well as supporting usage as an installed package.
`npm update` does what we want and is less hacky than removing the packages entirely first. Specify latest as the version so we always get the latest version even though I erroneously installed scratch-blocks@0.1.0.
Use fewer refs, these had weird behavior that caused the order of components to matter.
Attach events eagerly, as soon as the necessary objects are available.
Make VMManager an actual class instantiated with a VM so we don't have to pass it to every method.
Use bindAll everywhere for convenience.
While doing so:
- Use ProjectLoader for loading projects
- Stop using loadEmptyProject and supply empty project data
- Move project loading to App, GUI now receives data (as a string - the vm should receive an object eventually)
- Add logging
Because these are peer dependencies, we should be lenient about the required version of React required to use the components.
I didn't use the caret because the x's work and it's obvious what they mean, unlike ^ and ~.