* Rename #1 for ViewBase to fix caps
* Rename #2 to fix ViewBase. Enabling forceConsistentCasingInFileNames.
* Enabling noImplicitReturns, fixing a bug in native-common/Linking.ts
* Enabling noImplicitThis
* Enabling noUnusedLocals and fixing some bugs it found
* Enabling strict null checks on reactxp
* Addressing PR feedback
* Fixing a bunch of type exporting/checking issues
* Fixed a bunch of base interfaces and made everything inherit from them. Made the exported reactxp.ts files per-platform export types from the base classes instead of their specific implementation. This brought a bunch of interface holes to the surface.
* Bump React and React Native for RN 0.42
Note that I switched React to be the version listed in React Native 0.42's package.json file. Sometimes, React Native takes dependencies on React's internals so it's good to use the same version that React Native lists.
* Fix meaning of `flex` style for RN 0.42
In React Native 0.42, `flex` has a different behavior than it did in 0.34. RN 0.42 supports `flexGrow`, `flexShrink`, and `flexBasis` so we map `flex` into those properties exactly the same way web does in order to maintain consistent layout behavior between RN and web.
* Android TextInput: Hide default native underline
By default, Android's native EditText control shows an underline. In RN, setting the TextInput's background color used to cause the underline to be hidden. In a newer version of RN, it doesn't and we must explicitly set the underline's color to transparen to hide it.
You can see screenshots with and without the underline at https://github.com/facebook/react-native/issues/5424#issuecomment-262425480.
* Fix TextInput layout consistency by setting default padding to 0
Android's native EditText control has default non-zero padding. This causes RX's TextInput to render differently on Android than it does on iOS and web. Giving RX.TextInput a default padding of 0 fixes this consistency issue.
* RN 0.42 switched keyboardShouldPersistTaps from bool to enum
For now, RX's interface accepts only a boolean and converts it to the enum. In the future, we should remove support for the boolean from the interface and just support the enum.
* Implement setNativeProps for Button
When RX.View returns a Button, the Button is assigned to View's _nativeView instance variable and consequently is expected to implement setNativeProps.
* Fix Button's highlight when it is pressed
When a Button is pressed, its opacity should change. However, this broke in React Native 0.42. The problem is that Button incorporates ReactNative's Touchable.Mixin. In between RN 0.34 and 0.42, Touchable.Mixin started implementing the methods `componentDidMount` and `componentWillUnmount`. These ended up overriding Button's implementations so Button never set _isMounted to true, and functionality like changing the Button's opacity when it is pressed broke.
I don't know of a good fix for this. React has a mixin mechanism which would avoid this problem but it isn't supported when using ES6 classes. Consequently, we have to rely on our own mixin mechanism. I handled the naming collisions manually and wrote some asserts so we can detect new collisions in the future.
I deleted MixinUtil.ts to discourage people from using mixins in other places.
* Made changes based on code review feedback
* Addressed more PR feedback
- Don't need to bind the _mixin_* functions
- Instead of setting the _mixin_* functions to null, set them to a nop so the rest of the code doesn't have to worry about doing a null check before calling them.