react-native-windows 0.74.0-preview.2 → 0.74.0-preview.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/Libraries/Image/AssetSourceResolver.windows.js +186 -0
  3. package/Libraries/Image/assetPaths.js +36 -0
  4. package/Microsoft.ReactNative/CompositionComponentView.idl +18 -3
  5. package/Microsoft.ReactNative/CompositionContext.idl +5 -5
  6. package/Microsoft.ReactNative/CompositionRootView.idl +22 -8
  7. package/Microsoft.ReactNative/CompositionSwitcher.idl +2 -2
  8. package/Microsoft.ReactNative/CompositionUIService.idl +8 -6
  9. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +8 -1
  10. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +7 -2
  11. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +4 -3
  12. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +5 -5
  13. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +1 -1
  14. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.h +2 -1
  15. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +173 -152
  16. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +8 -8
  17. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +13 -13
  18. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +1 -1
  19. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +14 -11
  20. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +24 -11
  21. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +15 -10
  22. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +15 -4
  23. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +20 -9
  24. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.h +6 -4
  25. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +5 -2
  26. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +104 -54
  27. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +25 -19
  28. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +2 -2
  29. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +2 -2
  30. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +9 -8
  31. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +5 -5
  32. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +7 -5
  33. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +5 -5
  34. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +4 -4
  35. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +5 -5
  36. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +1 -1
  37. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +5 -2
  38. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +2 -2
  39. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +2 -2
  40. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +34 -27
  41. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +6 -6
  42. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +9 -9
  43. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +6 -6
  44. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +5 -4
  45. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +6 -6
  46. package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +13 -3
  47. package/Microsoft.ReactNative/Fabric/Composition/Theme.h +16 -8
  48. package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +3 -3
  49. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +3 -3
  50. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +3 -3
  51. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +1 -1
  52. package/Microsoft.ReactNative/Fabric/IComponentViewRegistry.h +1 -1
  53. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +2 -1
  54. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +7 -5
  55. package/Microsoft.ReactNative/Theme.idl +12 -1
  56. package/Microsoft.ReactNative/ViewProps.idl +11 -1
  57. package/Microsoft.ReactNative/packages.lock.json +70 -42
  58. package/Microsoft.ReactNative.Cxx/AutoDraw.h +3 -3
  59. package/Microsoft.ReactNative.Cxx/{CompositionSwitcher.interop.h → CompositionSwitcher.Experimental.interop.h} +2 -2
  60. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +2 -0
  61. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +2 -11
  62. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.props +1 -1
  63. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +5 -3
  64. package/PropertySheets/Generated/PackageVersion.g.props +2 -2
  65. package/package.json +11 -11
  66. package/templates/cpp-app/windows/MyApp/MyApp.cpp +2 -7
@@ -3,24 +3,24 @@
3
3
  #pragma once
4
4
 
5
5
  #ifdef USE_WINUI3
6
- #include "Composition.MicrosoftCompositionContextHelper.g.h"
6
+ #include "Composition.Experimental.MicrosoftCompositionContextHelper.g.h"
7
7
  #endif
8
- #include "Composition.SystemCompositionContextHelper.g.h"
8
+ #include "Composition.Experimental.SystemCompositionContextHelper.g.h"
9
9
 
10
10
  #include <d2d1_1.h>
11
11
  #include <windows.ui.composition.interop.h>
12
12
  #include <winrt/Windows.UI.Composition.h>
13
13
  #include "CompositionHelpers.h"
14
14
 
15
- namespace winrt::Microsoft::ReactNative::Composition {
15
+ namespace winrt::Microsoft::ReactNative::Composition::Experimental {
16
16
  #ifdef USE_WINUI3
17
17
  using CompositionContextHelper = MicrosoftCompositionContextHelper;
18
18
  #else
19
19
  using CompositionContextHelper = SystemCompositionContextHelper;
20
20
  #endif
21
- } // namespace winrt::Microsoft::ReactNative::Composition
21
+ } // namespace winrt::Microsoft::ReactNative::Composition::Experimental
22
22
 
23
- namespace winrt::Microsoft::ReactNative::Composition::implementation {
23
+ namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation {
24
24
 
25
25
  struct SystemCompositionContextHelper : SystemCompositionContextHelperT<SystemCompositionContextHelper> {
26
26
  SystemCompositionContextHelper() = default;
@@ -48,9 +48,9 @@ struct MicrosoftCompositionContextHelper : MicrosoftCompositionContextHelperT<Mi
48
48
  };
49
49
  #endif
50
50
 
51
- } // namespace winrt::Microsoft::ReactNative::Composition::implementation
51
+ } // namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation
52
52
 
53
- namespace winrt::Microsoft::ReactNative::Composition::factory_implementation {
53
+ namespace winrt::Microsoft::ReactNative::Composition::Experimental::factory_implementation {
54
54
 
55
55
  struct SystemCompositionContextHelper
56
56
  : SystemCompositionContextHelperT<SystemCompositionContextHelper, implementation::SystemCompositionContextHelper> {
@@ -62,4 +62,4 @@ struct MicrosoftCompositionContextHelper : MicrosoftCompositionContextHelperT<
62
62
  implementation::MicrosoftCompositionContextHelper> {};
63
63
  #endif
64
64
 
65
- } // namespace winrt::Microsoft::ReactNative::Composition::factory_implementation
65
+ } // namespace winrt::Microsoft::ReactNative::Composition::Experimental::factory_implementation
@@ -1,16 +1,16 @@
1
1
 
2
2
  #include "pch.h"
3
3
  #include "CompositionContextHelper.h"
4
- #if __has_include("Composition.SystemCompositionContextHelper.g.cpp")
5
- #include "Composition.SystemCompositionContextHelper.g.cpp"
4
+ #if __has_include("Composition.Experimental.SystemCompositionContextHelper.g.cpp")
5
+ #include "Composition.Experimental.SystemCompositionContextHelper.g.cpp"
6
6
  #endif
7
7
  #ifdef USE_WINUI3
8
- #if __has_include("Composition.MicrosoftCompositionContextHelper.g.cpp")
9
- #include "Composition.MicrosoftCompositionContextHelper.g.cpp"
8
+ #if __has_include("Composition.Experimental.MicrosoftCompositionContextHelper.g.cpp")
9
+ #include "Composition.Experimental.MicrosoftCompositionContextHelper.g.cpp"
10
10
  #endif
11
11
  #endif
12
12
 
13
- namespace winrt::Microsoft::ReactNative::Composition::implementation {
13
+ namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation {
14
14
 
15
15
  ICompositionContext SystemCompositionContextHelper::CreateContext(
16
16
  winrt::Windows::UI::Composition::Compositor const &) noexcept {
@@ -45,35 +45,35 @@ winrt::Windows::UI::Composition::ICompositionSurface SystemCompositionContextHel
45
45
 
46
46
  #ifdef USE_WINUI3
47
47
  ICompositionContext MicrosoftCompositionContextHelper::CreateContext(
48
- winrt::Windows::UI::Composition::Compositor const &) noexcept {
48
+ winrt::Microsoft::UI::Composition::Compositor const &) noexcept {
49
49
  return nullptr;
50
50
  }
51
51
 
52
- IVisual MicrosoftCompositionContextHelper::CreateVisual(winrt::Windows::UI::Composition::Visual const &) noexcept {
52
+ IVisual MicrosoftCompositionContextHelper::CreateVisual(winrt::Microsoft::UI::Composition::Visual const &) noexcept {
53
53
  return nullptr;
54
54
  }
55
55
 
56
- winrt::Windows::UI::Composition::Compositor MicrosoftCompositionContextHelper::InnerCompositor(
56
+ winrt::Microsoft::UI::Composition::Compositor MicrosoftCompositionContextHelper::InnerCompositor(
57
57
  ICompositionContext) noexcept {
58
58
  return nullptr;
59
59
  }
60
60
 
61
- winrt::Windows::UI::Composition::Visual MicrosoftCompositionContextHelper::InnerVisual(IVisual) noexcept {
61
+ winrt::Microsoft::UI::Composition::Visual MicrosoftCompositionContextHelper::InnerVisual(IVisual) noexcept {
62
62
  return nullptr;
63
63
  }
64
64
 
65
- winrt::Windows::UI::Composition::DropShadow MicrosoftCompositionContextHelper::InnerDropShadow(IDropShadow) noexcept {
65
+ winrt::Microsoft::UI::Composition::DropShadow MicrosoftCompositionContextHelper::InnerDropShadow(IDropShadow) noexcept {
66
66
  return nullptr;
67
67
  }
68
68
 
69
- winrt::Windows::UI::Composition::CompositionBrush MicrosoftCompositionContextHelper::InnerBrush(IBrush) noexcept {
69
+ winrt::Microsoft::UI::Composition::CompositionBrush MicrosoftCompositionContextHelper::InnerBrush(IBrush) noexcept {
70
70
  return nullptr;
71
71
  }
72
72
 
73
- winrt::Windows::UI::Composition::ICompositionSurface MicrosoftCompositionContextHelper::InnerSurface(
73
+ winrt::Microsoft::UI::Composition::ICompositionSurface MicrosoftCompositionContextHelper::InnerSurface(
74
74
  IDrawingSurfaceBrush) noexcept {
75
75
  return nullptr;
76
76
  }
77
77
  #endif
78
78
 
79
- } // namespace winrt::Microsoft::ReactNative::Composition::implementation
79
+ } // namespace winrt::Microsoft::ReactNative::Composition::Experimental::implementation
@@ -4,7 +4,7 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include <CompositionSwitcher.interop.h>
7
+ #include <CompositionSwitcher.Experimental.interop.h>
8
8
  #include <guid/msoGuid.h>
9
9
  #include <winrt/Windows.UI.Composition.h>
10
10
 
@@ -14,6 +14,7 @@
14
14
  #include "CompositionContextHelper.h"
15
15
  #include "ReactNativeHost.h"
16
16
 
17
+ #include <winrt/Microsoft.ReactNative.Composition.Experimental.h>
17
18
  #include "CompositionRootAutomationProvider.h"
18
19
  #include "CompositionRootView.h"
19
20
 
@@ -35,19 +36,16 @@ void CompositionHwndHost::Initialize(uint64_t hwnd) noexcept {
35
36
  winrt::Microsoft::ReactNative::Composition::implementation::CompositionUIService::GetCompositionContext(
36
37
  ReactViewHost().ReactNativeHost().InstanceSettings().Properties());
37
38
  #if USE_WINUI3
38
- if (auto liftedCompositor = winrt::Microsoft::ReactNative::Composition::implementation::
39
- MicrosoftCompositionContextHelper::InnerCompositor(compositionContext)) {
39
+ if (auto liftedCompositor =
40
+ winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerCompositor(
41
+ compositionContext)) {
40
42
  m_compRootView = winrt::Microsoft::ReactNative::CompositionRootView(liftedCompositor);
41
- m_compRootView.SetWindow(reinterpret_cast<uint64_t>(m_hwnd));
42
43
 
43
44
  auto bridge = winrt::Microsoft::UI::Content::DesktopChildSiteBridge::Create(
44
45
  liftedCompositor, winrt::Microsoft::UI::GetWindowIdFromWindow(m_hwnd));
45
46
 
46
47
  auto island = m_compRootView.Island();
47
48
 
48
- auto invScale = 1.0f / ScaleFactor();
49
- m_compRootView.RootVisual().Scale({invScale, invScale, invScale});
50
-
51
49
  bridge.Connect(island);
52
50
  bridge.Show();
53
51
 
@@ -55,11 +53,12 @@ void CompositionHwndHost::Initialize(uint64_t hwnd) noexcept {
55
53
  bridge.ResizePolicy(winrt::Microsoft::UI::Content::ContentSizePolicy::ResizeContentToParentWindow);
56
54
  } else {
57
55
  m_compRootView = winrt::Microsoft::ReactNative::CompositionRootView();
58
- m_compRootView.SetWindow(reinterpret_cast<uint64_t>(m_hwnd));
56
+ m_compRootView.as<winrt::Microsoft::ReactNative::Composition::Experimental::IInternalCompositionRootView>()
57
+ .SetWindow(reinterpret_cast<uint64_t>(m_hwnd));
59
58
 
60
59
  #endif
61
60
  auto compositor =
62
- winrt::Microsoft::ReactNative::Composition::implementation::SystemCompositionContextHelper::InnerCompositor(
61
+ winrt::Microsoft::ReactNative::Composition::Experimental::SystemCompositionContextHelper::InnerCompositor(
63
62
  compositionContext);
64
63
  auto interop = compositor.as<ABI::Windows::UI::Composition::Desktop::ICompositorDesktopInterop>();
65
64
  winrt::Windows::UI::Composition::Desktop::DesktopWindowTarget target{nullptr};
@@ -74,8 +73,10 @@ void CompositionHwndHost::Initialize(uint64_t hwnd) noexcept {
74
73
  root.Comment(L"Root Visual");
75
74
  target.Root(root);
76
75
 
77
- m_compRootView.RootVisual(
78
- winrt::Microsoft::ReactNative::Composition::SystemCompositionContextHelper::CreateVisual(target.Root()));
76
+ m_compRootView.as<winrt::Microsoft::ReactNative::Composition::Experimental::IInternalCompositionRootView>()
77
+ .InternalRootVisual(
78
+ winrt::Microsoft::ReactNative::Composition::Experimental::SystemCompositionContextHelper::CreateVisual(
79
+ target.Root()));
79
80
 
80
81
  #if USE_WINUI3
81
82
  }
@@ -122,7 +123,9 @@ LRESULT CompositionHwndHost::TranslateMessage(int msg, uint64_t wParam, int64_t
122
123
  #if USE_WINUI3
123
124
  if (!m_compRootView.Island()) // When using Island hosting we dont need to forward window messages
124
125
  #endif
125
- return static_cast<LRESULT>(m_compRootView.SendMessage(msg, wParam, lParam));
126
+ return static_cast<LRESULT>(
127
+ m_compRootView.as<winrt::Microsoft::ReactNative::Composition::Experimental::IInternalCompositionRootView>()
128
+ .SendMessage(msg, wParam, lParam));
126
129
  }
127
130
  return 0;
128
131
  }
@@ -126,7 +126,7 @@ inline Mso::Future<void> CompositionReactViewInstance::PostInUIQueue(TAction &&a
126
126
  CompositionRootView::CompositionRootView() noexcept {}
127
127
 
128
128
  #ifdef USE_WINUI3
129
- CompositionRootView::CompositionRootView(winrt::Microsoft::UI::Composition::Compositor compositor) noexcept
129
+ CompositionRootView::CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept
130
130
  : m_compositor(compositor) {}
131
131
  #endif
132
132
 
@@ -151,11 +151,17 @@ void CompositionRootView::ReactViewHost(winrt::Microsoft::ReactNative::IReactVie
151
151
  }
152
152
  }
153
153
 
154
- winrt::Microsoft::ReactNative::Composition::IVisual CompositionRootView::RootVisual() noexcept {
154
+ winrt::Microsoft::UI::Composition::Visual CompositionRootView::RootVisual() noexcept {
155
+ return winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerVisual(
156
+ m_rootVisual);
157
+ }
158
+
159
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual CompositionRootView::InternalRootVisual() noexcept {
155
160
  return m_rootVisual;
156
161
  }
157
162
 
158
- void CompositionRootView::RootVisual(winrt::Microsoft::ReactNative::Composition::IVisual const &value) noexcept {
163
+ void CompositionRootView::InternalRootVisual(
164
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual const &value) noexcept {
159
165
  if (m_rootVisual != value) {
160
166
  assert(!m_rootVisual);
161
167
  m_rootVisual = value;
@@ -164,16 +170,16 @@ void CompositionRootView::RootVisual(winrt::Microsoft::ReactNative::Composition:
164
170
  }
165
171
 
166
172
  void CompositionRootView::AddRenderedVisual(
167
- const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
173
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept {
168
174
  assert(!m_hasRenderedVisual);
169
- RootVisual().InsertAt(visual, 0);
175
+ InternalRootVisual().InsertAt(visual, 0);
170
176
  m_hasRenderedVisual = true;
171
177
  }
172
178
 
173
179
  void CompositionRootView::RemoveRenderedVisual(
174
- const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
180
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept {
175
181
  assert(m_hasRenderedVisual);
176
- RootVisual().Remove(visual);
182
+ InternalRootVisual().Remove(visual);
177
183
  m_hasRenderedVisual = false;
178
184
  }
179
185
 
@@ -214,6 +220,11 @@ float CompositionRootView::ScaleFactor() noexcept {
214
220
  void CompositionRootView::ScaleFactor(float value) noexcept {
215
221
  if (m_scaleFactor != value) {
216
222
  m_scaleFactor = value;
223
+ // Lifted ContentIslands apply a scale that we need to reverse
224
+ if (auto rootView = RootVisual()) {
225
+ auto invScale = 1.0f / value;
226
+ rootView.Scale({invScale, invScale, invScale});
227
+ }
217
228
  UpdateRootVisualSize();
218
229
  }
219
230
  }
@@ -430,7 +441,7 @@ void CompositionRootView::ClearLoadingUI() noexcept {
430
441
  if (!m_loadingVisual)
431
442
  return;
432
443
 
433
- RootVisual().Remove(m_loadingVisual);
444
+ InternalRootVisual().Remove(m_loadingVisual);
434
445
 
435
446
  m_loadingVisual = nullptr;
436
447
  m_loadingActivityVisual = nullptr;
@@ -462,7 +473,7 @@ void CompositionRootView::ShowInstanceError() noexcept {
462
473
  ClearLoadingUI();
463
474
  }
464
475
 
465
- Composition::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush() noexcept {
476
+ Composition::Experimental::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush() noexcept {
466
477
  auto compContext =
467
478
  winrt::Microsoft::ReactNative::Composition::implementation::CompositionUIService::GetCompositionContext(
468
479
  m_context.Properties().Handle());
@@ -543,7 +554,7 @@ void CompositionRootView::ShowInstanceLoading() noexcept {
543
554
 
544
555
  UpdateLoadingVisualSize();
545
556
 
546
- RootVisual().InsertAt(m_loadingVisual, m_hasRenderedVisual ? 1 : 0);
557
+ InternalRootVisual().InsertAt(m_loadingVisual, m_hasRenderedVisual ? 1 : 0);
547
558
  }
548
559
 
549
560
  winrt::Windows::Foundation::Size CompositionRootView::Measure(
@@ -617,7 +628,9 @@ winrt::Microsoft::UI::Content::ContentIsland CompositionRootView::Island() noexc
617
628
  if (!m_island) {
618
629
  auto rootVisual = m_compositor.CreateSpriteVisual();
619
630
 
620
- RootVisual(winrt::Microsoft::ReactNative::Composition::MicrosoftCompositionContextHelper::CreateVisual(rootVisual));
631
+ InternalRootVisual(
632
+ winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::CreateVisual(
633
+ rootVisual));
621
634
  m_island = winrt::Microsoft::UI::Content::ContentIsland::Create(rootVisual);
622
635
 
623
636
  m_island.AutomationProviderRequested(
@@ -7,6 +7,7 @@
7
7
  #include <FocusNavigationResult.g.h>
8
8
 
9
9
  #include <ReactContext.h>
10
+ #include <winrt/Microsoft.ReactNative.Composition.Experimental.h>
10
11
  #include <winrt/Microsoft.ReactNative.h>
11
12
  #include "CompositionEventHandler.h"
12
13
  #include "ReactHost/React.h"
@@ -40,11 +41,13 @@ struct FocusNavigationResult : FocusNavigationResultT<FocusNavigationResult> {
40
41
  const bool m_wasFocusMoved;
41
42
  };
42
43
 
43
- struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Microsoft::ReactNative::ICompositionRootView {
44
+ struct CompositionRootView
45
+ : CompositionRootViewT<CompositionRootView, Composition::Experimental::IInternalCompositionRootView>,
46
+ ::Microsoft::ReactNative::ICompositionRootView {
44
47
  CompositionRootView() noexcept;
45
48
 
46
49
  #ifdef USE_WINUI3
47
- CompositionRootView(winrt::Microsoft::UI::Composition::Compositor compositor) noexcept;
50
+ CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
48
51
  winrt::Microsoft::UI::Content::ContentIsland Island() noexcept;
49
52
  #endif
50
53
 
@@ -52,9 +55,11 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
52
55
  ReactNative::IReactViewHost ReactViewHost() noexcept;
53
56
  void ReactViewHost(ReactNative::IReactViewHost const &value) noexcept;
54
57
 
58
+ winrt::Microsoft::UI::Composition::Visual RootVisual() noexcept;
59
+
55
60
  // property RootVisual
56
- winrt::Microsoft::ReactNative::Composition::IVisual RootVisual() noexcept;
57
- void RootVisual(winrt::Microsoft::ReactNative::Composition::IVisual const &value) noexcept;
61
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual InternalRootVisual() noexcept;
62
+ void InternalRootVisual(winrt::Microsoft::ReactNative::Composition::Experimental::IVisual const &value) noexcept;
58
63
 
59
64
  // property Size
60
65
  winrt::Windows::Foundation::Size Size() noexcept;
@@ -64,8 +69,8 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
64
69
  float ScaleFactor() noexcept;
65
70
  void ScaleFactor(float value) noexcept;
66
71
 
67
- void AddRenderedVisual(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept;
68
- void RemoveRenderedVisual(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept;
72
+ void AddRenderedVisual(const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept;
73
+ void RemoveRenderedVisual(const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept;
69
74
 
70
75
  winrt::Microsoft::ReactNative::Composition::Theme Theme() noexcept;
71
76
  void Theme(const winrt::Microsoft::ReactNative::Composition::Theme &value) noexcept;
@@ -125,9 +130,9 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
125
130
  winrt::Microsoft::ReactNative::IReactViewHost m_reactViewHost;
126
131
  winrt::Microsoft::ReactNative::ReactViewOptions m_reactViewOptions;
127
132
  std::shared_ptr<::Microsoft::ReactNative::CompositionEventHandler> m_CompositionEventHandler;
128
- winrt::Microsoft::ReactNative::Composition::IVisual m_rootVisual{nullptr};
129
- winrt::Microsoft::ReactNative::Composition::ISpriteVisual m_loadingVisual{nullptr};
130
- winrt::Microsoft::ReactNative::Composition::IActivityVisual m_loadingActivityVisual{nullptr};
133
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual m_rootVisual{nullptr};
134
+ winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual m_loadingVisual{nullptr};
135
+ winrt::Microsoft::ReactNative::Composition::Experimental::IActivityVisual m_loadingActivityVisual{nullptr};
131
136
  winrt::Microsoft::ReactNative::Composition::Theme m_theme{nullptr};
132
137
  winrt::Microsoft::ReactNative::ReactNotificationSubscription m_themeChangedSubscription{nullptr};
133
138
  winrt::Microsoft::ReactNative::Composition::Theme::ThemeChanged_revoker m_themeChangedRevoker;
@@ -140,7 +145,7 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
140
145
  void ShowInstanceLoading() noexcept;
141
146
  void UpdateRootVisualSize() noexcept;
142
147
  void UpdateLoadingVisualSize() noexcept;
143
- Composition::IDrawingSurfaceBrush CreateLoadingVisualBrush() noexcept;
148
+ Composition::Experimental::IDrawingSurfaceBrush CreateLoadingVisualBrush() noexcept;
144
149
  };
145
150
 
146
151
  } // namespace winrt::Microsoft::ReactNative::implementation
@@ -29,17 +29,28 @@ struct CompositionReactViewInstance
29
29
 
30
30
  CompositionRootView::CompositionRootView() noexcept {}
31
31
 
32
+ CompositionRootView::CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept {}
33
+
32
34
  ReactNative::IReactViewHost CompositionRootView::ReactViewHost() noexcept {
33
35
  return nullptr;
34
36
  }
35
37
 
36
38
  void CompositionRootView::ReactViewHost(winrt::Microsoft::ReactNative::IReactViewHost const &) noexcept {}
37
39
 
38
- winrt::Microsoft::ReactNative::Composition::IVisual CompositionRootView::RootVisual() noexcept {
40
+ winrt::Microsoft::UI::Composition::Visual CompositionRootView::RootVisual() noexcept {
41
+ return nullptr;
42
+ }
43
+
44
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual CompositionRootView::InternalRootVisual() noexcept {
39
45
  return nullptr;
40
46
  }
41
47
 
42
- void CompositionRootView::RootVisual(winrt::Microsoft::ReactNative::Composition::IVisual const &) noexcept {}
48
+ void CompositionRootView::InternalRootVisual(
49
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &) noexcept {}
50
+
51
+ winrt::Microsoft::UI::Content::ContentIsland CompositionRootView::Island() noexcept {
52
+ return nullptr;
53
+ }
43
54
 
44
55
  winrt::Windows::Foundation::Size CompositionRootView::Size() noexcept {
45
56
  return {};
@@ -106,11 +117,11 @@ void CompositionRootView::ShowInstanceError() noexcept {}
106
117
 
107
118
  void CompositionRootView::ShowInstanceLoading() noexcept {}
108
119
 
109
- Windows::Foundation::Size CompositionRootView::Measure(Windows::Foundation::Size const &) const {
120
+ winrt::Windows::Foundation::Size CompositionRootView::Measure(winrt::Windows::Foundation::Size const &) const {
110
121
  return {};
111
122
  }
112
123
 
113
- Windows::Foundation::Size CompositionRootView::Arrange(Windows::Foundation::Size) const {
124
+ winrt::Windows::Foundation::Size CompositionRootView::Arrange(winrt::Windows::Foundation::Size) const {
114
125
  return {};
115
126
  }
116
127
 
@@ -10,21 +10,32 @@
10
10
 
11
11
  namespace winrt::Microsoft::ReactNative::Composition::implementation {
12
12
 
13
- static const ReactPropertyId<ICompositionContext> &CompositionContextPropertyId() noexcept {
14
- static const ReactPropertyId<ICompositionContext> prop{L"ReactNative.Composition", L"CompositionContext"};
13
+ static const ReactPropertyId<Experimental::ICompositionContext> &CompositionContextPropertyId() noexcept {
14
+ static const ReactPropertyId<Experimental::ICompositionContext> prop{
15
+ L"ReactNative.Composition", L"CompositionContext"};
15
16
  return prop;
16
17
  }
17
18
 
18
- void CompositionUIService::SetCompositionContext(
19
- IReactPropertyBag const &properties,
20
- ICompositionContext const &compositionContext) noexcept {
21
- ReactPropertyBag(properties).Set(CompositionContextPropertyId(), compositionContext);
19
+ void CompositionUIService::SetCompositor(
20
+ const winrt::Microsoft::ReactNative::ReactInstanceSettings &settings,
21
+ const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept {
22
+ ReactPropertyBag properties(settings.Properties());
23
+ properties.Set(
24
+ CompositionContextPropertyId(),
25
+ winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::CreateContext(
26
+ compositor));
22
27
  // Default to using Bridgeless mode when using fabric
23
- winrt::Microsoft::ReactNative::implementation::QuirkSettings::SetIsBridgeless(
24
- ReactPropertyBag(properties), !!compositionContext);
28
+ winrt::Microsoft::ReactNative::implementation::QuirkSettings::SetIsBridgeless(properties, !!compositor);
25
29
  }
26
30
 
27
- ICompositionContext CompositionUIService::GetCompositionContext(const IReactPropertyBag &properties) noexcept {
31
+ winrt::Microsoft::UI::Composition::Compositor CompositionUIService::GetCompositor(
32
+ const IReactPropertyBag &properties) noexcept {
33
+ return winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerCompositor(
34
+ GetCompositionContext(properties));
35
+ }
36
+
37
+ Experimental::ICompositionContext CompositionUIService::GetCompositionContext(
38
+ const IReactPropertyBag &properties) noexcept {
28
39
  return ReactPropertyBag(properties).Get(CompositionContextPropertyId());
29
40
  }
30
41
 
@@ -3,17 +3,19 @@
3
3
 
4
4
  #pragma once
5
5
  #include "Composition.CompositionUIService.g.h"
6
+ #include <winrt/Microsoft.ReactNative.Composition.Experimental.h>
6
7
 
7
8
  namespace winrt::Microsoft::ReactNative::Composition::implementation {
8
9
 
9
10
  struct CompositionUIService : CompositionUIServiceT<CompositionUIService> {
10
11
  CompositionUIService() = default;
11
12
 
12
- static void SetCompositionContext(
13
- const IReactPropertyBag &properties,
14
- const ICompositionContext &compositionContext) noexcept;
13
+ static void SetCompositor(
14
+ const winrt::Microsoft::ReactNative::ReactInstanceSettings &settings,
15
+ const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
16
+ static winrt::Microsoft::UI::Composition::Compositor GetCompositor(const IReactPropertyBag &properties) noexcept;
15
17
 
16
- static ICompositionContext GetCompositionContext(const IReactPropertyBag &properties) noexcept;
18
+ static Experimental::ICompositionContext GetCompositionContext(const IReactPropertyBag &properties) noexcept;
17
19
  };
18
20
 
19
21
  } // namespace winrt::Microsoft::ReactNative::Composition::implementation
@@ -6,12 +6,15 @@
6
6
  #include "CompositionUIService.h"
7
7
 
8
8
  #include "Composition.CompositionUIService.g.cpp"
9
+ #include <winrt/Microsoft.UI.Composition.h>
9
10
 
10
11
  namespace winrt::Microsoft::ReactNative::Composition::implementation {
11
12
 
12
- void CompositionUIService::SetCompositionContext(IReactPropertyBag const &, ICompositionContext const &) noexcept {}
13
+ void CompositionUIService::SetCompositor(
14
+ ReactInstanceSettings const &,
15
+ winrt::Microsoft::UI::Composition::Compositor const &) noexcept {}
13
16
 
14
- ICompositionContext CompositionUIService::GetCompositionContext(const IReactPropertyBag &) noexcept {
17
+ winrt::Microsoft::UI::Composition::Compositor CompositionUIService::GetCompositor(const IReactPropertyBag &) noexcept {
15
18
  return nullptr;
16
19
  }
17
20