react-native/Libraries/ReactIOS
Spencer Ahrens 1ef4e00fba [ReactNative] Introduce onLayout events
Summary:
Simply add an `onLayout` callback to a native view component, and the callback
will be invoked with the current layout information when the view is mounted and
whenever the layout changes.

The only limitation is that scroll position and other stuff the layout system
isn't aware of is not taken into account.  This is because onLayout events
wouldn't be triggered for these changes and if they are desired they should be
tracked separately (e.g. with `onScroll`) and combined.

Also fixes some bugs with LayoutAnimation callbacks.

@public

Test Plan:
- Run new LayoutEventsExample in UIExplorer and see it work correctly.
- New integration test passes internally (IntegrationTest project seems busted).
- New jest test case passes.

{F22318433}

```
2015-05-06 15:45:05.848 [info][tid:com.facebook.React.JavaScript] "Running application "UIExplorerApp" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF"
2015-05-06 15:45:05.881 [info][tid:com.facebook.React.JavaScript] "received text layout event
", {"target":27,"layout":{"y":123,"x":12.5,"width":140.5,"height":18}}
2015-05-06 15:45:05.882 [info][tid:com.facebook.React.JavaScript] "received image layout event
", {"target":23,"layout":{"y":12.5,"x":122,"width":50,"height":50}}
2015-05-06 15:45:05.883 [info][tid:com.facebook.React.JavaScript] "received view layout event
", {"target":22,"layout":{"y":70.5,"x":20,"width":294,"height":204}}
2015-05-06 15:45:05.897 [info][tid:com.facebook.React.JavaScript] "received text layout event
", {"target":27,"layout":{"y":206.5,"x":12.5,"width":140.5,"height":18}}
2015-05-06 15:45:05.897 [info][tid:com.facebook.React.JavaScript] "received view layout event
", {"target":22,"layout":{"y":70.5,"x":20,"width":294,"height":287.5}}
2015-05-06 15:45:09.847 [info][tid:com.facebook.React.JavaScript] "layout animation done."
2015-05-06 15:45:09.847 [info][tid:com.facebook.React.JavaScript] "received image layout event
", {"target":23,"layout":{"y":12.5,"x":82,"width":50,"height":50}}
2015-05-06 15:45:09.848 [info][tid:com.facebook.React.JavaScript] "received view layout event
", {"target":22,"layout":{"y":110.5,"x":60,"width":214,"height":287.5}}
2015-05-06 15:45:09.862 [info][tid:com.facebook.React.JavaScript] "received text layout event
", {"target":27,"layout":{"y":206.5,"x":12.5,"width":120,"height":68}}
2015-05-06 15:45:09.863 [info][tid:com.facebook.React.JavaScript] "received image layout event
", {"target":23,"layout":{"y":12.5,"x":55,"width":50,"height":50}}
2015-05-06 15:45:09.863 [info][tid:com.facebook.React.JavaScript] "received view layout event
", {"target":22,"layout":{"y":128,"x":60,"width":160,"height":337.5}}
```
2015-05-07 12:27:44 -08:00
..
IOSDefaultEventPluginOrder.js flowify Libraries/ReactIOS 2015-03-25 17:09:51 -08:00
IOSNativeBridgeEventPlugin.js flowify Libraries/ReactIOS 2015-03-25 17:09:51 -08:00
NativeMethodsMixin.js Implement transform styles, redux 2015-04-23 10:17:39 -08:00
React.js flowify Libraries/ReactIOS 2015-03-25 17:09:51 -08:00
ReactIOS.js [react-native] Bring React.render behavior in line with web 2015-03-31 10:52:42 -08:00
ReactIOSComponentEnvironment.js flowify Libraries/ReactIOS 2015-03-25 17:09:51 -08:00
ReactIOSComponentMixin.js [react-native] Fix capitalization of "REact" 2015-04-27 13:52:57 -08:00
ReactIOSDOMIDOperations.js flowify Libraries/ReactIOS 2015-03-25 17:09:51 -08:00
ReactIOSDefaultInjection.js [react-native] Nicer error for undefined or string tag names 2015-04-02 16:40:24 -08:00
ReactIOSEventEmitter.js Flowify ReactIOSEventEmitter 2015-03-25 10:10:47 -08:00
ReactIOSGlobalInteractionHandler.js Flowify a bunch of Libraries 2015-03-24 18:22:05 -08:00
ReactIOSGlobalResponderHandler.js Flowify a bunch of Libraries 2015-03-24 18:22:05 -08:00
ReactIOSMount.js Improved RCTActivityIndicatorView and fixed some flow errors 2015-04-26 02:17:13 -08:00
ReactIOSNativeComponent.js Implement transform styles, redux 2015-04-23 10:17:39 -08:00
ReactIOSReconcileTransaction.js Flowify a bunch of Libraries 2015-03-24 18:22:05 -08:00
ReactIOSStyleAttributes.js [ReactNative] verifyPropTypes against native exports 2015-04-16 18:15:36 -08:00
ReactIOSTagHandles.js Flowify a bunch of Libraries 2015-03-24 18:22:05 -08:00
ReactIOSTextComponent.js [ReactNative] Expanded license on js files 2015-03-23 13:17:54 -08:00
ReactIOSViewAttributes.js [ReactNative] Introduce onLayout events 2015-05-07 12:27:44 -08:00
WarningBox.js [ReactNative][RFC] Yellow Box for warnings 2015-04-27 13:32:22 -08:00
createReactIOSNativeComponentClass.js flowify Libraries/ReactIOS 2015-03-25 17:09:51 -08:00
diffRawProperties.js [ReactNative] Introduce onLayout events 2015-05-07 12:27:44 -08:00
renderApplication.ios.js [react-native] Fix Chrome debugging 2015-04-30 02:16:40 -08:00
requireNativeComponent.js Reduced prop mapping overhead 2015-04-22 04:13:25 -08:00
verifyPropTypes.js [ReactNative] use requireNativeComponent to clean up a bunch of boilerplate 2015-04-21 21:06:48 -08:00