├── example
├── .watchmanconfig
├── .gitattributes
├── app.json
├── .babelrc
├── ios
│ ├── example
│ │ ├── Images.xcassets
│ │ │ ├── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ ├── AppDelegate.h
│ │ ├── main.m
│ │ ├── AppDelegate.m
│ │ ├── Info.plist
│ │ └── Base.lproj
│ │ │ └── LaunchScreen.xib
│ ├── exampleUITests
│ │ ├── Info.plist
│ │ └── exampleUITests.swift
│ ├── exampleTests
│ │ ├── Info.plist
│ │ └── exampleTests.m
│ ├── example-tvOSTests
│ │ └── Info.plist
│ ├── example-tvOS
│ │ └── Info.plist
│ └── example.xcodeproj
│ │ ├── xcshareddata
│ │ └── xcschemes
│ │ │ ├── exampleUITests.xcscheme
│ │ │ ├── example.xcscheme
│ │ │ └── example-tvOS.xcscheme
│ │ └── project.pbxproj
├── .buckconfig
├── __tests__
│ └── index.ios.js
├── package.json
├── .gitignore
├── index.js
└── .flowconfig
├── .gitignore
├── UltraPickerIOS
├── UltraPickerIOS.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── tims.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcuserdata
│ │ └── tims.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ └── UltraPickerIOS.xcscheme
│ └── project.pbxproj
└── UltraPickerIOS
│ ├── UltraPickerCloseBar.h
│ ├── UltraPickerIOSView.h
│ ├── UltraPickerIOSCloseBarManager.m
│ ├── Info.plist
│ ├── UltraPickerIOSManager.m
│ ├── UltraPickerCloseBar.m
│ └── UltraPickerIOSView.m
├── tsconfig.json
├── package.json
├── .github
└── workflows
│ └── npm-publish.yml
├── LICENSE
├── js
├── UltraPickerIOS.d.ts
└── UltraPickerIOS.js
├── README.md
└── ts
└── UltraPickerIOS.tsx
/example/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/example/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj -text
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.tgz
2 | node_modules
3 | yarn.lock
4 | .vscode
5 | package-lock.json
--------------------------------------------------------------------------------
/example/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "displayName": "example"
4 | }
--------------------------------------------------------------------------------
/example/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["module:metro-react-native-babel-preset"]
3 | }
4 |
--------------------------------------------------------------------------------
/example/ios/example/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/example/.buckconfig:
--------------------------------------------------------------------------------
1 |
2 | [android]
3 | target = Google Inc.:Google APIs:23
4 |
5 | [maven_repositories]
6 | central = https://repo1.maven.org/maven2
7 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS.xcodeproj/project.xcworkspace/xcuserdata/tims.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sportsbet/react-native-ultra-picker-ios/HEAD/UltraPickerIOS/UltraPickerIOS.xcodeproj/project.xcworkspace/xcuserdata/tims.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/example/__tests__/index.ios.js:
--------------------------------------------------------------------------------
1 | import 'react-native';
2 | import React from 'react';
3 | import Index from '../index.ios.js';
4 |
5 | // Note: test renderer must be required after react-native.
6 | import renderer from 'react-test-renderer';
7 |
8 | it('renders correctly', () => {
9 | const tree = renderer.create(
10 |
11 | );
12 | });
13 |
--------------------------------------------------------------------------------
/example/ios/example/AppDelegate.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 |
10 | @interface AppDelegate : UIResponder
11 |
12 | @property (nonatomic, strong) UIWindow *window;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/example/ios/example/main.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 |
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "jsx": "react",
4 | "target": "es5",
5 | "experimentalDecorators": true,
6 | "preserveConstEnums": true,
7 | "skipDefaultLibCheck": true,
8 | "skipLibCheck": true,
9 | "allowSyntheticDefaultImports": true,
10 | "sourceMap": false,
11 | "outDir": "js",
12 | "rootDir": "ts",
13 | "moduleResolution": "node",
14 | "declaration": true
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS/UltraPickerCloseBar.h:
--------------------------------------------------------------------------------
1 | //
2 | // UltraPickerCloseBar.h
3 | // UltraPickerIOS
4 | //
5 | // Created by Tim Sawtell on 3/10/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface UltraPickerCloseBar : UIToolbar
13 |
14 | @property (nonatomic, copy) NSString *closeButtonText;
15 | @property (nonatomic, copy) RCTBubblingEventBlock onClose;
16 | @property (nonatomic, copy) NSString *testID;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS/UltraPickerIOSView.h:
--------------------------------------------------------------------------------
1 | //
2 | // UPIView.h
3 | // Ultra-Picker-iOS
4 | //
5 | // Created by Tim Sawtell on 3/9/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface UltraPickerIOSView : UIPickerView
13 |
14 | @property (nonatomic, copy) NSArray *> *> *componentsData;
15 | @property (nonatomic, copy) NSArray *selectedIndexes;
16 | @property (nonatomic, copy) RCTBubblingEventBlock onChange;
17 | @property (nonatomic, copy) NSString *testID;
18 | @end
19 |
--------------------------------------------------------------------------------
/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "postinstall": "rm -rf node_modules/react-native-ultra-picker-ios/{node_modules,example}",
7 | "start": "node node_modules/react-native/local-cli/cli.js start",
8 | "test": "jest"
9 | },
10 | "dependencies": {
11 | "react": "16.5.0",
12 | "react-native": "0.57.2"
13 | },
14 | "devDependencies": {
15 | "babel-jest": "20.0.3",
16 | "jest": "20.0.4",
17 | "react-native-ultra-picker-ios": "file:../",
18 | "react-test-renderer": "^16.0.0",
19 | "metro-react-native-babel-preset": "^0.47.1"
20 | },
21 | "jest": {
22 | "preset": "react-native"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS.xcodeproj/xcuserdata/tims.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | UltraPickerIOS.xcscheme
8 |
9 | orderHint
10 | 1
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 2B8D727A1E70B980001431B0
16 |
17 | primary
18 |
19 |
20 | 2BB1CF051E70FB710023F72C
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/example/ios/exampleUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS/UltraPickerIOSCloseBarManager.m:
--------------------------------------------------------------------------------
1 | //
2 | // UltraPickerIOSCloseBarManager.m
3 | // UltraPickerIOS
4 | //
5 | // Created by Tim Sawtell on 3/10/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 |
9 | #import "UltraPickerCloseBar.h"
10 | #import
11 | #import
12 |
13 | @interface UltraPickerIOSCloseBarManager : RCTViewManager
14 |
15 | @end
16 |
17 | @implementation UltraPickerIOSCloseBarManager
18 |
19 | RCT_EXPORT_MODULE();
20 |
21 | - (UIView *)view
22 | {
23 | UltraPickerCloseBar *view = [UltraPickerCloseBar new];
24 | return view;
25 | }
26 |
27 | RCT_EXPORT_VIEW_PROPERTY(closeButtonText, NSString)
28 | RCT_EXPORT_VIEW_PROPERTY(onClose, RCTBubblingEventBlock)
29 | RCT_EXPORT_VIEW_PROPERTY(testID, NSString)
30 |
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/example/ios/exampleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/example/ios/example-tvOSTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS/UltraPickerIOSManager.m:
--------------------------------------------------------------------------------
1 | //
2 | // UPIManager.m
3 | // Ultra-Picker-iOS
4 | //
5 | // Created by Tim Sawtell on 3/9/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 |
9 | #import "UltraPickerIOSView.h"
10 | #import
11 | #import
12 |
13 | @interface UltraPickerIOSManager : RCTViewManager
14 |
15 | @end
16 |
17 | @implementation UltraPickerIOSManager
18 |
19 | RCT_EXPORT_MODULE()
20 |
21 | - (UIView *)view
22 | {
23 | UltraPickerIOSView *view = [UltraPickerIOSView new];
24 | view.delegate = view;
25 | view.dataSource = view;
26 | // Work around an iOS bug that hides the selection indicator lines
27 | [view selectRow:0 inComponent:0 animated:YES];
28 | return view;
29 | }
30 |
31 |
32 | RCT_EXPORT_VIEW_PROPERTY(componentsData, NSArray)
33 | RCT_EXPORT_VIEW_PROPERTY(selectedIndexes, NSArray)
34 | RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock)
35 | RCT_EXPORT_VIEW_PROPERTY(testID, NSString)
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-ultra-picker-ios",
3 | "version": "0.1.9",
4 | "description": "A multiple component Picker for react-native iOS. More than one column, imagine that!",
5 | "main": "js/UltraPickerIOS.js",
6 | "typings": "js/UltraPickerIOS.d.ts",
7 | "repository": {
8 | "url": "https://github.com/sportsbet/react-native-ultra-picker-ios.git"
9 | },
10 | "scripts": {
11 | "build": "./node_modules/.bin/tsc",
12 | "test": "echo \"Error: no test specified\" && exit 1"
13 | },
14 | "keywords": [
15 | "picker",
16 | "ios",
17 | "react-native"
18 | ],
19 | "author": "Tim Sawtell , Edward Jones (https://github.com/sportsbet)",
20 | "devDependencies": {
21 | "@types/react": "^16.0",
22 | "@types/react-native": "^0.48.1",
23 | "react": "^16.0",
24 | "react-native": "^0.48.1",
25 | "typescript": "^2.5"
26 | },
27 | "files": [
28 | "js",
29 | "UltraPickerIOS"
30 | ],
31 | "license": "MIT"
32 | }
33 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | project.xcworkspace
24 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 |
33 | # node.js
34 | #
35 | node_modules/
36 | npm-debug.log
37 | yarn-error.log
38 |
39 | # BUCK
40 | buck-out/
41 | \.buckd/
42 | *.keystore
43 |
44 | # fastlane
45 | #
46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47 | # screenshots whenever they are needed.
48 | # For more information about the recommended setup visit:
49 | # https://docs.fastlane.tools/best-practices/source-control/
50 |
51 | */fastlane/report.xml
52 | */fastlane/Preview.html
53 | */fastlane/screenshots
54 |
55 | # Bundle artifact
56 | *.jsbundle
57 |
--------------------------------------------------------------------------------
/.github/workflows/npm-publish.yml:
--------------------------------------------------------------------------------
1 | name: Node.js Package
2 |
3 | on:
4 | release:
5 | types: [created]
6 | pull_request:
7 | types: [opened, synchronize, reopened]
8 |
9 | jobs:
10 | build:
11 | runs-on: ubuntu-latest
12 | if: github.event_name != 'release'
13 | steps:
14 | - uses: actions/checkout@v2
15 | - uses: actions/setup-node@v1
16 | with:
17 | node-version: 12
18 | - run: yarn install
19 | - run: yarn build
20 |
21 | publish-npm:
22 | if: github.event_name == 'release'
23 | runs-on: ubuntu-latest
24 | steps:
25 | - uses: actions/checkout@v2
26 | - uses: actions/setup-node@v1
27 | with:
28 | node-version: 12
29 | registry-url: https://registry.npmjs.org/
30 | - run: yarn install
31 | - run: yarn build
32 | - run: npm version --force --no-git-tag-version "$RELEASE_TAG_NAME"
33 | env:
34 | RELEASE_TAG_NAME: ${{github.event.release.tag_name}}
35 | - run: npm publish
36 | env:
37 | NODE_AUTH_TOKEN: ${{secrets.npm_token}}
38 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2017 Sportsbet Pty Ltd
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/example/ios/example/AppDelegate.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import "AppDelegate.h"
9 |
10 | #import
11 | #import
12 |
13 | @implementation AppDelegate
14 |
15 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
16 | {
17 | NSURL *jsCodeLocation;
18 |
19 | jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
20 |
21 | RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
22 | moduleName:@"example"
23 | initialProperties:nil
24 | launchOptions:launchOptions];
25 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
26 |
27 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
28 | UIViewController *rootViewController = [UIViewController new];
29 | rootViewController.view = rootView;
30 | self.window.rootViewController = rootViewController;
31 | [self.window makeKeyAndVisible];
32 | return YES;
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/js/UltraPickerIOS.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import * as React from 'react';
3 | import { ViewStyle } from 'react-native';
4 | export interface ComponentGroup {
5 | fontFamily?: string;
6 | fontSize?: string;
7 | }
8 | export interface ComponentItemProps {
9 | label: string;
10 | value?: any;
11 | selected?: boolean;
12 | fontFamily?: string;
13 | fontSize?: string;
14 | }
15 | export declare class Group extends React.Component {
16 | render(): any;
17 | }
18 | export declare class Item extends React.Component {
19 | render(): any;
20 | }
21 | export interface UltraPickerIOSProps {
22 | onChange?: (result: any) => void;
23 | style: ViewStyle;
24 | testID?: string;
25 | }
26 | export interface UltraPickerIOSState {
27 | componentsData?: ComponentGroup[];
28 | selectedIndexes?: Number[];
29 | closeBar?: JSX.Element;
30 | }
31 | export declare class UltraPickerIOS extends React.Component {
32 | constructor(props: any);
33 | _stateBasedOnProps(nextProps: any): UltraPickerIOSState;
34 | componentWillReceiveProps(nextProps: any): void;
35 | render(): JSX.Element;
36 | }
37 | export interface UltraPickerIOSCloseBarProps {
38 | closeButtonText?: string;
39 | onClose?: (result: any) => void;
40 | style?: ViewStyle;
41 | buttonTestID?: string;
42 | }
43 | export declare class UltraPickerIOSCloseBar extends React.Component {
44 | render(): JSX.Element;
45 | }
46 |
--------------------------------------------------------------------------------
/example/ios/exampleUITests/exampleUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // exampleUITests.swift
3 | // exampleUITests
4 | //
5 | // Created by Tim Sawtell on 11/10/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 |
9 | import XCTest
10 |
11 | class exampleUITests: XCTestCase {
12 |
13 | override func setUp() {
14 | super.setUp()
15 |
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 |
18 | // In UI tests it is usually best to stop immediately when a failure occurs.
19 | continueAfterFailure = false
20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
21 | XCUIApplication().launch()
22 |
23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
24 | }
25 |
26 | override func tearDown() {
27 | // Put teardown code here. This method is called after the invocation of each test method in the class.
28 | super.tearDown()
29 | }
30 |
31 | func testExample() {
32 | let app = XCUIApplication()
33 | let pickerView = app.pickers["UltraPickerView"]
34 | XCTAssert(pickerView.exists)
35 |
36 | let closeButton = app.buttons["UltraPickerCloseBarButton"]
37 | XCTAssert(closeButton.exists)
38 | XCTAssert(closeButton.label == "Close")
39 |
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS/UltraPickerCloseBar.m:
--------------------------------------------------------------------------------
1 | //
2 | // UltraPickerCloseBar.m
3 | // UltraPickerIOS
4 | //
5 | // Created by Tim Sawtell on 3/10/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 |
9 | #import "UltraPickerCloseBar.h"
10 |
11 | @implementation UltraPickerCloseBar
12 |
13 | - (void)setCloseButtonText:(NSString *)closeButtonText
14 | {
15 | _closeButtonText = closeButtonText;
16 | UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
17 |
18 | UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:closeButtonText
19 | style:UIBarButtonItemStyleDone
20 | target:self
21 | action:@selector(doneTapped)];
22 | self.items = @[flex, barButtonDone];
23 |
24 | [self setBackgroundImage:[UIImage new]
25 | forToolbarPosition:UIToolbarPositionAny
26 | barMetrics:UIBarMetricsDefault];
27 |
28 | self.backgroundColor = [UIColor clearColor]; // set using the backgroundColor style in the react view
29 | self.clipsToBounds = YES; // removes the border. Again, use the view style in React to change this
30 | }
31 |
32 | - (void) setTestID:(NSString *)testID
33 | {
34 | _testID = testID;
35 | self.accessibilityIdentifier = testID;
36 | }
37 |
38 | - (void)doneTapped
39 | {
40 | if (self.onClose) {
41 | self.onClose(nil);
42 | }
43 | }
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/example/ios/example-tvOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UIViewControllerBasedStatusBarAppearance
38 |
39 | NSLocationWhenInUseUsageDescription
40 |
41 | NSAppTransportSecurity
42 |
43 |
44 | NSExceptionDomains
45 |
46 | localhost
47 |
48 | NSExceptionAllowsInsecureHTTPLoads
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/example/ios/example/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | example
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSRequiresIPhoneOS
26 |
27 | NSLocationWhenInUseUsageDescription
28 |
29 | UILaunchStoryboardName
30 | LaunchScreen
31 | UIRequiredDeviceCapabilities
32 |
33 | armv7
34 |
35 | UISupportedInterfaceOrientations
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationLandscapeLeft
39 | UIInterfaceOrientationLandscapeRight
40 |
41 | UIViewControllerBasedStatusBarAppearance
42 |
43 | NSLocationWhenInUseUsageDescription
44 |
45 | NSAppTransportSecurity
46 |
47 |
48 | NSAllowsArbitraryLoads
49 |
50 | NSExceptionDomains
51 |
52 | localhost
53 |
54 | NSExceptionAllowsInsecureHTTPLoads
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/example/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * React Native Ultra Picker Example
3 | * @flow
4 | */
5 |
6 | import * as React from "react"
7 | import {
8 | AppRegistry,
9 | StyleSheet,
10 | View
11 | } from "react-native"
12 |
13 | import {
14 | UltraPickerIOS,
15 | UltraPickerIOSCloseBar,
16 | Group,
17 | Item
18 | } from "react-native-ultra-picker-ios"
19 |
20 | export class reactNativeUltraPickerIosExample extends React.Component {
21 |
22 | pickerClosed() {
23 | console.log("Closed");
24 | }
25 |
26 | pickerChanged(result) {
27 | console.log(JSON.stringify(result.nativeEvent));
28 | }
29 |
30 | render() {
31 | return (
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | );
52 | }
53 | }
54 |
55 | let styles = StyleSheet.create({
56 | container: {
57 | flex: 1,
58 | justifyContent: "center"
59 | },
60 | closeBar: {
61 | height: 44
62 | },
63 | ultraPicker: {
64 | height: 220
65 | }
66 | });
67 |
68 | AppRegistry.registerComponent("example", () => reactNativeUltraPickerIosExample)
69 |
--------------------------------------------------------------------------------
/example/ios/example.xcodeproj/xcshareddata/xcschemes/exampleUITests.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
14 |
15 |
17 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
39 |
40 |
41 |
42 |
48 |
49 |
51 |
52 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/example/ios/exampleTests/exampleTests.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | *
4 | * This source code is licensed under the MIT license found in the
5 | * LICENSE file in the root directory of this source tree.
6 | */
7 |
8 | #import
9 | #import
10 |
11 | #import
12 | #import
13 |
14 | #define TIMEOUT_SECONDS 600
15 | #define TEXT_TO_LOOK_FOR @"Welcome to React Native!"
16 |
17 | @interface exampleTests : XCTestCase
18 |
19 | @end
20 |
21 | @implementation exampleTests
22 |
23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
24 | {
25 | if (test(view)) {
26 | return YES;
27 | }
28 | for (UIView *subview in [view subviews]) {
29 | if ([self findSubviewInView:subview matching:test]) {
30 | return YES;
31 | }
32 | }
33 | return NO;
34 | }
35 |
36 | - (void)testRendersWelcomeScreen
37 | {
38 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
39 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
40 | BOOL foundElement = NO;
41 |
42 | __block NSString *redboxError = nil;
43 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
44 | if (level >= RCTLogLevelError) {
45 | redboxError = message;
46 | }
47 | });
48 |
49 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
50 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
51 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
52 |
53 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
54 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
55 | return YES;
56 | }
57 | return NO;
58 | }];
59 | }
60 |
61 | RCTSetLogFunction(RCTDefaultLogFunction);
62 |
63 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
64 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
65 | }
66 |
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/example/.flowconfig:
--------------------------------------------------------------------------------
1 | [ignore]
2 | ; We fork some components by platform
3 | .*/*[.]android.js
4 |
5 | ; Ignore "BUCK" generated dirs
6 | /\.buckd/
7 |
8 | ; Ignore unexpected extra "@providesModule"
9 | .*/node_modules/.*/node_modules/fbjs/.*
10 |
11 | ; Ignore duplicate module providers
12 | ; For RN Apps installed via npm, "Libraries" folder is inside
13 | ; "node_modules/react-native" but in the source repo it is in the root
14 | .*/Libraries/react-native/React.js
15 |
16 | ; Ignore polyfills
17 | .*/Libraries/polyfills/.*
18 |
19 | ; Ignore metro
20 | .*/node_modules/metro/.*
21 |
22 | [include]
23 |
24 | [libs]
25 | node_modules/react-native/Libraries/react-native/react-native-interface.js
26 | node_modules/react-native/flow/
27 | node_modules/react-native/flow-github/
28 |
29 | [options]
30 | emoji=true
31 |
32 | esproposal.optional_chaining=enable
33 | esproposal.nullish_coalescing=enable
34 |
35 | module.system=haste
36 | module.system.haste.use_name_reducers=true
37 | # get basename
38 | module.system.haste.name_reducers='^.*/\([a-zA-Z0-9$_.-]+\.js\(\.flow\)?\)$' -> '\1'
39 | # strip .js or .js.flow suffix
40 | module.system.haste.name_reducers='^\(.*\)\.js\(\.flow\)?$' -> '\1'
41 | # strip .ios suffix
42 | module.system.haste.name_reducers='^\(.*\)\.ios$' -> '\1'
43 | module.system.haste.name_reducers='^\(.*\)\.android$' -> '\1'
44 | module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1'
45 | module.system.haste.paths.blacklist=.*/__tests__/.*
46 | module.system.haste.paths.blacklist=.*/__mocks__/.*
47 | module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/Animated/src/polyfills/.*
48 | module.system.haste.paths.whitelist=/node_modules/react-native/Libraries/.*
49 |
50 | munge_underscores=true
51 |
52 | 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\)$' -> 'RelativeImageStub'
53 |
54 | module.file_ext=.js
55 | module.file_ext=.jsx
56 | module.file_ext=.json
57 | module.file_ext=.native.js
58 |
59 | suppress_type=$FlowIssue
60 | suppress_type=$FlowFixMe
61 | suppress_type=$FlowFixMeProps
62 | suppress_type=$FlowFixMeState
63 |
64 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
65 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
66 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
67 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
68 |
69 | [version]
70 | ^0.78.0
71 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React Native Ultra Picker iOS
2 |
3 | A multiple column (component) UIPickerView component
4 |
5 | - Supports Typescript!
6 | - es5 compliant
7 |
8 | # Why?
9 |
10 | Picker from React-Native (at the time of writing) only supports a single column. This native component allows for n columns and an optional Close Bar, with callbacks for `onClose` and `onChanged`.
11 |
12 | # Version 0.1.8
13 |
14 | - Fixes a bug that was triggered after presenting a picker when another picker has been already presented and the second one has less sections than the first.
15 | - Updated example app to support RN 57
16 |
17 | # Version 0.1.5
18 |
19 | - Minimum React-Native version: 0.48.1
20 | - Minimum React version: 16.0
21 | - Use 0.1.4 if this is an issue for your project
22 | - Fixed the lines indicating the selected row not rendering
23 | - Added support for `testID` property on the picker view and the close bar
24 |
25 | # Version 0.1.4
26 |
27 | Added support for custom Font and Size on items in the picker, see updated example.
28 |
29 | # Installing
30 |
31 | ```
32 | yarn install "react-native-ultra-picker-ios"
33 | react-native link react-native-ultra-picker-ios
34 | ```
35 | - Open your existing app's .xcodeproj file
36 | - Drag the /.node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS.xcodeproj file into the Libraries group in your xcode project (Figure A)
37 | - Choose your app's Target and select the Build Phases tab.
38 | Under Link Binary With Libraries click the + button and add `libUltraPickerIOS.a` (Figure B)
39 |
40 | # Running the Example
41 |
42 | Note: You *must* use `yarn`. If you use `npm`, it will do some symlinking thing
43 | which causes the React Packager to get very upset.
44 |
45 | * `cd example`
46 | * `yarn && react-native link react-native-ultra-picker-ios`
47 | * `yarn start`
48 |
49 | Then run a simulator either using Xcode or `react-native run-ios`.
50 |
51 | 
52 |
53 |
54 | # License:
55 |
56 | ```
57 | The MIT License
58 |
59 | Copyright (c) 2017 Sportsbet Pty Ltd
60 |
61 | Permission is hereby granted, free of charge, to any person obtaining a copy
62 | of this software and associated documentation files (the "Software"), to deal
63 | in the Software without restriction, including without limitation the rights
64 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
65 | copies of the Software, and to permit persons to whom the Software is
66 | furnished to do so, subject to the following conditions:
67 |
68 | The above copyright notice and this permission notice shall be included in all
69 | copies or substantial portions of the Software.
70 |
71 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
72 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
73 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
74 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
75 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
76 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
77 | SOFTWARE.
78 | ```
79 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS.xcodeproj/xcuserdata/tims.xcuserdatad/xcschemes/UltraPickerIOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 |
35 |
45 |
46 |
52 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
70 |
71 |
72 |
73 |
75 |
76 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/example/ios/example/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
21 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS/UltraPickerIOSView.m:
--------------------------------------------------------------------------------
1 | //
2 | // UPIView.m
3 | // Ultra-Picker-iOS
4 | //
5 | // Created by Tim Sawtell on 3/9/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 |
9 | #import "UltraPickerIOSView.h"
10 |
11 | @interface UltraPickerIOSView()
12 |
13 | @end
14 |
15 | NSInteger const UPPickerDefaultFontSize = 17.0;
16 |
17 | @implementation UltraPickerIOSView
18 |
19 | - (void) setComponentsData:(NSArray *)componentsData
20 | {
21 | if (componentsData != _componentsData) {
22 | _componentsData = [componentsData copy];
23 | [self setNeedsLayout];
24 |
25 | if (self.selectedIndexes) {
26 | for (NSInteger i = 0; i < self.selectedIndexes.count; i++) {
27 | if (i < self.componentsData.count) {
28 | NSInteger index = [self.selectedIndexes[i] integerValue];
29 | [self selectRow:index inComponent:i animated:NO];
30 | }
31 | }
32 | }
33 | }
34 | }
35 |
36 | - (void) setSelectedIndexes:(NSArray *)selectedIndexes
37 | {
38 | _selectedIndexes = selectedIndexes;
39 | if (!self.componentsData) {
40 | return;
41 | }
42 | for (NSInteger i = 0; i < selectedIndexes.count; i++) {
43 | NSInteger index = [selectedIndexes[i] integerValue];
44 | [self selectRow:index inComponent:i animated:NO];
45 | }
46 | }
47 |
48 | - (void) setTestID:(NSString *)testID
49 | {
50 | _testID = testID;
51 | self.accessibilityIdentifier = testID;
52 | }
53 |
54 | - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
55 | {
56 | // Never return zero, or the selection indicator lines won't render
57 | return MAX(self.componentsData.count, 1);
58 | }
59 |
60 | - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
61 | {
62 | // Never return zero, or the selection indicator lines won't render
63 | return MAX([[[self.componentsData objectAtIndex:component] valueForKey:@"items"] count], 1);
64 | }
65 |
66 | - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
67 | {
68 | return [self labelForRow:row forComponent:component];
69 | }
70 |
71 | - (NSString *)labelForRow:(NSInteger)row forComponent:(NSInteger)component
72 | {
73 | NSString *text = [[[[self.componentsData objectAtIndex:component] valueForKey:@"items"] objectAtIndex:row] valueForKey:@"label"];
74 | if (!text) {
75 | return @"";
76 | } else {
77 | return text;
78 | }
79 | }
80 |
81 | -(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
82 |
83 | UILabel *displayLabel;
84 |
85 | if (view) {
86 | displayLabel = (UILabel *)view;
87 | }else {
88 | displayLabel = [UILabel new];
89 | displayLabel.textAlignment = NSTextAlignmentCenter;
90 | }
91 |
92 | NSString *fontName;
93 | NSInteger fontSize;
94 | UIFont *font = nil;
95 |
96 | //Check for property on the Item first, then the Group
97 | NSString *itemFontFamily = [[[[self.componentsData objectAtIndex:component] valueForKey:@"items"] objectAtIndex:row] valueForKey:@"fontFamily"];
98 | NSString *itemFontSize = [[[[self.componentsData objectAtIndex:component] valueForKey:@"items"] objectAtIndex:row] valueForKey:@"fontSize"];
99 |
100 | if (itemFontFamily != nil || itemFontSize != nil) {
101 | fontName = itemFontFamily;
102 | fontSize = itemFontSize.floatValue;
103 | } else {
104 | NSString *groupFontFamily = [[self.componentsData objectAtIndex:component] valueForKey:@"fontFamily"];
105 | NSString *groupFontSize = [[self.componentsData objectAtIndex:component] valueForKey:@"fontSize"];
106 |
107 | fontName = groupFontFamily;
108 | fontSize = groupFontSize.floatValue;
109 | }
110 |
111 | if (fontName != nil) {
112 | font = [UIFont fontWithName:fontName size:fontSize];
113 | } else {
114 | font = [UIFont systemFontOfSize:fontSize];
115 | }
116 |
117 | if (font) {
118 | displayLabel.font = font;
119 | }
120 |
121 | displayLabel.text = [self labelForRow:row forComponent:component];
122 |
123 | return displayLabel;
124 | }
125 |
126 | - (NSString *)valueForRow:(NSInteger)row forComponent:(NSInteger)component
127 | {
128 | NSString *text = [[[[self.componentsData objectAtIndex:component] valueForKey:@"items"] objectAtIndex:row] valueForKey:@"value"];
129 | if (!text) {
130 | return @"";
131 | } else {
132 | return text;
133 | }
134 | }
135 |
136 | - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
137 | {
138 | NSDictionary *event = @{
139 | @"newIndex": @(row),
140 | @"component": @(component),
141 | @"newValue": [self valueForRow:row forComponent:component],
142 | @"newLabel": [self labelForRow:row forComponent:component]
143 | };
144 |
145 | if (self.onChange) {
146 | self.onChange(event);
147 | }
148 | }
149 |
150 | @end
151 |
--------------------------------------------------------------------------------
/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
43 |
49 |
50 |
51 |
52 |
53 |
58 |
59 |
61 |
67 |
68 |
69 |
70 |
71 |
77 |
78 |
79 |
80 |
81 |
82 |
92 |
94 |
100 |
101 |
102 |
103 |
104 |
105 |
111 |
113 |
119 |
120 |
121 |
122 |
124 |
125 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/example/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
43 |
49 |
50 |
51 |
52 |
53 |
58 |
59 |
61 |
67 |
68 |
69 |
70 |
71 |
77 |
78 |
79 |
80 |
81 |
82 |
92 |
94 |
100 |
101 |
102 |
103 |
104 |
105 |
111 |
113 |
119 |
120 |
121 |
122 |
124 |
125 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/ts/UltraPickerIOS.tsx:
--------------------------------------------------------------------------------
1 | //
2 | // UltraPickerIOS
3 | //
4 | // Created by Tim Sawtell on 3/10/17.
5 | // Copyright © 2017 Sportsbet. All rights reserved.
6 | //
7 |
8 | import * as React from 'react';
9 | import {
10 | StyleSheet,
11 | View,
12 | ViewStyle,
13 | NativeSyntheticEvent,
14 | StyleProp
15 | } from 'react-native';
16 |
17 | import { requireNativeComponent } from 'react-native';
18 | const UltraPickerIOSNative = requireNativeComponent("UltraPickerIOS", null) as React.ComponentClass;
19 | const UltraPickerIOSCloseBarNative = requireNativeComponent("UltraPickerIOSCloseBar", null) as React.ComponentClass ;
20 | const DEFAULT_CLOSEBAR_HEIGHT = 44
21 | const DEFAULT_PICKER_HEIGHT = 216
22 |
23 | interface UltraPickerIOSNative {
24 | componentsData?: any,
25 | selectedIndexes?: Number[]
26 | onChange?: (result: any) => void
27 | style?: StyleProp
28 | testID?: string
29 | }
30 |
31 | interface UltraPickerIOSCloseBarNative {
32 | closeButtonText?: string
33 | onClose?: (result: any) => void
34 | style?: StyleProp
35 | buttonTestID?: string
36 | }
37 |
38 | export interface ComponentGroup {
39 | fontFamily?: string,
40 | fontSize?: string
41 | }
42 |
43 | export interface ComponentItemProps {
44 | label: string,
45 | value?: any,
46 | selected?: boolean,
47 | fontFamily?: string,
48 | fontSize?: string
49 | }
50 |
51 | interface NativeGroup extends ComponentGroup {
52 | items?: ComponentItemProps[],
53 | }
54 |
55 | export class Group extends React.Component {
56 | render() {
57 | return null
58 | }
59 | }
60 |
61 | export class Item extends React.Component {
62 | render() {
63 | return null
64 | }
65 | }
66 |
67 | export interface UltraPickerChangeEvent {
68 | newIndex: number
69 | component: number
70 | newValue: string
71 | newLabel: string
72 | }
73 |
74 | export interface UltraPickerIOSProps {
75 | onChange?: (result: NativeSyntheticEvent) => void
76 | style: StyleProp
77 | testID?: string
78 | }
79 |
80 | export interface UltraPickerIOSState {
81 | componentsData?: ComponentGroup[]
82 | selectedIndexes?: Number[]
83 | closeBar?: JSX.Element
84 | }
85 |
86 | export class UltraPickerIOS extends React.Component {
87 |
88 | constructor(props) {
89 | super(props);
90 | this._stateBasedOnProps.bind(this)
91 | this.state = this._stateBasedOnProps(props)
92 | }
93 |
94 | _stateBasedOnProps(nextProps): UltraPickerIOSState {
95 | let nextState = {
96 | componentsData: null,
97 | closeBar: null,
98 | selectedIndexes: null
99 | }
100 | let components = []
101 | let selectedIndexes = []
102 | if (!nextProps.children) {
103 | return nextState
104 | }
105 | let pickerChildren = null
106 | if (nextProps.children.constructor === Array) {
107 | pickerChildren = nextProps.children
108 | } else {
109 | pickerChildren = [nextProps.children]
110 | }
111 | pickerChildren.forEach((child, index) => {
112 | if (!child) {
113 | return
114 | }
115 | if (child.type === UltraPickerIOSCloseBar) {
116 | nextState.closeBar = child
117 | } else if (child.type === Group) {
118 | let group: ComponentItemProps[] = []
119 | let groupSelectedItem = 0 // item at index 0 by default
120 | let items = null
121 | if (child.props.children) {
122 | if (child.props.children.constructor === Array) {
123 | items = child.props.children
124 | } else {
125 | items = [child.props.children]
126 | }
127 | items.forEach((item, index) => {
128 | if (item.type === Item && item.props.label) {
129 | const nativeItem: ComponentItemProps = {
130 | label: item.props.label,
131 | fontFamily: item.props.fontFamily,
132 | fontSize: item.props.fontSize,
133 | value: (item.props.value || null)
134 | }
135 | group.push(nativeItem)
136 | if (item.props.selected) {
137 | groupSelectedItem = index
138 | }
139 | }
140 | })
141 | if (group.length > 0) {
142 | const nativeGroup: NativeGroup = {
143 | items: group,
144 | fontFamily: child.props.fontFamily,
145 | fontSize: child.props.fontSize
146 | }
147 | components.push(nativeGroup)
148 | selectedIndexes.push(groupSelectedItem)
149 | }
150 | }
151 | }
152 | })
153 | nextState.componentsData = components
154 | nextState.selectedIndexes = selectedIndexes
155 | return nextState
156 | }
157 |
158 | componentWillReceiveProps(nextProps) {
159 | this.setState(this._stateBasedOnProps(nextProps))
160 | }
161 |
162 | render() {
163 | // Allow the caller to not specify any style yet make this component visible
164 | // via default heights. Adjust the size of `parentViewStyle` so that if there
165 | // is a CloseBar provided, the picker is the same size as specified by
166 | // UltraPickerIOS.style and the parent (encapsulating) view is made larger
167 | // to fit the CloseBar
168 | let pickerViewStyle = {
169 | height: DEFAULT_PICKER_HEIGHT,
170 | ...StyleSheet.flatten(this.props.style)
171 | }
172 | let parentViewStyle = {
173 | ...pickerViewStyle
174 | }
175 | if (this.state.closeBar) {
176 | parentViewStyle.height = parentViewStyle.height as number + DEFAULT_CLOSEBAR_HEIGHT
177 | }
178 | return (
179 |
180 | {this.state.closeBar}
181 |
188 |
189 | )
190 | }
191 | }
192 |
193 | export interface UltraPickerIOSCloseBarProps {
194 | closeButtonText?: string
195 | onClose?: (result: any) => void
196 | style?: StyleProp,
197 | buttonTestID?: string
198 | }
199 |
200 | export class UltraPickerIOSCloseBar extends React.Component {
201 |
202 | render() {
203 | let style = {
204 | height: DEFAULT_CLOSEBAR_HEIGHT,
205 | ... StyleSheet.flatten(this.props.style)
206 | }
207 | let closeButtonText = this.props.closeButtonText || "Close"
208 | return (
209 |
215 | )
216 | }
217 | }
218 |
--------------------------------------------------------------------------------
/js/UltraPickerIOS.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | //
3 | // UltraPickerIOS
4 | //
5 | // Created by Tim Sawtell on 3/10/17.
6 | // Copyright © 2017 Sportsbet. All rights reserved.
7 | //
8 | var __extends = (this && this.__extends) || (function () {
9 | var extendStatics = function (d, b) {
10 | extendStatics = Object.setPrototypeOf ||
11 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
12 | function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
13 | return extendStatics(d, b);
14 | }
15 | return function (d, b) {
16 | extendStatics(d, b);
17 | function __() { this.constructor = d; }
18 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19 | };
20 | })();
21 | var __assign = (this && this.__assign) || function () {
22 | __assign = Object.assign || function(t) {
23 | for (var s, i = 1, n = arguments.length; i < n; i++) {
24 | s = arguments[i];
25 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
26 | t[p] = s[p];
27 | }
28 | return t;
29 | };
30 | return __assign.apply(this, arguments);
31 | };
32 | exports.__esModule = true;
33 | var React = require("react");
34 | var react_native_1 = require("react-native");
35 | var react_native_2 = require("react-native");
36 | var UltraPickerIOSNative = react_native_2.requireNativeComponent("UltraPickerIOS", null);
37 | var UltraPickerIOSCloseBarNative = react_native_2.requireNativeComponent("UltraPickerIOSCloseBar", null);
38 | var DEFAULT_CLOSEBAR_HEIGHT = 44;
39 | var DEFAULT_PICKER_HEIGHT = 216;
40 | var Group = /** @class */ (function (_super) {
41 | __extends(Group, _super);
42 | function Group() {
43 | return _super !== null && _super.apply(this, arguments) || this;
44 | }
45 | Group.prototype.render = function () {
46 | return null;
47 | };
48 | return Group;
49 | }(React.Component));
50 | exports.Group = Group;
51 | var Item = /** @class */ (function (_super) {
52 | __extends(Item, _super);
53 | function Item() {
54 | return _super !== null && _super.apply(this, arguments) || this;
55 | }
56 | Item.prototype.render = function () {
57 | return null;
58 | };
59 | return Item;
60 | }(React.Component));
61 | exports.Item = Item;
62 | var UltraPickerIOS = /** @class */ (function (_super) {
63 | __extends(UltraPickerIOS, _super);
64 | function UltraPickerIOS(props) {
65 | var _this = _super.call(this, props) || this;
66 | _this._stateBasedOnProps.bind(_this);
67 | _this.state = _this._stateBasedOnProps(props);
68 | return _this;
69 | }
70 | UltraPickerIOS.prototype._stateBasedOnProps = function (nextProps) {
71 | var nextState = {
72 | componentsData: null,
73 | closeBar: null,
74 | selectedIndexes: null
75 | };
76 | var components = [];
77 | var selectedIndexes = [];
78 | if (!nextProps.children) {
79 | return nextState;
80 | }
81 | var pickerChildren = null;
82 | if (nextProps.children.constructor === Array) {
83 | pickerChildren = nextProps.children;
84 | }
85 | else {
86 | pickerChildren = [nextProps.children];
87 | }
88 | pickerChildren.forEach(function (child, index) {
89 | if (!child) {
90 | return;
91 | }
92 | if (child.type === UltraPickerIOSCloseBar) {
93 | nextState.closeBar = child;
94 | }
95 | else if (child.type === Group) {
96 | var group_1 = [];
97 | var groupSelectedItem_1 = 0; // item at index 0 by default
98 | var items = null;
99 | if (child.props.children) {
100 | if (child.props.children.constructor === Array) {
101 | items = child.props.children;
102 | }
103 | else {
104 | items = [child.props.children];
105 | }
106 | items.forEach(function (item, index) {
107 | if (item.type === Item && item.props.label) {
108 | var nativeItem = {
109 | label: item.props.label,
110 | fontFamily: item.props.fontFamily,
111 | fontSize: item.props.fontSize,
112 | value: (item.props.value || null)
113 | };
114 | group_1.push(nativeItem);
115 | if (item.props.selected) {
116 | groupSelectedItem_1 = index;
117 | }
118 | }
119 | });
120 | if (group_1.length > 0) {
121 | var nativeGroup = {
122 | items: group_1,
123 | fontFamily: child.props.fontFamily,
124 | fontSize: child.props.fontSize
125 | };
126 | components.push(nativeGroup);
127 | selectedIndexes.push(groupSelectedItem_1);
128 | }
129 | }
130 | }
131 | });
132 | nextState.componentsData = components;
133 | nextState.selectedIndexes = selectedIndexes;
134 | return nextState;
135 | };
136 | UltraPickerIOS.prototype.componentWillReceiveProps = function (nextProps) {
137 | this.setState(this._stateBasedOnProps(nextProps));
138 | };
139 | UltraPickerIOS.prototype.render = function () {
140 | // Allow the caller to not specify any style yet make this component visible
141 | // via default heights. Adjust the size of `parentViewStyle` so that if there
142 | // is a CloseBar provided, the picker is the same size as specified by
143 | // UltraPickerIOS.style and the parent (encapsulating) view is made larger
144 | // to fit the CloseBar
145 | var pickerViewStyle = __assign({ height: DEFAULT_PICKER_HEIGHT }, react_native_1.StyleSheet.flatten(this.props.style));
146 | var parentViewStyle = __assign({}, pickerViewStyle);
147 | if (this.state.closeBar) {
148 | parentViewStyle.height = parentViewStyle.height + DEFAULT_CLOSEBAR_HEIGHT;
149 | }
150 | return (
151 | {this.state.closeBar}
152 |
153 | );
154 | };
155 | return UltraPickerIOS;
156 | }(React.Component));
157 | exports.UltraPickerIOS = UltraPickerIOS;
158 | var UltraPickerIOSCloseBar = /** @class */ (function (_super) {
159 | __extends(UltraPickerIOSCloseBar, _super);
160 | function UltraPickerIOSCloseBar() {
161 | return _super !== null && _super.apply(this, arguments) || this;
162 | }
163 | UltraPickerIOSCloseBar.prototype.render = function () {
164 | var style = __assign({ height: DEFAULT_CLOSEBAR_HEIGHT }, react_native_1.StyleSheet.flatten(this.props.style));
165 | var closeButtonText = this.props.closeButtonText || "Close";
166 | return ();
167 | };
168 | return UltraPickerIOSCloseBar;
169 | }(React.Component));
170 | exports.UltraPickerIOSCloseBar = UltraPickerIOSCloseBar;
171 |
--------------------------------------------------------------------------------
/UltraPickerIOS/UltraPickerIOS.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 2BB1CF0F1E70FB750023F72C /* UltraPickerIOSManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B8D728D1E70B9D0001431B0 /* UltraPickerIOSManager.m */; };
11 | 2BB1CF101E70FB790023F72C /* UltraPickerIOSView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B8D728F1E70B9D0001431B0 /* UltraPickerIOSView.m */; };
12 | 2BB1CF251E7200B60023F72C /* UltraPickerIOSCloseBarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB1CF241E7200B60023F72C /* UltraPickerIOSCloseBarManager.m */; };
13 | 2BB1CF281E7201080023F72C /* UltraPickerCloseBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB1CF271E7201080023F72C /* UltraPickerCloseBar.m */; };
14 | /* End PBXBuildFile section */
15 |
16 | /* Begin PBXCopyFilesBuildPhase section */
17 | 2BB1CF041E70FB710023F72C /* CopyFiles */ = {
18 | isa = PBXCopyFilesBuildPhase;
19 | buildActionMask = 2147483647;
20 | dstPath = "include/$(PRODUCT_NAME)";
21 | dstSubfolderSpec = 16;
22 | files = (
23 | );
24 | runOnlyForDeploymentPostprocessing = 0;
25 | };
26 | /* End PBXCopyFilesBuildPhase section */
27 |
28 | /* Begin PBXFileReference section */
29 | 2B8D727F1E70B980001431B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
30 | 2B8D728D1E70B9D0001431B0 /* UltraPickerIOSManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UltraPickerIOSManager.m; sourceTree = ""; };
31 | 2B8D728E1E70B9D0001431B0 /* UltraPickerIOSView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UltraPickerIOSView.h; sourceTree = ""; };
32 | 2B8D728F1E70B9D0001431B0 /* UltraPickerIOSView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UltraPickerIOSView.m; sourceTree = ""; };
33 | 2B8D72DA1E70BD21001431B0 /* libRCTActionSheet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTActionSheet.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTActionSheet.a"; sourceTree = ""; };
34 | 2B8D72DB1E70BD21001431B0 /* libRCTAnimation.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTAnimation.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTAnimation.a"; sourceTree = ""; };
35 | 2B8D72DC1E70BD21001431B0 /* libRCTImage.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTImage.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTImage.a"; sourceTree = ""; };
36 | 2B8D72DD1E70BD21001431B0 /* libRCTLinking.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTLinking.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTLinking.a"; sourceTree = ""; };
37 | 2B8D72DE1E70BD21001431B0 /* libRCTNetwork.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTNetwork.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTNetwork.a"; sourceTree = ""; };
38 | 2B8D72DF1E70BD21001431B0 /* libRCTSettings.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTSettings.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTSettings.a"; sourceTree = ""; };
39 | 2B8D72E01E70BD21001431B0 /* libRCTText.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTText.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTText.a"; sourceTree = ""; };
40 | 2B8D72E11E70BD21001431B0 /* libRCTVibration.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTVibration.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTVibration.a"; sourceTree = ""; };
41 | 2B8D72E21E70BD21001431B0 /* libRCTWebSocket.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libRCTWebSocket.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libRCTWebSocket.a"; sourceTree = ""; };
42 | 2B8D72E31E70BD21001431B0 /* libReact.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libReact.a; path = "../../../Library/Developer/Xcode/DerivedData/reactNativeUltraPickerIosExample-cdtddbuqpjvqdcgsypjbkkozwopn/Build/Products/Debug-iphonesimulator/libReact.a"; sourceTree = ""; };
43 | 2B8D72EE1E70BD54001431B0 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
44 | 2BB1CF061E70FB710023F72C /* libUltraPickerIOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libUltraPickerIOS.a; sourceTree = BUILT_PRODUCTS_DIR; };
45 | 2BB1CF241E7200B60023F72C /* UltraPickerIOSCloseBarManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UltraPickerIOSCloseBarManager.m; sourceTree = ""; };
46 | 2BB1CF261E7201080023F72C /* UltraPickerCloseBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UltraPickerCloseBar.h; sourceTree = ""; };
47 | 2BB1CF271E7201080023F72C /* UltraPickerCloseBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UltraPickerCloseBar.m; sourceTree = ""; };
48 | /* End PBXFileReference section */
49 |
50 | /* Begin PBXFrameworksBuildPhase section */
51 | 2BB1CF031E70FB710023F72C /* Frameworks */ = {
52 | isa = PBXFrameworksBuildPhase;
53 | buildActionMask = 2147483647;
54 | files = (
55 | );
56 | runOnlyForDeploymentPostprocessing = 0;
57 | };
58 | /* End PBXFrameworksBuildPhase section */
59 |
60 | /* Begin PBXGroup section */
61 | 2B8D72711E70B980001431B0 = {
62 | isa = PBXGroup;
63 | children = (
64 | 2B8D727D1E70B980001431B0 /* UltraPickerIOS */,
65 | 2B8D727C1E70B980001431B0 /* Products */,
66 | 2B8D72D91E70BD21001431B0 /* Frameworks */,
67 | );
68 | sourceTree = "";
69 | };
70 | 2B8D727C1E70B980001431B0 /* Products */ = {
71 | isa = PBXGroup;
72 | children = (
73 | 2BB1CF061E70FB710023F72C /* libUltraPickerIOS.a */,
74 | );
75 | name = Products;
76 | sourceTree = "";
77 | };
78 | 2B8D727D1E70B980001431B0 /* UltraPickerIOS */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 2B8D728D1E70B9D0001431B0 /* UltraPickerIOSManager.m */,
82 | 2B8D728E1E70B9D0001431B0 /* UltraPickerIOSView.h */,
83 | 2B8D728F1E70B9D0001431B0 /* UltraPickerIOSView.m */,
84 | 2B8D727F1E70B980001431B0 /* Info.plist */,
85 | 2BB1CF241E7200B60023F72C /* UltraPickerIOSCloseBarManager.m */,
86 | 2BB1CF261E7201080023F72C /* UltraPickerCloseBar.h */,
87 | 2BB1CF271E7201080023F72C /* UltraPickerCloseBar.m */,
88 | );
89 | path = UltraPickerIOS;
90 | sourceTree = "";
91 | };
92 | 2B8D72D91E70BD21001431B0 /* Frameworks */ = {
93 | isa = PBXGroup;
94 | children = (
95 | 2B8D72EE1E70BD54001431B0 /* libc++.tbd */,
96 | 2B8D72DA1E70BD21001431B0 /* libRCTActionSheet.a */,
97 | 2B8D72DB1E70BD21001431B0 /* libRCTAnimation.a */,
98 | 2B8D72DC1E70BD21001431B0 /* libRCTImage.a */,
99 | 2B8D72DD1E70BD21001431B0 /* libRCTLinking.a */,
100 | 2B8D72DE1E70BD21001431B0 /* libRCTNetwork.a */,
101 | 2B8D72DF1E70BD21001431B0 /* libRCTSettings.a */,
102 | 2B8D72E01E70BD21001431B0 /* libRCTText.a */,
103 | 2B8D72E11E70BD21001431B0 /* libRCTVibration.a */,
104 | 2B8D72E21E70BD21001431B0 /* libRCTWebSocket.a */,
105 | 2B8D72E31E70BD21001431B0 /* libReact.a */,
106 | );
107 | name = Frameworks;
108 | sourceTree = "";
109 | };
110 | /* End PBXGroup section */
111 |
112 | /* Begin PBXNativeTarget section */
113 | 2BB1CF051E70FB710023F72C /* UltraPickerIOS */ = {
114 | isa = PBXNativeTarget;
115 | buildConfigurationList = 2BB1CF0C1E70FB710023F72C /* Build configuration list for PBXNativeTarget "UltraPickerIOS" */;
116 | buildPhases = (
117 | 2BB1CF021E70FB710023F72C /* Sources */,
118 | 2BB1CF031E70FB710023F72C /* Frameworks */,
119 | 2BB1CF041E70FB710023F72C /* CopyFiles */,
120 | );
121 | buildRules = (
122 | );
123 | dependencies = (
124 | );
125 | name = UltraPickerIOS;
126 | productName = UltraPickerIOS;
127 | productReference = 2BB1CF061E70FB710023F72C /* libUltraPickerIOS.a */;
128 | productType = "com.apple.product-type.library.static";
129 | };
130 | /* End PBXNativeTarget section */
131 |
132 | /* Begin PBXProject section */
133 | 2B8D72721E70B980001431B0 /* Project object */ = {
134 | isa = PBXProject;
135 | attributes = {
136 | LastUpgradeCheck = 0820;
137 | ORGANIZATIONNAME = Sportsbet;
138 | TargetAttributes = {
139 | 2BB1CF051E70FB710023F72C = {
140 | CreatedOnToolsVersion = 8.2;
141 | ProvisioningStyle = Automatic;
142 | };
143 | };
144 | };
145 | buildConfigurationList = 2B8D72751E70B980001431B0 /* Build configuration list for PBXProject "UltraPickerIOS" */;
146 | compatibilityVersion = "Xcode 3.2";
147 | developmentRegion = English;
148 | hasScannedForEncodings = 0;
149 | knownRegions = (
150 | en,
151 | );
152 | mainGroup = 2B8D72711E70B980001431B0;
153 | productRefGroup = 2B8D727C1E70B980001431B0 /* Products */;
154 | projectDirPath = "";
155 | projectRoot = "";
156 | targets = (
157 | 2BB1CF051E70FB710023F72C /* UltraPickerIOS */,
158 | );
159 | };
160 | /* End PBXProject section */
161 |
162 | /* Begin PBXSourcesBuildPhase section */
163 | 2BB1CF021E70FB710023F72C /* Sources */ = {
164 | isa = PBXSourcesBuildPhase;
165 | buildActionMask = 2147483647;
166 | files = (
167 | 2BB1CF0F1E70FB750023F72C /* UltraPickerIOSManager.m in Sources */,
168 | 2BB1CF281E7201080023F72C /* UltraPickerCloseBar.m in Sources */,
169 | 2BB1CF101E70FB790023F72C /* UltraPickerIOSView.m in Sources */,
170 | 2BB1CF251E7200B60023F72C /* UltraPickerIOSCloseBarManager.m in Sources */,
171 | );
172 | runOnlyForDeploymentPostprocessing = 0;
173 | };
174 | /* End PBXSourcesBuildPhase section */
175 |
176 | /* Begin XCBuildConfiguration section */
177 | 2B8D72811E70B980001431B0 /* Debug */ = {
178 | isa = XCBuildConfiguration;
179 | buildSettings = {
180 | ALWAYS_SEARCH_USER_PATHS = NO;
181 | CLANG_ANALYZER_NONNULL = YES;
182 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
183 | CLANG_CXX_LIBRARY = "libc++";
184 | CLANG_ENABLE_MODULES = YES;
185 | CLANG_ENABLE_OBJC_ARC = YES;
186 | CLANG_WARN_BOOL_CONVERSION = YES;
187 | CLANG_WARN_CONSTANT_CONVERSION = YES;
188 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
189 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
190 | CLANG_WARN_EMPTY_BODY = YES;
191 | CLANG_WARN_ENUM_CONVERSION = YES;
192 | CLANG_WARN_INFINITE_RECURSION = YES;
193 | CLANG_WARN_INT_CONVERSION = YES;
194 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
195 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
196 | CLANG_WARN_UNREACHABLE_CODE = YES;
197 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
198 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
199 | COPY_PHASE_STRIP = NO;
200 | CURRENT_PROJECT_VERSION = 1;
201 | DEBUG_INFORMATION_FORMAT = dwarf;
202 | ENABLE_STRICT_OBJC_MSGSEND = YES;
203 | ENABLE_TESTABILITY = YES;
204 | GCC_C_LANGUAGE_STANDARD = gnu99;
205 | GCC_DYNAMIC_NO_PIC = NO;
206 | GCC_NO_COMMON_BLOCKS = YES;
207 | GCC_OPTIMIZATION_LEVEL = 0;
208 | GCC_PREPROCESSOR_DEFINITIONS = (
209 | "DEBUG=1",
210 | "$(inherited)",
211 | );
212 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
213 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
214 | GCC_WARN_UNDECLARED_SELECTOR = YES;
215 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
216 | GCC_WARN_UNUSED_FUNCTION = YES;
217 | GCC_WARN_UNUSED_VARIABLE = YES;
218 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
219 | MTL_ENABLE_DEBUG_INFO = YES;
220 | ONLY_ACTIVE_ARCH = YES;
221 | SDKROOT = iphoneos;
222 | TARGETED_DEVICE_FAMILY = "1,2";
223 | VERSIONING_SYSTEM = "apple-generic";
224 | VERSION_INFO_PREFIX = "";
225 | };
226 | name = Debug;
227 | };
228 | 2B8D72821E70B980001431B0 /* Release */ = {
229 | isa = XCBuildConfiguration;
230 | buildSettings = {
231 | ALWAYS_SEARCH_USER_PATHS = NO;
232 | CLANG_ANALYZER_NONNULL = YES;
233 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
234 | CLANG_CXX_LIBRARY = "libc++";
235 | CLANG_ENABLE_MODULES = YES;
236 | CLANG_ENABLE_OBJC_ARC = YES;
237 | CLANG_WARN_BOOL_CONVERSION = YES;
238 | CLANG_WARN_CONSTANT_CONVERSION = YES;
239 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
240 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
241 | CLANG_WARN_EMPTY_BODY = YES;
242 | CLANG_WARN_ENUM_CONVERSION = YES;
243 | CLANG_WARN_INFINITE_RECURSION = YES;
244 | CLANG_WARN_INT_CONVERSION = YES;
245 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
246 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
247 | CLANG_WARN_UNREACHABLE_CODE = YES;
248 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
249 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
250 | COPY_PHASE_STRIP = NO;
251 | CURRENT_PROJECT_VERSION = 1;
252 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
253 | ENABLE_NS_ASSERTIONS = NO;
254 | ENABLE_STRICT_OBJC_MSGSEND = YES;
255 | GCC_C_LANGUAGE_STANDARD = gnu99;
256 | GCC_NO_COMMON_BLOCKS = YES;
257 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
258 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
259 | GCC_WARN_UNDECLARED_SELECTOR = YES;
260 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
261 | GCC_WARN_UNUSED_FUNCTION = YES;
262 | GCC_WARN_UNUSED_VARIABLE = YES;
263 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
264 | MTL_ENABLE_DEBUG_INFO = NO;
265 | SDKROOT = iphoneos;
266 | TARGETED_DEVICE_FAMILY = "1,2";
267 | VALIDATE_PRODUCT = YES;
268 | VERSIONING_SYSTEM = "apple-generic";
269 | VERSION_INFO_PREFIX = "";
270 | };
271 | name = Release;
272 | };
273 | 2BB1CF0D1E70FB710023F72C /* Debug */ = {
274 | isa = XCBuildConfiguration;
275 | buildSettings = {
276 | IPHONEOS_DEPLOYMENT_TARGET = 10.2;
277 | OTHER_LDFLAGS = "-ObjC";
278 | PRODUCT_NAME = "$(TARGET_NAME)";
279 | SKIP_INSTALL = YES;
280 | };
281 | name = Debug;
282 | };
283 | 2BB1CF0E1E70FB710023F72C /* Release */ = {
284 | isa = XCBuildConfiguration;
285 | buildSettings = {
286 | IPHONEOS_DEPLOYMENT_TARGET = 10.2;
287 | OTHER_LDFLAGS = "-ObjC";
288 | PRODUCT_NAME = "$(TARGET_NAME)";
289 | SKIP_INSTALL = YES;
290 | };
291 | name = Release;
292 | };
293 | /* End XCBuildConfiguration section */
294 |
295 | /* Begin XCConfigurationList section */
296 | 2B8D72751E70B980001431B0 /* Build configuration list for PBXProject "UltraPickerIOS" */ = {
297 | isa = XCConfigurationList;
298 | buildConfigurations = (
299 | 2B8D72811E70B980001431B0 /* Debug */,
300 | 2B8D72821E70B980001431B0 /* Release */,
301 | );
302 | defaultConfigurationIsVisible = 0;
303 | defaultConfigurationName = Release;
304 | };
305 | 2BB1CF0C1E70FB710023F72C /* Build configuration list for PBXNativeTarget "UltraPickerIOS" */ = {
306 | isa = XCConfigurationList;
307 | buildConfigurations = (
308 | 2BB1CF0D1E70FB710023F72C /* Debug */,
309 | 2BB1CF0E1E70FB710023F72C /* Release */,
310 | );
311 | defaultConfigurationIsVisible = 0;
312 | defaultConfigurationName = Release;
313 | };
314 | /* End XCConfigurationList section */
315 | };
316 | rootObject = 2B8D72721E70B980001431B0 /* Project object */;
317 | }
318 |
--------------------------------------------------------------------------------
/example/ios/example.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
11 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
12 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
13 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
14 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
15 | 00E356F31AD99517003FC87E /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; };
16 | 11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
17 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; };
18 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; };
19 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };
20 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
21 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
22 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
23 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
24 | 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
25 | 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
26 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
27 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
28 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
29 | 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
30 | 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; };
31 | 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; };
32 | 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; };
33 | 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; };
34 | 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; };
35 | 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; };
36 | 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
37 | 2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; };
38 | 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
39 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
40 | ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
41 | FE6F0AD97D0C43568735A089 /* libUltraPickerIOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B9ADAA622764D80BB3425BC /* libUltraPickerIOS.a */; };
42 | /* End PBXBuildFile section */
43 |
44 | /* Begin PBXContainerItemProxy section */
45 | 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = {
46 | isa = PBXContainerItemProxy;
47 | containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
48 | proxyType = 2;
49 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
50 | remoteInfo = RCTActionSheet;
51 | };
52 | 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = {
53 | isa = PBXContainerItemProxy;
54 | containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
55 | proxyType = 2;
56 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
57 | remoteInfo = RCTGeolocation;
58 | };
59 | 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = {
60 | isa = PBXContainerItemProxy;
61 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
62 | proxyType = 2;
63 | remoteGlobalIDString = 58B5115D1A9E6B3D00147676;
64 | remoteInfo = RCTImage;
65 | };
66 | 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = {
67 | isa = PBXContainerItemProxy;
68 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
69 | proxyType = 2;
70 | remoteGlobalIDString = 58B511DB1A9E6C8500147676;
71 | remoteInfo = RCTNetwork;
72 | };
73 | 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = {
74 | isa = PBXContainerItemProxy;
75 | containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;
76 | proxyType = 2;
77 | remoteGlobalIDString = 832C81801AAF6DEF007FA2F7;
78 | remoteInfo = RCTVibration;
79 | };
80 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
81 | isa = PBXContainerItemProxy;
82 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
83 | proxyType = 1;
84 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
85 | remoteInfo = example;
86 | };
87 | 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = {
88 | isa = PBXContainerItemProxy;
89 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
90 | proxyType = 2;
91 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
92 | remoteInfo = RCTSettings;
93 | };
94 | 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = {
95 | isa = PBXContainerItemProxy;
96 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
97 | proxyType = 2;
98 | remoteGlobalIDString = 3C86DF461ADF2C930047B81A;
99 | remoteInfo = RCTWebSocket;
100 | };
101 | 146834031AC3E56700842450 /* PBXContainerItemProxy */ = {
102 | isa = PBXContainerItemProxy;
103 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
104 | proxyType = 2;
105 | remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;
106 | remoteInfo = React;
107 | };
108 | 2B7D64F621B5D37500226AF8 /* PBXContainerItemProxy */ = {
109 | isa = PBXContainerItemProxy;
110 | containerPortal = 5C3B6DABA1E541D38D029D21 /* UltraPickerIOS.xcodeproj */;
111 | proxyType = 2;
112 | remoteGlobalIDString = 2BB1CF061E70FB710023F72C;
113 | remoteInfo = UltraPickerIOS;
114 | };
115 | 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
116 | isa = PBXContainerItemProxy;
117 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
118 | proxyType = 1;
119 | remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
120 | remoteInfo = "example-tvOS";
121 | };
122 | 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
123 | isa = PBXContainerItemProxy;
124 | containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
125 | proxyType = 2;
126 | remoteGlobalIDString = ADD01A681E09402E00F6D226;
127 | remoteInfo = "RCTBlob-tvOS";
128 | };
129 | 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
130 | isa = PBXContainerItemProxy;
131 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
132 | proxyType = 2;
133 | remoteGlobalIDString = 3DBE0D001F3B181A0099AA32;
134 | remoteInfo = fishhook;
135 | };
136 | 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
137 | isa = PBXContainerItemProxy;
138 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
139 | proxyType = 2;
140 | remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32;
141 | remoteInfo = "fishhook-tvOS";
142 | };
143 | 2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */ = {
144 | isa = PBXContainerItemProxy;
145 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
146 | proxyType = 2;
147 | remoteGlobalIDString = EBF21BDC1FC498900052F4D5;
148 | remoteInfo = jsinspector;
149 | };
150 | 2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */ = {
151 | isa = PBXContainerItemProxy;
152 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
153 | proxyType = 2;
154 | remoteGlobalIDString = EBF21BFA1FC4989A0052F4D5;
155 | remoteInfo = "jsinspector-tvOS";
156 | };
157 | 2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */ = {
158 | isa = PBXContainerItemProxy;
159 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
160 | proxyType = 2;
161 | remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7;
162 | remoteInfo = "third-party";
163 | };
164 | 2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */ = {
165 | isa = PBXContainerItemProxy;
166 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
167 | proxyType = 2;
168 | remoteGlobalIDString = 3D383D3C1EBD27B6005632C8;
169 | remoteInfo = "third-party-tvOS";
170 | };
171 | 2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */ = {
172 | isa = PBXContainerItemProxy;
173 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
174 | proxyType = 2;
175 | remoteGlobalIDString = 139D7E881E25C6D100323FB7;
176 | remoteInfo = "double-conversion";
177 | };
178 | 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */ = {
179 | isa = PBXContainerItemProxy;
180 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
181 | proxyType = 2;
182 | remoteGlobalIDString = 3D383D621EBD27B9005632C8;
183 | remoteInfo = "double-conversion-tvOS";
184 | };
185 | 2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */ = {
186 | isa = PBXContainerItemProxy;
187 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
188 | proxyType = 2;
189 | remoteGlobalIDString = 9936F3131F5F2E4B0010BF04;
190 | remoteInfo = privatedata;
191 | };
192 | 2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */ = {
193 | isa = PBXContainerItemProxy;
194 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
195 | proxyType = 2;
196 | remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04;
197 | remoteInfo = "privatedata-tvOS";
198 | };
199 | 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {
200 | isa = PBXContainerItemProxy;
201 | containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
202 | proxyType = 2;
203 | remoteGlobalIDString = 2D2A283A1D9B042B00D4039D;
204 | remoteInfo = "RCTImage-tvOS";
205 | };
206 | 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = {
207 | isa = PBXContainerItemProxy;
208 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
209 | proxyType = 2;
210 | remoteGlobalIDString = 2D2A28471D9B043800D4039D;
211 | remoteInfo = "RCTLinking-tvOS";
212 | };
213 | 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
214 | isa = PBXContainerItemProxy;
215 | containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
216 | proxyType = 2;
217 | remoteGlobalIDString = 2D2A28541D9B044C00D4039D;
218 | remoteInfo = "RCTNetwork-tvOS";
219 | };
220 | 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
221 | isa = PBXContainerItemProxy;
222 | containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
223 | proxyType = 2;
224 | remoteGlobalIDString = 2D2A28611D9B046600D4039D;
225 | remoteInfo = "RCTSettings-tvOS";
226 | };
227 | 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = {
228 | isa = PBXContainerItemProxy;
229 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
230 | proxyType = 2;
231 | remoteGlobalIDString = 2D2A287B1D9B048500D4039D;
232 | remoteInfo = "RCTText-tvOS";
233 | };
234 | 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = {
235 | isa = PBXContainerItemProxy;
236 | containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
237 | proxyType = 2;
238 | remoteGlobalIDString = 2D2A28881D9B049200D4039D;
239 | remoteInfo = "RCTWebSocket-tvOS";
240 | };
241 | 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = {
242 | isa = PBXContainerItemProxy;
243 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
244 | proxyType = 2;
245 | remoteGlobalIDString = 2D2A28131D9B038B00D4039D;
246 | remoteInfo = "React-tvOS";
247 | };
248 | 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = {
249 | isa = PBXContainerItemProxy;
250 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
251 | proxyType = 2;
252 | remoteGlobalIDString = 3D3C059A1DE3340900C268FA;
253 | remoteInfo = yoga;
254 | };
255 | 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = {
256 | isa = PBXContainerItemProxy;
257 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
258 | proxyType = 2;
259 | remoteGlobalIDString = 3D3C06751DE3340C00C268FA;
260 | remoteInfo = "yoga-tvOS";
261 | };
262 | 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = {
263 | isa = PBXContainerItemProxy;
264 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
265 | proxyType = 2;
266 | remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4;
267 | remoteInfo = cxxreact;
268 | };
269 | 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
270 | isa = PBXContainerItemProxy;
271 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
272 | proxyType = 2;
273 | remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4;
274 | remoteInfo = "cxxreact-tvOS";
275 | };
276 | 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
277 | isa = PBXContainerItemProxy;
278 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
279 | proxyType = 2;
280 | remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4;
281 | remoteInfo = jschelpers;
282 | };
283 | 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
284 | isa = PBXContainerItemProxy;
285 | containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
286 | proxyType = 2;
287 | remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
288 | remoteInfo = "jschelpers-tvOS";
289 | };
290 | 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
291 | isa = PBXContainerItemProxy;
292 | containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
293 | proxyType = 2;
294 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
295 | remoteInfo = RCTAnimation;
296 | };
297 | 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
298 | isa = PBXContainerItemProxy;
299 | containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
300 | proxyType = 2;
301 | remoteGlobalIDString = 2D2A28201D9B03D100D4039D;
302 | remoteInfo = "RCTAnimation-tvOS";
303 | };
304 | 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = {
305 | isa = PBXContainerItemProxy;
306 | containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
307 | proxyType = 2;
308 | remoteGlobalIDString = 134814201AA4EA6300B7C361;
309 | remoteInfo = RCTLinking;
310 | };
311 | 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = {
312 | isa = PBXContainerItemProxy;
313 | containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
314 | proxyType = 2;
315 | remoteGlobalIDString = 58B5119B1A9E6C1200147676;
316 | remoteInfo = RCTText;
317 | };
318 | ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = {
319 | isa = PBXContainerItemProxy;
320 | containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
321 | proxyType = 2;
322 | remoteGlobalIDString = 358F4ED71D1E81A9004DF814;
323 | remoteInfo = RCTBlob;
324 | };
325 | /* End PBXContainerItemProxy section */
326 |
327 | /* Begin PBXFileReference section */
328 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; };
329 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; };
330 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; };
331 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; };
332 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; };
333 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; };
334 | 00E356EE1AD99517003FC87E /* exampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
335 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
336 | 00E356F21AD99517003FC87E /* exampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = exampleTests.m; sourceTree = ""; };
337 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; };
338 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; };
339 | 13B07F961A680F5B00A75B9A /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };
340 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = example/AppDelegate.h; sourceTree = ""; };
341 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = example/AppDelegate.m; sourceTree = ""; };
342 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
343 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = ""; };
344 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = ""; };
345 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = ""; };
346 | 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; };
347 | 1B9ADAA622764D80BB3425BC /* libUltraPickerIOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libUltraPickerIOS.a; sourceTree = ""; };
348 | 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
349 | 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "example-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
350 | 2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
351 | 5C3B6DABA1E541D38D029D21 /* UltraPickerIOS.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = UltraPickerIOS.xcodeproj; path = "../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS.xcodeproj"; sourceTree = ""; };
352 | 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; };
353 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; };
354 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; };
355 | ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; };
356 | /* End PBXFileReference section */
357 |
358 | /* Begin PBXFrameworksBuildPhase section */
359 | 00E356EB1AD99517003FC87E /* Frameworks */ = {
360 | isa = PBXFrameworksBuildPhase;
361 | buildActionMask = 2147483647;
362 | files = (
363 | 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */,
364 | );
365 | runOnlyForDeploymentPostprocessing = 0;
366 | };
367 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
368 | isa = PBXFrameworksBuildPhase;
369 | buildActionMask = 2147483647;
370 | files = (
371 | ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
372 | 11D1A2F320CAFA9E000508D9 /* libRCTAnimation.a in Frameworks */,
373 | 146834051AC3E58100842450 /* libReact.a in Frameworks */,
374 | 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
375 | 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
376 | 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
377 | 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,
378 | 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
379 | 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,
380 | 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
381 | 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
382 | 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
383 | FE6F0AD97D0C43568735A089 /* libUltraPickerIOS.a in Frameworks */,
384 | );
385 | runOnlyForDeploymentPostprocessing = 0;
386 | };
387 | 2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
388 | isa = PBXFrameworksBuildPhase;
389 | buildActionMask = 2147483647;
390 | files = (
391 | 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */,
392 | 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */,
393 | 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */,
394 | 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */,
395 | 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */,
396 | 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */,
397 | 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
398 | 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
399 | );
400 | runOnlyForDeploymentPostprocessing = 0;
401 | };
402 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
403 | isa = PBXFrameworksBuildPhase;
404 | buildActionMask = 2147483647;
405 | files = (
406 | 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */,
407 | );
408 | runOnlyForDeploymentPostprocessing = 0;
409 | };
410 | /* End PBXFrameworksBuildPhase section */
411 |
412 | /* Begin PBXGroup section */
413 | 00C302A81ABCB8CE00DB3ED1 /* Products */ = {
414 | isa = PBXGroup;
415 | children = (
416 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */,
417 | );
418 | name = Products;
419 | sourceTree = "";
420 | };
421 | 00C302B61ABCB90400DB3ED1 /* Products */ = {
422 | isa = PBXGroup;
423 | children = (
424 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */,
425 | );
426 | name = Products;
427 | sourceTree = "";
428 | };
429 | 00C302BC1ABCB91800DB3ED1 /* Products */ = {
430 | isa = PBXGroup;
431 | children = (
432 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */,
433 | 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */,
434 | );
435 | name = Products;
436 | sourceTree = "";
437 | };
438 | 00C302D41ABCB9D200DB3ED1 /* Products */ = {
439 | isa = PBXGroup;
440 | children = (
441 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */,
442 | 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */,
443 | );
444 | name = Products;
445 | sourceTree = "";
446 | };
447 | 00C302E01ABCB9EE00DB3ED1 /* Products */ = {
448 | isa = PBXGroup;
449 | children = (
450 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */,
451 | );
452 | name = Products;
453 | sourceTree = "";
454 | };
455 | 00E356EF1AD99517003FC87E /* exampleTests */ = {
456 | isa = PBXGroup;
457 | children = (
458 | 00E356F21AD99517003FC87E /* exampleTests.m */,
459 | 00E356F01AD99517003FC87E /* Supporting Files */,
460 | );
461 | path = exampleTests;
462 | sourceTree = "";
463 | };
464 | 00E356F01AD99517003FC87E /* Supporting Files */ = {
465 | isa = PBXGroup;
466 | children = (
467 | 00E356F11AD99517003FC87E /* Info.plist */,
468 | );
469 | name = "Supporting Files";
470 | sourceTree = "";
471 | };
472 | 139105B71AF99BAD00B5F7CC /* Products */ = {
473 | isa = PBXGroup;
474 | children = (
475 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */,
476 | 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */,
477 | );
478 | name = Products;
479 | sourceTree = "";
480 | };
481 | 139FDEE71B06529A00C62182 /* Products */ = {
482 | isa = PBXGroup;
483 | children = (
484 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */,
485 | 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */,
486 | 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */,
487 | 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */,
488 | );
489 | name = Products;
490 | sourceTree = "";
491 | };
492 | 13B07FAE1A68108700A75B9A /* example */ = {
493 | isa = PBXGroup;
494 | children = (
495 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */,
496 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
497 | 13B07FB01A68108700A75B9A /* AppDelegate.m */,
498 | 13B07FB51A68108700A75B9A /* Images.xcassets */,
499 | 13B07FB61A68108700A75B9A /* Info.plist */,
500 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
501 | 13B07FB71A68108700A75B9A /* main.m */,
502 | );
503 | name = example;
504 | sourceTree = "";
505 | };
506 | 146834001AC3E56700842450 /* Products */ = {
507 | isa = PBXGroup;
508 | children = (
509 | 146834041AC3E56700842450 /* libReact.a */,
510 | 3DAD3EA31DF850E9000B6D8A /* libReact.a */,
511 | 3DAD3EA51DF850E9000B6D8A /* libyoga.a */,
512 | 3DAD3EA71DF850E9000B6D8A /* libyoga.a */,
513 | 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */,
514 | 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
515 | 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
516 | 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
517 | 2DF0FFDF2056DD460020B375 /* libjsinspector.a */,
518 | 2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */,
519 | 2DF0FFE32056DD460020B375 /* libthird-party.a */,
520 | 2DF0FFE52056DD460020B375 /* libthird-party.a */,
521 | 2DF0FFE72056DD460020B375 /* libdouble-conversion.a */,
522 | 2DF0FFE92056DD460020B375 /* libdouble-conversion.a */,
523 | 2DF0FFEB2056DD460020B375 /* libprivatedata.a */,
524 | 2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */,
525 | );
526 | name = Products;
527 | sourceTree = "";
528 | };
529 | 2B7D64CD21B5D37300226AF8 /* Recovered References */ = {
530 | isa = PBXGroup;
531 | children = (
532 | 1B9ADAA622764D80BB3425BC /* libUltraPickerIOS.a */,
533 | );
534 | name = "Recovered References";
535 | sourceTree = "";
536 | };
537 | 2B7D64F321B5D37400226AF8 /* Products */ = {
538 | isa = PBXGroup;
539 | children = (
540 | 2B7D64F721B5D37500226AF8 /* libUltraPickerIOS.a */,
541 | );
542 | name = Products;
543 | sourceTree = "";
544 | };
545 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
546 | isa = PBXGroup;
547 | children = (
548 | 2D16E6891FA4F8E400B85C8A /* libReact.a */,
549 | );
550 | name = Frameworks;
551 | sourceTree = "";
552 | };
553 | 5E91572E1DD0AC6500FF2AA8 /* Products */ = {
554 | isa = PBXGroup;
555 | children = (
556 | 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */,
557 | 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */,
558 | );
559 | name = Products;
560 | sourceTree = "";
561 | };
562 | 78C398B11ACF4ADC00677621 /* Products */ = {
563 | isa = PBXGroup;
564 | children = (
565 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */,
566 | 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */,
567 | );
568 | name = Products;
569 | sourceTree = "";
570 | };
571 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
572 | isa = PBXGroup;
573 | children = (
574 | 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
575 | 146833FF1AC3E56700842450 /* React.xcodeproj */,
576 | 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
577 | ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */,
578 | 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
579 | 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
580 | 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
581 | 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */,
582 | 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */,
583 | 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
584 | 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
585 | 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
586 | 5C3B6DABA1E541D38D029D21 /* UltraPickerIOS.xcodeproj */,
587 | );
588 | name = Libraries;
589 | sourceTree = "";
590 | };
591 | 832341B11AAA6A8300B99B32 /* Products */ = {
592 | isa = PBXGroup;
593 | children = (
594 | 832341B51AAA6A8300B99B32 /* libRCTText.a */,
595 | 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */,
596 | );
597 | name = Products;
598 | sourceTree = "";
599 | };
600 | 83CBB9F61A601CBA00E9B192 = {
601 | isa = PBXGroup;
602 | children = (
603 | 13B07FAE1A68108700A75B9A /* example */,
604 | 832341AE1AAA6A7D00B99B32 /* Libraries */,
605 | 00E356EF1AD99517003FC87E /* exampleTests */,
606 | 83CBBA001A601CBA00E9B192 /* Products */,
607 | 2D16E6871FA4F8E400B85C8A /* Frameworks */,
608 | 2B7D64CD21B5D37300226AF8 /* Recovered References */,
609 | );
610 | indentWidth = 2;
611 | sourceTree = "";
612 | tabWidth = 2;
613 | usesTabs = 0;
614 | };
615 | 83CBBA001A601CBA00E9B192 /* Products */ = {
616 | isa = PBXGroup;
617 | children = (
618 | 13B07F961A680F5B00A75B9A /* example.app */,
619 | 00E356EE1AD99517003FC87E /* exampleTests.xctest */,
620 | 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */,
621 | 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */,
622 | );
623 | name = Products;
624 | sourceTree = "";
625 | };
626 | ADBDB9201DFEBF0600ED6528 /* Products */ = {
627 | isa = PBXGroup;
628 | children = (
629 | ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */,
630 | 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */,
631 | );
632 | name = Products;
633 | sourceTree = "";
634 | };
635 | /* End PBXGroup section */
636 |
637 | /* Begin PBXNativeTarget section */
638 | 00E356ED1AD99517003FC87E /* exampleTests */ = {
639 | isa = PBXNativeTarget;
640 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */;
641 | buildPhases = (
642 | 00E356EA1AD99517003FC87E /* Sources */,
643 | 00E356EB1AD99517003FC87E /* Frameworks */,
644 | 00E356EC1AD99517003FC87E /* Resources */,
645 | );
646 | buildRules = (
647 | );
648 | dependencies = (
649 | 00E356F51AD99517003FC87E /* PBXTargetDependency */,
650 | );
651 | name = exampleTests;
652 | productName = exampleTests;
653 | productReference = 00E356EE1AD99517003FC87E /* exampleTests.xctest */;
654 | productType = "com.apple.product-type.bundle.unit-test";
655 | };
656 | 13B07F861A680F5B00A75B9A /* example */ = {
657 | isa = PBXNativeTarget;
658 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */;
659 | buildPhases = (
660 | 13B07F871A680F5B00A75B9A /* Sources */,
661 | 13B07F8C1A680F5B00A75B9A /* Frameworks */,
662 | 13B07F8E1A680F5B00A75B9A /* Resources */,
663 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
664 | );
665 | buildRules = (
666 | );
667 | dependencies = (
668 | );
669 | name = example;
670 | productName = "Hello World";
671 | productReference = 13B07F961A680F5B00A75B9A /* example.app */;
672 | productType = "com.apple.product-type.application";
673 | };
674 | 2D02E47A1E0B4A5D006451C7 /* example-tvOS */ = {
675 | isa = PBXNativeTarget;
676 | buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */;
677 | buildPhases = (
678 | 2D02E4771E0B4A5D006451C7 /* Sources */,
679 | 2D02E4781E0B4A5D006451C7 /* Frameworks */,
680 | 2D02E4791E0B4A5D006451C7 /* Resources */,
681 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
682 | );
683 | buildRules = (
684 | );
685 | dependencies = (
686 | );
687 | name = "example-tvOS";
688 | productName = "example-tvOS";
689 | productReference = 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */;
690 | productType = "com.apple.product-type.application";
691 | };
692 | 2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */ = {
693 | isa = PBXNativeTarget;
694 | buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */;
695 | buildPhases = (
696 | 2D02E48C1E0B4A5D006451C7 /* Sources */,
697 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */,
698 | 2D02E48E1E0B4A5D006451C7 /* Resources */,
699 | );
700 | buildRules = (
701 | );
702 | dependencies = (
703 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
704 | );
705 | name = "example-tvOSTests";
706 | productName = "example-tvOSTests";
707 | productReference = 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */;
708 | productType = "com.apple.product-type.bundle.unit-test";
709 | };
710 | /* End PBXNativeTarget section */
711 |
712 | /* Begin PBXProject section */
713 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
714 | isa = PBXProject;
715 | attributes = {
716 | LastUpgradeCheck = 940;
717 | ORGANIZATIONNAME = Facebook;
718 | TargetAttributes = {
719 | 00E356ED1AD99517003FC87E = {
720 | CreatedOnToolsVersion = 6.2;
721 | TestTargetID = 13B07F861A680F5B00A75B9A;
722 | };
723 | 2D02E47A1E0B4A5D006451C7 = {
724 | CreatedOnToolsVersion = 8.2.1;
725 | ProvisioningStyle = Automatic;
726 | };
727 | 2D02E48F1E0B4A5D006451C7 = {
728 | CreatedOnToolsVersion = 8.2.1;
729 | ProvisioningStyle = Automatic;
730 | TestTargetID = 2D02E47A1E0B4A5D006451C7;
731 | };
732 | };
733 | };
734 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */;
735 | compatibilityVersion = "Xcode 3.2";
736 | developmentRegion = English;
737 | hasScannedForEncodings = 0;
738 | knownRegions = (
739 | en,
740 | Base,
741 | );
742 | mainGroup = 83CBB9F61A601CBA00E9B192;
743 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
744 | projectDirPath = "";
745 | projectReferences = (
746 | {
747 | ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
748 | ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
749 | },
750 | {
751 | ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;
752 | ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
753 | },
754 | {
755 | ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */;
756 | ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
757 | },
758 | {
759 | ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
760 | ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
761 | },
762 | {
763 | ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */;
764 | ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
765 | },
766 | {
767 | ProductGroup = 78C398B11ACF4ADC00677621 /* Products */;
768 | ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
769 | },
770 | {
771 | ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */;
772 | ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
773 | },
774 | {
775 | ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */;
776 | ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
777 | },
778 | {
779 | ProductGroup = 832341B11AAA6A8300B99B32 /* Products */;
780 | ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
781 | },
782 | {
783 | ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */;
784 | ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;
785 | },
786 | {
787 | ProductGroup = 139FDEE71B06529A00C62182 /* Products */;
788 | ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
789 | },
790 | {
791 | ProductGroup = 146834001AC3E56700842450 /* Products */;
792 | ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
793 | },
794 | {
795 | ProductGroup = 2B7D64F321B5D37400226AF8 /* Products */;
796 | ProjectRef = 5C3B6DABA1E541D38D029D21 /* UltraPickerIOS.xcodeproj */;
797 | },
798 | );
799 | projectRoot = "";
800 | targets = (
801 | 13B07F861A680F5B00A75B9A /* example */,
802 | 00E356ED1AD99517003FC87E /* exampleTests */,
803 | 2D02E47A1E0B4A5D006451C7 /* example-tvOS */,
804 | 2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */,
805 | );
806 | };
807 | /* End PBXProject section */
808 |
809 | /* Begin PBXReferenceProxy section */
810 | 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = {
811 | isa = PBXReferenceProxy;
812 | fileType = archive.ar;
813 | path = libRCTActionSheet.a;
814 | remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */;
815 | sourceTree = BUILT_PRODUCTS_DIR;
816 | };
817 | 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = {
818 | isa = PBXReferenceProxy;
819 | fileType = archive.ar;
820 | path = libRCTGeolocation.a;
821 | remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */;
822 | sourceTree = BUILT_PRODUCTS_DIR;
823 | };
824 | 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = {
825 | isa = PBXReferenceProxy;
826 | fileType = archive.ar;
827 | path = libRCTImage.a;
828 | remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */;
829 | sourceTree = BUILT_PRODUCTS_DIR;
830 | };
831 | 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = {
832 | isa = PBXReferenceProxy;
833 | fileType = archive.ar;
834 | path = libRCTNetwork.a;
835 | remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */;
836 | sourceTree = BUILT_PRODUCTS_DIR;
837 | };
838 | 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = {
839 | isa = PBXReferenceProxy;
840 | fileType = archive.ar;
841 | path = libRCTVibration.a;
842 | remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */;
843 | sourceTree = BUILT_PRODUCTS_DIR;
844 | };
845 | 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = {
846 | isa = PBXReferenceProxy;
847 | fileType = archive.ar;
848 | path = libRCTSettings.a;
849 | remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */;
850 | sourceTree = BUILT_PRODUCTS_DIR;
851 | };
852 | 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = {
853 | isa = PBXReferenceProxy;
854 | fileType = archive.ar;
855 | path = libRCTWebSocket.a;
856 | remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */;
857 | sourceTree = BUILT_PRODUCTS_DIR;
858 | };
859 | 146834041AC3E56700842450 /* libReact.a */ = {
860 | isa = PBXReferenceProxy;
861 | fileType = archive.ar;
862 | path = libReact.a;
863 | remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;
864 | sourceTree = BUILT_PRODUCTS_DIR;
865 | };
866 | 2B7D64F721B5D37500226AF8 /* libUltraPickerIOS.a */ = {
867 | isa = PBXReferenceProxy;
868 | fileType = archive.ar;
869 | path = libUltraPickerIOS.a;
870 | remoteRef = 2B7D64F621B5D37500226AF8 /* PBXContainerItemProxy */;
871 | sourceTree = BUILT_PRODUCTS_DIR;
872 | };
873 | 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */ = {
874 | isa = PBXReferenceProxy;
875 | fileType = archive.ar;
876 | path = "libRCTBlob-tvOS.a";
877 | remoteRef = 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */;
878 | sourceTree = BUILT_PRODUCTS_DIR;
879 | };
880 | 2D16E6841FA4F8DC00B85C8A /* libfishhook.a */ = {
881 | isa = PBXReferenceProxy;
882 | fileType = archive.ar;
883 | path = libfishhook.a;
884 | remoteRef = 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */;
885 | sourceTree = BUILT_PRODUCTS_DIR;
886 | };
887 | 2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */ = {
888 | isa = PBXReferenceProxy;
889 | fileType = archive.ar;
890 | path = "libfishhook-tvOS.a";
891 | remoteRef = 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */;
892 | sourceTree = BUILT_PRODUCTS_DIR;
893 | };
894 | 2DF0FFDF2056DD460020B375 /* libjsinspector.a */ = {
895 | isa = PBXReferenceProxy;
896 | fileType = archive.ar;
897 | path = libjsinspector.a;
898 | remoteRef = 2DF0FFDE2056DD460020B375 /* PBXContainerItemProxy */;
899 | sourceTree = BUILT_PRODUCTS_DIR;
900 | };
901 | 2DF0FFE12056DD460020B375 /* libjsinspector-tvOS.a */ = {
902 | isa = PBXReferenceProxy;
903 | fileType = archive.ar;
904 | path = "libjsinspector-tvOS.a";
905 | remoteRef = 2DF0FFE02056DD460020B375 /* PBXContainerItemProxy */;
906 | sourceTree = BUILT_PRODUCTS_DIR;
907 | };
908 | 2DF0FFE32056DD460020B375 /* libthird-party.a */ = {
909 | isa = PBXReferenceProxy;
910 | fileType = archive.ar;
911 | path = "libthird-party.a";
912 | remoteRef = 2DF0FFE22056DD460020B375 /* PBXContainerItemProxy */;
913 | sourceTree = BUILT_PRODUCTS_DIR;
914 | };
915 | 2DF0FFE52056DD460020B375 /* libthird-party.a */ = {
916 | isa = PBXReferenceProxy;
917 | fileType = archive.ar;
918 | path = "libthird-party.a";
919 | remoteRef = 2DF0FFE42056DD460020B375 /* PBXContainerItemProxy */;
920 | sourceTree = BUILT_PRODUCTS_DIR;
921 | };
922 | 2DF0FFE72056DD460020B375 /* libdouble-conversion.a */ = {
923 | isa = PBXReferenceProxy;
924 | fileType = archive.ar;
925 | path = "libdouble-conversion.a";
926 | remoteRef = 2DF0FFE62056DD460020B375 /* PBXContainerItemProxy */;
927 | sourceTree = BUILT_PRODUCTS_DIR;
928 | };
929 | 2DF0FFE92056DD460020B375 /* libdouble-conversion.a */ = {
930 | isa = PBXReferenceProxy;
931 | fileType = archive.ar;
932 | path = "libdouble-conversion.a";
933 | remoteRef = 2DF0FFE82056DD460020B375 /* PBXContainerItemProxy */;
934 | sourceTree = BUILT_PRODUCTS_DIR;
935 | };
936 | 2DF0FFEB2056DD460020B375 /* libprivatedata.a */ = {
937 | isa = PBXReferenceProxy;
938 | fileType = archive.ar;
939 | path = libprivatedata.a;
940 | remoteRef = 2DF0FFEA2056DD460020B375 /* PBXContainerItemProxy */;
941 | sourceTree = BUILT_PRODUCTS_DIR;
942 | };
943 | 2DF0FFED2056DD460020B375 /* libprivatedata-tvOS.a */ = {
944 | isa = PBXReferenceProxy;
945 | fileType = archive.ar;
946 | path = "libprivatedata-tvOS.a";
947 | remoteRef = 2DF0FFEC2056DD460020B375 /* PBXContainerItemProxy */;
948 | sourceTree = BUILT_PRODUCTS_DIR;
949 | };
950 | 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = {
951 | isa = PBXReferenceProxy;
952 | fileType = archive.ar;
953 | path = "libRCTImage-tvOS.a";
954 | remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */;
955 | sourceTree = BUILT_PRODUCTS_DIR;
956 | };
957 | 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = {
958 | isa = PBXReferenceProxy;
959 | fileType = archive.ar;
960 | path = "libRCTLinking-tvOS.a";
961 | remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */;
962 | sourceTree = BUILT_PRODUCTS_DIR;
963 | };
964 | 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = {
965 | isa = PBXReferenceProxy;
966 | fileType = archive.ar;
967 | path = "libRCTNetwork-tvOS.a";
968 | remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */;
969 | sourceTree = BUILT_PRODUCTS_DIR;
970 | };
971 | 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = {
972 | isa = PBXReferenceProxy;
973 | fileType = archive.ar;
974 | path = "libRCTSettings-tvOS.a";
975 | remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */;
976 | sourceTree = BUILT_PRODUCTS_DIR;
977 | };
978 | 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = {
979 | isa = PBXReferenceProxy;
980 | fileType = archive.ar;
981 | path = "libRCTText-tvOS.a";
982 | remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */;
983 | sourceTree = BUILT_PRODUCTS_DIR;
984 | };
985 | 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = {
986 | isa = PBXReferenceProxy;
987 | fileType = archive.ar;
988 | path = "libRCTWebSocket-tvOS.a";
989 | remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */;
990 | sourceTree = BUILT_PRODUCTS_DIR;
991 | };
992 | 3DAD3EA31DF850E9000B6D8A /* libReact.a */ = {
993 | isa = PBXReferenceProxy;
994 | fileType = archive.ar;
995 | path = libReact.a;
996 | remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */;
997 | sourceTree = BUILT_PRODUCTS_DIR;
998 | };
999 | 3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = {
1000 | isa = PBXReferenceProxy;
1001 | fileType = archive.ar;
1002 | path = libyoga.a;
1003 | remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */;
1004 | sourceTree = BUILT_PRODUCTS_DIR;
1005 | };
1006 | 3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = {
1007 | isa = PBXReferenceProxy;
1008 | fileType = archive.ar;
1009 | path = libyoga.a;
1010 | remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */;
1011 | sourceTree = BUILT_PRODUCTS_DIR;
1012 | };
1013 | 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = {
1014 | isa = PBXReferenceProxy;
1015 | fileType = archive.ar;
1016 | path = libcxxreact.a;
1017 | remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */;
1018 | sourceTree = BUILT_PRODUCTS_DIR;
1019 | };
1020 | 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = {
1021 | isa = PBXReferenceProxy;
1022 | fileType = archive.ar;
1023 | path = libcxxreact.a;
1024 | remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */;
1025 | sourceTree = BUILT_PRODUCTS_DIR;
1026 | };
1027 | 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = {
1028 | isa = PBXReferenceProxy;
1029 | fileType = archive.ar;
1030 | path = libjschelpers.a;
1031 | remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */;
1032 | sourceTree = BUILT_PRODUCTS_DIR;
1033 | };
1034 | 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = {
1035 | isa = PBXReferenceProxy;
1036 | fileType = archive.ar;
1037 | path = libjschelpers.a;
1038 | remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */;
1039 | sourceTree = BUILT_PRODUCTS_DIR;
1040 | };
1041 | 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
1042 | isa = PBXReferenceProxy;
1043 | fileType = archive.ar;
1044 | path = libRCTAnimation.a;
1045 | remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
1046 | sourceTree = BUILT_PRODUCTS_DIR;
1047 | };
1048 | 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
1049 | isa = PBXReferenceProxy;
1050 | fileType = archive.ar;
1051 | path = libRCTAnimation.a;
1052 | remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
1053 | sourceTree = BUILT_PRODUCTS_DIR;
1054 | };
1055 | 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = {
1056 | isa = PBXReferenceProxy;
1057 | fileType = archive.ar;
1058 | path = libRCTLinking.a;
1059 | remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */;
1060 | sourceTree = BUILT_PRODUCTS_DIR;
1061 | };
1062 | 832341B51AAA6A8300B99B32 /* libRCTText.a */ = {
1063 | isa = PBXReferenceProxy;
1064 | fileType = archive.ar;
1065 | path = libRCTText.a;
1066 | remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
1067 | sourceTree = BUILT_PRODUCTS_DIR;
1068 | };
1069 | ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = {
1070 | isa = PBXReferenceProxy;
1071 | fileType = archive.ar;
1072 | path = libRCTBlob.a;
1073 | remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;
1074 | sourceTree = BUILT_PRODUCTS_DIR;
1075 | };
1076 | /* End PBXReferenceProxy section */
1077 |
1078 | /* Begin PBXResourcesBuildPhase section */
1079 | 00E356EC1AD99517003FC87E /* Resources */ = {
1080 | isa = PBXResourcesBuildPhase;
1081 | buildActionMask = 2147483647;
1082 | files = (
1083 | );
1084 | runOnlyForDeploymentPostprocessing = 0;
1085 | };
1086 | 13B07F8E1A680F5B00A75B9A /* Resources */ = {
1087 | isa = PBXResourcesBuildPhase;
1088 | buildActionMask = 2147483647;
1089 | files = (
1090 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
1091 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
1092 | );
1093 | runOnlyForDeploymentPostprocessing = 0;
1094 | };
1095 | 2D02E4791E0B4A5D006451C7 /* Resources */ = {
1096 | isa = PBXResourcesBuildPhase;
1097 | buildActionMask = 2147483647;
1098 | files = (
1099 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,
1100 | );
1101 | runOnlyForDeploymentPostprocessing = 0;
1102 | };
1103 | 2D02E48E1E0B4A5D006451C7 /* Resources */ = {
1104 | isa = PBXResourcesBuildPhase;
1105 | buildActionMask = 2147483647;
1106 | files = (
1107 | );
1108 | runOnlyForDeploymentPostprocessing = 0;
1109 | };
1110 | /* End PBXResourcesBuildPhase section */
1111 |
1112 | /* Begin PBXShellScriptBuildPhase section */
1113 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
1114 | isa = PBXShellScriptBuildPhase;
1115 | buildActionMask = 2147483647;
1116 | files = (
1117 | );
1118 | inputPaths = (
1119 | );
1120 | name = "Bundle React Native code and images";
1121 | outputPaths = (
1122 | );
1123 | runOnlyForDeploymentPostprocessing = 0;
1124 | shellPath = /bin/sh;
1125 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
1126 | };
1127 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
1128 | isa = PBXShellScriptBuildPhase;
1129 | buildActionMask = 2147483647;
1130 | files = (
1131 | );
1132 | inputPaths = (
1133 | );
1134 | name = "Bundle React Native Code And Images";
1135 | outputPaths = (
1136 | );
1137 | runOnlyForDeploymentPostprocessing = 0;
1138 | shellPath = /bin/sh;
1139 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
1140 | };
1141 | /* End PBXShellScriptBuildPhase section */
1142 |
1143 | /* Begin PBXSourcesBuildPhase section */
1144 | 00E356EA1AD99517003FC87E /* Sources */ = {
1145 | isa = PBXSourcesBuildPhase;
1146 | buildActionMask = 2147483647;
1147 | files = (
1148 | 00E356F31AD99517003FC87E /* exampleTests.m in Sources */,
1149 | );
1150 | runOnlyForDeploymentPostprocessing = 0;
1151 | };
1152 | 13B07F871A680F5B00A75B9A /* Sources */ = {
1153 | isa = PBXSourcesBuildPhase;
1154 | buildActionMask = 2147483647;
1155 | files = (
1156 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
1157 | 13B07FC11A68108700A75B9A /* main.m in Sources */,
1158 | );
1159 | runOnlyForDeploymentPostprocessing = 0;
1160 | };
1161 | 2D02E4771E0B4A5D006451C7 /* Sources */ = {
1162 | isa = PBXSourcesBuildPhase;
1163 | buildActionMask = 2147483647;
1164 | files = (
1165 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
1166 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,
1167 | );
1168 | runOnlyForDeploymentPostprocessing = 0;
1169 | };
1170 | 2D02E48C1E0B4A5D006451C7 /* Sources */ = {
1171 | isa = PBXSourcesBuildPhase;
1172 | buildActionMask = 2147483647;
1173 | files = (
1174 | 2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */,
1175 | );
1176 | runOnlyForDeploymentPostprocessing = 0;
1177 | };
1178 | /* End PBXSourcesBuildPhase section */
1179 |
1180 | /* Begin PBXTargetDependency section */
1181 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
1182 | isa = PBXTargetDependency;
1183 | target = 13B07F861A680F5B00A75B9A /* example */;
1184 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
1185 | };
1186 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
1187 | isa = PBXTargetDependency;
1188 | target = 2D02E47A1E0B4A5D006451C7 /* example-tvOS */;
1189 | targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
1190 | };
1191 | /* End PBXTargetDependency section */
1192 |
1193 | /* Begin PBXVariantGroup section */
1194 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
1195 | isa = PBXVariantGroup;
1196 | children = (
1197 | 13B07FB21A68108700A75B9A /* Base */,
1198 | );
1199 | name = LaunchScreen.xib;
1200 | path = example;
1201 | sourceTree = "";
1202 | };
1203 | /* End PBXVariantGroup section */
1204 |
1205 | /* Begin XCBuildConfiguration section */
1206 | 00E356F61AD99517003FC87E /* Debug */ = {
1207 | isa = XCBuildConfiguration;
1208 | buildSettings = {
1209 | BUNDLE_LOADER = "$(TEST_HOST)";
1210 | GCC_PREPROCESSOR_DEFINITIONS = (
1211 | "DEBUG=1",
1212 | "$(inherited)",
1213 | );
1214 | HEADER_SEARCH_PATHS = (
1215 | "$(inherited)",
1216 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1217 | );
1218 | INFOPLIST_FILE = exampleTests/Info.plist;
1219 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1220 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1221 | LIBRARY_SEARCH_PATHS = (
1222 | "$(inherited)",
1223 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1224 | );
1225 | OTHER_LDFLAGS = (
1226 | "-ObjC",
1227 | "-lc++",
1228 | );
1229 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1230 | PRODUCT_NAME = "$(TARGET_NAME)";
1231 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example";
1232 | };
1233 | name = Debug;
1234 | };
1235 | 00E356F71AD99517003FC87E /* Release */ = {
1236 | isa = XCBuildConfiguration;
1237 | buildSettings = {
1238 | BUNDLE_LOADER = "$(TEST_HOST)";
1239 | COPY_PHASE_STRIP = NO;
1240 | HEADER_SEARCH_PATHS = (
1241 | "$(inherited)",
1242 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1243 | );
1244 | INFOPLIST_FILE = exampleTests/Info.plist;
1245 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1246 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1247 | LIBRARY_SEARCH_PATHS = (
1248 | "$(inherited)",
1249 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1250 | );
1251 | OTHER_LDFLAGS = (
1252 | "-ObjC",
1253 | "-lc++",
1254 | );
1255 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1256 | PRODUCT_NAME = "$(TARGET_NAME)";
1257 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example";
1258 | };
1259 | name = Release;
1260 | };
1261 | 13B07F941A680F5B00A75B9A /* Debug */ = {
1262 | isa = XCBuildConfiguration;
1263 | buildSettings = {
1264 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1265 | CURRENT_PROJECT_VERSION = 1;
1266 | DEAD_CODE_STRIPPING = NO;
1267 | HEADER_SEARCH_PATHS = (
1268 | "$(inherited)",
1269 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1270 | );
1271 | INFOPLIST_FILE = example/Info.plist;
1272 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1273 | OTHER_LDFLAGS = (
1274 | "$(inherited)",
1275 | "-ObjC",
1276 | "-lc++",
1277 | );
1278 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1279 | PRODUCT_NAME = example;
1280 | VERSIONING_SYSTEM = "apple-generic";
1281 | };
1282 | name = Debug;
1283 | };
1284 | 13B07F951A680F5B00A75B9A /* Release */ = {
1285 | isa = XCBuildConfiguration;
1286 | buildSettings = {
1287 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1288 | CURRENT_PROJECT_VERSION = 1;
1289 | HEADER_SEARCH_PATHS = (
1290 | "$(inherited)",
1291 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1292 | );
1293 | INFOPLIST_FILE = example/Info.plist;
1294 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1295 | OTHER_LDFLAGS = (
1296 | "$(inherited)",
1297 | "-ObjC",
1298 | "-lc++",
1299 | );
1300 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
1301 | PRODUCT_NAME = example;
1302 | VERSIONING_SYSTEM = "apple-generic";
1303 | };
1304 | name = Release;
1305 | };
1306 | 2D02E4971E0B4A5E006451C7 /* Debug */ = {
1307 | isa = XCBuildConfiguration;
1308 | buildSettings = {
1309 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
1310 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
1311 | CLANG_ANALYZER_NONNULL = YES;
1312 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1313 | CLANG_WARN_INFINITE_RECURSION = YES;
1314 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1315 | DEBUG_INFORMATION_FORMAT = dwarf;
1316 | ENABLE_TESTABILITY = YES;
1317 | GCC_NO_COMMON_BLOCKS = YES;
1318 | HEADER_SEARCH_PATHS = (
1319 | "$(inherited)",
1320 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1321 | );
1322 | INFOPLIST_FILE = "example-tvOS/Info.plist";
1323 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1324 | LIBRARY_SEARCH_PATHS = (
1325 | "$(inherited)",
1326 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1327 | );
1328 | OTHER_LDFLAGS = (
1329 | "-ObjC",
1330 | "-lc++",
1331 | );
1332 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOS";
1333 | PRODUCT_NAME = "$(TARGET_NAME)";
1334 | SDKROOT = appletvos;
1335 | TARGETED_DEVICE_FAMILY = 3;
1336 | TVOS_DEPLOYMENT_TARGET = 9.2;
1337 | };
1338 | name = Debug;
1339 | };
1340 | 2D02E4981E0B4A5E006451C7 /* Release */ = {
1341 | isa = XCBuildConfiguration;
1342 | buildSettings = {
1343 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
1344 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
1345 | CLANG_ANALYZER_NONNULL = YES;
1346 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1347 | CLANG_WARN_INFINITE_RECURSION = YES;
1348 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1349 | COPY_PHASE_STRIP = NO;
1350 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1351 | GCC_NO_COMMON_BLOCKS = YES;
1352 | HEADER_SEARCH_PATHS = (
1353 | "$(inherited)",
1354 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1355 | );
1356 | INFOPLIST_FILE = "example-tvOS/Info.plist";
1357 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1358 | LIBRARY_SEARCH_PATHS = (
1359 | "$(inherited)",
1360 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1361 | );
1362 | OTHER_LDFLAGS = (
1363 | "-ObjC",
1364 | "-lc++",
1365 | );
1366 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOS";
1367 | PRODUCT_NAME = "$(TARGET_NAME)";
1368 | SDKROOT = appletvos;
1369 | TARGETED_DEVICE_FAMILY = 3;
1370 | TVOS_DEPLOYMENT_TARGET = 9.2;
1371 | };
1372 | name = Release;
1373 | };
1374 | 2D02E4991E0B4A5E006451C7 /* Debug */ = {
1375 | isa = XCBuildConfiguration;
1376 | buildSettings = {
1377 | BUNDLE_LOADER = "$(TEST_HOST)";
1378 | CLANG_ANALYZER_NONNULL = YES;
1379 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1380 | CLANG_WARN_INFINITE_RECURSION = YES;
1381 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1382 | DEBUG_INFORMATION_FORMAT = dwarf;
1383 | ENABLE_TESTABILITY = YES;
1384 | GCC_NO_COMMON_BLOCKS = YES;
1385 | HEADER_SEARCH_PATHS = (
1386 | "$(inherited)",
1387 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1388 | );
1389 | INFOPLIST_FILE = "example-tvOSTests/Info.plist";
1390 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1391 | LIBRARY_SEARCH_PATHS = (
1392 | "$(inherited)",
1393 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1394 | );
1395 | OTHER_LDFLAGS = (
1396 | "-ObjC",
1397 | "-lc++",
1398 | );
1399 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOSTests";
1400 | PRODUCT_NAME = "$(TARGET_NAME)";
1401 | SDKROOT = appletvos;
1402 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS";
1403 | TVOS_DEPLOYMENT_TARGET = 10.1;
1404 | };
1405 | name = Debug;
1406 | };
1407 | 2D02E49A1E0B4A5E006451C7 /* Release */ = {
1408 | isa = XCBuildConfiguration;
1409 | buildSettings = {
1410 | BUNDLE_LOADER = "$(TEST_HOST)";
1411 | CLANG_ANALYZER_NONNULL = YES;
1412 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
1413 | CLANG_WARN_INFINITE_RECURSION = YES;
1414 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1415 | COPY_PHASE_STRIP = NO;
1416 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1417 | GCC_NO_COMMON_BLOCKS = YES;
1418 | HEADER_SEARCH_PATHS = (
1419 | "$(inherited)",
1420 | "$(SRCROOT)/../node_modules/react-native-ultra-picker-ios/UltraPickerIOS/UltraPickerIOS",
1421 | );
1422 | INFOPLIST_FILE = "example-tvOSTests/Info.plist";
1423 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1424 | LIBRARY_SEARCH_PATHS = (
1425 | "$(inherited)",
1426 | "\"$(SRCROOT)/$(TARGET_NAME)\"",
1427 | );
1428 | OTHER_LDFLAGS = (
1429 | "-ObjC",
1430 | "-lc++",
1431 | );
1432 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOSTests";
1433 | PRODUCT_NAME = "$(TARGET_NAME)";
1434 | SDKROOT = appletvos;
1435 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS";
1436 | TVOS_DEPLOYMENT_TARGET = 10.1;
1437 | };
1438 | name = Release;
1439 | };
1440 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
1441 | isa = XCBuildConfiguration;
1442 | buildSettings = {
1443 | ALWAYS_SEARCH_USER_PATHS = NO;
1444 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
1445 | CLANG_CXX_LIBRARY = "libc++";
1446 | CLANG_ENABLE_MODULES = YES;
1447 | CLANG_ENABLE_OBJC_ARC = YES;
1448 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1449 | CLANG_WARN_BOOL_CONVERSION = YES;
1450 | CLANG_WARN_COMMA = YES;
1451 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1452 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1453 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1454 | CLANG_WARN_EMPTY_BODY = YES;
1455 | CLANG_WARN_ENUM_CONVERSION = YES;
1456 | CLANG_WARN_INFINITE_RECURSION = YES;
1457 | CLANG_WARN_INT_CONVERSION = YES;
1458 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1459 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1460 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1461 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1462 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1463 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1464 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1465 | CLANG_WARN_UNREACHABLE_CODE = YES;
1466 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1467 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1468 | COPY_PHASE_STRIP = NO;
1469 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1470 | ENABLE_TESTABILITY = YES;
1471 | GCC_C_LANGUAGE_STANDARD = gnu99;
1472 | GCC_DYNAMIC_NO_PIC = NO;
1473 | GCC_NO_COMMON_BLOCKS = YES;
1474 | GCC_OPTIMIZATION_LEVEL = 0;
1475 | GCC_PREPROCESSOR_DEFINITIONS = (
1476 | "DEBUG=1",
1477 | "$(inherited)",
1478 | );
1479 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
1480 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1481 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1482 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1483 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1484 | GCC_WARN_UNUSED_FUNCTION = YES;
1485 | GCC_WARN_UNUSED_VARIABLE = YES;
1486 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1487 | MTL_ENABLE_DEBUG_INFO = YES;
1488 | ONLY_ACTIVE_ARCH = YES;
1489 | SDKROOT = iphoneos;
1490 | };
1491 | name = Debug;
1492 | };
1493 | 83CBBA211A601CBA00E9B192 /* Release */ = {
1494 | isa = XCBuildConfiguration;
1495 | buildSettings = {
1496 | ALWAYS_SEARCH_USER_PATHS = NO;
1497 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
1498 | CLANG_CXX_LIBRARY = "libc++";
1499 | CLANG_ENABLE_MODULES = YES;
1500 | CLANG_ENABLE_OBJC_ARC = YES;
1501 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
1502 | CLANG_WARN_BOOL_CONVERSION = YES;
1503 | CLANG_WARN_COMMA = YES;
1504 | CLANG_WARN_CONSTANT_CONVERSION = YES;
1505 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
1506 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
1507 | CLANG_WARN_EMPTY_BODY = YES;
1508 | CLANG_WARN_ENUM_CONVERSION = YES;
1509 | CLANG_WARN_INFINITE_RECURSION = YES;
1510 | CLANG_WARN_INT_CONVERSION = YES;
1511 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
1512 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
1513 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
1514 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
1515 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
1516 | CLANG_WARN_STRICT_PROTOTYPES = YES;
1517 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
1518 | CLANG_WARN_UNREACHABLE_CODE = YES;
1519 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1520 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1521 | COPY_PHASE_STRIP = YES;
1522 | ENABLE_NS_ASSERTIONS = NO;
1523 | ENABLE_STRICT_OBJC_MSGSEND = YES;
1524 | GCC_C_LANGUAGE_STANDARD = gnu99;
1525 | GCC_NO_COMMON_BLOCKS = YES;
1526 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1527 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1528 | GCC_WARN_UNDECLARED_SELECTOR = YES;
1529 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1530 | GCC_WARN_UNUSED_FUNCTION = YES;
1531 | GCC_WARN_UNUSED_VARIABLE = YES;
1532 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1533 | MTL_ENABLE_DEBUG_INFO = NO;
1534 | SDKROOT = iphoneos;
1535 | VALIDATE_PRODUCT = YES;
1536 | };
1537 | name = Release;
1538 | };
1539 | /* End XCBuildConfiguration section */
1540 |
1541 | /* Begin XCConfigurationList section */
1542 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */ = {
1543 | isa = XCConfigurationList;
1544 | buildConfigurations = (
1545 | 00E356F61AD99517003FC87E /* Debug */,
1546 | 00E356F71AD99517003FC87E /* Release */,
1547 | );
1548 | defaultConfigurationIsVisible = 0;
1549 | defaultConfigurationName = Release;
1550 | };
1551 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */ = {
1552 | isa = XCConfigurationList;
1553 | buildConfigurations = (
1554 | 13B07F941A680F5B00A75B9A /* Debug */,
1555 | 13B07F951A680F5B00A75B9A /* Release */,
1556 | );
1557 | defaultConfigurationIsVisible = 0;
1558 | defaultConfigurationName = Release;
1559 | };
1560 | 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */ = {
1561 | isa = XCConfigurationList;
1562 | buildConfigurations = (
1563 | 2D02E4971E0B4A5E006451C7 /* Debug */,
1564 | 2D02E4981E0B4A5E006451C7 /* Release */,
1565 | );
1566 | defaultConfigurationIsVisible = 0;
1567 | defaultConfigurationName = Release;
1568 | };
1569 | 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */ = {
1570 | isa = XCConfigurationList;
1571 | buildConfigurations = (
1572 | 2D02E4991E0B4A5E006451C7 /* Debug */,
1573 | 2D02E49A1E0B4A5E006451C7 /* Release */,
1574 | );
1575 | defaultConfigurationIsVisible = 0;
1576 | defaultConfigurationName = Release;
1577 | };
1578 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */ = {
1579 | isa = XCConfigurationList;
1580 | buildConfigurations = (
1581 | 83CBBA201A601CBA00E9B192 /* Debug */,
1582 | 83CBBA211A601CBA00E9B192 /* Release */,
1583 | );
1584 | defaultConfigurationIsVisible = 0;
1585 | defaultConfigurationName = Release;
1586 | };
1587 | /* End XCConfigurationList section */
1588 | };
1589 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
1590 | }
1591 |
--------------------------------------------------------------------------------