Skip to content

Commit e6d1bc1

Browse files
committed
don't dep on React directly but via a workaround to support RN
1 parent b3e4d8c commit e6d1bc1

12 files changed

+44
-10
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
},
2424
"homepage": "https://github.com/ProjectSeptemberInc/gl-react-core#readme",
2525
"peerDependencies": {
26-
"react": "^0.14.0"
2726
},
2827
"dependencies": {
2928
"babelify": "^6.3.0",
3029
"envify": "^3.4.0",
31-
"invariant": "^2.1.0"
30+
"invariant": "^2.2.0",
31+
"events": "1.1.0"
3232
},
3333
"devDependencies": {
3434
"eslint": "^1.6.0",

react-native.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require("./src/react-runtime-mutate").set(require("react-native"));

react.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require("./src/react-runtime-mutate").set(require("react"));

src/Node.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const React = require("react");
1+
const React = require("./react-runtime");
22
const { Component, PropTypes } = React;
33
const invariant = require("invariant");
44

src/Shaders.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const EventEmitter = require("events");
1+
const {EventEmitter} = require("events");
22
const invariant = require("invariant");
33

44
let _uid = 1;
@@ -35,7 +35,7 @@ const Shaders = {
3535
return names[id];
3636
},
3737
list () {
38-
return Object.keys(names);
38+
return Object.keys(shaders);
3939
},
4040
exists (id) {
4141
return typeof id === "number" && id >= 1 && id < _uid;

src/Uniform.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const React = require("react");
1+
const React = require("./react-runtime");
22
const { Component, PropTypes } = React;
33
const invariant = require("invariant");
44

src/createComponent.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const React = require("react");
1+
const React = require("./react-runtime");
22
const invariant = require("invariant");
33

44
module.exports = function createComponent (renderGLNode, staticFields) {

src/createSurface.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const React = require("react");
1+
const React = require("./react-runtime");
22
const {
33
Component,
44
PropTypes

src/data/build.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const React = require("react");
1+
const React = require("../react-runtime");
22
const invariant = require("invariant");
33
const Uniform = require("../Uniform");
44
const Shaders = require("../Shaders");

src/data/pickReactFirstChild.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const React = require("react");
1+
const React = require("../react-runtime");
22

33
module.exports = function pickReactFirstChild (children) {
44
return React.Children.count(children) === 1 ?

src/react-runtime-mutate.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const invariant = require("invariant");
2+
let runtime;
3+
function set (React) {
4+
if (React.version) { // RN don't provide version...
5+
const version = React.version.split(".");
6+
invariant(version[0]==="0" && parseInt(version[1], 10) >= 14, "React version must be at least 0.14.x. got: %s", React.version);
7+
}
8+
runtime = React;
9+
}
10+
module.exports = {
11+
set,
12+
get: () => runtime
13+
};

src/react-runtime.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const runtime = require("./react-runtime-mutate").get();
2+
if (!runtime) {
3+
console.warn( // eslint-disable-line no-console
4+
`Please prepend in your JavaScript entry point one of following imports:
5+
6+
${"require"}("gl-react/react") // for React
7+
8+
OR
9+
10+
${"require"}("gl-react/react-native") // for React Native
11+
12+
13+
Make sure to do this BEFORE any other imports. (that are gl-react related)
14+
15+
> Note: This mechanism will be removed once React Native depends on React`);
16+
17+
throw new Error("gl-react: React instance not available at runtime. Please read instructions");
18+
}
19+
module.exports = runtime;

0 commit comments

Comments
 (0)