| 
				
			 | 
			
			
				@@ -18,7 +18,7 @@ import PropTypes from 'prop-types'; 
			 | 
		
	
		
			
			| 
				18
			 | 
			
				18
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				19
			 | 
			
				19
			 | 
			
			
				 import Immutable from 'immutable'; 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				20
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				21
			 | 
			
				
			 | 
			
			
				-import { handleSizeUpdated, getWidth, getScript, domMutationObserveScript } from './common.js'; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				21
			 | 
			
			
				+import { handleSizeUpdated, getWidth, getScript, domMutationObserveScript, getCurrentSize } from './common.js'; 
			 | 
		
	
		
			
			| 
				22
			 | 
			
				22
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				23
			 | 
			
				23
			 | 
			
			
				 const RCTAutoHeightWebView = requireNativeComponent('RCTAutoHeightWebView', AutoHeightWebView, { 
			 | 
		
	
		
			
			| 
				24
			 | 
			
				24
			 | 
			
			
				   nativeOnly: { 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -77,7 +77,6 @@ export default class AutoHeightWebView extends PureComponent { 
			 | 
		
	
		
			
			| 
				77
			 | 
			
				77
			 | 
			
			
				     super(props); 
			 | 
		
	
		
			
			| 
				78
			 | 
			
				78
			 | 
			
			
				     const { enableAnimation, style } = props; 
			 | 
		
	
		
			
			| 
				79
			 | 
			
				79
			 | 
			
			
				     enableAnimation && (this.opacityAnimatedValue = new Animated.Value(0)); 
			 | 
		
	
		
			
			| 
				80
			 | 
			
				
			 | 
			
			
				-    this.webView = React.createRef(); 
			 | 
		
	
		
			
			| 
				81
			 | 
			
				80
			 | 
			
			
				     isBelowKitKat && DeviceEventEmitter.addListener('webViewBridgeMessage', this.listenWebViewBridgeMessage); 
			 | 
		
	
		
			
			| 
				82
			 | 
			
				81
			 | 
			
			
				     this.state = { 
			 | 
		
	
		
			
			| 
				83
			 | 
			
				82
			 | 
			
			
				       isChangingSource: false, 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -153,6 +152,7 @@ export default class AutoHeightWebView extends PureComponent { 
			 | 
		
	
		
			
			| 
				153
			 | 
			
				152
			 | 
			
			
				   } 
			 | 
		
	
		
			
			| 
				154
			 | 
			
				153
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				155
			 | 
			
				154
			 | 
			
			
				   onMessage = e => { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				155
			 | 
			
			
				+    console.log(e) 
			 | 
		
	
		
			
			| 
				156
			 | 
			
				156
			 | 
			
			
				     const { height, width } = JSON.parse(isBelowKitKat ? e.nativeEvent.message : e.nativeEvent.data); 
			 | 
		
	
		
			
			| 
				157
			 | 
			
				157
			 | 
			
			
				     const { height: oldHeight, width: oldWidth } = this.state; 
			 | 
		
	
		
			
			| 
				158
			 | 
			
				158
			 | 
			
			
				     if ((height && height !== oldHeight) || (width && width !== oldWidth)) { 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -201,6 +201,8 @@ export default class AutoHeightWebView extends PureComponent { 
			 | 
		
	
		
			
			| 
				201
			 | 
			
				201
			 | 
			
			
				     onLoadEnd && onLoadEnd(event); 
			 | 
		
	
		
			
			| 
				202
			 | 
			
				202
			 | 
			
			
				   }; 
			 | 
		
	
		
			
			| 
				203
			 | 
			
				203
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				204
			 | 
			
			
				+  getWebView = webView => (this.webView = webView); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				205
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				204
			 | 
			
				206
			 | 
			
			
				   stopLoading() { 
			 | 
		
	
		
			
			| 
				205
			 | 
			
				207
			 | 
			
			
				     UIManager.dispatchViewManagerCommand( 
			 | 
		
	
		
			
			| 
				206
			 | 
			
				208
			 | 
			
			
				       findNodeHandle(this.webView), 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -211,7 +213,7 @@ export default class AutoHeightWebView extends PureComponent { 
			 | 
		
	
		
			
			| 
				211
			 | 
			
				213
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				212
			 | 
			
				214
			 | 
			
			
				   render() { 
			 | 
		
	
		
			
			| 
				213
			 | 
			
				215
			 | 
			
			
				     const { height, width, script, isChangingSource, heightOffset } = this.state; 
			 | 
		
	
		
			
			| 
				214
			 | 
			
				
			 | 
			
			
				-    const { scalesPageToFit, enableAnimation, source, customScript, style, enableBaseUrl, scrollEnabled } = this.props; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				216
			 | 
			
			
				+    const { scalesPageToFit, enableAnimation, source, style, enableBaseUrl, scrollEnabled } = this.props; 
			 | 
		
	
		
			
			| 
				215
			 | 
			
				217
			 | 
			
			
				     let webViewSource = source; 
			 | 
		
	
		
			
			| 
				216
			 | 
			
				218
			 | 
			
			
				     if (enableBaseUrl) { 
			 | 
		
	
		
			
			| 
				217
			 | 
			
				219
			 | 
			
			
				       webViewSource = Object.assign({}, source, { 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -235,11 +237,11 @@ export default class AutoHeightWebView extends PureComponent { 
			 | 
		
	
		
			
			| 
				235
			 | 
			
				237
			 | 
			
			
				             onLoadingStart={this.onLoadingStart} 
			 | 
		
	
		
			
			| 
				236
			 | 
			
				238
			 | 
			
			
				             onLoadingFinish={this.onLoadingFinish} 
			 | 
		
	
		
			
			| 
				237
			 | 
			
				239
			 | 
			
			
				             onLoadingError={this.onLoadingError} 
			 | 
		
	
		
			
			| 
				238
			 | 
			
				
			 | 
			
			
				-            originWhitelist={['*']} 
			 | 
		
	
		
			
			| 
				239
			 | 
			
				
			 | 
			
			
				-            ref={this.webView} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				240
			 | 
			
			
				+            originWhitelist={['.*']} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				241
			 | 
			
			
				+            ref={this.getWebView} 
			 | 
		
	
		
			
			| 
				240
			 | 
			
				242
			 | 
			
			
				             style={styles.webView} 
			 | 
		
	
		
			
			| 
				241
			 | 
			
				243
			 | 
			
			
				             javaScriptEnabled={true} 
			 | 
		
	
		
			
			| 
				242
			 | 
			
				
			 | 
			
			
				-            injectedJavaScript={script + customScript} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				244
			 | 
			
			
				+            injectedJavaScript={script} 
			 | 
		
	
		
			
			| 
				243
			 | 
			
				245
			 | 
			
			
				             scalesPageToFit={scalesPageToFit} 
			 | 
		
	
		
			
			| 
				244
			 | 
			
				246
			 | 
			
			
				             scrollEnabled={!!scrollEnabled} 
			 | 
		
	
		
			
			| 
				245
			 | 
			
				247
			 | 
			
			
				             source={webViewSource} 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -266,41 +268,50 @@ const styles = StyleSheet.create({ 
			 | 
		
	
		
			
			| 
				266
			 | 
			
				268
			 | 
			
			
				   } 
			 | 
		
	
		
			
			| 
				267
			 | 
			
				269
			 | 
			
			
				 }); 
			 | 
		
	
		
			
			| 
				268
			 | 
			
				270
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				269
			 | 
			
				
			 | 
			
			
				-const getBaseScript = isBelowKitKat 
			 | 
		
	
		
			
			| 
				270
			 | 
			
				
			 | 
			
			
				-  ? function() { 
			 | 
		
	
		
			
			| 
				271
			 | 
			
				
			 | 
			
			
				-      return ` 
			 | 
		
	
		
			
			| 
				272
			 | 
			
				
			 | 
			
			
				-  ; (function () { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				271
			 | 
			
			
				+const updateSize = ` 
			 | 
		
	
		
			
			| 
				
			 | 
			
				272
			 | 
			
			
				+  function updateSize() { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				273
			 | 
			
			
				+    if(document.body.offsetHeight !== height || document.body.offsetWidth !== width) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				274
			 | 
			
			
				+      var size = getSize(document.body.firstChild);  
			 | 
		
	
		
			
			| 
				
			 | 
			
				275
			 | 
			
			
				+      height = size.height; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				276
			 | 
			
			
				+      width = size.width; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				277
			 | 
			
			
				+      AutoHeightWebView.send(JSON.stringify({ width, height })); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				278
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				279
			 | 
			
			
				+  } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				280
			 | 
			
			
				+` 
			 | 
		
	
		
			
			| 
				
			 | 
			
				281
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				282
			 | 
			
			
				+const commonScript = ` 
			 | 
		
	
		
			
			| 
				
			 | 
			
				283
			 | 
			
			
				+    ${getCurrentSize} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				284
			 | 
			
			
				+    ${updateSize} 
			 | 
		
	
		
			
			| 
				273
			 | 
			
				285
			 | 
			
			
				     var wrapper = document.createElement('div'); 
			 | 
		
	
		
			
			| 
				274
			 | 
			
				286
			 | 
			
			
				     wrapper.id = 'wrapper'; 
			 | 
		
	
		
			
			| 
				275
			 | 
			
				287
			 | 
			
			
				     while (document.body.firstChild instanceof Node) { 
			 | 
		
	
		
			
			| 
				276
			 | 
			
				288
			 | 
			
			
				         wrapper.appendChild(document.body.firstChild); 
			 | 
		
	
		
			
			| 
				277
			 | 
			
				289
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				290
			 | 
			
			
				+`; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				291
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				292
			 | 
			
			
				+const getBaseScript = isBelowKitKat 
			 | 
		
	
		
			
			| 
				
			 | 
			
				293
			 | 
			
			
				+  ? function(style) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				294
			 | 
			
			
				+      return ` 
			 | 
		
	
		
			
			| 
				
			 | 
			
				295
			 | 
			
			
				+    ;  
			 | 
		
	
		
			
			| 
				
			 | 
			
				296
			 | 
			
			
				+    var height = 0; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				297
			 | 
			
			
				+    var width = ${getWidth(style)}; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				298
			 | 
			
			
				+    (function () { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				299
			 | 
			
			
				+    ${commonScript} 
			 | 
		
	
		
			
			| 
				278
			 | 
			
				300
			 | 
			
			
				     document.body.appendChild(wrapper); 
			 | 
		
	
		
			
			| 
				279
			 | 
			
				
			 | 
			
			
				-    AutoHeightWebView.onMessage = function (message) { 
			 | 
		
	
		
			
			| 
				280
			 | 
			
				
			 | 
			
			
				-        var rect = document.body.firstElementChild.getBoundingClientRect().toJSON(); 
			 | 
		
	
		
			
			| 
				281
			 | 
			
				
			 | 
			
			
				-        var width = Math.round(rect.width); 
			 | 
		
	
		
			
			| 
				282
			 | 
			
				
			 | 
			
			
				-        var height = Math.round(rect.height); 
			 | 
		
	
		
			
			| 
				283
			 | 
			
				
			 | 
			
			
				-        AutoHeightWebView.send(JSON.stringify({ width, height })); 
			 | 
		
	
		
			
			| 
				284
			 | 
			
				
			 | 
			
			
				-    }; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				301
			 | 
			
			
				+    AutoHeightWebView.onMessage = updateSize; 
			 | 
		
	
		
			
			| 
				285
			 | 
			
				302
			 | 
			
			
				     ${domMutationObserveScript} 
			 | 
		
	
		
			
			| 
				286
			 | 
			
				303
			 | 
			
			
				 } ()); 
			 | 
		
	
		
			
			| 
				287
			 | 
			
				304
			 | 
			
			
				   `; 
			 | 
		
	
		
			
			| 
				288
			 | 
			
				305
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				289
			 | 
			
				
			 | 
			
			
				-  : function() { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				306
			 | 
			
			
				+  : function(style) { 
			 | 
		
	
		
			
			| 
				290
			 | 
			
				307
			 | 
			
			
				       return ` 
			 | 
		
	
		
			
			| 
				291
			 | 
			
				
			 | 
			
			
				-  ; (function () { 
			 | 
		
	
		
			
			| 
				292
			 | 
			
				
			 | 
			
			
				-    var wrapper = document.createElement('div'); 
			 | 
		
	
		
			
			| 
				293
			 | 
			
				
			 | 
			
			
				-    wrapper.id = 'wrapper'; 
			 | 
		
	
		
			
			| 
				294
			 | 
			
				
			 | 
			
			
				-    while (document.body.firstChild instanceof Node) { 
			 | 
		
	
		
			
			| 
				295
			 | 
			
				
			 | 
			
			
				-        wrapper.appendChild(document.body.firstChild); 
			 | 
		
	
		
			
			| 
				296
			 | 
			
				
			 | 
			
			
				-    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				308
			 | 
			
			
				+    ;  
			 | 
		
	
		
			
			| 
				
			 | 
			
				309
			 | 
			
			
				+    var height = 0; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				310
			 | 
			
			
				+    var width = ${getWidth(style)}; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				311
			 | 
			
			
				+    (function () { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				312
			 | 
			
			
				+    ${commonScript} 
			 | 
		
	
		
			
			| 
				297
			 | 
			
				313
			 | 
			
			
				     document.body.appendChild(wrapper); 
			 | 
		
	
		
			
			| 
				298
			 | 
			
				
			 | 
			
			
				-    document.addEventListener('message', function (e) { 
			 | 
		
	
		
			
			| 
				299
			 | 
			
				
			 | 
			
			
				-        var rect = document.body.firstElementChild.getBoundingClientRect().toJSON(); 
			 | 
		
	
		
			
			| 
				300
			 | 
			
				
			 | 
			
			
				-        var width = Math.round(rect.width); 
			 | 
		
	
		
			
			| 
				301
			 | 
			
				
			 | 
			
			
				-        var height = Math.round(rect.height); 
			 | 
		
	
		
			
			| 
				302
			 | 
			
				
			 | 
			
			
				-        window.postMessage(JSON.stringify({ width, height })); 
			 | 
		
	
		
			
			| 
				303
			 | 
			
				
			 | 
			
			
				-    }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				314
			 | 
			
			
				+    document.addEventListener('message', updateSize); 
			 | 
		
	
		
			
			| 
				304
			 | 
			
				315
			 | 
			
			
				     ${domMutationObserveScript} 
			 | 
		
	
		
			
			| 
				305
			 | 
			
				316
			 | 
			
			
				 } ()); 
			 | 
		
	
		
			
			| 
				306
			 | 
			
				317
			 | 
			
			
				   `; 
			 |