2015-02-20 07:10:52 +03:00
|
|
|
/**
|
2015-03-23 23:35:08 +03:00
|
|
|
* 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.
|
2015-02-20 07:10:52 +03:00
|
|
|
*
|
2017-02-25 21:21:09 +03:00
|
|
|
* @providesModule react-native-implementation
|
2015-12-08 03:54:18 +03:00
|
|
|
* @noflow - get/set properties not yet supported by flow. also `...require(x)` is broken #6560135
|
2015-02-20 07:10:52 +03:00
|
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
|
2016-05-25 14:17:35 +03:00
|
|
|
const warning = require('fbjs/lib/warning');
|
2016-04-12 04:19:23 +03:00
|
|
|
|
|
|
|
if (__DEV__) {
|
2016-07-05 16:34:00 +03:00
|
|
|
var warningDedupe = {};
|
|
|
|
var addonWarn = function(prevName, newPackageName) {
|
2016-04-12 04:19:23 +03:00
|
|
|
warning(
|
|
|
|
warningDedupe[prevName],
|
|
|
|
'React.addons.' + prevName + ' is deprecated. Please import the "' +
|
|
|
|
newPackageName + '" package instead.'
|
|
|
|
);
|
|
|
|
warningDedupe[prevName] = true;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2015-03-23 08:30:06 +03:00
|
|
|
// Export React, plus some native additions.
|
2016-05-25 14:17:35 +03:00
|
|
|
const ReactNative = {
|
2015-03-18 20:06:01 +03:00
|
|
|
// Components
|
2017-02-28 05:28:23 +03:00
|
|
|
get AccessibilityInfo() { return require('AccessibilityInfo'); },
|
2016-05-26 23:46:58 +03:00
|
|
|
get ActivityIndicator() { return require('ActivityIndicator'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get ART() { return require('ReactNativeART'); },
|
2016-10-11 03:18:42 +03:00
|
|
|
get Button() { return require('Button'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get DatePickerIOS() { return require('DatePickerIOS'); },
|
|
|
|
get DrawerLayoutAndroid() { return require('DrawerLayoutAndroid'); },
|
2017-03-02 04:52:52 +03:00
|
|
|
get FlatList() { return require('FlatList'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get Image() { return require('Image'); },
|
2015-12-23 00:36:37 +03:00
|
|
|
get ImageEditor() { return require('ImageEditor'); },
|
|
|
|
get ImageStore() { return require('ImageStore'); },
|
2016-06-07 17:42:50 +03:00
|
|
|
get KeyboardAvoidingView() { return require('KeyboardAvoidingView'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get ListView() { return require('ListView'); },
|
|
|
|
get Modal() { return require('Modal'); },
|
|
|
|
get Navigator() { return require('Navigator'); },
|
|
|
|
get NavigatorIOS() { return require('NavigatorIOS'); },
|
2016-01-29 14:58:35 +03:00
|
|
|
get Picker() { return require('Picker'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get PickerIOS() { return require('PickerIOS'); },
|
|
|
|
get ProgressBarAndroid() { return require('ProgressBarAndroid'); },
|
|
|
|
get ProgressViewIOS() { return require('ProgressViewIOS'); },
|
|
|
|
get ScrollView() { return require('ScrollView'); },
|
2017-03-02 04:52:52 +03:00
|
|
|
get SectionList() { return require('SectionList'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get SegmentedControlIOS() { return require('SegmentedControlIOS'); },
|
2016-04-06 14:49:47 +03:00
|
|
|
get Slider() { return require('Slider'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get SnapshotViewIOS() { return require('SnapshotViewIOS'); },
|
|
|
|
get Switch() { return require('Switch'); },
|
2016-01-04 18:59:10 +03:00
|
|
|
get RefreshControl() { return require('RefreshControl'); },
|
2016-02-03 17:40:39 +03:00
|
|
|
get StatusBar() { return require('StatusBar'); },
|
2016-07-11 14:55:59 +03:00
|
|
|
get SwipeableListView() { return require('SwipeableListView'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get TabBarIOS() { return require('TabBarIOS'); },
|
|
|
|
get Text() { return require('Text'); },
|
|
|
|
get TextInput() { return require('TextInput'); },
|
|
|
|
get ToastAndroid() { return require('ToastAndroid'); },
|
|
|
|
get ToolbarAndroid() { return require('ToolbarAndroid'); },
|
|
|
|
get Touchable() { return require('Touchable'); },
|
|
|
|
get TouchableHighlight() { return require('TouchableHighlight'); },
|
|
|
|
get TouchableNativeFeedback() { return require('TouchableNativeFeedback'); },
|
|
|
|
get TouchableOpacity() { return require('TouchableOpacity'); },
|
|
|
|
get TouchableWithoutFeedback() { return require('TouchableWithoutFeedback'); },
|
|
|
|
get View() { return require('View'); },
|
|
|
|
get ViewPagerAndroid() { return require('ViewPagerAndroid'); },
|
2017-03-02 04:52:52 +03:00
|
|
|
get VirtualizedList() { return require('VirtualizedList'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get WebView() { return require('WebView'); },
|
2015-03-18 20:06:01 +03:00
|
|
|
|
|
|
|
// APIs
|
2015-12-08 03:54:18 +03:00
|
|
|
get ActionSheetIOS() { return require('ActionSheetIOS'); },
|
|
|
|
get AdSupportIOS() { return require('AdSupportIOS'); },
|
2015-12-17 22:09:22 +03:00
|
|
|
get Alert() { return require('Alert'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get AlertIOS() { return require('AlertIOS'); },
|
|
|
|
get Animated() { return require('Animated'); },
|
|
|
|
get AppRegistry() { return require('AppRegistry'); },
|
2016-01-21 22:43:51 +03:00
|
|
|
get AppState() { return require('AppState'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get AsyncStorage() { return require('AsyncStorage'); },
|
2017-03-07 08:41:51 +03:00
|
|
|
get BackAndroid() { return require('BackAndroid'); }, // deprecated: use BackHandler instead
|
|
|
|
get BackHandler() { return require('BackHandler'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get CameraRoll() { return require('CameraRoll'); },
|
2015-12-09 21:00:19 +03:00
|
|
|
get Clipboard() { return require('Clipboard'); },
|
2016-01-26 21:29:47 +03:00
|
|
|
get DatePickerAndroid() { return require('DatePickerAndroid'); },
|
2017-03-18 02:47:51 +03:00
|
|
|
get DeviceInfo() { return require('DeviceInfo'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get Dimensions() { return require('Dimensions'); },
|
|
|
|
get Easing() { return require('Easing'); },
|
2016-08-19 06:49:25 +03:00
|
|
|
get I18nManager() { return require('I18nManager'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get ImagePickerIOS() { return require('ImagePickerIOS'); },
|
|
|
|
get InteractionManager() { return require('InteractionManager'); },
|
2016-05-25 14:17:35 +03:00
|
|
|
get Keyboard() { return require('Keyboard'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get LayoutAnimation() { return require('LayoutAnimation'); },
|
2016-01-27 01:34:00 +03:00
|
|
|
get Linking() { return require('Linking'); },
|
2016-05-25 14:17:35 +03:00
|
|
|
get NativeEventEmitter() { return require('NativeEventEmitter'); },
|
2016-02-06 01:25:17 +03:00
|
|
|
get NavigationExperimental() { return require('NavigationExperimental'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get NetInfo() { return require('NetInfo'); },
|
|
|
|
get PanResponder() { return require('PanResponder'); },
|
2016-08-15 15:52:04 +03:00
|
|
|
get PermissionsAndroid() { return require('PermissionsAndroid'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get PixelRatio() { return require('PixelRatio'); },
|
|
|
|
get PushNotificationIOS() { return require('PushNotificationIOS'); },
|
|
|
|
get Settings() { return require('Settings'); },
|
2016-07-25 13:34:06 +03:00
|
|
|
get Share() { return require('Share'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get StatusBarIOS() { return require('StatusBarIOS'); },
|
|
|
|
get StyleSheet() { return require('StyleSheet'); },
|
2016-05-25 15:21:36 +03:00
|
|
|
get Systrace() { return require('Systrace'); },
|
2016-01-26 21:29:47 +03:00
|
|
|
get TimePickerAndroid() { return require('TimePickerAndroid'); },
|
2017-03-07 08:41:51 +03:00
|
|
|
get TVEventHandler() { return require('TVEventHandler'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get UIManager() { return require('UIManager'); },
|
2016-03-03 15:08:10 +03:00
|
|
|
get Vibration() { return require('Vibration'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get VibrationIOS() { return require('VibrationIOS'); },
|
2015-03-18 20:06:01 +03:00
|
|
|
|
2015-03-23 19:39:18 +03:00
|
|
|
// Plugins
|
2015-12-08 03:54:18 +03:00
|
|
|
get DeviceEventEmitter() { return require('RCTDeviceEventEmitter'); },
|
|
|
|
get NativeAppEventEmitter() { return require('RCTNativeAppEventEmitter'); },
|
|
|
|
get NativeModules() { return require('NativeModules'); },
|
|
|
|
get Platform() { return require('Platform'); },
|
|
|
|
get processColor() { return require('processColor'); },
|
|
|
|
get requireNativeComponent() { return require('requireNativeComponent'); },
|
2015-03-23 19:39:18 +03:00
|
|
|
|
2015-06-12 21:14:19 +03:00
|
|
|
// Prop Types
|
2015-12-23 06:29:01 +03:00
|
|
|
get ColorPropType() { return require('ColorPropType'); },
|
2015-12-08 03:54:18 +03:00
|
|
|
get EdgeInsetsPropType() { return require('EdgeInsetsPropType'); },
|
|
|
|
get PointPropType() { return require('PointPropType'); },
|
2015-06-12 21:14:19 +03:00
|
|
|
|
2015-10-02 17:58:32 +03:00
|
|
|
// See http://facebook.github.io/react/docs/addons.html
|
2015-03-23 06:32:49 +03:00
|
|
|
addons: {
|
2016-04-12 04:19:23 +03:00
|
|
|
get PureRenderMixin() {
|
|
|
|
if (__DEV__) {
|
|
|
|
addonWarn('PureRenderMixin', 'react-addons-pure-render-mixin');
|
|
|
|
}
|
2016-07-05 16:34:00 +03:00
|
|
|
return require('react/lib/ReactComponentWithPureRenderMixin');
|
2016-04-12 04:19:23 +03:00
|
|
|
},
|
|
|
|
get TestModule() {
|
|
|
|
if (__DEV__) {
|
|
|
|
warning(
|
|
|
|
warningDedupe.TestModule,
|
|
|
|
'React.addons.TestModule is deprecated. ' +
|
|
|
|
'Use ReactNative.NativeModules.TestModule instead.'
|
|
|
|
);
|
|
|
|
warningDedupe.TestModule = true;
|
|
|
|
}
|
|
|
|
return require('NativeModules').TestModule;
|
|
|
|
},
|
|
|
|
get batchedUpdates() {
|
|
|
|
if (__DEV__) {
|
|
|
|
warning(
|
|
|
|
warningDedupe.batchedUpdates,
|
|
|
|
'React.addons.batchedUpdates is deprecated. ' +
|
|
|
|
'Use ReactNative.unstable_batchedUpdates instead.'
|
|
|
|
);
|
|
|
|
warningDedupe.batchedUpdates = true;
|
|
|
|
}
|
2016-11-04 15:40:26 +03:00
|
|
|
return require('ReactUpdates').batchedUpdates;
|
2016-04-12 04:19:23 +03:00
|
|
|
},
|
|
|
|
get createFragment() {
|
|
|
|
if (__DEV__) {
|
|
|
|
addonWarn('createFragment', 'react-addons-create-fragment');
|
|
|
|
}
|
2016-07-05 16:34:00 +03:00
|
|
|
return require('react/lib/ReactFragment').create;
|
2016-04-12 04:19:23 +03:00
|
|
|
},
|
|
|
|
get update() {
|
|
|
|
if (__DEV__) {
|
|
|
|
addonWarn('update', 'react-addons-update');
|
|
|
|
}
|
2016-07-05 16:34:00 +03:00
|
|
|
return require('react/lib/update');
|
2016-04-12 04:19:23 +03:00
|
|
|
},
|
2015-03-23 06:32:49 +03:00
|
|
|
},
|
2015-12-08 03:54:18 +03:00
|
|
|
};
|
2015-02-20 07:10:52 +03:00
|
|
|
|
2016-06-14 16:16:29 +03:00
|
|
|
// Better error messages when accessing React APIs on ReactNative
|
|
|
|
if (__DEV__) {
|
|
|
|
const throwOnWrongReactAPI = require('throwOnWrongReactAPI');
|
|
|
|
const reactAPIs = [ 'createClass', 'Component' ];
|
|
|
|
|
|
|
|
for (const key of reactAPIs) {
|
|
|
|
Object.defineProperty(ReactNative, key, {
|
|
|
|
get() { throwOnWrongReactAPI(key); },
|
|
|
|
enumerable: false,
|
2016-10-15 04:50:13 +03:00
|
|
|
configurable: false,
|
2016-06-14 16:16:29 +03:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-04-09 14:17:34 +03:00
|
|
|
// Preserve getters with warnings on the internal ReactNative copy without
|
|
|
|
// invoking them.
|
2016-10-15 04:50:14 +03:00
|
|
|
const ReactNativeInternal = require('ReactNative');
|
2016-04-09 14:17:34 +03:00
|
|
|
function applyForwarding(key) {
|
|
|
|
if (__DEV__) {
|
|
|
|
Object.defineProperty(
|
|
|
|
ReactNative,
|
|
|
|
key,
|
|
|
|
Object.getOwnPropertyDescriptor(ReactNativeInternal, key)
|
|
|
|
);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
ReactNative[key] = ReactNativeInternal[key];
|
|
|
|
}
|
2016-05-25 14:17:35 +03:00
|
|
|
for (const key in ReactNativeInternal) {
|
2016-04-09 14:17:34 +03:00
|
|
|
applyForwarding(key);
|
|
|
|
}
|
2015-02-20 07:10:52 +03:00
|
|
|
module.exports = ReactNative;
|