| 
				
			 | 
			
			
				@@ -11,10 +11,14 @@ import { 
			 | 
		
	
		
			
			| 
				11
			 | 
			
				11
			 | 
			
			
				     WebView 
			 | 
		
	
		
			
			| 
				12
			 | 
			
				12
			 | 
			
			
				 } from 'react-native'; 
			 | 
		
	
		
			
			| 
				13
			 | 
			
				13
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				14
			 | 
			
			
				+const RCTAutoHeightWebView = requireNativeComponent('RCTAutoHeightWebView', AutoHeightWebView); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				14
			 | 
			
				16
			 | 
			
			
				 export default class AutoHeightWebView extends Component { 
			 | 
		
	
		
			
			| 
				15
			 | 
			
				17
			 | 
			
			
				     constructor(props) { 
			 | 
		
	
		
			
			| 
				16
			 | 
			
				18
			 | 
			
			
				         super(props); 
			 | 
		
	
		
			
			| 
				17
			 | 
			
				
			 | 
			
			
				-        this.handleNavigationStateChange = this.handleNavigationStateChange.bind(this); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				19
			 | 
			
			
				+        this.onLoadingStart = this.onLoadingStart.bind(this); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				20
			 | 
			
			
				+        this.onLoadingFinish = this.onLoadingStart.bind(this); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				21
			 | 
			
			
				+        this.handleNavigationStateChanged = this.handleNavigationStateChanged.bind(this); 
			 | 
		
	
		
			
			| 
				18
			 | 
			
				22
			 | 
			
			
				         const initialScript = props.files ? this.appendFilesToHead(props.files, BaseScript) : BaseScript; 
			 | 
		
	
		
			
			| 
				19
			 | 
			
				23
			 | 
			
			
				         this.state = { 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				24
			 | 
			
			
				             height: 0, 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -30,6 +34,18 @@ export default class AutoHeightWebView extends Component { 
			 | 
		
	
		
			
			| 
				30
			 | 
			
				34
			 | 
			
			
				         this.setState({ script: currentScript }); 
			 | 
		
	
		
			
			| 
				31
			 | 
			
				35
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				32
			 | 
			
				36
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				37
			 | 
			
			
				+    onLoadingStart(event) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				38
			 | 
			
			
				+        this.updateNavigationState(event); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				39
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				41
			 | 
			
			
				+    onLoadingFinish(event) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				42
			 | 
			
			
				+        this.updateNavigationState(event); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				43
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				44
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				45
			 | 
			
			
				+    updateNavigationState(event) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				46
			 | 
			
			
				+        this.handleNavigationStateChanged(event.nativeEvent); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				47
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				33
			 | 
			
				49
			 | 
			
			
				     appendFilesToHead(files, script) { 
			 | 
		
	
		
			
			| 
				34
			 | 
			
				50
			 | 
			
			
				         if (!files) { 
			 | 
		
	
		
			
			| 
				35
			 | 
			
				51
			 | 
			
			
				             return script; 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -47,11 +63,13 @@ export default class AutoHeightWebView extends Component { 
			 | 
		
	
		
			
			| 
				47
			 | 
			
				63
			 | 
			
			
				         return script; 
			 | 
		
	
		
			
			| 
				48
			 | 
			
				64
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				49
			 | 
			
				65
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				50
			 | 
			
				
			 | 
			
			
				-    handleNavigationStateChange(navState) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				66
			 | 
			
			
				+    handleNavigationStateChanged(navState) { 
			 | 
		
	
		
			
			| 
				51
			 | 
			
				67
			 | 
			
			
				         const height = Number(navState.title); 
			 | 
		
	
		
			
			| 
				52
			 | 
			
				
			 | 
			
			
				-        this.setState({ height }); 
			 | 
		
	
		
			
			| 
				53
			 | 
			
				
			 | 
			
			
				-        if (this.props.onHeightUpdated) { 
			 | 
		
	
		
			
			| 
				54
			 | 
			
				
			 | 
			
			
				-            this.props.onHeightUpdated(height); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				68
			 | 
			
			
				+        if (height) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				69
			 | 
			
			
				+            this.setState({ height }); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				+            if (this.props.onHeightUpdated) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				71
			 | 
			
			
				+                this.props.onHeightUpdated(height); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				72
			 | 
			
			
				+            } 
			 | 
		
	
		
			
			| 
				55
			 | 
			
				73
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				56
			 | 
			
				74
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				57
			 | 
			
				75
			 | 
			
			
				  
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -60,22 +78,26 @@ export default class AutoHeightWebView extends Component { 
			 | 
		
	
		
			
			| 
				60
			 | 
			
				78
			 | 
			
			
				             html: this.props.html, 
			 | 
		
	
		
			
			| 
				61
			 | 
			
				79
			 | 
			
			
				             baseUrl: 'file:///android_asset/web/' 
			 | 
		
	
		
			
			| 
				62
			 | 
			
				80
			 | 
			
			
				         } : { html: this.props.html }; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				+        console.log(this.state.height + this.props.heightOffset); 
			 | 
		
	
		
			
			| 
				63
			 | 
			
				82
			 | 
			
			
				         return ( 
			 | 
		
	
		
			
			| 
				64
			 | 
			
				83
			 | 
			
			
				             <View style={[{ 
			 | 
		
	
		
			
			| 
				65
			 | 
			
				84
			 | 
			
			
				                 height: this.state.height + this.props.heightOffset 
			 | 
		
	
		
			
			| 
				66
			 | 
			
				85
			 | 
			
			
				             }, this.props.style]}> 
			 | 
		
	
		
			
			| 
				67
			 | 
			
				86
			 | 
			
			
				                 <RCTAutoHeightWebView 
			 | 
		
	
		
			
			| 
				
			 | 
			
				87
			 | 
			
			
				+                    style={{ flex: 1 }} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				88
			 | 
			
			
				+                    javaScriptEnabled={true} 
			 | 
		
	
		
			
			| 
				68
			 | 
			
				89
			 | 
			
			
				                     injectedJavaScript={this.state.script + this.props.customScript} 
			 | 
		
	
		
			
			| 
				69
			 | 
			
				90
			 | 
			
			
				                     scrollEnabled={false} 
			 | 
		
	
		
			
			| 
				70
			 | 
			
				91
			 | 
			
			
				                     source={source} 
			 | 
		
	
		
			
			| 
				71
			 | 
			
				
			 | 
			
			
				-                    onNavigationStateChange={this.handleNavigationStateChange} /> 
			 | 
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				+                    onLoadingStart={this.onLoadingStart} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				93
			 | 
			
			
				+                    onLoadingFinish={this.onLoadingFinish} /> 
			 | 
		
	
		
			
			| 
				72
			 | 
			
				94
			 | 
			
			
				             </View> 
			 | 
		
	
		
			
			| 
				73
			 | 
			
				95
			 | 
			
			
				         ); 
			 | 
		
	
		
			
			| 
				74
			 | 
			
				96
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				75
			 | 
			
				97
			 | 
			
			
				 } 
			 | 
		
	
		
			
			| 
				76
			 | 
			
				98
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				77
			 | 
			
				99
			 | 
			
			
				 AutoHeightWebView.propTypes = { 
			 | 
		
	
		
			
			| 
				78
			 | 
			
				
			 | 
			
			
				-    ...View.propTypes, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				100
			 | 
			
			
				+    ...WebView.propTypes, 
			 | 
		
	
		
			
			| 
				79
			 | 
			
				101
			 | 
			
			
				     html: PropTypes.string, 
			 | 
		
	
		
			
			| 
				80
			 | 
			
				102
			 | 
			
			
				     onHeightUpdated: PropTypes.func, 
			 | 
		
	
		
			
			| 
				81
			 | 
			
				103
			 | 
			
			
				     customScript: PropTypes.string, 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -83,7 +105,7 @@ AutoHeightWebView.propTypes = { 
			 | 
		
	
		
			
			| 
				83
			 | 
			
				105
			 | 
			
			
				     heightOffset: PropTypes.number, 
			 | 
		
	
		
			
			| 
				84
			 | 
			
				106
			 | 
			
			
				     // baseUrl not work in android 4.3 or below version 
			 | 
		
	
		
			
			| 
				85
			 | 
			
				107
			 | 
			
			
				     enableBaseUrl: PropTypes.bool, 
			 | 
		
	
		
			
			| 
				86
			 | 
			
				
			 | 
			
			
				-    // add web/files... to android/app/src/assets/ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				108
			 | 
			
			
				+    // works if set enableBaseUrl to true; add web/files... to android/app/src/assets/ 
			 | 
		
	
		
			
			| 
				87
			 | 
			
				109
			 | 
			
			
				     files: PropTypes.arrayOf(PropTypes.shape({ 
			 | 
		
	
		
			
			| 
				88
			 | 
			
				110
			 | 
			
			
				         href: PropTypes.string, 
			 | 
		
	
		
			
			| 
				89
			 | 
			
				111
			 | 
			
			
				         type: PropTypes.string, 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -91,7 +113,10 @@ AutoHeightWebView.propTypes = { 
			 | 
		
	
		
			
			| 
				91
			 | 
			
				113
			 | 
			
			
				     })) 
			 | 
		
	
		
			
			| 
				92
			 | 
			
				114
			 | 
			
			
				 } 
			 | 
		
	
		
			
			| 
				93
			 | 
			
				115
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				94
			 | 
			
				
			 | 
			
			
				-const RCTAutoHeightWebView = requireNativeComponent('RCTAutoHeightWebView', AutoHeightWebView); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				+AutoHeightWebView.defaultProps = { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				+    enableBaseUrl: false, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				+    heightOffset: 25 
			 | 
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				95
			 | 
			
				120
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				96
			 | 
			
				121
			 | 
			
			
				 const BaseScript = 
			 | 
		
	
		
			
			| 
				97
			 | 
			
				122
			 | 
			
			
				     ` 
			 |