From d02c997352a6b881ff38c530c22e7f53581d073f Mon Sep 17 00:00:00 2001
From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com>
Date: Fri, 15 Nov 2024 03:17:12 -0800
Subject: [PATCH] fix: react-native-windows implementation for new architecture
(#2527)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Summary
There are two main things going on with the PR. Both involve a reworking
of the new arch implementation of rn-svg for windows.
The current implementation attempts to implement a svg renderer from
scratch. There are numerous edge cases that it wasn't handling
correctly, and the performance had some serious issues. This
implementation switches to use the svg rendering path built into
Direct2D. This brings significant performance improvements.
The 2nd issue is there have been various breaking changes in
react-native-windows for how new arch native components are implemented.
This brings the rn-svg implementation in line with those latest changes.
## Test Plan
Primary testing right now is loading up the example app in the repo.
New arch on react-native-windows is still in somewhat early days - so
there are not really current users of this code. I am integrating this
code into Microsoft Office, where I have tested some scenarios. But we
will get expanded testing as we roll out the new arch. I expect there to
be some follow-ups as we expand our usage. The version of rn-svg before
this PR doesn't build with the latest new arch react-native-windows
versions. - So its hard to get worse than that.
### What's required for testing (prerequisites)?
### What are the steps to reproduce (after prerequisites)?
## Compatibility
| OS | Implemented |
| ------- | :---------: |
| iOS | N/A |
| MacOS | N/A |
| Android | N/A |
| Web | ✅ |
## Checklist
- [x] I have tested this on a device and a simulator
- [ ] I added documentation in `README.md`
- [ ] I updated the typed files (typescript)
- [ ] I added a test for the API in the `__tests__` folder
---
.../example/examples/Reanimated.windows.tsx | 19 +
apps/common/noNavigationApp.tsx | 49 ++
apps/fabric-windows-example/.gitignore | 3 +
apps/fabric-windows-example/babel.config.js | 3 -
apps/fabric-windows-example/index.js | 5 +-
apps/fabric-windows-example/package.json | 3 +-
.../windows/FabricExample/FabricExample.cpp | 2 +
.../FabricExample/FabricExample.vcxproj | 1 +
.../windows/FabricExample/packages.lock.json | 64 +-
apps/fabric-windows-example/yarn.lock | 650 ++++++++--------
apps/paper-windows-example/babel.config.js | 5 -
apps/paper-windows-example/index.js | 2 +-
apps/paper-windows-example/package.json | 6 +-
...react-native-view-shot+4.0.0-alpha.2.patch | 51 --
...tch => react-native-windows+0.74.23.patch} | 2 +-
.../windows/Example/packages.lock.json | 280 ++++++-
apps/paper-windows-example/yarn.lock | 717 ++++++++----------
src/lib/extract/extractProps.windows.ts | 5 +
windows/RNSVG/BrushView.cpp | 5 -
windows/RNSVG/BrushView.h | 5 +-
windows/RNSVG/CircleView.cpp | 42 -
windows/RNSVG/CircleView.h | 41 +-
windows/RNSVG/ClipPathView.cpp | 24 -
windows/RNSVG/ClipPathView.h | 23 -
windows/RNSVG/D2DHelpers.h | 4 -
windows/RNSVG/DefsView.cpp | 25 -
windows/RNSVG/DefsView.h | 23 -
windows/RNSVG/EllipseView.cpp | 42 -
windows/RNSVG/EllipseView.h | 44 +-
windows/RNSVG/Fabric.idl | 166 ----
windows/RNSVG/Fabric/CircleView.cpp | 53 ++
windows/RNSVG/Fabric/CircleView.h | 9 +
windows/RNSVG/Fabric/ClipPathView.cpp | 38 +
windows/RNSVG/Fabric/ClipPathView.h | 10 +
windows/RNSVG/Fabric/D2DHelpers.h | 18 +
windows/RNSVG/Fabric/DefsView.cpp | 41 +
windows/RNSVG/Fabric/DefsView.h | 9 +
windows/RNSVG/Fabric/EllipseView.cpp | 56 ++
windows/RNSVG/Fabric/EllipseView.h | 11 +
windows/RNSVG/Fabric/GroupView.cpp | 42 +
windows/RNSVG/Fabric/GroupView.h | 8 +
windows/RNSVG/Fabric/ImageView.cpp | 128 ++++
windows/RNSVG/Fabric/ImageView.h | 9 +
windows/RNSVG/Fabric/LineView.cpp | 56 ++
windows/RNSVG/Fabric/LineView.h | 10 +
windows/RNSVG/Fabric/LinearGradientView.cpp | 134 ++++
windows/RNSVG/Fabric/LinearGradientView.h | 11 +
windows/RNSVG/Fabric/PathView.cpp | 49 ++
windows/RNSVG/Fabric/PathView.h | 9 +
windows/RNSVG/Fabric/RadialGradientView.cpp | 161 ++++
windows/RNSVG/Fabric/RadialGradientView.h | 10 +
windows/RNSVG/Fabric/RectView.cpp | 79 ++
windows/RNSVG/Fabric/RectView.h | 9 +
windows/RNSVG/Fabric/RenderableView.cpp | 174 +++++
windows/RNSVG/Fabric/RenderableView.h | 302 ++++++++
windows/RNSVG/Fabric/SvgStrings.h | 58 ++
windows/RNSVG/Fabric/SvgView.cpp | 342 +++++++++
windows/RNSVG/Fabric/SvgView.h | 107 +++
windows/RNSVG/Fabric/UnsupportedSvgView.cpp | 33 +
windows/RNSVG/Fabric/UnsupportedSvgView.h | 9 +
windows/RNSVG/Fabric/UseView.cpp | 64 ++
windows/RNSVG/Fabric/UseView.h | 10 +
windows/RNSVG/GroupView.cpp | 84 --
windows/RNSVG/GroupView.h | 94 +--
windows/RNSVG/ImageView.cpp | 63 --
windows/RNSVG/ImageView.h | 81 --
windows/RNSVG/LineView.cpp | 43 --
windows/RNSVG/LineView.h | 45 +-
windows/RNSVG/LinearGradientView.cpp | 49 --
windows/RNSVG/LinearGradientView.h | 50 --
windows/RNSVG/MarkerView.cpp | 38 -
windows/RNSVG/MarkerView.h | 60 --
windows/RNSVG/MaskView.cpp | 39 -
windows/RNSVG/MaskView.h | 48 --
windows/RNSVG/PathView.cpp | 44 --
windows/RNSVG/PathView.h | 37 -
windows/RNSVG/PatternView.cpp | 62 --
windows/RNSVG/PatternView.h | 62 --
windows/RNSVG/RNSVG.vcxproj | 49 +-
windows/RNSVG/RadialGradientView.cpp | 53 --
windows/RNSVG/RadialGradientView.h | 53 --
windows/RNSVG/ReactPackageProvider.cpp | 78 +-
windows/RNSVG/RectView.cpp | 26 +-
windows/RNSVG/RectView.h | 47 --
windows/RNSVG/RenderableView.cpp | 78 +-
windows/RNSVG/RenderableView.h | 156 ----
windows/RNSVG/SVGLength.cpp | 24 +
windows/RNSVG/SVGLength.h | 2 -
windows/RNSVG/SvgView.cpp | 186 -----
windows/RNSVG/SvgView.h | 84 --
windows/RNSVG/SymbolView.cpp | 46 +-
windows/RNSVG/SymbolView.h | 48 --
windows/RNSVG/TSpanView.cpp | 39 -
windows/RNSVG/TSpanView.h | 40 -
windows/RNSVG/TextView.cpp | 78 --
windows/RNSVG/TextView.h | 62 +-
windows/RNSVG/UseView.cpp | 48 --
windows/RNSVG/UseView.h | 45 --
windows/RNSVG/Utils.h | 66 --
windows/RNSVG/ViewProps.idl | 107 ---
windows/RNSVG/packages.lock.json | 20 +-
101 files changed, 3268 insertions(+), 3436 deletions(-)
create mode 100644 apps/common/example/examples/Reanimated.windows.tsx
create mode 100644 apps/common/noNavigationApp.tsx
delete mode 100644 apps/paper-windows-example/patches/react-native-view-shot+4.0.0-alpha.2.patch
rename apps/paper-windows-example/patches/{react-native-windows+0.74.9.patch => react-native-windows+0.74.23.patch} (97%)
delete mode 100644 windows/RNSVG/Fabric.idl
create mode 100644 windows/RNSVG/Fabric/CircleView.cpp
create mode 100644 windows/RNSVG/Fabric/CircleView.h
create mode 100644 windows/RNSVG/Fabric/ClipPathView.cpp
create mode 100644 windows/RNSVG/Fabric/ClipPathView.h
create mode 100644 windows/RNSVG/Fabric/D2DHelpers.h
create mode 100644 windows/RNSVG/Fabric/DefsView.cpp
create mode 100644 windows/RNSVG/Fabric/DefsView.h
create mode 100644 windows/RNSVG/Fabric/EllipseView.cpp
create mode 100644 windows/RNSVG/Fabric/EllipseView.h
create mode 100644 windows/RNSVG/Fabric/GroupView.cpp
create mode 100644 windows/RNSVG/Fabric/GroupView.h
create mode 100644 windows/RNSVG/Fabric/ImageView.cpp
create mode 100644 windows/RNSVG/Fabric/ImageView.h
create mode 100644 windows/RNSVG/Fabric/LineView.cpp
create mode 100644 windows/RNSVG/Fabric/LineView.h
create mode 100644 windows/RNSVG/Fabric/LinearGradientView.cpp
create mode 100644 windows/RNSVG/Fabric/LinearGradientView.h
create mode 100644 windows/RNSVG/Fabric/PathView.cpp
create mode 100644 windows/RNSVG/Fabric/PathView.h
create mode 100644 windows/RNSVG/Fabric/RadialGradientView.cpp
create mode 100644 windows/RNSVG/Fabric/RadialGradientView.h
create mode 100644 windows/RNSVG/Fabric/RectView.cpp
create mode 100644 windows/RNSVG/Fabric/RectView.h
create mode 100644 windows/RNSVG/Fabric/RenderableView.cpp
create mode 100644 windows/RNSVG/Fabric/RenderableView.h
create mode 100644 windows/RNSVG/Fabric/SvgStrings.h
create mode 100644 windows/RNSVG/Fabric/SvgView.cpp
create mode 100644 windows/RNSVG/Fabric/SvgView.h
create mode 100644 windows/RNSVG/Fabric/UnsupportedSvgView.cpp
create mode 100644 windows/RNSVG/Fabric/UnsupportedSvgView.h
create mode 100644 windows/RNSVG/Fabric/UseView.cpp
create mode 100644 windows/RNSVG/Fabric/UseView.h
delete mode 100644 windows/RNSVG/ViewProps.idl
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