Full Code of notjosh/Marzipants for AI

master 4909a2502d95 cached
558 files
9.2 MB
2.4M tokens
1389 symbols
1 requests
Download .txt
Showing preview only (9,761K chars total). Download the full file or copy to clipboard to get everything.
Repository: notjosh/Marzipants
Branch: master
Commit: 4909a2502d95
Files: 558
Total size: 9.2 MB

Directory structure:
gitextract_qv1a0904/

├── .babelrc
├── .buckconfig
├── .flowconfig
├── .gitattributes
├── .gitignore
├── .watchmanconfig
├── App.js
├── LICENSE.md
├── README.md
├── RNTester/
│   ├── ARTExample.js
│   ├── AccessibilityAndroidExample.android.js
│   ├── AccessibilityIOSExample.js
│   ├── ActionSheetIOSExample.js
│   ├── ActivityIndicatorExample.js
│   ├── AlertExample.js
│   ├── AlertIOSExample.js
│   ├── AnimatedExample.js
│   ├── AnimatedGratuitousApp/
│   │   ├── AnExApp.js
│   │   ├── AnExBobble.js
│   │   ├── AnExChained.js
│   │   ├── AnExScroll.js
│   │   ├── AnExSet.js
│   │   ├── AnExSlides.md
│   │   └── AnExTilt.js
│   ├── AppStateExample.js
│   ├── AssetScaledImageExample.js
│   ├── AsyncStorageExample.js
│   ├── BorderExample.js
│   ├── BoxShadowExample.js
│   ├── ButtonExample.js
│   ├── CameraRollExample.js
│   ├── CameraRollView.js
│   ├── CheckBoxExample.js
│   ├── ClipboardExample.js
│   ├── DatePickerAndroidExample.js
│   ├── DatePickerIOSExample.js
│   ├── DimensionsExample.js
│   ├── ExampleTypes.js
│   ├── FlatListExample.js
│   ├── GeolocationExample.js
│   ├── ImageCapInsetsExample.js
│   ├── ImageEditingExample.js
│   ├── ImageExample.js
│   ├── InputAccessoryViewExample.js
│   ├── KeyboardAvoidingViewExample.js
│   ├── LayoutAnimationExample.js
│   ├── LayoutEventsExample.js
│   ├── LayoutExample.js
│   ├── LinkingExample.js
│   ├── ListExampleShared.js
│   ├── ListViewExample.js
│   ├── ListViewGridLayoutExample.js
│   ├── ListViewPagingExample.js
│   ├── MaskedViewExample.js
│   ├── ModalExample.js
│   ├── MultiColumnExample.js
│   ├── NativeAnimationsExample.js
│   ├── NavigatorIOSBarStyleExample.js
│   ├── NavigatorIOSColorsExample.js
│   ├── NavigatorIOSExample.js
│   ├── NetInfoExample.js
│   ├── OrientationChangeExample.js
│   ├── PanResponderExample.js
│   ├── PermissionsExampleAndroid.android.js
│   ├── PickerExample.js
│   ├── PickerIOSExample.js
│   ├── PointerEventsExample.js
│   ├── ProgressBarAndroidExample.android.js
│   ├── ProgressViewIOSExample.js
│   ├── PushNotificationIOSExample.js
│   ├── RCTRootViewIOSExample.js
│   ├── RNTesterActions.js
│   ├── RNTesterApp.android.js
│   ├── RNTesterApp.ios.js
│   ├── RNTesterBlock.js
│   ├── RNTesterButton.js
│   ├── RNTesterExampleContainer.js
│   ├── RNTesterExampleList.js
│   ├── RNTesterList.android.js
│   ├── RNTesterList.ios.js
│   ├── RNTesterNavigationReducer.js
│   ├── RNTesterPage.js
│   ├── RNTesterSettingSwitchRow.js
│   ├── RNTesterStatePersister.js
│   ├── RNTesterTitle.js
│   ├── RTLExample.js
│   ├── RefreshControlExample.js
│   ├── RootViewSizeFlexibilityExampleApp.js
│   ├── SafeAreaViewExample.js
│   ├── ScrollViewExample.js
│   ├── ScrollViewSimpleExample.js
│   ├── SectionListExample.js
│   ├── SegmentedControlIOSExample.js
│   ├── SetPropertiesExampleApp.js
│   ├── ShareExample.js
│   ├── SliderExample.js
│   ├── SnapshotExample.js
│   ├── StatusBarExample.js
│   ├── SwipeableFlatListExample.js
│   ├── SwipeableListViewExample.js
│   ├── SwitchExample.js
│   ├── TVEventHandlerExample.js
│   ├── TabBarIOSBarStyleExample.js
│   ├── TabBarIOSExample.js
│   ├── TextExample.android.js
│   ├── TextExample.ios.js
│   ├── TextInputExample.android.js
│   ├── TextInputExample.ios.js
│   ├── TimePickerAndroidExample.js
│   ├── TimerExample.js
│   ├── ToastAndroidExample.android.js
│   ├── ToolbarAndroidExample.android.js
│   ├── ToolbarAndroidExample.ios.js
│   ├── TouchableExample.js
│   ├── TransformExample.js
│   ├── TransparentHitTestExample.js
│   ├── URIActionMap.js
│   ├── VibrationExample.js
│   ├── VibrationIOSExample.js
│   ├── ViewExample.js
│   ├── ViewPagerAndroidExample.android.js
│   ├── WebSocketExample.js
│   ├── WebViewExample.js
│   ├── XHRExample.js
│   ├── XHRExampleBinaryUpload.js
│   ├── XHRExampleCookies.js
│   ├── XHRExampleDownload.js
│   ├── XHRExampleFetch.js
│   ├── XHRExampleFormData.js
│   ├── XHRExampleHeaders.js
│   ├── XHRExampleOnTimeOut.js
│   ├── createExamplePage.js
│   ├── helloworld.html
│   ├── http_test_server.js
│   ├── messagingtest.html
│   └── websocket_test_server.js
├── android/
│   ├── app/
│   │   ├── BUCK
│   │   ├── build.gradle
│   │   ├── proguard-rules.pro
│   │   └── src/
│   │       └── main/
│   │           ├── AndroidManifest.xml
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── marzipants/
│   │           │           ├── MainActivity.java
│   │           │           └── MainApplication.java
│   │           └── res/
│   │               └── values/
│   │                   ├── strings.xml
│   │                   └── styles.xml
│   ├── build.gradle
│   ├── gradle/
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── keystores/
│   │   ├── BUCK
│   │   └── debug.keystore.properties
│   └── settings.gradle
├── app.json
├── index.js
├── ios/
│   ├── Frameworks/
│   │   ├── UIFoundation.framework/
│   │   │   ├── Headers/
│   │   │   │   ├── CDStructures.h
│   │   │   │   ├── NSATSGlyphStorage.h
│   │   │   │   ├── NSATSLineFragment.h
│   │   │   │   ├── NSATSTypesetter.h
│   │   │   │   ├── NSArray-UICollectionAdditions_Performance.h
│   │   │   │   ├── NSArray-UIRemovalAdditions.h
│   │   │   │   ├── NSAttributeDictionary.h
│   │   │   │   ├── NSAttributeDictionaryEnumerator.h
│   │   │   │   ├── NSAttributedString-NSAttributedStringAttachmentConveniences.h
│   │   │   │   ├── NSAttributedString-NSAttributedStringUIFoundationAdditions.h
│   │   │   │   ├── NSAttributedString-NSExtendedStringDrawing.h
│   │   │   │   ├── NSAttributedString-NSStringDrawing.h
│   │   │   │   ├── NSCIDGlyphInfo.h
│   │   │   │   ├── NSCTFont.h
│   │   │   │   ├── NSCTFontDescriptor.h
│   │   │   │   ├── NSCTGlyphInfo.h
│   │   │   │   ├── NSCoding-Protocol.h
│   │   │   │   ├── NSCollectionViewAnimation.h
│   │   │   │   ├── NSCollectionViewData.h
│   │   │   │   ├── NSCollectionViewFlowLayout.h
│   │   │   │   ├── NSCollectionViewFlowLayoutAuxiliary.h
│   │   │   │   ├── NSCollectionViewFlowLayoutInvalidationContext.h
│   │   │   │   ├── NSCollectionViewIndexMapper.h
│   │   │   │   ├── NSCollectionViewLayout.h
│   │   │   │   ├── NSCollectionViewLayoutAttributes.h
│   │   │   │   ├── NSCollectionViewLayoutAttributesAuxiliary.h
│   │   │   │   ├── NSCollectionViewLayoutInvalidationContext.h
│   │   │   │   ├── NSCollectionViewTransitionLayout.h
│   │   │   │   ├── NSCollectionViewUpdate.h
│   │   │   │   ├── NSCollectionViewUpdateItem.h
│   │   │   │   ├── NSConcreteGlyphGenerator.h
│   │   │   │   ├── NSConcreteNotifyingMutableAttributedString.h
│   │   │   │   ├── NSConcreteTextStorage.h
│   │   │   │   ├── NSCopying-Protocol.h
│   │   │   │   ├── NSCoreTypesetter.h
│   │   │   │   ├── NSDictionary-UICollectionAdditions.h
│   │   │   │   ├── NSDocFormatReader.h
│   │   │   │   ├── NSDocFormatWriter.h
│   │   │   │   ├── NSExtraLMData.h
│   │   │   │   ├── NSFont.h
│   │   │   │   ├── NSFontAssetRequest.h
│   │   │   │   ├── NSFontDescriptor.h
│   │   │   │   ├── NSGlyphGenerator.h
│   │   │   │   ├── NSGlyphInfo.h
│   │   │   │   ├── NSGlyphNameGlyphInfo.h
│   │   │   │   ├── NSHTMLReader.h
│   │   │   │   ├── NSHTMLWebDelegate.h
│   │   │   │   ├── NSHTMLWriter.h
│   │   │   │   ├── NSIdRunStorage.h
│   │   │   │   ├── NSIdentityGlyphInfo.h
│   │   │   │   ├── NSIndexPath-NSCollectionViewAdditions.h
│   │   │   │   ├── NSIndexPath-UITableView.h
│   │   │   │   ├── NSInsertionPointHelper.h
│   │   │   │   ├── NSLayoutManager.h
│   │   │   │   ├── NSLayoutManagerDelegate-Protocol.h
│   │   │   │   ├── NSLayoutManagerTextBlockHelper.h
│   │   │   │   ├── NSLayoutManagerTextBlockRowArrayCache.h
│   │   │   │   ├── NSLineFragmentRenderingContext.h
│   │   │   │   ├── NSMutableArray-UICollectionAdditions_Performance.h
│   │   │   │   ├── NSMutableAttributedString-NSMutableAttributedStringAttachmentConveniences.h
│   │   │   │   ├── NSMutableAttributedString-NSMutableAttributedStringKitAdditions.h
│   │   │   │   ├── NSMutableCopying-Protocol.h
│   │   │   │   ├── NSMutableFontDescriptor.h
│   │   │   │   ├── NSMutableIndexPath.h
│   │   │   │   ├── NSMutableParagraphStyle.h
│   │   │   │   ├── NSObject-Protocol.h
│   │   │   │   ├── NSOpenDocumentReader.h
│   │   │   │   ├── NSOpenDocumentWriter.h
│   │   │   │   ├── NSParagraphArbitrator.h
│   │   │   │   ├── NSParagraphStyle.h
│   │   │   │   ├── NSParagraphStyleExtraData.h
│   │   │   │   ├── NSProgressReporting-Protocol.h
│   │   │   │   ├── NSRTFReader.h
│   │   │   │   ├── NSRTFReaderTableState.h
│   │   │   │   ├── NSRTFWriter.h
│   │   │   │   ├── NSRunStorage.h
│   │   │   │   ├── NSSecureCoding-Protocol.h
│   │   │   │   ├── NSShadow.h
│   │   │   │   ├── NSSingleLineTypesetter.h
│   │   │   │   ├── NSStorage.h
│   │   │   │   ├── NSString-NSExtendedStringDrawing.h
│   │   │   │   ├── NSString-NSStringDrawing.h
│   │   │   │   ├── NSString-NSStringDrawingExtension.h
│   │   │   │   ├── NSString-UIFontPrivate.h
│   │   │   │   ├── NSStringDrawingContext.h
│   │   │   │   ├── NSStringDrawingTextStorage.h
│   │   │   │   ├── NSStringDrawingTextStorageSettings.h
│   │   │   │   ├── NSSubstituteWebResource.h
│   │   │   │   ├── NSTempAttributeDictionary.h
│   │   │   │   ├── NSTextAlternatives.h
│   │   │   │   ├── NSTextApplicationFrameworkContextClient-Protocol.h
│   │   │   │   ├── NSTextAttachment.h
│   │   │   │   ├── NSTextAttachmentContainer-Protocol.h
│   │   │   │   ├── NSTextAttachmentViewProvider.h
│   │   │   │   ├── NSTextBlock.h
│   │   │   │   ├── NSTextBlockLayoutHelper.h
│   │   │   │   ├── NSTextContainer.h
│   │   │   │   ├── NSTextLayoutFragment.h
│   │   │   │   ├── NSTextLayoutOrientationProvider-Protocol.h
│   │   │   │   ├── NSTextLineFragment.h
│   │   │   │   ├── NSTextList.h
│   │   │   │   ├── NSTextStorage.h
│   │   │   │   ├── NSTextTab.h
│   │   │   │   ├── NSTextTable.h
│   │   │   │   ├── NSTextTableBlock.h
│   │   │   │   ├── NSTypesetter.h
│   │   │   │   ├── NSViewAnimationContext.h
│   │   │   │   ├── NSWordMLReader.h
│   │   │   │   ├── NSWordMLWriter.h
│   │   │   │   ├── NSXMLParserDelegate-Protocol.h
│   │   │   │   ├── NSZipTextReader.h
│   │   │   │   ├── UIBoxcarFilterPointFIFO.h
│   │   │   │   ├── UIFont.h
│   │   │   │   ├── UIFontDescriptor.h
│   │   │   │   ├── UINibCoderValue.h
│   │   │   │   ├── UINibDecoder.h
│   │   │   │   ├── UINibEncoder.h
│   │   │   │   ├── UINibStringIDTable.h
│   │   │   │   ├── UIPointFIFO.h
│   │   │   │   ├── UIQuadCurvePointFIFO.h
│   │   │   │   ├── _NSATSTypesetterGuts.h
│   │   │   │   ├── _NSAttributeRun.h
│   │   │   │   ├── _NSAttributes.h
│   │   │   │   ├── _NSCachedAttributedString.h
│   │   │   │   ├── _NSCollectionViewCore.h
│   │   │   │   ├── _NSCollectionViewItemKey.h
│   │   │   │   ├── _NSCollectionViewPrefetchItem.h
│   │   │   │   ├── _NSCollectionViewPrefetchingContext.h
│   │   │   │   ├── _NSCollectionViewTrackedValue.h
│   │   │   │   ├── _NSCollectionViewTrackedValueItem.h
│   │   │   │   ├── _NSFlowLayoutInfo.h
│   │   │   │   ├── _NSFlowLayoutItem.h
│   │   │   │   ├── _NSFlowLayoutRow.h
│   │   │   │   ├── _NSFlowLayoutSection.h
│   │   │   │   ├── _NSTextStorageSideData.h
│   │   │   │   ├── _NSUIAnimator.h
│   │   │   │   ├── _UICache.h
│   │   │   │   ├── _UIFontCacheKey.h
│   │   │   │   ├── _UIPointVector.h
│   │   │   │   ├── __NSATSStringSegment.h
│   │   │   │   ├── __NSFontTypefaceInfo.h
│   │   │   │   ├── __NSSharedFontInstanceInfo.h
│   │   │   │   └── __UIFontExtraData.h
│   │   │   └── UIFoundation.tbd
│   │   └── UIKit.framework/
│   │       ├── Headers/
│   │       │   ├── DocumentManager.h
│   │       │   ├── NSAttributedString.h
│   │       │   ├── NSDataAsset.h
│   │       │   ├── NSFileProviderExtension.h
│   │       │   ├── NSIndexPath+UIKitAdditions.h
│   │       │   ├── NSItemProvider+UIKitAdditions.h
│   │       │   ├── NSLayoutAnchor.h
│   │       │   ├── NSLayoutConstraint.h
│   │       │   ├── NSLayoutManager.h
│   │       │   ├── NSParagraphStyle.h
│   │       │   ├── NSShadow.h
│   │       │   ├── NSStringDrawing.h
│   │       │   ├── NSText.h
│   │       │   ├── NSTextAttachment.h
│   │       │   ├── NSTextContainer.h
│   │       │   ├── NSTextStorage.h
│   │       │   ├── UIAccelerometer.h
│   │       │   ├── UIAccessibility.h
│   │       │   ├── UIAccessibilityAdditions.h
│   │       │   ├── UIAccessibilityConstants.h
│   │       │   ├── UIAccessibilityContainer.h
│   │       │   ├── UIAccessibilityContentSizeCategoryImageAdjusting.h
│   │       │   ├── UIAccessibilityCustomAction.h
│   │       │   ├── UIAccessibilityCustomRotor.h
│   │       │   ├── UIAccessibilityElement.h
│   │       │   ├── UIAccessibilityIdentification.h
│   │       │   ├── UIAccessibilityLocationDescriptor.h
│   │       │   ├── UIAccessibilityZoom.h
│   │       │   ├── UIActionSheet.h
│   │       │   ├── UIActivity.h
│   │       │   ├── UIActivityIndicatorView.h
│   │       │   ├── UIActivityItemProvider.h
│   │       │   ├── UIActivityViewController.h
│   │       │   ├── UIAlert.h
│   │       │   ├── UIAlertController.h
│   │       │   ├── UIAlertView.h
│   │       │   ├── UIAppearance.h
│   │       │   ├── UIApplication.h
│   │       │   ├── UIApplicationShortcutItem.h
│   │       │   ├── UIAttachmentBehavior.h
│   │       │   ├── UIBarButtonItem.h
│   │       │   ├── UIBarButtonItemGroup.h
│   │       │   ├── UIBarCommon.h
│   │       │   ├── UIBarItem.h
│   │       │   ├── UIBezierPath.h
│   │       │   ├── UIBlurEffect.h
│   │       │   ├── UIButton.h
│   │       │   ├── UICloudSharingController.h
│   │       │   ├── UICollectionView.h
│   │       │   ├── UICollectionViewCell.h
│   │       │   ├── UICollectionViewController.h
│   │       │   ├── UICollectionViewFlowLayout.h
│   │       │   ├── UICollectionViewLayout.h
│   │       │   ├── UICollectionViewTransitionLayout.h
│   │       │   ├── UICollisionBehavior.h
│   │       │   ├── UIColor.h
│   │       │   ├── UIContentSizeCategory.h
│   │       │   ├── UIContentSizeCategoryAdjusting.h
│   │       │   ├── UIContextualAction.h
│   │       │   ├── UIControl.h
│   │       │   ├── UIDataDetectors.h
│   │       │   ├── UIDataSourceTranslating.h
│   │       │   ├── UIDatePicker.h
│   │       │   ├── UIDevice.h
│   │       │   ├── UIDocument.h
│   │       │   ├── UIDocumentBrowserAction.h
│   │       │   ├── UIDocumentBrowserViewController.h
│   │       │   ├── UIDocumentInteractionController.h
│   │       │   ├── UIDocumentMenuViewController.h
│   │       │   ├── UIDocumentPickerExtensionViewController.h
│   │       │   ├── UIDocumentPickerViewController.h
│   │       │   ├── UIDragInteraction.h
│   │       │   ├── UIDragItem.h
│   │       │   ├── UIDragPreview.h
│   │       │   ├── UIDragPreviewParameters.h
│   │       │   ├── UIDragSession.h
│   │       │   ├── UIDropInteraction.h
│   │       │   ├── UIDynamicAnimator.h
│   │       │   ├── UIDynamicBehavior.h
│   │       │   ├── UIDynamicItemBehavior.h
│   │       │   ├── UIEvent.h
│   │       │   ├── UIFeedbackGenerator.h
│   │       │   ├── UIFieldBehavior.h
│   │       │   ├── UIFocus.h
│   │       │   ├── UIFocusAnimationCoordinator.h
│   │       │   ├── UIFocusDebugger.h
│   │       │   ├── UIFocusGuide.h
│   │       │   ├── UIFocusMovementHint.h
│   │       │   ├── UIFocusSystem.h
│   │       │   ├── UIFont.h
│   │       │   ├── UIFontDescriptor.h
│   │       │   ├── UIFontMetrics.h
│   │       │   ├── UIGeometry.h
│   │       │   ├── UIGestureRecognizer.h
│   │       │   ├── UIGestureRecognizerSubclass.h
│   │       │   ├── UIGraphics.h
│   │       │   ├── UIGraphicsImageRenderer.h
│   │       │   ├── UIGraphicsPDFRenderer.h
│   │       │   ├── UIGraphicsRenderer.h
│   │       │   ├── UIGraphicsRendererSubclass.h
│   │       │   ├── UIGravityBehavior.h
│   │       │   ├── UIGuidedAccessRestrictions.h
│   │       │   ├── UIImage.h
│   │       │   ├── UIImageAsset.h
│   │       │   ├── UIImagePickerController.h
│   │       │   ├── UIImageView.h
│   │       │   ├── UIImpactFeedbackGenerator.h
│   │       │   ├── UIInputView.h
│   │       │   ├── UIInputViewController.h
│   │       │   ├── UIInteraction.h
│   │       │   ├── UIInterface.h
│   │       │   ├── UIKit.apinotes
│   │       │   ├── UIKit.h
│   │       │   ├── UIKitCore.h
│   │       │   ├── UIKitDefines.h
│   │       │   ├── UILabel.h
│   │       │   ├── UILayoutGuide.h
│   │       │   ├── UILexicon.h
│   │       │   ├── UILocalNotification.h
│   │       │   ├── UILocalizedIndexedCollation.h
│   │       │   ├── UILongPressGestureRecognizer.h
│   │       │   ├── UIManagedDocument.h
│   │       │   ├── UIMenuController.h
│   │       │   ├── UIMotionEffect.h
│   │       │   ├── UINavigationBar.h
│   │       │   ├── UINavigationController.h
│   │       │   ├── UINavigationItem.h
│   │       │   ├── UINib.h
│   │       │   ├── UINibDeclarations.h
│   │       │   ├── UINibLoading.h
│   │       │   ├── UINotificationFeedbackGenerator.h
│   │       │   ├── UIPageControl.h
│   │       │   ├── UIPageViewController.h
│   │       │   ├── UIPanGestureRecognizer.h
│   │       │   ├── UIPasteConfiguration.h
│   │       │   ├── UIPasteConfigurationSupporting.h
│   │       │   ├── UIPasteboard.h
│   │       │   ├── UIPickerView.h
│   │       │   ├── UIPinchGestureRecognizer.h
│   │       │   ├── UIPopoverBackgroundView.h
│   │       │   ├── UIPopoverController.h
│   │       │   ├── UIPopoverPresentationController.h
│   │       │   ├── UIPopoverSupport.h
│   │       │   ├── UIPresentationController.h
│   │       │   ├── UIPress.h
│   │       │   ├── UIPressesEvent.h
│   │       │   ├── UIPreviewInteraction.h
│   │       │   ├── UIPrintError.h
│   │       │   ├── UIPrintFormatter.h
│   │       │   ├── UIPrintInfo.h
│   │       │   ├── UIPrintInteractionController.h
│   │       │   ├── UIPrintPageRenderer.h
│   │       │   ├── UIPrintPaper.h
│   │       │   ├── UIPrinter.h
│   │       │   ├── UIPrinterPickerController.h
│   │       │   ├── UIProgressView.h
│   │       │   ├── UIPushBehavior.h
│   │       │   ├── UIReferenceLibraryViewController.h
│   │       │   ├── UIRefreshControl.h
│   │       │   ├── UIRegion.h
│   │       │   ├── UIResponder.h
│   │       │   ├── UIRotationGestureRecognizer.h
│   │       │   ├── UIScreen.h
│   │       │   ├── UIScreenEdgePanGestureRecognizer.h
│   │       │   ├── UIScreenMode.h
│   │       │   ├── UIScrollView.h
│   │       │   ├── UISearchBar.h
│   │       │   ├── UISearchContainerViewController.h
│   │       │   ├── UISearchController.h
│   │       │   ├── UISearchDisplayController.h
│   │       │   ├── UISegmentedControl.h
│   │       │   ├── UISelectionFeedbackGenerator.h
│   │       │   ├── UISlider.h
│   │       │   ├── UISnapBehavior.h
│   │       │   ├── UISplitViewController.h
│   │       │   ├── UISpringLoadedInteraction.h
│   │       │   ├── UISpringLoadedInteractionSupporting.h
│   │       │   ├── UIStackView.h
│   │       │   ├── UIStateRestoration.h
│   │       │   ├── UIStepper.h
│   │       │   ├── UIStoryboard.h
│   │       │   ├── UIStoryboardPopoverSegue.h
│   │       │   ├── UIStoryboardSegue.h
│   │       │   ├── UIStringDrawing.h
│   │       │   ├── UISwipeActionsConfiguration.h
│   │       │   ├── UISwipeGestureRecognizer.h
│   │       │   ├── UISwitch.h
│   │       │   ├── UITabBar.h
│   │       │   ├── UITabBarController.h
│   │       │   ├── UITabBarItem.h
│   │       │   ├── UITableView.h
│   │       │   ├── UITableViewCell.h
│   │       │   ├── UITableViewController.h
│   │       │   ├── UITableViewHeaderFooterView.h
│   │       │   ├── UITapGestureRecognizer.h
│   │       │   ├── UITargetedDragPreview.h
│   │       │   ├── UITextChecker.h
│   │       │   ├── UITextDragPreviewRenderer.h
│   │       │   ├── UITextDragURLPreviews.h
│   │       │   ├── UITextDragging.h
│   │       │   ├── UITextDropProposal.h
│   │       │   ├── UITextDropping.h
│   │       │   ├── UITextField.h
│   │       │   ├── UITextInput.h
│   │       │   ├── UITextInputTraits.h
│   │       │   ├── UITextItemInteraction.h
│   │       │   ├── UITextPasteConfigurationSupporting.h
│   │       │   ├── UITextPasteDelegate.h
│   │       │   ├── UITextView.h
│   │       │   ├── UITimingCurveProvider.h
│   │       │   ├── UITimingParameters.h
│   │       │   ├── UIToolbar.h
│   │       │   ├── UITouch.h
│   │       │   ├── UITraitCollection.h
│   │       │   ├── UIUserActivity.h
│   │       │   ├── UIUserNotificationSettings.h
│   │       │   ├── UIVibrancyEffect.h
│   │       │   ├── UIVideoEditorController.h
│   │       │   ├── UIView.h
│   │       │   ├── UIViewAnimating.h
│   │       │   ├── UIViewController.h
│   │       │   ├── UIViewControllerTransitionCoordinator.h
│   │       │   ├── UIViewControllerTransitioning.h
│   │       │   ├── UIViewPropertyAnimator.h
│   │       │   ├── UIVisualEffect.h
│   │       │   ├── UIVisualEffectView.h
│   │       │   ├── UIWebView.h
│   │       │   └── UIWindow.h
│   │       ├── Modules/
│   │       │   └── module.modulemap
│   │       └── UIKit.tbd
│   ├── Marzipants/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Base.lproj/
│   │   │   └── LaunchScreen.xib
│   │   ├── Images.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   └── main.m
│   ├── Marzipants-tvOS/
│   │   └── Info.plist
│   ├── Marzipants-tvOSTests/
│   │   └── Info.plist
│   ├── Marzipants.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── Marzipants.xcscheme
│   │           ├── MarzipantsMac.xcscheme
│   │           └── MarzipantsMacSwift.xcscheme
│   ├── MarzipantsMac/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   ├── MarzipantsMac.entitlements
│   │   └── main.m
│   ├── MarzipantsMacSwift/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   ├── MarzipantsMacSwift-Bridging-Header.h
│   │   └── MarzipantsMacSwift.entitlements
│   └── MarzipantsTests/
│       ├── Info.plist
│       └── MarzipantsTests.m
└── package.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .babelrc
================================================
{
  "presets": ["react-native"]
}


================================================
FILE: .buckconfig
================================================

[android]
  target = Google Inc.:Google APIs:23

[maven_repositories]
  central = https://repo1.maven.org/maven2


================================================
FILE: .flowconfig
================================================
[ignore]
; We fork some components by platform
.*/*[.]android.js

; Ignore "BUCK" generated dirs
<PROJECT_ROOT>/\.buckd/

; Ignore unexpected extra "@providesModule"
.*/node_modules/.*/node_modules/fbjs/.*

; Ignore duplicate module providers
; For RN Apps installed via npm, "Libraries" folder is inside
; "node_modules/react-native" but in the source repo it is in the root
.*/Libraries/react-native/React.js

; Ignore polyfills
.*/Libraries/polyfills/.*

; Ignore metro
.*/node_modules/metro/.*

[include]

[libs]
node_modules/react-native/Libraries/react-native/react-native-interface.js
node_modules/react-native/flow/
node_modules/react-native/flow-github/

[options]
emoji=true

module.system=haste

munge_underscores=true

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'

module.file_ext=.js
module.file_ext=.jsx
module.file_ext=.json
module.file_ext=.native.js

suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState

suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError

[version]
^0.67.0


================================================
FILE: .gitattributes
================================================
*.pbxproj -text


================================================
FILE: .gitignore
================================================
# OSX
#
.DS_Store

# Xcode
#
#build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml

# node.js
#
#node_modules/
npm-debug.log
yarn-error.log

# BUCK
buck-out/
\.buckd/
*.keystore

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots

# Bundle artifact
*.jsbundle


================================================
FILE: .watchmanconfig
================================================
{}

================================================
FILE: App.js
================================================
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View
} from 'react-native';

const instructions = Platform.select({
  ios: 'Press Cmd+R to reload,\n' +
    'Cmd+D or shake for dev menu',
  android: 'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

type Props = {};
export default class App extends Component<Props> {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit App.js
        </Text>
        <Text style={styles.instructions}>
          {instructions}
        </Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});


================================================
FILE: LICENSE.md
================================================
MIT License

Copyright (c) 2018 Joshua May

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================
FILE: README.md
================================================
# Marzipants

Here's a proof-of-concept that React Native can work* (*lol) under Marzipan.

But, like, it's proof that we don't need Electron, right? 💪

## Running Marzipan

Check out [biscuitehh/MarzipanPlatter](https://github.com/biscuitehh/MarzipanPlatter) for a nice guide on getting Marzipan running.

## It's ✨Reasonably Good✨

It's surprising how well it's working. Besides the obvious mobile-specific things, it's running abouuuut as well as tvOS builds of React Native.

I wouldn't recommend using it. Ever. C'mon now.

## How It Looks

I have some screenshots* of the [RNTester](https://github.com/facebook/react-native/tree/master/RNTester) sample application from React Native.

(*photos, lols. My UI server dies _hard_ the second my Touchbar becomes active, which my screenshot shortcut does. Ehhh)

![](http://hi.notjo.sh/2c2W2w0J0U2M/DfNVhQUXUAIFt7b.jpg%20large.jpeg)
![](http://hi.notjo.sh/3o2f153c3h3n/DfNVeu0XcAEuLcM.jpg%20large.jpeg)
![](http://hi.notjo.sh/1B03143k2m0t/DfNVhS9W4AIUVG9.jpg%20large.jpeg)
![](http://hi.notjo.sh/3w3L2s3H2T1d/DfNVhNeXcAA4S-I.jpg%20large.jpeg)

## This Repo

I've committed everything. EVERYTHING. `node_modules`, especially, because that's where the bulk of the changes were.

### How to run

- Follow all the [MarzipanPlatter instructions first](https://github.com/biscuitehh/MarzipanPlatter)
- Install `node` if you don't have it yet (`brew install node`)
- Open the Xcode project, run the `MarzipantsMacSwift` target, and you too have an unstable UI server and a poorly rendered app!
- If the app fails to compile, try building the ReactMac scheme first, and only then MarzipantsMacSwift
- Instead of running from Xcode directly, you can *build* the app from Xcode, and then:
- Run react-native server: `npm install -g react-native; react-native start`
- Find in Xcode the built app (in Products group, find MarzipantsMacSwift.app -> Open in Finder), copy path to it
- Run the built app via CLI: `CFMZEnabled=1 open path-to-the-MarzipantsMacSwift.app`
- If you open some screen you shouldn't have and you keep getting the red screen at launch, delete `~/Library/Containers/com.notjosh.MarzipantsMacSwift`


================================================
FILE: RNTester/ARTExample.js
================================================
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {ART, Platform, View} = ReactNative;

const {Surface, Path, Group, Transform, Shape} = ART;

var scale = Platform.isTVOS ? 4 : 1;

class ARTExample extends React.Component<{}> {
  render() {
    const pathRect = new Path()
      .moveTo(scale * 0, scale * 0)
      .lineTo(scale * 0, scale * 110)
      .lineTo(scale * 110, scale * 110)
      .lineTo(scale * 110, scale * 0)
      .close();

    const pathCircle0 = new Path()
      .moveTo(scale * 30, scale * 5)
      .arc(scale * 0, scale * 50, scale * 25)
      .arc(scale * 0, -scale * 50, scale * 25)
      .close();

    const pathCircle1 = new Path()
      .moveTo(scale * 30, scale * 55)
      .arc(scale * 0, scale * 50, scale * 25)
      .arc(scale * 0, -scale * 50, scale * 25)
      .close();

    const pathCircle2 = new Path()
      .moveTo(scale * 55, scale * 30)
      .arc(scale * 50, scale * 0, scale * 25)
      .arc(-scale * 50, scale * 0, scale * 25)
      .close();

    const pathCircle3 = new Path()
      .moveTo(scale * 55, scale * 80)
      .arc(scale * 50, scale * 0, scale * 25)
      .arc(-scale * 50, scale * 0, scale * 25)
      .close();

    return (
      <View>
        <Surface width={scale * 200} height={scale * 200}>
          <Group>
            <Shape
              d={pathRect}
              stroke="#000080"
              fill="#000080"
              strokeWidth={scale}
            />
            <Shape
              d={pathCircle0}
              stroke="#FF0000"
              fill="#FF0000"
              strokeWidth={scale}
            />
            <Shape
              d={pathCircle1}
              stroke="#00FF00"
              fill="#00FF00"
              strokeWidth={scale}
            />
            <Shape
              d={pathCircle2}
              stroke="#00FFFF"
              fill="#00FFFF"
              strokeWidth={scale}
            />
            <Shape
              d={pathCircle3}
              stroke="#FFFFFF"
              fill="#FFFFFF"
              strokeWidth={scale}
            />
          </Group>
        </Surface>
      </View>
    );
  }
}

exports.title = '<ART>';
exports.displayName = 'ARTExample';
exports.description = 'ART input for numeric values';
exports.examples = [
  {
    title: 'ART Example',
    render(): React.Element<any> {
      return <ARTExample />;
    },
  },
];


================================================
FILE: RNTester/AccessibilityAndroidExample.android.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {
  AccessibilityInfo,
  StyleSheet,
  Text,
  View,
  ToastAndroid,
  TouchableWithoutFeedback,
} = ReactNative;

var RNTesterBlock = require('./RNTesterBlock');
var RNTesterPage = require('./RNTesterPage');

var importantForAccessibilityValues = [
  'auto',
  'yes',
  'no',
  'no-hide-descendants',
];

class AccessibilityAndroidExample extends React.Component {
  static title = 'Accessibility';
  static description = 'Examples of using Accessibility API.';

  state = {
    count: 0,
    backgroundImportantForAcc: 0,
    forgroundImportantForAcc: 0,
    screenReaderEnabled: false,
  };

  componentDidMount() {
    AccessibilityInfo.addEventListener(
      'change',
      this._handleScreenReaderToggled,
    );
    AccessibilityInfo.fetch().done(isEnabled => {
      this.setState({
        screenReaderEnabled: isEnabled,
      });
    });
  }

  componentWillUnmount() {
    AccessibilityInfo.removeEventListener(
      'change',
      this._handleScreenReaderToggled,
    );
  }

  _handleScreenReaderToggled = isEnabled => {
    this.setState({
      screenReaderEnabled: isEnabled,
    });
  };

  _addOne = () => {
    this.setState({
      count: ++this.state.count,
    });
  };

  _changeBackgroundImportantForAcc = () => {
    this.setState({
      backgroundImportantForAcc: (this.state.backgroundImportantForAcc + 1) % 4,
    });
  };

  _changeForgroundImportantForAcc = () => {
    this.setState({
      forgroundImportantForAcc: (this.state.forgroundImportantForAcc + 1) % 4,
    });
  };

  render() {
    return (
      <RNTesterPage title={'Accessibility'}>
        <RNTesterBlock title="Nonaccessible view with TextViews">
          <View>
            <Text style={{color: 'green'}}>This is</Text>
            <Text style={{color: 'blue'}}>nontouchable normal view.</Text>
          </View>
        </RNTesterBlock>

        <RNTesterBlock title="Accessible view with TextViews wihout label">
          <View accessible={true}>
            <Text style={{color: 'green'}}>This is</Text>
            <Text style={{color: 'blue'}}>
              nontouchable accessible view without label.
            </Text>
          </View>
        </RNTesterBlock>

        <RNTesterBlock title="Accessible view with TextViews with label">
          <View
            accessible={true}
            accessibilityLabel="I have label, so I read it instead of embedded text.">
            <Text style={{color: 'green'}}>This is</Text>
            <Text style={{color: 'blue'}}>
              nontouchable accessible view with label.
            </Text>
          </View>
        </RNTesterBlock>

        <RNTesterBlock title="Touchable with component type = button">
          <TouchableWithoutFeedback
            onPress={() =>
              ToastAndroid.show('Toasts work by default', ToastAndroid.SHORT)
            }
            accessibilityComponentType="button">
            <View style={styles.embedded}>
              <Text>Click me</Text>
              <Text>Or not</Text>
            </View>
          </TouchableWithoutFeedback>
        </RNTesterBlock>

        <RNTesterBlock title="LiveRegion">
          <TouchableWithoutFeedback onPress={this._addOne}>
            <View style={styles.embedded}>
              <Text>Click me</Text>
            </View>
          </TouchableWithoutFeedback>
          <Text accessibilityLiveRegion="polite">
            Clicked {this.state.count} times
          </Text>
        </RNTesterBlock>

        <RNTesterBlock title="Check if the screen reader is enabled">
          <Text>
            The screen reader is{' '}
            {this.state.screenReaderEnabled ? 'enabled' : 'disabled'}.
          </Text>
        </RNTesterBlock>

        <RNTesterBlock title="Overlapping views and importantForAccessibility property">
          <View style={styles.container}>
            <View
              style={{
                position: 'absolute',
                left: 10,
                top: 10,
                right: 10,
                height: 100,
                backgroundColor: 'green',
              }}
              accessible={true}
              accessibilityLabel="First layout"
              importantForAccessibility={
                importantForAccessibilityValues[
                  this.state.backgroundImportantForAcc
                ]
              }>
              <View accessible={true}>
                <Text style={{fontSize: 25}}>Hello</Text>
              </View>
            </View>
            <View
              style={{
                position: 'absolute',
                left: 10,
                top: 25,
                right: 10,
                height: 110,
                backgroundColor: 'yellow',
                opacity: 0.5,
              }}
              accessible={true}
              accessibilityLabel="Second layout"
              importantForAccessibility={
                importantForAccessibilityValues[
                  this.state.forgroundImportantForAcc
                ]
              }>
              <View accessible={true}>
                <Text style={{fontSize: 20}}>world</Text>
              </View>
            </View>
          </View>
          <TouchableWithoutFeedback
            onPress={this._changeBackgroundImportantForAcc}>
            <View style={styles.embedded}>
              <Text>
                Change importantForAccessibility for background layout.
              </Text>
            </View>
          </TouchableWithoutFeedback>
          <View accessible={true}>
            <Text>Background layout importantForAccessibility</Text>
            <Text>
              {
                importantForAccessibilityValues[
                  this.state.backgroundImportantForAcc
                ]
              }
            </Text>
          </View>
          <TouchableWithoutFeedback
            onPress={this._changeForgroundImportantForAcc}>
            <View style={styles.embedded}>
              <Text>
                Change importantForAccessibility for forground layout.
              </Text>
            </View>
          </TouchableWithoutFeedback>
          <View accessible={true}>
            <Text>Forground layout importantForAccessibility</Text>
            <Text>
              {
                importantForAccessibilityValues[
                  this.state.forgroundImportantForAcc
                ]
              }
            </Text>
          </View>
        </RNTesterBlock>
      </RNTesterPage>
    );
  }
}

var styles = StyleSheet.create({
  embedded: {
    backgroundColor: 'yellow',
    padding: 10,
  },
  container: {
    flex: 1,
    backgroundColor: 'white',
    padding: 10,
    height: 150,
  },
});

module.exports = AccessibilityAndroidExample;


================================================
FILE: RNTester/AccessibilityIOSExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {AccessibilityInfo, Text, View} = ReactNative;

class AccessibilityIOSExample extends React.Component<{}> {
  render() {
    return (
      <View>
        <View
          onAccessibilityTap={() => alert('onAccessibilityTap success')}
          accessible={true}>
          <Text>Accessibility normal tap example</Text>
        </View>
        <View onMagicTap={() => alert('onMagicTap success')} accessible={true}>
          <Text>Accessibility magic tap example</Text>
        </View>
        <View accessibilityLabel="Some announcement" accessible={true}>
          <Text>Accessibility label example</Text>
        </View>
        <View accessibilityTraits={['button', 'selected']} accessible={true}>
          <Text>Accessibility traits example</Text>
        </View>
        <Text>
          Text's accessibilityLabel is the raw text itself unless it is set
          explicitly.
        </Text>
        <Text accessibilityLabel="Test of accessibilityLabel" accessible={true}>
          This text component's accessibilityLabel is set explicitly.
        </Text>
        <View accessibilityElementsHidden={true}>
          <Text>
            This view's children are hidden from the accessibility tree
          </Text>
        </View>
      </View>
    );
  }
}

class ScreenReaderStatusExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    screenReaderEnabled: false,
  };

  componentDidMount() {
    AccessibilityInfo.addEventListener(
      'change',
      this._handleScreenReaderToggled,
    );
    AccessibilityInfo.fetch().done(isEnabled => {
      this.setState({
        screenReaderEnabled: isEnabled,
      });
    });
  }

  componentWillUnmount() {
    AccessibilityInfo.removeEventListener(
      'change',
      this._handleScreenReaderToggled,
    );
  }

  _handleScreenReaderToggled = isEnabled => {
    this.setState({
      screenReaderEnabled: isEnabled,
    });
  };

  render() {
    return (
      <View>
        <Text>
          The screen reader is{' '}
          {this.state.screenReaderEnabled ? 'enabled' : 'disabled'}.
        </Text>
      </View>
    );
  }
}

exports.title = 'AccessibilityIOS';
exports.description = "Interface to show iOS' accessibility samples";
exports.examples = [
  {
    title: 'Accessibility elements',
    render(): React.Element<any> {
      return <AccessibilityIOSExample />;
    },
  },
  {
    title: 'Check if the screen reader is enabled',
    render(): React.Element<any> {
      return <ScreenReaderStatusExample />;
    },
  },
];


================================================
FILE: RNTester/ActionSheetIOSExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {ActionSheetIOS, StyleSheet, takeSnapshot, Text, View} = ReactNative;

var BUTTONS = ['Option 0', 'Option 1', 'Option 2', 'Delete', 'Cancel'];
var DESTRUCTIVE_INDEX = 3;
var CANCEL_INDEX = 4;

class ActionSheetExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    clicked: 'none',
  };

  render() {
    return (
      <View>
        <Text onPress={this.showActionSheet} style={style.button}>
          Click to show the ActionSheet
        </Text>
        <Text>Clicked button: {this.state.clicked}</Text>
      </View>
    );
  }

  showActionSheet = () => {
    ActionSheetIOS.showActionSheetWithOptions(
      {
        options: BUTTONS,
        cancelButtonIndex: CANCEL_INDEX,
        destructiveButtonIndex: DESTRUCTIVE_INDEX,
      },
      buttonIndex => {
        this.setState({clicked: BUTTONS[buttonIndex]});
      },
    );
  };
}

class ActionSheetTintExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    clicked: 'none',
  };

  render() {
    return (
      <View>
        <Text onPress={this.showActionSheet} style={style.button}>
          Click to show the ActionSheet
        </Text>
        <Text>Clicked button: {this.state.clicked}</Text>
      </View>
    );
  }

  showActionSheet = () => {
    ActionSheetIOS.showActionSheetWithOptions(
      {
        options: BUTTONS,
        cancelButtonIndex: CANCEL_INDEX,
        destructiveButtonIndex: DESTRUCTIVE_INDEX,
        tintColor: 'green',
      },
      buttonIndex => {
        this.setState({clicked: BUTTONS[buttonIndex]});
      },
    );
  };
}

class ShareActionSheetExample extends React.Component<
  $FlowFixMeProps,
  $FlowFixMeState,
> {
  state = {
    text: '',
  };

  render() {
    return (
      <View>
        <Text onPress={this.showShareActionSheet} style={style.button}>
          Click to show the Share ActionSheet
        </Text>
        <Text>{this.state.text}</Text>
      </View>
    );
  }

  showShareActionSheet = () => {
    ActionSheetIOS.showShareActionSheetWithOptions(
      {
        url: this.props.url,
        message: 'message to go with the shared url',
        subject: 'a subject to go in the email heading',
        excludedActivityTypes: ['com.apple.UIKit.activity.PostToTwitter'],
      },
      error => alert(error),
      (completed, method) => {
        var text;
        if (completed) {
          text = `Shared via ${method}`;
        } else {
          text = "You didn't share";
        }
        this.setState({text});
      },
    );
  };
}

class ShareScreenshotExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    text: '',
  };

  render() {
    return (
      <View>
        <Text onPress={this.showShareActionSheet} style={style.button}>
          Click to show the Share ActionSheet
        </Text>
        <Text>{this.state.text}</Text>
      </View>
    );
  }

  showShareActionSheet = () => {
    // Take the snapshot (returns a temp file uri)
    takeSnapshot('window')
      .then(uri => {
        // Share image data
        ActionSheetIOS.showShareActionSheetWithOptions(
          {
            url: uri,
            excludedActivityTypes: ['com.apple.UIKit.activity.PostToTwitter'],
          },
          error => alert(error),
          (completed, method) => {
            var text;
            if (completed) {
              text = `Shared via ${method}`;
            } else {
              text = "You didn't share";
            }
            this.setState({text});
          },
        );
      })
      .catch(error => alert(error));
  };
}

var style = StyleSheet.create({
  button: {
    marginBottom: 10,
    fontWeight: '500',
  },
});

exports.title = 'ActionSheetIOS';
exports.description = "Interface to show iOS' action sheets";
exports.examples = [
  {
    title: 'Show Action Sheet',
    render(): React.Element<any> {
      return <ActionSheetExample />;
    },
  },
  {
    title: 'Show Action Sheet with tinted buttons',
    render(): React.Element<any> {
      return <ActionSheetTintExample />;
    },
  },
  {
    title: 'Show Share Action Sheet',
    render(): React.Element<any> {
      return <ShareActionSheetExample url="https://code.facebook.com" />;
    },
  },
  {
    title: 'Share Local Image',
    render(): React.Element<any> {
      return <ShareActionSheetExample url="bunny.png" />;
    },
  },
  {
    title: 'Share Screenshot',
    render(): React.Element<any> {
      return <ShareScreenshotExample />;
    },
  },
];


================================================
FILE: RNTester/ActivityIndicatorExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

import React, {Component} from 'react';
import {ActivityIndicator, StyleSheet, View} from 'react-native';

/**
 * Optional Flowtype state and timer types definition
 */
type State = {animating: boolean};
type Timer = number;

class ToggleAnimatingActivityIndicator extends Component<
  $FlowFixMeProps,
  State,
> {
  _timer: Timer;

  constructor(props) {
    super(props);
    this.state = {
      animating: true,
    };
  }

  componentDidMount() {
    this.setToggleTimeout();
  }

  componentWillUnmount() {
    /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an
     * error found when Flow v0.63 was deployed. To see the error delete this
     * comment and run Flow. */
    clearTimeout(this._timer);
  }

  setToggleTimeout() {
    /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an
     * error found when Flow v0.63 was deployed. To see the error delete this
     * comment and run Flow. */
    this._timer = setTimeout(() => {
      this.setState({animating: !this.state.animating});
      this.setToggleTimeout();
    }, 2000);
  }

  render() {
    return (
      <ActivityIndicator
        animating={this.state.animating}
        style={[styles.centering, {height: 80}]}
        size="large"
      />
    );
  }
}

exports.displayName = (undefined: ?string);
exports.framework = 'React';
exports.title = '<ActivityIndicator>';
exports.description = 'Animated loading indicators.';

exports.examples = [
  {
    title: 'Default (small, white)',
    render() {
      return (
        <ActivityIndicator
          style={[styles.centering, styles.gray]}
          color="white"
        />
      );
    },
  },
  {
    title: 'Gray',
    render() {
      return (
        <View>
          <ActivityIndicator style={[styles.centering]} />
          <ActivityIndicator
            style={[styles.centering, {backgroundColor: '#eeeeee'}]}
          />
        </View>
      );
    },
  },
  {
    title: 'Custom colors',
    render() {
      return (
        <View style={styles.horizontal}>
          <ActivityIndicator color="#0000ff" />
          <ActivityIndicator color="#aa00aa" />
          <ActivityIndicator color="#aa3300" />
          <ActivityIndicator color="#00aa00" />
        </View>
      );
    },
  },
  {
    title: 'Large',
    render() {
      return (
        <ActivityIndicator
          style={[styles.centering, styles.gray]}
          size="large"
          color="white"
        />
      );
    },
  },
  {
    title: 'Large, custom colors',
    render() {
      return (
        <View style={styles.horizontal}>
          <ActivityIndicator size="large" color="#0000ff" />
          <ActivityIndicator size="large" color="#aa00aa" />
          <ActivityIndicator size="large" color="#aa3300" />
          <ActivityIndicator size="large" color="#00aa00" />
        </View>
      );
    },
  },
  {
    title: 'Start/stop',
    render() {
      return <ToggleAnimatingActivityIndicator />;
    },
  },
  {
    title: 'Custom size',
    render() {
      return (
        <ActivityIndicator
          style={[styles.centering, {transform: [{scale: 1.5}]}]}
          size="large"
        />
      );
    },
  },
  {
    platform: 'android',
    title: 'Custom size (size: 75)',
    render() {
      return <ActivityIndicator style={styles.centering} size={75} />;
    },
  },
];

const styles = StyleSheet.create({
  centering: {
    alignItems: 'center',
    justifyContent: 'center',
    padding: 8,
  },
  gray: {
    backgroundColor: '#cccccc',
  },
  horizontal: {
    flexDirection: 'row',
    justifyContent: 'space-around',
    padding: 8,
  },
});


================================================
FILE: RNTester/AlertExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Alert, StyleSheet, Text, TouchableHighlight, View} = ReactNative;

var RNTesterBlock = require('./RNTesterBlock');

// corporate ipsum > lorem ipsum
var alertMessage =
  'Credibly reintermediate next-generation potentialities after goal-oriented ' +
  'catalysts for change. Dynamically revolutionize.';

/**
 * Simple alert examples.
 */
class SimpleAlertExampleBlock extends React.Component {
  render() {
    return (
      <View>
        <TouchableHighlight
          style={styles.wrapper}
          onPress={() => Alert.alert('Alert Title', alertMessage)}>
          <View style={styles.button}>
            <Text>Alert with message and default button</Text>
          </View>
        </TouchableHighlight>
        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            Alert.alert('Alert Title', alertMessage, [
              {text: 'OK', onPress: () => console.log('OK Pressed!')},
            ])
          }>
          <View style={styles.button}>
            <Text>Alert with one button</Text>
          </View>
        </TouchableHighlight>
        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            Alert.alert('Alert Title', alertMessage, [
              {text: 'Cancel', onPress: () => console.log('Cancel Pressed!')},
              {text: 'OK', onPress: () => console.log('OK Pressed!')},
            ])
          }>
          <View style={styles.button}>
            <Text>Alert with two buttons</Text>
          </View>
        </TouchableHighlight>
        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            Alert.alert('Alert Title', null, [
              {text: 'Foo', onPress: () => console.log('Foo Pressed!')},
              {text: 'Bar', onPress: () => console.log('Bar Pressed!')},
              {text: 'Baz', onPress: () => console.log('Baz Pressed!')},
            ])
          }>
          <View style={styles.button}>
            <Text>Alert with three buttons</Text>
          </View>
        </TouchableHighlight>
        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            Alert.alert(
              'Foo Title',
              alertMessage,
              '..............'.split('').map((dot, index) => ({
                text: 'Button ' + index,
                onPress: () => console.log('Pressed ' + index),
              })),
            )
          }>
          <View style={styles.button}>
            <Text>Alert with too many buttons</Text>
          </View>
        </TouchableHighlight>
        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            Alert.alert(
              'Alert Title',
              null,
              [{text: 'OK', onPress: () => console.log('OK Pressed!')}],
              {
                cancelable: false,
              },
            )
          }>
          <View style={styles.button}>
            <Text>Alert that cannot be dismissed</Text>
          </View>
        </TouchableHighlight>
        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            Alert.alert('', alertMessage, [
              {text: 'OK', onPress: () => console.log('OK Pressed!')},
            ])
          }>
          <View style={styles.button}>
            <Text>Alert without title</Text>
          </View>
        </TouchableHighlight>
      </View>
    );
  }
}

class AlertExample extends React.Component {
  static title = 'Alert';

  static description =
    'Alerts display a concise and informative message ' +
    'and prompt the user to make a decision.';

  render() {
    return (
      <RNTesterBlock title={'Alert'}>
        <SimpleAlertExampleBlock />
      </RNTesterBlock>
    );
  }
}

var styles = StyleSheet.create({
  wrapper: {
    borderRadius: 5,
    marginBottom: 5,
  },
  button: {
    backgroundColor: '#eeeeee',
    padding: 10,
  },
});

module.exports = {
  AlertExample,
  SimpleAlertExampleBlock,
};


================================================
FILE: RNTester/AlertIOSExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {StyleSheet, View, Text, TouchableHighlight, AlertIOS} = ReactNative;

var {SimpleAlertExampleBlock} = require('./AlertExample');

exports.framework = 'React';
exports.title = 'AlertIOS';
exports.description = 'iOS alerts and action sheets';
exports.examples = [
  {
    title: 'Alerts',
    render() {
      return <SimpleAlertExampleBlock />;
    },
  },
  {
    title: 'Prompt Options',
    render(): React.Element<any> {
      return <PromptOptions />;
    },
  },
  {
    title: 'Prompt Types',
    render() {
      return (
        <View>
          <TouchableHighlight
            style={styles.wrapper}
            onPress={() => AlertIOS.prompt('Plain Text Entry')}>
            <View style={styles.button}>
              <Text>plain-text</Text>
            </View>
          </TouchableHighlight>
          <TouchableHighlight
            style={styles.wrapper}
            onPress={() =>
              AlertIOS.prompt('Secure Text', null, null, 'secure-text')
            }>
            <View style={styles.button}>
              <Text>secure-text</Text>
            </View>
          </TouchableHighlight>
          <TouchableHighlight
            style={styles.wrapper}
            onPress={() =>
              AlertIOS.prompt('Login & Password', null, null, 'login-password')
            }>
            <View style={styles.button}>
              <Text>login-password</Text>
            </View>
          </TouchableHighlight>
        </View>
      );
    },
  },
];

class PromptOptions extends React.Component<$FlowFixMeProps, any> {
  customButtons: Array<Object>;

  constructor(props) {
    super(props);

    // $FlowFixMe this seems to be a Flow bug, `saveResponse` is defined below
    this.saveResponse = this.saveResponse.bind(this);

    this.customButtons = [
      {
        text: 'Custom OK',
        onPress: this.saveResponse,
      },
      {
        text: 'Custom Cancel',
        style: 'cancel',
      },
    ];

    this.state = {
      promptValue: undefined,
    };
  }

  render() {
    return (
      <View>
        <Text style={{marginBottom: 10}}>
          <Text style={{fontWeight: 'bold'}}>Prompt value:</Text>{' '}
          {this.state.promptValue}
        </Text>

        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            AlertIOS.prompt('Type a value', null, this.saveResponse)
          }>
          <View style={styles.button}>
            <Text>prompt with title & callback</Text>
          </View>
        </TouchableHighlight>

        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            AlertIOS.prompt('Type a value', null, this.customButtons)
          }>
          <View style={styles.button}>
            <Text>prompt with title & custom buttons</Text>
          </View>
        </TouchableHighlight>

        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            AlertIOS.prompt(
              'Type a phone number',
              null,
              null,
              'plain-text',
              undefined,
              'phone-pad',
            )
          }>
          <View style={styles.button}>
            <Text>prompt with title & custom keyboard</Text>
          </View>
        </TouchableHighlight>

        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            AlertIOS.prompt(
              'Type a value',
              null,
              this.saveResponse,
              undefined,
              'Default value',
            )
          }>
          <View style={styles.button}>
            <Text>prompt with title, callback & default value</Text>
          </View>
        </TouchableHighlight>

        <TouchableHighlight
          style={styles.wrapper}
          onPress={() =>
            AlertIOS.prompt(
              'Type a value',
              null,
              this.customButtons,
              'login-password',
              'admin@site.com',
            )
          }>
          <View style={styles.button}>
            <Text>
              prompt with title, custom buttons, login/password & default value
            </Text>
          </View>
        </TouchableHighlight>
      </View>
    );
  }

  saveResponse(promptValue) {
    this.setState({promptValue: JSON.stringify(promptValue)});
  }
}

var styles = StyleSheet.create({
  wrapper: {
    borderRadius: 5,
    marginBottom: 5,
  },
  button: {
    backgroundColor: '#eeeeee',
    padding: 10,
  },
});


================================================
FILE: RNTester/AnimatedExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Animated, Easing, StyleSheet, Text, View} = ReactNative;
var RNTesterButton = require('./RNTesterButton');

exports.framework = 'React';
exports.title = 'Animated - Examples';
exports.description =
  'Animated provides a powerful ' +
  'and easy-to-use API for building modern, ' +
  'interactive user experiences.';

exports.examples = [
  {
    title: 'FadeInView',
    description:
      'Uses a simple timing animation to ' +
      'bring opacity from 0 to 1 when the component ' +
      'mounts.',
    render: function() {
      class FadeInView extends React.Component<$FlowFixMeProps, any> {
        constructor(props) {
          super(props);
          this.state = {
            fadeAnim: new Animated.Value(0), // opacity 0
          };
        }
        componentDidMount() {
          Animated.timing(
            // Uses easing functions
            this.state.fadeAnim, // The value to drive
            {
              toValue: 1, // Target
              duration: 2000, // Configuration
            },
          ).start(); // Don't forget start!
        }
        render() {
          return (
            <Animated.View // Special animatable View
              style={{
                opacity: this.state.fadeAnim, // Binds
              }}>
              {this.props.children}
            </Animated.View>
          );
        }
      }
      class FadeInExample extends React.Component<$FlowFixMeProps, any> {
        constructor(props) {
          super(props);
          this.state = {
            show: true,
          };
        }
        render() {
          return (
            <View>
              <RNTesterButton
                onPress={() => {
                  this.setState(state => ({show: !state.show}));
                }}>
                Press to {this.state.show ? 'Hide' : 'Show'}
              </RNTesterButton>
              {this.state.show && (
                <FadeInView>
                  <View style={styles.content}>
                    <Text>FadeInView</Text>
                  </View>
                </FadeInView>
              )}
            </View>
          );
        }
      }
      return <FadeInExample />;
    },
  },
  {
    title: 'Transform Bounce',
    description:
      'One `Animated.Value` is driven by a ' +
      'spring with custom constants and mapped to an ' +
      'ordered set of transforms.  Each transform has ' +
      'an interpolation to convert the value into the ' +
      'right range and units.',
    render: function() {
      this.anim = this.anim || new Animated.Value(0);
      return (
        <View>
          <RNTesterButton
            onPress={() => {
              Animated.spring(this.anim, {
                toValue: 0, // Returns to the start
                velocity: 3, // Velocity makes it move
                tension: -10, // Slow
                friction: 1, // Oscillate a lot
              }).start();
            }}>
            Press to Fling it!
          </RNTesterButton>
          <Animated.View
            style={[
              styles.content,
              {
                transform: [
                  // Array order matters
                  {
                    scale: this.anim.interpolate({
                      inputRange: [0, 1],
                      outputRange: [1, 4],
                    }),
                  },
                  {
                    translateX: this.anim.interpolate({
                      inputRange: [0, 1],
                      outputRange: [0, 500],
                    }),
                  },
                  {
                    rotate: this.anim.interpolate({
                      inputRange: [0, 1],
                      outputRange: [
                        '0deg',
                        '360deg', // 'deg' or 'rad'
                      ],
                    }),
                  },
                ],
              },
            ]}>
            <Text>Transforms!</Text>
          </Animated.View>
        </View>
      );
    },
  },
  {
    title: 'Composite Animations with Easing',
    description:
      'Sequence, parallel, delay, and ' +
      'stagger with different easing functions.',
    render: function() {
      this.anims = this.anims || [1, 2, 3].map(() => new Animated.Value(0));
      return (
        <View>
          <RNTesterButton
            onPress={() => {
              var timing = Animated.timing;
              Animated.sequence([
                // One after the other
                timing(this.anims[0], {
                  toValue: 200,
                  easing: Easing.linear,
                }),
                Animated.delay(400), // Use with sequence
                timing(this.anims[0], {
                  toValue: 0,
                  easing: Easing.elastic(2), // Springy
                }),
                Animated.delay(400),
                Animated.stagger(
                  200,
                  this.anims
                    .map(anim => timing(anim, {toValue: 200}))
                    .concat(this.anims.map(anim => timing(anim, {toValue: 0}))),
                ),
                Animated.delay(400),
                Animated.parallel(
                  [
                    Easing.inOut(Easing.quad), // Symmetric
                    Easing.back(1.5), // Goes backwards first
                    Easing.ease, // Default bezier
                  ].map((easing, ii) =>
                    timing(this.anims[ii], {
                      toValue: 320,
                      easing,
                      duration: 3000,
                    }),
                  ),
                ),
                Animated.delay(400),
                Animated.stagger(
                  200,
                  this.anims.map(anim =>
                    timing(anim, {
                      toValue: 0,
                      easing: Easing.bounce, // Like a ball
                      duration: 2000,
                    }),
                  ),
                ),
              ]).start();
            }}>
            Press to Animate
          </RNTesterButton>
          {['Composite', 'Easing', 'Animations!'].map((text, ii) => (
            <Animated.View
              key={text}
              style={[
                styles.content,
                {
                  left: this.anims[ii],
                },
              ]}>
              <Text>{text}</Text>
            </Animated.View>
          ))}
        </View>
      );
    },
  },
  {
    title: 'Continuous Interactions',
    description:
      'Gesture events, chaining, 2D ' +
      'values, interrupting and transitioning ' +
      'animations, etc.',
    render: () => <Text>Checkout the Gratuitous Animation App!</Text>,
  },
];

var styles = StyleSheet.create({
  content: {
    backgroundColor: 'deepskyblue',
    borderWidth: 1,
    borderColor: 'dodgerblue',
    padding: 20,
    margin: 20,
    borderRadius: 10,
    alignItems: 'center',
  },
});


================================================
FILE: RNTester/AnimatedGratuitousApp/AnExApp.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Animated, LayoutAnimation, PanResponder, StyleSheet, View} = ReactNative;

var AnExSet = require('AnExSet');

var CIRCLE_SIZE = 80;
var CIRCLE_MARGIN = 18;
var NUM_CIRCLES = 30;

class Circle extends React.Component<any, any> {
  longTimer: number;

  _onLongPress: () => void;
  _toggleIsActive: () => void;
  constructor(props: Object): void {
    super();
    this._onLongPress = this._onLongPress.bind(this);
    this._toggleIsActive = this._toggleIsActive.bind(this);
    this.state = {
      isActive: false,
      pan: new Animated.ValueXY(), // Vectors reduce boilerplate.  (step1: uncomment)
      pop: new Animated.Value(0), // Initial value.               (step2a: uncomment)
    };
  }

  _onLongPress(): void {
    var config = {tension: 40, friction: 3};
    this.state.pan.addListener(value => {
      // Async listener for state changes  (step1: uncomment)
      this.props.onMove && this.props.onMove(value);
    });
    Animated.spring(this.state.pop, {
      toValue: 1, //  Pop to larger size.                      (step2b: uncomment)
      ...config, //  Reuse config for convenient consistency  (step2b: uncomment)
    }).start();
    this.setState(
      {
        panResponder: PanResponder.create({
          onPanResponderMove: Animated.event([
            null, // native event - ignore      (step1: uncomment)
            {dx: this.state.pan.x, dy: this.state.pan.y}, // links pan to gestureState  (step1: uncomment)
          ]),
          onPanResponderRelease: (e, gestureState) => {
            LayoutAnimation.easeInEaseOut(); // @flowfixme animates layout update as one batch (step3: uncomment)
            Animated.spring(this.state.pop, {
              toValue: 0, // Pop back to 0                       (step2c: uncomment)
              ...config,
            }).start();
            this.setState({panResponder: undefined});
            this.props.onMove &&
              this.props.onMove({
                x: gestureState.dx + this.props.restLayout.x,
                y: gestureState.dy + this.props.restLayout.y,
              });
            this.props.onDeactivate();
            this.state.pan.removeAllListeners();
          },
        }),
      },
      () => {
        this.props.onActivate();
      },
    );
  }

  render(): React.Node {
    if (this.state.panResponder) {
      var handlers = this.state.panResponder.panHandlers;
      var dragStyle = {
        //  Used to position while dragging
        position: 'absolute', //  Hoist out of layout                    (step1: uncomment)
        ...this.state.pan.getLayout(), //  Convenience converter                  (step1: uncomment)
      };
    } else {
      handlers = {
        onStartShouldSetResponder: () => !this.state.isActive,
        onResponderGrant: () => {
          this.state.pan.setValue({x: 0, y: 0}); // reset                (step1: uncomment)
          this.state.pan.setOffset(this.props.restLayout); // offset from onLayout (step1: uncomment)
          /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses
           * an error found when Flow v0.63 was deployed. To see the error
           * delete this comment and run Flow. */
          this.longTimer = setTimeout(this._onLongPress, 300);
        },
        onResponderRelease: () => {
          if (!this.state.panResponder) {
            /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment
             * suppresses an error found when Flow v0.63 was deployed. To see
             * the error delete this comment and run Flow. */
            clearTimeout(this.longTimer);
            this._toggleIsActive();
          }
        },
      };
    }
    var animatedStyle: Object = {
      shadowOpacity: this.state.pop, // no need for interpolation            (step2d: uncomment)
      transform: [
        {
          scale: this.state.pop.interpolate({
            inputRange: [0, 1],
            outputRange: [1, 1.3], // scale up from 1 to 1.3               (step2d: uncomment)
          }),
        },
      ],
    };
    var openVal = this.props.openVal;
    if (this.props.dummy) {
      animatedStyle.opacity = 0;
    } else if (this.state.isActive) {
      var innerOpenStyle = [
        styles.open,
        {
          // (step4: uncomment)
          left: openVal.interpolate({
            inputRange: [0, 1],
            outputRange: [this.props.restLayout.x, 0],
          }),
          top: openVal.interpolate({
            inputRange: [0, 1],
            outputRange: [this.props.restLayout.y, 0],
          }),
          width: openVal.interpolate({
            inputRange: [0, 1],
            outputRange: [CIRCLE_SIZE, this.props.containerLayout.width],
          }),
          height: openVal.interpolate({
            inputRange: [0, 1],
            outputRange: [CIRCLE_SIZE, this.props.containerLayout.height],
          }),
          margin: openVal.interpolate({
            inputRange: [0, 1],
            outputRange: [CIRCLE_MARGIN, 0],
          }),
          borderRadius: openVal.interpolate({
            inputRange: [-0.15, 0, 0.5, 1],
            outputRange: [0, CIRCLE_SIZE / 2, CIRCLE_SIZE * 1.3, 0],
          }),
        },
      ];
    }
    return (
      <Animated.View
        onLayout={this.props.onLayout}
        style={[
          styles.dragView,
          dragStyle,
          animatedStyle,
          this.state.isActive ? styles.open : null,
        ]}
        {...handlers}>
        <Animated.View style={[styles.circle, innerOpenStyle]}>
          <AnExSet
            containerLayout={this.props.containerLayout}
            id={this.props.id}
            isActive={this.state.isActive}
            openVal={this.props.openVal}
            onDismiss={this._toggleIsActive}
          />
        </Animated.View>
      </Animated.View>
    );
  }
  _toggleIsActive(velocity) {
    var config = {tension: 30, friction: 7};
    if (this.state.isActive) {
      Animated.spring(this.props.openVal, {toValue: 0, ...config}).start(() => {
        // (step4: uncomment)
        this.setState({isActive: false}, this.props.onDeactivate);
      }); // (step4: uncomment)
    } else {
      this.props.onActivate();
      this.setState({isActive: true, panResponder: undefined}, () => {
        // this.props.openVal.setValue(1);                                             // (step4: comment)
        Animated.spring(this.props.openVal, {toValue: 1, ...config}).start(); // (step4: uncomment)
      });
    }
  }
}

class AnExApp extends React.Component<any, any> {
  static title = 'Animated - Gratuitous App';
  static description =
    'Bunch of Animations - tap a circle to ' +
    'open a view with more animations, or longPress and drag to reorder circles.';

  _onMove: (position: Point) => void;
  constructor(props: any): void {
    super(props);
    var keys = [];
    for (var idx = 0; idx < NUM_CIRCLES; idx++) {
      keys.push('E' + idx);
    }
    this.state = {
      keys,
      restLayouts: [],
      openVal: new Animated.Value(0),
    };
    this._onMove = this._onMove.bind(this);
  }

  render(): React.Node {
    var circles = this.state.keys.map((key, idx) => {
      if (key === this.state.activeKey) {
        return <Circle key={key + 'd'} dummy={true} />;
      } else {
        if (!this.state.restLayouts[idx]) {
          var onLayout = function(index, e) {
            var layout = e.nativeEvent.layout;
            this.setState(state => {
              state.restLayouts[index] = layout;
              return state;
            });
          }.bind(this, idx);
        }
        return (
          <Circle
            key={key}
            id={key}
            openVal={this.state.openVal}
            onLayout={onLayout}
            restLayout={this.state.restLayouts[idx]}
            onActivate={this.setState.bind(this, {
              activeKey: key,
              activeInitialLayout: this.state.restLayouts[idx],
            })}
          />
        );
      }
    });
    if (this.state.activeKey) {
      circles.push(
        <Animated.View
          key="dark"
          style={[styles.darkening, {opacity: this.state.openVal}]}
        />,
      );
      circles.push(
        <Circle
          openVal={this.state.openVal}
          key={this.state.activeKey}
          id={this.state.activeKey}
          restLayout={this.state.activeInitialLayout}
          containerLayout={this.state.layout}
          onMove={this._onMove}
          onDeactivate={() => {
            this.setState({activeKey: undefined});
          }}
        />,
      );
    }
    return (
      <View style={styles.container}>
        <View
          style={styles.grid}
          onLayout={e => this.setState({layout: e.nativeEvent.layout})}>
          {circles}
        </View>
      </View>
    );
  }

  _onMove(position: Point): void {
    var newKeys = moveToClosest(this.state, position);
    if (newKeys !== this.state.keys) {
      LayoutAnimation.easeInEaseOut(); // animates layout update as one batch (step3: uncomment)
      this.setState({keys: newKeys});
    }
  }
}

type Point = {x: number, y: number};
function distance(p1: Point, p2: Point): number {
  var dx = p1.x - p2.x;
  var dy = p1.y - p2.y;
  return dx * dx + dy * dy;
}

function moveToClosest({activeKey, keys, restLayouts}, position) {
  var activeIdx = -1;
  var closestIdx = activeIdx;
  var minDist = Infinity;
  var newKeys = [];
  keys.forEach((key, idx) => {
    var dist = distance(position, restLayouts[idx]);
    if (key === activeKey) {
      idx = activeIdx;
    } else {
      newKeys.push(key);
    }
    if (dist < minDist) {
      minDist = dist;
      closestIdx = idx;
    }
  });
  if (closestIdx === activeIdx) {
    return keys; // nothing changed
  } else {
    newKeys.splice(closestIdx, 0, activeKey);
    return newKeys;
  }
}

var styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  grid: {
    flex: 1,
    justifyContent: 'center',
    flexDirection: 'row',
    flexWrap: 'wrap',
    backgroundColor: 'transparent',
  },
  circle: {
    width: CIRCLE_SIZE,
    height: CIRCLE_SIZE,
    borderRadius: CIRCLE_SIZE / 2,
    borderWidth: 1,
    borderColor: 'black',
    margin: CIRCLE_MARGIN,
    overflow: 'hidden',
  },
  dragView: {
    shadowRadius: 10,
    shadowColor: 'rgba(0,0,0,0.7)',
    shadowOffset: {height: 8},
    alignSelf: 'flex-start',
    backgroundColor: 'transparent',
  },
  open: {
    position: 'absolute',
    left: 0,
    top: 0,
    right: 0,
    bottom: 0,
    width: undefined, // unset value from styles.circle
    height: undefined, // unset value from styles.circle
    borderRadius: 0, // unset value from styles.circle
  },
  darkening: {
    backgroundColor: 'black',
    position: 'absolute',
    left: 0,
    top: 0,
    right: 0,
    bottom: 0,
  },
});

module.exports = AnExApp;


================================================
FILE: RNTester/AnimatedGratuitousApp/AnExBobble.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Animated, PanResponder, StyleSheet, View} = ReactNative;

var NUM_BOBBLES = 5;
var RAD_EACH = Math.PI / 2 / (NUM_BOBBLES - 2);
var RADIUS = 160;
var BOBBLE_SPOTS = [...Array(NUM_BOBBLES)].map((_, i) => {
  // static positions
  return i === 0
    ? {x: 0, y: 0}
    : {
        // first bobble is the selector
        x: -Math.cos(RAD_EACH * (i - 1)) * RADIUS,
        y: -Math.sin(RAD_EACH * (i - 1)) * RADIUS,
      };
});

class AnExBobble extends React.Component<Object, any> {
  constructor(props: Object) {
    super(props);
    this.state = {};
    this.state.bobbles = BOBBLE_SPOTS.map((_, i) => {
      return new Animated.ValueXY();
    });
    this.state.selectedBobble = null;
    var bobblePanListener = (e, gestureState) => {
      // async events => change selection
      var newSelected = computeNewSelected(gestureState);
      if (this.state.selectedBobble !== newSelected) {
        if (this.state.selectedBobble !== null) {
          var restSpot = BOBBLE_SPOTS[this.state.selectedBobble];
          Animated.spring(this.state.bobbles[this.state.selectedBobble], {
            toValue: restSpot, // return previously selected bobble to rest position
          }).start();
        }
        if (newSelected !== null && newSelected !== 0) {
          Animated.spring(this.state.bobbles[newSelected], {
            toValue: this.state.bobbles[0], // newly selected should track the selector
          }).start();
        }
        this.state.selectedBobble = newSelected;
      }
    };
    var releaseBobble = () => {
      this.state.bobbles.forEach((bobble, i) => {
        Animated.spring(bobble, {
          toValue: {x: 0, y: 0}, // all bobbles return to zero
        }).start();
      });
    };
    this.state.bobbleResponder = PanResponder.create({
      onStartShouldSetPanResponder: () => true,
      onPanResponderGrant: () => {
        BOBBLE_SPOTS.forEach((spot, idx) => {
          Animated.spring(this.state.bobbles[idx], {
            toValue: spot, // spring each bobble to its spot
            friction: 3, // less friction => bouncier
          }).start();
        });
      },
      onPanResponderMove: Animated.event(
        [null, {dx: this.state.bobbles[0].x, dy: this.state.bobbles[0].y}],
        {listener: bobblePanListener}, // async state changes with arbitrary logic
      ),
      onPanResponderRelease: releaseBobble,
      onPanResponderTerminate: releaseBobble,
    });
  }

  render(): React.Node {
    return (
      <View style={styles.bobbleContainer}>
        {this.state.bobbles.map((_, i) => {
          var j = this.state.bobbles.length - i - 1; // reverse so lead on top
          var handlers = j > 0 ? {} : this.state.bobbleResponder.panHandlers;
          return (
            <Animated.Image
              {...handlers}
              key={i}
              source={{uri: BOBBLE_IMGS[j]}}
              style={[
                styles.circle,
                {
                  backgroundColor: randColor(), // re-renders are obvious
                  transform: this.state.bobbles[j].getTranslateTransform(), // simple conversion
                },
              ]}
            />
          );
        })}
      </View>
    );
  }
}

var styles = StyleSheet.create({
  circle: {
    position: 'absolute',
    height: 60,
    width: 60,
    borderRadius: 30,
    borderWidth: 0.5,
  },
  bobbleContainer: {
    top: -68,
    paddingRight: 66,
    flexDirection: 'row',
    flex: 1,
    justifyContent: 'flex-end',
    backgroundColor: 'transparent',
  },
});

function computeNewSelected(gestureState: Object): ?number {
  var {dx, dy} = gestureState;
  var minDist = Infinity;
  var newSelected = null;
  var pointRadius = Math.sqrt(dx * dx + dy * dy);
  if (Math.abs(RADIUS - pointRadius) < 80) {
    BOBBLE_SPOTS.forEach((spot, idx) => {
      var delta = {x: spot.x - dx, y: spot.y - dy};
      var dist = delta.x * delta.x + delta.y * delta.y;
      if (dist < minDist) {
        minDist = dist;
        newSelected = idx;
      }
    });
  }
  return newSelected;
}

function randColor(): string {
  var colors = [0, 1, 2].map(() => Math.floor(Math.random() * 150 + 100));
  return 'rgb(' + colors.join(',') + ')';
}

var BOBBLE_IMGS = [
  'https://scontent-sea1-1.xx.fbcdn.net/hphotos-xpf1/t39.1997-6/10173489_272703316237267_1025826781_n.png',
  'https://scontent-sea1-1.xx.fbcdn.net/hphotos-xaf1/l/t39.1997-6/p240x240/851578_631487400212668_2087073502_n.png',
  'https://scontent-sea1-1.xx.fbcdn.net/hphotos-xaf1/t39.1997-6/p240x240/851583_654446917903722_178118452_n.png',
  'https://scontent-sea1-1.xx.fbcdn.net/hphotos-xaf1/t39.1997-6/p240x240/851565_641023175913294_875343096_n.png',
  'https://scontent-sea1-1.xx.fbcdn.net/hphotos-xaf1/t39.1997-6/851562_575284782557566_1188781517_n.png',
];

module.exports = AnExBobble;


================================================
FILE: RNTester/AnimatedGratuitousApp/AnExChained.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Animated, PanResponder, StyleSheet, View} = ReactNative;

class AnExChained extends React.Component<Object, any> {
  constructor(props: Object) {
    super(props);
    this.state = {
      stickers: [new Animated.ValueXY()], // 1 leader
    };
    var stickerConfig = {tension: 2, friction: 3}; // soft spring
    for (var i = 0; i < 4; i++) {
      // 4 followers
      var sticker = new Animated.ValueXY();
      Animated.spring(sticker, {
        ...stickerConfig,
        toValue: this.state.stickers[i], // Animated toValue's are tracked
      }).start();
      this.state.stickers.push(sticker); // push on the followers
    }
    var releaseChain = (e, gestureState) => {
      this.state.stickers[0].flattenOffset(); // merges offset into value and resets
      Animated.sequence([
        // spring to start after decay finishes
        Animated.decay(this.state.stickers[0], {
          // coast to a stop
          velocity: {x: gestureState.vx, y: gestureState.vy},
          deceleration: 0.997,
        }),
        Animated.spring(this.state.stickers[0], {
          toValue: {x: 0, y: 0}, // return to start
        }),
      ]).start();
    };
    this.state.chainResponder = PanResponder.create({
      onStartShouldSetPanResponder: () => true,
      onPanResponderGrant: () => {
        this.state.stickers[0].stopAnimation(value => {
          this.state.stickers[0].setOffset(value); // start where sticker animated to
          this.state.stickers[0].setValue({x: 0, y: 0}); // avoid flicker before next event
        });
      },
      onPanResponderMove: Animated.event(
        [null, {dx: this.state.stickers[0].x, dy: this.state.stickers[0].y}], // map gesture to leader
      ),
      onPanResponderRelease: releaseChain,
      onPanResponderTerminate: releaseChain,
    });
  }

  render() {
    return (
      <View style={styles.chained}>
        {this.state.stickers.map((_, i) => {
          var j = this.state.stickers.length - i - 1; // reverse so leader is on top
          var handlers = j === 0 ? this.state.chainResponder.panHandlers : {};
          return (
            <Animated.Image
              {...handlers}
              key={i}
              source={CHAIN_IMGS[j]}
              style={[
                styles.sticker,
                {
                  transform: this.state.stickers[j].getTranslateTransform(), // simple conversion
                },
              ]}
            />
          );
        })}
      </View>
    );
  }
}

var styles = StyleSheet.create({
  chained: {
    alignSelf: 'flex-end',
    top: -160,
    right: 126,
  },
  sticker: {
    position: 'absolute',
    height: 120,
    width: 120,
    backgroundColor: 'transparent',
  },
});

var CHAIN_IMGS = [
  require('../hawk.png'),
  require('../bunny.png'),
  require('../relay.png'),
  require('../hawk.png'),
  require('../bunny.png'),
];

module.exports = AnExChained;


================================================
FILE: RNTester/AnimatedGratuitousApp/AnExScroll.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Animated, Image, ScrollView, StyleSheet, Text, View} = ReactNative;

class AnExScroll extends React.Component<$FlowFixMeProps, any> {
  state: any = {scrollX: new Animated.Value(0)};

  render() {
    var width = this.props.panelWidth;
    return (
      <View style={styles.container}>
        <ScrollView
          automaticallyAdjustContentInsets={false}
          scrollEventThrottle={16 /* get all events */}
          onScroll={Animated.event(
            [{nativeEvent: {contentOffset: {x: this.state.scrollX}}}], // nested event mapping
          )}
          contentContainerStyle={{flex: 1, padding: 10}}
          pagingEnabled={true}
          horizontal={true}>
          <View style={[styles.page, {width}]}>
            <Image style={{width: 180, height: 180}} source={HAWK_PIC} />
            <Text style={styles.text}>
              {"I'll find something to put here."}
            </Text>
          </View>
          <View style={[styles.page, {width}]}>
            <Text style={styles.text}>{'And here.'}</Text>
          </View>
          <View style={[styles.page, {width}]}>
            <Text>{'But not here.'}</Text>
          </View>
        </ScrollView>
        <Animated.Image
          pointerEvents="none"
          style={[
            styles.bunny,
            {
              transform: [
                {
                  translateX: this.state.scrollX.interpolate({
                    inputRange: [0, width, 2 * width],
                    outputRange: [0, 0, width / 3],
                    extrapolate: 'clamp',
                  }),
                },
                {
                  translateY: this.state.scrollX.interpolate({
                    inputRange: [0, width, 2 * width],
                    outputRange: [0, -200, -260],
                    extrapolate: 'clamp',
                  }),
                },
                {
                  scale: this.state.scrollX.interpolate({
                    inputRange: [0, width, 2 * width],
                    outputRange: [0.5, 0.5, 2],
                    extrapolate: 'clamp',
                  }),
                },
              ],
            },
          ]}
          source={BUNNY_PIC}
        />
      </View>
    );
  }
}

var styles = StyleSheet.create({
  container: {
    backgroundColor: 'transparent',
    flex: 1,
  },
  text: {
    padding: 4,
    paddingBottom: 10,
    fontWeight: 'bold',
    fontSize: 18,
    backgroundColor: 'transparent',
  },
  bunny: {
    backgroundColor: 'transparent',
    position: 'absolute',
    height: 160,
    width: 160,
  },
  page: {
    alignItems: 'center',
    justifyContent: 'flex-end',
  },
});

var HAWK_PIC = {
  uri:
    'https://scontent-sea1-1.xx.fbcdn.net/hphotos-xfa1/t39.1997-6/10734304_1562225620659674_837511701_n.png',
};
var BUNNY_PIC = {
  uri:
    'https://scontent-sea1-1.xx.fbcdn.net/hphotos-xaf1/t39.1997-6/851564_531111380292237_1898871086_n.png',
};

module.exports = AnExScroll;


================================================
FILE: RNTester/AnimatedGratuitousApp/AnExSet.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Animated, PanResponder, StyleSheet, Text, View} = ReactNative;

var AnExBobble = require('./AnExBobble');
var AnExChained = require('./AnExChained');
var AnExScroll = require('./AnExScroll');
var AnExTilt = require('./AnExTilt');

class AnExSet extends React.Component<Object, any> {
  constructor(props: Object) {
    super(props);
    function randColor() {
      var colors = [0, 1, 2].map(() => Math.floor(Math.random() * 150 + 100));
      return 'rgb(' + colors.join(',') + ')';
    }
    this.state = {
      closeColor: randColor(),
      openColor: randColor(),
    };
  }
  render(): React.Node {
    var backgroundColor = this.props.openVal
      ? this.props.openVal.interpolate({
          inputRange: [0, 1],
          outputRange: [
            this.state.closeColor, // interpolates color strings
            this.state.openColor,
          ],
        })
      : this.state.closeColor;
    var panelWidth =
      (this.props.containerLayout && this.props.containerLayout.width) || 320;
    return (
      <View style={styles.container}>
        <Animated.View
          style={[styles.header, {backgroundColor}]}
          {...this.state.dismissResponder.panHandlers}>
          <Text style={[styles.text, styles.headerText]}>{this.props.id}</Text>
        </Animated.View>
        {this.props.isActive && (
          <View style={styles.stream}>
            <View style={styles.card}>
              <Text style={styles.text}>July 2nd</Text>
              <AnExTilt isActive={this.props.isActive} />
              <AnExBobble />
            </View>
            <AnExScroll panelWidth={panelWidth} />
            <AnExChained />
          </View>
        )}
      </View>
    );
  }

  UNSAFE_componentWillMount() {
    this.state.dismissY = new Animated.Value(0);
    this.state.dismissResponder = PanResponder.create({
      onStartShouldSetPanResponder: () => this.props.isActive,
      onPanResponderGrant: () => {
        Animated.spring(this.props.openVal, {
          // Animated value passed in.
          toValue: this.state.dismissY.interpolate({
            // Track dismiss gesture
            inputRange: [0, 300], // and interpolate pixel distance
            outputRange: [1, 0], // to a fraction.
          }),
          useNativeDriver: true,
        }).start();
      },
      onPanResponderMove: Animated.event(
        [null, {dy: this.state.dismissY}], // track pan gesture
        {useNativeDriver: true},
      ),
      onPanResponderRelease: (e, gestureState) => {
        if (gestureState.dy > 100) {
          this.props.onDismiss(gestureState.vy); // delegates dismiss action to parent
        } else {
          Animated.spring(this.props.openVal, {
            toValue: 1, // animate back open if released early
            useNativeDriver: true,
          }).start();
        }
      },
    });
  }
}

var styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  header: {
    alignItems: 'center',
    paddingTop: 18,
    height: 90,
  },
  stream: {
    flex: 1,
    backgroundColor: 'rgb(230, 230, 230)',
  },
  card: {
    margin: 8,
    padding: 8,
    borderRadius: 6,
    backgroundColor: 'white',
    shadowRadius: 2,
    shadowColor: 'black',
    shadowOpacity: 0.2,
    shadowOffset: {height: 0.5},
  },
  text: {
    padding: 4,
    paddingBottom: 10,
    fontWeight: 'bold',
    fontSize: 18,
    backgroundColor: 'transparent',
  },
  headerText: {
    fontSize: 25,
    color: 'white',
    shadowRadius: 3,
    shadowColor: 'black',
    shadowOpacity: 1,
    shadowOffset: {height: 1},
  },
});

module.exports = AnExSet;


================================================
FILE: RNTester/AnimatedGratuitousApp/AnExSlides.md
================================================
<br /><br />
# React Native: Animated

ReactEurope 2015, Paris - Spencer Ahrens - Facebook

<br /><br />

## Fluid Interactions

- People expect smooth, delightful experiences
- Complex interactions are hard
- Common patterns can be optimized

<br /><br />


## Declarative Interactions

- Wire up inputs (events) to outputs (props) + transforms (springs, easing, etc.)
- Arbitrary code can define/update this config
- Config can be serialized -> native/main thread
- No refs or lifecycle to worry about

<br /><br />


## var { Animated } = require('react-native');

- New library soon to be released for React Native
- 100% JS implementation -> X-Platform
- Per-platform native optimizations planned
- This talk -> usage examples, not implementation

<br /><br />


## Gratuitous Animation Demo App

- Layout uses `flexWrap: 'wrap'`
- longPress -> drag to reorder
- Tap to open example sets

<br /><br />

## Gratuitous Animation Codez

- Step 1: 2D tracking pan gesture
- Step 2: Simple pop-out spring on select
- Step 3: Animate grid reordering with `LayoutAnimation`
- Step 4: Opening animation

<br /><br />

## Animation Example Set

- `Animated.Value` `this.props.open` passed in from parent
- `interpolate` works with string "shapes," e.g. `'rgb(0, 0, 255)'`, `'45deg'`
- Examples easily composed as separate components
- Dismissing tracks interpolated gesture
- Custom release logic

<br /><br />


## Tilting Photo

- Pan -> translateX * 2, rotate, opacity (via tracking)
- Gesture release triggers separate animations
- `addListener` for async, arbitrary logic on animation progress
- `interpolate` easily creates parallax and other effects

<br /><br />

## Bobbles

- Static positions defined
- Listens to events to maybe change selection
 - Springs previous selection back
 - New selection tracks selector
- `getTranslateTransform` adds convenience

<br /><br />

## Chained

- Classic "Chat Heads" animation
- Each sticker tracks the one before it with a soft spring
- `decay` maintains gesture velocity, followed by `spring` to home
- `stopAnimation` provides the last value for `setOffset`

<br /><br />

## Scrolling

- `Animated.event` can track all sorts of stuff
- Multi-part ranges and extrapolation options
- Transforms decompose into ordered components

<br /><br />

# React Native: Animated

- Landing soon in master (days)
- GitHub: @vjeux, @sahrens
- Questions?

<br />


================================================
FILE: RNTester/AnimatedGratuitousApp/AnExTilt.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Animated, PanResponder, StyleSheet} = ReactNative;

class AnExTilt extends React.Component<Object, any> {
  constructor(props: Object) {
    super(props);
    this.state = {
      panX: new Animated.Value(0),
      opacity: new Animated.Value(1),
      burns: new Animated.Value(1.15),
    };
    this.state.tiltPanResponder = PanResponder.create({
      onStartShouldSetPanResponder: () => true,
      onPanResponderGrant: () => {
        Animated.timing(this.state.opacity, {
          toValue: this.state.panX.interpolate({
            inputRange: [-300, 0, 300], // pan is in pixels
            outputRange: [0, 1, 0], // goes to zero at both edges
          }),
          duration: 0, // direct tracking
        }).start();
      },
      onPanResponderMove: Animated.event(
        [null, {dx: this.state.panX}], // panX is linked to the gesture
      ),
      onPanResponderRelease: (e, gestureState) => {
        var toValue = 0;
        if (gestureState.dx > 100) {
          toValue = 500;
        } else if (gestureState.dx < -100) {
          toValue = -500;
        }
        Animated.spring(this.state.panX, {
          toValue, // animate back to center or off screen
          velocity: gestureState.vx, // maintain gesture velocity
          tension: 10,
          friction: 3,
        }).start();
        this.state.panX.removeAllListeners();
        var id = this.state.panX.addListener(({value}) => {
          // listen until offscreen
          if (Math.abs(value) > 400) {
            this.state.panX.removeListener(id); // offscreen, so stop listening
            Animated.timing(this.state.opacity, {
              toValue: 1, // Fade back in.  This unlinks it from tracking this.state.panX
            }).start();
            this.state.panX.setValue(0); // Note: stops the spring animation
            toValue !== 0 && this._startBurnsZoom();
          }
        });
      },
    });
  }

  _startBurnsZoom() {
    this.state.burns.setValue(1); // reset to beginning
    Animated.decay(this.state.burns, {
      velocity: 1, // sublte zoom
      deceleration: 0.9999, // slow decay
    }).start();
  }

  UNSAFE_componentWillMount() {
    this._startBurnsZoom();
  }

  render(): React.Node {
    return (
      <Animated.View
        {...this.state.tiltPanResponder.panHandlers}
        style={[
          styles.tilt,
          {
            opacity: this.state.opacity,
            transform: [
              {
                rotate: this.state.panX.interpolate({
                  inputRange: [-320, 320],
                  outputRange: ['-15deg', '15deg'],
                }),
              }, // interpolate string "shapes"
              {translateX: this.state.panX},
            ],
          },
        ]}>
        <Animated.Image
          pointerEvents="none"
          style={{
            flex: 1,
            transform: [
              {
                translateX: this.state.panX.interpolate({
                  inputRange: [-3, 3], // small range is extended by default
                  outputRange: [2, -2],
                }), // parallax
              },
              {
                scale: this.state.burns.interpolate({
                  inputRange: [1, 3000],
                  outputRange: [1, 1.25],
                }), // simple multiplier
              },
            ],
          }}
          source={require('./trees.jpg')}
        />
      </Animated.View>
    );
  }
}

var styles = StyleSheet.create({
  tilt: {
    overflow: 'hidden',
    height: 200,
    marginBottom: 4,
    backgroundColor: 'rgb(130, 130, 255)',
    borderColor: 'rgba(0, 0, 0, 0.2)',
    borderWidth: 1,
    borderRadius: 20,
  },
});

module.exports = AnExTilt;


================================================
FILE: RNTester/AppStateExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

const React = require('react');
const ReactNative = require('react-native');
const {AppState, Text, View} = ReactNative;

class AppStateSubscription extends React.Component<
  $FlowFixMeProps,
  $FlowFixMeState,
> {
  state = {
    appState: AppState.currentState,
    previousAppStates: [],
    memoryWarnings: 0,
  };

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
    AppState.addEventListener('memoryWarning', this._handleMemoryWarning);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
    AppState.removeEventListener('memoryWarning', this._handleMemoryWarning);
  }

  _handleMemoryWarning = () => {
    this.setState({memoryWarnings: this.state.memoryWarnings + 1});
  };

  _handleAppStateChange = appState => {
    var previousAppStates = this.state.previousAppStates.slice();
    previousAppStates.push(this.state.appState);
    this.setState({
      appState,
      previousAppStates,
    });
  };

  render() {
    if (this.props.showMemoryWarnings) {
      return (
        <View>
          <Text>{this.state.memoryWarnings}</Text>
        </View>
      );
    }
    if (this.props.showCurrentOnly) {
      return (
        <View>
          <Text>{this.state.appState}</Text>
        </View>
      );
    }
    return (
      <View>
        <Text>{JSON.stringify(this.state.previousAppStates)}</Text>
      </View>
    );
  }
}

exports.title = 'AppState';
exports.description = 'app background status';
exports.examples = [
  {
    title: 'AppState.currentState',
    description: 'Can be null on app initialization',
    render() {
      return <Text>{AppState.currentState}</Text>;
    },
  },
  {
    title: 'Subscribed AppState:',
    description:
      'This changes according to the current state, so you can only ever see it rendered as "active"',
    render(): React.Element<any> {
      return <AppStateSubscription showCurrentOnly={true} />;
    },
  },
  {
    title: 'Previous states:',
    render(): React.Element<any> {
      return <AppStateSubscription showCurrentOnly={false} />;
    },
  },
  {
    platform: 'ios',
    title: 'Memory Warnings',
    description:
      'In the IOS simulator, hit Shift+Command+M to simulate a memory warning.',
    render(): React.Element<any> {
      return <AppStateSubscription showMemoryWarnings={true} />;
    },
  },
];


================================================
FILE: RNTester/AssetScaledImageExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Image, StyleSheet, View, ScrollView} = ReactNative;

class AssetScaledImageExample extends React.Component<
  $FlowFixMeProps,
  $FlowFixMeState,
> {
  state = {
    asset: this.props.asset,
  };

  render() {
    var image = this.state.asset.node.image;
    return (
      <ScrollView>
        <View style={styles.row}>
          <Image source={image} style={styles.imageWide} />
        </View>
        <View style={styles.row}>
          <Image source={image} style={styles.imageThumb} />
          <Image source={image} style={styles.imageThumb} />
          <Image source={image} style={styles.imageThumb} />
        </View>
        <View style={styles.row}>
          <Image source={image} style={styles.imageT1} />
          <Image source={image} style={styles.imageT2} />
        </View>
      </ScrollView>
    );
  }
}

var styles = StyleSheet.create({
  row: {
    padding: 5,
    flex: 1,
    flexDirection: 'row',
    alignSelf: 'center',
  },
  textColumn: {
    flex: 1,
    flexDirection: 'column',
  },
  imageWide: {
    borderWidth: 1,
    borderColor: 'black',
    width: 320,
    height: 240,
    margin: 5,
  },
  imageThumb: {
    borderWidth: 1,
    borderColor: 'black',
    width: 100,
    height: 100,
    margin: 5,
  },
  imageT1: {
    borderWidth: 1,
    borderColor: 'black',
    width: 212,
    height: 320,
    margin: 5,
  },
  imageT2: {
    borderWidth: 1,
    borderColor: 'black',
    width: 100,
    height: 320,
    margin: 5,
  },
});

exports.title = '<AssetScaledImageExample>';
exports.description =
  'Example component that displays the automatic scaling capabilities of the <Image /> tag';
module.exports = AssetScaledImageExample;


================================================
FILE: RNTester/AsyncStorageExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {AsyncStorage, PickerIOS, Text, View} = ReactNative;
var PickerItemIOS = PickerIOS.Item;

var STORAGE_KEY = '@AsyncStorageExample:key';
var COLORS = ['red', 'orange', 'yellow', 'green', 'blue'];

class BasicStorageExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    selectedValue: COLORS[0],
    messages: [],
  };

  componentDidMount() {
    this._loadInitialState().done();
  }

  _loadInitialState = async () => {
    try {
      var value = await AsyncStorage.getItem(STORAGE_KEY);
      if (value !== null) {
        this.setState({selectedValue: value});
        this._appendMessage('Recovered selection from disk: ' + value);
      } else {
        this._appendMessage('Initialized with no selection on disk.');
      }
    } catch (error) {
      this._appendMessage('AsyncStorage error: ' + error.message);
    }
  };

  render() {
    var color = this.state.selectedValue;
    return (
      <View>
        <PickerIOS selectedValue={color} onValueChange={this._onValueChange}>
          {COLORS.map(value => (
            <PickerItemIOS key={value} value={value} label={value} />
          ))}
        </PickerIOS>
        <Text>
          {'Selected: '}
          <Text style={{color}}>{this.state.selectedValue}</Text>
        </Text>
        <Text> </Text>
        <Text onPress={this._removeStorage}>
          Press here to remove from storage.
        </Text>
        <Text> </Text>
        <Text>Messages:</Text>
        {this.state.messages.map(m => <Text key={m}>{m}</Text>)}
      </View>
    );
  }

  _onValueChange = async selectedValue => {
    this.setState({selectedValue});
    try {
      await AsyncStorage.setItem(STORAGE_KEY, selectedValue);
      this._appendMessage('Saved selection to disk: ' + selectedValue);
    } catch (error) {
      this._appendMessage('AsyncStorage error: ' + error.message);
    }
  };

  _removeStorage = async () => {
    try {
      await AsyncStorage.removeItem(STORAGE_KEY);
      this._appendMessage('Selection removed from disk.');
    } catch (error) {
      this._appendMessage('AsyncStorage error: ' + error.message);
    }
  };

  _appendMessage = message => {
    this.setState({messages: this.state.messages.concat(message)});
  };
}

exports.title = 'AsyncStorage';
exports.description = 'Asynchronous local disk storage.';
exports.examples = [
  {
    title: 'Basics - getItem, setItem, removeItem',
    render(): React.Element<any> {
      return <BasicStorageExample />;
    },
  },
];


================================================
FILE: RNTester/BorderExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {StyleSheet, View} = ReactNative;

var styles = StyleSheet.create({
  box: {
    width: 100,
    height: 100,
  },
  border1: {
    borderWidth: 10,
    borderColor: 'brown',
  },
  borderRadius: {
    borderWidth: 10,
    borderRadius: 10,
    borderColor: 'cyan',
  },
  border2: {
    borderWidth: 10,
    borderTopColor: 'red',
    borderRightColor: 'yellow',
    borderBottomColor: 'green',
    borderLeftColor: 'blue',
  },
  border3: {
    borderColor: 'purple',
    borderTopWidth: 10,
    borderRightWidth: 20,
    borderBottomWidth: 30,
    borderLeftWidth: 40,
  },
  border4: {
    borderTopWidth: 10,
    borderTopColor: 'red',
    borderRightWidth: 20,
    borderRightColor: 'yellow',
    borderBottomWidth: 30,
    borderBottomColor: 'green',
    borderLeftWidth: 40,
    borderLeftColor: 'blue',
  },
  border5: {
    borderRadius: 50,
    borderTopWidth: 10,
    borderTopColor: 'red',
    borderRightWidth: 20,
    borderRightColor: 'yellow',
    borderBottomWidth: 30,
    borderBottomColor: 'green',
    borderLeftWidth: 40,
    borderLeftColor: 'blue',
  },
  border6: {
    borderTopWidth: 10,
    borderTopColor: 'red',
    borderRightWidth: 20,
    borderRightColor: 'yellow',
    borderBottomWidth: 30,
    borderBottomColor: 'green',
    borderLeftWidth: 40,
    borderLeftColor: 'blue',

    borderTopLeftRadius: 100,
  },
  border7: {
    borderWidth: 10,
    borderColor: '#f007',
    borderRadius: 30,
    overflow: 'hidden',
  },
  border7_inner: {
    backgroundColor: 'blue',
    width: 100,
    height: 100,
  },
  border8: {
    width: 60,
    height: 60,
    borderColor: 'black',
    marginRight: 10,
    backgroundColor: 'lightgrey',
  },
  border9: {
    borderWidth: 10,
    borderTopLeftRadius: 10,
    borderBottomRightRadius: 20,
    borderColor: 'black',
  },
  border10: {
    borderWidth: 10,
    backgroundColor: 'white',
    borderTopLeftRadius: 10,
    borderBottomRightRadius: 20,
    borderColor: 'black',
    elevation: 10,
  },
  border11: {
    width: 0,
    height: 0,
    borderStyle: 'solid',
    overflow: 'hidden',
    borderTopWidth: 50,
    borderRightWidth: 0,
    borderBottomWidth: 50,
    borderLeftWidth: 100,
    borderTopColor: 'transparent',
    borderRightColor: 'transparent',
    borderBottomColor: 'transparent',
    borderLeftColor: 'red',
  },
  border12: {
    borderStyle: 'solid',
    overflow: 'hidden',
    borderTopWidth: 10,
    borderRightWidth: 20,
    borderBottomWidth: 30,
    borderLeftWidth: 40,
    borderRadius: 20,
  },
  border13: {
    borderStyle: 'solid',
    overflow: 'hidden',
    borderTopWidth: 10,
    borderRightWidth: 20,
    borderBottomWidth: 30,
    borderLeftWidth: 40,
    borderTopColor: 'red',
    borderRightColor: 'green',
    borderBottomColor: 'blue',
    borderLeftColor: 'magenta',
    borderRadius: 20,
  },
  border14: {
    borderStyle: 'solid',
    overflow: 'hidden',
    borderTopWidth: 10,
    borderRightWidth: 20,
    borderBottomWidth: 30,
    borderLeftWidth: 40,
    borderTopColor: 'red',
    borderRightColor: 'green',
    borderBottomColor: 'blue',
    borderLeftColor: 'magenta',
    borderTopLeftRadius: 10,
    borderTopRightRadius: 40,
    borderBottomRightRadius: 30,
    borderBottomLeftRadius: 40,
  },
});

exports.title = 'Border';
exports.description =
  'Demonstrates some of the border styles available to Views.';
exports.examples = [
  {
    title: 'Equal-Width / Same-Color',
    description: 'borderWidth & borderColor',
    render() {
      return <View style={[styles.box, styles.border1]} />;
    },
  },
  {
    title: 'Equal-Width / Same-Color',
    description: 'borderWidth & borderColor & borderRadius',
    render() {
      return <View style={[styles.box, styles.borderRadius]} />;
    },
  },
  {
    title: 'Equal-Width Borders',
    description: 'borderWidth & border*Color',
    render() {
      return <View style={[styles.box, styles.border2]} />;
    },
  },
  {
    title: 'Same-Color Borders',
    description: 'border*Width & borderColor',
    render() {
      return <View style={[styles.box, styles.border3]} />;
    },
  },
  {
    title: 'Custom Borders',
    description: 'border*Width & border*Color',
    render() {
      return <View style={[styles.box, styles.border4]} />;
    },
  },
  {
    title: 'Custom Borders',
    description: 'border*Width & border*Color',
    platform: 'ios',
    render() {
      return <View style={[styles.box, styles.border5]} />;
    },
  },
  {
    title: 'Custom Borders',
    description: 'border*Width & border*Color',
    platform: 'ios',
    render() {
      return <View style={[styles.box, styles.border6]} />;
    },
  },
  {
    title: 'Custom Borders',
    description: 'borderRadius & clipping',
    platform: 'ios',
    render() {
      return (
        <View style={[styles.box, styles.border7]}>
          <View style={styles.border7_inner} />
        </View>
      );
    },
  },
  {
    title: 'Single Borders',
    description: 'top, left, bottom right',
    render() {
      return (
        <View style={{flexDirection: 'row'}}>
          <View style={[styles.box, styles.border8, {borderTopWidth: 5}]} />
          <View style={[styles.box, styles.border8, {borderLeftWidth: 5}]} />
          <View style={[styles.box, styles.border8, {borderBottomWidth: 5}]} />
          <View style={[styles.box, styles.border8, {borderRightWidth: 5}]} />
        </View>
      );
    },
  },
  {
    title: 'Corner Radii',
    description: 'borderTopLeftRadius & borderBottomRightRadius',
    render() {
      return <View style={[styles.box, styles.border9]} />;
    },
  },
  {
    title: 'Corner Radii / Elevation',
    description: 'borderTopLeftRadius & borderBottomRightRadius & elevation',
    platform: 'android',
    render() {
      return <View style={[styles.box, styles.border10]} />;
    },
  },
  {
    title: 'CSS Trick - Triangle',
    description: 'create a triangle by manipulating border colors and widths',
    render() {
      return <View style={[styles.border11]} />;
    },
  },
  {
    title: 'Curved border(Left|Right|Bottom|Top)Width',
    description: 'Make a non-uniform width curved border',
    render() {
      return <View style={[styles.box, styles.border12]} />;
    },
  },
  {
    title: 'Curved border(Left|Right|Bottom|Top)Color',
    description: 'Make a non-uniform color curved border',
    render() {
      return <View style={[styles.box, styles.border13]} />;
    },
  },
  {
    title: 'Curved border(Top|Bottom)(Left|Right)Radius',
    description: 'Make a non-uniform radius curved border',
    render() {
      return <View style={[styles.box, styles.border14]} />;
    },
  },
];


================================================
FILE: RNTester/BoxShadowExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Image, StyleSheet, View} = ReactNative;

var styles = StyleSheet.create({
  box: {
    width: 100,
    height: 100,
    borderWidth: 2,
  },
  shadow1: {
    shadowOpacity: 0.5,
    shadowRadius: 3,
    shadowOffset: {width: 2, height: 2},
  },
  shadow2: {
    shadowOpacity: 1.0,
    shadowColor: 'red',
    shadowRadius: 0,
    shadowOffset: {width: 3, height: 3},
  },
});

exports.title = 'Box Shadow';
exports.description =
  'Demonstrates some of the shadow styles available to Views.';
exports.examples = [
  {
    title: 'Basic shadow',
    description: 'shadowOpacity: 0.5, shadowOffset: {2, 2}',
    render() {
      return <View style={[styles.box, styles.shadow1]} />;
    },
  },
  {
    title: 'Colored shadow',
    description: "shadowColor: 'red', shadowRadius: 0",
    render() {
      return <View style={[styles.box, styles.shadow2]} />;
    },
  },
  {
    title: 'Shaped shadow',
    description: 'borderRadius: 50',
    render() {
      return <View style={[styles.box, styles.shadow1, {borderRadius: 50}]} />;
    },
  },
  {
    title: 'Image shadow',
    description: 'Image shadows are derived exactly from the pixels.',
    render() {
      return (
        <Image
          source={require('./hawk.png')}
          style={[
            styles.box,
            styles.shadow1,
            {borderWidth: 0, overflow: 'visible'},
          ]}
        />
      );
    },
  },
  {
    title: 'Child shadow',
    description:
      'For views without an opaque background color, shadow will be derived from the subviews.',
    render() {
      return (
        <View
          style={[
            styles.box,
            styles.shadow1,
            {backgroundColor: 'transparent'},
          ]}>
          <View
            style={[
              styles.box,
              {
                width: 80,
                height: 80,
                borderRadius: 40,
                margin: 8,
                backgroundColor: 'red',
              },
            ]}
          />
        </View>
      );
    },
  },
];


================================================
FILE: RNTester/ButtonExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

const React = require('react');
const ReactNative = require('react-native');
const {Alert, Button, View} = ReactNative;

const onButtonPress = () => {
  Alert.alert('Button has been pressed!');
};

exports.displayName = 'ButtonExample';
exports.framework = 'React';
exports.title = '<Button>';
exports.description = 'Simple React Native button component.';

exports.examples = [
  {
    title: 'Simple Button',
    description:
      'The title and onPress handler are required. It is ' +
      'recommended to set accessibilityLabel to help make your app usable by ' +
      'everyone.',
    render: function() {
      return (
        <Button
          onPress={onButtonPress}
          title="Press Me"
          accessibilityLabel="See an informative alert"
        />
      );
    },
  },
  {
    title: 'Adjusted color',
    description:
      'Adjusts the color in a way that looks standard on each ' +
      'platform. On iOS, the color prop controls the color of the text. On ' +
      'Android, the color adjusts the background color of the button.',
    render: function() {
      return (
        <Button
          onPress={onButtonPress}
          title="Press Purple"
          color="#841584"
          accessibilityLabel="Learn more about purple"
        />
      );
    },
  },
  {
    title: 'Fit to text layout',
    description:
      'This layout strategy lets the title define the width of ' + 'the button',
    render: function() {
      return (
        <View style={{flexDirection: 'row', justifyContent: 'space-between'}}>
          <Button
            onPress={onButtonPress}
            title="This looks great!"
            accessibilityLabel="This sounds great!"
          />
          <Button
            onPress={onButtonPress}
            title="Ok!"
            color="#841584"
            accessibilityLabel="Ok, Great!"
          />
        </View>
      );
    },
  },
  {
    title: 'Disabled Button',
    description: 'All interactions for the component are disabled.',
    render: function() {
      return (
        <Button
          disabled
          onPress={onButtonPress}
          title="I Am Disabled"
          accessibilityLabel="See an informative alert"
        />
      );
    },
  },
];


================================================
FILE: RNTester/CameraRollExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 * @format
 */
'use strict';

const React = require('react');
const ReactNative = require('react-native');
const {
  CameraRoll,
  Image,
  Slider,
  StyleSheet,
  Switch,
  Text,
  View,
  TouchableOpacity,
} = ReactNative;

const invariant = require('fbjs/lib/invariant');

const CameraRollView = require('./CameraRollView');

const AssetScaledImageExampleView = require('./AssetScaledImageExample');

class CameraRollExample extends React.Component<
  $FlowFixMeProps,
  $FlowFixMeState,
> {
  state = {
    groupTypes: 'SavedPhotos',
    sliderValue: 1,
    bigImages: true,
  };
  _cameraRollView: ?CameraRollView;
  render() {
    return (
      <View>
        <Switch
          onValueChange={this._onSwitchChange}
          value={this.state.bigImages}
        />
        <Text>{(this.state.bigImages ? 'Big' : 'Small') + ' Images'}</Text>
        <Slider
          value={this.state.sliderValue}
          onValueChange={this._onSliderChange}
        />
        <Text>{'Group Type: ' + this.state.groupTypes}</Text>
        <CameraRollView
          ref={ref => {
            this._cameraRollView = ref;
          }}
          batchSize={20}
          groupTypes={this.state.groupTypes}
          renderImage={this._renderImage}
        />
      </View>
    );
  }

  loadAsset(asset) {
    if (this.props.navigator) {
      this.props.navigator.push({
        title: 'Camera Roll Image',
        component: AssetScaledImageExampleView,
        backButtonTitle: 'Back',
        passProps: {asset: asset},
      });
    }
  }

  _renderImage = asset => {
    const imageSize = this.state.bigImages ? 150 : 75;
    const imageStyle = [styles.image, {width: imageSize, height: imageSize}];
    const {location} = asset.node;
    const locationStr = location
      ? JSON.stringify(location)
      : 'Unknown location';
    return (
      <TouchableOpacity key={asset} onPress={this.loadAsset.bind(this, asset)}>
        <View style={styles.row}>
          <Image source={asset.node.image} style={imageStyle} />
          <View style={styles.info}>
            <Text style={styles.url}>{asset.node.image.uri}</Text>
            <Text>{locationStr}</Text>
            <Text>{asset.node.group_name}</Text>
            <Text>{new Date(asset.node.timestamp).toString()}</Text>
          </View>
        </View>
      </TouchableOpacity>
    );
  };

  _onSliderChange = value => {
    const options = Object.keys(CameraRoll.GroupTypesOptions);
    const index = Math.floor(value * options.length * 0.99);
    const groupTypes = options[index];
    if (groupTypes !== this.state.groupTypes) {
      this.setState({groupTypes: groupTypes});
    }
  };

  _onSwitchChange = value => {
    invariant(this._cameraRollView, 'ref should be set');
    this._cameraRollView.rendererChanged();
    this.setState({bigImages: value});
  };
}

const styles = StyleSheet.create({
  row: {
    flexDirection: 'row',
    flex: 1,
  },
  url: {
    fontSize: 9,
    marginBottom: 14,
  },
  image: {
    margin: 4,
  },
  info: {
    flex: 1,
  },
});

exports.title = 'Camera Roll';
exports.description =
  "Example component that uses CameraRoll to list user's photos";
exports.examples = [
  {
    title: 'Photos',
    render(): React.Element<any> {
      return <CameraRollExample />;
    },
  },
];


================================================
FILE: RNTester/CameraRollView.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
const PropTypes = require('prop-types');
var ReactNative = require('react-native');
var {
  ActivityIndicator,
  Alert,
  CameraRoll,
  Image,
  ListView,
  PermissionsAndroid,
  Platform,
  StyleSheet,
  View,
} = ReactNative;

var groupByEveryN = require('groupByEveryN');
var logError = require('logError');

var propTypes = {
  /**
   * The group where the photos will be fetched from. Possible
   * values are 'Album', 'All', 'Event', 'Faces', 'Library', 'PhotoStream'
   * and SavedPhotos.
   */
  groupTypes: PropTypes.oneOf([
    'Album',
    'All',
    'Event',
    'Faces',
    'Library',
    'PhotoStream',
    'SavedPhotos',
  ]),

  /**
   * Number of images that will be fetched in one page.
   */
  batchSize: PropTypes.number,

  /**
   * A function that takes a single image as a parameter and renders it.
   */
  renderImage: PropTypes.func,

  /**
   * imagesPerRow: Number of images to be shown in each row.
   */
  imagesPerRow: PropTypes.number,

  /**
   * The asset type, one of 'Photos', 'Videos' or 'All'
   */
  assetType: PropTypes.oneOf(['Photos', 'Videos', 'All']),
};

var CameraRollView = createReactClass({
  displayName: 'CameraRollView',
  propTypes: propTypes,

  getDefaultProps: function(): Object {
    return {
      groupTypes: 'SavedPhotos',
      batchSize: 5,
      imagesPerRow: 1,
      assetType: 'Photos',
      renderImage: function(asset) {
        var imageSize = 150;
        var imageStyle = [styles.image, {width: imageSize, height: imageSize}];
        return <Image source={asset.node.image} style={imageStyle} />;
      },
    };
  },

  getInitialState: function() {
    var ds = new ListView.DataSource({rowHasChanged: this._rowHasChanged});

    return {
      assets: ([]: Array<Image>),
      groupTypes: this.props.groupTypes,
      lastCursor: (null: ?string),
      assetType: this.props.assetType,
      noMore: false,
      loadingMore: false,
      dataSource: ds,
    };
  },

  /**
   * This should be called when the image renderer is changed to tell the
   * component to re-render its assets.
   */
  rendererChanged: function() {
    var ds = new ListView.DataSource({rowHasChanged: this._rowHasChanged});
    this.state.dataSource = ds.cloneWithRows(
      // $FlowFixMe(>=0.41.0)
      groupByEveryN(this.state.assets, this.props.imagesPerRow),
    );
  },

  componentDidMount: function() {
    this.fetch();
  },

  /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an error
   * found when Flow v0.68 was deployed. To see the error delete this comment
   * and run Flow. */
  UNSAFE_componentWillReceiveProps: function(nextProps: {groupTypes?: string}) {
    if (this.props.groupTypes !== nextProps.groupTypes) {
      this.fetch(true);
    }
  },

  _fetch: async function(clear?: boolean) {
    if (clear) {
      this.setState(this.getInitialState(), this.fetch);
      return;
    }

    if (Platform.OS === 'android') {
      const result = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
        {
          title: 'Permission Explanation',
          message: 'RNTester would like to access your pictures.',
        },
      );
      if (result !== 'granted') {
        Alert.alert('Access to pictures was denied.');
        return;
      }
    }

    const fetchParams: Object = {
      first: this.props.batchSize,
      groupTypes: this.props.groupTypes,
      assetType: this.props.assetType,
    };
    if (Platform.OS === 'android') {
      // not supported in android
      delete fetchParams.groupTypes;
    }
    if (this.state.lastCursor) {
      fetchParams.after = this.state.lastCursor;
    }

    try {
      const data = await CameraRoll.getPhotos(fetchParams);
      this._appendAssets(data);
    } catch (e) {
      logError(e);
    }
  },

  /**
   * Fetches more images from the camera roll. If clear is set to true, it will
   * set the component to its initial state and re-fetch the images.
   */
  fetch: function(clear?: boolean) {
    if (!this.state.loadingMore) {
      this.setState({loadingMore: true}, () => {
        this._fetch(clear);
      });
    }
  },

  render: function() {
    return (
      <ListView
        renderRow={this._renderRow}
        renderFooter={this._renderFooterSpinner}
        onEndReached={this._onEndReached}
        style={styles.container}
        dataSource={this.state.dataSource}
        enableEmptySections
      />
    );
  },

  _rowHasChanged: function(r1: Array<Image>, r2: Array<Image>): boolean {
    if (r1.length !== r2.length) {
      return true;
    }

    for (var i = 0; i < r1.length; i++) {
      if (r1[i] !== r2[i]) {
        return true;
      }
    }

    return false;
  },

  _renderFooterSpinner: function() {
    if (!this.state.noMore) {
      return <ActivityIndicator />;
    }
    return null;
  },

  // rowData is an array of images
  _renderRow: function(
    rowData: Array<Image>,
    sectionID: string,
    rowID: string,
  ) {
    var images = rowData.map(image => {
      if (image === null) {
        return null;
      }
      // $FlowFixMe(>=0.41.0)
      return this.props.renderImage(image);
    });

    return <View style={styles.row}>{images}</View>;
  },

  _appendAssets: function(data: Object) {
    var assets = data.edges;
    var newState: Object = {loadingMore: false};

    if (!data.page_info.has_next_page) {
      newState.noMore = true;
    }

    if (assets.length > 0) {
      newState.lastCursor = data.page_info.end_cursor;
      newState.assets = this.state.assets.concat(assets);
      newState.dataSource = this.state.dataSource.cloneWithRows(
        // $FlowFixMe(>=0.41.0)
        groupByEveryN(newState.assets, this.props.imagesPerRow),
      );
    }

    this.setState(newState);
  },

  _onEndReached: function() {
    if (!this.state.noMore) {
      this.fetch();
    }
  },
});

var styles = StyleSheet.create({
  row: {
    flexDirection: 'row',
    flex: 1,
  },
  url: {
    fontSize: 9,
    marginBottom: 14,
  },
  image: {
    margin: 4,
  },
  info: {
    flex: 1,
  },
  container: {
    flex: 1,
  },
});

module.exports = CameraRollView;


================================================
FILE: RNTester/CheckBoxExample.js
================================================
/**
 * Copyright (c) 2017-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 * @format
 */
'use strict';

const React = require('react');
const ReactNative = require('react-native');
const {CheckBox, Text, View} = ReactNative;

class BasicCheckBoxExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    trueCheckBoxIsOn: true,
    falseCheckBoxIsOn: false,
  };

  render() {
    return (
      <View>
        <CheckBox
          onValueChange={value => this.setState({falseCheckBoxIsOn: value})}
          style={{marginBottom: 10}}
          value={this.state.falseCheckBoxIsOn}
        />
        <CheckBox
          onValueChange={value => this.setState({trueCheckBoxIsOn: value})}
          value={this.state.trueCheckBoxIsOn}
        />
      </View>
    );
  }
}

class DisabledCheckBoxExample extends React.Component<{}, $FlowFixMeState> {
  render() {
    return (
      <View>
        <CheckBox disabled={true} style={{marginBottom: 10}} value={true} />
        <CheckBox disabled={true} value={false} />
      </View>
    );
  }
}

class EventCheckBoxExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    eventCheckBoxIsOn: false,
    eventCheckBoxRegressionIsOn: true,
  };

  render() {
    return (
      <View style={{flexDirection: 'row', justifyContent: 'space-around'}}>
        <View>
          <CheckBox
            onValueChange={value => this.setState({eventCheckBoxIsOn: value})}
            style={{marginBottom: 10}}
            value={this.state.eventCheckBoxIsOn}
          />
          <CheckBox
            onValueChange={value => this.setState({eventCheckBoxIsOn: value})}
            style={{marginBottom: 10}}
            value={this.state.eventCheckBoxIsOn}
          />
          <Text>{this.state.eventCheckBoxIsOn ? 'On' : 'Off'}</Text>
        </View>
        <View>
          <CheckBox
            onValueChange={value =>
              this.setState({eventCheckBoxRegressionIsOn: value})
            }
            style={{marginBottom: 10}}
            value={this.state.eventCheckBoxRegressionIsOn}
          />
          <CheckBox
            onValueChange={value =>
              this.setState({eventCheckBoxRegressionIsOn: value})
            }
            style={{marginBottom: 10}}
            value={this.state.eventCheckBoxRegressionIsOn}
          />
          <Text>{this.state.eventCheckBoxRegressionIsOn ? 'On' : 'Off'}</Text>
        </View>
      </View>
    );
  }
}

let examples = [
  {
    title: 'CheckBoxes can be set to true or false',
    render(): React.Element<any> {
      return <BasicCheckBoxExample />;
    },
  },
  {
    title: 'CheckBoxes can be disabled',
    render(): React.Element<any> {
      return <DisabledCheckBoxExample />;
    },
  },
  {
    title: 'Change events can be detected',
    render(): React.Element<any> {
      return <EventCheckBoxExample />;
    },
  },
  {
    title: 'CheckBoxes are controlled components',
    render(): React.Element<any> {
      return <CheckBox />;
    },
  },
];

exports.title = '<CheckBox>';
exports.displayName = 'CheckBoxExample';
exports.description = 'Native boolean input';
exports.examples = examples;


================================================
FILE: RNTester/ClipboardExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Clipboard, View, Text} = ReactNative;

class ClipboardExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    content: 'Content will appear here',
  };

  _setClipboardContent = async () => {
    Clipboard.setString('Hello World');
    try {
      var content = await Clipboard.getString();
      this.setState({content});
    } catch (e) {
      this.setState({content: e.message});
    }
  };

  render() {
    return (
      <View>
        <Text onPress={this._setClipboardContent} style={{color: 'blue'}}>
          Tap to put "Hello World" in the clipboard
        </Text>
        <Text style={{color: 'red', marginTop: 20}}>{this.state.content}</Text>
      </View>
    );
  }
}

exports.title = 'Clipboard';
exports.description = 'Show Clipboard contents.';
exports.examples = [
  {
    title: 'Clipboard.setString() and getString()',
    render() {
      return <ClipboardExample />;
    },
  },
];


================================================
FILE: RNTester/DatePickerAndroidExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {
  DatePickerAndroid,
  StyleSheet,
  Text,
  TouchableWithoutFeedback,
} = ReactNative;

var RNTesterBlock = require('./RNTesterBlock');
var RNTesterPage = require('./RNTesterPage');

class DatePickerAndroidExample extends React.Component {
  static title = 'DatePickerAndroid';
  static description = 'Standard Android date picker dialog';

  state = {
    presetDate: new Date(2020, 4, 5),
    simpleDate: new Date(2020, 4, 5),
    spinnerDate: new Date(2020, 4, 5),
    calendarDate: new Date(2020, 4, 5),
    defaultDate: new Date(2020, 4, 5),
    allDate: new Date(2020, 4, 5),
    simpleText: 'pick a date',
    spinnerText: 'pick a date',
    calendarText: 'pick a date',
    defaultText: 'pick a date',
    minText: 'pick a date, no earlier than today',
    maxText: 'pick a date, no later than today',
    presetText: 'pick a date, preset to 2020/5/5',
    allText: 'pick a date between 2020/5/1 and 2020/5/10',
  };

  showPicker = async (stateKey, options) => {
    try {
      var newState = {};
      const {action, year, month, day} = await DatePickerAndroid.open(options);
      if (action === DatePickerAndroid.dismissedAction) {
        newState[stateKey + 'Text'] = 'dismissed';
      } else {
        var date = new Date(year, month, day);
        newState[stateKey + 'Text'] = date.toLocaleDateString();
        newState[stateKey + 'Date'] = date;
      }
      this.setState(newState);
    } catch ({code, message}) {
      console.warn(`Error in example '${stateKey}': `, message);
    }
  };

  render() {
    return (
      <RNTesterPage title="DatePickerAndroid">
        <RNTesterBlock title="Simple date picker">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'simple', {
              date: this.state.simpleDate,
            })}>
            <Text style={styles.text}>{this.state.simpleText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
        <RNTesterBlock title="Simple spinner date picker">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'spinner', {
              date: this.state.spinnerDate,
              mode: 'spinner',
            })}>
            <Text style={styles.text}>{this.state.spinnerText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
        <RNTesterBlock title="Simple calendar date picker">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'calendar', {
              date: this.state.calendarDate,
              mode: 'calendar',
            })}>
            <Text style={styles.text}>{this.state.calendarText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
        <RNTesterBlock title="Simple default date picker">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'default', {
              date: this.state.defaultDate,
              mode: 'default',
            })}>
            <Text style={styles.text}>{this.state.defaultText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
        <RNTesterBlock title="Date picker with pre-set date">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'preset', {
              date: this.state.presetDate,
            })}>
            <Text style={styles.text}>{this.state.presetText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
        <RNTesterBlock title="Date picker with minDate">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'min', {
              date: this.state.minDate,
              minDate: new Date(),
            })}>
            <Text style={styles.text}>{this.state.minText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
        <RNTesterBlock title="Date picker with maxDate">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'max', {
              date: this.state.maxDate,
              maxDate: new Date(),
            })}>
            <Text style={styles.text}>{this.state.maxText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
        <RNTesterBlock title="Date picker with all options">
          <TouchableWithoutFeedback
            onPress={this.showPicker.bind(this, 'all', {
              date: this.state.allDate,
              minDate: new Date(2020, 4, 1),
              maxDate: new Date(2020, 4, 10),
            })}>
            <Text style={styles.text}>{this.state.allText}</Text>
          </TouchableWithoutFeedback>
        </RNTesterBlock>
      </RNTesterPage>
    );
  }
}

var styles = StyleSheet.create({
  text: {
    color: 'black',
  },
});

module.exports = DatePickerAndroidExample;


================================================
FILE: RNTester/DatePickerIOSExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {DatePickerIOS, StyleSheet, Text, TextInput, View} = ReactNative;

class DatePickerExample extends React.Component<
  $FlowFixMeProps,
  $FlowFixMeState,
> {
  static defaultProps = {
    date: new Date(),
    timeZoneOffsetInHours: (-1 * new Date().getTimezoneOffset()) / 60,
  };

  state = {
    date: this.props.date,
    timeZoneOffsetInHours: this.props.timeZoneOffsetInHours,
  };

  onDateChange = date => {
    this.setState({date: date});
  };

  onTimezoneChange = event => {
    var offset = parseInt(event.nativeEvent.text, 10);
    if (isNaN(offset)) {
      return;
    }
    this.setState({timeZoneOffsetInHours: offset});
  };

  render() {
    // Ideally, the timezone input would be a picker rather than a
    // text input, but we don't have any pickers yet :(
    return (
      <View>
        <WithLabel label="Value:">
          <Text>
            {this.state.date.toLocaleDateString() +
              ' ' +
              this.state.date.toLocaleTimeString()}
          </Text>
        </WithLabel>
        <WithLabel label="Timezone:">
          <TextInput
            onChange={this.onTimezoneChange}
            style={styles.textinput}
            value={this.state.timeZoneOffsetInHours.toString()}
          />
          <Text> hours from UTC</Text>
        </WithLabel>
        <Heading label="Date + time picker" />
        <DatePickerIOS
          date={this.state.date}
          mode="datetime"
          timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
          onDateChange={this.onDateChange}
        />
        <Heading label="Date picker" />
        <DatePickerIOS
          date={this.state.date}
          mode="date"
          timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
          onDateChange={this.onDateChange}
        />
        <Heading label="Time picker, 10-minute interval" />
        <DatePickerIOS
          date={this.state.date}
          mode="time"
          timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60}
          onDateChange={this.onDateChange}
          minuteInterval={10}
        />
      </View>
    );
  }
}

class WithLabel extends React.Component<$FlowFixMeProps> {
  render() {
    return (
      <View style={styles.labelContainer}>
        <View style={styles.labelView}>
          <Text style={styles.label}>{this.props.label}</Text>
        </View>
        {this.props.children}
      </View>
    );
  }
}

class Heading extends React.Component<$FlowFixMeProps> {
  render() {
    return (
      <View style={styles.headingContainer}>
        <Text style={styles.heading}>{this.props.label}</Text>
      </View>
    );
  }
}

exports.displayName = (undefined: ?string);
exports.title = '<DatePickerIOS>';
exports.description = 'Select dates and times using the native UIDatePicker.';
exports.examples = [
  {
    title: '<DatePickerIOS>',
    render: function(): React.Element<any> {
      return <DatePickerExample />;
    },
  },
];

var styles = StyleSheet.create({
  textinput: {
    height: 26,
    width: 50,
    borderWidth: 0.5,
    borderColor: '#0f0f0f',
    padding: 4,
    fontSize: 13,
  },
  labelContainer: {
    flexDirection: 'row',
    alignItems: 'center',
    marginVertical: 2,
  },
  labelView: {
    marginRight: 10,
    paddingVertical: 2,
  },
  label: {
    fontWeight: '500',
  },
  headingContainer: {
    padding: 4,
    backgroundColor: '#f6f7f8',
  },
  heading: {
    fontWeight: '500',
    fontSize: 14,
  },
});


================================================
FILE: RNTester/DimensionsExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

const React = require('react');
const ReactNative = require('react-native');
const {Dimensions, Text, View} = ReactNative;

class DimensionsSubscription extends React.Component<
  {dim: string},
  {dims: Object},
> {
  state = {
    dims: Dimensions.get(this.props.dim),
  };

  componentDidMount() {
    Dimensions.addEventListener('change', this._handleDimensionsChange);
  }

  componentWillUnmount() {
    Dimensions.removeEventListener('change', this._handleDimensionsChange);
  }

  _handleDimensionsChange = dimensions => {
    this.setState({
      dims: dimensions[this.props.dim],
    });
  };

  render() {
    return (
      <View>
        <Text>{JSON.stringify(this.state.dims)}</Text>
      </View>
    );
  }
}

exports.title = 'Dimensions';
exports.description = 'Dimensions of the viewport';
exports.examples = [
  {
    title: 'window',
    render(): React.Element<any> {
      return <DimensionsSubscription dim="window" />;
    },
  },
  {
    title: 'screen',
    render(): React.Element<any> {
      return <DimensionsSubscription dim="screen" />;
    },
  },
];


================================================
FILE: RNTester/ExampleTypes.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

/* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment
 * suppresses an error when upgrading Flow's support for React. To see the
 * error delete this comment and run Flow. */
import type React from 'react';

export type Example = {
  title: string,
  render: () => ?React.Element<any>,
  description?: string,
  platform?: string,
};

export type ExampleModule = {
  title: string,
  description: string,
  examples: Array<Example>,
};


================================================
FILE: RNTester/FlatListExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

const Alert = require('Alert');
const React = require('react');
const ReactNative = require('react-native');
const {Animated, FlatList, StyleSheet, View} = ReactNative;

const RNTesterPage = require('./RNTesterPage');

const infoLog = require('infoLog');

const {
  FooterComponent,
  HeaderComponent,
  ItemComponent,
  ListEmptyComponent,
  ItemSeparatorComponent,
  PlainInput,
  SeparatorComponent,
  Spindicator,
  genItemData,
  getItemLayout,
  pressItem,
  renderSmallSwitchOption,
} = require('./ListExampleShared');

const AnimatedFlatList = Animated.createAnimatedComponent(FlatList);

const VIEWABILITY_CONFIG = {
  minimumViewTime: 3000,
  viewAreaCoveragePercentThreshold: 100,
  waitForInteraction: true,
};

class FlatListExample extends React.PureComponent<{}, $FlowFixMeState> {
  static title = '<FlatList>';
  static description = 'Performant, scrollable list of data.';

  state = {
    data: genItemData(100),
    debug: false,
    horizontal: false,
    inverted: false,
    filterText: '',
    fixedHeight: true,
    logViewable: false,
    virtualized: true,
    empty: false,
  };

  _onChangeFilterText = filterText => {
    this.setState({filterText});
  };

  _onChangeScrollToIndex = text => {
    this._listRef
      .getNode()
      .scrollToIndex({viewPosition: 0.5, index: Number(text)});
  };

  _scrollPos = new Animated.Value(0);
  _scrollSinkX = Animated.event(
    [{nativeEvent: {contentOffset: {x: this._scrollPos}}}],
    {useNativeDriver: true},
  );
  _scrollSinkY = Animated.event(
    [{nativeEvent: {contentOffset: {y: this._scrollPos}}}],
    {useNativeDriver: true},
  );

  componentDidUpdate() {
    this._listRef.getNode().recordInteraction(); // e.g. flipping logViewable switch
  }

  render() {
    const filterRegex = new RegExp(String(this.state.filterText), 'i');
    const filter = item =>
      filterRegex.test(item.text) || filterRegex.test(item.title);
    const filteredData = this.state.data.filter(filter);
    return (
      <RNTesterPage noSpacer={true} noScroll={true}>
        <View style={styles.container}>
          <View style={styles.searchRow}>
            <View style={styles.options}>
              <PlainInput
                onChangeText={this._onChangeFilterText}
                placeholder="Search..."
                value={this.state.filterText}
              />
              <PlainInput
                onChangeText={this._onChangeScrollToIndex}
                placeholder="scrollToIndex..."
              />
            </View>
            <View style={styles.options}>
              {renderSmallSwitchOption(this, 'virtualized')}
              {renderSmallSwitchOption(this, 'horizontal')}
              {renderSmallSwitchOption(this, 'fixedHeight')}
              {renderSmallSwitchOption(this, 'log')}
              {renderSmallSwitchOption(this, 'inverted')}
              {renderSmallSwitchOption(this, 'empty')}
              {renderSmallSwitchOption(this, 'debug')}
              <Spindicator value={this._scrollPos} />
            </View>
          </View>
          <SeparatorComponent />
          <AnimatedFlatList
            ItemSeparatorComponent={ItemSeparatorComponent}
            ListHeaderComponent={<HeaderComponent />}
            ListFooterComponent={FooterComponent}
            ListEmptyComponent={ListEmptyComponent}
            data={this.state.empty ? [] : filteredData}
            debug={this.state.debug}
            disableVirtualization={!this.state.virtualized}
            getItemLayout={
              this.state.fixedHeight ? this._getItemLayout : undefined
            }
            horizontal={this.state.horizontal}
            inverted={this.state.inverted}
            key={
              (this.state.horizontal ? 'h' : 'v') +
              (this.state.fixedHeight ? 'f' : 'd')
            }
            keyboardShouldPersistTaps="always"
            keyboardDismissMode="on-drag"
            legacyImplementation={false}
            numColumns={1}
            onEndReached={this._onEndReached}
            onRefresh={this._onRefresh}
            onScroll={
              this.state.horizontal ? this._scrollSinkX : this._scrollSinkY
            }
            onViewableItemsChanged={this._onViewableItemsChanged}
            ref={this._captureRef}
            refreshing={false}
            renderItem={this._renderItemComponent}
            contentContainerStyle={styles.list}
            viewabilityConfig={VIEWABILITY_CONFIG}
          />
        </View>
      </RNTesterPage>
    );
  }
  _captureRef = ref => {
    this._listRef = ref;
  };
  _getItemLayout = (data: any, index: number) => {
    return getItemLayout(data, index, this.state.horizontal);
  };
  _onEndReached = () => {
    if (this.state.data.length >= 1000) {
      return;
    }
    this.setState(state => ({
      data: state.data.concat(genItemData(100, state.data.length)),
    }));
  };
  _onRefresh = () => Alert.alert('onRefresh: nothing to refresh :P');
  _renderItemComponent = ({item, separators}) => {
    return (
      <ItemComponent
        item={item}
        horizontal={this.state.horizontal}
        fixedHeight={this.state.fixedHeight}
        onPress={this._pressItem}
        onShowUnderlay={separators.highlight}
        onHideUnderlay={separators.unhighlight}
      />
    );
  };
  // This is called when items change viewability by scrolling into or out of
  // the viewable area.
  _onViewableItemsChanged = (info: {
    changed: Array<{
      key: string,
      isViewable: boolean,
      item: any,
      index: ?number,
      section?: any,
    }>,
  }) => {
    // Impressions can be logged here
    if (this.state.logViewable) {
      infoLog(
        'onViewableItemsChanged: ',
        info.changed.map(v => ({...v, item: '...'})),
      );
    }
  };
  _pressItem = (key: string) => {
    this._listRef.getNode().recordInteraction();
    pressItem(this, key);
  };
  _listRef: AnimatedFlatList;
}

const styles = StyleSheet.create({
  container: {
    backgroundColor: 'rgb(239, 239, 244)',
    flex: 1,
  },
  list: {
    backgroundColor: 'white',
    flexGrow: 1,
  },
  options: {
    flexDirection: 'row',
    flexWrap: 'wrap',
    alignItems: 'center',
  },
  searchRow: {
    paddingHorizontal: 10,
  },
});

module.exports = FlatListExample;


================================================
FILE: RNTester/GeolocationExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {StyleSheet, Text, View} = ReactNative;

exports.framework = 'React';
exports.title = 'Geolocation';
exports.description = 'Examples of using the Geolocation API.';

exports.examples = [
  {
    title: 'navigator.geolocation',
    render: function(): React.Element<any> {
      return <GeolocationExample />;
    },
  },
];

class GeolocationExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    initialPosition: 'unknown',
    lastPosition: 'unknown',
  };

  watchID: ?number = null;

  componentDidMount() {
    navigator.geolocation.getCurrentPosition(
      position => {
        var initialPosition = JSON.stringify(position);
        this.setState({initialPosition});
      },
      error => alert(JSON.stringify(error)),
      {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000},
    );
    this.watchID = navigator.geolocation.watchPosition(position => {
      var lastPosition = JSON.stringify(position);
      this.setState({lastPosition});
    });
  }

  componentWillUnmount() {
    this.watchID != null && navigator.geolocation.clearWatch(this.watchID);
  }

  render() {
    return (
      <View>
        <Text>
          <Text style={styles.title}>Initial position: </Text>
          {this.state.initialPosition}
        </Text>
        <Text>
          <Text style={styles.title}>Current position: </Text>
          {this.state.lastPosition}
        </Text>
      </View>
    );
  }
}

var styles = StyleSheet.create({
  title: {
    fontWeight: '500',
  },
});


================================================
FILE: RNTester/ImageCapInsetsExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');

var nativeImageSource = require('nativeImageSource');
var {Image, StyleSheet, Text, View} = ReactNative;

class ImageCapInsetsExample extends React.Component<{}> {
  render() {
    return (
      <View>
        <View style={styles.background}>
          <Text>capInsets: none</Text>
          <Image
            source={nativeImageSource({
              ios: 'story-background',
              width: 60,
              height: 60,
            })}
            style={styles.storyBackground}
            resizeMode="stretch"
            capInsets={{left: 0, right: 0, bottom: 0, top: 0}}
          />
        </View>
        <View style={[styles.background, {paddingTop: 10}]}>
          <Text>capInsets: 15</Text>
          <Image
            source={nativeImageSource({
              ios: 'story-background',
              width: 60,
              height: 60,
            })}
            style={styles.storyBackground}
            resizeMode="stretch"
            capInsets={{left: 15, right: 15, bottom: 15, top: 15}}
          />
        </View>
      </View>
    );
  }
}

var styles = StyleSheet.create({
  background: {
    backgroundColor: '#F6F6F6',
    justifyContent: 'center',
    alignItems: 'center',
  },
  horizontal: {
    flexDirection: 'row',
  },
  storyBackground: {
    width: 250,
    height: 150,
    borderWidth: 1,
  },
  text: {
    fontSize: 13.5,
  },
});

module.exports = ImageCapInsetsExample;


================================================
FILE: RNTester/ImageEditingExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */


================================================
FILE: RNTester/ImageExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
var {
  ActivityIndicator,
  Image,
  Platform,
  StyleSheet,
  Text,
  View,
  ImageBackground,
} = ReactNative;

var base64Icon =
  'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAQAAACSR7JhAAADtUlEQVR4Ac3YA2Bj6QLH0XPT1Fzbtm29tW3btm3bfLZtv7e2ObZnms7d8Uw098tuetPzrxv8wiISrtVudrG2JXQZ4VOv+qUfmqCGGl1mqLhoA52oZlb0mrjsnhKpgeUNEs91Z0pd1kvihA3ULGVHiQO2narKSHKkEMulm9VgUyE60s1aWoMQUbpZOWE+kaqs4eLEjdIlZTcFZB0ndc1+lhB1lZrIuk5P2aib1NBpZaL+JaOGIt0ls47SKzLC7CqrlGF6RZ09HGoNy1lYl2aRSWL5GuzqWU1KafRdoRp0iOQEiDzgZPnG6DbldcomadViflnl/cL93tOoVbsOLVM2jylvdWjXolWX1hmfZbGR/wjypDjFLSZIRov09BgYmtUqPQPlQrPapecLgTIy0jMgPKtTeob2zWtrGH3xvjUkPCtNg/tm1rjwrMa+mdUkPd3hWbH0jArPGiU9ufCsNNWFZ40wpwn+62/66R2RUtoso1OB34tnLOcy7YB1fUdc9e0q3yru8PGM773vXsuZ5YIZX+5xmHwHGVvlrGPN6ZSiP1smOsMMde40wKv2VmwPPVXNut4sVpUreZiLBHi0qln/VQeI/LTMYXpsJtFiclUN+5HVZazim+Ky+7sAvxWnvjXrJFneVtLWLyPJu9K3cXLWeOlbMTlrIelbMDlrLenrjEQOtIF+fuI9xRp9ZBFp6+b6WT8RrxEpdK64BuvHgDk+vUy+b5hYk6zfyfs051gRoNO1usU12WWRWL73/MMEy9pMi9qIrR4ZpV16Rrvduxazmy1FSvuFXRkqTnE7m2kdb5U8xGjLw/spRr1uTov4uOgQE+0N/DvFrG/Jt7i/FzwxbA9kDanhf2w+t4V97G8lrT7wc08aA2QNUkuTfW/KimT01wdlfK4yEw030VfT0RtZbzjeMprNq8m8tnSTASrTLti64oBNdpmMQm0eEwvfPwRbUBywG5TzjPCsdwk3IeAXjQblLCoXnDVeoAz6SfJNk5TTzytCNZk/POtTSV40NwOFWzw86wNJRpubpXsn60NJFlHeqlYRbslqZm2jnEZ3qcSKgm0kTli3zZVS7y/iivZTweYXJ26Y+RTbV1zh3hYkgyFGSTKPfRVbRqWWVReaxYeSLarYv1Qqsmh1s95S7G+eEWK0f3jYKTbV6bOwepjfhtafsvUsqrQvrGC8YhmnO9cSCk3yuY984F1vesdHYhWJ5FvASlacshUsajFt2mUM9pqzvKGcyNJW0arTKN1GGGzQlH0tXwLDgQTurS8eIQAAAABJRU5ErkJggg==';

var ImageCapInsetsExample = require('./ImageCapInsetsExample');
const IMAGE_PREFETCH_URL =
  'http://origami.design/public/images/bird-logo.png?r=1&t=' + Date.now();
var prefetchTask = Image.prefetch(IMAGE_PREFETCH_URL);

/* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an error
 * found when Flow v0.63 was deployed. To see the error delete this comment and
 * run Flow. */
var NetworkImageCallbackExample = createReactClass({
  displayName: 'NetworkImageCallbackExample',
  getInitialState: function() {
    return {
      events: [],
      startLoadPrefetched: false,
      mountTime: new Date(),
    };
  },

  UNSAFE_componentWillMount() {
    this.setState({mountTime: new Date()});
  },

  render: function() {
    var {mountTime} = this.state;

    return (
      <View>
        <Image
          source={this.props.source}
          style={[styles.base, {overflow: 'visible'}]}
          onLoadStart={() =>
            this._loadEventFired(`✔ onLoadStart (+${new Date() - mountTime}ms)`)
          }
          onLoad={event => {
            // Currently this image source feature is only available on iOS.
            if (event.nativeEvent.source) {
              const url = event.nativeEvent.source.url;
              this._loadEventFired(
                `✔ onLoad (+${new Date() - mountTime}ms) for URL ${url}`,
              );
            } else {
              this._loadEventFired(`✔ onLoad (+${new Date() - mountTime}ms)`);
            }
          }}
          onLoadEnd={() => {
            this._loadEventFired(`✔ onLoadEnd (+${new Date() - mountTime}ms)`);
            this.setState({startLoadPrefetched: true}, () => {
              prefetchTask.then(
                () => {
                  this._loadEventFired(
                    `✔ Prefetch OK (+${new Date() - mountTime}ms)`,
                  );
                },
                error => {
                  this._loadEventFired(
                    `✘ Prefetch failed (+${new Date() - mountTime}ms)`,
                  );
                },
              );
            });
          }}
        />
        {this.state.startLoadPrefetched ? (
          <Image
            source={this.props.prefetchedSource}
            style={[styles.base, {overflow: 'visible'}]}
            onLoadStart={() =>
              this._loadEventFired(
                `✔ (prefetched) onLoadStart (+${new Date() - mountTime}ms)`,
              )
            }
            onLoad={event => {
              // Currently this image source feature is only available on iOS.
              if (event.nativeEvent.source) {
                const url = event.nativeEvent.source.url;
                this._loadEventFired(
                  `✔ (prefetched) onLoad (+${new Date() -
                    mountTime}ms) for URL ${url}`,
                );
              } else {
                this._loadEventFired(
                  `✔ (prefetched) onLoad (+${new Date() - mountTime}ms)`,
                );
              }
            }}
            onLoadEnd={() =>
              this._loadEventFired(
                `✔ (prefetched) onLoadEnd (+${new Date() - mountTime}ms)`,
              )
            }
          />
        ) : null}
        <Text style={{marginTop: 20}}>{this.state.events.join('\n')}</Text>
      </View>
    );
  },

  _loadEventFired(event) {
    this.setState(state => {
      return (state.events = [...state.events, event]);
    });
  },
});

var NetworkImageExample = createReactClass({
  getInitialState: function() {
    return {
      error: false,
      loading: false,
      progress: 0,
    };
  },
  render: function() {
    var loader = this.state.loading ? (
      <View style={styles.progress}>
        <Text>{this.state.progress}%</Text>
        <ActivityIndicator style={{marginLeft: 5}} />
      </View>
    ) : null;
    return this.state.error ? (
      <Text>{this.state.error}</Text>
    ) : (
      <ImageBackground
        source={this.props.source}
        style={[styles.base, {overflow: 'visible'}]}
        onLoadStart={e => this.setState({loading: true})}
        onError={e =>
          this.setState({error: e.nativeEvent.error, loading: false})
        }
        onProgress={e =>
          this.setState({
            progress: Math.round(
              (100 * e.nativeEvent.loaded) / e.nativeEvent.total,
            ),
          })
        }
        onLoad={() => this.setState({loading: false, error: false})}>
        {loader}
      </ImageBackground>
    );
  },
});

var ImageSizeExample = createReactClass({
  getInitialState: function() {
    return {
      width: 0,
      height: 0,
    };
  },
  componentDidMount: function() {
    Image.getSize(this.props.source.uri, (width, height) => {
      this.setState({width, height});
    });
  },
  render: function() {
    return (
      <View style={{flexDirection: 'row'}}>
        <Image
          style={{
            width: 60,
            height: 60,
            backgroundColor: 'transparent',
            marginRight: 10,
          }}
          source={this.props.source}
        />
        <Text>
          Actual dimensions:{'\n'}
          Width: {this.state.width}, Height: {this.state.height}
        </Text>
      </View>
    );
  },
});

var MultipleSourcesExample = createReactClass({
  getInitialState: function() {
    return {
      width: 30,
      height: 30,
    };
  },
  render: function() {
    return (
      <View>
        <View style={{flexDirection: 'row', justifyContent: 'space-between'}}>
          <Text style={styles.touchableText} onPress={this.decreaseImageSize}>
            Decrease image size
          </Text>
          <Text style={styles.touchableText} onPress={this.increaseImageSize}>
            Increase image size
          </Text>
        </View>
        <Text>
          Container image size: {this.state.width}x{this.state.height}{' '}
        </Text>
        <View style={{height: this.state.height, width: this.state.width}}>
          <Image
            style={{flex: 1}}
            source={[
              {
                uri: 'https://facebook.github.io/react-native/img/favicon.png',
                width: 38,
                height: 38,
              },
              {
                uri: 'https://facebook.github.io/react-native/img/favicon.png',
                width: 76,
                height: 76,
              },
              {
                uri:
                  'https://facebook.github.io/react-native/img/opengraph.png',
                width: 400,
                height: 400,
              },
            ]}
          />
        </View>
      </View>
    );
  },
  increaseImageSize: function() {
    if (this.state.width >= 100) {
      return;
    }
    this.setState({
      width: this.state.width + 10,
      height: this.state.height + 10,
    });
  },
  decreaseImageSize: function() {
    if (this.state.width <= 10) {
      return;
    }
    this.setState({
      width: this.state.width - 10,
      height: this.state.height - 10,
    });
  },
});

exports.displayName = (undefined: ?string);
exports.framework = 'React';
exports.title = '<Image>';
exports.description =
  'Base component for displaying different types of images.';

exports.examples = [
  {
    title: 'Plain Network Image',
    description:
      'If the `source` prop `uri` property is prefixed with ' +
      '"http", then it will be downloaded from the network.',
    render: function() {
      return <Image source={fullImage} style={styles.base} />;
    },
  },
  {
    title: 'Plain Static Image',
    description:
      'Static assets should be placed in the source code tree, and ' +
      'required in the same way as JavaScript modules.',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image
            source={require('./uie_thumb_normal.png')}
            style={styles.icon}
          />
          <Image
            source={require('./uie_thumb_selected.png')}
            style={styles.icon}
          />
          <Image
            source={require('./uie_comment_normal.png')}
            style={styles.icon}
          />
          <Image
            source={require('./uie_comment_highlighted.png')}
            style={styles.icon}
          />
        </View>
      );
    },
  },
  {
    title: 'Image Loading Events',
    render: function() {
      return (
        <NetworkImageCallbackExample
          source={{
            uri:
              'http://origami.design/public/images/bird-logo.png?r=1&t=' +
              Date.now(),
          }}
          prefetchedSource={{uri: IMAGE_PREFETCH_URL}}
        />
      );
    },
  },
  {
    title: 'Error Handler',
    render: function() {
      return (
        <NetworkImageExample
          source={{
            uri: 'https://TYPO_ERROR_facebook.github.io/react/logo-og.png',
          }}
        />
      );
    },
    platform: 'ios',
  },
  {
    title: 'Image Download Progress',
    render: function() {
      return (
        <NetworkImageExample
          source={{
            uri: 'http://origami.design/public/images/bird-logo.png?r=1',
          }}
        />
      );
    },
    platform: 'ios',
  },
  {
    title: 'defaultSource',
    description: 'Show a placeholder image when a network image is loading',
    render: function() {
      return (
        <Image
          defaultSource={require('./bunny.png')}
          source={{
            uri: 'https://facebook.github.io/origami/public/images/birds.jpg',
          }}
          style={styles.base}
        />
      );
    },
    platform: 'ios',
  },
  {
    title: 'Cache Policy',
    description:
      'First image has never been loaded before and is instructed not to load unless in cache.' +
      'Placeholder image from above will stay. Second image is the same but forced to load regardless of' +
      ' local cache state.',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image
            defaultSource={require('./bunny.png')}
            source={{
              uri: smallImage.uri + '?cacheBust=notinCache' + Date.now(),
              cache: 'only-if-cached',
            }}
            style={styles.base}
          />
          <Image
            defaultSource={require('./bunny.png')}
            source={{
              uri: smallImage.uri + '?cacheBust=notinCache' + Date.now(),
              cache: 'reload',
            }}
            style={styles.base}
          />
        </View>
      );
    },
    platform: 'ios',
  },
  {
    title: 'Border Color',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image
            source={smallImage}
            style={[
              styles.base,
              styles.background,
              {borderWidth: 3, borderColor: '#f099f0'},
            ]}
          />
        </View>
      );
    },
  },
  {
    title: 'Border Width',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image
            source={smallImage}
            style={[
              styles.base,
              styles.background,
              {borderWidth: 5, borderColor: '#f099f0'},
            ]}
          />
        </View>
      );
    },
  },
  {
    title: 'Border Radius',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image style={[styles.base, {borderRadius: 5}]} source={fullImage} />
          <Image
            style={[styles.base, styles.leftMargin, {borderRadius: 19}]}
            source={fullImage}
          />
        </View>
      );
    },
  },
  {
    title: 'Background Color',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image source={smallImage} style={styles.base} />
          <Image
            style={[
              styles.base,
              styles.leftMargin,
              {backgroundColor: 'rgba(0, 0, 100, 0.25)'},
            ]}
            source={smallImage}
          />
          <Image
            style={[styles.base, styles.leftMargin, {backgroundColor: 'red'}]}
            source={smallImage}
          />
          <Image
            style={[styles.base, styles.leftMargin, {backgroundColor: 'black'}]}
            source={smallImage}
          />
        </View>
      );
    },
  },
  {
    title: 'Opacity',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image style={[styles.base, {opacity: 1}]} source={fullImage} />
          <Image
            style={[styles.base, styles.leftMargin, {opacity: 0.8}]}
            source={fullImage}
          />
          <Image
            style={[styles.base, styles.leftMargin, {opacity: 0.6}]}
            source={fullImage}
          />
          <Image
            style={[styles.base, styles.leftMargin, {opacity: 0.4}]}
            source={fullImage}
          />
          <Image
            style={[styles.base, styles.leftMargin, {opacity: 0.2}]}
            source={fullImage}
          />
          <Image
            style={[styles.base, styles.leftMargin, {opacity: 0}]}
            source={fullImage}
          />
        </View>
      );
    },
  },
  {
    title: 'Nesting content inside <Image> component',
    render: function() {
      return (
        <View style={{width: 60, height: 60}}>
          <Image
            style={{...StyleSheet.absoluteFillObject}}
            source={fullImage}
          />
          <Text style={styles.nestedText}>React</Text>
        </View>
      );
    },
  },
  {
    title: 'Nesting content inside <ImageBackground> component',
    render: function() {
      return (
        <ImageBackground
          style={{width: 60, height: 60, backgroundColor: 'transparent'}}
          source={fullImage}>
          <Text style={styles.nestedText}>React</Text>
        </ImageBackground>
      );
    },
  },
  {
    title: 'Tint Color',
    description:
      'The `tintColor` style prop changes all the non-alpha ' +
      'pixels to the tint color.',
    render: function() {
      return (
        <View>
          <View style={styles.horizontal}>
            <Image
              source={require('./uie_thumb_normal.png')}
              style={[styles.icon, {borderRadius: 5, tintColor: '#5ac8fa'}]}
            />
            <Image
              source={require('./uie_thumb_normal.png')}
              style={[
                styles.icon,
                styles.leftMargin,
                {borderRadius: 5, tintColor: '#4cd964'},
              ]}
            />
            <Image
              source={require('./uie_thumb_normal.png')}
              style={[
                styles.icon,
                styles.leftMargin,
                {borderRadius: 5, tintColor: '#ff2d55'},
              ]}
            />
            <Image
              source={require('./uie_thumb_normal.png')}
              style={[
                styles.icon,
                styles.leftMargin,
                {borderRadius: 5, tintColor: '#8e8e93'},
              ]}
            />
          </View>
          <Text style={styles.sectionText}>
            It also works with downloaded images:
          </Text>
          <View style={styles.horizontal}>
            <Image
              source={smallImage}
              style={[styles.base, {borderRadius: 5, tintColor: '#5ac8fa'}]}
            />
            <Image
              source={smallImage}
              style={[
                styles.base,
                styles.leftMargin,
                {borderRadius: 5, tintColor: '#4cd964'},
              ]}
            />
            <Image
              source={smallImage}
              style={[
                styles.base,
                styles.leftMargin,
                {borderRadius: 5, tintColor: '#ff2d55'},
              ]}
            />
            <Image
              source={smallImage}
              style={[
                styles.base,
                styles.leftMargin,
                {borderRadius: 5, tintColor: '#8e8e93'},
              ]}
            />
          </View>
        </View>
      );
    },
  },
  {
    title: 'Resize Mode',
    description:
      'The `resizeMode` style prop controls how the image is ' +
      'rendered within the frame.',
    render: function() {
      return (
        <View>
          {[smallImage, fullImage].map((image, index) => {
            return (
              <View key={index}>
                <View style={styles.horizontal}>
                  <View>
                    <Text style={[styles.resizeModeText]}>Contain</Text>
                    <Image
                      style={styles.resizeMode}
                      resizeMode="contain"
                      source={image}
                    />
                  </View>
                  <View style={styles.leftMargin}>
                    <Text style={[styles.resizeModeText]}>Cover</Text>
                    <Image
                      style={styles.resizeMode}
                      resizeMode="cover"
                      source={image}
                    />
                  </View>
                </View>
                <View style={styles.horizontal}>
                  <View>
                    <Text style={[styles.resizeModeText]}>Stretch</Text>
                    <Image
                      style={styles.resizeMode}
                      resizeMode="stretch"
                      source={image}
                    />
                  </View>
                  <View style={styles.leftMargin}>
                    <Text style={[styles.resizeModeText]}>Repeat</Text>
                    <Image
                      style={styles.resizeMode}
                      resizeMode="repeat"
                      source={image}
                    />
                  </View>
                  <View style={styles.leftMargin}>
                    <Text style={[styles.resizeModeText]}>Center</Text>
                    <Image
                      style={styles.resizeMode}
                      resizeMode="center"
                      source={image}
                    />
                  </View>
                </View>
              </View>
            );
          })}
        </View>
      );
    },
  },
  {
    title: 'Animated GIF',
    render: function() {
      return (
        <Image
          style={styles.gif}
          source={{
            uri:
              'https://38.media.tumblr.com/9e9bd08c6e2d10561dd1fb4197df4c4e/tumblr_mfqekpMktw1rn90umo1_500.gif',
          }}
        />
      );
    },
    platform: 'ios',
  },
  {
    title: 'Base64 image',
    render: function() {
      return (
        <Image style={styles.base64} source={{uri: base64Icon, scale: 3}} />
      );
    },
    platform: 'ios',
  },
  {
    title: 'Cap Insets',
    description:
      'When the image is resized, the corners of the size specified ' +
      'by capInsets will stay a fixed size, but the center content and ' +
      'borders of the image will be stretched. This is useful for creating ' +
      'resizable rounded buttons, shadows, and other resizable assets.',
    render: function() {
      return <ImageCapInsetsExample />;
    },
    platform: 'ios',
  },
  {
    title: 'Image Size',
    render: function() {
      return <ImageSizeExample source={fullImage} />;
    },
  },
  {
    title: 'MultipleSourcesExample',
    description:
      'The `source` prop allows passing in an array of uris, so that native to choose which image ' +
      'to diplay based on the size of the of the target image',
    render: function() {
      return <MultipleSourcesExample />;
    },
  },
  {
    title: 'Legacy local image',
    description:
      'Images shipped with the native bundle, but not managed ' +
      'by the JS packager',
    render: function() {
      return <Image source={{uri: 'legacy_image', width: 120, height: 120}} />;
    },
  },
  {
    title: 'Bundled images',
    description: 'Images shipped in a separate native bundle',
    render: function() {
      return (
        <View style={{flexDirection: 'row'}}>
          <Image
            source={{
              uri: 'ImageInBundle',
              bundle: 'RNTesterBundle',
              width: 100,
              height: 100,
            }}
            style={{borderColor: 'yellow', borderWidth: 4}}
          />
          <Image
            source={{
              uri: 'ImageInAssetCatalog',
              bundle: 'RNTesterBundle',
              width: 100,
              height: 100,
            }}
            style={{marginLeft: 10, borderColor: 'blue', borderWidth: 4}}
          />
        </View>
      );
    },
    platform: 'ios',
  },
  {
    title: 'Blur Radius',
    render: function() {
      return (
        <View style={styles.horizontal}>
          <Image style={[styles.base]} source={fullImage} blurRadius={0} />
          <Image
            style={[styles.base, styles.leftMargin]}
            source={fullImage}
            blurRadius={5}
          />
          <Image
            style={[styles.base, styles.leftMargin]}
            source={fullImage}
            blurRadius={10}
          />
          <Image
            style={[styles.base, styles.leftMargin]}
            source={fullImage}
            blurRadius={15}
          />
          <Image
            style={[styles.base, styles.leftMargin]}
            source={fullImage}
            blurRadius={20}
          />
          <Image
            style={[styles.base, styles.leftMargin]}
            source={fullImage}
            blurRadius={25}
          />
        </View>
      );
    },
  },
];

var fullImage = {
  uri: 'https://facebook.github.io/react-native/img/opengraph.png',
};
var smallImage = {
  uri: 'https://facebook.github.io/react-native/img/favicon.png',
};

var styles = StyleSheet.create({
  base: {
    width: 38,
    height: 38,
  },
  progress: {
    flex: 1,
    alignItems: 'center',
    flexDirection: 'row',
    width: 100,
  },
  leftMargin: {
    marginLeft: 10,
  },
  background: {
    backgroundColor: '#222222',
  },
  sectionText: {
    marginVertical: 6,
  },
  nestedText: {
    marginLeft: 12,
    marginTop: 20,
    backgroundColor: 'transparent',
    color: 'white',
  },
  resizeMode: {
    width: 90,
    height: 60,
    borderWidth: 0.5,
    borderColor: 'black',
  },
  resizeModeText: {
    fontSize: 11,
    marginBottom: 3,
  },
  icon: {
    width: 15,
    height: 15,
  },
  horizontal: {
    flexDirection: 'row',
  },
  gif: {
    flex: 1,
    height: 200,
  },
  base64: {
    flex: 1,
    height: 50,
    resizeMode: 'contain',
  },
  touchableText: {
    fontWeight: '500',
    color: 'blue',
  },
});


================================================
FILE: RNTester/InputAccessoryViewExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 * @format
 */

'use strict';

const React = require('React');
const ReactNative = require('react-native');
const {
  Alert,
  Button,
  InputAccessoryView,
  ScrollView,
  StyleSheet,
  Text,
  TextInput,
  View,
} = ReactNative;

class Message extends React.PureComponent<*> {
  render() {
    return (
      <View style={styles.textBubbleBackground}>
        <Text style={styles.text}>Text Message</Text>
      </View>
    );
  }
}

class TextInputBar extends React.PureComponent<*, *> {
  state = {text: ''};

  render() {
    return (
      <View style={styles.textInputContainer}>
        <TextInput
          style={styles.textInput}
          onChangeText={text => {
            this.setState({text});
          }}
          value={this.state.text}
          placeholder={'Type a message...'}
        />
        <Button
          onPress={() => {
            Alert.alert('You tapped the button!');
          }}
          title="Send"
        />
      </View>
    );
  }
}

class InputAccessoryViewExample extends React.Component<*> {
  static title = '<InputAccessoryView>';
  static description =
    'Example showing how to use an InputAccessoryView to build an iMessage-like sticky text input';

  render() {
    return (
      <View>
        <ScrollView keyboardDismissMode="interactive">
          {Array(15)
            .fill()
            .map((_, i) => <Message key={i} />)}
        </ScrollView>
        <InputAccessoryView backgroundColor="#fffffff7">
          <TextInputBar />
        </InputAccessoryView>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  textInputContainer: {
    flexDirection: 'row',
  },
  textInput: {
    flex: 1,
    paddingLeft: 10,
  },
  text: {
    padding: 10,
    color: 'white',
  },
  textBubbleBackground: {
    backgroundColor: '#2f7bf6',
    borderRadius: 20,
    width: 110,
    margin: 20,
  },
});

module.exports = InputAccessoryViewExample;


================================================
FILE: RNTester/KeyboardAvoidingViewExample.js
================================================
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

'use strict';

const React = require('React');
const ReactNative = require('react-native');
const {
  KeyboardAvoidingView,
  Modal,
  SegmentedControlIOS,
  StyleSheet,
  Text,
  TextInput,
  TouchableHighlight,
  View,
} = ReactNative;

const RNTesterBlock = require('./RNTesterBlock');
const RNTesterPage = require('./RNTesterPage');

class KeyboardAvoidingViewExample extends React.Component {
  static title = '<KeyboardAvoidingView>';
  static description =
    'Base component for views that automatically adjust their height or position to move out of the way of the keyboard.';

  state = {
    behavior: 'padding',
    modalOpen: false,
  };

  onSegmentChange = (segment: String) => {
    this.setState({behavior: segment.toLowerCase()});
  };

  renderExample = () => {
    return (
      <View style={styles.outerContainer}>
        <Modal animationType="fade" visible={this.state.modalOpen}>
          <KeyboardAvoidingView
            behavior={this.state.behavior}
            style={styles.container}>
            <SegmentedControlIOS
              onValueChange={this.onSegmentChange}
              selectedIndex={this.state.behavior === 'padding' ? 0 : 1}
              style={styles.segment}
              values={['Padding', 'Position']}
            />
            <TextInput placeholder="<TextInput />" style={styles.textInput} />
          </KeyboardAvoidingView>
          <TouchableHighlight
            onPress={() => this.setState({modalOpen: false})}
            style={styles.closeButton}>
            <Text>Close</Text>
          </TouchableHighlight>
        </Modal>

        <TouchableHighlight onPress={() => this.setState({modalOpen: true})}>
          <Text>Open Example</Text>
        </TouchableHighlight>
      </View>
    );
  };

  render() {
    return (
      <RNTesterPage title="Keyboard Avoiding View">
        <RNTesterBlock title="Keyboard-avoiding views move out of the way of the keyboard.">
          {this.renderExample()}
        </RNTesterBlock>
      </RNTesterPage>
    );
  }
}

const styles = StyleSheet.create({
  outerContainer: {
    flex: 1,
  },
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingHorizontal: 20,
    paddingTop: 20,
  },
  textInput: {
    borderRadius: 5,
    borderWidth: 1,
    height: 44,
    paddingHorizontal: 10,
  },
  segment: {
    marginBottom: 10,
  },
  closeButton: {
    position: 'absolute',
    top: 30,
    left: 10,
  },
});

module.exports = KeyboardAvoidingViewExample;


================================================
FILE: RNTester/LayoutAnimationExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

const React = require('react');
const ReactNative = require('react-native');
const {LayoutAnimation, StyleSheet, Text, View, TouchableOpacity} = ReactNative;

class AddRemoveExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    views: [],
  };

  UNSAFE_componentWillUpdate() {
    LayoutAnimation.easeInEaseOut();
  }

  _onPressAddView = () => {
    this.setState(state => ({views: [...state.views, {}]}));
  };

  _onPressRemoveView = () => {
    this.setState(state => ({views: state.views.slice(0, -1)}));
  };

  render() {
    const views = this.state.views.map((view, i) => (
      <View key={i} style={styles.view}>
        <Text>{i}</Text>
      </View>
    ));
    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={this._onPressAddView}>
          <View style={styles.button}>
            <Text>Add view</Text>
          </View>
        </TouchableOpacity>
        <TouchableOpacity onPress={this._onPressRemoveView}>
          <View style={styles.button}>
            <Text>Remove view</Text>
          </View>
        </TouchableOpacity>
        <View style={styles.viewContainer}>{views}</View>
      </View>
    );
  }
}

const GreenSquare = () => (
  <View style={styles.greenSquare}>
    <Text>Green square</Text>
  </View>
);

const BlueSquare = () => (
  <View style={styles.blueSquare}>
    <Text>Blue square</Text>
  </View>
);

class CrossFadeExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    toggled: false,
  };

  _onPressToggle = () => {
    LayoutAnimation.easeInEaseOut();
    this.setState(state => ({toggled: !state.toggled}));
  };

  render() {
    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={this._onPressToggle}>
          <View style={styles.button}>
            <Text>Toggle</Text>
          </View>
        </TouchableOpacity>
        <View style={styles.viewContainer}>
          {this.state.toggled ? <GreenSquare /> : <BlueSquare />}
        </View>
      </View>
    );
  }
}

class LayoutUpdateExample extends React.Component<{}, $FlowFixMeState> {
  state = {
    width: 200,
    height: 100,
  };

  timeout = null;

  componentWillUnmount() {
    this._clearTimeout();
  }

  _clearTimeout = () => {
    if (this.timeout !== null) {
      clearTimeout(this.timeout);
      this.timeout = null;
    }
  };

  _onPressToggle = () => {
    this._clearTimeout();
    this.setState({width: 150});

    LayoutAnimation.configureNext({
      duration: 1000,
      update: {
        type: LayoutAnimation.Types.linear,
      },
    });

    this.timeout = setTimeout(() => this.setState({width: 100}), 500);
  };

  render() {
    const {width, height} = this.state;

    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={this._onPressToggle}>
          <View style={styles.button}>
            <Text>Make box square</Text>
          </View>
        </TouchableOpacity>
        <View style={[styles.view, {width, height}]}>
          <Text>
            {width}x{height}
          </Text>
        </View>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  button: {
    borderRadius: 5,
    backgroundColor: '#eeeeee',
    padding: 10,
    marginBottom: 10,
  },
  buttonText: {
    fontSize: 16,
  },
  viewContainer: {
    flex: 1,
    flexDirection: 'row',
    flexWrap: 'wrap',
  },
  view: {
    height: 54,
    width: 54,
    backgroundColor: 'red',
    margin: 8,
    alignItems: 'center',
    justifyContent: 'center',
  },
  greenSquare: {
    width: 150,
    height: 150,
    backgroundColor: 'green',
    alignItems: 'center',
    justifyContent: 'center',
  },
  blueSquare: {
    width: 150,
    height: 150,
    backgroundColor: 'blue',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

exports.title = 'Layout Animation';
exports.description = 'Layout animation';
exports.examples = [
  {
    title: 'Add and remove views',
    render(): React.Element<any> {
      return <AddRemoveExample />;
    },
  },
  {
    title: 'Cross fade views',
    render(): React.Element<any> {
      return <CrossFadeExample />;
    },
  },
  {
    title: 'Layout update during animation',
    render(): React.Element<any> {
      return <LayoutUpdateExample />;
    },
  },
];


================================================
FILE: RNTester/LayoutEventsExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {Image, LayoutAnimation, StyleSheet, Text, View} = ReactNative;

import type {ViewLayout, ViewLayoutEvent} from 'ViewPropTypes';

type State = {
  containerStyle?: {width: number},
  extraText?: string,
  imageLayout?: ViewLayout,
  textLayout?: ViewLayout,
  viewLayout?: ViewLayout,
  viewStyle: {margin: number},
};

class LayoutEventExample extends React.Component<{}, State> {
  state: State = {
    viewStyle: {
      margin: 20,
    },
  };

  animateViewLayout = () => {
    LayoutAnimation.configureNext(LayoutAnimation.Presets.spring, () => {
      console.log('layout animation done.');
      this.addWrapText();
    });
    this.setState({
      viewStyle: {
        margin: this.state.viewStyle.margin > 20 ? 20 : 60,
      },
    });
  };

  addWrapText = () => {
    this.setState(
      {extraText: '  And a bunch more text to wrap around a few lines.'},
      this.changeContainer,
    );
  };

  changeContainer = () => {
    this.setState({containerStyle: {width: 280}});
  };

  onViewLayout = (e: ViewLayoutEvent) => {
    console.log('received view layout event\n', e.nativeEvent);
    this.setState({viewLayout: e.nativeEvent.layout});
  };

  onTextLayout = (e: ViewLayoutEvent) => {
    console.log('received text layout event\n', e.nativeEvent);
    this.setState({textLayout: e.nativeEvent.layout});
  };

  onImageLayout = (e: ViewLayoutEvent) => {
    console.log('received image layout event\n', e.nativeEvent);
    this.setState({imageLayout: e.nativeEvent.layout});
  };

  render() {
    var viewStyle = [styles.view, this.state.viewStyle];
    var textLayout = this.state.textLayout || {width: '?', height: '?'};
    var imageLayout = this.state.imageLayout || {x: '?', y: '?'};
    return (
      <View style={this.state.containerStyle}>
        <Text>
          layout events are called on mount and whenever layout is recalculated.
          Note that the layout event will typically be received{' '}
          <Text style={styles.italicText}>before</Text> the layout has updated
          on screen, especially when using layout animations.{'  '}
          <Text style={styles.pressText} onPress={this.animateViewLayout}>
            Press here to change layout.
          </Text>
        </Text>
        <View ref="view" onLayout={this.onViewLayout} style={viewStyle}>
          <Image
            ref="img"
            onLayout={this.onImageLayout}
            style={styles.image}
            source={{
              uri:
                'https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-prn1/t39.1997/p128x128/851561_767334496626293_1958532586_n.png',
            }}
          />
          <Text>
            ViewLayout:{' '}
            {JSON.stringify(this.state.viewLayout, null, '  ') + '\n\n'}
          </Text>
          <Text ref="txt" onLayout={this.onTextLayout} style={styles.text}>
            A simple piece of text.{this.state.extraText}
          </Text>
          <Text>
            {'\n'}
            Text w/h: {textLayout.width}/{textLayout.height + '\n'}
            Image x/y: {imageLayout.x}/{imageLayout.y}
          </Text>
        </View>
      </View>
    );
  }
}

var styles = StyleSheet.create({
  view: {
    padding: 12,
    borderColor: 'black',
    borderWidth: 0.5,
    backgroundColor: 'transparent',
  },
  text: {
    alignSelf: 'flex-start',
    borderColor: 'rgba(0, 0, 255, 0.2)',
    borderWidth: 0.5,
  },
  image: {
    width: 50,
    height: 50,
    marginBottom: 10,
    alignSelf: 'center',
  },
  pressText: {
    fontWeight: 'bold',
  },
  italicText: {
    fontStyle: 'italic',
  },
});

exports.title = 'Layout Events';
exports.description =
  'Examples that show how Layout events can be used to ' +
  'measure view size and position.';
exports.examples = [
  {
    title: 'LayoutEventExample',
    render: function(): React.Element<any> {
      return <LayoutEventExample />;
    },
  },
];


================================================
FILE: RNTester/LayoutExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var ReactNative = require('react-native');
var {StyleSheet, Text, View} = ReactNative;

var RNTesterBlock = require('./RNTesterBlock');
var RNTesterPage = require('./RNTesterPage');

class Circle extends React.Component<$FlowFixMeProps> {
  render() {
    var size = this.props.size || 20;
    var backgroundColor = this.props.bgColor || '#527fe4';
    return (
      <View
        style={{
          borderRadius: size / 2,
          backgroundColor: backgroundColor,
          width: size,
          height: size,
          margin: 1,
        }}
      />
    );
  }
}

class CircleBlock extends React.Component<$FlowFixMeProps> {
  render() {
    var circleStyle = {
      flexDirection: 'row',
      backgroundColor: '#f6f7f8',
      borderWidth: 0.5,
      borderColor: '#d6d7da',
      marginBottom: 2,
    };
    return (
      <View style={[circleStyle, this.props.style]}>{this.props.children}</View>
    );
  }
}

class LayoutExample extends React.Component<$FlowFixMeProps> {
  static title = 'Layout - Flexbox';
  static description = 'Examples of using the flexbox API to layout views.';
  static displayName = 'LayoutExample';

  render() {
    var fiveColoredCircles = [
      <Circle bgColor="#527fe4" key="blue" />,
      <Circle bgColor="#D443E3" key="violet" />,
      <Circle bgColor="#FF9049" key="orange" />,
      <Circle bgColor="#FFE649" key="yellow" />,
      <Circle bgColor="#7FE040" key="green" />,
    ];

    return (
      <RNTesterPage title={this.props.navigator ? null : 'Layout'}>
        <RNTesterBlock title="Flex Direction">
          <Text>row</Text>
          <CircleBlock style={{flexDirection: 'row'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <Text>row-reverse</Text>
          <CircleBlock style={{flexDirection: 'row-reverse'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <Text>column</Text>
          <CircleBlock style={{flexDirection: 'column'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <Text>column-reverse</Text>
          <CircleBlock style={{flexDirection: 'column-reverse'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <View
            style={[
              styles.overlay,
              {position: 'absolute', top: 15, left: 160},
            ]}>
            <Text>{'top: 15, left: 160'}</Text>
          </View>
        </RNTesterBlock>

        <RNTesterBlock title="Justify Content - Main Direction">
          <Text>flex-start</Text>
          <CircleBlock style={{justifyContent: 'flex-start'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <Text>center</Text>
          <CircleBlock style={{justifyContent: 'center'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <Text>flex-end</Text>
          <CircleBlock style={{justifyContent: 'flex-end'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <Text>space-between</Text>
          <CircleBlock style={{justifyContent: 'space-between'}}>
            {fiveColoredCircles}
          </CircleBlock>
          <Text>space-around</Text>
          <CircleBlock style={{justifyContent: 'space-around'}}>
            {fiveColoredCircles}
          </CircleBlock>
        </RNTesterBlock>
        <RNTesterBlock title="Align Items - Other Direction">
          <Text>flex-start</Text>
          <CircleBlock style={{alignItems: 'flex-start', height: 30}}>
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={8} />
          </CircleBlock>
          <Text>center</Text>
          <CircleBlock style={{alignItems: 'center', height: 30}}>
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={8} />
          </CircleBlock>
          <Text>flex-end</Text>
          <CircleBlock style={{alignItems: 'flex-end', height: 30}}>
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={10} />
            <Circle size={20} />
            <Circle size={17} />
            <Circle size={12} />
            <Circle size={15} />
            <Circle size={8} />
          </CircleBlock>
        </RNTesterBlock>
        <RNTesterBlock title="Flex Wrap">
          <CircleBlock style={{flexWrap: 'wrap'}}>
            {'oooooooooooooooo'.split('').map((char, i) => <Circle key={i} />)}
          </CircleBlock>
        </RNTesterBlock>
      </RNTesterPage>
    );
  }
}

var styles = StyleSheet.create({
  overlay: {
    backgroundColor: '#aaccff',
    borderRadius: 10,
    borderWidth: 0.5,
    opacity: 0.5,
    padding: 5,
  },
});

module.exports = LayoutExample;


================================================
FILE: RNTester/LinkingExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 */

'use strict';

var React = require('react');
var PropTypes = require('prop-types');
var ReactNative = require('react-native');
var {Linking, StyleSheet, Text, TouchableOpacity, View} = ReactNative;
var RNTesterBlock = require('./RNTesterBlock');

class OpenURLButton extends React.Component {
  static propTypes = {
    url: PropTypes.string,
  };

  handleClick = () => {
    Linking.canOpenURL(this.props.url).then(supported => {
      if (supported) {
        Linking.openURL(this.props.url);
      } else {
        console.log("Don't know how to open URI: " + this.props.url);
      }
    });
  };

  render() {
    return (
      <TouchableOpacity onPress={this.handleClick}>
        <View style={styles.button}>
          <Text style={styles.text}>Open {this.props.url}</Text>
        </View>
      </TouchableOpacity>
    );
  }
}

class IntentAndroidExample extends React.Component {
  static title = 'Linking';
  static description = 'Shows how to use Linking to open URLs.';

  render() {
    return (
      <RNTesterBlock title="Open external URLs">
        <OpenURLButton url={'https://www.facebook.com'} />
        <OpenURLButton url={'http://www.facebook.com'} />
        <OpenURLButton url={'http://facebook.com'} />
        <OpenURLButton url={'fb://notifications'} />
        <OpenURLButton url={'geo:37.484847,-122.148386'} />
        <OpenURLButton url={'tel:9876543210'} />
      </RNTesterBlock>
    );
  }
}

var styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: 'white',
    padding: 10,
    paddingTop: 30,
  },
  button: {
    padding: 10,
    backgroundColor: '#3B5998',
    marginBottom: 10,
  },
  text: {
    color: 'white',
  },
});

module.exports = IntentAndroidExample;


================================================
FILE: RNTester/ListExampleShared.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

const React = require('react');
const ReactNative = require('react-native');
const {
  Animated,
  Image,
  Platform,
  TouchableHighlight,
  StyleSheet,
  Switch,
  Text,
  TextInput,
  View,
} = ReactNative;

type Item = {
  title: string,
  text: string,
  key: string,
  pressed: boolean,
  noImage?: ?boolean,
};

function genItemData(count: number, start: number = 0): Array<Item> {
  const dataBlob = [];
  for (let ii = start; ii < count + start; ii++) {
    const itemHash = Math.abs(hashCode('Item ' + ii));
    dataBlob.push({
      title: 'Item ' + ii,
      text: LOREM_IPSUM.substr(0, (itemHash % 301) + 20),
      key: String(ii),
      pressed: false,
    });
  }
  return dataBlob;
}

const HORIZ_WIDTH = 200;
const ITEM_HEIGHT = 72;

class ItemComponent extends React.PureComponent<{
  fixedHeight?: ?boolean,
  horizontal?: ?boolean,
  item: Item,
  onPress: (key: string) => void,
  onShowUnderlay?: () => void,
  onHideUnderlay?: () => void,
}> {
  _onPress = () => {
    this.props.onPress(this.props.item.key);
  };
  render() {
    const {fixedHeight, horizontal, item} = this.props;
    const itemHash = Math.abs(hashCode(item.title));
    const imgSource = THUMB_URLS[itemHash % THUMB_URLS.length];
    return (
      <TouchableHighlight
        onPress={this._onPress}
        onShowUnderlay={this.props.onShowUnderlay}
        onHideUnderlay={this.props.onHideUnderlay}
        tvParallaxProperties={{
          pressMagnification: 1.1,
        }}
        style={horizontal ? styles.horizItem : styles.item}>
        <View
          style={[
            styles.row,
            horizontal && {width: HORIZ_WIDTH},
            fixedHeight && {height: ITEM_HEIGHT},
          ]}>
          {!item.noImage && <Image style={styles.thumb} source={imgSource} />}
          <Text
            style={styles.text}
            numberOfLines={horizontal || fixedHeight ? 3 : undefined}>
            {item.title} - {item.text}
          </Text>
        </View>
      </TouchableHighlight>
    );
  }
}

const renderStackedItem = ({item}: {item: Item}) => {
  const itemHash = Math.abs(hashCode(item.title));
  const imgSource = THUMB_URLS[itemHash % THUMB_URLS.length];
  return (
    <View style={styles.stacked}>
      <Text style={styles.stackedText}>
        {item.title} - {item.text}
      </Text>
      <Image style={styles.thumb} source={imgSource} />
    </View>
  );
};

class FooterComponent extends React.PureComponent<{}> {
  render() {
    return (
      <View style={styles.headerFooterContainer}>
        <SeparatorComponent />
        <View style={styles.headerFooter}>
          <Text>LIST FOOTER</Text>
        </View>
      </View>
    );
  }
}

class HeaderComponent extends React.PureComponent<{}> {
  render() {
    return (
      <View style={styles.headerFooterContainer}>
        <View style={styles.headerFooter}>
          <Text>LIST HEADER</Text>
        </View>
        <SeparatorComponent />
      </View>
    );
  }
}

class ListEmptyComponent extends React.PureComponent<{}> {
  render() {
    return (
      <View style={styles.listEmpty}>
        <Text>The list is empty :o</Text>
      </View>
    );
  }
}

class SeparatorComponent extends React.PureComponent<{}> {
  render() {
    return <View style={styles.separator} />;
  }
}

class ItemSeparatorComponent extends React.PureComponent<$FlowFixMeProps> {
  render() {
    const style = this.props.highlighted
      ? [
          styles.itemSeparator,
          {marginLeft: 0, backgroundColor: 'rgb(217, 217, 217)'},
        ]
      : styles.itemSeparator;
    return <View style={style} />;
  }
}

class Spindicator extends React.PureComponent<$FlowFixMeProps> {
  render() {
    return (
      <Animated.View
        style={[
          styles.spindicator,
          {
            transform: [
              {
                rotate: this.props.value.interpolate({
                  inputRange: [0, 5000],
                  outputRange: ['0deg', '360deg'],
                  extrapolate: 'extend',
                }),
              },
            ],
          },
        ]}
      />
    );
  }
}

const THUMB_URLS = [
  require('./Thumbnails/like.png'),
  require('./Thumbnails/dislike.png'),
  require('./Thumbnails/call.png'),
  require('./Thumbnails/fist.png'),
  require('./Thumbnails/bandaged.png'),
  require('./Thumbnails/flowers.png'),
  require('./Thumbnails/heart.png'),
  require('./Thumbnails/liking.png'),
  require('./Thumbnails/party.png'),
  require('./Thumbnails/poke.png'),
  require('./Thumbnails/superlike.png'),
  require('./Thumbnails/victory.png'),
];

const LOREM_IPSUM =
  'Lorem ipsum dolor sit amet, ius ad pertinax oportere accommodare, an vix \
civibus corrumpit referrentur. Te nam case ludus inciderint, te mea facilisi adipiscing. Sea id \
integre luptatum. In tota sale consequuntur nec. Erat ocurreret mei ei. Eu paulo sapientem \
vulputate est, vel an accusam intellegam interesset. Nam eu stet pericula reprimique, ea vim illud \
modus, putant invidunt reprehendunt ne qui.';

/* eslint no-bitwise: 0 */
function hashCode(str: string): number {
  let hash = 15;
  for (let ii = str.length - 1; ii >= 0; ii--) {
    hash = (hash << 5) - hash + str.charCodeAt(ii);
  }
  return hash;
}

const HEADER = {height: 30, width: 100};
const SEPARATOR_HEIGHT = StyleSheet.hairlineWidth;

function getItemLayout(data: any, index: number, horizontal?: boolean) {
  const [length, separator, header] = horizontal
    ? [HORIZ_WIDTH, 0, HEADER.width]
    : [ITEM_HEIGHT, SEPARATOR_HEIGHT, HEADER.height];
  return {length, offset: (length + separator) * index + header, index};
}

function pressItem(context: Object, key: string) {
  const index = Number(key);
  const pressed = !context.state.data[index].pressed;
  context.setState(state => {
    const newData = [...state.data];
    newData[index] = {
      ...state.data[index],
      pressed,
      title: 'Item ' + key + (pressed ? ' (pressed)' : ''),
    };
    return {data: newData};
  });
}

function renderSmallSwitchOption(context: Object, key: string) {
  if (Platform.isTVOS) {
    return null;
  }
  return (
    <View style={styles.option}>
      <Text>{key}:</Text>
      <Switch
        style={styles.smallSwitch}
        value={context.state[key]}
        onValueChange={value => context.setState({[key]: value})}
      />
    </View>
  );
}

function PlainInput(props: Object) {
  return (
    <TextInput
      autoCapitalize="none"
      autoCorrect={false}
      clearButtonMode="always"
      underlineColorAndroid="transparent"
      style={styles.searchTextInput}
      {...props}
    />
  );
}

const styles = StyleSheet.create({
  headerFooter: {
    ...HEADER,
    alignSelf: 'center',
    alignItems: 'center',
    justifyContent: 'center',
  },
  headerFooterContainer: {
    backgroundColor: 'rgb(239, 239, 244)',
  },
  listEmpty: {
    alignItems: 'center',
    justifyContent: 'center',
    flexGrow: 1,
  },
  horizItem: {
    alignSelf: 'flex-start', // Necessary for touch highlight
  },
  item: {
    flex: 1,
  },
  itemSeparator: {
    height: SEPARATOR_HEIGHT,
    backgroundColor: 'rgb(200, 199, 204)',
    marginLeft: 60,
  },
  option: {
    flexDirection: 'row',
    padding: 8,
    paddingRight: 0,
  },
  row: {
    flexDirection: 'row',
    padding: 10,
    backgroundColor: 'white',
  },
  searchTextInput: {
    backgroundColor: 'white',
    borderColor: '#cccccc',
    borderRadius: 3,
    borderWidth: 1,
    paddingLeft: 8,
    paddingVertical: 0,
    height: 26,
    fontSize: 14,
    flexGrow: 1,
  },
  separator: {
    height: SEPARATOR_HEIGHT,
    backgroundColor: 'rgb(200, 199, 204)',
  },
  smallSwitch: Platform.select({
    android: {
      top: 1,
      margin: -6,
      transform: [{scale: 0.7}],
    },
    ios: {
      top: 4,
      margin: -10,
      transform: [{scale: 0.5}],
    },
  }),
  stacked: {
    alignItems: 'center',
    backgroundColor: 'white',
    padding: 10,
  },
  thumb: {
    width: 50,
    height: 50,
    left: -5,
  },
  spindicator: {
    marginLeft: 'auto',
    marginTop: 8,
    width: 2,
    height: 16,
    backgroundColor: 'darkgray',
  },
  stackedText: {
    padding: 4,
    fontSize: 18,
  },
  text: {
    flex: 1,
  },
});

module.exports = {
  FooterComponent,
  HeaderComponent,
  ListEmptyComponent,
  ItemComponent,
  ItemSeparatorComponent,
  PlainInput,
  SeparatorComponent,
  Spindicator,
  genItemData,
  getItemLayout,
  pressItem,
  renderSmallSwitchOption,
  renderStackedItem,
};


================================================
FILE: RNTester/ListViewExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
var {Image, ListView, TouchableHighlight, StyleSheet, Text, View} = ReactNative;

var RNTesterPage = require('./RNTesterPage');

var ListViewSimpleExample = createReactClass({
  displayName: 'ListViewSimpleExample',
  statics: {
    title: '<ListView>',
    description: 'Performant, scrollable list of data.',
  },

  getInitialState: function() {
    var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    return {
      dataSource: ds.cloneWithRows(this._genRows({})),
    };
  },

  _pressData: ({}: {[key: number]: boolean}),

  UNSAFE_componentWillMount: function() {
    this._pressData = {};
  },

  render: function() {
    return (
      <RNTesterPage
        title={this.props.navigator ? null : '<ListView>'}
        noSpacer={true}
        noScroll={true}>
        <ListView
          dataSource={this.state.dataSource}
          renderRow={this._renderRow}
          renderSeparator={this._renderSeparator}
        />
      </RNTesterPage>
    );
  },

  _renderRow: function(
    rowData: string,
    sectionID: number,
    rowID: number,
    highlightRow: (sectionID: number, rowID: number) => void,
  ) {
    var rowHash = Math.abs(hashCode(rowData));
    var imgSource = THUMB_URLS[rowHash % THUMB_URLS.length];
    return (
      <TouchableHighlight
        onPress={() => {
          this._pressRow(rowID);
          highlightRow(sectionID, rowID);
        }}>
        <View>
          <View style={styles.row}>
            <Image style={styles.thumb} source={imgSource} />
            <Text style={styles.text}>
              {rowData + ' - ' + LOREM_IPSUM.substr(0, (rowHash % 301) + 10)}
            </Text>
          </View>
        </View>
      </TouchableHighlight>
    );
  },

  _genRows: function(pressData: {[key: number]: boolean}): Array<string> {
    var dataBlob = [];
    for (var ii = 0; ii < 100; ii++) {
      var pressedText = pressData[ii] ? ' (pressed)' : '';
      dataBlob.push('Row ' + ii + pressedText);
    }
    return dataBlob;
  },

  _pressRow: function(rowID: number) {
    this._pressData[rowID] = !this._pressData[rowID];
    this.setState({
      dataSource: this.state.dataSource.cloneWithRows(
        this._genRows(this._pressData),
      ),
    });
  },

  _renderSeparator: function(
    sectionID: number,
    rowID: number,
    adjacentRowHighlighted: boolean,
  ) {
    return (
      <View
        key={`${sectionID}-${rowID}`}
        style={{
          height: adjacentRowHighlighted ? 4 : 1,
          backgroundColor: adjacentRowHighlighted ? '#3B5998' : '#CCCCCC',
        }}
      />
    );
  },
});

var THUMB_URLS = [
  require('./Thumbnails/like.png'),
  require('./Thumbnails/dislike.png'),
  require('./Thumbnails/call.png'),
  require('./Thumbnails/fist.png'),
  require('./Thumbnails/bandaged.png'),
  require('./Thumbnails/flowers.png'),
  require('./Thumbnails/heart.png'),
  require('./Thumbnails/liking.png'),
  require('./Thumbnails/party.png'),
  require('./Thumbnails/poke.png'),
  require('./Thumbnails/superlike.png'),
  require('./Thumbnails/victory.png'),
];
var LOREM_IPSUM =
  'Lorem ipsum dolor sit amet, ius ad pertinax oportere accommodare, an vix civibus corrumpit referrentur. Te nam case ludus inciderint, te mea facilisi adipiscing. Sea id integre luptatum. In tota sale consequuntur nec. Erat ocurreret mei ei. Eu paulo sapientem vulputate est, vel an accusam intellegam interesset. Nam eu stet pericula reprimique, ea vim illud modus, putant invidunt reprehendunt ne qui.';

/* eslint no-bitwise: 0 */
var hashCode = function(str) {
  var hash = 15;
  for (var ii = str.length - 1; ii >= 0; ii--) {
    hash = (hash << 5) - hash + str.charCodeAt(ii);
  }
  return hash;
};

var styles = StyleSheet.create({
  row: {
    flexDirection: 'row',
    justifyContent: 'center',
    padding: 10,
    backgroundColor: '#F6F6F6',
  },
  thumb: {
    width: 64,
    height: 64,
  },
  text: {
    flex: 1,
  },
});

module.exports = ListViewSimpleExample;


================================================
FILE: RNTester/ListViewGridLayoutExample.js
================================================
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @flow
 */

'use strict';

var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
var {Image, ListView, TouchableHighlight, StyleSheet, Text, View} = ReactNative;

var THUMB_URLS = [
  require('./Thumbnails/like.png'),
  require('./Thumbnails/dislike.png'),
  require('./Thumbnails/call.png'),
  require('./Thumbnails/fist.png'),
  require('./Thumbnails/bandaged.png'),
  require('./Thumbnails/flowers.png'),
  require('./Thumbnails/heart.png'),
  require('./Thumbnails/liking.png'),
  require('./Thumbnails/party.png'),
  require('./Thumbnails/poke.png'),
  require('./Thumbnails/superlike.png'),
  require('./Thumbnails/victory.png'),
];

var ListViewGridLayoutExample = createReactClass({
  displayName: 'ListViewGridLayoutExample',

  statics: {
    title: '<ListView> - Grid Layout',
    description: 'Flexbox grid layout.',
  },

  getInitialState: function() {
    var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    return {
      dataSource: ds.cloneWithRows(this._genRows({})),
    };
  },

  _pressData: ({}: {[key: number]: boolean}),

  UNSAFE_componentWillMount: function() {
    this._pressData = {};
  },

  render: function() {
    return (
      // ListView wraps ScrollView and so takes on its properties.
      // With that in mind you can use the ScrollView's contentContainerStyle prop to style the items.
      <ListView
        contentContainerStyle={styles.list}
        dataSource={this.state.dataSource}
        initialListSize={21}
        pageSize={3} // should be a multiple of the no. of visible cells per row
        scrollRenderAheadDistance={500}
        renderRow={this._renderRow}
      />
    );
  },

  _renderRow: function(rowData: string, sectionID: number, rowID: number) {
    var rowHash = Math.abs(hashCode(rowData));
    var 
Download .txt
gitextract_qv1a0904/

├── .babelrc
├── .buckconfig
├── .flowconfig
├── .gitattributes
├── .gitignore
├── .watchmanconfig
├── App.js
├── LICENSE.md
├── README.md
├── RNTester/
│   ├── ARTExample.js
│   ├── AccessibilityAndroidExample.android.js
│   ├── AccessibilityIOSExample.js
│   ├── ActionSheetIOSExample.js
│   ├── ActivityIndicatorExample.js
│   ├── AlertExample.js
│   ├── AlertIOSExample.js
│   ├── AnimatedExample.js
│   ├── AnimatedGratuitousApp/
│   │   ├── AnExApp.js
│   │   ├── AnExBobble.js
│   │   ├── AnExChained.js
│   │   ├── AnExScroll.js
│   │   ├── AnExSet.js
│   │   ├── AnExSlides.md
│   │   └── AnExTilt.js
│   ├── AppStateExample.js
│   ├── AssetScaledImageExample.js
│   ├── AsyncStorageExample.js
│   ├── BorderExample.js
│   ├── BoxShadowExample.js
│   ├── ButtonExample.js
│   ├── CameraRollExample.js
│   ├── CameraRollView.js
│   ├── CheckBoxExample.js
│   ├── ClipboardExample.js
│   ├── DatePickerAndroidExample.js
│   ├── DatePickerIOSExample.js
│   ├── DimensionsExample.js
│   ├── ExampleTypes.js
│   ├── FlatListExample.js
│   ├── GeolocationExample.js
│   ├── ImageCapInsetsExample.js
│   ├── ImageEditingExample.js
│   ├── ImageExample.js
│   ├── InputAccessoryViewExample.js
│   ├── KeyboardAvoidingViewExample.js
│   ├── LayoutAnimationExample.js
│   ├── LayoutEventsExample.js
│   ├── LayoutExample.js
│   ├── LinkingExample.js
│   ├── ListExampleShared.js
│   ├── ListViewExample.js
│   ├── ListViewGridLayoutExample.js
│   ├── ListViewPagingExample.js
│   ├── MaskedViewExample.js
│   ├── ModalExample.js
│   ├── MultiColumnExample.js
│   ├── NativeAnimationsExample.js
│   ├── NavigatorIOSBarStyleExample.js
│   ├── NavigatorIOSColorsExample.js
│   ├── NavigatorIOSExample.js
│   ├── NetInfoExample.js
│   ├── OrientationChangeExample.js
│   ├── PanResponderExample.js
│   ├── PermissionsExampleAndroid.android.js
│   ├── PickerExample.js
│   ├── PickerIOSExample.js
│   ├── PointerEventsExample.js
│   ├── ProgressBarAndroidExample.android.js
│   ├── ProgressViewIOSExample.js
│   ├── PushNotificationIOSExample.js
│   ├── RCTRootViewIOSExample.js
│   ├── RNTesterActions.js
│   ├── RNTesterApp.android.js
│   ├── RNTesterApp.ios.js
│   ├── RNTesterBlock.js
│   ├── RNTesterButton.js
│   ├── RNTesterExampleContainer.js
│   ├── RNTesterExampleList.js
│   ├── RNTesterList.android.js
│   ├── RNTesterList.ios.js
│   ├── RNTesterNavigationReducer.js
│   ├── RNTesterPage.js
│   ├── RNTesterSettingSwitchRow.js
│   ├── RNTesterStatePersister.js
│   ├── RNTesterTitle.js
│   ├── RTLExample.js
│   ├── RefreshControlExample.js
│   ├── RootViewSizeFlexibilityExampleApp.js
│   ├── SafeAreaViewExample.js
│   ├── ScrollViewExample.js
│   ├── ScrollViewSimpleExample.js
│   ├── SectionListExample.js
│   ├── SegmentedControlIOSExample.js
│   ├── SetPropertiesExampleApp.js
│   ├── ShareExample.js
│   ├── SliderExample.js
│   ├── SnapshotExample.js
│   ├── StatusBarExample.js
│   ├── SwipeableFlatListExample.js
│   ├── SwipeableListViewExample.js
│   ├── SwitchExample.js
│   ├── TVEventHandlerExample.js
│   ├── TabBarIOSBarStyleExample.js
│   ├── TabBarIOSExample.js
│   ├── TextExample.android.js
│   ├── TextExample.ios.js
│   ├── TextInputExample.android.js
│   ├── TextInputExample.ios.js
│   ├── TimePickerAndroidExample.js
│   ├── TimerExample.js
│   ├── ToastAndroidExample.android.js
│   ├── ToolbarAndroidExample.android.js
│   ├── ToolbarAndroidExample.ios.js
│   ├── TouchableExample.js
│   ├── TransformExample.js
│   ├── TransparentHitTestExample.js
│   ├── URIActionMap.js
│   ├── VibrationExample.js
│   ├── VibrationIOSExample.js
│   ├── ViewExample.js
│   ├── ViewPagerAndroidExample.android.js
│   ├── WebSocketExample.js
│   ├── WebViewExample.js
│   ├── XHRExample.js
│   ├── XHRExampleBinaryUpload.js
│   ├── XHRExampleCookies.js
│   ├── XHRExampleDownload.js
│   ├── XHRExampleFetch.js
│   ├── XHRExampleFormData.js
│   ├── XHRExampleHeaders.js
│   ├── XHRExampleOnTimeOut.js
│   ├── createExamplePage.js
│   ├── helloworld.html
│   ├── http_test_server.js
│   ├── messagingtest.html
│   └── websocket_test_server.js
├── android/
│   ├── app/
│   │   ├── BUCK
│   │   ├── build.gradle
│   │   ├── proguard-rules.pro
│   │   └── src/
│   │       └── main/
│   │           ├── AndroidManifest.xml
│   │           ├── java/
│   │           │   └── com/
│   │           │       └── marzipants/
│   │           │           ├── MainActivity.java
│   │           │           └── MainApplication.java
│   │           └── res/
│   │               └── values/
│   │                   ├── strings.xml
│   │                   └── styles.xml
│   ├── build.gradle
│   ├── gradle/
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── keystores/
│   │   ├── BUCK
│   │   └── debug.keystore.properties
│   └── settings.gradle
├── app.json
├── index.js
├── ios/
│   ├── Frameworks/
│   │   ├── UIFoundation.framework/
│   │   │   ├── Headers/
│   │   │   │   ├── CDStructures.h
│   │   │   │   ├── NSATSGlyphStorage.h
│   │   │   │   ├── NSATSLineFragment.h
│   │   │   │   ├── NSATSTypesetter.h
│   │   │   │   ├── NSArray-UICollectionAdditions_Performance.h
│   │   │   │   ├── NSArray-UIRemovalAdditions.h
│   │   │   │   ├── NSAttributeDictionary.h
│   │   │   │   ├── NSAttributeDictionaryEnumerator.h
│   │   │   │   ├── NSAttributedString-NSAttributedStringAttachmentConveniences.h
│   │   │   │   ├── NSAttributedString-NSAttributedStringUIFoundationAdditions.h
│   │   │   │   ├── NSAttributedString-NSExtendedStringDrawing.h
│   │   │   │   ├── NSAttributedString-NSStringDrawing.h
│   │   │   │   ├── NSCIDGlyphInfo.h
│   │   │   │   ├── NSCTFont.h
│   │   │   │   ├── NSCTFontDescriptor.h
│   │   │   │   ├── NSCTGlyphInfo.h
│   │   │   │   ├── NSCoding-Protocol.h
│   │   │   │   ├── NSCollectionViewAnimation.h
│   │   │   │   ├── NSCollectionViewData.h
│   │   │   │   ├── NSCollectionViewFlowLayout.h
│   │   │   │   ├── NSCollectionViewFlowLayoutAuxiliary.h
│   │   │   │   ├── NSCollectionViewFlowLayoutInvalidationContext.h
│   │   │   │   ├── NSCollectionViewIndexMapper.h
│   │   │   │   ├── NSCollectionViewLayout.h
│   │   │   │   ├── NSCollectionViewLayoutAttributes.h
│   │   │   │   ├── NSCollectionViewLayoutAttributesAuxiliary.h
│   │   │   │   ├── NSCollectionViewLayoutInvalidationContext.h
│   │   │   │   ├── NSCollectionViewTransitionLayout.h
│   │   │   │   ├── NSCollectionViewUpdate.h
│   │   │   │   ├── NSCollectionViewUpdateItem.h
│   │   │   │   ├── NSConcreteGlyphGenerator.h
│   │   │   │   ├── NSConcreteNotifyingMutableAttributedString.h
│   │   │   │   ├── NSConcreteTextStorage.h
│   │   │   │   ├── NSCopying-Protocol.h
│   │   │   │   ├── NSCoreTypesetter.h
│   │   │   │   ├── NSDictionary-UICollectionAdditions.h
│   │   │   │   ├── NSDocFormatReader.h
│   │   │   │   ├── NSDocFormatWriter.h
│   │   │   │   ├── NSExtraLMData.h
│   │   │   │   ├── NSFont.h
│   │   │   │   ├── NSFontAssetRequest.h
│   │   │   │   ├── NSFontDescriptor.h
│   │   │   │   ├── NSGlyphGenerator.h
│   │   │   │   ├── NSGlyphInfo.h
│   │   │   │   ├── NSGlyphNameGlyphInfo.h
│   │   │   │   ├── NSHTMLReader.h
│   │   │   │   ├── NSHTMLWebDelegate.h
│   │   │   │   ├── NSHTMLWriter.h
│   │   │   │   ├── NSIdRunStorage.h
│   │   │   │   ├── NSIdentityGlyphInfo.h
│   │   │   │   ├── NSIndexPath-NSCollectionViewAdditions.h
│   │   │   │   ├── NSIndexPath-UITableView.h
│   │   │   │   ├── NSInsertionPointHelper.h
│   │   │   │   ├── NSLayoutManager.h
│   │   │   │   ├── NSLayoutManagerDelegate-Protocol.h
│   │   │   │   ├── NSLayoutManagerTextBlockHelper.h
│   │   │   │   ├── NSLayoutManagerTextBlockRowArrayCache.h
│   │   │   │   ├── NSLineFragmentRenderingContext.h
│   │   │   │   ├── NSMutableArray-UICollectionAdditions_Performance.h
│   │   │   │   ├── NSMutableAttributedString-NSMutableAttributedStringAttachmentConveniences.h
│   │   │   │   ├── NSMutableAttributedString-NSMutableAttributedStringKitAdditions.h
│   │   │   │   ├── NSMutableCopying-Protocol.h
│   │   │   │   ├── NSMutableFontDescriptor.h
│   │   │   │   ├── NSMutableIndexPath.h
│   │   │   │   ├── NSMutableParagraphStyle.h
│   │   │   │   ├── NSObject-Protocol.h
│   │   │   │   ├── NSOpenDocumentReader.h
│   │   │   │   ├── NSOpenDocumentWriter.h
│   │   │   │   ├── NSParagraphArbitrator.h
│   │   │   │   ├── NSParagraphStyle.h
│   │   │   │   ├── NSParagraphStyleExtraData.h
│   │   │   │   ├── NSProgressReporting-Protocol.h
│   │   │   │   ├── NSRTFReader.h
│   │   │   │   ├── NSRTFReaderTableState.h
│   │   │   │   ├── NSRTFWriter.h
│   │   │   │   ├── NSRunStorage.h
│   │   │   │   ├── NSSecureCoding-Protocol.h
│   │   │   │   ├── NSShadow.h
│   │   │   │   ├── NSSingleLineTypesetter.h
│   │   │   │   ├── NSStorage.h
│   │   │   │   ├── NSString-NSExtendedStringDrawing.h
│   │   │   │   ├── NSString-NSStringDrawing.h
│   │   │   │   ├── NSString-NSStringDrawingExtension.h
│   │   │   │   ├── NSString-UIFontPrivate.h
│   │   │   │   ├── NSStringDrawingContext.h
│   │   │   │   ├── NSStringDrawingTextStorage.h
│   │   │   │   ├── NSStringDrawingTextStorageSettings.h
│   │   │   │   ├── NSSubstituteWebResource.h
│   │   │   │   ├── NSTempAttributeDictionary.h
│   │   │   │   ├── NSTextAlternatives.h
│   │   │   │   ├── NSTextApplicationFrameworkContextClient-Protocol.h
│   │   │   │   ├── NSTextAttachment.h
│   │   │   │   ├── NSTextAttachmentContainer-Protocol.h
│   │   │   │   ├── NSTextAttachmentViewProvider.h
│   │   │   │   ├── NSTextBlock.h
│   │   │   │   ├── NSTextBlockLayoutHelper.h
│   │   │   │   ├── NSTextContainer.h
│   │   │   │   ├── NSTextLayoutFragment.h
│   │   │   │   ├── NSTextLayoutOrientationProvider-Protocol.h
│   │   │   │   ├── NSTextLineFragment.h
│   │   │   │   ├── NSTextList.h
│   │   │   │   ├── NSTextStorage.h
│   │   │   │   ├── NSTextTab.h
│   │   │   │   ├── NSTextTable.h
│   │   │   │   ├── NSTextTableBlock.h
│   │   │   │   ├── NSTypesetter.h
│   │   │   │   ├── NSViewAnimationContext.h
│   │   │   │   ├── NSWordMLReader.h
│   │   │   │   ├── NSWordMLWriter.h
│   │   │   │   ├── NSXMLParserDelegate-Protocol.h
│   │   │   │   ├── NSZipTextReader.h
│   │   │   │   ├── UIBoxcarFilterPointFIFO.h
│   │   │   │   ├── UIFont.h
│   │   │   │   ├── UIFontDescriptor.h
│   │   │   │   ├── UINibCoderValue.h
│   │   │   │   ├── UINibDecoder.h
│   │   │   │   ├── UINibEncoder.h
│   │   │   │   ├── UINibStringIDTable.h
│   │   │   │   ├── UIPointFIFO.h
│   │   │   │   ├── UIQuadCurvePointFIFO.h
│   │   │   │   ├── _NSATSTypesetterGuts.h
│   │   │   │   ├── _NSAttributeRun.h
│   │   │   │   ├── _NSAttributes.h
│   │   │   │   ├── _NSCachedAttributedString.h
│   │   │   │   ├── _NSCollectionViewCore.h
│   │   │   │   ├── _NSCollectionViewItemKey.h
│   │   │   │   ├── _NSCollectionViewPrefetchItem.h
│   │   │   │   ├── _NSCollectionViewPrefetchingContext.h
│   │   │   │   ├── _NSCollectionViewTrackedValue.h
│   │   │   │   ├── _NSCollectionViewTrackedValueItem.h
│   │   │   │   ├── _NSFlowLayoutInfo.h
│   │   │   │   ├── _NSFlowLayoutItem.h
│   │   │   │   ├── _NSFlowLayoutRow.h
│   │   │   │   ├── _NSFlowLayoutSection.h
│   │   │   │   ├── _NSTextStorageSideData.h
│   │   │   │   ├── _NSUIAnimator.h
│   │   │   │   ├── _UICache.h
│   │   │   │   ├── _UIFontCacheKey.h
│   │   │   │   ├── _UIPointVector.h
│   │   │   │   ├── __NSATSStringSegment.h
│   │   │   │   ├── __NSFontTypefaceInfo.h
│   │   │   │   ├── __NSSharedFontInstanceInfo.h
│   │   │   │   └── __UIFontExtraData.h
│   │   │   └── UIFoundation.tbd
│   │   └── UIKit.framework/
│   │       ├── Headers/
│   │       │   ├── DocumentManager.h
│   │       │   ├── NSAttributedString.h
│   │       │   ├── NSDataAsset.h
│   │       │   ├── NSFileProviderExtension.h
│   │       │   ├── NSIndexPath+UIKitAdditions.h
│   │       │   ├── NSItemProvider+UIKitAdditions.h
│   │       │   ├── NSLayoutAnchor.h
│   │       │   ├── NSLayoutConstraint.h
│   │       │   ├── NSLayoutManager.h
│   │       │   ├── NSParagraphStyle.h
│   │       │   ├── NSShadow.h
│   │       │   ├── NSStringDrawing.h
│   │       │   ├── NSText.h
│   │       │   ├── NSTextAttachment.h
│   │       │   ├── NSTextContainer.h
│   │       │   ├── NSTextStorage.h
│   │       │   ├── UIAccelerometer.h
│   │       │   ├── UIAccessibility.h
│   │       │   ├── UIAccessibilityAdditions.h
│   │       │   ├── UIAccessibilityConstants.h
│   │       │   ├── UIAccessibilityContainer.h
│   │       │   ├── UIAccessibilityContentSizeCategoryImageAdjusting.h
│   │       │   ├── UIAccessibilityCustomAction.h
│   │       │   ├── UIAccessibilityCustomRotor.h
│   │       │   ├── UIAccessibilityElement.h
│   │       │   ├── UIAccessibilityIdentification.h
│   │       │   ├── UIAccessibilityLocationDescriptor.h
│   │       │   ├── UIAccessibilityZoom.h
│   │       │   ├── UIActionSheet.h
│   │       │   ├── UIActivity.h
│   │       │   ├── UIActivityIndicatorView.h
│   │       │   ├── UIActivityItemProvider.h
│   │       │   ├── UIActivityViewController.h
│   │       │   ├── UIAlert.h
│   │       │   ├── UIAlertController.h
│   │       │   ├── UIAlertView.h
│   │       │   ├── UIAppearance.h
│   │       │   ├── UIApplication.h
│   │       │   ├── UIApplicationShortcutItem.h
│   │       │   ├── UIAttachmentBehavior.h
│   │       │   ├── UIBarButtonItem.h
│   │       │   ├── UIBarButtonItemGroup.h
│   │       │   ├── UIBarCommon.h
│   │       │   ├── UIBarItem.h
│   │       │   ├── UIBezierPath.h
│   │       │   ├── UIBlurEffect.h
│   │       │   ├── UIButton.h
│   │       │   ├── UICloudSharingController.h
│   │       │   ├── UICollectionView.h
│   │       │   ├── UICollectionViewCell.h
│   │       │   ├── UICollectionViewController.h
│   │       │   ├── UICollectionViewFlowLayout.h
│   │       │   ├── UICollectionViewLayout.h
│   │       │   ├── UICollectionViewTransitionLayout.h
│   │       │   ├── UICollisionBehavior.h
│   │       │   ├── UIColor.h
│   │       │   ├── UIContentSizeCategory.h
│   │       │   ├── UIContentSizeCategoryAdjusting.h
│   │       │   ├── UIContextualAction.h
│   │       │   ├── UIControl.h
│   │       │   ├── UIDataDetectors.h
│   │       │   ├── UIDataSourceTranslating.h
│   │       │   ├── UIDatePicker.h
│   │       │   ├── UIDevice.h
│   │       │   ├── UIDocument.h
│   │       │   ├── UIDocumentBrowserAction.h
│   │       │   ├── UIDocumentBrowserViewController.h
│   │       │   ├── UIDocumentInteractionController.h
│   │       │   ├── UIDocumentMenuViewController.h
│   │       │   ├── UIDocumentPickerExtensionViewController.h
│   │       │   ├── UIDocumentPickerViewController.h
│   │       │   ├── UIDragInteraction.h
│   │       │   ├── UIDragItem.h
│   │       │   ├── UIDragPreview.h
│   │       │   ├── UIDragPreviewParameters.h
│   │       │   ├── UIDragSession.h
│   │       │   ├── UIDropInteraction.h
│   │       │   ├── UIDynamicAnimator.h
│   │       │   ├── UIDynamicBehavior.h
│   │       │   ├── UIDynamicItemBehavior.h
│   │       │   ├── UIEvent.h
│   │       │   ├── UIFeedbackGenerator.h
│   │       │   ├── UIFieldBehavior.h
│   │       │   ├── UIFocus.h
│   │       │   ├── UIFocusAnimationCoordinator.h
│   │       │   ├── UIFocusDebugger.h
│   │       │   ├── UIFocusGuide.h
│   │       │   ├── UIFocusMovementHint.h
│   │       │   ├── UIFocusSystem.h
│   │       │   ├── UIFont.h
│   │       │   ├── UIFontDescriptor.h
│   │       │   ├── UIFontMetrics.h
│   │       │   ├── UIGeometry.h
│   │       │   ├── UIGestureRecognizer.h
│   │       │   ├── UIGestureRecognizerSubclass.h
│   │       │   ├── UIGraphics.h
│   │       │   ├── UIGraphicsImageRenderer.h
│   │       │   ├── UIGraphicsPDFRenderer.h
│   │       │   ├── UIGraphicsRenderer.h
│   │       │   ├── UIGraphicsRendererSubclass.h
│   │       │   ├── UIGravityBehavior.h
│   │       │   ├── UIGuidedAccessRestrictions.h
│   │       │   ├── UIImage.h
│   │       │   ├── UIImageAsset.h
│   │       │   ├── UIImagePickerController.h
│   │       │   ├── UIImageView.h
│   │       │   ├── UIImpactFeedbackGenerator.h
│   │       │   ├── UIInputView.h
│   │       │   ├── UIInputViewController.h
│   │       │   ├── UIInteraction.h
│   │       │   ├── UIInterface.h
│   │       │   ├── UIKit.apinotes
│   │       │   ├── UIKit.h
│   │       │   ├── UIKitCore.h
│   │       │   ├── UIKitDefines.h
│   │       │   ├── UILabel.h
│   │       │   ├── UILayoutGuide.h
│   │       │   ├── UILexicon.h
│   │       │   ├── UILocalNotification.h
│   │       │   ├── UILocalizedIndexedCollation.h
│   │       │   ├── UILongPressGestureRecognizer.h
│   │       │   ├── UIManagedDocument.h
│   │       │   ├── UIMenuController.h
│   │       │   ├── UIMotionEffect.h
│   │       │   ├── UINavigationBar.h
│   │       │   ├── UINavigationController.h
│   │       │   ├── UINavigationItem.h
│   │       │   ├── UINib.h
│   │       │   ├── UINibDeclarations.h
│   │       │   ├── UINibLoading.h
│   │       │   ├── UINotificationFeedbackGenerator.h
│   │       │   ├── UIPageControl.h
│   │       │   ├── UIPageViewController.h
│   │       │   ├── UIPanGestureRecognizer.h
│   │       │   ├── UIPasteConfiguration.h
│   │       │   ├── UIPasteConfigurationSupporting.h
│   │       │   ├── UIPasteboard.h
│   │       │   ├── UIPickerView.h
│   │       │   ├── UIPinchGestureRecognizer.h
│   │       │   ├── UIPopoverBackgroundView.h
│   │       │   ├── UIPopoverController.h
│   │       │   ├── UIPopoverPresentationController.h
│   │       │   ├── UIPopoverSupport.h
│   │       │   ├── UIPresentationController.h
│   │       │   ├── UIPress.h
│   │       │   ├── UIPressesEvent.h
│   │       │   ├── UIPreviewInteraction.h
│   │       │   ├── UIPrintError.h
│   │       │   ├── UIPrintFormatter.h
│   │       │   ├── UIPrintInfo.h
│   │       │   ├── UIPrintInteractionController.h
│   │       │   ├── UIPrintPageRenderer.h
│   │       │   ├── UIPrintPaper.h
│   │       │   ├── UIPrinter.h
│   │       │   ├── UIPrinterPickerController.h
│   │       │   ├── UIProgressView.h
│   │       │   ├── UIPushBehavior.h
│   │       │   ├── UIReferenceLibraryViewController.h
│   │       │   ├── UIRefreshControl.h
│   │       │   ├── UIRegion.h
│   │       │   ├── UIResponder.h
│   │       │   ├── UIRotationGestureRecognizer.h
│   │       │   ├── UIScreen.h
│   │       │   ├── UIScreenEdgePanGestureRecognizer.h
│   │       │   ├── UIScreenMode.h
│   │       │   ├── UIScrollView.h
│   │       │   ├── UISearchBar.h
│   │       │   ├── UISearchContainerViewController.h
│   │       │   ├── UISearchController.h
│   │       │   ├── UISearchDisplayController.h
│   │       │   ├── UISegmentedControl.h
│   │       │   ├── UISelectionFeedbackGenerator.h
│   │       │   ├── UISlider.h
│   │       │   ├── UISnapBehavior.h
│   │       │   ├── UISplitViewController.h
│   │       │   ├── UISpringLoadedInteraction.h
│   │       │   ├── UISpringLoadedInteractionSupporting.h
│   │       │   ├── UIStackView.h
│   │       │   ├── UIStateRestoration.h
│   │       │   ├── UIStepper.h
│   │       │   ├── UIStoryboard.h
│   │       │   ├── UIStoryboardPopoverSegue.h
│   │       │   ├── UIStoryboardSegue.h
│   │       │   ├── UIStringDrawing.h
│   │       │   ├── UISwipeActionsConfiguration.h
│   │       │   ├── UISwipeGestureRecognizer.h
│   │       │   ├── UISwitch.h
│   │       │   ├── UITabBar.h
│   │       │   ├── UITabBarController.h
│   │       │   ├── UITabBarItem.h
│   │       │   ├── UITableView.h
│   │       │   ├── UITableViewCell.h
│   │       │   ├── UITableViewController.h
│   │       │   ├── UITableViewHeaderFooterView.h
│   │       │   ├── UITapGestureRecognizer.h
│   │       │   ├── UITargetedDragPreview.h
│   │       │   ├── UITextChecker.h
│   │       │   ├── UITextDragPreviewRenderer.h
│   │       │   ├── UITextDragURLPreviews.h
│   │       │   ├── UITextDragging.h
│   │       │   ├── UITextDropProposal.h
│   │       │   ├── UITextDropping.h
│   │       │   ├── UITextField.h
│   │       │   ├── UITextInput.h
│   │       │   ├── UITextInputTraits.h
│   │       │   ├── UITextItemInteraction.h
│   │       │   ├── UITextPasteConfigurationSupporting.h
│   │       │   ├── UITextPasteDelegate.h
│   │       │   ├── UITextView.h
│   │       │   ├── UITimingCurveProvider.h
│   │       │   ├── UITimingParameters.h
│   │       │   ├── UIToolbar.h
│   │       │   ├── UITouch.h
│   │       │   ├── UITraitCollection.h
│   │       │   ├── UIUserActivity.h
│   │       │   ├── UIUserNotificationSettings.h
│   │       │   ├── UIVibrancyEffect.h
│   │       │   ├── UIVideoEditorController.h
│   │       │   ├── UIView.h
│   │       │   ├── UIViewAnimating.h
│   │       │   ├── UIViewController.h
│   │       │   ├── UIViewControllerTransitionCoordinator.h
│   │       │   ├── UIViewControllerTransitioning.h
│   │       │   ├── UIViewPropertyAnimator.h
│   │       │   ├── UIVisualEffect.h
│   │       │   ├── UIVisualEffectView.h
│   │       │   ├── UIWebView.h
│   │       │   └── UIWindow.h
│   │       ├── Modules/
│   │       │   └── module.modulemap
│   │       └── UIKit.tbd
│   ├── Marzipants/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Base.lproj/
│   │   │   └── LaunchScreen.xib
│   │   ├── Images.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   └── main.m
│   ├── Marzipants-tvOS/
│   │   └── Info.plist
│   ├── Marzipants-tvOSTests/
│   │   └── Info.plist
│   ├── Marzipants.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── xcshareddata/
│   │       └── xcschemes/
│   │           ├── Marzipants.xcscheme
│   │           ├── MarzipantsMac.xcscheme
│   │           └── MarzipantsMacSwift.xcscheme
│   ├── MarzipantsMac/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   ├── MarzipantsMac.entitlements
│   │   └── main.m
│   ├── MarzipantsMacSwift/
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.appiconset/
│   │   │   │   └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   ├── MarzipantsMacSwift-Bridging-Header.h
│   │   └── MarzipantsMacSwift.entitlements
│   └── MarzipantsTests/
│       ├── Info.plist
│       └── MarzipantsTests.m
└── package.json
Download .txt
SYMBOL INDEX (1389 symbols across 297 files)

FILE: App.js
  method render (line 24) | render() {

FILE: RNTester/ARTExample.js
  method render (line 22) | render() {

FILE: RNTester/AccessibilityAndroidExample.android.js
  class AccessibilityAndroidExample (line 33) | class AccessibilityAndroidExample extends React.Component {
    method componentDidMount (line 44) | componentDidMount() {
    method componentWillUnmount (line 56) | componentWillUnmount() {
    method render (line 87) | render() {

FILE: RNTester/AccessibilityIOSExample.js
  method render (line 18) | render() {

FILE: RNTester/ActivityIndicatorExample.js
  class ToggleAnimatingActivityIndicator (line 22) | class ToggleAnimatingActivityIndicator extends Component<
  method render (line 75) | render() {
  method render (line 86) | render() {
  method render (line 99) | render() {
  method render (line 112) | render() {
  method render (line 124) | render() {
  method render (line 137) | render() {
  method render (line 143) | render() {
  method render (line 155) | render() {

FILE: RNTester/AlertExample.js
  class SimpleAlertExampleBlock (line 26) | class SimpleAlertExampleBlock extends React.Component {
    method render (line 27) | render() {
  class AlertExample (line 121) | class AlertExample extends React.Component {
    method render (line 128) | render() {

FILE: RNTester/AlertIOSExample.js
  method render (line 25) | render() {
  method render (line 37) | render() {

FILE: RNTester/AnimatedExample.js
  method constructor (line 34) | constructor(props) {
  method componentDidMount (line 40) | componentDidMount() {
  method render (line 50) | render() {
  method constructor (line 62) | constructor(props) {
  method render (line 68) | render() {
  method render (line 155) | render: function() {

FILE: RNTester/AnimatedGratuitousApp/AnExApp.js
  function distance (line 286) | function distance(p1: Point, p2: Point): number {
  function moveToClosest (line 292) | function moveToClosest({activeKey, keys, restLayouts}, position) {

FILE: RNTester/AnimatedGratuitousApp/AnExBobble.js
  class AnExBobble (line 31) | class AnExBobble extends React.Component<Object, any> {
    method constructor (line 32) | constructor(props: Object) {
  function randColor (line 145) | function randColor(): string {

FILE: RNTester/AnimatedGratuitousApp/AnExChained.js
  method constructor (line 18) | constructor(props: Object) {

FILE: RNTester/AnimatedGratuitousApp/AnExScroll.js
  class AnExScroll (line 17) | class AnExScroll extends React.Component<$FlowFixMeProps, any> {

FILE: RNTester/AnimatedGratuitousApp/AnExSet.js
  method constructor (line 23) | constructor(props: Object) {

FILE: RNTester/AnimatedGratuitousApp/AnExTilt.js
  class AnExTilt (line 17) | class AnExTilt extends React.Component<Object, any> {
    method constructor (line 18) | constructor(props: Object) {

FILE: RNTester/AppStateExample.js
  class AppStateSubscription (line 17) | class AppStateSubscription extends React.Component<
  method render (line 79) | render() {

FILE: RNTester/BorderExample.js
  method render (line 170) | render() {
  method render (line 177) | render() {
  method render (line 184) | render() {
  method render (line 191) | render() {
  method render (line 198) | render() {
  method render (line 206) | render() {
  method render (line 214) | render() {
  method render (line 222) | render() {
  method render (line 233) | render() {
  method render (line 247) | render() {
  method render (line 255) | render() {
  method render (line 262) | render() {
  method render (line 269) | render() {
  method render (line 276) | render() {
  method render (line 283) | render() {

FILE: RNTester/BoxShadowExample.js
  method render (line 42) | render() {
  method render (line 49) | render() {
  method render (line 56) | render() {
  method render (line 63) | render() {
  method render (line 80) | render() {

FILE: RNTester/CameraRollView.js
  method if (line 193) | if (r1.length !== r2.length) {
  method if (line 198) | if (r1[i] !== r2[i]) {

FILE: RNTester/CheckBoxExample.js
  method render (line 40) | render() {

FILE: RNTester/ClipboardExample.js
  method render (line 49) | render() {

FILE: RNTester/DatePickerAndroidExample.js
  class DatePickerAndroidExample (line 24) | class DatePickerAndroidExample extends React.Component {
    method render (line 62) | render() {

FILE: RNTester/DatePickerIOSExample.js
  method render (line 91) | render() {
  method render (line 104) | render() {

FILE: RNTester/FlatListExample.js
  constant VIEWABILITY_CONFIG (line 39) | const VIEWABILITY_CONFIG = {
  class FlatListExample (line 45) | class FlatListExample extends React.PureComponent<{}, $FlowFixMeState> {
  method if (line 193) | if (this.state.logViewable) {

FILE: RNTester/ImageCapInsetsExample.js
  method render (line 20) | render() {

FILE: RNTester/ImageExample.js
  constant IMAGE_PREFETCH_URL (line 30) | const IMAGE_PREFETCH_URL =
  method UNSAFE_componentWillMount (line 47) | UNSAFE_componentWillMount() {
  method _loadEventFired (line 126) | _loadEventFired(event) {

FILE: RNTester/InputAccessoryViewExample.js
  method render (line 27) | render() {

FILE: RNTester/KeyboardAvoidingViewExample.js
  class KeyboardAvoidingViewExample (line 28) | class KeyboardAvoidingViewExample extends React.Component {
    method render (line 71) | render() {

FILE: RNTester/LayoutExample.js
  method render (line 21) | render() {
  method render (line 39) | render() {

FILE: RNTester/LinkingExample.js
  class OpenURLButton (line 18) | class OpenURLButton extends React.Component {
    method render (line 33) | render() {
  class IntentAndroidExample (line 44) | class IntentAndroidExample extends React.Component {
    method render (line 48) | render() {

FILE: RNTester/ListExampleShared.js
  function genItemData (line 35) | function genItemData(count: number, start: number = 0): Array<Item> {
  constant HORIZ_WIDTH (line 49) | const HORIZ_WIDTH = 200;
  constant ITEM_HEIGHT (line 50) | const ITEM_HEIGHT = 72;
  method render (line 108) | render() {
  method render (line 121) | render() {
  method render (line 134) | render() {
  method render (line 144) | render() {
  method render (line 150) | render() {
  method render (line 162) | render() {
  method if (line 240) | if (Platform.isTVOS) {

FILE: RNTester/ListViewPagingExample.js
  method UNSAFE_componentWillMount (line 46) | UNSAFE_componentWillMount() {

FILE: RNTester/ModalExample.js
  method if (line 97) | if (Platform.isTVOS) {

FILE: RNTester/MultiColumnExample.js
  method if (line 134) | if (this.state.logViewable) {

FILE: RNTester/NavigatorIOSBarStyleExample.js
  method render (line 31) | render() {

FILE: RNTester/NavigatorIOSColorsExample.js
  class EmptyPage (line 16) | class EmptyPage extends React.Component {
    method render (line 17) | render() {
  class NavigatorIOSColors (line 26) | class NavigatorIOSColors extends React.Component {
    method render (line 30) | render() {

FILE: RNTester/NavigatorIOSExample.js
  method render (line 30) | render() {
  method render (line 40) | render() {
  method if (line 187) | if (!this.props.depth || this.props.depth < 2) {
  method if (line 204) | if (!this.props.depth || this.props.depth < 2) {

FILE: RNTester/NetInfoExample.js
  class ConnectionInfoSubscription (line 17) | class ConnectionInfoSubscription extends React.Component<{}, $FlowFixMeS...

FILE: RNTester/OrientationChangeExample.js
  class OrientationChangeExample (line 19) | class OrientationChangeExample extends React.Component<{}, $FlowFixMeSta...
  method render (line 62) | render() {

FILE: RNTester/PointerEventsExample.js
  class ExampleBox (line 17) | class ExampleBox extends React.Component<$FlowFixMeProps, $FlowFixMeStat...
    method render (line 60) | render() {
    method render (line 91) | render() {
    method render (line 101) | render() {
    method render (line 134) | render() {
    method render (line 199) | render: function() {

FILE: RNTester/ProgressViewIOSExample.js
  method getInitialState (line 26) | getInitialState() {
  method componentDidMount (line 32) | componentDidMount() {
  method updateProgress (line 36) | updateProgress() {
  method getProgress (line 42) | getProgress(offset) {
  method render (line 47) | render() {
  method render (line 86) | render() {

FILE: RNTester/PushNotificationIOSExample.js
  method render (line 25) | render() {
  method UNSAFE_componentWillMount (line 38) | UNSAFE_componentWillMount() {
  method componentWillUnmount (line 56) | componentWillUnmount() {
  method render (line 72) | render() {
  method _sendNotification (line 88) | _sendNotification() {
  method _sendLocalNotification (line 101) | _sendLocalNotification() {
  method _onRegistered (line 112) | _onRegistered(deviceToken) {
  method _onRegistrationError (line 125) | _onRegistrationError(error) {
  method _onRemoteNotification (line 138) | _onRemoteNotification(notification) {
  method _onLocalNotification (line 153) | _onLocalNotification(notification) {
  method constructor (line 171) | constructor(props) {
  method render (line 176) | render() {
  method _showPermissions (line 188) | _showPermissions() {

FILE: RNTester/RCTRootViewIOSExample.js
  method render (line 20) | render() {
  method render (line 42) | render() {

FILE: RNTester/RNTesterActions.js
  function Back (line 31) | function Back(): RNTesterBackAction {
  function ExampleList (line 37) | function ExampleList(): RNTesterListAction {
  function ExampleAction (line 43) | function ExampleAction(openExample: string): RNTesterExampleAction {

FILE: RNTester/RNTesterApp.android.js
  constant DRAWER_WIDTH_LEFT (line 38) | const DRAWER_WIDTH_LEFT = 56;
  constant APP_STATE_KEY (line 44) | const APP_STATE_KEY = 'RNTesterAppState.v2';
  constant HEADER_LOGO_ICON (line 46) | const HEADER_LOGO_ICON = nativeImageSource({
  constant HEADER_NAV_ICON (line 52) | const HEADER_NAV_ICON = nativeImageSource({
  class RNTesterApp (line 58) | class RNTesterApp extends React.Component<Props, RNTesterNavigationState> {
    method UNSAFE_componentWillMount (line 59) | UNSAFE_componentWillMount() {
    method componentDidMount (line 66) | componentDidMount() {
    method render (line 89) | render() {
    method if (line 132) | if (ExampleModule.external) {
    method else (line 143) | else if (ExampleModule) {

FILE: RNTester/RNTesterApp.ios.js
  constant APP_STATE_KEY (line 43) | const APP_STATE_KEY = 'RNTesterAppState.v2';
  class RNTesterApp (line 60) | class RNTesterApp extends React.Component<Props, RNTesterNavigationState> {
    method UNSAFE_componentWillMount (line 61) | UNSAFE_componentWillMount() {
    method componentDidMount (line 65) | componentDidMount() {
  method render (line 182) | render() {

FILE: RNTester/RNTesterBlock.js
  method var (line 33) | var description;

FILE: RNTester/RNTesterExampleContainer.js
  class RNTesterExampleContainer (line 17) | class RNTesterExampleContainer extends React.Component {
    method renderExample (line 18) | renderExample(example, i) {
    method render (line 34) | render(): React.Element<any> {

FILE: RNTester/RNTesterExampleList.js
  method render (line 74) | render() {
  method if (line 136) | if (!this.props.displayTitleRow) {
  method if (line 159) | if (this.props.disableSearch) {

FILE: RNTester/RNTesterNavigationReducer.js
  function RNTesterNavigationReducer (line 20) | function RNTesterNavigationReducer(

FILE: RNTester/RNTesterSettingSwitchRow.js
  method UNSAFE_componentWillReceiveProps (line 24) | UNSAFE_componentWillReceiveProps(newProps) {
  method render (line 30) | render() {

FILE: RNTester/RNTesterStatePersister.js
  method setState (line 60) | setState(state => {

FILE: RNTester/RNTesterTitle.js
  method render (line 18) | render() {

FILE: RNTester/RTLExample.js
  constant SCALE (line 42) | const SCALE = PixelRatio.get();
  constant IMAGE_DIMENSION (line 43) | const IMAGE_DIMENSION = 100 * SCALE;
  constant IMAGE_SIZE (line 44) | const IMAGE_SIZE = [IMAGE_DIMENSION, IMAGE_DIMENSION];
  constant IS_RTL (line 46) | const IS_RTL = I18nManager.isRTL;
  function ListItem (line 48) | function ListItem(props) {
  function TextAlignmentExample (line 68) | function TextAlignmentExample(props) {
  function AnimationBlock (line 91) | function AnimationBlock(props) {
  method constructor (line 110) | constructor(...args) {
  method render (line 117) | render() {
  method if (line 125) | if (Platform.OS === 'android') {

FILE: RNTester/RefreshControlExample.js
  class Row (line 40) | class Row extends React.Component {
    method render (line 45) | render() {
  class RefreshControlExample (line 58) | class RefreshControlExample extends React.Component {
    method render (line 78) | render() {

FILE: RNTester/RootViewSizeFlexibilityExampleApp.js
  class RootViewSizeFlexibilityExampleApp (line 17) | class RootViewSizeFlexibilityExampleApp extends React.Component<

FILE: RNTester/SafeAreaViewExample.js
  method render (line 68) | render() {

FILE: RNTester/ScrollViewExample.js
  function renderScrollView (line 80) | function renderScrollView(
  method render (line 266) | render() {

FILE: RNTester/SectionListExample.js
  constant VIEWABILITY_CONFIG (line 44) | const VIEWABILITY_CONFIG = {
  class SectionListExample (line 74) | class SectionListExample extends React.PureComponent<{}, $FlowFixMeState> {
  method if (line 237) | if (this.state.logViewable) {

FILE: RNTester/SegmentedControlIOSExample.js
  method render (line 18) | render() {
  method render (line 35) | render() {
  method render (line 47) | render() {
  method render (line 59) | render() {
  method render (line 75) | render() {

FILE: RNTester/SetPropertiesExampleApp.js
  method render (line 18) | render() {

FILE: RNTester/ShareExample.js
  method render (line 23) | render() {

FILE: RNTester/StatusBarExample.js
  method render (line 264) | render() {
  method render (line 327) | render() {
  method render (line 440) | render() {
  method render (line 446) | render() {
  method render (line 453) | render() {
  method render (line 460) | render() {
  method render (line 467) | render() {
  method render (line 474) | render() {
  method render (line 481) | render() {
  method render (line 488) | render() {

FILE: RNTester/SwitchExample.js
  method render (line 41) | render() {

FILE: RNTester/TVEventHandlerExample.js
  method render (line 31) | render() {
  method constructor (line 43) | constructor(props) {
  method _enableTVEventHandler (line 52) | _enableTVEventHandler() {
  method _disableTVEventHandler (line 61) | _disableTVEventHandler() {
  method componentDidMount (line 68) | componentDidMount() {
  method componentWillUnmount (line 72) | componentWillUnmount() {
  method render (line 76) | render() {

FILE: RNTester/TextExample.android.js
  method render (line 20) | render() {

FILE: RNTester/TextExample.ios.js
  method render (line 69) | render() {
  method render (line 227) | render() {

FILE: RNTester/TextInputExample.android.js
  method constructor (line 78) | constructor(props) {
  method render (line 82) | render() {
  method constructor (line 110) | constructor(props) {
  method render (line 114) | render() {
  method constructor (line 324) | constructor(props) {
  method UNSAFE_componentWillReceiveProps (line 338) | UNSAFE_componentWillReceiveProps(props) {
  method render (line 344) | render() {

FILE: RNTester/TextInputExample.ios.js
  method render (line 20) | render() {
  method constructor (line 95) | constructor(props) {
  method render (line 100) | render() {
  method constructor (line 124) | constructor(props) {
  method render (line 128) | render() {
  method constructor (line 156) | constructor(props) {
  method render (line 160) | render() {
  method constructor (line 177) | constructor(props) {
  method render (line 181) | render() {
  method constructor (line 376) | constructor(props) {
  method UNSAFE_componentWillReceiveProps (line 390) | UNSAFE_componentWillReceiveProps(props) {
  method render (line 396) | render() {

FILE: RNTester/TimePickerAndroidExample.js
  class TimePickerAndroidExample (line 24) | class TimePickerAndroidExample extends React.Component {
    method render (line 56) | render() {
  function _formatTime (line 110) | function _formatTime(hour, minute) {

FILE: RNTester/TimerExample.js
  function burnCPU (line 27) | function burnCPU(milliseconds) {
  class RequestIdleCallbackTester (line 32) | class RequestIdleCallbackTester extends React.Component<{}, $FlowFixMeSt...
    method render (line 44) | render() {

FILE: RNTester/TouchableExample.js
  method render (line 336) | render() {

FILE: RNTester/TransformExample.js
  method render (line 203) | render() {
  method render (line 215) | render() {
  method render (line 226) | render() {
  method render (line 237) | render() {
  method render (line 249) | render() {
  method render (line 260) | render() {
  method render (line 271) | render() {

FILE: RNTester/TransparentHitTestExample.js
  method render (line 18) | render() {

FILE: RNTester/VibrationExample.js
  method render (line 52) | render() {
  method render (line 62) | render() {
  method render (line 76) | render() {
  method render (line 90) | render() {
  method render (line 104) | render() {

FILE: RNTester/VibrationIOSExample.js
  method render (line 23) | render() {

FILE: RNTester/ViewPagerAndroidExample.android.js
  class LikeCount (line 36) | class LikeCount extends React.Component {
    method render (line 45) | render() {
  class Button (line 58) | class Button extends React.Component {
    method render (line 65) | render() {
  class ProgressBar (line 80) | class ProgressBar extends React.Component {
    method render (line 81) | render() {
  class ViewPagerAndroidExample (line 93) | class ViewPagerAndroidExample extends React.Component {
    method render (line 135) | render() {

FILE: RNTester/WebSocketExample.js
  constant DEFAULT_WS_URL (line 26) | const DEFAULT_WS_URL = 'ws://localhost:5555/';
  constant DEFAULT_HTTP_URL (line 27) | const DEFAULT_HTTP_URL = 'http://localhost:5556/';
  constant WS_EVENTS (line 28) | const WS_EVENTS = ['close', 'error', 'message', 'open'];
  constant WS_STATES (line 29) | const WS_STATES = [
  class Button (line 36) | class Button extends React.Component {
    method render (line 37) | render(): React.Element<any> {
  class Row (line 52) | class Row extends React.Component {
    method render (line 53) | render(): React.Element<any> {
  class WebSocketImage (line 64) | class WebSocketImage extends React.Component {
  function showValue (line 102) | function showValue(value) {

FILE: RNTester/WebViewExample.js
  constant FILE_SYSTEM_ORIGIN_WHITE_LIST (line 32) | const FILE_SYSTEM_ORIGIN_WHITE_LIST = ['file://*', 'http://*', 'https://...

FILE: RNTester/XHRExample.js
  method render (line 31) | render() {
  method render (line 37) | render() {
  method render (line 43) | render() {
  method render (line 49) | render() {
  method render (line 55) | render() {
  method render (line 61) | render() {
  method render (line 67) | render() {

FILE: RNTester/XHRExampleBinaryUpload.js
  constant BINARY_TYPES (line 25) | const BINARY_TYPES = {
  constant SAMPLE_TEXT (line 40) | const SAMPLE_TEXT = `
  class XHRExampleBinaryUpload (line 52) | class XHRExampleBinaryUpload extends React.Component<{}, $FlowFixMeState> {
    method handlePostTestServerUpload (line 53) | static handlePostTestServerUpload(xhr: XMLHttpRequest) {

FILE: RNTester/XHRExampleCookies.js
  class XHRExampleCookies (line 19) | class XHRExampleCookies extends React.Component<any, any> {

FILE: RNTester/XHRExampleDownload.js
  function roundKilo (line 30) | function roundKilo(value: number): number {
  class ProgressBar (line 34) | class ProgressBar extends React.Component<$FlowFixMeProps> {
    method render (line 35) | render() {

FILE: RNTester/XHRExampleFetch.js
  class XHRExampleFetch (line 17) | class XHRExampleFetch extends React.Component<any, any> {

FILE: RNTester/XHRExampleFormData.js
  constant PAGE_SIZE (line 31) | const PAGE_SIZE = 20;
  class XHRExampleFormData (line 33) | class XHRExampleFormData extends React.Component<Object, Object> {

FILE: RNTester/XHRExampleHeaders.js
  class XHRExampleHeaders (line 17) | class XHRExampleHeaders extends React.Component {
    method constructor (line 21) | constructor(props) {
    method download (line 32) | download() {
    method componentWillUnmount (line 72) | componentWillUnmount() {
    method render (line 77) | render() {

FILE: RNTester/createExamplePage.js
  method render (line 24) | render() {

FILE: android/app/src/main/java/com/marzipants/MainActivity.java
  class MainActivity (line 5) | public class MainActivity extends ReactActivity {
    method getMainComponentName (line 11) | @Override

FILE: android/app/src/main/java/com/marzipants/MainApplication.java
  class MainApplication (line 14) | public class MainApplication extends Application implements ReactApplica...
    method getUseDeveloperSupport (line 17) | @Override
    method getPackages (line 22) | @Override
    method getJSMainModuleName (line 29) | @Override
    method getReactNativeHost (line 35) | @Override
    method onCreate (line 40) | @Override

FILE: ios/Frameworks/UIFoundation.framework/Headers/CDStructures.h
  type CATransform3D (line 17) | struct CATransform3D {
  type CGAffineTransform (line 36) | struct CGAffineTransform {
  type CGPoint (line 45) | struct CGPoint {
  type CGRect (line 50) | struct CGRect {
  type CGSize (line 55) | struct CGSize {
  type CGVector (line 60) | struct CGVector {
  type NSEdgeInsets (line 65) | struct NSEdgeInsets {
  type RTFColor (line 72) | struct RTFColor
  type RTFFont (line 74) | struct RTFFont
  type RTFStyle (line 76) | struct RTFStyle
  type UIEdgeInsets (line 78) | struct UIEdgeInsets {
  type UIKeyAndScopeToValueCache (line 85) | struct UIKeyAndScopeToValueCache {
  type UIKeyToKeyIDCache (line 91) | struct UIKeyToKeyIDCache {
  type UINibArchiveTableInfo (line 100) | struct UINibArchiveTableInfo {
  type UINibDecoderHeader (line 105) | struct UINibDecoderHeader {
  type UINibDecoderObjectEntry (line 115) | struct UINibDecoderObjectEntry {
  type UINibDecoderRecursiveState (line 120) | struct UINibDecoderRecursiveState {
  type UINibDecoderValue (line 127) | struct UINibDecoderValue {
  type UIStringIDTableBucket (line 132) | struct UIStringIDTableBucket {
  type _NSAttributeDictionaryElement (line 138) | struct _NSAttributeDictionaryElement {
  type _NSAttributeInfo (line 144) | struct _NSAttributeInfo {
  type _NSDrawingParameters (line 166) | struct _NSDrawingParameters {
  type _NSGlyphIndexForPointCache (line 171) | struct _NSGlyphIndexForPointCache {
  type _NSGlyphNode (line 178) | struct _NSGlyphNode
  type _NSGlyphTree (line 180) | struct _NSGlyphTree {
  type _NSLayoutNode (line 187) | struct _NSLayoutNode
  type _NSLayoutTree (line 189) | struct _NSLayoutTree {
  type _NSRTFPriv (line 200) | struct _NSRTFPriv {
  type _NSRange (line 234) | struct _NSRange {
  type _NSRunBlock (line 239) | struct _NSRunBlock {
  type _NSStoredContainerUsage (line 244) | struct _NSStoredContainerUsage {
  type _xmlNode (line 257) | struct _xmlNode {
  type _xmlNs (line 276) | struct _xmlNs
  type CDStruct_a5183674 (line 280) | typedef struct {
  type CDStruct_2f5e8405 (line 286) | typedef struct {
  type CDStruct_627e0f85 (line 292) | typedef struct {
  type CDStruct_ec8253cd (line 297) | typedef struct {
  type CDStruct_3fda14a5 (line 320) | typedef struct {
  type CDUnion_09a75e3c (line 361) | typedef union {

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSATSGlyphStorage.h
  function interface (line 11) | interface NSATSGlyphStorage : CTGlyphStorageInterface
  type _NSZone (line 52) | struct _NSZone
  type CGSize (line 63) | struct CGSize
  type CGSize (line 65) | struct CGSize
  type __CTGlyphStorage (line 66) | struct __CTGlyphStorage
  type _NSRange (line 70) | struct _NSRange
  type _NSRange (line 71) | struct _NSRange
  type __CTLine (line 72) | struct __CTLine
  type CGRect (line 72) | struct CGRect
  type __CTRun (line 73) | struct __CTRun
  type __CFDictionary (line 73) | struct __CFDictionary
  type _NSRange (line 74) | struct _NSRange
  type __CTTypesetter (line 75) | struct __CTTypesetter
  type _NSRange (line 76) | struct _NSRange
  type _NSRange (line 76) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSATSLineFragment.h
  function interface (line 11) | interface NSATSLineFragment : NSObject
  type _NSRange (line 34) | struct _NSRange
  type _NSRange (line 39) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type CGRect (line 41) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSATSTypesetter.h
  function interface (line 11) | interface NSATSTypesetter : NSTypesetter
  type CGRect (line 31) | struct CGRect
  type CGRect (line 31) | struct CGRect
  type CGRect (line 31) | struct CGRect
  type _NSRange (line 35) | struct _NSRange
  type _NSRange (line 35) | struct _NSRange
  type CGRect (line 40) | struct CGRect
  type CGRect (line 40) | struct CGRect
  type CGPoint (line 40) | struct CGPoint
  type CGPoint (line 44) | struct CGPoint
  type _NSRange (line 46) | struct _NSRange
  type CGPoint (line 60) | struct CGPoint
  type __CTTypesetter (line 66) | struct __CTTypesetter

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSArray-UICollectionAdditions_Performance.h
  type _NSRange (line 10) | struct _NSRange
  type _NSRange (line 11) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSAttributeDictionary.h
  function interface (line 9) | interface NSAttributeDictionary : NSDictionary
  type _NSZone (line 19) | struct _NSZone
  type _NSZone (line 20) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSAttributeDictionaryEnumerator.h
  function interface (line 11) | interface NSAttributeDictionaryEnumerator : NSEnumerator

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSAttributedString-NSAttributedStringUIFoundationAdditions.h
  type _NSRange (line 12) | struct _NSRange
  type _NSRange (line 15) | struct _NSRange
  type _NSRange (line 16) | struct _NSRange
  type _NSRange (line 19) | struct _NSRange
  type _NSRange (line 20) | struct _NSRange
  type _NSRange (line 21) | struct _NSRange
  type _NSRange (line 22) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange
  type _NSRange (line 38) | struct _NSRange
  type _NSRange (line 39) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type _NSRange (line 41) | struct _NSRange
  type _NSRange (line 42) | struct _NSRange
  type _NSRange (line 43) | struct _NSRange
  type _NSRange (line 44) | struct _NSRange
  type _NSRange (line 45) | struct _NSRange
  type _NSRange (line 47) | struct _NSRange
  type _NSRange (line 49) | struct _NSRange
  type _NSRange (line 50) | struct _NSRange
  type _NSRange (line 51) | struct _NSRange
  type _NSRange (line 52) | struct _NSRange
  type _NSRange (line 52) | struct _NSRange
  type _NSRange (line 53) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSAttributedString-NSExtendedStringDrawing.h
  type _NSRange (line 10) | struct _NSRange
  type CGRect (line 11) | struct CGRect
  type CGSize (line 11) | struct CGSize
  type CGRect (line 12) | struct CGRect
  type CGRect (line 13) | struct CGRect
  type CGSize (line 13) | struct CGSize
  type _NSRange (line 14) | struct _NSRange
  type _NSRange (line 15) | struct _NSRange
  type CGRect (line 16) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSAttributedString-NSStringDrawing.h
  type CGSize (line 10) | struct CGSize
  type CGRect (line 11) | struct CGRect
  type CGPoint (line 12) | struct CGPoint

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCIDGlyphInfo.h
  function interface (line 11) | interface NSCIDGlyphInfo : NSGlyphInfo <NSSecureCoding>

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCTFont.h
  function interface (line 9) | interface NSCTFont : UIFont

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCTFontDescriptor.h
  function interface (line 9) | interface NSCTFontDescriptor : NSFontDescriptor
  type _NSZone (line 16) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCTGlyphInfo.h
  function interface (line 11) | interface NSCTGlyphInfo : NSGlyphInfo <NSSecureCoding>

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewAnimation.h
  function interface (line 12) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewData.h
  function interface (line 11) | interface NSCollectionViewData : NSObject
  type CGRect (line 54) | struct CGRect
  type CGRect (line 55) | struct CGRect
  type CGRect (line 59) | struct CGRect
  type CGRect (line 60) | struct CGRect
  type CGRect (line 61) | struct CGRect
  type CGRect (line 62) | struct CGRect
  type CGRect (line 63) | struct CGRect
  type CGRect (line 76) | struct CGRect
  type CGPoint (line 79) | struct CGPoint

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewFlowLayout.h
  function interface (line 11) | interface NSCollectionViewFlowLayout : NSCollectionViewLayout
  type NSEdgeInsets (line 63) | struct NSEdgeInsets
  type CGSize (line 106) | struct CGSize
  type CGRect (line 115) | struct CGRect
  type CGRect (line 116) | struct CGRect
  type CGRect (line 117) | struct CGRect
  type CGRect (line 118) | struct CGRect
  type CGRect (line 119) | struct CGRect
  type CGRect (line 120) | struct CGRect
  type CGRect (line 122) | struct CGRect
  type CGRect (line 123) | struct CGRect
  type CGRect (line 131) | struct CGRect
  type CGRect (line 132) | struct CGRect
  type CGRect (line 135) | struct CGRect
  type CGSize (line 136) | struct CGSize
  type CGSize (line 139) | struct CGSize
  type CGSize (line 141) | struct CGSize
  type CGSize (line 142) | struct CGSize
  type CGPoint (line 148) | struct CGPoint
  type CGPoint (line 149) | struct CGPoint
  type CGRect (line 151) | struct CGRect
  type CGPoint (line 157) | struct CGPoint
  type CGRect (line 158) | struct CGRect
  type CGRect (line 159) | struct CGRect
  type CGRect (line 160) | struct CGRect
  type CGRect (line 161) | struct CGRect
  type CGSize (line 162) | struct CGSize
  type CGRect (line 163) | struct CGRect
  type CGRect (line 164) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewFlowLayoutAuxiliary.h
  function interface (line 11) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewFlowLayoutInvalidationContext.h
  function interface (line 9) | interface NSCollectionViewFlowLayoutInvalidationContext : NSCollectionVi...

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewIndexMapper.h
  function interface (line 11) | interface NSCollectionViewIndexMapper : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayout.h
  function interface (line 13) | interface NSCollectionViewLayout : NSObject <NSCoding>
  type CGRect (line 61) | struct CGRect
  type CGPoint (line 78) | struct CGPoint
  type CGPoint (line 78) | struct CGPoint
  type CGRect (line 80) | struct CGRect
  type CGSize (line 81) | struct CGSize
  type CGPoint (line 85) | struct CGPoint
  type CGPoint (line 85) | struct CGPoint
  type CGPoint (line 86) | struct CGPoint
  type CGPoint (line 86) | struct CGPoint
  type CGSize (line 99) | struct CGSize
  type CGPoint (line 100) | struct CGPoint
  type CGPoint (line 103) | struct CGPoint
  type CGPoint (line 103) | struct CGPoint
  type CGPoint (line 104) | struct CGPoint
  type CGPoint (line 104) | struct CGPoint
  type CGPoint (line 104) | struct CGPoint
  type CGRect (line 106) | struct CGRect
  type CGRect (line 107) | struct CGRect
  type CGPoint (line 112) | struct CGPoint
  type CGRect (line 112) | struct CGRect
  type CGPoint (line 114) | struct CGPoint
  type CGRect (line 118) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayoutAttributes.h
  function interface (line 13) | interface NSCollectionViewLayoutAttributes : NSObject <NSCopying>
  type CGAffineTransform (line 59) | struct CGAffineTransform
  type CGAffineTransform (line 60) | struct CGAffineTransform
  type CATransform3D (line 61) | struct CATransform3D
  type CATransform3D (line 62) | struct CATransform3D
  type CGPoint (line 63) | struct CGPoint
  type CGPoint (line 64) | struct CGPoint
  type CGRect (line 67) | struct CGRect
  type CGRect (line 68) | struct CGRect
  type _NSZone (line 70) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayoutAttributesAuxiliary.h
  function interface (line 11) | __attribute__((visibility("hidden")))
  type _NSZone (line 22) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayoutInvalidationContext.h
  function interface (line 11) | interface NSCollectionViewLayoutInvalidationContext : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewTransitionLayout.h
  function interface (line 11) | interface NSCollectionViewTransitionLayout : NSCollectionViewLayout
  type CGRect (line 31) | struct CGRect
  type CGSize (line 36) | struct CGSize
  type CGPoint (line 37) | struct CGPoint
  type CGPoint (line 37) | struct CGPoint
  type CGRect (line 41) | struct CGRect
  type CGRect (line 42) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewUpdate.h
  function interface (line 11) | interface NSCollectionViewUpdate : NSObject
  type CGRect (line 42) | struct CGRect
  type CGRect (line 42) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewUpdateItem.h
  function interface (line 11) | interface NSCollectionViewUpdateItem : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSConcreteGlyphGenerator.h
  function interface (line 9) | interface NSConcreteGlyphGenerator : NSGlyphGenerator

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSConcreteNotifyingMutableAttributedString.h
  function interface (line 9) | interface NSConcreteNotifyingMutableAttributedString : NSConcreteMutable...
  type _NSRange (line 15) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSConcreteTextStorage.h
  function interface (line 11) | interface NSConcreteTextStorage : NSTextStorage
  type _NSRange (line 28) | struct _NSRange
  type _NSRange (line 29) | struct _NSRange
  type _NSRange (line 30) | struct _NSRange
  type _NSRange (line 31) | struct _NSRange
  type _NSRange (line 32) | struct _NSRange
  type _NSRange (line 33) | struct _NSRange
  type _NSRange (line 34) | struct _NSRange
  type _NSRange (line 34) | struct _NSRange
  type _NSRange (line 35) | struct _NSRange
  type _NSRange (line 36) | struct _NSRange
  type _NSRange (line 36) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCopying-Protocol.h
  type _NSZone (line 8) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSCoreTypesetter.h
  function interface (line 11) | interface NSCoreTypesetter : NSTypesetter
  type __CFArray (line 20) | struct __CFArray
  type _NSRange (line 21) | struct _NSRange
  type CGRect (line 29) | struct CGRect
  type CGRect (line 29) | struct CGRect
  type CGContext (line 29) | struct CGContext
  type CGRect (line 30) | struct CGRect
  type CGContext (line 30) | struct CGContext
  type CGRect (line 30) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSDocFormatReader.h
  function interface (line 11) | interface NSDocFormatReader : NSObject
  type _NSRange (line 101) | struct _NSRange
  type _NSRange (line 101) | struct _NSRange
  type _NSRange (line 102) | struct _NSRange
  type _NSRange (line 102) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSDocFormatWriter.h
  function interface (line 11) | interface NSDocFormatWriter : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSExtraLMData.h
  function interface (line 11) | interface NSExtraLMData : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSFont.h
  type __fFlags (line 19) | struct __fFlags {
  type _NSRange (line 41) | struct _NSRange
  type _NSZone (line 89) | struct _NSZone
  type CGPoint (line 101) | struct CGPoint
  type CGRect (line 101) | struct CGRect
  type CGPoint (line 102) | struct CGPoint
  type CGRect (line 102) | struct CGRect
  type CGPoint (line 103) | struct CGPoint
  type CGPoint (line 104) | struct CGPoint
  type CGPoint (line 105) | struct CGPoint
  type CGContext (line 115) | struct CGContext
  type CGSize (line 120) | struct CGSize
  type _NSZone (line 133) | struct _NSZone
  type CGSize (line 141) | struct CGSize
  type CGSize (line 142) | struct CGSize
  type CGSize (line 143) | struct CGSize
  type CGRect (line 144) | struct CGRect
  type CGRect (line 145) | struct CGRect
  type CGSize (line 146) | struct CGSize
  type CGSize (line 147) | struct CGSize
  type CGRect (line 148) | struct CGRect
  type CGRect (line 149) | struct CGRect
  type CGAffineTransform (line 186) | struct CGAffineTransform
  type CGFont (line 190) | struct CGFont

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSFontAssetRequest.h
  function interface (line 13) | interface NSFontAssetRequest : NSObject <NSProgressReporting>

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSFontDescriptor.h
  type _NSZone (line 51) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSGlyphGenerator.h
  function interface (line 9) | interface NSGlyphGenerator : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSGlyphInfo.h
  type _NSZone (line 25) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSGlyphNameGlyphInfo.h
  function interface (line 13) | interface NSGlyphNameGlyphInfo : NSIdentityGlyphInfo <NSSecureCoding>

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSHTMLReader.h
  function interface (line 11) | interface NSHTMLReader : NSObject
  type _xmlNode (line 76) | struct _xmlNode
  type _xmlNode (line 77) | struct _xmlNode
  type _xmlNode (line 78) | struct _xmlNode
  type _xmlNode (line 79) | struct _xmlNode
  type _xmlNode (line 80) | struct _xmlNode
  type _xmlNode (line 81) | struct _xmlNode
  type _xmlNode (line 82) | struct _xmlNode
  type _xmlNode (line 83) | struct _xmlNode
  type _xmlNode (line 84) | struct _xmlNode
  type _xmlNode (line 85) | struct _xmlNode
  type _xmlNode (line 86) | struct _xmlNode
  type _xmlNode (line 87) | struct _xmlNode
  type _NSRange (line 99) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSHTMLWebDelegate.h
  function interface (line 11) | interface NSHTMLWebDelegate : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSHTMLWriter.h
  function interface (line 11) | interface NSHTMLWriter : NSObject
  type _NSRange (line 76) | struct _NSRange
  type _NSRange (line 77) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSIdRunStorage.h
  function interface (line 9) | interface NSIdRunStorage : NSRunStorage

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSIdentityGlyphInfo.h
  function interface (line 13) | interface NSIdentityGlyphInfo : NSGlyphInfo <NSSecureCoding>

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSInsertionPointHelper.h
  function interface (line 9) | interface NSInsertionPointHelper : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSLayoutManager.h
  function interface (line 14) | interface NSLayoutManager : NSObject <NSCoding>
  type CGRect (line 100) | struct CGRect
  type _NSRange (line 101) | struct _NSRange
  type CGRect (line 101) | struct CGRect
  type _NSRange (line 101) | struct _NSRange
  type CGPoint (line 101) | struct CGPoint
  type _NSRange (line 102) | struct _NSRange
  type CGRect (line 102) | struct CGRect
  type _NSRange (line 102) | struct _NSRange
  type CGPoint (line 102) | struct CGPoint
  type _NSRange (line 103) | struct _NSRange
  type CGRect (line 103) | struct CGRect
  type _NSRange (line 103) | struct _NSRange
  type CGPoint (line 103) | struct CGPoint
  type _NSRange (line 104) | struct _NSRange
  type CGRect (line 104) | struct CGRect
  type _NSRange (line 104) | struct _NSRange
  type CGPoint (line 104) | struct CGPoint
  type CGRect (line 105) | struct CGRect
  type _NSRange (line 105) | struct _NSRange
  type CGPoint (line 106) | struct CGPoint
  type _NSRange (line 107) | struct _NSRange
  type CGPoint (line 107) | struct CGPoint
  type _NSRange (line 108) | struct _NSRange
  type CGPoint (line 108) | struct CGPoint
  type _NSRange (line 109) | struct _NSRange
  type _NSRange (line 109) | struct _NSRange
  type _NSRange (line 110) | struct _NSRange
  type _NSRange (line 110) | struct _NSRange
  type _NSRange (line 111) | struct _NSRange
  type _NSRange (line 118) | struct _NSRange
  type _NSRange (line 118) | struct _NSRange
  type _NSRange (line 119) | struct _NSRange
  type _NSRange (line 119) | struct _NSRange
  type _NSRange (line 120) | struct _NSRange
  type _NSRange (line 120) | struct _NSRange
  type _NSRange (line 121) | struct _NSRange
  type _NSRange (line 121) | struct _NSRange
  type _NSRange (line 122) | struct _NSRange
  type _NSRange (line 123) | struct _NSRange
  type _NSRange (line 124) | struct _NSRange
  type _NSRange (line 125) | struct _NSRange
  type _NSRange (line 126) | struct _NSRange
  type _NSRange (line 127) | struct _NSRange
  type _NSRange (line 128) | struct _NSRange
  type CGPoint (line 130) | struct CGPoint
  type CGPoint (line 131) | struct CGPoint
  type CGPoint (line 132) | struct CGPoint
  type CGPoint (line 133) | struct CGPoint
  type _NSRange (line 134) | struct _NSRange
  type CGRect (line 134) | struct CGRect
  type _NSRange (line 135) | struct _NSRange
  type CGRect (line 135) | struct CGRect
  type CGRect (line 136) | struct CGRect
  type _NSRange (line 136) | struct _NSRange
  type CGRect (line 137) | struct CGRect
  type _NSRange (line 137) | struct _NSRange
  type _NSRange (line 137) | struct _NSRange
  type CGRect (line 138) | struct CGRect
  type _NSRange (line 138) | struct _NSRange
  type _NSRange (line 138) | struct _NSRange
  type _NSRange (line 139) | struct _NSRange
  type _NSRange (line 140) | struct _NSRange
  type _NSRange (line 141) | struct _NSRange
  type _NSRange (line 141) | struct _NSRange
  type _NSRange (line 141) | struct _NSRange
  type _NSRange (line 142) | struct _NSRange
  type _NSRange (line 142) | struct _NSRange
  type _NSRange (line 142) | struct _NSRange
  type CGRect (line 143) | struct CGRect
  type _NSRange (line 143) | struct _NSRange
  type CGRect (line 144) | struct CGRect
  type _NSRange (line 144) | struct _NSRange
  type CGRect (line 145) | struct CGRect
  type _NSRange (line 145) | struct _NSRange
  type CGRect (line 146) | struct CGRect
  type _NSRange (line 146) | struct _NSRange
  type CGRect (line 147) | struct CGRect
  type _NSRange (line 147) | struct _NSRange
  type CGRect (line 148) | struct CGRect
  type _NSRange (line 148) | struct _NSRange
  type _NSRange (line 149) | struct _NSRange
  type CGSize (line 150) | struct CGSize
  type CGPoint (line 153) | struct CGPoint
  type CGRect (line 157) | struct CGRect
  type _NSRange (line 157) | struct _NSRange
  type CGRect (line 158) | struct CGRect
  type _NSRange (line 158) | struct _NSRange
  type CGRect (line 159) | struct CGRect
  type _NSRange (line 159) | struct _NSRange
  type CGRect (line 160) | struct CGRect
  type _NSRange (line 160) | struct _NSRange
  type CGRect (line 161) | struct CGRect
  type _NSRange (line 161) | struct _NSRange
  type CGRect (line 162) | struct CGRect
  type _NSRange (line 163) | struct _NSRange
  type _NSRange (line 164) | struct _NSRange
  type CGSize (line 169) | struct CGSize
  type _NSRange (line 169) | struct _NSRange
  type CGPoint (line 172) | struct CGPoint
  type _NSRange (line 172) | struct _NSRange
  type CGPoint (line 173) | struct CGPoint
  type _NSRange (line 173) | struct _NSRange
  type CGPoint (line 174) | struct CGPoint
  type _NSRange (line 174) | struct _NSRange
  type CGRect (line 175) | struct CGRect
  type CGRect (line 175) | struct CGRect
  type CGRect (line 176) | struct CGRect
  type _NSRange (line 176) | struct _NSRange
  type CGRect (line 176) | struct CGRect
  type _NSRange (line 177) | struct _NSRange
  type _NSRange (line 178) | struct _NSRange
  type _NSRange (line 179) | struct _NSRange
  type _NSRange (line 180) | struct _NSRange
  type _NSRange (line 181) | struct _NSRange
  type _NSRange (line 192) | struct _NSRange
  type _NSRange (line 193) | struct _NSRange
  type _NSRange (line 196) | struct _NSRange
  type _NSRange (line 197) | struct _NSRange
  type CGRect (line 201) | struct CGRect
  type _NSRange (line 203) | struct _NSRange
  type _NSRange (line 204) | struct _NSRange
  type _NSRange (line 205) | struct _NSRange
  type _NSRange (line 206) | struct _NSRange
  type _NSRange (line 207) | struct _NSRange
  type _NSRange (line 207) | struct _NSRange
  type _NSRange (line 208) | struct _NSRange
  type _NSRange (line 208) | struct _NSRange
  type _NSRange (line 210) | struct _NSRange
  type _NSRange (line 211) | struct _NSRange
  type _NSRange (line 212) | struct _NSRange
  type _NSRange (line 213) | struct _NSRange
  type _NSRange (line 213) | struct _NSRange
  type _NSRange (line 214) | struct _NSRange
  type _NSRange (line 214) | struct _NSRange
  type _NSRange (line 215) | struct _NSRange
  type _NSRange (line 215) | struct _NSRange
  type _NSRange (line 216) | struct _NSRange
  type _NSRange (line 216) | struct _NSRange
  type _NSRange (line 216) | struct _NSRange
  type _NSRange (line 237) | struct _NSRange
  type CGRect (line 263) | struct CGRect
  type CGRect (line 263) | struct CGRect
  type _NSRange (line 271) | struct _NSRange
  type CGRect (line 272) | struct CGRect
  type CGRect (line 272) | struct CGRect
  type _NSRange (line 273) | struct _NSRange
  type CGRect (line 274) | struct CGRect
  type _NSRange (line 283) | struct _NSRange
  type CGRect (line 294) | struct CGRect
  type _NSRange (line 294) | struct _NSRange
  type CGRect (line 294) | struct CGRect
  type _NSRange (line 300) | struct _NSRange
  type CGRect (line 303) | struct CGRect
  type CGRect (line 305) | struct CGRect
  type _NSRange (line 309) | struct _NSRange
  type _NSRange (line 314) | struct _NSRange
  type _NSRange (line 316) | struct _NSRange
  type CGPoint (line 316) | struct CGPoint
  type _NSDrawingParameters (line 316) | struct _NSDrawingParameters
  type _NSRange (line 317) | struct _NSRange
  type CGPoint (line 317) | struct CGPoint
  type _NSRange (line 318) | struct _NSRange
  type _NSRange (line 319) | struct _NSRange
  type _NSRange (line 320) | struct _NSRange
  type CGPoint (line 320) | struct CGPoint
  type _NSRange (line 322) | struct _NSRange
  type _NSRange (line 323) | struct _NSRange
  type _NSRange (line 324) | struct _NSRange
  type _NSRange (line 325) | struct _NSRange
  type _NSRange (line 327) | struct _NSRange
  type CGRect (line 327) | struct CGRect
  type _NSRange (line 328) | struct _NSRange
  type CGRect (line 328) | struct CGRect
  type _NSRange (line 329) | struct _NSRange
  type CGRect (line 329) | struct CGRect
  type _NSRange (line 329) | struct _NSRange
  type CGRect (line 330) | struct CGRect
  type _NSRange (line 330) | struct _NSRange
  type CGRect (line 331) | struct CGRect
  type _NSRange (line 331) | struct _NSRange
  type _NSRange (line 331) | struct _NSRange
  type _NSRange (line 331) | struct _NSRange
  type CGRect (line 332) | struct CGRect
  type _NSRange (line 332) | struct _NSRange
  type _NSRange (line 332) | struct _NSRange
  type _NSRange (line 332) | struct _NSRange
  type CGRect (line 332) | struct CGRect
  type _NSRange (line 334) | struct _NSRange
  type _NSStoredContainerUsage (line 339) | struct _NSStoredContainerUsage
  type _NSRange (line 341) | struct _NSRange
  type CGRect (line 342) | struct CGRect
  type _NSRange (line 349) | struct _NSRange
  type _NSRange (line 353) | struct _NSRange
  type _NSRange (line 356) | struct _NSRange
  type _NSRange (line 356) | struct _NSRange
  type _NSRange (line 357) | struct _NSRange
  type _NSRange (line 357) | struct _NSRange
  type _NSRange (line 358) | struct _NSRange
  type _NSRange (line 358) | struct _NSRange
  type _NSRange (line 358) | struct _NSRange
  type _NSRange (line 364) | struct _NSRange
  type _NSRange (line 367) | struct _NSRange
  type _NSRange (line 368) | struct _NSRange
  type _NSRange (line 371) | struct _NSRange
  type _NSRange (line 372) | struct _NSRange
  type _NSRange (line 372) | struct _NSRange
  type _NSRange (line 372) | struct _NSRange
  type _NSRange (line 375) | struct _NSRange
  type _NSRange (line 375) | struct _NSRange
  type _NSRange (line 376) | struct _NSRange
  type _NSRange (line 376) | struct _NSRange
  type _NSRange (line 377) | struct _NSRange
  type _NSRange (line 377) | struct _NSRange
  type _NSRange (line 378) | struct _NSRange
  type _NSRange (line 378) | struct _NSRange
  type _NSRange (line 379) | struct _NSRange
  type _NSRange (line 379) | struct _NSRange
  type _NSRange (line 380) | struct _NSRange
  type _NSRange (line 380) | struct _NSRange
  type _NSRange (line 384) | struct _NSRange
  type CGRect (line 384) | struct CGRect
  type _NSRange (line 385) | struct _NSRange
  type _NSRange (line 388) | struct _NSRange
  type CGRect (line 388) | struct CGRect
  type _NSRange (line 388) | struct _NSRange
  type CGPoint (line 388) | struct CGPoint
  type _NSRange (line 389) | struct _NSRange
  type CGRect (line 389) | struct CGRect
  type _NSRange (line 389) | struct _NSRange
  type CGPoint (line 389) | struct CGPoint
  type _NSRange (line 390) | struct _NSRange
  type CGContext (line 390) | struct CGContext
  type CGPoint (line 390) | struct CGPoint
  type _NSRange (line 391) | struct _NSRange
  type CGContext (line 391) | struct CGContext
  type CGPoint (line 391) | struct CGPoint
  type _NSRange (line 392) | struct _NSRange
  type _NSRange (line 392) | struct _NSRange
  type CGRect (line 392) | struct CGRect
  type _NSRange (line 392) | struct _NSRange
  type CGPoint (line 392) | struct CGPoint
  type CGRect (line 393) | struct CGRect
  type CGPoint (line 394) | struct CGPoint
  type CGAffineTransform (line 394) | struct CGAffineTransform
  type CGContext (line 394) | struct CGContext

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSLayoutManagerDelegate-Protocol.h
  type _NSRange (line 14) | struct _NSRange
  type CGSize (line 15) | struct CGSize
  type CGRect (line 19) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSLayoutManagerTextBlockHelper.h
  function interface (line 11) | interface NSLayoutManagerTextBlockHelper : NSObject
  type CGRect (line 19) | struct CGRect
  type CGRect (line 19) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSLayoutManagerTextBlockRowArrayCache.h
  function interface (line 11) | interface NSLayoutManagerTextBlockRowArrayCache : NSObject
  type _NSRange (line 20) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSLineFragmentRenderingContext.h
  function interface (line 13) | interface NSLineFragmentRenderingContext : NSObject <NSTextApplicationFr...
  type _NSZone (line 41) | struct _NSZone
  type CGRect (line 47) | struct CGRect
  type CGSize (line 53) | struct CGSize
  type __CFArray (line 58) | struct __CFArray

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSMutableArray-UICollectionAdditions_Performance.h
  type _NSRange (line 10) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSMutableAttributedString-NSMutableAttributedStringKitAdditions.h
  type _NSRange (line 11) | struct _NSRange
  type _NSRange (line 13) | struct _NSRange
  type _NSRange (line 19) | struct _NSRange
  type _NSRange (line 20) | struct _NSRange
  type _NSRange (line 21) | struct _NSRange
  type _NSRange (line 22) | struct _NSRange
  type _NSRange (line 23) | struct _NSRange
  type _NSRange (line 24) | struct _NSRange
  type _NSRange (line 25) | struct _NSRange
  type _NSRange (line 26) | struct _NSRange
  type _NSRange (line 27) | struct _NSRange
  type _NSRange (line 28) | struct _NSRange
  type _NSRange (line 29) | struct _NSRange
  type _NSRange (line 30) | struct _NSRange
  type _NSRange (line 32) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSMutableCopying-Protocol.h
  type _NSZone (line 8) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSMutableFontDescriptor.h
  function interface (line 9) | interface NSMutableFontDescriptor : NSFontDescriptor

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSMutableIndexPath.h
  function interface (line 9) | interface NSMutableIndexPath : NSIndexPath
  type _NSZone (line 18) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSMutableParagraphStyle.h
  function interface (line 11) | interface NSMutableParagraphStyle : NSParagraphStyle
  type _NSZone (line 15) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSObject-Protocol.h
  type _NSZone (line 13) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSOpenDocumentReader.h
  function interface (line 13) | interface NSOpenDocumentReader : NSObject <NSXMLParserDelegate>
  type _NSRange (line 68) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSOpenDocumentWriter.h
  function interface (line 11) | interface NSOpenDocumentWriter : NSObject
  type _NSRange (line 38) | struct _NSRange
  type _NSRange (line 42) | struct _NSRange
  type _NSRange (line 43) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSParagraphArbitrator.h
  function interface (line 11) | interface NSParagraphArbitrator : NSObject
  type _NSRange (line 23) | struct _NSRange
  type _NSRange (line 33) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSParagraphStyle.h
  type _NSZone (line 76) | struct _NSZone
  type _NSZone (line 77) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSParagraphStyleExtraData.h
  function interface (line 11) | interface NSParagraphStyleExtraData : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSRTFReader.h
  function interface (line 11) | interface NSRTFReader : NSObject
  type CGSize (line 143) | struct CGSize
  type CGSize (line 144) | struct CGSize
  type CGSize (line 145) | struct CGSize
  type CGSize (line 146) | struct CGSize

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSRTFReaderTableState.h
  function interface (line 11) | interface NSRTFReaderTableState : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSRTFWriter.h
  function interface (line 11) | interface NSRTFWriter : NSObject
  type _NSRange (line 44) | struct _NSRange
  type _NSRange (line 47) | struct _NSRange
  type _NSRange (line 101) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSRunStorage.h
  function interface (line 11) | interface NSRunStorage : NSObject <NSCopying>
  type _NSRange (line 28) | struct _NSRange
  type _NSRange (line 29) | struct _NSRange
  type _NSRange (line 30) | struct _NSRange
  type _NSRange (line 31) | struct _NSRange
  type _NSZone (line 34) | struct _NSZone
  type _NSRange (line 44) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSShadow.h
  type CGSize (line 17) | struct CGSize
  type _NSZone (line 34) | struct _NSZone
  type CGContext (line 37) | struct CGContext

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSSingleLineTypesetter.h
  function interface (line 9) | interface NSSingleLineTypesetter : NSATSTypesetter
  type _NSRange (line 27) | struct _NSRange
  type CGSize (line 28) | struct CGSize
  type _NSRange (line 28) | struct _NSRange
  type CGPoint (line 29) | struct CGPoint
  type _NSRange (line 29) | struct _NSRange
  type _NSRange (line 30) | struct _NSRange
  type _NSRange (line 31) | struct _NSRange
  type _NSRange (line 32) | struct _NSRange
  type _NSRange (line 34) | struct _NSRange
  type CGRect (line 35) | struct CGRect
  type _NSRange (line 35) | struct _NSRange
  type CGRect (line 35) | struct CGRect
  type CGRect (line 37) | struct CGRect
  type CGRect (line 37) | struct CGRect
  type CGRect (line 37) | struct CGRect
  type CGRect (line 37) | struct CGRect
  type _NSRange (line 38) | struct _NSRange
  type _NSRange (line 39) | struct _NSRange
  type _NSRange (line 39) | struct _NSRange
  type _NSRange (line 39) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type _NSRange (line 45) | struct _NSRange
  type _NSRange (line 46) | struct _NSRange
  type _NSRange (line 47) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSStorage.h
  function interface (line 9) | interface NSStorage : NSObject
  type __CFStorage (line 17) | struct __CFStorage
  type _NSRange (line 22) | struct _NSRange
  type _NSRange (line 23) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSString-NSExtendedStringDrawing.h
  type _NSRange (line 10) | struct _NSRange
  type CGRect (line 11) | struct CGRect
  type CGSize (line 11) | struct CGSize
  type CGRect (line 12) | struct CGRect
  type CGRect (line 13) | struct CGRect
  type CGSize (line 13) | struct CGSize
  type CGRect (line 14) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSString-NSStringDrawing.h
  type CGSize (line 26) | struct CGSize
  type CGRect (line 27) | struct CGRect
  type CGPoint (line 28) | struct CGPoint

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSString-NSStringDrawingExtension.h
  type CGSize (line 10) | struct CGSize
  type CGSize (line 10) | struct CGSize

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSStringDrawingContext.h
  function interface (line 11) | interface NSStringDrawingContext : NSObject
  type _NSZone (line 66) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSStringDrawingTextStorage.h
  function interface (line 13) | interface NSStringDrawingTextStorage : NSTextStorage <NSLayoutManagerDel...
  type _NSZone (line 36) | struct _NSZone
  type _NSRange (line 43) | struct _NSRange
  type _NSRange (line 44) | struct _NSRange
  type _NSRange (line 45) | struct _NSRange
  type _NSRange (line 46) | struct _NSRange
  type _NSRange (line 47) | struct _NSRange
  type _NSRange (line 47) | struct _NSRange
  type _NSRange (line 48) | struct _NSRange
  type _NSRange (line 49) | struct _NSRange
  type CGSize (line 58) | struct CGSize
  type CGPoint (line 60) | struct CGPoint
  type CGRect (line 60) | struct CGRect
  type _NSRange (line 61) | struct _NSRange
  type CGRect (line 61) | struct CGRect
  type CGContext (line 61) | struct CGContext
  type CGRect (line 62) | struct CGRect
  type CGContext (line 62) | struct CGContext
  type CGRect (line 72) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSStringDrawingTextStorageSettings.h
  function interface (line 9) | interface NSStringDrawingTextStorageSettings : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSSubstituteWebResource.h
  function interface (line 11) | interface NSSubstituteWebResource : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTempAttributeDictionary.h
  function interface (line 9) | interface NSTempAttributeDictionary : NSAttributeDictionary

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextAlternatives.h
  function interface (line 13) | interface NSTextAlternatives : NSObject <NSSecureCoding>
  type _NSZone (line 32) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextAttachment.h
  type CGRect (line 28) | struct CGRect
  type CGRect (line 51) | struct CGRect
  type CGRect (line 63) | struct CGRect
  type CGRect (line 63) | struct CGRect
  type CGPoint (line 63) | struct CGPoint
  type CGRect (line 64) | struct CGRect
  type CGRect (line 66) | struct CGRect
  type CGRect (line 67) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextAttachmentContainer-Protocol.h
  type CGRect (line 12) | struct CGRect
  type CGRect (line 12) | struct CGRect
  type CGPoint (line 12) | struct CGPoint
  type CGRect (line 13) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextAttachmentViewProvider.h
  function interface (line 11) | interface NSTextAttachmentViewProvider : NSObject
  type CGRect (line 25) | struct CGRect
  type CGRect (line 25) | struct CGRect
  type CGPoint (line 25) | struct CGPoint

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextBlock.h
  type CGRect (line 27) | struct CGRect
  type _NSRange (line 27) | struct _NSRange
  type CGRect (line 28) | struct CGRect
  type CGRect (line 28) | struct CGRect
  type CGRect (line 28) | struct CGRect
  type _NSRange (line 28) | struct _NSRange
  type CGRect (line 29) | struct CGRect
  type CGPoint (line 29) | struct CGPoint
  type CGRect (line 29) | struct CGRect
  type _NSRange (line 29) | struct _NSRange
  type _NSZone (line 45) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextBlockLayoutHelper.h
  function interface (line 11) | interface NSTextBlockLayoutHelper : NSObject
  type _NSRange (line 39) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type CGRect (line 40) | struct CGRect
  type CGRect (line 40) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextContainer.h
  type CGSize (line 18) | struct CGSize
  type __tcFlags (line 20) | struct __tcFlags {
  type CGPath (line 30) | struct CGPath
  type __CFArray (line 31) | struct __CFArray
  type __CFArray (line 32) | struct __CFArray
  type CGPoint (line 45) | struct CGPoint
  type CGRect (line 47) | struct CGRect
  type CGRect (line 47) | struct CGRect
  type CGRect (line 47) | struct CGRect
  type CGRect (line 48) | struct CGRect
  type CGRect (line 48) | struct CGRect
  type CGRect (line 48) | struct CGRect
  type CGRect (line 49) | struct CGRect
  type CGRect (line 49) | struct CGRect
  type CGRect (line 49) | struct CGRect
  type CGSize (line 57) | struct CGSize
  type CGSize (line 58) | struct CGSize
  type CGPoint (line 62) | struct CGPoint
  type CGSize (line 69) | struct CGSize
  type CGSize (line 70) | struct CGSize
  type NSEdgeInsets (line 72) | struct NSEdgeInsets
  type NSEdgeInsets (line 76) | struct NSEdgeInsets
  type NSEdgeInsets (line 81) | struct NSEdgeInsets

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextLayoutFragment.h
  function interface (line 11) | interface NSTextLayoutFragment : NSObject
  type CGPoint (line 43) | struct CGPoint
  type _NSRange (line 47) | struct _NSRange
  type CGRect (line 47) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextLineFragment.h
  function interface (line 11) | interface NSTextLineFragment : NSObject
  type CGPoint (line 28) | struct CGPoint
  type CGPoint (line 29) | struct CGPoint
  type CGPoint (line 30) | struct CGPoint
  type CGContext (line 30) | struct CGContext
  type CGRect (line 32) | struct CGRect
  type CGSize (line 35) | struct CGSize
  type __CTLine (line 36) | struct __CTLine
  type _NSRange (line 38) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextList.h
  type _NSZone (line 40) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextStorage.h
  function interface (line 12) | interface NSTextStorage : NSMutableAttributedString
  type _NSZone (line 28) | struct _NSZone
  type _NSRange (line 37) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange
  type _NSRange (line 39) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type _NSRange (line 43) | struct _NSRange
  type _NSRange (line 43) | struct _NSRange
  type _NSRange (line 45) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextTab.h
  type _NSZone (line 29) | struct _NSZone
  type _NSZone (line 37) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextTable.h
  function interface (line 9) | interface NSTextTable : NSTextBlock
  type CGRect (line 19) | struct CGRect
  type _NSRange (line 19) | struct _NSRange
  type _NSRange (line 20) | struct _NSRange
  type CGRect (line 21) | struct CGRect
  type CGRect (line 21) | struct CGRect
  type CGRect (line 21) | struct CGRect
  type _NSRange (line 21) | struct _NSRange
  type CGRect (line 22) | struct CGRect
  type _NSRange (line 22) | struct _NSRange
  type CGRect (line 23) | struct CGRect
  type CGPoint (line 23) | struct CGPoint
  type CGRect (line 23) | struct CGRect
  type _NSRange (line 23) | struct _NSRange
  type _NSRange (line 25) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTextTableBlock.h
  function interface (line 11) | interface NSTextTableBlock : NSTextBlock
  type CGRect (line 23) | struct CGRect
  type _NSRange (line 23) | struct _NSRange
  type CGRect (line 24) | struct CGRect
  type CGRect (line 24) | struct CGRect
  type CGRect (line 24) | struct CGRect
  type _NSRange (line 24) | struct _NSRange
  type CGRect (line 25) | struct CGRect
  type CGPoint (line 25) | struct CGPoint
  type CGRect (line 25) | struct CGRect
  type _NSRange (line 25) | struct _NSRange
  type _NSZone (line 33) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSTypesetter.h
  function interface (line 11) | interface NSTypesetter : NSObject
  type CGSize (line 16) | struct CGSize
  type _NSRange (line 16) | struct _NSRange
  type _NSRange (line 25) | struct _NSRange
  type CGSize (line 26) | struct CGSize
  type _NSRange (line 26) | struct _NSRange
  type CGPoint (line 27) | struct CGPoint
  type _NSRange (line 27) | struct _NSRange
  type _NSRange (line 28) | struct _NSRange
  type _NSRange (line 29) | struct _NSRange
  type _NSRange (line 30) | struct _NSRange
  type _NSRange (line 32) | struct _NSRange
  type CGRect (line 33) | struct CGRect
  type _NSRange (line 33) | struct _NSRange
  type CGRect (line 33) | struct CGRect
  type CGRect (line 34) | struct CGRect
  type CGRect (line 34) | struct CGRect
  type CGRect (line 34) | struct CGRect
  type CGRect (line 34) | struct CGRect
  type _NSRange (line 35) | struct _NSRange
  type _NSRange (line 36) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange
  type _NSRange (line 38) | struct _NSRange
  type _NSRange (line 38) | struct _NSRange
  type _NSRange (line 38) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type _NSRange (line 40) | struct _NSRange
  type CGRect (line 45) | struct CGRect
  type CGRect (line 45) | struct CGRect
  type _NSRange (line 45) | struct _NSRange
  type CGPoint (line 45) | struct CGPoint
  type _NSRange (line 46) | struct _NSRange
  type CGRect (line 51) | struct CGRect
  type CGRect (line 51) | struct CGRect
  type _NSRange (line 51) | struct _NSRange
  type CGRect (line 52) | struct CGRect
  type CGRect (line 53) | struct CGRect
  type CGRect (line 54) | struct CGRect
  type _NSRange (line 55) | struct _NSRange
  type CGPoint (line 59) | struct CGPoint
  type _NSRange (line 64) | struct _NSRange
  type _NSRange (line 64) | struct _NSRange
  type _NSRange (line 82) | struct _NSRange
  type _NSRange (line 82) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSViewAnimationContext.h
  function interface (line 11) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSWordMLReader.h
  function interface (line 13) | interface NSWordMLReader : NSObject <NSXMLParserDelegate>
  type _NSRange (line 68) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSWordMLWriter.h
  function interface (line 11) | interface NSWordMLWriter : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/NSZipTextReader.h
  function interface (line 11) | interface NSZipTextReader : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/UIBoxcarFilterPointFIFO.h
  function interface (line 11) | interface UIBoxcarFilterPointFIFO : UIPointFIFO

FILE: ios/Frameworks/UIFoundation.framework/Headers/UIFont.h
  function interface (line 13) | interface UIFont : NSFont <NSSecureCoding>
  type CGSize (line 94) | struct CGSize
  type CGSize (line 95) | struct CGSize
  type CGSize (line 96) | struct CGSize
  type CGRect (line 97) | struct CGRect
  type CGRect (line 98) | struct CGRect
  type CGSize (line 99) | struct CGSize
  type CGRect (line 100) | struct CGRect
  type CGSize (line 110) | struct CGSize
  type CGRect (line 111) | struct CGRect
  type CGAffineTransform (line 131) | struct CGAffineTransform
  type CGFont (line 135) | struct CGFont

FILE: ios/Frameworks/UIFoundation.framework/Headers/UIFontDescriptor.h
  function interface (line 11) | interface UIFontDescriptor : NSFontDescriptor
  type _NSZone (line 46) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/UINibCoderValue.h
  function interface (line 11) | interface UINibCoderValue : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/UINibDecoder.h
  function interface (line 11) | interface UINibDecoder : NSCoder
  type UIEdgeInsets (line 54) | struct UIEdgeInsets
  type CGAffineTransform (line 55) | struct CGAffineTransform
  type CGRect (line 56) | struct CGRect
  type CGSize (line 57) | struct CGSize
  type CGPoint (line 58) | struct CGPoint

FILE: ios/Frameworks/UIFoundation.framework/Headers/UINibEncoder.h
  function interface (line 11) | interface UINibEncoder : NSCoder
  type UIEdgeInsets (line 42) | struct UIEdgeInsets
  type CGAffineTransform (line 43) | struct CGAffineTransform
  type CGRect (line 44) | struct CGRect
  type CGSize (line 45) | struct CGSize
  type CGPoint (line 46) | struct CGPoint

FILE: ios/Frameworks/UIFoundation.framework/Headers/UINibStringIDTable.h
  function interface (line 9) | interface UINibStringIDTable : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/UIPointFIFO.h
  function interface (line 9) | interface UIPointFIFO : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/UIQuadCurvePointFIFO.h
  function interface (line 11) | interface UIQuadCurvePointFIFO : UIPointFIFO
  type CGSize (line 41) | struct CGSize
  type CGSize (line 41) | struct CGSize

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSATSTypesetterGuts.h
  function interface (line 11) | interface _NSATSTypesetterGuts : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSAttributeRun.h
  function interface (line 13) | interface _NSAttributeRun : NSObject <NSCopying>
  type _NSRange (line 20) | struct _NSRange
  type _NSZone (line 21) | struct _NSZone
  type _NSRange (line 24) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSAttributes.h
  function interface (line 11) | interface _NSAttributes : NSObject
  type _NSRange (line 19) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSCachedAttributedString.h
  function interface (line 11) | interface _NSCachedAttributedString : NSMutableAttributedString
  type _NSZone (line 27) | struct _NSZone
  type _NSRange (line 34) | struct _NSRange
  type _NSRange (line 35) | struct _NSRange
  type _NSRange (line 36) | struct _NSRange
  type _NSRange (line 36) | struct _NSRange
  type _NSRange (line 37) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSCollectionViewCore.h
  function interface (line 12) | interface _NSCollectionViewCore : NSObject
  type CGPoint (line 190) | struct CGPoint
  type CGRect (line 190) | struct CGRect
  type CGRect (line 190) | struct CGRect
  type CGSize (line 190) | struct CGSize
  type CGSize (line 190) | struct CGSize
  type CGPoint (line 246) | struct CGPoint
  type CGPoint (line 263) | struct CGPoint
  type CGRect (line 284) | struct CGRect
  type CGVector (line 288) | struct CGVector
  type CGRect (line 288) | struct CGRect
  type CGRect (line 289) | struct CGRect
  type CGRect (line 289) | struct CGRect
  type CGVector (line 289) | struct CGVector
  type CGRect (line 290) | struct CGRect
  type CGSize (line 292) | struct CGSize
  type CGSize (line 293) | struct CGSize
  type CGPoint (line 294) | struct CGPoint
  type CGPoint (line 295) | struct CGPoint
  type CGRect (line 300) | struct CGRect
  type CGRect (line 301) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSCollectionViewItemKey.h
  function interface (line 13) | interface _NSCollectionViewItemKey : NSObject <NSCopying>
  type _NSZone (line 33) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSCollectionViewPrefetchItem.h
  function interface (line 12) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSCollectionViewPrefetchingContext.h
  function interface (line 12) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSCollectionViewTrackedValue.h
  function interface (line 11) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSCollectionViewTrackedValueItem.h
  function interface (line 9) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSFlowLayoutInfo.h
  function interface (line 11) | interface _NSFlowLayoutInfo : NSObject
  type CGSize (line 47) | struct CGSize
  type CGRect (line 51) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSFlowLayoutItem.h
  function interface (line 11) | interface _NSFlowLayoutItem : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSFlowLayoutRow.h
  function interface (line 11) | interface _NSFlowLayoutRow : NSObject
  type CGPoint (line 37) | struct CGPoint

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSFlowLayoutSection.h
  function interface (line 11) | interface _NSFlowLayoutSection : NSObject
  type CGRect (line 79) | struct CGRect
  type CGSize (line 81) | struct CGSize
  type CGSize (line 86) | struct CGSize
  type CGRect (line 88) | struct CGRect
  type CGPoint (line 95) | struct CGPoint
  type CGRect (line 99) | struct CGRect

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSTextStorageSideData.h
  function interface (line 9) | interface _NSTextStorageSideData : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/_NSUIAnimator.h
  function interface (line 9) | interface _NSUIAnimator : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/_UICache.h
  function interface (line 12) | interface _UICache : NSObject

FILE: ios/Frameworks/UIFoundation.framework/Headers/_UIFontCacheKey.h
  function interface (line 13) | interface _UIFontCacheKey : NSObject <NSCopying>
  type _NSZone (line 42) | struct _NSZone

FILE: ios/Frameworks/UIFoundation.framework/Headers/_UIPointVector.h
  function interface (line 9) | __attribute__((visibility("hidden")))

FILE: ios/Frameworks/UIFoundation.framework/Headers/__NSATSStringSegment.h
  function interface (line 9) | interface __NSATSStringSegment : NSString
  type _NSZone (line 18) | struct _NSZone
  type _NSRange (line 20) | struct _NSRange
  type _NSRange (line 24) | struct _NSRange
  type _NSRange (line 25) | struct _NSRange

FILE: ios/Frameworks/UIFoundation.framework/Headers/__NSFontTypefaceInfo.h
  function interface (line 11) | interface __NSFontTypefaceInfo : NSObject
  type __CTFont (line 45) | struct __CTFont
  type CGSize (line 46) | struct CGSize
  type __CTFont (line 48) | struct __CTFont

FILE: ios/Frameworks/UIFoundation.framework/Headers/__NSSharedFontInstanceInfo.h
  function interface (line 11) | interface __NSSharedFontInstanceInfo : NSObject
  type CGFont (line 65) | struct CGFont
  type __CTFont (line 66) | struct __CTFont

FILE: ios/Frameworks/UIFoundation.framework/Headers/__UIFontExtraData.h
  function interface (line 11) | interface __UIFontExtraData : NSObject

FILE: ios/Frameworks/UIKit.framework/Headers/NSItemProvider+UIKitAdditions.h
  function NS_ASSUME_NONNULL_BEGIN (line 14) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/NSLayoutConstraint.h
  type UILayoutPriority (line 90) | typedef float UILayoutPriority

FILE: ios/Frameworks/UIKit.framework/Headers/NSParagraphStyle.h
  function end (line 32) | end

FILE: ios/Frameworks/UIKit.framework/Headers/NSStringDrawing.h
  function end (line 43) | end

FILE: ios/Frameworks/UIKit.framework/Headers/NSText.h
  function NS_ASSUME_NONNULL_BEGIN (line 15) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/NSTextAttachment.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/NSTextStorage.h
  function NS_ASSUME_NONNULL_BEGIN (line 17) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIAccessibilityConstants.h
  type UIAccessibilityNotifications (line 115) | typedef uint32_t UIAccessibilityNotifications
  type NSString (line 186) | typedef NSString * UIAccessibilityAssistiveTechnologyIdentifier
  type UIAccessibility (line 278) | typedef struct UIAccessibility { void *_reserved; } UIAccessibility;

FILE: ios/Frameworks/UIKit.framework/Headers/UIAccessibilityCustomRotor.h
  type UIAccessibilityCustomRotorItemResult (line 61) | typedef UIAccessibilityCustomRotorItemResult *_Nullable(^UIAccessibility...

FILE: ios/Frameworks/UIKit.framework/Headers/UIAccessibilityZoom.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIActivity.h
  type NSString (line 17) | typedef NSString * UIActivityType
  type NSString (line 19) | typedef NSString * UIActivityType;

FILE: ios/Frameworks/UIKit.framework/Headers/UIActivityIndicatorView.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIAlertController.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIAlertView.h
  function NS_ASSUME_NONNULL_BEGIN (line 14) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIApplication.h
  function NS_ASSUME_NONNULL_BEGIN (line 18) | NS_ASSUME_NONNULL_BEGIN
  type UIApplicationStateActive (line 87) | typedef NS_ENUM(NSInteger, UIApplicationState) {
  type NSUInteger (line 93) | typedef NSUInteger UIBackgroundTaskIdentifier
  type NSString (line 99) | typedef NSString * UIApplicationOpenExternalURLOptionsKey
  type NSString (line 297) | typedef NSString * UIApplicationLaunchOptionsKey
  type NSString (line 299) | typedef NSString * UIApplicationLaunchOptionsKey;
  type NSString (line 322) | typedef NSString * UIApplicationOpenURLOptionsKey
  type NSString (line 324) | typedef NSString * UIApplicationOpenURLOptionsKey;
  type NSString (line 403) | typedef NSString * UIApplicationExtensionPointIdentifier
  type NSString (line 405) | typedef NSString * UIApplicationExtensionPointIdentifier;

FILE: ios/Frameworks/UIKit.framework/Headers/UIApplicationShortcutItem.h
  type UIApplicationShortcutIconTypeCompose (line 16) | typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIAttachmentBehavior.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN
  type UIFloatRange (line 19) | typedef struct {
  function UIKIT_STATIC_INLINE (line 29) | UIKIT_STATIC_INLINE UIFloatRange UIFloatRangeMake(CGFloat minimum, CGFlo...

FILE: ios/Frameworks/UIKit.framework/Headers/UIBarButtonItem.h
  function NS_ASSUME_NONNULL_BEGIN (line 18) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIBezierPath.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIBlurEffect.h
  function NS_ASSUME_NONNULL_BEGIN (line 11) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UICollectionView.h
  function NS_ASSUME_NONNULL_BEGIN (line 17) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UICollectionViewCell.h
  type UICollectionViewCellDragStateNone (line 20) | typedef NS_ENUM(NSInteger, UICollectionViewCellDragState) {

FILE: ios/Frameworks/UIKit.framework/Headers/UICollectionViewFlowLayout.h
  type UICollectionViewScrollDirectionVertical (line 20) | typedef NS_ENUM(NSInteger, UICollectionViewScrollDirection) {
  type UICollectionViewFlowLayoutSectionInsetFromContentInset (line 25) | typedef NS_ENUM(NSInteger, UICollectionViewFlowLayoutSectionInsetReferen...

FILE: ios/Frameworks/UIKit.framework/Headers/UIContextualAction.h
  type UIContextualActionStyleNormal (line 21) | typedef NS_ENUM(NSInteger, UIContextualActionStyle) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIDatePicker.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIDevice.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN
  type UIDeviceBatteryStateUnknown (line 24) | typedef NS_ENUM(NSInteger, UIDeviceBatteryState) {
  function BOOL (line 39) | static inline BOOL UIDeviceOrientationIsPortrait(UIDeviceOrientation ori...
  function BOOL (line 43) | static inline BOOL UIDeviceOrientationIsLandscape(UIDeviceOrientation or...
  function BOOL (line 47) | static inline __attribute__((always_inline)) BOOL UIDeviceOrientationIsF...
  function BOOL (line 51) | static inline __attribute__((always_inline)) BOOL UIDeviceOrientationIsV...

FILE: ios/Frameworks/UIKit.framework/Headers/UIDocument.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN
  type UIDocumentSaveForCreating (line 22) | typedef NS_ENUM(NSInteger, UIDocumentSaveOperation) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIDocumentBrowserAction.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIDocumentBrowserViewController.h
  type UIDocumentBrowserImportModeNone (line 23) | typedef NS_ENUM(NSUInteger, UIDocumentBrowserImportMode) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIDocumentMenuViewController.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIDocumentPickerViewController.h
  function end (line 27) | end

FILE: ios/Frameworks/UIKit.framework/Headers/UIDragSession.h
  function end (line 75) | end

FILE: ios/Frameworks/UIKit.framework/Headers/UIDropInteraction.h
  function UIKIT_EXTERN (line 17) | UIKIT_EXTERN API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos, tvos) @in...

FILE: ios/Frameworks/UIKit.framework/Headers/UIDynamicBehavior.h
  type UIDynamicItemCollisionBoundsTypeRectangle (line 17) | typedef NS_ENUM(NSUInteger, UIDynamicItemCollisionBoundsType) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIEvent.h
  type UIEventTypeTouches (line 17) | typedef NS_ENUM(NSInteger, UIEventType) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIFocus.h
  type NSString (line 28) | typedef NSString * UIFocusSoundIdentifier
  type NSString (line 30) | typedef NSString * UIFocusSoundIdentifier;

FILE: ios/Frameworks/UIKit.framework/Headers/UIFontDescriptor.h
  function NS_ASSUME_NONNULL_BEGIN (line 14) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIGeometry.h
  function NS_ASSUME_NONNULL_BEGIN (line 14) | NS_ASSUME_NONNULL_BEGIN
  type NSDirectionalEdgeInsets (line 25) | typedef struct NSDirectionalEdgeInsets {
  type UIOffset (line 29) | typedef struct UIOffset {
  function UIKIT_STATIC_INLINE (line 42) | UIKIT_STATIC_INLINE UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat l...
  function UIKIT_STATIC_INLINE (line 47) | UIKIT_STATIC_INLINE NSDirectionalEdgeInsets NSDirectionalEdgeInsetsMake(...
  function UIKIT_STATIC_INLINE (line 53) | UIKIT_STATIC_INLINE CGRect UIEdgeInsetsInsetRect(CGRect rect, UIEdgeInse...
  function UIKIT_STATIC_INLINE (line 61) | UIKIT_STATIC_INLINE UIOffset UIOffsetMake(CGFloat horizontal, CGFloat ve...
  function UIKIT_STATIC_INLINE (line 66) | UIKIT_STATIC_INLINE BOOL UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsets inse...
  function UIKIT_STATIC_INLINE (line 70) | UIKIT_STATIC_INLINE BOOL NSDirectionalEdgeInsetsEqualToDirectionalEdgeIn...
  function UIKIT_STATIC_INLINE (line 75) | UIKIT_STATIC_INLINE BOOL UIOffsetEqualToOffset(UIOffset offset1, UIOffse...

FILE: ios/Frameworks/UIKit.framework/Headers/UIGestureRecognizer.h
  type UIGestureRecognizerStatePossible (line 18) | typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIGuidedAccessRestrictions.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIImage.h
  type UIImageOrientationUp (line 29) | typedef NS_ENUM(NSInteger, UIImageOrientation) {
  type UIImageResizingModeTile (line 45) | typedef NS_ENUM(NSInteger, UIImageResizingMode) {
  type UIImageRenderingModeAutomatic (line 52) | typedef NS_ENUM(NSInteger, UIImageRenderingMode) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIImagePickerController.h
  type UIImagePickerControllerSourceTypePhotoLibrary (line 18) | typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
  type UIImagePickerControllerCameraCaptureModePhoto (line 33) | typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraCaptureMode) {
  type UIImagePickerControllerCameraDeviceRear (line 38) | typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {
  type NSString (line 54) | typedef NSString * UIImagePickerControllerInfoKey

FILE: ios/Frameworks/UIKit.framework/Headers/UIImpactFeedbackGenerator.h
  function NS_ASSUME_NONNULL_BEGIN (line 11) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIInputView.h
  function NS_ASSUME_NONNULL_BEGIN (line 11) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIInterface.h
  type UIUserInterfaceStyleUnspecified (line 33) | typedef NS_ENUM(NSInteger, UIUserInterfaceStyle) {
  type UIUserInterfaceLayoutDirectionLeftToRight (line 39) | typedef NS_ENUM(NSInteger, UIUserInterfaceLayoutDirection) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIMenuController.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIMotionEffect.h
  function NS_ASSUME_NONNULL_BEGIN (line 15) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UINavigationController.h
  function NS_ASSUME_NONNULL_BEGIN (line 31) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UINavigationItem.h
  function NS_ASSUME_NONNULL_BEGIN (line 15) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UINotificationFeedbackGenerator.h
  function NS_ASSUME_NONNULL_BEGIN (line 11) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIPageViewController.h
  type UIPageViewControllerNavigationDirectionForward (line 25) | typedef NS_ENUM(NSInteger, UIPageViewControllerNavigationDirection) {
  type NSString (line 35) | typedef NSString * UIPageViewControllerOptionsKey

FILE: ios/Frameworks/UIKit.framework/Headers/UIPasteboard.h
  type NSString (line 15) | typedef NSString * UIPasteboardName
  type NSString (line 17) | typedef NSString * UIPasteboardName;
  type NSString (line 84) | typedef NSString * UIPasteboardOption

FILE: ios/Frameworks/UIKit.framework/Headers/UIPrintInfo.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIProgressView.h
  type UIProgressViewStyleDefault (line 17) | typedef NS_ENUM(NSInteger, UIProgressViewStyle) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIPushBehavior.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UIResponder.h
  function end (line 102) | end

FILE: ios/Frameworks/UIKit.framework/Headers/UIScreen.h
  type UIScreenOverscanCompensationScale (line 30) | typedef NS_ENUM(NSInteger, UIScreenOverscanCompensation) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIScrollView.h
  function NS_ASSUME_NONNULL_BEGIN (line 16) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UISearchBar.h
  function NS_ASSUME_NONNULL_BEGIN (line 18) | NS_ASSUME_NONNULL_BEGIN
  type UISearchBarStyleDefault (line 27) | typedef NS_ENUM(NSUInteger, UISearchBarStyle) {

FILE: ios/Frameworks/UIKit.framework/Headers/UISplitViewController.h
  type UISplitViewControllerDisplayModeAutomatic (line 15) | typedef NS_ENUM(NSInteger, UISplitViewControllerDisplayMode) {
  type UISplitViewControllerPrimaryEdgeLeading (line 22) | typedef NS_ENUM(NSInteger, UISplitViewControllerPrimaryEdge) {

FILE: ios/Frameworks/UIKit.framework/Headers/UISpringLoadedInteraction.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UISwipeGestureRecognizer.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UITabBar.h
  function NS_ASSUME_NONNULL_BEGIN (line 14) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UITabBarItem.h
  function NS_ASSUME_NONNULL_BEGIN (line 15) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UITableView.h
  function NS_ASSUME_NONNULL_BEGIN (line 21) | NS_ASSUME_NONNULL_BEGIN
  function end (line 505) | end

FILE: ios/Frameworks/UIKit.framework/Headers/UITableViewCell.h
  type UITableViewCellStyleDefault (line 20) | typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
  type UITableViewCellSeparatorStyleNone (line 27) | typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
  type UITableViewCellSelectionStyleNone (line 33) | typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {
  type UITableViewCellFocusStyleDefault (line 40) | typedef NS_ENUM(NSInteger, UITableViewCellFocusStyle) {
  type UITableViewCellEditingStyleNone (line 45) | typedef NS_ENUM(NSInteger, UITableViewCellEditingStyle) {
  type UITableViewCellAccessoryNone (line 51) | typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) {
  type UITableViewCellDragStateNone (line 65) | typedef NS_ENUM(NSInteger, UITableViewCellDragState) {

FILE: ios/Frameworks/UIKit.framework/Headers/UITextDragging.h
  function NS_ASSUME_NONNULL_BEGIN (line 13) | NS_ASSUME_NONNULL_BEGIN

FILE: ios/Frameworks/UIKit.framework/Headers/UITextDropping.h
  function end (line 36) | end

FILE: ios/Frameworks/UIKit.framework/Headers/UITextField.h
  type UITextBorderStyleNone (line 35) | typedef NS_ENUM(NSInteger, UITextBorderStyle) {
  type UITextFieldViewModeNever (line 42) | typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
  type UITextFieldDidEndEditingReasonCommitted (line 49) | typedef NS_ENUM(NSInteger, UITextFieldDidEndEditingReason) {

FILE: ios/Frameworks/UIKit.framework/Headers/UITextInput.h
  type NSInteger (line 57) | typedef NSInteger UITextDirection
  type UITextGranularityCharacter (line 65) | typedef NS_ENUM(NSInteger, UITextGranularity) {

FILE: ios/Frameworks/UIKit.framework/Headers/UITextInputTraits.h
  function NS_ASSUME_NONNULL_BEGIN (line 12) | NS_ASSUME_NONNULL_BEGIN
  type NSString (line 151) | typedef NSString * UITextContentType
  type NSString (line 153) | typedef NSString * UITextContentType;

FILE: ios/Frameworks/UIKit.framework/Headers/UITextItemInteraction.h
  type UITextItemInteractionInvokeDefaultAction (line 9) | typedef NS_ENUM(NSInteger, UITextItemInteraction) {

FILE: ios/Frameworks/UIKit.framework/Headers/UITimingCurveProvider.h
  type UITimingCurveTypeBuiltin (line 11) | typedef NS_ENUM(NSInteger, UITimingCurveType) {

FILE: ios/Frameworks/UIKit.framework/Headers/UITouch.h
  type UITouchPhaseBegan (line 17) | typedef NS_ENUM(NSInteger, UITouchPhase) {
  type UITouchTypeDirect (line 31) | typedef NS_ENUM(NSInteger, UITouchType) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIUserNotificationSettings.h
  type UIUserNotificationActionBehaviorDefault (line 24) | typedef NS_ENUM(NSUInteger, UIUserNotificationActionBehavior) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIView.h
  type UIViewContentModeScaleToFill (line 29) | typedef NS_ENUM(NSInteger, UIViewContentMode) {
  type UIViewAnimationTransitionNone (line 45) | typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
  type UISystemAnimationDelete (line 111) | typedef NS_ENUM(NSUInteger, UISystemAnimation) {
  type UIViewTintAdjustmentModeAutomatic (line 115) | typedef NS_ENUM(NSInteger, UIViewTintAdjustmentMode) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIViewAnimating.h
  type UIViewAnimatingStateInactive (line 13) | typedef NS_ENUM(NSInteger, UIViewAnimatingState)
  type UIViewAnimatingPositionEnd (line 20) | typedef NS_ENUM(NSInteger, UIViewAnimatingPosition) {

FILE: ios/Frameworks/UIKit.framework/Headers/UIViewControllerTransitionCoordinator.h
  type NSString (line 17) | typedef NSString * UITransitionContextViewControllerKey
  type NSString (line 18) | typedef NSString * UITransitionContextViewKey
  type NSString (line 20) | typedef NSString * UITransitionContextViewControllerKey;
  type NSString (line 21) | typedef NSString * UITransitionContextViewKey;

FILE: ios/Frameworks/UIKit.framework/Headers/UIWebView.h
  function NS_ASSUME_NONNULL_BEGIN (line 15) | NS_ASSUME_NONNULL_BEGIN
  type UIWebPaginationModeUnpaginated (line 26) | typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
  type UIWebPaginationBreakingModePage (line 34) | typedef NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {
Condensed preview — 558 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,837K chars).
[
  {
    "path": ".babelrc",
    "chars": 34,
    "preview": "{\n  \"presets\": [\"react-native\"]\n}\n"
  },
  {
    "path": ".buckconfig",
    "chars": 114,
    "preview": "\n[android]\n  target = Google Inc.:Google APIs:23\n\n[maven_repositories]\n  central = https://repo1.maven.org/maven2\n"
  },
  {
    "path": ".flowconfig",
    "chars": 1483,
    "preview": "[ignore]\n; We fork some components by platform\n.*/*[.]android.js\n\n; Ignore \"BUCK\" generated dirs\n<PROJECT_ROOT>/\\.buckd/"
  },
  {
    "path": ".gitattributes",
    "chars": 16,
    "preview": "*.pbxproj -text\n"
  },
  {
    "path": ".gitignore",
    "chars": 795,
    "preview": "# OSX\n#\n.DS_Store\n\n# Xcode\n#\n#build/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*."
  },
  {
    "path": ".watchmanconfig",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "App.js",
    "chars": 1184,
    "preview": "/**\n * Sample React Native App\n * https://github.com/facebook/react-native\n * @flow\n */\n\nimport React, { Component } fro"
  },
  {
    "path": "LICENSE.md",
    "chars": 1066,
    "preview": "MIT License\n\nCopyright (c) 2018 Joshua May\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
  },
  {
    "path": "README.md",
    "chars": 2158,
    "preview": "# Marzipants\n\nHere's a proof-of-concept that React Native can work* (*lol) under Marzipan.\n\nBut, like, it's proof that w"
  },
  {
    "path": "RNTester/ARTExample.js",
    "chars": 2623,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AccessibilityAndroidExample.android.js",
    "chars": 7019,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AccessibilityIOSExample.js",
    "chars": 2822,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ActionSheetIOSExample.js",
    "chars": 4762,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ActivityIndicatorExample.js",
    "chars": 3856,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AlertExample.js",
    "chars": 4297,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AlertIOSExample.js",
    "chars": 4807,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AnimatedExample.js",
    "chars": 7247,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AnimatedGratuitousApp/AnExApp.js",
    "chars": 11108,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AnimatedGratuitousApp/AnExBobble.js",
    "chars": 5102,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AnimatedGratuitousApp/AnExChained.js",
    "chars": 3200,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AnimatedGratuitousApp/AnExScroll.js",
    "chars": 3263,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AnimatedGratuitousApp/AnExSet.js",
    "chars": 3888,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AnimatedGratuitousApp/AnExSlides.md",
    "chars": 2399,
    "preview": "<br /><br />\n# React Native: Animated\n\nReactEurope 2015, Paris - Spencer Ahrens - Facebook\n\n<br /><br />\n\n## Fluid Inter"
  },
  {
    "path": "RNTester/AnimatedGratuitousApp/AnExTilt.js",
    "chars": 3998,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AppStateExample.js",
    "chars": 2616,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AssetScaledImageExample.js",
    "chars": 1980,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/AsyncStorageExample.js",
    "chars": 2781,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/BorderExample.js",
    "chars": 6939,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/BoxShadowExample.js",
    "chars": 2332,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ButtonExample.js",
    "chars": 2463,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/CameraRollExample.js",
    "chars": 3479,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/CameraRollView.js",
    "chars": 6443,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/CheckBoxExample.js",
    "chars": 3275,
    "preview": "/**\n * Copyright (c) 2017-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ClipboardExample.js",
    "chars": 1222,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/DatePickerAndroidExample.js",
    "chars": 5043,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/DatePickerIOSExample.js",
    "chars": 3770,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/DimensionsExample.js",
    "chars": 1307,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ExampleTypes.js",
    "chars": 679,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/FlatListExample.js",
    "chars": 6508,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/GeolocationExample.js",
    "chars": 1804,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ImageCapInsetsExample.js",
    "chars": 1719,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ImageEditingExample.js",
    "chars": 206,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ImageExample.js",
    "chars": 24516,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/InputAccessoryViewExample.js",
    "chars": 2108,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/KeyboardAvoidingViewExample.js",
    "chars": 2687,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/LayoutAnimationExample.js",
    "chars": 4536,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/LayoutEventsExample.js",
    "chars": 4180,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/LayoutExample.js",
    "chars": 6117,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/LinkingExample.js",
    "chars": 1929,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ListExampleShared.js",
    "chars": 8698,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ListViewExample.js",
    "chars": 4317,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ListViewGridLayoutExample.js",
    "chars": 3747,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ListViewPagingExample.js",
    "chars": 7243,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/MaskedViewExample.js",
    "chars": 5445,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ModalExample.js",
    "chars": 7350,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/MultiColumnExample.js",
    "chars": 4578,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/NativeAnimationsExample.js",
    "chars": 16898,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/NavigatorIOSBarStyleExample.js",
    "chars": 2225,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/NavigatorIOSColorsExample.js",
    "chars": 1747,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/NavigatorIOSExample.js",
    "chars": 8781,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/NetInfoExample.js",
    "chars": 4142,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/OrientationChangeExample.js",
    "chars": 1533,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/PanResponderExample.js",
    "chars": 3425,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/PermissionsExampleAndroid.android.js",
    "chars": 3433,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/PickerExample.js",
    "chars": 4140,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/PickerIOSExample.js",
    "chars": 4278,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/PointerEventsExample.js",
    "chars": 6907,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ProgressBarAndroidExample.android.js",
    "chars": 1958,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ProgressViewIOSExample.js",
    "chars": 2400,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/PushNotificationIOSExample.js",
    "chars": 5327,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RCTRootViewIOSExample.js",
    "chars": 2499,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterActions.js",
    "chars": 990,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterApp.android.js",
    "chars": 6414,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterApp.ios.js",
    "chars": 5504,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterBlock.js",
    "chars": 2006,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterButton.js",
    "chars": 1148,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterExampleContainer.js",
    "chars": 1161,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterExampleList.js",
    "chars": 6833,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterList.android.js",
    "chars": 5413,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterList.ios.js",
    "chars": 8691,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterNavigationReducer.js",
    "chars": 1314,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterPage.js",
    "chars": 2030,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterSettingSwitchRow.js",
    "chars": 1488,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterStatePersister.js",
    "chars": 2576,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RNTesterTitle.js",
    "chars": 872,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RTLExample.js",
    "chars": 18254,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RefreshControlExample.js",
    "chars": 2651,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/RootViewSizeFlexibilityExampleApp.js",
    "chars": 1437,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SafeAreaViewExample.js",
    "chars": 3002,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ScrollViewExample.js",
    "chars": 10218,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ScrollViewSimpleExample.js",
    "chars": 2094,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SectionListExample.js",
    "chars": 7598,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SegmentedControlIOSExample.js",
    "chars": 4090,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SetPropertiesExampleApp.js",
    "chars": 736,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ShareExample.js",
    "chars": 2906,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SliderExample.js",
    "chars": 3522,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SnapshotExample.js",
    "chars": 1393,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/StatusBarExample.js",
    "chars": 13449,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SwipeableFlatListExample.js",
    "chars": 3327,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SwipeableListViewExample.js",
    "chars": 5373,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/SwitchExample.js",
    "chars": 4081,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TVEventHandlerExample.js",
    "chars": 1983,
    "preview": "/**\n * Copyright (c) 2017-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TabBarIOSBarStyleExample.js",
    "chars": 3091,
    "preview": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TabBarIOSExample.js",
    "chars": 4091,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TextExample.android.js",
    "chars": 19767,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TextExample.ios.js",
    "chars": 26359,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TextInputExample.android.js",
    "chars": 20452,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TextInputExample.ios.js",
    "chars": 27077,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TimePickerAndroidExample.js",
    "chars": 3950,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TimerExample.js",
    "chars": 8497,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ToastAndroidExample.android.js",
    "chars": 3938,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ToolbarAndroidExample.android.js",
    "chars": 5027,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ToolbarAndroidExample.ios.js",
    "chars": 282,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TouchableExample.js",
    "chars": 13108,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TransformExample.js",
    "chars": 6104,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/TransparentHitTestExample.js",
    "chars": 1171,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/URIActionMap.js",
    "chars": 1316,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/VibrationExample.js",
    "chars": 2896,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/VibrationIOSExample.js",
    "chars": 993,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ViewExample.js",
    "chars": 6755,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/ViewPagerAndroidExample.android.js",
    "chars": 7182,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/WebSocketExample.js",
    "chars": 8646,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/WebViewExample.js",
    "chars": 11328,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExample.js",
    "chars": 1541,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExampleBinaryUpload.js",
    "chars": 3507,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExampleCookies.js",
    "chars": 3574,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExampleDownload.js",
    "chars": 6119,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExampleFetch.js",
    "chars": 3035,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExampleFormData.js",
    "chars": 5807,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExampleHeaders.js",
    "chars": 2529,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/XHRExampleOnTimeOut.js",
    "chars": 2095,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/createExamplePage.js",
    "chars": 710,
    "preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n"
  },
  {
    "path": "RNTester/helloworld.html",
    "chars": 554,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Hello Bundled World</title>\n    <meta http-equiv=\"content-type\" content=\"text"
  },
  {
    "path": "RNTester/http_test_server.js",
    "chars": 860,
    "preview": "#!/usr/bin/env node\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT l"
  },
  {
    "path": "RNTester/messagingtest.html",
    "chars": 919,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Messaging Test</title>\n    <meta http-equiv=\"content-type\" content=\"text/html"
  },
  {
    "path": "RNTester/websocket_test_server.js",
    "chars": 1376,
    "preview": "#!/usr/bin/env node\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT l"
  },
  {
    "path": "android/app/BUCK",
    "chars": 1578,
    "preview": "# To learn about Buck see [Docs](https://buckbuild.com/).\n# To run your application with Buck:\n# - install Buck\n# - `npm"
  },
  {
    "path": "android/app/build.gradle",
    "chars": 5850,
    "preview": "apply plugin: \"com.android.application\"\n\nimport com.android.build.OutputFile\n\n/**\n * The react.gradle file registers a t"
  },
  {
    "path": "android/app/proguard-rules.pro",
    "chars": 2682,
    "preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /u"
  },
  {
    "path": "android/app/src/main/AndroidManifest.xml",
    "chars": 999,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    package=\"com.marzipants\">\n\n    <uses-permission"
  },
  {
    "path": "android/app/src/main/java/com/marzipants/MainActivity.java",
    "chars": 365,
    "preview": "package com.marzipants;\n\nimport com.facebook.react.ReactActivity;\n\npublic class MainActivity extends ReactActivity {\n\n  "
  },
  {
    "path": "android/app/src/main/java/com/marzipants/MainApplication.java",
    "chars": 1046,
    "preview": "package com.marzipants;\n\nimport android.app.Application;\n\nimport com.facebook.react.ReactApplication;\nimport com.faceboo"
  },
  {
    "path": "android/app/src/main/res/values/strings.xml",
    "chars": 73,
    "preview": "<resources>\n    <string name=\"app_name\">Marzipants</string>\n</resources>\n"
  },
  {
    "path": "android/app/src/main/res/values/styles.xml",
    "chars": 192,
    "preview": "<resources>\n\n    <!-- Base application theme. -->\n    <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\">"
  },
  {
    "path": "android/build.gradle",
    "chars": 642,
    "preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n    r"
  },
  {
    "path": "android/gradle/wrapper/gradle-wrapper.properties",
    "chars": 203,
    "preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dist"
  },
  {
    "path": "android/gradle.properties",
    "chars": 887,
    "preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
  },
  {
    "path": "android/gradlew",
    "chars": 5080,
    "preview": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start "
  },
  {
    "path": "android/gradlew.bat",
    "chars": 2404,
    "preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
  },
  {
    "path": "android/keystores/BUCK",
    "chars": 152,
    "preview": "keystore(\n    name = \"debug\",\n    properties = \"debug.keystore.properties\",\n    store = \"debug.keystore\",\n    visibility"
  },
  {
    "path": "android/keystores/debug.keystore.properties",
    "chars": 105,
    "preview": "key.store=debug.keystore\nkey.alias=androiddebugkey\nkey.store.password=android\nkey.alias.password=android\n"
  },
  {
    "path": "android/settings.gradle",
    "chars": 48,
    "preview": "rootProject.name = 'Marzipants'\n\ninclude ':app'\n"
  },
  {
    "path": "app.json",
    "chars": 57,
    "preview": "{\n  \"name\": \"Marzipants\",\n  \"displayName\": \"Marzipants\"\n}"
  },
  {
    "path": "index.js",
    "chars": 126,
    "preview": "import { AppRegistry } from 'react-native';\nimport App from './App';\n\nAppRegistry.registerComponent('Marzipants', () => "
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/CDStructures.h",
    "chars": 7815,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSATSGlyphStorage.h",
    "chars": 3316,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSATSLineFragment.h",
    "chars": 1820,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSATSTypesetter.h",
    "chars": 3304,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSArray-UICollectionAdditions_Performance.h",
    "chars": 393,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSArray-UIRemovalAdditions.h",
    "chars": 269,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSAttributeDictionary.h",
    "chars": 805,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSAttributeDictionaryEnumerator.h",
    "chars": 431,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSAttributedString-NSAttributedStringAttachmentConveniences.h",
    "chars": 308,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSAttributedString-NSAttributedStringUIFoundationAdditions.h",
    "chars": 3806,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSAttributedString-NSExtendedStringDrawing.h",
    "chars": 822,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSAttributedString-NSStringDrawing.h",
    "chars": 341,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCIDGlyphInfo.h",
    "chars": 873,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCTFont.h",
    "chars": 431,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCTFontDescriptor.h",
    "chars": 878,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCTGlyphInfo.h",
    "chars": 759,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCoding-Protocol.h",
    "chars": 259,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewAnimation.h",
    "chars": 2358,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewData.h",
    "chars": 4244,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewFlowLayout.h",
    "chars": 8983,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewFlowLayoutAuxiliary.h",
    "chars": 658,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewFlowLayoutInvalidationContext.h",
    "chars": 597,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewIndexMapper.h",
    "chars": 1235,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayout.h",
    "chars": 6756,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayoutAttributes.h",
    "chars": 2678,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayoutAttributesAuxiliary.h",
    "chars": 680,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewLayoutInvalidationContext.h",
    "chars": 1987,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewTransitionLayout.h",
    "chars": 2142,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewUpdate.h",
    "chars": 1669,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCollectionViewUpdateItem.h",
    "chars": 1360,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSConcreteGlyphGenerator.h",
    "chars": 499,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSConcreteNotifyingMutableAttributedString.h",
    "chars": 535,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSConcreteTextStorage.h",
    "chars": 2116,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCopying-Protocol.h",
    "chars": 208,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSCoreTypesetter.h",
    "chars": 2788,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSDictionary-UICollectionAdditions.h",
    "chars": 260,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSDocFormatReader.h",
    "chars": 4378,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSDocFormatWriter.h",
    "chars": 1198,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSExtraLMData.h",
    "chars": 2460,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSFont.h",
    "chars": 9285,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSFontAssetRequest.h",
    "chars": 1046,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSFontDescriptor.h",
    "chars": 1865,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSGlyphGenerator.h",
    "chars": 473,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSGlyphInfo.h",
    "chars": 1259,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSGlyphNameGlyphInfo.h",
    "chars": 620,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  },
  {
    "path": "ios/Frameworks/UIFoundation.framework/Headers/NSHTMLReader.h",
    "chars": 5717,
    "preview": "//\n//     Generated by class-dump 3.5 (64 bit).\n//\n//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2015 by"
  }
]

// ... and 358 more files (download for full content)

About this extraction

This page contains the full source code of the notjosh/Marzipants GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 558 files (9.2 MB), approximately 2.4M tokens, and a symbol index with 1389 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!