// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once #include "winrt/Microsoft.ReactNative.h" #include "NativeModules.h" #include "ReactWebView.h" namespace winrt::ReactNativeWebView::implementation { enum class WebViewCommands : int32_t { GoForward = 0, GoBack = 1, Reload = 2, StopLoading = 3, InjectJavaScript = 4 }; class ReactWebViewManager : public winrt::implements< ReactWebViewManager, winrt::Microsoft::ReactNative::IViewManager, winrt::Microsoft::ReactNative::IViewManagerWithReactContext, winrt::Microsoft::ReactNative::IViewManagerWithNativeProperties, winrt::Microsoft::ReactNative::IViewManagerWithExportedEventTypeConstants, winrt::Microsoft::ReactNative::IViewManagerWithCommands> { public: ReactWebViewManager(); // IViewManager winrt::hstring Name() noexcept; winrt::Windows::UI::Xaml::FrameworkElement CreateView() noexcept; // IViewManagerWithReactContext winrt::Microsoft::ReactNative::IReactContext ReactContext() noexcept; void ReactContext(winrt::Microsoft::ReactNative::IReactContext reactContext) noexcept; // IViewManagerWithNativeProperties winrt::Windows::Foundation::Collections:: IMapView NativeProps() noexcept; void UpdateProperties( winrt::Windows::UI::Xaml::FrameworkElement const& view, winrt::Microsoft::ReactNative::IJSValueReader const& propertyMapReader) noexcept; // IViewManagerWithExportedEventTypeConstants winrt::Microsoft::ReactNative::ConstantProviderDelegate ExportedCustomBubblingEventTypeConstants() noexcept; winrt::Microsoft::ReactNative::ConstantProviderDelegate ExportedCustomDirectEventTypeConstants() noexcept; // IViewManagerWithCommands winrt::Windows::Foundation::Collections::IMapView Commands() noexcept; void DispatchCommand( winrt::Windows::UI::Xaml::FrameworkElement const& view, int64_t commandId, winrt::Microsoft::ReactNative::IJSValueReader const& commandArgsReader) noexcept; private: winrt::ReactNativeWebView::ReactWebView m_reactWebView{ nullptr }; winrt::Microsoft::ReactNative::IReactContext m_reactContext{ nullptr }; }; } // namespace winrt::ReactWebView::implementation