react-native-windows 0.78.5 → 0.78.6

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 (189) hide show
  1. package/Directory.Build.props +6 -4
  2. package/Folly/Folly.vcxproj +46 -6
  3. package/Folly/Folly.vcxproj.filters +16 -4
  4. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +26 -18
  5. package/Folly/TEMP_UntilFollyUpdate/Conv.cpp +1205 -0
  6. package/Folly/TEMP_UntilFollyUpdate/chrono/Hardware.h +155 -0
  7. package/Folly/TEMP_UntilFollyUpdate/concurrency/CacheLocality.cpp +633 -0
  8. package/Folly/TEMP_UntilFollyUpdate/{dynamic-inl.h → json/dynamic-inl.h} +3 -4
  9. package/Folly/TEMP_UntilFollyUpdate/{json.cpp → json/json.cpp} +14 -10
  10. package/Folly/TEMP_UntilFollyUpdate/lang/SafeAssert.h +7 -14
  11. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +6 -6
  12. package/Folly/ThreadNameStub.cpp +10 -0
  13. package/Folly/cgmanifest.json +11 -1
  14. package/Libraries/Components/View/View.windows.js +107 -56
  15. package/Libraries/Components/View/ViewAccessibility.d.ts +60 -1
  16. package/Libraries/Image/Image.windows.js +42 -21
  17. package/Libraries/Modal/Modal.d.ts +7 -0
  18. package/Libraries/Modal/Modal.windows.js +7 -1
  19. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -0
  20. package/Libraries/Text/Text.d.ts +18 -0
  21. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +4 -25
  22. package/Microsoft.ReactNative/AsynchronousEventBeat.h +0 -3
  23. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -0
  24. package/Microsoft.ReactNative/CallInvoker.cpp +42 -0
  25. package/Microsoft.ReactNative/CallInvoker.h +34 -0
  26. package/Microsoft.ReactNative/{JSDispatcherWriter.cpp → CallInvokerWriter.cpp} +35 -47
  27. package/Microsoft.ReactNative/CallInvokerWriter.h +74 -0
  28. package/Microsoft.ReactNative/CompositionComponentView.idl +0 -5
  29. package/Microsoft.ReactNative/CompositionSwitcher.idl +7 -0
  30. package/Microsoft.ReactNative/Fabric/AbiViewProps.cpp +8 -10
  31. package/Microsoft.ReactNative/Fabric/ComponentView.cpp +4 -1
  32. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.cpp +12 -2
  33. package/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h +2 -0
  34. package/Microsoft.ReactNative/Fabric/Composition/CompositionAnnotationProvider.cpp +100 -0
  35. package/Microsoft.ReactNative/Fabric/Composition/CompositionAnnotationProvider.h +31 -0
  36. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +77 -11
  37. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +43 -1
  38. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +7 -0
  39. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +86 -56
  40. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +5 -1
  41. package/Microsoft.ReactNative/Fabric/Composition/CompositionRootAutomationProvider.cpp +0 -4
  42. package/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +0 -2
  43. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +118 -63
  44. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +2 -0
  45. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +133 -8
  46. package/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +16 -2
  47. package/Microsoft.ReactNative/Fabric/Composition/FocusManager.cpp +4 -2
  48. package/Microsoft.ReactNative/Fabric/Composition/FocusManager.h +9 -1
  49. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +34 -11
  50. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +3 -0
  51. package/Microsoft.ReactNative/Fabric/Composition/Modal/WindowsModalHostViewComponentView.cpp +133 -135
  52. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +9 -6
  53. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +46 -49
  54. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +6 -1
  55. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.cpp +13 -8
  56. package/Microsoft.ReactNative/Fabric/Composition/RootComponentView.h +5 -2
  57. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +146 -25
  58. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.h +14 -0
  59. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +160 -12
  60. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +6 -0
  61. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.cpp +47 -0
  62. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputEventEmitter.h +15 -1
  63. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.cpp +6 -2
  64. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputProps.h +4 -1
  65. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +7 -9
  66. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.h +4 -1
  67. package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +5 -0
  68. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +40 -36
  69. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +68 -0
  70. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +11 -0
  71. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +70 -13
  72. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +10 -2
  73. package/Microsoft.ReactNative/Fabric/ImageManager.cpp +5 -5
  74. package/Microsoft.ReactNative/Fabric/ImageRequestParams.cpp +26 -0
  75. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +47 -8
  76. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +10 -1
  77. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/CompositionAccessibilityProps.h +67 -0
  78. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +22 -4
  79. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.h +15 -2
  80. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +20 -0
  81. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.h +5 -0
  82. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/MouseEvent.h +20 -0
  83. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/HostPlatformColor.h +5 -8
  84. package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/PlatformColorParser.h +1 -2
  85. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +247 -45
  86. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +15 -0
  87. package/Microsoft.ReactNative/Fabric/platform/react/threading/MessageQueueThreadImpl.cpp +39 -0
  88. package/Microsoft.ReactNative/Fabric/platform/react/threading/MessageQueueThreadImpl.h +54 -0
  89. package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.cpp +126 -0
  90. package/Microsoft.ReactNative/Fabric/platform/react/threading/TaskDispatchThread.h +73 -0
  91. package/Microsoft.ReactNative/IReactContext.cpp +17 -0
  92. package/Microsoft.ReactNative/IReactContext.h +1 -0
  93. package/Microsoft.ReactNative/IReactContext.idl +18 -1
  94. package/Microsoft.ReactNative/IReactDispatcher.idl +1 -0
  95. package/Microsoft.ReactNative/IReactModuleBuilder.cpp +12 -0
  96. package/Microsoft.ReactNative/IReactModuleBuilder.h +2 -0
  97. package/Microsoft.ReactNative/IReactModuleBuilder.idl +8 -0
  98. package/Microsoft.ReactNative/JsiApi.cpp +10 -2
  99. package/Microsoft.ReactNative/JsiApi.h +1 -0
  100. package/Microsoft.ReactNative/JsiApi.idl +1 -0
  101. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +0 -3
  102. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +2 -3
  103. package/Microsoft.ReactNative/Modules/AlertModule.cpp +7 -12
  104. package/Microsoft.ReactNative/Modules/Animated/AnimationDriver.cpp +2 -1
  105. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedModule.cpp +4 -8
  106. package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -2
  107. package/Microsoft.ReactNative/Modules/ClipboardModule.cpp +6 -8
  108. package/Microsoft.ReactNative/Modules/ClipboardModule.h +1 -1
  109. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +6 -15
  110. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +13 -24
  111. package/Microsoft.ReactNative/QuirkSettings.cpp +0 -16
  112. package/Microsoft.ReactNative/QuirkSettings.h +0 -3
  113. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +11 -1
  114. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +78 -68
  115. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -2
  116. package/Microsoft.ReactNative/ReactInstanceSettings.cpp +12 -0
  117. package/Microsoft.ReactNative/ReactInstanceSettings.h +2 -0
  118. package/Microsoft.ReactNative/ReactInstanceSettings.idl +6 -0
  119. package/Microsoft.ReactNative/ReactNativeIsland.idl +3 -0
  120. package/Microsoft.ReactNative/ReactSupport.cpp +44 -11
  121. package/Microsoft.ReactNative/RedBox.cpp +30 -1
  122. package/Microsoft.ReactNative/SchedulerSettings.cpp +4 -4
  123. package/Microsoft.ReactNative/SchedulerSettings.h +1 -1
  124. package/Microsoft.ReactNative/TurboModulesProvider.cpp +30 -12
  125. package/Microsoft.ReactNative/Utils/ImageUtils.h +1 -0
  126. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +37 -31
  127. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +1 -0
  128. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +2 -0
  129. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +1 -1
  130. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +94 -27
  131. package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +27 -6
  132. package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.cpp +45 -11
  133. package/Microsoft.ReactNative.Cxx/JSI/JsiApiContext.h +6 -0
  134. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +220 -0
  135. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +28 -0
  136. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +6 -0
  137. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +241 -4
  138. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +207 -19
  139. package/Microsoft.ReactNative.Cxx/JSValue.cpp +19 -3
  140. package/Microsoft.ReactNative.Cxx/JSValue.h +15 -7
  141. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +2 -2
  142. package/Microsoft.ReactNative.Cxx/NativeModules.h +60 -2
  143. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +1267 -614
  144. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +4 -2
  145. package/Microsoft.ReactNative.Cxx/ReactContext.h +7 -0
  146. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +11 -13
  147. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -3
  148. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +81 -20
  149. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +47 -2
  150. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +13 -0
  151. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +1 -1
  152. package/Microsoft.ReactNative.Managed/ReactContext.cs +3 -1
  153. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  154. package/PropertySheets/JSEngine.props +1 -1
  155. package/PropertySheets/React.Cpp.props +2 -1
  156. package/PropertySheets/WebView2.props +1 -1
  157. package/PropertySheets/WinUI.props +2 -2
  158. package/ReactCommon/TEMP_UntilReactCommonUpdate/jserrorhandler/JsErrorHandler.cpp +429 -0
  159. package/ReactCommon/cgmanifest.json +1 -1
  160. package/Shared/HermesRuntimeHolder.cpp +6 -0
  161. package/Shared/JSI/ChakraRuntime.cpp +4 -0
  162. package/Shared/JSI/ChakraRuntime.h +2 -0
  163. package/Shared/Modules/BlobModule.cpp +14 -16
  164. package/Shared/Modules/BlobModule.h +3 -1
  165. package/Shared/Shared.vcxitems +11 -7
  166. package/Shared/Shared.vcxitems.filters +6 -1
  167. package/Shared/TurboModuleManager.cpp +0 -15
  168. package/codegen/react/components/rnwcore/ActivityIndicatorView.g.h +6 -6
  169. package/codegen/react/components/rnwcore/AndroidDrawerLayout.g.h +6 -6
  170. package/codegen/react/components/rnwcore/AndroidHorizontalScrollContentView.g.h +6 -6
  171. package/codegen/react/components/rnwcore/AndroidProgressBar.g.h +6 -6
  172. package/codegen/react/components/rnwcore/AndroidSwipeRefreshLayout.g.h +6 -6
  173. package/codegen/react/components/rnwcore/AndroidSwitch.g.h +6 -6
  174. package/codegen/react/components/rnwcore/DebuggingOverlay.g.h +6 -6
  175. package/codegen/react/components/rnwcore/InputAccessory.g.h +6 -6
  176. package/codegen/react/components/rnwcore/ModalHostView.g.h +11 -7
  177. package/codegen/react/components/rnwcore/Props.cpp +2 -1
  178. package/codegen/react/components/rnwcore/Props.h +1 -0
  179. package/codegen/react/components/rnwcore/PullToRefreshView.g.h +6 -6
  180. package/codegen/react/components/rnwcore/SafeAreaView.g.h +6 -6
  181. package/codegen/react/components/rnwcore/Switch.g.h +6 -6
  182. package/codegen/react/components/rnwcore/UnimplementedNativeView.g.h +6 -6
  183. package/index.windows.js +4 -2
  184. package/package.json +3 -4
  185. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  186. package/stubs/glog/logging.h +1 -1
  187. package/Microsoft.ReactNative/JSDispatcherWriter.h +0 -47
  188. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +0 -51
  189. package/Microsoft.ReactNative/SynchronousEventBeat.h +0 -31
@@ -153,7 +153,7 @@ void RegisterActivityIndicatorViewNativeComponent(
153
153
  userData->UpdateEventEmitter(std::make_shared<ActivityIndicatorViewEventEmitter>(eventEmitter));
154
154
  });
155
155
 
156
- if constexpr (&TUserData::FinalizeUpdate != &BaseActivityIndicatorView<TUserData>::FinalizeUpdate) {
156
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseActivityIndicatorView<TUserData>::FinalizeUpdate) {
157
157
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
158
158
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
159
159
  auto userData = view.UserData().as<TUserData>();
@@ -161,7 +161,7 @@ void RegisterActivityIndicatorViewNativeComponent(
161
161
  });
162
162
  }
163
163
 
164
- if constexpr (&TUserData::UpdateState != &BaseActivityIndicatorView<TUserData>::UpdateState) {
164
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseActivityIndicatorView<TUserData>::UpdateState) {
165
165
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
166
166
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
167
167
  auto userData = view.UserData().as<TUserData>();
@@ -169,7 +169,7 @@ void RegisterActivityIndicatorViewNativeComponent(
169
169
  });
170
170
  }
171
171
 
172
- if constexpr (&TUserData::MountChildComponentView != &BaseActivityIndicatorView<TUserData>::MountChildComponentView) {
172
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseActivityIndicatorView<TUserData>::MountChildComponentView) {
173
173
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
174
174
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
175
175
  auto userData = view.UserData().as<TUserData>();
@@ -177,7 +177,7 @@ void RegisterActivityIndicatorViewNativeComponent(
177
177
  });
178
178
  }
179
179
 
180
- if constexpr (&TUserData::UnmountChildComponentView != &BaseActivityIndicatorView<TUserData>::UnmountChildComponentView) {
180
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseActivityIndicatorView<TUserData>::UnmountChildComponentView) {
181
181
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
182
182
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
183
183
  auto userData = view.UserData().as<TUserData>();
@@ -187,13 +187,13 @@ void RegisterActivityIndicatorViewNativeComponent(
187
187
 
188
188
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
189
189
  auto userData = winrt::make_self<TUserData>();
190
- if constexpr (&TUserData::Initialize != &BaseActivityIndicatorView<TUserData>::Initialize) {
190
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseActivityIndicatorView<TUserData>::Initialize) {
191
191
  userData->Initialize(view);
192
192
  }
193
193
  view.UserData(*userData);
194
194
  });
195
195
 
196
- if constexpr (&TUserData::CreateVisual != &BaseActivityIndicatorView<TUserData>::CreateVisual) {
196
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseActivityIndicatorView<TUserData>::CreateVisual) {
197
197
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
198
198
  auto userData = view.UserData().as<TUserData>();
199
199
  return userData->CreateVisual(view);
@@ -230,7 +230,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
230
230
  userData->UpdateEventEmitter(std::make_shared<AndroidDrawerLayoutEventEmitter>(eventEmitter));
231
231
  });
232
232
 
233
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidDrawerLayout<TUserData>::FinalizeUpdate) {
233
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidDrawerLayout<TUserData>::FinalizeUpdate) {
234
234
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
235
235
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
236
236
  auto userData = view.UserData().as<TUserData>();
@@ -238,7 +238,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
238
238
  });
239
239
  }
240
240
 
241
- if constexpr (&TUserData::UpdateState != &BaseAndroidDrawerLayout<TUserData>::UpdateState) {
241
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidDrawerLayout<TUserData>::UpdateState) {
242
242
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
243
243
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
244
244
  auto userData = view.UserData().as<TUserData>();
@@ -252,7 +252,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
252
252
  userData->HandleCommand(view, args);
253
253
  });
254
254
 
255
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::MountChildComponentView) {
255
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::MountChildComponentView) {
256
256
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
257
257
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
258
258
  auto userData = view.UserData().as<TUserData>();
@@ -260,7 +260,7 @@ void RegisterAndroidDrawerLayoutNativeComponent(
260
260
  });
261
261
  }
262
262
 
263
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::UnmountChildComponentView) {
263
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidDrawerLayout<TUserData>::UnmountChildComponentView) {
264
264
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
265
265
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
266
266
  auto userData = view.UserData().as<TUserData>();
@@ -270,13 +270,13 @@ void RegisterAndroidDrawerLayoutNativeComponent(
270
270
 
271
271
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
272
272
  auto userData = winrt::make_self<TUserData>();
273
- if constexpr (&TUserData::Initialize != &BaseAndroidDrawerLayout<TUserData>::Initialize) {
273
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidDrawerLayout<TUserData>::Initialize) {
274
274
  userData->Initialize(view);
275
275
  }
276
276
  view.UserData(*userData);
277
277
  });
278
278
 
279
- if constexpr (&TUserData::CreateVisual != &BaseAndroidDrawerLayout<TUserData>::CreateVisual) {
279
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidDrawerLayout<TUserData>::CreateVisual) {
280
280
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
281
281
  auto userData = view.UserData().as<TUserData>();
282
282
  return userData->CreateVisual(view);
@@ -141,7 +141,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
141
141
  userData->UpdateEventEmitter(std::make_shared<AndroidHorizontalScrollContentViewEventEmitter>(eventEmitter));
142
142
  });
143
143
 
144
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidHorizontalScrollContentView<TUserData>::FinalizeUpdate) {
144
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidHorizontalScrollContentView<TUserData>::FinalizeUpdate) {
145
145
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
146
146
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
147
147
  auto userData = view.UserData().as<TUserData>();
@@ -149,7 +149,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
149
149
  });
150
150
  }
151
151
 
152
- if constexpr (&TUserData::UpdateState != &BaseAndroidHorizontalScrollContentView<TUserData>::UpdateState) {
152
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidHorizontalScrollContentView<TUserData>::UpdateState) {
153
153
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
154
154
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
155
155
  auto userData = view.UserData().as<TUserData>();
@@ -157,7 +157,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
157
157
  });
158
158
  }
159
159
 
160
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::MountChildComponentView) {
160
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::MountChildComponentView) {
161
161
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
162
162
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
163
163
  auto userData = view.UserData().as<TUserData>();
@@ -165,7 +165,7 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
165
165
  });
166
166
  }
167
167
 
168
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::UnmountChildComponentView) {
168
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidHorizontalScrollContentView<TUserData>::UnmountChildComponentView) {
169
169
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
170
170
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
171
171
  auto userData = view.UserData().as<TUserData>();
@@ -175,13 +175,13 @@ void RegisterAndroidHorizontalScrollContentViewNativeComponent(
175
175
 
176
176
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
177
177
  auto userData = winrt::make_self<TUserData>();
178
- if constexpr (&TUserData::Initialize != &BaseAndroidHorizontalScrollContentView<TUserData>::Initialize) {
178
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidHorizontalScrollContentView<TUserData>::Initialize) {
179
179
  userData->Initialize(view);
180
180
  }
181
181
  view.UserData(*userData);
182
182
  });
183
183
 
184
- if constexpr (&TUserData::CreateVisual != &BaseAndroidHorizontalScrollContentView<TUserData>::CreateVisual) {
184
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidHorizontalScrollContentView<TUserData>::CreateVisual) {
185
185
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
186
186
  auto userData = view.UserData().as<TUserData>();
187
187
  return userData->CreateVisual(view);
@@ -165,7 +165,7 @@ void RegisterAndroidProgressBarNativeComponent(
165
165
  userData->UpdateEventEmitter(std::make_shared<AndroidProgressBarEventEmitter>(eventEmitter));
166
166
  });
167
167
 
168
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidProgressBar<TUserData>::FinalizeUpdate) {
168
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidProgressBar<TUserData>::FinalizeUpdate) {
169
169
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
170
170
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
171
171
  auto userData = view.UserData().as<TUserData>();
@@ -173,7 +173,7 @@ void RegisterAndroidProgressBarNativeComponent(
173
173
  });
174
174
  }
175
175
 
176
- if constexpr (&TUserData::UpdateState != &BaseAndroidProgressBar<TUserData>::UpdateState) {
176
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidProgressBar<TUserData>::UpdateState) {
177
177
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
178
178
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
179
179
  auto userData = view.UserData().as<TUserData>();
@@ -181,7 +181,7 @@ void RegisterAndroidProgressBarNativeComponent(
181
181
  });
182
182
  }
183
183
 
184
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidProgressBar<TUserData>::MountChildComponentView) {
184
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidProgressBar<TUserData>::MountChildComponentView) {
185
185
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
186
186
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
187
187
  auto userData = view.UserData().as<TUserData>();
@@ -189,7 +189,7 @@ void RegisterAndroidProgressBarNativeComponent(
189
189
  });
190
190
  }
191
191
 
192
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidProgressBar<TUserData>::UnmountChildComponentView) {
192
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidProgressBar<TUserData>::UnmountChildComponentView) {
193
193
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
194
194
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
195
195
  auto userData = view.UserData().as<TUserData>();
@@ -199,13 +199,13 @@ void RegisterAndroidProgressBarNativeComponent(
199
199
 
200
200
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
201
201
  auto userData = winrt::make_self<TUserData>();
202
- if constexpr (&TUserData::Initialize != &BaseAndroidProgressBar<TUserData>::Initialize) {
202
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidProgressBar<TUserData>::Initialize) {
203
203
  userData->Initialize(view);
204
204
  }
205
205
  view.UserData(*userData);
206
206
  });
207
207
 
208
- if constexpr (&TUserData::CreateVisual != &BaseAndroidProgressBar<TUserData>::CreateVisual) {
208
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidProgressBar<TUserData>::CreateVisual) {
209
209
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
210
210
  auto userData = view.UserData().as<TUserData>();
211
211
  return userData->CreateVisual(view);
@@ -185,7 +185,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
185
185
  userData->UpdateEventEmitter(std::make_shared<AndroidSwipeRefreshLayoutEventEmitter>(eventEmitter));
186
186
  });
187
187
 
188
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidSwipeRefreshLayout<TUserData>::FinalizeUpdate) {
188
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidSwipeRefreshLayout<TUserData>::FinalizeUpdate) {
189
189
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
190
190
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
191
191
  auto userData = view.UserData().as<TUserData>();
@@ -193,7 +193,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
193
193
  });
194
194
  }
195
195
 
196
- if constexpr (&TUserData::UpdateState != &BaseAndroidSwipeRefreshLayout<TUserData>::UpdateState) {
196
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidSwipeRefreshLayout<TUserData>::UpdateState) {
197
197
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
198
198
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
199
199
  auto userData = view.UserData().as<TUserData>();
@@ -207,7 +207,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
207
207
  userData->HandleCommand(view, args);
208
208
  });
209
209
 
210
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::MountChildComponentView) {
210
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::MountChildComponentView) {
211
211
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
212
212
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
213
213
  auto userData = view.UserData().as<TUserData>();
@@ -215,7 +215,7 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
215
215
  });
216
216
  }
217
217
 
218
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::UnmountChildComponentView) {
218
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidSwipeRefreshLayout<TUserData>::UnmountChildComponentView) {
219
219
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
220
220
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
221
221
  auto userData = view.UserData().as<TUserData>();
@@ -225,13 +225,13 @@ void RegisterAndroidSwipeRefreshLayoutNativeComponent(
225
225
 
226
226
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
227
227
  auto userData = winrt::make_self<TUserData>();
228
- if constexpr (&TUserData::Initialize != &BaseAndroidSwipeRefreshLayout<TUserData>::Initialize) {
228
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidSwipeRefreshLayout<TUserData>::Initialize) {
229
229
  userData->Initialize(view);
230
230
  }
231
231
  view.UserData(*userData);
232
232
  });
233
233
 
234
- if constexpr (&TUserData::CreateVisual != &BaseAndroidSwipeRefreshLayout<TUserData>::CreateVisual) {
234
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidSwipeRefreshLayout<TUserData>::CreateVisual) {
235
235
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
236
236
  auto userData = view.UserData().as<TUserData>();
237
237
  return userData->CreateVisual(view);
@@ -202,7 +202,7 @@ void RegisterAndroidSwitchNativeComponent(
202
202
  userData->UpdateEventEmitter(std::make_shared<AndroidSwitchEventEmitter>(eventEmitter));
203
203
  });
204
204
 
205
- if constexpr (&TUserData::FinalizeUpdate != &BaseAndroidSwitch<TUserData>::FinalizeUpdate) {
205
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseAndroidSwitch<TUserData>::FinalizeUpdate) {
206
206
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
207
207
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
208
208
  auto userData = view.UserData().as<TUserData>();
@@ -210,7 +210,7 @@ void RegisterAndroidSwitchNativeComponent(
210
210
  });
211
211
  }
212
212
 
213
- if constexpr (&TUserData::UpdateState != &BaseAndroidSwitch<TUserData>::UpdateState) {
213
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseAndroidSwitch<TUserData>::UpdateState) {
214
214
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
215
215
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
216
216
  auto userData = view.UserData().as<TUserData>();
@@ -224,7 +224,7 @@ void RegisterAndroidSwitchNativeComponent(
224
224
  userData->HandleCommand(view, args);
225
225
  });
226
226
 
227
- if constexpr (&TUserData::MountChildComponentView != &BaseAndroidSwitch<TUserData>::MountChildComponentView) {
227
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseAndroidSwitch<TUserData>::MountChildComponentView) {
228
228
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
229
229
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
230
230
  auto userData = view.UserData().as<TUserData>();
@@ -232,7 +232,7 @@ void RegisterAndroidSwitchNativeComponent(
232
232
  });
233
233
  }
234
234
 
235
- if constexpr (&TUserData::UnmountChildComponentView != &BaseAndroidSwitch<TUserData>::UnmountChildComponentView) {
235
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseAndroidSwitch<TUserData>::UnmountChildComponentView) {
236
236
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
237
237
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
238
238
  auto userData = view.UserData().as<TUserData>();
@@ -242,13 +242,13 @@ void RegisterAndroidSwitchNativeComponent(
242
242
 
243
243
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
244
244
  auto userData = winrt::make_self<TUserData>();
245
- if constexpr (&TUserData::Initialize != &BaseAndroidSwitch<TUserData>::Initialize) {
245
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseAndroidSwitch<TUserData>::Initialize) {
246
246
  userData->Initialize(view);
247
247
  }
248
248
  view.UserData(*userData);
249
249
  });
250
250
 
251
- if constexpr (&TUserData::CreateVisual != &BaseAndroidSwitch<TUserData>::CreateVisual) {
251
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseAndroidSwitch<TUserData>::CreateVisual) {
252
252
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
253
253
  auto userData = view.UserData().as<TUserData>();
254
254
  return userData->CreateVisual(view);
@@ -169,7 +169,7 @@ void RegisterDebuggingOverlayNativeComponent(
169
169
  userData->UpdateEventEmitter(std::make_shared<DebuggingOverlayEventEmitter>(eventEmitter));
170
170
  });
171
171
 
172
- if constexpr (&TUserData::FinalizeUpdate != &BaseDebuggingOverlay<TUserData>::FinalizeUpdate) {
172
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseDebuggingOverlay<TUserData>::FinalizeUpdate) {
173
173
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
174
174
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
175
175
  auto userData = view.UserData().as<TUserData>();
@@ -177,7 +177,7 @@ void RegisterDebuggingOverlayNativeComponent(
177
177
  });
178
178
  }
179
179
 
180
- if constexpr (&TUserData::UpdateState != &BaseDebuggingOverlay<TUserData>::UpdateState) {
180
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseDebuggingOverlay<TUserData>::UpdateState) {
181
181
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
182
182
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
183
183
  auto userData = view.UserData().as<TUserData>();
@@ -191,7 +191,7 @@ void RegisterDebuggingOverlayNativeComponent(
191
191
  userData->HandleCommand(view, args);
192
192
  });
193
193
 
194
- if constexpr (&TUserData::MountChildComponentView != &BaseDebuggingOverlay<TUserData>::MountChildComponentView) {
194
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseDebuggingOverlay<TUserData>::MountChildComponentView) {
195
195
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
196
196
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
197
197
  auto userData = view.UserData().as<TUserData>();
@@ -199,7 +199,7 @@ void RegisterDebuggingOverlayNativeComponent(
199
199
  });
200
200
  }
201
201
 
202
- if constexpr (&TUserData::UnmountChildComponentView != &BaseDebuggingOverlay<TUserData>::UnmountChildComponentView) {
202
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseDebuggingOverlay<TUserData>::UnmountChildComponentView) {
203
203
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
204
204
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
205
205
  auto userData = view.UserData().as<TUserData>();
@@ -209,13 +209,13 @@ void RegisterDebuggingOverlayNativeComponent(
209
209
 
210
210
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
211
211
  auto userData = winrt::make_self<TUserData>();
212
- if constexpr (&TUserData::Initialize != &BaseDebuggingOverlay<TUserData>::Initialize) {
212
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseDebuggingOverlay<TUserData>::Initialize) {
213
213
  userData->Initialize(view);
214
214
  }
215
215
  view.UserData(*userData);
216
216
  });
217
217
 
218
- if constexpr (&TUserData::CreateVisual != &BaseDebuggingOverlay<TUserData>::CreateVisual) {
218
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseDebuggingOverlay<TUserData>::CreateVisual) {
219
219
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
220
220
  auto userData = view.UserData().as<TUserData>();
221
221
  return userData->CreateVisual(view);
@@ -141,7 +141,7 @@ void RegisterInputAccessoryNativeComponent(
141
141
  userData->UpdateEventEmitter(std::make_shared<InputAccessoryEventEmitter>(eventEmitter));
142
142
  });
143
143
 
144
- if constexpr (&TUserData::FinalizeUpdate != &BaseInputAccessory<TUserData>::FinalizeUpdate) {
144
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseInputAccessory<TUserData>::FinalizeUpdate) {
145
145
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
146
146
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
147
147
  auto userData = view.UserData().as<TUserData>();
@@ -149,7 +149,7 @@ void RegisterInputAccessoryNativeComponent(
149
149
  });
150
150
  }
151
151
 
152
- if constexpr (&TUserData::UpdateState != &BaseInputAccessory<TUserData>::UpdateState) {
152
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseInputAccessory<TUserData>::UpdateState) {
153
153
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
154
154
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
155
155
  auto userData = view.UserData().as<TUserData>();
@@ -157,7 +157,7 @@ void RegisterInputAccessoryNativeComponent(
157
157
  });
158
158
  }
159
159
 
160
- if constexpr (&TUserData::MountChildComponentView != &BaseInputAccessory<TUserData>::MountChildComponentView) {
160
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseInputAccessory<TUserData>::MountChildComponentView) {
161
161
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
162
162
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
163
163
  auto userData = view.UserData().as<TUserData>();
@@ -165,7 +165,7 @@ void RegisterInputAccessoryNativeComponent(
165
165
  });
166
166
  }
167
167
 
168
- if constexpr (&TUserData::UnmountChildComponentView != &BaseInputAccessory<TUserData>::UnmountChildComponentView) {
168
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseInputAccessory<TUserData>::UnmountChildComponentView) {
169
169
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
170
170
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
171
171
  auto userData = view.UserData().as<TUserData>();
@@ -175,13 +175,13 @@ void RegisterInputAccessoryNativeComponent(
175
175
 
176
176
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
177
177
  auto userData = winrt::make_self<TUserData>();
178
- if constexpr (&TUserData::Initialize != &BaseInputAccessory<TUserData>::Initialize) {
178
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseInputAccessory<TUserData>::Initialize) {
179
179
  userData->Initialize(view);
180
180
  }
181
181
  view.UserData(*userData);
182
182
  });
183
183
 
184
- if constexpr (&TUserData::CreateVisual != &BaseInputAccessory<TUserData>::CreateVisual) {
184
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseInputAccessory<TUserData>::CreateVisual) {
185
185
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
186
186
  auto userData = view.UserData().as<TUserData>();
187
187
  return userData->CreateVisual(view);
@@ -34,7 +34,8 @@ struct ModalHostViewProps : winrt::implements<ModalHostViewProps, winrt::Microso
34
34
  visible = cloneFromProps->visible;
35
35
  animated = cloneFromProps->animated;
36
36
  supportedOrientations = cloneFromProps->supportedOrientations;
37
- identifier = cloneFromProps->identifier;
37
+ identifier = cloneFromProps->identifier;
38
+ title = cloneFromProps->title;
38
39
  }
39
40
  }
40
41
 
@@ -72,6 +73,9 @@ struct ModalHostViewProps : winrt::implements<ModalHostViewProps, winrt::Microso
72
73
  REACT_FIELD(identifier)
73
74
  std::optional<int32_t> identifier{};
74
75
 
76
+ REACT_FIELD(title)
77
+ std::optional<std::string> title;
78
+
75
79
  const winrt::Microsoft::ReactNative::ViewProps ViewProps;
76
80
  };
77
81
 
@@ -224,7 +228,7 @@ void RegisterModalHostViewNativeComponent(
224
228
  userData->UpdateEventEmitter(std::make_shared<ModalHostViewEventEmitter>(eventEmitter));
225
229
  });
226
230
 
227
- if constexpr (&TUserData::FinalizeUpdate != &BaseModalHostView<TUserData>::FinalizeUpdate) {
231
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseModalHostView<TUserData>::FinalizeUpdate) {
228
232
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
229
233
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
230
234
  auto userData = view.UserData().as<TUserData>();
@@ -232,7 +236,7 @@ void RegisterModalHostViewNativeComponent(
232
236
  });
233
237
  }
234
238
 
235
- if constexpr (&TUserData::UpdateState != &BaseModalHostView<TUserData>::UpdateState) {
239
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseModalHostView<TUserData>::UpdateState) {
236
240
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
237
241
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
238
242
  auto userData = view.UserData().as<TUserData>();
@@ -240,7 +244,7 @@ void RegisterModalHostViewNativeComponent(
240
244
  });
241
245
  }
242
246
 
243
- if constexpr (&TUserData::MountChildComponentView != &BaseModalHostView<TUserData>::MountChildComponentView) {
247
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseModalHostView<TUserData>::MountChildComponentView) {
244
248
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
245
249
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
246
250
  auto userData = view.UserData().as<TUserData>();
@@ -248,7 +252,7 @@ void RegisterModalHostViewNativeComponent(
248
252
  });
249
253
  }
250
254
 
251
- if constexpr (&TUserData::UnmountChildComponentView != &BaseModalHostView<TUserData>::UnmountChildComponentView) {
255
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseModalHostView<TUserData>::UnmountChildComponentView) {
252
256
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
253
257
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
254
258
  auto userData = view.UserData().as<TUserData>();
@@ -258,13 +262,13 @@ void RegisterModalHostViewNativeComponent(
258
262
 
259
263
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
260
264
  auto userData = winrt::make_self<TUserData>();
261
- if constexpr (&TUserData::Initialize != &BaseModalHostView<TUserData>::Initialize) {
265
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseModalHostView<TUserData>::Initialize) {
262
266
  userData->Initialize(view);
263
267
  }
264
268
  view.UserData(*userData);
265
269
  });
266
270
 
267
- if constexpr (&TUserData::CreateVisual != &BaseModalHostView<TUserData>::CreateVisual) {
271
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseModalHostView<TUserData>::CreateVisual) {
268
272
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
269
273
  auto userData = view.UserData().as<TUserData>();
270
274
  return userData->CreateVisual(view);
@@ -122,7 +122,8 @@ ModalHostViewProps::ModalHostViewProps(
122
122
  visible(convertRawProp(context, rawProps, "visible", sourceProps.visible, {false})),
123
123
  animated(convertRawProp(context, rawProps, "animated", sourceProps.animated, {false})),
124
124
  supportedOrientations(convertRawProp(context, rawProps, "supportedOrientations", ModalHostViewSupportedOrientationsMaskWrapped{ .value = sourceProps.supportedOrientations }, {static_cast<ModalHostViewSupportedOrientationsMask>(ModalHostViewSupportedOrientations::Portrait)}).value),
125
- identifier(convertRawProp(context, rawProps, "identifier", sourceProps.identifier, {0}))
125
+ identifier(convertRawProp(context, rawProps, "identifier", sourceProps.identifier, {0})),
126
+ title(convertRawProp(context, rawProps, "title", sourceProps.title, {}))
126
127
  {}
127
128
  SafeAreaViewProps::SafeAreaViewProps(
128
129
  const PropsParserContext &context,
@@ -355,6 +355,7 @@ class ModalHostViewProps final : public ViewProps {
355
355
  bool animated{false};
356
356
  ModalHostViewSupportedOrientationsMask supportedOrientations{static_cast<ModalHostViewSupportedOrientationsMask>(ModalHostViewSupportedOrientations::Portrait)};
357
357
  int identifier{0};
358
+ std::string title{};
358
359
  };
359
360
 
360
361
  class SafeAreaViewProps final : public ViewProps {
@@ -181,7 +181,7 @@ void RegisterPullToRefreshViewNativeComponent(
181
181
  userData->UpdateEventEmitter(std::make_shared<PullToRefreshViewEventEmitter>(eventEmitter));
182
182
  });
183
183
 
184
- if constexpr (&TUserData::FinalizeUpdate != &BasePullToRefreshView<TUserData>::FinalizeUpdate) {
184
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BasePullToRefreshView<TUserData>::FinalizeUpdate) {
185
185
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
186
186
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
187
187
  auto userData = view.UserData().as<TUserData>();
@@ -189,7 +189,7 @@ void RegisterPullToRefreshViewNativeComponent(
189
189
  });
190
190
  }
191
191
 
192
- if constexpr (&TUserData::UpdateState != &BasePullToRefreshView<TUserData>::UpdateState) {
192
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BasePullToRefreshView<TUserData>::UpdateState) {
193
193
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
194
194
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
195
195
  auto userData = view.UserData().as<TUserData>();
@@ -203,7 +203,7 @@ void RegisterPullToRefreshViewNativeComponent(
203
203
  userData->HandleCommand(view, args);
204
204
  });
205
205
 
206
- if constexpr (&TUserData::MountChildComponentView != &BasePullToRefreshView<TUserData>::MountChildComponentView) {
206
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BasePullToRefreshView<TUserData>::MountChildComponentView) {
207
207
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
208
208
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
209
209
  auto userData = view.UserData().as<TUserData>();
@@ -211,7 +211,7 @@ void RegisterPullToRefreshViewNativeComponent(
211
211
  });
212
212
  }
213
213
 
214
- if constexpr (&TUserData::UnmountChildComponentView != &BasePullToRefreshView<TUserData>::UnmountChildComponentView) {
214
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BasePullToRefreshView<TUserData>::UnmountChildComponentView) {
215
215
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
216
216
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
217
217
  auto userData = view.UserData().as<TUserData>();
@@ -221,13 +221,13 @@ void RegisterPullToRefreshViewNativeComponent(
221
221
 
222
222
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
223
223
  auto userData = winrt::make_self<TUserData>();
224
- if constexpr (&TUserData::Initialize != &BasePullToRefreshView<TUserData>::Initialize) {
224
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BasePullToRefreshView<TUserData>::Initialize) {
225
225
  userData->Initialize(view);
226
226
  }
227
227
  view.UserData(*userData);
228
228
  });
229
229
 
230
- if constexpr (&TUserData::CreateVisual != &BasePullToRefreshView<TUserData>::CreateVisual) {
230
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BasePullToRefreshView<TUserData>::CreateVisual) {
231
231
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
232
232
  auto userData = view.UserData().as<TUserData>();
233
233
  return userData->CreateVisual(view);
@@ -138,7 +138,7 @@ void RegisterSafeAreaViewNativeComponent(
138
138
  userData->UpdateEventEmitter(std::make_shared<SafeAreaViewEventEmitter>(eventEmitter));
139
139
  });
140
140
 
141
- if constexpr (&TUserData::FinalizeUpdate != &BaseSafeAreaView<TUserData>::FinalizeUpdate) {
141
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::FinalizeUpdate != &BaseSafeAreaView<TUserData>::FinalizeUpdate) {
142
142
  builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
143
143
  winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
144
144
  auto userData = view.UserData().as<TUserData>();
@@ -146,7 +146,7 @@ void RegisterSafeAreaViewNativeComponent(
146
146
  });
147
147
  }
148
148
 
149
- if constexpr (&TUserData::UpdateState != &BaseSafeAreaView<TUserData>::UpdateState) {
149
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UpdateState != &BaseSafeAreaView<TUserData>::UpdateState) {
150
150
  builder.SetUpdateStateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
151
151
  const winrt::Microsoft::ReactNative::IComponentState &newState) noexcept {
152
152
  auto userData = view.UserData().as<TUserData>();
@@ -154,7 +154,7 @@ void RegisterSafeAreaViewNativeComponent(
154
154
  });
155
155
  }
156
156
 
157
- if constexpr (&TUserData::MountChildComponentView != &BaseSafeAreaView<TUserData>::MountChildComponentView) {
157
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::MountChildComponentView != &BaseSafeAreaView<TUserData>::MountChildComponentView) {
158
158
  builder.SetMountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
159
159
  const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
160
160
  auto userData = view.UserData().as<TUserData>();
@@ -162,7 +162,7 @@ void RegisterSafeAreaViewNativeComponent(
162
162
  });
163
163
  }
164
164
 
165
- if constexpr (&TUserData::UnmountChildComponentView != &BaseSafeAreaView<TUserData>::UnmountChildComponentView) {
165
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::UnmountChildComponentView != &BaseSafeAreaView<TUserData>::UnmountChildComponentView) {
166
166
  builder.SetUnmountChildComponentViewHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
167
167
  const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
168
168
  auto userData = view.UserData().as<TUserData>();
@@ -172,13 +172,13 @@ void RegisterSafeAreaViewNativeComponent(
172
172
 
173
173
  compBuilder.SetViewComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
174
174
  auto userData = winrt::make_self<TUserData>();
175
- if constexpr (&TUserData::Initialize != &BaseSafeAreaView<TUserData>::Initialize) {
175
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::Initialize != &BaseSafeAreaView<TUserData>::Initialize) {
176
176
  userData->Initialize(view);
177
177
  }
178
178
  view.UserData(*userData);
179
179
  });
180
180
 
181
- if constexpr (&TUserData::CreateVisual != &BaseSafeAreaView<TUserData>::CreateVisual) {
181
+ if CONSTEXPR_SUPPORTED_ON_VIRTUAL_FN_ADDRESS (&TUserData::CreateVisual != &BaseSafeAreaView<TUserData>::CreateVisual) {
182
182
  compBuilder.SetCreateVisualHandler([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
183
183
  auto userData = view.UserData().as<TUserData>();
184
184
  return userData->CreateVisual(view);