From 4e1bacf0d02bddd930b6673f0cecca204e28c956 Mon Sep 17 00:00:00 2001 From: Jake Hasler Date: Thu, 21 Apr 2022 17:45:09 -0600 Subject: [PATCH 01/24] Updating the README with custom fonts usage Providing more implementation details on how to use the `initialCSSText` option to utilize custom fonts. --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/README.md b/README.md index da1d149..0a03450 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ The editor component. Simply place this component in your view hierarchy to rece - `placeholderColor`: Editor placeholder text color - `contentCSSText`: editor content css text(initial valid) - `cssText`: editor global css text(initial valid) + - `initialCSSText`: injects CSS at the beginning of the inline stylesheet. Useful for incorporating custom fonts (see below). * `onChange` Callback after editor data modification @@ -153,6 +154,40 @@ This method registers a function that will get called whenver the cursor positio ``` +### Using Custom Fonts +In order to use custom fonts, you need to use `initialCSSText` from the `editorStyle` prop. + +1. Upload your font files to https://transfonter.org and check the 'base64' option. When you download the zip file, there will be a stylesheet.css file there. +2. Take your stylesheet.css file and create a `stylesheet.js` file. +3. Create an export and paste the contents of the css file there. e.g.: +```javascript +const FontFamilyStylesheet = ` +@font-face { + font-family: 'Your Font Family'; + src: url('data:font/ttf;charset=utf-8;base64,...............'); // You can also use a web url here + font-weight: normal; +} +`; + +export default FontFamilyStylesheet; +``` +4. Where you've incorporated your `RichEditor` component, import the file and utilize it. +```javascript +import FontFamilyStylesheet from 'stylesheet.js'; + + +``` +5. Reload the app. You should now be seeing your Rich Editor content in your custom font face! + + + +For more info on how `initialCSSText` works, check out the PR [here](https://github.com/wxik/react-native-rich-editor/pull/111). +Also, credit to [this](https://github.com/wxik/react-native-rich-editor/issues/70#issuecomment-759441101) issue comment and [his fork](https://github.com/FloMueh/react-native-rich-editor) that describes how to use the base64 encoded font file. + + + ## `RichToolbar` This is a Component that provides a toolbar for easily controlling an editor. It is designed to be used together with a `RichEditor` component. From 1f1135a971d95fc04e58d640d1e1bee76bba4250 Mon Sep 17 00:00:00 2001 From: Cristiano Coelho Date: Thu, 28 Apr 2022 22:23:19 -0300 Subject: [PATCH 02/24] if using p separator, make sure that ul/ol elements are added to the parent element --- src/editor.js | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/editor.js b/src/editor.js index 4252bd9..1428f1b 100644 --- a/src/editor.js +++ b/src/editor.js @@ -248,6 +248,26 @@ function createHTML(options = {}) { } } + function adjustNestedElements() { + // adjust ul/ol if we use p separator + // since nesting is not valid for p + if (editor.paragraphSeparator == 'p') { + var selection = window.getSelection(); + + let lists = document.querySelectorAll("ol, ul"); + for (let i = 0; i < lists.length; i++) { + let ele = lists[i]; + let parentNode = ele.parentNode; + if (parentNode.tagName === 'P' && parentNode.lastChild === parentNode.firstChild) { + parentNode.insertAdjacentElement('beforebegin', ele); + parentNode.remove() + } + } + + selection.collapse(anchorNode, anchorOffset); + } + } + var Actions = { bold: { state: function() { return queryCommandState('bold'); }, result: function() { return exec('bold'); }}, italic: { state: function() { return queryCommandState('italic'); }, result: function() { return exec('italic'); }}, @@ -266,11 +286,23 @@ function createHTML(options = {}) { removeFormat: { result: function() { return exec('removeFormat'); }}, orderedList: { state: function() { return !checkboxNode(window.getSelection().anchorNode) && queryCommandState('insertOrderedList'); }, - result: function() { if (!!checkboxNode(window.getSelection().anchorNode)) return;return exec('insertOrderedList'); } + result: function() { + if (!!checkboxNode(window.getSelection().anchorNode)) return; + + let flag = exec('insertOrderedList'); + adjustNestedElements(); + return flag; + } }, unorderedList: { state: function() { return queryCommandState('insertUnorderedList');}, - result: function() { if (!!checkboxNode(window.getSelection().anchorNode)) return; return exec('insertUnorderedList');} + result: function() { + if (!!checkboxNode(window.getSelection().anchorNode)) return; + + let flag = exec('insertUnorderedList'); + adjustNestedElements(); + return flag + } }, code: { result: function(type) { var flag = exec(formatBlock, '
');

From 2b8e57029a05a83116b03f3e300aa28d7cc3e797 Mon Sep 17 00:00:00 2001
From: Cristiano Coelho 
Date: Thu, 28 Apr 2022 22:28:19 -0300
Subject: [PATCH 03/24] missing semicolon

---
 src/editor.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/editor.js b/src/editor.js
index 1428f1b..591ea09 100644
--- a/src/editor.js
+++ b/src/editor.js
@@ -301,7 +301,7 @@ function createHTML(options = {}) {
 
                     let flag =  exec('insertUnorderedList');
                     adjustNestedElements();
-                    return flag
+                    return flag;
                 }
             },
             code: { result: function(type) {

From 2c6a29017cda9a2c0c5a2f59cc05db9863cf14c4 Mon Sep 17 00:00:00 2001
From: Cristiano Coelho 
Date: Fri, 29 Apr 2022 11:18:16 -0300
Subject: [PATCH 04/24] fix extra 
s added on links --- src/editor.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/editor.js b/src/editor.js index 591ea09..78c713e 100644 --- a/src/editor.js +++ b/src/editor.js @@ -340,6 +340,11 @@ function createHTML(options = {}) { // title = title || window.prompt('Enter the link title'); var url = data.url || window.prompt('Enter the link URL'); if (url){ + // when adding a link, if our current node is empty, it may have a
+ // if so, replace it with '' so the added link doesn't end up with an extra space. + if (anchorNode && anchorNode.innerHTML === '
') { + anchorNode.innerHTML = ''; + } exec('insertHTML', ""+(title || url)+""); } } @@ -483,7 +488,7 @@ function createHTML(options = {}) { paragraphStatus = 1; } } else if (content.innerHTML === '
'){ - content.innerHTML = ''; + content.innerHTML = ''; } else if (enterStatus && queryCommandValue(formatBlock) === 'blockquote') { formatParagraph(); } From c70c5caa43fe507eef685c78345137d297d0df39 Mon Sep 17 00:00:00 2001 From: Cristiano Coelho Date: Fri, 29 Apr 2022 12:03:52 -0300 Subject: [PATCH 05/24] revert this, not working as expected --- src/editor.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/editor.js b/src/editor.js index 78c713e..1b25928 100644 --- a/src/editor.js +++ b/src/editor.js @@ -340,11 +340,6 @@ function createHTML(options = {}) { // title = title || window.prompt('Enter the link title'); var url = data.url || window.prompt('Enter the link URL'); if (url){ - // when adding a link, if our current node is empty, it may have a
- // if so, replace it with '' so the added link doesn't end up with an extra space. - if (anchorNode && anchorNode.innerHTML === '
') { - anchorNode.innerHTML = ''; - } exec('insertHTML', ""+(title || url)+""); } } From 0e708907542cc3a0cfb74c997263dea43ef3f761 Mon Sep 17 00:00:00 2001 From: Cristiano Coelho Date: Mon, 2 May 2022 18:48:35 -0300 Subject: [PATCH 06/24] link insert fixes: - use proper methods instead of string concat to prevent injection - fix randomly added newline when the link is added on an empty line - make sure link is wrapped in paragraph if needed - adjust cursor after insert --- src/editor.js | 56 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/src/editor.js b/src/editor.js index 4252bd9..7086fe8 100644 --- a/src/editor.js +++ b/src/editor.js @@ -195,6 +195,7 @@ function createHTML(options = {}) { function saveSelection(){ var sel = window.getSelection(); + currentSelection = sel; anchorNode = sel.anchorNode; anchorOffset = sel.anchorOffset; focusNode = sel.focusNode; @@ -301,14 +302,57 @@ function createHTML(options = {}) { fontSize: { result: function(size) { return exec('fontSize', size); }}, fontName: { result: function(name) { return exec('fontName', name); }}, link: { + // result: function(data) { + // data = data || {}; + // var title = data.title; + // title = title || window.getSelection().toString(); + // // title = title || window.prompt('Enter the link title'); + // var url = data.url || window.prompt('Enter the link URL'); + // if (url){ + // exec('insertHTML', ""+(title || url)+""); + // } + // } result: function(data) { + var sel = document.getSelection(); data = data || {}; - var title = data.title; - title = title || window.getSelection().toString(); - // title = title || window.prompt('Enter the link title'); var url = data.url || window.prompt('Enter the link URL'); - if (url){ - exec('insertHTML', ""+(title || url)+""); + + if (url) { + var el = document.createElement("a"); + el.setAttribute("href", url); + + var title = data.title || sel.toString() || url; + el.text = title; + + // when adding a link, if our current node is empty, it may have a
+ // if so, replace it with '' so the added link doesn't end up with an extra space. + // Also, if totally empty, we must format the paragraph to add the link into the container. + var mustFormat = false; + if (sel.anchorNode && sel.anchorNode.innerHTML === '
') { + sel.anchorNode.innerHTML = ''; + } else if (!sel.anchorNode || sel.anchorNode === editor.content) { + mustFormat = true; + } + + // insert like this so we can replace current selection, if any + var range = sel.getRangeAt(0); + range.deleteContents(); + range.insertNode(el); + + // restore cursor to end + range.setStartAfter(el); + range.setEndAfter(el); + sel.removeAllRanges(); + sel.addRange(range); + + // format paragraph if needed + if (mustFormat){ + formatParagraph(); + } + + // save selection, and fire on change to our webview + saveSelection(); + editor.settings.onChange(); } } }, @@ -609,7 +653,7 @@ function createHTML(options = {}) { Actions.content.focus(); handleSelecting(event); }); - return {content, paragraphSeparator: paragraphSeparator}; + return {content, paragraphSeparator: paragraphSeparator, settings}; }; var _handleCTime = null; From 061f3d6a3be3eaa6e98f9fdb8127dfec4c2c48b0 Mon Sep 17 00:00:00 2001 From: Cristiano Coelho Date: Mon, 20 Jun 2022 11:07:29 -0300 Subject: [PATCH 07/24] improve the getEditor prop to prevent crashes --- src/RichToolbar.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/RichToolbar.js b/src/RichToolbar.js index 6882aa8..cc3595c 100755 --- a/src/RichToolbar.js +++ b/src/RichToolbar.js @@ -112,7 +112,13 @@ export default class RichToolbar extends Component { _mount = () => { const {editor: {current: editor} = {current: this.props.getEditor?.()}} = this.props; if (!editor) { - throw new Error('Toolbar has no editor!'); + // No longer throw an error, just try to re-load it when needed. + // This is because the webview may go away during long periods of inactivity, + // and the ref will be lost, causing the entire app to crash in this throw new error. + //throw new Error('Toolbar has no editor!'); + if (__DEV__) { + console.warn("Toolbar has no editor. Please make sure the prop getEditor returns a ref to the editor component."); + } } else { editor.registerToolbar((selectedItems) => this.setSelectedItems(selectedItems)); this.editor = editor; @@ -152,7 +158,10 @@ export default class RichToolbar extends Component { handleKeyboard() { const editor = this.editor; - if (!editor) return; + if (!editor) { + this._mount(); + return; + } if (editor.isKeyboardOpen) { editor.dismissKeyboard(); } else { @@ -163,7 +172,11 @@ export default class RichToolbar extends Component { _onPress(action) { const {onPressAddImage, onInsertLink, insertVideo} = this.props; const editor = this.editor; - if (!editor) return; + + if (!editor) { + this._mount(); + return; + } switch (action) { case actions.insertLink: From a14a51ad381ab6a923411af96b9a6daf0d7e717a Mon Sep 17 00:00:00 2001 From: Mickael Lecoq Date: Wed, 22 Jun 2022 17:51:28 +0200 Subject: [PATCH 08/24] feat(ts): add sendAction method in definition file --- index.d.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/index.d.ts b/index.d.ts index ed48e23..3dc172e 100644 --- a/index.d.ts +++ b/index.d.ts @@ -54,7 +54,7 @@ export interface RichEditorProps extends WebViewProps { * String value to set return key type * See: https://reactnative.dev/docs/textinput#returnkeytype */ - enterKeyHint?: 'done' | 'go' | 'next' | 'search' | 'send' + enterKeyHint?: 'done' | 'go' | 'next' | 'search' | 'send'; /** * Boolean value to enable paste as plain text. The default value is false. @@ -111,7 +111,7 @@ export interface RichEditorProps extends WebViewProps { /** * Callback Enter the position of the cursor */ - onCursorPosition?: (offsetY: number)=> void; + onCursorPosition?: (offsetY: number) => void; /** * Callback after height change @@ -120,6 +120,9 @@ export interface RichEditorProps extends WebViewProps { onMessage?: (message: {type: string; id: string; data?: any}) => void; + /** Custom action sent to editor */ + sendAction(type: string, action: string, data?: any, options?: any): void; + /** * When first gaining focus, the cursor moves to the end of the text * Default is true @@ -202,13 +205,13 @@ export class RichEditor extends React.Component { * The background color of the selected text * @param color */ - setHiliteColor: (color: string)=> void; + setHiliteColor: (color: string) => void; /** * The color of the selected text * @param color */ - setForeColor: (color: string)=> void; + setForeColor: (color: string) => void; /** * $ = document.querySelector From f346f5c016ac0f54280737b59e4caf0674648b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zsombor=20Gell=C3=A9rfi?= Date: Tue, 4 Oct 2022 11:36:12 +0200 Subject: [PATCH 09/24] fix: added missing autoCorrect prop --- index.d.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/index.d.ts b/index.d.ts index ed48e23..ea8bb5f 100644 --- a/index.d.ts +++ b/index.d.ts @@ -44,6 +44,11 @@ export interface RichEditorProps extends WebViewProps { */ disabled?: boolean; + /** + * Boolean value to enable auto-correct. The default value is false. + */ + autoCorrect?: boolean; + /** * String value to set text auto capitalization. * See: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize @@ -54,7 +59,7 @@ export interface RichEditorProps extends WebViewProps { * String value to set return key type * See: https://reactnative.dev/docs/textinput#returnkeytype */ - enterKeyHint?: 'done' | 'go' | 'next' | 'search' | 'send' + enterKeyHint?: 'done' | 'go' | 'next' | 'search' | 'send'; /** * Boolean value to enable paste as plain text. The default value is false. @@ -111,7 +116,7 @@ export interface RichEditorProps extends WebViewProps { /** * Callback Enter the position of the cursor */ - onCursorPosition?: (offsetY: number)=> void; + onCursorPosition?: (offsetY: number) => void; /** * Callback after height change @@ -202,13 +207,13 @@ export class RichEditor extends React.Component { * The background color of the selected text * @param color */ - setHiliteColor: (color: string)=> void; + setHiliteColor: (color: string) => void; /** * The color of the selected text * @param color */ - setForeColor: (color: string)=> void; + setForeColor: (color: string) => void; /** * $ = document.querySelector From 9e7d85ba95976b316ed5e99a150fa2deb125ede2 Mon Sep 17 00:00:00 2001 From: wxik Date: Thu, 15 Dec 2022 10:07:16 +0800 Subject: [PATCH 10/24] fix: wxik/core error --- examples/package.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/package.json b/examples/package.json index da2e478..a357868 100644 --- a/examples/package.json +++ b/examples/package.json @@ -10,22 +10,22 @@ "reset": "react-native start --reset-cache" }, "dependencies": { - "@wxik/core": "^0.4.14", + "@wxik/core": "^0.5.5", "react": "17.0.2", "react-native": "0.66.4", "react-native-iphone-x-helper": "^1.3.1", - "react-native-modal": "^13.0.0", - "react-native-webview": "11.15.0" + "react-native-modal": "^13.0.1", + "react-native-webview": "11.26.0" }, "devDependencies": { - "@babel/core": "^7.16.5", - "@babel/plugin-proposal-function-bind": "^7.16.5", - "@babel/runtime": "^7.16.5", - "@types/react": "^17.0.38", - "@types/react-native": "^0.66.10", + "@babel/core": "^7.20.5", + "@babel/plugin-proposal-function-bind": "^7.18.9", + "@babel/runtime": "^7.20.6", + "@types/react": "^18.0.26", + "@types/react-native": "^0.70.8", "babel-plugin-module-resolver": "^4.1.0", "metro-react-native-babel-preset": "^0.66.2", - "prettier": "^2.5.1" + "prettier": "^2.8.1" }, "peerDependencies": { "react-native-pell-rich-editor": "^1.7.0" From ae0fac3e3be987310d70f98c81686a038244ad2c Mon Sep 17 00:00:00 2001 From: wxik Date: Thu, 15 Dec 2022 10:10:17 +0800 Subject: [PATCH 11/24] =?UTF-8?q?feat:=20=E5=88=A0=E9=99=A4=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/RichEditor.js | 12 ------------ src/RichToolbar.js | 17 ----------------- 2 files changed, 29 deletions(-) diff --git a/src/RichEditor.js b/src/RichEditor.js index 74de536..cf0793c 100755 --- a/src/RichEditor.js +++ b/src/RichEditor.js @@ -7,18 +7,6 @@ import {createHTML} from './editor'; const PlatformIOS = Platform.OS === 'ios'; export default class RichTextEditor extends Component { - // static propTypes = { - // initialContentHTML: PropTypes.string, - // editorInitializedCallback: PropTypes.func, - // onChange: PropTypes.func, - // onHeightChange: PropTypes.func, - // initialFocus: PropTypes.bool, - // disabled: PropTypes.bool, - // onPaste: PropTypes.func, - // onKeyUp: PropTypes.func, - // onKeyDown: PropTypes.func, - // onFocus: PropTypes.func, - // }; static defaultProps = { contentInset: {}, diff --git a/src/RichToolbar.js b/src/RichToolbar.js index 6882aa8..fda81a4 100755 --- a/src/RichToolbar.js +++ b/src/RichToolbar.js @@ -49,23 +49,6 @@ function getDefaultIcon() { // noinspection FallThroughInSwitchStatementJS export default class RichToolbar extends Component { - // static propTypes = { - // getEditor?: PropTypes.func.isRequired, - // editor?: PropTypes.object, - // actions: PropTypes.array, - // onPressAddImage: PropTypes.func, - // onInsertLink: PropTypes.func, - // selectedButtonStyle: PropTypes.object, - // itemStyle: PropTypes.object, - // iconTint: PropTypes.any, - // selectedIconTint: PropTypes.any, - // unselectedButtonStyle: PropTypes.object, - // disabledButtonStyle: PropTypes.object, - // disabledIconTint: PropTypes.any, - // renderAction: PropTypes.func, - // iconMap: PropTypes.object, - // disabled: PropTypes.bool, - // }; static defaultProps = { actions: defaultActions, From f581f86706da1e1981bae849885d63b95f00a87c Mon Sep 17 00:00:00 2001 From: Ezra Anglo Date: Thu, 2 Mar 2023 13:44:46 -0500 Subject: [PATCH 12/24] Use rect to update offset_y when pasting --- src/editor.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/editor.js b/src/editor.js index 4252bd9..c7126f4 100644 --- a/src/editor.js +++ b/src/editor.js @@ -420,7 +420,14 @@ function createHTML(options = {}) { var sel = window.getSelection(); if (node){ var siblingOffset = (node.nextSibling && node.nextSibling.offsetTop) || (node.previousSibling && node.previousSibling.offsetTop) - var offsetY = node.offsetTop || siblingOffset || node.parentNode.offsetTop; + var rectOffset = null; + if (sel.rangeCount > 0) { + var range = sel.getRangeAt(0); + var rect = range.getClientRects()[0]; + rectOffset = rect ? rect.y : null; + } + + var offsetY = node.offsetTop || siblingOffset || rectOffset || node.parentNode.offsetTop; if (offsetY){ _postMessage({type: 'OFFSET_Y', data: offsetY}); } From 3883b60736de74350d3a5a2cc5244845c1e571b4 Mon Sep 17 00:00:00 2001 From: wxik Date: Fri, 31 Mar 2023 18:45:28 +0800 Subject: [PATCH 13/24] fix: 1. https://github.com/wxik/react-native-rich-editor/issues/304 2. update examples to typescript --- .editorconfig | 2 +- .prettierrc.js | 18 +- examples/.buckconfig | 6 - examples/.bundle/config | 2 + examples/.eslintrc.js | 4 +- examples/.flowconfig | 66 - examples/.gitattributes | 3 - examples/.gitignore | 23 +- examples/.node-version | 1 + examples/.prettierrc.js | 18 +- examples/Gemfile | 6 + examples/Gemfile.lock | 98 + examples/android/app/BUCK | 55 - examples/android/app/build.gradle | 208 +- examples/android/app/build_defs.bzl | 19 - .../android/app/src/debug/AndroidManifest.xml | 4 +- .../ReactNativeFlipper.java | 13 +- .../android/app/src/main/AndroidManifest.xml | 38 +- .../main/java/com/examples/MainActivity.java | 35 + .../java/com/examples/MainApplication.java | 62 + .../src/main/java/com/wxik/MainActivity.java | 15 - .../main/java/com/wxik/MainApplication.java | 83 - .../res/drawable/rn_edit_text_material.xml | 36 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3282 -> 3056 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5024 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2628 -> 2096 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2858 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4288 -> 4569 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7098 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6594 -> 6464 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10676 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 8998 -> 9250 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15523 bytes .../app/src/main/res/values/strings.xml | 2 +- .../app/src/main/res/values/styles.xml | 1 + .../java/com/examples/ReactNativeFlipper.java | 20 + examples/android/build.gradle | 35 +- examples/android/gradle.properties | 22 +- .../android/gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 59821 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- examples/android/gradlew | 257 +- examples/android/settings.gradle | 1 + examples/babel.config.js | 22 +- examples/ios/.xcode.env | 11 + examples/ios/Podfile | 74 +- examples/ios/Podfile.lock | 689 +- .../ios/examples.xcodeproj/project.pbxproj | 375 +- .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/examples.xcscheme | 6 +- examples/ios/examples/AppDelegate.h | 6 +- examples/ios/examples/AppDelegate.m | 43 - examples/ios/examples/AppDelegate.mm | 36 + .../ios/examples/Base.lproj/LaunchScreen.xib | 42 - .../AppIcon.appiconset/Contents.json | 171 +- .../AppIcon.appiconset/icon-1024.png | Bin 103930 -> 0 bytes .../AppIcon.appiconset/icon-20-ipad.png | Bin 718 -> 0 bytes .../AppIcon.appiconset/icon-20@2x-ipad.png | Bin 1229 -> 0 bytes .../AppIcon.appiconset/icon-20@2x.png | Bin 1229 -> 0 bytes .../AppIcon.appiconset/icon-20@3x.png | Bin 1712 -> 0 bytes .../AppIcon.appiconset/icon-29-ipad.png | Bin 1112 -> 0 bytes .../AppIcon.appiconset/icon-29.png | Bin 1112 -> 0 bytes .../AppIcon.appiconset/icon-29@2x-ipad.png | Bin 1657 -> 0 bytes .../AppIcon.appiconset/icon-29@2x.png | Bin 1657 -> 0 bytes .../AppIcon.appiconset/icon-29@3x.png | Bin 2729 -> 0 bytes .../AppIcon.appiconset/icon-40.png | Bin 1229 -> 0 bytes .../AppIcon.appiconset/icon-40@2x.png | Bin 2399 -> 0 bytes .../AppIcon.appiconset/icon-40@3x.png | Bin 4065 -> 0 bytes .../AppIcon.appiconset/icon-60@2x.png | Bin 4065 -> 0 bytes .../AppIcon.appiconset/icon-60@3x.png | Bin 7077 -> 0 bytes .../AppIcon.appiconset/icon-76.png | Bin 2309 -> 0 bytes .../AppIcon.appiconset/icon-76@2x.png | Bin 5509 -> 0 bytes .../AppIcon.appiconset/icon-83.5@2x.png | Bin 6258 -> 0 bytes .../examples/Images.xcassets/Contents.json | 6 +- examples/ios/examples/Info.plist | 8 +- examples/ios/examples/LaunchScreen.storyboard | 47 + examples/ios/examples/main.m | 3 +- examples/ios/examplesTests/Info.plist | 24 + examples/ios/examplesTests/examplesTests.m | 66 + examples/metro.config.js | 48 +- examples/package.json | 35 +- examples/src/App.js | 43 - examples/src/App.tsx | 38 + examples/src/{emoji.js => emoji.tsx} | 6 +- examples/src/example.class.js | 502 -- examples/src/example.hooks.js | 457 -- examples/src/example.tsx | 455 ++ examples/src/helper/KeyboardSpacer.js | 128 - examples/src/helper/KeyboardSpacer.tsx | 142 + examples/src/insertLink.js | 125 - examples/src/insertLink.tsx | 127 + examples/src/interface.ts | 13 + examples/src/preview.js | 50 - examples/src/preview.tsx | 48 + examples/src/welcome.js | 45 - examples/src/welcome.tsx | 50 + examples/tsconfig.json | 4 + examples/yarn.lock | 6271 +++++++++++------ package.json | 2 +- src/RichEditor.js | 856 +-- src/editor.js | 58 +- web/index.html | 20 +- 102 files changed, 7026 insertions(+), 5297 deletions(-) delete mode 100644 examples/.buckconfig create mode 100644 examples/.bundle/config delete mode 100644 examples/.flowconfig delete mode 100644 examples/.gitattributes create mode 100644 examples/.node-version create mode 100644 examples/Gemfile create mode 100644 examples/Gemfile.lock delete mode 100644 examples/android/app/BUCK delete mode 100644 examples/android/app/build_defs.bzl rename examples/android/app/src/debug/java/com/{wxik => examples}/ReactNativeFlipper.java (89%) create mode 100644 examples/android/app/src/main/java/com/examples/MainActivity.java create mode 100644 examples/android/app/src/main/java/com/examples/MainApplication.java delete mode 100644 examples/android/app/src/main/java/com/wxik/MainActivity.java delete mode 100644 examples/android/app/src/main/java/com/wxik/MainApplication.java create mode 100644 examples/android/app/src/main/res/drawable/rn_edit_text_material.xml create mode 100644 examples/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 examples/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 examples/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 examples/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 examples/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 examples/android/app/src/release/java/com/examples/ReactNativeFlipper.java create mode 100644 examples/ios/.xcode.env create mode 100644 examples/ios/examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 examples/ios/examples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 examples/ios/examples/AppDelegate.m create mode 100644 examples/ios/examples/AppDelegate.mm delete mode 100644 examples/ios/examples/Base.lproj/LaunchScreen.xib delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-1024.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20-ipad.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@2x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@3x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29-ipad.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29@2x-ipad.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29@2x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29@3x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-40.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-40@2x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-40@3x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-60@2x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-60@3x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-76.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-76@2x.png delete mode 100644 examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png create mode 100644 examples/ios/examples/LaunchScreen.storyboard create mode 100644 examples/ios/examplesTests/Info.plist create mode 100644 examples/ios/examplesTests/examplesTests.m delete mode 100644 examples/src/App.js create mode 100644 examples/src/App.tsx rename examples/src/{emoji.js => emoji.tsx} (98%) delete mode 100644 examples/src/example.class.js delete mode 100644 examples/src/example.hooks.js create mode 100644 examples/src/example.tsx delete mode 100644 examples/src/helper/KeyboardSpacer.js create mode 100644 examples/src/helper/KeyboardSpacer.tsx delete mode 100644 examples/src/insertLink.js create mode 100644 examples/src/insertLink.tsx create mode 100644 examples/src/interface.ts delete mode 100644 examples/src/preview.js create mode 100644 examples/src/preview.tsx delete mode 100644 examples/src/welcome.js create mode 100644 examples/src/welcome.tsx create mode 100644 examples/tsconfig.json diff --git a/.editorconfig b/.editorconfig index 9bf92f6..e6955e3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,7 +15,7 @@ charset = utf-8 # 缩进使用 tab 或者 space indent_style = space # 缩进为 space 时,缩进的字符数 -indent_size = 4 +indent_size = 2 # 缩进为 tab 时,缩进的宽度 # tab_width = 4 # 换行符的类型。lf, cr, crlf三种 diff --git a/.prettierrc.js b/.prettierrc.js index f3b348c..fdc0a24 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,12 +1,8 @@ -const config = { - // editorconfig - editorconfig: true, - - bracketSpacing: false, - jsxBracketSameLine: true, - singleQuote: true, - trailingComma: 'all', - arrowParens: 'avoid', +module.exports = { + arrowParens: 'avoid', + bracketSameLine: true, + bracketSpacing: false, + singleQuote: true, + trailingComma: 'all', + printWidth: 120, }; - -module.exports = config; diff --git a/examples/.buckconfig b/examples/.buckconfig deleted file mode 100644 index 934256c..0000000 --- a/examples/.buckconfig +++ /dev/null @@ -1,6 +0,0 @@ - -[android] - target = Google Inc.:Google APIs:23 - -[maven_repositories] - central = https://repo1.maven.org/maven2 diff --git a/examples/.bundle/config b/examples/.bundle/config new file mode 100644 index 0000000..848943b --- /dev/null +++ b/examples/.bundle/config @@ -0,0 +1,2 @@ +BUNDLE_PATH: "vendor/bundle" +BUNDLE_FORCE_RUBY_PLATFORM: 1 diff --git a/examples/.eslintrc.js b/examples/.eslintrc.js index 50d4b5e..40c6dcd 100644 --- a/examples/.eslintrc.js +++ b/examples/.eslintrc.js @@ -1,4 +1,4 @@ module.exports = { - root: true, - extends: '@react-native-community', + root: true, + extends: '@react-native-community', }; diff --git a/examples/.flowconfig b/examples/.flowconfig deleted file mode 100644 index e1d4b44..0000000 --- a/examples/.flowconfig +++ /dev/null @@ -1,66 +0,0 @@ -[ignore] -; We fork some components by platform -.*/*[.]android.js - -; Ignore "BUCK" generated dirs -/\.buckd/ - -; Ignore polyfills -node_modules/react-native/Libraries/polyfills/.* - -; Flow doesn't support platforms -.*/Libraries/Utilities/LoadingView.js - -[untyped] -.*/node_modules/@react-native-community/cli/.*/.* - -[include] - -[libs] -node_modules/react-native/interface.js -node_modules/react-native/flow/ -modules/fr-flow/ - -[options] -emoji=true - -exact_by_default=true - -format.bracket_spacing=false - -module.file_ext=.js -module.file_ext=.json -module.file_ext=.ios.js - -munge_underscores=true - -module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' -module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState - -[lints] -sketchy-null-number=warn -sketchy-null-mixed=warn -sketchy-number=warn -untyped-type-import=warn -nonstrict-import=warn -deprecated-type=warn -unsafe-getters-setters=warn -unnecessary-invariant=warn -signature-verification-failure=warn - -[strict] -deprecated-type -nonstrict-import -sketchy-null -unclear-type -unsafe-getters-setters -untyped-import -untyped-type-import - -[version] -^0.158.0 diff --git a/examples/.gitattributes b/examples/.gitattributes deleted file mode 100644 index 45a3dcb..0000000 --- a/examples/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -# Windows files should use crlf line endings -# https://help.github.com/articles/dealing-with-line-endings/ -*.bat text eol=crlf diff --git a/examples/.gitignore b/examples/.gitignore index cc53454..16f8c30 100644 --- a/examples/.gitignore +++ b/examples/.gitignore @@ -20,6 +20,7 @@ DerivedData *.hmap *.ipa *.xcuserstate +ios/.xcode.env.local # Android/IntelliJ # @@ -29,6 +30,9 @@ build/ local.properties *.iml *.hprof +.cxx/ +*.keystore +!debug.keystore # node.js # @@ -36,12 +40,6 @@ node_modules/ npm-debug.log yarn-error.log -# BUCK -buck-out/ -\.buckd/ -*.keystore -!debug.keystore - # fastlane # # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the @@ -49,12 +47,17 @@ buck-out/ # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/ -*/fastlane/report.xml -*/fastlane/Preview.html -*/fastlane/screenshots +**/fastlane/report.xml +**/fastlane/Preview.html +**/fastlane/screenshots +**/fastlane/test_output # Bundle artifact *.jsbundle -# CocoaPods +# Ruby / CocoaPods /ios/Pods/ +/vendor/bundle/ + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* diff --git a/examples/.node-version b/examples/.node-version new file mode 100644 index 0000000..3c03207 --- /dev/null +++ b/examples/.node-version @@ -0,0 +1 @@ +18 diff --git a/examples/.prettierrc.js b/examples/.prettierrc.js index 99cb19d..fdc0a24 100644 --- a/examples/.prettierrc.js +++ b/examples/.prettierrc.js @@ -1,12 +1,8 @@ -const config = { - // editorconfig - editorconfig: true, - - bracketSpacing: false, - jsxBracketSameLine: true, - singleQuote: true, - trailingComma: 'all', - arrowParens: 'avoid', +module.exports = { + arrowParens: 'avoid', + bracketSameLine: true, + bracketSpacing: false, + singleQuote: true, + trailingComma: 'all', + printWidth: 120, }; - -module.exports = config; diff --git a/examples/Gemfile b/examples/Gemfile new file mode 100644 index 0000000..1142b1b --- /dev/null +++ b/examples/Gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' + +# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version +ruby '>= 2.6.10' + +gem 'cocoapods', '>= 1.11.3' diff --git a/examples/Gemfile.lock b/examples/Gemfile.lock new file mode 100644 index 0000000..671ae7f --- /dev/null +++ b/examples/Gemfile.lock @@ -0,0 +1,98 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.6) + rexml + activesupport (7.0.4.3) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + algoliasearch (1.27.5) + httpclient (~> 2.8, >= 2.8.3) + json (>= 1.5.1) + atomos (0.1.3) + claide (1.1.0) + cocoapods (1.12.0) + addressable (~> 2.8) + claide (>= 1.0.2, < 2.0) + cocoapods-core (= 1.12.0) + cocoapods-deintegrate (>= 1.0.3, < 2.0) + cocoapods-downloader (>= 1.6.0, < 2.0) + cocoapods-plugins (>= 1.0.0, < 2.0) + cocoapods-search (>= 1.0.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) + cocoapods-try (>= 1.1.0, < 2.0) + colored2 (~> 3.1) + escape (~> 0.0.4) + fourflusher (>= 2.3.0, < 3.0) + gh_inspector (~> 1.0) + molinillo (~> 0.8.0) + nap (~> 1.0) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.21.0, < 2.0) + cocoapods-core (1.12.0) + activesupport (>= 5.0, < 8) + addressable (~> 2.8) + algoliasearch (~> 1.0) + concurrent-ruby (~> 1.1) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + netrc (~> 0.11) + public_suffix (~> 4.0) + typhoeus (~> 1.0) + cocoapods-deintegrate (1.0.5) + cocoapods-downloader (1.6.3) + cocoapods-plugins (1.0.0) + nap + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) + nap (>= 0.8, < 2.0) + netrc (~> 0.11) + cocoapods-try (1.2.0) + colored2 (3.1.2) + concurrent-ruby (1.2.2) + escape (0.0.4) + ethon (0.16.0) + ffi (>= 1.15.0) + ffi (1.15.5) + fourflusher (2.3.1) + fuzzy_match (2.0.4) + gh_inspector (1.1.3) + httpclient (2.8.3) + i18n (1.12.0) + concurrent-ruby (~> 1.0) + json (2.6.3) + minitest (5.18.0) + molinillo (0.8.0) + nanaimo (0.3.0) + nap (1.1.0) + netrc (0.11.0) + public_suffix (4.0.7) + rexml (3.2.5) + ruby-macho (2.5.1) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + xcodeproj (1.22.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + +PLATFORMS + ruby + +DEPENDENCIES + cocoapods (>= 1.11.3) + +RUBY VERSION + ruby 2.7.7p221 + +BUNDLED WITH + 2.3.26 diff --git a/examples/android/app/BUCK b/examples/android/app/BUCK deleted file mode 100644 index 251f706..0000000 --- a/examples/android/app/BUCK +++ /dev/null @@ -1,55 +0,0 @@ -# To learn about Buck see [Docs](https://buckbuild.com/). -# To run your application with Buck: -# - install Buck -# - `npm start` - to start the packager -# - `cd android` -# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` -# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck -# - `buck install -r android/app` - compile, install and run application -# - -load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") - -lib_deps = [] - -create_aar_targets(glob(["libs/*.aar"])) - -create_jar_targets(glob(["libs/*.jar"])) - -android_library( - name = "all-libs", - exported_deps = lib_deps, -) - -android_library( - name = "app-code", - srcs = glob([ - "src/main/java/**/*.java", - ]), - deps = [ - ":all-libs", - ":build_config", - ":res", - ], -) - -android_build_config( - name = "build_config", - package = "com.examples", -) - -android_resource( - name = "res", - package = "com.examples", - res = "src/main/res", -) - -android_binary( - name = "app", - keystore = "//android/keystores:debug", - manifest = "src/main/AndroidManifest.xml", - package_type = "debug", - deps = [ - ":app-code", - ], -) diff --git a/examples/android/app/build.gradle b/examples/android/app/build.gradle index caf3dc8..5a67fef 100644 --- a/examples/android/app/build.gradle +++ b/examples/android/app/build.gradle @@ -1,147 +1,113 @@ apply plugin: "com.android.application" +apply plugin: "com.facebook.react" import com.android.build.OutputFile /** - * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets - * and bundleReleaseJsAndAssets). - * These basically call `react-native bundle` with the correct arguments during the Android build - * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the - * bundle directly from the development server. Below you can see all the possible configurations - * and their defaults. If you decide to add a configuration block, make sure to add it before the - * `apply from: "../../node_modules/react-native/react.gradle"` line. - * - * project.ext.react = [ - * // the name of the generated asset file containing your JS bundle - * bundleAssetName: "index.android.bundle", - * - * // the entry file for bundle generation. If none specified and - * // "index.android.js" exists, it will be used. Otherwise "index.js" is - * // default. Can be overridden with ENTRY_FILE environment variable. - * entryFile: "index.android.js", - * - * // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format - * bundleCommand: "ram-bundle", - * - * // whether to bundle JS and assets in debug mode - * bundleInDebug: false, - * - * // whether to bundle JS and assets in release mode - * bundleInRelease: true, - * - * // whether to bundle JS and assets in another build variant (if configured). - * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants - * // The configuration property can be in the following formats - * // 'bundleIn${productFlavor}${buildType}' - * // 'bundleIn${buildType}' - * // bundleInFreeDebug: true, - * // bundleInPaidRelease: true, - * // bundleInBeta: true, - * - * // whether to disable dev mode in custom build variants (by default only disabled in release) - * // for example: to disable dev mode in the staging build type (if configured) - * devDisabledInStaging: true, - * // The configuration property can be in the following formats - * // 'devDisabledIn${productFlavor}${buildType}' - * // 'devDisabledIn${buildType}' - * - * // the root of your project, i.e. where "package.json" lives - * root: "../../", - * - * // where to put the JS bundle asset in debug mode - * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", - * - * // where to put the JS bundle asset in release mode - * jsBundleDirRelease: "$buildDir/intermediates/assets/release", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in debug mode - * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in release mode - * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", - * - * // by default the gradle tasks are skipped if none of the JS files or assets change; this means - * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to - * // date; if you have any other folders that you want to ignore for performance reasons (gradle - * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ - * // for example, you might want to remove it from here. - * inputExcludes: ["android/**", "ios/**"], - * - * // override which node gets called and with what additional arguments - * nodeExecutableAndArgs: ["node"], - * - * // supply additional arguments to the packager - * extraPackagerArgs: [] - * ] + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. */ - -project.ext.react = [ - enableHermes: true, // clean and rebuild if changing -] - -apply from: "../../node_modules/react-native/react.gradle" +react { + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '..' + // root = file("../") + // The folder where the react-native NPM package is. Default is ../node_modules/react-native + // reactNativeDir = file("../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen + // codegenDir = file("../node_modules/react-native-codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js + // cliFile = file("../node_modules/react-native/cli.js") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + // + // The command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] +} /** - * Set this to true to create two separate APKs instead of one: - * - An APK that only works on ARM devices - * - An APK that only works on x86 devices - * The advantage is the size of the APK is reduced by about 4MB. - * Upload all the APKs to the Play Store and people will download - * the correct one based on the CPU architecture of their device. + * Set this to true to create four separate APKs instead of one, + * one for each native architecture. This is useful if you don't + * use App Bundles (https://developer.android.com/guide/app-bundle/) + * and want to have separate APKs to upload to the Play Store. */ def enableSeparateBuildPerCPUArchitecture = false /** - * Run Proguard to shrink the Java bytecode in release builds. + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. */ def enableProguardInReleaseBuilds = false /** - * The preferred build flavor of JavaScriptCore. + * The preferred build flavor of JavaScriptCore (JSC) * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that - * give correct results when using with locales other than en-US. Note that + * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ def jscFlavor = 'org.webkit:android-jsc:+' /** - * Whether to enable the Hermes VM. - * - * This should be set on project.ext.react and mirrored here. If it is not set - * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode - * and the benefits of using Hermes will therefore be sharply reduced. - */ -def enableHermes = project.ext.react.get("enableHermes", false); - -/** - * Architectures to build native code for in debug. + * Private function to get the list of Native Architectures you want to build. + * This reads the value from reactNativeArchitectures in your gradle.properties + * file and works together with the --active-arch-only flag of react-native run-android. */ -def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures") +def reactNativeArchitectures() { + def value = project.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] +} android { ndkVersion rootProject.ext.ndkVersion + compileSdkVersion rootProject.ext.compileSdkVersion + namespace "com.examples" defaultConfig { - applicationId "com.wxik.rn.rich.test" + applicationId "com.examples" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" } + splits { abi { reset() enable enableSeparateBuildPerCPUArchitecture universalApk false // If true, also generate a universal APK - include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + include (*reactNativeArchitectures()) } } signingConfigs { @@ -155,15 +121,10 @@ android { buildTypes { debug { signingConfig signingConfigs.debug - if (nativeArchitectures) { - ndk { - abiFilters nativeArchitectures.split(',') - } - } } release { // Caution! In production, you need to generate your own keystore file. - // see https://facebook.github.io/react-native/docs/signed-apk-android. + // see https://reactnative.dev/docs/signed-apk-android. signingConfig signingConfigs.debug minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" @@ -175,11 +136,12 @@ android { variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // https://developer.android.com/studio/build/configure-apk-splits.html + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = - defaultConfig.versionCode * 1000 + versionCodes.get(abi) + defaultConfig.versionCode * 1000 + versionCodes.get(abi) } } @@ -187,38 +149,22 @@ android { } dependencies { - implementation fileTree(dir: "libs", include: ["*.jar"]) - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" // From node_modules + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") - implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { - exclude group:'com.facebook.fbjni' - } + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0") + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' + exclude group:'com.squareup.okhttp3', module:'okhttp' } - debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' - } - - if (enableHermes) { - def hermesPath = "../../node_modules/hermes-engine/android/"; - debugImplementation files(hermesPath + "hermes-debug.aar") - releaseImplementation files(hermesPath + "hermes-release.aar") + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } -// Run this once to be able to run the application with BUCK -// puts all compile dependencies into folder libs for BUCK to use -task copyDownloadableDepsToLibs(type: Copy) { - from configurations.implementation - into 'libs' -} - apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/examples/android/app/build_defs.bzl b/examples/android/app/build_defs.bzl deleted file mode 100644 index fff270f..0000000 --- a/examples/android/app/build_defs.bzl +++ /dev/null @@ -1,19 +0,0 @@ -"""Helper definitions to glob .aar and .jar targets""" - -def create_aar_targets(aarfiles): - for aarfile in aarfiles: - name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] - lib_deps.append(":" + name) - android_prebuilt_aar( - name = name, - aar = aarfile, - ) - -def create_jar_targets(jarfiles): - for jarfile in jarfiles: - name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] - lib_deps.append(":" + name) - prebuilt_jar( - name = name, - binary_jar = jarfile, - ) diff --git a/examples/android/app/src/debug/AndroidManifest.xml b/examples/android/app/src/debug/AndroidManifest.xml index 0063cf4..4b185bc 100644 --- a/examples/android/app/src/debug/AndroidManifest.xml +++ b/examples/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -8,6 +8,6 @@ android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning"> - + diff --git a/examples/android/app/src/debug/java/com/wxik/ReactNativeFlipper.java b/examples/android/app/src/debug/java/com/examples/ReactNativeFlipper.java similarity index 89% rename from examples/android/app/src/debug/java/com/wxik/ReactNativeFlipper.java rename to examples/android/app/src/debug/java/com/examples/ReactNativeFlipper.java index f957db7..8432905 100644 --- a/examples/android/app/src/debug/java/com/wxik/ReactNativeFlipper.java +++ b/examples/android/app/src/debug/java/com/examples/ReactNativeFlipper.java @@ -1,10 +1,10 @@ /** - * Copyright (c) Facebook, Inc. and its affiliates. + * Copyright (c) Meta Platforms, Inc. and affiliates. * *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. */ -package com.wxik; +package com.examples; import android.content.Context; import com.facebook.flipper.android.AndroidFlipperClient; @@ -17,20 +17,23 @@ import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; -import com.facebook.flipper.plugins.react.ReactFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; +import com.facebook.react.ReactInstanceEventListener; import com.facebook.react.ReactInstanceManager; import com.facebook.react.bridge.ReactContext; import com.facebook.react.modules.network.NetworkingModule; import okhttp3.OkHttpClient; +/** + * Class responsible of loading Flipper inside your React Native application. This is the debug + * flavor of it. Here you can add your own plugins and customize the Flipper setup. + */ public class ReactNativeFlipper { public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { if (FlipperUtils.shouldEnableFlipper(context)) { final FlipperClient client = AndroidFlipperClient.getInstance(context); client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); - client.addPlugin(new ReactFlipperPlugin()); client.addPlugin(new DatabasesFlipperPlugin(context)); client.addPlugin(new SharedPreferencesFlipperPlugin(context)); client.addPlugin(CrashReporterPlugin.getInstance()); @@ -51,7 +54,7 @@ public void apply(OkHttpClient.Builder builder) { ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); if (reactContext == null) { reactInstanceManager.addReactInstanceEventListener( - new ReactInstanceManager.ReactInstanceEventListener() { + new ReactInstanceEventListener() { @Override public void onReactContextInitialized(ReactContext reactContext) { reactInstanceManager.removeReactInstanceEventListener(this); diff --git a/examples/android/app/src/main/AndroidManifest.xml b/examples/android/app/src/main/AndroidManifest.xml index 2b3cfe2..4122f36 100644 --- a/examples/android/app/src/main/AndroidManifest.xml +++ b/examples/android/app/src/main/AndroidManifest.xml @@ -1,25 +1,25 @@ - + - + + - - - - - - + android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" + android:launchMode="singleTask" + android:windowSoftInputMode="adjustResize" + android:exported="true"> + + + + + - diff --git a/examples/android/app/src/main/java/com/examples/MainActivity.java b/examples/android/app/src/main/java/com/examples/MainActivity.java new file mode 100644 index 0000000..9c3835c --- /dev/null +++ b/examples/android/app/src/main/java/com/examples/MainActivity.java @@ -0,0 +1,35 @@ +package com.examples; + +import com.facebook.react.ReactActivity; +import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactActivityDelegate; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "examples"; + } + + /** + * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link + * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React + * (aka React 18) with two boolean flags. + */ + @Override + protected ReactActivityDelegate createReactActivityDelegate() { + return new DefaultReactActivityDelegate( + this, + getMainComponentName(), + // If you opted-in for the New Architecture, we enable the Fabric Renderer. + DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled + // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18). + DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled + ); + } +} diff --git a/examples/android/app/src/main/java/com/examples/MainApplication.java b/examples/android/app/src/main/java/com/examples/MainApplication.java new file mode 100644 index 0000000..b2d2b06 --- /dev/null +++ b/examples/android/app/src/main/java/com/examples/MainApplication.java @@ -0,0 +1,62 @@ +package com.examples; + +import android.app.Application; +import com.facebook.react.PackageList; +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactNativeHost; +import com.facebook.soloader.SoLoader; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = + new DefaultReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + @SuppressWarnings("UnnecessaryLocalVariable") + List packages = new PackageList(this).getPackages(); + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(new MyReactNativePackage()); + return packages; + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + + @Override + protected boolean isNewArchEnabled() { + return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + } + + @Override + protected Boolean isHermesEnabled() { + return BuildConfig.IS_HERMES_ENABLED; + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + DefaultNewArchitectureEntryPoint.load(); + } + ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + } +} diff --git a/examples/android/app/src/main/java/com/wxik/MainActivity.java b/examples/android/app/src/main/java/com/wxik/MainActivity.java deleted file mode 100644 index 3ff5fc8..0000000 --- a/examples/android/app/src/main/java/com/wxik/MainActivity.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.wxik; - -import com.facebook.react.ReactActivity; - -public class MainActivity extends ReactActivity { - - /** - * Returns the name of the main component registered from JavaScript. This is used to schedule - * rendering of the component. - */ - @Override - protected String getMainComponentName() { - return "examples"; - } -} diff --git a/examples/android/app/src/main/java/com/wxik/MainApplication.java b/examples/android/app/src/main/java/com/wxik/MainApplication.java deleted file mode 100644 index 79fc56d..0000000 --- a/examples/android/app/src/main/java/com/wxik/MainApplication.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.wxik; - -import android.app.Application; -import android.content.Context; -import android.webkit.WebView; - -import com.facebook.react.PackageList; -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.soloader.SoLoader; -import java.lang.reflect.InvocationTargetException; -import java.util.List; - -public class MainApplication extends Application implements ReactApplication { - - private final ReactNativeHost mReactNativeHost = - new ReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - @SuppressWarnings("UnnecessaryLocalVariable") - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return packages; - } - - @Override - protected String getJSMainModuleName() { - return "index"; - } - }; - - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } - - @Override - public void onCreate() { - super.onCreate(); - SoLoader.init(this, /* native exopackage */ false); - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - WebView.setWebContentsDebuggingEnabled(true); - } - - /** - * Loads Flipper in React Native templates. Call this in the onCreate method with something like - * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - * - * @param context - * @param reactInstanceManager - */ - private static void initializeFlipper( - Context context, ReactInstanceManager reactInstanceManager) { - if (BuildConfig.DEBUG) { - try { - /* - We use reflection here to pick up the class that initializes Flipper, - since Flipper library is not available in release mode - */ - Class aClass = Class.forName("com.wxik.ReactNativeFlipper"); - aClass - .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) - .invoke(null, context, reactInstanceManager); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - } - } -} diff --git a/examples/android/app/src/main/res/drawable/rn_edit_text_material.xml b/examples/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 0000000..f35d996 --- /dev/null +++ b/examples/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/examples/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index f24f0ba6e176bb66092a4352ed7e533686e11dd1..a2f5908281d070150700378b64a84c7db1f97aa1 100644 GIT binary patch delta 3051 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 tKEN0F)D!;>WXK> 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 diff --git a/examples/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/examples/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..115a4c768a20c9e13185c17043f4c4d12dd4632a GIT binary patch literal 2858 zcmV+_3)S?AP)6jj zwslyNbxW4-gAj;v!J{u#G1>?8h`uw{1?o<0nB+tYjKOW@kQM}bUbgE7^CRD4K zgurXDRXWsX-Q$uVZ0o5KpKdOl5?!YGV|1Cict&~YiG*r%TU43m2Hf99&})mPEvepe z0_$L1e8*kL@h2~YPCajw6Kkw%Bh1Pp)6B|t06|1rR3xRYjBxjSEUmZk@7wX+2&-~! z!V&EdUw!o7hqZI=T4a)^N1D|a=2scW6oZU|Q=}_)gz4pu#43{muRW1cW2WC&m-ik? zskL0dHaVZ5X4PN*v4ZEAB9m;^6r-#eJH?TnU#SN&MO`Aj%)ybFYE+Pf8Vg^T3ybTl zu50EU=3Q60vA7xg@YQ$UKD-7(jf%}8gWS$_9%)wD1O2xB!_VxzcJdN!_qQ9j8#o^Kb$2+XTKxM8p>Ve{O8LcI(e2O zeg{tPSvIFaM+_Ivk&^FEk!WiV^;s?v8fmLglKG<7EO3ezShZ_0J-`(fM;C#i5~B@w zzx;4Hu{-SKq1{ftxbjc(dX3rj46zWzu02-kR>tAoFYDaylWMJ`>FO2QR%cfi+*^9A z54;@nFhVJEQ{88Q7n&mUvLn33icX`a355bQ=TDRS4Uud|cnpZ?a5X|cXgeBhYN7btgj zfrwP+iKdz4?L7PUDFA_HqCI~GMy`trF@g!KZ#+y6U%p5#-nm5{bUh>vhr^77p~ zq~UTK6@uhDVAQcL4g#8p-`vS4CnD9M_USvfi(M-;7nXjlk)~pr>zOI`{;$VXt;?VTNcCePv4 zgZm`^)VCx8{D=H2c!%Y*Sj3qbx z3Bcvv7qRAl|BGZCts{+>FZrE;#w(Yo2zD#>s3a*Bm!6{}vF_;i)6sl_+)pUj?b%BL!T1ELx|Q*Gi=7{Z_>n0I(uv>N^kh|~nJfab z-B6Q6i-x>YYa_42Hv&m>NNuPj31wOaHZ2`_8f~BtbXc@`9CZpHzaE@9sme%_D-HH! z_+C&VZ5tjE65?}X&u-D4AHRJ|7M{hR!}PYPpANP?7wnur`Z(&LFwzUmDz}m6%m#_` zN1ihq8f|zZ&zTL92M2b-hMpPyjp;j(qwgP9x)qI?EZx@<$g#>i7(MC}@*J1VGXm6J ztz1=RK@?%Qz^vmWNydd0K7oyrXw`TLb`z;fP6eV|NZ@9kKH zIyMqzZ9Y_)PZnC#UgW6&o7RiGXSCtSQvnrvJ07P9WCuE5TE27za*L6r1qX7pIDFiP znSaHYJF8sl^n0|3j!i{?fD%?fpQ8-}VX4%STy1t@8)G-8??Fy}j}~2_iJ79Y<9BW~ z!~)T{3Y|lwcVD5s4z^GP5M=~t`V?*Wng7gTvC9%p>ErZpM)pQVx57>AIcf1j4QFg^w>YYB%MypIj2syoXw9$K!N8%s=iPIw!LE-+6v6*Rm zvCqdN&kwI+@pEX0FTb&P)ujD9Td-sLBVV=A$;?RiFOROnT^LC^+PZR*u<3yl z7b%>viF-e48L=c`4Yhgb^U=+w7snP$R-gzx379%&q-0#fsMgvQlo>14~`1YOv{?^ z*^VYyiSJO8fE65P0FORgqSz#mi#9@40VO@TaPOT7pJq3WTK9*n;Niogu+4zte1FUa zyN7rIFbaQxeK{^RC3Iu@_J~ii&CvyWn^W}4wpexHwV9>GKO$zR3a&*L9&AgL=QfA$ z+G-YMq;1D{;N38`jTdN}Pw77sDCR|$2s+->;9gh-ObE_muwxq>sEpX)ywtgCHKIATY}p&%F4bRV>R9rYpeWbT(xnE7}?(HDXFgNDdC^@gUdK& zk=MolYT3>rpR*$Ell2!`c zjrIZftl&PUxlH2EgV+3VfQy&FjhL&5*Zg&R8xrSx?WgB?YuLO-JDaP3jr*I~qiywy z`-52AwB_6L#X ztms{{yRkRfQLbsb#Ov%`)acN(OCewI3Ex__xed17hg#g4c1blx?sK}UQg%PM@N;5d zsg{y6(|`H1Xfbz@5x{1688tu7TGkzFEBhOPDdFK(H_NQIFf|(>)ltFd!WdnkrY&mp z0y@5yU2;u1_enx%+U9tyY-LNWrd4^Wi?x<^r`QbaLBngWL`HzX@G550 zrdyNjhPTknrrJn#jT0WD0Z)WJRi&3FKJ#Sa&|883%QxM-?S%4niK{~k81<(c11sLk|!_7%s zH>c$`*nP-wA8Dx-K(HE~JG_@Yxxa;J+2yr+*iVlh;2Eiw?e`D1vu6*qY1+XTe8RVu z?RV%L|Mk!wO}j^S)p4H%?G37StD0Rx{_Y00%3a+V^SyOkfV@ZuFlEc;vR9r-D>cYU&plUkXL|M%1AYBQ3DI;;hF%_X@m*cTQAMZ4+FO74@AQB{A*_HtoXT@}l=8awaa7{RHC>07s?E%G{iSeRbh z?h#NM)bP`z`zdp5lij!N*df;4+sgz&U_JEr?N9#1{+UG3^11oQUOvU4W%tD1Cie3; z4zcz0SIrK-PG0(mp9gTYr(4ngx;ieH{NLq{* z;Pd=vS6KZYPV?DLbo^)~2dTpiKVBOh?|v2XNA)li)4V6B6PA!iq#XV5eO{{vL%OmU z0z3ZE2kcEkZ`kK(g^#s)#&#Zn5zw!R93cW^4+g0D=ydf&j4o_ti<@2WbzC>{(QhCL z(=%Zb;Ax8U=sdec9pkk|cW)1Ko;gK{-575HsDZ!w@WOQ^Up)GGorc38cGxe<$8O!6 zmQ`=@;TG{FjWq(s0eBn5I~vVgoE}un8+#YuR$Asq?lobvVAO-`SBs3!&;QEKT>gZ0T)jG^Foo~J2YkV&mi-axlvC}-(J4S2 z;opuO)+FIV#}&4;wwisb>{XU+FJ~tyK7UaG@ZD^C1^brazu7Xkh5Od}&P)GufW=u# zMxOwfWJ3a^MZha>9OmQ)@!Y;v*4@+dg~s~NQ;q@hV~l>lw`P)d`4XF9rE?aEFe(JV zI>11}Ny%^CkO=VN>wCV?P!-?VdT3vWe4zBLV*?6XPqsC%n93bQXvydh0Mo+tXHO4^ zxQ{x0?CG{fmToCyYny7>*-tNh;Sh9=THLzkS~lBiV9)IKa^C~_p8MVZWAUb)Btjt< zVZ;l7?_KnLHelj>)M1|Q_%pk5b?Bod_&86o-#36xIEag%b+8JqlDy@B^*YS*1; zGYT`@5nPgt)S^6Ap@b160C4d9do0iE;wYdn_Tr(vY{MS!ja!t*Z7G=Vz-=j5Z⁣ zwiG+x#%j}{0gU~J8;<|!B1@-XaB@{KORFwrYg_8rOv({b0EO#DbeQRm;B6_9=mXGf z-x|VL{zd`)#@yN}HkCSJbjbNlE|zL3Wm9Q8HY`sV)}3%pgN>cL^67{Z;PPL(*wT8N zUjXU{@|*hvm}({wsAC=x0^ok0%UAz0;sogW{B!nDqk|JJ5x~4NfTDgP49^zeu`csl?5mY@JdQdISc zFs!E{^grmkLnUk9 zny~m)1vws@5BFI<-0Tuo2JWX(0v`W|t(wg;s--L47WTvTMz-8l#TL^=OJNRS2?_Qj z3AKT+gvbyBi#H*-tJ%tWD|>EV3wy|8qxfzS!5RW;Jpl5*zo&^UBU=fG#2}UvRyNkK zA06Dy9;K1ca@r2T>yThYgI!ont$(G{6q#2QT+00r_x0(b)gsE`lBB?2gr55gq^D3Fi&p%E(p9>U%bv zkg1Jco(RbyTX7FDHOnl7-O@ zI$AaIl?9NJKPm(WiBP`1-#CB1QzU>&hKm)fpa5DKE{2$X0hGz-0uZ?cyTk(YC!Y&| zL=1VrNERSA5NA2jq7FACfX4JfPyj5XXl1yv0>~s;eF7L2$>&oMqeTFT2m$y7FlkON z_yurD1yIOvA;5C6016pyxBznGUt0kJ&k5r#;&>Jow`r)sp9R~PmK~lz$3xH%LT*1U zJdOyABZ3!FvNoR*vN$5ykHS8f`jA4zV+|L}i1C4`B2c{R0;UdYxaU|H)2avz@ z=mEYc|2S<+(B2Tj+FkX+2D+yFI!k9lWMA61DJ{)e;lum$(;O87?vGJJe!KtK04+N_ zI*P~t@dUb>9Xh{dbyl{-ZQ(UMgz7$|QfL5XSPkskt^NgctYC#;4WcZB1@%@wy@2t3 z2z0DI7&%b$*Aw~abe?GxE`ez@+6hOh-6*8fHRV{1os$EL@}uUZeG4h1&Be`98q*7j z=3-v+lhIjfWVo12!<>%V^a6lTgW3+_#W6n|p*~==zOH7z$0{LSZk(Tpd7EaD04hnA zL;#fxS0aD{`5^&D`}>0Uq?byDD-l2=!wm_bLcUl4gc(% za1p|itVANvFF>hghAS07Im1;IK;|b*W)}VDyI;BIp2=K*yu2a)j?B|f<44NI$NbmJ z#dE0>jI$fMr&@>4kN8MLFb4&2O9fEKaQg%(QO$4_1rVQywG^CmBLh#}_7gKW3vd?| z2?1^&KWq8}8I^_S0|)MowU_pw$q@nl@Nkn$z>BQq_KA^9yaR`(R3u{{Ig;cwt z@AJ^{ODQCm^neroM9nKNUAXi9RCK`OsP_LuR0PUR(YZCCX5dNF6VzcoK&=b^r`W?ltt|*F zpkoae%ZT{C1h~EcFui~b7fF`vb<<~j_VquuUA$}QqIKYELPp#;{u?q8Dz}WAG-(3; zjrm$i%7UbyZMM(Y{>!uJ#vNB?R~B{6Htp=>e*<{fQQ5W7V(1coCWlOON!MzZxhum| ztZBQpGR z;~#ur^&PockKdV{Q6R>o`Pl{0x!DEbpZ7y9Y;*ZvE!*gU`V1W3znva{f=?WO5I&>B z&hw6}tjECtaghm5z|C#%M;Yf_*pI^};h}Vl=^r9EN=tVDj86D;C$jIJ?K7VP+00000NkvXXu0mjf D5i!M* literal 4288 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 literal 0 HcmV?d00001 diff --git a/examples/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index e5b89c2336a5faa4c6dc380444d0ab972037d0d6..8ca12fe024be86e868d14e91120a6902f8e88ac6 100644 GIT binary patch literal 6464 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 B0*L?s literal 6594 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 literal 8998 zcmd6NRZv__@b4}xF2RB&*g}v1S)Aau1a}GU?i!q3+%-W1EFnO!K(G)bxC8=$V8Pwp z7vH3JZdaYtRWql1=1fihrn{%(G}RS|@M-Y@005DaB2*jAJO6udvC(hs z1s5DNW3*P(Rs#S6SpfieBmi)WZi4Rs0KPl`z@7yFAes#TPB%PNm&&tI&!xhO{`~ZuuP^KY6|l zCt9h(|ESc~-_hDw(d$_vib50YPYbmJ=l=rl2pp{xK-JV)N+YVle$rNbBPF;=Nr9C5heIvf4WA zBl?0DZ|FIY>hzvhJOS5s*~D=pF zK4BkiOw5gl^S2{iEy(_0KTW9Nj;J`^cI!L)Q_z+E%Ccj+o71_AvECh7Ug9gHz08otU(|E)-8BBn)^}M!Yxxqk@pn(n@AGD0Y`$HY z2#;ks$qNyyFXAsVZD z)Xt=VP>TMjvHln?&QK1+wBrL0q2xm+&v3Pm+-R1{>HFsAkyOrQ^h-2LaWQ`SdKYC* zQ?Z+N!AaBV;_+JpCLvi(U&JSll0AmzRW4P`86H`oHwk1s3(q5y78}Yu)WpNMDl%

ej?U+d%AJWaV8At4u5jxm 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 BIP(Ai literal 0 HcmV?d00001 diff --git a/examples/android/app/src/main/res/values/strings.xml b/examples/android/app/src/main/res/values/strings.xml index 1d411ba..1e8e73a 100644 --- a/examples/android/app/src/main/res/values/strings.xml +++ b/examples/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - RN RICH + examples diff --git a/examples/android/app/src/main/res/values/styles.xml b/examples/android/app/src/main/res/values/styles.xml index 24bc061..7ba83a2 100644 --- a/examples/android/app/src/main/res/values/styles.xml +++ b/examples/android/app/src/main/res/values/styles.xml @@ -3,6 +3,7 @@ diff --git a/examples/android/app/src/release/java/com/examples/ReactNativeFlipper.java b/examples/android/app/src/release/java/com/examples/ReactNativeFlipper.java new file mode 100644 index 0000000..4c0f2bb --- /dev/null +++ b/examples/android/app/src/release/java/com/examples/ReactNativeFlipper.java @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ +package com.examples; + +import android.content.Context; +import com.facebook.react.ReactInstanceManager; + +/** + * Class responsible of loading Flipper inside your React Native application. This is the release + * flavor of it so it's empty as we don't want to load Flipper. + */ +public class ReactNativeFlipper { + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + // Do nothing as we don't want to initialize Flipper on Release. + } +} diff --git a/examples/android/build.gradle b/examples/android/build.gradle index 8d1f5e3..67d887b 100644 --- a/examples/android/build.gradle +++ b/examples/android/build.gradle @@ -2,39 +2,20 @@ buildscript { ext { - buildToolsVersion = "30.0.2" + buildToolsVersion = "33.0.0" minSdkVersion = 21 - compileSdkVersion = 30 - targetSdkVersion = 29 - ndkVersion = "21.4.7075529" + compileSdkVersion = 33 + targetSdkVersion = 33 + + // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. + ndkVersion = "23.1.7779620" } repositories { google() mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:4.2.2") - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - mavenCentral() - mavenLocal() - maven { - // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm - url("$rootDir/../node_modules/react-native/android") - } - maven { - // Android JSC is installed from npm - url("$rootDir/../node_modules/jsc-android/dist") - } - - google() - jcenter() - maven { url 'https://www.jitpack.io' } + classpath("com.android.tools.build:gradle:7.3.1") + classpath("com.facebook.react:react-native-gradle-plugin") } } diff --git a/examples/android/gradle.properties b/examples/android/gradle.properties index cdb4c21..e4af465 100644 --- a/examples/android/gradle.properties +++ b/examples/android/gradle.properties @@ -9,8 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit @@ -25,4 +25,20 @@ android.useAndroidX=true android.enableJetifier=true # Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.99.0 +FLIPPER_VERSION=0.125.0 + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=false + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true diff --git a/examples/android/gradle/wrapper/gradle-wrapper.jar b/examples/android/gradle/wrapper/gradle-wrapper.jar index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..41d9927a4d4fb3f96a785543079b8df6723c946b 100644 GIT binary patch delta 26784 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

_` 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 diff --git a/examples/android/gradle/wrapper/gradle-wrapper.properties b/examples/android/gradle/wrapper/gradle-wrapper.properties index d0eca2a..8fad3f5 100644 --- a/examples/android/gradle/wrapper/gradle-wrapper.properties +++ b/examples/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Thu Dec 03 17:27:55 CST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip diff --git a/examples/android/gradlew b/examples/android/gradlew index 4f906e0..1b6c787 100755 --- a/examples/android/gradlew +++ b/examples/android/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,101 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/examples/android/settings.gradle b/examples/android/settings.gradle index 30d8943..53392bb 100644 --- a/examples/android/settings.gradle +++ b/examples/android/settings.gradle @@ -1,3 +1,4 @@ rootProject.name = 'examples' apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' +includeBuild('../node_modules/react-native-gradle-plugin') diff --git a/examples/babel.config.js b/examples/babel.config.js index 3469476..edc74d9 100644 --- a/examples/babel.config.js +++ b/examples/babel.config.js @@ -1,15 +1,15 @@ const path = require('path'); module.exports = { - presets: ['module:metro-react-native-babel-preset'], - plugins: [ - ['@babel/plugin-proposal-function-bind'], - [ - 'module-resolver', - { - alias: { - 'react-native-pell-rich-editor': path.resolve('..'), - }, - }, - ], + presets: ['module:metro-react-native-babel-preset'], + plugins: [ + ['@babel/plugin-proposal-function-bind'], + [ + 'module-resolver', + { + alias: { + 'react-native-pell-rich-editor': path.resolve('..'), + }, + }, ], + ], }; diff --git a/examples/ios/.xcode.env b/examples/ios/.xcode.env new file mode 100644 index 0000000..3d5782c --- /dev/null +++ b/examples/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/examples/ios/Podfile b/examples/ios/Podfile index c97cc01..cee903f 100644 --- a/examples/ios/Podfile +++ b/examples/ios/Podfile @@ -1,26 +1,60 @@ - require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' -platform :ios, '11.0' +platform :ios, min_ios_version_supported +prepare_react_native_project! + +# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. +# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded +# +# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` +# ```js +# module.exports = { +# dependencies: { +# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), +# ``` +flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled + +linkage = ENV['USE_FRAMEWORKS'] +if linkage != nil + Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green + use_frameworks! :linkage => linkage.to_sym +end target 'examples' do - config = use_native_modules! - - use_react_native!( - :path => config[:reactNativePath], - # to enable hermes on iOS, change `false` to `true` and then install pods - :hermes_enabled => true - ) - - # Enables Flipper. - # - # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable these next few lines. - use_flipper!() - - post_install do |installer| - react_native_post_install(installer) - __apply_Xcode_12_5_M1_post_install_workaround(installer) - end + config = use_native_modules! + + # Flags change depending on the env values. + flags = get_default_flags() + + use_react_native!( + :path => config[:reactNativePath], + # Hermes is now enabled by default. Disable by setting this flag to false. + # Upcoming versions of React Native may rely on get_default_flags(), but + # we make it explicit here to aid in the React Native upgrade process. + :hermes_enabled => flags[:hermes_enabled], + :fabric_enabled => flags[:fabric_enabled], + # Enables Flipper. + # + # Note that if you have use_frameworks! enabled, Flipper will not work and + # you should disable the next line. + :flipper_configuration => flipper_config, + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) + + target 'examplesTests' do + inherit! :complete + # Pods for testing + end + + post_install do |installer| + react_native_post_install( + installer, + # Set `mac_catalyst_enabled` to `true` in order to apply patches + # necessary for Mac Catalyst builds + :mac_catalyst_enabled => false + ) + __apply_Xcode_12_5_M1_post_install_workaround(installer) + end end diff --git a/examples/ios/Podfile.lock b/examples/ios/Podfile.lock index c9bee6c..fe1617f 100644 --- a/examples/ios/Podfile.lock +++ b/examples/ios/Podfile.lock @@ -2,361 +2,420 @@ PODS: - boost (1.76.0) - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.66.4) - - FBReactNativeSpec (0.66.4): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.66.4) - - RCTTypeSafety (= 0.66.4) - - React-Core (= 0.66.4) - - React-jsi (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - Flipper (0.99.0): + - FBLazyVector (0.71.5) + - FBReactNativeSpec (0.71.5): + - RCT-Folly (= 2021.07.22.00) + - RCTRequired (= 0.71.5) + - RCTTypeSafety (= 0.71.5) + - React-Core (= 0.71.5) + - React-jsi (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - Flipper (0.125.0): - Flipper-Folly (~> 2.6) - Flipper-RSocket (~> 1.4) - Flipper-Boost-iOSX (1.76.0.1.11) - - Flipper-DoubleConversion (3.1.7) + - Flipper-DoubleConversion (3.2.0.1) - Flipper-Fmt (7.1.7) - - Flipper-Folly (2.6.7): + - Flipper-Folly (2.6.10): - Flipper-Boost-iOSX - Flipper-DoubleConversion - Flipper-Fmt (= 7.1.7) - Flipper-Glog - libevent (~> 2.1.12) - - OpenSSL-Universal (= 1.1.180) - - Flipper-Glog (0.3.6) + - OpenSSL-Universal (= 1.1.1100) + - Flipper-Glog (0.5.0.5) - Flipper-PeerTalk (0.0.4) - Flipper-RSocket (1.4.3): - Flipper-Folly (~> 2.6) - - FlipperKit (0.99.0): - - FlipperKit/Core (= 0.99.0) - - FlipperKit/Core (0.99.0): - - Flipper (~> 0.99.0) + - FlipperKit (0.125.0): + - FlipperKit/Core (= 0.125.0) + - FlipperKit/Core (0.125.0): + - Flipper (~> 0.125.0) - FlipperKit/CppBridge - FlipperKit/FBCxxFollyDynamicConvert - FlipperKit/FBDefines - FlipperKit/FKPortForwarding - - FlipperKit/CppBridge (0.99.0): - - Flipper (~> 0.99.0) - - FlipperKit/FBCxxFollyDynamicConvert (0.99.0): + - SocketRocket (~> 0.6.0) + - FlipperKit/CppBridge (0.125.0): + - Flipper (~> 0.125.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.125.0): - Flipper-Folly (~> 2.6) - - FlipperKit/FBDefines (0.99.0) - - FlipperKit/FKPortForwarding (0.99.0): + - FlipperKit/FBDefines (0.125.0) + - FlipperKit/FKPortForwarding (0.125.0): - CocoaAsyncSocket (~> 7.6) - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.99.0) - - FlipperKit/FlipperKitLayoutHelpers (0.99.0): + - FlipperKit/FlipperKitHighlightOverlay (0.125.0) + - FlipperKit/FlipperKitLayoutHelpers (0.125.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutTextSearchable - - FlipperKit/FlipperKitLayoutIOSDescriptors (0.99.0): + - FlipperKit/FlipperKitLayoutIOSDescriptors (0.125.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutHelpers - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutPlugin (0.99.0): + - FlipperKit/FlipperKitLayoutPlugin (0.125.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutHelpers - FlipperKit/FlipperKitLayoutIOSDescriptors - FlipperKit/FlipperKitLayoutTextSearchable - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.99.0) - - FlipperKit/FlipperKitNetworkPlugin (0.99.0): + - FlipperKit/FlipperKitLayoutTextSearchable (0.125.0) + - FlipperKit/FlipperKitNetworkPlugin (0.125.0): - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.99.0): + - FlipperKit/FlipperKitReactPlugin (0.125.0): - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.99.0): + - FlipperKit/FlipperKitUserDefaultsPlugin (0.125.0): - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.99.0): + - FlipperKit/SKIOSNetworkPlugin (0.125.0): - FlipperKit/Core - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.9.0) + - hermes-engine (0.71.5): + - hermes-engine/Pre-built (= 0.71.5) + - hermes-engine/Pre-built (0.71.5) - libevent (2.1.12) - - OpenSSL-Universal (1.1.180) - - RCT-Folly (2021.06.28.00-v2): + - OpenSSL-Universal (1.1.1100) + - RCT-Folly (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Default (= 2021.06.28.00-v2) - - RCT-Folly/Default (2021.06.28.00-v2): + - RCT-Folly/Default (= 2021.07.22.00) + - RCT-Folly/Default (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Futures (2021.06.28.00-v2): + - RCT-Folly/Futures (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.66.4) - - RCTTypeSafety (0.66.4): - - FBLazyVector (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.66.4) - - React-Core (= 0.66.4) - - React (0.66.4): - - React-Core (= 0.66.4) - - React-Core/DevSupport (= 0.66.4) - - React-Core/RCTWebSocket (= 0.66.4) - - React-RCTActionSheet (= 0.66.4) - - React-RCTAnimation (= 0.66.4) - - React-RCTBlob (= 0.66.4) - - React-RCTImage (= 0.66.4) - - React-RCTLinking (= 0.66.4) - - React-RCTNetwork (= 0.66.4) - - React-RCTSettings (= 0.66.4) - - React-RCTText (= 0.66.4) - - React-RCTVibration (= 0.66.4) - - React-callinvoker (0.66.4) - - React-Core (0.66.4): + - RCTRequired (0.71.5) + - RCTTypeSafety (0.71.5): + - FBLazyVector (= 0.71.5) + - RCTRequired (= 0.71.5) + - React-Core (= 0.71.5) + - React (0.71.5): + - React-Core (= 0.71.5) + - React-Core/DevSupport (= 0.71.5) + - React-Core/RCTWebSocket (= 0.71.5) + - React-RCTActionSheet (= 0.71.5) + - React-RCTAnimation (= 0.71.5) + - React-RCTBlob (= 0.71.5) + - React-RCTImage (= 0.71.5) + - React-RCTLinking (= 0.71.5) + - React-RCTNetwork (= 0.71.5) + - React-RCTSettings (= 0.71.5) + - React-RCTText (= 0.71.5) + - React-RCTVibration (= 0.71.5) + - React-callinvoker (0.71.5) + - React-Codegen (0.71.5): + - FBReactNativeSpec + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-jsi + - React-jsiexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.66.4) - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.5) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/CoreModulesHeaders (0.66.4): + - React-Core/CoreModulesHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/Default (0.66.4): + - React-Core/Default (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/DevSupport (0.66.4): + - React-Core/DevSupport (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.66.4) - - React-Core/RCTWebSocket (= 0.66.4) - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-jsinspector (= 0.66.4) - - React-perflogger (= 0.66.4) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.5) + - React-Core/RCTWebSocket (= 0.71.5) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-jsinspector (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTActionSheetHeaders (0.66.4): + - React-Core/RCTActionSheetHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTAnimationHeaders (0.66.4): + - React-Core/RCTAnimationHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTBlobHeaders (0.66.4): + - React-Core/RCTBlobHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTImageHeaders (0.66.4): + - React-Core/RCTImageHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTLinkingHeaders (0.66.4): + - React-Core/RCTLinkingHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTNetworkHeaders (0.66.4): + - React-Core/RCTNetworkHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTSettingsHeaders (0.66.4): + - React-Core/RCTSettingsHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTTextHeaders (0.66.4): + - React-Core/RCTTextHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTVibrationHeaders (0.66.4): + - React-Core/RCTVibrationHeaders (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-Core/RCTWebSocket (0.66.4): + - React-Core/RCTWebSocket (0.71.5): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.66.4) - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-perflogger (= 0.66.4) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.5) + - React-cxxreact (= 0.71.5) + - React-hermes + - React-jsi (= 0.71.5) + - React-jsiexecutor (= 0.71.5) + - React-perflogger (= 0.71.5) - Yoga - - React-CoreModules (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.66.4) - - React-Core/CoreModulesHeaders (= 0.66.4) - - React-jsi (= 0.66.4) - - React-RCTImage (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-cxxreact (0.66.4): + - React-CoreModules (0.71.5): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.5) + - React-Codegen (= 0.71.5) + - React-Core/CoreModulesHeaders (= 0.71.5) + - React-jsi (= 0.71.5) + - React-RCTBlob + - React-RCTImage (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-cxxreact (0.71.5): - boost (= 1.76.0) - - DoubleConversion - - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsinspector (= 0.66.4) - - React-logger (= 0.66.4) - - React-perflogger (= 0.66.4) - - React-runtimeexecutor (= 0.66.4) - - React-hermes (0.66.4): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2021.06.28.00-v2) - - RCT-Folly/Futures (= 2021.06.28.00-v2) - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-jsiexecutor (= 0.66.4) - - React-jsinspector (= 0.66.4) - - React-perflogger (= 0.66.4) - - React-jsi (0.66.4): - - boost (= 1.76.0) + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.5) + - React-jsi (= 0.71.5) + - React-jsinspector (= 0.71.5) + - React-logger (= 0.71.5) + - React-perflogger (= 0.71.5) + - React-runtimeexecutor (= 0.71.5) + - React-hermes (0.71.5): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-jsi/Default (= 0.66.4) - - React-jsi/Default (0.66.4): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Futures (= 2021.07.22.00) + - React-cxxreact (= 0.71.5) + - React-jsi + - React-jsiexecutor (= 0.71.5) + - React-jsinspector (= 0.71.5) + - React-perflogger (= 0.71.5) + - React-jsi (0.71.5): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-jsiexecutor (0.66.4): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-jsiexecutor (0.71.5): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-perflogger (= 0.66.4) - - React-jsinspector (0.66.4) - - React-logger (0.66.4): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.71.5) + - React-jsi (= 0.71.5) + - React-perflogger (= 0.71.5) + - React-jsinspector (0.71.5) + - React-logger (0.71.5): - glog - - react-native-webview (11.15.0): + - react-native-webview (11.26.1): - React-Core - - React-perflogger (0.66.4) - - React-RCTActionSheet (0.66.4): - - React-Core/RCTActionSheetHeaders (= 0.66.4) - - React-RCTAnimation (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.66.4) - - React-Core/RCTAnimationHeaders (= 0.66.4) - - React-jsi (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-RCTBlob (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/RCTBlobHeaders (= 0.66.4) - - React-Core/RCTWebSocket (= 0.66.4) - - React-jsi (= 0.66.4) - - React-RCTNetwork (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-RCTImage (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.66.4) - - React-Core/RCTImageHeaders (= 0.66.4) - - React-jsi (= 0.66.4) - - React-RCTNetwork (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-RCTLinking (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - React-Core/RCTLinkingHeaders (= 0.66.4) - - React-jsi (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-RCTNetwork (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.66.4) - - React-Core/RCTNetworkHeaders (= 0.66.4) - - React-jsi (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-RCTSettings (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.66.4) - - React-Core/RCTSettingsHeaders (= 0.66.4) - - React-jsi (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-RCTText (0.66.4): - - React-Core/RCTTextHeaders (= 0.66.4) - - React-RCTVibration (0.66.4): - - FBReactNativeSpec (= 0.66.4) - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/RCTVibrationHeaders (= 0.66.4) - - React-jsi (= 0.66.4) - - ReactCommon/turbomodule/core (= 0.66.4) - - React-runtimeexecutor (0.66.4): - - React-jsi (= 0.66.4) - - ReactCommon/turbomodule/core (0.66.4): + - React-perflogger (0.71.5) + - React-RCTActionSheet (0.71.5): + - React-Core/RCTActionSheetHeaders (= 0.71.5) + - React-RCTAnimation (0.71.5): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.5) + - React-Codegen (= 0.71.5) + - React-Core/RCTAnimationHeaders (= 0.71.5) + - React-jsi (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-RCTAppDelegate (0.71.5): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - ReactCommon/turbomodule/core + - React-RCTBlob (0.71.5): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.71.5) + - React-Core/RCTBlobHeaders (= 0.71.5) + - React-Core/RCTWebSocket (= 0.71.5) + - React-jsi (= 0.71.5) + - React-RCTNetwork (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-RCTImage (0.71.5): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.5) + - React-Codegen (= 0.71.5) + - React-Core/RCTImageHeaders (= 0.71.5) + - React-jsi (= 0.71.5) + - React-RCTNetwork (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-RCTLinking (0.71.5): + - React-Codegen (= 0.71.5) + - React-Core/RCTLinkingHeaders (= 0.71.5) + - React-jsi (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-RCTNetwork (0.71.5): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.5) + - React-Codegen (= 0.71.5) + - React-Core/RCTNetworkHeaders (= 0.71.5) + - React-jsi (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-RCTSettings (0.71.5): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.5) + - React-Codegen (= 0.71.5) + - React-Core/RCTSettingsHeaders (= 0.71.5) + - React-jsi (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-RCTText (0.71.5): + - React-Core/RCTTextHeaders (= 0.71.5) + - React-RCTVibration (0.71.5): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.71.5) + - React-Core/RCTVibrationHeaders (= 0.71.5) + - React-jsi (= 0.71.5) + - ReactCommon/turbomodule/core (= 0.71.5) + - React-runtimeexecutor (0.71.5): + - React-jsi (= 0.71.5) + - ReactCommon/turbomodule/bridging (0.71.5): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.66.4) - - React-Core (= 0.66.4) - - React-cxxreact (= 0.66.4) - - React-jsi (= 0.66.4) - - React-logger (= 0.66.4) - - React-perflogger (= 0.66.4) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.5) + - React-Core (= 0.71.5) + - React-cxxreact (= 0.71.5) + - React-jsi (= 0.71.5) + - React-logger (= 0.71.5) + - React-perflogger (= 0.71.5) + - ReactCommon/turbomodule/core (0.71.5): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.5) + - React-Core (= 0.71.5) + - React-cxxreact (= 0.71.5) + - React-jsi (= 0.71.5) + - React-logger (= 0.71.5) + - React-perflogger (= 0.71.5) + - SocketRocket (0.6.0) - Yoga (1.14.0) - YogaKit (1.18.1): - Yoga (~> 1.14) @@ -366,35 +425,37 @@ DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - Flipper (= 0.99.0) + - Flipper (= 0.125.0) - Flipper-Boost-iOSX (= 1.76.0.1.11) - - Flipper-DoubleConversion (= 3.1.7) + - Flipper-DoubleConversion (= 3.2.0.1) - Flipper-Fmt (= 7.1.7) - - Flipper-Folly (= 2.6.7) - - Flipper-Glog (= 0.3.6) + - Flipper-Folly (= 2.6.10) + - Flipper-Glog (= 0.5.0.5) - Flipper-PeerTalk (= 0.0.4) - Flipper-RSocket (= 1.4.3) - - FlipperKit (= 0.99.0) - - FlipperKit/Core (= 0.99.0) - - FlipperKit/CppBridge (= 0.99.0) - - FlipperKit/FBCxxFollyDynamicConvert (= 0.99.0) - - FlipperKit/FBDefines (= 0.99.0) - - FlipperKit/FKPortForwarding (= 0.99.0) - - FlipperKit/FlipperKitHighlightOverlay (= 0.99.0) - - FlipperKit/FlipperKitLayoutPlugin (= 0.99.0) - - FlipperKit/FlipperKitLayoutTextSearchable (= 0.99.0) - - FlipperKit/FlipperKitNetworkPlugin (= 0.99.0) - - FlipperKit/FlipperKitReactPlugin (= 0.99.0) - - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.99.0) - - FlipperKit/SKIOSNetworkPlugin (= 0.99.0) + - FlipperKit (= 0.125.0) + - FlipperKit/Core (= 0.125.0) + - FlipperKit/CppBridge (= 0.125.0) + - FlipperKit/FBCxxFollyDynamicConvert (= 0.125.0) + - FlipperKit/FBDefines (= 0.125.0) + - FlipperKit/FKPortForwarding (= 0.125.0) + - FlipperKit/FlipperKitHighlightOverlay (= 0.125.0) + - FlipperKit/FlipperKitLayoutPlugin (= 0.125.0) + - FlipperKit/FlipperKitLayoutTextSearchable (= 0.125.0) + - FlipperKit/FlipperKitNetworkPlugin (= 0.125.0) + - FlipperKit/FlipperKitReactPlugin (= 0.125.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) + - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - hermes-engine (~> 0.9.0) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - libevent (~> 2.1.12) + - OpenSSL-Universal (= 1.1.1100) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - React-Core/DevSupport (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) @@ -409,6 +470,7 @@ DEPENDENCIES: - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) @@ -433,9 +495,9 @@ SPEC REPOS: - Flipper-RSocket - FlipperKit - fmt - - hermes-engine - libevent - OpenSSL-Universal + - SocketRocket - YogaKit EXTERNAL SOURCES: @@ -449,6 +511,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: @@ -459,6 +523,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Codegen: + :path: build/generated/ios React-Core: :path: "../node_modules/react-native/" React-CoreModules: @@ -483,6 +549,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" React-RCTImage: @@ -505,54 +573,57 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: a7c83b31436843459a1961bfd74b96033dc77234 + boost: 57d2868c099736d80fcd648bf211b4431e51a558 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 - FBLazyVector: e5569e42a1c79ca00521846c223173a57aca1fe1 - FBReactNativeSpec: fe08c1cd7e2e205718d77ad14b34957cce949b58 - Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 + DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 + FBLazyVector: f1897022b53abf1469d6ad692ee2c69f57d967f3 + FBReactNativeSpec: 627fd07f1b9d498c9fa572e76d7f1a6b1ee9a444 + Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c - Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c + Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b - Flipper-Folly: 83af37379faa69497529e414bd43fbfc7cae259a - Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 + Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 + Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 - FlipperKit: d8d346844eca5d9120c17d441a2f38596e8ed2b9 + FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 5337263514dd6f09803962437687240c5dc39aa4 - hermes-engine: bf7577d12ac6ccf53ab8b5af3c6ccf0dd8458c5c + glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b + hermes-engine: 0784cadad14b011580615c496f77e0ae112eed75 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b - RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9 - RCTRequired: 4bf86c70714490bca4bf2696148638284622644b - RCTTypeSafety: c475a7059eb77935fa53d2c17db299893f057d5d - React: f64af14e3f2c50f6f2c91a5fd250e4ff1b3c3459 - React-callinvoker: b74e4ae80287780dcdf0cab262bcb581eeef56e7 - React-Core: 3eb7432bad96ff1d25aebc1defbae013fee2fd0e - React-CoreModules: ad9e1fd5650e16666c57a08328df86fd7e480cb9 - React-cxxreact: 02633ff398cf7e91a2c1e12590d323c4a4b8668a - React-hermes: 7b4c6617b4d4c880d0f44e629651810bf3417440 - React-jsi: 805c41a927d6499fb811772acb971467d9204633 - React-jsiexecutor: 94ce921e1d8ce7023366873ec371f3441383b396 - React-jsinspector: d0374f7509d407d2264168b6d0fad0b54e300b85 - React-logger: 933f80c97c633ee8965d609876848148e3fef438 - react-native-webview: e89bf2dba26a04cda967814df3ed1be99f291233 - React-perflogger: 93075d8931c32cd1fce8a98c15d2d5ccc4d891bd - React-RCTActionSheet: 7d3041e6761b4f3044a37079ddcb156575fb6d89 - React-RCTAnimation: 743e88b55ac62511ae5c2e22803d4f503f2a3a13 - React-RCTBlob: bee3a2f98fa7fc25c957c8643494244f74bea0a0 - React-RCTImage: 19fc9e29b06cc38611c553494f8d3040bf78c24e - React-RCTLinking: dc799503979c8c711126d66328e7ce8f25c2848f - React-RCTNetwork: 417e4e34cf3c19eaa5fd4e9eb20180d662a799ce - React-RCTSettings: 4df89417265af26501a7e0e9192a34d3d9848dff - React-RCTText: f8a21c3499ab322326290fa9b701ae29aa093aa5 - React-RCTVibration: e3ffca672dd3772536cb844274094b0e2c31b187 - React-runtimeexecutor: dec32ee6f2e2a26e13e58152271535fadff5455a - ReactCommon: 57b69f6383eafcbd7da625bfa6003810332313c4 - Yoga: e7dc4e71caba6472ff48ad7d234389b91dadc280 + OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c + RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 + RCTRequired: bd6045fbd511da5efe6db89eecb21e4e36bd7cbf + RCTTypeSafety: c06d9f906faa69dd1c88223204c3a24767725fd8 + React: b9ea33557ef1372af247f95d110fbdea114ed3b2 + React-callinvoker: 112f941fcb98722c72736b8e229edcb3c1d84b45 + React-Codegen: df704c74e2563b0f73fa44f533b6bfef6534ae81 + React-Core: c40d8ec76944536e6d4f8306cbda17a7c254585c + React-CoreModules: 7dec7d883bf29bd0d753a93f37326e3031f8f546 + React-cxxreact: 63154d7b113bd6e74ae221c1091e10591d7ae651 + React-hermes: 187e42638c92a54ad7d270079dda4d59cf8c7229 + React-jsi: 6a633d20f5bb094d8f43c3f23c03f724acab005e + React-jsiexecutor: 1579bf3207afadc72ac3638a66a102d1bf5263e3 + React-jsinspector: 14a342151ab810862998dfc99e2720746734e9b3 + React-logger: 94ec392ae471683635e4bf874d4e82f675399d2d + react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1 + React-perflogger: 883a55a9a899535eaf06d0029108ef9ef22cce92 + React-RCTActionSheet: 1a3b8416688a3d291367be645022886f71d6842a + React-RCTAnimation: e5560cb72d91ba35151d51e2eb0d467b42763f43 + React-RCTAppDelegate: 07a38817f7b30447eb4416384f430812e7c30551 + React-RCTBlob: 1ef41cdcc5bf8761b0a11a5c3be588f4787f8845 + React-RCTImage: 944297be6fcc0bac7cfe1afb7d2f4f346c2592cd + React-RCTLinking: 0dd37faa7222e8f840edb83cbdd2a68f130ebdf1 + React-RCTNetwork: 481afbec12d5a60aac319593797c590464234fcd + React-RCTSettings: f308db1e99737d776cce43732b5bd38c973cfa2c + React-RCTText: 402f609ee727f2dbbf5af8ce1692c64d8c1c17cc + React-RCTVibration: f0f5ad6417803de42e022d99247a6b1ddaf46c13 + React-runtimeexecutor: 511f4301d85daf85abface9afb8d2df2d49f87d3 + ReactCommon: 4f43b72066f27bfe1f63838c61763f59e7112536 + SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 + Yoga: cd7d7f509dbfac14ee7f31a6c750acb957cd5022 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 28774e2a2f2eb83a6f616a83901b879a7f05f1f8 +PODFILE CHECKSUM: 5fd7a3ee3ffeb6e3c801a558263ad2ad7906d5f0 -COCOAPODS: 1.11.2 +COCOAPODS: 1.12.0 diff --git a/examples/ios/examples.xcodeproj/project.pbxproj b/examples/ios/examples.xcodeproj/project.pbxproj index b5c836f..0c05a6d 100644 --- a/examples/ios/examples.xcodeproj/project.pbxproj +++ b/examples/ios/examples.xcodeproj/project.pbxproj @@ -3,57 +3,94 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; + 00E356F31AD99517003FC87E /* examplesTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* examplesTests.m */; }; + 0C80B921A6F3F58F76C31292 /* libPods-examples.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-examples.a */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - C3CB8B00C23D2D747FE2F04E /* libPods-examples.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 172885EB1398BD02C8059294 /* libPods-examples.a */; }; + 7699B88040F8A987B510C191 /* libPods-examples-examplesTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-examples-examplesTests.a */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = examples; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00E356EE1AD99517003FC87E /* examplesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = examplesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* examplesTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = examplesTests.m; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = examples/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = examples/AppDelegate.m; sourceTree = ""; }; - 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = examples/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = examples/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = examples/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = examples/main.m; sourceTree = ""; }; - 172885EB1398BD02C8059294 /* libPods-examples.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-examples.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2AC3F2F7D795F0D84F8626DD /* libPods-examples-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-examples-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 86A7A91E81EB6590308ABEFB /* libPods-examples-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-examples-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - A9229BDEF92F356FBBD8F941 /* Pods-examples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-examples.release.xcconfig"; path = "Target Support Files/Pods-examples/Pods-examples.release.xcconfig"; sourceTree = ""; }; - B8EE8357AF21D2870F12AEA9 /* libPods-examples-examplesTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-examples-examplesTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - D0F76EBC7E151C6059BA564B /* Pods-examples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-examples.debug.xcconfig"; path = "Target Support Files/Pods-examples/Pods-examples.debug.xcconfig"; sourceTree = ""; }; + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-examples-examplesTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-examples-examplesTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B4392A12AC88292D35C810B /* Pods-examples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-examples.debug.xcconfig"; path = "Target Support Files/Pods-examples/Pods-examples.debug.xcconfig"; sourceTree = ""; }; + 5709B34CF0A7D63546082F79 /* Pods-examples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-examples.release.xcconfig"; path = "Target Support Files/Pods-examples/Pods-examples.release.xcconfig"; sourceTree = ""; }; + 5B7EB9410499542E8C5724F5 /* Pods-examples-examplesTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-examples-examplesTests.debug.xcconfig"; path = "Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests.debug.xcconfig"; sourceTree = ""; }; + 5DCACB8F33CDC322A6C60F78 /* libPods-examples.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-examples.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = examples/LaunchScreen.storyboard; sourceTree = ""; }; + 89C6BE57DB24E9ADA2F236DE /* Pods-examples-examplesTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-examples-examplesTests.release.xcconfig"; path = "Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests.release.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; - ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7699B88040F8A987B510C191 /* libPods-examples-examplesTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3CB8B00C23D2D747FE2F04E /* libPods-examples.a in Frameworks */, + 0C80B921A6F3F58F76C31292 /* libPods-examples.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 00E356EF1AD99517003FC87E /* examplesTests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* examplesTests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = examplesTests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; 13B07FAE1A68108700A75B9A /* examples */ = { isa = PBXGroup; children = ( - 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 13B07FB71A68108700A75B9A /* main.m */, ); name = examples; @@ -63,11 +100,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - 172885EB1398BD02C8059294 /* libPods-examples.a */, - B8EE8357AF21D2870F12AEA9 /* libPods-examples-examplesTests.a */, - 2AC3F2F7D795F0D84F8626DD /* libPods-examples-tvOS.a */, - 86A7A91E81EB6590308ABEFB /* libPods-examples-tvOSTests.a */, + 5DCACB8F33CDC322A6C60F78 /* libPods-examples.a */, + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-examples-examplesTests.a */, ); name = Frameworks; sourceTree = ""; @@ -84,9 +118,10 @@ children = ( 13B07FAE1A68108700A75B9A /* examples */, 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* examplesTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, - 9372249118F5A5A78096D433 /* Pods */, + BBD78D7AC51CEA395F1C20DB /* Pods */, ); indentWidth = 2; sourceTree = ""; @@ -97,15 +132,18 @@ isa = PBXGroup; children = ( 13B07F961A680F5B00A75B9A /* examples.app */, + 00E356EE1AD99517003FC87E /* examplesTests.xctest */, ); name = Products; sourceTree = ""; }; - 9372249118F5A5A78096D433 /* Pods */ = { + BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - D0F76EBC7E151C6059BA564B /* Pods-examples.debug.xcconfig */, - A9229BDEF92F356FBBD8F941 /* Pods-examples.release.xcconfig */, + 3B4392A12AC88292D35C810B /* Pods-examples.debug.xcconfig */, + 5709B34CF0A7D63546082F79 /* Pods-examples.release.xcconfig */, + 5B7EB9410499542E8C5724F5 /* Pods-examples-examplesTests.debug.xcconfig */, + 89C6BE57DB24E9ADA2F236DE /* Pods-examples-examplesTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -113,18 +151,39 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* examplesTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "examplesTests" */; + buildPhases = ( + A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, + F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = examplesTests; + productName = examplesTests; + productReference = 00E356EE1AD99517003FC87E /* examplesTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 13B07F861A680F5B00A75B9A /* examples */ = { isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "examples" */; buildPhases = ( - BE711A735FB0DB1E4E6DA045 /* [CP] Check Pods Manifest.lock */, + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - C788A11DBD90E155E776382D /* [CP] Copy Pods Resources */, - B07CB332BBB25C86737B2B30 /* [CP] Embed Pods Frameworks */, + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -141,16 +200,19 @@ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1130; + LastUpgradeCheck = 1210; TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = 7QTS92K88A; LastSwiftMigration = 1120; }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "examples" */; - compatibilityVersion = "Xcode 3.2"; + compatibilityVersion = "Xcode 12.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -163,17 +225,25 @@ projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* examples */, + 00E356ED1AD99517003FC87E /* examplesTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 13B07F8E1A680F5B00A75B9A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -186,32 +256,34 @@ files = ( ); inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", ); name = "Bundle React Native code and images"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - B07CB332BBB25C86737B2B30 /* [CP] Embed Pods Frameworks */ = { + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-noohle/Pods-noohle-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples/Pods-examples-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-noohle/Pods-noohle-frameworks-${CONFIGURATION}-output-files.xcfilelist", + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples/Pods-examples-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-examples/Pods-examples-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - BE711A735FB0DB1E4E6DA045 /* [CP] Check Pods Manifest.lock */ = { + A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -226,31 +298,86 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-examples-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-examples-examplesTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - C788A11DBD90E155E776382D /* [CP] Copy Pods Resources */ = { + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-examples/Pods-examples-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Copy Pods Resources"; outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + "$(DERIVED_FILE_DIR)/Pods-examples-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples/Pods-examples-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples/Pods-examples-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-examples/Pods-examples-resources.sh\"\n"; showEnvVarsInLog = 0; }; + F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-examples-examplesTests/Pods-examples-examplesTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -273,78 +400,133 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* examplesTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 13B07F871A680F5B00A75B9A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXVariantGroup section */ - 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 13B07FB21A68108700A75B9A /* Base */, - ); - name = LaunchScreen.xib; - path = examples; - sourceTree = ""; +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* examples */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; }; -/* End PBXVariantGroup section */ +/* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-examples-examplesTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = examplesTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/examples.app/examples"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-examples-examplesTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COPY_PHASE_STRIP = NO; + INFOPLIST_FILE = examplesTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/examples.app/examples"; + }; + name = Release; + }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0F76EBC7E151C6059BA564B /* Pods-examples.debug.xcconfig */; + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-examples.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 7QTS92K88A; ENABLE_BITCODE = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( + INFOPLIST_FILE = examples/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", - "FB_SONARKIT_ENABLED=1", + "@executable_path/Frameworks", ); - INFOPLIST_FILE = examples/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.wxik.rn.rich.test; + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = examples; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A9229BDEF92F356FBBD8F941 /* Pods-examples.release.xcconfig */; + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-examples.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 7QTS92K88A; INFOPLIST_FILE = examples/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.wxik.rn.rich.test; + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = examples; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -354,7 +536,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -372,6 +554,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -381,7 +564,7 @@ COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 i386"; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -397,15 +580,25 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", ); MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; }; name = Debug; @@ -415,7 +608,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -433,6 +626,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -442,7 +636,7 @@ COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 i386"; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -451,14 +645,24 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", ); MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; @@ -467,6 +671,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "examplesTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "examples" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/examples/ios/examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/ios/examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/examples/ios/examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/examples/ios/examples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/ios/examples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/examples/ios/examples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/examples/ios/examples.xcodeproj/xcshareddata/xcschemes/examples.xcscheme b/examples/ios/examples.xcodeproj/xcshareddata/xcschemes/examples.xcscheme index 5fd61d4..e3a09ed 100644 --- a/examples/ios/examples.xcodeproj/xcshareddata/xcschemes/examples.xcscheme +++ b/examples/ios/examples.xcodeproj/xcshareddata/xcschemes/examples.xcscheme @@ -1,6 +1,6 @@ +#import #import -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; +@interface AppDelegate : RCTAppDelegate @end diff --git a/examples/ios/examples/AppDelegate.m b/examples/ios/examples/AppDelegate.m deleted file mode 100644 index d45db39..0000000 --- a/examples/ios/examples/AppDelegate.m +++ /dev/null @@ -1,43 +0,0 @@ -#import "AppDelegate.h" - -#import -#import -#import - - - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - - - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; - RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge - moduleName:@"examples" - initialProperties:nil]; - - if (@available(iOS 13.0, *)) { - rootView.backgroundColor = [UIColor systemBackgroundColor]; - } else { - rootView.backgroundColor = [UIColor whiteColor]; - } - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -@end diff --git a/examples/ios/examples/AppDelegate.mm b/examples/ios/examples/AppDelegate.mm new file mode 100644 index 0000000..5106e5c --- /dev/null +++ b/examples/ios/examples/AppDelegate.mm @@ -0,0 +1,36 @@ +#import "AppDelegate.h" + +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.moduleName = @"examples"; + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; + + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. +/// +/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html +/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). +/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`. +- (BOOL)concurrentRootEnabled +{ + return true; +} + +@end diff --git a/examples/ios/examples/Base.lproj/LaunchScreen.xib b/examples/ios/examples/Base.lproj/LaunchScreen.xib deleted file mode 100644 index cddbc50..0000000 --- a/examples/ios/examples/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/Contents.json index 728e6c3..8121323 100644 --- a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,122 +1,53 @@ { - "images": [ - { - "size": "20x20", - "idiom": "iphone", - "filename": "icon-20@2x.png", - "scale": "2x" - }, - { - "size": "20x20", - "idiom": "iphone", - "filename": "icon-20@3x.png", - "scale": "3x" - }, - { - "size": "29x29", - "idiom": "iphone", - "filename": "icon-29.png", - "scale": "1x" - }, - { - "size": "29x29", - "idiom": "iphone", - "filename": "icon-29@2x.png", - "scale": "2x" - }, - { - "size": "29x29", - "idiom": "iphone", - "filename": "icon-29@3x.png", - "scale": "3x" - }, - { - "size": "40x40", - "idiom": "iphone", - "filename": "icon-40@2x.png", - "scale": "2x" - }, - { - "size": "40x40", - "idiom": "iphone", - "filename": "icon-40@3x.png", - "scale": "3x" - }, - { - "size": "60x60", - "idiom": "iphone", - "filename": "icon-60@2x.png", - "scale": "2x" - }, - { - "size": "60x60", - "idiom": "iphone", - "filename": "icon-60@3x.png", - "scale": "3x" - }, - { - "size": "20x20", - "idiom": "ipad", - "filename": "icon-20-ipad.png", - "scale": "1x" - }, - { - "size": "20x20", - "idiom": "ipad", - "filename": "icon-20@2x-ipad.png", - "scale": "2x" - }, - { - "size": "29x29", - "idiom": "ipad", - "filename": "icon-29-ipad.png", - "scale": "1x" - }, - { - "size": "29x29", - "idiom": "ipad", - "filename": "icon-29@2x-ipad.png", - "scale": "2x" - }, - { - "size": "40x40", - "idiom": "ipad", - "filename": "icon-40.png", - "scale": "1x" - }, - { - "size": "40x40", - "idiom": "ipad", - "filename": "icon-40@2x.png", - "scale": "2x" - }, - { - "size": "76x76", - "idiom": "ipad", - "filename": "icon-76.png", - "scale": "1x" - }, - { - "size": "76x76", - "idiom": "ipad", - "filename": "icon-76@2x.png", - "scale": "2x" - }, - { - "size": "83.5x83.5", - "idiom": "ipad", - "filename": "icon-83.5@2x.png", - "scale": "2x" - }, - { - "size": "1024x1024", - "idiom": "ios-marketing", - "filename": "icon-1024.png", - "scale": "1x" - } - ], - "info": { - "version": 1, - "author": "icon.wuruihong.com" + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" } -} \ No newline at end of file + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-1024.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-1024.png deleted file mode 100644 index 77b53a594733e8e20a3bb50ad372be21a1a2780d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103930 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 JYEi?W{{`?@iU0rr diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20-ipad.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20-ipad.png deleted file mode 100644 index 5eabef7812589975ee4251fc2bd686bbb9ae6162..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaEa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq}6wz$e7@|Ns9#Ze08G z`O~Ye)?ZJb9A;qndh+-M28Mesw#OJ4e!qGB=i|pC3=B{6Gq1~v0vUhazdy~u@T|1( z=ly%Xo;`h+Z&v}^k{ zNx>Uxa`(NQ?^v7M)KK_xaNkWWrF(AnckL}6#Yf(;Hok4F19ZS`Q$3)@zu&$+PKp64 zdz>75OHU1G&Rsh*pvF5krnk-XZy9LbHqixfZB0Q^4wgXnZ6mE)+A6nnRBq|1104o5 z{FbiTZF7B~g4Z6~iU}!)1d`Gc5>uVU zQ=TV0c;Y1fBrV~=!3*b3A3tzjK|zD%DOYnt$BG#{T9!=N(xWruv;sTRC$26p9-dQL ztFjXGnyol8GO{v_U%YtrQo3QMfTOc=vM^gP8=G;liX%6hw>De0G+VT_ieojqyL!5K zxOq9hile`NzI?p>|Aqq!DhD4-xUk_v$B7j$BvcOG*zu#~$dV^hu9&DC{L*t~&6_!Q s_WWT|Ie2K%qe+)Ged;=;WgyPb{ZD6x{i&`_pg$NqUHx3vIVCg!03KFFumAu6 diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@2x-ipad.png deleted file mode 100644 index 42ebbccfde1bbba62b0903e46533704f13502137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1229 zcmV;;1Ty=HP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf1r7r(Fl~$9Z2$lSGf6~2R9M69R&9t>RTzHW zbMBpwJL9-Jv%5Oxeu(-@4Qy>uY-^#ENKJH6ib$wL%0F6IEFprDMS_u9xnW84BN7+I zBq~43%!+DDO{K68U0s#-W7L_QJ9lU1p0^)!cQm5rWFz~>_s>1&-sis0dCvQB4ly%^ z!^E(#-Xgw5e2aLviO)T}FtL5xFc8aVRreFiPK8A3laFqknM+x&zwcyNc0c)eF413j zWB+*kgv1FGXXe~j^7ntT(u$2}EZ8(X(Z2nsSj_JH7JxBwButP*c-H+lcdO%@-e7

)hI%JB_O90xzU@HS_QG z-f~4KTo`mMp6?txN*kUefH|855s1k2ftj;exOqq;F!heiH($$Wbl|}LK;txX)M$1bc3rS4 z;q=$(Q~w>oZr*B|G3K>50bE+OB7NwfZ~Vl%9lHSxeECIqW;1}EmtRQj*$p9}6!b1} z1_c5oAh{g*{e_{**kt-3ytEF_Y*u#q?A+NZl@gX!jJ=L&K$)*2&VZ;`Px(YbSfQG= z>&frqd|p$lHZf4#6}D{+BEtY6tdLnVO8ESj+g~3ze8_Vb2xvxHE5;%m9vTq<^7#rg z8LI*jS=JwI&kS~*1(4j;0ljvuK`dqV%w+0Vc)fFQ(5!EWENFF3olJjvfJ_sBS58BiauEOBnAvrq z6o|+$ib?*TO!qwg>uSCH`ad>o_iBxW7h_!PN(3nO`X+->Xe#1bj5WesnwXg*t&4?a zWjenbyX~FRQzkZi{8_SNhi}3}Wv6r9-Ib3%*0*83f6`=?&ztevdS6}00000NkvXXu0mjfdtX5s diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@2x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@2x.png deleted file mode 100644 index 42ebbccfde1bbba62b0903e46533704f13502137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1229 zcmV;;1Ty=HP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf1r7r(Fl~$9Z2$lSGf6~2R9M69R&9t>RTzHW zbMBpwJL9-Jv%5Oxeu(-@4Qy>uY-^#ENKJH6ib$wL%0F6IEFprDMS_u9xnW84BN7+I zBq~43%!+DDO{K68U0s#-W7L_QJ9lU1p0^)!cQm5rWFz~>_s>1&-sis0dCvQB4ly%^ z!^E(#-Xgw5e2aLviO)T}FtL5xFc8aVRreFiPK8A3laFqknM+x&zwcyNc0c)eF413j zWB+*kgv1FGXXe~j^7ntT(u$2}EZ8(X(Z2nsSj_JH7JxBwButP*c-H+lcdO%@-e7

)hI%JB_O90xzU@HS_QG z-f~4KTo`mMp6?txN*kUefH|855s1k2ftj;exOqq;F!heiH($$Wbl|}LK;txX)M$1bc3rS4 z;q=$(Q~w>oZr*B|G3K>50bE+OB7NwfZ~Vl%9lHSxeECIqW;1}EmtRQj*$p9}6!b1} z1_c5oAh{g*{e_{**kt-3ytEF_Y*u#q?A+NZl@gX!jJ=L&K$)*2&VZ;`Px(YbSfQG= z>&frqd|p$lHZf4#6}D{+BEtY6tdLnVO8ESj+g~3ze8_Vb2xvxHE5;%m9vTq<^7#rg z8LI*jS=JwI&kS~*1(4j;0ljvuK`dqV%w+0Vc)fFQ(5!EWENFF3olJjvfJ_sBS58BiauEOBnAvrq z6o|+$ib?*TO!qwg>uSCH`ad>o_iBxW7h_!PN(3nO`X+->Xe#1bj5WesnwXg*t&4?a zWjenbyX~FRQzkZi{8_SNhi}3}Wv6r9-Ib3%*0*83f6`=?&ztevdS6}00000NkvXXu0mjfdtX5s diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@3x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-20@3x.png deleted file mode 100644 index 847099ef7da3d54d0e12eca2010df6fbd0e986f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712 zcmV;h22c5kP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 D5%&fp diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29@2x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29@2x.png deleted file mode 100644 index b04ef0c1c6a8037f13906566301eff7b8c31e33e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1657 zcmV-<28Q{GP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf1r7r(Fl~$9Z2$lT-$_J4RA}DqnSD@HRTRL_ zeP6rmF8cv1C@5f#ie_4h5mEU$W*?@hqnHlbAf;%-n2zbBP01MP=;X(!qtno6H0hM2 z&RBw$V@_!(A|VwpmJI9y%K{7RvLA2XyZ!O@~-W;XA=*8w|KeGy6qXRi$56=?F;I*%EW^D$IMjP82yVl_r&( zSB_03n3piRhzYJUK!#+=fRs@Iz4Pmn=GEDXCnfb(A(`y$lmW;OItg0+oOsmMTm(RKe`L*S-;j ze%8%fAZ^RM*<>j!aNqeY6i^>7nHyqRNx=Z3)A`_l*!3HvC*FOrv}6As(cuW4H3VFa z3+UM83fcn-LIBWPSz#^Q5ytZcX(97R_dZ%=tqsqDg3Zlbi4et zLEN^zyQBt9laZNt^mA@(c=}0FT!kN36fw{HtwCJR-FoYxeUi=&OGr3)M7wAykk+rz zaXIXE@n#d|J;6pyMnlKO_I!J~>uiZ{8kRGz&yOo83^6f?ag_i_uyta$J7}bQcjMbE zbgU5oIu3s7xLF<;pvin8;YbmiGIHQ?6-c3=4KerarIfEDLp06A8UX+cLfc2%Jq`B) zL%7657rvPM_kN&CZIOVwWw5OVb!*srph;eOnp(`E#`1;59W7vjPCRJ3S*5|31Pd zB}c#Zx@zjvo`wd?2V28<=YGNMZ~4D|-;Ll#a0giE{FD&{ZZWxQM4lHct?Fqr^jRx< zf4K?(#*LeSW(+HHTs75*ri`1mdRtozE8g^4S~N3fF+<|`hI_gt%T&)i>$-i543{vv z7*O=wmjNL9)%lt^bGgSxvB@dwnRA>st^-ZQyuHrwRvx9-dFty_8JUzJMlo&zmoic{ zZH8`nw!N&B_&7wkt2utUJoMw;C`zRm|G52PY1Gto0C1LH!)|x`zP*V>#fYYwa zqA8$4I#7_lY8X4NUeRYQ?=8RXs=B2Zlgf=A>-_Z^05Wde;<$3zUUtE_X^Z@P;Wah3 zA3hMbZHM#=gG>ltH2@H7os4lv_nFf|M?0lbyK1VP<=45SyvLlk+)m3DZMtX(_Zb1G4p*^#huNU|600000NkvXXu0mjf D5%&fp diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29@3x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-29@3x.png deleted file mode 100644 index 3d0466ebc43d5caf649416f718a39b32b36e9651..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2729 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

)hI%JB_O90xzU@HS_QG z-f~4KTo`mMp6?txN*kUefH|855s1k2ftj;exOqq;F!heiH($$Wbl|}LK;txX)M$1bc3rS4 z;q=$(Q~w>oZr*B|G3K>50bE+OB7NwfZ~Vl%9lHSxeECIqW;1}EmtRQj*$p9}6!b1} z1_c5oAh{g*{e_{**kt-3ytEF_Y*u#q?A+NZl@gX!jJ=L&K$)*2&VZ;`Px(YbSfQG= z>&frqd|p$lHZf4#6}D{+BEtY6tdLnVO8ESj+g~3ze8_Vb2xvxHE5;%m9vTq<^7#rg z8LI*jS=JwI&kS~*1(4j;0ljvuK`dqV%w+0Vc)fFQ(5!EWENFF3olJjvfJ_sBS58BiauEOBnAvrq z6o|+$ib?*TO!qwg>uSCH`ad>o_iBxW7h_!PN(3nO`X+->Xe#1bj5WesnwXg*t&4?a zWjenbyX~FRQzkZi{8_SNhi}3}Wv6r9-Ib3%*0*83f6`=?&ztevdS6}00000NkvXXu0mjfdtX5s diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-40@2x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-40@2x.png deleted file mode 100644 index d3871c883b43a004f614eb1544854216462362ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2399 zcmV-l3840gP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf1r7r(Fl~$9Z2$lW#Ysd#RCwC$n|p9n)fvFQ zbMNln-Fr8W%|0MO2+vBbf;=P%FowiXC|F8pt(2-2T6JuTv1LX|Bte3NDX+1yDy z6*^=J0|J8?n4t;DG!VoPihz=U0rF1vy?gg@&*>i5x6ztO-X>pR4Tdo%PU{|=Jix$o#<1hqC-v#mZau%k`r+=N z-QK$b%W?6!KU2H{tJP8Z&jF^T2F%Y&_t$^rJaVWx@8#=LzSp*WOYixKd+1>RKpIZI zB4j-=RDo3%i?Co(=r?xQJ2r2;u^=nZ+@yFC#{mG+>Ov}FRs4*ZLlqbS7+3!x{EF}5 zg*ZMvL?$Q;L-&~2wC3PtR6RU)Sms^#7U9G7>8@Bq@+OsR?#)5Hk!ttt7TPvnN{{+ zCLwW9faz}@dT1l2Xh!iYHa`Ad79_97RaF@=1fmg`5E8U@IZu_f6s~K?o^y5VNFoL0 zQpB=~2kZ5H8VNd`x1L_s_+(D~oSBZY6V!oecIl3io$VV7fOL;lM$iM(1BsC0VlIj>%PD@A-6oXi~>LN}7>~CvrT(ZztdjV;<_+PCGFX}4U z5$I^A)kd0KnqUPW!wbq6pwzTIy9j@4OXJc-{;OXA0P*`A`#+M4xF0+sWamguhuUP0 zI$%)FtBjy0K#=U&2;jThCVz8N&-p_N?D_L7~RlVt!vu~of*X&O_9 zYuM|#PhCs#HcfJhta|EdJGN{Jwlwz>XTJb58s+v#yk8btrX`YO-M82F;cn=kSh631 zky`0tvA2i&=%}u$Gq$}SMC_&dPpC#(kskIdi~AmyagWclY~IGi#lwIIU0^O;4K1hl z0=6GND*x7}XQce?18zWa)Ko)DrH8RkRPZYMvwh!Qcg@+JTa#0gOLpmhvh4q*^rHzF zaS?pWId6?+!zM-_H#C4lnde|vcg#Q{a`DP8%_bSK%hmS! zTFGt;tAh0NvQz%Po16U55C9I1Ve!KGkcyQa4&T!fLKve70D?_-S~uk5Kp?!PCOIX! z{7XYJLAbS5;+it5PfFV3V$gwE%!*Pljdi004#MZV@2HU{KtQaYu2H z@9UciT9?yPc_vzcStcTuj*J$SqmfNCL>RyxckBAsf?<=kyQ-4-DSsA1FB=$fu!3>u zFiDn(z_ZW1bny1=)`CAtJ|6%O0Qadfy0kQb<)|aj++;ggdgrB8!DhwqW3-B}1Zj1s zuLBC-rMmXwB7$+CrOA7Dg`+6cc1zgnX5nZGs-KrZ-RQkUm7Ef{BsXsU0@i3G1R595zkiaTKV(3G?>>`JjTpi3 zyuYCV2K-Q*^6B9>5`qUHm2)qNeQP<~B?dg)B?dg)B?^IuP7-g_p8e)GHiv%mnOWnG zpE9joA5!%T7mYo3QkOAzOzDy2w|9lIB9@}!)Wav#}34%Uq&ymc;UQ|o)P+dluw(DcwWeu9byyaW=d|Cx4O#u@gD8NQ{sNSRCr>( zFgMe7@Ic^31H*BlyO4%sbUXm)GUgbbdER}t+Hqii^a8spP9qJcojwB);vbvksjFq; z6EqJ_MjWS`KGR)U4um+59`>9+XIS;3@%OKaS1yMi_J@Q3s8U9m*A!KY>D(lW5uD_*SioUh?$rR&n?N>-~_R~M=!Waj_? zA%xG)>C=q!6v1lwA~&uTmsrvYQt$YkR6+W%D=ywyko0r9_exT_1>t-;n7 z-<8Y$`s+mWir23Czr0FBQLL?%nwvlh23uMvHgGT!0D~$~7-_|TW5C}={s+Y>P}G~@ RJq-W=002ovPDHLkV1n3ZeHj1% diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-40@3x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-40@3x.png deleted file mode 100644 index 09b91e257273d5af83c43c6f7f30fb98df9e45b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4065 zcmb_fS5T7+u>L`s2na|`L^?=O5kfBs5C{lJk&YY?g+!1dEi@rSktRqpw9q?9FM@QH z-la?RNDoB`MF^0~dARTQ;m*$PH@iEtJ3F)A%x=LMu>IUinQ2qYe*%RtZpYN%Ti2(ovhyVcQ4FH^8hAi1*E*5BTA zauT}UHk+)U&=-rLVTms=#)+_Q75RikVIq=(&mWYSbiJ=k=eTX1&rTh0a01hW*40nt z*6$W*B@N-KB%-z6P_b%g;I8UAWgRbW^4<_hOg$E%P}_|@Jiq8$8E)NMB&N%(XL#*4 zxyMDodJ1UA11Rj+H{f2_hY->KZ_v0doEDL955skZqzA~pp1NkF{d+mIAB@PEbhsro zs#ZD?OtPHob#U6qDcfPHLUJgw8XuxXPUKp6ZSd85>=kiSLXAk|;R0GW6!_F-r=sv2!ZHc1?QMVg`m!Z1*M(=Pr7P%A z7K6cvY4`p7&H1`A3ADw&v~xHI{oEZhjjg*zaW6(2a@Zn9&hy{)}Q2?gKDFPQ5w&_OZqlK!1gMNbZ=3nB#iG?_zF^#MRc z(92ukhfzNMA^bs~1SD9HH4 zFC!q7*6qIKJB8`&ORj;$Lmad{e*U3nGq0<7i%D-^bUpYQ$!m2pw^MdHlui+vMf)K0 zZT0W|x@xreyZHQ#C7mI$+3}f09sBL^@O#Fb*M@b4>lk>SH@oVa$PC#0X~!;Pj_Sj_ zV^Q?fx@>dJV1~E&n~XD`>3$C{-tYEYC(|?XP(Ud2p$Y@Wr;K5XZ}{}+IbSNJ4l&t@ zqvAwl?Ow&WoW8n$#X%f|JD#Cr=fuJi5^bo_98Xmton^tdMZ zpC=sA*6S&o5#h_eM7yJ|2jzVqyAR&A6qGUew+6Hy;hOeVOV62M<`Iqz+;(mHB~B&Y z>pV|gXExb}A^w?nkZ~jUFHGFka)tHxj2tNXKrL4e%Uy z2-O~gx32+&BFx3mBBnX-C+BsGcU&f~$aVHzFB$vRT$Lh<9lr*4?(=lMYQ91`jvwJ9 zImzG##RSAtV=M3|N_w-5kC}eRmA{+-kUMi!bl7&h*k@fOMZBQpa?bwe%oS3fRQ|{H zy!gCbfz)?X_kce;H>P2hPgtYpy_vxo&eBJ^&6tU13rU7}Zx~(FAWz(jiK3vf(rwwN z37G;I2fo)^@EhvO8}VCLpXUD3I`$cv1X1qbxl?q!TA1ac}WV`Awen%$0Y^Y z1ue9FE9X58g{vdInIdi9OEjXlGfYgi9jM?X%@)jpYn_^&nbyvx(uDYihC(xmGq600 z&ze4`X(R$=THN>ntG>}N;0W?Fn8Nok_)_D}vv%Dr58jws4A@rO%~r1v3`WY)C~^UD z&D=1@Asc(0cUC&F5t+$$FV4RX@cEF^J6Y0Dbz)5)u>5>e2Geq(j+7A-ld_VJnUxO2 zkb8}!(GKlAlWH~Ub8$8wmfJVt+zC_N1<@-FQ?~}BQHcbjnlUyyakTa}Rt+0b6iOL< zfyHzFMecEl2k_*?Js{uJP=xDeNr@e&BCSR$)Rzq)(uEs~ed_gItn@0E1XDhS5k_;d z>(i;>9M9Y2i)nU2cj)>-Jf?Cy*-56Qb_XtfOMT{iSTPCZkj?(OzNOGxR`Nr(c`@2X z^bunD4tXCS)}_$#D!&|jlA9w<9w{`uhEt^rzfg`?zO3bHs>XY}?0MbyB7tX4r=MKi zf~zG@^l1c?9w64CiKgMcW^^bzKyGLOdKi+f+{i$1JVdaxz4wNwqO_|c&l zcMHG1h%71gD=pQu{Qybh8zaOCb1Nn9JQ&J6^{>^+vT)RZtgf+3+O6UtT5|#_m-AJR zD!O23u4H%xirqA~vKRHmhO1F0gl#`u7yt612b`I5Pt0w;&hXh_n&N<}d+--0K|_yr zidOqhJ74X4*PTBI(HsM=uxgJt2mZD;`yTGy%?l-l&A;G3lB!w zD>+m$DmGP5vza$>`&Njs*VIxN_4evBJ!`2XSFg6BO-Lg#Pa--^lV&?0`19dIt$N7DM9lL?CuxEHBX8gd9DB&0fi3D z6FdGNjds!dSg?M|vH}`g#(8btC zeedLxCfs2q{uOD+PxKq9)9!?R?&^H>&0lVB;X)1gL-(a0r&Hkgs9z5ju9_tn4Q^tR zV3;*C35H$C^$jopJAlyiqdhp}Zq2u%b)zOGwM)ye2qxO&?W;U$@Pw4yW_z;=#XY|i zgZ?HEr`lbW)_J+Q;=_ecVywFXy~0=AbHNspidn7BYtYjsRb>mEeuuKzT`Hs7rcn0= zLi3V~4cQreYNtd8{fs9jMh=g(@4KJ(l9G>wvZiO64TA~-HhPhv84J?XZ2vVCxc@z4 zIN9jMu2wAPXQNJgZnZB;H8V41oVBxaYBL+Jjt$B=ebfl#8s>9HgyHPw$*1uD!{sOf zm$;>;8|*;eb!e*G#|ot%iOFpYNnFz!T`>jrg6e+7x;G&QlQcrp$Y~FL9_>i<{Ef64 z-xbX+tdU)8ZvneLGY_m>x(MZti7Csf5Ba4%x18gkV5&@@D7jz&vS$;H=RuEr-Tvy^ zF1$xN>7P`%oP9HL)Y^H^ONm)*x4Wk>o;FqSJdm8RF)8hIVfdpQ%^bg8P`~&|R)_Rw zYNKOuVZ$5bxj(3-HO3)S^&v?*S9i3Pj;cU*xy z>Iu7ju!*zvX${g5kS|Ts{UtaR>d(b;POJ7u(#A8horXxJxsU_3+CT*aT>cyy6P&q~ zOslNF93ll64+nRp7(om`N6HSN3%;_jc(E+E2d*SBZ6n?cT0viuUogp}VMWEQgNYhZ zsdN~{o3qz4Av4=KTczD6M993{#In-{*$>RZ?Mc)RI|n+XbGZP@X7nj~j|w0}!~^zi zTh6#mk%TL}?(RqfoQfVtUuRr_p`8o4491quanDpWgNr&h@F)*A5HL_)j=Ys2SPwzh z*XhwQM#N4`z+-uzMocA`@KwcdT?ImIS37N2>7MaeF~AxK2!4&f(RmKGwlA{%NgrB1u=ekh_sL&HvbWUsk&e_WRPmRFNxRA_4; zCF!Uy7bUhW+E`mIoQLW7X+`Gm(+u6dkgwP^-f3 zb?5r4mXvc1l$euJirBesK8@eYMa#r~*E^jd!EfKq_Pmo}KN6%QAGz{8Wv=B-b@5Qp zl$GsF6s3xuJ@36~8UTOML#O*9Xx}1X3EAH_OL|t6q>?2 z2e?tQSVg}r7)dFKtTIM%U`e0cDBzvW!nqw4o&XHfv6}%GvUCNO=h}qV>bdCyE?Gr| zX}B&=jozcy+LZqp};mk;RE-$EbvX!fYiwiMrJ-6D2=$?6fayn-ge?n~HqoZQeI;f3QBP;u| z_SFXIHdZhJwZTermNSMo{OijIFsU_8Ap0i0t^tps1anPI9u&?|qRPW~cho*2(>MOL zy4Y@s9d@8=n+ae8Z>3BQ-(-q{e|sAMNUgC0nkDsGY8FKj`AsQbDd-YLM6*;$W&)=Y nG^z&uSCz)_**Av%7s!L`s2na|`L^?=O5kfBs5C{lJk&YY?g+!1dEi@rSktRqpw9q?9FM@QH z-la?RNDoB`MF^0~dARTQ;m*$PH@iEtJ3F)A%x=LMu>IUinQ2qYe*%RtZpYN%Ti2(ovhyVcQ4FH^8hAi1*E*5BTA zauT}UHk+)U&=-rLVTms=#)+_Q75RikVIq=(&mWYSbiJ=k=eTX1&rTh0a01hW*40nt z*6$W*B@N-KB%-z6P_b%g;I8UAWgRbW^4<_hOg$E%P}_|@Jiq8$8E)NMB&N%(XL#*4 zxyMDodJ1UA11Rj+H{f2_hY->KZ_v0doEDL955skZqzA~pp1NkF{d+mIAB@PEbhsro zs#ZD?OtPHob#U6qDcfPHLUJgw8XuxXPUKp6ZSd85>=kiSLXAk|;R0GW6!_F-r=sv2!ZHc1?QMVg`m!Z1*M(=Pr7P%A z7K6cvY4`p7&H1`A3ADw&v~xHI{oEZhjjg*zaW6(2a@Zn9&hy{)}Q2?gKDFPQ5w&_OZqlK!1gMNbZ=3nB#iG?_zF^#MRc z(92ukhfzNMA^bs~1SD9HH4 zFC!q7*6qIKJB8`&ORj;$Lmad{e*U3nGq0<7i%D-^bUpYQ$!m2pw^MdHlui+vMf)K0 zZT0W|x@xreyZHQ#C7mI$+3}f09sBL^@O#Fb*M@b4>lk>SH@oVa$PC#0X~!;Pj_Sj_ zV^Q?fx@>dJV1~E&n~XD`>3$C{-tYEYC(|?XP(Ud2p$Y@Wr;K5XZ}{}+IbSNJ4l&t@ zqvAwl?Ow&WoW8n$#X%f|JD#Cr=fuJi5^bo_98Xmton^tdMZ zpC=sA*6S&o5#h_eM7yJ|2jzVqyAR&A6qGUew+6Hy;hOeVOV62M<`Iqz+;(mHB~B&Y z>pV|gXExb}A^w?nkZ~jUFHGFka)tHxj2tNXKrL4e%Uy z2-O~gx32+&BFx3mBBnX-C+BsGcU&f~$aVHzFB$vRT$Lh<9lr*4?(=lMYQ91`jvwJ9 zImzG##RSAtV=M3|N_w-5kC}eRmA{+-kUMi!bl7&h*k@fOMZBQpa?bwe%oS3fRQ|{H zy!gCbfz)?X_kce;H>P2hPgtYpy_vxo&eBJ^&6tU13rU7}Zx~(FAWz(jiK3vf(rwwN z37G;I2fo)^@EhvO8}VCLpXUD3I`$cv1X1qbxl?q!TA1ac}WV`Awen%$0Y^Y z1ue9FE9X58g{vdInIdi9OEjXlGfYgi9jM?X%@)jpYn_^&nbyvx(uDYihC(xmGq600 z&ze4`X(R$=THN>ntG>}N;0W?Fn8Nok_)_D}vv%Dr58jws4A@rO%~r1v3`WY)C~^UD z&D=1@Asc(0cUC&F5t+$$FV4RX@cEF^J6Y0Dbz)5)u>5>e2Geq(j+7A-ld_VJnUxO2 zkb8}!(GKlAlWH~Ub8$8wmfJVt+zC_N1<@-FQ?~}BQHcbjnlUyyakTa}Rt+0b6iOL< zfyHzFMecEl2k_*?Js{uJP=xDeNr@e&BCSR$)Rzq)(uEs~ed_gItn@0E1XDhS5k_;d z>(i;>9M9Y2i)nU2cj)>-Jf?Cy*-56Qb_XtfOMT{iSTPCZkj?(OzNOGxR`Nr(c`@2X z^bunD4tXCS)}_$#D!&|jlA9w<9w{`uhEt^rzfg`?zO3bHs>XY}?0MbyB7tX4r=MKi zf~zG@^l1c?9w64CiKgMcW^^bzKyGLOdKi+f+{i$1JVdaxz4wNwqO_|c&l zcMHG1h%71gD=pQu{Qybh8zaOCb1Nn9JQ&J6^{>^+vT)RZtgf+3+O6UtT5|#_m-AJR zD!O23u4H%xirqA~vKRHmhO1F0gl#`u7yt612b`I5Pt0w;&hXh_n&N<}d+--0K|_yr zidOqhJ74X4*PTBI(HsM=uxgJt2mZD;`yTGy%?l-l&A;G3lB!w zD>+m$DmGP5vza$>`&Njs*VIxN_4evBJ!`2XSFg6BO-Lg#Pa--^lV&?0`19dIt$N7DM9lL?CuxEHBX8gd9DB&0fi3D z6FdGNjds!dSg?M|vH}`g#(8btC zeedLxCfs2q{uOD+PxKq9)9!?R?&^H>&0lVB;X)1gL-(a0r&Hkgs9z5ju9_tn4Q^tR zV3;*C35H$C^$jopJAlyiqdhp}Zq2u%b)zOGwM)ye2qxO&?W;U$@Pw4yW_z;=#XY|i zgZ?HEr`lbW)_J+Q;=_ecVywFXy~0=AbHNspidn7BYtYjsRb>mEeuuKzT`Hs7rcn0= zLi3V~4cQreYNtd8{fs9jMh=g(@4KJ(l9G>wvZiO64TA~-HhPhv84J?XZ2vVCxc@z4 zIN9jMu2wAPXQNJgZnZB;H8V41oVBxaYBL+Jjt$B=ebfl#8s>9HgyHPw$*1uD!{sOf zm$;>;8|*;eb!e*G#|ot%iOFpYNnFz!T`>jrg6e+7x;G&QlQcrp$Y~FL9_>i<{Ef64 z-xbX+tdU)8ZvneLGY_m>x(MZti7Csf5Ba4%x18gkV5&@@D7jz&vS$;H=RuEr-Tvy^ zF1$xN>7P`%oP9HL)Y^H^ONm)*x4Wk>o;FqSJdm8RF)8hIVfdpQ%^bg8P`~&|R)_Rw zYNKOuVZ$5bxj(3-HO3)S^&v?*S9i3Pj;cU*xy z>Iu7ju!*zvX${g5kS|Ts{UtaR>d(b;POJ7u(#A8horXxJxsU_3+CT*aT>cyy6P&q~ zOslNF93ll64+nRp7(om`N6HSN3%;_jc(E+E2d*SBZ6n?cT0viuUogp}VMWEQgNYhZ zsdN~{o3qz4Av4=KTczD6M993{#In-{*$>RZ?Mc)RI|n+XbGZP@X7nj~j|w0}!~^zi zTh6#mk%TL}?(RqfoQfVtUuRr_p`8o4491quanDpWgNr&h@F)*A5HL_)j=Ys2SPwzh z*XhwQM#N4`z+-uzMocA`@KwcdT?ImIS37N2>7MaeF~AxK2!4&f(RmKGwlA{%NgrB1u=ekh_sL&HvbWUsk&e_WRPmRFNxRA_4; zCF!Uy7bUhW+E`mIoQLW7X+`Gm(+u6dkgwP^-f3 zb?5r4mXvc1l$euJirBesK8@eYMa#r~*E^jd!EfKq_Pmo}KN6%QAGz{8Wv=B-b@5Qp zl$GsF6s3xuJ@36~8UTOML#O*9Xx}1X3EAH_OL|t6q>?2 z2e?tQSVg}r7)dFKtTIM%U`e0cDBzvW!nqw4o&XHfv6}%GvUCNO=h}qV>bdCyE?Gr| zX}B&=jozcy+LZqp};mk;RE-$EbvX!fYiwiMrJ-6D2=$?6fayn-ge?n~HqoZQeI;f3QBP;u| z_SFXIHdZhJwZTermNSMo{OijIFsU_8Ap0i0t^tps1anPI9u&?|qRPW~cho*2(>MOL zy4Y@s9d@8=n+ae8Z>3BQ-(-q{e|sAMNUgC0nkDsGY8FKj`AsQbDd-YLM6*;$W&)=Y nG^z&uSCz)_**Av%7s!1qWa;iwngv`yx;rFPx)tdTVUb2blvr9q8fn-iq(O-VB&0*S7m&_< z_?=Q~}&zUnbXJ+o)GiUDHdA;UNoW8Ca2_Zcp001N!>dJ->b;ExdAM>HCtN!Bf zP+>bM=qLa{Z6eXF4bDTG)lS_|2LOV&0U#_A0Inap!nOgxR~P_xtpPwP9RO%NvRe$E zJq+O5YN;s$=>Jk)TS@Xm51x;Pjtbs74k?y^u@+WJ@ z7Ss_bPO6io80Y2XXIXBe=9XKX?gJKe&i*Y`gpZ+!E^e+azf`pxPPHB0EiH~p_9B13 zzE&dk!4Qj}5g<+Ac*RJs)&LRv^xE?^Ikf%Seeym|DS z#EQNZhHcDu^e-Hv!E}UC{YL~+qDwL8N2E~Ceiz5R#}r;>2oDJDeXCvgH&vAqZIayk zNA3ANIPV)wvhz8*+I%PK^`0(-f+P0j=(JT?pEOVQRbkU-aVRo2 z8`;iBj!jkNTp4qPb*VP+`|Ze?ED1{oAk`IKG0H&L>5ZX~SKcSCZI+n0Kpna34fJ~9 zT*K~S;hkNOo{ZL1&y?GzSQu7VhPE3Mw7|Gyz6h?W;&2d>m}224Nuba|C8_v|6kw+m zYz=}1(^nKV-~W8O>tyBb0B*tP`ZD1qJTo_6W0~-Jyu&XuYGI z6o_f~evUBVT!soEN|pv4xU>Rm47ooWn3+l4?PD4iob_!@@TKiF59L{IeeMl*&rDrx zAm~0aHo?(-CL-nFyr1o@lq<)~NoxC#uI+LhzI>PFB#MdXfU`Z_O0t0#+07+@@RpKbyNQwxi8y|f!mO(GUaQENEDP4@gyGVA=uV~+c+vzf`qYL|n* z@=zwk3PoFAAITm?#>U2i_ol@c{7&Gv+_2yI$hJ-JxAuz0iiY%5op^EO8>$9AlfMmOnz zDa3G~zbW}l3J|Cj&IkGh(a1>0huc4i&nr zY48AcBV;?3V$;)8;=-kOzRMSfXX>2NI9^`f!v)*MxrKQ5<<@pARj6l@S__!Pq zixyoL>`vu;g5;SH7+dguWt8qs9mWXD#HAV|Nq(>ERjHC%cTG08Eldm3z%$XY-vjH_+y&Cyuc+-{MM*fvV##})Zud*lG?n(0mVOVm7i?}jC3b{A zqgIJuQNnAfiokK`Rp>SinQq(PgSO?;Ha;2!M^84dcLJUKMf25US9=W*DFao;aNd8- zqp4QDzRT74vF868>plt{6ZCN5VT#BnS!A*}p8uKJQ6Xh;=*0*lFka5EGcvh&MFExt zdtH7ziCi(J3HGpgS%pP-Zan=r)(V0!&|t(SoSZaSys}_?F<>3}jpHjiqq?B`CXgJ6 zev4pNXwReG}}A>-#{@09~a-A5!qOk zOb_~)>Agn{9{B0fi)Q@V%FBthL)6r z2v;7p8ryeieE>?&(5YBixv6YB;{po`T#cvMT;}}?&zxKROkAHY+xV|?eUNJB;y&pv zz|7fX;w%#YBY(CroId%7U-b+=<=fjA#!AD>5Y_D?Y6>erMi^a zeH4SE@9jl(tKbIm`q4S^hckMHpfOPf#4P@*Pgj-B6R6ur>rm&v^*(oh>urY6tOGDm z%?90^-6AC=T7W!f6tYVeSel)$7I4wH5 z8T14VxqExnponr*uK^il0`s5^F^D+GawMsqBzTR+>T{^S@5Rb<1>V+GhScS+SWV0X ztZw%!JusthZy$ULM^{*d-;X!cR2i}_%i36&>RP(&ITo1FczAZXAbMdbJwYphi3)y- zEEBI7Ui9R06c~)f3cEShV<1#p)WtZzw1P$|>S7t<7OtD$p)TW3y!NKg?k&hl<`}jX zoQs?pJ1u&xnWtzFSoY-&)XBqWm-$n%zH2Zs*e%<3>O zR`FEWxTDj^qkie~=6JrjOnJ;suc$HG^}RcEmzRSSqx0WuNqqT+UI*{U*z^VN`firZ z`(j2|%50AGDosxEe9NDM+H)5_d}~q7k&e98pJqLFzi7*6H6L@3;uh{~#6+-Z+Qyvn zVL+GtR5T?J?#sSo&CQ7j>TC)O{9KW?Yt*4iJB08_14YQg?f~@;L4|-ar((=+d!mkx z=|*Js5?nm=_-g7rJhcm-@uGS6hUG(!$S`YEn@Kq*>H4!?g)qo^nM-JO4|1T=%zqfd zL$hpYT}4T1y5wcH;fr=t?p7Q)XRj6%sQw}L+kux@)p5wt&Dlq*d!I#Sgodygi6aU% z`!zsXg8g$#?n6nXF zWDj%iMy%!si0|mw$S5HvLO&~&IiiXaT_nVcmXk*jfw|2jCqj@4=TqOG%Q}{5(a=jE zO`_TQxuh{Uy@NIeqXXsshL8YE5`$ritE_-*;<%TfRxwu`;quFaJHBQ{tah88J?3C` z{il;5{BK0e4qS&v?|H9Ec)^E$x4~7Y%8oBPL7NslRd( zYPj2#vl-|yrqfqvwC>#c<5f6eJ>NI2AX}Fi+K+Kr^AEpN_?50>`1gcV38c5m~UO^K-f8rfB`nj-dXC0Ll#6$4q zI~zAxUkoTK1bTXIPM5i6T`ZmIj1+!s+N_b!(6Q$xM?E-^=*!V}>XfeOEK-{@<%dYn z$`NQh%ja7>1PCAXKz{{iVAkc^mb8ZR`dw!zZOZMjgr3?oO>P(-zZaCx|4g<%=Jok3 zuJJaU7xHh0O;3(N@=WZo{zDAWgU@z{Er&$*W@|QYb>$fQr6&pVOjmkmekA)VBv9FU z@&4c2DlWazs2H3b(qQ{4gO}pJ z5$hCcOrDqTj>uz>LGhB=j~@A#bhb-xr61fdb@1SmfAOSWB+rd^`` z-t(80&spnMhgNLNmdxysAI;+@Y&f#-*ezegrmZ!+%iH&)sXUr{~1igD(E%H7X zG5#iT(|McU+4*rb&zA$&1pj46l)C_{y+AA(vy5AB{U{z!c0uIh?>rAMdODXhoDnyD zzpw@oQVOc}#=oFvNHuQzfO|kMkF~EKJyqbqBkvg#WHywnGuV78o2V(^JkxN*{`iKo|Hsf3g6etK0i>z7B(% zqczoLrfsD^2IZow@|NkIdGiW-mJ?m({Wpt;EBbt?5?NV5Y!W%)8GOP?aWxS=alS01 zu^FBN)wf@0Vv`G9LPxC;l%sw=Y%hp-vm<={Lg`eD+{STY*s^Zo?sdl=qf60}C4v0q zJKc}el@E78t(VG*9RWMxNjlZ_$;VhB zL?2a2Jjo)$^S_>$^g5a+L8r2Z`D;zLP-KP?Vg2imAFNbeFeuKT39W$#qU@p|ywV;d zY$qeqSRpk3O$G9-ADOygU)pkAfgioe9Pf$Gz-BZf9pj=e|9(2-j+In>SGHj)MD14a zxneozzJmG}4=zqb8?(yc^nAmQX|5=bnN*q28Pz|MezmKINIL_7{8BS9kA2tMM#}jAN#+J^2c;n5)+E9vEAa z>1{1kCXB^8zcwDVn7wB` z4_Ye=Ya*h=*B8lmNPcUA3f|R#)m4kpSx;ySSQKubf52R26|RlR=Lc3UT&U82WU>H9 zR|)E%5$(9gS2xQI?Y9-}fj`W5;utT)r6cASGv8#bsDTm*0Lea#QC9dZX#Jl1tZpM+w7^ zdUilZ$Em6LLGW9Oj$A-LZ#7{e(|n^9f2BQpqy4e`a$AHNfoB-DfgVLL9C=!tFhDgV zZNlFOcioGp+e=N{Dy0VAt2As2hXIhRH@8dKY~Hzq3Ag+JEG6KCgm296_j_kNMy_5q z0*v}1$>|oWsc9$KrKF`A!B)RY7q`b=q5bTy3_GbN-?Eg%hQs~$+wNd3&7+a3@tB#z%5f zwSVg*^Jc>44a6{FUy@WB0ctc}|V7G?&>o#gGGI#B4OeA>!$6*$~+=}v3j9h$aS`=_)@qP*hf>ybLYRrX@t)#uRY zmpi0=stK?)G(&iXZu_z7?%8x-zn!LTE_Fu02WT%oh&a68_Qio(WWBszif25UUTVr`W~nR93N2Uyr8xI zJa%Cq@_WN22}3v@Ma*>D|KZ1}vh^lbntutRfAFRz23fk-jbf=&7l|o!W~8vs+k{JV zeES75XmMCx+H=fz62>YoW0FAAMGylpF@LMzMi=)XJ?l#>rO?}KxmSby(k7LfRWHm> zD(B;{I~~o;?uMtm*=LIw$p3zj^#7@v;1EVz3B3)O7Ye184K!R7SjJ$DyI2ZT^E-(F zQs2FKb@rVB5DvK5XF$rdo(yWIB9`eGWIh1{*$Ia;!J~}2TvUXu`Oy%3^=d1cn?cEN z-WSi;q*3*oY7GCZE{>WA+FSCw;chmh2~26`b-Z$T=wqI1Iq*0uTak7(RIc7pXSauh z%jz1Bom#wc!*tjsDCq0g+ zNTHccq2;o=*&2W2M5KT;gg1(h=6*ENWOI~~~bn_yzLXtQ_C=b_@|&@6&sJz2*_IKUan+vXAN`j;?lQ1gj^>1D#oaFZZXjN4~|MyIa@2%^j28VSzC7zj1`MNjnh{ah=Gz{qqS+K8UkDwDg_RdJB#@+9L*6NqBUiBsNA(KX}8 z?Ox*{WXCO;uGVwC?EIRJ{Y!7RUF?~sXun@}u2$8HFS&0|C=#=V6NtIb$EZIymu34Z-D@|UT2)ItsrbOCVz~EF$R6%)2LpZy zW`i=tRQ}Ye(maX7(gsS>1ZvTQI_dVbs+a2oK;ioOJfDVW#KeOkEUu$?vWYp!=$|qJ z6c2KH)%WIs2PE%plrWNzuoPm_lvLBD)5?NEHvDYOr!uEu$P9q4U4Hn$|2mq))C=bI zce7O0c9uN&OOKTqMTQ^Tz!)oR*kyB3{Ji4p{g5+^8dx?^QyIPeP-Azl?!#}jz{iKH zn9QA)<1Nby=>BN@ewQ$fugqESyf}I^+r)nU{r*o90rWA&V=mA;2M6(sr9|7?MN)}L z3N^o*^ZieWbU@sP478(MJF+$2mSr;&3C%w)Jd zl{f<6%XpoEUcWENZFpsdfzS4&I?J^>nu-+bKnN{*g^~vFDW%Sv%4ZQznwaL}f>y~~ zeEH1=T?p8r#*GI&{B6z-OH)!srX3_<>e%JZ*dVY!zt!A)GVQn97KRXUU!d>->!Dq9 z_4CfIuJ1Mp9&-WEz?XeG%TM3|{LMRKcy+_WNaBJd@aTt-GjbI?mfg4rws9?*jcR$} zq4nL=MJV}a^Louq6~nq0#Vwni+w@M+CD|rY2mIu{$TA%kE~~)4PaDaWO*M9Bn!#}L zEU#BSbF(V4uV5qz!`{$N!*IIrCmn$y+ni^ZKNM6vfqu8S?8-!NdKWU=)urEcHWLB< znL)Bw3BSuB=$t}bBVjs=X<+#chtzuaS~I3MnF1%wPJC)PL%R#2hsQ3WHY`}>O(<&?YM+L4Td zCedl_czv8}_F{SHa84tW@e^C>NT0vs+VS}`O*(_bdZM7#2xKT0w!V67{%q-dH+*t6 z>Wactw_zwm=Llywz#KJ?XT^%JVbUCWM`e62RBXbZ>Ux8ruTli!8}3`nu#iq3f_eSx zEH_29T_o7_d~XXLw(zVdQb~b1-k;ygFE_91|FJQ@w^7iz>suT=v6~;t6`21*OM1H_ zX1$K$cn{~8M6n#Sb9T^%Kvfvk-KD3DiN#58PPxz;r_kwU@4ZH$^>+r004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf1r7r(Fl~$9Z2$lWYe_^wRCwC$ntM=G*BQXS zb02&61aM|ql*M8@m{m%K_ zbME=R^PP(@#t`X3Jm>*LA)}B{$S7n)N)$3uBnlZR5`~Nui9$w-L?I(ZMjX;}zJk4S zN#gvG4B30;gQn#<^;5>*{`p2vMfn3sM4*xGm1}8kn4f`pKA;+NmL?xMqEDYTnvfdI zB*qd302umV(G%0m>o>?M`$a|5%B8;ge~&T9&Z2$w=@XitEO4E8Q*^sSY7v0t$)}Vh zQqR4 zx7g+E*!G*&r+*;{yxaikXaJCSE})X}3A)LX#~36+C}Hb%Wr_RD`<~KsK^+4CAV8$m z1_1PwsR)g#f7YfmOTh*vW45dsmMn`^EJ!R00D%2I(dhsHdVK0=5^4sC2-5!Ys{jZ9 zNK0JGkz+t8EQ_MDF`bk=CLsYJX88(p!3IQ<$$x%}NlQ~!VNp`5q}4jgkd$_&(7571 zu}^KZtXUsgquy-ExP(!L)N%u$?RLxB^+QyUs$K|-WjG6XWa2N4cR7jebC-V7xqq+c z^D?;*5vpEDvw6t>3a+lEg1ok0ZSvlz)pk_cELRNJSyJrz=&bKr4fgv1Ao;){SeDyg zO_0jQ$T$Qf-`U>$-F&Y0x);Fxx4$Ir*lByNFy!gnw`ew#eP!po7pek;06>^cK`H{N zx-=O>{_DTf)|{Wm)n4y^WCHJeWq13|9a=43jatDs9Y&A?YybeZ{Ij4(B}qe8HrLjw z$>20|Az1D43FEMkNY@YPYizjv*c!gIWxxa$U0py@mW@BPZYyLaP10&?lxB$uga}3- z)bx7UG8P176($ho{QlO~*6%$gI6CDj48UZ}N_y>(A!8N*XqYiU4Y`XoF_d!TC^LPA zthWB_NBqEIqsOO?fBQXoHd~%3Kqgc2!PjYQr;tn1htp0j_45%83hRz?x6Lkd@c zye|TR1w^x80O@o=MxG0tA^WS; zyQ?g0b){eH2yTQSmCM!7{g+o=PET6$A5SX&BN-n*Rv?k={QyAn`$8&_BIt3xaafMm zOqma-96ia*nllz4354k2>y1Np9d$;>d!e%X{nN5a+w9{?4#)oB$1u#Q4i`v7Qa~yp zRen4qK&KKC@4a=@T~Qt!1Vve&ekN)E!4X=z8bRu4AP@j}zq$qhc+hfHb(vrVjGaY$ zec!0^=%$5>QjVR{&zT#pkPH)e>%@)@0FVz{1DynW5qf$8IUelucI@22I~~e~wAD85 z;NjTs|1jj>5+;!Pz*a(-%>aNowUbmpig((m#C|_1IyyUd{a*B`rX7)F;^r;!zup{n zkOZR#gaJU8J`DgQH6$W~;T|-=>$oCjVBIUFMZ!~6wd2Z{7dAWcpMq8Y^< z0R*Vr`| z0u&Q7*aG%?J6|Z|?zCaRo{!IJNC;Y;LbzLvoke@O#+!U&1D2%FYJ$KR%j=n-b%-SK zptF_O?P@RFmbi6$U-@U+LZXI8vbD81q)-zk#uhvtvvM_QiIW7rId3^0$phqrf$SHO zqEk}|gTY^SWAr-J^up(V5K-Wpn?|)q0Em8(6*&@xj1-ANMv9PICr!}6N?e>NXQ|lR zgS{*O80Ia|&zQ+I-2wnak>*Dp1)a_?CzG(m3GH_QfSLXs!<@N-(_ze7Oc?Z{tIM4G zC=f{O?gjwklBK$->3mxY3=W>|OSG9uiQ}xld)~aR000n4+FsgY+x4<;YB~Tg8MAFK z?k3D;!=miu10~eNG}3BIDn4Xdy+(4otp4?9T7?e<-{ zWL~wFnKs>9Rq4BY0T7Dc{H(;X-isFi08x~E$BTSRGk3GzR`>!^pQHhRZ@lR`e$`IU(IF7}-w>nL~-`2*31VnIjk~Ta0<@vx@8<_KhAh^$dD74=t%rWK_D?O#3 zvSsH)SC{B^Gij52SFcc3tH16B*YFLUI>C3XhHtv%yL^eV+bOHvcjb~+0~_7*6~3Ozr~T`=6V00000NkvXXu0mjfIy^}~ diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-76@2x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-76@2x.png deleted file mode 100644 index 55d6bb439299b665586c7b2d42e0ab53852ca1ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5509 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 diff --git a/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png b/examples/ios/examples/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png deleted file mode 100644 index bfbb4e0784044e04a8132c710c8ba60248d9b35e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6258 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 en CFBundleDisplayName - RN RICH + examples CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS NSAppTransportSecurity @@ -43,8 +43,6 @@ armv7 - UIRequiresFullScreen - UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git a/examples/ios/examples/LaunchScreen.storyboard b/examples/ios/examples/LaunchScreen.storyboard new file mode 100644 index 0000000..1647279 --- /dev/null +++ b/examples/ios/examples/LaunchScreen.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/ios/examples/main.m b/examples/ios/examples/main.m index b1df44b..d645c72 100644 --- a/examples/ios/examples/main.m +++ b/examples/ios/examples/main.m @@ -2,7 +2,8 @@ #import "AppDelegate.h" -int main(int argc, char * argv[]) { +int main(int argc, char *argv[]) +{ @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } diff --git a/examples/ios/examplesTests/Info.plist b/examples/ios/examplesTests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/examples/ios/examplesTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/ios/examplesTests/examplesTests.m b/examples/ios/examplesTests/examplesTests.m new file mode 100644 index 0000000..5748718 --- /dev/null +++ b/examples/ios/examplesTests/examplesTests.m @@ -0,0 +1,66 @@ +#import +#import + +#import +#import + +#define TIMEOUT_SECONDS 600 +#define TEXT_TO_LOOK_FOR @"Welcome to React" + +@interface examplesTests : XCTestCase + +@end + +@implementation examplesTests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; +#ifdef DEBUG + RCTSetLogFunction( + ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); +#endif + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view + matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + +#ifdef DEBUG + RCTSetLogFunction(RCTDefaultLogFunction); +#endif + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + +@end diff --git a/examples/metro.config.js b/examples/metro.config.js index b442d50..60e6e81 100644 --- a/examples/metro.config.js +++ b/examples/metro.config.js @@ -5,30 +5,30 @@ * @format */ -const path = require("path"); +const path = require('path'); module.exports = { - projectRoot: __dirname, - watchFolders: [path.resolve(__dirname, '..')], - resolver: { - extraNodeModules: new Proxy( - {}, - { - get: (target, name) => { - if (target.hasOwnProperty(name)) { - return target[name] - } - return path.join(process.cwd(), `node_modules/${name}`) - }, - }, - ), - }, - transformer: { - getTransformOptions: async () => ({ - transform: { - experimentalImportSupport: false, - inlineRequires: true, - }, - }), - }, + projectRoot: __dirname, + watchFolders: [path.resolve(__dirname, '..')], + resolver: { + extraNodeModules: new Proxy( + {}, + { + get: (target, name) => { + if (target.hasOwnProperty(name)) { + return target[name]; + } + return path.join(process.cwd(), `node_modules/${name}`); + }, + }, + ), + }, + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: true, + }, + }), + }, }; diff --git a/examples/package.json b/examples/package.json index a357868..3cf8ab3 100644 --- a/examples/package.json +++ b/examples/package.json @@ -1,33 +1,38 @@ { "name": "examples", - "version": "0.0.5", - "main": "index.js", - "license": "MIT", + "version": "0.0.1", + "private": true, "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", + "lint": "eslint .", "start": "react-native start", "reset": "react-native start --reset-cache" }, "dependencies": { "@wxik/core": "^0.5.5", - "react": "17.0.2", - "react-native": "0.66.4", + "react": "18.2.0", + "react-native": "0.71.5", "react-native-iphone-x-helper": "^1.3.1", "react-native-modal": "^13.0.1", - "react-native-webview": "11.26.0" + "react-native-webview": "11.26.1" }, "devDependencies": { - "@babel/core": "^7.20.5", + "@babel/core": "^7.21.3", "@babel/plugin-proposal-function-bind": "^7.18.9", - "@babel/runtime": "^7.20.6", - "@types/react": "^18.0.26", - "@types/react-native": "^0.70.8", - "babel-plugin-module-resolver": "^4.1.0", - "metro-react-native-babel-preset": "^0.66.2", - "prettier": "^2.8.1" + "@babel/preset-env": "^7.20.2", + "@babel/runtime": "^7.21.0", + "@react-native-community/eslint-config": "^3.2.0", + "@tsconfig/react-native": "^2.0.3", + "@types/react": "^18.0.31", + "@types/react-native": "^0.71.5", + "babel-plugin-module-resolver": "^5.0.0", + "eslint": "^8.37.0", + "metro-react-native-babel-preset": "0.73.9", + "prettier": "^2.8.7", + "typescript": "4.9.5" }, - "peerDependencies": { - "react-native-pell-rich-editor": "^1.7.0" + "jest": { + "preset": "react-native" } } diff --git a/examples/src/App.js b/examples/src/App.js deleted file mode 100644 index 098a0f3..0000000 --- a/examples/src/App.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - * - * @format - * @flow - */ - -import React, {Component} from 'react'; -import {Example} from './example.hooks'; -import {Welcome} from './welcome'; -import {Preview} from './preview'; - -const Routes = { - index: Welcome, - rich: Example, - preview: Preview, -}; - -type Props = {}; -type State = { - routeKey: string, -}; - -class App extends Component { - state = { - routeKey: 'index', - args: {}, - }; - - push = (routeKey, args) => { - Routes[routeKey] && this.setState({routeKey, args}); - }; - - render() { - let that = this; - let {routeKey, args = {}} = that.state; - let Comp = Routes[routeKey]; - return ; - } -} - -export default App; diff --git a/examples/src/App.tsx b/examples/src/App.tsx new file mode 100644 index 0000000..3e3f544 --- /dev/null +++ b/examples/src/App.tsx @@ -0,0 +1,38 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + */ + +import {FC, useMemo, useState} from 'react'; +import {Example} from './example'; +import {Welcome} from './welcome'; +import {Preview} from './preview'; +import {INavigation} from './interface'; + +const Routes = { + index: Welcome, + rich: Example, + preview: Preview, +}; + +type RouteKeyType = keyof typeof Routes; + +const App: FC = () => { + const [routeKey, setRouteKey] = useState('index'); + const [args, setArgs] = useState>({}); + + const handleFuc = useMemo(() => { + return { + push: (key: RouteKeyType, params: Record) => { + if (Routes[key]) { + setRouteKey(key); + setArgs(params); + } + }, + }; + }, []); + const Comp = Routes[routeKey]; + return ; +}; + +export default App; diff --git a/examples/src/emoji.js b/examples/src/emoji.tsx similarity index 98% rename from examples/src/emoji.js rename to examples/src/emoji.tsx index 7f397a2..ba9278a 100644 --- a/examples/src/emoji.js +++ b/examples/src/emoji.tsx @@ -5,7 +5,11 @@ import React from 'react'; import {View, Text, StyleSheet, Dimensions} from 'react-native'; -export function EmojiView(props) { +interface IProps { + onSelect: (value: string) => void; +} + +export function EmojiView(props: IProps) { const {onSelect} = props; return ( diff --git a/examples/src/example.class.js b/examples/src/example.class.js deleted file mode 100644 index 92097ff..0000000 --- a/examples/src/example.class.js +++ /dev/null @@ -1,502 +0,0 @@ -/** - * Rich Editor Example - * @author tangzehua - * @since 2019-06-24 14:52 - */ -import React from 'react'; -import { - Appearance, - Button, - Keyboard, - KeyboardAvoidingView, - Platform, - SafeAreaView, - ScrollView, - StatusBar, - StyleSheet, - Text, - TextInput, - View, -} from 'react-native'; -import {actions, getContentCSS, RichEditor, RichToolbar} from 'react-native-pell-rich-editor'; -import {XMath} from '@wxik/core'; -import {InsertLinkModal} from './insertLink'; -import {EmojiView} from './emoji'; - -const imageList = [ - 'https://img.lesmao.vip/k/h256/R/MeiTu/1293.jpg', - 'https://pbs.twimg.com/profile_images/1242293847918391296/6uUsvfJZ.png', - 'https://img.lesmao.vip/k/h256/R/MeiTu/1297.jpg', - 'https://img.lesmao.vip/k/h256/R/MeiTu/1292.jpg', -]; -const initHTML = `
-

Rich Editor
-
-React Native -And -Flutter -
-
-
-
const editor = ReactNative;console.log(editor);
-
Click the picture to switch

-`; - -const phizIcon = require('./assets/phiz.png'); -const htmlIcon = require('./assets/html.png'); - -class ExampleClass extends React.Component { - richText = React.createRef(); - linkModal = React.createRef(); - scrollRef = React.createRef(); - - constructor(props) { - super(props); - const that = this; - const theme = props.theme || Appearance.getColorScheme(); - const contentStyle = that.createContentStyle(theme); - that.richHTML = ''; - that.state = {theme: theme, contentStyle, emojiVisible: false, disabled: false}; - that.editorFocus = false; - that.onHome = ::that.onHome; - that.save = ::that.save; - that.onTheme = ::that.onTheme; - that.onPressAddImage = ::that.onPressAddImage; - that.onInsertLink = ::that.onInsertLink; - that.onLinkDone = ::that.onLinkDone; - that.themeChange = ::that.themeChange; - that.handleChange = ::that.handleChange; - that.handleHeightChange = ::that.handleHeightChange; - that.insertEmoji = ::that.insertEmoji; - that.insertHTML = ::that.insertHTML; - that.insertVideo = ::that.insertVideo; - that.handleEmoji = ::that.handleEmoji; - that.onDisabled = ::that.onDisabled; - that.editorInitializedCallback = ::that.editorInitializedCallback; - } - - componentDidMount() { - Appearance.addChangeListener(this.themeChange); - this.didShow = Keyboard.addListener('keyboardDidShow', this.onKeyShow); - this.didHide = Keyboard.addListener('keyboardDidHide', this.onKeyHide); - } - - componentWillUnmount() { - Appearance.removeChangeListener(this.themeChange); - this.didShow?.remove(); - this.didHide?.remove(); - // Keyboard.removeListener('keyboardDidShow', this.onKeyShow); - // Keyboard.removeListener('keyboardDidHide', this.onKeyHide); - } - - onKeyHide = () => {}; - - onKeyShow = () => { - TextInput.State.currentlyFocusedInput() && this.setState({emojiVisible: false}); - }; - - editorInitializedCallback() { - this.richText.current?.registerToolbar(function (items) { - // console.log('Toolbar click, selected items (insert end callback):', items); - }); - } - - /** - * theme change to editor color - * @param colorScheme - */ - themeChange({colorScheme}) { - const theme = colorScheme; - const contentStyle = this.createContentStyle(theme); - this.setState({theme, contentStyle}); - } - - async save() { - // Get the data here and call the interface to save the data - let html = await this.richText.current?.getContentHtml(); - // console.log(html); - this.props.navigation.push('preview', {html, css: getContentCSS()}); - } - - /** - * editor change data - * @param {string} html - */ - handleChange(html) { - this.richHTML = html; - this.setState({a: Math.random}); - } - - /** - * editor height change - * @param {number} height - */ - handleHeightChange(height) { - console.log('editor height change:', height); - } - - insertEmoji(emoji) { - this.richText.current?.insertText(emoji); - this.richText.current?.blurContentEditor(); - } - - handleEmoji() { - const {emojiVisible} = this.state; - Keyboard.dismiss(); - this.richText.current?.blurContentEditor(); - this.setState({emojiVisible: !emojiVisible}); - } - - insertVideo() { - this.richText.current?.insertVideo( - 'https://mdn.github.io/learning-area/html/multimedia-and-embedding/video-and-audio-content/rabbit320.mp4', - 'width: 50%;', - ); - } - - fontSize = () => { - // 1= 10px, 2 = 13px, 3 = 16px, 4 = 18px, 5 = 24px, 6 = 32px, 7 = 48px; - const size = [1, 2, 3, 4, 5, 6, 7]; - this.richText.current?.setFontSize(size[XMath.random(size.length - 1)]); - }; - - foreColor = () => { - this.richText.current?.setForeColor('blue'); - }; - - hiliteColor = () => { - this.richText.current?.setHiliteColor('red'); - }; - - insertHTML() { - // this.richText.current?.insertHTML( - // `HTML`, - // ); - this.richText.current?.insertHTML( - `
- -
`, - ); - } - - onPressAddImage() { - // insert URL - this.richText.current?.insertImage( - 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/React-icon.svg/100px-React-icon.svg.png', - 'background: gray;', - ); - // insert base64 - // this.richText.current?.insertImage(`data:${image.mime};base64,${image.data}`); - } - - onInsertLink() { - // this.richText.current?.insertLink('Google', 'http://google.com'); - this.linkModal.current?.setModalVisible(true); - } - - onLinkDone({title, url}) { - this.richText.current?.insertLink(title, url); - } - - onHome() { - this.props.navigation.push('index'); - } - - createContentStyle(theme) { - // Can be selected for more situations (cssText or contentCSSText). - const contentStyle = { - backgroundColor: '#2e3847', - color: '#fff', - caretColor: 'red', // initial valid// initial valid - placeholderColor: 'gray', - // cssText: '#editor {background-color: #f3f3f3}', // initial valid - contentCSSText: 'font-size: 16px; min-height: 200px;', // initial valid - }; - if (theme === 'light') { - contentStyle.backgroundColor = '#fff'; - contentStyle.color = '#000033'; - contentStyle.placeholderColor = '#a9a9a9'; - } - return contentStyle; - } - - onTheme() { - let {theme} = this.state; - theme = theme === 'light' ? 'dark' : 'light'; - let contentStyle = this.createContentStyle(theme); - this.setState({theme, contentStyle}); - } - - onDisabled() { - this.setState({disabled: !this.state.disabled}); - } - - handlePaste = data => { - console.log('Paste:', data); - }; - - /** - * @deprecated Android keyCode 229 - * @param data - */ - handleKeyUp = data => { - // console.log('KeyUp:', data); - }; - - /** - * @deprecated Android keyCode 229 - * @param data - */ - handleKeyDown = data => { - // console.log('KeyDown:', data); - }; - - /** - * - * @param data - * @param {string} inputType - */ - onInput = ({data, inputType}) => { - // console.log(inputType, data) - } - - handleMessage = ({type, id, data}) => { - let index = 0; - switch (type) { - case 'ImgClick': - this.richText.current?.commandDOM(`$('#${id}').src="${imageList[XMath.random(imageList.length - 1)]}"`); - break; - case 'TitleClick': - const color = ['red', 'blue', 'gray', 'yellow', 'coral']; - - // command: $ = document.querySelector - this.richText.current?.commandDOM(`$('#${id}').style.color='${color[XMath.random(color.length - 1)]}'`); - break; - case 'SwitchImage': - break; - } - console.log('onMessage', type, id, data); - }; - - handleFocus = () => { - this.editorFocus = true; - }; - - handleBlur = () => { - this.editorFocus = false; - }; - - handleCursorPosition = scrollY => { - // Positioning scroll bar - this.scrollRef.current.scrollTo({y: scrollY - 30, animated: true}); - }; - - render() { - let that = this; - const {contentStyle, theme, emojiVisible, disabled} = that.state; - const {backgroundColor, color, placeholderColor} = contentStyle; - const dark = theme === 'dark'; - return ( - - - - -