diff --git a/apps/common/example/examples/Reanimated.windows.tsx b/apps/common/example/examples/Reanimated.windows.tsx
new file mode 100644
index 00000000..1ba5fc97
--- /dev/null
+++ b/apps/common/example/examples/Reanimated.windows.tsx
@@ -0,0 +1,19 @@
+import React from 'react';
+import {StyleSheet, Text} from 'react-native';
+
+function ReanimatedRectExample() {
+ return (
+
+ Reanimated not supported in react-native-windows new arch currently
+
+ );
+}
+ReanimatedRectExample.title = 'reanimated rectangle';
+
+const title = 'Reanimated';
+const samples = [ReanimatedRectExample];
+
+const style = StyleSheet.create({text: {width: 30, height: 30}});
+const icon = R;
+
+export {icon, samples};
diff --git a/apps/common/noNavigationApp.tsx b/apps/common/noNavigationApp.tsx
new file mode 100644
index 00000000..baa0ed85
--- /dev/null
+++ b/apps/common/noNavigationApp.tsx
@@ -0,0 +1,49 @@
+/**
+ * Sample React Native App for react-native-svg library
+ * https://github.com/software-mansion/react-native-svg/tree/main/apps/common/example
+ */
+
+/**
+ * This is a very simple render of the examples for react-native-svg library, to avoid dependencies on @react-navigation,
+ * which may not be fully supported on all platforms and versions of react-native
+ */
+'use strict';
+
+import React from 'react';
+import {ScrollView, Text, View} from 'react-native';
+import {examples} from './example/examples';
+import type {Example} from './example/utils/types';
+import {commonStyles} from './example/utils/commonStyles';
+
+const ExampleBlock = ({example, index}: {example: Example; index: number}) => {
+ if (Array.isArray(example.samples)) {
+ return (
+
+ {example.icon}
+
+ {example.samples.map((sample, index) => {
+ return (
+
+ {sample.title}
+ {sample({})}
+
+ );
+ })}
+
+ );
+ }
+
+ throw new Error('Unhandled Example type');
+};
+
+export default function App() {
+ return (
+
+ {Object.values(examples).map((example, index) => {
+ return ;
+ })}
+
+ );
+}
diff --git a/apps/fabric-windows-example/.gitignore b/apps/fabric-windows-example/.gitignore
index d5ae4566..59b85d69 100644
--- a/apps/fabric-windows-example/.gitignore
+++ b/apps/fabric-windows-example/.gitignore
@@ -52,6 +52,9 @@ yarn-error.log
**/fastlane/screenshots
**/fastlane/test_output
+# Locally installed nuget packages
+/windows/packages
+
# Bundle artifact
*.jsbundle
diff --git a/apps/fabric-windows-example/babel.config.js b/apps/fabric-windows-example/babel.config.js
index 0f949a10..f7b3da3b 100644
--- a/apps/fabric-windows-example/babel.config.js
+++ b/apps/fabric-windows-example/babel.config.js
@@ -1,6 +1,3 @@
module.exports = {
presets: ['module:@react-native/babel-preset'],
- plugins: [
- 'react-native-reanimated/plugin',
- ],
};
diff --git a/apps/fabric-windows-example/index.js b/apps/fabric-windows-example/index.js
index aa1be212..62d72c3f 100644
--- a/apps/fabric-windows-example/index.js
+++ b/apps/fabric-windows-example/index.js
@@ -3,7 +3,10 @@
*/
import {AppRegistry} from 'react-native';
-import App from '../common';
+import App from '../common/noNavigationApp';
import {name as appName} from './app.json';
AppRegistry.registerComponent(appName, () => App);
+
+
+AppRegistry.registerComponent("Example", () => App);
diff --git a/apps/fabric-windows-example/package.json b/apps/fabric-windows-example/package.json
index 886972a4..5c348726 100644
--- a/apps/fabric-windows-example/package.json
+++ b/apps/fabric-windows-example/package.json
@@ -11,8 +11,7 @@
"dependencies": {
"react": "18.2.0",
"react-native": "0.74.2",
- "react-native-windows": "0.74.9",
- "react-native-reanimated": "3.9.0",
+ "react-native-windows": "0.74.24",
"react-native-svg": "link:../../"
},
"devDependencies": {
diff --git a/apps/fabric-windows-example/windows/FabricExample/FabricExample.cpp b/apps/fabric-windows-example/windows/FabricExample/FabricExample.cpp
index a94fd9c8..eac183ee 100644
--- a/apps/fabric-windows-example/windows/FabricExample/FabricExample.cpp
+++ b/apps/fabric-windows-example/windows/FabricExample/FabricExample.cpp
@@ -36,6 +36,8 @@ void UpdateRootViewSizeToAppWindow(
winrt::Microsoft::UI::Windowing::OverlappedPresenterState::Minimized) {
winrt::Microsoft::ReactNative::LayoutConstraints constraints;
constraints.MaximumSize = constraints.MinimumSize = size;
+ constraints.LayoutDirection =
+ winrt::Microsoft::ReactNative::LayoutDirection::Undefined;
rootView.Arrange(constraints, {0, 0});
}
}
diff --git a/apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj b/apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj
index 1f60e5f2..f11c014f 100644
--- a/apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj
+++ b/apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj
@@ -75,6 +75,7 @@
true
%(AdditionalOptions) /bigobj
4453;28204
+ stdcpp20
shell32.lib;user32.lib;windowsapp.lib;%(AdditionalDependenices)
diff --git a/apps/fabric-windows-example/windows/FabricExample/packages.lock.json b/apps/fabric-windows-example/windows/FabricExample/packages.lock.json
index c0281d92..97d58851 100644
--- a/apps/fabric-windows-example/windows/FabricExample/packages.lock.json
+++ b/apps/fabric-windows-example/windows/FabricExample/packages.lock.json
@@ -4,15 +4,15 @@
"native,Version=v0.0": {
"boost": {
"type": "Direct",
- "requested": "[1.76.0, )",
- "resolved": "1.76.0",
- "contentHash": "p+w3YvNdXL8Cu9Fzrmexssu0tZbWxuf6ywsQqHjDlKFE5ojXHof1HIyMC3zDLfLnh80dIeFcEUAuR2Asg/XHRA=="
+ "requested": "[1.83.0, )",
+ "resolved": "1.83.0",
+ "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ=="
},
"Microsoft.JavaScript.Hermes": {
"type": "Direct",
- "requested": "[0.1.21, )",
- "resolved": "0.1.21",
- "contentHash": "5njCh+3eXTLOv7+8nOnp6nJ5C0r6it5ze54c0nuWleeDptuK8t3dEDB79XTU4D5DKNvAPlqJpgXRDOak5nYIug=="
+ "requested": "[0.1.23, )",
+ "resolved": "0.1.23",
+ "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g=="
},
"Microsoft.VCRTForwarders.140": {
"type": "Direct",
@@ -35,6 +35,19 @@
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
},
+ "Microsoft.UI.Xaml": {
+ "type": "Transitive",
+ "resolved": "2.8.0",
+ "contentHash": "vxdHxTr63s5KVtNddMFpgvjBjUH50z7seq/5jLWmmSuf8poxg+sXrywkofUdE8ZstbpO9y3FL/IXXUcPYbeesA==",
+ "dependencies": {
+ "Microsoft.Web.WebView2": "1.0.1264.42"
+ }
+ },
+ "Microsoft.Web.WebView2": {
+ "type": "Transitive",
+ "resolved": "1.0.1264.42",
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
"Microsoft.Windows.SDK.BuildTools": {
"type": "Transitive",
"resolved": "10.0.22621.756",
@@ -43,7 +56,7 @@
"common": {
"type": "Project",
"dependencies": {
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
}
},
"fmt": {
@@ -53,7 +66,7 @@
"type": "Project",
"dependencies": {
"Fmt": "[1.0.0, )",
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
}
},
"microsoft.reactnative": {
@@ -61,17 +74,24 @@
"dependencies": {
"Common": "[1.0.0, )",
"Folly": "[1.0.0, )",
- "Microsoft.JavaScript.Hermes": "[0.1.21, )",
+ "Microsoft.JavaScript.Hermes": "[0.1.23, )",
"Microsoft.WindowsAppSDK": "[1.5.240227000, )",
"ReactCommon": "[1.0.0, )",
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
}
},
"reactcommon": {
"type": "Project",
"dependencies": {
"Folly": "[1.0.0, )",
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
+ }
+ },
+ "reactnativeasyncstorage": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.ReactNative": "[1.0.0, )",
+ "Microsoft.UI.Xaml": "[2.8.0, )"
}
},
"rnsvg": {
@@ -80,7 +100,7 @@
"Microsoft.ReactNative": "[1.0.0, )",
"Microsoft.VCRTForwarders.140": "[1.0.2-rc, )",
"Microsoft.WindowsAppSDK": "[1.5.240227000, )",
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
}
}
},
@@ -99,6 +119,11 @@
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
+ },
+ "Microsoft.Web.WebView2": {
+ "type": "Transitive",
+ "resolved": "1.0.1264.42",
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win-arm64": {
@@ -116,6 +141,11 @@
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
+ },
+ "Microsoft.Web.WebView2": {
+ "type": "Transitive",
+ "resolved": "1.0.1264.42",
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win-x64": {
@@ -133,6 +163,11 @@
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
+ },
+ "Microsoft.Web.WebView2": {
+ "type": "Transitive",
+ "resolved": "1.0.1264.42",
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
},
"native,Version=v0.0/win-x86": {
@@ -150,6 +185,11 @@
"dependencies": {
"Microsoft.Windows.SDK.BuildTools": "10.0.22621.756"
}
+ },
+ "Microsoft.Web.WebView2": {
+ "type": "Transitive",
+ "resolved": "1.0.1264.42",
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
}
}
}
diff --git a/apps/fabric-windows-example/yarn.lock b/apps/fabric-windows-example/yarn.lock
index c9ebc1ca..51cebf41 100644
--- a/apps/fabric-windows-example/yarn.lock
+++ b/apps/fabric-windows-example/yarn.lock
@@ -919,7 +919,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.0.0-0", "@babel/plugin-transform-arrow-functions@^7.24.1":
+"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27"
integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==
@@ -1377,7 +1377,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-nullish-coalescing-operator@^7.0.0-0", "@babel/plugin-transform-nullish-coalescing-operator@^7.24.1":
+"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988"
integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==
@@ -1461,7 +1461,7 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-transform-optional-chaining@^7.0.0-0", "@babel/plugin-transform-optional-chaining@^7.24.1":
+"@babel/plugin-transform-optional-chaining@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6"
integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==
@@ -1617,7 +1617,7 @@
babel-plugin-polyfill-regenerator "^0.6.1"
semver "^6.3.1"
-"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.0.0-0", "@babel/plugin-transform-shorthand-properties@^7.24.1":
+"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55"
integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==
@@ -1661,7 +1661,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-template-literals@^7.0.0-0", "@babel/plugin-transform-template-literals@^7.24.1":
+"@babel/plugin-transform-template-literals@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7"
integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==
@@ -1977,7 +1977,7 @@
"@babel/plugin-transform-modules-commonjs" "^7.24.7"
"@babel/plugin-transform-typescript" "^7.24.7"
-"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.7":
+"@babel/preset-typescript@^7.13.0":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec"
integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==
@@ -2493,16 +2493,6 @@
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz#f074db930a7feb4d64103a9a576c5fbad046fcac"
integrity sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==
-"@react-native-community/cli-clean@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.6.tgz#87c7ad8746c38dab0fe7b3c6ff89d44351d5d943"
- integrity sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==
- dependencies:
- "@react-native-community/cli-tools" "13.6.6"
- chalk "^4.1.2"
- execa "^5.0.0"
- fast-glob "^3.3.2"
-
"@react-native-community/cli-clean@13.6.8":
version "13.6.8"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.8.tgz#95ce964047f005152ac100394b6dcd5d2cc2a474"
@@ -2513,17 +2503,15 @@
execa "^5.0.0"
fast-glob "^3.3.2"
-"@react-native-community/cli-config@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-13.6.6.tgz#69f590694b3a079c74f781baab3b762db74f5dbd"
- integrity sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==
+"@react-native-community/cli-clean@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.9.tgz#b6754f39c2b877c9d730feb848945150e1d52209"
+ integrity sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==
dependencies:
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
- cosmiconfig "^5.1.0"
- deepmerge "^4.3.0"
+ execa "^5.0.0"
fast-glob "^3.3.2"
- joi "^17.2.1"
"@react-native-community/cli-config@13.6.8":
version "13.6.8"
@@ -2537,12 +2525,17 @@
fast-glob "^3.3.2"
joi "^17.2.1"
-"@react-native-community/cli-debugger-ui@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.6.tgz#ac021ebd795b0fd66fb52a8987d1d41c5a4b8cb3"
- integrity sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==
+"@react-native-community/cli-config@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-13.6.9.tgz#d609a64d40a173c89bd7d24e31807bb7dcba69f9"
+ integrity sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==
dependencies:
- serve-static "^1.13.1"
+ "@react-native-community/cli-tools" "13.6.9"
+ chalk "^4.1.2"
+ cosmiconfig "^5.1.0"
+ deepmerge "^4.3.0"
+ fast-glob "^3.3.2"
+ joi "^17.2.1"
"@react-native-community/cli-debugger-ui@13.6.8":
version "13.6.8"
@@ -2551,28 +2544,12 @@
dependencies:
serve-static "^1.13.1"
-"@react-native-community/cli-doctor@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-13.6.6.tgz#ac0febff05601d9b86af3e03460e1a6b0a1d33a5"
- integrity sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==
+"@react-native-community/cli-debugger-ui@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.9.tgz#bc5727c51964206a00d417e5148b46331a81d5a5"
+ integrity sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==
dependencies:
- "@react-native-community/cli-config" "13.6.6"
- "@react-native-community/cli-platform-android" "13.6.6"
- "@react-native-community/cli-platform-apple" "13.6.6"
- "@react-native-community/cli-platform-ios" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- chalk "^4.1.2"
- command-exists "^1.2.8"
- deepmerge "^4.3.0"
- envinfo "^7.10.0"
- execa "^5.0.0"
- hermes-profile-transformer "^0.0.6"
- node-stream-zip "^1.9.1"
- ora "^5.4.1"
- semver "^7.5.2"
- strip-ansi "^5.2.0"
- wcwidth "^1.0.1"
- yaml "^2.2.1"
+ serve-static "^1.13.1"
"@react-native-community/cli-doctor@13.6.8":
version "13.6.8"
@@ -2597,15 +2574,28 @@
wcwidth "^1.0.1"
yaml "^2.2.1"
-"@react-native-community/cli-hermes@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-13.6.6.tgz#590f55f151fec23b55498228f92d100a0e71d474"
- integrity sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==
+"@react-native-community/cli-doctor@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-13.6.9.tgz#f1d4eeff427ddc8a9d19851042621c10939c35cb"
+ integrity sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==
dependencies:
- "@react-native-community/cli-platform-android" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-config" "13.6.9"
+ "@react-native-community/cli-platform-android" "13.6.9"
+ "@react-native-community/cli-platform-apple" "13.6.9"
+ "@react-native-community/cli-platform-ios" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
+ command-exists "^1.2.8"
+ deepmerge "^4.3.0"
+ envinfo "^7.10.0"
+ execa "^5.0.0"
hermes-profile-transformer "^0.0.6"
+ node-stream-zip "^1.9.1"
+ ora "^5.4.1"
+ semver "^7.5.2"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+ yaml "^2.2.1"
"@react-native-community/cli-hermes@13.6.8":
version "13.6.8"
@@ -2617,17 +2607,15 @@
chalk "^4.1.2"
hermes-profile-transformer "^0.0.6"
-"@react-native-community/cli-platform-android@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.6.tgz#9e3863cb092709021f11848890bff0fc16fc1609"
- integrity sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==
+"@react-native-community/cli-hermes@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-13.6.9.tgz#88c8dfe936a0d4272efc54429eda9ccc3fca3ad8"
+ integrity sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==
dependencies:
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-platform-android" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
- execa "^5.0.0"
- fast-glob "^3.3.2"
- fast-xml-parser "^4.2.4"
- logkitty "^0.7.1"
+ hermes-profile-transformer "^0.0.6"
"@react-native-community/cli-platform-android@13.6.8":
version "13.6.8"
@@ -2641,17 +2629,17 @@
fast-xml-parser "^4.2.4"
logkitty "^0.7.1"
-"@react-native-community/cli-platform-apple@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.6.tgz#d445fd6ed02c5ae2f43f9c45501e04fee53a2790"
- integrity sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==
+"@react-native-community/cli-platform-android@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.9.tgz#b175b9b11334fc90da3f395432678bd53c30fae4"
+ integrity sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==
dependencies:
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
execa "^5.0.0"
fast-glob "^3.3.2"
- fast-xml-parser "^4.0.12"
- ora "^5.4.1"
+ fast-xml-parser "^4.2.4"
+ logkitty "^0.7.1"
"@react-native-community/cli-platform-apple@13.6.8":
version "13.6.8"
@@ -2665,12 +2653,17 @@
fast-xml-parser "^4.0.12"
ora "^5.4.1"
-"@react-native-community/cli-platform-ios@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.6.tgz#0cd700f36483ca37dda7ec044377f8a926b1df1f"
- integrity sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==
+"@react-native-community/cli-platform-apple@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.9.tgz#02fb5dc47d62acd85f4d7a852e93216927a772fa"
+ integrity sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==
dependencies:
- "@react-native-community/cli-platform-apple" "13.6.6"
+ "@react-native-community/cli-tools" "13.6.9"
+ chalk "^4.1.2"
+ execa "^5.0.0"
+ fast-glob "^3.3.2"
+ fast-xml-parser "^4.0.12"
+ ora "^5.4.1"
"@react-native-community/cli-platform-ios@13.6.8":
version "13.6.8"
@@ -2679,20 +2672,12 @@
dependencies:
"@react-native-community/cli-platform-apple" "13.6.8"
-"@react-native-community/cli-server-api@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-13.6.6.tgz#467993006ef82361cdf7a9817999d5a09e85ca6a"
- integrity sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==
+"@react-native-community/cli-platform-ios@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.9.tgz#f37ceab41c2302e8f0d4bcbd3bf58b3353db4306"
+ integrity sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==
dependencies:
- "@react-native-community/cli-debugger-ui" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- compression "^1.7.1"
- connect "^3.6.5"
- errorhandler "^1.5.1"
- nocache "^3.0.1"
- pretty-format "^26.6.2"
- serve-static "^1.13.1"
- ws "^6.2.2"
+ "@react-native-community/cli-platform-apple" "13.6.9"
"@react-native-community/cli-server-api@13.6.8":
version "13.6.8"
@@ -2709,22 +2694,20 @@
serve-static "^1.13.1"
ws "^6.2.2"
-"@react-native-community/cli-tools@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-13.6.6.tgz#55c40cbabafbfc56cfb95a4d5fbf73ef60ec3cbc"
- integrity sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==
+"@react-native-community/cli-server-api@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-13.6.9.tgz#269e666bc26e9d0b2f42c7f6099559b5f9259e9d"
+ integrity sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==
dependencies:
- appdirsjs "^1.2.4"
- chalk "^4.1.2"
- execa "^5.0.0"
- find-up "^5.0.0"
- mime "^2.4.1"
- node-fetch "^2.6.0"
- open "^6.2.0"
- ora "^5.4.1"
- semver "^7.5.2"
- shell-quote "^1.7.3"
- sudo-prompt "^9.0.0"
+ "@react-native-community/cli-debugger-ui" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
+ compression "^1.7.1"
+ connect "^3.6.5"
+ errorhandler "^1.5.1"
+ nocache "^3.0.1"
+ pretty-format "^26.6.2"
+ serve-static "^1.13.1"
+ ws "^6.2.2"
"@react-native-community/cli-tools@13.6.8":
version "13.6.8"
@@ -2743,12 +2726,22 @@
shell-quote "^1.7.3"
sudo-prompt "^9.0.0"
-"@react-native-community/cli-types@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-13.6.6.tgz#b45af119d61888fea1074a7c32ddb093e3f119a9"
- integrity sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==
+"@react-native-community/cli-tools@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-13.6.9.tgz#2baee279358ba1a863e737b2fa9f45659ad91929"
+ integrity sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==
dependencies:
- joi "^17.2.1"
+ appdirsjs "^1.2.4"
+ chalk "^4.1.2"
+ execa "^5.0.0"
+ find-up "^5.0.0"
+ mime "^2.4.1"
+ node-fetch "^2.6.0"
+ open "^6.2.0"
+ ora "^5.4.1"
+ semver "^7.5.2"
+ shell-quote "^1.7.3"
+ sudo-prompt "^9.0.0"
"@react-native-community/cli-types@13.6.8":
version "13.6.8"
@@ -2757,28 +2750,12 @@
dependencies:
joi "^17.2.1"
-"@react-native-community/cli@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-13.6.6.tgz#b929c8668e88344c03a46a3e635cb382dba16773"
- integrity sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==
+"@react-native-community/cli-types@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-13.6.9.tgz#08bfb796eacf0daeb31e2de516e81e78a36a1a55"
+ integrity sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==
dependencies:
- "@react-native-community/cli-clean" "13.6.6"
- "@react-native-community/cli-config" "13.6.6"
- "@react-native-community/cli-debugger-ui" "13.6.6"
- "@react-native-community/cli-doctor" "13.6.6"
- "@react-native-community/cli-hermes" "13.6.6"
- "@react-native-community/cli-server-api" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- "@react-native-community/cli-types" "13.6.6"
- chalk "^4.1.2"
- commander "^9.4.1"
- deepmerge "^4.3.0"
- execa "^5.0.0"
- find-up "^4.1.0"
- fs-extra "^8.1.0"
- graceful-fs "^4.1.3"
- prompts "^2.4.2"
- semver "^7.5.2"
+ joi "^17.2.1"
"@react-native-community/cli@13.6.8":
version "13.6.8"
@@ -2803,15 +2780,38 @@
prompts "^2.4.2"
semver "^7.5.2"
-"@react-native-windows/cli@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/cli/-/cli-0.74.0.tgz#da85c0f8d7f96a761080fae27323fe257560e22d"
- integrity sha512-grOp6b/Pfa4T+n+oWmoo18BXI97CKZPbRKTlCg2Ne5Hsq2rj4Ewg8tnRFKFOMthy5dZcPWLqsphkT0J/sQBHXw==
+"@react-native-community/cli@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-13.6.9.tgz#ba6360b94e0aba9c4001bda256cf7e57e2ecb02c"
+ integrity sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==
dependencies:
- "@react-native-windows/codegen" "0.74.0"
- "@react-native-windows/fs" "0.74.0"
- "@react-native-windows/package-utils" "0.74.0"
- "@react-native-windows/telemetry" "0.74.0"
+ "@react-native-community/cli-clean" "13.6.9"
+ "@react-native-community/cli-config" "13.6.9"
+ "@react-native-community/cli-debugger-ui" "13.6.9"
+ "@react-native-community/cli-doctor" "13.6.9"
+ "@react-native-community/cli-hermes" "13.6.9"
+ "@react-native-community/cli-server-api" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
+ "@react-native-community/cli-types" "13.6.9"
+ chalk "^4.1.2"
+ commander "^9.4.1"
+ deepmerge "^4.3.0"
+ execa "^5.0.0"
+ find-up "^4.1.0"
+ fs-extra "^8.1.0"
+ graceful-fs "^4.1.3"
+ prompts "^2.4.2"
+ semver "^7.5.2"
+
+"@react-native-windows/cli@0.74.8":
+ version "0.74.8"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/cli/-/cli-0.74.8.tgz#747b6d4de9fa5e3e837b643fc1a48600d756d2d2"
+ integrity sha512-XUqoXiGDlD4BCYcEweujpV3tUYr5pGijX3mNrP1DWzY8gKXVgcmzLs6fng/EK6VsWD7H8bRraYAu9pccGLN4fw==
+ dependencies:
+ "@react-native-windows/codegen" "0.74.5"
+ "@react-native-windows/fs" "0.74.1"
+ "@react-native-windows/package-utils" "0.74.1"
+ "@react-native-windows/telemetry" "0.74.2"
"@xmldom/xmldom" "^0.7.7"
chalk "^4.1.0"
cli-spinners "^2.2.0"
@@ -2830,50 +2830,50 @@
xml-parser "^1.2.1"
xpath "^0.0.27"
-"@react-native-windows/codegen@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/codegen/-/codegen-0.74.0.tgz#9024ba6e871088e42356f94eb126697e6268487b"
- integrity sha512-jSN5PZQKZIuaukoUJU9LOyHs2Y/KmG5xsLtSGRUcjG8wTrzP+xXxj3115hHdk9vreL80o+pup5o1UNfyLfvGIA==
+"@react-native-windows/codegen@0.74.5":
+ version "0.74.5"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/codegen/-/codegen-0.74.5.tgz#a90d6caa0c1664ce25f43457bdb72bf424918f48"
+ integrity sha512-7v2QBQH7wBBYe+OUlbEsDEEOhsRAM4th55F8r9RtyEvMc+2W79up0se3+xYdBgwjYIPHsDp+g5XwDVjBJC4m7A==
dependencies:
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/fs" "0.74.1"
chalk "^4.1.0"
- globby "^11.0.4"
+ globby "^11.1.0"
mustache "^4.0.1"
source-map-support "^0.5.19"
yargs "^16.2.0"
-"@react-native-windows/find-repo-root@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/find-repo-root/-/find-repo-root-0.74.0.tgz#687819c76825d3f7c58401a9d96c2c748774506f"
- integrity sha512-6dxkKX+mtT+yXuTDUf7A+ZQnyX57WlYk3fDNeNTpI66xBR4QuRwPdzTNamZxvX6JEMSe4lm4PqXWlfAKYzPENw==
+"@react-native-windows/find-repo-root@0.74.1":
+ version "0.74.1"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/find-repo-root/-/find-repo-root-0.74.1.tgz#bf2f10545c29ffcdb76b9179fce346f84e15c5ab"
+ integrity sha512-k+Hk16/NmPhxsQYGCRtAfcQqCDCJvAxC74FLzFOO6+c/VDM0U05kEcJsJzI1dh/0kZh+YSZQo3w1RrA1z1S2gw==
dependencies:
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/fs" "0.74.1"
find-up "^4.1.0"
-"@react-native-windows/fs@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/fs/-/fs-0.74.0.tgz#bbef312e6c9541292a69e607c1e5fbc47e2a665c"
- integrity sha512-YK8CkNHSwskU3PPCPTw1DPen3/QXS7qP7rAp+FNK4LfyOgiO1V9TiIyz3DcvqOsD+iwriXoEl/3Bvo/8HmlTbQ==
+"@react-native-windows/fs@0.74.1":
+ version "0.74.1"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/fs/-/fs-0.74.1.tgz#2c6ade1f937adc6056b1a6b052b7b85acb725a14"
+ integrity sha512-Qepr2KyMvCKugOwIXKXtgMqww5P3yI5HTtxIUWytBCoIPEk1lJdpx/sFjTGmir0QXaLlZxXbdrxpLLnN7eq3Tg==
dependencies:
graceful-fs "^4.2.8"
-"@react-native-windows/package-utils@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/package-utils/-/package-utils-0.74.0.tgz#bdcd18f993d899a6f9914365863bde7ee4eee509"
- integrity sha512-b7c2/DycLM3MK7K6Y4XVuKFBTLvyg0DSP7++f/yZsBWyCysFycAS5gCrlVbXk6Kez3CIEspSS7op+GJMduMp8g==
+"@react-native-windows/package-utils@0.74.1":
+ version "0.74.1"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/package-utils/-/package-utils-0.74.1.tgz#18e49bb5b2ed967f279605223eae65a3ea55112f"
+ integrity sha512-nzKo1H991npbRx2EJT0wkniGkngEw7ND5+oz6jhbNFQ3UCKIUBCLc2bPBBX1Z5jp40R+qoVbgnQP2fuAN5y9tA==
dependencies:
- "@react-native-windows/find-repo-root" "0.74.0"
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/find-repo-root" "0.74.1"
+ "@react-native-windows/fs" "0.74.1"
get-monorepo-packages "^1.2.0"
lodash "^4.17.15"
-"@react-native-windows/telemetry@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/telemetry/-/telemetry-0.74.0.tgz#e050312998d6c64f50f368bcb3299e9e3138fd10"
- integrity sha512-80vMPWXLJpa3v+vAafXjCQM0GFE3Iq8breRkrwzmbANAfCEXoJdOI0Aju0sOqDyiE68OUekjU9lwWbIyFEQGJQ==
+"@react-native-windows/telemetry@0.74.2":
+ version "0.74.2"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/telemetry/-/telemetry-0.74.2.tgz#3ad1bdc2be0f43f2009f13368d5c6659064ec3db"
+ integrity sha512-fTqPYaYB7MtPHTr1ytarFsoPHLHch8EAegblTDTo1ha3a1neGOMTGoxZF2a8/l0y8HSDdsfyTfv8JjCO3w5oow==
dependencies:
"@azure/core-auth" "1.5.0"
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/fs" "0.74.1"
"@xmldom/xmldom" "^0.7.7"
applicationinsights "2.9.1"
ci-info "^3.2.0"
@@ -2882,16 +2882,16 @@
os-locale "^5.0.0"
xpath "^0.0.27"
-"@react-native/assets-registry@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.83.tgz#c1815dc10f9e1075e0d03b4c8a9619145969522e"
- integrity sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==
-
"@react-native/assets-registry@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.84.tgz#aa472f82c1b7d8a30098c8ba22fad7b3dbb5be5f"
integrity sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ==
+"@react-native/assets-registry@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.87.tgz#7dda64e48db14597e19e15f679e31abbb1c1fb4d"
+ integrity sha512-1XmRhqQchN+pXPKEKYdpJlwESxVomJOxtEnIkbo7GAlaN2sym84fHEGDXAjLilih5GVPpcpSmFzTy8jx3LtaFg==
+
"@react-native/assets@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e"
@@ -2904,13 +2904,6 @@
dependencies:
"@react-native/codegen" "0.74.81"
-"@react-native/babel-plugin-codegen@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.83.tgz#971f9cfec980dd05598d81964c05a26c6166f9fb"
- integrity sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==
- dependencies:
- "@react-native/codegen" "0.74.83"
-
"@react-native/babel-plugin-codegen@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.84.tgz#a3a72c188d875601704a421e395f6909fdec40f3"
@@ -2918,6 +2911,13 @@
dependencies:
"@react-native/codegen" "0.74.84"
+"@react-native/babel-plugin-codegen@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz#44457f4de69911f37a6ac308a7783203a757574a"
+ integrity sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==
+ dependencies:
+ "@react-native/codegen" "0.74.87"
+
"@react-native/babel-preset@0.74.81":
version "0.74.81"
resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.81.tgz#80d0b96eef35d671f97eaf223c4d770170d7f23f"
@@ -2967,55 +2967,6 @@
babel-plugin-transform-flow-enums "^0.0.2"
react-refresh "^0.14.0"
-"@react-native/babel-preset@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.83.tgz#9828457779b4ce0219078652327ce3203115cdf9"
- integrity sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==
- dependencies:
- "@babel/core" "^7.20.0"
- "@babel/plugin-proposal-async-generator-functions" "^7.0.0"
- "@babel/plugin-proposal-class-properties" "^7.18.0"
- "@babel/plugin-proposal-export-default-from" "^7.0.0"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0"
- "@babel/plugin-proposal-numeric-separator" "^7.0.0"
- "@babel/plugin-proposal-object-rest-spread" "^7.20.0"
- "@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
- "@babel/plugin-proposal-optional-chaining" "^7.20.0"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
- "@babel/plugin-syntax-export-default-from" "^7.0.0"
- "@babel/plugin-syntax-flow" "^7.18.0"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0"
- "@babel/plugin-syntax-optional-chaining" "^7.0.0"
- "@babel/plugin-transform-arrow-functions" "^7.0.0"
- "@babel/plugin-transform-async-to-generator" "^7.20.0"
- "@babel/plugin-transform-block-scoping" "^7.0.0"
- "@babel/plugin-transform-classes" "^7.0.0"
- "@babel/plugin-transform-computed-properties" "^7.0.0"
- "@babel/plugin-transform-destructuring" "^7.20.0"
- "@babel/plugin-transform-flow-strip-types" "^7.20.0"
- "@babel/plugin-transform-function-name" "^7.0.0"
- "@babel/plugin-transform-literals" "^7.0.0"
- "@babel/plugin-transform-modules-commonjs" "^7.0.0"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0"
- "@babel/plugin-transform-parameters" "^7.0.0"
- "@babel/plugin-transform-private-methods" "^7.22.5"
- "@babel/plugin-transform-private-property-in-object" "^7.22.11"
- "@babel/plugin-transform-react-display-name" "^7.0.0"
- "@babel/plugin-transform-react-jsx" "^7.0.0"
- "@babel/plugin-transform-react-jsx-self" "^7.0.0"
- "@babel/plugin-transform-react-jsx-source" "^7.0.0"
- "@babel/plugin-transform-runtime" "^7.0.0"
- "@babel/plugin-transform-shorthand-properties" "^7.0.0"
- "@babel/plugin-transform-spread" "^7.0.0"
- "@babel/plugin-transform-sticky-regex" "^7.0.0"
- "@babel/plugin-transform-typescript" "^7.5.0"
- "@babel/plugin-transform-unicode-regex" "^7.0.0"
- "@babel/template" "^7.0.0"
- "@react-native/babel-plugin-codegen" "0.74.83"
- babel-plugin-transform-flow-enums "^0.0.2"
- react-refresh "^0.14.0"
-
"@react-native/babel-preset@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.84.tgz#703ebfc810d82c9f51f033352abd5f9fa70d492b"
@@ -3065,6 +3016,55 @@
babel-plugin-transform-flow-enums "^0.0.2"
react-refresh "^0.14.0"
+"@react-native/babel-preset@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.87.tgz#3d74517d2ea8898f83b5106027033607d5bda50d"
+ integrity sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==
+ dependencies:
+ "@babel/core" "^7.20.0"
+ "@babel/plugin-proposal-async-generator-functions" "^7.0.0"
+ "@babel/plugin-proposal-class-properties" "^7.18.0"
+ "@babel/plugin-proposal-export-default-from" "^7.0.0"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0"
+ "@babel/plugin-proposal-numeric-separator" "^7.0.0"
+ "@babel/plugin-proposal-object-rest-spread" "^7.20.0"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.20.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.0"
+ "@babel/plugin-syntax-export-default-from" "^7.0.0"
+ "@babel/plugin-syntax-flow" "^7.18.0"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.0.0"
+ "@babel/plugin-transform-arrow-functions" "^7.0.0"
+ "@babel/plugin-transform-async-to-generator" "^7.20.0"
+ "@babel/plugin-transform-block-scoping" "^7.0.0"
+ "@babel/plugin-transform-classes" "^7.0.0"
+ "@babel/plugin-transform-computed-properties" "^7.0.0"
+ "@babel/plugin-transform-destructuring" "^7.20.0"
+ "@babel/plugin-transform-flow-strip-types" "^7.20.0"
+ "@babel/plugin-transform-function-name" "^7.0.0"
+ "@babel/plugin-transform-literals" "^7.0.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.0.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0"
+ "@babel/plugin-transform-parameters" "^7.0.0"
+ "@babel/plugin-transform-private-methods" "^7.22.5"
+ "@babel/plugin-transform-private-property-in-object" "^7.22.11"
+ "@babel/plugin-transform-react-display-name" "^7.0.0"
+ "@babel/plugin-transform-react-jsx" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-self" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-source" "^7.0.0"
+ "@babel/plugin-transform-runtime" "^7.0.0"
+ "@babel/plugin-transform-shorthand-properties" "^7.0.0"
+ "@babel/plugin-transform-spread" "^7.0.0"
+ "@babel/plugin-transform-sticky-regex" "^7.0.0"
+ "@babel/plugin-transform-typescript" "^7.5.0"
+ "@babel/plugin-transform-unicode-regex" "^7.0.0"
+ "@babel/template" "^7.0.0"
+ "@react-native/babel-plugin-codegen" "0.74.87"
+ babel-plugin-transform-flow-enums "^0.0.2"
+ react-refresh "^0.14.0"
+
"@react-native/codegen@0.74.81":
version "0.74.81"
resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.81.tgz#1025ffd41f2b4710fd700c9e8e85210b9651a7c4"
@@ -3078,19 +3078,6 @@
mkdirp "^0.5.1"
nullthrows "^1.1.1"
-"@react-native/codegen@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.83.tgz#7c56a82fe7603f0867f0d80ff29db3757b71be55"
- integrity sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==
- dependencies:
- "@babel/parser" "^7.20.0"
- glob "^7.1.1"
- hermes-parser "0.19.1"
- invariant "^2.2.4"
- jscodeshift "^0.14.0"
- mkdirp "^0.5.1"
- nullthrows "^1.1.1"
-
"@react-native/codegen@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.84.tgz#d3425a510b7da558ef5088d9b0aa5e0b1c05c783"
@@ -3104,23 +3091,18 @@
mkdirp "^0.5.1"
nullthrows "^1.1.1"
-"@react-native/community-cli-plugin@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.83.tgz#58808a58a5288895627548338731e72ebb5b507c"
- integrity sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==
+"@react-native/codegen@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.87.tgz#47f07a627d0294c8270a03aee098991ed91f8ae9"
+ integrity sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==
dependencies:
- "@react-native-community/cli-server-api" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- "@react-native/dev-middleware" "0.74.83"
- "@react-native/metro-babel-transformer" "0.74.83"
- chalk "^4.0.0"
- execa "^5.1.1"
- metro "^0.80.3"
- metro-config "^0.80.3"
- metro-core "^0.80.3"
- node-fetch "^2.2.0"
- querystring "^0.2.1"
- readline "^1.3.0"
+ "@babel/parser" "^7.20.0"
+ glob "^7.1.1"
+ hermes-parser "0.19.1"
+ invariant "^2.2.4"
+ jscodeshift "^0.14.0"
+ mkdirp "^0.5.1"
+ nullthrows "^1.1.1"
"@react-native/community-cli-plugin@0.74.84":
version "0.74.84"
@@ -3140,23 +3122,41 @@
querystring "^0.2.1"
readline "^1.3.0"
-"@react-native/debugger-frontend@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.83.tgz#48050afa4e086438073b95f041c0cc84fe3f20de"
- integrity sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==
+"@react-native/community-cli-plugin@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.87.tgz#4d9798d51381912f3771acded9b6b2804987e952"
+ integrity sha512-EgJG9lSr8x3X67dHQKQvU6EkO+3ksVlJHYIVv6U/AmW9dN80BEFxgYbSJ7icXS4wri7m4kHdgeq2PQ7/3vvrTQ==
+ dependencies:
+ "@react-native-community/cli-server-api" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
+ "@react-native/dev-middleware" "0.74.87"
+ "@react-native/metro-babel-transformer" "0.74.87"
+ chalk "^4.0.0"
+ execa "^5.1.1"
+ metro "^0.80.3"
+ metro-config "^0.80.3"
+ metro-core "^0.80.3"
+ node-fetch "^2.2.0"
+ querystring "^0.2.1"
+ readline "^1.3.0"
"@react-native/debugger-frontend@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.84.tgz#0bde122a988916b6a50f05a7c3ab1c5db029b149"
integrity sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A==
-"@react-native/dev-middleware@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.83.tgz#9d09cfdb763e8ef81c003b0f99ae4ed1a3539639"
- integrity sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==
+"@react-native/debugger-frontend@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.87.tgz#0bb4f4f54365d04fc975349d5f635cb575f6a5d8"
+ integrity sha512-MN95DJLYTv4EqJc+9JajA3AJZSBYJz2QEJ3uWlHrOky2vKrbbRVaW1ityTmaZa2OXIvNc6CZwSRSE7xCoHbXhQ==
+
+"@react-native/dev-middleware@0.74.84":
+ version "0.74.84"
+ resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz#19ccfece791742f83f4c0a22a8c14593a45562a2"
+ integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ==
dependencies:
"@isaacs/ttlcache" "^1.4.1"
- "@react-native/debugger-frontend" "0.74.83"
+ "@react-native/debugger-frontend" "0.74.84"
"@rnx-kit/chromium-edge-launcher" "^1.0.0"
chrome-launcher "^0.15.2"
connect "^3.6.5"
@@ -3169,13 +3169,13 @@
temp-dir "^2.0.0"
ws "^6.2.2"
-"@react-native/dev-middleware@0.74.84":
- version "0.74.84"
- resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz#19ccfece791742f83f4c0a22a8c14593a45562a2"
- integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ==
+"@react-native/dev-middleware@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.87.tgz#254807b579a3015ced659a14c374dbf029a9c04e"
+ integrity sha512-7TmZ3hTHwooYgIHqc/z87BMe1ryrIqAUi+AF7vsD+EHCGxHFdMjSpf1BZ2SUPXuLnF2cTiTfV2RwhbPzx0tYIA==
dependencies:
"@isaacs/ttlcache" "^1.4.1"
- "@react-native/debugger-frontend" "0.74.84"
+ "@react-native/debugger-frontend" "0.74.87"
"@rnx-kit/chromium-edge-launcher" "^1.0.0"
chrome-launcher "^0.15.2"
connect "^3.6.5"
@@ -3212,31 +3212,31 @@
resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.74.81.tgz#ac53da7c41a35948b0f9d01d88d2a858e879edb1"
integrity sha512-vlbLJ38MFJzcEgNxNswjgDRELvZX5e4SmGhtN9N1ZQpXLkgo3hs+l2m4ulSpKhSmqpbacB5XbuTTMgKOsLj/5w==
-"@react-native/gradle-plugin@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.83.tgz#4ac60a6d6295d5b920173cbf184ee32e53690810"
- integrity sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==
-
"@react-native/gradle-plugin@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.84.tgz#6ff25fad5f78c276afde96ffc42e04e92d6d92b1"
integrity sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg==
+"@react-native/gradle-plugin@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.87.tgz#a66c01fda7a938a116dc27447f0ccce285796b2a"
+ integrity sha512-T+VX0N1qP+U9V4oAtn7FTX7pfsoVkd1ocyw9swYXgJqU2fK7hC9famW7b3s3ZiufPGPr1VPJe2TVGtSopBjL6A==
+
"@react-native/js-polyfills@0.74.81":
version "0.74.81"
resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.81.tgz#64780497be4ecbff1b27076294e3ebd7df1ba485"
integrity sha512-o4MiR+/kkHoeoQ/zPwt81LnTm6pqdg0wOhU7S7vIZUqzJ7YUpnpaAvF+/z7HzUOPudnavoCN0wvcZPe/AMEyCA==
-"@react-native/js-polyfills@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.83.tgz#0e189ce3ab0efecd00223f3bfc53663ce08ba013"
- integrity sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==
-
"@react-native/js-polyfills@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.84.tgz#edf0e8463616a2683269bbfe3957590f7ebd910c"
integrity sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ==
+"@react-native/js-polyfills@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.87.tgz#d28090a4dae417a2e9ad14e065fcf8cf52cc482c"
+ integrity sha512-M5Evdn76CuVEF0GsaXiGi95CBZ4IWubHqwXxV9vG9CC9kq0PSkoM2Pn7Lx7dgyp4vT7ccJ8a3IwHbe+5KJRnpw==
+
"@react-native/metro-babel-transformer@0.74.81":
version "0.74.81"
resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.81.tgz#f724eab91e6de82f8d098e6de57f25bb7501d2d6"
@@ -3247,16 +3247,6 @@
hermes-parser "0.19.1"
nullthrows "^1.1.1"
-"@react-native/metro-babel-transformer@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.83.tgz#ba87c3cf041f4c0d2b991231af1a6b4a216e9b5d"
- integrity sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==
- dependencies:
- "@babel/core" "^7.20.0"
- "@react-native/babel-preset" "0.74.83"
- hermes-parser "0.19.1"
- nullthrows "^1.1.1"
-
"@react-native/metro-babel-transformer@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.84.tgz#6c2c1632bdf557f176c9d489fbb676522ffb222a"
@@ -3267,6 +3257,16 @@
hermes-parser "0.19.1"
nullthrows "^1.1.1"
+"@react-native/metro-babel-transformer@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.87.tgz#f60958f5e7eb39008a2c01dc5248ab60240bdc01"
+ integrity sha512-UsJCO24sNax2NSPBmV1zLEVVNkS88kcgAiYrZHtYSwSjpl4WZ656tIeedBfiySdJ94Hr3kQmBYLipV5zk0NI1A==
+ dependencies:
+ "@babel/core" "^7.20.0"
+ "@react-native/babel-preset" "0.74.87"
+ hermes-parser "0.19.1"
+ nullthrows "^1.1.1"
+
"@react-native/metro-config@0.74.81":
version "0.74.81"
resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.74.81.tgz#3ed605c0bb51081905171af3e0326abd3adc0b27"
@@ -3277,29 +3277,21 @@
metro-config "^0.80.3"
metro-runtime "^0.80.3"
-"@react-native/normalize-colors@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.83.tgz#86ef925bacf219d74df115bcfb615f62d8142e85"
- integrity sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==
-
"@react-native/normalize-colors@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz#4764d59775c17a6ed193509cb01ae2f42dd5c045"
integrity sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==
+"@react-native/normalize-colors@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.87.tgz#a814169d0ce4ce13ffebcda0a3a5a3f780ccd772"
+ integrity sha512-Xh7Nyk/MPefkb0Itl5Z+3oOobeG9lfLb7ZOY2DKpFnoCE1TzBmib9vMNdFaLdSxLIP+Ec6icgKtdzYg8QUPYzA==
+
"@react-native/typescript-config@0.74.81":
version "0.74.81"
resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.74.81.tgz#a249b6a21b577d572a0a70056d7c48a55fd6662f"
integrity sha512-jk4LJUKdRYmXxxpebRSW8mK9xJPW90W6BE1IE9LdFi0exdsnVv5gXM9QylG+9kDVZj3bltMuMVdijWnU7SRNbg==
-"@react-native/virtualized-lists@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.83.tgz#5595d6aefd9679d1295c56a1d1653b1fb261bd62"
- integrity sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==
- dependencies:
- invariant "^2.2.4"
- nullthrows "^1.1.1"
-
"@react-native/virtualized-lists@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.84.tgz#cf32fffc93072942532c9c81bd7e4c01a2949626"
@@ -3308,6 +3300,14 @@
invariant "^2.2.4"
nullthrows "^1.1.1"
+"@react-native/virtualized-lists@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.87.tgz#31bc44d62617df7d893df22c4c57094f576677a0"
+ integrity sha512-lsGxoFMb0lyK/MiplNKJpD+A1EoEUumkLrCjH4Ht+ZlG8S0BfCxmskLZ6qXn3BiDSkLjfjI/qyZ3pnxNBvkXpQ==
+ dependencies:
+ invariant "^2.2.4"
+ nullthrows "^1.1.1"
+
"@rnx-kit/chromium-edge-launcher@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#c0df8ea00a902c7a417cd9655aab06de398b939c"
@@ -5489,7 +5489,7 @@ globalthis@^1.0.3:
dependencies:
define-properties "^1.1.3"
-globby@^11.0.4, globby@^11.1.0:
+globby@^11.1.0:
version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@@ -7627,43 +7627,29 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-native-reanimated@3.9.0:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.9.0.tgz#e5c5f303415a2aadd7db786005159b26c21ae495"
- integrity sha512-OMZV2BVmxZvm8UhlXBrESO0y/ODGTRpQRQUO7U9QXysOF9RaR8FbO6KS0x99MH19zfFTV8cLGN/vYW1dFia9Rw==
- dependencies:
- "@babel/plugin-transform-arrow-functions" "^7.0.0-0"
- "@babel/plugin-transform-nullish-coalescing-operator" "^7.0.0-0"
- "@babel/plugin-transform-optional-chaining" "^7.0.0-0"
- "@babel/plugin-transform-shorthand-properties" "^7.0.0-0"
- "@babel/plugin-transform-template-literals" "^7.0.0-0"
- "@babel/preset-typescript" "^7.16.7"
- convert-source-map "^2.0.0"
- invariant "^2.2.4"
-
"react-native-svg@link:../..":
version "0.0.0"
uid ""
-react-native-windows@0.74.9:
- version "0.74.9"
- resolved "https://registry.yarnpkg.com/react-native-windows/-/react-native-windows-0.74.9.tgz#2abcc8eb99a4ce0ce80dfe2dea8ce249b8e21469"
- integrity sha512-0WEwKhfi+WyjVswT6pRewfw2V694KYfTMIDSITDEu3Y3A9m1o0YyisnURxc4KRndRc0FQuw1iUf49uVK7BnXAw==
+react-native-windows@0.74.24:
+ version "0.74.24"
+ resolved "https://registry.yarnpkg.com/react-native-windows/-/react-native-windows-0.74.24.tgz#1dfbf992d377663da0578adf7507934c363c27b2"
+ integrity sha512-Vdpmpr9JDHdZUQFfr7rPeYNkcAaP0BRR1gLd4hz80pShIOuxuVUKmccN3mtr1S4y8VF+hEnhXdMHRjk64OE4GQ==
dependencies:
"@babel/runtime" "^7.0.0"
"@jest/create-cache-key-function" "^29.6.3"
- "@react-native-community/cli" "13.6.6"
- "@react-native-community/cli-platform-android" "13.6.6"
- "@react-native-community/cli-platform-ios" "13.6.6"
- "@react-native-windows/cli" "0.74.0"
+ "@react-native-community/cli" "13.6.9"
+ "@react-native-community/cli-platform-android" "13.6.9"
+ "@react-native-community/cli-platform-ios" "13.6.9"
+ "@react-native-windows/cli" "0.74.8"
"@react-native/assets" "1.0.0"
- "@react-native/assets-registry" "0.74.83"
- "@react-native/codegen" "0.74.83"
- "@react-native/community-cli-plugin" "0.74.83"
- "@react-native/gradle-plugin" "0.74.83"
- "@react-native/js-polyfills" "0.74.83"
- "@react-native/normalize-colors" "0.74.83"
- "@react-native/virtualized-lists" "0.74.83"
+ "@react-native/assets-registry" "0.74.87"
+ "@react-native/codegen" "0.74.87"
+ "@react-native/community-cli-plugin" "0.74.87"
+ "@react-native/gradle-plugin" "0.74.87"
+ "@react-native/js-polyfills" "0.74.87"
+ "@react-native/normalize-colors" "0.74.87"
+ "@react-native/virtualized-lists" "0.74.87"
abort-controller "^3.0.0"
anser "^1.4.9"
ansi-regex "^5.0.0"
diff --git a/apps/paper-windows-example/babel.config.js b/apps/paper-windows-example/babel.config.js
index bd798c39..f7b3da3b 100644
--- a/apps/paper-windows-example/babel.config.js
+++ b/apps/paper-windows-example/babel.config.js
@@ -1,8 +1,3 @@
module.exports = {
presets: ['module:@react-native/babel-preset'],
- plugins: [
- '@babel/plugin-proposal-export-namespace-from',
- 'module:react-native-dotenv',
- 'react-native-reanimated/plugin',
- ],
};
diff --git a/apps/paper-windows-example/index.js b/apps/paper-windows-example/index.js
index a7ab94e9..8526e8c4 100644
--- a/apps/paper-windows-example/index.js
+++ b/apps/paper-windows-example/index.js
@@ -3,7 +3,7 @@
*/
import { AppRegistry } from 'react-native';
-import App from '../common';
+import App from '../common/noNavigationApp';
import { name as appName } from './app.json';
AppRegistry.registerComponent(appName, () => App);
diff --git a/apps/paper-windows-example/package.json b/apps/paper-windows-example/package.json
index fec7cf7c..48facc96 100644
--- a/apps/paper-windows-example/package.json
+++ b/apps/paper-windows-example/package.json
@@ -14,14 +14,11 @@
"react": "18.2.0",
"react-dom": "^18.2.0",
"react-native": "0.74.2",
- "react-native-reanimated": "3.15.4",
"react-native-svg": "link:../../",
- "react-native-view-shot": "4.0.0-alpha.2",
- "react-native-windows": "0.74.9"
+ "react-native-windows": "0.74.24"
},
"devDependencies": {
"@babel/core": "^7.20.0",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@react-native/babel-preset": "0.74.84",
@@ -39,7 +36,6 @@
"patch-package": "^8.0.0",
"postinstall-postinstall": "^2.1.0",
"prettier": "2.8.8",
- "react-native-dotenv": "^3.4.11",
"react-test-renderer": "18.2.0",
"typescript": "5.0.4"
},
diff --git a/apps/paper-windows-example/patches/react-native-view-shot+4.0.0-alpha.2.patch b/apps/paper-windows-example/patches/react-native-view-shot+4.0.0-alpha.2.patch
deleted file mode 100644
index 0caa5602..00000000
--- a/apps/paper-windows-example/patches/react-native-view-shot+4.0.0-alpha.2.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-diff --git a/node_modules/react-native-view-shot/ios/RNViewShot.m b/node_modules/react-native-view-shot/ios/RNViewShot.m
-index bd55b92..6a20e9d 100644
---- a/node_modules/react-native-view-shot/ios/RNViewShot.m
-+++ b/node_modules/react-native-view-shot/ios/RNViewShot.m
-@@ -106,7 +106,7 @@ - (dispatch_queue_t)methodQueue
- scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
- }
-
-- UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:size];
-+ UIGraphicsBeginImageContextWithOptions(size, NO, 0);
-
- if (renderInContext) {
- // this comes with some trade-offs such as inability to capture gradients or scrollview's content in full but it works for large views
-@@ -117,8 +117,8 @@ - (dispatch_queue_t)methodQueue
- // this doesn't work for large views and reports incorrect success even though the image is blank
- success = [rendered drawViewHierarchyInRect:(CGRect){CGPointZero, size} afterScreenUpdates:YES];
- }
--
-- UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {}];
-+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
-+ UIGraphicsEndImageContext();
-
- if (snapshotContentContainer) {
- // Restore scroll & frame
-@@ -152,11 +152,11 @@ - (dispatch_queue_t)methodQueue
- NSString *res = nil;
- if ([result isEqualToString:@"base64"]) {
- // Return as a base64 raw string
-- res = [data base64EncodedStringWithOptions: 0];
-+ res = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
- }
- else if ([result isEqualToString:@"data-uri"]) {
- // Return as a base64 data uri string
-- NSString *base64 = [data base64EncodedStringWithOptions: 0];
-+ NSString *base64 = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
- NSString *imageFormat = ([format isEqualToString:@"jpg"]) ? @"jpeg" : format;
- res = [NSString stringWithFormat:@"data:image/%@;base64,%@", imageFormat, base64];
- }
-diff --git a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
-index a6f4c00..1e9e6ce 100644
---- a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
-+++ b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
-@@ -2,7 +2,7 @@ import type { TurboModule } from 'react-native';
- import { TurboModuleRegistry } from 'react-native';
-
- export interface Spec extends TurboModule {
-- releaseCapture: () => string;
-+ releaseCapture: (uri: string) => void;
- captureRef: (tag: number, options: Object) => Promise
- captureScreen: (options: Object) => Promise;
- }
\ No newline at end of file
diff --git a/apps/paper-windows-example/patches/react-native-windows+0.74.9.patch b/apps/paper-windows-example/patches/react-native-windows+0.74.23.patch
similarity index 97%
rename from apps/paper-windows-example/patches/react-native-windows+0.74.9.patch
rename to apps/paper-windows-example/patches/react-native-windows+0.74.23.patch
index 8d1dd238..fdf1ad4d 100644
--- a/apps/paper-windows-example/patches/react-native-windows+0.74.9.patch
+++ b/apps/paper-windows-example/patches/react-native-windows+0.74.23.patch
@@ -1,5 +1,5 @@
diff --git a/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp b/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp
-index 97c1691..8136008 100644
+index fb25176..eb1201a 100644
--- a/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp
+++ b/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp
@@ -309,16 +309,10 @@ static YGValue YGValueOrDefault(
diff --git a/apps/paper-windows-example/windows/Example/packages.lock.json b/apps/paper-windows-example/windows/Example/packages.lock.json
index 30a6a022..f5419aae 100644
--- a/apps/paper-windows-example/windows/Example/packages.lock.json
+++ b/apps/paper-windows-example/windows/Example/packages.lock.json
@@ -4,9 +4,9 @@
"native,Version=v0.0": {
"Microsoft.JavaScript.Hermes": {
"type": "Direct",
- "requested": "[0.1.21, )",
- "resolved": "0.1.21",
- "contentHash": "5njCh+3eXTLOv7+8nOnp6nJ5C0r6it5ze54c0nuWleeDptuK8t3dEDB79XTU4D5DKNvAPlqJpgXRDOak5nYIug=="
+ "requested": "[0.1.23, )",
+ "resolved": "0.1.23",
+ "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g=="
},
"Microsoft.UI.Xaml": {
"type": "Direct",
@@ -25,18 +25,130 @@
},
"boost": {
"type": "Transitive",
- "resolved": "1.76.0",
- "contentHash": "p+w3YvNdXL8Cu9Fzrmexssu0tZbWxuf6ywsQqHjDlKFE5ojXHof1HIyMC3zDLfLnh80dIeFcEUAuR2Asg/XHRA=="
+ "resolved": "1.83.0",
+ "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ=="
+ },
+ "Microsoft.Net.Native.Compiler": {
+ "type": "Transitive",
+ "resolved": "2.2.9-rel-29512-01",
+ "contentHash": "xjK9G8qoKaN1kUvOp/PuqYYxk6uGTZFwHUsHLrLXLyFVxnoHq/woqWyVb/n22uNWYtAoioeXlm6hZ0M8/f7eXw==",
+ "dependencies": {
+ "runtime.win10-arm.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "runtime.win10-arm64.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "runtime.win10-x64.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "runtime.win10-x86.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01"
+ }
+ },
+ "Microsoft.Net.UWPCoreRuntimeSdk": {
+ "type": "Transitive",
+ "resolved": "2.2.11",
+ "contentHash": "B1p3txWKwmO+Csf126X9y1gVQej/zOfUUAOE90iOmEHFMieIle/XfKrrAtlHIIo5snylwB8LgDsRn0kWlDsHhg==",
+ "dependencies": {
+ "runtime.win10-arm.Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "runtime.win10-x64.Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "runtime.win10-x86.Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11"
+ }
+ },
+ "Microsoft.NETCore.Platforms": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "ok+RPAtESz/9MUXeIEz6Lv5XAGQsaNmEYXMsgVALj4D7kqC8gveKWXWXbufLySR2fWrwZf8smyN5RmHu0e4BHA=="
+ },
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3"
+ }
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
+ "NETStandard.Library": {
+ "type": "Transitive",
+ "resolved": "2.0.3",
+ "contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0"
+ }
+ },
+ "runtime.win10-arm.Microsoft.Net.Native.Compiler": {
+ "type": "Transitive",
+ "resolved": "2.2.9-rel-29512-01",
+ "contentHash": "p+v2gthEgj5Tgm4Cl05mfV0w6Q7IFMdOQXZQsiZRg4wBkKSdVoW9lgaxF8bVffBJYes2Vm8ovKpxwTrmEXRzFg==",
+ "dependencies": {
+ "runtime.win10-arm.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
+ }
+ },
+ "runtime.win10-arm.Microsoft.Net.Native.SharedLibrary": {
+ "type": "Transitive",
+ "resolved": "2.2.8-rel-29512-01",
+ "contentHash": "GUQ7Ubf9ts1XfNNaDrJUnmpsKfpcyZ+8NeZoDyYlImgT/UukkW1cYaxqbxM8VH+g5iIGXeO7suVv8tkwE862FA=="
+ },
+ "runtime.win10-arm.Microsoft.Net.UWPCoreRuntimeSdk": {
+ "type": "Transitive",
+ "resolved": "2.2.11",
+ "contentHash": "R1RaI4RSc+H9E5Pq9pndWzAv4dxztym4+TAII4VrsReePMGRM8eoJByg47BAPM4Y9mBv7esR0KhYc5J1/hpUIw=="
+ },
+ "runtime.win10-arm64.Microsoft.Net.Native.Compiler": {
+ "type": "Transitive",
+ "resolved": "2.2.9-rel-29512-01",
+ "contentHash": "8ex2blgQcIw/MoaJH7hqRJdekTWgMUz5Qb+xmVeGvbB/lWl4BPv6/J9+cmcFxEM+Z7OA8xilFH1kwWFMyvak1A==",
+ "dependencies": {
+ "runtime.win10-arm64.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
+ }
+ },
+ "runtime.win10-arm64.Microsoft.Net.Native.SharedLibrary": {
+ "type": "Transitive",
+ "resolved": "2.2.8-rel-29512-01",
+ "contentHash": "iYqXJq6hpg07RqAqq8RAffVU1308cQ2ta4ZZtfWI8tbVXGuKOU6he52AMgz4JfcP/Yb/khy9Gdxl62MVXcctzg=="
+ },
+ "runtime.win10-x64.Microsoft.Net.Native.Compiler": {
+ "type": "Transitive",
+ "resolved": "2.2.9-rel-29512-01",
+ "contentHash": "sgiiODHWt4WZ9mDpZd+XkCdWYCBZukjZPNz3XJdeKeeNcRA4y4OTtd2+STWytXDxWAXUNRjImDF5XP48jNXj8A==",
+ "dependencies": {
+ "runtime.win10-x64.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
+ }
+ },
+ "runtime.win10-x64.Microsoft.Net.Native.SharedLibrary": {
+ "type": "Transitive",
+ "resolved": "2.2.8-rel-29512-01",
+ "contentHash": "JoJavADSFAHk8KQo/bIHT+TTM1gn26X7A3DBltr0ocxcR+6FEnrFa1dLev2tFWmUcndeoyTklndZKwBkSFfEDw=="
+ },
+ "runtime.win10-x64.Microsoft.Net.UWPCoreRuntimeSdk": {
+ "type": "Transitive",
+ "resolved": "2.2.11",
+ "contentHash": "7e8MH4/tzwVV25dUvq+eYgvH31Tyi7kpGNcsqfzfJDYxA6hpGijhfZFFn2QHjORRoTu/BVxGM/9xc/bP4J0vRg=="
+ },
+ "runtime.win10-x86.Microsoft.Net.Native.Compiler": {
+ "type": "Transitive",
+ "resolved": "2.2.9-rel-29512-01",
+ "contentHash": "M586UCPkXEXFbbC7dNznyN9/uNSWNjOeWWHrKNhwztaIl5iCaqr9ITDu55hd7tRdsoi/mPthAH470k4Vml/UrA==",
+ "dependencies": {
+ "runtime.win10-x86.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
+ }
+ },
+ "runtime.win10-x86.Microsoft.Net.Native.SharedLibrary": {
+ "type": "Transitive",
+ "resolved": "2.2.8-rel-29512-01",
+ "contentHash": "s+oRLOdFSD8FS/hG2MBLzcdPzvBOzQqydYGLl/E+jaB7ijqYs8Dd3yeK72HgWLmKvp3rtkPhCHeRqYhA54+1YQ=="
+ },
+ "runtime.win10-x86.Microsoft.Net.UWPCoreRuntimeSdk": {
+ "type": "Transitive",
+ "resolved": "2.2.11",
+ "contentHash": "NF8tUTxFfwd8MXiA6ygCVuT7dVgEkaHpuwFnDeP1L2i1SIOxhk5w4HHySjmvbRSYtnjLA9BlOtwjGIJCztOHeg=="
+ },
"common": {
"type": "Project",
"dependencies": {
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
}
},
"fmt": {
@@ -46,7 +158,7 @@
"type": "Project",
"dependencies": {
"Fmt": "[1.0.0, )",
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
}
},
"microsoft.reactnative": {
@@ -54,17 +166,38 @@
"dependencies": {
"Common": "[1.0.0, )",
"Folly": "[1.0.0, )",
- "Microsoft.JavaScript.Hermes": "[0.1.21, )",
+ "Microsoft.JavaScript.Hermes": "[0.1.23, )",
"Microsoft.UI.Xaml": "[2.8.0, )",
"ReactCommon": "[1.0.0, )",
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
+ }
+ },
+ "microsoft.reactnative.managed": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": "[6.2.9, )",
+ "Microsoft.ReactNative": "[1.0.0, )"
}
},
"reactcommon": {
"type": "Project",
"dependencies": {
"Folly": "[1.0.0, )",
- "boost": "[1.76.0, )"
+ "boost": "[1.83.0, )"
+ }
+ },
+ "reactnativeasyncstorage": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.ReactNative": "[1.0.0, )",
+ "Microsoft.UI.Xaml": "[2.8.0, )"
+ }
+ },
+ "rnscreens": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.ReactNative": "[1.0.0, )",
+ "Microsoft.UI.Xaml": "[2.8.0, )"
}
},
"rnsvg": {
@@ -73,55 +206,182 @@
"Microsoft.ReactNative": "[1.0.0, )",
"Microsoft.UI.Xaml": "[2.8.0, )"
}
+ },
+ "rnviewshot": {
+ "type": "Project",
+ "dependencies": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": "[6.2.11, )",
+ "Microsoft.ReactNative": "[1.0.0, )",
+ "Microsoft.ReactNative.Managed": "[1.0.0, )"
+ }
}
},
"native,Version=v0.0/win10-arm": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3",
+ "runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
+ }
+ },
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
+ "runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "TMXtd4TVwVgENc4tFWZ+rfnJXZfwRmeL9vkkwMjyCK6+dknZaFuiRMnZ9ggPDMZ4qtq4eKXDqhp7GIVzLkmTxQ=="
}
},
"native,Version=v0.0/win10-arm-aot": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3",
+ "runtime.win10-arm-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
+ }
+ },
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
+ "runtime.win10-arm-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "Sn/jnBh7ggB1TqoxrsEM2S+JpFM8FOO8lXRfdp9LWbUI1Vgzb+a5wpS1bXki1lJK6cFrVldDjbZv4D4NEfJuyg=="
}
},
"native,Version=v0.0/win10-arm64-aot": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3",
+ "runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
+ }
+ },
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
+ "runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "07IvykpRbKdON7JjrBxshOKTqkJ39h7b6xc6AE09h8DaoP8CsUkyn+IBRlMGAzfVNnQwaoCKf+EWoSCueBKaqQ=="
}
},
"native,Version=v0.0/win10-x64": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3",
+ "runtime.win10-x64.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
+ }
+ },
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
+ "runtime.win10-x64.Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "EqfKqHuQsosS4oPFBaKlUFMSV2ZSLh2VoxWnLkPiydVK9jIh31c2Au1csZ5ucQmXOra3vEuZLToOK4XNVLW2wQ=="
}
},
"native,Version=v0.0/win10-x64-aot": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3",
+ "runtime.win10-x64-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
+ }
+ },
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
+ "runtime.win10-x64-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "PfST4gE/8rgl0tPMlGYp7BqzFjrhSGMQd+V68P4IMze9V6cnlkyXof4apD9MDzl7MPMPO0wwlkMj89+4+vXP3A=="
}
},
"native,Version=v0.0/win10-x86": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3",
+ "runtime.win10-x86.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
+ }
+ },
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
+ "runtime.win10-x86.Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "Svwt46NcUEBhH+LNdg+9J+phHiWW3mmfuKrKT1RGI9QCownxaFg0kI5NCT0YhoMcndFT6fLsUA5VLswApg3/HA=="
}
},
"native,Version=v0.0/win10-x86-aot": {
+ "Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "2.1.0",
+ "Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
+ "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
+ "NETStandard.Library": "2.0.3",
+ "runtime.win10-x86-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
+ }
+ },
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
+ },
+ "runtime.win10-x86-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
+ "type": "Transitive",
+ "resolved": "6.2.11",
+ "contentHash": "2Yz+NstJwZlo4+9jfpQ+5fVuowPVIOG/Lp2yABPtfmh4VhbxoKyiAjeRo7bZUMk1RdwZL+LjJ5zg2l2Sh3ZhEA=="
}
}
}
diff --git a/apps/paper-windows-example/yarn.lock b/apps/paper-windows-example/yarn.lock
index 63d2ee81..bbb52fd3 100644
--- a/apps/paper-windows-example/yarn.lock
+++ b/apps/paper-windows-example/yarn.lock
@@ -252,7 +252,7 @@
dependencies:
"@babel/types" "^7.25.9"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46"
integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==
@@ -404,14 +404,6 @@
dependencies:
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-proposal-export-namespace-from@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203"
- integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.18.9"
- "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-
"@babel/plugin-proposal-logical-assignment-operators@^7.18.0":
version "7.20.7"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83"
@@ -511,13 +503,6 @@
dependencies:
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-syntax-export-namespace-from@^7.8.3":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
- integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.3"
-
"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.25.9.tgz#30ddd09b4ad822f291efbbeb3bc4c5d3027af61d"
@@ -631,7 +616,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.0.0-0", "@babel/plugin-transform-arrow-functions@^7.25.9":
+"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845"
integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==
@@ -670,7 +655,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-class-properties@^7.0.0-0", "@babel/plugin-transform-class-properties@^7.25.9":
+"@babel/plugin-transform-class-properties@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f"
integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==
@@ -686,7 +671,7 @@
"@babel/helper-create-class-features-plugin" "^7.25.9"
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.0.0-0", "@babel/plugin-transform-classes@^7.25.9":
+"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52"
integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==
@@ -861,7 +846,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-nullish-coalescing-operator@^7.0.0-0", "@babel/plugin-transform-nullish-coalescing-operator@^7.25.9":
+"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949"
integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==
@@ -899,7 +884,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-optional-chaining@^7.0.0-0", "@babel/plugin-transform-optional-chaining@^7.25.9":
+"@babel/plugin-transform-optional-chaining@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd"
integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==
@@ -997,7 +982,7 @@
babel-plugin-polyfill-regenerator "^0.6.1"
semver "^6.3.1"
-"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.0.0-0", "@babel/plugin-transform-shorthand-properties@^7.25.9":
+"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2"
integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==
@@ -1019,7 +1004,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-template-literals@^7.0.0-0", "@babel/plugin-transform-template-literals@^7.25.9":
+"@babel/plugin-transform-template-literals@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1"
integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==
@@ -1059,7 +1044,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
"@babel/helper-plugin-utils" "^7.25.9"
-"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.0.0-0", "@babel/plugin-transform-unicode-regex@^7.25.9":
+"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1"
integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==
@@ -1167,7 +1152,7 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
-"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.7":
+"@babel/preset-typescript@^7.13.0":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.25.9.tgz#bb82f26cda46dc2eb1ee10bf72fa994e759a08ba"
integrity sha512-XWxw1AcKk36kgxf4C//fl0ikjLeqGUWn062/Fd8GtpTfDJOX6Ud95FK+4JlDA36BX4bNGndXi3a6Vr4Jo5/61A==
@@ -1651,16 +1636,6 @@
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz#1a857dcc95a5ab30122e04417148211e6f945e6c"
integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==
-"@react-native-community/cli-clean@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.6.tgz#87c7ad8746c38dab0fe7b3c6ff89d44351d5d943"
- integrity sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==
- dependencies:
- "@react-native-community/cli-tools" "13.6.6"
- chalk "^4.1.2"
- execa "^5.0.0"
- fast-glob "^3.3.2"
-
"@react-native-community/cli-clean@13.6.8":
version "13.6.8"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.8.tgz#95ce964047f005152ac100394b6dcd5d2cc2a474"
@@ -1671,17 +1646,15 @@
execa "^5.0.0"
fast-glob "^3.3.2"
-"@react-native-community/cli-config@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-13.6.6.tgz#69f590694b3a079c74f781baab3b762db74f5dbd"
- integrity sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==
+"@react-native-community/cli-clean@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.9.tgz#b6754f39c2b877c9d730feb848945150e1d52209"
+ integrity sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==
dependencies:
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
- cosmiconfig "^5.1.0"
- deepmerge "^4.3.0"
+ execa "^5.0.0"
fast-glob "^3.3.2"
- joi "^17.2.1"
"@react-native-community/cli-config@13.6.8":
version "13.6.8"
@@ -1695,12 +1668,17 @@
fast-glob "^3.3.2"
joi "^17.2.1"
-"@react-native-community/cli-debugger-ui@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.6.tgz#ac021ebd795b0fd66fb52a8987d1d41c5a4b8cb3"
- integrity sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==
+"@react-native-community/cli-config@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-13.6.9.tgz#d609a64d40a173c89bd7d24e31807bb7dcba69f9"
+ integrity sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==
dependencies:
- serve-static "^1.13.1"
+ "@react-native-community/cli-tools" "13.6.9"
+ chalk "^4.1.2"
+ cosmiconfig "^5.1.0"
+ deepmerge "^4.3.0"
+ fast-glob "^3.3.2"
+ joi "^17.2.1"
"@react-native-community/cli-debugger-ui@13.6.8":
version "13.6.8"
@@ -1709,28 +1687,12 @@
dependencies:
serve-static "^1.13.1"
-"@react-native-community/cli-doctor@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-13.6.6.tgz#ac0febff05601d9b86af3e03460e1a6b0a1d33a5"
- integrity sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==
+"@react-native-community/cli-debugger-ui@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.9.tgz#bc5727c51964206a00d417e5148b46331a81d5a5"
+ integrity sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==
dependencies:
- "@react-native-community/cli-config" "13.6.6"
- "@react-native-community/cli-platform-android" "13.6.6"
- "@react-native-community/cli-platform-apple" "13.6.6"
- "@react-native-community/cli-platform-ios" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- chalk "^4.1.2"
- command-exists "^1.2.8"
- deepmerge "^4.3.0"
- envinfo "^7.10.0"
- execa "^5.0.0"
- hermes-profile-transformer "^0.0.6"
- node-stream-zip "^1.9.1"
- ora "^5.4.1"
- semver "^7.5.2"
- strip-ansi "^5.2.0"
- wcwidth "^1.0.1"
- yaml "^2.2.1"
+ serve-static "^1.13.1"
"@react-native-community/cli-doctor@13.6.8":
version "13.6.8"
@@ -1755,15 +1717,28 @@
wcwidth "^1.0.1"
yaml "^2.2.1"
-"@react-native-community/cli-hermes@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-13.6.6.tgz#590f55f151fec23b55498228f92d100a0e71d474"
- integrity sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==
+"@react-native-community/cli-doctor@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-13.6.9.tgz#f1d4eeff427ddc8a9d19851042621c10939c35cb"
+ integrity sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==
dependencies:
- "@react-native-community/cli-platform-android" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-config" "13.6.9"
+ "@react-native-community/cli-platform-android" "13.6.9"
+ "@react-native-community/cli-platform-apple" "13.6.9"
+ "@react-native-community/cli-platform-ios" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
+ command-exists "^1.2.8"
+ deepmerge "^4.3.0"
+ envinfo "^7.10.0"
+ execa "^5.0.0"
hermes-profile-transformer "^0.0.6"
+ node-stream-zip "^1.9.1"
+ ora "^5.4.1"
+ semver "^7.5.2"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+ yaml "^2.2.1"
"@react-native-community/cli-hermes@13.6.8":
version "13.6.8"
@@ -1775,17 +1750,15 @@
chalk "^4.1.2"
hermes-profile-transformer "^0.0.6"
-"@react-native-community/cli-platform-android@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.6.tgz#9e3863cb092709021f11848890bff0fc16fc1609"
- integrity sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==
+"@react-native-community/cli-hermes@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-13.6.9.tgz#88c8dfe936a0d4272efc54429eda9ccc3fca3ad8"
+ integrity sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==
dependencies:
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-platform-android" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
- execa "^5.0.0"
- fast-glob "^3.3.2"
- fast-xml-parser "^4.2.4"
- logkitty "^0.7.1"
+ hermes-profile-transformer "^0.0.6"
"@react-native-community/cli-platform-android@13.6.8":
version "13.6.8"
@@ -1799,17 +1772,17 @@
fast-xml-parser "^4.2.4"
logkitty "^0.7.1"
-"@react-native-community/cli-platform-apple@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.6.tgz#d445fd6ed02c5ae2f43f9c45501e04fee53a2790"
- integrity sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==
+"@react-native-community/cli-platform-android@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.9.tgz#b175b9b11334fc90da3f395432678bd53c30fae4"
+ integrity sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==
dependencies:
- "@react-native-community/cli-tools" "13.6.6"
+ "@react-native-community/cli-tools" "13.6.9"
chalk "^4.1.2"
execa "^5.0.0"
fast-glob "^3.3.2"
- fast-xml-parser "^4.0.12"
- ora "^5.4.1"
+ fast-xml-parser "^4.2.4"
+ logkitty "^0.7.1"
"@react-native-community/cli-platform-apple@13.6.8":
version "13.6.8"
@@ -1823,12 +1796,17 @@
fast-xml-parser "^4.0.12"
ora "^5.4.1"
-"@react-native-community/cli-platform-ios@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.6.tgz#0cd700f36483ca37dda7ec044377f8a926b1df1f"
- integrity sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==
+"@react-native-community/cli-platform-apple@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.9.tgz#02fb5dc47d62acd85f4d7a852e93216927a772fa"
+ integrity sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==
dependencies:
- "@react-native-community/cli-platform-apple" "13.6.6"
+ "@react-native-community/cli-tools" "13.6.9"
+ chalk "^4.1.2"
+ execa "^5.0.0"
+ fast-glob "^3.3.2"
+ fast-xml-parser "^4.0.12"
+ ora "^5.4.1"
"@react-native-community/cli-platform-ios@13.6.8":
version "13.6.8"
@@ -1837,20 +1815,12 @@
dependencies:
"@react-native-community/cli-platform-apple" "13.6.8"
-"@react-native-community/cli-server-api@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-13.6.6.tgz#467993006ef82361cdf7a9817999d5a09e85ca6a"
- integrity sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==
+"@react-native-community/cli-platform-ios@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.9.tgz#f37ceab41c2302e8f0d4bcbd3bf58b3353db4306"
+ integrity sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==
dependencies:
- "@react-native-community/cli-debugger-ui" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- compression "^1.7.1"
- connect "^3.6.5"
- errorhandler "^1.5.1"
- nocache "^3.0.1"
- pretty-format "^26.6.2"
- serve-static "^1.13.1"
- ws "^6.2.2"
+ "@react-native-community/cli-platform-apple" "13.6.9"
"@react-native-community/cli-server-api@13.6.8":
version "13.6.8"
@@ -1867,22 +1837,20 @@
serve-static "^1.13.1"
ws "^6.2.2"
-"@react-native-community/cli-tools@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-13.6.6.tgz#55c40cbabafbfc56cfb95a4d5fbf73ef60ec3cbc"
- integrity sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==
+"@react-native-community/cli-server-api@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-13.6.9.tgz#269e666bc26e9d0b2f42c7f6099559b5f9259e9d"
+ integrity sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==
dependencies:
- appdirsjs "^1.2.4"
- chalk "^4.1.2"
- execa "^5.0.0"
- find-up "^5.0.0"
- mime "^2.4.1"
- node-fetch "^2.6.0"
- open "^6.2.0"
- ora "^5.4.1"
- semver "^7.5.2"
- shell-quote "^1.7.3"
- sudo-prompt "^9.0.0"
+ "@react-native-community/cli-debugger-ui" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
+ compression "^1.7.1"
+ connect "^3.6.5"
+ errorhandler "^1.5.1"
+ nocache "^3.0.1"
+ pretty-format "^26.6.2"
+ serve-static "^1.13.1"
+ ws "^6.2.2"
"@react-native-community/cli-tools@13.6.8":
version "13.6.8"
@@ -1901,12 +1869,22 @@
shell-quote "^1.7.3"
sudo-prompt "^9.0.0"
-"@react-native-community/cli-types@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-13.6.6.tgz#b45af119d61888fea1074a7c32ddb093e3f119a9"
- integrity sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==
+"@react-native-community/cli-tools@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-13.6.9.tgz#2baee279358ba1a863e737b2fa9f45659ad91929"
+ integrity sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==
dependencies:
- joi "^17.2.1"
+ appdirsjs "^1.2.4"
+ chalk "^4.1.2"
+ execa "^5.0.0"
+ find-up "^5.0.0"
+ mime "^2.4.1"
+ node-fetch "^2.6.0"
+ open "^6.2.0"
+ ora "^5.4.1"
+ semver "^7.5.2"
+ shell-quote "^1.7.3"
+ sudo-prompt "^9.0.0"
"@react-native-community/cli-types@13.6.8":
version "13.6.8"
@@ -1915,28 +1893,12 @@
dependencies:
joi "^17.2.1"
-"@react-native-community/cli@13.6.6":
- version "13.6.6"
- resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-13.6.6.tgz#b929c8668e88344c03a46a3e635cb382dba16773"
- integrity sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==
+"@react-native-community/cli-types@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-13.6.9.tgz#08bfb796eacf0daeb31e2de516e81e78a36a1a55"
+ integrity sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==
dependencies:
- "@react-native-community/cli-clean" "13.6.6"
- "@react-native-community/cli-config" "13.6.6"
- "@react-native-community/cli-debugger-ui" "13.6.6"
- "@react-native-community/cli-doctor" "13.6.6"
- "@react-native-community/cli-hermes" "13.6.6"
- "@react-native-community/cli-server-api" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- "@react-native-community/cli-types" "13.6.6"
- chalk "^4.1.2"
- commander "^9.4.1"
- deepmerge "^4.3.0"
- execa "^5.0.0"
- find-up "^4.1.0"
- fs-extra "^8.1.0"
- graceful-fs "^4.1.3"
- prompts "^2.4.2"
- semver "^7.5.2"
+ joi "^17.2.1"
"@react-native-community/cli@13.6.8":
version "13.6.8"
@@ -1961,15 +1923,38 @@
prompts "^2.4.2"
semver "^7.5.2"
-"@react-native-windows/cli@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/cli/-/cli-0.74.0.tgz#da85c0f8d7f96a761080fae27323fe257560e22d"
- integrity sha512-grOp6b/Pfa4T+n+oWmoo18BXI97CKZPbRKTlCg2Ne5Hsq2rj4Ewg8tnRFKFOMthy5dZcPWLqsphkT0J/sQBHXw==
+"@react-native-community/cli@13.6.9":
+ version "13.6.9"
+ resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-13.6.9.tgz#ba6360b94e0aba9c4001bda256cf7e57e2ecb02c"
+ integrity sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==
dependencies:
- "@react-native-windows/codegen" "0.74.0"
- "@react-native-windows/fs" "0.74.0"
- "@react-native-windows/package-utils" "0.74.0"
- "@react-native-windows/telemetry" "0.74.0"
+ "@react-native-community/cli-clean" "13.6.9"
+ "@react-native-community/cli-config" "13.6.9"
+ "@react-native-community/cli-debugger-ui" "13.6.9"
+ "@react-native-community/cli-doctor" "13.6.9"
+ "@react-native-community/cli-hermes" "13.6.9"
+ "@react-native-community/cli-server-api" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
+ "@react-native-community/cli-types" "13.6.9"
+ chalk "^4.1.2"
+ commander "^9.4.1"
+ deepmerge "^4.3.0"
+ execa "^5.0.0"
+ find-up "^4.1.0"
+ fs-extra "^8.1.0"
+ graceful-fs "^4.1.3"
+ prompts "^2.4.2"
+ semver "^7.5.2"
+
+"@react-native-windows/cli@0.74.8":
+ version "0.74.8"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/cli/-/cli-0.74.8.tgz#747b6d4de9fa5e3e837b643fc1a48600d756d2d2"
+ integrity sha512-XUqoXiGDlD4BCYcEweujpV3tUYr5pGijX3mNrP1DWzY8gKXVgcmzLs6fng/EK6VsWD7H8bRraYAu9pccGLN4fw==
+ dependencies:
+ "@react-native-windows/codegen" "0.74.5"
+ "@react-native-windows/fs" "0.74.1"
+ "@react-native-windows/package-utils" "0.74.1"
+ "@react-native-windows/telemetry" "0.74.2"
"@xmldom/xmldom" "^0.7.7"
chalk "^4.1.0"
cli-spinners "^2.2.0"
@@ -1988,50 +1973,50 @@
xml-parser "^1.2.1"
xpath "^0.0.27"
-"@react-native-windows/codegen@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/codegen/-/codegen-0.74.0.tgz#9024ba6e871088e42356f94eb126697e6268487b"
- integrity sha512-jSN5PZQKZIuaukoUJU9LOyHs2Y/KmG5xsLtSGRUcjG8wTrzP+xXxj3115hHdk9vreL80o+pup5o1UNfyLfvGIA==
+"@react-native-windows/codegen@0.74.5":
+ version "0.74.5"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/codegen/-/codegen-0.74.5.tgz#a90d6caa0c1664ce25f43457bdb72bf424918f48"
+ integrity sha512-7v2QBQH7wBBYe+OUlbEsDEEOhsRAM4th55F8r9RtyEvMc+2W79up0se3+xYdBgwjYIPHsDp+g5XwDVjBJC4m7A==
dependencies:
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/fs" "0.74.1"
chalk "^4.1.0"
- globby "^11.0.4"
+ globby "^11.1.0"
mustache "^4.0.1"
source-map-support "^0.5.19"
yargs "^16.2.0"
-"@react-native-windows/find-repo-root@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/find-repo-root/-/find-repo-root-0.74.0.tgz#687819c76825d3f7c58401a9d96c2c748774506f"
- integrity sha512-6dxkKX+mtT+yXuTDUf7A+ZQnyX57WlYk3fDNeNTpI66xBR4QuRwPdzTNamZxvX6JEMSe4lm4PqXWlfAKYzPENw==
+"@react-native-windows/find-repo-root@0.74.1":
+ version "0.74.1"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/find-repo-root/-/find-repo-root-0.74.1.tgz#bf2f10545c29ffcdb76b9179fce346f84e15c5ab"
+ integrity sha512-k+Hk16/NmPhxsQYGCRtAfcQqCDCJvAxC74FLzFOO6+c/VDM0U05kEcJsJzI1dh/0kZh+YSZQo3w1RrA1z1S2gw==
dependencies:
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/fs" "0.74.1"
find-up "^4.1.0"
-"@react-native-windows/fs@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/fs/-/fs-0.74.0.tgz#bbef312e6c9541292a69e607c1e5fbc47e2a665c"
- integrity sha512-YK8CkNHSwskU3PPCPTw1DPen3/QXS7qP7rAp+FNK4LfyOgiO1V9TiIyz3DcvqOsD+iwriXoEl/3Bvo/8HmlTbQ==
+"@react-native-windows/fs@0.74.1":
+ version "0.74.1"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/fs/-/fs-0.74.1.tgz#2c6ade1f937adc6056b1a6b052b7b85acb725a14"
+ integrity sha512-Qepr2KyMvCKugOwIXKXtgMqww5P3yI5HTtxIUWytBCoIPEk1lJdpx/sFjTGmir0QXaLlZxXbdrxpLLnN7eq3Tg==
dependencies:
graceful-fs "^4.2.8"
-"@react-native-windows/package-utils@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/package-utils/-/package-utils-0.74.0.tgz#bdcd18f993d899a6f9914365863bde7ee4eee509"
- integrity sha512-b7c2/DycLM3MK7K6Y4XVuKFBTLvyg0DSP7++f/yZsBWyCysFycAS5gCrlVbXk6Kez3CIEspSS7op+GJMduMp8g==
+"@react-native-windows/package-utils@0.74.1":
+ version "0.74.1"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/package-utils/-/package-utils-0.74.1.tgz#18e49bb5b2ed967f279605223eae65a3ea55112f"
+ integrity sha512-nzKo1H991npbRx2EJT0wkniGkngEw7ND5+oz6jhbNFQ3UCKIUBCLc2bPBBX1Z5jp40R+qoVbgnQP2fuAN5y9tA==
dependencies:
- "@react-native-windows/find-repo-root" "0.74.0"
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/find-repo-root" "0.74.1"
+ "@react-native-windows/fs" "0.74.1"
get-monorepo-packages "^1.2.0"
lodash "^4.17.15"
-"@react-native-windows/telemetry@0.74.0":
- version "0.74.0"
- resolved "https://registry.yarnpkg.com/@react-native-windows/telemetry/-/telemetry-0.74.0.tgz#e050312998d6c64f50f368bcb3299e9e3138fd10"
- integrity sha512-80vMPWXLJpa3v+vAafXjCQM0GFE3Iq8breRkrwzmbANAfCEXoJdOI0Aju0sOqDyiE68OUekjU9lwWbIyFEQGJQ==
+"@react-native-windows/telemetry@0.74.2":
+ version "0.74.2"
+ resolved "https://registry.yarnpkg.com/@react-native-windows/telemetry/-/telemetry-0.74.2.tgz#3ad1bdc2be0f43f2009f13368d5c6659064ec3db"
+ integrity sha512-fTqPYaYB7MtPHTr1ytarFsoPHLHch8EAegblTDTo1ha3a1neGOMTGoxZF2a8/l0y8HSDdsfyTfv8JjCO3w5oow==
dependencies:
"@azure/core-auth" "1.5.0"
- "@react-native-windows/fs" "0.74.0"
+ "@react-native-windows/fs" "0.74.1"
"@xmldom/xmldom" "^0.7.7"
applicationinsights "2.9.1"
ci-info "^3.2.0"
@@ -2040,28 +2025,21 @@
os-locale "^5.0.0"
xpath "^0.0.27"
-"@react-native/assets-registry@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.83.tgz#c1815dc10f9e1075e0d03b4c8a9619145969522e"
- integrity sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==
-
"@react-native/assets-registry@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.84.tgz#aa472f82c1b7d8a30098c8ba22fad7b3dbb5be5f"
integrity sha512-dzUhwyaX04QosWZ8zyaaNB/WYZIdeDN1lcpfQbqiOhZJShRH+FLTDVONE/dqlMQrP+EO7lDqF0RrlIt9lnOCQQ==
+"@react-native/assets-registry@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.87.tgz#7dda64e48db14597e19e15f679e31abbb1c1fb4d"
+ integrity sha512-1XmRhqQchN+pXPKEKYdpJlwESxVomJOxtEnIkbo7GAlaN2sym84fHEGDXAjLilih5GVPpcpSmFzTy8jx3LtaFg==
+
"@react-native/assets@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e"
integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==
-"@react-native/babel-plugin-codegen@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.83.tgz#971f9cfec980dd05598d81964c05a26c6166f9fb"
- integrity sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==
- dependencies:
- "@react-native/codegen" "0.74.83"
-
"@react-native/babel-plugin-codegen@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.84.tgz#a3a72c188d875601704a421e395f6909fdec40f3"
@@ -2069,54 +2047,12 @@
dependencies:
"@react-native/codegen" "0.74.84"
-"@react-native/babel-preset@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.83.tgz#9828457779b4ce0219078652327ce3203115cdf9"
- integrity sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==
+"@react-native/babel-plugin-codegen@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.87.tgz#44457f4de69911f37a6ac308a7783203a757574a"
+ integrity sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==
dependencies:
- "@babel/core" "^7.20.0"
- "@babel/plugin-proposal-async-generator-functions" "^7.0.0"
- "@babel/plugin-proposal-class-properties" "^7.18.0"
- "@babel/plugin-proposal-export-default-from" "^7.0.0"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0"
- "@babel/plugin-proposal-numeric-separator" "^7.0.0"
- "@babel/plugin-proposal-object-rest-spread" "^7.20.0"
- "@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
- "@babel/plugin-proposal-optional-chaining" "^7.20.0"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
- "@babel/plugin-syntax-export-default-from" "^7.0.0"
- "@babel/plugin-syntax-flow" "^7.18.0"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0"
- "@babel/plugin-syntax-optional-chaining" "^7.0.0"
- "@babel/plugin-transform-arrow-functions" "^7.0.0"
- "@babel/plugin-transform-async-to-generator" "^7.20.0"
- "@babel/plugin-transform-block-scoping" "^7.0.0"
- "@babel/plugin-transform-classes" "^7.0.0"
- "@babel/plugin-transform-computed-properties" "^7.0.0"
- "@babel/plugin-transform-destructuring" "^7.20.0"
- "@babel/plugin-transform-flow-strip-types" "^7.20.0"
- "@babel/plugin-transform-function-name" "^7.0.0"
- "@babel/plugin-transform-literals" "^7.0.0"
- "@babel/plugin-transform-modules-commonjs" "^7.0.0"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0"
- "@babel/plugin-transform-parameters" "^7.0.0"
- "@babel/plugin-transform-private-methods" "^7.22.5"
- "@babel/plugin-transform-private-property-in-object" "^7.22.11"
- "@babel/plugin-transform-react-display-name" "^7.0.0"
- "@babel/plugin-transform-react-jsx" "^7.0.0"
- "@babel/plugin-transform-react-jsx-self" "^7.0.0"
- "@babel/plugin-transform-react-jsx-source" "^7.0.0"
- "@babel/plugin-transform-runtime" "^7.0.0"
- "@babel/plugin-transform-shorthand-properties" "^7.0.0"
- "@babel/plugin-transform-spread" "^7.0.0"
- "@babel/plugin-transform-sticky-regex" "^7.0.0"
- "@babel/plugin-transform-typescript" "^7.5.0"
- "@babel/plugin-transform-unicode-regex" "^7.0.0"
- "@babel/template" "^7.0.0"
- "@react-native/babel-plugin-codegen" "0.74.83"
- babel-plugin-transform-flow-enums "^0.0.2"
- react-refresh "^0.14.0"
+ "@react-native/codegen" "0.74.87"
"@react-native/babel-preset@0.74.84":
version "0.74.84"
@@ -2167,18 +2103,54 @@
babel-plugin-transform-flow-enums "^0.0.2"
react-refresh "^0.14.0"
-"@react-native/codegen@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.83.tgz#7c56a82fe7603f0867f0d80ff29db3757b71be55"
- integrity sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==
+"@react-native/babel-preset@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.87.tgz#3d74517d2ea8898f83b5106027033607d5bda50d"
+ integrity sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==
dependencies:
- "@babel/parser" "^7.20.0"
- glob "^7.1.1"
- hermes-parser "0.19.1"
- invariant "^2.2.4"
- jscodeshift "^0.14.0"
- mkdirp "^0.5.1"
- nullthrows "^1.1.1"
+ "@babel/core" "^7.20.0"
+ "@babel/plugin-proposal-async-generator-functions" "^7.0.0"
+ "@babel/plugin-proposal-class-properties" "^7.18.0"
+ "@babel/plugin-proposal-export-default-from" "^7.0.0"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0"
+ "@babel/plugin-proposal-numeric-separator" "^7.0.0"
+ "@babel/plugin-proposal-object-rest-spread" "^7.20.0"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.20.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.0"
+ "@babel/plugin-syntax-export-default-from" "^7.0.0"
+ "@babel/plugin-syntax-flow" "^7.18.0"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.0.0"
+ "@babel/plugin-transform-arrow-functions" "^7.0.0"
+ "@babel/plugin-transform-async-to-generator" "^7.20.0"
+ "@babel/plugin-transform-block-scoping" "^7.0.0"
+ "@babel/plugin-transform-classes" "^7.0.0"
+ "@babel/plugin-transform-computed-properties" "^7.0.0"
+ "@babel/plugin-transform-destructuring" "^7.20.0"
+ "@babel/plugin-transform-flow-strip-types" "^7.20.0"
+ "@babel/plugin-transform-function-name" "^7.0.0"
+ "@babel/plugin-transform-literals" "^7.0.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.0.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0"
+ "@babel/plugin-transform-parameters" "^7.0.0"
+ "@babel/plugin-transform-private-methods" "^7.22.5"
+ "@babel/plugin-transform-private-property-in-object" "^7.22.11"
+ "@babel/plugin-transform-react-display-name" "^7.0.0"
+ "@babel/plugin-transform-react-jsx" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-self" "^7.0.0"
+ "@babel/plugin-transform-react-jsx-source" "^7.0.0"
+ "@babel/plugin-transform-runtime" "^7.0.0"
+ "@babel/plugin-transform-shorthand-properties" "^7.0.0"
+ "@babel/plugin-transform-spread" "^7.0.0"
+ "@babel/plugin-transform-sticky-regex" "^7.0.0"
+ "@babel/plugin-transform-typescript" "^7.5.0"
+ "@babel/plugin-transform-unicode-regex" "^7.0.0"
+ "@babel/template" "^7.0.0"
+ "@react-native/babel-plugin-codegen" "0.74.87"
+ babel-plugin-transform-flow-enums "^0.0.2"
+ react-refresh "^0.14.0"
"@react-native/codegen@0.74.84":
version "0.74.84"
@@ -2193,23 +2165,18 @@
mkdirp "^0.5.1"
nullthrows "^1.1.1"
-"@react-native/community-cli-plugin@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.83.tgz#58808a58a5288895627548338731e72ebb5b507c"
- integrity sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==
+"@react-native/codegen@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.87.tgz#47f07a627d0294c8270a03aee098991ed91f8ae9"
+ integrity sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==
dependencies:
- "@react-native-community/cli-server-api" "13.6.6"
- "@react-native-community/cli-tools" "13.6.6"
- "@react-native/dev-middleware" "0.74.83"
- "@react-native/metro-babel-transformer" "0.74.83"
- chalk "^4.0.0"
- execa "^5.1.1"
- metro "^0.80.3"
- metro-config "^0.80.3"
- metro-core "^0.80.3"
- node-fetch "^2.2.0"
- querystring "^0.2.1"
- readline "^1.3.0"
+ "@babel/parser" "^7.20.0"
+ glob "^7.1.1"
+ hermes-parser "0.19.1"
+ invariant "^2.2.4"
+ jscodeshift "^0.14.0"
+ mkdirp "^0.5.1"
+ nullthrows "^1.1.1"
"@react-native/community-cli-plugin@0.74.84":
version "0.74.84"
@@ -2229,23 +2196,41 @@
querystring "^0.2.1"
readline "^1.3.0"
-"@react-native/debugger-frontend@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.83.tgz#48050afa4e086438073b95f041c0cc84fe3f20de"
- integrity sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==
+"@react-native/community-cli-plugin@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.87.tgz#4d9798d51381912f3771acded9b6b2804987e952"
+ integrity sha512-EgJG9lSr8x3X67dHQKQvU6EkO+3ksVlJHYIVv6U/AmW9dN80BEFxgYbSJ7icXS4wri7m4kHdgeq2PQ7/3vvrTQ==
+ dependencies:
+ "@react-native-community/cli-server-api" "13.6.9"
+ "@react-native-community/cli-tools" "13.6.9"
+ "@react-native/dev-middleware" "0.74.87"
+ "@react-native/metro-babel-transformer" "0.74.87"
+ chalk "^4.0.0"
+ execa "^5.1.1"
+ metro "^0.80.3"
+ metro-config "^0.80.3"
+ metro-core "^0.80.3"
+ node-fetch "^2.2.0"
+ querystring "^0.2.1"
+ readline "^1.3.0"
"@react-native/debugger-frontend@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.84.tgz#0bde122a988916b6a50f05a7c3ab1c5db029b149"
integrity sha512-YUEA03UNFbiYzHpYxlcS2D9+3eNT5YLGkl5yRg3nOSN6KbCc/OttGnNZme+tuSOJwjMN/vcvtDKYkTqjJw8U0A==
-"@react-native/dev-middleware@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.83.tgz#9d09cfdb763e8ef81c003b0f99ae4ed1a3539639"
- integrity sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==
+"@react-native/debugger-frontend@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.87.tgz#0bb4f4f54365d04fc975349d5f635cb575f6a5d8"
+ integrity sha512-MN95DJLYTv4EqJc+9JajA3AJZSBYJz2QEJ3uWlHrOky2vKrbbRVaW1ityTmaZa2OXIvNc6CZwSRSE7xCoHbXhQ==
+
+"@react-native/dev-middleware@0.74.84":
+ version "0.74.84"
+ resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz#19ccfece791742f83f4c0a22a8c14593a45562a2"
+ integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ==
dependencies:
"@isaacs/ttlcache" "^1.4.1"
- "@react-native/debugger-frontend" "0.74.83"
+ "@react-native/debugger-frontend" "0.74.84"
"@rnx-kit/chromium-edge-launcher" "^1.0.0"
chrome-launcher "^0.15.2"
connect "^3.6.5"
@@ -2258,13 +2243,13 @@
temp-dir "^2.0.0"
ws "^6.2.2"
-"@react-native/dev-middleware@0.74.84":
- version "0.74.84"
- resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.84.tgz#19ccfece791742f83f4c0a22a8c14593a45562a2"
- integrity sha512-veYw/WmyrAOQHUiIeULzn2duJQnXDPiKq2jZ/lcmDo6jsLirpp+Q73lx09TYgy/oVoPRuV0nfmU3x9B6EV/7qQ==
+"@react-native/dev-middleware@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.87.tgz#254807b579a3015ced659a14c374dbf029a9c04e"
+ integrity sha512-7TmZ3hTHwooYgIHqc/z87BMe1ryrIqAUi+AF7vsD+EHCGxHFdMjSpf1BZ2SUPXuLnF2cTiTfV2RwhbPzx0tYIA==
dependencies:
"@isaacs/ttlcache" "^1.4.1"
- "@react-native/debugger-frontend" "0.74.84"
+ "@react-native/debugger-frontend" "0.74.87"
"@rnx-kit/chromium-edge-launcher" "^1.0.0"
chrome-launcher "^0.15.2"
connect "^3.6.5"
@@ -2301,35 +2286,25 @@
resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.74.84.tgz#f0e9618551c9340caca7624001f8ce32794715c9"
integrity sha512-pDzo4Qm1uPZQne2sv0QK89ePxP/i+ZHjrBW3rkTVStLvsDVdyFahMmt6bzJTdYL2cGgK2oyNmfXtvO57INOu3Q==
-"@react-native/gradle-plugin@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.83.tgz#4ac60a6d6295d5b920173cbf184ee32e53690810"
- integrity sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==
-
"@react-native/gradle-plugin@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.84.tgz#6ff25fad5f78c276afde96ffc42e04e92d6d92b1"
integrity sha512-wYWC5WWXqzCCe4PDogz9pNc4xH5ZamahW5XGSbrrYJ5V3walZ+7z43V6iEBJkZbLjj9YBcSttkXYGr1Xh4veAg==
-"@react-native/js-polyfills@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.83.tgz#0e189ce3ab0efecd00223f3bfc53663ce08ba013"
- integrity sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==
+"@react-native/gradle-plugin@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.87.tgz#a66c01fda7a938a116dc27447f0ccce285796b2a"
+ integrity sha512-T+VX0N1qP+U9V4oAtn7FTX7pfsoVkd1ocyw9swYXgJqU2fK7hC9famW7b3s3ZiufPGPr1VPJe2TVGtSopBjL6A==
"@react-native/js-polyfills@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.84.tgz#edf0e8463616a2683269bbfe3957590f7ebd910c"
integrity sha512-+PgxuUjBw9JVlz6m4ECsIJMLbDopnr4rpLmsG32hQaJrg0wMuvHtsgAY/J/aVCSG2GNUXexfjrnhc+O9yGOZXQ==
-"@react-native/metro-babel-transformer@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.83.tgz#ba87c3cf041f4c0d2b991231af1a6b4a216e9b5d"
- integrity sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==
- dependencies:
- "@babel/core" "^7.20.0"
- "@react-native/babel-preset" "0.74.83"
- hermes-parser "0.19.1"
- nullthrows "^1.1.1"
+"@react-native/js-polyfills@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.87.tgz#d28090a4dae417a2e9ad14e065fcf8cf52cc482c"
+ integrity sha512-M5Evdn76CuVEF0GsaXiGi95CBZ4IWubHqwXxV9vG9CC9kq0PSkoM2Pn7Lx7dgyp4vT7ccJ8a3IwHbe+5KJRnpw==
"@react-native/metro-babel-transformer@0.74.84":
version "0.74.84"
@@ -2341,6 +2316,16 @@
hermes-parser "0.19.1"
nullthrows "^1.1.1"
+"@react-native/metro-babel-transformer@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.87.tgz#f60958f5e7eb39008a2c01dc5248ab60240bdc01"
+ integrity sha512-UsJCO24sNax2NSPBmV1zLEVVNkS88kcgAiYrZHtYSwSjpl4WZ656tIeedBfiySdJ94Hr3kQmBYLipV5zk0NI1A==
+ dependencies:
+ "@babel/core" "^7.20.0"
+ "@react-native/babel-preset" "0.74.87"
+ hermes-parser "0.19.1"
+ nullthrows "^1.1.1"
+
"@react-native/metro-config@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.74.84.tgz#b2c1b45f62af9b8140a9a02798fa4fb2a3db7c0c"
@@ -2351,29 +2336,21 @@
metro-config "^0.80.3"
metro-runtime "^0.80.3"
-"@react-native/normalize-colors@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.83.tgz#86ef925bacf219d74df115bcfb615f62d8142e85"
- integrity sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==
-
"@react-native/normalize-colors@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz#4764d59775c17a6ed193509cb01ae2f42dd5c045"
integrity sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==
+"@react-native/normalize-colors@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.87.tgz#a814169d0ce4ce13ffebcda0a3a5a3f780ccd772"
+ integrity sha512-Xh7Nyk/MPefkb0Itl5Z+3oOobeG9lfLb7ZOY2DKpFnoCE1TzBmib9vMNdFaLdSxLIP+Ec6icgKtdzYg8QUPYzA==
+
"@react-native/typescript-config@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.74.84.tgz#aff6132ced5679c99b33b4e3a6747338b99e5e09"
integrity sha512-yMAyxl0wzRKT6JkQV0WCryiBQ1hj97u/JiT4LjXbwpPSErgiTRq+SKwhKH5vhSw9P0O8JCLIG6rS5rkbjranDg==
-"@react-native/virtualized-lists@0.74.83":
- version "0.74.83"
- resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.83.tgz#5595d6aefd9679d1295c56a1d1653b1fb261bd62"
- integrity sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==
- dependencies:
- invariant "^2.2.4"
- nullthrows "^1.1.1"
-
"@react-native/virtualized-lists@0.74.84":
version "0.74.84"
resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.84.tgz#cf32fffc93072942532c9c81bd7e4c01a2949626"
@@ -2382,6 +2359,14 @@
invariant "^2.2.4"
nullthrows "^1.1.1"
+"@react-native/virtualized-lists@0.74.87":
+ version "0.74.87"
+ resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.87.tgz#31bc44d62617df7d893df22c4c57094f576677a0"
+ integrity sha512-lsGxoFMb0lyK/MiplNKJpD+A1EoEUumkLrCjH4Ht+ZlG8S0BfCxmskLZ6qXn3BiDSkLjfjI/qyZ3pnxNBvkXpQ==
+ dependencies:
+ invariant "^2.2.4"
+ nullthrows "^1.1.1"
+
"@rnx-kit/chromium-edge-launcher@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#c0df8ea00a902c7a417cd9655aab06de398b939c"
@@ -3148,11 +3133,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-base64-arraybuffer@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
- integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
-
base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@@ -3574,13 +3554,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
-css-line-break@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
- integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
- dependencies:
- utrie "^1.0.2"
-
css-select@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
@@ -3801,11 +3774,6 @@ domutils@^3.0.1:
domelementtype "^2.3.0"
domhandler "^5.0.3"
-dotenv@^16.4.5:
- version "16.4.5"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
- integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
-
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -4640,7 +4608,7 @@ globalthis@^1.0.3, globalthis@^1.0.4:
define-properties "^1.2.1"
gopd "^1.0.1"
-globby@^11.0.4, globby@^11.1.0:
+globby@^11.1.0:
version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@@ -4763,14 +4731,6 @@ html-escaper@^2.0.0:
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-html2canvas@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
- integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
- dependencies:
- css-line-break "^2.1.0"
- text-segmentation "^1.0.3"
-
http-errors@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
@@ -6888,60 +6848,29 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-native-dotenv@^3.4.11:
- version "3.4.11"
- resolved "https://registry.yarnpkg.com/react-native-dotenv/-/react-native-dotenv-3.4.11.tgz#2e6c4eabd55d5f1bf109b3dd9141dadf9c55cdd4"
- integrity sha512-6vnIE+WHABSeHCaYP6l3O1BOEhWxKH6nHAdV7n/wKn/sciZ64zPPp2NUdEUf1m7g4uuzlLbjgr+6uDt89q2DOg==
- dependencies:
- dotenv "^16.4.5"
-
-react-native-reanimated@3.15.4:
- version "3.15.4"
- resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.15.4.tgz#0d4aa65b53f9c845fe8c33aa8a3ad3d06a23f063"
- integrity sha512-jcpHE+MnsvSbClhHgAFoken7SnaHrUJ5gVA8BUw8S1j6rkrw2VzRpht6cxn14NlqYx5ytjfG9IXJDOzq8tFvfw==
- dependencies:
- "@babel/plugin-transform-arrow-functions" "^7.0.0-0"
- "@babel/plugin-transform-class-properties" "^7.0.0-0"
- "@babel/plugin-transform-classes" "^7.0.0-0"
- "@babel/plugin-transform-nullish-coalescing-operator" "^7.0.0-0"
- "@babel/plugin-transform-optional-chaining" "^7.0.0-0"
- "@babel/plugin-transform-shorthand-properties" "^7.0.0-0"
- "@babel/plugin-transform-template-literals" "^7.0.0-0"
- "@babel/plugin-transform-unicode-regex" "^7.0.0-0"
- "@babel/preset-typescript" "^7.16.7"
- convert-source-map "^2.0.0"
- invariant "^2.2.4"
-
"react-native-svg@link:../..":
version "0.0.0"
uid ""
-react-native-view-shot@4.0.0-alpha.2:
- version "4.0.0-alpha.2"
- resolved "https://registry.yarnpkg.com/react-native-view-shot/-/react-native-view-shot-4.0.0-alpha.2.tgz#389f5323722c3acad1c002bf4f0f0539fd2508c9"
- integrity sha512-BNQ+FoOUrB2Y6zxwhSZtZMMXVLewN2Ic8y5gS+5Y7hdgphqWmlHZIGbcLn/NmJS+soz0Pe3WO1sM5vX6u7h6VQ==
- dependencies:
- html2canvas "^1.4.1"
-
-react-native-windows@0.74.9:
- version "0.74.9"
- resolved "https://registry.yarnpkg.com/react-native-windows/-/react-native-windows-0.74.9.tgz#2abcc8eb99a4ce0ce80dfe2dea8ce249b8e21469"
- integrity sha512-0WEwKhfi+WyjVswT6pRewfw2V694KYfTMIDSITDEu3Y3A9m1o0YyisnURxc4KRndRc0FQuw1iUf49uVK7BnXAw==
+react-native-windows@0.74.24:
+ version "0.74.24"
+ resolved "https://registry.yarnpkg.com/react-native-windows/-/react-native-windows-0.74.24.tgz#1dfbf992d377663da0578adf7507934c363c27b2"
+ integrity sha512-Vdpmpr9JDHdZUQFfr7rPeYNkcAaP0BRR1gLd4hz80pShIOuxuVUKmccN3mtr1S4y8VF+hEnhXdMHRjk64OE4GQ==
dependencies:
"@babel/runtime" "^7.0.0"
"@jest/create-cache-key-function" "^29.6.3"
- "@react-native-community/cli" "13.6.6"
- "@react-native-community/cli-platform-android" "13.6.6"
- "@react-native-community/cli-platform-ios" "13.6.6"
- "@react-native-windows/cli" "0.74.0"
+ "@react-native-community/cli" "13.6.9"
+ "@react-native-community/cli-platform-android" "13.6.9"
+ "@react-native-community/cli-platform-ios" "13.6.9"
+ "@react-native-windows/cli" "0.74.8"
"@react-native/assets" "1.0.0"
- "@react-native/assets-registry" "0.74.83"
- "@react-native/codegen" "0.74.83"
- "@react-native/community-cli-plugin" "0.74.83"
- "@react-native/gradle-plugin" "0.74.83"
- "@react-native/js-polyfills" "0.74.83"
- "@react-native/normalize-colors" "0.74.83"
- "@react-native/virtualized-lists" "0.74.83"
+ "@react-native/assets-registry" "0.74.87"
+ "@react-native/codegen" "0.74.87"
+ "@react-native/community-cli-plugin" "0.74.87"
+ "@react-native/gradle-plugin" "0.74.87"
+ "@react-native/js-polyfills" "0.74.87"
+ "@react-native/normalize-colors" "0.74.87"
+ "@react-native/virtualized-lists" "0.74.87"
abort-controller "^3.0.0"
anser "^1.4.9"
ansi-regex "^5.0.0"
@@ -7791,13 +7720,6 @@ test-exclude@^6.0.0:
glob "^7.1.4"
minimatch "^3.0.4"
-text-segmentation@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
- integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
- dependencies:
- utrie "^1.0.2"
-
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -8034,13 +7956,6 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
-utrie@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
- integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
- dependencies:
- base64-arraybuffer "^1.0.2"
-
uuid@^3.3.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
diff --git a/src/lib/extract/extractProps.windows.ts b/src/lib/extract/extractProps.windows.ts
index 2a949a8e..55829520 100644
--- a/src/lib/extract/extractProps.windows.ts
+++ b/src/lib/extract/extractProps.windows.ts
@@ -6,6 +6,7 @@ import extractOpacity from './extractOpacity';
import { idPattern } from '../util';
import type {
ClipProps,
+ ColorProps,
extractedProps,
FillProps,
NumberProp,
@@ -53,6 +54,7 @@ export default function extractProps(
ResponderProps &
StrokeProps &
FillProps &
+ ColorProps &
ClipProps,
ref: object
) {
@@ -75,6 +77,9 @@ export default function extractProps(
extractResponder(extracted, props, ref);
extractFill(extracted, props, inherited);
extractStroke(extracted, props, inherited);
+ if (props.color) {
+ extracted.color = props.color;
+ }
if (inherited.length) {
extracted.propList = inherited;
diff --git a/windows/RNSVG/BrushView.cpp b/windows/RNSVG/BrushView.cpp
index 6436f2ee..903b161c 100644
--- a/windows/RNSVG/BrushView.cpp
+++ b/windows/RNSVG/BrushView.cpp
@@ -8,11 +8,6 @@
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-BrushView::BrushView(
- const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-#endif
-
void BrushView::SaveDefinition() {
if (auto const &root{SvgRoot()}) {
CreateBrush();
diff --git a/windows/RNSVG/BrushView.h b/windows/RNSVG/BrushView.h
index 57aefa16..b92a7577 100644
--- a/windows/RNSVG/BrushView.h
+++ b/windows/RNSVG/BrushView.h
@@ -8,10 +8,6 @@ struct BrushView : BrushViewT {
public:
BrushView() = default;
-#ifdef USE_FABRIC
- BrushView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-#endif
-
// IRenderable
void SaveDefinition();
@@ -32,3 +28,4 @@ struct BrushView : BrushViewT {
namespace winrt::RNSVG::factory_implementation {
struct BrushView : BrushViewT {};
} // namespace winrt::RNSVG::factory_implementation
+
diff --git a/windows/RNSVG/CircleView.cpp b/windows/RNSVG/CircleView.cpp
index 131d1835..12b0e91c 100644
--- a/windows/RNSVG/CircleView.cpp
+++ b/windows/RNSVG/CircleView.cpp
@@ -12,47 +12,6 @@ using namespace Microsoft::ReactNative;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-CircleProps::CircleProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void CircleProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-CircleView::CircleView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void CircleView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGCircle", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void CircleView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto circleProps = props.try_as();
- if (circleProps) {
- m_props = circleProps;
-
- m_cx = m_props->cx;
- m_cy = m_props->cy;
- m_r = m_props->r;
- }
-
- base_type::UpdateProperties(props, oldProps, forceUpdate, invalidate);
-}
-#else
void CircleView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate, bool invalidate) {
const JSValueObject &propertyMap{JSValue::ReadObjectFrom(reader)};
@@ -71,7 +30,6 @@ void CircleView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate
__super::UpdateProperties(reader, forceUpdate, invalidate);
}
-#endif
void CircleView::CreateGeometry(RNSVG::D2DDeviceContext const &context) {
auto const root{SvgRoot()};
diff --git a/windows/RNSVG/CircleView.h b/windows/RNSVG/CircleView.h
index d14d8e96..e1206133 100644
--- a/windows/RNSVG/CircleView.h
+++ b/windows/RNSVG/CircleView.h
@@ -1,53 +1,16 @@
#pragma once
-#ifdef USE_FABRIC
-#include "CircleProps.g.h"
-#endif
-
#include "CircleView.g.h"
#include "RenderableView.h"
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(CircleProps)
-struct CircleProps : CirclePropsT {
- CircleProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
-
- REACT_FIELD(r)
- RNSVG::SVGLength r{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(cx)
- RNSVG::SVGLength cx{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(cy)
- RNSVG::SVGLength cy{0, winrt::RNSVG::LengthType::Unknown};
-};
-#endif
-
struct CircleView : CircleViewT {
public:
CircleView() = default;
-#ifdef USE_FABRIC
- CircleView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-
- // IRenderableFabric
- void UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate = true,
- bool invalidate = true) noexcept override;
-#else
// IRenderablePaper
void UpdateProperties(Microsoft::ReactNative::IJSValueReader const &reader, bool forceUpdate, bool invalidate);
-#endif
// IRenderable
void CreateGeometry(RNSVG::D2DDeviceContext const &context);
@@ -57,11 +20,9 @@ struct CircleView : CircleViewT m_props;
-#endif
};
} // namespace winrt::RNSVG::implementation
+
namespace winrt::RNSVG::factory_implementation {
struct CircleView : CircleViewT {};
} // namespace winrt::RNSVG::factory_implementation
diff --git a/windows/RNSVG/ClipPathView.cpp b/windows/RNSVG/ClipPathView.cpp
index cecf21ac..9ed0465a 100644
--- a/windows/RNSVG/ClipPathView.cpp
+++ b/windows/RNSVG/ClipPathView.cpp
@@ -7,28 +7,4 @@
using namespace winrt;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-ClipPathProps::ClipPathProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void ClipPathProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-ClipPathView::ClipPathView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void ClipPathView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGClipPath", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-#endif
} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/ClipPathView.h b/windows/RNSVG/ClipPathView.h
index 5f5b7856..f56c7cdc 100644
--- a/windows/RNSVG/ClipPathView.h
+++ b/windows/RNSVG/ClipPathView.h
@@ -1,36 +1,13 @@
#pragma once
-#ifdef USE_FABRIC
-#include "ClipPathProps.g.h"
-#endif
-
#include "ClipPathView.g.h"
#include "GroupView.h"
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(ClipPathProps)
-struct ClipPathProps : ClipPathPropsT {
- ClipPathProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
- REACT_SVG_GROUP_COMMON_PROPS;
-};
-#endif
struct ClipPathView : ClipPathViewT {
public:
ClipPathView() = default;
-#ifdef USE_FABRIC
- ClipPathView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-#endif
-
// IRenderable
void Draw(RNSVG::D2DDeviceContext const & /*deviceContext*/, Windows::Foundation::Size const & /*size*/){};
};
diff --git a/windows/RNSVG/D2DHelpers.h b/windows/RNSVG/D2DHelpers.h
index 19b381a6..931f86e4 100644
--- a/windows/RNSVG/D2DHelpers.h
+++ b/windows/RNSVG/D2DHelpers.h
@@ -131,11 +131,7 @@ struct D2DHelpers {
}
static DWRITE_FONT_WEIGHT FontWeightFrom(
-#ifdef USE_FABRIC
- winrt::Microsoft::ReactNative::ComponentView const &parent,
-#else
xaml::FrameworkElement const &parent,
-#endif
hstring const &weight) {
if (weight == L"normal") {
return DWRITE_FONT_WEIGHT_NORMAL;
diff --git a/windows/RNSVG/DefsView.cpp b/windows/RNSVG/DefsView.cpp
index f3604236..9674cbe1 100644
--- a/windows/RNSVG/DefsView.cpp
+++ b/windows/RNSVG/DefsView.cpp
@@ -8,30 +8,5 @@ using namespace winrt;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-DefsProps::DefsProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void DefsProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-DefsView::DefsView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void DefsView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGDefs", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-#endif
-
void DefsView::Draw(RNSVG::D2DDeviceContext const& /*deviceContext*/, Size const & /*size*/) {}
} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/DefsView.h b/windows/RNSVG/DefsView.h
index ae9262a8..7176535f 100644
--- a/windows/RNSVG/DefsView.h
+++ b/windows/RNSVG/DefsView.h
@@ -1,37 +1,14 @@
#pragma once
-#ifdef USE_FABRIC
-#include "DefsProps.g.h"
-#endif
-
#include "DefsView.g.h"
#include "GroupView.h"
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(DefsProps)
-struct DefsProps : DefsPropsT {
- DefsProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
-};
-#endif
-
struct DefsView : DefsViewT {
public:
DefsView() = default;
-#ifdef USE_FABRIC
- DefsView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-#endif
-
// IRenderable
void Draw(RNSVG::D2DDeviceContext const &deviceContext, Windows::Foundation::Size const &size);
};
diff --git a/windows/RNSVG/EllipseView.cpp b/windows/RNSVG/EllipseView.cpp
index 2b1e0c85..cf37a1cc 100644
--- a/windows/RNSVG/EllipseView.cpp
+++ b/windows/RNSVG/EllipseView.cpp
@@ -11,48 +11,7 @@ using namespace winrt;
using namespace Microsoft::ReactNative;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-EllipseProps::EllipseProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-void EllipseProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-EllipseView::EllipseView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void EllipseView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGEllipse", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void EllipseView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto ellipseProps = props.try_as();
- if (ellipseProps) {
- m_props = ellipseProps;
-
- m_cx = m_props->cx;
- m_cy = m_props->cy;
- m_rx = m_props->rx;
- m_ry = m_props->ry;
- }
-
- base_type::UpdateProperties(props, oldProps, forceUpdate, invalidate);
-}
-#else
void EllipseView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate, bool invalidate) {
const JSValueObject &propertyMap{JSValue::ReadObjectFrom(reader)};
@@ -73,7 +32,6 @@ void EllipseView::UpdateProperties(IJSValueReader const &reader, bool forceUpdat
__super::UpdateProperties(reader, forceUpdate, invalidate);
}
-#endif
void EllipseView::CreateGeometry(RNSVG::D2DDeviceContext const &context) {
auto const root{SvgRoot()};
diff --git a/windows/RNSVG/EllipseView.h b/windows/RNSVG/EllipseView.h
index e52363b6..acbc270c 100644
--- a/windows/RNSVG/EllipseView.h
+++ b/windows/RNSVG/EllipseView.h
@@ -1,55 +1,16 @@
#pragma once
-#ifdef USE_FABRIC
-#include "EllipseProps.g.h"
-#endif
-
#include "EllipseView.g.h"
#include "RenderableView.h"
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(EllipseProps)
-struct EllipseProps : EllipsePropsT {
- EllipseProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
-
- REACT_FIELD(cx)
- RNSVG::SVGLength cx{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(cy)
- RNSVG::SVGLength cy{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(rx)
- RNSVG::SVGLength rx{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(ry)
- RNSVG::SVGLength ry{0, winrt::RNSVG::LengthType::Unknown};
-};
-#endif
-
struct EllipseView : EllipseViewT {
public:
EllipseView() = default;
-#ifdef USE_FABRIC
- EllipseView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-
- // IRenderableFabric
- void UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate = true,
- bool invalidate = true) noexcept override;
-#else
// IRenderablePaper
void UpdateProperties(Microsoft::ReactNative::IJSValueReader const &reader, bool forceUpdate, bool invalidate);
-#endif
// IRenderable
void CreateGeometry(RNSVG::D2DDeviceContext const &context);
@@ -59,12 +20,9 @@ struct EllipseView : EllipseViewT m_props;
-#endif
};
} // namespace winrt::RNSVG::implementation
+
namespace winrt::RNSVG::factory_implementation {
struct EllipseView : EllipseViewT {};
} // namespace winrt::RNSVG::factory_implementation
diff --git a/windows/RNSVG/Fabric.idl b/windows/RNSVG/Fabric.idl
deleted file mode 100644
index fe8305ff..00000000
--- a/windows/RNSVG/Fabric.idl
+++ /dev/null
@@ -1,166 +0,0 @@
-import "Views.idl";
-
-namespace RNSVG
-{
- [experimental]
- interface IRenderableFabric
- {
- Microsoft.ReactNative.ComponentView SvgParent { get; };
-
- void UpdateProperties(Microsoft.ReactNative.IComponentProps props, Microsoft.ReactNative.IComponentProps oldProps, Boolean forceUpdate, Boolean invalidate);
- };
-
- [experimental]
- [default_interface]
- runtimeclass SvgView : Microsoft.ReactNative.Composition.ViewComponentView,
- Microsoft.ReactNative.Composition.Experimental.IInternalCreateVisual, IRenderable, IRenderableFabric, ISvgView
- {
- SvgView(Microsoft.ReactNative.Composition.CreateCompositionComponentViewArgs args);
-
- GroupView Group;
- Microsoft.ReactNative.Color CurrentColor{ get; };
- };
-
- [experimental]
- [default_interface]
- unsealed runtimeclass RenderableView : Microsoft.ReactNative.ComponentView, IRenderable, IRenderableFabric, IRenderableView
- {
- RenderableView(Microsoft.ReactNative.CreateComponentViewArgs args);
- SvgView SvgRoot{ get; };
- Microsoft.ReactNative.Color Fill{ get; };
- Microsoft.ReactNative.Color Stroke{ get; };
- };
-
- [experimental]
- [default_interface]
- runtimeclass RectView : RenderableView
- {
- RectView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass CircleView : RenderableView
- {
- CircleView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass EllipseView : RenderableView
- {
- EllipseView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass LineView : RenderableView
- {
- LineView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass PathView : RenderableView
- {
- PathView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass UseView : RenderableView
- {
- UseView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass ImageView : RenderableView
- {
- ImageView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- unsealed runtimeclass GroupView : RenderableView, IGroupView
- {
- GroupView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- unsealed runtimeclass TextView : GroupView, ITextView
- {
- TextView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass TSpanView : TextView, ITSpanView
- {
- TSpanView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass DefsView : GroupView
- {
- DefsView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass SymbolView : GroupView, ISymbolView
- {
- SymbolView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass ClipPathView : GroupView
- {
- ClipPathView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass MarkerView : GroupView
- {
- MarkerView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass MaskView : GroupView
- {
- MaskView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- unsealed runtimeclass BrushView : GroupView, IBrushView
- {
- BrushView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass LinearGradientView : BrushView
- {
- LinearGradientView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass RadialGradientView : BrushView
- {
- RadialGradientView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-
- [experimental]
- [default_interface]
- runtimeclass PatternView : BrushView
- {
- PatternView(Microsoft.ReactNative.CreateComponentViewArgs args);
- };
-}
\ No newline at end of file
diff --git a/windows/RNSVG/Fabric/CircleView.cpp b/windows/RNSVG/Fabric/CircleView.cpp
new file mode 100644
index 00000000..60b007eb
--- /dev/null
+++ b/windows/RNSVG/Fabric/CircleView.cpp
@@ -0,0 +1,53 @@
+#include "pch.h"
+#include "CircleView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(CircleProps)
+struct CircleProps : public winrt::implements {
+ CircleProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(CircleProps)
+ r = cloneFromProps->r;
+ cx = cloneFromProps->cx;
+ cy = cloneFromProps->cy;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(r)
+ D2D1_SVG_LENGTH r{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(cx)
+ D2D1_SVG_LENGTH cx{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(cy)
+ D2D1_SVG_LENGTH cy{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+};
+
+struct CircleView : winrt::implements {
+ public:
+ CircleView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"circle";
+ }
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = winrt::get_self(m_props);
+
+ SetCommonSvgProps(svgView, document, element, *props);
+
+ element.SetAttributeValue(SvgStrings::cxAttributeName, props->cx);
+ element.SetAttributeValue(SvgStrings::cyAttributeName, props->cy);
+ element.SetAttributeValue(SvgStrings::rAttributeName, props->r);
+ }
+};
+
+void RegisterCircleComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGCircle", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/CircleView.h b/windows/RNSVG/Fabric/CircleView.h
new file mode 100644
index 00000000..2b03d4c2
--- /dev/null
+++ b/windows/RNSVG/Fabric/CircleView.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterCircleComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/ClipPathView.cpp b/windows/RNSVG/Fabric/ClipPathView.cpp
new file mode 100644
index 00000000..25ea3e6a
--- /dev/null
+++ b/windows/RNSVG/Fabric/ClipPathView.cpp
@@ -0,0 +1,38 @@
+#include "pch.h"
+#include "ClipPathView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(ClipPathProps)
+struct ClipPathProps : winrt::implements {
+ ClipPathProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(ClipPathProps)
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+};
+
+struct ClipPathView : winrt::implements {
+ public:
+ ClipPathView() = default;
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = winrt::get_self(m_props);
+ SetCommonSvgProps(svgView, document, element, *props);
+ }
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"clipPath";
+ }
+};
+
+void RegisterClipPathComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGClipPath", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/ClipPathView.h b/windows/RNSVG/Fabric/ClipPathView.h
new file mode 100644
index 00000000..2fda1f36
--- /dev/null
+++ b/windows/RNSVG/Fabric/ClipPathView.h
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "GroupView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterClipPathComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/D2DHelpers.h b/windows/RNSVG/Fabric/D2DHelpers.h
new file mode 100644
index 00000000..e95feb92
--- /dev/null
+++ b/windows/RNSVG/Fabric/D2DHelpers.h
@@ -0,0 +1,18 @@
+#pragma once
+
+namespace winrt::RNSVG {
+struct D2DHelpers {
+ public:
+ static D2D1::ColorF AsD2DColor(winrt::Windows::UI::Color const &color) {
+ return {
+ color.R / 255.0f,
+ color.G / 255.0f,
+ color.B / 255.0f,
+ color.A / 255.0f};
+ }
+
+ static D2D1::Matrix3x2F AsD2DTransform(winrt::Windows::Foundation::Numerics::float3x2 const &transform) {
+ return D2D1::Matrix3x2F(transform.m11, transform.m12, transform.m21, transform.m22, transform.m31, transform.m32);
+ }
+};
+} // namespace winrt::RNSVG
diff --git a/windows/RNSVG/Fabric/DefsView.cpp b/windows/RNSVG/Fabric/DefsView.cpp
new file mode 100644
index 00000000..a41e75fe
--- /dev/null
+++ b/windows/RNSVG/Fabric/DefsView.cpp
@@ -0,0 +1,41 @@
+#include "pch.h"
+#include "DefsView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(DefsProps)
+struct DefsProps : winrt::implements {
+ DefsProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(DefsProps)
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+};
+
+struct DefsView : winrt::implements {
+ public:
+ DefsView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"defs";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ if (m_props) {
+ auto props = winrt::get_self(m_props);
+ SetCommonSvgProps(svgView, document, element, *props);
+ }
+ }
+};
+
+void RegisterDefsComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGDefs", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/DefsView.h b/windows/RNSVG/Fabric/DefsView.h
new file mode 100644
index 00000000..e421bac4
--- /dev/null
+++ b/windows/RNSVG/Fabric/DefsView.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "GroupView.h"
+
+namespace winrt::RNSVG::implementation {
+
+ void RegisterDefsComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/EllipseView.cpp b/windows/RNSVG/Fabric/EllipseView.cpp
new file mode 100644
index 00000000..612520c6
--- /dev/null
+++ b/windows/RNSVG/Fabric/EllipseView.cpp
@@ -0,0 +1,56 @@
+#include "pch.h"
+#include "EllipseView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(EllipseProps)
+struct EllipseProps : winrt::implements {
+ EllipseProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(EllipseProps)
+ cx = cloneFromProps->cx;
+ cy = cloneFromProps->cy;
+ rx = cloneFromProps->rx;
+ ry = cloneFromProps->ry;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(cx)
+ D2D1_SVG_LENGTH cx{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(cy)
+ D2D1_SVG_LENGTH cy{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(rx)
+ D2D1_SVG_LENGTH rx{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(ry)
+ D2D1_SVG_LENGTH ry{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+};
+
+struct EllipseView : winrt::implements {
+ public:
+ EllipseView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"ellipse";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+ element.SetAttributeValue(SvgStrings::cxAttributeName, props->cx);
+ element.SetAttributeValue(SvgStrings::cyAttributeName, props->cy);
+ element.SetAttributeValue(SvgStrings::rxAttributeName, props->rx);
+ element.SetAttributeValue(SvgStrings::ryAttributeName, props->ry);
+ }
+};
+
+void RegisterEllipseComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGEllipse", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/EllipseView.h b/windows/RNSVG/Fabric/EllipseView.h
new file mode 100644
index 00000000..2eef3ba6
--- /dev/null
+++ b/windows/RNSVG/Fabric/EllipseView.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterEllipseComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+
+} // namespace winrt::RNSVG::implementation
+
diff --git a/windows/RNSVG/Fabric/GroupView.cpp b/windows/RNSVG/Fabric/GroupView.cpp
new file mode 100644
index 00000000..da595810
--- /dev/null
+++ b/windows/RNSVG/Fabric/GroupView.cpp
@@ -0,0 +1,42 @@
+#include "pch.h"
+
+#include "GroupView.h"
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(SvgGroupProps)
+struct SvgGroupProps : winrt::implements {
+ SvgGroupProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(SvgGroupProps)
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+};
+
+struct GroupView : winrt::implements {
+ public:
+ GroupView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"g";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = winrt::get_self(m_props);
+ SetCommonSvgProps(svgView, document, element, *props);
+ }
+};
+
+void RegisterGroupComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGGroup", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/GroupView.h b/windows/RNSVG/Fabric/GroupView.h
new file mode 100644
index 00000000..35261592
--- /dev/null
+++ b/windows/RNSVG/Fabric/GroupView.h
@@ -0,0 +1,8 @@
+#pragma once
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterGroupComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/ImageView.cpp b/windows/RNSVG/Fabric/ImageView.cpp
new file mode 100644
index 00000000..0d8279d1
--- /dev/null
+++ b/windows/RNSVG/Fabric/ImageView.cpp
@@ -0,0 +1,128 @@
+#include "pch.h"
+#include "ImageView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(ImageSource)
+struct ImageSource {
+ REACT_FIELD(uri)
+ std::wstring uri{};
+ REACT_FIELD(width)
+ float width{0.0f};
+ REACT_FIELD(height)
+ float height{0.0f};
+
+ bool operator==(const ImageSource &rhs) const {
+ return uri == rhs.uri && width == rhs.width && height == rhs.height;
+ }
+
+ bool operator!=(const ImageSource &rhs) const {
+ return !(*this == rhs);
+ }
+};
+
+REACT_STRUCT(ImageProps)
+struct ImageProps : winrt::implements {
+ ImageProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(ImageProps)
+ x = cloneFromProps->x;
+ y = cloneFromProps->y;
+ width = cloneFromProps->width;
+ height = cloneFromProps->height;
+ src = cloneFromProps->src;
+ align = cloneFromProps->align;
+ meetOrSlice = cloneFromProps->meetOrSlice;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(x)
+ std::optional x;
+ REACT_FIELD(y)
+ std::optional y;
+ REACT_FIELD(width)
+ std::optional width;
+ REACT_FIELD(height)
+ std::optional height;
+ REACT_FIELD(src)
+ ImageSource src;
+ REACT_FIELD(align)
+ std::optional align{""};
+ REACT_FIELD(meetOrSlice)
+ std::optional meetOrSlice;
+};
+
+struct ImageView : winrt::implements {
+ public:
+ ImageView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"image";
+ }
+
+ void UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept {
+ RenderableView::UpdateProps(view, newProps, oldProps);
+
+ auto props = newProps.as();
+
+ if (!props->align) {
+ m_aspectAlign = AlignToAspectAlign(props->align.value());
+ } else {
+ m_aspectAlign = D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_NONE;
+ }
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+
+ if (props->x) {
+ element.SetAttributeValue(SvgStrings::xAttributeName, props->x.value());
+ }
+ if (props->y) {
+ element.SetAttributeValue(SvgStrings::yAttributeName, props->y.value());
+ }
+ if (props->width) {
+ element.SetAttributeValue(SvgStrings::widthAttributeName, props->width.value());
+ }
+ if (props->height) {
+ element.SetAttributeValue(SvgStrings::heightAttributeName, props->height.value());
+ }
+
+ if (props->align != std::nullopt || props->meetOrSlice != std::nullopt) {
+ D2D1_SVG_PRESERVE_ASPECT_RATIO preserveAspectRatio;
+ preserveAspectRatio.defer = false;
+ preserveAspectRatio.align = m_aspectAlign;
+
+ preserveAspectRatio.meetOrSlice = props->meetOrSlice.value() == MeetOrSlice::Meet
+ ? D2D1_SVG_ASPECT_SCALING::D2D1_SVG_ASPECT_SCALING_MEET
+ : D2D1_SVG_ASPECT_SCALING::D2D1_SVG_ASPECT_SCALING_SLICE;
+ element.SetAttributeValue(SvgStrings::preserveAspectRatioAttributeName, preserveAspectRatio);
+ }
+
+ if (!props->src.uri.empty()) {
+ element.SetAttributeValue(
+ SvgStrings::xlinkhrefAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->src.uri.c_str());
+ }
+ }
+
+ private:
+ D2D1_SVG_ASPECT_ALIGN m_aspectAlign;
+};
+
+void RegisterImageComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGImage", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/ImageView.h b/windows/RNSVG/Fabric/ImageView.h
new file mode 100644
index 00000000..fd79aac4
--- /dev/null
+++ b/windows/RNSVG/Fabric/ImageView.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterImageComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/LineView.cpp b/windows/RNSVG/Fabric/LineView.cpp
new file mode 100644
index 00000000..542a623c
--- /dev/null
+++ b/windows/RNSVG/Fabric/LineView.cpp
@@ -0,0 +1,56 @@
+#include "pch.h"
+#include "LineView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(LineProps)
+struct LineProps : winrt::implements {
+ LineProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(LineProps)
+ x1 = cloneFromProps->x1;
+ y1 = cloneFromProps->y1;
+ x2 = cloneFromProps->x2;
+ y2 = cloneFromProps->y2;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(x1)
+ D2D1_SVG_LENGTH x1{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(y1)
+ D2D1_SVG_LENGTH y1{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(x2)
+ D2D1_SVG_LENGTH x2{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(y2)
+ D2D1_SVG_LENGTH y2{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+};
+
+struct LineView : winrt::implements {
+ public:
+ LineView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"line";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+ element.SetAttributeValue(SvgStrings::x1AttributeName, props->x1);
+ element.SetAttributeValue(SvgStrings::y1AttributeName, props->y1);
+ element.SetAttributeValue(SvgStrings::x2AttributeName, props->x2);
+ element.SetAttributeValue(SvgStrings::y2AttributeName, props->y2);
+ }
+};
+
+void RegisterLineComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGLine", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/LineView.h b/windows/RNSVG/Fabric/LineView.h
new file mode 100644
index 00000000..55c13069
--- /dev/null
+++ b/windows/RNSVG/Fabric/LineView.h
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterLineComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/LinearGradientView.cpp b/windows/RNSVG/Fabric/LinearGradientView.cpp
new file mode 100644
index 00000000..6b0c6218
--- /dev/null
+++ b/windows/RNSVG/Fabric/LinearGradientView.cpp
@@ -0,0 +1,134 @@
+#include "pch.h"
+#include "LinearGradientView.h"
+
+namespace winrt::RNSVG::implementation {
+
+struct SvgLinearGradientStop {
+ float offset{0};
+ D2D1_COLOR_F color;
+ float opacity{1.0f};
+};
+
+REACT_STRUCT(LinearGradientProps)
+struct LinearGradientProps : winrt::implements {
+ LinearGradientProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(LinearGradientProps)
+ x1 = cloneFromProps->x1;
+ y1 = cloneFromProps->y1;
+ x2 = cloneFromProps->x2;
+ y2 = cloneFromProps->y2;
+ gradient = cloneFromProps->gradient;
+ gradientUnits = cloneFromProps->gradientUnits;
+ gradientTransform = cloneFromProps->gradientTransform;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(x1)
+ std::optional x1;
+ REACT_FIELD(y1)
+ std::optional y1;
+ REACT_FIELD(x2)
+ std::optional x2;
+ REACT_FIELD(y2)
+ std::optional y2;
+ REACT_FIELD(gradient)
+ std::optional> gradient{};
+ REACT_FIELD(gradientUnits)
+ std::optional gradientUnits;
+ REACT_FIELD(gradientTransform)
+ std::optional> gradientTransform;
+};
+
+struct LinearGradientView : winrt::implements {
+ public:
+ LinearGradientView() = default;
+
+ void UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept override {
+ auto props = newProps.as();
+ m_stops.clear();
+
+ if (props->gradient) {
+ auto it = props->gradient->begin();
+ while (it != props->gradient->end()) {
+ SvgLinearGradientStop stop;
+
+ stop.offset = *it;
+ ++it;
+ auto clr = static_cast(*it);
+ stop.color = D2D1_COLOR_F{
+ ((clr & 0x00FF0000) >> 16) / 255.0f,
+ ((clr & 0x0000FF00) >> 8) / 255.0f,
+ (clr & 0x000000FF) / 255.0f,
+ ((clr & 0xFF000000) >> 24) / 255.0f};
+ stop.opacity = ((clr & 0xFF000000) >> 24) / 255.0f;
+ ++it;
+ m_stops.push_back(stop);
+ }
+ }
+ RenderableView::UpdateProps(view, newProps, oldProps);
+ }
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"linearGradient";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+ if (props->x1)
+ element.SetAttributeValue(
+ SvgStrings::x1AttributeName, D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, props->x1.value().c_str());
+ if (props->y1)
+ element.SetAttributeValue(
+ SvgStrings::y1AttributeName, D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, props->y1.value().c_str());
+ if (props->x2)
+ element.SetAttributeValue(
+ SvgStrings::x2AttributeName, D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, props->x2.value().c_str());
+ if (props->y2)
+ element.SetAttributeValue(
+ SvgStrings::y2AttributeName, D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, props->y2.value().c_str());
+
+ if (props->gradientUnits.value_or(0) == 0) {
+ element.SetAttributeValue(
+ SvgStrings::gradientUnitsAttributeName, D2D1_SVG_UNIT_TYPE::D2D1_SVG_UNIT_TYPE_OBJECT_BOUNDING_BOX);
+ } else {
+ element.SetAttributeValue(
+ SvgStrings::gradientUnitsAttributeName, D2D1_SVG_UNIT_TYPE::D2D1_SVG_UNIT_TYPE_USER_SPACE_ON_USE);
+ }
+
+ if (props->gradientTransform) {
+ auto &matrix = props->gradientTransform.value();
+ element.SetAttributeValue(
+ SvgStrings::gradientTransformAttributeName,
+ D2D1_MATRIX_3X2_F{matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]});
+ }
+
+ for (const auto &stop : m_stops) {
+ winrt::com_ptr svgStop;
+ element.CreateChild(SvgStrings::stopAttributeName, svgStop.put());
+ svgStop->SetAttributeValue(SvgStrings::offsetAttributeName, stop.offset);
+ svgStop->SetAttributeValue(SvgStrings::stopColorAttributeName, stop.color);
+ svgStop->SetAttributeValue(SvgStrings::stopOpacityAttributeName, stop.opacity);
+ }
+ }
+
+ private:
+ std::vector m_stops;
+};
+
+void RegisterLinearGradientComponent(
+ const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGLinearGradient", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/LinearGradientView.h b/windows/RNSVG/Fabric/LinearGradientView.h
new file mode 100644
index 00000000..d901dd51
--- /dev/null
+++ b/windows/RNSVG/Fabric/LinearGradientView.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "GroupView.h"
+
+namespace winrt::RNSVG::implementation {
+
+
+void RegisterLinearGradientComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/PathView.cpp b/windows/RNSVG/Fabric/PathView.cpp
new file mode 100644
index 00000000..fd2e8bc3
--- /dev/null
+++ b/windows/RNSVG/Fabric/PathView.cpp
@@ -0,0 +1,49 @@
+#include "pch.h"
+#include "PathView.h"
+
+#include "d2d1svg.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(PathProps)
+struct PathProps : winrt::implements {
+ PathProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(PathProps)
+ d = cloneFromProps->d;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(d)
+ std::wstring d;
+};
+
+struct PathView : winrt::implements {
+ public:
+ PathView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"path";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+ element.SetAttributeValue(
+ SvgStrings::dAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->d.c_str());
+ }
+};
+
+void RegisterPathComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGPath", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/PathView.h b/windows/RNSVG/Fabric/PathView.h
new file mode 100644
index 00000000..2279b028
--- /dev/null
+++ b/windows/RNSVG/Fabric/PathView.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterPathComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/RadialGradientView.cpp b/windows/RNSVG/Fabric/RadialGradientView.cpp
new file mode 100644
index 00000000..10ae9b1b
--- /dev/null
+++ b/windows/RNSVG/Fabric/RadialGradientView.cpp
@@ -0,0 +1,161 @@
+#include "pch.h"
+#include "RadialGradientView.h"
+
+namespace winrt::RNSVG::implementation {
+
+struct SvgRadialGradientStop {
+ float offset{0};
+ D2D1_COLOR_F color;
+ float opacity{1.0f};
+};
+
+REACT_STRUCT(RadialGradientProps)
+struct RadialGradientProps : winrt::implements {
+ RadialGradientProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(RadialGradientProps)
+ fx = cloneFromProps->fx;
+ fy = cloneFromProps->fy;
+ cx = cloneFromProps->cx;
+ cy = cloneFromProps->cy;
+ rx = cloneFromProps->rx;
+ ry = cloneFromProps->ry;
+ gradient = cloneFromProps->gradient;
+ gradientUnits = cloneFromProps->gradientUnits;
+ gradientTransform = cloneFromProps->gradientTransform;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(fx)
+ std::optional fx;
+ REACT_FIELD(fy)
+ std::optional fy;
+ REACT_FIELD(cx)
+ std::optional cx;
+ REACT_FIELD(cy)
+ std::optional cy;
+ REACT_FIELD(rx)
+ std::optional rx;
+ REACT_FIELD(ry)
+ std::optional ry;
+ REACT_FIELD(gradient)
+ std::optional> gradient{};
+ REACT_FIELD(gradientUnits)
+ std::optional gradientUnits;
+ REACT_FIELD(gradientTransform)
+ std::optional> gradientTransform;
+};
+
+struct RadialGradientView : winrt::implements {
+ public:
+ RadialGradientView() = default;
+
+ void UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept override {
+ auto props = newProps.as();
+ m_stops.clear();
+
+ if (props->gradient) {
+ auto it = props->gradient->begin();
+ while (it != props->gradient->end()) {
+ SvgRadialGradientStop stop;
+
+ stop.offset = *it;
+ ++it;
+ auto clr = static_cast(*it);
+ stop.color = D2D1_COLOR_F{
+ ((clr & 0x00FF0000) >> 16) / 255.0f,
+ ((clr & 0x0000FF00) >> 8) / 255.0f,
+ (clr & 0x000000FF) / 255.0f,
+ ((clr & 0xFF000000) >> 24) / 255.0f};
+ stop.opacity = ((clr & 0xFF000000) >> 24) / 255.0f;
+ ++it;
+ m_stops.push_back(stop);
+ }
+ }
+
+ RenderableView::UpdateProps(view, newProps, oldProps);
+ }
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"radialGradient";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+ if (props->cx)
+ element.SetAttributeValue(
+ SvgStrings::cxAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->cx->c_str());
+ if (props->cy)
+ element.SetAttributeValue(
+ SvgStrings::cyAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->cy->c_str());
+
+ // RNSVG can decompose r to rx and ry, but D2D svgs don't support rx or ry, so if that is specified then take rx as
+ // r, and make sure the specified rx and ry are the same.
+ assert(props->rx == props->ry);
+
+ if (props->rx)
+ element.SetAttributeValue(
+ SvgStrings::rAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->rx->c_str());
+
+ if (props->fx)
+ element.SetAttributeValue(
+ SvgStrings::fxAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->fx->c_str());
+
+ if (props->fy)
+ element.SetAttributeValue(
+ SvgStrings::fyAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->fy->c_str());
+
+ if (props->gradientUnits.value_or(0) == 0) {
+ element.SetAttributeValue(
+ SvgStrings::gradientUnitsAttributeName, D2D1_SVG_UNIT_TYPE::D2D1_SVG_UNIT_TYPE_OBJECT_BOUNDING_BOX);
+ } else {
+ element.SetAttributeValue(
+ SvgStrings::gradientUnitsAttributeName, D2D1_SVG_UNIT_TYPE::D2D1_SVG_UNIT_TYPE_USER_SPACE_ON_USE);
+ }
+
+ if (props->gradientTransform) {
+ auto &matrix = props->gradientTransform.value();
+ element.SetAttributeValue(
+ SvgStrings::gradientTransformAttributeName,
+ D2D1_MATRIX_3X2_F{matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]});
+ }
+
+ for (const auto &stop : m_stops) {
+ winrt::com_ptr svgStop;
+ element.CreateChild(SvgStrings::stopAttributeName, svgStop.put());
+ svgStop->SetAttributeValue(SvgStrings::offsetAttributeName, stop.offset);
+ svgStop->SetAttributeValue(SvgStrings::stopColorAttributeName, stop.color);
+ svgStop->SetAttributeValue(SvgStrings::stopOpacityAttributeName, stop.opacity);
+ }
+ }
+
+ private:
+ std::vector m_stops;
+};
+
+void RegisterRadialGradientComponent(
+ const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGRadialGradient", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/RadialGradientView.h b/windows/RNSVG/Fabric/RadialGradientView.h
new file mode 100644
index 00000000..457300b1
--- /dev/null
+++ b/windows/RNSVG/Fabric/RadialGradientView.h
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "GroupView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterRadialGradientComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/RectView.cpp b/windows/RNSVG/Fabric/RectView.cpp
new file mode 100644
index 00000000..8972129e
--- /dev/null
+++ b/windows/RNSVG/Fabric/RectView.cpp
@@ -0,0 +1,79 @@
+#include "pch.h"
+#include "RectView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(RectProps)
+struct RectProps : winrt::implements {
+ RectProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(RectProps)
+ x = cloneFromProps->x;
+ y = cloneFromProps->y;
+ height = cloneFromProps->height;
+ width = cloneFromProps->width;
+ rx = cloneFromProps->rx;
+ ry = cloneFromProps->ry;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(x)
+ std::wstring x;
+ REACT_FIELD(y)
+ std::wstring y;
+ REACT_FIELD(height)
+ std::wstring height;
+ REACT_FIELD(width)
+ std::wstring width;
+ REACT_FIELD(rx)
+ D2D1_SVG_LENGTH rx{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(ry)
+ D2D1_SVG_LENGTH ry{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+};
+
+struct RectView : winrt::implements {
+ public:
+ RectView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"rect";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+ element.SetAttributeValue(
+ SvgStrings::xAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->x.c_str());
+ element.SetAttributeValue(
+ SvgStrings::yAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->y.c_str());
+ element.SetAttributeValue(
+ SvgStrings::widthAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->width.c_str());
+ element.SetAttributeValue(
+ SvgStrings::heightAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ props->height.c_str());
+
+ if (props->rx.value)
+ element.SetAttributeValue(SvgStrings::rxAttributeName, props->rx);
+ if (props->ry.value)
+ element.SetAttributeValue(SvgStrings::ryAttributeName, props->ry);
+ }
+};
+
+void RegisterRectComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGRect", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/RectView.h b/windows/RNSVG/Fabric/RectView.h
new file mode 100644
index 00000000..803be4dc
--- /dev/null
+++ b/windows/RNSVG/Fabric/RectView.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterRectComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/RenderableView.cpp b/windows/RNSVG/Fabric/RenderableView.cpp
new file mode 100644
index 00000000..fb6a70ce
--- /dev/null
+++ b/windows/RNSVG/Fabric/RenderableView.cpp
@@ -0,0 +1,174 @@
+#include "pch.h"
+#include "RenderableView.h"
+
+#include "SvgView.h"
+#include "D2DHelpers.h"
+
+namespace winrt::Microsoft::ReactNative {
+
+void WriteValue(IJSValueWriter const &writer, const D2D1_SVG_LENGTH &value) noexcept {
+ if (value.units == D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_PERCENTAGE) {
+ writer.WriteString(winrt::to_hstring(std::to_string(value.value) + "%"));
+ } else {
+ writer.WriteDouble(value.value);
+ }
+}
+
+void ReadValue(IJSValueReader const &reader, /*out*/ D2D1_SVG_LENGTH &value) noexcept {
+ switch (reader.ValueType()) {
+ case JSValueType::String: {
+ auto str = to_string(reader.GetString());
+
+ auto strLength{str.size()};
+ if (strLength == 0 || str == "normal") {
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ value.value = 0.0;
+ return;
+ } else if (str.back() == '%') {
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_PERCENTAGE;
+ value.value = std::stof(str.substr(0, strLength - 1), nullptr);
+ return;
+ } else if (strLength > 2) {
+ auto end{strLength - 2};
+ auto lastTwo{str.substr(end)};
+
+ if (lastTwo == "px") {
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ } else if (lastTwo == "em") {
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ // value.unit = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_EM;
+ } else if (lastTwo == "ex") {
+ // value.unit = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_EX;
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ } else if (lastTwo == "cm") {
+ // value.unit = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_CM;
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ } else if (lastTwo == "mm") {
+ // value.unit = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_MM;
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ } else if (lastTwo == "in") {
+ // value.unit = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_INCH;
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ } else if (lastTwo == "pt") {
+ // value.unit = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_POINT;
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ } else if (lastTwo == "pc") {
+ // value.unit = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_PICA;
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ } else {
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ end = strLength;
+ }
+
+ value.value = std::stof(str.substr(0, end), nullptr);
+ return;
+ }
+
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ value.value = std::stof(str, nullptr);
+ }
+ return;
+ case JSValueType::Int64:
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ value.value = static_cast(reader.GetInt64());
+ return;
+ case JSValueType::Double:
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ value.value = static_cast(reader.GetDouble());
+ return;
+ default:
+ value.units = D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER;
+ value.value = 0.0f;
+ return;
+ }
+}
+
+}
+
+namespace winrt::RNSVG::implementation {
+
+HRESULT
+SetColorMode(
+ const SvgView &svgView,
+ ID2D1SvgElement &element,
+ const std::wstring &attribute,
+ const ColorStruct &colorProp) noexcept {
+ HRESULT hr = S_OK;
+ if (colorProp.type == 0 /*Native Color*/) {
+ hr = element.SetAttributeValue(
+ attribute.c_str(), D2DHelpers::AsD2DColor(colorProp.payload.AsWindowsColor(svgView.Theme())));
+ } else if (colorProp.type == 1 /*Brush ref*/) {
+ std::wstring namedRefStr = L"url(#" + colorProp.brushRef + L")";
+ hr = element.SetAttributeValue(
+ attribute.c_str(), D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, namedRefStr.c_str());
+ } else if (colorProp.type == 2 /*Current Color*/) {
+ hr = element.SetAttributeValue(
+ attribute.c_str(), D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, L"currentColor");
+ } else if (colorProp.type == 3 /*context-fill*/) {
+ hr = element.SetAttributeValue(
+ attribute.c_str(), D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, L"context-fill");
+ } else if (colorProp.type == 4 /*context-stroke*/) {
+ hr = element.SetAttributeValue(
+ attribute.c_str(), D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, L"context-fill");
+ }
+
+ assert(hr == S_OK);
+ return hr;
+}
+
+
+void RenderableView::Invalidate(const winrt::Microsoft::ReactNative::ComponentView &view) {
+ winrt::com_ptr svgView{nullptr};
+ auto current = view.Parent();
+ while (current && !svgView) {
+ svgView = current.UserData().try_as();
+ current = current.Parent();
+ }
+
+ if (svgView) {
+ svgView->Invalidate();
+ }
+}
+
+void RenderableView::MountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView &parent,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &) noexcept {
+ Invalidate(parent);
+}
+
+void RenderableView::UnmountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView &parent,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &) noexcept {
+ Invalidate(parent);
+}
+
+void RenderableView::UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
+ const winrt::Microsoft::ReactNative::IComponentProps &props,
+ const winrt::Microsoft::ReactNative::IComponentProps &) noexcept {
+ m_props = props;
+}
+
+void RenderableView::FinalizeUpates(
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ winrt::Microsoft::ReactNative::ComponentViewUpdateMask) noexcept {
+ Invalidate(view);
+}
+
+ID2D1SvgElement &RenderableView::Render(const SvgView &svgView, ID2D1SvgDocument& document, ID2D1SvgElement &svgElement) noexcept {
+ svgElement.CreateChild(GetSvgElementName(), m_spD2DSvgElement.put());
+ OnRender(svgView, document, *m_spD2DSvgElement);
+ return *m_spD2DSvgElement;
+}
+
+bool RenderableView::IsSupported() const noexcept {
+ return true;
+}
+void RenderableView::OnRender(
+ const SvgView & /*svgView*/,
+ ID2D1SvgDocument & /*document*/,
+ ID2D1SvgElement & /*element*/) noexcept {
+ assert(false);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/RenderableView.h b/windows/RNSVG/Fabric/RenderableView.h
new file mode 100644
index 00000000..f48326ce
--- /dev/null
+++ b/windows/RNSVG/Fabric/RenderableView.h
@@ -0,0 +1,302 @@
+#pragma once
+
+#include "SvgView.h"
+
+#include
+#include
+#include "D2DHelpers.h"
+#include "SvgStrings.h"
+
+namespace winrt::Microsoft::ReactNative {
+void WriteValue(IJSValueWriter const &writer, const D2D1_SVG_LENGTH &value) noexcept;
+void ReadValue(IJSValueReader const &reader, /*out*/ D2D1_SVG_LENGTH &value) noexcept;
+} // namespace winrt::Microsoft::ReactNative
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(ColorStruct)
+struct ColorStruct {
+ REACT_FIELD(type)
+ int32_t type{-1};
+
+ REACT_FIELD(payload)
+ winrt::Microsoft::ReactNative::Color payload{nullptr};
+
+ REACT_FIELD(brushRef)
+ std::wstring brushRef;
+
+ bool operator==(const ColorStruct &rhs) const {
+ if (type != rhs.type || brushRef != rhs.brushRef)
+ return false;
+
+ // When we move to a RNW version that provides Color::Equals switch to that for the payload comparison
+ auto writer = winrt::Microsoft::ReactNative::MakeJSValueTreeWriter();
+ winrt::Microsoft::ReactNative::WriteValue(writer, payload);
+ auto rhsWriter = winrt::Microsoft::ReactNative::MakeJSValueTreeWriter();
+ winrt::Microsoft::ReactNative::WriteValue(rhsWriter, rhs.payload);
+ return winrt::Microsoft::ReactNative::TakeJSValue(writer).Equals(
+ winrt::Microsoft::ReactNative::TakeJSValue(rhsWriter));
+ }
+
+ bool operator!=(const ColorStruct &rhs) const {
+ return !(*this == rhs);
+ }
+};
+
+HRESULT SetColorMode(
+ const SvgView &svgView,
+ ID2D1SvgElement &element,
+ const std::wstring &attribute,
+ const ColorStruct &colorProp) noexcept;
+
+// Currently no good way to do inheritance in REACT_STRUCTS
+#define REACT_SVG_RENDERABLE_COMMON_PROPS \
+ REACT_FIELD(name) \
+ std::optional name; \
+ REACT_FIELD(opacity) \
+ std::optional opacity; \
+ REACT_FIELD(matrix) \
+ std::optional> matrix; \
+ REACT_FIELD(clipPath) \
+ std::optional clipPath; \
+ REACT_FIELD(clipRule) \
+ std::optional clipRule; \
+ REACT_FIELD(fill) \
+ std::optional fill; \
+ REACT_FIELD(fillOpacity) \
+ std::optional fillOpacity; \
+ REACT_FIELD(fillRule) \
+ std::optional fillRule; \
+ REACT_FIELD(stroke) \
+ std::optional stroke; \
+ REACT_FIELD(strokeOpacity) \
+ std::optional strokeOpacity; \
+ REACT_FIELD(strokeWidth) \
+ std::optional strokeWidth; \
+ REACT_FIELD(strokeLinecap) \
+ std::optional strokeLinecap; \
+ REACT_FIELD(strokeLinejoin) \
+ std::optional strokeLinejoin; \
+ REACT_FIELD(strokeDasharray) \
+ std::optional> strokeDasharray; \
+ REACT_FIELD(strokeDashoffset) \
+ std::optional strokeDashoffset; \
+ REACT_FIELD(strokeMiterlimit) \
+ std::optional strokeMiterlimit; \
+ REACT_FIELD(propList) \
+ std::optional> propList; \
+ std::optional color; \
+ winrt::Microsoft::ReactNative::ViewProps m_props{nullptr};
+
+#define REACT_SVG_RENDERABLE_COMMON_PROPS_INIT \
+ : m_props(props)
+
+#define REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(TProps) \
+ if (cloneFrom) { \
+ auto cloneFromProps = cloneFrom.as(); \
+ name = cloneFromProps->name; \
+ opacity = cloneFromProps->opacity; \
+ matrix = cloneFromProps->matrix; \
+ clipPath = cloneFromProps->clipPath; \
+ clipRule = cloneFromProps->clipRule; \
+ fill = cloneFromProps->fill; \
+ fillOpacity = cloneFromProps->fillOpacity; \
+ fillRule = cloneFromProps->fillRule; \
+ stroke = cloneFromProps->stroke; \
+ strokeOpacity = cloneFromProps->strokeOpacity; \
+ strokeWidth = cloneFromProps->strokeWidth; \
+ strokeLinecap = cloneFromProps->strokeLinecap; \
+ strokeLinejoin = cloneFromProps->strokeLinejoin; \
+ strokeDasharray = cloneFromProps->strokeDasharray; \
+ strokeMiterlimit = cloneFromProps->strokeMiterlimit; \
+ propList = cloneFromProps->propList; \
+ color = cloneFromProps->color;
+
+#define REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE \
+ }
+
+struct __declspec(uuid("a03986c0-b06e-4fb8-a86e-16fcc47b2f31")) RenderableView : public ::IUnknown {
+ public:
+ RenderableView() = default;
+
+ virtual const wchar_t *GetSvgElementName() noexcept = 0;
+
+ // ComponentView
+ void MountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept;
+ void UnmountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept;
+
+ virtual void UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
+ const winrt::Microsoft::ReactNative::IComponentProps &props,
+ const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept;
+
+ virtual void FinalizeUpates(
+ const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
+ winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept;
+
+ ID2D1SvgElement &Render(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &svgElement) noexcept;
+
+ virtual void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement & /*svgElement*/) noexcept;
+ virtual bool IsSupported() const noexcept;
+
+ void Invalidate(const winrt::Microsoft::ReactNative::ComponentView &view);
+
+ protected:
+ winrt::Microsoft::ReactNative::IComponentProps m_props;
+
+ private:
+ winrt::com_ptr m_spD2DSvgElement;
+};
+
+template
+void SetCommonSvgProps(
+ const SvgView &svgView,
+ ID2D1SvgDocument &document,
+ ID2D1SvgElement &element,
+ const TProps &commonProps) noexcept {
+ HRESULT hr = S_OK;
+ if (commonProps.color != std::nullopt) {
+ auto color = commonProps.color.value().AsWindowsColor(svgView.Theme());
+ hr |= element.SetAttributeValue(SvgStrings::colorAttributeName, D2DHelpers::AsD2DColor(color));
+ }
+
+ if (commonProps.propList) {
+ for (auto &prop : commonProps.propList.value()) {
+ if (prop == "fill") {
+ if (commonProps.fill != std::nullopt)
+ hr |= SetColorMode(svgView, element, SvgStrings::fillAttributeName, commonProps.fill.value());
+ else
+ hr |= element.SetAttributeValue(
+ SvgStrings::fillAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ SvgStrings::noneAttributeValue);
+ } else if (prop == "fillOpacity") {
+ if (commonProps.fillOpacity != std::nullopt)
+ hr |= element.SetAttributeValue(SvgStrings::fillOpacityAttributeName, commonProps.fillOpacity.value());
+ } else if (prop == "fillRule") {
+ if (commonProps.fillRule != std::nullopt) {
+ hr |= element.SetAttributeValue(SvgStrings::fillRuleAttributeName, commonProps.fillRule.value());
+ }
+ } else if (prop == "stroke") {
+ if (commonProps.stroke != std::nullopt)
+ hr |= SetColorMode(svgView, element, SvgStrings::strokeAttributeName, commonProps.stroke.value());
+ else
+ hr |= element.SetAttributeValue(
+ SvgStrings::strokeAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ SvgStrings::noneAttributeValue);
+ } else if (prop == "strokeWidth") {
+ if (commonProps.strokeWidth != std::nullopt)
+ hr |= element.SetAttributeValue(SvgStrings::strokeWidthAttributeName, commonProps.strokeWidth.value());
+ } else if (prop == "strokeOpacity") {
+ if (commonProps.strokeOpacity != std::nullopt)
+ hr |= element.SetAttributeValue(SvgStrings::strokeOpacityAttributeName, commonProps.strokeOpacity.value());
+ } else if (prop == "strokeDasharray") {
+ if (commonProps.strokeDasharray != std::nullopt && !commonProps.strokeDasharray->empty()) {
+ winrt::com_ptr dashArray;
+ document.CreateStrokeDashArray(
+ &commonProps.strokeDasharray.value()[0],
+ static_cast(commonProps.strokeDasharray.value().size()),
+ dashArray.put());
+ hr |= element.SetAttributeValue(SvgStrings::strokeDashArrayAttributeName, dashArray.get());
+ }
+ } else if (prop == "strokeDashoffset") {
+ if (commonProps.strokeDashoffset != std::nullopt) {
+ hr |= element.SetAttributeValue(
+ SvgStrings::strokeDashOffsetAttributeName, commonProps.strokeDashoffset.value());
+ }
+ } else if (prop == "strokeLinecap") {
+ if (commonProps.strokeLinecap != std::nullopt) {
+ static D2D1_SVG_LINE_CAP supportedCaps[] = {
+ D2D1_SVG_LINE_CAP_BUTT, D2D1_SVG_LINE_CAP_ROUND, D2D1_SVG_LINE_CAP_SQUARE};
+ hr |= element.SetAttributeValue(
+ SvgStrings::strokeLinecapAttributeName, supportedCaps[commonProps.strokeLinecap.value()]);
+ }
+ } else if (prop == "strokeLinejoin") {
+ if (commonProps.strokeLinejoin != std::nullopt) {
+ static D2D1_SVG_LINE_JOIN supportedJoins[] = {
+ D2D1_SVG_LINE_JOIN_MITER, D2D1_SVG_LINE_JOIN_ROUND, D2D1_SVG_LINE_JOIN_BEVEL};
+ hr |= element.SetAttributeValue(
+ SvgStrings::strokeLinejoinAttributeName, supportedJoins[commonProps.strokeLinejoin.value()]);
+ }
+ } else if (prop == "strokeMiterlimit") {
+ if (commonProps.strokeMiterlimit != std::nullopt) {
+ hr |= element.SetAttributeValue(
+ SvgStrings::strokeMiterLimitAttributeName, commonProps.strokeMiterlimit.value());
+ }
+ }
+ }
+ }
+
+ if (commonProps.clipPath != std::nullopt) {
+ std::wstring namedRefStr = L"url(#" + commonProps.clipPath.value() + L")";
+ hr |= element.SetAttributeValue(
+ SvgStrings::clipPathAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ namedRefStr.c_str());
+ }
+
+ if (commonProps.clipRule != std::nullopt) {
+ hr |= element.SetAttributeValue(SvgStrings::clipRuleAttributeName, commonProps.clipRule.value());
+ }
+
+ if (commonProps.name != std::nullopt)
+ hr |= element.SetAttributeValue(
+ SvgStrings::idAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ commonProps.name.value().c_str());
+
+ if (commonProps.opacity != std::nullopt)
+ hr |= element.SetAttributeValue(SvgStrings::opacityAttributeName, commonProps.opacity.value());
+
+ if (commonProps.matrix != std::nullopt) {
+ auto &matrix = commonProps.matrix.value();
+ hr |= element.SetAttributeValue(
+ SvgStrings::transformAttributeName,
+ D2D1_MATRIX_3X2_F{matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]});
+ }
+
+ assert(hr == S_OK);
+}
+} // namespace winrt::RNSVG::implementation
+
+template
+void RegisterRenderableComponent(
+ const winrt::hstring &name,
+ const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ builder.AddViewComponent(name, [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
+ builder.SetComponentViewInitializer([](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
+ auto userData = winrt::make_self();
+ view.UserData(*userData);
+ });
+ builder.SetCreateProps(
+ [](winrt::Microsoft::ReactNative::ViewProps props, const winrt::Microsoft::ReactNative::IComponentProps &cloneFrom) noexcept { return winrt::make(props, cloneFrom); });
+ builder.SetUpdatePropsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ userData->UpdateProps(view, newProps, oldProps);
+ });
+ builder.SetFinalizeUpdateHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ userData->FinalizeUpates(view, mask);
+ });
+ builder.SetMountChildComponentViewHandler(
+ [](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ return userData->MountChildComponentView(view, args);
+ });
+ builder.SetUnmountChildComponentViewHandler(
+ [](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ return userData->UnmountChildComponentView(view, args);
+ });
+ });
+}
diff --git a/windows/RNSVG/Fabric/SvgStrings.h b/windows/RNSVG/Fabric/SvgStrings.h
new file mode 100644
index 00000000..4f426d66
--- /dev/null
+++ b/windows/RNSVG/Fabric/SvgStrings.h
@@ -0,0 +1,58 @@
+#pragma once
+
+namespace winrt::RNSVG::SvgStrings {
+ constexpr wchar_t fillAttributeName[] = L"fill";
+ constexpr wchar_t clipPathAttributeName[] = L"clip-path";
+ constexpr wchar_t clipRuleAttributeName[] = L"clip-rule";
+ constexpr wchar_t fillRuleAttributeName[] = L"fill-rule";
+
+ constexpr wchar_t colorAttributeName[] = L"color";
+ constexpr wchar_t opacityAttributeName[] = L"opacity";
+ constexpr wchar_t fillOpacityAttributeName[] = L"fill-opacity";
+ constexpr wchar_t stopOpacityAttributeName[] = L"stop-opacity";
+ constexpr wchar_t strokeAttributeName[] = L"stroke";
+ constexpr wchar_t strokeWidthAttributeName[] = L"stroke-width";
+ constexpr wchar_t strokeOpacityAttributeName[] = L"stroke-opacity";
+ constexpr wchar_t strokeLinecapAttributeName[] = L"stroke-linecap";
+ constexpr wchar_t strokeLinejoinAttributeName[] = L"stroke-linejoin";
+ constexpr wchar_t strokeDashArrayAttributeName[] = L"stroke-dasharray";
+ constexpr wchar_t strokeDashOffsetAttributeName[] = L"stroke-dashoffset";
+ constexpr wchar_t strokeMiterLimitAttributeName[] = L"stroke-miterlimit";
+ constexpr wchar_t idAttributeName[] = L"id";
+ constexpr wchar_t transformAttributeName[] = L"transform";
+
+ constexpr wchar_t xAttributeName[] = L"x";
+ constexpr wchar_t yAttributeName[] = L"y";
+ constexpr wchar_t widthAttributeName[] = L"width";
+ constexpr wchar_t heightAttributeName[] = L"height";
+
+ constexpr wchar_t cxAttributeName[] = L"cx";
+ constexpr wchar_t cyAttributeName[] = L"cy";
+ constexpr wchar_t rxAttributeName[] = L"rx";
+ constexpr wchar_t ryAttributeName[] = L"ry";
+
+ constexpr wchar_t rAttributeName[] = L"r";
+ constexpr wchar_t fxAttributeName[] = L"fx";
+ constexpr wchar_t fyAttributeName[] = L"fy";
+
+ constexpr wchar_t x1AttributeName[] = L"x1";
+ constexpr wchar_t y1AttributeName[] = L"y1";
+
+ constexpr wchar_t x2AttributeName[] = L"x2";
+ constexpr wchar_t y2AttributeName[] = L"y2";
+
+ constexpr wchar_t gradientUnitsAttributeName[] = L"gradientUnits";
+ constexpr wchar_t gradientTransformAttributeName[] = L"gradientTransform";
+ constexpr wchar_t offsetAttributeName[] = L"offset";
+ constexpr wchar_t stopColorAttributeName[] = L"stop-color";
+ constexpr wchar_t stopAttributeName[] = L"stop";
+
+ constexpr wchar_t xlinkhrefAttributeName[] = L"xlink:href";
+
+ constexpr wchar_t dAttributeName[] = L"d";
+
+ constexpr wchar_t noneAttributeValue[] = L"none";
+
+ constexpr wchar_t viewBoxAttributeName[] = L"viewBox";
+ constexpr wchar_t preserveAspectRatioAttributeName[] = L"preserveAspectRatio";
+}
\ No newline at end of file
diff --git a/windows/RNSVG/Fabric/SvgView.cpp b/windows/RNSVG/Fabric/SvgView.cpp
new file mode 100644
index 00000000..2877093f
--- /dev/null
+++ b/windows/RNSVG/Fabric/SvgView.cpp
@@ -0,0 +1,342 @@
+#include "pch.h"
+
+#include "SvgView.h"
+
+#include "D2DHelpers.h"
+#include "GroupView.h"
+
+#include
+#include
+#include
+#include
+
+#include
+
+namespace winrt::RNSVG::implementation {
+
+SvgViewProps::SvgViewProps(const winrt::Microsoft::ReactNative::ViewProps& props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom)
+ : m_props(props)
+{
+ if (cloneFrom) {
+ auto cloneFromProps = cloneFrom.as();
+ minX = cloneFromProps->minX;
+ minY = cloneFromProps->minY;
+ vbWidth = cloneFromProps->vbWidth;
+ vbHeight = cloneFromProps->vbHeight;
+ align = cloneFromProps->align;
+ meetOrSlice = cloneFromProps->meetOrSlice;
+ color = cloneFromProps->color;
+ }
+}
+
+void SvgViewProps::SetProp(
+ uint32_t hash,
+ winrt::hstring propName,
+ winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+}
+
+SvgView::SvgView(const winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext &compContext)
+ : m_compContext(compContext) {}
+
+winrt::Microsoft::ReactNative::Composition::Experimental::IVisual SvgView::CreateInternalVisual() {
+ m_visual = m_compContext.CreateSpriteVisual();
+ m_visual.Comment(L"SVGRoot");
+ return m_visual;
+}
+
+void SvgView::MountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView &,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &) noexcept {
+ Invalidate();
+}
+
+void SvgView::UnmountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView &,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &) noexcept {
+ Invalidate();
+}
+
+void SvgView::OnThemeChanged() noexcept {
+ Invalidate();
+}
+
+void SvgView::OnMounted() noexcept {
+ m_isMounted = true;
+ Invalidate();
+}
+
+void SvgView::OnUnmounted() noexcept {
+ m_isMounted = false;
+}
+
+D2D1_SVG_ASPECT_ALIGN AlignToAspectAlign(const std::string &align) noexcept {
+ if (align.compare("xMinYMin") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MIN;
+ else if (align.compare("xMidYMin") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MIN;
+ else if (align.compare("xMaxYMin") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MIN;
+ else if (align.compare("xMinYMid") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MID;
+ else if (align.compare("xMidYMid") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MID;
+ else if (align.compare("xMaxYMid") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MID;
+ else if (align.compare("xMinYMax") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MAX;
+ else if (align.compare("xMidYMax") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MAX;
+ else if (align.compare("xMaxYMax") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MAX;
+ else if (align.compare("none") == 0)
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_NONE;
+
+ assert(false);
+ return D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_NONE;
+}
+
+void SvgView::UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps & /*oldProps*/) noexcept {
+ m_props = newProps.as();
+
+ if (m_props->align) {
+ m_aspectAlign = AlignToAspectAlign(m_props->align.value());
+ } else {
+ m_aspectAlign = D2D1_SVG_ASPECT_ALIGN::D2D1_SVG_ASPECT_ALIGN_NONE;
+ }
+}
+
+void SvgView::FinalizeUpates(
+ const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
+ winrt::Microsoft::ReactNative::ComponentViewUpdateMask) noexcept {
+ Invalidate(); // Move to finalize
+}
+
+void SvgView::Initialize(const winrt::Microsoft::ReactNative::ComponentView &sender) noexcept {
+ auto view = sender.as();
+ m_wkView = view;
+
+ sender.as()
+ .CreateInternalVisualHandler([wkThis = get_weak()](const winrt::Microsoft::ReactNative::ComponentView &) {
+ return wkThis.get()->CreateInternalVisual();
+ });
+
+ sender.LayoutMetricsChanged(
+ [wkThis = get_weak()](
+ const winrt::Windows::Foundation::IInspectable &, const winrt::Microsoft::ReactNative::LayoutMetricsChangedArgs &args) {
+ if (auto strongThis = wkThis.get()) {
+ strongThis->UpdateLayoutMetrics(args.NewLayoutMetrics(), args.OldLayoutMetrics());
+ }
+ });
+
+ view.ThemeChanged(
+ [wkThis = get_weak()](const winrt::Windows::Foundation::IInspectable & /*sender*/, const winrt::Windows::Foundation::IInspectable & /*args*/) {
+ if (auto strongThis = wkThis.get()) {
+ strongThis->OnThemeChanged();
+ }
+ });
+
+ view.Mounted([wkThis = get_weak()](
+ const winrt::Windows::Foundation::IInspectable & /*sender*/, const winrt::Microsoft::ReactNative::ComponentView &) {
+ if (auto strongThis = wkThis.get()) {
+ strongThis->OnMounted();
+ }
+ });
+
+ view.Unmounted([wkThis = get_weak()](
+ const winrt::Windows::Foundation::IInspectable & /*sender*/, const winrt::Microsoft::ReactNative::ComponentView &) {
+ if (auto strongThis = wkThis.get()) {
+ strongThis->OnUnmounted();
+ }
+ });
+}
+
+void SvgView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ builder.AddViewComponent(
+ L"RNSVGSvgView", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
+ builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props,
+ const winrt::Microsoft::ReactNative::IComponentProps &cloneFrom) noexcept {
+ return winrt::make(props, cloneFrom);
+ });
+ auto compBuilder =
+ builder.as();
+
+ compBuilder.SetViewComponentViewInitializer(
+ [](const winrt::Microsoft::ReactNative::ComponentView &view) noexcept {
+ auto userData = winrt::make_self(
+ view.as()
+ .CompositionContext());
+ userData->Initialize(view);
+ view.UserData(*userData);
+ });
+
+ compBuilder.SetViewFeatures(
+ winrt::Microsoft::ReactNative::Composition::ComponentViewFeatures::Default &
+ ~winrt::Microsoft::ReactNative::Composition::ComponentViewFeatures::Background);
+
+ builder.SetUpdatePropsHandler([](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps &oldProps) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ userData->UpdateProps(view, newProps, oldProps);
+ });
+
+ builder.SetFinalizeUpdateHandler(
+ [](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ userData->FinalizeUpates(view, mask);
+ });
+
+ builder.SetMountChildComponentViewHandler(
+ [](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs &args) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ return userData->MountChildComponentView(view, args);
+ });
+
+ builder.SetUnmountChildComponentViewHandler(
+ [](const winrt::Microsoft::ReactNative::ComponentView &view,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs &args) noexcept {
+ auto userData = winrt::get_self(view.UserData());
+ return userData->UnmountChildComponentView(view, args);
+ });
+ });
+}
+
+void SvgView::UpdateLayoutMetrics(
+ const winrt::Microsoft::ReactNative::LayoutMetrics &metrics,
+ const winrt::Microsoft::ReactNative::LayoutMetrics &oldMetrics) {
+ m_layoutMetrics = metrics;
+
+ if (metrics != oldMetrics) {
+ Invalidate();
+ }
+}
+
+void RecurseRenderNode(
+ const SvgView *root,
+ const winrt::Microsoft::ReactNative::ComponentView &view,
+ ID2D1SvgDocument &document,
+ ID2D1SvgElement &svgElement) noexcept {
+ for (auto const &child : view.Children()) {
+ {
+ auto renderable = child.UserData().try_as();
+
+ if (renderable && renderable->IsSupported()) {
+ ID2D1SvgElement &newElement = renderable->Render(*root, document, svgElement);
+ RecurseRenderNode(root, child, document, newElement);
+ }
+ }
+ }
+}
+
+void SvgView::Draw(
+ const winrt::Microsoft::ReactNative::Composition::ViewComponentView &view,
+ ID2D1DeviceContext &context,
+ winrt::Windows::Foundation::Size const &size) noexcept {
+
+ com_ptr deviceContext;
+ deviceContext.copy_from(&context);
+
+ auto deviceContext5 = deviceContext.as();
+
+ winrt::com_ptr spSvgDocument;
+ deviceContext5->CreateSvgDocument(nullptr, D2D1_SIZE_F{size.Width, size.Height}, spSvgDocument.put());
+
+ winrt::com_ptr spRoot;
+ spSvgDocument->GetRoot(spRoot.put());
+
+ if (m_props->vbWidth != std::nullopt || m_props->vbHeight != std::nullopt) {
+ std::wstring viewBoxStr = std::to_wstring(m_props->minX.value_or(0)) + L" " +
+ std::to_wstring(m_props->minY.value_or(0)) + L" " + std::to_wstring(m_props->vbWidth.value_or(0)) + L" " +
+ std::to_wstring(m_props->vbHeight.value_or(0));
+ spRoot->SetAttributeValue(
+ SvgStrings::viewBoxAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ viewBoxStr.c_str());
+ }
+
+ spRoot->SetAttributeValue(
+ SvgStrings::widthAttributeName, D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, std::to_wstring(size.Width).c_str());
+ spRoot->SetAttributeValue(
+ SvgStrings::heightAttributeName, D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG, std::to_wstring(size.Height).c_str());
+
+ if (m_props->color) {
+ spRoot->SetAttributeValue(
+ SvgStrings::colorAttributeName, D2DHelpers::AsD2DColor(m_props->color.AsWindowsColor(Theme())));
+ } else
+ spRoot->SetAttributeValue(
+ SvgStrings::colorAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ SvgStrings::noneAttributeValue);
+
+ if (m_props->align != std::nullopt || m_props->meetOrSlice != std::nullopt) {
+ D2D1_SVG_PRESERVE_ASPECT_RATIO preserveAspectRatio;
+ preserveAspectRatio.defer = false;
+ preserveAspectRatio.align = m_aspectAlign;
+
+ preserveAspectRatio.meetOrSlice = m_props->meetOrSlice.value() == MeetOrSlice::Meet
+ ? D2D1_SVG_ASPECT_SCALING::D2D1_SVG_ASPECT_SCALING_MEET
+ : D2D1_SVG_ASPECT_SCALING::D2D1_SVG_ASPECT_SCALING_SLICE;
+ spRoot->SetAttributeValue(SvgStrings::preserveAspectRatioAttributeName, preserveAspectRatio);
+ }
+
+ for (auto const &child : view.Children()) {
+ auto renderable = child.UserData().as();
+ if (renderable->IsSupported()) {
+ RecurseRenderNode(this, child, *spSvgDocument, *spRoot);
+ }
+ }
+
+ deviceContext5->DrawSvgDocument(spSvgDocument.get());
+}
+
+winrt::Microsoft::ReactNative::Composition::Theme SvgView::Theme() const noexcept {
+ if (auto view = m_wkView.get()) {
+ return view.Theme();
+ }
+ return nullptr;
+}
+
+void SvgView::Invalidate() {
+ if (auto view = m_wkView.get()) {
+ auto size = winrt::Windows::Foundation::Size{m_layoutMetrics.Frame.Width, m_layoutMetrics.Frame.Height};
+
+ if (!m_isMounted) {
+ return;
+ }
+
+ if (size.Height == 0 || size.Width == 0) {
+ return;
+ }
+
+ auto drawingSurface = m_compContext.CreateDrawingSurfaceBrush(
+ size,
+ winrt::Windows::Graphics::DirectX::DirectXPixelFormat::B8G8R8A8UIntNormalized,
+ winrt::Windows::Graphics::DirectX::DirectXAlphaMode::Premultiplied);
+
+ POINT offset;
+ {
+ ::Microsoft::ReactNative::Composition::AutoDrawDrawingSurface autoDraw(drawingSurface, 1.0, &offset);
+ if (auto deviceContext = autoDraw.GetRenderTarget()) {
+ auto transform =
+ winrt::Windows::Foundation::Numerics::make_float3x2_translation({static_cast(offset.x), static_cast(offset.y)});
+ deviceContext->SetTransform(D2DHelpers::AsD2DTransform(transform));
+
+ deviceContext->Clear(D2D1::ColorF(D2D1::ColorF::Black, 0.0f));
+
+ com_ptr spDeviceContext;
+ spDeviceContext.copy_from(deviceContext);
+
+ Draw(view, *spDeviceContext, size);
+ }
+ }
+
+ m_visual.Brush(drawingSurface);
+ }
+}
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/SvgView.h b/windows/RNSVG/Fabric/SvgView.h
new file mode 100644
index 00000000..f9ba7c65
--- /dev/null
+++ b/windows/RNSVG/Fabric/SvgView.h
@@ -0,0 +1,107 @@
+#pragma once
+
+#include
+
+#include
+#include
+#pragma push_macro("X86")
+#undef X86
+#include
+#include
+#include
+#pragma pop_macro("X86")
+
+namespace winrt::RNSVG::implementation {
+
+D2D1_SVG_ASPECT_ALIGN AlignToAspectAlign(const std::string &align) noexcept;
+
+enum class MeetOrSlice {
+ Meet = 0,
+ Slice = 1,
+};
+
+REACT_STRUCT(SvgViewProps)
+struct SvgViewProps : winrt::implements {
+ SvgViewProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom);
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept;
+
+ REACT_FIELD(minX)
+ std::optional minX;
+ REACT_FIELD(minY)
+ std::optional minY;
+ REACT_FIELD(vbWidth)
+ std::optional vbWidth;
+ REACT_FIELD(vbHeight)
+ std::optional vbHeight;
+ REACT_FIELD(align)
+ std::optional align;
+ REACT_FIELD(meetOrSlice)
+ std::optional meetOrSlice;
+ REACT_FIELD(color)
+ winrt::Microsoft::ReactNative::Color color{nullptr};
+ private:
+ winrt::Microsoft::ReactNative::ViewProps m_props{nullptr};
+};
+
+struct __declspec(uuid("ed381ffa-461a-48Bf-a3c0-5d9a42eecd30")) ISvgView : public ::IUnknown {
+ virtual void Invalidate() = 0;
+};
+
+struct SvgView : winrt::implements {
+ public:
+
+ SvgView(const winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext &compContext);
+
+ // Overrides
+ // IInternalCreateVisual
+ winrt::Microsoft::ReactNative::Composition::Experimental::IVisual CreateInternalVisual();
+
+ // ComponentView
+ void UpdateProps(
+ const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
+ const winrt::Microsoft::ReactNative::IComponentProps &newProps,
+ const winrt::Microsoft::ReactNative::IComponentProps & /*oldProps*/) noexcept;
+ void UpdateLayoutMetrics(
+ const winrt::Microsoft::ReactNative::LayoutMetrics &metrics,
+ const winrt::Microsoft::ReactNative::LayoutMetrics &oldMetrics);
+ void MountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView& view,
+ const winrt::Microsoft::ReactNative::MountChildComponentViewArgs& args) noexcept;
+ void UnmountChildComponentView(
+ const winrt::Microsoft::ReactNative::ComponentView& view,
+ const winrt::Microsoft::ReactNative::UnmountChildComponentViewArgs& args) noexcept;
+
+ void FinalizeUpates(
+ const winrt::Microsoft::ReactNative::ComponentView & /*view*/,
+ winrt::Microsoft::ReactNative::ComponentViewUpdateMask mask) noexcept;
+
+ void OnThemeChanged() noexcept;
+ void OnMounted() noexcept;
+ void OnUnmounted() noexcept;
+
+ void Initialize(const winrt::Microsoft::ReactNative::ComponentView & /*view*/) noexcept;
+
+ static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+ void Invalidate();
+ winrt::Microsoft::ReactNative::Composition::Theme Theme() const noexcept;
+
+ private:
+ void Draw(
+ const winrt::Microsoft::ReactNative::Composition::ViewComponentView &view,
+ ID2D1DeviceContext &context,
+ winrt::Windows::Foundation::Size const &size) noexcept;
+
+ bool m_isMounted{false};
+ winrt::Microsoft::ReactNative::Composition::Experimental::ISpriteVisual m_visual{nullptr};
+ winrt::Microsoft::ReactNative::LayoutMetrics m_layoutMetrics{{0, 0, 0, 0}, 1.0};
+ winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext m_compContext{nullptr};
+ winrt::weak_ref m_wkView;
+ D2D1_SVG_ASPECT_ALIGN m_aspectAlign;
+ winrt::com_ptr m_props;
+
+ // Shared
+ Microsoft::ReactNative::IReactContext m_reactContext{nullptr};
+};
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/UnsupportedSvgView.cpp b/windows/RNSVG/Fabric/UnsupportedSvgView.cpp
new file mode 100644
index 00000000..7f62c8e2
--- /dev/null
+++ b/windows/RNSVG/Fabric/UnsupportedSvgView.cpp
@@ -0,0 +1,33 @@
+#include "pch.h"
+#include "UnsupportedSvgView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(UnsupportedProps)
+struct UnsupportedProps : public winrt::implements {
+ UnsupportedProps(const winrt::Microsoft::ReactNative::ViewProps &/*props*/, const winrt::Microsoft::ReactNative::IComponentProps& /*cloneFrom*/) {}
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+};
+
+struct UnsupportedSvgView : winrt::implements {
+ public:
+ UnsupportedSvgView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override{
+ assert(false);
+ return L"unsupported";
+}
+
+ bool IsSupported() const noexcept override {
+ return false;
+ }
+};
+
+void RegisterUnsupportedSvgComponent(const winrt::hstring& name, const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(name, builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/UnsupportedSvgView.h b/windows/RNSVG/Fabric/UnsupportedSvgView.h
new file mode 100644
index 00000000..94ff3bc3
--- /dev/null
+++ b/windows/RNSVG/Fabric/UnsupportedSvgView.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterUnsupportedSvgComponent(const winrt::hstring& name, const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/UseView.cpp b/windows/RNSVG/Fabric/UseView.cpp
new file mode 100644
index 00000000..696bf39e
--- /dev/null
+++ b/windows/RNSVG/Fabric/UseView.cpp
@@ -0,0 +1,64 @@
+#include "pch.h"
+#include "UseView.h"
+
+namespace winrt::RNSVG::implementation {
+
+REACT_STRUCT(UseProps)
+struct UseProps : winrt::implements {
+ UseProps(const winrt::Microsoft::ReactNative::ViewProps &props, const winrt::Microsoft::ReactNative::IComponentProps& cloneFrom) REACT_SVG_RENDERABLE_COMMON_PROPS_INIT
+ {
+ REACT_BEGIN_SVG_RENDERABLE_COMMON_PROPS_CLONE(UseProps)
+ href = cloneFromProps->href;
+ x = cloneFromProps->x;
+ y = cloneFromProps->y;
+ width = cloneFromProps->width;
+ height = cloneFromProps->height;
+ REACT_END_SVG_RENDERABLE_COMMON_PROPS_CLONE
+ }
+
+ void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
+ winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
+ }
+
+ REACT_SVG_RENDERABLE_COMMON_PROPS;
+
+ REACT_FIELD(href)
+ std::wstring href;
+ REACT_FIELD(x)
+ D2D1_SVG_LENGTH x{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(y)
+ D2D1_SVG_LENGTH y{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(width)
+ D2D1_SVG_LENGTH width{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+ REACT_FIELD(height)
+ D2D1_SVG_LENGTH height{0, D2D1_SVG_LENGTH_UNITS::D2D1_SVG_LENGTH_UNITS_NUMBER};
+};
+
+struct UseView : winrt::implements {
+ public:
+ UseView() = default;
+
+ const wchar_t *GetSvgElementName() noexcept override {
+ return L"use";
+ }
+
+ void OnRender(const SvgView &svgView, ID2D1SvgDocument &document, ID2D1SvgElement &element) noexcept override {
+ auto props = m_props.as();
+ SetCommonSvgProps(svgView, document, element, *props);
+ element.SetAttributeValue(
+ SvgStrings::xlinkhrefAttributeName,
+ D2D1_SVG_ATTRIBUTE_STRING_TYPE::D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
+ (L"#" + props->href).c_str());
+
+ element.SetAttributeValue(SvgStrings::xAttributeName, props->x);
+ element.SetAttributeValue(SvgStrings::yAttributeName, props->y);
+ element.SetAttributeValue(SvgStrings::widthAttributeName, props->width);
+ element.SetAttributeValue(SvgStrings::heightAttributeName, props->height);
+ }
+};
+
+void RegisterUseComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
+ RegisterRenderableComponent(L"RNSVGUse", builder);
+}
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/Fabric/UseView.h b/windows/RNSVG/Fabric/UseView.h
new file mode 100644
index 00000000..ac3ce441
--- /dev/null
+++ b/windows/RNSVG/Fabric/UseView.h
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "RenderableView.h"
+
+namespace winrt::RNSVG::implementation {
+
+void RegisterUseComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
+
+
+} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/GroupView.cpp b/windows/RNSVG/GroupView.cpp
index e8f9167c..7f0725e2 100644
--- a/windows/RNSVG/GroupView.cpp
+++ b/windows/RNSVG/GroupView.cpp
@@ -14,87 +14,7 @@ using namespace winrt;
using namespace Microsoft::ReactNative;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-SvgGroupCommonProps::SvgGroupCommonProps(
- const winrt::Microsoft::ReactNative::ViewProps &props)
- : base_type(props) {}
-void SvgGroupCommonProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-GroupView::GroupView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args)
- : base_type(args), m_reactContext(args.ReactContext()) {}
-
-void GroupView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGGroup", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView(
- [](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void GroupView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto groupProps = props.as();
- auto oldGroupProps = oldProps ? oldProps.as() : nullptr;
-
- auto const &parent{Parent().try_as()};
-
- if (!oldGroupProps || groupProps->font != oldGroupProps->font) {
- if (forceUpdate || !m_fontPropMap[RNSVG::FontProp::FontSize]) {
- if (groupProps->font.fontSize) {
- m_fontSize = groupProps->font.fontSize != std::nullopt
- ? *groupProps->font.fontSize
- : (parent ? parent.FontSize() : 12.0f);
- }
-
- m_fontPropMap[RNSVG::FontProp::FontSize] = !!groupProps->font.fontSize;
- }
-
- if (forceUpdate || !m_fontPropMap[RNSVG::FontProp::FontFamily]) {
- if (groupProps->font.fontFamily) {
- m_fontFamily = !(*groupProps->font.fontFamily).empty()
- ? winrt::to_hstring(*groupProps->font.fontFamily)
- : (parent ? parent.FontFamily() : L"Segoe UI");
-
- m_fontPropMap[RNSVG::FontProp::FontFamily] = !(*groupProps->font.fontFamily).empty();
- }
- }
-
- if (forceUpdate || !m_fontPropMap[RNSVG::FontProp::FontWeight]) {
- if (groupProps->font.fontWeight) {
- m_fontWeight = !(*groupProps->font.fontWeight).empty()
- ? winrt::to_hstring(*groupProps->font.fontWeight)
- : (parent ? parent.FontWeight() : L"auto");
-
- m_fontPropMap[RNSVG::FontProp::FontWeight] = !(*groupProps->font.fontWeight).empty();
- }
- }
- }
-
- base_type::UpdateProperties(props, oldProps, forceUpdate, false);
-
- for (auto const &child : Children()) {
- child.as().UpdateProperties(props, oldProps, false, false);
- }
-
- if (invalidate && Parent()) {
- SvgRoot().Invalidate();
- }
-}
-#else
void GroupView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate, bool invalidate) {
const JSValueObject &propertyMap{JSValue::ReadObjectFrom(reader)};
@@ -180,7 +100,6 @@ void GroupView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate,
SvgRoot().Invalidate();
}
}
-#endif
void GroupView::CreateGeometry(RNSVG::D2DDeviceContext const &context) {
std::vector geometries;
@@ -274,12 +193,9 @@ void GroupView::Unload() {
child.as().Unload();
}
- m_reactContext = nullptr;
m_fontPropMap.clear();
-#ifndef USE_FABRIC
m_children.Clear();
-#endif
__super::Unload();
}
diff --git a/windows/RNSVG/GroupView.h b/windows/RNSVG/GroupView.h
index e5d9ee26..5af9c76e 100644
--- a/windows/RNSVG/GroupView.h
+++ b/windows/RNSVG/GroupView.h
@@ -2,108 +2,19 @@
#include "GroupView.g.h"
#include "RenderableView.h"
-#ifdef USE_FABRIC
-#include "SvgGroupCommonProps.g.h"
-#endif
-
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(FontObject)
-struct FontObject {
- REACT_FIELD(fontStyle)
- std::optional fontStyle;
- REACT_FIELD(fontVariant)
- std::optional fontVariant;
- REACT_FIELD(fontWeight)
- std::optional fontWeight;
- REACT_FIELD(fontStretch)
- std::optional fontStretch;
- REACT_FIELD(fontSize)
- std::optional fontSize;
- REACT_FIELD(fontFamily)
- std::optional fontFamily;
- REACT_FIELD(textAnchor)
- std::optional textAnchor;
- REACT_FIELD(textDecoration)
- std::optional textDecoration;
- REACT_FIELD(letterSpacing)
- std::optional letterSpacing;
- REACT_FIELD(wordSpacing)
- std::optional wordSpacing;
- REACT_FIELD(kerning)
- std::optional kerning;
- REACT_FIELD(fontFeatureSettings)
- std::optional fontFeatureSettings;
- REACT_FIELD(fontVariantLigatures)
- std::optional fontVariantLigatures;
- REACT_FIELD(fontVariationSettings)
- std::optional fontVariationSettings;
-
- bool operator==(const FontObject &rhs) const {
- return fontStyle == rhs.fontStyle && fontVariant == rhs.fontVariant &&
- fontWeight == rhs.fontWeight && fontStretch == rhs.fontStretch &&
- fontSize == rhs.fontSize && fontFamily == rhs.fontFamily &&
- textAnchor == rhs.textAnchor && textDecoration == rhs.textDecoration &&
- letterSpacing == rhs.letterSpacing && wordSpacing == rhs.wordSpacing &&
- kerning == rhs.kerning &&
- fontFeatureSettings == rhs.fontFeatureSettings &&
- fontVariantLigatures == rhs.fontVariantLigatures &&
- fontVariationSettings == rhs.fontVariationSettings;
- }
-
- bool operator!=(const FontObject &rhs) const {
- return !(*this == rhs);
- }
-};
-
-#define REACT_SVG_GROUP_COMMON_PROPS \
- REACT_FIELD(fontSize) \
- REACT_FIELD(fontWeight) \
- REACT_FIELD(font)
-
-REACT_STRUCT(SvgGroupCommonProps)
-struct SvgGroupCommonProps
- : SvgGroupCommonPropsT {
- SvgGroupCommonProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
- REACT_SVG_GROUP_COMMON_PROPS;
-
- std::string fontSize;
- std::string fontWeight;
- FontObject font;
-};
-#endif
struct GroupView
: GroupViewT {
public:
GroupView() = default;
-#ifdef USE_FABRIC
- GroupView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-
- // IRenderableFabric
- void UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate = true,
- bool invalidate = true) noexcept override;
-#else
- GroupView(Microsoft::ReactNative::IReactContext const &context) : m_reactContext(context) {}
+ GroupView(Microsoft::ReactNative::IReactContext const & /*context*/) {}
Windows::Foundation::Collections::IVector Children() { return m_children; }
// IRenderablePaper
virtual void UpdateProperties(Microsoft::ReactNative::IJSValueReader const &reader, bool forceUpdate, bool invalidate);
-#endif
hstring FontFamily() { return m_fontFamily; }
void FontFamily(hstring const &value) { m_fontFamily = value; }
@@ -126,12 +37,9 @@ struct GroupView
virtual void DrawGroup(RNSVG::D2DDeviceContext const &deviceContext, Windows::Foundation::Size const &size);
private:
- Microsoft::ReactNative::IReactContext m_reactContext{nullptr};
-#ifndef USE_FABRIC
Windows::Foundation::Collections::IVector m_children{
winrt::single_threaded_vector()};
-#endif
float m_fontSize{12.0f};
hstring m_fontFamily{L"Segoe UI"};
diff --git a/windows/RNSVG/ImageView.cpp b/windows/RNSVG/ImageView.cpp
index 1926c129..42d4c6d4 100644
--- a/windows/RNSVG/ImageView.cpp
+++ b/windows/RNSVG/ImageView.cpp
@@ -14,9 +14,7 @@
#include
#include
-#ifndef USE_FABRIC
#include
-#endif
using namespace winrt::Microsoft::ReactNative;
using namespace winrt::Windows::Security::Cryptography;
@@ -25,64 +23,6 @@ using namespace winrt::Windows::Web::Http;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-ImageProps::ImageProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void ImageProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-ImageView::ImageView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void ImageView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGImage", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void ImageView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto imageProps = props.try_as();
- auto oldImageProps = oldProps.try_as();
- if (imageProps) {
- m_props = imageProps;
-
- m_x = m_props->x;
- m_y = m_props->y;
- m_width = m_props->width;
- m_height = m_props->height;
-
- // preserveAspectRatio
- m_align = m_props->align;
- m_meetOrSlice = m_props->meetOrSlice;
-
- // IamgeSource
- m_source.uri = m_props->src.uri;
- m_source.method = m_props->src.method;
- m_source.width = m_props->src.width;
- m_source.height = m_props->src.height;
- m_source.scale = m_props->src.scale;
-
- if (!oldImageProps || (oldImageProps->src.uri != imageProps->src.uri)) {
- LoadImageSourceAsync(true);
- }
- }
-
- base_type::UpdateProperties(props, oldProps, forceUpdate, invalidate);
-}
-#else
void ImageView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate, bool invalidate) {
const JSValueObject &propertyMap{JSValue::ReadObjectFrom(reader)};
@@ -141,7 +81,6 @@ void ImageView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate,
__super::UpdateProperties(reader, forceUpdate, invalidate);
}
-#endif
void ImageView::Draw(RNSVG::D2DDeviceContext const &context, Size const &size) {
if (!m_wicbitmap) {
@@ -302,7 +241,6 @@ IAsyncOperation ImageView::GetImageStreamAsync(
Uri uri{winrt::to_hstring(source.uri)};
HttpRequestMessage request{httpMethod, uri};
-#ifndef USE_FABRIC
if (!source.headers.empty()) {
for (auto const &header : source.headers) {
if (_stricmp(to_string(header.first).c_str(), "authorization") == 0) {
@@ -312,7 +250,6 @@ IAsyncOperation ImageView::GetImageStreamAsync(
}
}
}
-#endif
HttpClient httpClient;
HttpResponseMessage response{co_await httpClient.SendRequestAsync(request)};
diff --git a/windows/RNSVG/ImageView.h b/windows/RNSVG/ImageView.h
index 3b3f5570..e1a2c9a9 100644
--- a/windows/RNSVG/ImageView.h
+++ b/windows/RNSVG/ImageView.h
@@ -1,9 +1,5 @@
#pragma once
-#ifdef USE_FABRIC
-#include "ImageProps.g.h"
-#endif
-
#include "ImageView.g.h"
#include "RenderableView.h"
@@ -13,65 +9,6 @@ namespace winrt::RNSVG::implementation {
enum class ImageSourceType { Uri = 0, Download = 1, InlineData = 2 };
enum class ImageSourceFormat { Bitmap = 0, Svg = 1 };
-#ifdef USE_FABRIC
-REACT_STRUCT(ImageSource)
-struct ImageSource {
- REACT_FIELD(uri)
- std::string uri{""};
- REACT_FIELD(method)
- std::string method{""};
- //REACT_FIELD(headers)
- //std::vector headers;
- REACT_FIELD(body)
- std::string body{""};
- REACT_FIELD(width)
- float width{0.0f};
- REACT_FIELD(height)
- float height{0.0f};
- REACT_FIELD(scale)
- float scale{1.0f};
- /*REACT_FIELD(packagerAsset)
- bool packagerAsset{false};
- REACT_FIELD(type)
- ImageSourceType type{ImageSourceType::Uri};
- REACT_FIELD(format)
- ImageSourceFormat format{ImageSourceFormat::Bitmap};*/
-
- bool operator==(const ImageSource &rhs) const {
- return uri == rhs.uri && method == rhs.method && width == rhs.width && height == rhs.height && scale == rhs.scale;
- }
-
- bool operator!=(const ImageSource &rhs) const {
- return !(*this == rhs);
- }
-};
-
-REACT_STRUCT(ImageProps)
-struct ImageProps : ImagePropsT {
- ImageProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
-
- REACT_FIELD(x)
- RNSVG::SVGLength x{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(y)
- RNSVG::SVGLength y{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(width)
- RNSVG::SVGLength width{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(height)
- RNSVG::SVGLength height{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(src)
- ImageSource src;
- REACT_FIELD(align)
- std::string align{""};
- REACT_FIELD(meetOrSlice)
- RNSVG::MeetOrSlice meetOrSlice{RNSVG::MeetOrSlice::Meet};
-};
-#else
struct ImageSource {
std::string uri{""};
std::string method{""};
@@ -83,27 +20,13 @@ struct ImageSource {
ImageSourceType type{ImageSourceType::Uri};
ImageSourceFormat format{ImageSourceFormat::Bitmap};
};
-#endif
struct ImageView : ImageViewT {
public:
ImageView() = default;
-#ifdef USE_FABRIC
- ImageView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-
- // IRenderableFabric
- void UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate = true,
- bool invalidate = true) noexcept override;
-#else
// IRenderablePaper
void UpdateProperties(Microsoft::ReactNative::IJSValueReader const &reader, bool forceUpdate, bool invalidate);
-#endif
// IRenderable
void Draw(RNSVG::D2DDeviceContext const &deviceContext, Windows::Foundation::Size const &size);
@@ -119,10 +42,6 @@ struct ImageView : ImageViewT
ImageSourceType m_type{ImageSourceType::Uri};
ImageSourceFormat m_format{ImageSourceFormat::Bitmap};
-#ifdef USE_FABRIC
- com_ptr m_props;
-#endif
-
// preserveAspectRatio
std::string m_align{""};
RNSVG::MeetOrSlice m_meetOrSlice{RNSVG::MeetOrSlice::Meet};
diff --git a/windows/RNSVG/LineView.cpp b/windows/RNSVG/LineView.cpp
index 582b6376..a784808c 100644
--- a/windows/RNSVG/LineView.cpp
+++ b/windows/RNSVG/LineView.cpp
@@ -12,48 +12,6 @@ using namespace Microsoft::ReactNative;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-LineProps::LineProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void LineProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-LineView::LineView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void LineView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGLine", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void LineView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto lineProps = props.try_as();
- if (lineProps) {
- m_props = lineProps;
-
- m_x1 = m_props->x1;
- m_y1 = m_props->y1;
- m_x2 = m_props->x2;
- m_y2 = m_props->y2;
- }
-
- base_type::UpdateProperties(props, oldProps, forceUpdate, invalidate);
-}
-#else
void LineView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate, bool invalidate) {
const JSValueObject &propertyMap{JSValue::ReadObjectFrom(reader)};
@@ -74,7 +32,6 @@ void LineView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate,
__super::UpdateProperties(reader, forceUpdate, invalidate);
}
-#endif
void LineView::CreateGeometry(RNSVG::D2DDeviceContext const &context) {
auto const &root{SvgRoot()};
diff --git a/windows/RNSVG/LineView.h b/windows/RNSVG/LineView.h
index c2466cb8..4edc95ce 100644
--- a/windows/RNSVG/LineView.h
+++ b/windows/RNSVG/LineView.h
@@ -1,55 +1,16 @@
#pragma once
-#ifdef USE_FABRIC
-#include "LineProps.g.h"
-#endif
-
#include "LineView.g.h"
#include "RenderableView.h"
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(LineProps)
-struct LineProps : LinePropsT {
- LineProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
-
- REACT_FIELD(x1)
- RNSVG::SVGLength x1{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(y1)
- RNSVG::SVGLength y1{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(x2)
- RNSVG::SVGLength x2{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(y2)
- RNSVG::SVGLength y2{0, winrt::RNSVG::LengthType::Unknown};
-};
-#endif
-
struct LineView : LineViewT {
public:
LineView() = default;
-#ifdef USE_FABRIC
- LineView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-
- // IRenderableFabric
- void UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate = true,
- bool invalidate = true) noexcept override;
-#else
// IRenderablePaper
void UpdateProperties(Microsoft::ReactNative::IJSValueReader const &reader, bool forceUpdate, bool invalidate);
-#endif
// IRenderable
void CreateGeometry(RNSVG::D2DDeviceContext const &context);
@@ -59,13 +20,9 @@ struct LineView : LineViewT {
RNSVG::SVGLength m_y1{};
RNSVG::SVGLength m_x2{};
RNSVG::SVGLength m_y2{};
-
-#ifdef USE_FABRIC
- com_ptr m_props;
-#endif
-
};
} // namespace winrt::RNSVG::implementation
+
namespace winrt::RNSVG::factory_implementation {
struct LineView : LineViewT {};
} // namespace winrt::RNSVG::factory_implementation
diff --git a/windows/RNSVG/LinearGradientView.cpp b/windows/RNSVG/LinearGradientView.cpp
index 29807343..9a04d72a 100644
--- a/windows/RNSVG/LinearGradientView.cpp
+++ b/windows/RNSVG/LinearGradientView.cpp
@@ -11,54 +11,6 @@ using namespace Microsoft::ReactNative;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-LinearGradientProps::LinearGradientProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void LinearGradientProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-LinearGradientView::LinearGradientView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void LinearGradientView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGLinearGradient", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void LinearGradientView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto linearGradientProps = props.try_as();
- if (linearGradientProps) {
- m_props = linearGradientProps;
-
- m_x1 = m_props->x1;
- m_y1 = m_props->y1;
- m_x2 = m_props->x2;
- m_y2 = m_props->y2;
-
- m_stops = Utils::JSValueAsGradientStops(m_props->gradient);
- m_gradientUnits = Utils::JSValueAsBrushUnits(m_props->gradientUnits);
- m_transform = Utils::JSValueAsD2DTransform(m_props->gradientTransform);
- }
-
- base_type::UpdateProperties(props, oldProps, forceUpdate, invalidate);
-
- SaveDefinition();
-}
-#else
void LinearGradientView::UpdateProperties(IJSValueReader const &reader, bool forceUpdate, bool invalidate) {
const JSValueObject &propertyMap{JSValue::ReadObjectFrom(reader)};
@@ -91,7 +43,6 @@ void LinearGradientView::UpdateProperties(IJSValueReader const &reader, bool for
SaveDefinition();
}
-#endif
void LinearGradientView::Unload() {
m_stops.clear();
diff --git a/windows/RNSVG/LinearGradientView.h b/windows/RNSVG/LinearGradientView.h
index 0fca6abc..59420b8d 100644
--- a/windows/RNSVG/LinearGradientView.h
+++ b/windows/RNSVG/LinearGradientView.h
@@ -1,62 +1,16 @@
#pragma once
-#ifdef USE_FABRIC
-#include "LinearGradientProps.g.h"
-#endif
-
#include "LinearGradientView.g.h"
#include "BrushView.h"
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(LinearGradientProps)
-struct LinearGradientProps : LinearGradientPropsT {
- LinearGradientProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
- REACT_SVG_GROUP_COMMON_PROPS;
-
- REACT_FIELD(x1)
- RNSVG::SVGLength x1{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(y1)
- RNSVG::SVGLength y1{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(x2)
- RNSVG::SVGLength x2{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(y2)
- RNSVG::SVGLength y2{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(gradient)
- std::optional> gradient{};
- REACT_FIELD(gradientUnits)
- std::optional gradientUnits;
- REACT_FIELD(gradientTransform)
- std::optional> gradientTransform;
-};
-#endif
-
struct LinearGradientView : LinearGradientViewT {
public:
LinearGradientView() = default;
-#ifdef USE_FABRIC
- LinearGradientView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-
- // IRenderableFabric
- void UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate = true,
- bool invalidate = true) noexcept override;
-#else
// IRenderablePaper
void UpdateProperties(Microsoft::ReactNative::IJSValueReader const &reader, bool forceUpdate, bool invalidate);
-#endif
// IRenderable
void Unload();
@@ -69,10 +23,6 @@ struct LinearGradientView : LinearGradientViewT m_stops{};
std::string m_gradientUnits{"objectBoundingBox"};
-#ifdef USE_FABRIC
- com_ptr m_props;
-#endif
-
// BrushView
void CreateBrush();
void UpdateBounds();
diff --git a/windows/RNSVG/MarkerView.cpp b/windows/RNSVG/MarkerView.cpp
index 9548c5f0..683407d7 100644
--- a/windows/RNSVG/MarkerView.cpp
+++ b/windows/RNSVG/MarkerView.cpp
@@ -8,43 +8,5 @@ using namespace winrt;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-MarkerProps::MarkerProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void MarkerProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-MarkerView::MarkerView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void MarkerView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGMarker", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void MarkerView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto markerProps = props.try_as();
- if (markerProps) {
- m_props = markerProps;
- }
-
- base_type::UpdateProperties(props, oldProps, forceUpdate, invalidate);
-}
-#else
-#endif
} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/MarkerView.h b/windows/RNSVG/MarkerView.h
index 503de6c3..fa78510a 100644
--- a/windows/RNSVG/MarkerView.h
+++ b/windows/RNSVG/MarkerView.h
@@ -1,78 +1,18 @@
#pragma once
-#ifdef USE_FABRIC
-#include "MarkerProps.g.h"
-#endif
-
#include "MarkerView.g.h"
#include "GroupView.h"
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-REACT_STRUCT(MarkerProps)
-struct MarkerProps : MarkerPropsT {
- MarkerProps(const winrt::Microsoft::ReactNative::ViewProps &props);
-
- void SetProp(uint32_t hash, winrt::hstring propName, winrt::Microsoft::ReactNative::IJSValueReader value) noexcept
- override;
-
- REACT_SVG_NODE_COMMON_PROPS;
- REACT_SVG_RENDERABLE_COMMON_PROPS;
-
- REACT_FIELD(refX)
- RNSVG::SVGLength refX{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(refY)
- RNSVG::SVGLength refY{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(markerHeight)
- RNSVG::SVGLength markerHeight{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(markerWidth)
- RNSVG::SVGLength markerWidth{0, winrt::RNSVG::LengthType::Unknown};
- REACT_FIELD(markerUnits)
- std::string markerUnits{""};
- REACT_FIELD(orient)
- std::string orient{""};
- REACT_FIELD(minX)
- float minX{0.0f};
- REACT_FIELD(minY)
- float minY{0.0f};
- REACT_FIELD(vbWidth)
- float vbWidth{0.0f};
- REACT_FIELD(vbHeight)
- float vbHeight{0.0f};
- REACT_FIELD(align)
- std::string align{""};
- REACT_FIELD(meetOrSlice)
- RNSVG::MeetOrSlice meetOrSlice{RNSVG::MeetOrSlice::Meet};
-};
-#endif
-
struct MarkerView : MarkerViewT {
public:
MarkerView() = default;
-#ifdef USE_FABRIC
- MarkerView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args);
-
- static void RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept;
-
- // IRenderableFabric
- void UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate = true,
- bool invalidate = true) noexcept override;
-#endif
-
// IRenderable
void Draw(RNSVG::D2DDeviceContext const & /*deviceContext*/, Windows::Foundation::Size const & /*size*/){};
private:
-
-#ifdef USE_FABRIC
- com_ptr m_props;
-#endif
-
};
} // namespace winrt::RNSVG::implementation
diff --git a/windows/RNSVG/MaskView.cpp b/windows/RNSVG/MaskView.cpp
index ffac2648..ee012724 100644
--- a/windows/RNSVG/MaskView.cpp
+++ b/windows/RNSVG/MaskView.cpp
@@ -8,43 +8,4 @@ using namespace winrt;
namespace winrt::RNSVG::implementation {
-#ifdef USE_FABRIC
-MaskProps::MaskProps(const winrt::Microsoft::ReactNative::ViewProps &props) : base_type(props) {}
-
-void MaskProps::SetProp(
- uint32_t hash,
- winrt::hstring propName,
- winrt::Microsoft::ReactNative::IJSValueReader value) noexcept {
- winrt::Microsoft::ReactNative::ReadProp(hash, propName, value, *this);
-}
-
-MaskView::MaskView(const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) : base_type(args) {}
-
-void MaskView::RegisterComponent(const winrt::Microsoft::ReactNative::IReactPackageBuilderFabric &builder) noexcept {
- builder.AddViewComponent(
- L"RNSVGMask", [](winrt::Microsoft::ReactNative::IReactViewComponentBuilder const &builder) noexcept {
- builder.SetCreateProps([](winrt::Microsoft::ReactNative::ViewProps props) noexcept {
- return winrt::make(props);
- });
- builder.SetCreateComponentView([](const winrt::Microsoft::ReactNative::CreateComponentViewArgs &args) noexcept {
- return winrt::make(args);
- });
- });
-}
-
-void MaskView::UpdateProperties(
- const winrt::Microsoft::ReactNative::IComponentProps &props,
- const winrt::Microsoft::ReactNative::IComponentProps &oldProps,
- bool forceUpdate,
- bool invalidate) noexcept {
- auto maskProps = props.try_as