Parcourir la source

add rn WebView callbacks; update demo to rn 0.50.1; bump version to 0.4.0

iou90 il y a 6 ans
Parent
révision
60c23560e8

+ 14
- 4
README.md Voir le fichier

27
     hasIframe={true}
27
     hasIframe={true}
28
     /*
28
     /*
29
     if set to false may cause some layout issues (width of container not fit for screen) on android
29
     if set to false may cause some layout issues (width of container not fit for screen) on android
30
-    if set to true may cause some layout issues (smaller font size) on ios
30
+    if set to true may cause some layout issues (smaller font size) on iOS
31
     */
31
     */
32
     scalesPageToFit={Platform.OS === 'android' ? true : false}
32
     scalesPageToFit={Platform.OS === 'android' ? true : false}
33
     // baseUrl not work in android 4.3 or below version
33
     // baseUrl not work in android 4.3 or below version
35
     // offset of rn webview margin 
35
     // offset of rn webview margin 
36
     heightOffset={5}
36
     heightOffset={5}
37
     // default width is the width of screen
37
     // default width is the width of screen
38
-    // to fix that it can not select text when the length of it is not long enough on iOS, the width should be reduced more than 15
39
-    style={{ width: Dimensions.get('window').width - 15 }}
38
+    // if there are some text selection issues on iOS, the width should be reduced more than 15 and the marginTop should be added more than 35
39
+    style={{ width: Dimensions.get('window').width - 15, marginTop: 35 }}
40
     // enable animation by default
40
     // enable animation by default
41
     enableAnimation={true},
41
     enableAnimation={true},
42
     // only works on enable animation
42
     // only works on enable animation
51
     }]}
51
     }]}
52
     // change script (have to change source to reload on android)
52
     // change script (have to change source to reload on android)
53
     customScript={`document.body.style.background = 'lightyellow';`}
53
     customScript={`document.body.style.background = 'lightyellow';`}
54
+    // rn WebView callbacks
55
+    onError={() => console.log('on error')}
56
+    onLoad={() => console.log('on load')}
57
+    onLoadStart={() => console.log('on load start')}
58
+    onLoadEnd={() => console.log('on load end')}
59
+    // only on iOS
60
+    onShouldStartLoadWithRequest={result => {
61
+      console.log(result)
62
+      return true;
63
+    }}
54
     // add custom CSS to the page's <head>
64
     // add custom CSS to the page's <head>
55
     customStyle={`
65
     customStyle={`
56
       * {
66
       * {
65
 
75
 
66
 # demo
76
 # demo
67
 
77
 
68
-There could have some issues when installing & running the demo, related to https://github.com/facebook/react-native/issues/14209, you should try to delete the demo folder in node_modules/react-native-autoheight-webview of the demo project and npm start -- --reset-cache or restart your machine.
78
+There could have some issues when installing & running the demo, related to https://github.com/facebook/react-native/issues/14423, try: rm -rf ~/.rncache.

+ 38
- 3
autoHeightWebView/index.android.js Voir le fichier

23
 const RCTAutoHeightWebView = requireNativeComponent(
23
 const RCTAutoHeightWebView = requireNativeComponent(
24
   "RCTAutoHeightWebView",
24
   "RCTAutoHeightWebView",
25
   AutoHeightWebView,
25
   AutoHeightWebView,
26
-  { nativeOnly: { messagingEnabled: PropTypes.bool } }
26
+  { nativeOnly: 
27
+    {
28
+      nativeOnly: {
29
+        onLoadingStart: true,
30
+        onLoadingError: true,
31
+        onLoadingFinish: true,
32
+        messagingEnabled: PropTypes.bool
33
+      }
34
+    }
35
+   }
27
 );
36
 );
28
 
37
 
29
 export default class AutoHeightWebView extends PureComponent {
38
 export default class AutoHeightWebView extends PureComponent {
42
     // baseUrl not work in android 4.3 or below version
51
     // baseUrl not work in android 4.3 or below version
43
     enableBaseUrl: PropTypes.bool,
52
     enableBaseUrl: PropTypes.bool,
44
     style: ViewPropTypes.style,
53
     style: ViewPropTypes.style,
54
+    //  rn WebView callback
55
+    onError: PropTypes.func,
56
+    onLoad: PropTypes.func,
57
+    onLoadStart: PropTypes.func,
58
+    onLoadEnd: PropTypes.func,
45
     // works if set enableBaseUrl to true; add web/files... to android/app/src/assets/
59
     // works if set enableBaseUrl to true; add web/files... to android/app/src/assets/
46
     files: PropTypes.arrayOf(
60
     files: PropTypes.arrayOf(
47
       PropTypes.shape({
61
       PropTypes.shape({
223
       link.href = '${file.href}';
237
       link.href = '${file.href}';
224
       document.head.appendChild(link);
238
       document.head.appendChild(link);
225
       ${combinedScript}
239
       ${combinedScript}
226
-    `, script)
240
+    `, script);
227
   }
241
   }
228
 
242
 
229
   appendStylesToHead(styles, script) {
243
   appendStylesToHead(styles, script) {
238
       styleElement.appendChild(styleText);
252
       styleElement.appendChild(styleText);
239
       document.head.appendChild(styleElement);
253
       document.head.appendChild(styleElement);
240
       ${script}
254
       ${script}
241
-    `
255
+    `;
242
   }
256
   }
243
 
257
 
258
+  onLoadingStart = (event) => {
259
+    var onLoadStart = this.props.onLoadStart;
260
+    onLoadStart && onLoadStart(event);
261
+  };
262
+
263
+  onLoadingError = (event) => {
264
+    var {onError, onLoadEnd} = this.props;
265
+    onError && onError(event);
266
+    onLoadEnd && onLoadEnd(event);
267
+    console.warn('Encountered an error loading page', event.nativeEvent);
268
+  };
269
+
270
+  onLoadingFinish = (event) => {
271
+    var {onLoad, onLoadEnd} = this.props;
272
+    onLoad && onLoad(event);
273
+    onLoadEnd && onLoadEnd(event);
274
+  };
275
+
244
   render() {
276
   render() {
245
     const { height, script, isChangingSource, heightOffset } = this.state;
277
     const { height, script, isChangingSource, heightOffset } = this.state;
246
     const {
278
     const {
270
       >
302
       >
271
         {isChangingSource ? null : (
303
         {isChangingSource ? null : (
272
           <RCTAutoHeightWebView
304
           <RCTAutoHeightWebView
305
+            onLoadingStart={this.onLoadingStart}
306
+            onLoadingFinish={this.onLoadingFinish}
307
+            onLoadingError={this.onLoadingError}
273
             ref={webview => (this.webview = webview)}
308
             ref={webview => (this.webview = webview)}
274
             style={Styles.webView}
309
             style={Styles.webView}
275
             javaScriptEnabled={true}
310
             javaScriptEnabled={true}

+ 14
- 3
autoHeightWebView/index.ios.js Voir le fichier

28
         // offset of rn webview margin
28
         // offset of rn webview margin
29
         heightOffset: PropTypes.number,
29
         heightOffset: PropTypes.number,
30
         style: ViewPropTypes.style,
30
         style: ViewPropTypes.style,
31
+        //  rn WebView callback
32
+        onError: PropTypes.func,
33
+        onLoad: PropTypes.func,
34
+        onLoadStart: PropTypes.func,
35
+        onLoadEnd: PropTypes.func,
36
+        onShouldStartLoadWithRequest: PropTypes.func,
31
         // add web/files... to project root
37
         // add web/files... to project root
32
         files: PropTypes.arrayOf(PropTypes.shape({
38
         files: PropTypes.arrayOf(PropTypes.shape({
33
             href: PropTypes.string,
39
             href: PropTypes.string,
84
           link.href = '${file.href}';
90
           link.href = '${file.href}';
85
           document.head.appendChild(link);
91
           document.head.appendChild(link);
86
           ${combinedScript}
92
           ${combinedScript}
87
-        `, script)
93
+        `, script);
88
     }
94
     }
89
 
95
 
90
     appendStylesToHead(styles, script) {
96
     appendStylesToHead(styles, script) {
99
         styleElement.appendChild(styleText);
105
         styleElement.appendChild(styleText);
100
         document.head.appendChild(styleElement);
106
         document.head.appendChild(styleElement);
101
         ${script}
107
         ${script}
102
-      `
108
+      `;
103
     }
109
     }
104
 
110
 
105
     onHeightUpdated(height) {
111
     onHeightUpdated(height) {
130
 
136
 
131
     render() {
137
     render() {
132
         const { height, script } = this.state;
138
         const { height, script } = this.state;
133
-        const { scalesPageToFit, enableAnimation, source, heightOffset, customScript, style } = this.props;
139
+        const { onError, onLoad, onLoadStart, onLoadEnd, onShouldStartLoadWithRequest, scalesPageToFit, enableAnimation, source, heightOffset, customScript, style } = this.props;
134
         const webViewSource = Object.assign({}, source, { baseUrl: 'web/' });
140
         const webViewSource = Object.assign({}, source, { baseUrl: 'web/' });
135
         return (
141
         return (
136
             <Animated.View style={[Styles.container, {
142
             <Animated.View style={[Styles.container, {
138
                 height: height + heightOffset,
144
                 height: height + heightOffset,
139
             }, style]}>
145
             }, style]}>
140
                 <WebView
146
                 <WebView
147
+                    onError={onError}
148
+                    onLoad={onLoad}
149
+                    onLoadStart={onLoadStart}
150
+                    onLoadEnd={onLoadEnd}
151
+                    onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
141
                     style={Styles.webView}
152
                     style={Styles.webView}
142
                     injectedJavaScript={script + customScript}
153
                     injectedJavaScript={script + customScript}
143
                     scrollEnabled={false}
154
                     scrollEnabled={false}

+ 9
- 6
demo/.flowconfig Voir le fichier

12
 ; For RN Apps installed via npm, "Libraries" folder is inside
12
 ; For RN Apps installed via npm, "Libraries" folder is inside
13
 ; "node_modules/react-native" but in the source repo it is in the root
13
 ; "node_modules/react-native" but in the source repo it is in the root
14
 .*/Libraries/react-native/React.js
14
 .*/Libraries/react-native/React.js
15
-.*/Libraries/react-native/ReactNative.js
15
+
16
+; Ignore polyfills
17
+.*/Libraries/polyfills/.*
16
 
18
 
17
 [include]
19
 [include]
18
 
20
 
19
 [libs]
21
 [libs]
20
 node_modules/react-native/Libraries/react-native/react-native-interface.js
22
 node_modules/react-native/Libraries/react-native/react-native-interface.js
21
-node_modules/react-native/flow
22
-flow/
23
+node_modules/react-native/flow/
23
 
24
 
24
 [options]
25
 [options]
25
 emoji=true
26
 emoji=true
32
 
33
 
33
 suppress_type=$FlowIssue
34
 suppress_type=$FlowIssue
34
 suppress_type=$FlowFixMe
35
 suppress_type=$FlowFixMe
36
+suppress_type=$FlowFixMeProps
37
+suppress_type=$FlowFixMeState
35
 suppress_type=$FixMe
38
 suppress_type=$FixMe
36
 
39
 
37
-suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
38
-suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
40
+suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(5[0-6]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
41
+suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(5[0-6]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
39
 suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
42
 suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
40
 suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
43
 suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
41
 
44
 
42
 unsafe.enable_getters_and_setters=true
45
 unsafe.enable_getters_and_setters=true
43
 
46
 
44
 [version]
47
 [version]
45
-^0.49.1
48
+^0.56.0

+ 4
- 4
demo/.gitignore Voir le fichier

46
 # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
46
 # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47
 # screenshots whenever they are needed.
47
 # screenshots whenever they are needed.
48
 # For more information about the recommended setup visit:
48
 # For more information about the recommended setup visit:
49
-# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
49
+# https://docs.fastlane.tools/best-practices/source-control/
50
 
50
 
51
-fastlane/report.xml
52
-fastlane/Preview.html
53
-fastlane/screenshots
51
+*/fastlane/report.xml
52
+*/fastlane/Preview.html
53
+*/fastlane/screenshots

+ 151
- 0
demo/App.js Voir le fichier

1
+'use strict'
2
+
3
+import React, {
4
+  Component,
5
+} from 'react';
6
+
7
+import {
8
+  ScrollView,
9
+  StyleSheet,
10
+  Text,
11
+  TouchableOpacity,
12
+  View
13
+} from 'react-native';
14
+
15
+import AutoHeightWebView from 'react-native-autoheight-webview';
16
+
17
+export default class Explorer extends Component {
18
+  constructor(props) {
19
+    super(props);
20
+    this.html0 = `<p style="font-weight: 400;font-style: normal;font-size: 21px;line-height: 1.58;letter-spacing: -.003em;">Tags are great for describing the essence of your story in a single word or phrase, but stories are rarely about a single thing. <span style="background-color: transparent !important;background-image: linear-gradient(to bottom, rgba(146, 249, 190, 1), rgba(146, 249, 190, 1));">If I pen a story about moving across the country to start a new job in a car with my husband, two cats, a dog, and a tarantula, I wouldn’t only tag the piece with “moving”. I’d also use the tags “pets”, “marriage”, “career change”, and “travel tips”.</span></p>`;
21
+    this.html1 = `Tags are great for describing the essence of your story in a single word or phrase, but stories are rarely about a single thing. If I pen a story about moving across the country to start a new job in a car with my husband, two cats, a dog, and a tarantula, I wouldn’t only tag the piece with “moving”. I’d also use the tags “pets”, “marriage”, “career change”, and “travel tips”.`;
22
+    this.script0 = '';
23
+    this.script1 = `document.body.style.background = 'cornflowerblue';`;
24
+    this.changeSource = this.changeSource.bind(this);
25
+    this.changeScript = this.changeScript.bind(this);
26
+    this.state = {
27
+      html: this.html0,
28
+      script: this.script0,
29
+      height: 0
30
+    };
31
+  }
32
+
33
+  changeSource() {
34
+    this.setState(prevState => ({
35
+      html: prevState.html === this.html0 ? this.html1 : this.html0
36
+    }));
37
+  }
38
+
39
+  changeScript() {
40
+    this.changeSource();
41
+    this.setState(prevState => ({
42
+      script: prevState.script === this.script0 ? this.script1 : this.script0
43
+    }));
44
+  }
45
+
46
+  render() {
47
+    return (
48
+      <ScrollView
49
+        style={{
50
+          backgroundColor: 'lightyellow'
51
+        }}
52
+        contentContainerStyle={{
53
+          justifyContent: 'center',
54
+          alignItems: 'center'
55
+        }}>
56
+        <AutoHeightWebView
57
+          onError={() => console.log('on error')}
58
+          onLoad={() => console.log('on load')}
59
+          onLoadStart={() => console.log('on load start')}
60
+          onLoadEnd={() => console.log('on load end')}
61
+          onShouldStartLoadWithRequest={result => {
62
+            console.log(result)
63
+            return true;
64
+          }}
65
+          onHeightUpdated={height => this.setState({ height })}
66
+          source={{ html: this.state.html }}
67
+          customScript={this.state.script} />
68
+        <TouchableOpacity
69
+          onPress={this.changeSource}
70
+          style={Styles.button}>
71
+          <Text>change source</Text>
72
+        </TouchableOpacity>
73
+        <TouchableOpacity
74
+          onPress={this.changeScript}
75
+          style={Styles.button}>
76
+          <Text>change script (have to change source to reload on android)</Text>
77
+        </TouchableOpacity>
78
+        <Text style={{ padding: 5 }}>
79
+          {this.state.height}
80
+        </Text>
81
+      </ScrollView>
82
+    );
83
+  }
84
+}
85
+
86
+const Styles = StyleSheet.create({
87
+  button: {
88
+    marginTop: 15,
89
+    backgroundColor: 'aliceblue',
90
+    borderRadius: 5,
91
+    padding: 5
92
+  }
93
+});
94
+
95
+// /**
96
+//  * Sample React Native App
97
+//  * https://github.com/facebook/react-native
98
+//  * @flow
99
+//  */
100
+
101
+// import React, { Component } from 'react';
102
+// import {
103
+//   Platform,
104
+//   StyleSheet,
105
+//   Text,
106
+//   View
107
+// } from 'react-native';
108
+
109
+// const instructions = Platform.select({
110
+//   ios: 'Press Cmd+R to reload,\n' +
111
+//     'Cmd+D or shake for dev menu',
112
+//   android: 'Double tap R on your keyboard to reload,\n' +
113
+//     'Shake or press menu button for dev menu',
114
+// });
115
+
116
+// export default class App extends Component<{}> {
117
+//   render() {
118
+//     return (
119
+//       <View style={styles.container}>
120
+//         <Text style={styles.welcome}>
121
+//           Welcome to React Native!
122
+//         </Text>
123
+//         <Text style={styles.instructions}>
124
+//           To get started, edit App.js
125
+//         </Text>
126
+//         <Text style={styles.instructions}>
127
+//           {instructions}
128
+//         </Text>
129
+//       </View>
130
+//     );
131
+//   }
132
+// }
133
+
134
+// const styles = StyleSheet.create({
135
+//   container: {
136
+//     flex: 1,
137
+//     justifyContent: 'center',
138
+//     alignItems: 'center',
139
+//     backgroundColor: '#F5FCFF',
140
+//   },
141
+//   welcome: {
142
+//     fontSize: 20,
143
+//     textAlign: 'center',
144
+//     margin: 10,
145
+//   },
146
+//   instructions: {
147
+//     textAlign: 'center',
148
+//     color: '#333333',
149
+//     marginBottom: 5,
150
+//   },
151
+// });

demo/__tests__/index.ios.js → demo/__tests__/App.js Voir le fichier

1
 import 'react-native';
1
 import 'react-native';
2
 import React from 'react';
2
 import React from 'react';
3
-import Index from '../index.ios.js';
3
+import App from '../App';
4
 
4
 
5
 // Note: test renderer must be required after react-native.
5
 // Note: test renderer must be required after react-native.
6
 import renderer from 'react-test-renderer';
6
 import renderer from 'react-test-renderer';
7
 
7
 
8
 it('renders correctly', () => {
8
 it('renders correctly', () => {
9
   const tree = renderer.create(
9
   const tree = renderer.create(
10
-    <Index />
10
+    <App />
11
   );
11
   );
12
 });
12
 });

+ 0
- 12
demo/__tests__/index.android.js Voir le fichier

1
-import 'react-native';
2
-import React from 'react';
3
-import Index from '../index.android.js';
4
-
5
-// Note: test renderer must be required after react-native.
6
-import renderer from 'react-test-renderer';
7
-
8
-it('renders correctly', () => {
9
-  const tree = renderer.create(
10
-    <Index />
11
-  );
12
-});

+ 4
- 0
demo/android/app/build.gradle Voir le fichier

72
  * ]
72
  * ]
73
  */
73
  */
74
 
74
 
75
+project.ext.react = [
76
+    entryFile: "index.js"
77
+]
78
+
75
 apply from: "../../node_modules/react-native/react.gradle"
79
 apply from: "../../node_modules/react-native/react.gradle"
76
 
80
 
77
 /**
81
 /**

+ 5
- 0
demo/android/app/src/main/java/com/demo/MainApplication.java Voir le fichier

27
             new AutoHeightWebViewPackage()
27
             new AutoHeightWebViewPackage()
28
       );
28
       );
29
     }
29
     }
30
+
31
+    @Override
32
+    protected String getJSMainModuleName() {
33
+      return "index";
34
+    }
30
   };
35
   };
31
 
36
 
32
   @Override
37
   @Override

+ 0
- 85
demo/explorer.js Voir le fichier

1
-'use strict'
2
-
3
-import React, {
4
-    Component,
5
-} from 'react';
6
-
7
-import {
8
-    ScrollView,
9
-    StyleSheet,
10
-    Text,
11
-    TouchableOpacity,
12
-    View
13
-} from 'react-native';
14
-
15
-import AutoHeightWebView from 'react-native-autoheight-webview';
16
-
17
-export default class Explorer extends Component {
18
-    constructor(props) {
19
-        super(props);
20
-        this.html0 = `<p style="font-weight: 400;font-style: normal;font-size: 21px;line-height: 1.58;letter-spacing: -.003em;">Tags are great for describing the essence of your story in a single word or phrase, but stories are rarely about a single thing. <span style="background-color: transparent !important;background-image: linear-gradient(to bottom, rgba(146, 249, 190, 1), rgba(146, 249, 190, 1));">If I pen a story about moving across the country to start a new job in a car with my husband, two cats, a dog, and a tarantula, I wouldn’t only tag the piece with “moving”. I’d also use the tags “pets”, “marriage”, “career change”, and “travel tips”.</span></p>`;
21
-        this.html1 = `Tags are great for describing the essence of your story in a single word or phrase, but stories are rarely about a single thing. If I pen a story about moving across the country to start a new job in a car with my husband, two cats, a dog, and a tarantula, I wouldn’t only tag the piece with “moving”. I’d also use the tags “pets”, “marriage”, “career change”, and “travel tips”.`;
22
-        this.script0 = '';
23
-        this.script1 = `document.body.style.background = 'cornflowerblue';`;
24
-        this.changeSource = this.changeSource.bind(this);
25
-        this.changeScript = this.changeScript.bind(this);
26
-        this.state = {
27
-            html: this.html0,
28
-            script: this.script0,
29
-            height: 0
30
-        };
31
-    }
32
-
33
-    changeSource() {
34
-        this.setState(prevState => ({
35
-            html: prevState.html === this.html0 ? this.html1 : this.html0
36
-        }));
37
-    }
38
-
39
-    changeScript() {
40
-        this.changeSource();
41
-        this.setState(prevState => ({
42
-            script: prevState.script === this.script0 ? this.script1 : this.script0
43
-        }));
44
-    }
45
-
46
-    render() {
47
-        return (
48
-            <ScrollView
49
-                style={{
50
-                    backgroundColor: 'lightyellow'
51
-                }}
52
-                contentContainerStyle={{
53
-                    justifyContent: 'center',
54
-                    alignItems: 'center'
55
-                }}>
56
-                <AutoHeightWebView
57
-                    onHeightUpdated={height => this.setState({ height })}
58
-                    source={{ html: this.state.html }}
59
-                    customScript={this.state.script} />
60
-                <TouchableOpacity
61
-                    onPress={this.changeSource}
62
-                    style={Styles.button}>
63
-                    <Text>change source</Text>
64
-                </TouchableOpacity>
65
-                <TouchableOpacity
66
-                    onPress={this.changeScript}
67
-                    style={Styles.button}>
68
-                    <Text>change script (have to change source to reload on android)</Text>
69
-                </TouchableOpacity>
70
-                <Text style={{ padding: 5 }}>
71
-                    {this.state.height}
72
-                </Text>
73
-            </ScrollView>
74
-        );
75
-    }
76
-}
77
-
78
-const Styles = StyleSheet.create({
79
-    button: {
80
-        marginTop: 15,
81
-        backgroundColor: 'aliceblue',
82
-        borderRadius: 5,
83
-        padding: 5
84
-    }
85
-});

+ 0
- 9
demo/index.android.js Voir le fichier

1
-'use strict'
2
-
3
-import React from 'react';
4
-
5
-import { AppRegistry } from 'react-native';
6
-
7
-import Explorer from './explorer';
8
-
9
-AppRegistry.registerComponent('demo', () => Explorer);

+ 0
- 9
demo/index.ios.js Voir le fichier

1
-'use strict'
2
-
3
-import React from 'react';
4
-
5
-import { AppRegistry } from 'react-native';
6
-
7
-import Explorer from './explorer';
8
-
9
-AppRegistry.registerComponent('demo', () => Explorer);

+ 7
- 0
demo/index.js Voir le fichier

1
+'use strict'
2
+
3
+import { AppRegistry } from 'react-native';
4
+
5
+import Explorer from './App';
6
+
7
+AppRegistry.registerComponent('demo', () => Explorer);

+ 89
- 4
demo/ios/demo.xcodeproj/project.pbxproj Voir le fichier

5
 	};
5
 	};
6
 	objectVersion = 46;
6
 	objectVersion = 46;
7
 	objects = {
7
 	objects = {
8
-
9
 /* Begin PBXBuildFile section */
8
 /* Begin PBXBuildFile section */
10
 		00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
9
 		00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
11
 		00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
10
 		00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
36
 		2DCD954D1E0B4F2C00145EB5 /* demoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* demoTests.m */; };
35
 		2DCD954D1E0B4F2C00145EB5 /* demoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* demoTests.m */; };
37
 		5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
36
 		5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
38
 		832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
37
 		832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
38
+		ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
39
+		4015A12E66A247F0B2F6AE09 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F6205ED3CE4F403ABCC50D34 /* libRCTActionSheet.a */; };
39
 /* End PBXBuildFile section */
40
 /* End PBXBuildFile section */
40
 
41
 
41
 /* Begin PBXContainerItemProxy section */
42
 /* Begin PBXContainerItemProxy section */
228
 			remoteGlobalIDString = 58B5119B1A9E6C1200147676;
229
 			remoteGlobalIDString = 58B5119B1A9E6C1200147676;
229
 			remoteInfo = RCTText;
230
 			remoteInfo = RCTText;
230
 		};
231
 		};
232
+		ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = {
233
+			isa = PBXContainerItemProxy;
234
+			containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
235
+			proxyType = 2;
236
+			remoteGlobalIDString = 358F4ED71D1E81A9004DF814;
237
+			remoteInfo = RCTBlob;
238
+		};
231
 /* End PBXContainerItemProxy section */
239
 /* End PBXContainerItemProxy section */
232
 
240
 
233
 /* Begin PBXFileReference section */
241
 /* Begin PBXFileReference section */
255
 		5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
263
 		5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
256
 		78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
264
 		78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
257
 		832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
265
 		832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
266
+		ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
267
+		B22DCF12CF304549B28FD63C /* demo.xcodeproj */ = {isa = PBXFileReference; name = "demo.xcodeproj"; path = "../node_modules/react-native-autoheight-webview/demo/ios/demo.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
268
+		F6205ED3CE4F403ABCC50D34 /* libRCTActionSheet.a */ = {isa = PBXFileReference; name = "libRCTActionSheet.a"; path = "libRCTActionSheet.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
258
 /* End PBXFileReference section */
269
 /* End PBXFileReference section */
259
 
270
 
260
 /* Begin PBXFrameworksBuildPhase section */
271
 /* Begin PBXFrameworksBuildPhase section */
270
 			isa = PBXFrameworksBuildPhase;
281
 			isa = PBXFrameworksBuildPhase;
271
 			buildActionMask = 2147483647;
282
 			buildActionMask = 2147483647;
272
 			files = (
283
 			files = (
284
+				ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
285
+				5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
273
 				146834051AC3E58100842450 /* libReact.a in Frameworks */,
286
 				146834051AC3E58100842450 /* libReact.a in Frameworks */,
274
 				5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
287
 				5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
275
 				00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
288
 				00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
281
 				832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
294
 				832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
282
 				00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
295
 				00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
283
 				139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
296
 				139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
297
+				4015A12E66A247F0B2F6AE09 /* libRCTActionSheet.a in Frameworks */,
284
 			);
298
 			);
285
 			runOnlyForDeploymentPostprocessing = 0;
299
 			runOnlyForDeploymentPostprocessing = 0;
286
 		};
300
 		};
411
 				3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
425
 				3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
412
 				3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
426
 				3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
413
 				3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
427
 				3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
428
+				3DAD3EA31DF850E9000B6D8A /* libReact-tvOS.a */,
414
 			);
429
 			);
415
 			name = Products;
430
 			name = Products;
416
 			sourceTree = "<group>";
431
 			sourceTree = "<group>";
439
 				5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
454
 				5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
440
 				146833FF1AC3E56700842450 /* React.xcodeproj */,
455
 				146833FF1AC3E56700842450 /* React.xcodeproj */,
441
 				00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
456
 				00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
457
+				ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */,
442
 				00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
458
 				00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
443
 				00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
459
 				00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
444
 				78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
460
 				78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
447
 				832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
463
 				832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
448
 				00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
464
 				00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
449
 				139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
465
 				139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
466
+				B22DCF12CF304549B28FD63C /* demo.xcodeproj */,
450
 			);
467
 			);
451
 			name = Libraries;
468
 			name = Libraries;
452
 			sourceTree = "<group>";
469
 			sourceTree = "<group>";
471
 			indentWidth = 2;
488
 			indentWidth = 2;
472
 			sourceTree = "<group>";
489
 			sourceTree = "<group>";
473
 			tabWidth = 2;
490
 			tabWidth = 2;
491
+			usesTabs = 0;
474
 		};
492
 		};
475
 		83CBBA001A601CBA00E9B192 /* Products */ = {
493
 		83CBBA001A601CBA00E9B192 /* Products */ = {
476
 			isa = PBXGroup;
494
 			isa = PBXGroup;
483
 			name = Products;
501
 			name = Products;
484
 			sourceTree = "<group>";
502
 			sourceTree = "<group>";
485
 		};
503
 		};
504
+		ADBDB9201DFEBF0600ED6528 /* Products */ = {
505
+			isa = PBXGroup;
506
+			children = (
507
+				ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */,
508
+			);
509
+			name = Products;
510
+			sourceTree = "<group>";
511
+		};
486
 /* End PBXGroup section */
512
 /* End PBXGroup section */
487
 
513
 
488
 /* Begin PBXNativeTarget section */
514
 /* Begin PBXNativeTarget section */
564
 		83CBB9F71A601CBA00E9B192 /* Project object */ = {
590
 		83CBB9F71A601CBA00E9B192 /* Project object */ = {
565
 			isa = PBXProject;
591
 			isa = PBXProject;
566
 			attributes = {
592
 			attributes = {
567
-				LastUpgradeCheck = 0610;
593
+				LastUpgradeCheck = 610;
568
 				ORGANIZATIONNAME = Facebook;
594
 				ORGANIZATIONNAME = Facebook;
569
 				TargetAttributes = {
595
 				TargetAttributes = {
570
 					00E356ED1AD99517003FC87E = {
596
 					00E356ED1AD99517003FC87E = {
602
 					ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;
628
 					ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;
603
 					ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
629
 					ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
604
 				},
630
 				},
631
+				{
632
+					ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */;
633
+					ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
634
+				},
605
 				{
635
 				{
606
 					ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
636
 					ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
607
 					ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
637
 					ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
748
 			remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */;
778
 			remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */;
749
 			sourceTree = BUILT_PRODUCTS_DIR;
779
 			sourceTree = BUILT_PRODUCTS_DIR;
750
 		};
780
 		};
751
-		3DAD3EA31DF850E9000B6D8A /* libReact.a */ = {
781
+		3DAD3EA31DF850E9000B6D8A /* libReact-tvOS.a */ = {
752
 			isa = PBXReferenceProxy;
782
 			isa = PBXReferenceProxy;
753
 			fileType = archive.ar;
783
 			fileType = archive.ar;
754
-			path = libReact.a;
784
+			path = "libReact-tvOS.a";
755
 			remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */;
785
 			remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */;
756
 			sourceTree = BUILT_PRODUCTS_DIR;
786
 			sourceTree = BUILT_PRODUCTS_DIR;
757
 		};
787
 		};
825
 			remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
855
 			remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
826
 			sourceTree = BUILT_PRODUCTS_DIR;
856
 			sourceTree = BUILT_PRODUCTS_DIR;
827
 		};
857
 		};
858
+		ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = {
859
+			isa = PBXReferenceProxy;
860
+			fileType = archive.ar;
861
+			path = libRCTBlob.a;
862
+			remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;
863
+			sourceTree = BUILT_PRODUCTS_DIR;
864
+		};
828
 /* End PBXReferenceProxy section */
865
 /* End PBXReferenceProxy section */
829
 
866
 
830
 /* Begin PBXResourcesBuildPhase section */
867
 /* Begin PBXResourcesBuildPhase section */
972
 				);
1009
 				);
973
 				PRODUCT_NAME = "$(TARGET_NAME)";
1010
 				PRODUCT_NAME = "$(TARGET_NAME)";
974
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo.app/demo";
1011
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo.app/demo";
1012
+				LIBRARY_SEARCH_PATHS = (
1013
+					"$(inherited)",
1014
+					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1015
+				);
1016
+				HEADER_SEARCH_PATHS = (
1017
+					"$(inherited)",
1018
+					"$(SRCROOT)/../node_modules/react-native-autoheight-webview/demo/ios/demo",
1019
+				);
975
 			};
1020
 			};
976
 			name = Debug;
1021
 			name = Debug;
977
 		};
1022
 		};
989
 				);
1034
 				);
990
 				PRODUCT_NAME = "$(TARGET_NAME)";
1035
 				PRODUCT_NAME = "$(TARGET_NAME)";
991
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo.app/demo";
1036
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo.app/demo";
1037
+				LIBRARY_SEARCH_PATHS = (
1038
+					"$(inherited)",
1039
+					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1040
+				);
1041
+				HEADER_SEARCH_PATHS = (
1042
+					"$(inherited)",
1043
+					"$(SRCROOT)/../node_modules/react-native-autoheight-webview/demo/ios/demo",
1044
+				);
992
 			};
1045
 			};
993
 			name = Release;
1046
 			name = Release;
994
 		};
1047
 		};
1007
 				);
1060
 				);
1008
 				PRODUCT_NAME = demo;
1061
 				PRODUCT_NAME = demo;
1009
 				VERSIONING_SYSTEM = "apple-generic";
1062
 				VERSIONING_SYSTEM = "apple-generic";
1063
+				HEADER_SEARCH_PATHS = (
1064
+					"$(inherited)",
1065
+					"$(SRCROOT)/../node_modules/react-native-autoheight-webview/demo/ios/demo",
1066
+				);
1010
 			};
1067
 			};
1011
 			name = Debug;
1068
 			name = Debug;
1012
 		};
1069
 		};
1024
 				);
1081
 				);
1025
 				PRODUCT_NAME = demo;
1082
 				PRODUCT_NAME = demo;
1026
 				VERSIONING_SYSTEM = "apple-generic";
1083
 				VERSIONING_SYSTEM = "apple-generic";
1084
+				HEADER_SEARCH_PATHS = (
1085
+					"$(inherited)",
1086
+					"$(SRCROOT)/../node_modules/react-native-autoheight-webview/demo/ios/demo",
1087
+				);
1027
 			};
1088
 			};
1028
 			name = Release;
1089
 			name = Release;
1029
 		};
1090
 		};
1050
 				SDKROOT = appletvos;
1111
 				SDKROOT = appletvos;
1051
 				TARGETED_DEVICE_FAMILY = 3;
1112
 				TARGETED_DEVICE_FAMILY = 3;
1052
 				TVOS_DEPLOYMENT_TARGET = 9.2;
1113
 				TVOS_DEPLOYMENT_TARGET = 9.2;
1114
+				LIBRARY_SEARCH_PATHS = (
1115
+					"$(inherited)",
1116
+					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1117
+				);
1118
+				HEADER_SEARCH_PATHS = (
1119
+					"$(inherited)",
1120
+					"$(SRCROOT)/../node_modules/react-native-autoheight-webview/demo/ios/demo",
1121
+				);
1053
 			};
1122
 			};
1054
 			name = Debug;
1123
 			name = Debug;
1055
 		};
1124
 		};
1076
 				SDKROOT = appletvos;
1145
 				SDKROOT = appletvos;
1077
 				TARGETED_DEVICE_FAMILY = 3;
1146
 				TARGETED_DEVICE_FAMILY = 3;
1078
 				TVOS_DEPLOYMENT_TARGET = 9.2;
1147
 				TVOS_DEPLOYMENT_TARGET = 9.2;
1148
+				LIBRARY_SEARCH_PATHS = (
1149
+					"$(inherited)",
1150
+					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1151
+				);
1152
+				HEADER_SEARCH_PATHS = (
1153
+					"$(inherited)",
1154
+					"$(SRCROOT)/../node_modules/react-native-autoheight-webview/demo/ios/demo",
1155
+				);
1079
 			};
1156
 			};
1080
 			name = Release;
1157
 			name = Release;
1081
 		};
1158
 		};
1097
 				SDKROOT = appletvos;
1174
 				SDKROOT = appletvos;
1098
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo-tvOS.app/demo-tvOS";
1175
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo-tvOS.app/demo-tvOS";
1099
 				TVOS_DEPLOYMENT_TARGET = 10.1;
1176
 				TVOS_DEPLOYMENT_TARGET = 10.1;
1177
+				LIBRARY_SEARCH_PATHS = (
1178
+					"$(inherited)",
1179
+					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1180
+				);
1100
 			};
1181
 			};
1101
 			name = Debug;
1182
 			name = Debug;
1102
 		};
1183
 		};
1118
 				SDKROOT = appletvos;
1199
 				SDKROOT = appletvos;
1119
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo-tvOS.app/demo-tvOS";
1200
 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo-tvOS.app/demo-tvOS";
1120
 				TVOS_DEPLOYMENT_TARGET = 10.1;
1201
 				TVOS_DEPLOYMENT_TARGET = 10.1;
1202
+				LIBRARY_SEARCH_PATHS = (
1203
+					"$(inherited)",
1204
+					"\"$(SRCROOT)/$(TARGET_NAME)\"",
1205
+				);
1121
 			};
1206
 			};
1122
 			name = Release;
1207
 			name = Release;
1123
 		};
1208
 		};

+ 1
- 1
demo/ios/demo/AppDelegate.m Voir le fichier

18
 {
18
 {
19
   NSURL *jsCodeLocation;
19
   NSURL *jsCodeLocation;
20
 
20
 
21
-  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
21
+  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
22
 
22
 
23
   RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
23
   RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
24
                                                       moduleName:@"demo"
24
                                                       moduleName:@"demo"

+ 6
- 0
demo/ios/demo/Images.xcassets/Contents.json Voir le fichier

1
+{
2
+  "info" : {
3
+    "version" : 1,
4
+    "author" : "xcode"
5
+  }
6
+}

+ 131
- 0
demo/package-lock.json Voir le fichier

1
+{
2
+	"name": "demo",
3
+	"version": "0.0.1",
4
+	"lockfileVersion": 1,
5
+	"requires": true,
6
+	"dependencies": {
7
+		"asap": {
8
+			"version": "2.0.6",
9
+			"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
10
+			"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
11
+		},
12
+		"core-js": {
13
+			"version": "1.2.7",
14
+			"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
15
+			"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
16
+		},
17
+		"encoding": {
18
+			"version": "0.1.12",
19
+			"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
20
+			"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
21
+			"requires": {
22
+				"iconv-lite": "0.4.19"
23
+			}
24
+		},
25
+		"fbjs": {
26
+			"version": "0.8.16",
27
+			"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz",
28
+			"integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=",
29
+			"requires": {
30
+				"core-js": "1.2.7",
31
+				"isomorphic-fetch": "2.2.1",
32
+				"loose-envify": "1.3.1",
33
+				"object-assign": "4.1.1",
34
+				"promise": "7.3.1",
35
+				"setimmediate": "1.0.5",
36
+				"ua-parser-js": "0.7.17"
37
+			}
38
+		},
39
+		"iconv-lite": {
40
+			"version": "0.4.19",
41
+			"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
42
+			"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
43
+		},
44
+		"immutable": {
45
+			"version": "3.8.2",
46
+			"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
47
+			"integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM="
48
+		},
49
+		"is-stream": {
50
+			"version": "1.1.0",
51
+			"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
52
+			"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
53
+		},
54
+		"isomorphic-fetch": {
55
+			"version": "2.2.1",
56
+			"resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
57
+			"integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
58
+			"requires": {
59
+				"node-fetch": "1.7.3",
60
+				"whatwg-fetch": "2.0.3"
61
+			}
62
+		},
63
+		"js-tokens": {
64
+			"version": "3.0.2",
65
+			"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
66
+			"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
67
+		},
68
+		"loose-envify": {
69
+			"version": "1.3.1",
70
+			"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
71
+			"integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
72
+			"requires": {
73
+				"js-tokens": "3.0.2"
74
+			}
75
+		},
76
+		"node-fetch": {
77
+			"version": "1.7.3",
78
+			"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
79
+			"integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
80
+			"requires": {
81
+				"encoding": "0.1.12",
82
+				"is-stream": "1.1.0"
83
+			}
84
+		},
85
+		"object-assign": {
86
+			"version": "4.1.1",
87
+			"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
88
+			"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
89
+		},
90
+		"promise": {
91
+			"version": "7.3.1",
92
+			"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
93
+			"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
94
+			"requires": {
95
+				"asap": "2.0.6"
96
+			}
97
+		},
98
+		"prop-types": {
99
+			"version": "15.6.0",
100
+			"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz",
101
+			"integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=",
102
+			"requires": {
103
+				"fbjs": "0.8.16",
104
+				"loose-envify": "1.3.1",
105
+				"object-assign": "4.1.1"
106
+			}
107
+		},
108
+		"react-native-autoheight-webview": {
109
+			"version": "file:..",
110
+			"requires": {
111
+				"immutable": "3.8.2",
112
+				"prop-types": "15.6.0"
113
+			}
114
+		},
115
+		"setimmediate": {
116
+			"version": "1.0.5",
117
+			"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
118
+			"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
119
+		},
120
+		"ua-parser-js": {
121
+			"version": "0.7.17",
122
+			"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz",
123
+			"integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g=="
124
+		},
125
+		"whatwg-fetch": {
126
+			"version": "2.0.3",
127
+			"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz",
128
+			"integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ="
129
+		}
130
+	}
131
+}

+ 7
- 7
demo/package.json Voir le fichier

7
 		"test": "jest"
7
 		"test": "jest"
8
 	},
8
 	},
9
 	"dependencies": {
9
 	"dependencies": {
10
-		"react": "16.0.0-alpha.12",
11
-		"react-native": "0.47.2",
12
-		"react-native-autoheight-webview": "../"
10
+		"react": "16.0.0",
11
+		"react-native": "0.50.1",
12
+		"react-native-autoheight-webview": "file:.."
13
 	},
13
 	},
14
 	"devDependencies": {
14
 	"devDependencies": {
15
-		"babel-jest": "20.0.3",
16
-		"babel-preset-react-native": "3.0.2",
17
-		"jest": "20.0.4",
18
-		"react-test-renderer": "16.0.0-alpha.12"
15
+		"babel-jest": "21.2.0",
16
+		"babel-preset-react-native": "4.0.0",
17
+		"jest": "21.2.1",
18
+		"react-test-renderer": "16.0.0"
19
 	},
19
 	},
20
 	"jest": {
20
 	"jest": {
21
 		"preset": "react-native"
21
 		"preset": "react-native"

+ 772
- 726
demo/yarn.lock
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


+ 1
- 1
package.json Voir le fichier

1
 {
1
 {
2
   "name": "react-native-autoheight-webview",
2
   "name": "react-native-autoheight-webview",
3
-  "version": "0.3.4",
3
+  "version": "0.4.0",
4
   "description": "An auto height webview for React Native",
4
   "description": "An auto height webview for React Native",
5
   "main": "autoHeightWebView",
5
   "main": "autoHeightWebView",
6
   "files": [
6
   "files": [