From 63f9950b033ab6367b7fe3a890b7105ad62f00f6 Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Wed, 17 Mar 2021 18:40:52 +0000 Subject: [PATCH 1/2] Add Windows implementation. --- README.md | 6 +- package.json | 1 + windows/RNGestureHandler/.gitignore | 92 +++++ windows/RNGestureHandler/README.md | 25 ++ .../Handlers/RNFlingHandler.cpp | 85 ++++ .../Handlers/RNFlingHandler.h | 26 ++ .../Handlers/RNForceTouchHandler.cpp | 14 + .../Handlers/RNForceTouchHandler.h | 12 + .../Handlers/RNLongPressHandler.cpp | 35 ++ .../Handlers/RNLongPressHandler.h | 15 + .../Handlers/RNPanHandler.cpp | 47 +++ .../RNGestureHandler/Handlers/RNPanHandler.h | 15 + .../Handlers/RNPinchHandler.cpp | 50 +++ .../Handlers/RNPinchHandler.h | 18 + .../Handlers/RNRotationHandler.cpp | 54 +++ .../Handlers/RNRotationHandler.h | 18 + .../Handlers/RNTapHandler.cpp | 33 ++ .../RNGestureHandler/Handlers/RNTapHandler.h | 15 + .../RNGestureHandler/PropertySheet.props | 16 + .../RNGestureHandler/RNGestureHandler.cpp | 390 ++++++++++++++++++ .../RNGestureHandler/RNGestureHandler.def | 3 + .../RNGestureHandler/RNGestureHandler.h | 161 ++++++++ .../RNGestureHandler/RNGestureHandler.vcxproj | 182 ++++++++ .../RNGestureHandler.vcxproj.filters | 82 ++++ .../RNGestureHandler/RNGestureHandlerEvents.h | 10 + .../RNGestureHandlerModule.cpp | 164 ++++++++ .../RNGestureHandler/RNGestureHandlerModule.h | 52 +++ .../RNGestureHandler/RNGestureRegistry.cpp | 85 ++++ .../RNGestureHandler/RNGestureRegistry.h | 27 ++ .../RNGestureHandler/ReactPackageProvider.cpp | 17 + .../RNGestureHandler/ReactPackageProvider.h | 19 + .../RNGestureHandler/ReactPackageProvider.idl | 9 + .../RNGestureHandler/packages.config | 4 + .../RNGestureHandler/RNGestureHandler/pch.cpp | 1 + .../RNGestureHandler/RNGestureHandler/pch.h | 20 + .../RNGestureHandler/RNGestureHandler62.sln | 254 ++++++++++++ .../RNGestureHandler/RNGestureHandler63.sln | 226 ++++++++++ yarn.lock | 200 ++++++++- 38 files changed, 2477 insertions(+), 6 deletions(-) create mode 100644 windows/RNGestureHandler/.gitignore create mode 100644 windows/RNGestureHandler/README.md create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/PropertySheet.props create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.def create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj.filters create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerEvents.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.h create mode 100644 windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.idl create mode 100644 windows/RNGestureHandler/RNGestureHandler/packages.config create mode 100644 windows/RNGestureHandler/RNGestureHandler/pch.cpp create mode 100644 windows/RNGestureHandler/RNGestureHandler/pch.h create mode 100644 windows/RNGestureHandler/RNGestureHandler62.sln create mode 100644 windows/RNGestureHandler/RNGestureHandler63.sln diff --git a/README.md b/README.md index 1075756925..bf8491bc45 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ Check [getting started](https://docs.swmansion.com/react-native-gesture-handler/ Check out our dedicated documentation page for info about this library, API reference and more: [https://docs.swmansion.com/react-native-gesture-handler/docs/](https://docs.swmansion.com/react-native-gesture-handler/docs/) +For Windows-specific documentation, check out the [Windows README](windows/RNGestureHandler/README.md). + ## Examples If you want to play with the API but don't feel like trying it on a real app, you can run the example project. Clone the repo, go to the `Example/` folder and run: @@ -28,9 +30,9 @@ If you are running on ios, run `pod install` in the ios folder Run `yarn start` to start the metro bundler -Run `react-native run-android` or `react-native run-ios` (depending on which platform you want to run the example app on). +Run `react-native run-android`, `react-native run-ios` or `react-native run-windows` (depending on which platform you want to run the example app on). -You will need to have an Android or iOS device or emulator connected as well as `react-native-cli` package installed globally. +You will need to have an Android / iOS / Windows device or emulator connected as well as `react-native-cli` package installed globally. ## React native Support diff --git a/package.json b/package.json index 615ab7a406..446168cc30 100644 --- a/package.json +++ b/package.json @@ -92,6 +92,7 @@ "react-native": "^0.63.4", "react-native-builder-bob": "^0.17.1", "react-native-web": "^0.11.7", + "react-native-windows": "^0.63.0-0", "react-test-renderer": "16.8.6", "release-it": "^13.6.5", "typescript": "^4.1.2" diff --git a/windows/RNGestureHandler/.gitignore b/windows/RNGestureHandler/.gitignore new file mode 100644 index 0000000000..4ea0c7b5a3 --- /dev/null +++ b/windows/RNGestureHandler/.gitignore @@ -0,0 +1,92 @@ +*AppPackages* +*BundleArtifacts* + +#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 + +#Files generated by the VS build +**/Generated Files/** + diff --git a/windows/RNGestureHandler/README.md b/windows/RNGestureHandler/README.md new file mode 100644 index 0000000000..ddba6cac53 --- /dev/null +++ b/windows/RNGestureHandler/README.md @@ -0,0 +1,25 @@ +# react-native-gesture-handler Windows Implementation + +## Module Installation +You can either use autolinking on react-native-windows 0.63 and later or manually link the module on earlier releases. + +## Automatic install with autolinking on RNW >= 0.63 +RNGestureHandler supports autolinking. Just call: `npm i react-native-gesture-handler --save` + +## Manual installation on RNW >= 0.62 +1. `npm install react-native-gesture-handler --save` +2. Open your solution in Visual Studio 2019 (eg. `windows\yourapp.sln`) +3. Right-click Solution icon in Solution Explorer > Add > Existing Project... +4. Add `node_modules\react-native-gesture-handler\windows\RNGestureHandler\RNGestureHandler.vcxproj` +5. Right-click main application project > Add > Reference... +6. Select `RNGestureHandler` in Solution Projects +7. In app `pch.h` add `#include "winrt/RNGestureHandler.h"` +8. In `App.cpp` add `PackageProviders().Append(winrt::RNGestureHandler::ReactPackageProvider());` before `InitializeComponent();` + +## Module development + +If you want to contribute to this module Windows implementation, first you must install the [Windows Development Dependencies](https://aka.ms/rnw-deps). + +You must temporarily install the `react-native-windows` package. Versions of `react-native-windows` and `react-native` must match, e.g. if the module uses `react-native@0.62`, install `npm i react-native-windows@^0.62 --dev`. + +Now, you will be able to open corresponding `RNGestureHandler.sln` file, e.g. `RNGestureHandler62.sln` for `react-native-windows@0.62`. \ No newline at end of file diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.cpp new file mode 100644 index 0000000000..c0f853b5f4 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.cpp @@ -0,0 +1,85 @@ +#include "pch.h" +#include "RNFlingHandler.h" + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNFlingGestureHandler::sendFlingEvent(winrt::Windows::Foundation::Point pos) +{ + RNGestureHandlerEventExtraData eventData; + + eventData.hasXY = true; + eventData.x = pos.X; + eventData.y = pos.Y; + + eventData.hasAbsoluteXY = true; + eventData.absoluteX = pos.X; + eventData.absoluteY = pos.Y; + + RNGestureHandlerEvent event{}; + event.viewTag = viewTag; + event.handlerTag = handlerTag; + event.state = RNGestureHandlerState::Active; + event.prevState = lastState; + event.extraData = &eventData; + + sendEventsInState(RNGestureHandlerState::Active, &eventData); + sendTouchEvent(&event); +} + +void RNFlingGestureHandler::onManipulationUpdated(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) +{ + sendFlingEvent(e.Position()); +} + +void RNFlingGestureHandler::onCrossSliding(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::CrossSlidingEventArgs const& e) +{ + VERBOSE_DEBUG("onCrossSliding\n"); + switch (e.CrossSlidingState()) + { + case CrossSlidingState::Completed: + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); + break; + default: + sendFlingEvent(e.Position()); + break; + } +} + +void RNFlingGestureHandler::onDragging(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::DraggingEventArgs const& e) +{ + VERBOSE_DEBUG("onDragging\n"); + switch (e.DraggingState()) + { + case DraggingState::Completed: + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); + break; + default: + sendFlingEvent(e.Position()); + break; + } +} + +void RNFlingGestureHandler::onManipulationCompleted(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const&) +{ + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} + +void RNFlingGestureHandler::onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) +{ + RNGestureHandler::onPointerReleased(sender, e); + + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.h b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.h new file mode 100644 index 0000000000..f4d35bced9 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNFlingHandler.h @@ -0,0 +1,26 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNFlingGestureHandler : RNGestureHandler + { + void onManipulationUpdated(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) override; + + void onManipulationCompleted(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const& e) override; + + void onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) override; + + void onCrossSliding(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::CrossSlidingEventArgs const& e) override; + + void onDragging(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::DraggingEventArgs const& e) override; + + void sendFlingEvent(winrt::Windows::Foundation::Point point); + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.cpp new file mode 100644 index 0000000000..695ff54d22 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.cpp @@ -0,0 +1,14 @@ +#include "pch.h" +#include "RNForceTouchHandler.h" + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNForceTouchGestureHandler::onManipulationUpdated(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const&) +{ + // Not available under UWP. +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.h b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.h new file mode 100644 index 0000000000..dafae7916b --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNForceTouchHandler.h @@ -0,0 +1,12 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNForceTouchGestureHandler : RNGestureHandler + { + void onManipulationUpdated(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) override; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.cpp new file mode 100644 index 0000000000..4f7e4d9793 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.cpp @@ -0,0 +1,35 @@ +#include "pch.h" +#include "RNLongPressHandler.h" + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNLongPressGestureHandler::onHolding(winrt::Windows::Foundation::IInspectable const&, + HoldingEventArgs const& e) +{ + VERBOSE_DEBUG("onHolding\n"); + + RNGestureHandlerEventExtraData eventData; + + eventData.hasXY = true; + eventData.x = e.Position().X; + eventData.y = e.Position().Y; + + eventData.hasAbsoluteXY = true; + eventData.absoluteX = e.Position().X; + eventData.absoluteY = e.Position().Y; + + sendEventsInState(RNGestureHandlerState::Active, &eventData); +} + +void RNLongPressGestureHandler::onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) +{ + RNGestureHandler::onPointerReleased(sender, e); + + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.h b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.h new file mode 100644 index 0000000000..5bb61c42ce --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNLongPressHandler.h @@ -0,0 +1,15 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNLongPressGestureHandler : RNGestureHandler + { + void onHolding(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::HoldingEventArgs const& e) override; + + void onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) override; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.cpp new file mode 100644 index 0000000000..9acec509be --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.cpp @@ -0,0 +1,47 @@ +#include "pch.h" +#include "RNPanHandler.h" + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNPanGestureHandler::onManipulationUpdated(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) +{ + RNGestureHandlerEventExtraData eventData; + + eventData.hasTranslationXY = true; + eventData.translationX = e.Cumulative().Translation.X; + eventData.translationY = e.Cumulative().Translation.Y; + + eventData.hasVelocityXY = true; + eventData.velocityX = e.Velocities().Linear.X; + eventData.velocityY = e.Velocities().Linear.Y; + + eventData.hasXY = true; + eventData.x = e.Position().X; + eventData.y = e.Position().Y; + + eventData.hasAbsoluteXY = true; + eventData.absoluteX = e.Position().X; + eventData.absoluteY = e.Position().Y; + + RNGestureHandlerEvent event{}; + event.viewTag = viewTag; + event.handlerTag = handlerTag; + event.state = RNGestureHandlerState::Active; + event.prevState = lastState; + event.extraData = &eventData; + + sendEventsInState(RNGestureHandlerState::Active, &eventData); + sendTouchEvent(&event); +} + +void RNPanGestureHandler::onManipulationCompleted(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const&) +{ + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} \ No newline at end of file diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.h b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.h new file mode 100644 index 0000000000..225c9bed6b --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPanHandler.h @@ -0,0 +1,15 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNPanGestureHandler : public RNGestureHandler + { + void onManipulationUpdated(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) override; + + void onManipulationCompleted(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const& e) override; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.cpp new file mode 100644 index 0000000000..067c550e5d --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.cpp @@ -0,0 +1,50 @@ +#include "pch.h" +#include "RNPinchHandler.h" + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNPinchGestureHandler::onManipulationUpdated(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) +{ + RNGestureHandlerEventExtraData eventData; + + eventData.hasScale = true; + eventData.scale = e.Cumulative().Scale; + + eventData.hasVelocity = true; + eventData.velocity = e.Velocities().Expansion; + + eventData.hasFocalXY = true; + eventData.focalX = e.Position().X; + eventData.focalY = e.Position().X; + + RNGestureHandlerEvent event{}; + event.viewTag = viewTag; + event.handlerTag = handlerTag; + event.state = RNGestureHandlerState::Active; + event.prevState = lastState; + event.extraData = &eventData; + + sendEventsInState(RNGestureHandlerState::Active, &eventData); + sendTouchEvent(&event); +} + +void RNPinchGestureHandler::onManipulationCompleted(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const&) +{ + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} + +void RNPinchGestureHandler::onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) +{ + RNGestureHandler::onPointerReleased(sender, e); + + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.h b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.h new file mode 100644 index 0000000000..417071f606 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNPinchHandler.h @@ -0,0 +1,18 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNPinchGestureHandler : RNGestureHandler + { + void onManipulationUpdated(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) override; + + void onManipulationCompleted(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const& e) override; + + void onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) override; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.cpp new file mode 100644 index 0000000000..6e5b02e343 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.cpp @@ -0,0 +1,54 @@ +#include "pch.h" +#include "RNRotationHandler.h" + +#define _USE_MATH_DEFINES +#include + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNRotationGestureHandler::onManipulationUpdated(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) +{ + RNGestureHandlerEventExtraData eventData; + + static const float DEGREE_TO_RADS = (float)M_PI / 180.0f; + eventData.hasRotation = true; + eventData.rotation = e.Cumulative().Rotation * DEGREE_TO_RADS; + + eventData.hasVelocity = true; + eventData.velocity = e.Velocities().Angular; + + eventData.hasAnchorXY = true; + eventData.anchorX = e.Position().X; + eventData.anchorY = e.Position().Y; + + RNGestureHandlerEvent event{}; + event.viewTag = viewTag; + event.handlerTag = handlerTag; + event.state = RNGestureHandlerState::Active; + event.prevState = lastState; + event.extraData = &eventData; + + sendEventsInState(RNGestureHandlerState::Active, &eventData); + sendTouchEvent(&event); +} + +void RNRotationGestureHandler::onManipulationCompleted(winrt::Windows::Foundation::IInspectable const&, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const&) +{ + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} + +void RNRotationGestureHandler::onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) +{ + RNGestureHandler::onPointerReleased(sender, e); + + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.h b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.h new file mode 100644 index 0000000000..efd4363bf3 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNRotationHandler.h @@ -0,0 +1,18 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNRotationGestureHandler : RNGestureHandler + { + void onManipulationUpdated(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e) override; + + void onManipulationCompleted(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const& e) override; + + void onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) override; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.cpp new file mode 100644 index 0000000000..37c5935ce6 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.cpp @@ -0,0 +1,33 @@ +#include "pch.h" +#include "RNTapHandler.h" + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNTapGestureHandler::onTapped(winrt::Windows::Foundation::IInspectable const&, + TappedEventArgs const& e) +{ + RNGestureHandlerEventExtraData eventData; + + eventData.hasXY = true; + eventData.x = e.Position().X; + eventData.y = e.Position().Y; + + eventData.hasAbsoluteXY = true; + eventData.absoluteX = e.Position().X; + eventData.absoluteY = e.Position().Y; + + sendEventsInState(RNGestureHandlerState::Active, &eventData); +} + +void RNTapGestureHandler::onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) +{ + RNGestureHandler::onPointerReleased(sender, e); + + sendEventsInState(RNGestureHandlerState::End, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} diff --git a/windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.h b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.h new file mode 100644 index 0000000000..4f85e99020 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/Handlers/RNTapHandler.h @@ -0,0 +1,15 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNTapGestureHandler : RNGestureHandler + { + void onTapped(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::TappedEventArgs const& e) override; + + void onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) override; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/PropertySheet.props b/windows/RNGestureHandler/RNGestureHandler/PropertySheet.props new file mode 100644 index 0000000000..5942ba395b --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/PropertySheet.props @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.cpp b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.cpp new file mode 100644 index 0000000000..20f4774464 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.cpp @@ -0,0 +1,390 @@ +#include "pch.h" +#include "RNGestureHandler.h" + +#include + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +RNGestureHandlerEventExtraData::RNGestureHandlerEventExtraData() : + hasTranslationXY(false), + translationX(0), + translationY(0), + hasVelocityXY(false), + velocityX(0), + velocityY(0), + hasRotation(false), + rotation(0), + hasVelocity(false), + velocity(0), + hasAnchorXY(false), + anchorX(0), + anchorY(0), + hasXY(false), + x(0), + y(0), + hasAbsoluteXY(false), + absoluteX(0), + absoluteY(0) +{ +} + +RNGestureHandler::RNGestureHandler() : + lastState(RNGestureHandlerState::Undetermined), + kind(RNGestureHandlerKind::Unknown), + handlerTag(-1), + viewTag(-1), + coalescingKey(0) +{ + +} + +static GestureSettings GenerateGestureSettings(RNGestureHandlerKind kind) +{ + GestureSettings settings{}; + + switch (kind) + { + case RNGestureHandlerKind::PanGesture: + settings |= GestureSettings::ManipulationTranslateX + | GestureSettings::ManipulationTranslateY; + break; + case RNGestureHandlerKind::RotationGesture: + settings |= GestureSettings::ManipulationRotate; + break; + case RNGestureHandlerKind::FlingGesture: + settings |= GestureSettings::CrossSlide | GestureSettings::Drag; + break; + case RNGestureHandlerKind::PinchGesture: + settings |= GestureSettings::ManipulationScale; + break; + case RNGestureHandlerKind::LongPressGesture: + settings |= GestureSettings::Hold; + break; + case RNGestureHandlerKind::TapGesture: + settings |= GestureSettings::Tap; + break; + } + + return settings; +} + +void RNGestureHandler::bindToView(winrt::Windows::UI::Xaml::UIElement element) +{ + recognizer = GestureRecognizer {}; + recognizer.GestureSettings(GenerateGestureSettings(kind)); + + // Set up event handlers to respond to gesture recognizer output + manipulationStartedRevoker = recognizer.ManipulationStarted({ this, &RNGestureHandler::onManipulationStarted }); + manipulationUpdatedRevoker = recognizer.ManipulationUpdated({ this, &RNGestureHandler::onManipulationUpdated }); + manipulationCompletedRevoker = recognizer.ManipulationCompleted({ this, &RNGestureHandler::onManipulationCompleted }); + + if (kind == RNGestureHandlerKind::FlingGesture) + { + draggingRevoker = recognizer.Dragging({ this, &RNGestureHandler::onDragging }); + crossSlidingRevoker = recognizer.CrossSliding({ this, &RNGestureHandler::onCrossSliding }); + } + else if (kind == RNGestureHandlerKind::LongPressGesture) + { + holdingRevoker = recognizer.Holding({ this, &RNGestureHandler::onHolding }); + } + else if (kind == RNGestureHandlerKind::TapGesture) + { + tappedRevoker = recognizer.Tapped({ this, &RNGestureHandler::onTapped }); + } + + // Set up pointer event handlers. These receive input events that are used by the gesture recognizer. + pointerPressedRevoker = element.PointerPressed({ this, &RNGestureHandler::onPointerPressed }); + pointerMovedRevoker = element.PointerMoved({ this, &RNGestureHandler::onPointerMoved }); + pointerReleasedRevoker = element.PointerReleased({ this, &RNGestureHandler::onPointerReleased }); + pointerCanceledRevoker = element.PointerCanceled({ this, &RNGestureHandler::onPointerCanceled }); +} + +void RNGestureHandler::unbindFromView(winrt::Windows::UI::Xaml::UIElement element) +{ + element.PointerPressed(pointerPressedRevoker); + element.PointerMoved(pointerMovedRevoker); + element.PointerReleased(pointerReleasedRevoker); + element.PointerCanceled(pointerCanceledRevoker); + + recognizer.CrossSliding(crossSlidingRevoker); + recognizer.Dragging(draggingRevoker); + recognizer.Holding(holdingRevoker); + recognizer.Tapped(tappedRevoker); + + recognizer.ManipulationStarted(manipulationStartedRevoker); + recognizer.ManipulationUpdated(manipulationUpdatedRevoker); + recognizer.ManipulationCompleted(manipulationCompletedRevoker); + + recognizer = nullptr; + viewTag = -1; +} + +void RNGestureHandler::onPointerPressed(winrt::Windows::Foundation::IInspectable const& sender, + PointerRoutedEventArgs const& e) +{ + VERBOSE_DEBUG("onPointerPressed\n"); + + sendEventsInState(RNGestureHandlerState::Began, 0); + + // Set the pointer capture to the element being interacted with so that only it + // will fire pointer-related events + UIElement element = sender.as(); + element.CapturePointer(e.Pointer()); + + // Feed the current point into the gesture recognizer as a down event + recognizer.ProcessDownEvent(e.GetCurrentPoint(element)); +} + +void RNGestureHandler::onPointerMoved(winrt::Windows::Foundation::IInspectable const& sender, + PointerRoutedEventArgs const& e) +{ + // Feed the set of points into the gesture recognizer as a move event + UIElement reference = sender.as(); + + auto points = e.GetIntermediatePoints(reference); + + recognizer.ProcessMoveEvents(points); +} + +void RNGestureHandler::onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + PointerRoutedEventArgs const& e) +{ + VERBOSE_DEBUG("OnPointerReleased\n"); + + // Feed the current point into the gesture recognizer as an up event + UIElement reference = sender.as(); + + recognizer.ProcessUpEvent(e.GetCurrentPoint(reference)); + + // Release the pointer + auto element = reference; + element.ReleasePointerCapture(e.Pointer()); +} + +void RNGestureHandler::onPointerCanceled(winrt::Windows::Foundation::IInspectable const& sender, + PointerRoutedEventArgs const& e) +{ + VERBOSE_DEBUG("OnPointerCanceled\n"); + + recognizer.CompleteGesture(); + + UIElement element = sender.as(); + element.ReleasePointerCapture(e.Pointer()); + + sendEventsInState(RNGestureHandlerState::Cancelled, 0); + sendEventsInState(RNGestureHandlerState::Undetermined, 0); +} + +void RNGestureHandler::onManipulationStarted(winrt::Windows::Foundation::IInspectable const&, + ManipulationStartedEventArgs const&) +{ + VERBOSE_DEBUG("onManipulationStarted\n"); +} + +void RNGestureHandler::onManipulationUpdated(winrt::Windows::Foundation::IInspectable const&, + ManipulationUpdatedEventArgs const&) +{ + VERBOSE_DEBUG("onManipulationUpdated\n"); +} + +void RNGestureHandler::onManipulationCompleted(winrt::Windows::Foundation::IInspectable const&, + ManipulationCompletedEventArgs const&) +{ + VERBOSE_DEBUG("onManipulationCompleted\n"); +} + +void RNGestureHandler::onCrossSliding(winrt::Windows::Foundation::IInspectable const&, + CrossSlidingEventArgs const&) +{ + VERBOSE_DEBUG("onCrossSliding\n"); +} + +void RNGestureHandler::onDragging(winrt::Windows::Foundation::IInspectable const&, + DraggingEventArgs const&) +{ + VERBOSE_DEBUG("onDragging\n"); +} + +void RNGestureHandler::onHolding(winrt::Windows::Foundation::IInspectable const&, + HoldingEventArgs const&) +{ + VERBOSE_DEBUG("onHolding\n"); +} + +void RNGestureHandler::onTapped(winrt::Windows::Foundation::IInspectable const&, + TappedEventArgs const&) +{ + VERBOSE_DEBUG("onTapped\n"); +} + +void RNGestureHandler::updateConfig(JSValueObject config) +{ + VERBOSE_DEBUG("updateConfig\n"); +} + +void RNGestureHandler::sendEventsInState(RNGestureHandlerState state, + RNGestureHandlerEventExtraData* extraData) +{ + if (state == lastState) + { + return; + } + + RNGestureHandlerEvent event{}; + event.viewTag = viewTag; + event.handlerTag = handlerTag; + event.prevState = lastState; + event.extraData = extraData; + + if (state == RNGestureHandlerState::Active) + { + // Generate a unique coalescing-key each time the gesture-handler becomes active. + static unsigned int nextEventCoalescingKey = 0; + coalescingKey = nextEventCoalescingKey++; + } + else if (state == RNGestureHandlerState::End && lastState != RNGestureHandlerState::Active) + { + event.state = RNGestureHandlerState::Active; + event.coalescingKey = coalescingKey; + sendStateChangeEvent(&event); + + lastState = RNGestureHandlerState::Active; + } + + event.state = state; + event.prevState = lastState; + event.coalescingKey = coalescingKey; + sendStateChangeEvent(&event); + + lastState = state; +} + +static void WriteJSEventData(IJSValueWriter const& writer, RNGestureHandlerEvent* event) +{ + writer.WriteObjectBegin(); + + writer.WritePropertyName(winrt::to_hstring(L"handlerTag")); + writer.WriteInt64(event->handlerTag); + + writer.WritePropertyName(winrt::to_hstring(L"state")); + writer.WriteInt64(static_cast(event->state)); + + writer.WritePropertyName(winrt::to_hstring(L"numberOfPointers")); + writer.WriteInt64(winrt::Windows::Devices::Input::PointerDevice::GetPointerDevices().Size()); + + if (event->extraData) + { + writer.WritePropertyName(winrt::to_hstring(L"coalescingKey")); + writer.WriteInt64(event->coalescingKey); + + if (event->extraData->hasTranslationXY) + { + writer.WritePropertyName(winrt::to_hstring(L"translationX")); + writer.WriteDouble(event->extraData->translationX); + + writer.WritePropertyName(winrt::to_hstring(L"translationY")); + writer.WriteDouble(event->extraData->translationY); + } + + if (event->extraData->hasVelocityXY) + { + writer.WritePropertyName(winrt::to_hstring(L"velocityX")); + writer.WriteDouble(event->extraData->velocityX); + + writer.WritePropertyName(winrt::to_hstring(L"velocityY")); + writer.WriteDouble(event->extraData->velocityY); + } + + if (event->extraData->hasXY) + { + writer.WritePropertyName(winrt::to_hstring(L"x")); + writer.WriteDouble(event->extraData->x); + + writer.WritePropertyName(winrt::to_hstring(L"y")); + writer.WriteDouble(event->extraData->y); + } + + if (event->extraData->hasAbsoluteXY) + { + writer.WritePropertyName(winrt::to_hstring(L"absoluteX")); + writer.WriteDouble(event->extraData->x); + + writer.WritePropertyName(winrt::to_hstring(L"absoluteY")); + writer.WriteDouble(event->extraData->y); + } + + if (event->extraData->hasRotation) + { + writer.WritePropertyName(winrt::to_hstring(L"rotation")); + writer.WriteDouble(event->extraData->rotation); + } + + if (event->extraData->hasVelocity) + { + writer.WritePropertyName(winrt::to_hstring(L"velocity")); + writer.WriteDouble(event->extraData->velocity); + } + + if (event->extraData->hasAnchorXY) + { + writer.WritePropertyName(winrt::to_hstring(L"anchorX")); + writer.WriteDouble(event->extraData->anchorX); + + writer.WritePropertyName(winrt::to_hstring(L"anchorY")); + writer.WriteDouble(event->extraData->anchorY); + } + + if (event->extraData->hasScale) + { + writer.WritePropertyName(winrt::to_hstring(L"scale")); + writer.WriteDouble(event->extraData->scale); + } + + if (event->extraData->hasFocalXY) + { + writer.WritePropertyName(winrt::to_hstring(L"focalX")); + writer.WriteDouble(event->extraData->focalX); + + writer.WritePropertyName(winrt::to_hstring(L"focalY")); + writer.WriteDouble(event->extraData->focalY); + } + } + + writer.WriteObjectEnd(); +} + +void RNGestureHandler::sendTouchEvent(RNGestureHandlerEvent* event) +{ + XamlUIService uiService = XamlUIService::FromContext(reactContext.Handle()); + DependencyObject instance = uiService.ElementFromReactTag(viewTag); + if (!instance) + return; + + FrameworkElement element = instance.try_as(); + + reactContext.DispatchEvent(element, L"onGestureHandlerEvent", + [&](IJSValueWriter const& writer) { + WriteJSEventData(writer, event); + } + ); +} + +void RNGestureHandler::sendStateChangeEvent(RNGestureHandlerEvent* event) +{ + XamlUIService uiService = XamlUIService::FromContext(reactContext.Handle()); + DependencyObject instance = uiService.ElementFromReactTag(viewTag); + if (!instance) + return; + + FrameworkElement element = instance.try_as(); + + reactContext.DispatchEvent(element, L"onGestureHandlerStateChange", + [&](IJSValueWriter const& writer) { + WriteJSEventData(writer, event); + } + ); +} \ No newline at end of file diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.def b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.def new file mode 100644 index 0000000000..24e7c1235c --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.def @@ -0,0 +1,3 @@ +EXPORTS +DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE +DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.h b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.h new file mode 100644 index 0000000000..42efec5efa --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.h @@ -0,0 +1,161 @@ +#pragma once + +#include "pch.h" +#include "NativeModules.h" +#include "RNGestureRegistry.h" + +using namespace winrt::Microsoft::ReactNative; + +namespace winrt::RNGestureHandler +{ + // In sync with react-native-gesture-handler/src/State.ts + enum class RNGestureHandlerState + { + Undetermined = 0, + Failed = 1, + Began = 2, + Cancelled = 3, + Active = 4, + End = 5, + }; + + struct RNGestureHandlerEventExtraData + { + RNGestureHandlerEventExtraData(); + + // Pan-specific + bool hasTranslationXY; + float translationX; + float translationY; + + bool hasVelocityXY; + float velocityX; + float velocityY; + + // Rotation/Pinch-specific + bool hasRotation; + float rotation; + + bool hasVelocity; + float velocity; + + bool hasAnchorXY; + float anchorX; + float anchorY; + + // LongPress/Pan/Tap-specific + bool hasXY; + float x; + float y; + + bool hasAbsoluteXY; + float absoluteX; + float absoluteY; + + // Pinch-specific + bool hasScale; + float scale; + + bool hasFocalXY; + float focalX; + float focalY; + }; + + struct RNGestureHandlerEvent + { + int viewTag; + int handlerTag; + RNGestureHandlerState prevState, state; + RNGestureHandlerEventExtraData* extraData; + unsigned int coalescingKey; + }; + + enum class RNGestureHandlerKind + { + FlingGesture, + ForceTouchGesture, + LongPressGesture, + PanGesture, + PinchGesture, + RotationGesture, + TapGesture, + Unknown + }; + + struct RNGestureHandler + { + RNGestureHandler(); + + RNGestureHandlerKind kind; + int handlerTag; + int viewTag; + int coalescingKey; + winrt::Windows::UI::Input::GestureRecognizer recognizer; + RNGestureHandlerState lastState; + React::ReactContext reactContext; + + virtual void updateConfig(JSValueObject config); + + void bindToView(winrt::Windows::UI::Xaml::UIElement view); + void unbindFromView(winrt::Windows::UI::Xaml::UIElement view); + + void sendEventsInState(RNGestureHandlerState state, RNGestureHandlerEventExtraData* extraData); + void sendTouchEvent(RNGestureHandlerEvent* event); + void sendStateChangeEvent(RNGestureHandlerEvent* event); + + // Route the pointer pressed event to the gesture recognizer. + // The points are in the reference frame of the canvas that contains the rectangle element. + void onPointerPressed(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e); + + // Route the pointer moved event to the gesture recognizer. + // The points are in the reference frame of the canvas that contains the rectangle element. + void onPointerMoved(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e); + + // Route the pointer released event to the gesture recognizer. + // The points are in the reference frame of the canvas that contains the rectangle element. + virtual void onPointerReleased(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e); + + // Route the pointer canceled event to the gesture recognizer. + // The points are in the reference frame of the canvas that contains the rectangle element. + void onPointerCanceled(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e); + + void onManipulationStarted(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationStartedEventArgs const& e); + + virtual void onManipulationUpdated(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationUpdatedEventArgs const& e); + + virtual void onManipulationCompleted(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::ManipulationCompletedEventArgs const& e); + + virtual void onCrossSliding(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::CrossSlidingEventArgs const& e); + + virtual void onDragging(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::DraggingEventArgs const& e); + + virtual void onHolding(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::HoldingEventArgs const& e); + + virtual void onTapped(winrt::Windows::Foundation::IInspectable const& sender, + winrt::Windows::UI::Input::TappedEventArgs const& e); + + winrt::event_token pointerPressedRevoker; + winrt::event_token pointerMovedRevoker; + winrt::event_token pointerReleasedRevoker; + winrt::event_token pointerCanceledRevoker; + + winrt::event_token crossSlidingRevoker; + winrt::event_token draggingRevoker; + winrt::event_token holdingRevoker; + winrt::event_token tappedRevoker; + + winrt::event_token manipulationStartedRevoker; + winrt::event_token manipulationUpdatedRevoker; + winrt::event_token manipulationCompletedRevoker; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj new file mode 100644 index 0000000000..6f60afdd2b --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj @@ -0,0 +1,182 @@ + + + + + true + true + true + {5fe08a9d-cacb-4309-b75a-2578c7dc786a} + RNGestureHandler + RNGestureHandler + en-US + 16.0 + true + Windows Store + 10.0 + 10.0.18362.0 + 10.0.16299.0 + + + + $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'node_modules\react-native-windows\package.json'))\node_modules\react-native-windows\ + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + DynamicLibrary + Unicode + false + + + true + true + + + false + true + false + + + + + + + + + + + + + + + + + + Use + pch.h + $(IntDir)pch.pch + Level4 + %(AdditionalOptions) /bigobj + + /DWINRT_NO_MAKE_DETECTION %(AdditionalOptions) + 28204 + _WINRT_DLL;%(PreprocessorDefinitions) + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + $(FollyDir);%(AdditionalIncludeDirectories) + + + Console + true + RNGestureHandler.def + + + + + _DEBUG;%(PreprocessorDefinitions) + ProgramDatabase + + + + + NDEBUG;%(PreprocessorDefinitions) + + + + + + + + + + + + + ReactPackageProvider.idl + + + + + + + + + + + + + + + Create + + + ReactPackageProvider.idl + + + + + + + + + + + + + + + + + + + + + + + This project references targets in your node_modules\react-native-windows folder. The missing file is {0}. + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj.filters b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj.filters new file mode 100644 index 0000000000..baa9442257 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandler.vcxproj.filters @@ -0,0 +1,82 @@ + + + + + accd3aa8-1ba0-4223-9bbe-0c431709210b + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms + + + {926ab91d-31b5-48c3-b9a4-e681349f27f0} + + + {b2052106-c8bc-41be-85c0-efeed11a1d87} + + + + + + + + + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + + + + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + Handlers + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerEvents.h b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerEvents.h new file mode 100644 index 0000000000..fa1305edfb --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerEvents.h @@ -0,0 +1,10 @@ +#pragma once + +#include "RNGestureHandler.h" + +namespace winrt::RNGestureHandler { + enum class RNGestureHandlerState; + struct RNGestureHandlerEventExtraData; + + +} diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp new file mode 100644 index 0000000000..6197163ff0 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp @@ -0,0 +1,164 @@ +#include "pch.h" +#include "RNGestureHandlerModule.h" +#include "Handlers/RNFlingHandler.h" +#include "Handlers/RNForceTouchHandler.h" +#include "Handlers/RNLongPressHandler.h" +#include "Handlers/RNPanHandler.h" +#include "Handlers/RNPinchHandler.h" +#include "Handlers/RNRotationHandler.h" +#include "Handlers/RNTapHandler.h" + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Xaml; + +void RNGestureHandlerModule::Init(React::ReactContext const& _reactContext) noexcept +{ + reactContext = _reactContext; +} + +void RNGestureHandlerModule::GetConstantProvider(ReactConstantProvider& provider) noexcept +{ + JSValueArray directions + { + (int)RNGestureHandlerDirection::Right, + (int)RNGestureHandlerDirection::Left, + (int)RNGestureHandlerDirection::Up, + (int)RNGestureHandlerDirection::Down + }; + provider.Add(L"Directions", directions); +} + +static RNGestureHandlerKind getHandlerKind(std::string handlerName) noexcept +{ + if (handlerName == "FlingGestureHandler") + { + return RNGestureHandlerKind::FlingGesture; + } + else if (handlerName == "ForceTouchGestureHandler") + { + return RNGestureHandlerKind::ForceTouchGesture; + } + else if (handlerName == "LongPressGestureHandler") + { + return RNGestureHandlerKind::LongPressGesture; + } + else if (handlerName == "PanGestureHandler") + { + return RNGestureHandlerKind::PanGesture; + } + else if (handlerName == "PinchGestureHandler") + { + return RNGestureHandlerKind::PinchGesture; + } + else if (handlerName == "RotationGestureHandler") + { + return RNGestureHandlerKind::RotationGesture; + } + else if (handlerName == "TapGestureHandler") + { + return RNGestureHandlerKind::TapGesture; + } + else + { + return RNGestureHandlerKind::Unknown; + } +} + +void RNGestureHandlerModule::CreateGestureHandler(std::string handlerName, int handlerTag, + JSValueObject config) noexcept +{ + RNGestureHandlerKind handlerKind = getHandlerKind(handlerName); + RNGestureHandler* handler = nullptr; + switch (handlerKind) + { + case RNGestureHandlerKind::FlingGesture: + { + handler = new RNFlingGestureHandler(); + break; + } + case RNGestureHandlerKind::ForceTouchGesture: + { + handler = new RNForceTouchGestureHandler(); + break; + } + case RNGestureHandlerKind::LongPressGesture: + { + handler = new RNLongPressGestureHandler(); + break; + } + case RNGestureHandlerKind::PanGesture: + { + handler = new RNPanGestureHandler(); + break; + } + case RNGestureHandlerKind::PinchGesture: + { + handler = new RNPinchGestureHandler(); + break; + } + case RNGestureHandlerKind::RotationGesture: + { + handler = new RNRotationGestureHandler(); + break; + } + case RNGestureHandlerKind::TapGesture: + { + handler = new RNTapGestureHandler(); + break; + } + } + + if (!handler) + { + return; + } + + handler->kind = handlerKind; + handler->reactContext = reactContext; + handler->lastState = RNGestureHandlerState::Undetermined; + handler->handlerTag = handlerTag; + + gestureRegistry.registerHandler(handler); +} + +void RNGestureHandlerModule::AttachGestureHandler(int handlerTag, int viewTag) noexcept +{ + XamlUIService uiService = XamlUIService::FromContext(reactContext.Handle()); + DependencyObject instance = uiService.ElementFromReactTag(viewTag); + if (!instance) + { + return; + } + + UIElement element = instance.as(); + if (!gestureRegistry.attachHandlerToView(handlerTag, element)) + { + return; + } + + RNGestureHandler* handler = gestureRegistry.getHandler(handlerTag); + handler->viewTag = viewTag; +} + +void RNGestureHandlerModule::UpdateGestureHandler(int handlerTag, JSValueObject config) noexcept +{ + RNGestureHandler* handler = gestureRegistry.getHandler(handlerTag); + if (!handler) + { + return; + } + + handler->updateConfig(std::move(config)); +} + +void RNGestureHandlerModule::DropGestureHandler(int handlerTag) noexcept +{ + RNGestureHandler* handler = gestureRegistry.getHandler(handlerTag); + if (!handler) + { + return; + } + + gestureRegistry.detachHandler(handler); + gestureRegistry.dropHandler(handler->handlerTag); +} diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.h b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.h new file mode 100644 index 0000000000..1fe78c2ad4 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.h @@ -0,0 +1,52 @@ +#pragma once + +#include "pch.h" +#include "NativeModules.h" +#include "RNGestureRegistry.h" + +using namespace winrt::Microsoft::ReactNative; + +#ifdef RNW61 +#define JSVALUEOBJECTPARAMETER +#else +#define JSVALUEOBJECTPARAMETER const & +#endif + +namespace winrt::RNGestureHandler +{ + enum class RNGestureHandlerDirection + { + Right = 1, + Left = 2, + Up = 4, + Down = 8, + }; + + REACT_MODULE(RNGestureHandlerModule, L"RNGestureHandlerModule"); + struct RNGestureHandlerModule + { + const std::string Name = "RNGestureHandlerModule"; + + React::ReactContext reactContext; + RNGestureRegistry gestureRegistry; + winrt::Windows::UI::Input::GestureRecognizer recognizer; + + REACT_INIT(Init); + void Init(React::ReactContext const& reactContext) noexcept; + + REACT_METHOD(CreateGestureHandler, L"createGestureHandler") + void CreateGestureHandler(std::string handlerName, int handlerTag, JSValueObject config) noexcept; + + REACT_METHOD(AttachGestureHandler, L"attachGestureHandler") + void AttachGestureHandler(int handlerTag, int viewTag) noexcept; + + REACT_METHOD(UpdateGestureHandler, L"updateGestureHandler") + void UpdateGestureHandler(int handlerTag, JSValueObject config) noexcept; + + REACT_METHOD(DropGestureHandler, L"dropGestureHandler") + void DropGestureHandler(int handlerTag) noexcept; + + REACT_CONSTANT_PROVIDER(GetConstantProvider) + void GetConstantProvider(ReactConstantProvider& provider) noexcept; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.cpp b/windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.cpp new file mode 100644 index 0000000000..67ba520840 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.cpp @@ -0,0 +1,85 @@ +#include "pch.h" +#include "RNGestureHandler.h" +#include "RNGestureRegistry.h" +#include + +using namespace winrt::RNGestureHandler; +using namespace winrt::Windows::UI::Input; +using namespace winrt::Windows::UI::Xaml; +using namespace winrt::Windows::UI::Xaml::Controls; +using namespace winrt::Windows::UI::Xaml::Input; + +void RNGestureRegistry::registerHandler(RNGestureHandler* handler) +{ + if (!handler) + { + return; + } + + if (handlers.find(handler->handlerTag) != handlers.end()) + { + return; + } + + handlers[handler->handlerTag] = handler; +} + +RNGestureHandler* RNGestureRegistry::getHandler(int handlerTag) +{ + auto handler = handlers.find(handlerTag); + return handler != handlers.end() ? handler->second : nullptr; +} + +bool RNGestureRegistry::attachHandlerToView(int handlerTag, winrt::Windows::UI::Xaml::UIElement view) +{ + RNGestureHandler* handler = getHandler(handlerTag); + if (!handler) + { + return false; + } + + handler->unbindFromView(view); + handler->bindToView(view); + + return true; +} + +void RNGestureRegistry::detachHandler(RNGestureHandler* handler) +{ + auto viewIt = attachedTo.find(handler->handlerTag); + if (viewIt == attachedTo.end()) + { + return; + } + + int attachedToView = attachedTo[handler->handlerTag]; + attachedTo.erase(handler->handlerTag); + + auto handlersIt = handlersForView.find(attachedToView); + if (handlersIt != handlersForView.end()) + { + std::vector attachedHandlers = handlersForView[attachedToView]; + + attachedHandlers.erase(std::remove(attachedHandlers.begin(), attachedHandlers.end(), handler)); + if (attachedHandlers.size() == 0) + { + handlersForView.erase(handlersForView.find(attachedToView)); + } + } +} + +void RNGestureRegistry::dropHandler(int handlerTag) +{ + auto it = handlers.find(handlerTag); + if (it == handlers.end()) + { + return; + } + + handlers.erase(it); +} + +void RNGestureRegistry::dropAllHandlers() +{ + handlers.clear(); +} diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.h b/windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.h new file mode 100644 index 0000000000..a5542badb5 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureRegistry.h @@ -0,0 +1,27 @@ +#pragma once + +#include "../RNGestureHandler.h" + +namespace winrt::RNGestureHandler +{ + struct RNGestureHandler; + + struct RNGestureRegistry + { + void registerHandler(RNGestureHandler* handler); + RNGestureHandler* getHandler(int handlerTag); + bool attachHandlerToView(int handlerTag, winrt::Windows::UI::Xaml::UIElement view); + void detachHandler(RNGestureHandler* handler); + void dropHandler(int handlerTag); + void dropAllHandlers(); + + // Maps from handler tags to their gesture handler. + std::unordered_map handlers; + + // Maps from handler tags to view tags. + std::unordered_map attachedTo; + + // Maps from view tags to a vector of gesture handlers. + std::unordered_map> handlersForView; + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.cpp b/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.cpp new file mode 100644 index 0000000000..83d98b51c0 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.cpp @@ -0,0 +1,17 @@ +#include "pch.h" +#include "ReactPackageProvider.h" +#if __has_include("ReactPackageProvider.g.cpp") +#include "ReactPackageProvider.g.cpp" +#endif + +#include "RNGestureHandler.h" + +using namespace winrt::Microsoft::ReactNative; + +namespace winrt::RNGestureHandler::implementation +{ + void ReactPackageProvider::CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept + { + AddAttributedModules(packageBuilder); + } +} diff --git a/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.h b/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.h new file mode 100644 index 0000000000..f30d10ff05 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.h @@ -0,0 +1,19 @@ +#pragma once +#include "ReactPackageProvider.g.h" + +using namespace winrt::Microsoft::ReactNative; + +namespace winrt::RNGestureHandler::implementation +{ + struct ReactPackageProvider : ReactPackageProviderT + { + ReactPackageProvider() = default; + void CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept; + }; +} + +namespace winrt::RNGestureHandler::factory_implementation +{ + struct ReactPackageProvider : ReactPackageProviderT {}; +} + diff --git a/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.idl b/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.idl new file mode 100644 index 0000000000..3b526cdb51 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/ReactPackageProvider.idl @@ -0,0 +1,9 @@ +namespace RNGestureHandler +{ + [webhosthidden] + [default_interface] + runtimeclass ReactPackageProvider : Microsoft.ReactNative.IReactPackageProvider + { + ReactPackageProvider(); + }; +} diff --git a/windows/RNGestureHandler/RNGestureHandler/packages.config b/windows/RNGestureHandler/RNGestureHandler/packages.config new file mode 100644 index 0000000000..1447e714af --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/windows/RNGestureHandler/RNGestureHandler/pch.cpp b/windows/RNGestureHandler/RNGestureHandler/pch.cpp new file mode 100644 index 0000000000..bcb5590be1 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" diff --git a/windows/RNGestureHandler/RNGestureHandler/pch.h b/windows/RNGestureHandler/RNGestureHandler/pch.h new file mode 100644 index 0000000000..6220c79dde --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler/pch.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// This can be changed to 1 to activate verbose debug mode. +#if 1 +#define VERBOSE_DEBUG OutputDebugStringA +#else +#define VERBOSE_DEBUG +#endif + diff --git a/windows/RNGestureHandler/RNGestureHandler62.sln b/windows/RNGestureHandler/RNGestureHandler62.sln new file mode 100644 index 0000000000..5c7e47f7c6 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler62.sln @@ -0,0 +1,254 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RNGestureHandler", "RNGestureHandler\RNGestureHandler.vcxproj", "{5fe08a9d-cacb-4309-b75a-2578c7dc786a}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ReactNative", "ReactNative", "{4F6E56C3-12C5-4457-9239-0ACF0B7150A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "..\node_modules\react-native-windows\Common\Common.vcxproj", "{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Folly", "..\node_modules\react-native-windows\Folly\Folly.vcxproj", "{A990658C-CE31-4BCC-976F-0FC6B1AF693D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSI.Universal", "..\node_modules\react-native-windows\JSI\Universal\JSI.Universal.vcxproj", "{A62D504A-16B8-41D2-9F19-E2E86019E5E4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSI.Shared", "..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems", "{0CC28589-39E4-4288-B162-97B959F8B843}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Chakra", "..\node_modules\react-native-windows\Chakra\Chakra.vcxitems", "{C38970C0-5FBF-4D69-90D8-CBAC225AE895}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative", "..\node_modules\react-native-windows\Microsoft.ReactNative\Microsoft.ReactNative.vcxproj", "{F7D32BD0-2749-483E-9A0D-1635EF7E3136}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mso", "..\node_modules\react-native-windows\Mso\Mso.vcxitems", "{84E05BFA-CBAF-4F0D-BFB6-4CE85742A57E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactCommon", "..\node_modules\react-native-windows\ReactCommon\ReactCommon.vcxproj", "{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative.Cxx", "..\node_modules\react-native-windows\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems", "{DA8B35B3-DA00-4B02-BDE6-6A397B3FD46B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Shared", "..\node_modules\react-native-windows\Shared\Shared.vcxitems", "{2049DBE9-8D13-42C9-AE4B-413AE38FFFD0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactWindowsCore", "..\node_modules\react-native-windows\ReactWindowsCore\ReactWindowsCore.vcxproj", "{11C084A3-A57C-4296-A679-CAC17B603144}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Include", "..\node_modules\react-native-windows\include\Include.vcxitems", "{EF074BA1-2D54-4D49-A28E-5E040B47CD2E}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + ..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems*{0cc28589-39e4-4288-b162-97b959f8b843}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\ReactWindowsCore\ReactWindowsCore.vcxitems*{11c084a3-a57c-4296-a679-cac17b603144}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Shared\Shared.vcxitems*{2049dbe9-8d13-42c9-ae4b-413ae38fffd0}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\Mso\Mso.vcxitems*{84e05bfa-cbaf-4f0d-bfb6-4ce85742a57e}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems*{a62d504a-16b8-41d2-9f19-e2e86019e5e4}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Chakra\Chakra.vcxitems*{c38970c0-5fbf-4d69-90d8-cbac225ae895}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{da8b35b3-da00-4b02-bde6-6a397b3fd46b}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\include\Include.vcxitems*{ef074ba1-2d54-4d49-a28e-5e040b47cd2e}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\Chakra\Chakra.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Mso\Mso.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Shared\Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + WinUI3|ARM = WinUI3|ARM + WinUI3|ARM64 = WinUI3|ARM64 + WinUI3|x64 = WinUI3|x64 + WinUI3|x86 = WinUI3|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM.ActiveCfg = Debug|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM.Build.0 = Debug|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM64.Build.0 = Debug|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x64.ActiveCfg = Debug|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x64.Build.0 = Debug|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x86.ActiveCfg = Debug|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x86.Build.0 = Debug|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM.ActiveCfg = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM.Build.0 = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM64.ActiveCfg = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM64.Build.0 = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x64.ActiveCfg = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x64.Build.0 = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x86.ActiveCfg = Release|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x86.Build.0 = Release|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM.ActiveCfg = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM.Build.0 = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM64.Build.0 = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x64.ActiveCfg = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x64.Build.0 = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x86.ActiveCfg = Release|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x86.Build.0 = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM.ActiveCfg = Debug|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM.Build.0 = Debug|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM64.Build.0 = Debug|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.ActiveCfg = Debug|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.Build.0 = Debug|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.ActiveCfg = Debug|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.Build.0 = Debug|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM.ActiveCfg = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM.Build.0 = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM64.ActiveCfg = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM64.Build.0 = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.ActiveCfg = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.Build.0 = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.ActiveCfg = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.Build.0 = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM.ActiveCfg = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM.Build.0 = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM64.Build.0 = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x64.ActiveCfg = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x64.Build.0 = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x86.ActiveCfg = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x86.Build.0 = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM.ActiveCfg = Debug|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM.Build.0 = Debug|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM64.Build.0 = Debug|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.ActiveCfg = Debug|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.Build.0 = Debug|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.ActiveCfg = Debug|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.Build.0 = Debug|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM.ActiveCfg = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM.Build.0 = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM64.ActiveCfg = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM64.Build.0 = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.ActiveCfg = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.Build.0 = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.ActiveCfg = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.Build.0 = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM.ActiveCfg = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM.Build.0 = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM64.Build.0 = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x64.ActiveCfg = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x64.Build.0 = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x86.ActiveCfg = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x86.Build.0 = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM.ActiveCfg = Debug|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM.Build.0 = Debug|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM64.Build.0 = Debug|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.ActiveCfg = Debug|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.Build.0 = Debug|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.ActiveCfg = Debug|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.Build.0 = Debug|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM.ActiveCfg = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM.Build.0 = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM64.ActiveCfg = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM64.Build.0 = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.ActiveCfg = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.Build.0 = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.ActiveCfg = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.Build.0 = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM.ActiveCfg = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM.Build.0 = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM64.Build.0 = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x64.ActiveCfg = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x64.Build.0 = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x86.ActiveCfg = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x86.Build.0 = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM.ActiveCfg = Debug|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM.Build.0 = Debug|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM64.Build.0 = Debug|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.ActiveCfg = Debug|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.Build.0 = Debug|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.ActiveCfg = Debug|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.Build.0 = Debug|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM.ActiveCfg = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM.Build.0 = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM64.ActiveCfg = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM64.Build.0 = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.ActiveCfg = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.Build.0 = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.ActiveCfg = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.Build.0 = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM.ActiveCfg = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM.Build.0 = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM64.Build.0 = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x64.ActiveCfg = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x64.Build.0 = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x86.ActiveCfg = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x86.Build.0 = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM.ActiveCfg = Debug|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM.Build.0 = Debug|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM64.Build.0 = Debug|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.ActiveCfg = Debug|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.Build.0 = Debug|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.ActiveCfg = Debug|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.Build.0 = Debug|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM.ActiveCfg = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM.Build.0 = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM64.ActiveCfg = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM64.Build.0 = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.ActiveCfg = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.Build.0 = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.ActiveCfg = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.Build.0 = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM.ActiveCfg = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM.Build.0 = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM64.Build.0 = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x64.ActiveCfg = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x64.Build.0 = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x86.ActiveCfg = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x86.Build.0 = Release|Win32 + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|ARM.ActiveCfg = Debug|ARM + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|ARM.Build.0 = Debug|ARM + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|ARM64.Build.0 = Debug|ARM64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|x64.ActiveCfg = Debug|x64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|x64.Build.0 = Debug|x64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|x86.ActiveCfg = Debug|Win32 + {11C084A3-A57C-4296-A679-CAC17B603144}.Debug|x86.Build.0 = Debug|Win32 + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|ARM.ActiveCfg = Release|ARM + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|ARM.Build.0 = Release|ARM + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|ARM64.ActiveCfg = Release|ARM64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|ARM64.Build.0 = Release|ARM64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|x64.ActiveCfg = Release|x64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|x64.Build.0 = Release|x64 + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|x86.ActiveCfg = Release|Win32 + {11C084A3-A57C-4296-A679-CAC17B603144}.Release|x86.Build.0 = Release|Win32 + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|ARM.ActiveCfg = WinUI3|ARM + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|ARM.Build.0 = WinUI3|ARM + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|ARM64.ActiveCfg = WinUI3|ARM64 + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|ARM64.Build.0 = WinUI3|ARM64 + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|x64.ActiveCfg = WinUI3|x64 + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|x64.Build.0 = WinUI3|x64 + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|x86.ActiveCfg = WinUI3|Win32 + {11C084A3-A57C-4296-A679-CAC17B603144}.WinUI3|x86.Build.0 = WinUI3|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {A990658C-CE31-4BCC-976F-0FC6B1AF693D} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {A62D504A-16B8-41D2-9F19-E2E86019E5E4} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {0CC28589-39E4-4288-B162-97B959F8B843} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {C38970C0-5FBF-4D69-90D8-CBAC225AE895} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {F7D32BD0-2749-483E-9A0D-1635EF7E3136} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {84E05BFA-CBAF-4F0D-BFB6-4CE85742A57E} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {DA8B35B3-DA00-4B02-BDE6-6A397B3FD46B} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {2049DBE9-8D13-42C9-AE4B-413AE38FFFD0} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {11C084A3-A57C-4296-A679-CAC17B603144} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {EF074BA1-2D54-4D49-A28E-5E040B47CD2E} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1E57BD63-8052-4EAD-9EEB-BD1A60F44A67} + EndGlobalSection +EndGlobal diff --git a/windows/RNGestureHandler/RNGestureHandler63.sln b/windows/RNGestureHandler/RNGestureHandler63.sln new file mode 100644 index 0000000000..ff16dd3832 --- /dev/null +++ b/windows/RNGestureHandler/RNGestureHandler63.sln @@ -0,0 +1,226 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RNGestureHandler", "RNGestureHandler\RNGestureHandler.vcxproj", "{5fe08a9d-cacb-4309-b75a-2578c7dc786a}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ReactNative", "ReactNative", "{4F6E56C3-12C5-4457-9239-0ACF0B7150A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "..\node_modules\react-native-windows\Common\Common.vcxproj", "{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Folly", "..\node_modules\react-native-windows\Folly\Folly.vcxproj", "{A990658C-CE31-4BCC-976F-0FC6B1AF693D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSI.Universal", "..\node_modules\react-native-windows\JSI\Universal\JSI.Universal.vcxproj", "{A62D504A-16B8-41D2-9F19-E2E86019E5E4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSI.Shared", "..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems", "{0CC28589-39E4-4288-B162-97B959F8B843}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Chakra", "..\node_modules\react-native-windows\Chakra\Chakra.vcxitems", "{C38970C0-5FBF-4D69-90D8-CBAC225AE895}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative", "..\node_modules\react-native-windows\Microsoft.ReactNative\Microsoft.ReactNative.vcxproj", "{F7D32BD0-2749-483E-9A0D-1635EF7E3136}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mso", "..\node_modules\react-native-windows\Mso\Mso.vcxitems", "{84E05BFA-CBAF-4F0D-BFB6-4CE85742A57E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactCommon", "..\node_modules\react-native-windows\ReactCommon\ReactCommon.vcxproj", "{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative.Cxx", "..\node_modules\react-native-windows\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems", "{DA8B35B3-DA00-4B02-BDE6-6A397B3FD46B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative.Shared", "..\node_modules\react-native-windows\Shared\Shared.vcxitems", "{2049DBE9-8D13-42C9-AE4B-413AE38FFFD0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Include", "..\node_modules\react-native-windows\include\Include.vcxitems", "{EF074BA1-2D54-4D49-A28E-5E040B47CD2E}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + ..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems*{0cc28589-39e4-4288-b162-97b959f8b843}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\Shared\Shared.vcxitems*{2049dbe9-8d13-42c9-ae4b-413ae38fffd0}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\Mso\Mso.vcxitems*{84e05bfa-cbaf-4f0d-bfb6-4ce85742a57e}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems*{a62d504a-16b8-41d2-9f19-e2e86019e5e4}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Chakra\Chakra.vcxitems*{c38970c0-5fbf-4d69-90d8-cbac225ae895}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{da8b35b3-da00-4b02-bde6-6a397b3fd46b}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\include\Include.vcxitems*{ef074ba1-2d54-4d49-a28e-5e040b47cd2e}*SharedItemsImports = 9 + ..\node_modules\react-native-windows\Chakra\Chakra.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\JSI\Shared\JSI.Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Mso\Mso.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + ..\node_modules\react-native-windows\Shared\Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + WinUI3|ARM = WinUI3|ARM + WinUI3|ARM64 = WinUI3|ARM64 + WinUI3|x64 = WinUI3|x64 + WinUI3|x86 = WinUI3|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM.ActiveCfg = Debug|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM.Build.0 = Debug|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|ARM64.Build.0 = Debug|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x64.ActiveCfg = Debug|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x64.Build.0 = Debug|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x86.ActiveCfg = Debug|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Debug|x86.Build.0 = Debug|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM.ActiveCfg = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM.Build.0 = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM64.ActiveCfg = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|ARM64.Build.0 = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x64.ActiveCfg = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x64.Build.0 = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x86.ActiveCfg = Release|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.Release|x86.Build.0 = Release|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM.ActiveCfg = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM.Build.0 = Release|ARM + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|ARM64.Build.0 = Release|ARM64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x64.ActiveCfg = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x64.Build.0 = Release|x64 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x86.ActiveCfg = Release|Win32 + {5fe08a9d-cacb-4309-b75a-2578c7dc786a}.WinUI3|x86.Build.0 = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM.ActiveCfg = Debug|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM.Build.0 = Debug|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM64.Build.0 = Debug|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.ActiveCfg = Debug|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.Build.0 = Debug|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.ActiveCfg = Debug|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.Build.0 = Debug|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM.ActiveCfg = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM.Build.0 = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM64.ActiveCfg = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM64.Build.0 = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.ActiveCfg = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.Build.0 = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.ActiveCfg = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.Build.0 = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM.ActiveCfg = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM.Build.0 = Release|ARM + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|ARM64.Build.0 = Release|ARM64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x64.ActiveCfg = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x64.Build.0 = Release|x64 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x86.ActiveCfg = Release|Win32 + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.WinUI3|x86.Build.0 = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM.ActiveCfg = Debug|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM.Build.0 = Debug|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM64.Build.0 = Debug|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.ActiveCfg = Debug|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.Build.0 = Debug|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.ActiveCfg = Debug|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.Build.0 = Debug|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM.ActiveCfg = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM.Build.0 = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM64.ActiveCfg = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM64.Build.0 = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.ActiveCfg = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.Build.0 = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.ActiveCfg = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.Build.0 = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM.ActiveCfg = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM.Build.0 = Release|ARM + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|ARM64.Build.0 = Release|ARM64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x64.ActiveCfg = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x64.Build.0 = Release|x64 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x86.ActiveCfg = Release|Win32 + {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.WinUI3|x86.Build.0 = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM.ActiveCfg = Debug|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM.Build.0 = Debug|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM64.Build.0 = Debug|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.ActiveCfg = Debug|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.Build.0 = Debug|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.ActiveCfg = Debug|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.Build.0 = Debug|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM.ActiveCfg = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM.Build.0 = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM64.ActiveCfg = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM64.Build.0 = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.ActiveCfg = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.Build.0 = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.ActiveCfg = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.Build.0 = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM.ActiveCfg = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM.Build.0 = Release|ARM + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|ARM64.Build.0 = Release|ARM64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x64.ActiveCfg = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x64.Build.0 = Release|x64 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x86.ActiveCfg = Release|Win32 + {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.WinUI3|x86.Build.0 = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM.ActiveCfg = Debug|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM.Build.0 = Debug|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM64.Build.0 = Debug|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.ActiveCfg = Debug|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.Build.0 = Debug|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.ActiveCfg = Debug|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.Build.0 = Debug|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM.ActiveCfg = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM.Build.0 = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM64.ActiveCfg = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM64.Build.0 = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.ActiveCfg = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.Build.0 = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.ActiveCfg = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.Build.0 = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM.ActiveCfg = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM.Build.0 = Release|ARM + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|ARM64.Build.0 = Release|ARM64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x64.ActiveCfg = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x64.Build.0 = Release|x64 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x86.ActiveCfg = Release|Win32 + {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.WinUI3|x86.Build.0 = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM.ActiveCfg = Debug|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM.Build.0 = Debug|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM64.Build.0 = Debug|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.ActiveCfg = Debug|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.Build.0 = Debug|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.ActiveCfg = Debug|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.Build.0 = Debug|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM.ActiveCfg = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM.Build.0 = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM64.ActiveCfg = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM64.Build.0 = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.ActiveCfg = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.Build.0 = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.ActiveCfg = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.Build.0 = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM.ActiveCfg = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM.Build.0 = Release|ARM + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM64.ActiveCfg = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|ARM64.Build.0 = Release|ARM64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x64.ActiveCfg = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x64.Build.0 = Release|x64 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x86.ActiveCfg = Release|Win32 + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.WinUI3|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {A990658C-CE31-4BCC-976F-0FC6B1AF693D} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {A62D504A-16B8-41D2-9F19-E2E86019E5E4} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {0CC28589-39E4-4288-B162-97B959F8B843} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {C38970C0-5FBF-4D69-90D8-CBAC225AE895} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {F7D32BD0-2749-483E-9A0D-1635EF7E3136} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {84E05BFA-CBAF-4F0D-BFB6-4CE85742A57E} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {DA8B35B3-DA00-4B02-BDE6-6A397B3FD46B} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {2049DBE9-8D13-42C9-AE4B-413AE38FFFD0} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + {EF074BA1-2D54-4D49-A28E-5E040B47CD2E} = {4F6E56C3-12C5-4457-9239-0ACF0B7150A8} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1E57BD63-8052-4EAD-9EEB-BD1A60F44A67} + EndGlobalSection +EndGlobal diff --git a/yarn.lock b/yarn.lock index fc4ff449db..475988dcfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2287,6 +2287,35 @@ sudo-prompt "^9.0.0" wcwidth "^1.0.1" +"@react-native-windows/cli@0.63.10": + version "0.63.10" + resolved "https://registry.yarnpkg.com/@react-native-windows/cli/-/cli-0.63.10.tgz#d26f54003ebf6fa4909db57d07a765057b35f7b8" + integrity sha512-nCVCN6DKciOtmou71Sj3b30CvQfnD+t9TbSYa8uuGTguB57A3F2gOBl+6fS+r9cAQ5V5mMAX2LWg1YovT8sPcw== + dependencies: + "@react-native-windows/telemetry" "^0.63.4" + chalk "^3.0.0" + cli-spinners "^2.2.0" + envinfo "^7.5.0" + glob "^7.1.1" + inquirer "^3.0.6" + mustache "^4.0.1" + nuget-exe "5.8.0" + ora "^3.4.0" + semver "^7.1.3" + shelljs "^0.8.4" + username "^5.1.0" + uuid "^3.3.2" + xml-parser "^1.2.1" + xmldom "^0.3.0" + xpath "^0.0.27" + +"@react-native-windows/telemetry@^0.63.4": + version "0.63.4" + resolved "https://registry.yarnpkg.com/@react-native-windows/telemetry/-/telemetry-0.63.4.tgz#940cffe1cb890ac22c76ba04af2284e1412c7faa" + integrity sha512-jTCLw1JcKVaNbRYq6KJIu72VcJ61a80ZjT6++KDJcLROA6DyRxiX3LhW5anIbV4Ww9vA5CNlU0SUb2pAIw8Jpw== + dependencies: + applicationinsights "^1.8.8" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -2862,6 +2891,16 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" +applicationinsights@^1.8.8: + version "1.8.10" + resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.8.10.tgz#fffa482cd1519880fb888536a87081ac05130667" + integrity sha512-ZLDA7mShh4mP2Z/HlFolmvhBPX1LfnbIWXrselyYVA7EKjHhri1fZzpu2EiWAmfbRxNBY6fRjoPJWbx5giKy4A== + dependencies: + cls-hooked "^4.2.2" + continuation-local-storage "^3.2.1" + diagnostic-channel "0.3.1" + diagnostic-channel-publishers "0.4.4" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2983,10 +3022,25 @@ astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" +async-hook-jl@^1.7.6: + version "1.7.6" + resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" + integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg== + dependencies: + stack-chain "^1.3.7" + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" +async-listener@^0.6.0: + version "0.6.10" + resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" + integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== + dependencies: + semver "^5.3.0" + shimmer "^1.1.0" + async-retry@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" @@ -3600,6 +3654,15 @@ clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" +cls-hooked@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908" + integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw== + dependencies: + async-hook-jl "^1.7.6" + emitter-listener "^1.0.1" + semver "^5.4.1" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3730,6 +3793,14 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= +continuation-local-storage@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" + integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== + dependencies: + async-listener "^0.6.0" + emitter-listener "^1.1.1" + convert-source-map@^1.4.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -4040,6 +4111,18 @@ detect-repo-changelog@1.0.1: lodash.find "^4.6.0" pify "^2.3.0" +diagnostic-channel-publishers@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.4.4.tgz#57c3b80b7e7f576f95be3a257d5e94550f0082d6" + integrity sha512-l126t01d2ZS9EreskvEtZPrcgstuvH3rbKy82oUhUrVmBaGx4hO9wECdl3cvZbKDYjMF3QJDB5z5dL9yWAjvZQ== + +diagnostic-channel@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-0.3.1.tgz#7faa143e107f861be3046539eb4908faab3f53fd" + integrity sha512-6eb9YRrimz8oTr5+JDzGmSYnXy5V7YnK5y/hd8AUDK1MssHjQKm9LlD6NSrHx4vMDF3+e/spI2hmWTviElgWZA== + dependencies: + semver "^5.3.0" + diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" @@ -4129,6 +4212,13 @@ electron-to-chromium@^1.3.649: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.662.tgz#43305bcf88a3340feb553b815d6fd7466659d5ee" integrity sha512-IGBXmTGwdVGUVTnZ8ISEvkhDfhhD+CDFndG4//BhvDcEtPYiVrzoB+rzT/Y12OQCf5bvRCrVmrUbGrS9P7a6FQ== +emitter-listener@^1.0.1, emitter-listener@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" + integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== + dependencies: + shimmer "^1.2.0" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -4159,6 +4249,11 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" +envinfo@^7.5.0: + version "7.7.4" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" + integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== + envinfo@^7.7.2: version "7.7.3" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" @@ -6745,6 +6840,13 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -6761,6 +6863,15 @@ md5-file@^3.2.3: dependencies: buffer-alloc "^1.1.0" +mem@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -7246,7 +7357,7 @@ mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" -mimic-fn@^2.1.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -7299,6 +7410,11 @@ ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" +mustache@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.1.0.tgz#8c1b042238a982d2eb2d30efc6c14296ae3f699d" + integrity sha512-0FsgP/WVq4mKyjolIyX+Z9Bd+3WS8GOwoUTyKXT5cTYMGeauNTi2HPCwERqseC1IHAy0Z7MDZnJBfjabd4O8GQ== + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -7448,6 +7564,11 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +nuget-exe@5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/nuget-exe/-/nuget-exe-5.8.0.tgz#45287c4ad8308a5a7057913b32c08998fe7fdc82" + integrity sha512-m95SBWa+SJNOfR0GTwdQ3OwK2915Ts3XvajYx0iaOZYydwvz6reJyptiNGf+HQhvTe5viNiRAmGXxNww9obZjw== + nullthrows@^1.1.0, nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -7667,6 +7788,11 @@ p-cancelable@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" @@ -7677,6 +7803,11 @@ p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -8175,6 +8306,31 @@ react-native-web@^0.11.7: prop-types "^15.6.0" react-timer-mixin "^0.13.4" +react-native-windows@^0.63.0-0: + version "0.63.24" + resolved "https://registry.yarnpkg.com/react-native-windows/-/react-native-windows-0.63.24.tgz#40d6aca2a748ef3985b5942b29d0b05631fecca7" + integrity sha512-N+C3NR4cYM7uOXbhx4sMT3QmjSJ7tPKEJBZOVlieEHJ1Bm0ZyP9Bv7ZKzLeouCA/z78/5NhixIwiJVJ1CPIjMA== + dependencies: + "@babel/runtime" "^7.8.4" + "@react-native-windows/cli" "0.63.10" + abort-controller "^3.0.0" + anser "^1.4.9" + base64-js "^1.1.2" + event-target-shim "^5.0.1" + fbjs "^1.0.0" + fbjs-scripts "^1.1.0" + invariant "^2.2.4" + nullthrows "^1.1.1" + pretty-format "^24.9.0" + promise "^8.0.3" + prop-types "^15.7.2" + react-devtools-core "^4.6.0" + regenerator-runtime "^0.13.2" + scheduler "0.19.1" + stacktrace-parser "^0.1.3" + use-subscription "^1.0.0" + whatwg-fetch "^3.0.0" + react-native@^0.63.4: version "0.63.4" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.4.tgz#2210fdd404c94a5fa6b423c6de86f8e48810ec36" @@ -8683,7 +8839,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -8699,7 +8855,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" -semver@^7.2.1, semver@^7.3.2: +semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== @@ -8791,9 +8947,10 @@ shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" -shelljs@0.8.4: +shelljs@0.8.4, shelljs@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -8803,6 +8960,11 @@ shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" +shimmer@^1.1.0, shimmer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + side-channel@^1.0.2, side-channel@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" @@ -8969,6 +9131,11 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +stack-chain@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" + integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= + stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" @@ -9538,6 +9705,14 @@ use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" +username@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/username/-/username-5.1.0.tgz#a7f9325adce2d0166448cdd55d4985b1360f2508" + integrity sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg== + dependencies: + execa "^1.0.0" + mem "^4.3.0" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -9784,6 +9959,13 @@ xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" +xml-parser@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/xml-parser/-/xml-parser-1.2.1.tgz#c31f4c34f2975db82ad013222120592736156fcd" + integrity sha1-wx9MNPKXXbgq0BMiISBZJzYVb80= + dependencies: + debug "^2.2.0" + xmlbuilder@^9.0.7: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" @@ -9798,6 +9980,16 @@ xmldom@0.1.x: version "0.1.31" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" +xmldom@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.3.0.tgz#e625457f4300b5df9c2e1ecb776147ece47f3e5a" + integrity sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g== + +xpath@^0.0.27: + version "0.0.27" + resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.27.tgz#dd3421fbdcc5646ac32c48531b4d7e9d0c2cfa92" + integrity sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ== + xpipe@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" From 916420f5a74f3e5b3541eab0efe9d78e1091ad38 Mon Sep 17 00:00:00 2001 From: Joao Matos Date: Tue, 23 Mar 2021 15:48:29 +0000 Subject: [PATCH 2/2] Fix minor issues. --- .../RNGestureHandlerModule.cpp | 68 ++++--------------- 1 file changed, 14 insertions(+), 54 deletions(-) diff --git a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp index 6197163ff0..481fd58fa8 100644 --- a/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp +++ b/windows/RNGestureHandler/RNGestureHandler/RNGestureHandlerModule.cpp @@ -20,94 +20,54 @@ void RNGestureHandlerModule::GetConstantProvider(ReactConstantProvider& provider { JSValueArray directions { - (int)RNGestureHandlerDirection::Right, - (int)RNGestureHandlerDirection::Left, - (int)RNGestureHandlerDirection::Up, - (int)RNGestureHandlerDirection::Down + static_cast(RNGestureHandlerDirection::Right), + static_cast(RNGestureHandlerDirection::Left), + static_cast(RNGestureHandlerDirection::Up), + static_cast(RNGestureHandlerDirection::Down) }; provider.Add(L"Directions", directions); } -static RNGestureHandlerKind getHandlerKind(std::string handlerName) noexcept +static RNGestureHandler* getHandlerFromName(std::string handlerName) noexcept { if (handlerName == "FlingGestureHandler") { - return RNGestureHandlerKind::FlingGesture; + return new RNFlingGestureHandler(); } else if (handlerName == "ForceTouchGestureHandler") { - return RNGestureHandlerKind::ForceTouchGesture; + return new RNForceTouchGestureHandler(); } else if (handlerName == "LongPressGestureHandler") { - return RNGestureHandlerKind::LongPressGesture; + return new RNLongPressGestureHandler(); } else if (handlerName == "PanGestureHandler") { - return RNGestureHandlerKind::PanGesture; + return new RNPanGestureHandler(); } else if (handlerName == "PinchGestureHandler") { - return RNGestureHandlerKind::PinchGesture; + return new RNPinchGestureHandler(); } else if (handlerName == "RotationGestureHandler") { - return RNGestureHandlerKind::RotationGesture; + return new RNRotationGestureHandler(); } else if (handlerName == "TapGestureHandler") { - return RNGestureHandlerKind::TapGesture; + return new RNTapGestureHandler(); } else { - return RNGestureHandlerKind::Unknown; + return nullptr; } } void RNGestureHandlerModule::CreateGestureHandler(std::string handlerName, int handlerTag, JSValueObject config) noexcept { - RNGestureHandlerKind handlerKind = getHandlerKind(handlerName); - RNGestureHandler* handler = nullptr; - switch (handlerKind) - { - case RNGestureHandlerKind::FlingGesture: - { - handler = new RNFlingGestureHandler(); - break; - } - case RNGestureHandlerKind::ForceTouchGesture: - { - handler = new RNForceTouchGestureHandler(); - break; - } - case RNGestureHandlerKind::LongPressGesture: - { - handler = new RNLongPressGestureHandler(); - break; - } - case RNGestureHandlerKind::PanGesture: - { - handler = new RNPanGestureHandler(); - break; - } - case RNGestureHandlerKind::PinchGesture: - { - handler = new RNPinchGestureHandler(); - break; - } - case RNGestureHandlerKind::RotationGesture: - { - handler = new RNRotationGestureHandler(); - break; - } - case RNGestureHandlerKind::TapGesture: - { - handler = new RNTapGestureHandler(); - break; - } - } - + RNGestureHandler* handler = getHandlerFromName(handlerName); if (!handler) { return;