Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
f463b73
Copy files from the react-native repo
sebmarkbage Mar 24, 2016
6c885d2
Remove duplicates and move files out of native/vendor
sebmarkbage Mar 24, 2016
fe395de
Move React Native platform files back
sebmarkbage Mar 24, 2016
8806463
Add Object Spread Support to Our Babel Config
sebmarkbage Mar 24, 2016
caa6aba
Build an dedicated npm package for react-native-renderer
sebmarkbage Aug 12, 2015
240dfae
Add React Native Modules to module map + fix fbjs
sebmarkbage Mar 25, 2016
91e62c7
Strip isomorphic stuff from the ReactNative module
sebmarkbage Aug 12, 2015
d8e8ea5
Add test and mocks
sebmarkbage Mar 25, 2016
f833516
Fix 0.15 compatibility
sebmarkbage Mar 25, 2016
97b079b
Fix ReactNativeComponentEnvironment providesModule
sebmarkbage Mar 25, 2016
75cec60
Get rid of rootNodeIDs they're just tags now
sebmarkbage Mar 29, 2016
3287d93
Build up a native component cache for event dispatching
sebmarkbage Mar 30, 2016
4fcdf02
Listeners are not attached by ID in the API
sebmarkbage Apr 5, 2016
dc188dd
Update ReactNativeDOMIDOperations to deal with a single parent node
sebmarkbage Apr 5, 2016
0640921
Bump package versions
sebmarkbage Apr 13, 2016
22a8f99
Don't try to get the target node for responder if there is no listener
sebmarkbage Apr 13, 2016
c7d90e2
Ensure react-native-renderer package gets copied
sebmarkbage Apr 13, 2016
5470972
Update devtools injection
sebmarkbage Apr 18, 2016
744548a
Fix lint for moved ReactNative
sebmarkbage Apr 18, 2016
ada60c4
Remove ReactDOM.native shim
sebmarkbage Apr 19, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .babelrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"plugins": [
"fbjs-scripts/babel-6/dev-expression",
"syntax-trailing-function-commas",
"babel-plugin-transform-object-rest-spread",
"transform-es2015-template-literals",
"transform-es2015-literals",
"transform-es2015-arrow-functions",
Expand Down
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ script:
-F "react-dom-server.min=@build/react-dom-server.min.js" \
-F "npm-react=@build/packages/react.tgz" \
-F "npm-react-dom=@build/packages/react-dom.tgz" \
-F "npm-react-native=@build/packages/react-native-renderer.tgz" \
-F "commit=$TRAVIS_COMMIT" \
-F "date=`git log --format='%ct' -1`" \
-F "pull_request=$TRAVIS_PULL_REQUEST" \
Expand Down
6 changes: 6 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ module.exports = function(grunt) {
grunt.registerTask('npm-react-dom:release', npmReactDOMTasks.buildRelease);
grunt.registerTask('npm-react-dom:pack', npmReactDOMTasks.packRelease);

var npmReactNativeTasks = require('./grunt/tasks/npm-react-native');
grunt.registerTask('npm-react-native:release', npmReactNativeTasks.buildRelease);
grunt.registerTask('npm-react-native:pack', npmReactNativeTasks.packRelease);

var npmReactAddonsTasks = require('./grunt/tasks/npm-react-addons');
grunt.registerTask('npm-react-addons:release', npmReactAddonsTasks.buildReleases);
grunt.registerTask('npm-react-addons:pack', npmReactAddonsTasks.packReleases);
Expand Down Expand Up @@ -127,6 +131,8 @@ module.exports = function(grunt) {
'npm-react:pack',
'npm-react-dom:release',
'npm-react-dom:pack',
'npm-react-native:release',
'npm-react-native:pack',
'npm-react-addons:release',
'npm-react-addons:pack',
'compare_size',
Expand Down
46 changes: 46 additions & 0 deletions grunt/tasks/npm-react-native.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
'use strict';

var fs = require('fs');
var grunt = require('grunt');

var src = 'packages/react-native-renderer/';
var dest = 'build/packages/react-native-renderer/';

function buildRelease() {
if (grunt.file.exists(dest)) {
grunt.file.delete(dest);
}

// Copy to build/packages/react-native-renderer
var mappings = [].concat(
grunt.file.expandMapping('**/*', dest, {cwd: src}),
grunt.file.expandMapping('{LICENSE,PATENTS}', dest)
);
mappings.forEach(function(mapping) {
var mappingSrc = mapping.src[0];
var mappingDest = mapping.dest;
if (grunt.file.isDir(mappingSrc)) {
grunt.file.mkdir(mappingDest);
} else {
grunt.file.copy(mappingSrc, mappingDest);
}
});
}

function packRelease() {
var done = this.async();
var spawnCmd = {
cmd: 'npm',
args: ['pack', 'packages/react-native-renderer'],
};
grunt.util.spawn(spawnCmd, function() {
var buildSrc = 'react-native-renderer-' + grunt.config.data.pkg.version + '.tgz';
var buildDest = 'build/packages/react-native-renderer.tgz';
fs.rename(buildSrc, buildDest, done);
});
}

module.exports = {
buildRelease: buildRelease,
packRelease: packRelease,
};
2 changes: 2 additions & 0 deletions grunt/tasks/version-check.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ module.exports = function() {
grunt.file.readJSON('./packages/react/package.json').version,
'packages/react-dom/package.json':
grunt.file.readJSON('./packages/react-dom/package.json').version,
'packages/react-native-renderer/package.json':
grunt.file.readJSON('./packages/react-native-renderer/package.json').version,
'packages/react-addons/package.json (version)': addonsData.version,
// Get the "version" without the range bit
'packages/react-addons/package.json (react dependency)': addonsData.peerDependencies.react.slice(1),
Expand Down
38 changes: 29 additions & 9 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ var paths = {
react: {
src: [
'src/**/*.js',
'!src/**/__benchmarks__/**/*.js',
'!src/**/__tests__/**/*.js',
'!src/**/__mocks__/**/*.js',
'!src/shared/vendor/**/*.js',
Expand All @@ -28,17 +29,36 @@ var paths = {
},
};

var fbjsModuleMap = require('fbjs/module-map');
var moduleMap = {};
for (var key in fbjsModuleMap) {
moduleMap[key] = fbjsModuleMap[key];
}
var whiteListNames = [
'deepDiffer',
'deepFreezeAndThrowOnMutationInDev',
'flattenStyle',
'InitializeJavaScriptAppEngine',
'InteractionManager',
'JSTimersExecution',
'merge',
'Platform',
'RCTEventEmitter',
'RCTLog',
'TextInputState',
'UIManager',
'View',
];

whiteListNames.forEach(function(name) {
moduleMap[name] = name;
});

moduleMap['object-assign'] = 'object-assign';

var babelOpts = {
plugins: [
[babelPluginModules, {
map: Object.assign(
{},
require('fbjs/module-map'),
{
'object-assign': 'object-assign',
}
),
}],
[babelPluginModules, { map: moduleMap }],
],
};

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"babel-plugin-transform-es2015-template-literals": "^6.5.2",
"babel-plugin-transform-es3-member-expression-literals": "^6.5.0",
"babel-plugin-transform-es3-property-literals": "^6.5.0",
"babel-plugin-transform-object-rest-spread": "^6.6.5",
"babel-preset-react": "^6.5.0",
"browserify": "^13.0.0",
"bundle-collapser": "^1.1.1",
Expand Down
5 changes: 5 additions & 0 deletions packages/react-native-renderer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# `react-native-renderer`

This package is the renderer that is used by the react-native package.
It is intended to be used inside the react-native environment. It is not
intended to be used stand alone.
3 changes: 3 additions & 0 deletions packages/react-native-renderer/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
'use strict';

module.exports = require('react/lib/ReactNative');
23 changes: 23 additions & 0 deletions packages/react-native-renderer/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "react-native-renderer",
"version": "16.0.0-alpha",
"description": "React package for use inside react-native.",
"main": "index.js",
"repository": {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Want to make it short and drop the object, just make it "facebook/react"?

"type": "git",
"url": "git+https://github.com/facebook/react.git"
},
"keywords": [
"react",
"react-native"
],
"license": "BSD-3-Clause",
"bugs": {
"url": "https://github.com/facebook/react/issues"
},
"homepage": "https://facebook.github.io/react-native/",
"dependencies": {
"fbjs": "^0.8.0",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove this.

"react": "^16.0.0-alpha"
}
}
12 changes: 0 additions & 12 deletions packages/react/lib/ReactDOM.native.js

This file was deleted.

19 changes: 19 additions & 0 deletions src/renderers/native/ReactIOS/IOSDefaultEventPluginOrder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule IOSDefaultEventPluginOrder
* @flow
*/
'use strict';

var IOSDefaultEventPluginOrder = [
'ResponderEventPlugin',
'IOSNativeBridgeEventPlugin',
];

module.exports = IOSDefaultEventPluginOrder;
71 changes: 71 additions & 0 deletions src/renderers/native/ReactIOS/IOSNativeBridgeEventPlugin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule IOSNativeBridgeEventPlugin
* @flow
*/
'use strict';

var EventPropagators = require('EventPropagators');
var SyntheticEvent = require('SyntheticEvent');
var UIManager = require('UIManager');

var merge = require('merge');
var warning = require('warning');

var customBubblingEventTypes = UIManager.customBubblingEventTypes;
var customDirectEventTypes = UIManager.customDirectEventTypes;

var allTypesByEventName = {};

for (var bubblingTypeName in customBubblingEventTypes) {
allTypesByEventName[bubblingTypeName] = customBubblingEventTypes[bubblingTypeName];
}

for (var directTypeName in customDirectEventTypes) {
warning(
!customBubblingEventTypes[directTypeName],
'Event cannot be both direct and bubbling: %s',
directTypeName
);
allTypesByEventName[directTypeName] = customDirectEventTypes[directTypeName];
}

var IOSNativeBridgeEventPlugin = {

eventTypes: merge(customBubblingEventTypes, customDirectEventTypes),

/**
* @see {EventPluginHub.extractEvents}
*/
extractEvents: function(
topLevelType,
targetInst,
nativeEvent,
nativeEventTarget
): ?Object {
var bubbleDispatchConfig = customBubblingEventTypes[topLevelType];
var directDispatchConfig = customDirectEventTypes[topLevelType];
var event = SyntheticEvent.getPooled(
bubbleDispatchConfig || directDispatchConfig,
targetInst,
nativeEvent,
nativeEventTarget
);
if (bubbleDispatchConfig) {
EventPropagators.accumulateTwoPhaseDispatches(event);
} else if (directDispatchConfig) {
EventPropagators.accumulateDirectDispatches(event);
} else {
return null;
}
return event;
},
};

module.exports = IOSNativeBridgeEventPlugin;
Loading