react-native-windows 0.68.1 → 0.69.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 +1 -3
- package/Chakra/ChakraHelpers.cpp +0 -1
- package/Directory.Build.props +3 -0
- package/Directory.Build.targets +1 -1
- package/Folly/TEMP_UntilFollyUpdate/dynamic-inl.h +1411 -0
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +336 -0
- package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.h +182 -0
- package/Libraries/ActionSheetIOS/ActionSheetIOS.js +7 -0
- package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +1 -0
- package/Libraries/Alert/Alert.windows.js +2 -2
- package/Libraries/Animated/AnimatedImplementation.js +1 -1
- package/Libraries/Animated/NativeAnimatedHelper.js +55 -9
- package/Libraries/Animated/NativeAnimatedModule.js +1 -0
- package/Libraries/Animated/NativeAnimatedTurboModule.js +1 -0
- package/Libraries/Animated/animations/TimingAnimation.js +6 -11
- package/Libraries/Animated/createAnimatedComponent.js +2 -2
- package/Libraries/Animated/nodes/AnimatedColor.js +95 -29
- package/Libraries/Animated/nodes/AnimatedInterpolation.js +19 -22
- package/Libraries/Animated/nodes/AnimatedNode.js +2 -2
- package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
- package/Libraries/AppState/AppState.js +1 -1
- package/Libraries/Blob/URL.js +7 -1
- package/Libraries/Components/Button.js +3 -0
- package/Libraries/Components/Button.windows.js +4 -0
- package/Libraries/Components/DatePickerAndroid/NativeDatePickerAndroid.js +5 -0
- package/Libraries/Components/Pressable/Pressable.js +3 -3
- package/Libraries/Components/Pressable/Pressable.windows.js +3 -3
- package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +47 -38
- package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +15 -7
- package/Libraries/Components/ScrollView/ScrollView.js +1 -1
- package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +16 -3
- package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +3 -1
- package/Libraries/Components/Slider/Slider.js +0 -2
- package/Libraries/Components/Slider/SliderNativeComponent.js +0 -1
- package/Libraries/Components/StatusBar/StatusBar.js +6 -1
- package/Libraries/Components/Switch/Switch.js +11 -1
- package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +114 -109
- package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +17 -9
- package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +13 -5
- package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +10 -0
- package/Libraries/Components/TextInput/TextInput.js +1 -8
- package/Libraries/Components/TextInput/TextInput.windows.js +4 -9
- package/Libraries/Components/TextInput/TextInputState.js +10 -2
- package/Libraries/Components/TextInput/TextInputState.windows.js +10 -3
- package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +1 -1
- package/Libraries/Components/Touchable/TouchableBounce.js +1 -0
- package/Libraries/Components/Touchable/TouchableHighlight.js +1 -0
- package/Libraries/Components/Touchable/TouchableHighlight.windows.js +6 -5
- package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -0
- package/Libraries/Components/Touchable/TouchableOpacity.js +7 -1
- package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -0
- package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +2 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
- package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
- package/Libraries/Components/View/View.windows.js +33 -1
- package/Libraries/Components/View/ViewNativeComponent.js +68 -8
- package/Libraries/Components/View/ViewPropTypes.js +36 -4
- package/Libraries/Components/View/ViewPropTypes.windows.js +36 -4
- package/Libraries/Core/Devtools/parseHermesStack.js +1 -1
- package/Libraries/Core/ExceptionsManager.js +1 -1
- package/Libraries/Core/RawEventEmitter.js +38 -0
- package/Libraries/Core/ReactNativeVersion.js +2 -2
- package/Libraries/Core/polyfillPromise.js +32 -0
- package/Libraries/Core/setUpReactDevTools.js +3 -2
- package/Libraries/EventEmitter/NativeEventEmitter.js +3 -3
- package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -1
- package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +3 -3
- package/Libraries/Events/CustomEvent.js +32 -0
- package/Libraries/Events/EventPolyfill.js +239 -0
- package/Libraries/Image/Image.android.js +0 -6
- package/Libraries/Image/Image.ios.js +0 -6
- package/Libraries/Image/Image.windows.js +2 -8
- package/Libraries/Image/ImageViewNativeComponent.js +18 -3
- package/Libraries/Image/TextInlineImageNativeComponent.js +23 -15
- package/Libraries/Inspector/Inspector.js +2 -4
- package/Libraries/Interaction/BridgeSpyStallHandler.js +4 -3
- package/Libraries/Interaction/InteractionManager.js +1 -12
- package/Libraries/Interaction/TaskQueue.js +5 -4
- package/Libraries/LayoutAnimation/LayoutAnimation.js +13 -0
- package/Libraries/Linking/Linking.js +1 -1
- package/Libraries/Lists/FlatList.js +27 -6
- package/Libraries/Lists/VirtualizedList.js +71 -55
- package/Libraries/Lists/VirtualizedListContext.js +7 -3
- package/Libraries/Lists/VirtualizedSectionList.js +2 -2
- package/Libraries/Lists/__tests__/{FillRateHelper-test.windows.js → FillRateHelper-test.js} +2 -2
- package/Libraries/Lists/__tests__/{FlatList-test.windows.js → FlatList-test.js} +2 -2
- package/Libraries/Lists/__tests__/{SectionList-test.windows.js → SectionList-test.js} +14 -14
- package/Libraries/Lists/__tests__/{VirtualizeUtils-test.windows.js → VirtualizeUtils-test.js} +3 -3
- package/Libraries/Lists/__tests__/{VirtualizedList-test.windows.js → VirtualizedList-test.js} +91 -42
- package/Libraries/Lists/__tests__/{VirtualizedSectionList-test.windows.js → VirtualizedSectionList-test.js} +13 -13
- package/Libraries/LogBox/Data/LogBoxData.js +2 -2
- package/Libraries/LogBox/Data/LogBoxLog.js +1 -1
- package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
- package/Libraries/LogBox/Data/parseLogBoxLog.js +1 -1
- package/Libraries/LogBox/LogBox.js +2 -21
- package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +1 -0
- package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +2 -1
- package/Libraries/NativeComponent/BaseViewConfig.android.js +295 -0
- package/Libraries/NativeComponent/BaseViewConfig.ios.js +333 -0
- package/Libraries/NativeComponent/BaseViewConfig.windows.js +334 -0
- package/Libraries/NativeComponent/NativeComponentRegistry.js +0 -2
- package/Libraries/NativeComponent/PlatformBaseViewConfig.js +24 -0
- package/Libraries/NativeComponent/StaticViewConfigValidator.js +7 -42
- package/Libraries/NativeComponent/ViewConfig.js +4 -4
- package/Libraries/NativeComponent/ViewConfigIgnore.js +54 -0
- package/Libraries/Network/FormData.js +7 -1
- package/Libraries/Pressability/Pressability.js +115 -46
- package/Libraries/Pressability/Pressability.windows.js +190 -74
- package/Libraries/Pressability/PressabilityDebug.js +5 -9
- package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +1 -0
- package/Libraries/ReactNative/AppContainer.js +1 -1
- package/Libraries/ReactNative/{DummyUIManager.js → BridgelessUIManager.js} +62 -40
- package/Libraries/ReactNative/PaperUIManager.windows.js +5 -5
- package/Libraries/ReactNative/ReactNativeFeatureFlags.js +39 -0
- package/Libraries/ReactNative/UIManager.js +2 -3
- package/Libraries/ReactNative/renderApplication.js +4 -0
- package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +8 -0
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +5908 -4906
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +2100 -1918
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +2567 -2352
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +5610 -4844
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +1710 -1556
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +1830 -1639
- package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -1
- package/Libraries/StyleSheet/EdgeInsetsPropType.js +4 -1
- package/Libraries/StyleSheet/StyleSheetTypes.js +59 -66
- package/Libraries/StyleSheet/normalizeColor.js +1 -1
- package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
- package/Libraries/StyleSheet/private/_TransformStyle.js +53 -0
- package/Libraries/StyleSheet/processTransform.windows.js +272 -0
- package/Libraries/Text/Text.js +13 -7
- package/Libraries/Text/Text.windows.js +16 -7
- package/Libraries/Text/TextNativeComponent.js +2 -0
- package/Libraries/Text/TextProps.js +10 -0
- package/Libraries/Types/CoreEventTypes.js +13 -1
- package/Libraries/Types/CoreEventTypes.windows.js +26 -1
- package/Libraries/Utilities/Appearance.js +0 -8
- package/Libraries/Utilities/HMRClient.js +1 -1
- package/Libraries/Utilities/ReactNativeTestTools.js +1 -0
- package/Libraries/Utilities/codegenNativeComponent.js +17 -6
- package/Libraries/Utilities/stringifySafe.js +4 -1
- package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +3 -3
- package/Libraries/WebSocket/WebSocket.js +1 -1
- package/Libraries/vendor/emitter/_EmitterSubscription.js +1 -1
- package/Libraries/vendor/emitter/_EventEmitter.js +1 -1
- package/Libraries/vendor/emitter/_EventSubscription.js +1 -1
- package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +1 -4
- package/Microsoft.ReactNative/DynamicReader.cpp +3 -3
- package/Microsoft.ReactNative/Fabric/ComponentView.h +1 -0
- package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.cpp +36 -2
- package/Microsoft.ReactNative/Fabric/ComponentViewRegistry.h +1 -0
- package/Microsoft.ReactNative/Fabric/DWriteHelpers.cpp +19 -0
- package/Microsoft.ReactNative/Fabric/DWriteHelpers.h +13 -0
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +65 -19
- package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +2 -0
- package/Microsoft.ReactNative/Fabric/ParagraphComponentView.cpp +36 -10
- package/Microsoft.ReactNative/Fabric/ScrollViewComponentView.cpp +2 -0
- package/Microsoft.ReactNative/Fabric/SliderComponentView.cpp +107 -0
- package/Microsoft.ReactNative/Fabric/SliderComponentView.h +51 -0
- package/Microsoft.ReactNative/Fabric/SwitchComponentView.cpp +109 -0
- package/Microsoft.ReactNative/Fabric/SwitchComponentView.h +52 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentDescriptor.h +197 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.cpp +308 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputComponentView.h +52 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.cpp +31 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputEventEmitter.h +33 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.cpp +81 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputProps.h +132 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.cpp +193 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputShadowNode.h +85 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.cpp +76 -0
- package/Microsoft.ReactNative/Fabric/TextInput/WindowsTextInputState.h +99 -0
- package/Microsoft.ReactNative/Fabric/ViewComponentView.cpp +35 -3
- package/Microsoft.ReactNative/Fabric/ViewComponentView.h +1 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/EventEmitters.h +5 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/rncore/Props.h +5 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.cpp +46 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/slider/SliderMeasurementsManager.h +30 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/Color.cpp +2 -0
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/conversions.h +1 -9
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/graphics/platform/cxx/react/renderer/graphics/Color.h +3 -1
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +119 -57
- package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -1
- package/Microsoft.ReactNative/IViewManager.idl +3 -3
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +13 -107
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +2 -2
- package/Microsoft.ReactNative/Modules/AppStateModule.cpp +2 -0
- package/Microsoft.ReactNative/Modules/AppStateModule.h +2 -0
- package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
- package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -5
- package/Microsoft.ReactNative/Modules/TimingModule.cpp +2 -2
- package/Microsoft.ReactNative/Modules/TimingModule.h +2 -2
- package/Microsoft.ReactNative/ReactHost/{ReactContext.cpp → MsoReactContext.cpp} +1 -1
- package/Microsoft.ReactNative/ReactHost/{ReactContext.h → MsoReactContext.h} +0 -0
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +15 -2
- package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
- package/Microsoft.ReactNative/ReactHost/ReactNativeHeaders.h +1 -1
- package/Microsoft.ReactNative/ReactInstanceSettings.idl +12 -2
- package/Microsoft.ReactNative/ReactPackageBuilder.cpp +1 -1
- package/Microsoft.ReactNative/ReactRootView.cpp +2 -1
- package/Microsoft.ReactNative/RedBox.cpp +3 -2
- package/Microsoft.ReactNative/TurboModulesProvider.cpp +3 -2
- package/Microsoft.ReactNative/TurboModulesProvider.h +4 -1
- package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +41 -0
- package/Microsoft.ReactNative/Utils/ValueUtils.cpp +3 -2
- package/Microsoft.ReactNative/Views/ControlViewManager.cpp +32 -0
- package/Microsoft.ReactNative/Views/ControlViewManager.h +11 -0
- package/Microsoft.ReactNative/Views/DevMenu.cpp +2 -2
- package/Microsoft.ReactNative/Views/FrameworkElementTransferProperties.cpp +13 -2
- package/Microsoft.ReactNative/Views/FrameworkElementViewManager.cpp +149 -22
- package/Microsoft.ReactNative/Views/Image/ImageViewManager.cpp +1 -1
- package/Microsoft.ReactNative/Views/Image/Microsoft.UI.Composition.Effects_Impl.h +5 -11
- package/Microsoft.ReactNative/Views/Image/ReactImage.cpp +2 -1
- package/Microsoft.ReactNative/Views/SliderViewManager.cpp +12 -4
- package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
- package/Microsoft.ReactNative/Views/TextViewManager.cpp +2 -2
- package/Microsoft.ReactNative/Views/TouchEventHandler.cpp +163 -37
- package/Microsoft.ReactNative/Views/TouchEventHandler.h +11 -4
- package/Microsoft.ReactNative/Views/ViewPanel.cpp +3 -23
- package/Microsoft.ReactNative/Views/ViewPanel.h +2 -3
- package/Microsoft.ReactNative/Views/ViewViewManager.cpp +21 -0
- package/Microsoft.ReactNative/XamlUIService.cpp +1 -1
- package/Microsoft.ReactNative/XamlView.h +8 -3
- package/Microsoft.ReactNative.Cxx/CppWinRTIncludes.h +3 -5
- package/Microsoft.ReactNative.Cxx/DesktopWindowBridge.h +1 -1
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +11 -2
- package/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +1 -0
- package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +19 -14
- package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +4 -0
- package/Microsoft.ReactNative.Cxx/JSValueReader.h +2 -2
- package/Microsoft.ReactNative.Cxx/JSValueWriter.h +5 -5
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -1
- package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +2 -3
- package/Microsoft.ReactNative.Cxx/NativeModules.h +3 -3
- package/Microsoft.ReactNative.Cxx/ReactContext.h +3 -3
- package/Microsoft.ReactNative.Cxx/ReactNonAbiValue.h +3 -3
- package/Microsoft.ReactNative.Cxx/XamlUtils.h +44 -5
- package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +0 -6
- package/Mso/activeObject/activeObject.h +2 -2
- package/Mso/compilerAdapters/cppMacros.h +3 -5
- package/Mso/errorCode/errorProvider.h +2 -2
- package/Mso/errorCode/maybe.h +4 -4
- package/Mso/functional/functor.h +6 -6
- package/Mso/functional/functorRef.h +2 -2
- package/Mso/future/details/executor.h +2 -2
- package/Mso/future/details/futureFuncInl.h +4 -4
- package/Mso/future/details/ifuture.h +3 -3
- package/Mso/future/details/maybeInvoker.h +6 -6
- package/Mso/future/details/promiseGroupInl.h +4 -4
- package/Mso/future/details/promiseInl.h +4 -4
- package/Mso/future/details/resultTraits.h +4 -4
- package/Mso/future/details/whenAllInl.h +1 -1
- package/Mso/future/future.h +13 -13
- package/Mso/guid/msoGuidDetails.h +1 -1
- package/Mso/memoryApi/memoryApi.h +13 -7
- package/Mso/motifCpp/gTestAdapter.h +1 -1
- package/Mso/motifCpp/testInfo.h +7 -9
- package/Mso/object/make.h +8 -8
- package/Mso/object/objectRefCount.h +3 -5
- package/Mso/object/objectWithWeakRef.h +10 -14
- package/Mso/object/queryCast.h +4 -4
- package/Mso/object/refCountedObject.h +4 -4
- package/Mso/object/unknownObject.h +7 -7
- package/Mso/platformAdapters/windowsFirst.h +1 -1
- package/Mso/smartPtr/cntPtr.h +8 -8
- package/Mso/src/dispatchQueue/threadPoolScheduler_win.cpp +96 -4
- package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +2 -2
- package/Mso/src/future/futureImpl.h +1 -1
- package/Mso/src/memoryApi/memoryApi.cpp +4 -4
- package/PropertySheets/CppAppConsumeCSharpModule.props +3 -0
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.props +26 -0
- package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.Common.props +12 -0
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/React.Cpp.props +13 -0
- package/PropertySheets/WinUI.props +3 -6
- package/ReactCommon/ReactCommon.vcxproj +2 -4
- package/ReactCommon/ReactCommon.vcxproj.filters +4 -1
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/JSCRuntime.cpp +1480 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/decorator.h +753 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/jsi.h +1331 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +1431 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +103 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +87 -0
- package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +61 -0
- package/ReactCommon/Yoga.cpp +1 -1
- package/Scripts/{Microsoft.ReactNative.ProjectReunion.nuspec → Microsoft.ReactNative.WindowsAppSDK.nuspec} +7 -9
- package/Scripts/OfficeReact.Win32.nuspec +1 -3
- package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +2 -1
- package/Scripts/copyRNLibraries.js +8 -8
- package/Scripts/just.js +1 -1
- package/Scripts/rnw-dependencies.ps1 +41 -10
- package/Scripts/run-desktop-integration-tests.js +6 -6
- package/Shared/AbiSafe.h +3 -3
- package/Shared/BaseScriptStoreImpl.cpp +1 -1
- package/Shared/CppRuntimeOptions.h +50 -0
- package/Shared/CreateModules.h +4 -0
- package/Shared/DevSupportManager.cpp +34 -33
- package/Shared/DevSupportManager.h +1 -2
- package/Shared/HermesRuntimeHolder.cpp +23 -14
- package/Shared/HermesRuntimeHolder.h +8 -2
- package/Shared/IDevSupportManager.h +1 -2
- package/Shared/InspectorPackagerConnection.cpp +7 -5
- package/Shared/InspectorPackagerConnection.h +2 -2
- package/Shared/JSI/ChakraApi.cpp +0 -1
- package/Shared/JSI/ChakraRuntime.cpp +1 -2
- package/Shared/JSI/NapiJsiV8RuntimeHolder.h +1 -1
- package/Shared/JSI/RuntimeHolder.h +2 -0
- package/Shared/Modules/HttpModule.cpp +198 -0
- package/Shared/Modules/HttpModule.h +53 -0
- package/Shared/Modules/WebSocketModule.cpp +5 -1
- package/Shared/Modules/WebSocketModule.h +8 -5
- package/Shared/Networking/IHttpResource.h +53 -0
- package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +3 -3
- package/Shared/Networking/OriginPolicy.h +15 -0
- package/Shared/Networking/OriginPolicyHttpFilter.cpp +746 -0
- package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
- package/Shared/Networking/WinRTHttpResource.cpp +347 -0
- package/Shared/Networking/WinRTHttpResource.h +67 -0
- package/Shared/Networking/WinRTTypes.h +30 -0
- package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +31 -22
- package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
- package/Shared/OInstance.cpp +37 -11
- package/Shared/RuntimeOptions.cpp +93 -15
- package/Shared/RuntimeOptions.h +22 -9
- package/Shared/Shared.vcxitems +126 -5
- package/Shared/Shared.vcxitems.filters +55 -15
- package/Shared/Threading/BatchingQueueThread.cpp +1 -1
- package/Shared/Utils/WinRTConversions.cpp +22 -0
- package/Shared/Utils/WinRTConversions.h +15 -0
- package/Shared/tracing/fbsystrace.h +2 -2
- package/codegen/NativeActionSheetManagerSpec.g.h +6 -0
- package/codegen/NativeAnimatedModuleSpec.g.h +43 -37
- package/codegen/NativeAnimatedTurboModuleSpec.g.h +43 -37
- package/codegen/NativePushNotificationManagerIOSSpec.g.h +2 -0
- package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
- package/codegen/react/components/rnwcore/EventEmitters.cpp +133 -0
- package/codegen/react/components/rnwcore/EventEmitters.h +0 -18
- package/codegen/react/components/rnwcore/Props.cpp +0 -13
- package/codegen/react/components/rnwcore/Props.h +0 -16
- package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
- package/codegen/react/components/rnwcore/ShadowNodes.h +0 -10
- package/include/Shared/cdebug.h +9 -9
- package/index.js +30 -25
- package/index.windows.js +30 -25
- package/jest/preprocessor.js +24 -107
- package/jest/preprocessor_DO_NOT_USE.js +122 -0
- package/metro.config.js +3 -70
- package/package.json +29 -28
- package/react-native.config.js +40 -6
- package/rntypes/index.d.ts +19 -7
- package/stubs/glog/logging.h +1 -1
- package/template/cpp-app/src/App.h +0 -4
- package/template/cs-app/src/App.xaml.cs +0 -5
- package/template/cs-app/src/MainPage.xaml.cs +1 -10
- package/template/cs-app-WinAppSDK/MyApp/App.xaml +16 -0
- package/template/cs-app-WinAppSDK/MyApp/App.xaml.cs +70 -0
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml +14 -0
- package/template/cs-app-WinAppSDK/MyApp/MainWindow.xaml.cs +38 -0
- package/template/cs-app-WinAppSDK/MyApp/Package.appxmanifest +48 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-arm64.pubxml +19 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x64.pubxml +19 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/PublishProfiles/win10-x86.pubxml +19 -0
- package/template/cs-app-WinAppSDK/MyApp/Properties/launchSettings.json +10 -0
- package/template/cs-app-WinAppSDK/MyApp/app.manifest +15 -0
- package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +23 -0
- package/template/cs-app-WinAppSDK/proj/MyApp.csproj +49 -0
- package/template/cs-app-WinAppSDK/proj/MyApp.sln +43 -0
- package/template/cs-app-WinAppSDK/proj/NuGet.Config +17 -0
- package/template/metro.devMode.config.js +2 -51
- package/typings-index.js +5 -1
- package/typings-index.js.map +1 -1
- package/Libraries/Components/SegmentedControlIOS/RCTSegmentedControlNativeComponent.js +0 -44
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js +0 -45
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js +0 -123
- package/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.windows.js +0 -45
- package/Libraries/Components/View/ReactNativeViewViewConfig.js +0 -360
- package/Libraries/Components/View/ReactNativeViewViewConfig.windows.js +0 -390
- package/Libraries/Components/View/ReactNativeViewViewConfigAndroid.js +0 -83
- package/Libraries/ReactNative/UIManagerInjection.js +0 -15
- package/Libraries/Renderer/implementations/ReactFabric-dev.fb.js +0 -24527
- package/Libraries/Renderer/implementations/ReactFabric-prod.fb.js +0 -8309
- package/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js +0 -8961
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js +0 -24948
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js +0 -8400
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js +0 -9049
- package/PropertySheets/CppEnablePackageReferences.props +0 -13
- package/Shared/IHttpResource.h +0 -34
- package/Shared/cdebug.cpp +0 -6
- package/include/Shared/ViewManager.h +0 -34
|
@@ -20,6 +20,10 @@ const facebook::react::SharedViewEventEmitter &BaseComponentView::GetEventEmitte
|
|
|
20
20
|
return m_eventEmitter;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
void BaseComponentView::handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept {
|
|
24
|
+
assert(false); // Unhandled command
|
|
25
|
+
}
|
|
26
|
+
|
|
23
27
|
ViewComponentView::ViewComponentView() {
|
|
24
28
|
static auto const defaultProps = std::make_shared<facebook::react::ViewProps const>();
|
|
25
29
|
m_props = defaultProps;
|
|
@@ -81,6 +85,7 @@ bool ViewComponentView::shouldBeControl() const noexcept {
|
|
|
81
85
|
void ViewComponentView::updateState(
|
|
82
86
|
facebook::react::State::Shared const &state,
|
|
83
87
|
facebook::react::State::Shared const &oldState) noexcept {}
|
|
88
|
+
|
|
84
89
|
void ViewComponentView::updateLayoutMetrics(
|
|
85
90
|
facebook::react::LayoutMetrics const &layoutMetrics,
|
|
86
91
|
facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
|
|
@@ -91,9 +96,6 @@ void ViewComponentView::updateLayoutMetrics(
|
|
|
91
96
|
|
|
92
97
|
winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_panel, layoutMetrics.frame.origin.x);
|
|
93
98
|
winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_panel, layoutMetrics.frame.origin.y);
|
|
94
|
-
|
|
95
|
-
m_panel.Width(layoutMetrics.frame.size.width);
|
|
96
|
-
m_panel.Height(layoutMetrics.frame.size.height);
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
void ViewComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) noexcept {
|
|
@@ -174,6 +176,36 @@ void ViewComponentView::finalizeUpdates(RNComponentViewUpdateMask updateMask) no
|
|
|
174
176
|
m_control.Content(m_panel);
|
|
175
177
|
}
|
|
176
178
|
}
|
|
179
|
+
|
|
180
|
+
if (m_outerBorder) {
|
|
181
|
+
m_outerBorder.Width(m_layoutMetrics.frame.size.width);
|
|
182
|
+
m_outerBorder.Height(m_layoutMetrics.frame.size.height);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (m_control) {
|
|
186
|
+
m_control.Width(m_layoutMetrics.frame.size.width);
|
|
187
|
+
m_control.Height(m_layoutMetrics.frame.size.height);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
m_panel.Width(m_layoutMetrics.frame.size.width);
|
|
191
|
+
m_panel.Height(m_layoutMetrics.frame.size.height);
|
|
192
|
+
|
|
193
|
+
if (m_control) {
|
|
194
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_control, m_layoutMetrics.frame.origin.x);
|
|
195
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_control, m_layoutMetrics.frame.origin.y);
|
|
196
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_outerBorder, 0);
|
|
197
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_outerBorder, 0);
|
|
198
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_panel, 0);
|
|
199
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_panel, 0);
|
|
200
|
+
} else if (m_outerBorder) {
|
|
201
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_outerBorder, m_layoutMetrics.frame.origin.x);
|
|
202
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_outerBorder, m_layoutMetrics.frame.origin.y);
|
|
203
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_panel, 0);
|
|
204
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_panel, 0);
|
|
205
|
+
} else {
|
|
206
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetLeft(m_panel, m_layoutMetrics.frame.origin.x);
|
|
207
|
+
winrt::Microsoft::ReactNative::ViewPanel::SetTop(m_panel, m_layoutMetrics.frame.origin.y);
|
|
208
|
+
}
|
|
177
209
|
}
|
|
178
210
|
|
|
179
211
|
void ViewComponentView::prepareForRecycle() noexcept {}
|
|
@@ -14,6 +14,7 @@ struct BaseComponentView : IComponentView {
|
|
|
14
14
|
virtual const xaml::FrameworkElement Element() const noexcept = 0;
|
|
15
15
|
void updateEventEmitter(facebook::react::EventEmitter::Shared const &eventEmitter) noexcept override;
|
|
16
16
|
const facebook::react::SharedViewEventEmitter &GetEventEmitter() const noexcept;
|
|
17
|
+
void handleCommand(std::string const &commandName, folly::dynamic const &arg) noexcept override;
|
|
17
18
|
|
|
18
19
|
protected:
|
|
19
20
|
facebook::react::SharedViewEventEmitter m_eventEmitter;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include "SliderMeasurementsManager.h"
|
|
9
|
+
|
|
10
|
+
#include <react/renderer/core/conversions.h>
|
|
11
|
+
#include <winrt/Windows.Foundation.Collections.h>
|
|
12
|
+
#include <winrt/Windows.UI.Xaml.Interop.h>
|
|
13
|
+
|
|
14
|
+
#include "ReactContext.h"
|
|
15
|
+
#include "ReactHost/React.h"
|
|
16
|
+
#include "ReactPropertyBag.h"
|
|
17
|
+
#include "winrt/Microsoft.ReactNative.h"
|
|
18
|
+
|
|
19
|
+
namespace facebook::react {
|
|
20
|
+
|
|
21
|
+
void InitSliderMeasurements(const Mso::React::IReactContext &reactContext) {
|
|
22
|
+
auto slider = xaml::Controls::Slider();
|
|
23
|
+
xaml::Style sliderStyle;
|
|
24
|
+
xaml::Application::Current()
|
|
25
|
+
.Resources()
|
|
26
|
+
.TryLookup(winrt::box_value(winrt::xaml_typename<xaml::Controls::Slider>()))
|
|
27
|
+
.as(sliderStyle);
|
|
28
|
+
slider.Style(sliderStyle);
|
|
29
|
+
|
|
30
|
+
slider.Measure({std::numeric_limits<float>::infinity(), std::numeric_limits<float>::infinity()});
|
|
31
|
+
auto size = slider.DesiredSize();
|
|
32
|
+
winrt::Microsoft::ReactNative::ReactPropertyBag(reactContext.Properties())
|
|
33
|
+
.Set(
|
|
34
|
+
winrt::Microsoft::ReactNative::ReactPropertyId<winrt::Windows::Foundation::Size>(L"SliderMeasurements"),
|
|
35
|
+
size);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Size SliderMeasurementsManager::measure(SurfaceId surfaceId, LayoutConstraints layoutConstraints) const {
|
|
39
|
+
auto context = m_contextContainer->at<winrt::Microsoft::ReactNative::ReactContext>("MSRN.ReactContext");
|
|
40
|
+
auto size = *context.Properties().Get(
|
|
41
|
+
winrt::Microsoft::ReactNative::ReactPropertyId<winrt::Windows::Foundation::Size>(L"SliderMeasurements"));
|
|
42
|
+
|
|
43
|
+
return {static_cast<float>(size.Width), static_cast<float>(size.Height)};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <CppWinrtIncludes.h>
|
|
4
|
+
#include <UI.Xaml.Controls.h>
|
|
5
|
+
#include <react/renderer/core/ConcreteComponentDescriptor.h>
|
|
6
|
+
#include <react/renderer/core/LayoutConstraints.h>
|
|
7
|
+
#include <react/utils/ContextContainer.h>
|
|
8
|
+
|
|
9
|
+
namespace facebook::react {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Class that manages slider measurements across platforms.
|
|
13
|
+
* On iOS it is a noop, since the height is passed in from JS on iOS only.
|
|
14
|
+
*/
|
|
15
|
+
class SliderMeasurementsManager {
|
|
16
|
+
public:
|
|
17
|
+
SliderMeasurementsManager(const ContextContainer::Shared &contextContainer) : m_contextContainer(contextContainer) {}
|
|
18
|
+
|
|
19
|
+
static inline bool shouldMeasureSlider() {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
Size measure(SurfaceId surfaceId, LayoutConstraints layoutConstraints) const;
|
|
24
|
+
|
|
25
|
+
private:
|
|
26
|
+
ContextContainer::Shared m_contextContainer;
|
|
27
|
+
mutable xaml::Controls::Slider m_slider{nullptr};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
} // namespace facebook::react
|
|
@@ -15,6 +15,7 @@ bool isColorMeaningful(SharedColor const &color) noexcept {
|
|
|
15
15
|
return colorComponentsFromColor(color).alpha > 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
#ifndef CORE_ABI
|
|
18
19
|
xaml::Media::Brush SharedColor::AsWindowsBrush() const {
|
|
19
20
|
if (!m_color)
|
|
20
21
|
return nullptr;
|
|
@@ -23,6 +24,7 @@ xaml::Media::Brush SharedColor::AsWindowsBrush() const {
|
|
|
23
24
|
}
|
|
24
25
|
return xaml::Media::SolidColorBrush(m_color->m_color);
|
|
25
26
|
}
|
|
27
|
+
#endif // CORE_ABI
|
|
26
28
|
|
|
27
29
|
SharedColor colorFromComponents(ColorComponents components) {
|
|
28
30
|
float ratio = 255;
|
|
@@ -58,15 +58,7 @@ inline void fromRawValue(const PropsParserContext &context, const RawValue &valu
|
|
|
58
58
|
|
|
59
59
|
#ifdef ANDROID
|
|
60
60
|
|
|
61
|
-
inline
|
|
62
|
-
ColorComponents components = colorComponentsFromColor(color);
|
|
63
|
-
auto ratio = 255.f;
|
|
64
|
-
return (
|
|
65
|
-
((int)round(components.alpha * ratio) & 0xff) << 24 | ((int)round(components.red * ratio) & 0xff) << 16 |
|
|
66
|
-
((int)round(components.green * ratio) & 0xff) << 8 | ((int)round(components.blue * ratio) & 0xff));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
inline int toMapBuffer(const SharedColor &color) {
|
|
61
|
+
inline int toAndroidRepr(const SharedColor &color) {
|
|
70
62
|
ColorComponents components = colorComponentsFromColor(color);
|
|
71
63
|
auto ratio = 255.f;
|
|
72
64
|
return (
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
#include <limits>
|
|
13
13
|
|
|
14
14
|
#include <CppWinRTIncludes.h>
|
|
15
|
-
#include <butter/optional.h>
|
|
16
15
|
#include <react/renderer/graphics/ColorComponents.h>
|
|
16
|
+
#include <optional>
|
|
17
17
|
|
|
18
18
|
namespace facebook {
|
|
19
19
|
namespace react {
|
|
@@ -87,7 +87,9 @@ class SharedColor {
|
|
|
87
87
|
return m_color->m_color;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
#ifndef CORE_ABI
|
|
90
91
|
xaml::Media::Brush AsWindowsBrush() const;
|
|
92
|
+
#endif
|
|
91
93
|
|
|
92
94
|
private:
|
|
93
95
|
std::shared_ptr<Color> m_color;
|
package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp
CHANGED
|
@@ -5,86 +5,148 @@
|
|
|
5
5
|
|
|
6
6
|
#include "pch.h"
|
|
7
7
|
|
|
8
|
-
#include
|
|
9
|
-
|
|
8
|
+
#include <Fabric/DWriteHelpers.h>
|
|
10
9
|
#include <dwrite.h>
|
|
10
|
+
#include "TextLayoutManager.h"
|
|
11
11
|
|
|
12
12
|
#include <unicode.h>
|
|
13
13
|
|
|
14
|
-
namespace facebook {
|
|
15
|
-
namespace react {
|
|
14
|
+
namespace facebook::react {
|
|
16
15
|
|
|
17
|
-
TextLayoutManager
|
|
16
|
+
void TextLayoutManager::GetTextLayout(
|
|
17
|
+
AttributedStringBox attributedStringBox,
|
|
18
|
+
ParagraphAttributes paragraphAttributes,
|
|
19
|
+
LayoutConstraints layoutConstraints,
|
|
20
|
+
const std::optional<TextAlignment> &textAlignment,
|
|
21
|
+
winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept {
|
|
22
|
+
if (attributedStringBox.getValue().isEmpty())
|
|
23
|
+
return;
|
|
24
|
+
|
|
25
|
+
auto fragments = attributedStringBox.getValue().getFragments();
|
|
26
|
+
auto outerFragment = fragments[0];
|
|
27
|
+
|
|
28
|
+
DWRITE_FONT_STYLE style = DWRITE_FONT_STYLE_NORMAL;
|
|
29
|
+
if (outerFragment.textAttributes.fontStyle == facebook::react::FontStyle::Italic)
|
|
30
|
+
style = DWRITE_FONT_STYLE_ITALIC;
|
|
31
|
+
else if (outerFragment.textAttributes.fontStyle == facebook::react::FontStyle::Oblique)
|
|
32
|
+
style = DWRITE_FONT_STYLE_OBLIQUE;
|
|
33
|
+
|
|
34
|
+
winrt::com_ptr<IDWriteTextFormat> spTextFormat;
|
|
35
|
+
winrt::check_hresult(Microsoft::ReactNative::DWriteFactory()->CreateTextFormat(
|
|
36
|
+
outerFragment.textAttributes.fontFamily.empty()
|
|
37
|
+
? L"Segoe UI"
|
|
38
|
+
: Microsoft::Common::Unicode::Utf8ToUtf16(outerFragment.textAttributes.fontFamily).c_str(),
|
|
39
|
+
nullptr, // Font collection (nullptr sets it to use the system font collection).
|
|
40
|
+
static_cast<DWRITE_FONT_WEIGHT>(outerFragment.textAttributes.fontWeight.value_or(
|
|
41
|
+
static_cast<facebook::react::FontWeight>(DWRITE_FONT_WEIGHT_REGULAR))),
|
|
42
|
+
style,
|
|
43
|
+
DWRITE_FONT_STRETCH_NORMAL,
|
|
44
|
+
outerFragment.textAttributes.fontSize,
|
|
45
|
+
L"",
|
|
46
|
+
spTextFormat.put()));
|
|
47
|
+
|
|
48
|
+
DWRITE_TEXT_ALIGNMENT alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
|
|
49
|
+
if (textAlignment) {
|
|
50
|
+
switch (*textAlignment) {
|
|
51
|
+
case facebook::react::TextAlignment::Center:
|
|
52
|
+
alignment = DWRITE_TEXT_ALIGNMENT_CENTER;
|
|
53
|
+
break;
|
|
54
|
+
case facebook::react::TextAlignment::Justified:
|
|
55
|
+
alignment = DWRITE_TEXT_ALIGNMENT_JUSTIFIED;
|
|
56
|
+
break;
|
|
57
|
+
case facebook::react::TextAlignment::Left:
|
|
58
|
+
alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
|
|
59
|
+
break;
|
|
60
|
+
case facebook::react::TextAlignment::Right:
|
|
61
|
+
alignment = DWRITE_TEXT_ALIGNMENT_TRAILING;
|
|
62
|
+
break;
|
|
63
|
+
// TODO use LTR values
|
|
64
|
+
case facebook::react::TextAlignment::Natural:
|
|
65
|
+
alignment = DWRITE_TEXT_ALIGNMENT_LEADING;
|
|
66
|
+
break;
|
|
67
|
+
default:
|
|
68
|
+
assert(false);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
winrt::check_hresult(spTextFormat->SetTextAlignment(alignment));
|
|
72
|
+
|
|
73
|
+
auto str = Microsoft::Common::Unicode::Utf8ToUtf16(attributedStringBox.getValue().getString());
|
|
74
|
+
|
|
75
|
+
winrt::check_hresult(Microsoft::ReactNative::DWriteFactory()->CreateTextLayout(
|
|
76
|
+
str.c_str(), // The string to be laid out and formatted.
|
|
77
|
+
static_cast<UINT32>(str.length()), // The length of the string.
|
|
78
|
+
spTextFormat.get(), // The text format to apply to the string (contains font information, etc).
|
|
79
|
+
layoutConstraints.maximumSize.width, // The width of the layout box.
|
|
80
|
+
layoutConstraints.maximumSize.height, // The height of the layout box.
|
|
81
|
+
spTextLayout.put() // The IDWriteTextLayout interface pointer.
|
|
82
|
+
));
|
|
83
|
+
|
|
84
|
+
unsigned int position = 0;
|
|
85
|
+
unsigned int length = 0;
|
|
86
|
+
for (const auto &fragment : fragments) {
|
|
87
|
+
length = static_cast<UINT32>(fragment.string.length());
|
|
88
|
+
DWRITE_TEXT_RANGE range = {position, length};
|
|
89
|
+
TextAttributes attributes = fragment.textAttributes;
|
|
90
|
+
DWRITE_FONT_STYLE fragmentStyle = DWRITE_FONT_STYLE_NORMAL;
|
|
91
|
+
if (attributes.fontStyle == facebook::react::FontStyle::Italic)
|
|
92
|
+
fragmentStyle = DWRITE_FONT_STYLE_ITALIC;
|
|
93
|
+
else if (attributes.fontStyle == facebook::react::FontStyle::Oblique)
|
|
94
|
+
fragmentStyle = DWRITE_FONT_STYLE_OBLIQUE;
|
|
95
|
+
|
|
96
|
+
winrt::check_hresult(spTextLayout->SetFontFamilyName(
|
|
97
|
+
attributes.fontFamily.empty() ? L"Segoe UI"
|
|
98
|
+
: Microsoft::Common::Unicode::Utf8ToUtf16(attributes.fontFamily).c_str(),
|
|
99
|
+
range));
|
|
100
|
+
winrt::check_hresult(spTextLayout->SetFontWeight(
|
|
101
|
+
static_cast<DWRITE_FONT_WEIGHT>(
|
|
102
|
+
attributes.fontWeight.value_or(static_cast<facebook::react::FontWeight>(DWRITE_FONT_WEIGHT_REGULAR))),
|
|
103
|
+
range));
|
|
104
|
+
winrt::check_hresult(spTextLayout->SetFontStyle(fragmentStyle, range));
|
|
105
|
+
winrt::check_hresult(spTextLayout->SetFontSize(attributes.fontSize, range));
|
|
106
|
+
|
|
107
|
+
position += length;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
18
110
|
|
|
19
|
-
// TODO: This is a placeholder implementation to get basic text rendering. This should not be considered a real
|
|
20
|
-
// implementation. It currently has various performance issues (like creating a new factory on every run), and only
|
|
21
|
-
// handles single strings, and makes all kinds of assumptions around things like locale, font family etc. This whole
|
|
22
|
-
// implementation will need to be replaced to get text rendering/layout to work properly.
|
|
23
111
|
TextMeasurement TextLayoutManager::measure(
|
|
24
112
|
AttributedStringBox attributedStringBox,
|
|
25
113
|
ParagraphAttributes paragraphAttributes,
|
|
26
114
|
LayoutConstraints layoutConstraints) const {
|
|
27
|
-
winrt::com_ptr<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
else if (fragment.textAttributes.fontStyle == facebook::react::FontStyle::Oblique)
|
|
36
|
-
style = DWRITE_FONT_STYLE_OBLIQUE;
|
|
37
|
-
|
|
38
|
-
winrt::com_ptr<IDWriteTextFormat> spTextFormat;
|
|
39
|
-
spDWriteFactory->CreateTextFormat(
|
|
40
|
-
fragment.textAttributes.fontFamily.empty()
|
|
41
|
-
? L"Segoe UI"
|
|
42
|
-
: Microsoft::Common::Unicode::Utf8ToUtf16(fragment.textAttributes.fontFamily).c_str(),
|
|
43
|
-
NULL, // Font collection (NULL sets it to use the system font collection).
|
|
44
|
-
static_cast<DWRITE_FONT_WEIGHT>(fragment.textAttributes.fontWeight.value_or(
|
|
45
|
-
static_cast<facebook::react::FontWeight>(DWRITE_FONT_WEIGHT_REGULAR))),
|
|
46
|
-
style,
|
|
47
|
-
DWRITE_FONT_STRETCH_NORMAL,
|
|
48
|
-
fragment.textAttributes.fontSize,
|
|
49
|
-
L"en-us",
|
|
50
|
-
spTextFormat.put());
|
|
51
|
-
|
|
52
|
-
auto str = Microsoft::Common::Unicode::Utf8ToUtf16(fragment.string);
|
|
53
|
-
|
|
54
|
-
winrt::com_ptr<IDWriteTextLayout> spTextLayout;
|
|
55
|
-
spDWriteFactory->CreateTextLayout(
|
|
56
|
-
str.c_str(), // The string to be laid out and formatted.
|
|
57
|
-
static_cast<UINT32>(str.length()), // The length of the string.
|
|
58
|
-
spTextFormat.get(), // The text format to apply to the string (contains font information, etc).
|
|
59
|
-
layoutConstraints.maximumSize.width, // The width of the layout box.
|
|
60
|
-
layoutConstraints.maximumSize.height, // The height of the layout box.
|
|
61
|
-
spTextLayout.put() // The IDWriteTextLayout interface pointer.
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
TextMeasurement tm;
|
|
65
|
-
|
|
66
|
-
DWRITE_TEXT_METRICS dtm;
|
|
67
|
-
spTextLayout->GetMetrics(&dtm);
|
|
115
|
+
winrt::com_ptr<IDWriteTextLayout> spTextLayout;
|
|
116
|
+
|
|
117
|
+
GetTextLayout(attributedStringBox, paragraphAttributes, layoutConstraints, TextAlignment::Left, spTextLayout);
|
|
118
|
+
|
|
119
|
+
TextMeasurement tm{};
|
|
120
|
+
if (spTextLayout) {
|
|
121
|
+
DWRITE_TEXT_METRICS dtm{};
|
|
122
|
+
winrt::check_hresult(spTextLayout->GetMetrics(&dtm));
|
|
68
123
|
tm.size = {dtm.width, dtm.height};
|
|
69
|
-
return tm;
|
|
70
124
|
}
|
|
125
|
+
return tm;
|
|
126
|
+
}
|
|
71
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Measures an AttributedString on the platform, as identified by some
|
|
130
|
+
* opaque cache ID.
|
|
131
|
+
*/
|
|
132
|
+
TextMeasurement TextLayoutManager::measureCachedSpannableById(
|
|
133
|
+
int64_t cacheId,
|
|
134
|
+
ParagraphAttributes const ¶graphAttributes,
|
|
135
|
+
LayoutConstraints layoutConstraints) const {
|
|
136
|
+
assert(false);
|
|
72
137
|
return {};
|
|
73
|
-
}
|
|
138
|
+
}
|
|
74
139
|
|
|
75
140
|
LinesMeasurements TextLayoutManager::measureLines(
|
|
76
141
|
AttributedString attributedString,
|
|
77
142
|
ParagraphAttributes paragraphAttributes,
|
|
78
143
|
Size size) const {
|
|
79
144
|
assert(false);
|
|
80
|
-
|
|
81
|
-
std::vector<LineMeasurement> paragraphLines{};
|
|
82
|
-
return paragraphLines;
|
|
145
|
+
return {};
|
|
83
146
|
}
|
|
84
147
|
|
|
85
148
|
void *TextLayoutManager::getNativeTextLayoutManager() const {
|
|
86
149
|
return (void *)this;
|
|
87
150
|
}
|
|
88
151
|
|
|
89
|
-
} // namespace react
|
|
90
|
-
} // namespace facebook
|
|
152
|
+
} // namespace facebook::react
|
package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#pragma once
|
|
5
5
|
|
|
6
|
+
#include <dwrite.h>
|
|
6
7
|
#include <react/renderer/attributedstring/AttributedString.h>
|
|
7
8
|
#include <react/renderer/attributedstring/AttributedStringBox.h>
|
|
8
9
|
#include <react/renderer/attributedstring/ParagraphAttributes.h>
|
|
@@ -27,7 +28,7 @@ class TextLayoutManager {
|
|
|
27
28
|
|
|
28
29
|
#pragma region required interface from core cxx cross platform impl
|
|
29
30
|
TextLayoutManager(const ContextContainer::Shared &contextContainer) : m_contextContainer(contextContainer){};
|
|
30
|
-
~TextLayoutManager();
|
|
31
|
+
~TextLayoutManager() = default;
|
|
31
32
|
|
|
32
33
|
/*
|
|
33
34
|
* Measures `attributedStringBox` using native text rendering infrastructure.
|
|
@@ -44,12 +45,28 @@ class TextLayoutManager {
|
|
|
44
45
|
LinesMeasurements measureLines(AttributedString attributedString, ParagraphAttributes paragraphAttributes, Size size)
|
|
45
46
|
const;
|
|
46
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Measures an AttributedString on the platform, as identified by some
|
|
50
|
+
* opaque cache ID.
|
|
51
|
+
*/
|
|
52
|
+
TextMeasurement measureCachedSpannableById(
|
|
53
|
+
int64_t cacheId,
|
|
54
|
+
ParagraphAttributes const ¶graphAttributes,
|
|
55
|
+
LayoutConstraints layoutConstraints) const;
|
|
56
|
+
|
|
47
57
|
/*
|
|
48
58
|
* Returns an opaque pointer to platform-specific TextLayoutManager.
|
|
49
59
|
* Is used on a native views layer to delegate text rendering to the manager.
|
|
50
60
|
*/
|
|
51
61
|
void *getNativeTextLayoutManager() const;
|
|
52
62
|
|
|
63
|
+
static void GetTextLayout(
|
|
64
|
+
AttributedStringBox attributedStringBox,
|
|
65
|
+
ParagraphAttributes paragraphAttributes,
|
|
66
|
+
LayoutConstraints layoutConstraints,
|
|
67
|
+
const std::optional<TextAlignment> &textAlignment,
|
|
68
|
+
winrt::com_ptr<IDWriteTextLayout> &spTextLayout) noexcept;
|
|
69
|
+
|
|
53
70
|
#pragma endregion
|
|
54
71
|
|
|
55
72
|
private:
|
|
@@ -88,18 +88,18 @@ namespace Microsoft.ReactNative
|
|
|
88
88
|
)
|
|
89
89
|
void OnPointerEvent(Object view, ReactPointerEventArgs args);
|
|
90
90
|
};
|
|
91
|
-
|
|
91
|
+
|
|
92
92
|
[webhosthidden]
|
|
93
93
|
DOC_STRING(
|
|
94
94
|
"Enables view managers to track when views are"
|
|
95
|
-
"removed from
|
|
95
|
+
"removed from their shadow trees. "
|
|
96
96
|
)
|
|
97
97
|
interface IViewManagerWithDropViewInstance {
|
|
98
98
|
DOC_STRING(
|
|
99
99
|
"Invoked when React has removed the view "
|
|
100
100
|
"from its shadow tree. Note this method call is distinct from "
|
|
101
101
|
"the XAML Unloaded event, which is asynchronously triggered "
|
|
102
|
-
"when the
|
|
102
|
+
"from when the removal of the view from the UI tree happens. "
|
|
103
103
|
)
|
|
104
104
|
void OnDropViewInstance(XAML_NAMESPACE.FrameworkElement view);
|
|
105
105
|
};
|