build: init-working-prototype

This commit is contained in:
Jakub Grzywacz 2021-07-07 12:00:45 +02:00
parent 3cce2c2e03
commit b06609e844
No known key found for this signature in database
GPG Key ID: 5BBB685871FF63C4
18 changed files with 15923 additions and 950 deletions

View File

@ -8,7 +8,6 @@
/* Begin PBXBuildFile section */
00E356F31AD99517003FC87E /* EmojiKeyboardExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* EmojiKeyboardExampleTests.m */; };
09EB680D46FE12310629C227 /* libPods-EmojiKeyboardExample-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B56BA239C969F702C63633C7 /* libPods-EmojiKeyboardExample-tvOS.a */; };
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
@ -16,9 +15,7 @@
2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2DCD954D1E0B4F2C00145EB5 /* EmojiKeyboardExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* EmojiKeyboardExampleTests.m */; };
3DDF5FAE064BC4BFAB015043 /* libPods-EmojiKeyboardExample-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F6A20A3A2D31400635C17C3 /* libPods-EmojiKeyboardExample-tvOSTests.a */; };
4C39C56BAD484C67AA576FFA /* libPods-EmojiKeyboardExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CA3E69C5B9553B26FBA2DF04 /* libPods-EmojiKeyboardExample.a */; };
69AF7E46C79455F135C08478 /* libPods-EmojiKeyboardExample-EmojiKeyboardExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7533C965B72700ED5E109803 /* libPods-EmojiKeyboardExample-EmojiKeyboardExampleTests.a */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
@ -44,29 +41,20 @@
00E356EE1AD99517003FC87E /* EmojiKeyboardExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EmojiKeyboardExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* EmojiKeyboardExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EmojiKeyboardExampleTests.m; sourceTree = "<group>"; };
1172626FD82B50406EC37522 /* Pods-EmojiKeyboardExample-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample-tvOSTests/Pods-EmojiKeyboardExample-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* EmojiKeyboardExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EmojiKeyboardExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = EmojiKeyboardExample/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = EmojiKeyboardExample/AppDelegate.m; sourceTree = "<group>"; };
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = EmojiKeyboardExample/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = EmojiKeyboardExample/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = EmojiKeyboardExample/main.m; sourceTree = "<group>"; };
20AB94514737C20DFC4350AE /* Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.debug.xcconfig"; sourceTree = "<group>"; };
2D02E47B1E0B4A5D006451C7 /* EmojiKeyboardExample-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "EmojiKeyboardExample-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2D02E4901E0B4A5D006451C7 /* EmojiKeyboardExample-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "EmojiKeyboardExample-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
47F7ED3B7971BE374F7B8635 /* Pods-EmojiKeyboardExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample.debug.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample/Pods-EmojiKeyboardExample.debug.xcconfig"; sourceTree = "<group>"; };
6F6A20A3A2D31400635C17C3 /* libPods-EmojiKeyboardExample-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EmojiKeyboardExample-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
7533C965B72700ED5E109803 /* libPods-EmojiKeyboardExample-EmojiKeyboardExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EmojiKeyboardExample-EmojiKeyboardExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = EmojiKeyboardExample/LaunchScreen.storyboard; sourceTree = "<group>"; };
AE69546072F7DC475F196F4C /* Pods-EmojiKeyboardExample-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample-tvOS/Pods-EmojiKeyboardExample-tvOS.debug.xcconfig"; sourceTree = "<group>"; };
B56BA239C969F702C63633C7 /* libPods-EmojiKeyboardExample-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EmojiKeyboardExample-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
CA3E69C5B9553B26FBA2DF04 /* libPods-EmojiKeyboardExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EmojiKeyboardExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
E00ACF0FDA8BF921659E2F9A /* Pods-EmojiKeyboardExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample.release.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample/Pods-EmojiKeyboardExample.release.xcconfig"; sourceTree = "<group>"; };
E88D904CC5F3CC947B01AB46 /* Pods-EmojiKeyboardExample-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample-tvOS.release.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample-tvOS/Pods-EmojiKeyboardExample-tvOS.release.xcconfig"; sourceTree = "<group>"; };
EC1294380F6AD2F72CA45BA5 /* Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.release.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.release.xcconfig"; sourceTree = "<group>"; };
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; };
FFD6887008BEF5F1A6973F45 /* Pods-EmojiKeyboardExample-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiKeyboardExample-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-EmojiKeyboardExample-tvOSTests/Pods-EmojiKeyboardExample-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -74,7 +62,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
69AF7E46C79455F135C08478 /* libPods-EmojiKeyboardExample-EmojiKeyboardExampleTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -90,7 +77,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
09EB680D46FE12310629C227 /* libPods-EmojiKeyboardExample-tvOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -98,7 +84,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
3DDF5FAE064BC4BFAB015043 /* libPods-EmojiKeyboardExample-tvOSTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -142,9 +127,6 @@
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
CA3E69C5B9553B26FBA2DF04 /* libPods-EmojiKeyboardExample.a */,
7533C965B72700ED5E109803 /* libPods-EmojiKeyboardExample-EmojiKeyboardExampleTests.a */,
B56BA239C969F702C63633C7 /* libPods-EmojiKeyboardExample-tvOS.a */,
6F6A20A3A2D31400635C17C3 /* libPods-EmojiKeyboardExample-tvOSTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
@ -154,12 +136,6 @@
children = (
47F7ED3B7971BE374F7B8635 /* Pods-EmojiKeyboardExample.debug.xcconfig */,
E00ACF0FDA8BF921659E2F9A /* Pods-EmojiKeyboardExample.release.xcconfig */,
20AB94514737C20DFC4350AE /* Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.debug.xcconfig */,
EC1294380F6AD2F72CA45BA5 /* Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.release.xcconfig */,
AE69546072F7DC475F196F4C /* Pods-EmojiKeyboardExample-tvOS.debug.xcconfig */,
E88D904CC5F3CC947B01AB46 /* Pods-EmojiKeyboardExample-tvOS.release.xcconfig */,
FFD6887008BEF5F1A6973F45 /* Pods-EmojiKeyboardExample-tvOSTests.debug.xcconfig */,
1172626FD82B50406EC37522 /* Pods-EmojiKeyboardExample-tvOSTests.release.xcconfig */,
);
name = Pods;
path = Pods;
@ -205,11 +181,9 @@
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "EmojiKeyboardExampleTests" */;
buildPhases = (
3BD00D8DB48E257517D6B951 /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
441170A4DAEF877A820C1CEA /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@ -232,6 +206,7 @@
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
C1D60D28B925C94BD88E79D7 /* [CP] Copy Pods Resources */,
A739A54A11C8641C7AACA0AE /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@ -246,7 +221,6 @@
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "EmojiKeyboardExample-tvOS" */;
buildPhases = (
87811D0F8FEC6FC2E70EDF88 /* [CP] Check Pods Manifest.lock */,
FD10A7F122414F3F0027D42C /* Start Packager */,
2D02E4771E0B4A5D006451C7 /* Sources */,
2D02E4781E0B4A5D006451C7 /* Frameworks */,
@ -266,7 +240,6 @@
isa = PBXNativeTarget;
buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "EmojiKeyboardExample-tvOSTests" */;
buildPhases = (
A1191D9E34FEA625352E7BA9 /* [CP] Check Pods Manifest.lock */,
2D02E48C1E0B4A5D006451C7 /* Sources */,
2D02E48D1E0B4A5D006451C7 /* Frameworks */,
2D02E48E1E0B4A5D006451C7 /* Resources */,
@ -391,46 +364,6 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
3BD00D8DB48E257517D6B951 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests-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;
};
441170A4DAEF877A820C1CEA /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests/Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
4F0A6FC082772762E3E4C96C /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -453,48 +386,22 @@
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;
};
87811D0F8FEC6FC2E70EDF88 /* [CP] Check Pods Manifest.lock */ = {
A739A54A11C8641C7AACA0AE /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-EmojiKeyboardExample/Pods-EmojiKeyboardExample-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-EmojiKeyboardExample-tvOS-checkManifestLockResult.txt",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
);
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;
};
A1191D9E34FEA625352E7BA9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-EmojiKeyboardExample-tvOSTests-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";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-EmojiKeyboardExample/Pods-EmojiKeyboardExample-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
C1D60D28B925C94BD88E79D7 /* [CP] Copy Pods Resources */ = {
@ -608,7 +515,6 @@
/* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 20AB94514737C20DFC4350AE /* Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
GCC_PREPROCESSOR_DEFINITIONS = (
@ -623,7 +529,7 @@
"-lc++",
"$(inherited)",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.example.reactnativeemojikeyboard";
PRODUCT_BUNDLE_IDENTIFIER = com.example.reactnativeemojikeyboard;
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/EmojiKeyboardExample.app/EmojiKeyboardExample";
};
@ -631,7 +537,6 @@
};
00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = EC1294380F6AD2F72CA45BA5 /* Pods-EmojiKeyboardExample-EmojiKeyboardExampleTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
@ -643,7 +548,7 @@
"-lc++",
"$(inherited)",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.example.reactnativeemojikeyboard";
PRODUCT_BUNDLE_IDENTIFIER = com.example.reactnativeemojikeyboard;
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/EmojiKeyboardExample.app/EmojiKeyboardExample";
};
@ -664,7 +569,7 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.example.reactnativeemojikeyboard";
PRODUCT_BUNDLE_IDENTIFIER = com.example.reactnativeemojikeyboard;
PRODUCT_NAME = EmojiKeyboardExample;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@ -686,7 +591,7 @@
"-ObjC",
"-lc++",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.example.reactnativeemojikeyboard";
PRODUCT_BUNDLE_IDENTIFIER = com.example.reactnativeemojikeyboard;
PRODUCT_NAME = EmojiKeyboardExample;
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@ -695,7 +600,6 @@
};
2D02E4971E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = AE69546072F7DC475F196F4C /* Pods-EmojiKeyboardExample-tvOS.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
@ -723,7 +627,6 @@
};
2D02E4981E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = E88D904CC5F3CC947B01AB46 /* Pods-EmojiKeyboardExample-tvOS.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
@ -751,7 +654,6 @@
};
2D02E4991E0B4A5E006451C7 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = FFD6887008BEF5F1A6973F45 /* Pods-EmojiKeyboardExample-tvOSTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;
@ -778,7 +680,6 @@
};
2D02E49A1E0B4A5E006451C7 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1172626FD82B50406EC37522 /* Pods-EmojiKeyboardExample-tvOSTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ANALYZER_NONNULL = YES;

View File

@ -15,5 +15,10 @@ target 'EmojiKeyboardExample' do
use_flipper!({ 'Flipper' => '0.80.0' })
post_install do |installer|
flipper_post_install(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
end

474
example/ios/Podfile.lock Normal file
View File

@ -0,0 +1,474 @@
PODS:
- boost-for-react-native (1.63.0)
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- FBLazyVector (0.63.4)
- FBReactNativeSpec (0.63.4):
- Folly (= 2020.01.13.00)
- RCTRequired (= 0.63.4)
- RCTTypeSafety (= 0.63.4)
- React-Core (= 0.63.4)
- React-jsi (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- Flipper (0.80.0):
- Flipper-Folly (~> 2.5)
- Flipper-RSocket (~> 1.3)
- Flipper-Boost-iOSX (1.76.0.1.11)
- Flipper-DoubleConversion (1.1.7)
- Flipper-Fmt (7.1.7)
- Flipper-Folly (2.6.7):
- 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)
- Flipper-PeerTalk (0.0.4)
- Flipper-RSocket (1.4.3):
- Flipper-Folly (~> 2.6)
- FlipperKit (0.80.0):
- FlipperKit/Core (= 0.80.0)
- FlipperKit/Core (0.80.0):
- Flipper (~> 0.80.0)
- FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines
- FlipperKit/FKPortForwarding
- FlipperKit/CppBridge (0.80.0):
- Flipper (~> 0.80.0)
- FlipperKit/FBCxxFollyDynamicConvert (0.80.0):
- Flipper-Folly (~> 2.5)
- FlipperKit/FBDefines (0.80.0)
- FlipperKit/FKPortForwarding (0.80.0):
- CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4)
- FlipperKit/FlipperKitHighlightOverlay (0.80.0)
- FlipperKit/FlipperKitLayoutPlugin (0.80.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutTextSearchable (0.80.0)
- FlipperKit/FlipperKitNetworkPlugin (0.80.0):
- FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.80.0):
- FlipperKit/Core
- FlipperKit/FlipperKitUserDefaultsPlugin (0.80.0):
- FlipperKit/Core
- FlipperKit/SKIOSNetworkPlugin (0.80.0):
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- Folly (2020.01.13.00):
- boost-for-react-native
- DoubleConversion
- Folly/Default (= 2020.01.13.00)
- glog
- Folly/Default (2020.01.13.00):
- boost-for-react-native
- DoubleConversion
- glog
- glog (0.3.5)
- libevent (2.1.12)
- OpenSSL-Universal (1.1.180)
- RCTRequired (0.63.4)
- RCTTypeSafety (0.63.4):
- FBLazyVector (= 0.63.4)
- Folly (= 2020.01.13.00)
- RCTRequired (= 0.63.4)
- React-Core (= 0.63.4)
- React (0.63.4):
- React-Core (= 0.63.4)
- React-Core/DevSupport (= 0.63.4)
- React-Core/RCTWebSocket (= 0.63.4)
- React-RCTActionSheet (= 0.63.4)
- React-RCTAnimation (= 0.63.4)
- React-RCTBlob (= 0.63.4)
- React-RCTImage (= 0.63.4)
- React-RCTLinking (= 0.63.4)
- React-RCTNetwork (= 0.63.4)
- React-RCTSettings (= 0.63.4)
- React-RCTText (= 0.63.4)
- React-RCTVibration (= 0.63.4)
- React-callinvoker (0.63.4)
- React-Core (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default (= 0.63.4)
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/CoreModulesHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/Default (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/DevSupport (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default (= 0.63.4)
- React-Core/RCTWebSocket (= 0.63.4)
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- React-jsinspector (= 0.63.4)
- Yoga
- React-Core/RCTActionSheetHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTAnimationHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTBlobHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTImageHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTLinkingHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTNetworkHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTSettingsHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTTextHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTVibrationHeaders (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-Core/RCTWebSocket (0.63.4):
- Folly (= 2020.01.13.00)
- glog
- React-Core/Default (= 0.63.4)
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsiexecutor (= 0.63.4)
- Yoga
- React-CoreModules (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.63.4)
- React-Core/CoreModulesHeaders (= 0.63.4)
- React-jsi (= 0.63.4)
- React-RCTImage (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- React-cxxreact (0.63.4):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2020.01.13.00)
- glog
- React-callinvoker (= 0.63.4)
- React-jsinspector (= 0.63.4)
- React-jsi (0.63.4):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2020.01.13.00)
- glog
- React-jsi/Default (= 0.63.4)
- React-jsi/Default (0.63.4):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- Folly (= 2020.01.13.00)
- glog
- React-jsiexecutor (0.63.4):
- DoubleConversion
- Folly (= 2020.01.13.00)
- glog
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsinspector (0.63.4)
- React-RCTActionSheet (0.63.4):
- React-Core/RCTActionSheetHeaders (= 0.63.4)
- React-RCTAnimation (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.63.4)
- React-Core/RCTAnimationHeaders (= 0.63.4)
- React-jsi (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- React-RCTBlob (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- Folly (= 2020.01.13.00)
- React-Core/RCTBlobHeaders (= 0.63.4)
- React-Core/RCTWebSocket (= 0.63.4)
- React-jsi (= 0.63.4)
- React-RCTNetwork (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- React-RCTImage (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.63.4)
- React-Core/RCTImageHeaders (= 0.63.4)
- React-jsi (= 0.63.4)
- React-RCTNetwork (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- React-RCTLinking (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- React-Core/RCTLinkingHeaders (= 0.63.4)
- React-jsi (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- React-RCTNetwork (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.63.4)
- React-Core/RCTNetworkHeaders (= 0.63.4)
- React-jsi (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- React-RCTSettings (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.63.4)
- React-Core/RCTSettingsHeaders (= 0.63.4)
- React-jsi (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- React-RCTText (0.63.4):
- React-Core/RCTTextHeaders (= 0.63.4)
- React-RCTVibration (0.63.4):
- FBReactNativeSpec (= 0.63.4)
- Folly (= 2020.01.13.00)
- React-Core/RCTVibrationHeaders (= 0.63.4)
- React-jsi (= 0.63.4)
- ReactCommon/turbomodule/core (= 0.63.4)
- ReactCommon/turbomodule/core (0.63.4):
- DoubleConversion
- Folly (= 2020.01.13.00)
- glog
- React-callinvoker (= 0.63.4)
- React-Core (= 0.63.4)
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- RNGestureHandler (1.10.3):
- React-Core
- Yoga (1.14.0)
- YogaKit (1.18.1):
- Yoga (~> 1.14)
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/Libraries/FBReactNativeSpec`)
- Flipper (= 0.80.0)
- Flipper-DoubleConversion (= 1.1.7)
- Flipper-Folly (~> 2.2)
- Flipper-Glog (= 0.3.6)
- Flipper-PeerTalk (~> 0.0.4)
- Flipper-RSocket (~> 1.1)
- FlipperKit (= 0.80.0)
- FlipperKit/Core (= 0.80.0)
- FlipperKit/CppBridge (= 0.80.0)
- FlipperKit/FBCxxFollyDynamicConvert (= 0.80.0)
- FlipperKit/FBDefines (= 0.80.0)
- FlipperKit/FKPortForwarding (= 0.80.0)
- FlipperKit/FlipperKitHighlightOverlay (= 0.80.0)
- FlipperKit/FlipperKitLayoutPlugin (= 0.80.0)
- FlipperKit/FlipperKitLayoutTextSearchable (= 0.80.0)
- FlipperKit/FlipperKitNetworkPlugin (= 0.80.0)
- FlipperKit/FlipperKitReactPlugin (= 0.80.0)
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.80.0)
- FlipperKit/SKIOSNetworkPlugin (= 0.80.0)
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.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-Core (from `../node_modules/react-native/`)
- React-Core/DevSupport (from `../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- 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`)
- React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
trunk:
- boost-for-react-native
- CocoaAsyncSocket
- Flipper
- Flipper-Boost-iOSX
- Flipper-DoubleConversion
- Flipper-Fmt
- Flipper-Folly
- Flipper-Glog
- Flipper-PeerTalk
- Flipper-RSocket
- FlipperKit
- libevent
- OpenSSL-Universal
- YogaKit
EXTERNAL SOURCES:
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
FBLazyVector:
:path: "../node_modules/react-native/Libraries/FBLazyVector"
FBReactNativeSpec:
:path: "../node_modules/react-native/Libraries/FBReactNativeSpec"
Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
RCTRequired:
:path: "../node_modules/react-native/Libraries/RCTRequired"
RCTTypeSafety:
:path: "../node_modules/react-native/Libraries/TypeSafety"
React:
:path: "../node_modules/react-native/"
React-callinvoker:
:path: "../node_modules/react-native/ReactCommon/callinvoker"
React-Core:
:path: "../node_modules/react-native/"
React-CoreModules:
:path: "../node_modules/react-native/React/CoreModules"
React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
:path: "../node_modules/react-native/Libraries/NativeAnimation"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
React-RCTImage:
:path: "../node_modules/react-native/Libraries/Image"
React-RCTLinking:
:path: "../node_modules/react-native/Libraries/LinkingIOS"
React-RCTNetwork:
:path: "../node_modules/react-native/Libraries/Network"
React-RCTSettings:
:path: "../node_modules/react-native/Libraries/Settings"
React-RCTText:
:path: "../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
Yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: cde416483dac037923206447da6e1454df403714
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
Flipper: ed161911b24ac3f237ed57febeed5d71d432d9bf
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
Flipper-Folly: 83af37379faa69497529e414bd43fbfc7cae259a
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
FlipperKit: 57764956d2f0f972c1af5075a9c8f05ca5b12349
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e
RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b
React: b0a957a2c44da4113b0c4c9853d8387f8e64e615
React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe
React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b
React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60
React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0
React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2
React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae
React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a
React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c
React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d
ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: 6fed3d06e93e3778fb148779217629dd83a22b34
COCOAPODS: 1.10.1

View File

@ -10,7 +10,8 @@
},
"dependencies": {
"react": "16.13.1",
"react-native": "0.63.4"
"react-native": "0.63.4",
"react-native-gesture-handler": "^1.10.3"
},
"devDependencies": {
"@babel/core": "^7.12.10",

View File

@ -1,31 +1,46 @@
import * as React from 'react';
import { StyleSheet, View, Text } from 'react-native';
import EmojiKeyboard from 'react-native-emoji-keyboard';
import { StyleSheet, Text, SafeAreaView, TouchableOpacity } from 'react-native';
import EmojiPicker from 'react-native-emoji-keyboard';
export default function App() {
const [result, setResult] = React.useState<number | undefined>();
const [result, setResult] = React.useState<string>();
const [isModalOpen, setIsModalOpen] = React.useState<boolean>(false);
React.useEffect(() => {
EmojiKeyboard.multiply(3, 7).then(setResult);
}, []);
const handlePick = (emoji: any) => {
console.log(emoji);
setResult(emoji.emoji);
setIsModalOpen((prev) => !prev);
};
return (
<View style={styles.container}>
<Text>Result: {result}</Text>
</View>
<SafeAreaView style={styles.container}>
<Text style={styles.text}>Result: {result}</Text>
<TouchableOpacity onPress={() => setIsModalOpen(true)}>
<Text>Open</Text>
</TouchableOpacity>
<EmojiPicker
onEmojiSelected={handlePick}
isOpen={isModalOpen}
onClose={() => setIsModalOpen(false)}
/>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
box: {
width: 60,
height: 60,
marginVertical: 20,
text: {
textAlign: 'center',
margin: 64,
fontSize: 18,
},
containerStyles: {
backgroundColor: '#efefef',
borderTopLeftRadius: 24,
borderTopRightRadius: 24,
elevation: 20,
},
});

4495
example/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@ -149,5 +149,9 @@
}
]
]
},
"dependencies": {
"react-native-gesture-handler": "^1.10.3",
"unicode-emoji-json": "^0.2.1"
}
}

101
src/EmojiKeyboard.tsx Normal file
View File

@ -0,0 +1,101 @@
import * as React from 'react';
import {
StyleSheet,
View,
FlatList,
ViewStyle,
useWindowDimensions,
Animated,
NativeSyntheticEvent,
NativeScrollEvent,
} from 'react-native';
import { CATEGORIES, CategoryTypes, EmojiType } from './types';
import { EmojiCategory } from './components/EmojiCategory';
import { KeyboardContext } from './KeyboardContext';
import { Categories } from './components/Categories';
type EmojiKeyboardProps = {
onEmojiSelected: (emoji: EmojiType) => void;
containerStyles?: ViewStyle;
numberOfColumns?: number;
emojiSize?: number;
};
export const EmojiKeyboard = ({
onEmojiSelected,
containerStyles,
numberOfColumns = 7,
emojiSize = 28,
}: EmojiKeyboardProps) => {
const { width } = useWindowDimensions();
const flatListRef = React.useRef<FlatList>(null);
const scrollX = React.useRef(new Animated.Value(0)).current;
const scrollNav = React.useRef(new Animated.Value(0)).current;
const getItemLayout = (
_: CategoryTypes[] | null | undefined,
index: number
) => ({
length: width,
offset: width * index,
index,
});
const renderItem = React.useCallback(
(props) => <EmojiCategory {...props} />,
[]
);
const onScroll = Animated.event(
[{ nativeEvent: { contentOffset: { x: scrollX } } }],
{
listener: ({
nativeEvent: {
contentOffset: { x },
},
}: NativeSyntheticEvent<NativeScrollEvent>) => {
Animated.spring(scrollNav, {
toValue: (x / width) * (28 + 9),
useNativeDriver: false,
}).start();
},
useNativeDriver: false,
}
);
return (
<KeyboardContext.Provider
value={{
onEmojiSelected,
numberOfColumns,
emojiSize,
}}
>
<View style={[styles.container, containerStyles]}>
<FlatList
data={CATEGORIES}
keyExtractor={(item) => item}
renderItem={renderItem}
removeClippedSubviews={true}
ref={flatListRef}
onScrollToIndexFailed={() => {}}
horizontal
showsHorizontalScrollIndicator={false}
pagingEnabled
scrollEventThrottle={16}
decelerationRate="fast"
getItemLayout={getItemLayout}
onScroll={onScroll}
/>
<Categories flatListRef={flatListRef} scrollNav={scrollNav} />
</View>
</KeyboardContext.Provider>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
paddingTop: 16,
},
});

109
src/EmojiPicker.tsx Normal file
View File

@ -0,0 +1,109 @@
import * as React from 'react';
import {
SafeAreaView,
Modal,
Animated,
useWindowDimensions,
StyleSheet,
} from 'react-native';
import type { EmojiKeyboardProps } from './types';
import { EmojiKeyboard } from './EmojiKeyboard';
import {
PanGestureHandler,
PanGestureHandlerGestureEvent,
State,
} from 'react-native-gesture-handler';
type EmojiPickerProps = {
isOpen: boolean;
onClose: () => void;
};
export const EmojiPicker = ({
onEmojiSelected,
isOpen,
onClose,
}: EmojiPickerProps & EmojiKeyboardProps) => {
const { height: screenHeight } = useWindowDimensions();
const offsetY = React.useRef(new Animated.Value(0)).current;
const height = React.useRef(new Animated.Value(screenHeight * 0.4)).current;
const handleGesture = ({
nativeEvent: { translationY, state },
}: PanGestureHandlerGestureEvent) => {
if (state === State.ACTIVE) {
offsetY.setValue(translationY);
}
if (state === State.END) {
// reset offset => return to current position
Animated.spring(offsetY, {
useNativeDriver: false,
toValue: 0,
}).start();
// slide => expand/collapse keyboard
if (translationY < -30) {
Animated.spring(height, {
useNativeDriver: false,
toValue: screenHeight * 0.8,
}).start();
} else if (translationY > 100) {
height.setValue(screenHeight * 0.4);
offsetY.setValue(0);
onClose();
} else {
Animated.spring(height, {
useNativeDriver: false,
toValue: screenHeight * 0.4,
}).start();
}
}
};
return (
<Modal visible={isOpen} animationType="slide" transparent={true}>
<SafeAreaView style={styles.modalContainer}>
<PanGestureHandler
onGestureEvent={handleGesture}
onHandlerStateChange={handleGesture}
>
<Animated.View style={styles.knob} />
</PanGestureHandler>
<Animated.View style={{ height: Animated.subtract(height, offsetY) }}>
<EmojiKeyboard
onEmojiSelected={(emoji) => {
height.setValue(screenHeight * 0.4);
offsetY.setValue(0);
onEmojiSelected(emoji);
onClose();
}}
containerStyles={styles.container}
/>
</Animated.View>
</SafeAreaView>
</Modal>
);
};
const styles = StyleSheet.create({
modalContainer: { flex: 1, justifyContent: 'flex-end' },
container: {
backgroundColor: '#fff',
borderRadius: 16,
shadowColor: 'black',
shadowOpacity: 0.15,
shadowOffset: { width: 0, height: 0 },
shadowRadius: 5,
},
knob: {
height: 8,
width: 50,
backgroundColor: '#fff',
marginBottom: 10,
alignSelf: 'center',
borderRadius: 4,
shadowColor: 'black',
shadowOpacity: 0.15,
shadowOffset: { width: 0, height: 0 },
shadowRadius: 5,
},
});

10
src/KeyboardContext.tsx Normal file
View File

@ -0,0 +1,10 @@
import * as React from 'react';
import type { EmojiType } from './types';
export const defaultKeyboardContext = {
onEmojiSelected: (_emoji: EmojiType) => {},
numberOfColumns: 7,
emojiSize: 24,
};
export const KeyboardContext = React.createContext(defaultKeyboardContext);

View File

@ -1 +0,0 @@
it.todo('write a test');

View File

@ -0,0 +1,72 @@
import * as React from 'react';
import { View, Animated, StyleSheet, FlatList } from 'react-native';
import { CATEGORIES, CATEGORIES_NAVIGATION, CategoryTypes } from '../types';
import { CategoryItem } from './CategoryItem';
type CategoriesProps = {
flatListRef: React.RefObject<FlatList>;
scrollNav: Animated.Value;
};
export const Categories = ({ flatListRef, scrollNav }: CategoriesProps) => {
const handleScrollToCategory = (category: CategoryTypes) => {
flatListRef?.current?.scrollToIndex({
index: CATEGORIES.indexOf(category),
});
};
return (
<View style={styles.bottomBar}>
<View style={styles.navigation}>
<FlatList
data={CATEGORIES_NAVIGATION}
keyExtractor={(item) => item.category}
renderItem={({ item }) => (
<CategoryItem
item={item}
handleScrollToCategory={handleScrollToCategory}
/>
)}
ItemSeparatorComponent={() => <View style={styles.separator} />}
scrollEnabled={false}
horizontal={true}
onScrollToIndexFailed={(e) => console.log(e)}
ListHeaderComponent={() => {
return (
<Animated.View
style={[styles.activeIndicator, { left: scrollNav }]}
/>
);
}}
/>
</View>
</View>
);
};
const styles = StyleSheet.create({
bottomBar: {
position: 'absolute',
bottom: 20,
left: 20,
right: 20,
alignItems: 'center',
},
navigation: {
backgroundColor: '#e3dbcd',
padding: 3,
borderRadius: 8,
},
separator: {
width: 1,
height: 28,
backgroundColor: '#00000011',
marginHorizontal: 4,
},
activeIndicator: {
position: 'absolute',
width: 28,
height: 28,
backgroundColor: 'white',
borderRadius: 6,
},
});

View File

@ -0,0 +1,31 @@
import * as React from 'react';
import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
import type { CategoryTypes } from '../types';
type CategoryItemProps = {
item: any;
handleScrollToCategory: (category: CategoryTypes) => void;
};
export const CategoryItem = ({
item,
handleScrollToCategory,
}: CategoryItemProps) => (
<TouchableOpacity onPress={() => handleScrollToCategory(item.category)}>
<View style={styles.container}>
<Text style={styles.icon}>{item.icon}</Text>
</View>
</TouchableOpacity>
);
const styles = StyleSheet.create({
container: {
width: 28,
height: 28,
justifyContent: 'center',
alignItems: 'center',
padding: 3,
borderRadius: 6,
},
icon: { textAlign: 'center' },
});

View File

@ -0,0 +1,72 @@
import * as React from 'react';
import {
StyleSheet,
View,
Text,
FlatList,
useWindowDimensions,
} from 'react-native';
import emojisByGroup from 'unicode-emoji-json/data-by-group.json';
import type { CategoryTypes, EmojiType } from 'src/types';
import { SingleEmoji } from './SingleEmoji';
import { KeyboardContext } from '../KeyboardContext';
export const EmojiCategory = ({ item }: { item: CategoryTypes }) => {
const { width } = useWindowDimensions();
const ctx = React.useContext(KeyboardContext);
const numberOfColumns = React.useRef<number>(
Math.floor(width / (ctx.emojiSize + 16))
);
const [data, setData] = React.useState<EmojiType[]>([]);
// console.log(width);
React.useEffect(() => {
const newData = emojisByGroup[item];
const fillWithEmpty = new Array(
numberOfColumns.current -
(emojisByGroup[item].length % numberOfColumns.current)
).fill('a');
setData([...newData, ...fillWithEmpty]);
}, [item]);
const getItemLayout = (_: EmojiType[] | null | undefined, index: number) => ({
length: ctx.emojiSize,
offset: ctx.emojiSize * Math.ceil(index / ctx.numberOfColumns),
index,
});
const renderItem = React.useCallback(
(props) => <SingleEmoji {...props} />,
[]
);
return (
<View style={[styles.container, { width: width }]}>
<Text style={styles.sectionTitle}>{item}</Text>
<FlatList
data={data}
keyExtractor={(emoji) => emoji.name}
numColumns={numberOfColumns.current}
renderItem={renderItem}
removeClippedSubviews={true}
getItemLayout={getItemLayout}
ListFooterComponent={() => <View style={styles.footer} />}
/>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
paddingHorizontal: 10,
marginTop: 12,
},
sectionTitle: {
opacity: 0.6,
marginBottom: 12,
marginLeft: 12,
},
footer: { height: 70 },
});

View File

@ -0,0 +1,22 @@
import * as React from 'react';
import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
import { KeyboardContext } from '../KeyboardContext';
import type { EmojiType } from '../types';
export const SingleEmoji = ({ item }: { item: EmojiType }) => {
const ctx = React.useContext(KeyboardContext);
return (
<TouchableOpacity
onPress={() => ctx.onEmojiSelected(item)}
style={styles.container}
>
<View>
<Text style={{ fontSize: ctx.emojiSize }}>{item.emoji}</Text>
</View>
</TouchableOpacity>
);
};
const styles = StyleSheet.create({
container: { flex: 1, padding: 8 },
});

View File

@ -1,5 +1,6 @@
export default {
multiply(a: number, b: number) {
return Promise.resolve(a * b);
},
};
import { EmojiKeyboard } from './EmojiKeyboard';
import { EmojiPicker } from './EmojiPicker';
export { EmojiKeyboard };
export default EmojiPicker;

57
src/types.ts Normal file
View File

@ -0,0 +1,57 @@
import type { ViewStyle } from 'react-native';
export type EmojiType = {
emoji: string;
emoji_version: string;
name: string;
skin_tone_support: boolean;
slug: string;
unicode_version: string;
};
export type CategoryTypes =
| 'Smileys & Emotion'
| 'People & Body'
| 'Animals & Nature'
| 'Food & Drink'
| 'Travel & Places'
| 'Activities'
| 'Objects'
| 'Symbols'
| 'Flags';
export const CATEGORIES: CategoryTypes[] = [
'Smileys & Emotion',
'People & Body',
'Animals & Nature',
'Food & Drink',
'Travel & Places',
'Activities',
'Objects',
'Symbols',
'Flags',
];
type CategoryNavigationItem = {
icon: string;
category: CategoryTypes;
};
export const CATEGORIES_NAVIGATION: CategoryNavigationItem[] = [
{ icon: '😀', category: 'Smileys & Emotion' },
{ icon: '👋', category: 'People & Body' },
{ icon: '🐵', category: 'Animals & Nature' },
{ icon: '🍇', category: 'Food & Drink' },
{ icon: '🌍', category: 'Travel & Places' },
{ icon: '🎃', category: 'Activities' },
{ icon: '👓', category: 'Objects' },
{ icon: '🏧', category: 'Symbols' },
{ icon: '🏁', category: 'Flags' },
];
export type EmojiKeyboardProps = {
onEmojiSelected: (emoji: EmojiType) => void;
containerStyles?: ViewStyle;
numberOfColumns?: number;
emojiSize?: number;
};

9604
yarn.lock Normal file

File diff suppressed because it is too large Load Diff