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)




## 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
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
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.