react-native-windows 0.74.10 → 0.75.0-preview.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/.flowconfig +8 -2
- package/Common/Common.vcxproj +8 -0
- package/Common/Utilities.cpp +2 -2
- package/Directory.Build.targets +5 -0
- package/Folly/Folly.vcxproj +10 -2
- package/Folly/Folly.vcxproj.filters +0 -7
- package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
- package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
- package/Libraries/Animated/AnimatedImplementation.js +2 -0
- package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
- package/Libraries/Animated/createAnimatedComponent.js +10 -4
- package/Libraries/Animated/useAnimatedProps.js +56 -28
- package/Libraries/BatchedBridge/MessageQueue.js +1 -0
- package/Libraries/Components/Button.js +10 -5
- package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
- package/Libraries/Components/Flyout/Flyout.js +10 -10
- package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
- package/Libraries/Components/Pressable/Pressable.js +13 -6
- package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
- package/Libraries/Components/ScrollView/ScrollView.js +109 -29
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
- package/Libraries/Components/StatusBar/StatusBar.js +1 -21
- package/Libraries/Components/Switch/Switch.windows.js +2 -0
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
- package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
- package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
- package/Libraries/Components/TextInput/TextInput.js +20 -73
- package/Libraries/Components/TextInput/TextInput.windows.js +21 -75
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
- package/Libraries/Components/Touchable/Touchable.js +2 -2
- package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
- package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
- package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
- package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
- package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
- package/Libraries/Components/View/View.js +0 -11
- package/Libraries/Components/View/View.windows.js +0 -11
- package/Libraries/Components/View/ViewAccessibility.js +4 -4
- package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
- package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
- package/Libraries/Components/View/ViewPropTypes.js +7 -0
- package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
- package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
- package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
- package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
- package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
- package/Libraries/Core/ErrorHandlers.js +116 -0
- package/Libraries/Core/ExceptionsManager.js +2 -2
- package/Libraries/Core/ReactNativeVersion.js +3 -3
- package/Libraries/Core/setUpDeveloperTools.js +3 -1
- package/Libraries/Core/setUpPerformance.js +6 -4
- package/Libraries/Core/setUpReactDevTools.js +70 -10
- package/Libraries/Core/setUpTimers.js +50 -31
- package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
- package/Libraries/Image/Image.android.js +23 -13
- package/Libraries/Image/Image.d.ts +14 -15
- package/Libraries/Image/Image.ios.js +21 -11
- package/Libraries/Image/Image.windows.js +21 -11
- package/Libraries/Image/ImageProps.js +16 -5
- package/Libraries/Image/ImageTypes.flow.js +7 -2
- package/Libraries/Image/ImageUtils.js +1 -0
- package/Libraries/Image/ImageViewNativeComponent.js +2 -1
- package/Libraries/Inspector/ElementBox.js +6 -3
- package/Libraries/Inspector/ElementProperties.js +1 -1
- package/Libraries/Interaction/TouchHistoryMath.js +4 -4
- package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
- package/Libraries/JSInspector/NetworkAgent.js +1 -1
- package/Libraries/LogBox/Data/LogBoxData.js +39 -29
- package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
- package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
- package/Libraries/LogBox/LogBox.js +29 -12
- package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
- package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
- package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
- package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
- package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
- package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
- package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
- package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
- package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
- package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
- package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
- package/Libraries/Network/XMLHttpRequest.js +5 -1
- package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
- package/Libraries/Pressability/Pressability.js +3 -51
- package/Libraries/Pressability/Pressability.windows.js +3 -51
- package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
- package/Libraries/ReactNative/AppRegistry.js +2 -4
- package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
- package/Libraries/ReactNative/FabricUIManager.js +0 -51
- package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
- package/Libraries/ReactNative/RendererImplementation.js +20 -2
- package/Libraries/ReactNative/UIManager.d.ts +0 -21
- package/Libraries/ReactNative/UIManagerProperties.js +0 -3
- package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
- package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
- package/Libraries/Renderer/shims/ReactFabric.js +2 -2
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
- package/Libraries/Renderer/shims/ReactNative.js +2 -3
- package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
- package/Libraries/Share/Share.d.ts +16 -10
- package/Libraries/Share/Share.js +14 -15
- package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
- package/Libraries/StyleSheet/StyleSheet.js +3 -10
- package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
- package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
- package/Libraries/StyleSheet/flattenStyle.js +1 -0
- package/Libraries/StyleSheet/processFilter.js +132 -0
- package/Libraries/StyleSheet/processTransform.js +18 -3
- package/Libraries/Text/Text.js +151 -128
- package/Libraries/Text/Text.windows.js +144 -127
- package/Libraries/Text/TextNativeComponent.js +5 -4
- package/Libraries/Text/TextProps.js +6 -6
- package/Libraries/Text/TextProps.windows.js +6 -6
- package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
- package/Libraries/Types/CodegenTypes.js +3 -0
- package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
- package/Libraries/Utilities/Dimensions.js +1 -0
- package/Libraries/Utilities/HMRClient.js +36 -8
- package/Libraries/Utilities/HMRClientProdShim.js +1 -0
- package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
- package/Libraries/Utilities/Platform.android.js +4 -4
- package/Libraries/Utilities/RCTLog.js +1 -0
- package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
- package/Libraries/__tests__/ViewWindows-test.js +6 -6
- package/Libraries/promiseRejectionTrackingOptions.js +1 -0
- package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
- package/Microsoft.ReactNative/ComponentView.idl +0 -17
- package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
- package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +10 -6
- package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +4 -4
- package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +12 -3
- package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -12
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
- package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
- package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -18
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -5
- package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -11
- package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
- package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
- package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
- package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
- package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
- package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -17
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/Timer.idl +1 -3
- package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
- package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
- package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
- package/Microsoft.ReactNative/packages.lock.json +45 -72
- package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
- package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
- package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
- package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
- package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
- package/PropertySheets/ARM64EC.props +13 -0
- package/PropertySheets/Application/ARM64EC.props +13 -0
- package/PropertySheets/DynamicLibrary/ARM64EC.props +13 -0
- package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
- package/PropertySheets/Generated/PackageVersion.g.props +4 -4
- package/PropertySheets/JSEngine.props +2 -0
- package/PropertySheets/StaticLibrary/ARM64EC.props +13 -0
- package/README.md +21 -21
- package/ReactCommon/ReactCommon.vcxproj +11 -1
- package/ReactCommon/ReactCommon.vcxproj.filters +19 -12
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
- package/Scripts/StripAdditionalPlatformsFromNuspec.ps1 +1 -1
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +10 -6
- package/Scripts/rnw-dependencies.ps1 +36 -23
- package/Shared/HermesRuntimeHolder.cpp +19 -1
- package/Shared/HermesRuntimeHolder.h +8 -1
- package/Shared/HermesSamplingProfiler.cpp +1 -2
- package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
- package/Shared/OInstance.cpp +1 -2
- package/Shared/Shared.vcxitems +21 -15
- package/Shared/Shared.vcxitems.filters +8 -3
- package/Shared/Threading/BatchingQueueThread.cpp +6 -2
- package/Shared/Threading/BatchingQueueThread.h +2 -2
- package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
- package/codegen/NativeAppStateSpec.g.h +8 -8
- package/codegen/NativeBlobModuleSpec.g.h +0 -10
- package/codegen/NativeDOMSpec.g.h +136 -0
- package/codegen/NativeDevSettingsSpec.g.h +11 -5
- package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
- package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
- package/codegen/NativeMicrotasksSpec.g.h +34 -0
- package/codegen/NativePerformanceSpec.g.h +35 -7
- package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
- package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
- package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
- package/codegen/NativeUIManagerSpec.g.h +5 -17
- package/codegen/react/components/rnwcore/Props.cpp +1 -1
- package/codegen/react/components/rnwcore/Props.h +16 -12
- package/codegen/react/components/rnwcore/States.h +0 -26
- package/codegen/rnwcoreJSI-generated.cpp +688 -463
- package/codegen/rnwcoreJSI.h +1374 -2867
- package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
- package/fmt/fmt.vcxproj +10 -2
- package/jest/mockComponent.js +7 -0
- package/jest/renderer.js +25 -14
- package/jest/setup.js +19 -13
- package/package.json +29 -27
- package/rn-get-polyfills.js +1 -0
- package/src/private/core/composeStyles.js +27 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
- package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
- package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
- package/src/private/specs/modules/NativeBlobModule.js +4 -2
- package/src/private/specs/modules/NativeDevSettings.js +1 -0
- package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
- package/src/private/specs/modules/NativeUIManager.js +0 -7
- package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
- package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
- package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
- package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
- package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
- package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
- package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
- package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
- package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
- package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
- package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
- package/src/private/webapis/performance/EventCounts.js +1 -1
- package/src/private/webapis/performance/MemoryInfo.js +9 -9
- package/src/private/webapis/performance/Performance.js +10 -56
- package/src/private/webapis/performance/PerformanceObserver.js +30 -22
- package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
- package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
- package/src/private/webapis/performance/UserTiming.js +63 -0
- package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
- package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
- package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
- package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
- package/stubs/glog/logging.h +1 -0
- package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
- package/template/cs-lib/proj/MyLib.csproj +1 -1
- package/template/metro.config.js +13 -2
- package/templates/cpp-app/template.config.js +1 -1
- package/templates/cpp-lib/example/metro.config.js +2 -2
- package/templates/cpp-lib/template.config.js +1 -1
- package/templates/old/generateWrapper.js +4 -1
- package/types/modules/globals.d.ts +4 -0
- package/Libraries/Lists/FlatList.windows.js +0 -717
- package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
- package/Libraries/Utilities/LoadingView.ios.js +0 -50
- package/Libraries/Utilities/LoadingView.js +0 -16
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2375
- package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
- package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
- package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
- package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
- package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
- package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
- package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
- package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
- package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
- package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
- package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
- package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
- package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
- package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
- package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
- package/template/metro.devMode.config.js +0 -56
- /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
|
@@ -79,20 +79,8 @@ void FabricUIManager::installFabricUIManager() noexcept {
|
|
|
79
79
|
runtimeExecutor = [runtimeScheduler](std::function<void(facebook::jsi::Runtime & runtime)> &&callback) {
|
|
80
80
|
runtimeScheduler->scheduleWork(std::move(callback));
|
|
81
81
|
};
|
|
82
|
-
facebook::react::EventBeat::Factory synchronousBeatFactory =
|
|
83
|
-
[runtimeExecutor, context = m_context, runtimeScheduler](
|
|
84
|
-
facebook::react::EventBeat::SharedOwnerBox const &ownerBox) {
|
|
85
|
-
return std::make_unique<SynchronousEventBeat>(ownerBox, context, runtimeExecutor, runtimeScheduler);
|
|
86
|
-
};
|
|
87
|
-
toolbox.synchronousEventBeatFactory = synchronousBeatFactory;
|
|
88
82
|
} else {
|
|
89
83
|
runtimeExecutor = SchedulerSettings::GetRuntimeExecutor(m_context.Properties());
|
|
90
|
-
|
|
91
|
-
facebook::react::EventBeat::Factory synchronousBeatFactory =
|
|
92
|
-
[runtimeExecutor, context = m_context](facebook::react::EventBeat::SharedOwnerBox const &ownerBox) {
|
|
93
|
-
return std::make_unique<AsynchronousEventBeat>(ownerBox, context, runtimeExecutor);
|
|
94
|
-
};
|
|
95
|
-
toolbox.synchronousEventBeatFactory = synchronousBeatFactory;
|
|
96
84
|
}
|
|
97
85
|
|
|
98
86
|
facebook::react::EventBeat::Factory asynchronousBeatFactory =
|
|
@@ -324,9 +312,6 @@ void FabricUIManager::initiateTransaction(facebook::react::MountingCoordinator::
|
|
|
324
312
|
}
|
|
325
313
|
|
|
326
314
|
void FabricUIManager::schedulerDidFinishTransaction(
|
|
327
|
-
const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {}
|
|
328
|
-
|
|
329
|
-
void FabricUIManager::schedulerShouldRenderTransactions(
|
|
330
315
|
const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {
|
|
331
316
|
// Should cache this locally
|
|
332
317
|
|
|
@@ -338,9 +323,17 @@ void FabricUIManager::schedulerShouldRenderTransactions(
|
|
|
338
323
|
}
|
|
339
324
|
}
|
|
340
325
|
|
|
341
|
-
void FabricUIManager::
|
|
342
|
-
facebook::react::
|
|
343
|
-
|
|
326
|
+
void FabricUIManager::schedulerShouldRenderTransactions(
|
|
327
|
+
const facebook::react::MountingCoordinator::Shared &mountingCoordinator) {
|
|
328
|
+
if (m_context.UIDispatcher().HasThreadAccess()) {
|
|
329
|
+
initiateTransaction(mountingCoordinator);
|
|
330
|
+
} else {
|
|
331
|
+
m_context.UIDispatcher().Post(
|
|
332
|
+
[mountingCoordinator, self = shared_from_this()]() { self->initiateTransaction(mountingCoordinator); });
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
void FabricUIManager::schedulerDidRequestPreliminaryViewAllocation(const facebook::react::ShadowNode &shadowView) {
|
|
344
337
|
// iOS does not do this optimization, but Android does. It maybe that android's allocations are more expensive due to
|
|
345
338
|
// the Java boundary.
|
|
346
339
|
// TODO: We should do some perf tests to see if this is worth doing.
|
|
@@ -79,13 +79,11 @@ struct FabricUIManager final : public std::enable_shared_from_this<FabricUIManag
|
|
|
79
79
|
std::unordered_map<facebook::react::SurfaceId, SurfaceInfo> m_surfaceRegistry;
|
|
80
80
|
|
|
81
81
|
// Inherited via SchedulerDelegate
|
|
82
|
-
virtual void schedulerShouldRenderTransactions(
|
|
83
|
-
const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
|
|
84
82
|
virtual void schedulerDidFinishTransaction(
|
|
85
83
|
const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
|
|
86
|
-
virtual void
|
|
87
|
-
facebook::react::
|
|
88
|
-
|
|
84
|
+
virtual void schedulerShouldRenderTransactions(
|
|
85
|
+
const facebook::react::MountingCoordinator::Shared &mountingCoordinator) override;
|
|
86
|
+
virtual void schedulerDidRequestPreliminaryViewAllocation(const facebook::react::ShadowNode &shadowView) override;
|
|
89
87
|
virtual void schedulerDidDispatchCommand(
|
|
90
88
|
facebook::react::ShadowView const &shadowView,
|
|
91
89
|
std::string const &commandName,
|
|
@@ -43,8 +43,11 @@ WindowsImageManager::WindowsImageManager(winrt::Microsoft::ReactNative::ReactCon
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
std::tuple<
|
|
47
|
-
|
|
46
|
+
std::tuple<
|
|
47
|
+
winrt::com_ptr<IWICBitmapSource>,
|
|
48
|
+
winrt::com_ptr<IWICImagingFactory>,
|
|
49
|
+
std::shared_ptr<facebook::react::ImageErrorInfo>>
|
|
50
|
+
wicBitmapSourceFromStream(const winrt::Windows::Storage::Streams::IRandomAccessStream &stream) noexcept {
|
|
48
51
|
try {
|
|
49
52
|
winrt::com_ptr<IWICImagingFactory> imagingFactory;
|
|
50
53
|
winrt::check_hresult(WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, imagingFactory.put()));
|
|
@@ -58,14 +61,19 @@ std::tuple<winrt::com_ptr<IWICBitmapSource>, winrt::com_ptr<IWICImagingFactory>,
|
|
|
58
61
|
istream.get(), nullptr, WICDecodeMetadataCacheOnDemand, bitmapDecoder.put()));
|
|
59
62
|
|
|
60
63
|
if (!bitmapDecoder) {
|
|
61
|
-
|
|
64
|
+
auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
|
|
65
|
+
errorInfo->error = "Failed to decode the image.";
|
|
66
|
+
return {nullptr, nullptr, errorInfo};
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
winrt::com_ptr<IWICBitmapFrameDecode> decodedFrame;
|
|
65
70
|
winrt::check_hresult(bitmapDecoder->GetFrame(0, decodedFrame.put()));
|
|
66
|
-
return {decodedFrame, imagingFactory,
|
|
71
|
+
return {decodedFrame, imagingFactory, nullptr};
|
|
67
72
|
} catch (winrt::hresult_error const &ex) {
|
|
68
|
-
|
|
73
|
+
auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
|
|
74
|
+
errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
|
|
75
|
+
errorInfo->error = ::Microsoft::ReactNative::FormatHResultError(winrt::hresult_error(ex));
|
|
76
|
+
return {nullptr, nullptr, errorInfo};
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
79
|
|
|
@@ -166,16 +174,20 @@ facebook::react::ImageRequest WindowsImageManager::requestImage(
|
|
|
166
174
|
observerCoordinator->nativeImageResponseComplete(
|
|
167
175
|
facebook::react::ImageResponse(imageResultOrError.image, nullptr /*metadata*/));
|
|
168
176
|
} else {
|
|
169
|
-
observerCoordinator->nativeImageResponseFailed();
|
|
177
|
+
observerCoordinator->nativeImageResponseFailed(facebook::react::ImageLoadError(imageResultOrError.errorInfo));
|
|
170
178
|
}
|
|
171
179
|
break;
|
|
172
180
|
}
|
|
173
181
|
case winrt::Windows::Foundation::AsyncStatus::Canceled: {
|
|
174
|
-
|
|
182
|
+
auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
|
|
183
|
+
errorInfo->error = FormatHResultError(winrt::hresult_error(asyncOp.ErrorCode()));
|
|
184
|
+
observerCoordinator->nativeImageResponseFailed(facebook::react::ImageLoadError(errorInfo));
|
|
175
185
|
break;
|
|
176
186
|
}
|
|
177
187
|
case winrt::Windows::Foundation::AsyncStatus::Error: {
|
|
178
|
-
|
|
188
|
+
auto errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
|
|
189
|
+
errorInfo->error = FormatHResultError(winrt::hresult_error(asyncOp.ErrorCode()));
|
|
190
|
+
observerCoordinator->nativeImageResponseFailed(facebook::react::ImageLoadError(errorInfo));
|
|
179
191
|
break;
|
|
180
192
|
}
|
|
181
193
|
case winrt::Windows::Foundation::AsyncStatus::Started: {
|
|
@@ -197,8 +209,7 @@ ImageResponseOrImageErrorInfo StreamImageResponse::ResolveImage() {
|
|
|
197
209
|
try {
|
|
198
210
|
auto result = ::Microsoft::ReactNative::wicBitmapSourceFromStream(m_stream);
|
|
199
211
|
|
|
200
|
-
auto
|
|
201
|
-
if (!errorInfo.empty()) {
|
|
212
|
+
if (auto errorInfo = std::get<std::shared_ptr<facebook::react::ImageErrorInfo>>(result)) {
|
|
202
213
|
imageOrError.errorInfo = errorInfo;
|
|
203
214
|
return imageOrError;
|
|
204
215
|
}
|
|
@@ -222,7 +233,8 @@ ImageResponseOrImageErrorInfo StreamImageResponse::ResolveImage() {
|
|
|
222
233
|
winrt::check_hresult(imagingFactory->CreateBitmapFromSource(
|
|
223
234
|
converter.get(), WICBitmapCacheOnLoad, imageOrError.image->m_wicbmp.put()));
|
|
224
235
|
} catch (winrt::hresult_error const &ex) {
|
|
225
|
-
imageOrError.errorInfo = ::
|
|
236
|
+
imageOrError.errorInfo = std::make_shared<facebook::react::ImageErrorInfo>();
|
|
237
|
+
imageOrError.errorInfo->error = ::Microsoft::ReactNative::FormatHResultError(winrt::hresult_error(ex));
|
|
226
238
|
}
|
|
227
239
|
return imageOrError;
|
|
228
240
|
}
|
|
@@ -30,7 +30,10 @@ struct WindowsImageManager {
|
|
|
30
30
|
std::shared_ptr<winrt::Microsoft::ReactNative::Composition::implementation::UriImageManager> m_uriImageManager;
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
std::tuple<
|
|
34
|
-
|
|
33
|
+
std::tuple<
|
|
34
|
+
winrt::com_ptr<IWICBitmapSource>,
|
|
35
|
+
winrt::com_ptr<IWICImagingFactory>,
|
|
36
|
+
std::shared_ptr<facebook::react::ImageErrorInfo>>
|
|
37
|
+
wicBitmapSourceFromStream(const winrt::Windows::Storage::Streams::IRandomAccessStream &stream) noexcept;
|
|
35
38
|
|
|
36
39
|
} // namespace Microsoft::ReactNative
|
|
@@ -39,19 +39,11 @@ void HostPlatformViewEventEmitter::onBlur() const {
|
|
|
39
39
|
#pragma mark - Mouse Events
|
|
40
40
|
|
|
41
41
|
void HostPlatformViewEventEmitter::onMouseEnter(PointerEvent const &pointerEvent) const {
|
|
42
|
-
dispatchEvent(
|
|
43
|
-
"mouseEnter",
|
|
44
|
-
std::make_shared<PointerEvent>(pointerEvent),
|
|
45
|
-
EventPriority::AsynchronousBatched,
|
|
46
|
-
RawEvent::Category::ContinuousStart);
|
|
42
|
+
dispatchEvent("mouseEnter", std::make_shared<PointerEvent>(pointerEvent), RawEvent::Category::ContinuousStart);
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
void HostPlatformViewEventEmitter::onMouseLeave(PointerEvent const &pointerEvent) const {
|
|
50
|
-
dispatchEvent(
|
|
51
|
-
"mouseLeave",
|
|
52
|
-
std::make_shared<PointerEvent>(pointerEvent),
|
|
53
|
-
EventPriority::AsynchronousBatched,
|
|
54
|
-
RawEvent::Category::ContinuousStart);
|
|
46
|
+
dispatchEvent("mouseLeave", std::make_shared<PointerEvent>(pointerEvent), RawEvent::Category::ContinuousStart);
|
|
55
47
|
}
|
|
56
48
|
|
|
57
49
|
} // namespace facebook::react
|
package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp
CHANGED
|
@@ -17,14 +17,11 @@
|
|
|
17
17
|
namespace facebook::react {
|
|
18
18
|
|
|
19
19
|
void TextLayoutManager::GetTextLayout(
|
|
20
|
-
|
|
21
|
-
ParagraphAttributes paragraphAttributes,
|
|
22
|
-
|
|
20
|
+
const AttributedString &attributedString,
|
|
21
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
22
|
+
Size size,
|
|
23
23
|
winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept {
|
|
24
|
-
|
|
25
|
-
return;
|
|
26
|
-
|
|
27
|
-
auto fragments = attributedStringBox.getValue().getFragments();
|
|
24
|
+
auto fragments = attributedString.getFragments();
|
|
28
25
|
auto outerFragment = fragments[0];
|
|
29
26
|
|
|
30
27
|
DWRITE_FONT_STYLE style = DWRITE_FONT_STYLE_NORMAL;
|
|
@@ -86,14 +83,14 @@ void TextLayoutManager::GetTextLayout(
|
|
|
86
83
|
}
|
|
87
84
|
winrt::check_hresult(spTextFormat->SetTextAlignment(alignment));
|
|
88
85
|
|
|
89
|
-
auto str = GetTransformedText(
|
|
86
|
+
auto str = GetTransformedText(attributedString);
|
|
90
87
|
|
|
91
88
|
winrt::check_hresult(Microsoft::ReactNative::DWriteFactory()->CreateTextLayout(
|
|
92
89
|
str.c_str(), // The string to be laid out and formatted.
|
|
93
90
|
static_cast<UINT32>(str.size()), // The length of the string.
|
|
94
91
|
spTextFormat.get(), // The text format to apply to the string (contains font information, etc).
|
|
95
|
-
|
|
96
|
-
|
|
92
|
+
size.width, // The width of the layout box.
|
|
93
|
+
size.height, // The height of the layout box.
|
|
97
94
|
spTextLayout.put() // The IDWriteTextLayout interface pointer.
|
|
98
95
|
));
|
|
99
96
|
|
|
@@ -129,12 +126,22 @@ void TextLayoutManager::GetTextLayout(
|
|
|
129
126
|
}
|
|
130
127
|
}
|
|
131
128
|
|
|
129
|
+
void TextLayoutManager::GetTextLayout(
|
|
130
|
+
const AttributedStringBox &attributedStringBox,
|
|
131
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
132
|
+
LayoutConstraints layoutConstraints,
|
|
133
|
+
winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept {
|
|
134
|
+
if (attributedStringBox.getValue().isEmpty())
|
|
135
|
+
return;
|
|
136
|
+
|
|
137
|
+
GetTextLayout(attributedStringBox.getValue(), paragraphAttributes, layoutConstraints.maximumSize, spTextLayout);
|
|
138
|
+
}
|
|
139
|
+
|
|
132
140
|
TextMeasurement TextLayoutManager::measure(
|
|
133
|
-
AttributedStringBox attributedStringBox,
|
|
134
|
-
ParagraphAttributes paragraphAttributes,
|
|
141
|
+
const AttributedStringBox &attributedStringBox,
|
|
142
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
135
143
|
const TextLayoutContext &layoutContext,
|
|
136
|
-
LayoutConstraints layoutConstraints
|
|
137
|
-
std::shared_ptr<void> /* hostTextStorage */) const {
|
|
144
|
+
LayoutConstraints layoutConstraints) const {
|
|
138
145
|
TextMeasurement measurement{};
|
|
139
146
|
auto &attributedString = attributedStringBox.getValue();
|
|
140
147
|
measurement = m_measureCache.get(
|
|
@@ -185,31 +192,12 @@ TextMeasurement TextLayoutManager::measure(
|
|
|
185
192
|
*/
|
|
186
193
|
TextMeasurement TextLayoutManager::measureCachedSpannableById(
|
|
187
194
|
int64_t cacheId,
|
|
188
|
-
ParagraphAttributes
|
|
195
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
189
196
|
LayoutConstraints layoutConstraints) const {
|
|
190
197
|
assert(false);
|
|
191
198
|
return {};
|
|
192
199
|
}
|
|
193
200
|
|
|
194
|
-
LinesMeasurements TextLayoutManager::measureLines(
|
|
195
|
-
AttributedString attributedString,
|
|
196
|
-
ParagraphAttributes paragraphAttributes,
|
|
197
|
-
Size size) const {
|
|
198
|
-
assert(false);
|
|
199
|
-
return {};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
std::shared_ptr<void> TextLayoutManager::getHostTextStorage(
|
|
203
|
-
AttributedString attributedString,
|
|
204
|
-
ParagraphAttributes paragraphAttributes,
|
|
205
|
-
LayoutConstraints layoutConstraints) const {
|
|
206
|
-
return nullptr;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
void *TextLayoutManager::getNativeTextLayoutManager() const {
|
|
210
|
-
return (void *)this;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
201
|
Microsoft::ReactNative::TextTransform ConvertTextTransform(std::optional<TextTransform> const &transform) {
|
|
214
202
|
if (transform) {
|
|
215
203
|
switch (transform.value()) {
|
|
@@ -229,9 +217,92 @@ Microsoft::ReactNative::TextTransform ConvertTextTransform(std::optional<TextTra
|
|
|
229
217
|
return Microsoft::ReactNative::TextTransform::Undefined;
|
|
230
218
|
}
|
|
231
219
|
|
|
232
|
-
|
|
220
|
+
LinesMeasurements TextLayoutManager::measureLines(
|
|
221
|
+
const AttributedString &attributedString,
|
|
222
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
223
|
+
Size size) const {
|
|
224
|
+
LinesMeasurements lineMeasurements{};
|
|
225
|
+
|
|
226
|
+
winrt::com_ptr<IDWriteTextLayout> spTextLayout;
|
|
227
|
+
|
|
228
|
+
GetTextLayout(attributedString, paragraphAttributes, size, spTextLayout);
|
|
229
|
+
|
|
230
|
+
if (spTextLayout) {
|
|
231
|
+
std::vector<DWRITE_LINE_METRICS> lineMetrics;
|
|
232
|
+
uint32_t actualLineCount;
|
|
233
|
+
spTextLayout->GetLineMetrics(nullptr, 0, &actualLineCount);
|
|
234
|
+
lineMetrics.resize(static_cast<size_t>(actualLineCount));
|
|
235
|
+
winrt::check_hresult(spTextLayout->GetLineMetrics(lineMetrics.data(), actualLineCount, &actualLineCount));
|
|
236
|
+
uint32_t startRange = 0;
|
|
237
|
+
const auto count = (paragraphAttributes.maximumNumberOfLines > 0)
|
|
238
|
+
? std::min(static_cast<uint32_t>(paragraphAttributes.maximumNumberOfLines), actualLineCount)
|
|
239
|
+
: actualLineCount;
|
|
240
|
+
for (uint32_t i = 0; i < count; ++i) {
|
|
241
|
+
UINT32 actualHitTestCount = 0;
|
|
242
|
+
spTextLayout->HitTestTextRange(
|
|
243
|
+
startRange,
|
|
244
|
+
lineMetrics[i].length,
|
|
245
|
+
0, // x
|
|
246
|
+
0, // y
|
|
247
|
+
NULL,
|
|
248
|
+
0, // metrics count
|
|
249
|
+
&actualHitTestCount);
|
|
250
|
+
|
|
251
|
+
// Allocate enough room to return all hit-test metrics.
|
|
252
|
+
std::vector<DWRITE_HIT_TEST_METRICS> hitTestMetrics(actualHitTestCount);
|
|
253
|
+
spTextLayout->HitTestTextRange(
|
|
254
|
+
startRange,
|
|
255
|
+
lineMetrics[i].length,
|
|
256
|
+
0, // x
|
|
257
|
+
0, // y
|
|
258
|
+
&hitTestMetrics[0],
|
|
259
|
+
static_cast<UINT32>(hitTestMetrics.size()),
|
|
260
|
+
&actualHitTestCount);
|
|
261
|
+
|
|
262
|
+
float width = 0;
|
|
263
|
+
for (auto tm : hitTestMetrics) {
|
|
264
|
+
width += tm.width;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
std::string str;
|
|
268
|
+
for (const auto &fragment : attributedString.getFragments()) {
|
|
269
|
+
str = str +
|
|
270
|
+
winrt::to_string(Microsoft::ReactNative::TransformableText::TransformText(
|
|
271
|
+
winrt::hstring{Microsoft::Common::Unicode::Utf8ToUtf16(fragment.string)},
|
|
272
|
+
ConvertTextTransform(fragment.textAttributes.textTransform)));
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
lineMeasurements.emplace_back(LineMeasurement(
|
|
276
|
+
str.substr(startRange, lineMetrics[i].length),
|
|
277
|
+
{{hitTestMetrics[0].left, hitTestMetrics[0].top}, // origin
|
|
278
|
+
{width, lineMetrics[i].height}},
|
|
279
|
+
0.0f, // TODO descender
|
|
280
|
+
0.0f, // TODO: capHeight
|
|
281
|
+
0.0f, // TODO ascender
|
|
282
|
+
0.0f // TODO: xHeight
|
|
283
|
+
));
|
|
284
|
+
|
|
285
|
+
startRange += lineMetrics[i].length;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return lineMeasurements;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
std::shared_ptr<void> TextLayoutManager::getHostTextStorage(
|
|
293
|
+
const AttributedString &attributedString,
|
|
294
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
295
|
+
LayoutConstraints layoutConstraints) const {
|
|
296
|
+
return nullptr;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
void *TextLayoutManager::getNativeTextLayoutManager() const {
|
|
300
|
+
return (void *)this;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
winrt::hstring TextLayoutManager::GetTransformedText(const AttributedString &attributedString) {
|
|
233
304
|
winrt::hstring result{};
|
|
234
|
-
for (const auto &fragment :
|
|
305
|
+
for (const auto &fragment : attributedString.getFragments()) {
|
|
235
306
|
result = result +
|
|
236
307
|
Microsoft::ReactNative::TransformableText::TransformText(
|
|
237
308
|
winrt::hstring{Microsoft::Common::Unicode::Utf8ToUtf16(fragment.string)},
|
package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h
CHANGED
|
@@ -35,22 +35,23 @@ class TextLayoutManager {
|
|
|
35
35
|
* Measures `attributedStringBox` using native text rendering infrastructure.
|
|
36
36
|
*/
|
|
37
37
|
TextMeasurement measure(
|
|
38
|
-
AttributedStringBox attributedStringBox,
|
|
39
|
-
ParagraphAttributes paragraphAttributes,
|
|
38
|
+
const AttributedStringBox &attributedStringBox,
|
|
39
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
40
40
|
const TextLayoutContext &layoutContext,
|
|
41
|
-
LayoutConstraints layoutConstraints
|
|
42
|
-
std::shared_ptr<void> /* hostTextStorage */) const;
|
|
41
|
+
LayoutConstraints layoutConstraints) const;
|
|
43
42
|
|
|
44
43
|
/*
|
|
45
44
|
* Measures lines of `attributedString` using native text rendering
|
|
46
45
|
* infrastructure.
|
|
47
46
|
*/
|
|
48
|
-
LinesMeasurements measureLines(
|
|
49
|
-
const
|
|
47
|
+
LinesMeasurements measureLines(
|
|
48
|
+
const AttributedString &attributedString,
|
|
49
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
50
|
+
Size size) const;
|
|
50
51
|
|
|
51
52
|
std::shared_ptr<void> getHostTextStorage(
|
|
52
|
-
AttributedString attributedString,
|
|
53
|
-
ParagraphAttributes paragraphAttributes,
|
|
53
|
+
const AttributedString &attributedString,
|
|
54
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
54
55
|
LayoutConstraints layoutConstraints) const;
|
|
55
56
|
|
|
56
57
|
/**
|
|
@@ -59,7 +60,7 @@ class TextLayoutManager {
|
|
|
59
60
|
*/
|
|
60
61
|
TextMeasurement measureCachedSpannableById(
|
|
61
62
|
int64_t cacheId,
|
|
62
|
-
ParagraphAttributes
|
|
63
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
63
64
|
LayoutConstraints layoutConstraints) const;
|
|
64
65
|
|
|
65
66
|
/*
|
|
@@ -69,15 +70,20 @@ class TextLayoutManager {
|
|
|
69
70
|
void *getNativeTextLayoutManager() const;
|
|
70
71
|
|
|
71
72
|
static void GetTextLayout(
|
|
72
|
-
AttributedStringBox attributedStringBox,
|
|
73
|
-
ParagraphAttributes paragraphAttributes,
|
|
73
|
+
const AttributedStringBox &attributedStringBox,
|
|
74
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
74
75
|
LayoutConstraints layoutConstraints,
|
|
75
76
|
winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept;
|
|
76
77
|
|
|
77
78
|
#pragma endregion
|
|
78
79
|
|
|
79
80
|
private:
|
|
80
|
-
static winrt::hstring GetTransformedText(
|
|
81
|
+
static winrt::hstring GetTransformedText(const AttributedString &attributedString);
|
|
82
|
+
static void GetTextLayout(
|
|
83
|
+
const AttributedString &attributedString,
|
|
84
|
+
const ParagraphAttributes ¶graphAttributes,
|
|
85
|
+
Size size,
|
|
86
|
+
winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept;
|
|
81
87
|
|
|
82
88
|
ContextContainer::Shared m_contextContainer;
|
|
83
89
|
#pragma warning(push)
|
|
@@ -50,6 +50,10 @@ void DevSettings::toggleElementInspector() noexcept {
|
|
|
50
50
|
"RCTDeviceEventEmitter", "emit", folly::dynamic::array("toggleElementInspector", nullptr));
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
void DevSettings::openDebugger() noexcept {
|
|
54
|
+
assert(false);
|
|
55
|
+
}
|
|
56
|
+
|
|
53
57
|
void DevSettings::addMenuItem(std::string title) noexcept {
|
|
54
58
|
assert(false);
|
|
55
59
|
}
|
|
@@ -24,6 +24,7 @@ struct DevSettings {
|
|
|
24
24
|
REACT_METHOD(setIsDebuggingRemotely) void setIsDebuggingRemotely(bool isDebuggingRemotelyEnabled) noexcept;
|
|
25
25
|
REACT_METHOD(setProfilingEnabled) void setProfilingEnabled(bool isProfilingEnabled) noexcept;
|
|
26
26
|
REACT_METHOD(toggleElementInspector) void toggleElementInspector() noexcept;
|
|
27
|
+
REACT_METHOD(openDebugger) void openDebugger() noexcept;
|
|
27
28
|
REACT_METHOD(addMenuItem) void addMenuItem(std::string title) noexcept;
|
|
28
29
|
REACT_METHOD(setIsShakeToShowDevMenuEnabled) void setIsShakeToShowDevMenuEnabled(bool enabled) noexcept;
|
|
29
30
|
|
|
@@ -78,8 +78,7 @@ winrt::fire_and_forget GetImageSizeAsync(
|
|
|
78
78
|
#ifdef USE_FABRIC
|
|
79
79
|
} else {
|
|
80
80
|
auto result = wicBitmapSourceFromStream(memoryStream);
|
|
81
|
-
|
|
82
|
-
if (errorInfo.empty()) {
|
|
81
|
+
if (!std::get<std::shared_ptr<facebook::react::ImageErrorInfo>>(result)) {
|
|
83
82
|
auto imagingFactory = std::get<winrt::com_ptr<IWICImagingFactory>>(result);
|
|
84
83
|
auto wicBmpSource = std::get<winrt::com_ptr<IWICBitmapSource>>(result);
|
|
85
84
|
UINT width, height;
|
|
@@ -234,15 +234,18 @@ void NativeUIManager::AddRootView(ShadowNode &shadowNode, facebook::react::IReac
|
|
|
234
234
|
Microsoft::ReactNative::SetTag(element, rootTag);
|
|
235
235
|
|
|
236
236
|
// Add listener to size change so we can redo the layout when that happens
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
237
|
+
m_sizeChangedMap.insert(
|
|
238
|
+
{rootTag,
|
|
239
|
+
view.as<xaml::FrameworkElement>().SizeChanged(
|
|
240
|
+
winrt::auto_revoke, [this, rootTag](auto &&, xaml::SizeChangedEventArgs const &args) {
|
|
241
|
+
ApplyLayout(rootTag, args.NewSize().Width, args.NewSize().Height);
|
|
242
|
+
})});
|
|
241
243
|
}
|
|
242
244
|
|
|
243
245
|
void NativeUIManager::removeRootView(Microsoft::ReactNative::ShadowNode &shadow) {
|
|
244
246
|
SystraceSection s("NativeUIManager::removeRootView");
|
|
245
247
|
m_tagsToXamlReactControl.erase(shadow.m_tag);
|
|
248
|
+
m_sizeChangedMap.erase(shadow.m_tag);
|
|
246
249
|
RemoveView(shadow, true);
|
|
247
250
|
}
|
|
248
251
|
|
|
@@ -118,7 +118,7 @@ class NativeUIManager final : public INativeUIManager {
|
|
|
118
118
|
|
|
119
119
|
std::unordered_map<int64_t, YogaNodePtr> m_tagsToYogaNodes;
|
|
120
120
|
std::unordered_map<int64_t, std::unique_ptr<YogaContext>> m_tagsToYogaContext;
|
|
121
|
-
std::
|
|
121
|
+
std::unordered_map<int64_t, xaml::FrameworkElement::SizeChanged_revoker> m_sizeChangedMap;
|
|
122
122
|
std::vector<std::function<void()>> m_batchCompletedCallbacks;
|
|
123
123
|
std::vector<int64_t> m_extraLayoutNodes;
|
|
124
124
|
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
namespace Microsoft::ReactNative {
|
|
12
12
|
|
|
13
|
-
ReactNativeSpecs::
|
|
14
|
-
ReactNativeSpecs::
|
|
13
|
+
ReactNativeSpecs::PlatformConstantsWindowsSpec_PlatformConstantsWindows PlatformConstants::GetConstants() noexcept {
|
|
14
|
+
ReactNativeSpecs::PlatformConstantsWindowsSpec_PlatformConstantsWindows constants;
|
|
15
15
|
|
|
16
16
|
// We don't currently treat Native code differently in a test environment
|
|
17
17
|
constants.isTesting = false;
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
#pragma once
|
|
4
4
|
|
|
5
|
-
#include "codegen/
|
|
5
|
+
#include "codegen/NativePlatformConstantsWindowsSpec.g.h"
|
|
6
6
|
#include <NativeModules.h>
|
|
7
7
|
|
|
8
8
|
namespace Microsoft::ReactNative {
|
|
9
9
|
|
|
10
10
|
REACT_MODULE(PlatformConstants)
|
|
11
11
|
struct PlatformConstants {
|
|
12
|
-
using ModuleSpec = ReactNativeSpecs::
|
|
12
|
+
using ModuleSpec = ReactNativeSpecs::PlatformConstantsWindowsSpec;
|
|
13
13
|
|
|
14
14
|
REACT_GET_CONSTANTS(GetConstants)
|
|
15
|
-
ReactNativeSpecs::
|
|
15
|
+
ReactNativeSpecs::PlatformConstantsWindowsSpec_PlatformConstantsWindows GetConstants() noexcept;
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
} // namespace Microsoft::ReactNative
|
|
@@ -608,8 +608,8 @@ void ReactInstanceWin::InitializeBridgeless() noexcept {
|
|
|
608
608
|
auto timerManager = std::make_shared<facebook::react::TimerManager>(std::move(timerRegistry));
|
|
609
609
|
timerRegistryRaw->setTimerManager(timerManager);
|
|
610
610
|
|
|
611
|
-
auto jsErrorHandlingFunc = [this](facebook::react::
|
|
612
|
-
OnJSError(std::move(
|
|
611
|
+
auto jsErrorHandlingFunc = [this](const facebook::react::JsErrorHandler::ParsedError &error) noexcept {
|
|
612
|
+
OnJSError(std::move(error));
|
|
613
613
|
};
|
|
614
614
|
|
|
615
615
|
if (devSettings->useDirectDebugger) {
|
|
@@ -1239,24 +1239,18 @@ void ReactInstanceWin::OnError(const Mso::ErrorCode &errorCode) noexcept {
|
|
|
1239
1239
|
}
|
|
1240
1240
|
|
|
1241
1241
|
#ifdef USE_FABRIC
|
|
1242
|
-
void ReactInstanceWin::OnJSError(facebook::react::
|
|
1242
|
+
void ReactInstanceWin::OnJSError(const facebook::react::JsErrorHandler::ParsedError &error) noexcept {
|
|
1243
1243
|
ErrorInfo errorInfo;
|
|
1244
|
-
errorInfo.Message =
|
|
1244
|
+
errorInfo.Message = error.message;
|
|
1245
1245
|
auto errorCode = Mso::React::ReactErrorProvider().MakeErrorCode(Mso::React::ReactError{errorInfo.Message.c_str()});
|
|
1246
1246
|
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
for (const facebook::react::MapBuffer &mapBuffer : frames) {
|
|
1250
|
-
errorInfo.Callstack.push_back(
|
|
1251
|
-
{mapBuffer.getString(facebook::react::JSErrorHandlerKey::kFrameFileName),
|
|
1252
|
-
mapBuffer.getString(facebook::react::JSErrorHandlerKey::kFrameMethodName),
|
|
1253
|
-
mapBuffer.getInt(facebook::react::JSErrorHandlerKey::kFrameLineNumber),
|
|
1254
|
-
mapBuffer.getInt(facebook::react::JSErrorHandlerKey::kFrameColumnNumber)});
|
|
1247
|
+
for (const facebook::react::JsErrorHandler::ParsedError::StackFrame &frame : error.frames) {
|
|
1248
|
+
errorInfo.Callstack.push_back({frame.fileName, frame.methodName, frame.lineNumber, frame.columnNumber});
|
|
1255
1249
|
}
|
|
1256
|
-
errorInfo.Id = errorMap.getInt(facebook::react::JSErrorHandlerKey::kExceptionId);
|
|
1257
|
-
errorInfo.Id = errorMap.getInt(facebook::react::JSErrorHandlerKey::kExceptionId);
|
|
1258
1250
|
|
|
1259
|
-
|
|
1251
|
+
errorInfo.Id = error.exceptionId;
|
|
1252
|
+
|
|
1253
|
+
bool isFatal = error.isFatal;
|
|
1260
1254
|
|
|
1261
1255
|
m_state = ReactInstanceState::HasError;
|
|
1262
1256
|
AbandonJSCallQueue();
|
|
@@ -1325,7 +1319,7 @@ void ReactInstanceWin::DrainJSCallQueue() noexcept {
|
|
|
1325
1319
|
|
|
1326
1320
|
#ifdef USE_FABRIC
|
|
1327
1321
|
if (m_bridgelessReactInstance) {
|
|
1328
|
-
m_bridgelessReactInstance->callFunctionOnModule(entry.ModuleName, entry.MethodName, entry.Args);
|
|
1322
|
+
m_bridgelessReactInstance->callFunctionOnModule(entry.ModuleName, entry.MethodName, std::move(entry.Args));
|
|
1329
1323
|
} else
|
|
1330
1324
|
#endif
|
|
1331
1325
|
if (auto instance = m_instance.LoadWithLock()) {
|
|
@@ -1364,7 +1358,7 @@ void ReactInstanceWin::CallJsFunction(
|
|
|
1364
1358
|
if (shouldCall) {
|
|
1365
1359
|
#ifdef USE_FABRIC
|
|
1366
1360
|
if (m_bridgelessReactInstance) {
|
|
1367
|
-
m_bridgelessReactInstance->callFunctionOnModule(moduleName, method, params);
|
|
1361
|
+
m_bridgelessReactInstance->callFunctionOnModule(moduleName, method, std::move(params));
|
|
1368
1362
|
} else
|
|
1369
1363
|
#endif
|
|
1370
1364
|
if (auto instance = m_instance.LoadWithLock()) {
|
|
@@ -141,7 +141,7 @@ class ReactInstanceWin final : public Mso::ActiveObject<IReactInstanceInternal>
|
|
|
141
141
|
void OnError(const Mso::ErrorCode &errorcode) noexcept;
|
|
142
142
|
void OnErrorWithMessage(const std::string &errorMessage) noexcept;
|
|
143
143
|
#ifdef USE_FABRIC
|
|
144
|
-
void OnJSError(facebook::react::
|
|
144
|
+
void OnJSError(const facebook::react::JsErrorHandler::ParsedError &error) noexcept;
|
|
145
145
|
#endif
|
|
146
146
|
void OnLiveReload() noexcept;
|
|
147
147
|
void OnWaitingForDebugger() noexcept;
|
|
@@ -147,7 +147,7 @@ void BatchingEventEmitter::OnFrameUI() noexcept {
|
|
|
147
147
|
});
|
|
148
148
|
|
|
149
149
|
// Don't leave the callback continuously registered as it can waste power.
|
|
150
|
-
// See https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.compositiontarget.rendering?view=winrt-
|
|
150
|
+
// See https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.compositiontarget.rendering?view=winrt-22621
|
|
151
151
|
m_renderingRevoker.revoke();
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -59,11 +59,10 @@ std::future<std::string> LocalBundleReader::LoadBundleAsync(const std::wstring b
|
|
|
59
59
|
winrt::Windows::Storage::StorageFile file{nullptr};
|
|
60
60
|
|
|
61
61
|
// Supports "ms-appx://" or "ms-appdata://"
|
|
62
|
-
|
|
63
|
-
if (bundleUri._Starts_with(L"ms-app")) {
|
|
62
|
+
if (bundleUri.starts_with(L"ms-app")) {
|
|
64
63
|
winrt::Windows::Foundation::Uri uri(bundleUri);
|
|
65
64
|
file = co_await winrt::Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(uri);
|
|
66
|
-
} else if (bundleUri.
|
|
65
|
+
} else if (bundleUri.starts_with(L"resource://")) {
|
|
67
66
|
winrt::Windows::Foundation::Uri uri(bundleUri);
|
|
68
67
|
co_return GetBundleFromEmbeddedResource(uri);
|
|
69
68
|
} else {
|