react-native-windows 0.74.0 → 0.74.1
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.
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Microsoft.ReactNative/CompositionRootView.idl +4 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +188 -141
- package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.cpp +41 -34
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView.h +5 -1
- package/Microsoft.ReactNative/Fabric/Composition/CompositionRootView_emptyimpl.cpp +7 -0
- package/Microsoft.ReactNative/Fabric/Composition/Theme.cpp +28 -10
- package/Microsoft.ReactNative/Fabric/Composition/Theme.h +4 -3
- package/Microsoft.ReactNative/Fabric/Composition/Theme_emptyimpl.cpp +2 -6
- package/Microsoft.ReactNative/Theme.idl +1 -2
- package/Microsoft.ReactNative.Cxx/AutoDraw.h +1 -0
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/package.json +11 -11
|
@@ -95,8 +95,10 @@ namespace Microsoft.ReactNative
|
|
|
95
95
|
|
|
96
96
|
Object GetUiaProvider();
|
|
97
97
|
|
|
98
|
-
DOC_STRING("
|
|
99
|
-
Microsoft.ReactNative.Composition.
|
|
98
|
+
DOC_STRING("Provides resources used for Platform colors within this RootView")
|
|
99
|
+
Microsoft.ReactNative.Composition.ICustomResourceLoader Resources;
|
|
100
|
+
|
|
101
|
+
Microsoft.ReactNative.Composition.Theme Theme { get; };
|
|
100
102
|
|
|
101
103
|
#ifdef USE_WINUI3
|
|
102
104
|
Microsoft.UI.Content.ContentIsland Island { get; };
|
|
@@ -152,67 +152,78 @@ struct CompositionInputKeyboardSource : winrt::implements<
|
|
|
152
152
|
CompositionEventHandler::CompositionEventHandler(
|
|
153
153
|
const winrt::Microsoft::ReactNative::ReactContext &context,
|
|
154
154
|
const winrt::Microsoft::ReactNative::CompositionRootView &CompositionRootView)
|
|
155
|
-
: m_context(context) {
|
|
156
|
-
m_compRootView = CompositionRootView;
|
|
157
|
-
|
|
155
|
+
: m_context(context), m_wkRootView(CompositionRootView) {
|
|
158
156
|
#ifdef USE_WINUI3
|
|
159
|
-
if (auto island =
|
|
157
|
+
if (auto island = CompositionRootView.Island()) {
|
|
160
158
|
auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
|
|
161
159
|
|
|
162
160
|
m_pointerPressedToken =
|
|
163
161
|
pointerSource.PointerPressed([this](
|
|
164
162
|
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
165
163
|
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
166
|
-
if (
|
|
167
|
-
|
|
164
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
165
|
+
if (SurfaceId() == -1)
|
|
166
|
+
return;
|
|
168
167
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
169
|
+
args.CurrentPoint(), strongRootView.ScaleFactor());
|
|
170
|
+
onPointerPressed(pp, args.KeyModifiers());
|
|
171
|
+
}
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
m_pointerReleasedToken =
|
|
175
175
|
pointerSource.PointerReleased([this](
|
|
176
176
|
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
177
177
|
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
178
|
-
if (
|
|
179
|
-
|
|
178
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
179
|
+
if (SurfaceId() == -1)
|
|
180
|
+
return;
|
|
180
181
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
183
|
+
args.CurrentPoint(), strongRootView.ScaleFactor());
|
|
184
|
+
onPointerReleased(pp, args.KeyModifiers());
|
|
185
|
+
}
|
|
184
186
|
});
|
|
185
187
|
|
|
186
188
|
m_pointerMovedToken = pointerSource.PointerMoved([this](
|
|
187
189
|
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
188
190
|
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
189
|
-
auto
|
|
190
|
-
|
|
191
|
-
|
|
191
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
192
|
+
if (SurfaceId() == -1)
|
|
193
|
+
return;
|
|
194
|
+
|
|
195
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
196
|
+
args.CurrentPoint(), strongRootView.ScaleFactor());
|
|
197
|
+
onPointerMoved(pp, args.KeyModifiers());
|
|
198
|
+
}
|
|
192
199
|
});
|
|
193
200
|
|
|
194
201
|
m_pointerCaptureLostToken =
|
|
195
202
|
pointerSource.PointerCaptureLost([this](
|
|
196
203
|
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
197
204
|
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
198
|
-
if (
|
|
199
|
-
|
|
205
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
206
|
+
if (SurfaceId() == -1)
|
|
207
|
+
return;
|
|
200
208
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
209
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
210
|
+
args.CurrentPoint(), strongRootView.ScaleFactor());
|
|
211
|
+
onPointerCaptureLost(pp, args.KeyModifiers());
|
|
212
|
+
}
|
|
204
213
|
});
|
|
205
214
|
|
|
206
215
|
m_pointerWheelChangedToken =
|
|
207
216
|
pointerSource.PointerWheelChanged([this](
|
|
208
217
|
winrt::Microsoft::UI::Input::InputPointerSource const &,
|
|
209
218
|
winrt::Microsoft::UI::Input::PointerEventArgs const &args) {
|
|
210
|
-
if (
|
|
211
|
-
|
|
219
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
220
|
+
if (SurfaceId() == -1)
|
|
221
|
+
return;
|
|
212
222
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
223
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
224
|
+
args.CurrentPoint(), strongRootView.ScaleFactor());
|
|
225
|
+
onPointerWheelChanged(pp, args.KeyModifiers());
|
|
226
|
+
}
|
|
216
227
|
});
|
|
217
228
|
|
|
218
229
|
auto keyboardSource = winrt::Microsoft::UI::Input::InputKeyboardSource::GetForIsland(island);
|
|
@@ -220,61 +231,71 @@ CompositionEventHandler::CompositionEventHandler(
|
|
|
220
231
|
m_keyDownToken = keyboardSource.KeyDown([this](
|
|
221
232
|
winrt::Microsoft::UI::Input::InputKeyboardSource const &source,
|
|
222
233
|
winrt::Microsoft::UI::Input::KeyEventArgs const &args) {
|
|
223
|
-
if (
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
235
|
+
if (SurfaceId() == -1)
|
|
236
|
+
return;
|
|
237
|
+
|
|
238
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
239
|
+
auto keyArgs =
|
|
240
|
+
winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
|
|
241
|
+
focusedComponent
|
|
242
|
+
? focusedComponent.Tag()
|
|
243
|
+
: static_cast<facebook::react::Tag>(
|
|
244
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(
|
|
245
|
+
strongRootView)
|
|
246
|
+
->GetTag()),
|
|
247
|
+
args);
|
|
248
|
+
auto keyboardSource = winrt::make<CompositionInputKeyboardSource>(source);
|
|
249
|
+
onKeyDown(keyboardSource, keyArgs);
|
|
250
|
+
winrt::get_self<CompositionInputKeyboardSource>(keyboardSource)->Disconnect();
|
|
251
|
+
}
|
|
237
252
|
});
|
|
238
253
|
|
|
239
254
|
m_keyUpToken = keyboardSource.KeyUp([this](
|
|
240
255
|
winrt::Microsoft::UI::Input::InputKeyboardSource const &source,
|
|
241
256
|
winrt::Microsoft::UI::Input::KeyEventArgs const &args) {
|
|
242
|
-
if (
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
257
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
258
|
+
if (SurfaceId() == -1)
|
|
259
|
+
return;
|
|
260
|
+
|
|
261
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
262
|
+
auto keyArgs =
|
|
263
|
+
winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
|
|
264
|
+
focusedComponent
|
|
265
|
+
? focusedComponent.Tag()
|
|
266
|
+
: static_cast<facebook::react::Tag>(
|
|
267
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(
|
|
268
|
+
strongRootView)
|
|
269
|
+
->GetTag()),
|
|
270
|
+
args);
|
|
271
|
+
auto keyboardSource = winrt::make<CompositionInputKeyboardSource>(source);
|
|
272
|
+
onKeyUp(keyboardSource, keyArgs);
|
|
273
|
+
winrt::get_self<CompositionInputKeyboardSource>(keyboardSource)->Disconnect();
|
|
274
|
+
}
|
|
256
275
|
});
|
|
257
276
|
|
|
258
277
|
m_characterReceivedToken =
|
|
259
278
|
keyboardSource.CharacterReceived([this](
|
|
260
279
|
winrt::Microsoft::UI::Input::InputKeyboardSource const &source,
|
|
261
280
|
winrt::Microsoft::UI::Input::CharacterReceivedEventArgs const &args) {
|
|
262
|
-
if (
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
281
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
282
|
+
if (SurfaceId() == -1)
|
|
283
|
+
return;
|
|
284
|
+
|
|
285
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
286
|
+
auto charArgs = winrt::make<
|
|
287
|
+
winrt::Microsoft::ReactNative::Composition::Input::implementation::CharacterReceivedRoutedEventArgs>(
|
|
288
|
+
focusedComponent
|
|
289
|
+
? focusedComponent.Tag()
|
|
290
|
+
: static_cast<facebook::react::Tag>(
|
|
291
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(
|
|
292
|
+
strongRootView)
|
|
293
|
+
->GetTag()),
|
|
294
|
+
args);
|
|
295
|
+
auto keyboardSource = winrt::make<CompositionInputKeyboardSource>(source);
|
|
296
|
+
onCharacterReceived(keyboardSource, charArgs);
|
|
297
|
+
winrt::get_self<CompositionInputKeyboardSource>(keyboardSource)->Disconnect();
|
|
298
|
+
}
|
|
278
299
|
});
|
|
279
300
|
}
|
|
280
301
|
#endif
|
|
@@ -282,24 +303,29 @@ CompositionEventHandler::CompositionEventHandler(
|
|
|
282
303
|
|
|
283
304
|
CompositionEventHandler::~CompositionEventHandler() {
|
|
284
305
|
#ifdef USE_WINUI3
|
|
285
|
-
if (auto
|
|
286
|
-
auto
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
306
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
307
|
+
if (auto island = strongRootView.Island()) {
|
|
308
|
+
auto pointerSource = winrt::Microsoft::UI::Input::InputPointerSource::GetForIsland(island);
|
|
309
|
+
pointerSource.PointerPressed(m_pointerPressedToken);
|
|
310
|
+
pointerSource.PointerReleased(m_pointerReleasedToken);
|
|
311
|
+
pointerSource.PointerMoved(m_pointerMovedToken);
|
|
312
|
+
pointerSource.PointerCaptureLost(m_pointerCaptureLostToken);
|
|
313
|
+
pointerSource.PointerWheelChanged(m_pointerWheelChangedToken);
|
|
314
|
+
auto keyboardSource = winrt::Microsoft::UI::Input::InputKeyboardSource::GetForIsland(island);
|
|
315
|
+
keyboardSource.KeyDown(m_keyDownToken);
|
|
316
|
+
keyboardSource.KeyUp(m_keyUpToken);
|
|
317
|
+
keyboardSource.CharacterReceived(m_characterReceivedToken);
|
|
318
|
+
}
|
|
296
319
|
}
|
|
297
320
|
#endif
|
|
298
321
|
}
|
|
299
322
|
|
|
300
323
|
facebook::react::SurfaceId CompositionEventHandler::SurfaceId() const noexcept {
|
|
301
|
-
|
|
302
|
-
|
|
324
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
325
|
+
return static_cast<facebook::react::SurfaceId>(
|
|
326
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(strongRootView)->GetTag());
|
|
327
|
+
}
|
|
328
|
+
return -1;
|
|
303
329
|
}
|
|
304
330
|
|
|
305
331
|
winrt::Microsoft::ReactNative::Composition::implementation::RootComponentView &
|
|
@@ -369,86 +395,104 @@ winrt::Windows::System::VirtualKeyModifiers GetKeyModifiers(uint64_t wParam) {
|
|
|
369
395
|
int64_t CompositionEventHandler::SendMessage(HWND hwnd, uint32_t msg, uint64_t wParam, int64_t lParam) noexcept {
|
|
370
396
|
switch (msg) {
|
|
371
397
|
case WM_LBUTTONDOWN: {
|
|
372
|
-
auto
|
|
373
|
-
|
|
374
|
-
|
|
398
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
399
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
400
|
+
hwnd, msg, wParam, lParam, strongRootView.ScaleFactor());
|
|
401
|
+
onPointerPressed(pp, GetKeyModifiers(wParam));
|
|
402
|
+
}
|
|
375
403
|
return 0;
|
|
376
404
|
}
|
|
377
405
|
case WM_POINTERDOWN: {
|
|
378
|
-
auto
|
|
379
|
-
|
|
380
|
-
|
|
406
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
407
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
408
|
+
hwnd, msg, wParam, lParam, strongRootView.ScaleFactor());
|
|
409
|
+
onPointerPressed(pp, GetKeyModifiers(wParam));
|
|
410
|
+
}
|
|
381
411
|
return 0;
|
|
382
412
|
}
|
|
383
413
|
case WM_LBUTTONUP: {
|
|
384
|
-
auto
|
|
385
|
-
|
|
386
|
-
|
|
414
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
415
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
416
|
+
hwnd, msg, wParam, lParam, strongRootView.ScaleFactor());
|
|
417
|
+
onPointerReleased(pp, GetKeyModifiers(wParam));
|
|
418
|
+
}
|
|
387
419
|
return 0;
|
|
388
420
|
}
|
|
389
421
|
case WM_POINTERUP: {
|
|
390
|
-
auto
|
|
391
|
-
|
|
392
|
-
|
|
422
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
423
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
424
|
+
hwnd, msg, wParam, lParam, strongRootView.ScaleFactor());
|
|
425
|
+
onPointerReleased(pp, GetKeyModifiers(wParam));
|
|
426
|
+
}
|
|
393
427
|
return 0;
|
|
394
428
|
}
|
|
395
429
|
case WM_MOUSEMOVE: {
|
|
396
|
-
auto
|
|
397
|
-
|
|
398
|
-
|
|
430
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
431
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
432
|
+
hwnd, msg, wParam, lParam, strongRootView.ScaleFactor());
|
|
433
|
+
onPointerMoved(pp, GetKeyModifiers(wParam));
|
|
434
|
+
}
|
|
399
435
|
return 0;
|
|
400
436
|
}
|
|
401
437
|
case WM_CAPTURECHANGED: {
|
|
402
|
-
auto
|
|
403
|
-
|
|
404
|
-
|
|
438
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
439
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
440
|
+
hwnd, msg, wParam, lParam, strongRootView.ScaleFactor());
|
|
441
|
+
onPointerCaptureLost(pp, winrt::Windows::System::VirtualKeyModifiers::None);
|
|
442
|
+
}
|
|
405
443
|
return 0;
|
|
406
444
|
}
|
|
407
445
|
case WM_MOUSEWHEEL: {
|
|
408
|
-
auto
|
|
409
|
-
|
|
410
|
-
|
|
446
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
447
|
+
auto pp = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::PointerPoint>(
|
|
448
|
+
hwnd, msg, wParam, lParam, strongRootView.ScaleFactor());
|
|
449
|
+
onPointerWheelChanged(pp, GetKeyModifiers(wParam));
|
|
450
|
+
}
|
|
411
451
|
break;
|
|
412
452
|
}
|
|
413
453
|
case WM_CHAR:
|
|
414
454
|
case WM_SYSCHAR: {
|
|
415
|
-
auto
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
455
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
456
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
457
|
+
auto args = winrt::make<
|
|
458
|
+
winrt::Microsoft::ReactNative::Composition::Input::implementation::CharacterReceivedRoutedEventArgs>(
|
|
459
|
+
focusedComponent ? focusedComponent.Tag()
|
|
460
|
+
: static_cast<facebook::react::Tag>(
|
|
461
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(
|
|
462
|
+
strongRootView)
|
|
463
|
+
->GetTag()),
|
|
464
|
+
msg,
|
|
465
|
+
wParam,
|
|
466
|
+
lParam);
|
|
467
|
+
auto keyboardSource = winrt::make<CompositionKeyboardSource>(this);
|
|
468
|
+
onCharacterReceived(keyboardSource, args);
|
|
469
|
+
winrt::get_self<CompositionKeyboardSource>(keyboardSource)->Disconnect();
|
|
470
|
+
}
|
|
429
471
|
break;
|
|
430
472
|
}
|
|
431
473
|
case WM_KEYDOWN:
|
|
432
474
|
case WM_KEYUP:
|
|
433
475
|
case WM_SYSKEYDOWN:
|
|
434
476
|
case WM_SYSKEYUP: {
|
|
435
|
-
auto
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
477
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
478
|
+
auto focusedComponent = RootComponentView().GetFocusedComponent();
|
|
479
|
+
auto args = winrt::make<winrt::Microsoft::ReactNative::Composition::Input::implementation::KeyRoutedEventArgs>(
|
|
480
|
+
focusedComponent ? focusedComponent.Tag()
|
|
481
|
+
: static_cast<facebook::react::Tag>(
|
|
482
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::CompositionRootView>(
|
|
483
|
+
strongRootView)
|
|
484
|
+
->GetTag()),
|
|
485
|
+
msg,
|
|
486
|
+
wParam,
|
|
487
|
+
lParam);
|
|
488
|
+
auto keyboardSource = winrt::make<CompositionKeyboardSource>(this);
|
|
489
|
+
if (msg == WM_KEYDOWN || msg == WM_SYSKEYDOWN) {
|
|
490
|
+
onKeyDown(keyboardSource, args);
|
|
491
|
+
} else {
|
|
492
|
+
onKeyUp(keyboardSource, args);
|
|
493
|
+
}
|
|
494
|
+
winrt::get_self<CompositionKeyboardSource>(keyboardSource)->Disconnect();
|
|
450
495
|
}
|
|
451
|
-
winrt::get_self<CompositionKeyboardSource>(keyboardSource)->Disconnect();
|
|
452
496
|
break;
|
|
453
497
|
}
|
|
454
498
|
}
|
|
@@ -571,9 +615,9 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
571
615
|
|
|
572
616
|
// We only want to emit events to JS if there is a view that is currently listening to said event
|
|
573
617
|
// so we only send those event to the JS side if the element which has been entered is itself listening,
|
|
574
|
-
// or if one of its parents is listening in case those listeners care about the capturing phase. Adding the
|
|
575
|
-
// for native to distinguish between capturing listeners and not could be an optimization to further
|
|
576
|
-
// number of events we send to JS
|
|
618
|
+
// or if one of its parents is listening in case those listeners care about the capturing phase. Adding the
|
|
619
|
+
// ability for native to distinguish between capturing listeners and not could be an optimization to further
|
|
620
|
+
// reduce the number of events we send to JS
|
|
577
621
|
bool hasParentEnterListener = false;
|
|
578
622
|
bool emittedNativeEnteredEvent = false;
|
|
579
623
|
|
|
@@ -673,7 +717,8 @@ void CompositionEventHandler::HandleIncomingPointerEvent(
|
|
|
673
717
|
}
|
|
674
718
|
|
|
675
719
|
for (auto itComponentView = viewsToEmitJSLeaveEventsTo.rbegin(); itComponentView != viewsToEmitJSLeaveEventsTo.rend();
|
|
676
|
-
itComponentView++) { // for (UIView *componentView in [viewsToEmitJSLeaveEventsTo
|
|
720
|
+
itComponentView++) { // for (UIView *componentView in [viewsToEmitJSLeaveEventsTo
|
|
721
|
+
// reverseObjectEnumerator]) {
|
|
677
722
|
auto componentView = *itComponentView;
|
|
678
723
|
|
|
679
724
|
const auto eventEmitter =
|
|
@@ -769,8 +814,10 @@ void CompositionEventHandler::getTargetPointerArgs(
|
|
|
769
814
|
auto targetComponentView = fabricuiManager->GetViewRegistry().componentViewDescriptorWithTag(tag).view;
|
|
770
815
|
auto clientRect = winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(targetComponentView)
|
|
771
816
|
->getClientRect();
|
|
772
|
-
|
|
773
|
-
|
|
817
|
+
if (auto strongRootView = m_wkRootView.get()) {
|
|
818
|
+
ptLocal.x = ptScaled.x - (clientRect.left / strongRootView.ScaleFactor());
|
|
819
|
+
ptLocal.y = ptScaled.y - (clientRect.top / strongRootView.ScaleFactor());
|
|
820
|
+
}
|
|
774
821
|
} else {
|
|
775
822
|
tag = RootComponentView().hitTest(ptScaled, ptLocal);
|
|
776
823
|
}
|
|
@@ -154,7 +154,7 @@ class CompositionEventHandler {
|
|
|
154
154
|
PointerId m_touchId = 0;
|
|
155
155
|
|
|
156
156
|
std::map<PointerId, std::vector<ReactTaggedView>> m_currentlyHoveredViewsPerPointer;
|
|
157
|
-
winrt::Microsoft::ReactNative::CompositionRootView
|
|
157
|
+
winrt::weak_ref<winrt::Microsoft::ReactNative::CompositionRootView> m_wkRootView;
|
|
158
158
|
winrt::Microsoft::ReactNative::ReactContext m_context;
|
|
159
159
|
|
|
160
160
|
facebook::react::Tag m_pointerCapturingComponentTag{-1}; // Component that has captured input
|
|
@@ -131,6 +131,13 @@ CompositionRootView::CompositionRootView(const winrt::Microsoft::UI::Composition
|
|
|
131
131
|
: m_compositor(compositor) {}
|
|
132
132
|
#endif
|
|
133
133
|
|
|
134
|
+
CompositionRootView::~CompositionRootView() noexcept {
|
|
135
|
+
if (m_uiDispatcher) {
|
|
136
|
+
assert(m_uiDispatcher.HasThreadAccess());
|
|
137
|
+
UninitRootView();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
134
141
|
ReactNative::IReactViewHost CompositionRootView::ReactViewHost() noexcept {
|
|
135
142
|
return m_reactViewHost;
|
|
136
143
|
}
|
|
@@ -240,29 +247,32 @@ void CompositionRootView::ScaleFactor(float value) noexcept {
|
|
|
240
247
|
}
|
|
241
248
|
}
|
|
242
249
|
|
|
250
|
+
winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader CompositionRootView::Resources() noexcept {
|
|
251
|
+
return m_resources;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
void CompositionRootView::Resources(
|
|
255
|
+
const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &resources) noexcept {
|
|
256
|
+
m_resources = resources;
|
|
257
|
+
|
|
258
|
+
if (m_context && m_theme) {
|
|
259
|
+
Theme(winrt::make<winrt::Microsoft::ReactNative::Composition::implementation::Theme>(m_context, m_resources));
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
243
263
|
winrt::Microsoft::ReactNative::Composition::Theme CompositionRootView::Theme() noexcept {
|
|
244
264
|
if (!m_theme) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
IInspectable const & /*sender*/,
|
|
252
|
-
winrt::Microsoft::ReactNative::ReactNotificationArgs<void> const & /*args*/) {
|
|
253
|
-
auto pThis = wkThis.get();
|
|
254
|
-
pThis->Theme(winrt::Microsoft::ReactNative::Composition::Theme::GetDefaultTheme(pThis->m_context.Handle()));
|
|
255
|
-
});
|
|
265
|
+
assert(m_context);
|
|
266
|
+
if (m_resources) {
|
|
267
|
+
Theme(winrt::make<winrt::Microsoft::ReactNative::Composition::implementation::Theme>(m_context, m_resources));
|
|
268
|
+
} else {
|
|
269
|
+
Theme(winrt::Microsoft::ReactNative::Composition::Theme::GetDefaultTheme(m_context.Handle()));
|
|
270
|
+
}
|
|
256
271
|
}
|
|
257
272
|
return m_theme;
|
|
258
273
|
}
|
|
259
274
|
|
|
260
275
|
void CompositionRootView::Theme(const winrt::Microsoft::ReactNative::Composition::Theme &value) noexcept {
|
|
261
|
-
if (m_themeChangedSubscription) {
|
|
262
|
-
m_themeChangedSubscription.Unsubscribe();
|
|
263
|
-
m_themeChangedSubscription = nullptr;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
276
|
if (value == m_theme)
|
|
267
277
|
return;
|
|
268
278
|
|
|
@@ -270,20 +280,22 @@ void CompositionRootView::Theme(const winrt::Microsoft::ReactNative::Composition
|
|
|
270
280
|
|
|
271
281
|
m_themeChangedRevoker = m_theme.ThemeChanged(
|
|
272
282
|
winrt::auto_revoke,
|
|
273
|
-
[
|
|
283
|
+
[wkThis = get_weak()](
|
|
274
284
|
const winrt::Windows::Foundation::IInspectable & /*sender*/,
|
|
275
285
|
const winrt::Windows::Foundation::IInspectable & /*args*/) {
|
|
276
|
-
if (auto
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
winrt::
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
286
|
+
if (auto strongThis = wkThis.get()) {
|
|
287
|
+
if (auto rootView = strongThis->GetComponentView()) {
|
|
288
|
+
Mso::Functor<bool(const winrt::Microsoft::ReactNative::ComponentView &)> fn =
|
|
289
|
+
[](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
|
|
290
|
+
winrt::get_self<winrt::Microsoft::ReactNative::implementation::ComponentView>(view)->onThemeChanged();
|
|
291
|
+
return false;
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
winrt::Microsoft::ReactNative::ComponentView view{nullptr};
|
|
295
|
+
winrt::check_hresult(rootView->QueryInterface(
|
|
296
|
+
winrt::guid_of<winrt::Microsoft::ReactNative::ComponentView>(), winrt::put_abi(view)));
|
|
297
|
+
walkTree(view, true, fn);
|
|
298
|
+
}
|
|
287
299
|
}
|
|
288
300
|
});
|
|
289
301
|
|
|
@@ -382,13 +394,8 @@ void CompositionRootView::InitRootView(
|
|
|
382
394
|
}
|
|
383
395
|
|
|
384
396
|
m_context = winrt::Microsoft::ReactNative::ReactContext(std::move(context));
|
|
385
|
-
|
|
386
|
-
winrt::Microsoft::ReactNative::CompositionRootView compositionRootView;
|
|
387
|
-
get_strong().as(compositionRootView);
|
|
388
|
-
|
|
389
397
|
m_reactViewOptions = std::move(viewOptions);
|
|
390
|
-
m_CompositionEventHandler =
|
|
391
|
-
std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, compositionRootView);
|
|
398
|
+
m_CompositionEventHandler = std::make_shared<::Microsoft::ReactNative::CompositionEventHandler>(m_context, *this);
|
|
392
399
|
|
|
393
400
|
UpdateRootViewInternal();
|
|
394
401
|
|
|
@@ -45,6 +45,7 @@ struct CompositionRootView
|
|
|
45
45
|
: CompositionRootViewT<CompositionRootView, Composition::Experimental::IInternalCompositionRootView>,
|
|
46
46
|
::Microsoft::ReactNative::ICompositionRootView {
|
|
47
47
|
CompositionRootView() noexcept;
|
|
48
|
+
~CompositionRootView() noexcept;
|
|
48
49
|
|
|
49
50
|
#ifdef USE_WINUI3
|
|
50
51
|
CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept;
|
|
@@ -73,6 +74,9 @@ struct CompositionRootView
|
|
|
73
74
|
void RemoveRenderedVisual(const winrt::Microsoft::ReactNative::Composition::Experimental::IVisual &visual) noexcept;
|
|
74
75
|
bool TrySetFocus() noexcept;
|
|
75
76
|
|
|
77
|
+
winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader Resources() noexcept;
|
|
78
|
+
void Resources(const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &resources) noexcept;
|
|
79
|
+
|
|
76
80
|
winrt::Microsoft::ReactNative::Composition::Theme Theme() noexcept;
|
|
77
81
|
void Theme(const winrt::Microsoft::ReactNative::Composition::Theme &value) noexcept;
|
|
78
82
|
|
|
@@ -134,8 +138,8 @@ struct CompositionRootView
|
|
|
134
138
|
winrt::Microsoft::ReactNative::Composition::Experimental::IVisual m_rootVisual{nullptr};
|
|
135
139
|
winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual m_loadingVisual{nullptr};
|
|
136
140
|
winrt::Microsoft::ReactNative::Composition::Experimental::IActivityVisual m_loadingActivityVisual{nullptr};
|
|
141
|
+
winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader m_resources{nullptr};
|
|
137
142
|
winrt::Microsoft::ReactNative::Composition::Theme m_theme{nullptr};
|
|
138
|
-
winrt::Microsoft::ReactNative::ReactNotificationSubscription m_themeChangedSubscription{nullptr};
|
|
139
143
|
winrt::Microsoft::ReactNative::Composition::Theme::ThemeChanged_revoker m_themeChangedRevoker;
|
|
140
144
|
|
|
141
145
|
void UpdateRootViewInternal() noexcept;
|
|
@@ -28,6 +28,7 @@ struct CompositionReactViewInstance
|
|
|
28
28
|
//===========================================================================
|
|
29
29
|
|
|
30
30
|
CompositionRootView::CompositionRootView() noexcept {}
|
|
31
|
+
CompositionRootView::~CompositionRootView() noexcept {}
|
|
31
32
|
|
|
32
33
|
CompositionRootView::CompositionRootView(const winrt::Microsoft::UI::Composition::Compositor &compositor) noexcept {}
|
|
33
34
|
|
|
@@ -69,6 +70,12 @@ winrt::Microsoft::ReactNative::Composition::Theme CompositionRootView::Theme() n
|
|
|
69
70
|
}
|
|
70
71
|
void CompositionRootView::Theme(const winrt::Microsoft::ReactNative::Composition::Theme &) noexcept {}
|
|
71
72
|
|
|
73
|
+
winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader CompositionRootView::Resources() noexcept {
|
|
74
|
+
return nullptr;
|
|
75
|
+
}
|
|
76
|
+
void CompositionRootView::Resources(
|
|
77
|
+
const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &) noexcept {}
|
|
78
|
+
|
|
72
79
|
winrt::IInspectable CompositionRootView::GetUiaProvider() noexcept {
|
|
73
80
|
return nullptr;
|
|
74
81
|
}
|
|
@@ -526,6 +526,15 @@ static const winrt::Microsoft::ReactNative::ReactPropertyId<winrt::Microsoft::Re
|
|
|
526
526
|
return prop;
|
|
527
527
|
}
|
|
528
528
|
|
|
529
|
+
static const winrt::Microsoft::ReactNative::ReactPropertyId<
|
|
530
|
+
winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader>
|
|
531
|
+
&ThemeResourcesPropertyId() noexcept {
|
|
532
|
+
static const winrt::Microsoft::ReactNative::ReactPropertyId<
|
|
533
|
+
winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader>
|
|
534
|
+
prop{L"ReactNative.Composition", L"ThemeResources"};
|
|
535
|
+
return prop;
|
|
536
|
+
}
|
|
537
|
+
|
|
529
538
|
winrt::Microsoft::ReactNative::Composition::Theme Theme::EmptyTheme() noexcept {
|
|
530
539
|
static winrt::Microsoft::ReactNative::Composition::Theme s_emptyTheme{nullptr};
|
|
531
540
|
if (!s_emptyTheme) {
|
|
@@ -537,14 +546,28 @@ winrt::Microsoft::ReactNative::Composition::Theme Theme::EmptyTheme() noexcept {
|
|
|
537
546
|
/*static*/ winrt::Microsoft::ReactNative::Composition::Theme Theme::GetDefaultTheme(
|
|
538
547
|
const winrt::Microsoft::ReactNative::IReactContext &context) noexcept {
|
|
539
548
|
return winrt::Microsoft::ReactNative::ReactPropertyBag(context.Properties())
|
|
540
|
-
.GetOrCreate(ThemePropertyId(), [context]() {
|
|
549
|
+
.GetOrCreate(ThemePropertyId(), [context]() {
|
|
550
|
+
return winrt::make<Theme>(
|
|
551
|
+
context,
|
|
552
|
+
winrt::Microsoft::ReactNative::ReactPropertyBag(context.Properties()).Get(ThemeResourcesPropertyId()));
|
|
553
|
+
});
|
|
541
554
|
}
|
|
542
555
|
|
|
543
|
-
/*static*/ void Theme::
|
|
556
|
+
/*static*/ void Theme::SetDefaultResources(
|
|
544
557
|
const winrt::Microsoft::ReactNative::ReactInstanceSettings &settings,
|
|
545
|
-
const winrt::Microsoft::ReactNative::Composition::
|
|
546
|
-
winrt::Microsoft::ReactNative::ReactPropertyBag(settings.Properties())
|
|
547
|
-
|
|
558
|
+
const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &resources) noexcept {
|
|
559
|
+
winrt::Microsoft::ReactNative::ReactPropertyBag properties(settings.Properties());
|
|
560
|
+
properties.Set(ThemeResourcesPropertyId(), resources);
|
|
561
|
+
// If a default theme has already been created - we need to update it with the new resources
|
|
562
|
+
if (auto theme = properties.Get(ThemePropertyId())) {
|
|
563
|
+
winrt::get_self<Theme>(theme)->UpdateCustomResources(resources);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
void Theme::UpdateCustomResources(
|
|
568
|
+
const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &resources) noexcept {
|
|
569
|
+
m_customResourceLoader = resources;
|
|
570
|
+
ClearCacheAndRaiseChangedEvent();
|
|
548
571
|
}
|
|
549
572
|
|
|
550
573
|
IReactPropertyNamespace ThemeNamespace() noexcept {
|
|
@@ -552,9 +575,4 @@ IReactPropertyNamespace ThemeNamespace() noexcept {
|
|
|
552
575
|
return value;
|
|
553
576
|
}
|
|
554
577
|
|
|
555
|
-
/*static*/ IReactPropertyName Theme::ThemeChangedEventName() noexcept {
|
|
556
|
-
static IReactPropertyName propName = ReactPropertyBagHelper::GetName(ThemeNamespace(), L"Changed");
|
|
557
|
-
return propName;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
578
|
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
@@ -50,12 +50,13 @@ struct Theme : ThemeT<Theme, Experimental::IInternalTheme> {
|
|
|
50
50
|
|
|
51
51
|
static winrt::Microsoft::ReactNative::Composition::Theme GetDefaultTheme(
|
|
52
52
|
const winrt::Microsoft::ReactNative::IReactContext &context) noexcept;
|
|
53
|
-
static void
|
|
53
|
+
static void SetDefaultResources(
|
|
54
54
|
const winrt::Microsoft::ReactNative::ReactInstanceSettings &settings,
|
|
55
|
-
const winrt::Microsoft::ReactNative::Composition::
|
|
56
|
-
static winrt::Microsoft::ReactNative::IReactPropertyName ThemeChangedEventName() noexcept;
|
|
55
|
+
const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &resources) noexcept;
|
|
57
56
|
|
|
58
57
|
private:
|
|
58
|
+
void UpdateCustomResources(
|
|
59
|
+
const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &resources) noexcept;
|
|
59
60
|
bool TryGetPlatformColor(const std::string &platformColor, winrt::Windows::UI::Color &color) noexcept;
|
|
60
61
|
void ClearCacheAndRaiseChangedEvent() noexcept;
|
|
61
62
|
|
|
@@ -74,12 +74,8 @@ winrt::Microsoft::ReactNative::Composition::Theme Theme::EmptyTheme() noexcept {
|
|
|
74
74
|
return nullptr;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
/*static*/ void Theme::
|
|
77
|
+
/*static*/ void Theme::SetDefaultResources(
|
|
78
78
|
const winrt::Microsoft::ReactNative::ReactInstanceSettings &,
|
|
79
|
-
const winrt::Microsoft::ReactNative::Composition::
|
|
80
|
-
|
|
81
|
-
/*static*/ IReactPropertyName Theme::ThemeChangedEventName() noexcept {
|
|
82
|
-
return nullptr;
|
|
83
|
-
}
|
|
79
|
+
const winrt::Microsoft::ReactNative::Composition::ICustomResourceLoader &) noexcept {}
|
|
84
80
|
|
|
85
81
|
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|
|
@@ -61,8 +61,7 @@ namespace Microsoft.ReactNative.Composition
|
|
|
61
61
|
event Windows.Foundation.EventHandler<Object> ThemeChanged;
|
|
62
62
|
|
|
63
63
|
static Theme GetDefaultTheme(Microsoft.ReactNative.IReactContext context);
|
|
64
|
-
static void
|
|
65
|
-
static Microsoft.ReactNative.IReactPropertyName ThemeChangedEventName { get; };
|
|
64
|
+
static void SetDefaultResources(Microsoft.ReactNative.ReactInstanceSettings settings, ICustomResourceLoader theme);
|
|
66
65
|
};
|
|
67
66
|
|
|
68
67
|
} // namespace Microsoft.ReactNative
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
-->
|
|
11
11
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
12
12
|
<PropertyGroup>
|
|
13
|
-
<ReactNativeWindowsVersion>0.74.
|
|
13
|
+
<ReactNativeWindowsVersion>0.74.1</ReactNativeWindowsVersion>
|
|
14
14
|
<ReactNativeWindowsMajor>0</ReactNativeWindowsMajor>
|
|
15
15
|
<ReactNativeWindowsMinor>74</ReactNativeWindowsMinor>
|
|
16
|
-
<ReactNativeWindowsPatch>
|
|
16
|
+
<ReactNativeWindowsPatch>1</ReactNativeWindowsPatch>
|
|
17
17
|
<ReactNativeWindowsCanary>false</ReactNativeWindowsCanary>
|
|
18
|
-
<ReactNativeWindowsCommitId>
|
|
18
|
+
<ReactNativeWindowsCommitId>7fd1f4439e2e1f109d4d2b20a97073f14bcbf504</ReactNativeWindowsCommitId>
|
|
19
19
|
</PropertyGroup>
|
|
20
20
|
</Project>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-windows",
|
|
3
|
-
"version": "0.74.
|
|
3
|
+
"version": "0.74.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"@react-native-community/cli-platform-ios": "13.6.4",
|
|
29
29
|
"@react-native-windows/cli": "0.74.0",
|
|
30
30
|
"@react-native/assets": "1.0.0",
|
|
31
|
-
"@react-native/assets-registry": "0.74.
|
|
32
|
-
"@react-native/codegen": "0.74.
|
|
33
|
-
"@react-native/community-cli-plugin": "0.74.
|
|
34
|
-
"@react-native/gradle-plugin": "0.74.
|
|
35
|
-
"@react-native/js-polyfills": "0.74.
|
|
36
|
-
"@react-native/normalize-colors": "0.74.
|
|
37
|
-
"@react-native/virtualized-lists": "0.74.
|
|
31
|
+
"@react-native/assets-registry": "0.74.81",
|
|
32
|
+
"@react-native/codegen": "0.74.81",
|
|
33
|
+
"@react-native/community-cli-plugin": "0.74.81",
|
|
34
|
+
"@react-native/gradle-plugin": "0.74.81",
|
|
35
|
+
"@react-native/js-polyfills": "0.74.81",
|
|
36
|
+
"@react-native/normalize-colors": "0.74.81",
|
|
37
|
+
"@react-native/virtualized-lists": "0.74.81",
|
|
38
38
|
"abort-controller": "^3.0.0",
|
|
39
39
|
"anser": "^1.4.9",
|
|
40
40
|
"ansi-regex": "^5.0.0",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@react-native-windows/codegen": "0.74.0",
|
|
68
|
-
"@react-native/metro-config": "0.74.
|
|
68
|
+
"@react-native/metro-config": "0.74.81",
|
|
69
69
|
"@rnw-scripts/babel-react-native-config": "0.0.0",
|
|
70
70
|
"@rnw-scripts/eslint-config": "1.2.9",
|
|
71
71
|
"@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.13",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"just-scripts": "^1.3.3",
|
|
82
82
|
"prettier": "2.8.8",
|
|
83
83
|
"react": "18.2.0",
|
|
84
|
-
"react-native": "0.74.0
|
|
84
|
+
"react-native": "0.74.0",
|
|
85
85
|
"react-native-platform-override": "^1.9.25",
|
|
86
86
|
"react-refresh": "^0.14.0",
|
|
87
87
|
"typescript": "5.0.4"
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"peerDependencies": {
|
|
90
90
|
"@types/react": "^18.2.6",
|
|
91
91
|
"react": "18.2.0",
|
|
92
|
-
"react-native": "0.74.0
|
|
92
|
+
"react-native": "^0.74.0"
|
|
93
93
|
},
|
|
94
94
|
"beachball": {
|
|
95
95
|
"defaultNpmTag": "latest",
|