diff --git a/App.windows.js b/App.windows.js
new file mode 100644
index 0000000..202b182
--- /dev/null
+++ b/App.windows.js
@@ -0,0 +1,355 @@
+import React, { Component } from "react";
+import {
+ StyleSheet,
+ Text,
+ View,
+ ScrollView,
+ Image,
+ Switch,
+ TextInput,
+ Picker,
+ Slider,
+ WebView,
+} from "react-native";
+import omit from "lodash/omit";
+import { takeSnapshot } from "react-native-view-shot";
+// import { Surface } from "gl-react-native";
+// import GL from "gl-react";
+// import MapView from "react-native-maps";
+import Video from "react-native-video";
+import Btn from "./Btn";
+
+const catsSource = {
+ uri: "https://i.imgur.com/5EOyTDQ.jpg",
+};
+
+/*const shaders = GL.Shaders.create({
+ helloGL: {
+ frag: `
+precision highp float;
+varying vec2 uv;
+uniform float blue;
+void main () {
+ gl_FragColor = vec4(uv.x, uv.y, blue, 1.0);
+}`
+ }
+});
+
+const HelloGL = GL.createComponent(
+ ({ blue }) =>
+ ,
+ { displayName: "HelloGL" });*/
+
+export default class App extends Component {
+ state = {
+ previewSource: catsSource,
+ error: null,
+ res: null,
+ value: {
+ format: "png",
+ quality: 0.9,
+ result: "file",
+ snapshotContentContainer: false,
+ },
+ };
+
+ snapshot = refname => () =>
+ takeSnapshot(this.refs[refname], this.state.value)
+ .then(res =>
+ this.state.value.result !== "file"
+ ? res
+ : new Promise((success, failure) =>
+ // just a test to ensure res can be used in Image.getSize
+ Image.getSize(
+ res,
+ (width, height) => (console.log(res,width,height), success(res)),
+ failure)))
+ .then(res => this.setState({
+ error: null,
+ res,
+ previewSource: { uri:
+ this.state.value.result === "base64"
+ ? "data:image/"+this.state.value.format+";base64,"+res
+ : res }
+ }))
+ .catch(error => (console.warn(error), this.setState({ error, res: null, previewSource: null })));
+
+ render() {
+ const { value, previewSource, error, res } = this.state;
+ const { format, quality, width, height, result, snapshotContentContainer } = value;
+ return (
+
+
+
+ 😃 ViewShot Example 😜
+
+
+
+ This is a{" "}
+
+
+ react-native-view-shot
+
+
+ {" "}showcase.
+
+
+
+ { error
+ ?
+ {""+(error.message || error)}
+
+ : }
+
+
+ {res ? res.slice(0, 200) : ""}
+
+
+
+
+ this.setState({ previewSource: catsSource })} />
+
+
+
+
+
+
+
+
+
+
+
+ Format
+ this.setState({ value: { ...value, format } })}>
+
+
+
+
+
+
+
+ Quality
+ this.setState({ value: { ...value, quality } })}
+ />
+ {(quality*100).toFixed(0)}%
+
+
+ Size
+ this.setState({
+ value: omit({
+ ...value,
+ width: 300,
+ height: 300,
+ }, checked ? [] : ["width","height"])
+ })}
+ />
+ { width!==undefined ? !isNaN(txt) && this.setState({
+ value: { ...value, width: parseInt(txt, 10) }
+ })}
+ /> : (auto) }
+ x
+ { height!==undefined ? !isNaN(txt) && this.setState({
+ value: { ...value, height: parseInt(txt, 10) }
+ })}
+ /> : (auto) }
+
+
+ Result
+ this.setState({ value: { ...value, result } })}>
+
+
+
+
+
+
+
+ snapshotContentContainer
+ this.setState({
+ value: { ...value, snapshotContentContainer }
+ })}
+ />
+
+
+
+
+ Experimental Stuff
+ {/*
+
+
+ */}
+
+
+
+
+
+
+ );
+ }
+}
+
+const styles = StyleSheet.create({
+ root: {
+ flex: 1,
+ backgroundColor: "#f6f6f6",
+ },
+ container: {
+ paddingVertical: 20,
+ backgroundColor: "#f6f6f6",
+ },
+ title: {
+ fontSize: 20,
+ textAlign: "center",
+ margin: 10,
+ },
+ experimental: {
+ padding: 10,
+ flexDirection: "column",
+ alignItems: "center",
+ },
+ experimentalTitle: {
+ fontSize: 16,
+ margin: 10,
+ },
+ p1: {
+ marginBottom: 10,
+ flexDirection: "row",
+ flexWrap: "wrap",
+ justifyContent: "center",
+ alignItems: "center",
+ },
+ text: {
+ color: "#333",
+ },
+ code: {
+ fontWeight: "bold",
+ color: "#000",
+ },
+ field: {
+ flexDirection: "row",
+ alignItems: "center",
+ paddingVertical: 4,
+ paddingHorizontal: 10,
+ },
+ label: {
+ minWidth: 80,
+ fontStyle: "italic",
+ color: "#888",
+ },
+ switch: {
+ marginRight: 50,
+ },
+ input: {
+ flex: 1,
+ marginHorizontal: 5,
+ },
+ inputText: {
+ flex: 1,
+ marginHorizontal: 5,
+ color: "red",
+ textAlign: "center",
+ },
+ preview: {
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "space-around",
+ },
+ previewImage: {
+ width: 375,
+ height: 300,
+ },
+ previewUriText: {
+ fontSize: 12,
+ fontStyle: "italic",
+ color: "#666",
+ textAlign: "center",
+ padding: 10,
+ paddingBottom: 0,
+ },
+ previewError: {
+ width: 375,
+ height: 300,
+ paddingTop: 20,
+ textAlign: "center",
+ fontSize: 20,
+ fontWeight: "bold",
+ color: "#fff",
+ backgroundColor: "#c00",
+ },
+ header: {
+ backgroundColor: "#f6f6f6",
+ borderColor: "#000",
+ borderWidth: 1,
+ paddingBottom: 20,
+ },
+ form: {
+ backgroundColor: "#fff",
+ },
+ btns: {
+ flexDirection: "row",
+ flexWrap: "wrap",
+ alignItems: "center",
+ justifyContent: "center",
+ paddingVertical: 10,
+ margin: 4,
+ }
+});
diff --git a/index.windows.js b/index.windows.js
new file mode 100644
index 0000000..07a5ab6
--- /dev/null
+++ b/index.windows.js
@@ -0,0 +1,4 @@
+//@flow
+import { AppRegistry } from "react-native";
+import App from "./App";
+AppRegistry.registerComponent("ViewShotExample", () => App);
diff --git a/package.json b/package.json
index 75ad58b..34a54bc 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,10 @@
"lodash": "4.17.4",
"react": "15.4.2",
"react-native": "0.41.2",
+ "react-native-windows": "^0.43.0-rc.0"
+ },
+ "devDependencies": {
+ "rnpm-plugin-windows": "^0.2.4",
"react-native-maps": "https://github.com/airbnb/react-native-maps/archive/v0.13.0.tar.gz",
"react-native-video": "^1.0.0",
"react-native-view-shot": "*"
diff --git a/windows/.gitignore b/windows/.gitignore
new file mode 100644
index 0000000..33d3fde
--- /dev/null
+++ b/windows/.gitignore
@@ -0,0 +1,89 @@
+*AppPackages*
+*BundleArtifacts*
+*ReactAssets*
+
+#OS junk files
+[Tt]humbs.db
+*.DS_Store
+
+#Visual Studio files
+*.[Oo]bj
+*.user
+*.aps
+*.pch
+*.vspscc
+*.vssscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.[Cc]ache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.sdf
+*.opensdf
+*.opendb
+*.unsuccessfulbuild
+ipch/
+[Oo]bj/
+[Bb]in
+[Dd]ebug*/
+[Rr]elease*/
+Ankh.NoLoad
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+#MonoDevelop
+*.pidb
+*.userprefs
+
+#Tooling
+_ReSharper*/
+*.resharper
+[Tt]est[Rr]esult*
+*.sass-cache
+
+#Project files
+[Bb]uild/
+
+#Subversion files
+.svn
+
+# Office Temp Files
+~$*
+
+# vim Temp Files
+*~
+
+#NuGet
+packages/
+*.nupkg
+
+#ncrunch
+*ncrunch*
+*crunch*.local.xml
+
+# visual studio database projects
+*.dbmdl
+
+#Test files
+*.testsettings
+
+#Other files
+*.DotSettings
+.vs/
+*project.lock.json
diff --git a/windows/ViewShotExample.Net46/App.config b/windows/ViewShotExample.Net46/App.config
new file mode 100644
index 0000000..8324aa6
--- /dev/null
+++ b/windows/ViewShotExample.Net46/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/windows/ViewShotExample.Net46/App.xaml b/windows/ViewShotExample.Net46/App.xaml
new file mode 100644
index 0000000..9844ad0
--- /dev/null
+++ b/windows/ViewShotExample.Net46/App.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/windows/ViewShotExample.Net46/App.xaml.cs b/windows/ViewShotExample.Net46/App.xaml.cs
new file mode 100644
index 0000000..3253bbb
--- /dev/null
+++ b/windows/ViewShotExample.Net46/App.xaml.cs
@@ -0,0 +1,101 @@
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+
+namespace ViewShotExample.Net46
+{
+ ///
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ public partial class App : Application
+ {
+ private readonly AppReactPage _reactPage = new AppReactPage();
+
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ }
+
+ ///
+ /// Override method fired prior to the Startup event when the Run method of the Application object is called...
+ ///
+ ///
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ base.OnStartup(e);
+ OnCreate(e.Args);
+ }
+
+ ///
+ /// Called whenever the app is opened to initialized...
+ ///
+ ///
+ private void OnCreate(string[] arguments)
+ {
+ var shellWindow = Application.Current.MainWindow;
+
+ if (shellWindow == null)
+ {
+ shellWindow = new Window
+ {
+ ShowActivated = true,
+ ShowInTaskbar = true,
+ Title = "ViewShotExample.Net46",
+ Height = 768,
+ Width = 1024,
+ WindowStartupLocation = WindowStartupLocation.CenterScreen
+ };
+
+ Application.Current.MainWindow = shellWindow;
+ }
+
+ //Show Window if it is not already active...
+ if (!shellWindow.IsLoaded)
+ {
+ shellWindow.Show();
+ }
+
+ var rootFrame = shellWindow.Content as Frame;
+
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == null)
+ {
+ _reactPage.OnCreate(arguments);
+
+ // Create a Frame to act as the navigation context and navigate to the first page
+ rootFrame = new Frame();
+
+ rootFrame.NavigationFailed += OnNavigationFailed;
+
+ // Place the frame in the current Window
+ shellWindow.Content = rootFrame;
+ }
+
+ if (rootFrame.Content == null)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ rootFrame.Content = _reactPage;
+ }
+
+ // Ensure the current window is active
+ shellWindow.Activate();
+ }
+
+ ///
+ /// Invoked when Navigation to a certain page fails
+ ///
+ /// The Frame which failed navigation
+ /// Details about the navigation failure
+ private void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ throw new Exception("Failed to load Page...");
+ }
+ }
+}
diff --git a/windows/ViewShotExample.Net46/AppReactPage.cs b/windows/ViewShotExample.Net46/AppReactPage.cs
new file mode 100644
index 0000000..e4f2f3c
--- /dev/null
+++ b/windows/ViewShotExample.Net46/AppReactPage.cs
@@ -0,0 +1,32 @@
+using ReactNative;
+using ReactNative.Bridge;
+using ReactNative.Modules.Core;
+using ReactNative.Shell;
+using ReactNative.UIManager;
+using System;
+using System.Collections.Generic;
+using ReactNativeVideo;
+using RNViewShot;
+
+namespace ViewShotExample.Net46
+{
+ internal class AppReactPage : ReactPage
+ {
+ public override string MainComponentName => "ViewShotExample";
+
+ public override List Packages => new List
+ {
+ new MainReactPackage(),
+ new RNViewShotPackage(),
+ new ReactVideoPackage(),
+ };
+
+ public override bool UseDeveloperSupport
+ {
+ get
+ {
+ return true;
+ }
+ }
+ }
+}
diff --git a/windows/ViewShotExample.Net46/Properties/AssemblyInfo.cs b/windows/ViewShotExample.Net46/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..42e2e6e
--- /dev/null
+++ b/windows/ViewShotExample.Net46/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ViewShotExample.Net46")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ViewShotExample.Net46")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+//In order to begin building localizable applications, set
+//CultureYouAreCodingWith in your .csproj file
+//inside a . For example, if you are using US english
+//in your source files, set the to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/windows/ViewShotExample.Net46/Properties/Resources.Designer.cs b/windows/ViewShotExample.Net46/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..d2233a9
--- /dev/null
+++ b/windows/ViewShotExample.Net46/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace ViewShotExample.Net46.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ViewShotExample.Net46.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/windows/ViewShotExample.Net46/Properties/Resources.resx b/windows/ViewShotExample.Net46/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/windows/ViewShotExample.Net46/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/windows/ViewShotExample.Net46/Properties/Settings.Designer.cs b/windows/ViewShotExample.Net46/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..a06143a
--- /dev/null
+++ b/windows/ViewShotExample.Net46/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace ViewShotExample.Net46.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/windows/ViewShotExample.Net46/Properties/Settings.settings b/windows/ViewShotExample.Net46/Properties/Settings.settings
new file mode 100644
index 0000000..033d7a5
--- /dev/null
+++ b/windows/ViewShotExample.Net46/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/windows/ViewShotExample.Net46/ViewShotExample.Net46.csproj b/windows/ViewShotExample.Net46/ViewShotExample.Net46.csproj
new file mode 100644
index 0000000..560bae5
--- /dev/null
+++ b/windows/ViewShotExample.Net46/ViewShotExample.Net46.csproj
@@ -0,0 +1,130 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {2A3E5645-CC81-4577-A1AC-397A09B76546}
+ WinExe
+ Properties
+ ViewShotExample.Net46
+ ViewShotExample.Net46
+ v4.6
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+ true
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE
+ full
+ x64
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x64\Release\
+ TRACE
+ true
+ pdbonly
+ x64
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+
+
+
+ Code
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
+
+
+ {1dd45d00-ddf4-43b4-ab28-f98e6dc325b5}
+ RNViewShot.Net46
+
+
+ {22cbff9c-fe36-43e8-a246-266c7635e662}
+ ReactNative.Net46
+
+
+
+
+
\ No newline at end of file
diff --git a/windows/ViewShotExample.sln b/windows/ViewShotExample.sln
new file mode 100644
index 0000000..06fb56c
--- /dev/null
+++ b/windows/ViewShotExample.sln
@@ -0,0 +1,209 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ViewShotExample", "ViewShotExample\ViewShotExample.csproj", "{385046CD-7621-4286-9E49-4CA26B4A9C23}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ChakraBridge", "..\node_modules\react-native-windows\ReactWindows\ChakraBridge\ChakraBridge.vcxproj", "{4B72C796-16D5-4E3A-81C0-3E36F531E578}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RNViewShot", "..\node_modules\react-native-view-shot\windows\RNViewShot\RNViewShot.csproj", "{391A35D0-FEBA-11E6-9171-BD5177E581B7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactNative", "..\node_modules\react-native-windows\ReactWindows\ReactNative\ReactNative.csproj", "{C7673AD5-E3AA-468C-A5FD-FA38154E205C}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "ReactNative.Shared", "..\node_modules\react-native-windows\ReactWindows\ReactNative.Shared\ReactNative.Shared.shproj", "{EEA8B852-4D07-48E1-8294-A21AB5909FE5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactNativeVideo", "..\node_modules\react-native-video\windows\ReactNativeVideo\ReactNativeVideo.csproj", "{E8F5F57F-757E-4237-AD23-F7A8755427CD}"
+EndProject
+Global
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ ..\node_modules\react-native-windows\ReactWindows\ReactNative.Shared\ReactNative.Shared.projitems*{c7673ad5-e3aa-468c-a5fd-fa38154e205c}*SharedItemsImports = 4
+ ..\node_modules\react-native-windows\ReactWindows\ReactNative.Shared\ReactNative.Shared.projitems*{eea8b852-4d07-48e1-8294-a21ab5909fe5}*SharedItemsImports = 13
+ EndGlobalSection
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM = Debug|ARM
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ DebugBundle|ARM = DebugBundle|ARM
+ DebugBundle|x64 = DebugBundle|x64
+ DebugBundle|x86 = DebugBundle|x86
+ Development|ARM = Development|ARM
+ Development|x64 = Development|x64
+ Development|x86 = Development|x86
+ Release|ARM = Release|ARM
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ ReleaseBundle|ARM = ReleaseBundle|ARM
+ ReleaseBundle|x64 = ReleaseBundle|x64
+ ReleaseBundle|x86 = ReleaseBundle|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|ARM.ActiveCfg = Debug|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|ARM.Build.0 = Debug|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|ARM.Deploy.0 = Debug|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|x64.ActiveCfg = Debug|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|x64.Build.0 = Debug|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|x64.Deploy.0 = Debug|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|x86.ActiveCfg = Debug|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|x86.Build.0 = Debug|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Debug|x86.Deploy.0 = Debug|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|ARM.ActiveCfg = DebugBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|ARM.Build.0 = DebugBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|ARM.Deploy.0 = DebugBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|x64.ActiveCfg = DebugBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|x64.Build.0 = DebugBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|x64.Deploy.0 = DebugBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|x86.ActiveCfg = DebugBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|x86.Build.0 = DebugBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.DebugBundle|x86.Deploy.0 = DebugBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|ARM.ActiveCfg = DebugBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|ARM.Build.0 = DebugBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|ARM.Deploy.0 = DebugBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|x64.ActiveCfg = DebugBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|x64.Build.0 = DebugBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|x64.Deploy.0 = DebugBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|x86.ActiveCfg = DebugBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|x86.Build.0 = DebugBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Development|x86.Deploy.0 = DebugBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|ARM.ActiveCfg = Release|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|ARM.Build.0 = Release|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|ARM.Deploy.0 = Release|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|x64.ActiveCfg = Release|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|x64.Build.0 = Release|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|x64.Deploy.0 = Release|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|x86.ActiveCfg = Release|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|x86.Build.0 = Release|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.Release|x86.Deploy.0 = Release|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|ARM.ActiveCfg = ReleaseBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|ARM.Build.0 = ReleaseBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|ARM.Deploy.0 = ReleaseBundle|ARM
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|x64.ActiveCfg = ReleaseBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|x64.Build.0 = ReleaseBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|x64.Deploy.0 = ReleaseBundle|x64
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|x86.ActiveCfg = ReleaseBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|x86.Build.0 = ReleaseBundle|x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}.ReleaseBundle|x86.Deploy.0 = ReleaseBundle|x86
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Debug|ARM.ActiveCfg = Debug|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Debug|ARM.Build.0 = Debug|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Debug|x64.ActiveCfg = Debug|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Debug|x64.Build.0 = Debug|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Debug|x86.ActiveCfg = Debug|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Debug|x86.Build.0 = Debug|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.DebugBundle|ARM.ActiveCfg = Debug|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.DebugBundle|ARM.Build.0 = Debug|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.DebugBundle|x64.ActiveCfg = Debug|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.DebugBundle|x64.Build.0 = Debug|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.DebugBundle|x86.ActiveCfg = Debug|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.DebugBundle|x86.Build.0 = Debug|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Development|ARM.ActiveCfg = Debug|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Development|ARM.Build.0 = Debug|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Development|x64.ActiveCfg = Debug|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Development|x64.Build.0 = Debug|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Development|x86.ActiveCfg = Debug|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Development|x86.Build.0 = Debug|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Release|ARM.ActiveCfg = Release|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Release|ARM.Build.0 = Release|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Release|x64.ActiveCfg = Release|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Release|x64.Build.0 = Release|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Release|x86.ActiveCfg = Release|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.Release|x86.Build.0 = Release|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.ReleaseBundle|ARM.ActiveCfg = Release|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.ReleaseBundle|ARM.Build.0 = Release|ARM
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.ReleaseBundle|x64.ActiveCfg = Release|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.ReleaseBundle|x64.Build.0 = Release|x64
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.ReleaseBundle|x86.ActiveCfg = Release|Win32
+ {4B72C796-16D5-4E3A-81C0-3E36F531E578}.ReleaseBundle|x86.Build.0 = Release|Win32
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Debug|ARM.ActiveCfg = Debug|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Debug|ARM.Build.0 = Debug|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Debug|x64.ActiveCfg = Debug|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Debug|x64.Build.0 = Debug|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Debug|x86.ActiveCfg = Debug|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Debug|x86.Build.0 = Debug|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.DebugBundle|ARM.ActiveCfg = Debug|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.DebugBundle|ARM.Build.0 = Debug|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.DebugBundle|x64.ActiveCfg = Debug|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.DebugBundle|x64.Build.0 = Debug|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.DebugBundle|x86.ActiveCfg = Debug|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.DebugBundle|x86.Build.0 = Debug|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Development|ARM.ActiveCfg = Development|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Development|ARM.Build.0 = Development|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Development|x64.ActiveCfg = Development|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Development|x64.Build.0 = Development|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Development|x86.ActiveCfg = Development|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Development|x86.Build.0 = Development|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Release|ARM.ActiveCfg = Release|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Release|ARM.Build.0 = Release|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Release|x64.ActiveCfg = Release|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Release|x64.Build.0 = Release|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Release|x86.ActiveCfg = Release|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.Release|x86.Build.0 = Release|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.ReleaseBundle|ARM.ActiveCfg = Release|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.ReleaseBundle|ARM.Build.0 = Release|ARM
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.ReleaseBundle|x64.ActiveCfg = Release|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.ReleaseBundle|x64.Build.0 = Release|x64
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.ReleaseBundle|x86.ActiveCfg = Release|x86
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}.ReleaseBundle|x86.Build.0 = Release|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Debug|ARM.ActiveCfg = Debug|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Debug|ARM.Build.0 = Debug|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Debug|x64.ActiveCfg = Debug|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Debug|x64.Build.0 = Debug|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Debug|x86.ActiveCfg = Debug|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Debug|x86.Build.0 = Debug|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.DebugBundle|ARM.ActiveCfg = Debug|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.DebugBundle|ARM.Build.0 = Debug|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.DebugBundle|x64.ActiveCfg = Debug|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.DebugBundle|x64.Build.0 = Debug|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.DebugBundle|x86.ActiveCfg = Debug|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.DebugBundle|x86.Build.0 = Debug|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Development|ARM.ActiveCfg = Debug|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Development|ARM.Build.0 = Debug|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Development|x64.ActiveCfg = Debug|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Development|x64.Build.0 = Debug|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Development|x86.ActiveCfg = Debug|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Development|x86.Build.0 = Debug|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Release|ARM.ActiveCfg = Release|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Release|ARM.Build.0 = Release|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Release|x64.ActiveCfg = Release|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Release|x64.Build.0 = Release|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Release|x86.ActiveCfg = Release|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.Release|x86.Build.0 = Release|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.ReleaseBundle|ARM.ActiveCfg = Release|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.ReleaseBundle|ARM.Build.0 = Release|ARM
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.ReleaseBundle|x64.ActiveCfg = Release|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.ReleaseBundle|x64.Build.0 = Release|x64
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.ReleaseBundle|x86.ActiveCfg = Release|x86
+ {C7673AD5-E3AA-468C-A5FD-FA38154E205C}.ReleaseBundle|x86.Build.0 = Release|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Debug|ARM.ActiveCfg = Debug|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Debug|ARM.Build.0 = Debug|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Debug|x64.ActiveCfg = Debug|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Debug|x64.Build.0 = Debug|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Debug|x86.ActiveCfg = Debug|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Debug|x86.Build.0 = Debug|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.DebugBundle|ARM.ActiveCfg = Debug|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.DebugBundle|ARM.Build.0 = Debug|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.DebugBundle|x64.ActiveCfg = Debug|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.DebugBundle|x64.Build.0 = Debug|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.DebugBundle|x86.ActiveCfg = Debug|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.DebugBundle|x86.Build.0 = Debug|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Development|ARM.ActiveCfg = Debug|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Development|ARM.Build.0 = Debug|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Development|x64.ActiveCfg = Debug|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Development|x64.Build.0 = Debug|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Development|x86.ActiveCfg = Debug|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Development|x86.Build.0 = Debug|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Release|ARM.ActiveCfg = Release|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Release|ARM.Build.0 = Release|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Release|x64.ActiveCfg = Release|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Release|x64.Build.0 = Release|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Release|x86.ActiveCfg = Release|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.Release|x86.Build.0 = Release|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.ReleaseBundle|ARM.ActiveCfg = Release|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.ReleaseBundle|ARM.Build.0 = Release|ARM
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.ReleaseBundle|x64.ActiveCfg = Release|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.ReleaseBundle|x64.Build.0 = Release|x64
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.ReleaseBundle|x86.ActiveCfg = Release|x86
+ {E8F5F57F-757E-4237-AD23-F7A8755427CD}.ReleaseBundle|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/windows/ViewShotExample/App.xaml b/windows/ViewShotExample/App.xaml
new file mode 100644
index 0000000..712ea5d
--- /dev/null
+++ b/windows/ViewShotExample/App.xaml
@@ -0,0 +1,8 @@
+
+
+
diff --git a/windows/ViewShotExample/App.xaml.cs b/windows/ViewShotExample/App.xaml.cs
new file mode 100644
index 0000000..192881d
--- /dev/null
+++ b/windows/ViewShotExample/App.xaml.cs
@@ -0,0 +1,147 @@
+using ReactNative;
+using ReactNative.Modules.Launch;
+using System;
+using Windows.ApplicationModel;
+using Windows.ApplicationModel.Activation;
+using Windows.UI.Core;
+using Windows.UI.Xaml;
+using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Navigation;
+
+namespace ViewShotExample
+{
+ ///
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ sealed partial class App : Application
+ {
+ private readonly ReactPage _reactPage;
+
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ this.InitializeComponent();
+ this.Suspending += OnSuspending;
+ this.Resuming += OnResuming;
+
+ _reactPage = new MainPage();
+ }
+
+ ///
+ /// Invoked when the application is launched normally by the end user. Other entry points
+ /// will be used such as when the application is launched to open a specific file.
+ ///
+ /// Details about the launch request and process.
+ protected override void OnLaunched(LaunchActivatedEventArgs e)
+ {
+ base.OnLaunched(e);
+ OnCreate(e.Arguments);
+ }
+
+ ///
+ /// Invoked when the application is activated.
+ ///
+ /// The activated event arguments.
+ protected override void OnActivated(IActivatedEventArgs args)
+ {
+ base.OnActivated(args);
+
+ switch (args.Kind)
+ {
+ case ActivationKind.Protocol:
+ case ActivationKind.ProtocolForResults:
+ var protocolArgs = (IProtocolActivatedEventArgs)args;
+ LauncherModule.SetActivatedUrl(protocolArgs.Uri.AbsoluteUri);
+ break;
+ }
+
+ if (args.PreviousExecutionState != ApplicationExecutionState.Running &&
+ args.PreviousExecutionState != ApplicationExecutionState.Suspended)
+ {
+ OnCreate(null);
+ }
+ }
+
+ ///
+ /// Called whenever the app is opened to initia
+ ///
+ ///
+ private void OnCreate(string arguments)
+ {
+ _reactPage.OnResume(Exit);
+
+#if DEBUG
+ if (System.Diagnostics.Debugger.IsAttached)
+ {
+ this.DebugSettings.EnableFrameRateCounter = true;
+ }
+
+ SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
+ AppViewBackButtonVisibility.Visible;
+#endif
+
+ Frame rootFrame = Window.Current.Content as Frame;
+
+ // Do not repeat app initialization when the Window already has content,
+ // just ensure that the window is active
+ if (rootFrame == null)
+ {
+ _reactPage.OnCreate(arguments);
+
+ // Create a Frame to act as the navigation context and navigate to the first page
+ rootFrame = new Frame();
+
+ rootFrame.NavigationFailed += OnNavigationFailed;
+
+ // Place the frame in the current Window
+ Window.Current.Content = rootFrame;
+ }
+
+ if (rootFrame.Content == null)
+ {
+ // When the navigation stack isn't restored navigate to the first page,
+ // configuring the new page by passing required information as a navigation
+ // parameter
+ rootFrame.Content = _reactPage;
+ }
+
+ // Ensure the current window is active
+ Window.Current.Activate();
+ }
+
+ ///
+ /// Invoked when Navigation to a certain page fails
+ ///
+ /// The Frame which failed navigation
+ /// Details about the navigation failure
+ private void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
+ }
+
+ ///
+ /// Invoked when application execution is being suspended. Application state is saved
+ /// without knowing whether the application will be terminated or resumed with the contents
+ /// of memory still intact.
+ ///
+ /// The source of the suspend request.
+ /// Details about the suspend request.
+ private void OnSuspending(object sender, SuspendingEventArgs e)
+ {
+ _reactPage.OnSuspend();
+ }
+
+ ///
+ /// Invoked when application execution is being resumed.
+ ///
+ /// The source of the resume request.
+ /// Details about the resume request.
+ private void OnResuming(object sender, object e)
+ {
+ _reactPage.OnResume(Exit);
+ }
+ }
+}
diff --git a/windows/ViewShotExample/Assets/LockScreenLogo.scale-200.png b/windows/ViewShotExample/Assets/LockScreenLogo.scale-200.png
new file mode 100644
index 0000000..735f57a
Binary files /dev/null and b/windows/ViewShotExample/Assets/LockScreenLogo.scale-200.png differ
diff --git a/windows/ViewShotExample/Assets/SplashScreen.scale-200.png b/windows/ViewShotExample/Assets/SplashScreen.scale-200.png
new file mode 100644
index 0000000..023e7f1
Binary files /dev/null and b/windows/ViewShotExample/Assets/SplashScreen.scale-200.png differ
diff --git a/windows/ViewShotExample/Assets/Square150x150Logo.scale-200.png b/windows/ViewShotExample/Assets/Square150x150Logo.scale-200.png
new file mode 100644
index 0000000..af49fec
Binary files /dev/null and b/windows/ViewShotExample/Assets/Square150x150Logo.scale-200.png differ
diff --git a/windows/ViewShotExample/Assets/Square44x44Logo.scale-200.png b/windows/ViewShotExample/Assets/Square44x44Logo.scale-200.png
new file mode 100644
index 0000000..ce342a2
Binary files /dev/null and b/windows/ViewShotExample/Assets/Square44x44Logo.scale-200.png differ
diff --git a/windows/ViewShotExample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/windows/ViewShotExample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 0000000..f6c02ce
Binary files /dev/null and b/windows/ViewShotExample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ
diff --git a/windows/ViewShotExample/Assets/StoreLogo.png b/windows/ViewShotExample/Assets/StoreLogo.png
new file mode 100644
index 0000000..7385b56
Binary files /dev/null and b/windows/ViewShotExample/Assets/StoreLogo.png differ
diff --git a/windows/ViewShotExample/Assets/Wide310x150Logo.scale-200.png b/windows/ViewShotExample/Assets/Wide310x150Logo.scale-200.png
new file mode 100644
index 0000000..288995b
Binary files /dev/null and b/windows/ViewShotExample/Assets/Wide310x150Logo.scale-200.png differ
diff --git a/windows/ViewShotExample/MainPage.cs b/windows/ViewShotExample/MainPage.cs
new file mode 100644
index 0000000..ef6dbbf
--- /dev/null
+++ b/windows/ViewShotExample/MainPage.cs
@@ -0,0 +1,56 @@
+using ReactNative;
+using ReactNative.Modules.Core;
+using ReactNative.Shell;
+using RNViewShot;
+using System.Collections.Generic;
+using ReactNativeVideo;
+
+namespace ViewShotExample
+{
+ class MainPage : ReactPage
+ {
+ public override string MainComponentName
+ {
+ get
+ {
+ return "ViewShotExample";
+ }
+ }
+
+#if BUNDLE
+ public override string JavaScriptBundleFile
+ {
+ get
+ {
+ return "ms-appx:///ReactAssets/index.windows.bundle";
+ }
+ }
+#endif
+
+ public override List Packages
+ {
+ get
+ {
+ return new List
+ {
+ new MainReactPackage(),
+ new RNViewShotPackage(),
+ new ReactVideoPackage(),
+ };
+ }
+ }
+
+ public override bool UseDeveloperSupport
+ {
+ get
+ {
+#if !BUNDLE || DEBUG
+ return true;
+#else
+ return false;
+#endif
+ }
+ }
+ }
+
+}
diff --git a/windows/ViewShotExample/Package.appxmanifest b/windows/ViewShotExample/Package.appxmanifest
new file mode 100644
index 0000000..f45f151
--- /dev/null
+++ b/windows/ViewShotExample/Package.appxmanifest
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+ ViewShotExample
+ React Native for UWP
+ Assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/windows/ViewShotExample/Properties/AssemblyInfo.cs b/windows/ViewShotExample/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..c523b33
--- /dev/null
+++ b/windows/ViewShotExample/Properties/AssemblyInfo.cs
@@ -0,0 +1,29 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ViewShotExample")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ViewShotExample")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: ComVisible(false)]
\ No newline at end of file
diff --git a/windows/ViewShotExample/Properties/Default.rd.xml b/windows/ViewShotExample/Properties/Default.rd.xml
new file mode 100644
index 0000000..64fc7e4
--- /dev/null
+++ b/windows/ViewShotExample/Properties/Default.rd.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/windows/ViewShotExample/ViewShotExample.csproj b/windows/ViewShotExample/ViewShotExample.csproj
new file mode 100644
index 0000000..34ae494
--- /dev/null
+++ b/windows/ViewShotExample/ViewShotExample.csproj
@@ -0,0 +1,234 @@
+
+
+
+
+ Debug
+ x86
+ {385046CD-7621-4286-9E49-4CA26B4A9C23}
+ AppContainerExe
+ Properties
+ ViewShotExample
+ ViewShotExample
+ en-US
+ UAP
+ 10.0.10586.0
+ 10.0.10240.0
+ 14
+ 512
+ {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ ViewShotExample_TemporaryKey.pfx
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ x86
+ false
+ prompt
+ true
+
+
+ true
+ bin\x86\DebugBundle\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;BUNDLE
+ ;2008
+ true
+ full
+ x86
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x86\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ x86
+ false
+ prompt
+ true
+ true
+
+
+ bin\x86\ReleaseBundle\
+ TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;BUNDLE
+ true
+ ;2008
+ true
+ pdbonly
+ x86
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+ true
+
+
+ true
+ bin\ARM\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ ARM
+ false
+ prompt
+ true
+
+
+ true
+ bin\ARM\DebugBundle\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;BUNDLE
+ ;2008
+ true
+ full
+ ARM
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\ARM\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ ARM
+ false
+ prompt
+ true
+ true
+
+
+ bin\ARM\ReleaseBundle\
+ TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;BUNDLE
+ true
+ ;2008
+ true
+ pdbonly
+ ARM
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+ true
+
+
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
+ ;2008
+ full
+ x64
+ false
+ prompt
+ true
+
+
+ true
+ bin\x64\DebugBundle\
+ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;BUNDLE
+ ;2008
+ true
+ full
+ x64
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x64\Release\
+ TRACE;NETFX_CORE;WINDOWS_UWP
+ true
+ ;2008
+ pdbonly
+ x64
+ false
+ prompt
+ true
+ true
+
+
+ bin\x64\ReleaseBundle\
+ TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;BUNDLE
+ true
+ ;2008
+ true
+ pdbonly
+ x64
+ false
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+ true
+
+
+
+
+
+
+
+ App.xaml
+
+
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+
+
+ {e8f5f57f-757e-4237-ad23-f7a8755427cd}
+ ReactNativeVideo
+
+
+ {391A35D0-FEBA-11E6-9171-BD5177E581B7}
+ RNViewShot
+
+
+ {c7673ad5-e3aa-468c-a5fd-fa38154e205c}
+ ReactNative
+
+
+
+
+ PreserveNewest
+
+
+
+ 14.0
+
+
+
+
\ No newline at end of file
diff --git a/windows/ViewShotExample/ViewShotExample_TemporaryKey.pfx b/windows/ViewShotExample/ViewShotExample_TemporaryKey.pfx
new file mode 100644
index 0000000..08328fc
Binary files /dev/null and b/windows/ViewShotExample/ViewShotExample_TemporaryKey.pfx differ
diff --git a/windows/ViewShotExample/project.json b/windows/ViewShotExample/project.json
new file mode 100644
index 0000000..4481792
--- /dev/null
+++ b/windows/ViewShotExample/project.json
@@ -0,0 +1,17 @@
+{
+ "dependencies": {
+ "Facebook.Yoga": "1.1.0.23-pre",
+ "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2"
+ },
+ "frameworks": {
+ "uap10.0": {}
+ },
+ "runtimes": {
+ "win10-arm": {},
+ "win10-arm-aot": {},
+ "win10-x86": {},
+ "win10-x86-aot": {},
+ "win10-x64": {},
+ "win10-x64-aot": {}
+ }
+}
\ No newline at end of file