From 0f93a8c8bc46dce445c50e72ca365498050ba202 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Jun 2025 09:02:55 +0000
Subject: [PATCH 1/7] Initial plan for issue
From 786c1037ddb0efb013f7576139eae782eaac0243 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Jun 2025 09:13:36 +0000
Subject: [PATCH 2/7] Add Fast Refresh style update test for View component
Co-authored-by: anupriya13 <54227869+anupriya13@users.noreply.github.com>
---
.../js/examples/View/ViewExample.windows.js | 46 +++++++++++++++++++
.../test/ViewComponentTest.test.ts | 28 +++++++++++
2 files changed, 74 insertions(+)
diff --git a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
index d9117c9f404..4ce3ee4b304 100644
--- a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
+++ b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
@@ -671,6 +671,45 @@ function BoxSizingExample(): React.Node {
);
}
+class FastRefreshStyleExample extends React.Component<
+ $ReadOnly<{||}>,
+ {|currentStyle: number|},
+> {
+ state: {currentStyle: number} = {
+ currentStyle: 0,
+ };
+
+ styles = [
+ {backgroundColor: '#ff6b6b', padding: 20, borderRadius: 5},
+ {backgroundColor: '#4ecdc4', padding: 15, borderRadius: 10},
+ {backgroundColor: '#45b7d1', padding: 25, borderRadius: 15},
+ {backgroundColor: '#96ceb4', padding: 10, borderRadius: 20},
+ ];
+
+ render(): React.Node {
+ return (
+
+
+
+
+ Tap to change style (simulates fast refresh)
+
+
+ Style: {this.state.currentStyle + 1} of {this.styles.length}
+
+
+
+
+ );
+ }
+
+ _handlePress = () => {
+ this.setState({
+ currentStyle: (this.state.currentStyle + 1) % this.styles.length,
+ });
+ };
+}
+
export default ({
title: 'View',
documentationURL: 'https://reactnative.dev/docs/view',
@@ -1404,6 +1443,13 @@ export default ({
return ;
},
},
+ {
+ title: 'Fast Refresh Style Updates',
+ name: 'fast-refresh',
+ render(): React.Node {
+ return ;
+ },
+ },
{
title: 'ToolTip',
render(): React.Node {
diff --git a/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts b/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts
index 4b6e7574fe6..16cf30b1b51 100644
--- a/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts
+++ b/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts
@@ -199,4 +199,32 @@ describe('View Tests', () => {
const dump = await dumpVisualTree('nativeid');
expect(dump).toMatchSnapshot();
});
+ test('Views should update style upon fast refresh', async () => {
+ await searchBox('fas');
+ const componentsTab = await app.findElementByTestID('view-test-fast-refresh');
+ await componentsTab.waitForDisplayed({timeout: 5000});
+
+ // Take initial snapshot
+ const initialDump = await dumpVisualTree('view-test-fast-refresh');
+ expect(initialDump).toMatchSnapshot('initial-state');
+
+ // Click to change style (simulating fast refresh behavior)
+ await componentsTab.click();
+
+ // Wait a moment for the style change to apply
+ await app.waitUntil(
+ async () => {
+ const currentDump = await dumpVisualTree('view-test-fast-refresh');
+ return currentDump !== initialDump;
+ },
+ {
+ timeout: 3000,
+ timeoutMsg: 'View style did not update after interaction',
+ }
+ );
+
+ // Take snapshot after style change
+ const updatedDump = await dumpVisualTree('view-test-fast-refresh');
+ expect(updatedDump).toMatchSnapshot('updated-state');
+ });
});
From e0f1425680537b3179071e8f4a227e89fecf20c5 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Jun 2025 09:17:55 +0000
Subject: [PATCH 3/7] Fix Flow type annotations for FastRefreshStyleExample
Co-authored-by: anupriya13 <54227869+anupriya13@users.noreply.github.com>
---
.../tester/src/js/examples/View/ViewExample.windows.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
index 4ce3ee4b304..ef2cbd4203f 100644
--- a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
+++ b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
@@ -672,8 +672,8 @@ function BoxSizingExample(): React.Node {
}
class FastRefreshStyleExample extends React.Component<
- $ReadOnly<{||}>,
- {|currentStyle: number|},
+ $ReadOnly<{}>,
+ {currentStyle: number},
> {
state: {currentStyle: number} = {
currentStyle: 0,
From 22afefe79d9bdd674973ef5ec2518ae3880280ab Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Jun 2025 09:32:37 +0000
Subject: [PATCH 4/7] Update generated codegen files after yarn install
Co-authored-by: anupriya13 <54227869+anupriya13@users.noreply.github.com>
---
vnext/codegen/rnwcoreJSI-generated.cpp | 112 +--
vnext/codegen/rnwcoreJSI.h | 1034 ++++++++++++------------
2 files changed, 573 insertions(+), 573 deletions(-)
diff --git a/vnext/codegen/rnwcoreJSI-generated.cpp b/vnext/codegen/rnwcoreJSI-generated.cpp
index 75de3b43ef4..9c12f2f7882 100644
--- a/vnext/codegen/rnwcoreJSI-generated.cpp
+++ b/vnext/codegen/rnwcoreJSI-generated.cpp
@@ -952,41 +952,6 @@ NativeAnimatedTurboModuleCxxSpecJSI::NativeAnimatedTurboModuleCxxSpecJSI(std::sh
methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeAnimatedTurboModuleCxxSpecJSI_removeListeners};
methodMap_["queueAndExecuteBatchedOperations"] = MethodMetadata {1, __hostFunction_NativeAnimatedTurboModuleCxxSpecJSI_queueAndExecuteBatchedOperations};
}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- auto result = static_cast(&turboModule)->getColorScheme(
- rt
- );
- return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
-}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- static_cast(&turboModule)->setColorScheme(
- rt,
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
- );
- return jsi::Value::undefined();
-}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_addListener(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- static_cast(&turboModule)->addListener(
- rt,
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
- );
- return jsi::Value::undefined();
-}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- static_cast(&turboModule)->removeListeners(
- rt,
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber()
- );
- return jsi::Value::undefined();
-}
-
-NativeAppearanceCxxSpecJSI::NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker)
- : TurboModule("Appearance", jsInvoker) {
- methodMap_["getColorScheme"] = MethodMetadata {0, __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme};
- methodMap_["setColorScheme"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme};
- methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_addListener};
- methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners};
-}
static jsi::Value __hostFunction_NativeAppStateCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast(&turboModule)->getConstants(
rt
@@ -1032,6 +997,41 @@ NativeAppThemeCxxSpecJSI::NativeAppThemeCxxSpecJSI(std::shared_ptr
: TurboModule("AppTheme", jsInvoker) {
methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeAppThemeCxxSpecJSI_getConstants};
}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ auto result = static_cast(&turboModule)->getColorScheme(
+ rt
+ );
+ return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
+}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ static_cast(&turboModule)->setColorScheme(
+ rt,
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
+ );
+ return jsi::Value::undefined();
+}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_addListener(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ static_cast(&turboModule)->addListener(
+ rt,
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
+ );
+ return jsi::Value::undefined();
+}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ static_cast(&turboModule)->removeListeners(
+ rt,
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber()
+ );
+ return jsi::Value::undefined();
+}
+
+NativeAppearanceCxxSpecJSI::NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker)
+ : TurboModule("Appearance", jsInvoker) {
+ methodMap_["getColorScheme"] = MethodMetadata {0, __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme};
+ methodMap_["setColorScheme"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme};
+ methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_addListener};
+ methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners};
+}
static jsi::Value __hostFunction_NativeBlobModuleCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast(&turboModule)->getConstants(
rt
@@ -1135,27 +1135,6 @@ NativeClipboardCxxSpecJSI::NativeClipboardCxxSpecJSI(std::shared_ptr(&turboModule)->invokeDefaultBackPressHandler(
- rt
- );
- return jsi::Value::undefined();
-}
-
-NativeDeviceEventManagerCxxSpecJSI::NativeDeviceEventManagerCxxSpecJSI(std::shared_ptr jsInvoker)
- : TurboModule("DeviceEventManager", jsInvoker) {
- methodMap_["invokeDefaultBackPressHandler"] = MethodMetadata {0, __hostFunction_NativeDeviceEventManagerCxxSpecJSI_invokeDefaultBackPressHandler};
-}
-static jsi::Value __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- return static_cast(&turboModule)->getConstants(
- rt
- );
-}
-
-NativeDeviceInfoCxxSpecJSI::NativeDeviceInfoCxxSpecJSI(std::shared_ptr jsInvoker)
- : TurboModule("DeviceInfo", jsInvoker) {
- methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants};
-}
static jsi::Value __hostFunction_NativeDevLoadingViewCxxSpecJSI_showMessage(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_cast(&turboModule)->showMessage(
rt,
@@ -1299,6 +1278,27 @@ NativeDevSettingsCxxSpecJSI::NativeDevSettingsCxxSpecJSI(std::shared_ptr(&turboModule)->invokeDefaultBackPressHandler(
+ rt
+ );
+ return jsi::Value::undefined();
+}
+
+NativeDeviceEventManagerCxxSpecJSI::NativeDeviceEventManagerCxxSpecJSI(std::shared_ptr jsInvoker)
+ : TurboModule("DeviceEventManager", jsInvoker) {
+ methodMap_["invokeDefaultBackPressHandler"] = MethodMetadata {0, __hostFunction_NativeDeviceEventManagerCxxSpecJSI_invokeDefaultBackPressHandler};
+}
+static jsi::Value __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ return static_cast(&turboModule)->getConstants(
+ rt
+ );
+}
+
+NativeDeviceInfoCxxSpecJSI::NativeDeviceInfoCxxSpecJSI(std::shared_ptr jsInvoker)
+ : TurboModule("DeviceInfo", jsInvoker) {
+ methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants};
+}
static jsi::Value __hostFunction_NativeDialogManagerAndroidCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast(&turboModule)->getConstants(
rt
diff --git a/vnext/codegen/rnwcoreJSI.h b/vnext/codegen/rnwcoreJSI.h
index d03a6000dbd..c19042048d1 100644
--- a/vnext/codegen/rnwcoreJSI.h
+++ b/vnext/codegen/rnwcoreJSI.h
@@ -1871,87 +1871,6 @@ class JSI_EXPORT NativeAnimatedTurboModuleCxxSpec : public TurboModule {
};
- class JSI_EXPORT NativeAppearanceCxxSpecJSI : public TurboModule {
-protected:
- NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker);
-
-public:
- virtual std::optional getColorScheme(jsi::Runtime &rt) = 0;
- virtual void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) = 0;
- virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
- virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
-
-};
-
-template
-class JSI_EXPORT NativeAppearanceCxxSpec : public TurboModule {
-public:
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
- return delegate_.create(rt, propName);
- }
-
- std::vector getPropertyNames(jsi::Runtime& runtime) override {
- return delegate_.getPropertyNames(runtime);
- }
-
- static constexpr std::string_view kModuleName = "Appearance";
-
-protected:
- NativeAppearanceCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeAppearanceCxxSpec::kModuleName}, jsInvoker),
- delegate_(reinterpret_cast(this), jsInvoker) {}
-
-
-private:
- class Delegate : public NativeAppearanceCxxSpecJSI {
- public:
- Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeAppearanceCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
-
- }
-
- std::optional getColorScheme(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::getColorScheme) == 1,
- "Expected getColorScheme(...) to have 1 parameters");
-
- return bridging::callFromJs>(
- rt, &T::getColorScheme, jsInvoker_, instance_);
- }
- void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) override {
- static_assert(
- bridging::getParameterCount(&T::setColorScheme) == 2,
- "Expected setColorScheme(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::setColorScheme, jsInvoker_, instance_, std::move(colorScheme));
- }
- void addListener(jsi::Runtime &rt, jsi::String eventName) override {
- static_assert(
- bridging::getParameterCount(&T::addListener) == 2,
- "Expected addListener(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::addListener, jsInvoker_, instance_, std::move(eventName));
- }
- void removeListeners(jsi::Runtime &rt, double count) override {
- static_assert(
- bridging::getParameterCount(&T::removeListeners) == 2,
- "Expected removeListeners(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
- }
-
- private:
- friend class NativeAppearanceCxxSpec;
- T *instance_;
- };
-
- Delegate delegate_;
-};
-
-
#pragma mark - NativeAppStateAppState
@@ -2305,6 +2224,87 @@ class JSI_EXPORT NativeAppThemeCxxSpec : public TurboModule {
};
+ class JSI_EXPORT NativeAppearanceCxxSpecJSI : public TurboModule {
+protected:
+ NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker);
+
+public:
+ virtual std::optional getColorScheme(jsi::Runtime &rt) = 0;
+ virtual void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) = 0;
+ virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
+ virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
+
+};
+
+template
+class JSI_EXPORT NativeAppearanceCxxSpec : public TurboModule {
+public:
+ jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
+ return delegate_.create(rt, propName);
+ }
+
+ std::vector getPropertyNames(jsi::Runtime& runtime) override {
+ return delegate_.getPropertyNames(runtime);
+ }
+
+ static constexpr std::string_view kModuleName = "Appearance";
+
+protected:
+ NativeAppearanceCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeAppearanceCxxSpec::kModuleName}, jsInvoker),
+ delegate_(reinterpret_cast(this), jsInvoker) {}
+
+
+private:
+ class Delegate : public NativeAppearanceCxxSpecJSI {
+ public:
+ Delegate(T *instance, std::shared_ptr jsInvoker) :
+ NativeAppearanceCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+
+ }
+
+ std::optional getColorScheme(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::getColorScheme) == 1,
+ "Expected getColorScheme(...) to have 1 parameters");
+
+ return bridging::callFromJs>(
+ rt, &T::getColorScheme, jsInvoker_, instance_);
+ }
+ void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) override {
+ static_assert(
+ bridging::getParameterCount(&T::setColorScheme) == 2,
+ "Expected setColorScheme(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::setColorScheme, jsInvoker_, instance_, std::move(colorScheme));
+ }
+ void addListener(jsi::Runtime &rt, jsi::String eventName) override {
+ static_assert(
+ bridging::getParameterCount(&T::addListener) == 2,
+ "Expected addListener(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::addListener, jsInvoker_, instance_, std::move(eventName));
+ }
+ void removeListeners(jsi::Runtime &rt, double count) override {
+ static_assert(
+ bridging::getParameterCount(&T::removeListeners) == 2,
+ "Expected removeListeners(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
+ }
+
+ private:
+ friend class NativeAppearanceCxxSpec;
+ T *instance_;
+ };
+
+ Delegate delegate_;
+};
+
+
#pragma mark - NativeBlobModuleConstants
@@ -2595,17 +2595,18 @@ class JSI_EXPORT NativeClipboardCxxSpec : public TurboModule {
};
- class JSI_EXPORT NativeDeviceEventManagerCxxSpecJSI : public TurboModule {
+ class JSI_EXPORT NativeDevLoadingViewCxxSpecJSI : public TurboModule {
protected:
- NativeDeviceEventManagerCxxSpecJSI(std::shared_ptr jsInvoker);
+ NativeDevLoadingViewCxxSpecJSI(std::shared_ptr jsInvoker);
public:
- virtual void invokeDefaultBackPressHandler(jsi::Runtime &rt) = 0;
+ virtual void showMessage(jsi::Runtime &rt, jsi::String message, std::optional withColor, std::optional withBackgroundColor) = 0;
+ virtual void hide(jsi::Runtime &rt) = 0;
};
template
-class JSI_EXPORT NativeDeviceEventManagerCxxSpec : public TurboModule {
+class JSI_EXPORT NativeDevLoadingViewCxxSpec : public TurboModule {
public:
jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
return delegate_.create(rt, propName);
@@ -2615,33 +2616,41 @@ class JSI_EXPORT NativeDeviceEventManagerCxxSpec : public TurboModule {
return delegate_.getPropertyNames(runtime);
}
- static constexpr std::string_view kModuleName = "DeviceEventManager";
+ static constexpr std::string_view kModuleName = "DevLoadingView";
protected:
- NativeDeviceEventManagerCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeDeviceEventManagerCxxSpec::kModuleName}, jsInvoker),
+ NativeDevLoadingViewCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeDevLoadingViewCxxSpec::kModuleName}, jsInvoker),
delegate_(reinterpret_cast(this), jsInvoker) {}
private:
- class Delegate : public NativeDeviceEventManagerCxxSpecJSI {
+ class Delegate : public NativeDevLoadingViewCxxSpecJSI {
public:
Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeDeviceEventManagerCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+ NativeDevLoadingViewCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
}
- void invokeDefaultBackPressHandler(jsi::Runtime &rt) override {
+ void showMessage(jsi::Runtime &rt, jsi::String message, std::optional withColor, std::optional withBackgroundColor) override {
static_assert(
- bridging::getParameterCount(&T::invokeDefaultBackPressHandler) == 1,
- "Expected invokeDefaultBackPressHandler(...) to have 1 parameters");
+ bridging::getParameterCount(&T::showMessage) == 4,
+ "Expected showMessage(...) to have 4 parameters");
return bridging::callFromJs(
- rt, &T::invokeDefaultBackPressHandler, jsInvoker_, instance_);
+ rt, &T::showMessage, jsInvoker_, instance_, std::move(message), std::move(withColor), std::move(withBackgroundColor));
+ }
+ void hide(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::hide) == 1,
+ "Expected hide(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::hide, jsInvoker_, instance_);
}
private:
- friend class NativeDeviceEventManagerCxxSpec;
+ friend class NativeDevLoadingViewCxxSpec;
T *instance_;
};
@@ -2649,54 +2658,333 @@ class JSI_EXPORT NativeDeviceEventManagerCxxSpec : public TurboModule {
};
-
-#pragma mark - NativeDeviceInfoDeviceInfoConstants
+ class JSI_EXPORT NativeDevMenuCxxSpecJSI : public TurboModule {
+protected:
+ NativeDevMenuCxxSpecJSI(std::shared_ptr jsInvoker);
+
+public:
+ virtual void show(jsi::Runtime &rt) = 0;
+ virtual void reload(jsi::Runtime &rt) = 0;
+ virtual void setProfilingEnabled(jsi::Runtime &rt, bool enabled) = 0;
+ virtual void setHotLoadingEnabled(jsi::Runtime &rt, bool enabled) = 0;
-template
-struct NativeDeviceInfoDeviceInfoConstants {
- P0 Dimensions;
- P1 isIPhoneX_deprecated;
- bool operator==(const NativeDeviceInfoDeviceInfoConstants &other) const {
- return Dimensions == other.Dimensions && isIPhoneX_deprecated == other.isIPhoneX_deprecated;
- }
};
template
-struct NativeDeviceInfoDeviceInfoConstantsBridging {
- static T types;
-
- static T fromJs(
- jsi::Runtime &rt,
- const jsi::Object &value,
- const std::shared_ptr &jsInvoker) {
- T result{
- bridging::fromJs(rt, value.getProperty(rt, "Dimensions"), jsInvoker),
- bridging::fromJs(rt, value.getProperty(rt, "isIPhoneX_deprecated"), jsInvoker)};
- return result;
- }
-
-#ifdef DEBUG
- static jsi::Object DimensionsToJs(jsi::Runtime &rt, decltype(types.Dimensions) value) {
- return bridging::toJs(rt, value);
- }
-
- static bool isIPhoneX_deprecatedToJs(jsi::Runtime &rt, decltype(types.isIPhoneX_deprecated) value) {
- return bridging::toJs(rt, value);
+class JSI_EXPORT NativeDevMenuCxxSpec : public TurboModule {
+public:
+ jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
+ return delegate_.create(rt, propName);
}
-#endif
- static jsi::Object toJs(
- jsi::Runtime &rt,
- const T &value,
- const std::shared_ptr &jsInvoker) {
- auto result = facebook::jsi::Object(rt);
- result.setProperty(rt, "Dimensions", bridging::toJs(rt, value.Dimensions, jsInvoker));
- if (value.isIPhoneX_deprecated) {
- result.setProperty(rt, "isIPhoneX_deprecated", bridging::toJs(rt, value.isIPhoneX_deprecated.value(), jsInvoker));
- }
- return result;
+ std::vector getPropertyNames(jsi::Runtime& runtime) override {
+ return delegate_.getPropertyNames(runtime);
}
-};
+
+ static constexpr std::string_view kModuleName = "DevMenu";
+
+protected:
+ NativeDevMenuCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeDevMenuCxxSpec::kModuleName}, jsInvoker),
+ delegate_(reinterpret_cast(this), jsInvoker) {}
+
+
+private:
+ class Delegate : public NativeDevMenuCxxSpecJSI {
+ public:
+ Delegate(T *instance, std::shared_ptr jsInvoker) :
+ NativeDevMenuCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+
+ }
+
+ void show(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::show) == 1,
+ "Expected show(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::show, jsInvoker_, instance_);
+ }
+ void reload(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::reload) == 1,
+ "Expected reload(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::reload, jsInvoker_, instance_);
+ }
+ void setProfilingEnabled(jsi::Runtime &rt, bool enabled) override {
+ static_assert(
+ bridging::getParameterCount(&T::setProfilingEnabled) == 2,
+ "Expected setProfilingEnabled(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::setProfilingEnabled, jsInvoker_, instance_, std::move(enabled));
+ }
+ void setHotLoadingEnabled(jsi::Runtime &rt, bool enabled) override {
+ static_assert(
+ bridging::getParameterCount(&T::setHotLoadingEnabled) == 2,
+ "Expected setHotLoadingEnabled(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::setHotLoadingEnabled, jsInvoker_, instance_, std::move(enabled));
+ }
+
+ private:
+ friend class NativeDevMenuCxxSpec;
+ T *instance_;
+ };
+
+ Delegate delegate_;
+};
+
+
+ class JSI_EXPORT NativeDevSettingsCxxSpecJSI : public TurboModule {
+protected:
+ NativeDevSettingsCxxSpecJSI(std::shared_ptr jsInvoker);
+
+public:
+ virtual void reload(jsi::Runtime &rt) = 0;
+ virtual void reloadWithReason(jsi::Runtime &rt, jsi::String reason) = 0;
+ virtual void onFastRefresh(jsi::Runtime &rt) = 0;
+ virtual void setHotLoadingEnabled(jsi::Runtime &rt, bool isHotLoadingEnabled) = 0;
+ virtual void setProfilingEnabled(jsi::Runtime &rt, bool isProfilingEnabled) = 0;
+ virtual void toggleElementInspector(jsi::Runtime &rt) = 0;
+ virtual void addMenuItem(jsi::Runtime &rt, jsi::String title) = 0;
+ virtual void openDebugger(jsi::Runtime &rt) = 0;
+ virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
+ virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
+ virtual void setIsShakeToShowDevMenuEnabled(jsi::Runtime &rt, bool enabled) = 0;
+
+};
+
+template
+class JSI_EXPORT NativeDevSettingsCxxSpec : public TurboModule {
+public:
+ jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
+ return delegate_.create(rt, propName);
+ }
+
+ std::vector getPropertyNames(jsi::Runtime& runtime) override {
+ return delegate_.getPropertyNames(runtime);
+ }
+
+ static constexpr std::string_view kModuleName = "DevSettings";
+
+protected:
+ NativeDevSettingsCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeDevSettingsCxxSpec::kModuleName}, jsInvoker),
+ delegate_(reinterpret_cast(this), jsInvoker) {}
+
+
+private:
+ class Delegate : public NativeDevSettingsCxxSpecJSI {
+ public:
+ Delegate(T *instance, std::shared_ptr jsInvoker) :
+ NativeDevSettingsCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+
+ }
+
+ void reload(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::reload) == 1,
+ "Expected reload(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::reload, jsInvoker_, instance_);
+ }
+ void reloadWithReason(jsi::Runtime &rt, jsi::String reason) override {
+ static_assert(
+ bridging::getParameterCount(&T::reloadWithReason) == 2,
+ "Expected reloadWithReason(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::reloadWithReason, jsInvoker_, instance_, std::move(reason));
+ }
+ void onFastRefresh(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::onFastRefresh) == 1,
+ "Expected onFastRefresh(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::onFastRefresh, jsInvoker_, instance_);
+ }
+ void setHotLoadingEnabled(jsi::Runtime &rt, bool isHotLoadingEnabled) override {
+ static_assert(
+ bridging::getParameterCount(&T::setHotLoadingEnabled) == 2,
+ "Expected setHotLoadingEnabled(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::setHotLoadingEnabled, jsInvoker_, instance_, std::move(isHotLoadingEnabled));
+ }
+ void setProfilingEnabled(jsi::Runtime &rt, bool isProfilingEnabled) override {
+ static_assert(
+ bridging::getParameterCount(&T::setProfilingEnabled) == 2,
+ "Expected setProfilingEnabled(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::setProfilingEnabled, jsInvoker_, instance_, std::move(isProfilingEnabled));
+ }
+ void toggleElementInspector(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::toggleElementInspector) == 1,
+ "Expected toggleElementInspector(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::toggleElementInspector, jsInvoker_, instance_);
+ }
+ void addMenuItem(jsi::Runtime &rt, jsi::String title) override {
+ static_assert(
+ bridging::getParameterCount(&T::addMenuItem) == 2,
+ "Expected addMenuItem(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::addMenuItem, jsInvoker_, instance_, std::move(title));
+ }
+ void openDebugger(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::openDebugger) == 1,
+ "Expected openDebugger(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::openDebugger, jsInvoker_, instance_);
+ }
+ void addListener(jsi::Runtime &rt, jsi::String eventName) override {
+ static_assert(
+ bridging::getParameterCount(&T::addListener) == 2,
+ "Expected addListener(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::addListener, jsInvoker_, instance_, std::move(eventName));
+ }
+ void removeListeners(jsi::Runtime &rt, double count) override {
+ static_assert(
+ bridging::getParameterCount(&T::removeListeners) == 2,
+ "Expected removeListeners(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
+ }
+ void setIsShakeToShowDevMenuEnabled(jsi::Runtime &rt, bool enabled) override {
+ static_assert(
+ bridging::getParameterCount(&T::setIsShakeToShowDevMenuEnabled) == 2,
+ "Expected setIsShakeToShowDevMenuEnabled(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::setIsShakeToShowDevMenuEnabled, jsInvoker_, instance_, std::move(enabled));
+ }
+
+ private:
+ friend class NativeDevSettingsCxxSpec;
+ T *instance_;
+ };
+
+ Delegate delegate_;
+};
+
+
+ class JSI_EXPORT NativeDeviceEventManagerCxxSpecJSI : public TurboModule {
+protected:
+ NativeDeviceEventManagerCxxSpecJSI(std::shared_ptr jsInvoker);
+
+public:
+ virtual void invokeDefaultBackPressHandler(jsi::Runtime &rt) = 0;
+
+};
+
+template
+class JSI_EXPORT NativeDeviceEventManagerCxxSpec : public TurboModule {
+public:
+ jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
+ return delegate_.create(rt, propName);
+ }
+
+ std::vector getPropertyNames(jsi::Runtime& runtime) override {
+ return delegate_.getPropertyNames(runtime);
+ }
+
+ static constexpr std::string_view kModuleName = "DeviceEventManager";
+
+protected:
+ NativeDeviceEventManagerCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeDeviceEventManagerCxxSpec::kModuleName}, jsInvoker),
+ delegate_(reinterpret_cast(this), jsInvoker) {}
+
+
+private:
+ class Delegate : public NativeDeviceEventManagerCxxSpecJSI {
+ public:
+ Delegate(T *instance, std::shared_ptr jsInvoker) :
+ NativeDeviceEventManagerCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+
+ }
+
+ void invokeDefaultBackPressHandler(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::invokeDefaultBackPressHandler) == 1,
+ "Expected invokeDefaultBackPressHandler(...) to have 1 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::invokeDefaultBackPressHandler, jsInvoker_, instance_);
+ }
+
+ private:
+ friend class NativeDeviceEventManagerCxxSpec;
+ T *instance_;
+ };
+
+ Delegate delegate_;
+};
+
+
+
+#pragma mark - NativeDeviceInfoDeviceInfoConstants
+
+template
+struct NativeDeviceInfoDeviceInfoConstants {
+ P0 Dimensions;
+ P1 isIPhoneX_deprecated;
+ bool operator==(const NativeDeviceInfoDeviceInfoConstants &other) const {
+ return Dimensions == other.Dimensions && isIPhoneX_deprecated == other.isIPhoneX_deprecated;
+ }
+};
+
+template
+struct NativeDeviceInfoDeviceInfoConstantsBridging {
+ static T types;
+
+ static T fromJs(
+ jsi::Runtime &rt,
+ const jsi::Object &value,
+ const std::shared_ptr &jsInvoker) {
+ T result{
+ bridging::fromJs(rt, value.getProperty(rt, "Dimensions"), jsInvoker),
+ bridging::fromJs(rt, value.getProperty(rt, "isIPhoneX_deprecated"), jsInvoker)};
+ return result;
+ }
+
+#ifdef DEBUG
+ static jsi::Object DimensionsToJs(jsi::Runtime &rt, decltype(types.Dimensions) value) {
+ return bridging::toJs(rt, value);
+ }
+
+ static bool isIPhoneX_deprecatedToJs(jsi::Runtime &rt, decltype(types.isIPhoneX_deprecated) value) {
+ return bridging::toJs(rt, value);
+ }
+#endif
+
+ static jsi::Object toJs(
+ jsi::Runtime &rt,
+ const T &value,
+ const std::shared_ptr &jsInvoker) {
+ auto result = facebook::jsi::Object(rt);
+ result.setProperty(rt, "Dimensions", bridging::toJs(rt, value.Dimensions, jsInvoker));
+ if (value.isIPhoneX_deprecated) {
+ result.setProperty(rt, "isIPhoneX_deprecated", bridging::toJs(rt, value.isIPhoneX_deprecated.value(), jsInvoker));
+ }
+ return result;
+ }
+};
@@ -2801,323 +3089,115 @@ struct NativeDeviceInfoDisplayMetricsBridging {
#ifdef DEBUG
static double widthToJs(jsi::Runtime &rt, decltype(types.width) value) {
- return bridging::toJs(rt, value);
- }
-
- static double heightToJs(jsi::Runtime &rt, decltype(types.height) value) {
- return bridging::toJs(rt, value);
- }
-
- static double scaleToJs(jsi::Runtime &rt, decltype(types.scale) value) {
- return bridging::toJs(rt, value);
- }
-
- static double fontScaleToJs(jsi::Runtime &rt, decltype(types.fontScale) value) {
- return bridging::toJs(rt, value);
- }
-#endif
-
- static jsi::Object toJs(
- jsi::Runtime &rt,
- const T &value,
- const std::shared_ptr &jsInvoker) {
- auto result = facebook::jsi::Object(rt);
- result.setProperty(rt, "width", bridging::toJs(rt, value.width, jsInvoker));
- result.setProperty(rt, "height", bridging::toJs(rt, value.height, jsInvoker));
- result.setProperty(rt, "scale", bridging::toJs(rt, value.scale, jsInvoker));
- result.setProperty(rt, "fontScale", bridging::toJs(rt, value.fontScale, jsInvoker));
- return result;
- }
-};
-
-
-
-#pragma mark - NativeDeviceInfoDisplayMetricsAndroid
-
-template
-struct NativeDeviceInfoDisplayMetricsAndroid {
- P0 width;
- P1 height;
- P2 scale;
- P3 fontScale;
- P4 densityDpi;
- bool operator==(const NativeDeviceInfoDisplayMetricsAndroid &other) const {
- return width == other.width && height == other.height && scale == other.scale && fontScale == other.fontScale && densityDpi == other.densityDpi;
- }
-};
-
-template
-struct NativeDeviceInfoDisplayMetricsAndroidBridging {
- static T types;
-
- static T fromJs(
- jsi::Runtime &rt,
- const jsi::Object &value,
- const std::shared_ptr &jsInvoker) {
- T result{
- bridging::fromJs(rt, value.getProperty(rt, "width"), jsInvoker),
- bridging::fromJs(rt, value.getProperty(rt, "height"), jsInvoker),
- bridging::fromJs(rt, value.getProperty(rt, "scale"), jsInvoker),
- bridging::fromJs(rt, value.getProperty(rt, "fontScale"), jsInvoker),
- bridging::fromJs(rt, value.getProperty(rt, "densityDpi"), jsInvoker)};
- return result;
- }
-
-#ifdef DEBUG
- static double widthToJs(jsi::Runtime &rt, decltype(types.width) value) {
- return bridging::toJs(rt, value);
- }
-
- static double heightToJs(jsi::Runtime &rt, decltype(types.height) value) {
- return bridging::toJs(rt, value);
- }
-
- static double scaleToJs(jsi::Runtime &rt, decltype(types.scale) value) {
- return bridging::toJs(rt, value);
- }
-
- static double fontScaleToJs(jsi::Runtime &rt, decltype(types.fontScale) value) {
- return bridging::toJs(rt, value);
- }
-
- static double densityDpiToJs(jsi::Runtime &rt, decltype(types.densityDpi) value) {
- return bridging::toJs(rt, value);
- }
-#endif
-
- static jsi::Object toJs(
- jsi::Runtime &rt,
- const T &value,
- const std::shared_ptr &jsInvoker) {
- auto result = facebook::jsi::Object(rt);
- result.setProperty(rt, "width", bridging::toJs(rt, value.width, jsInvoker));
- result.setProperty(rt, "height", bridging::toJs(rt, value.height, jsInvoker));
- result.setProperty(rt, "scale", bridging::toJs(rt, value.scale, jsInvoker));
- result.setProperty(rt, "fontScale", bridging::toJs(rt, value.fontScale, jsInvoker));
- result.setProperty(rt, "densityDpi", bridging::toJs(rt, value.densityDpi, jsInvoker));
- return result;
- }
-};
-
-class JSI_EXPORT NativeDeviceInfoCxxSpecJSI : public TurboModule {
-protected:
- NativeDeviceInfoCxxSpecJSI(std::shared_ptr jsInvoker);
-
-public:
- virtual jsi::Object getConstants(jsi::Runtime &rt) = 0;
-
-};
-
-template
-class JSI_EXPORT NativeDeviceInfoCxxSpec : public TurboModule {
-public:
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
- return delegate_.create(rt, propName);
- }
-
- std::vector getPropertyNames(jsi::Runtime& runtime) override {
- return delegate_.getPropertyNames(runtime);
- }
-
- static constexpr std::string_view kModuleName = "DeviceInfo";
-
-protected:
- NativeDeviceInfoCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeDeviceInfoCxxSpec::kModuleName}, jsInvoker),
- delegate_(reinterpret_cast(this), jsInvoker) {}
-
-
-private:
- class Delegate : public NativeDeviceInfoCxxSpecJSI {
- public:
- Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeDeviceInfoCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
-
- }
-
- jsi::Object getConstants(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::getConstants) == 1,
- "Expected getConstants(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::getConstants, jsInvoker_, instance_);
- }
-
- private:
- friend class NativeDeviceInfoCxxSpec;
- T *instance_;
- };
-
- Delegate delegate_;
-};
-
-
- class JSI_EXPORT NativeDevLoadingViewCxxSpecJSI : public TurboModule {
-protected:
- NativeDevLoadingViewCxxSpecJSI(std::shared_ptr jsInvoker);
-
-public:
- virtual void showMessage(jsi::Runtime &rt, jsi::String message, std::optional withColor, std::optional withBackgroundColor) = 0;
- virtual void hide(jsi::Runtime &rt) = 0;
-
-};
-
-template
-class JSI_EXPORT NativeDevLoadingViewCxxSpec : public TurboModule {
-public:
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
- return delegate_.create(rt, propName);
- }
-
- std::vector getPropertyNames(jsi::Runtime& runtime) override {
- return delegate_.getPropertyNames(runtime);
- }
-
- static constexpr std::string_view kModuleName = "DevLoadingView";
-
-protected:
- NativeDevLoadingViewCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeDevLoadingViewCxxSpec::kModuleName}, jsInvoker),
- delegate_(reinterpret_cast(this), jsInvoker) {}
-
-
-private:
- class Delegate : public NativeDevLoadingViewCxxSpecJSI {
- public:
- Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeDevLoadingViewCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
-
- }
-
- void showMessage(jsi::Runtime &rt, jsi::String message, std::optional withColor, std::optional withBackgroundColor) override {
- static_assert(
- bridging::getParameterCount(&T::showMessage) == 4,
- "Expected showMessage(...) to have 4 parameters");
-
- return bridging::callFromJs(
- rt, &T::showMessage, jsInvoker_, instance_, std::move(message), std::move(withColor), std::move(withBackgroundColor));
- }
- void hide(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::hide) == 1,
- "Expected hide(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::hide, jsInvoker_, instance_);
- }
-
- private:
- friend class NativeDevLoadingViewCxxSpec;
- T *instance_;
- };
-
- Delegate delegate_;
-};
-
-
- class JSI_EXPORT NativeDevMenuCxxSpecJSI : public TurboModule {
-protected:
- NativeDevMenuCxxSpecJSI(std::shared_ptr jsInvoker);
+ return bridging::toJs(rt, value);
+ }
-public:
- virtual void show(jsi::Runtime &rt) = 0;
- virtual void reload(jsi::Runtime &rt) = 0;
- virtual void setProfilingEnabled(jsi::Runtime &rt, bool enabled) = 0;
- virtual void setHotLoadingEnabled(jsi::Runtime &rt, bool enabled) = 0;
+ static double heightToJs(jsi::Runtime &rt, decltype(types.height) value) {
+ return bridging::toJs(rt, value);
+ }
-};
+ static double scaleToJs(jsi::Runtime &rt, decltype(types.scale) value) {
+ return bridging::toJs(rt, value);
+ }
-template
-class JSI_EXPORT NativeDevMenuCxxSpec : public TurboModule {
-public:
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
- return delegate_.create(rt, propName);
+ static double fontScaleToJs(jsi::Runtime &rt, decltype(types.fontScale) value) {
+ return bridging::toJs(rt, value);
}
+#endif
- std::vector getPropertyNames(jsi::Runtime& runtime) override {
- return delegate_.getPropertyNames(runtime);
+ static jsi::Object toJs(
+ jsi::Runtime &rt,
+ const T &value,
+ const std::shared_ptr &jsInvoker) {
+ auto result = facebook::jsi::Object(rt);
+ result.setProperty(rt, "width", bridging::toJs(rt, value.width, jsInvoker));
+ result.setProperty(rt, "height", bridging::toJs(rt, value.height, jsInvoker));
+ result.setProperty(rt, "scale", bridging::toJs(rt, value.scale, jsInvoker));
+ result.setProperty(rt, "fontScale", bridging::toJs(rt, value.fontScale, jsInvoker));
+ return result;
}
+};
- static constexpr std::string_view kModuleName = "DevMenu";
-protected:
- NativeDevMenuCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeDevMenuCxxSpec::kModuleName}, jsInvoker),
- delegate_(reinterpret_cast(this), jsInvoker) {}
+#pragma mark - NativeDeviceInfoDisplayMetricsAndroid
-private:
- class Delegate : public NativeDevMenuCxxSpecJSI {
- public:
- Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeDevMenuCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+template
+struct NativeDeviceInfoDisplayMetricsAndroid {
+ P0 width;
+ P1 height;
+ P2 scale;
+ P3 fontScale;
+ P4 densityDpi;
+ bool operator==(const NativeDeviceInfoDisplayMetricsAndroid &other) const {
+ return width == other.width && height == other.height && scale == other.scale && fontScale == other.fontScale && densityDpi == other.densityDpi;
+ }
+};
- }
+template
+struct NativeDeviceInfoDisplayMetricsAndroidBridging {
+ static T types;
- void show(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::show) == 1,
- "Expected show(...) to have 1 parameters");
+ static T fromJs(
+ jsi::Runtime &rt,
+ const jsi::Object &value,
+ const std::shared_ptr &jsInvoker) {
+ T result{
+ bridging::fromJs(rt, value.getProperty(rt, "width"), jsInvoker),
+ bridging::fromJs(rt, value.getProperty(rt, "height"), jsInvoker),
+ bridging::fromJs(rt, value.getProperty(rt, "scale"), jsInvoker),
+ bridging::fromJs(rt, value.getProperty(rt, "fontScale"), jsInvoker),
+ bridging::fromJs(rt, value.getProperty(rt, "densityDpi"), jsInvoker)};
+ return result;
+ }
- return bridging::callFromJs(
- rt, &T::show, jsInvoker_, instance_);
- }
- void reload(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::reload) == 1,
- "Expected reload(...) to have 1 parameters");
+#ifdef DEBUG
+ static double widthToJs(jsi::Runtime &rt, decltype(types.width) value) {
+ return bridging::toJs(rt, value);
+ }
- return bridging::callFromJs(
- rt, &T::reload, jsInvoker_, instance_);
- }
- void setProfilingEnabled(jsi::Runtime &rt, bool enabled) override {
- static_assert(
- bridging::getParameterCount(&T::setProfilingEnabled) == 2,
- "Expected setProfilingEnabled(...) to have 2 parameters");
+ static double heightToJs(jsi::Runtime &rt, decltype(types.height) value) {
+ return bridging::toJs(rt, value);
+ }
- return bridging::callFromJs(
- rt, &T::setProfilingEnabled, jsInvoker_, instance_, std::move(enabled));
- }
- void setHotLoadingEnabled(jsi::Runtime &rt, bool enabled) override {
- static_assert(
- bridging::getParameterCount(&T::setHotLoadingEnabled) == 2,
- "Expected setHotLoadingEnabled(...) to have 2 parameters");
+ static double scaleToJs(jsi::Runtime &rt, decltype(types.scale) value) {
+ return bridging::toJs(rt, value);
+ }
- return bridging::callFromJs(
- rt, &T::setHotLoadingEnabled, jsInvoker_, instance_, std::move(enabled));
- }
+ static double fontScaleToJs(jsi::Runtime &rt, decltype(types.fontScale) value) {
+ return bridging::toJs(rt, value);
+ }
- private:
- friend class NativeDevMenuCxxSpec;
- T *instance_;
- };
+ static double densityDpiToJs(jsi::Runtime &rt, decltype(types.densityDpi) value) {
+ return bridging::toJs(rt, value);
+ }
+#endif
- Delegate delegate_;
+ static jsi::Object toJs(
+ jsi::Runtime &rt,
+ const T &value,
+ const std::shared_ptr &jsInvoker) {
+ auto result = facebook::jsi::Object(rt);
+ result.setProperty(rt, "width", bridging::toJs(rt, value.width, jsInvoker));
+ result.setProperty(rt, "height", bridging::toJs(rt, value.height, jsInvoker));
+ result.setProperty(rt, "scale", bridging::toJs(rt, value.scale, jsInvoker));
+ result.setProperty(rt, "fontScale", bridging::toJs(rt, value.fontScale, jsInvoker));
+ result.setProperty(rt, "densityDpi", bridging::toJs(rt, value.densityDpi, jsInvoker));
+ return result;
+ }
};
-
- class JSI_EXPORT NativeDevSettingsCxxSpecJSI : public TurboModule {
+class JSI_EXPORT NativeDeviceInfoCxxSpecJSI : public TurboModule {
protected:
- NativeDevSettingsCxxSpecJSI(std::shared_ptr jsInvoker);
+ NativeDeviceInfoCxxSpecJSI(std::shared_ptr jsInvoker);
public:
- virtual void reload(jsi::Runtime &rt) = 0;
- virtual void reloadWithReason(jsi::Runtime &rt, jsi::String reason) = 0;
- virtual void onFastRefresh(jsi::Runtime &rt) = 0;
- virtual void setHotLoadingEnabled(jsi::Runtime &rt, bool isHotLoadingEnabled) = 0;
- virtual void setProfilingEnabled(jsi::Runtime &rt, bool isProfilingEnabled) = 0;
- virtual void toggleElementInspector(jsi::Runtime &rt) = 0;
- virtual void addMenuItem(jsi::Runtime &rt, jsi::String title) = 0;
- virtual void openDebugger(jsi::Runtime &rt) = 0;
- virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
- virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
- virtual void setIsShakeToShowDevMenuEnabled(jsi::Runtime &rt, bool enabled) = 0;
+ virtual jsi::Object getConstants(jsi::Runtime &rt) = 0;
};
template
-class JSI_EXPORT NativeDevSettingsCxxSpec : public TurboModule {
+class JSI_EXPORT NativeDeviceInfoCxxSpec : public TurboModule {
public:
jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
return delegate_.create(rt, propName);
@@ -3127,113 +3207,33 @@ class JSI_EXPORT NativeDevSettingsCxxSpec : public TurboModule {
return delegate_.getPropertyNames(runtime);
}
- static constexpr std::string_view kModuleName = "DevSettings";
+ static constexpr std::string_view kModuleName = "DeviceInfo";
protected:
- NativeDevSettingsCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeDevSettingsCxxSpec::kModuleName}, jsInvoker),
+ NativeDeviceInfoCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeDeviceInfoCxxSpec::kModuleName}, jsInvoker),
delegate_(reinterpret_cast(this), jsInvoker) {}
private:
- class Delegate : public NativeDevSettingsCxxSpecJSI {
+ class Delegate : public NativeDeviceInfoCxxSpecJSI {
public:
Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeDevSettingsCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
-
- }
-
- void reload(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::reload) == 1,
- "Expected reload(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::reload, jsInvoker_, instance_);
- }
- void reloadWithReason(jsi::Runtime &rt, jsi::String reason) override {
- static_assert(
- bridging::getParameterCount(&T::reloadWithReason) == 2,
- "Expected reloadWithReason(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::reloadWithReason, jsInvoker_, instance_, std::move(reason));
- }
- void onFastRefresh(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::onFastRefresh) == 1,
- "Expected onFastRefresh(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::onFastRefresh, jsInvoker_, instance_);
- }
- void setHotLoadingEnabled(jsi::Runtime &rt, bool isHotLoadingEnabled) override {
- static_assert(
- bridging::getParameterCount(&T::setHotLoadingEnabled) == 2,
- "Expected setHotLoadingEnabled(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::setHotLoadingEnabled, jsInvoker_, instance_, std::move(isHotLoadingEnabled));
- }
- void setProfilingEnabled(jsi::Runtime &rt, bool isProfilingEnabled) override {
- static_assert(
- bridging::getParameterCount(&T::setProfilingEnabled) == 2,
- "Expected setProfilingEnabled(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::setProfilingEnabled, jsInvoker_, instance_, std::move(isProfilingEnabled));
- }
- void toggleElementInspector(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::toggleElementInspector) == 1,
- "Expected toggleElementInspector(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::toggleElementInspector, jsInvoker_, instance_);
- }
- void addMenuItem(jsi::Runtime &rt, jsi::String title) override {
- static_assert(
- bridging::getParameterCount(&T::addMenuItem) == 2,
- "Expected addMenuItem(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::addMenuItem, jsInvoker_, instance_, std::move(title));
- }
- void openDebugger(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::openDebugger) == 1,
- "Expected openDebugger(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::openDebugger, jsInvoker_, instance_);
- }
- void addListener(jsi::Runtime &rt, jsi::String eventName) override {
- static_assert(
- bridging::getParameterCount(&T::addListener) == 2,
- "Expected addListener(...) to have 2 parameters");
+ NativeDeviceInfoCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
- return bridging::callFromJs(
- rt, &T::addListener, jsInvoker_, instance_, std::move(eventName));
}
- void removeListeners(jsi::Runtime &rt, double count) override {
- static_assert(
- bridging::getParameterCount(&T::removeListeners) == 2,
- "Expected removeListeners(...) to have 2 parameters");
- return bridging::callFromJs(
- rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
- }
- void setIsShakeToShowDevMenuEnabled(jsi::Runtime &rt, bool enabled) override {
+ jsi::Object getConstants(jsi::Runtime &rt) override {
static_assert(
- bridging::getParameterCount(&T::setIsShakeToShowDevMenuEnabled) == 2,
- "Expected setIsShakeToShowDevMenuEnabled(...) to have 2 parameters");
+ bridging::getParameterCount(&T::getConstants) == 1,
+ "Expected getConstants(...) to have 1 parameters");
- return bridging::callFromJs(
- rt, &T::setIsShakeToShowDevMenuEnabled, jsInvoker_, instance_, std::move(enabled));
+ return bridging::callFromJs(
+ rt, &T::getConstants, jsInvoker_, instance_);
}
private:
- friend class NativeDevSettingsCxxSpec;
+ friend class NativeDeviceInfoCxxSpec;
T *instance_;
};
From 4fbecf6ce9b41bf20e8b131ca9882d2f218e3db2 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Jun 2025 09:39:51 +0000
Subject: [PATCH 5/7] Change files
---
...ative-windows-75d6c7d7-52e4-4f20-8943-8cacf13e6f88.json | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 change/react-native-windows-75d6c7d7-52e4-4f20-8943-8cacf13e6f88.json
diff --git a/change/react-native-windows-75d6c7d7-52e4-4f20-8943-8cacf13e6f88.json b/change/react-native-windows-75d6c7d7-52e4-4f20-8943-8cacf13e6f88.json
new file mode 100644
index 00000000000..c548360009a
--- /dev/null
+++ b/change/react-native-windows-75d6c7d7-52e4-4f20-8943-8cacf13e6f88.json
@@ -0,0 +1,7 @@
+{
+ "type": "prerelease",
+ "comment": "Update generated codegen files after yarn install",
+ "packageName": "react-native-windows",
+ "email": "198982749+Copilot@users.noreply.github.com",
+ "dependentChangeType": "patch"
+}
From 7ec5a641c49e519299df7e92e7a1cc0b673a0d74 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 12 Jun 2025 21:04:23 +0000
Subject: [PATCH 6/7] Revert changes to generated file rnwcoreJSI-generated.cpp
Co-authored-by: chiaramooney <34109996+chiaramooney@users.noreply.github.com>
---
vnext/codegen/rnwcoreJSI-generated.cpp | 112 ++++++++++++-------------
1 file changed, 56 insertions(+), 56 deletions(-)
diff --git a/vnext/codegen/rnwcoreJSI-generated.cpp b/vnext/codegen/rnwcoreJSI-generated.cpp
index 9c12f2f7882..75de3b43ef4 100644
--- a/vnext/codegen/rnwcoreJSI-generated.cpp
+++ b/vnext/codegen/rnwcoreJSI-generated.cpp
@@ -952,6 +952,41 @@ NativeAnimatedTurboModuleCxxSpecJSI::NativeAnimatedTurboModuleCxxSpecJSI(std::sh
methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeAnimatedTurboModuleCxxSpecJSI_removeListeners};
methodMap_["queueAndExecuteBatchedOperations"] = MethodMetadata {1, __hostFunction_NativeAnimatedTurboModuleCxxSpecJSI_queueAndExecuteBatchedOperations};
}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ auto result = static_cast(&turboModule)->getColorScheme(
+ rt
+ );
+ return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
+}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ static_cast(&turboModule)->setColorScheme(
+ rt,
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
+ );
+ return jsi::Value::undefined();
+}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_addListener(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ static_cast(&turboModule)->addListener(
+ rt,
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
+ );
+ return jsi::Value::undefined();
+}
+static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ static_cast(&turboModule)->removeListeners(
+ rt,
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber()
+ );
+ return jsi::Value::undefined();
+}
+
+NativeAppearanceCxxSpecJSI::NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker)
+ : TurboModule("Appearance", jsInvoker) {
+ methodMap_["getColorScheme"] = MethodMetadata {0, __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme};
+ methodMap_["setColorScheme"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme};
+ methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_addListener};
+ methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners};
+}
static jsi::Value __hostFunction_NativeAppStateCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast(&turboModule)->getConstants(
rt
@@ -997,41 +1032,6 @@ NativeAppThemeCxxSpecJSI::NativeAppThemeCxxSpecJSI(std::shared_ptr
: TurboModule("AppTheme", jsInvoker) {
methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeAppThemeCxxSpecJSI_getConstants};
}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- auto result = static_cast(&turboModule)->getColorScheme(
- rt
- );
- return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
-}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- static_cast(&turboModule)->setColorScheme(
- rt,
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
- );
- return jsi::Value::undefined();
-}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_addListener(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- static_cast(&turboModule)->addListener(
- rt,
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
- );
- return jsi::Value::undefined();
-}
-static jsi::Value __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- static_cast(&turboModule)->removeListeners(
- rt,
- count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber()
- );
- return jsi::Value::undefined();
-}
-
-NativeAppearanceCxxSpecJSI::NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker)
- : TurboModule("Appearance", jsInvoker) {
- methodMap_["getColorScheme"] = MethodMetadata {0, __hostFunction_NativeAppearanceCxxSpecJSI_getColorScheme};
- methodMap_["setColorScheme"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_setColorScheme};
- methodMap_["addListener"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_addListener};
- methodMap_["removeListeners"] = MethodMetadata {1, __hostFunction_NativeAppearanceCxxSpecJSI_removeListeners};
-}
static jsi::Value __hostFunction_NativeBlobModuleCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast(&turboModule)->getConstants(
rt
@@ -1135,6 +1135,27 @@ NativeClipboardCxxSpecJSI::NativeClipboardCxxSpecJSI(std::shared_ptr(&turboModule)->invokeDefaultBackPressHandler(
+ rt
+ );
+ return jsi::Value::undefined();
+}
+
+NativeDeviceEventManagerCxxSpecJSI::NativeDeviceEventManagerCxxSpecJSI(std::shared_ptr jsInvoker)
+ : TurboModule("DeviceEventManager", jsInvoker) {
+ methodMap_["invokeDefaultBackPressHandler"] = MethodMetadata {0, __hostFunction_NativeDeviceEventManagerCxxSpecJSI_invokeDefaultBackPressHandler};
+}
+static jsi::Value __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+ return static_cast(&turboModule)->getConstants(
+ rt
+ );
+}
+
+NativeDeviceInfoCxxSpecJSI::NativeDeviceInfoCxxSpecJSI(std::shared_ptr jsInvoker)
+ : TurboModule("DeviceInfo", jsInvoker) {
+ methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants};
+}
static jsi::Value __hostFunction_NativeDevLoadingViewCxxSpecJSI_showMessage(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_cast(&turboModule)->showMessage(
rt,
@@ -1278,27 +1299,6 @@ NativeDevSettingsCxxSpecJSI::NativeDevSettingsCxxSpecJSI(std::shared_ptr(&turboModule)->invokeDefaultBackPressHandler(
- rt
- );
- return jsi::Value::undefined();
-}
-
-NativeDeviceEventManagerCxxSpecJSI::NativeDeviceEventManagerCxxSpecJSI(std::shared_ptr jsInvoker)
- : TurboModule("DeviceEventManager", jsInvoker) {
- methodMap_["invokeDefaultBackPressHandler"] = MethodMetadata {0, __hostFunction_NativeDeviceEventManagerCxxSpecJSI_invokeDefaultBackPressHandler};
-}
-static jsi::Value __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
- return static_cast(&turboModule)->getConstants(
- rt
- );
-}
-
-NativeDeviceInfoCxxSpecJSI::NativeDeviceInfoCxxSpecJSI(std::shared_ptr jsInvoker)
- : TurboModule("DeviceInfo", jsInvoker) {
- methodMap_["getConstants"] = MethodMetadata {0, __hostFunction_NativeDeviceInfoCxxSpecJSI_getConstants};
-}
static jsi::Value __hostFunction_NativeDialogManagerAndroidCxxSpecJSI_getConstants(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
return static_cast(&turboModule)->getConstants(
rt
From f805ffb4b4ea1f4d981d736a10423ce195f96ac8 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 12 Jun 2025 21:12:06 +0000
Subject: [PATCH 7/7] Improve fast refresh simulation to use timer-based
approach instead of user interaction
Co-authored-by: chiaramooney <34109996+chiaramooney@users.noreply.github.com>
---
.../js/examples/View/ViewExample.windows.js | 28 +-
.../test/ViewComponentTest.test.ts | 10 +-
vnext/codegen/rnwcoreJSI.h | 1002 ++++++++---------
3 files changed, 530 insertions(+), 510 deletions(-)
diff --git a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
index ef2cbd4203f..dd9a0df05af 100644
--- a/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
+++ b/packages/@react-native-windows/tester/src/js/examples/View/ViewExample.windows.js
@@ -673,10 +673,11 @@ function BoxSizingExample(): React.Node {
class FastRefreshStyleExample extends React.Component<
$ReadOnly<{}>,
- {currentStyle: number},
+ {currentStyle: number, isAutoRefreshing: boolean},
> {
- state: {currentStyle: number} = {
+ state: {currentStyle: number, isAutoRefreshing: boolean} = {
currentStyle: 0,
+ isAutoRefreshing: false,
};
styles = [
@@ -686,13 +687,32 @@ class FastRefreshStyleExample extends React.Component<
{backgroundColor: '#96ceb4', padding: 10, borderRadius: 20},
];
+ intervalId: ?IntervalID = null;
+
+ componentDidMount() {
+ // Start auto-refresh after a short delay to simulate fast refresh behavior
+ this.intervalId = setInterval(() => {
+ if (this.state.isAutoRefreshing) {
+ this.setState({
+ currentStyle: (this.state.currentStyle + 1) % this.styles.length,
+ });
+ }
+ }, 2000);
+ }
+
+ componentWillUnmount() {
+ if (this.intervalId) {
+ clearInterval(this.intervalId);
+ }
+ }
+
render(): React.Node {
return (
- Tap to change style (simulates fast refresh)
+ {this.state.isAutoRefreshing ? 'Auto-refreshing styles...' : 'Tap to start fast refresh simulation'}
Style: {this.state.currentStyle + 1} of {this.styles.length}
@@ -705,7 +725,7 @@ class FastRefreshStyleExample extends React.Component<
_handlePress = () => {
this.setState({
- currentStyle: (this.state.currentStyle + 1) % this.styles.length,
+ isAutoRefreshing: !this.state.isAutoRefreshing,
});
};
}
diff --git a/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts b/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts
index 16cf30b1b51..18fbfe56e81 100644
--- a/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts
+++ b/packages/e2e-test-app-fabric/test/ViewComponentTest.test.ts
@@ -208,22 +208,22 @@ describe('View Tests', () => {
const initialDump = await dumpVisualTree('view-test-fast-refresh');
expect(initialDump).toMatchSnapshot('initial-state');
- // Click to change style (simulating fast refresh behavior)
+ // Click to start auto-refresh (simulating fast refresh activation)
await componentsTab.click();
- // Wait a moment for the style change to apply
+ // Wait for automatic style changes to occur (simulating fast refresh)
await app.waitUntil(
async () => {
const currentDump = await dumpVisualTree('view-test-fast-refresh');
return currentDump !== initialDump;
},
{
- timeout: 3000,
- timeoutMsg: 'View style did not update after interaction',
+ timeout: 5000,
+ timeoutMsg: 'View style did not auto-update during fast refresh simulation',
}
);
- // Take snapshot after style change
+ // Take snapshot after automatic style change
const updatedDump = await dumpVisualTree('view-test-fast-refresh');
expect(updatedDump).toMatchSnapshot('updated-state');
});
diff --git a/vnext/codegen/rnwcoreJSI.h b/vnext/codegen/rnwcoreJSI.h
index c19042048d1..d03a6000dbd 100644
--- a/vnext/codegen/rnwcoreJSI.h
+++ b/vnext/codegen/rnwcoreJSI.h
@@ -1871,6 +1871,87 @@ class JSI_EXPORT NativeAnimatedTurboModuleCxxSpec : public TurboModule {
};
+ class JSI_EXPORT NativeAppearanceCxxSpecJSI : public TurboModule {
+protected:
+ NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker);
+
+public:
+ virtual std::optional getColorScheme(jsi::Runtime &rt) = 0;
+ virtual void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) = 0;
+ virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
+ virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
+
+};
+
+template
+class JSI_EXPORT NativeAppearanceCxxSpec : public TurboModule {
+public:
+ jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
+ return delegate_.create(rt, propName);
+ }
+
+ std::vector getPropertyNames(jsi::Runtime& runtime) override {
+ return delegate_.getPropertyNames(runtime);
+ }
+
+ static constexpr std::string_view kModuleName = "Appearance";
+
+protected:
+ NativeAppearanceCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeAppearanceCxxSpec::kModuleName}, jsInvoker),
+ delegate_(reinterpret_cast(this), jsInvoker) {}
+
+
+private:
+ class Delegate : public NativeAppearanceCxxSpecJSI {
+ public:
+ Delegate(T *instance, std::shared_ptr jsInvoker) :
+ NativeAppearanceCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+
+ }
+
+ std::optional getColorScheme(jsi::Runtime &rt) override {
+ static_assert(
+ bridging::getParameterCount(&T::getColorScheme) == 1,
+ "Expected getColorScheme(...) to have 1 parameters");
+
+ return bridging::callFromJs>(
+ rt, &T::getColorScheme, jsInvoker_, instance_);
+ }
+ void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) override {
+ static_assert(
+ bridging::getParameterCount(&T::setColorScheme) == 2,
+ "Expected setColorScheme(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::setColorScheme, jsInvoker_, instance_, std::move(colorScheme));
+ }
+ void addListener(jsi::Runtime &rt, jsi::String eventName) override {
+ static_assert(
+ bridging::getParameterCount(&T::addListener) == 2,
+ "Expected addListener(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::addListener, jsInvoker_, instance_, std::move(eventName));
+ }
+ void removeListeners(jsi::Runtime &rt, double count) override {
+ static_assert(
+ bridging::getParameterCount(&T::removeListeners) == 2,
+ "Expected removeListeners(...) to have 2 parameters");
+
+ return bridging::callFromJs(
+ rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
+ }
+
+ private:
+ friend class NativeAppearanceCxxSpec;
+ T *instance_;
+ };
+
+ Delegate delegate_;
+};
+
+
#pragma mark - NativeAppStateAppState
@@ -2224,87 +2305,6 @@ class JSI_EXPORT NativeAppThemeCxxSpec : public TurboModule {
};
- class JSI_EXPORT NativeAppearanceCxxSpecJSI : public TurboModule {
-protected:
- NativeAppearanceCxxSpecJSI(std::shared_ptr jsInvoker);
-
-public:
- virtual std::optional getColorScheme(jsi::Runtime &rt) = 0;
- virtual void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) = 0;
- virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
- virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
-
-};
-
-template
-class JSI_EXPORT NativeAppearanceCxxSpec : public TurboModule {
-public:
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
- return delegate_.create(rt, propName);
- }
-
- std::vector getPropertyNames(jsi::Runtime& runtime) override {
- return delegate_.getPropertyNames(runtime);
- }
-
- static constexpr std::string_view kModuleName = "Appearance";
-
-protected:
- NativeAppearanceCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeAppearanceCxxSpec::kModuleName}, jsInvoker),
- delegate_(reinterpret_cast(this), jsInvoker) {}
-
-
-private:
- class Delegate : public NativeAppearanceCxxSpecJSI {
- public:
- Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeAppearanceCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
-
- }
-
- std::optional getColorScheme(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::getColorScheme) == 1,
- "Expected getColorScheme(...) to have 1 parameters");
-
- return bridging::callFromJs>(
- rt, &T::getColorScheme, jsInvoker_, instance_);
- }
- void setColorScheme(jsi::Runtime &rt, jsi::String colorScheme) override {
- static_assert(
- bridging::getParameterCount(&T::setColorScheme) == 2,
- "Expected setColorScheme(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::setColorScheme, jsInvoker_, instance_, std::move(colorScheme));
- }
- void addListener(jsi::Runtime &rt, jsi::String eventName) override {
- static_assert(
- bridging::getParameterCount(&T::addListener) == 2,
- "Expected addListener(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::addListener, jsInvoker_, instance_, std::move(eventName));
- }
- void removeListeners(jsi::Runtime &rt, double count) override {
- static_assert(
- bridging::getParameterCount(&T::removeListeners) == 2,
- "Expected removeListeners(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::removeListeners, jsInvoker_, instance_, std::move(count));
- }
-
- private:
- friend class NativeAppearanceCxxSpec;
- T *instance_;
- };
-
- Delegate delegate_;
-};
-
-
#pragma mark - NativeBlobModuleConstants
@@ -2595,18 +2595,17 @@ class JSI_EXPORT NativeClipboardCxxSpec : public TurboModule {
};
- class JSI_EXPORT NativeDevLoadingViewCxxSpecJSI : public TurboModule {
+ class JSI_EXPORT NativeDeviceEventManagerCxxSpecJSI : public TurboModule {
protected:
- NativeDevLoadingViewCxxSpecJSI(std::shared_ptr jsInvoker);
+ NativeDeviceEventManagerCxxSpecJSI(std::shared_ptr jsInvoker);
public:
- virtual void showMessage(jsi::Runtime &rt, jsi::String message, std::optional withColor, std::optional withBackgroundColor) = 0;
- virtual void hide(jsi::Runtime &rt) = 0;
+ virtual void invokeDefaultBackPressHandler(jsi::Runtime &rt) = 0;
};
template
-class JSI_EXPORT NativeDevLoadingViewCxxSpec : public TurboModule {
+class JSI_EXPORT NativeDeviceEventManagerCxxSpec : public TurboModule {
public:
jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
return delegate_.create(rt, propName);
@@ -2616,41 +2615,33 @@ class JSI_EXPORT NativeDevLoadingViewCxxSpec : public TurboModule {
return delegate_.getPropertyNames(runtime);
}
- static constexpr std::string_view kModuleName = "DevLoadingView";
+ static constexpr std::string_view kModuleName = "DeviceEventManager";
protected:
- NativeDevLoadingViewCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeDevLoadingViewCxxSpec::kModuleName}, jsInvoker),
+ NativeDeviceEventManagerCxxSpec(std::shared_ptr jsInvoker)
+ : TurboModule(std::string{NativeDeviceEventManagerCxxSpec::kModuleName}, jsInvoker),
delegate_(reinterpret_cast(this), jsInvoker) {}
private:
- class Delegate : public NativeDevLoadingViewCxxSpecJSI {
+ class Delegate : public NativeDeviceEventManagerCxxSpecJSI {
public:
Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeDevLoadingViewCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+ NativeDeviceEventManagerCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
}
- void showMessage(jsi::Runtime &rt, jsi::String message, std::optional withColor, std::optional withBackgroundColor) override {
- static_assert(
- bridging::getParameterCount(&T::showMessage) == 4,
- "Expected showMessage(...) to have 4 parameters");
-
- return bridging::callFromJs(
- rt, &T::showMessage, jsInvoker_, instance_, std::move(message), std::move(withColor), std::move(withBackgroundColor));
- }
- void hide(jsi::Runtime &rt) override {
+ void invokeDefaultBackPressHandler(jsi::Runtime &rt) override {
static_assert(
- bridging::getParameterCount(&T::hide) == 1,
- "Expected hide(...) to have 1 parameters");
+ bridging::getParameterCount(&T::invokeDefaultBackPressHandler) == 1,
+ "Expected invokeDefaultBackPressHandler(...) to have 1 parameters");
return bridging::callFromJs(
- rt, &T::hide, jsInvoker_, instance_);
+ rt, &T::invokeDefaultBackPressHandler, jsInvoker_, instance_);
}
private:
- friend class NativeDevLoadingViewCxxSpec;
+ friend class NativeDeviceEventManagerCxxSpec;
T *instance_;
};
@@ -2658,320 +2649,41 @@ class JSI_EXPORT NativeDevLoadingViewCxxSpec : public TurboModule {
};
- class JSI_EXPORT NativeDevMenuCxxSpecJSI : public TurboModule {
-protected:
- NativeDevMenuCxxSpecJSI(std::shared_ptr jsInvoker);
-
-public:
- virtual void show(jsi::Runtime &rt) = 0;
- virtual void reload(jsi::Runtime &rt) = 0;
- virtual void setProfilingEnabled(jsi::Runtime &rt, bool enabled) = 0;
- virtual void setHotLoadingEnabled(jsi::Runtime &rt, bool enabled) = 0;
+
+#pragma mark - NativeDeviceInfoDeviceInfoConstants
+template
+struct NativeDeviceInfoDeviceInfoConstants {
+ P0 Dimensions;
+ P1 isIPhoneX_deprecated;
+ bool operator==(const NativeDeviceInfoDeviceInfoConstants &other) const {
+ return Dimensions == other.Dimensions && isIPhoneX_deprecated == other.isIPhoneX_deprecated;
+ }
};
template
-class JSI_EXPORT NativeDevMenuCxxSpec : public TurboModule {
-public:
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
- return delegate_.create(rt, propName);
- }
+struct NativeDeviceInfoDeviceInfoConstantsBridging {
+ static T types;
- std::vector getPropertyNames(jsi::Runtime& runtime) override {
- return delegate_.getPropertyNames(runtime);
+ static T fromJs(
+ jsi::Runtime &rt,
+ const jsi::Object &value,
+ const std::shared_ptr &jsInvoker) {
+ T result{
+ bridging::fromJs(rt, value.getProperty(rt, "Dimensions"), jsInvoker),
+ bridging::fromJs(rt, value.getProperty(rt, "isIPhoneX_deprecated"), jsInvoker)};
+ return result;
}
- static constexpr std::string_view kModuleName = "DevMenu";
-
-protected:
- NativeDevMenuCxxSpec(std::shared_ptr jsInvoker)
- : TurboModule(std::string{NativeDevMenuCxxSpec::kModuleName}, jsInvoker),
- delegate_(reinterpret_cast(this), jsInvoker) {}
-
-
-private:
- class Delegate : public NativeDevMenuCxxSpecJSI {
- public:
- Delegate(T *instance, std::shared_ptr jsInvoker) :
- NativeDevMenuCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
+#ifdef DEBUG
+ static jsi::Object DimensionsToJs(jsi::Runtime &rt, decltype(types.Dimensions) value) {
+ return bridging::toJs(rt, value);
+ }
- }
-
- void show(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::show) == 1,
- "Expected show(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::show, jsInvoker_, instance_);
- }
- void reload(jsi::Runtime &rt) override {
- static_assert(
- bridging::getParameterCount(&T::reload) == 1,
- "Expected reload(...) to have 1 parameters");
-
- return bridging::callFromJs(
- rt, &T::reload, jsInvoker_, instance_);
- }
- void setProfilingEnabled(jsi::Runtime &rt, bool enabled) override {
- static_assert(
- bridging::getParameterCount(&T::setProfilingEnabled) == 2,
- "Expected setProfilingEnabled(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::setProfilingEnabled, jsInvoker_, instance_, std::move(enabled));
- }
- void setHotLoadingEnabled(jsi::Runtime &rt, bool enabled) override {
- static_assert(
- bridging::getParameterCount(&T::setHotLoadingEnabled) == 2,
- "Expected setHotLoadingEnabled(...) to have 2 parameters");
-
- return bridging::callFromJs(
- rt, &T::setHotLoadingEnabled, jsInvoker_, instance_, std::move(enabled));
- }
-
- private:
- friend class NativeDevMenuCxxSpec;
- T *instance_;
- };
-
- Delegate delegate_;
-};
-
-
- class JSI_EXPORT NativeDevSettingsCxxSpecJSI : public TurboModule {
-protected:
- NativeDevSettingsCxxSpecJSI(std::shared_ptr jsInvoker);
-
-public:
- virtual void reload(jsi::Runtime &rt) = 0;
- virtual void reloadWithReason(jsi::Runtime &rt, jsi::String reason) = 0;
- virtual void onFastRefresh(jsi::Runtime &rt) = 0;
- virtual void setHotLoadingEnabled(jsi::Runtime &rt, bool isHotLoadingEnabled) = 0;
- virtual void setProfilingEnabled(jsi::Runtime &rt, bool isProfilingEnabled) = 0;
- virtual void toggleElementInspector(jsi::Runtime &rt) = 0;
- virtual void addMenuItem(jsi::Runtime &rt, jsi::String title) = 0;
- virtual void openDebugger(jsi::Runtime &rt) = 0;
- virtual void addListener(jsi::Runtime &rt, jsi::String eventName) = 0;
- virtual void removeListeners(jsi::Runtime &rt, double count) = 0;
- virtual void setIsShakeToShowDevMenuEnabled(jsi::Runtime &rt, bool enabled) = 0;
-
-};
-
-template
-class JSI_EXPORT NativeDevSettingsCxxSpec : public TurboModule {
-public:
- jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
- return delegate_.create(rt, propName);
- }
-
- std::vector getPropertyNames(jsi::Runtime& runtime) override {
- return delegate_.getPropertyNames(runtime);
- }
-
- static constexpr std::string_view kModuleName = "DevSettings";
-
-protected:
- NativeDevSettingsCxxSpec(std::shared_ptr