react-native-windows 0.74.0-preview.3 → 0.74.0

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/Microsoft.ReactNative/CompositionComponentView.idl +18 -3
  2. package/Microsoft.ReactNative/CompositionContext.idl +5 -5
  3. package/Microsoft.ReactNative/CompositionRootView.idl +22 -8
  4. package/Microsoft.ReactNative/CompositionSwitcher.idl +2 -2
  5. package/Microsoft.ReactNative/CompositionUIService.idl +8 -6
  6. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +8 -1
  7. package/Microsoft.ReactNative/Fabric/AbiViewProps.h +7 -2
  8. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +4 -3
  9. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +5 -5
  10. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +1 -1
  11. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.h +2 -1
  12. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +181 -154
  13. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +8 -8
  14. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +13 -13
  15. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +1 -1
  16. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +14 -11
  17. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +36 -12
  18. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +16 -10
  19. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +15 -4
  20. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +20 -9
  21. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.h +6 -4
  22. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService_emptyimpl.cpp +5 -2
  23. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +180 -128
  24. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +25 -19
  25. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.cpp +2 -2
  26. package/Microsoft.ReactNative/Fabric/Composition/DebuggingOverlayComponentView.h +2 -2
  27. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +16 -22
  28. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +5 -5
  29. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +9 -10
  30. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.h +5 -5
  31. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +6 -5
  32. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +5 -5
  33. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +1 -1
  34. package/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +5 -2
  35. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +7 -3
  36. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +2 -2
  37. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +36 -35
  38. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +6 -6
  39. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.cpp +9 -9
  40. package/Microsoft.ReactNative/Fabric/Composition/SwitchComponentView.h +6 -6
  41. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +25 -19
  42. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +6 -6
  43. package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +13 -3
  44. package/Microsoft.ReactNative/Fabric/Composition/Theme.h +16 -8
  45. package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +3 -3
  46. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.cpp +5 -8
  47. package/Microsoft.ReactNative/Fabric/Composition/UnimplementedNativeViewComponentView.h +3 -3
  48. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +1 -1
  49. package/Microsoft.ReactNative/Fabric/IComponentViewRegistry.h +1 -1
  50. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +2 -1
  51. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +7 -5
  52. package/Microsoft.ReactNative/Theme.idl +12 -1
  53. package/Microsoft.ReactNative/Utils/KeyboardUtils.cpp +10 -2
  54. package/Microsoft.ReactNative/Utils/KeyboardUtils.h +4 -1
  55. package/Microsoft.ReactNative/ViewProps.idl +11 -1
  56. package/Microsoft.ReactNative/packages.lock.json +70 -42
  57. package/Microsoft.ReactNative.Cxx/AutoDraw.h +6 -4
  58. package/Microsoft.ReactNative.Cxx/{CompositionSwitcher.interop.h → CompositionSwitcher.Experimental.interop.h} +3 -3
  59. package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +2 -0
  60. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +2 -11
  61. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.props +1 -1
  62. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +5 -3
  63. package/PropertySheets/Generated/PackageVersion.g.props +2 -2
  64. package/Scripts/OfficeReact.Win32.nuspec +2 -0
  65. package/package.json +8 -5
  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
  }
@@ -33,6 +33,7 @@
33
33
 
34
34
  #ifdef USE_WINUI3
35
35
  #include <winrt/Microsoft.UI.Content.h>
36
+ #include <winrt/Microsoft.UI.Input.h>
36
37
  #endif
37
38
 
38
39
  namespace winrt::Microsoft::ReactNative::implementation {
@@ -126,7 +127,7 @@ inline Mso::Future<void> CompositionReactViewInstance::PostInUIQueue(TAction &&a
126
127
  CompositionRootView::CompositionRootView() noexcept {}
127
128
 
128
129
  #ifdef USE_WINUI3
129
- CompositionRootView::CompositionRootView(winrt::Microsoft::UI::Composition::Compositor compositor) noexcept
130
+ CompositionRootView::CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept
130
131
  : m_compositor(compositor) {}
131
132
  #endif
132
133
 
@@ -151,11 +152,17 @@ void CompositionRootView::ReactViewHost(winrt::Microsoft::ReactNative::IReactVie
151
152
  }
152
153
  }
153
154
 
154
- winrt::Microsoft::ReactNative::Composition::IVisual CompositionRootView::RootVisual() noexcept {
155
+ winrt::Microsoft::UI::Composition::Visual CompositionRootView::RootVisual() noexcept {
156
+ return winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerVisual(
157
+ m_rootVisual);
158
+ }
159
+
160
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual CompositionRootView::InternalRootVisual() noexcept {
155
161
  return m_rootVisual;
156
162
  }
157
163
 
158
- void CompositionRootView::RootVisual(winrt::Microsoft::ReactNative::Composition::IVisual const &value) noexcept {
164
+ void CompositionRootView::InternalRootVisual(
165
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual const &value) noexcept {
159
166
  if (m_rootVisual != value) {
160
167
  assert(!m_rootVisual);
161
168
  m_rootVisual = value;
@@ -164,19 +171,29 @@ void CompositionRootView::RootVisual(winrt::Microsoft::ReactNative::Composition:
164
171
  }
165
172
 
166
173
  void CompositionRootView::AddRenderedVisual(
167
- const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
174
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept {
168
175
  assert(!m_hasRenderedVisual);
169
- RootVisual().InsertAt(visual, 0);
176
+ InternalRootVisual().InsertAt(visual, 0);
170
177
  m_hasRenderedVisual = true;
171
178
  }
172
179
 
173
180
  void CompositionRootView::RemoveRenderedVisual(
174
- const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
181
+ const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept {
175
182
  assert(m_hasRenderedVisual);
176
- RootVisual().Remove(visual);
183
+ InternalRootVisual().Remove(visual);
177
184
  m_hasRenderedVisual = false;
178
185
  }
179
186
 
187
+ bool CompositionRootView::TrySetFocus() noexcept {
188
+ #ifdef USE_WINUI3
189
+ if (m_island) {
190
+ auto focusController = winrt::Microsoft::UI::Input::InputFocusController::GetForIsland(m_island);
191
+ return focusController.TrySetFocus();
192
+ }
193
+ #endif
194
+ return false;
195
+ }
196
+
180
197
  winrt::Windows::Foundation::Size CompositionRootView::Size() noexcept {
181
198
  return m_size;
182
199
  }
@@ -214,6 +231,11 @@ float CompositionRootView::ScaleFactor() noexcept {
214
231
  void CompositionRootView::ScaleFactor(float value) noexcept {
215
232
  if (m_scaleFactor != value) {
216
233
  m_scaleFactor = value;
234
+ // Lifted ContentIslands apply a scale that we need to reverse
235
+ if (auto rootView = RootVisual()) {
236
+ auto invScale = 1.0f / value;
237
+ rootView.Scale({invScale, invScale, invScale});
238
+ }
217
239
  UpdateRootVisualSize();
218
240
  }
219
241
  }
@@ -430,7 +452,7 @@ void CompositionRootView::ClearLoadingUI() noexcept {
430
452
  if (!m_loadingVisual)
431
453
  return;
432
454
 
433
- RootVisual().Remove(m_loadingVisual);
455
+ InternalRootVisual().Remove(m_loadingVisual);
434
456
 
435
457
  m_loadingVisual = nullptr;
436
458
  m_loadingActivityVisual = nullptr;
@@ -462,7 +484,7 @@ void CompositionRootView::ShowInstanceError() noexcept {
462
484
  ClearLoadingUI();
463
485
  }
464
486
 
465
- Composition::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush() noexcept {
487
+ Composition::Experimental::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush() noexcept {
466
488
  auto compContext =
467
489
  winrt::Microsoft::ReactNative::Composition::implementation::CompositionUIService::GetCompositionContext(
468
490
  m_context.Properties().Handle());
@@ -476,7 +498,7 @@ Composition::IDrawingSurfaceBrush CompositionRootView::CreateLoadingVisualBrush(
476
498
 
477
499
  POINT offset;
478
500
  {
479
- ::Microsoft::ReactNative::Composition::AutoDrawDrawingSurface autoDraw(drawingSurface, &offset);
501
+ ::Microsoft::ReactNative::Composition::AutoDrawDrawingSurface autoDraw(drawingSurface, m_scaleFactor, &offset);
480
502
  if (auto d2dDeviceContext = autoDraw.GetRenderTarget()) {
481
503
  d2dDeviceContext->Clear(D2D1::ColorF(D2D1::ColorF::Green));
482
504
 
@@ -543,7 +565,7 @@ void CompositionRootView::ShowInstanceLoading() noexcept {
543
565
 
544
566
  UpdateLoadingVisualSize();
545
567
 
546
- RootVisual().InsertAt(m_loadingVisual, m_hasRenderedVisual ? 1 : 0);
568
+ InternalRootVisual().InsertAt(m_loadingVisual, m_hasRenderedVisual ? 1 : 0);
547
569
  }
548
570
 
549
571
  winrt::Windows::Foundation::Size CompositionRootView::Measure(
@@ -617,7 +639,9 @@ winrt::Microsoft::UI::Content::ContentIsland CompositionRootView::Island() noexc
617
639
  if (!m_island) {
618
640
  auto rootVisual = m_compositor.CreateSpriteVisual();
619
641
 
620
- RootVisual(winrt::Microsoft::ReactNative::Composition::MicrosoftCompositionContextHelper::CreateVisual(rootVisual));
642
+ InternalRootVisual(
643
+ winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::CreateVisual(
644
+ rootVisual));
621
645
  m_island = winrt::Microsoft::UI::Content::ContentIsland::Create(rootVisual);
622
646
 
623
647
  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,9 @@ 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;
74
+ bool TrySetFocus() noexcept;
69
75
 
70
76
  winrt::Microsoft::ReactNative::Composition::Theme Theme() noexcept;
71
77
  void Theme(const winrt::Microsoft::ReactNative::Composition::Theme &value) noexcept;
@@ -125,9 +131,9 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
125
131
  winrt::Microsoft::ReactNative::IReactViewHost m_reactViewHost;
126
132
  winrt::Microsoft::ReactNative::ReactViewOptions m_reactViewOptions;
127
133
  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};
134
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual m_rootVisual{nullptr};
135
+ winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual m_loadingVisual{nullptr};
136
+ winrt::Microsoft::ReactNative::Composition::Experimental::IActivityVisual m_loadingActivityVisual{nullptr};
131
137
  winrt::Microsoft::ReactNative::Composition::Theme m_theme{nullptr};
132
138
  winrt::Microsoft::ReactNative::ReactNotificationSubscription m_themeChangedSubscription{nullptr};
133
139
  winrt::Microsoft::ReactNative::Composition::Theme::ThemeChanged_revoker m_themeChangedRevoker;
@@ -140,7 +146,7 @@ struct CompositionRootView : CompositionRootViewT<CompositionRootView>, ::Micros
140
146
  void ShowInstanceLoading() noexcept;
141
147
  void UpdateRootVisualSize() noexcept;
142
148
  void UpdateLoadingVisualSize() noexcept;
143
- Composition::IDrawingSurfaceBrush CreateLoadingVisualBrush() noexcept;
149
+ Composition::Experimental::IDrawingSurfaceBrush CreateLoadingVisualBrush() noexcept;
144
150
  };
145
151
 
146
152
  } // 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