|  | @@ -3,6 +3,10 @@ import React, { Component } from "react";
 | 
	
		
			
			| 3 | 3 |  import { View, NativeModules, Platform, findNodeHandle } from "react-native";
 | 
	
		
			
			| 4 | 4 |  const { RNViewShot } = NativeModules;
 | 
	
		
			
			| 5 | 5 |  
 | 
	
		
			
			|  | 6 | +import type { Element, ElementRef } from 'react';
 | 
	
		
			
			|  | 7 | +import type { ViewStyleProp } from 'StyleSheet';
 | 
	
		
			
			|  | 8 | +import type { LayoutEvent } from 'CoreEventTypes';
 | 
	
		
			
			|  | 9 | +
 | 
	
		
			
			| 6 | 10 |  const neverEndingPromise = new Promise(() => {});
 | 
	
		
			
			| 7 | 11 |  
 | 
	
		
			
			| 8 | 12 |  type Options = {
 | 
	
	
		
			
			|  | @@ -85,7 +89,7 @@ function validateOptions(
 | 
	
		
			
			| 85 | 89 |  }
 | 
	
		
			
			| 86 | 90 |  
 | 
	
		
			
			| 87 | 91 |  export function captureRef(
 | 
	
		
			
			| 88 |  | -  view: number | ReactElement<*>,
 | 
	
		
			
			|  | 92 | +  view: number | ?View,
 | 
	
		
			
			| 89 | 93 |    optionsObject?: Object
 | 
	
		
			
			| 90 | 94 |  ): Promise<string> {
 | 
	
		
			
			| 91 | 95 |    if (typeof view !== "number") {
 | 
	
	
		
			
			|  | @@ -132,10 +136,11 @@ export function captureScreen(
 | 
	
		
			
			| 132 | 136 |  type Props = {
 | 
	
		
			
			| 133 | 137 |    options?: Object,
 | 
	
		
			
			| 134 | 138 |    captureMode?: "mount" | "continuous" | "update",
 | 
	
		
			
			| 135 |  | -  children: React.Element<*>,
 | 
	
		
			
			|  | 139 | +  children: Element<*>,
 | 
	
		
			
			| 136 | 140 |    onLayout?: (e: *) => void,
 | 
	
		
			
			| 137 | 141 |    onCapture?: (uri: string) => void,
 | 
	
		
			
			| 138 |  | -  onCaptureFailure?: (e: Error) => void
 | 
	
		
			
			|  | 142 | +  onCaptureFailure?: (e: Error) => void,
 | 
	
		
			
			|  | 143 | +  style?: ViewStyleProp
 | 
	
		
			
			| 139 | 144 |  };
 | 
	
		
			
			| 140 | 145 |  
 | 
	
		
			
			| 141 | 146 |  function checkCompatibleProps(props: Props) {
 | 
	
	
		
			
			|  | @@ -160,17 +165,16 @@ function checkCompatibleProps(props: Props) {
 | 
	
		
			
			| 160 | 165 |    }
 | 
	
		
			
			| 161 | 166 |  }
 | 
	
		
			
			| 162 | 167 |  
 | 
	
		
			
			| 163 |  | -export default class ViewShot extends Component {
 | 
	
		
			
			|  | 168 | +export default class ViewShot extends Component<Props> {
 | 
	
		
			
			| 164 | 169 |    static captureRef = captureRef;
 | 
	
		
			
			| 165 | 170 |    static releaseCapture = releaseCapture;
 | 
	
		
			
			| 166 |  | -  props: Props;
 | 
	
		
			
			| 167 | 171 |    root: ?View;
 | 
	
		
			
			| 168 | 172 |  
 | 
	
		
			
			| 169 | 173 |    _raf: *;
 | 
	
		
			
			| 170 | 174 |    lastCapturedURI: ?string;
 | 
	
		
			
			| 171 | 175 |  
 | 
	
		
			
			| 172 | 176 |    resolveFirstLayout: (layout: Object) => void;
 | 
	
		
			
			| 173 |  | -  firstLayoutPromise = new Promise(resolve => {
 | 
	
		
			
			|  | 177 | +  firstLayoutPromise = new Promise<void>(resolve => {
 | 
	
		
			
			| 174 | 178 |      this.resolveFirstLayout = resolve;
 | 
	
		
			
			| 175 | 179 |    });
 | 
	
		
			
			| 176 | 180 |  
 | 
	
	
		
			
			|  | @@ -223,11 +227,11 @@ export default class ViewShot extends Component {
 | 
	
		
			
			| 223 | 227 |      }
 | 
	
		
			
			| 224 | 228 |    };
 | 
	
		
			
			| 225 | 229 |  
 | 
	
		
			
			| 226 |  | -  onRef = (ref: View) => {
 | 
	
		
			
			|  | 230 | +  onRef = (ref: ElementRef<*>) => {
 | 
	
		
			
			| 227 | 231 |      this.root = ref;
 | 
	
		
			
			| 228 | 232 |    };
 | 
	
		
			
			| 229 | 233 |  
 | 
	
		
			
			| 230 |  | -  onLayout = (e: { nativeEvent: { layout: Object } }) => {
 | 
	
		
			
			|  | 234 | +  onLayout = (e: LayoutEvent) => {
 | 
	
		
			
			| 231 | 235 |      const { onLayout } = this.props;
 | 
	
		
			
			| 232 | 236 |      this.resolveFirstLayout(e.nativeEvent.layout);
 | 
	
		
			
			| 233 | 237 |      if (onLayout) onLayout(e);
 |