react-native-windows 0.74.36 → 0.74.37

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 (23) hide show
  1. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +8 -10
  2. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +1 -1
  3. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +41 -37
  4. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +3 -8
  5. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorParser.h +0 -1
  6. package/Microsoft.ReactNative.Cxx/NativeModules.h +9 -0
  7. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  8. package/Shared/Networking/WinRTWebSocketResource.cpp +371 -6
  9. package/Shared/Networking/WinRTWebSocketResource.h +118 -0
  10. package/codegen/react/components/rnwcore/ActivityIndicatorView.g.h +6 -6
  11. package/codegen/react/components/rnwcore/AndroidDrawerLayout.g.h +6 -6
  12. package/codegen/react/components/rnwcore/AndroidHorizontalScrollContentView.g.h +6 -6
  13. package/codegen/react/components/rnwcore/AndroidProgressBar.g.h +6 -6
  14. package/codegen/react/components/rnwcore/AndroidSwipeRefreshLayout.g.h +6 -6
  15. package/codegen/react/components/rnwcore/AndroidSwitch.g.h +6 -6
  16. package/codegen/react/components/rnwcore/DebuggingOverlay.g.h +6 -6
  17. package/codegen/react/components/rnwcore/InputAccessory.g.h +6 -6
  18. package/codegen/react/components/rnwcore/ModalHostView.g.h +6 -6
  19. package/codegen/react/components/rnwcore/PullToRefreshView.g.h +6 -6
  20. package/codegen/react/components/rnwcore/SafeAreaView.g.h +6 -6
  21. package/codegen/react/components/rnwcore/Switch.g.h +6 -6
  22. package/codegen/react/components/rnwcore/UnimplementedNativeView.g.h +6 -6
  23. package/package.json +3 -3
@@ -16,6 +16,124 @@
16
16
 
17
17
  namespace Microsoft::React::Networking {
18
18
 
19
+ class WinRTWebSocketResource2 : public IWebSocketResource,
20
+ public std::enable_shared_from_this<WinRTWebSocketResource2> {
21
+ winrt::Windows::Networking::Sockets::IMessageWebSocket m_socket;
22
+
23
+ ///
24
+ // Connection attempt performed, either succeeding or failing
25
+ ///
26
+ winrt::handle m_connectPerformed;
27
+
28
+ ReadyState m_readyState;
29
+ Mso::DispatchQueue m_callingQueue;
30
+ Mso::DispatchQueue m_backgroundQueue;
31
+ std::queue<std::pair<std::string, bool>> m_outgoingMessages;
32
+ CloseCode m_closeCode{CloseCode::Normal};
33
+ std::string m_closeReason;
34
+
35
+ std::function<void()> m_connectHandler;
36
+ std::function<void(std::size_t, const std::string &, bool)> m_readHandler;
37
+ std::function<void(CloseCode, const std::string &)> m_closeHandler;
38
+ std::function<void(Error &&)> m_errorHandler;
39
+
40
+ winrt::Windows::Storage::Streams::IDataWriter m_writer;
41
+
42
+ void Fail(std::string &&message, ErrorType type) noexcept;
43
+ void Fail(winrt::hresult &&e, ErrorType type) noexcept;
44
+ void Fail(winrt::hresult_error const &e, ErrorType type) noexcept;
45
+
46
+ void OnMessageReceived(
47
+ winrt::Windows::Networking::Sockets::IMessageWebSocket const &,
48
+ winrt::Windows::Networking::Sockets::IMessageWebSocketMessageReceivedEventArgs const &args);
49
+
50
+ void OnClosed(
51
+ winrt::Windows::Networking::Sockets::IWebSocket const &,
52
+ winrt::Windows::Networking::Sockets::IWebSocketClosedEventArgs const &args);
53
+
54
+ winrt::fire_and_forget PerformConnect(winrt::Windows::Foundation::Uri &&uri) noexcept;
55
+ winrt::fire_and_forget PerformWrite(std::string &&message, bool isBinary) noexcept;
56
+ winrt::fire_and_forget PerformClose() noexcept;
57
+ winrt::Windows::Foundation::IAsyncAction SendPendingMessages() noexcept;
58
+
59
+ WinRTWebSocketResource2(
60
+ winrt::Windows::Networking::Sockets::IMessageWebSocket &&socket,
61
+ std::vector<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> &&certExceptions);
62
+
63
+ public:
64
+ WinRTWebSocketResource2(
65
+ winrt::Windows::Networking::Sockets::IMessageWebSocket &&socket,
66
+ winrt::Windows::Storage::Streams::IDataWriter &&writer,
67
+ std::vector<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> &&certExceptions,
68
+ Mso::DispatchQueue callingQueue);
69
+
70
+ WinRTWebSocketResource2(
71
+ std::vector<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> &&certExceptions);
72
+
73
+ ~WinRTWebSocketResource2() noexcept override;
74
+
75
+ #pragma region IWebSocketResource
76
+
77
+ /// <summary>
78
+ /// <see cref="IWebSocketResource::Connect" />
79
+ /// </summary>
80
+ void Connect(std::string &&url, const Protocols &protocols, const Options &options) noexcept override;
81
+
82
+ /// <summary>
83
+ /// <see cref="IWebSocketResource::Ping" />
84
+ /// </summary>
85
+ void Ping() noexcept override;
86
+
87
+ /// <summary>
88
+ /// <see cref="IWebSocketResource::Send" />
89
+ /// </summary>
90
+ void Send(std::string &&message) noexcept override;
91
+
92
+ /// <summary>
93
+ /// <see cref="IWebSocketResource::SendBinary" />
94
+ /// </summary>
95
+ void SendBinary(std::string &&base64String) noexcept override;
96
+
97
+ /// <summary>
98
+ /// <see cref="IWebSocketResource::Close" />
99
+ /// </summary>
100
+ void Close(CloseCode code, const std::string &reason) noexcept override;
101
+
102
+ ReadyState GetReadyState() const noexcept override;
103
+
104
+ /// <summary>
105
+ /// <see cref="IWebSocketResource::SetOnConnect" />
106
+ /// </summary>
107
+ void SetOnConnect(std::function<void()> &&handler) noexcept override;
108
+
109
+ /// <summary>
110
+ /// <see cref="IWebSocketResource::SetOnPing" />
111
+ /// </summary>
112
+ void SetOnPing(std::function<void()> &&handler) noexcept override;
113
+
114
+ /// <summary>
115
+ /// <see cref="IWebSocketResource::SetOnSend" />
116
+ /// </summary>
117
+ void SetOnSend(std::function<void(std::size_t)> &&handler) noexcept override;
118
+
119
+ /// <summary>
120
+ /// <see cref="IWebSocketResource::SetOnMessage" />
121
+ /// </summary>
122
+ void SetOnMessage(std::function<void(std::size_t, const std::string &, bool isBinary)> &&handler) noexcept override;
123
+
124
+ /// <summary>
125
+ /// <see cref="IWebSocketResource::SetOnClose" />
126
+ /// </summary>
127
+ void SetOnClose(std::function<void(CloseCode, const std::string &)> &&handler) noexcept override;
128
+
129
+ /// <summary>
130
+ /// <see cref="IWebSocketResource::SetOnError" />
131
+ /// </summary>
132
+ void SetOnError(std::function<void(Error &&)> &&handler) noexcept override;
133
+
134
+ #pragma endregion IWebSocketResource
135
+ };
136
+
19
137
  class WinRTWebSocketResource : public IWebSocketResource, public std::enable_shared_from_this<WinRTWebSocketResource> {
20
138
  winrt::Windows::Networking::Sockets::IMessageWebSocket m_socket;
21
139
  // TODO: Use or remove.
@@ -147,7 +147,7 @@ void RegisterActivityIndicatorViewNativeComponent(
147
147
  userData->UpdateEventEmitter(std::make_shared<ActivityIndicatorViewEventEmitter>(eventEmitter));
148
148
  });
149
149
 
150
- if constexpr (&TUserData::FinalizeUpdate != &BaseActivityIndicatorView<TUserData>::FinalizeUpdate) {
150
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseActivityIndicatorView<TUserData>::FinalizeUpdate) {
151
151
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
152
152
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
153
153
  auto userData = view.UserData().as<TUserData>();
@@ -155,7 +155,7 @@ void RegisterActivityIndicatorViewNativeComponent(
155
155
  });
156
156
  }
157
157
 
158
- if constexpr (&TUserData::UpdateState != &BaseActivityIndicatorView<TUserData>::UpdateState) {
158
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseActivityIndicatorView<TUserData>::UpdateState) {
159
159
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
160
160
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
161
161
  auto userData = view.UserData().as<TUserData>();
@@ -163,7 +163,7 @@ void RegisterActivityIndicatorViewNativeComponent(
163
163
  });
164
164
  }
165
165
 
166
- if constexpr (&TUserData::MountChildComponentView != &BaseActivityIndicatorView<TUserData>::MountChildComponentView) {
166
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseActivityIndicatorView<TUserData>::MountChildComponentView) {
167
167
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
168
168
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
169
169
  auto userData = view.UserData().as<TUserData>();
@@ -171,7 +171,7 @@ void RegisterActivityIndicatorViewNativeComponent(
171
171
  });
172
172
  }
173
173
 
174
- if constexpr (&TUserData::UnmountChildComponentView != &BaseActivityIndicatorView<TUserData>::UnmountChildComponentView) {
174
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseActivityIndicatorView<TUserData>::UnmountChildComponentView) {
175
175
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
176
176
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
177
177
  auto userData = view.UserData().as<TUserData>();
@@ -181,13 +181,13 @@ void RegisterActivityIndicatorViewNativeComponent(
181
181
 
182
182
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
183
183
  auto userData = winrt::make_self<TUserData>();
184
- if constexpr (&TUserData::Initialize != &BaseActivityIndicatorView<TUserData>::Initialize) {
184
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseActivityIndicatorView<TUserData>::Initialize) {
185
185
  userData->Initialize(view);
186
186
  }
187
187
  view.UserData(*userData);
188
188
  });
189
189
 
190
- if constexpr (&TUserData::CreateVisual != &BaseActivityIndicatorView<TUserData>::CreateVisual) {
190
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseActivityIndicatorView<TUserData>::CreateVisual) {
191
191
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
192
192
  auto userData = view.UserData().as<TUserData>();
193
193
  return userData->CreateVisual(view);
@@ -224,7 +224,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
224
224
  userData->UpdateEventEmitter(std::make_shared<AndroidDrawerLayoutEventEmitter>(eventEmitter));
225
225
  });
226
226
 
227
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidDrawerLayout<TUserData>::FinalizeUpdate) {
227
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidDrawerLayout<TUserData>::FinalizeUpdate) {
228
228
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
229
229
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
230
230
  auto userData = view.UserData().as<TUserData>();
@@ -232,7 +232,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
232
232
  });
233
233
  }
234
234
 
235
- if constexpr (&TUserData::UpdateState != &BaseAndroidDrawerLayout<TUserData>::UpdateState) {
235
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidDrawerLayout<TUserData>::UpdateState) {
236
236
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
237
237
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
238
238
  auto userData = view.UserData().as<TUserData>();
@@ -246,7 +246,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
246
246
  userData->HandleCommand(view, args);
247
247
  });
248
248
 
249
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::MountChildComponentView) {
249
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::MountChildComponentView) {
250
250
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
251
251
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
252
252
  auto userData = view.UserData().as<TUserData>();
@@ -254,7 +254,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
254
254
  });
255
255
  }
256
256
 
257
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::UnmountChildComponentView) {
257
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::UnmountChildComponentView) {
258
258
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
259
259
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
260
260
  auto userData = view.UserData().as<TUserData>();
@@ -264,13 +264,13 @@ void RegisterAndroidDrawerLayoutNativeComponent(
264
264
 
265
265
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
266
266
  auto userData = winrt::make_self<TUserData>();
267
- if constexpr (&TUserData::Initialize != &BaseAndroidDrawerLayout<TUserData>::Initialize) {
267
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidDrawerLayout<TUserData>::Initialize) {
268
268
  userData->Initialize(view);
269
269
  }
270
270
  view.UserData(*userData);
271
271
  });
272
272
 
273
- if constexpr (&TUserData::CreateVisual != &BaseAndroidDrawerLayout<TUserData>::CreateVisual) {
273
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidDrawerLayout<TUserData>::CreateVisual) {
274
274
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
275
275
  auto userData = view.UserData().as<TUserData>();
276
276
  return userData->CreateVisual(view);
@@ -135,7 +135,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
135
135
  userData->UpdateEventEmitter(std::make_shared<AndroidHorizontalScrollContentViewEventEmitter>(eventEmitter));
136
136
  });
137
137
 
138
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidHorizontalScrollContentView<TUserData>::FinalizeUpdate) {
138
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidHorizontalScrollContentView<TUserData>::FinalizeUpdate) {
139
139
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
140
140
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
141
141
  auto userData = view.UserData().as<TUserData>();
@@ -143,7 +143,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
143
143
  });
144
144
  }
145
145
 
146
- if constexpr (&TUserData::UpdateState != &BaseAndroidHorizontalScrollContentView<TUserData>::UpdateState) {
146
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidHorizontalScrollContentView<TUserData>::UpdateState) {
147
147
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
148
148
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
149
149
  auto userData = view.UserData().as<TUserData>();
@@ -151,7 +151,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
151
151
  });
152
152
  }
153
153
 
154
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::MountChildComponentView) {
154
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::MountChildComponentView) {
155
155
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
156
156
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
157
157
  auto userData = view.UserData().as<TUserData>();
@@ -159,7 +159,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
159
159
  });
160
160
  }
161
161
 
162
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::UnmountChildComponentView) {
162
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::UnmountChildComponentView) {
163
163
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
164
164
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
165
165
  auto userData = view.UserData().as<TUserData>();
@@ -169,13 +169,13 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
169
169
 
170
170
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
171
171
  auto userData = winrt::make_self<TUserData>();
172
- if constexpr (&TUserData::Initialize != &BaseAndroidHorizontalScrollContentView<TUserData>::Initialize) {
172
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidHorizontalScrollContentView<TUserData>::Initialize) {
173
173
  userData->Initialize(view);
174
174
  }
175
175
  view.UserData(*userData);
176
176
  });
177
177
 
178
- if constexpr (&TUserData::CreateVisual != &BaseAndroidHorizontalScrollContentView<TUserData>::CreateVisual) {
178
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidHorizontalScrollContentView<TUserData>::CreateVisual) {
179
179
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
180
180
  auto userData = view.UserData().as<TUserData>();
181
181
  return userData->CreateVisual(view);
@@ -159,7 +159,7 @@ void RegisterAndroidProgressBarNativeComponent(
159
159
  userData->UpdateEventEmitter(std::make_shared<AndroidProgressBarEventEmitter>(eventEmitter));
160
160
  });
161
161
 
162
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidProgressBar<TUserData>::FinalizeUpdate) {
162
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidProgressBar<TUserData>::FinalizeUpdate) {
163
163
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
164
164
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
165
165
  auto userData = view.UserData().as<TUserData>();
@@ -167,7 +167,7 @@ void RegisterAndroidProgressBarNativeComponent(
167
167
  });
168
168
  }
169
169
 
170
- if constexpr (&TUserData::UpdateState != &BaseAndroidProgressBar<TUserData>::UpdateState) {
170
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidProgressBar<TUserData>::UpdateState) {
171
171
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
172
172
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
173
173
  auto userData = view.UserData().as<TUserData>();
@@ -175,7 +175,7 @@ void RegisterAndroidProgressBarNativeComponent(
175
175
  });
176
176
  }
177
177
 
178
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidProgressBar<TUserData>::MountChildComponentView) {
178
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidProgressBar<TUserData>::MountChildComponentView) {
179
179
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
180
180
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
181
181
  auto userData = view.UserData().as<TUserData>();
@@ -183,7 +183,7 @@ void RegisterAndroidProgressBarNativeComponent(
183
183
  });
184
184
  }
185
185
 
186
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidProgressBar<TUserData>::UnmountChildComponentView) {
186
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidProgressBar<TUserData>::UnmountChildComponentView) {
187
187
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
188
188
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
189
189
  auto userData = view.UserData().as<TUserData>();
@@ -193,13 +193,13 @@ void RegisterAndroidProgressBarNativeComponent(
193
193
 
194
194
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
195
195
  auto userData = winrt::make_self<TUserData>();
196
- if constexpr (&TUserData::Initialize != &BaseAndroidProgressBar<TUserData>::Initialize) {
196
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidProgressBar<TUserData>::Initialize) {
197
197
  userData->Initialize(view);
198
198
  }
199
199
  view.UserData(*userData);
200
200
  });
201
201
 
202
- if constexpr (&TUserData::CreateVisual != &BaseAndroidProgressBar<TUserData>::CreateVisual) {
202
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidProgressBar<TUserData>::CreateVisual) {
203
203
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
204
204
  auto userData = view.UserData().as<TUserData>();
205
205
  return userData->CreateVisual(view);
@@ -179,7 +179,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
179
179
  userData->UpdateEventEmitter(std::make_shared<AndroidSwipeRefreshLayoutEventEmitter>(eventEmitter));
180
180
  });
181
181
 
182
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidSwipeRefreshLayout<TUserData>::FinalizeUpdate) {
182
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidSwipeRefreshLayout<TUserData>::FinalizeUpdate) {
183
183
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
184
184
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
185
185
  auto userData = view.UserData().as<TUserData>();
@@ -187,7 +187,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
187
187
  });
188
188
  }
189
189
 
190
- if constexpr (&TUserData::UpdateState != &BaseAndroidSwipeRefreshLayout<TUserData>::UpdateState) {
190
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidSwipeRefreshLayout<TUserData>::UpdateState) {
191
191
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
192
192
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
193
193
  auto userData = view.UserData().as<TUserData>();
@@ -201,7 +201,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
201
201
  userData->HandleCommand(view, args);
202
202
  });
203
203
 
204
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::MountChildComponentView) {
204
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::MountChildComponentView) {
205
205
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
206
206
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
207
207
  auto userData = view.UserData().as<TUserData>();
@@ -209,7 +209,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
209
209
  });
210
210
  }
211
211
 
212
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::UnmountChildComponentView) {
212
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::UnmountChildComponentView) {
213
213
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
214
214
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
215
215
  auto userData = view.UserData().as<TUserData>();
@@ -219,13 +219,13 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
219
219
 
220
220
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
221
221
  auto userData = winrt::make_self<TUserData>();
222
- if constexpr (&TUserData::Initialize != &BaseAndroidSwipeRefreshLayout<TUserData>::Initialize) {
222
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidSwipeRefreshLayout<TUserData>::Initialize) {
223
223
  userData->Initialize(view);
224
224
  }
225
225
  view.UserData(*userData);
226
226
  });
227
227
 
228
- if constexpr (&TUserData::CreateVisual != &BaseAndroidSwipeRefreshLayout<TUserData>::CreateVisual) {
228
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidSwipeRefreshLayout<TUserData>::CreateVisual) {
229
229
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
230
230
  auto userData = view.UserData().as<TUserData>();
231
231
  return userData->CreateVisual(view);
@@ -196,7 +196,7 @@ void RegisterAndroidSwitchNativeComponent(
196
196
  userData->UpdateEventEmitter(std::make_shared<AndroidSwitchEventEmitter>(eventEmitter));
197
197
  });
198
198
 
199
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidSwitch<TUserData>::FinalizeUpdate) {
199
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidSwitch<TUserData>::FinalizeUpdate) {
200
200
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
201
201
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
202
202
  auto userData = view.UserData().as<TUserData>();
@@ -204,7 +204,7 @@ void RegisterAndroidSwitchNativeComponent(
204
204
  });
205
205
  }
206
206
 
207
- if constexpr (&TUserData::UpdateState != &BaseAndroidSwitch<TUserData>::UpdateState) {
207
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidSwitch<TUserData>::UpdateState) {
208
208
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
209
209
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
210
210
  auto userData = view.UserData().as<TUserData>();
@@ -218,7 +218,7 @@ void RegisterAndroidSwitchNativeComponent(
218
218
  userData->HandleCommand(view, args);
219
219
  });
220
220
 
221
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidSwitch<TUserData>::MountChildComponentView) {
221
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidSwitch<TUserData>::MountChildComponentView) {
222
222
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
223
223
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
224
224
  auto userData = view.UserData().as<TUserData>();
@@ -226,7 +226,7 @@ void RegisterAndroidSwitchNativeComponent(
226
226
  });
227
227
  }
228
228
 
229
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidSwitch<TUserData>::UnmountChildComponentView) {
229
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidSwitch<TUserData>::UnmountChildComponentView) {
230
230
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
231
231
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
232
232
  auto userData = view.UserData().as<TUserData>();
@@ -236,13 +236,13 @@ void RegisterAndroidSwitchNativeComponent(
236
236
 
237
237
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
238
238
  auto userData = winrt::make_self<TUserData>();
239
- if constexpr (&TUserData::Initialize != &BaseAndroidSwitch<TUserData>::Initialize) {
239
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidSwitch<TUserData>::Initialize) {
240
240
  userData->Initialize(view);
241
241
  }
242
242
  view.UserData(*userData);
243
243
  });
244
244
 
245
- if constexpr (&TUserData::CreateVisual != &BaseAndroidSwitch<TUserData>::CreateVisual) {
245
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidSwitch<TUserData>::CreateVisual) {
246
246
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
247
247
  auto userData = view.UserData().as<TUserData>();
248
248
  return userData->CreateVisual(view);
@@ -163,7 +163,7 @@ void RegisterDebuggingOverlayNativeComponent(
163
163
  userData->UpdateEventEmitter(std::make_shared<DebuggingOverlayEventEmitter>(eventEmitter));
164
164
  });
165
165
 
166
- if constexpr (&TUserData::FinalizeUpdate != &BaseDebuggingOverlay<TUserData>::FinalizeUpdate) {
166
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseDebuggingOverlay<TUserData>::FinalizeUpdate) {
167
167
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
168
168
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
169
169
  auto userData = view.UserData().as<TUserData>();
@@ -171,7 +171,7 @@ void RegisterDebuggingOverlayNativeComponent(
171
171
  });
172
172
  }
173
173
 
174
- if constexpr (&TUserData::UpdateState != &BaseDebuggingOverlay<TUserData>::UpdateState) {
174
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseDebuggingOverlay<TUserData>::UpdateState) {
175
175
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
176
176
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
177
177
  auto userData = view.UserData().as<TUserData>();
@@ -185,7 +185,7 @@ void RegisterDebuggingOverlayNativeComponent(
185
185
  userData->HandleCommand(view, args);
186
186
  });
187
187
 
188
- if constexpr (&TUserData::MountChildComponentView != &BaseDebuggingOverlay<TUserData>::MountChildComponentView) {
188
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseDebuggingOverlay<TUserData>::MountChildComponentView) {
189
189
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
190
190
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
191
191
  auto userData = view.UserData().as<TUserData>();
@@ -193,7 +193,7 @@ void RegisterDebuggingOverlayNativeComponent(
193
193
  });
194
194
  }
195
195
 
196
- if constexpr (&TUserData::UnmountChildComponentView != &BaseDebuggingOverlay<TUserData>::UnmountChildComponentView) {
196
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseDebuggingOverlay<TUserData>::UnmountChildComponentView) {
197
197
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
198
198
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
199
199
  auto userData = view.UserData().as<TUserData>();
@@ -203,13 +203,13 @@ void RegisterDebuggingOverlayNativeComponent(
203
203
 
204
204
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
205
205
  auto userData = winrt::make_self<TUserData>();
206
- if constexpr (&TUserData::Initialize != &BaseDebuggingOverlay<TUserData>::Initialize) {
206
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseDebuggingOverlay<TUserData>::Initialize) {
207
207
  userData->Initialize(view);
208
208
  }
209
209
  view.UserData(*userData);
210
210
  });
211
211
 
212
- if constexpr (&TUserData::CreateVisual != &BaseDebuggingOverlay<TUserData>::CreateVisual) {
212
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseDebuggingOverlay<TUserData>::CreateVisual) {
213
213
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
214
214
  auto userData = view.UserData().as<TUserData>();
215
215
  return userData->CreateVisual(view);
@@ -135,7 +135,7 @@ void RegisterInputAccessoryNativeComponent(
135
135
  userData->UpdateEventEmitter(std::make_shared<InputAccessoryEventEmitter>(eventEmitter));
136
136
  });
137
137
 
138
- if constexpr (&TUserData::FinalizeUpdate != &BaseInputAccessory<TUserData>::FinalizeUpdate) {
138
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseInputAccessory<TUserData>::FinalizeUpdate) {
139
139
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
140
140
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
141
141
  auto userData = view.UserData().as<TUserData>();
@@ -143,7 +143,7 @@ void RegisterInputAccessoryNativeComponent(
143
143
  });
144
144
  }
145
145
 
146
- if constexpr (&TUserData::UpdateState != &BaseInputAccessory<TUserData>::UpdateState) {
146
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseInputAccessory<TUserData>::UpdateState) {
147
147
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
148
148
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
149
149
  auto userData = view.UserData().as<TUserData>();
@@ -151,7 +151,7 @@ void RegisterInputAccessoryNativeComponent(
151
151
  });
152
152
  }
153
153
 
154
- if constexpr (&TUserData::MountChildComponentView != &BaseInputAccessory<TUserData>::MountChildComponentView) {
154
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseInputAccessory<TUserData>::MountChildComponentView) {
155
155
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
156
156
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
157
157
  auto userData = view.UserData().as<TUserData>();
@@ -159,7 +159,7 @@ void RegisterInputAccessoryNativeComponent(
159
159
  });
160
160
  }
161
161
 
162
- if constexpr (&TUserData::UnmountChildComponentView != &BaseInputAccessory<TUserData>::UnmountChildComponentView) {
162
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseInputAccessory<TUserData>::UnmountChildComponentView) {
163
163
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
164
164
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
165
165
  auto userData = view.UserData().as<TUserData>();
@@ -169,13 +169,13 @@ void RegisterInputAccessoryNativeComponent(
169
169
 
170
170
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
171
171
  auto userData = winrt::make_self<TUserData>();
172
- if constexpr (&TUserData::Initialize != &BaseInputAccessory<TUserData>::Initialize) {
172
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseInputAccessory<TUserData>::Initialize) {
173
173
  userData->Initialize(view);
174
174
  }
175
175
  view.UserData(*userData);
176
176
  });
177
177
 
178
- if constexpr (&TUserData::CreateVisual != &BaseInputAccessory<TUserData>::CreateVisual) {
178
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseInputAccessory<TUserData>::CreateVisual) {
179
179
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
180
180
  auto userData = view.UserData().as<TUserData>();
181
181
  return userData->CreateVisual(view);
@@ -214,7 +214,7 @@ void RegisterModalHostViewNativeComponent(
214
214
  userData->UpdateEventEmitter(std::make_shared<ModalHostViewEventEmitter>(eventEmitter));
215
215
  });
216
216
 
217
- if constexpr (&TUserData::FinalizeUpdate != &BaseModalHostView<TUserData>::FinalizeUpdate) {
217
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseModalHostView<TUserData>::FinalizeUpdate) {
218
218
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
219
219
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
220
220
  auto userData = view.UserData().as<TUserData>();
@@ -222,7 +222,7 @@ void RegisterModalHostViewNativeComponent(
222
222
  });
223
223
  }
224
224
 
225
- if constexpr (&TUserData::UpdateState != &BaseModalHostView<TUserData>::UpdateState) {
225
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseModalHostView<TUserData>::UpdateState) {
226
226
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
227
227
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
228
228
  auto userData = view.UserData().as<TUserData>();
@@ -230,7 +230,7 @@ void RegisterModalHostViewNativeComponent(
230
230
  });
231
231
  }
232
232
 
233
- if constexpr (&TUserData::MountChildComponentView != &BaseModalHostView<TUserData>::MountChildComponentView) {
233
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseModalHostView<TUserData>::MountChildComponentView) {
234
234
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
235
235
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
236
236
  auto userData = view.UserData().as<TUserData>();
@@ -238,7 +238,7 @@ void RegisterModalHostViewNativeComponent(
238
238
  });
239
239
  }
240
240
 
241
- if constexpr (&TUserData::UnmountChildComponentView != &BaseModalHostView<TUserData>::UnmountChildComponentView) {
241
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseModalHostView<TUserData>::UnmountChildComponentView) {
242
242
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
243
243
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
244
244
  auto userData = view.UserData().as<TUserData>();
@@ -248,13 +248,13 @@ void RegisterModalHostViewNativeComponent(
248
248
 
249
249
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
250
250
  auto userData = winrt::make_self<TUserData>();
251
- if constexpr (&TUserData::Initialize != &BaseModalHostView<TUserData>::Initialize) {
251
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseModalHostView<TUserData>::Initialize) {
252
252
  userData->Initialize(view);
253
253
  }
254
254
  view.UserData(*userData);
255
255
  });
256
256
 
257
- if constexpr (&TUserData::CreateVisual != &BaseModalHostView<TUserData>::CreateVisual) {
257
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseModalHostView<TUserData>::CreateVisual) {
258
258
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
259
259
  auto userData = view.UserData().as<TUserData>();
260
260
  return userData->CreateVisual(view);