react-native-unistyles 2.4.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -26
- package/android/CMakeLists.txt +18 -2
- package/android/build.gradle +5 -1
- package/android/src/main/cxx/cpp-adapter.cpp +16 -80
- package/android/src/main/cxx/helpers.cpp +61 -0
- package/android/src/main/cxx/helpers.h +7 -0
- package/android/src/main/cxx/platform.cpp +170 -0
- package/android/src/main/cxx/platform.h +20 -0
- package/android/src/main/java/com/unistyles/Models.kt +12 -70
- package/android/src/main/java/com/unistyles/Platform.kt +311 -10
- package/android/src/main/java/com/unistyles/UnistylesModule.kt +145 -153
- package/cxx/Macros.h +11 -0
- package/cxx/UnistylesImpl.cpp +310 -0
- package/cxx/UnistylesModel.cpp +234 -0
- package/cxx/UnistylesModel.h +141 -0
- package/cxx/UnistylesRuntime.cpp +17 -356
- package/cxx/UnistylesRuntime.h +71 -87
- package/ios/UnistylesModule.h +13 -0
- package/ios/UnistylesModule.mm +20 -90
- package/ios/platform/Platform_Shared.h +8 -0
- package/ios/platform/Platform_Shared.mm +160 -0
- package/ios/platform/Platform_iOS.h +6 -10
- package/ios/platform/Platform_iOS.mm +143 -93
- package/ios/platform/Platform_macOS.h +3 -7
- package/ios/platform/Platform_macOS.mm +52 -34
- package/ios/platform/Platform_tvOS.h +17 -0
- package/ios/platform/Platform_tvOS.mm +96 -0
- package/ios/platform/Platform_visionOS.h +20 -0
- package/ios/platform/Platform_visionOS.mm +120 -0
- package/lib/commonjs/UnistylesProvider.js +32 -0
- package/lib/commonjs/UnistylesProvider.js.map +1 -0
- package/lib/commonjs/common.js +3 -2
- package/lib/commonjs/common.js.map +1 -1
- package/lib/commonjs/core/UnistyleRegistry.js +14 -4
- package/lib/commonjs/core/UnistyleRegistry.js.map +1 -1
- package/lib/commonjs/core/Unistyles.js +7 -0
- package/lib/commonjs/core/Unistyles.js.map +1 -1
- package/lib/commonjs/core/UnistylesModule.js +52 -8
- package/lib/commonjs/core/UnistylesModule.js.map +1 -1
- package/lib/commonjs/core/UnistylesModule.native.js.map +1 -1
- package/lib/commonjs/core/UnistylesModule.windows.js.map +1 -1
- package/lib/commonjs/core/UnistylesRuntime.js +114 -4
- package/lib/commonjs/core/UnistylesRuntime.js.map +1 -1
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/core/mocks/UnistylesMockedBridge.js +36 -0
- package/lib/commonjs/core/mocks/UnistylesMockedBridge.js.map +1 -0
- package/lib/commonjs/core/mocks/UnistylesMockedRegistry.js +46 -0
- package/lib/commonjs/core/mocks/UnistylesMockedRegistry.js.map +1 -0
- package/lib/commonjs/core/mocks/UnistylesMockedRuntime.js +122 -0
- package/lib/commonjs/core/mocks/UnistylesMockedRuntime.js.map +1 -0
- package/lib/commonjs/core/mocks/index.js +27 -0
- package/lib/commonjs/core/mocks/index.js.map +1 -0
- package/lib/commonjs/createStyleSheet.js.map +1 -1
- package/lib/commonjs/global.js.map +1 -1
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useCSS.js.map +1 -1
- package/lib/commonjs/hooks/useCSS.native.js.map +1 -1
- package/lib/commonjs/hooks/useInitialTheme.js.map +1 -1
- package/lib/commonjs/hooks/useSharedContext.js +77 -0
- package/lib/commonjs/hooks/useSharedContext.js.map +1 -0
- package/lib/commonjs/hooks/useUnistyles.js +18 -65
- package/lib/commonjs/hooks/useUnistyles.js.map +1 -1
- package/lib/commonjs/hooks/useVariants.js.map +1 -1
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/normalizer/index.js.map +1 -1
- package/lib/commonjs/normalizer/module.d.js.map +1 -1
- package/lib/commonjs/normalizer/normalizeStyle.js.map +1 -1
- package/lib/commonjs/normalizer/normalizer.js +1 -1
- package/lib/commonjs/normalizer/normalizer.js.map +1 -1
- package/lib/commonjs/normalizer/normalizer.macos.js.map +1 -1
- package/lib/commonjs/plugins/cssMediaQueriesPlugin.js.map +1 -1
- package/lib/commonjs/plugins/index.js.map +1 -1
- package/lib/commonjs/plugins/normalizeWebStylesPlugin.js.map +1 -1
- package/lib/commonjs/types/breakpoints.js.map +1 -1
- package/lib/commonjs/types/color.js +2 -0
- package/lib/commonjs/types/color.js.map +1 -0
- package/lib/commonjs/types/common.js.map +1 -1
- package/lib/commonjs/types/core.js.map +1 -1
- package/lib/commonjs/types/index.js +11 -0
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/commonjs/types/normalizer.js.map +1 -1
- package/lib/commonjs/types/plugin.js.map +1 -1
- package/lib/commonjs/types/stylesheet.js.map +1 -1
- package/lib/commonjs/types/unistyles.js.map +1 -1
- package/lib/commonjs/types/variants.js.map +1 -1
- package/lib/commonjs/useStyles.js +1 -1
- package/lib/commonjs/useStyles.js.map +1 -1
- package/lib/commonjs/utils/breakpoints.js.map +1 -1
- package/lib/commonjs/utils/cssMediaQuery.js.map +1 -1
- package/lib/commonjs/utils/generateId.js.map +1 -1
- package/lib/commonjs/utils/hash32.js.map +1 -1
- package/lib/commonjs/utils/index.js +7 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/mq.js.map +1 -1
- package/lib/commonjs/utils/mqParser.js.map +1 -1
- package/lib/commonjs/utils/parseColor.js +35 -0
- package/lib/commonjs/utils/parseColor.js.map +1 -0
- package/lib/commonjs/utils/styles.js +15 -1
- package/lib/commonjs/utils/styles.js.map +1 -1
- package/lib/commonjs/utils/withPlugins.js.map +1 -1
- package/lib/module/UnistylesProvider.js +24 -0
- package/lib/module/UnistylesProvider.js.map +1 -0
- package/lib/module/common.js +2 -1
- package/lib/module/common.js.map +1 -1
- package/lib/module/core/UnistyleRegistry.js +15 -5
- package/lib/module/core/UnistyleRegistry.js.map +1 -1
- package/lib/module/core/Unistyles.js +8 -1
- package/lib/module/core/Unistyles.js.map +1 -1
- package/lib/module/core/UnistylesModule.js +52 -8
- package/lib/module/core/UnistylesModule.js.map +1 -1
- package/lib/module/core/UnistylesModule.native.js.map +1 -1
- package/lib/module/core/UnistylesModule.windows.js.map +1 -1
- package/lib/module/core/UnistylesRuntime.js +115 -4
- package/lib/module/core/UnistylesRuntime.js.map +1 -1
- package/lib/module/core/index.js +2 -1
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/core/mocks/UnistylesMockedBridge.js +29 -0
- package/lib/module/core/mocks/UnistylesMockedBridge.js.map +1 -0
- package/lib/module/core/mocks/UnistylesMockedRegistry.js +39 -0
- package/lib/module/core/mocks/UnistylesMockedRegistry.js.map +1 -0
- package/lib/module/core/mocks/UnistylesMockedRuntime.js +114 -0
- package/lib/module/core/mocks/UnistylesMockedRuntime.js.map +1 -0
- package/lib/module/core/mocks/index.js +4 -0
- package/lib/module/core/mocks/index.js.map +1 -0
- package/lib/module/createStyleSheet.js.map +1 -1
- package/lib/module/global.js.map +1 -1
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useCSS.js.map +1 -1
- package/lib/module/hooks/useCSS.native.js.map +1 -1
- package/lib/module/hooks/useInitialTheme.js.map +1 -1
- package/lib/module/hooks/useSharedContext.js +70 -0
- package/lib/module/hooks/useSharedContext.js.map +1 -0
- package/lib/module/hooks/useUnistyles.js +19 -66
- package/lib/module/hooks/useUnistyles.js.map +1 -1
- package/lib/module/hooks/useVariants.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/normalizer/index.js.map +1 -1
- package/lib/module/normalizer/module.d.js.map +1 -1
- package/lib/module/normalizer/normalizeStyle.js.map +1 -1
- package/lib/module/normalizer/normalizer.js.map +1 -1
- package/lib/module/normalizer/normalizer.macos.js.map +1 -1
- package/lib/module/plugins/cssMediaQueriesPlugin.js.map +1 -1
- package/lib/module/plugins/index.js.map +1 -1
- package/lib/module/plugins/normalizeWebStylesPlugin.js.map +1 -1
- package/lib/module/types/breakpoints.js.map +1 -1
- package/lib/module/types/color.js +2 -0
- package/lib/module/types/color.js.map +1 -0
- package/lib/module/types/common.js.map +1 -1
- package/lib/module/types/core.js.map +1 -1
- package/lib/module/types/index.js +1 -0
- package/lib/module/types/index.js.map +1 -1
- package/lib/module/types/normalizer.js.map +1 -1
- package/lib/module/types/plugin.js.map +1 -1
- package/lib/module/types/stylesheet.js.map +1 -1
- package/lib/module/types/unistyles.js.map +1 -1
- package/lib/module/types/variants.js.map +1 -1
- package/lib/module/useStyles.js +1 -1
- package/lib/module/useStyles.js.map +1 -1
- package/lib/module/utils/breakpoints.js.map +1 -1
- package/lib/module/utils/cssMediaQuery.js.map +1 -1
- package/lib/module/utils/generateId.js.map +1 -1
- package/lib/module/utils/hash32.js.map +1 -1
- package/lib/module/utils/index.js +1 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/mq.js.map +1 -1
- package/lib/module/utils/mqParser.js.map +1 -1
- package/lib/module/utils/parseColor.js +28 -0
- package/lib/module/utils/parseColor.js.map +1 -0
- package/lib/module/utils/styles.js +15 -1
- package/lib/module/utils/styles.js.map +1 -1
- package/lib/module/utils/withPlugins.js.map +1 -1
- package/lib/typescript/src/UnistylesProvider.d.ts +20 -0
- package/lib/typescript/src/UnistylesProvider.d.ts.map +1 -0
- package/lib/typescript/src/common.d.ts +3 -2
- package/lib/typescript/src/common.d.ts.map +1 -1
- package/lib/typescript/src/core/UnistyleRegistry.d.ts.map +1 -1
- package/lib/typescript/src/core/Unistyles.d.ts.map +1 -1
- package/lib/typescript/src/core/UnistylesModule.d.ts +1 -0
- package/lib/typescript/src/core/UnistylesModule.d.ts.map +1 -1
- package/lib/typescript/src/core/UnistylesModule.native.d.ts.map +1 -1
- package/lib/typescript/src/core/UnistylesModule.windows.d.ts.map +1 -1
- package/lib/typescript/src/core/UnistylesRuntime.d.ts +84 -8
- package/lib/typescript/src/core/UnistylesRuntime.d.ts.map +1 -1
- package/lib/typescript/src/core/index.d.ts +3 -1
- package/lib/typescript/src/core/index.d.ts.map +1 -1
- package/lib/typescript/src/core/mocks/UnistylesMockedBridge.d.ts +28 -0
- package/lib/typescript/src/core/mocks/UnistylesMockedBridge.d.ts.map +1 -0
- package/lib/typescript/src/core/mocks/UnistylesMockedRegistry.d.ts +21 -0
- package/lib/typescript/src/core/mocks/UnistylesMockedRegistry.d.ts.map +1 -0
- package/lib/typescript/src/core/mocks/UnistylesMockedRuntime.d.ts +79 -0
- package/lib/typescript/src/core/mocks/UnistylesMockedRuntime.d.ts.map +1 -0
- package/lib/typescript/src/core/mocks/index.d.ts +4 -0
- package/lib/typescript/src/core/mocks/index.d.ts.map +1 -0
- package/lib/typescript/src/createStyleSheet.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useCSS.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useCSS.native.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useSharedContext.d.ts +33 -0
- package/lib/typescript/src/hooks/useSharedContext.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useUnistyles.d.ts +4 -19
- package/lib/typescript/src/hooks/useUnistyles.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useVariants.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +7 -15
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/normalizer/normalizeStyle.d.ts.map +1 -1
- package/lib/typescript/src/types/breakpoints.d.ts +9 -8
- package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/types/color.d.ts +4 -0
- package/lib/typescript/src/types/color.d.ts.map +1 -0
- package/lib/typescript/src/types/core.d.ts +2 -2
- package/lib/typescript/src/types/core.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +2 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/normalizer.d.ts +1 -1
- package/lib/typescript/src/types/normalizer.d.ts.map +1 -1
- package/lib/typescript/src/types/stylesheet.d.ts +9 -6
- package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
- package/lib/typescript/src/types/unistyles.d.ts +20 -9
- package/lib/typescript/src/types/unistyles.d.ts.map +1 -1
- package/lib/typescript/src/useStyles.d.ts +1 -1
- package/lib/typescript/src/useStyles.d.ts.map +1 -1
- package/lib/typescript/src/utils/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/utils/index.d.ts +1 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/mqParser.d.ts.map +1 -1
- package/lib/typescript/src/utils/parseColor.d.ts +3 -0
- package/lib/typescript/src/utils/parseColor.d.ts.map +1 -0
- package/lib/typescript/src/utils/styles.d.ts.map +1 -1
- package/package.json +38 -25
- package/react-native-unistyles.podspec +4 -1
- package/src/UnistylesProvider.tsx +33 -0
- package/src/common.ts +3 -2
- package/src/core/UnistyleRegistry.ts +19 -5
- package/src/core/Unistyles.ts +10 -1
- package/src/core/UnistylesModule.ts +61 -14
- package/src/core/UnistylesRuntime.ts +120 -5
- package/src/core/index.ts +7 -1
- package/src/core/mocks/UnistylesMockedBridge.ts +30 -0
- package/src/core/mocks/UnistylesMockedRegistry.ts +47 -0
- package/src/core/mocks/UnistylesMockedRuntime.ts +144 -0
- package/src/core/mocks/index.ts +3 -0
- package/src/hooks/useSharedContext.ts +83 -0
- package/src/hooks/useUnistyles.ts +15 -71
- package/src/index.ts +10 -4
- package/src/types/breakpoints.ts +19 -9
- package/src/types/color.ts +26 -0
- package/src/types/core.ts +2 -2
- package/src/types/index.ts +5 -1
- package/src/types/normalizer.ts +1 -1
- package/src/types/stylesheet.ts +10 -7
- package/src/types/unistyles.ts +28 -12
- package/src/useStyles.ts +1 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/parseColor.ts +33 -0
- package/src/utils/styles.ts +24 -1
- package/windows/ExperimentalFeatures.props +4 -4
- package/windows/NuGet.Config +0 -1
- package/windows/ReactNativeUnistyles/ReactNativeUnistyles.h +42 -118
- package/windows/ReactNativeUnistyles/ReactNativeUnistyles.vcxproj +7 -2
- package/windows/ReactNativeUnistyles/ReactNativeUnistyles.vcxproj.filters +6 -1
- package/windows/ReactNativeUnistyles/packages.lock.json +31 -31
- package/android/src/main/java/com/unistyles/Config.kt +0 -116
- package/android/src/main/java/com/unistyles/Insets.kt +0 -138
- package/ios/UnistylesHelpers.h +0 -3
- package/ios/UnistylesHelpers.mm +0 -5
package/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
[<img alt="react-native-unistyles" src="assets/banner.png">](https://reactnativeunistyles.vercel.app/)
|
2
|
+
[<img alt="react-native-unistyles-3.0" src="assets/v3.jpg">](https://github.com/jpudysz/react-native-unistyles/discussions/191)
|
3
|
+
|
2
4
|
|
3
5
|

|
4
6
|
[](https://www.npmjs.com/package/react-native-unistyles)
|
@@ -9,35 +11,43 @@
|
|
9
11
|
[](https://www.w3.org/)
|
10
12
|
[](https://developer.apple.com/ios/)
|
11
13
|
[](https://developer.apple.com/macos/)
|
14
|
+
[](https://developer.apple.com/tvos/)
|
15
|
+
[](https://developer.apple.com/visionos/)
|
16
|
+
[](https://developer.android.com/)
|
17
|
+
[](https://www.android.com/intl/pl_pl/tv/)
|
12
18
|
[](https://microsoft.github.io/react-native-windows/docs/getting-started)
|
13
19
|
[](https://nextjs.org/)
|
14
|
-
[](https://developer.android.com/)
|
15
20
|
|
16
|
-
<a href="https://github.com/jpudysz?tab=followers">
|
17
|
-
<img src="https://img.shields.io/github/followers/jpudysz?label=Follow%20%40jpudysz&style=social" />
|
18
|
-
</a>
|
19
|
-
<br/>
|
20
|
-
<a href="https://twitter.com/jpudysz">
|
21
|
-
<img src="https://img.shields.io/twitter/follow/jpudysz?label=Follow%20%40jpudysz&style=social" />
|
22
|
-
</a>
|
23
21
|
|
22
|
+
## Installation
|
23
|
+
|
24
|
+
```shell
|
25
|
+
yarn add react-native-unistyles
|
26
|
+
```
|
27
|
+
Install CocoaPods dependencies / generate native folders with Expo:
|
28
|
+
|
29
|
+
```shell
|
30
|
+
pod install
|
31
|
+
or
|
32
|
+
npx expo prebuild
|
33
|
+
```
|
24
34
|
|
25
35
|
## [Documentation](https://reactnativeunistyles.vercel.app/)
|
26
36
|
- [Start here](https://reactnativeunistyles.vercel.app/start/introduction/)
|
27
37
|
- [API](https://reactnativeunistyles.vercel.app/reference/create-stylesheet/)
|
28
|
-
- [
|
38
|
+
- [Migration from StyleSheet](https://reactnativeunistyles.vercel.app/start/migration-from-stylesheet/)
|
29
39
|
- [Examples](https://reactnativeunistyles.vercel.app/examples/all/)
|
30
40
|
|
31
41
|
## Features
|
32
42
|
- 🚀 Shared core with C++ and JSI bindings
|
33
|
-
- 🌉 Supports new architecture
|
43
|
+
- 🌉 Supports new architecture and bridgeless mode
|
34
44
|
- 🔥 Crazy performance, adds under 0.1 ms to your StyleSheet
|
35
45
|
- 🎳 Share up to 100% of your styles across platforms in monorepo
|
36
46
|
- 🎯 Doesn't introduce new components, everything is packed in one hook
|
37
|
-
- ⚛️ No React Context
|
47
|
+
- ⚛️ No React Context, no React Native events
|
38
48
|
- 🖥️ Supports custom breakpoints, css-like media queries and variants
|
39
49
|
- 🎨 Register multiple themes and change them with single function call
|
40
|
-
- 🥳 Compatible with
|
50
|
+
- 🥳 Compatible with all React Native platforms
|
41
51
|
- 🛡️ ~99% Test coverage
|
42
52
|
- 🔌 Extend stylesheets with your own plugins
|
43
53
|
- ⚔️ No 3rd party dependencies
|
@@ -53,36 +63,72 @@
|
|
53
63
|
<a href="https://galaxies.dev">
|
54
64
|
<img src="https://avatars.githubusercontent.com/u/118431096?s=200&v=4" height="70px" width="70px" alt="galaxies-dev" />
|
55
65
|
</a>
|
66
|
+
<a href="https://github.com/mobily">
|
67
|
+
<img src="https://avatars.githubusercontent.com/u/1467712?v=4" height="70px" width="70px" alt="mobily" />
|
68
|
+
</a>
|
69
|
+
<a href="https://github.com/mwarger">
|
70
|
+
<img src="https://avatars.githubusercontent.com/u/686823?v=4" height="70px" width="70px" alt="mwarger" />
|
71
|
+
</a>
|
72
|
+
<a href="https://github.com/biw">
|
73
|
+
<img src="https://avatars.githubusercontent.com/u/6139501?v=4" height="70px" width="70px" alt="biw" />
|
74
|
+
</a>
|
75
|
+
<a href="https://github.com/happyfloat">
|
76
|
+
<img src="https://avatars.githubusercontent.com/u/186333704?s=200&v=4" height="70px" width="70px" alt="happyfloat" />
|
77
|
+
</a>
|
78
|
+
<a href="https://github.com">
|
79
|
+
<img src="https://avatars.githubusercontent.com/u/138339?v=4" height="70px" width="70px" alt="anonymous" />
|
80
|
+
</a>
|
81
|
+
<a href="https://github.com/hyoban">
|
82
|
+
<img src="https://avatars.githubusercontent.com/u/38493346?v=4" height="70px" width="70px" alt="hyoban" />
|
83
|
+
</a>
|
84
|
+
|
85
|
+
## Past sponsors
|
86
|
+
|
56
87
|
<a href="https://github.com/kmartinezmedia">
|
57
88
|
<img src="https://avatars.githubusercontent.com/u/6308123?s=200&v=4" height="70px" width="70px" alt="kmartinezmedia" />
|
58
89
|
</a>
|
90
|
+
<a href="https://github.com/levibuzolic">
|
91
|
+
<img src="https://avatars.githubusercontent.com/u/721323?v=4" height="70px" width="70px" alt="levibuzolic" />
|
92
|
+
</a>
|
93
|
+
<a href="https://github.com/claudesortwell">
|
94
|
+
<img src="https://avatars.githubusercontent.com/u/41422239?v=4" height="70px" width="70px" alt="claudesortwell" />
|
95
|
+
</a>
|
96
|
+
<a href="https://github.com/luoxuhai">
|
97
|
+
<img src="https://avatars.githubusercontent.com/u/37284154?v=4" height="70px" width="70px" alt="luoxuhai" />
|
98
|
+
</a>
|
99
|
+
<a href="https://github.com">
|
100
|
+
<img src="https://avatars.githubusercontent.com/u/113348625?v=4" height="70px" width="70px" alt="anonymous" />
|
101
|
+
</a>
|
102
|
+
<a href="https://github.com/abanobboles">
|
103
|
+
<img src="https://avatars.githubusercontent.com/u/9078953?v=4" height="70px" width="70px" alt="abanobboles" />
|
104
|
+
</a>
|
59
105
|
|
106
|
+
## Sponsor my work
|
60
107
|
|
61
|
-
|
108
|
+
If you found the `react-native-unistyles` time-saving and valuable, please consider sponsoring my work. Your support enables me to continue creating libraries with a fresh approach.
|
62
109
|
|
63
|
-
|
64
|
-
yarn add react-native-unistyles
|
65
|
-
```
|
110
|
+
Github: https://github.com/sponsors/jpudysz
|
66
111
|
|
67
|
-
|
112
|
+
Ko-fi: https://ko-fi.com/jpudysz
|
68
113
|
|
69
|
-
|
114
|
+
Your support is greatly appreciated and helps me dedicate more time and resources to creating quality libraries. Thank you for all the support!
|
70
115
|
|
71
116
|
|
72
|
-
##
|
73
|
-
Looking for help or you want to chat with me?
|
117
|
+
## UI Kits
|
74
118
|
|
75
|
-
|
119
|
+
<a href="https://stacks.grapp.dev/">
|
120
|
+
<img src="https://raw.githubusercontent.com/grapp-dev/stacks/main/assets/stacks-logo.png" height="70px" width="70px" alt="Stacks" />
|
121
|
+
</a>
|
76
122
|
|
77
|
-
##
|
123
|
+
## Plugins
|
78
124
|
|
79
|
-
|
125
|
+
[eslint-plugin-react-native-unistyles](https://github.com/RodSarhan/eslint-plugin-react-native-unistyles)
|
80
126
|
|
81
|
-
|
127
|
+
## Discord
|
128
|
+
Looking for help or you want to chat with me?
|
82
129
|
|
83
|
-
|
130
|
+
[Join Discord](https://discord.gg/akGHf27P4C)
|
84
131
|
|
85
|
-
Your support is greatly appreciated and helps me dedicate more time and resources to creating quality libraries. Thank you for all the support!
|
86
132
|
|
87
133
|
## License
|
88
134
|
|
package/android/CMakeLists.txt
CHANGED
@@ -5,8 +5,11 @@ project(unistyles)
|
|
5
5
|
add_library(unistyles
|
6
6
|
SHARED
|
7
7
|
../cxx/UnistylesRuntime.cpp
|
8
|
+
../cxx/UnistylesModel.cpp
|
9
|
+
../cxx/UnistylesImpl.cpp
|
8
10
|
./src/main/cxx/cpp-adapter.cpp
|
9
11
|
./src/main/cxx/helpers.cpp
|
12
|
+
./src/main/cxx/platform.cpp
|
10
13
|
)
|
11
14
|
|
12
15
|
include_directories(
|
@@ -14,15 +17,28 @@ include_directories(
|
|
14
17
|
)
|
15
18
|
|
16
19
|
set_target_properties(unistyles PROPERTIES
|
17
|
-
CXX_STANDARD
|
20
|
+
CXX_STANDARD 20
|
18
21
|
CXX_STANDARD_REQUIRED ON
|
19
22
|
CXX_EXTENSIONS OFF
|
20
23
|
POSITION_INDEPENDENT_CODE ON
|
21
24
|
)
|
22
25
|
|
23
26
|
find_package(ReactAndroid REQUIRED CONFIG)
|
27
|
+
find_package(fbjni REQUIRED CONFIG)
|
28
|
+
|
29
|
+
# REACTNATIVE_MERGED_SO doesnt work as of RN 0.76.0-rc.3
|
30
|
+
if (ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
|
31
|
+
target_link_libraries(unistyles ReactAndroid::reactnative)
|
32
|
+
else()
|
33
|
+
target_link_libraries(unistyles
|
34
|
+
ReactAndroid::turbomodulejsijni
|
35
|
+
ReactAndroid::react_nativemodule_core
|
36
|
+
android
|
37
|
+
fbjni::fbjni
|
38
|
+
)
|
39
|
+
endif()
|
24
40
|
|
25
41
|
target_link_libraries(unistyles
|
26
42
|
ReactAndroid::jsi
|
27
|
-
|
43
|
+
fbjni::fbjni
|
28
44
|
)
|
package/android/build.gradle
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
#include <jni.h>
|
2
2
|
#include <jsi/jsi.h>
|
3
3
|
#include <map>
|
4
|
+
#include <ReactCommon/CallInvokerHolder.h>
|
4
5
|
#include "UnistylesRuntime.h"
|
5
6
|
#include "helpers.h"
|
7
|
+
#include "platform.h"
|
6
8
|
|
7
9
|
using namespace facebook;
|
8
10
|
|
@@ -11,96 +13,30 @@ std::shared_ptr<UnistylesRuntime> unistylesRuntime = nullptr;
|
|
11
13
|
|
12
14
|
extern "C"
|
13
15
|
JNIEXPORT void JNICALL
|
14
|
-
Java_com_unistyles_UnistylesModule_nativeInstall(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
jstring colorScheme,
|
20
|
-
jstring contentSizeCategory,
|
21
|
-
jobject insets,
|
22
|
-
jobject statusBar,
|
23
|
-
jobject navigationBar
|
24
|
-
) {
|
25
|
-
auto runtime = reinterpret_cast<facebook::jsi::Runtime *>(jsi);
|
16
|
+
Java_com_unistyles_UnistylesModule_nativeInstall(JNIEnv *env, jobject thiz, jlong jsi, jobject callInvokerHolder) {
|
17
|
+
auto runtime = reinterpret_cast<jsi::Runtime *>(jsi);
|
18
|
+
auto callInvoker{
|
19
|
+
jni::alias_ref<react::CallInvokerHolder::javaobject>{ reinterpret_cast<react::CallInvokerHolder::javaobject>(callInvokerHolder)} -> cthis() ->getCallInvoker()
|
20
|
+
};
|
26
21
|
|
27
22
|
if (unistylesModule == nullptr) {
|
28
23
|
unistylesModule = env->NewGlobalRef(thiz);
|
29
24
|
}
|
30
25
|
|
31
|
-
if (
|
26
|
+
if (unistylesModule == nullptr) {
|
32
27
|
return throwKotlinException(env, "Something went wrong while initializing UnistylesModule");
|
33
28
|
}
|
34
29
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
std::string contentSizeCategoryStr(contentSizeCategoryChars);
|
41
|
-
env->ReleaseStringUTFChars(contentSizeCategory, contentSizeCategoryChars);
|
42
|
-
|
43
|
-
unistylesRuntime = std::make_shared<UnistylesRuntime>(
|
44
|
-
jobjectToDimensions(env, screen),
|
45
|
-
colorSchemeStr,
|
46
|
-
contentSizeCategoryStr,
|
47
|
-
jobjectToInsets(env, insets),
|
48
|
-
jobjectToDimensions(env, statusBar),
|
49
|
-
jobjectToDimensions(env, navigationBar)
|
50
|
-
);
|
51
|
-
|
52
|
-
unistylesRuntime->onThemeChange([=](const std::string &theme) {
|
53
|
-
jstring themeStr = env->NewStringUTF(theme.c_str());
|
54
|
-
jclass cls = env->GetObjectClass(unistylesModule);
|
55
|
-
jmethodID methodId = env->GetMethodID(cls, "onThemeChange", "(Ljava/lang/String;)V");
|
56
|
-
|
57
|
-
env->CallVoidMethod(unistylesModule, methodId, themeStr);
|
58
|
-
env->DeleteLocalRef(themeStr);
|
59
|
-
env->DeleteLocalRef(cls);
|
60
|
-
});
|
61
|
-
|
62
|
-
unistylesRuntime->onLayoutChange([=](const std::string &breakpoint, const std::string &orientation, Dimensions& screen, Dimensions& statusBar, Insets& insets, Dimensions& navigationBar) {
|
63
|
-
jstring breakpointStr = env->NewStringUTF(breakpoint.c_str());
|
64
|
-
jstring orientationStr = env->NewStringUTF(orientation.c_str());
|
65
|
-
jclass cls = env->GetObjectClass(unistylesModule);
|
66
|
-
jclass dimensionsClass = env->FindClass("com/unistyles/Dimensions");
|
67
|
-
jmethodID dimensionsConstructor = env->GetMethodID(dimensionsClass, "<init>", "(II)V");
|
68
|
-
jobject screenObj = env->NewObject(dimensionsClass, dimensionsConstructor, screen.width, screen.height);
|
69
|
-
jobject statusBarObj = env->NewObject(dimensionsClass, dimensionsConstructor, statusBar.width, statusBar.height);
|
70
|
-
jobject navigationBarObj = env->NewObject(dimensionsClass, dimensionsConstructor, navigationBar.width, navigationBar.height);
|
30
|
+
auto runOnJSThread = [callInvoker](std::function<void(jsi::Runtime&)>&& callback) {
|
31
|
+
callInvoker->invokeAsync([callback = std::move(callback)](jsi::Runtime &rt) {
|
32
|
+
callback(rt);
|
33
|
+
});
|
34
|
+
};
|
71
35
|
|
72
|
-
|
73
|
-
|
74
|
-
jobject insetsObj = env->NewObject(insetsClass, insetsConstructor, insets.left, insets.top, insets.right, insets.bottom);
|
75
|
-
jmethodID methodId = env->GetMethodID(cls, "onLayoutChange",
|
76
|
-
"(Ljava/lang/String;Ljava/lang/String;Lcom/unistyles/Dimensions;Lcom/unistyles/Dimensions;Lcom/unistyles/Insets;Lcom/unistyles/Dimensions;)V");
|
77
|
-
|
78
|
-
env->CallVoidMethod(unistylesModule, methodId, breakpointStr, orientationStr, screenObj, statusBarObj, insetsObj, navigationBarObj);
|
79
|
-
env->DeleteLocalRef(breakpointStr);
|
80
|
-
env->DeleteLocalRef(orientationStr);
|
81
|
-
env->DeleteLocalRef(cls);
|
82
|
-
});
|
83
|
-
|
84
|
-
unistylesRuntime->onPluginChange([=]() {
|
85
|
-
jclass cls = env->GetObjectClass(unistylesModule);
|
86
|
-
jmethodID methodId = env->GetMethodID(cls, "onPluginChange", "()V");
|
87
|
-
|
88
|
-
env->CallVoidMethod(unistylesModule, methodId);
|
89
|
-
env->DeleteLocalRef(cls);
|
90
|
-
});
|
91
|
-
|
92
|
-
unistylesRuntime->onContentSizeCategoryChange([=](const std::string &contentSizeCategory) {
|
93
|
-
jstring contentSizeCategoryStr = env->NewStringUTF(contentSizeCategory.c_str());
|
94
|
-
jclass cls = env->GetObjectClass(unistylesModule);
|
95
|
-
jmethodID methodId = env->GetMethodID(cls, "onContentSizeCategoryChange", "(Ljava/lang/String;)V");
|
96
|
-
|
97
|
-
env->CallVoidMethod(unistylesModule, methodId, contentSizeCategoryStr);
|
98
|
-
env->DeleteLocalRef(contentSizeCategoryStr);
|
99
|
-
env->DeleteLocalRef(cls);
|
100
|
-
});
|
36
|
+
unistylesRuntime = std::make_shared<UnistylesRuntime>(runOnJSThread);
|
37
|
+
makeShared(env, unistylesModule, unistylesRuntime);
|
101
38
|
|
102
39
|
jsi::Object hostObject = jsi::Object::createFromHostObject(*runtime, unistylesRuntime);
|
103
|
-
|
104
40
|
runtime->global().setProperty(*runtime, "__UNISTYLES__", std::move(hostObject));
|
105
41
|
}
|
106
42
|
|
@@ -115,7 +51,7 @@ extern "C"
|
|
115
51
|
JNIEXPORT void JNICALL
|
116
52
|
Java_com_unistyles_UnistylesModule_nativeOnOrientationChange(JNIEnv *env, jobject thiz, jobject screen, jobject insets, jobject statusBar, jobject navigationBar) {
|
117
53
|
if (unistylesRuntime != nullptr) {
|
118
|
-
|
54
|
+
Screen screenDimensions = jobjectToScreen(env, screen);
|
119
55
|
Dimensions statusBarDimensions = jobjectToDimensions(env, statusBar);
|
120
56
|
Insets screenInsets = jobjectToInsets(env, insets);
|
121
57
|
Dimensions navigationBarDimensions = jobjectToDimensions(env, navigationBar);
|
@@ -14,6 +14,23 @@ Dimensions jobjectToDimensions(JNIEnv *env, jobject dimensionObj) {
|
|
14
14
|
return Dimensions{width, height};
|
15
15
|
}
|
16
16
|
|
17
|
+
Screen jobjectToScreen(JNIEnv *env, jobject screenObj) {
|
18
|
+
jclass screenClass = env->FindClass("com/unistyles/Screen");
|
19
|
+
jfieldID widthFieldID = env->GetFieldID(screenClass, "width", "I");
|
20
|
+
jfieldID heightFieldID = env->GetFieldID(screenClass, "height", "I");
|
21
|
+
jfieldID pixelRatioFieldID = env->GetFieldID(screenClass, "pixelRatio", "F");
|
22
|
+
jfieldID scaleFieldID = env->GetFieldID(screenClass, "fontScale", "F");
|
23
|
+
|
24
|
+
int width = env->GetIntField(screenObj, widthFieldID);
|
25
|
+
int height = env->GetIntField(screenObj, heightFieldID);
|
26
|
+
float pixelRatio = env->GetFloatField(screenObj, pixelRatioFieldID);
|
27
|
+
float fontScale = env->GetFloatField(screenObj, scaleFieldID);
|
28
|
+
|
29
|
+
env->DeleteLocalRef(screenClass);
|
30
|
+
|
31
|
+
return Screen{width, height, pixelRatio, fontScale};
|
32
|
+
}
|
33
|
+
|
17
34
|
Insets jobjectToInsets(JNIEnv *env, jobject insetsObj) {
|
18
35
|
jclass insetsClass = env->FindClass("com/unistyles/Insets");
|
19
36
|
jfieldID leftFieldID = env->GetFieldID(insetsClass, "left", "I");
|
@@ -31,6 +48,50 @@ Insets jobjectToInsets(JNIEnv *env, jobject insetsObj) {
|
|
31
48
|
return Insets{top, bottom, left, right};
|
32
49
|
}
|
33
50
|
|
51
|
+
void JNI_callPlatformWithColor(JNIEnv *env, jobject unistylesModule, std::string name, std::string sig, std::string param, float alpha) {
|
52
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
53
|
+
jfieldID platformFieldId = env->GetFieldID(cls, "platform", "Lcom/unistyles/Platform;");
|
54
|
+
jobject platformInstance = env->GetObjectField(unistylesModule, platformFieldId);
|
55
|
+
jclass platformClass = env->GetObjectClass(platformInstance);
|
56
|
+
jstring strParam = env->NewStringUTF(param.c_str());
|
57
|
+
jmethodID methodId = env->GetMethodID(platformClass, name.c_str(), sig.c_str());
|
58
|
+
|
59
|
+
env->CallVoidMethod(platformInstance, methodId, strParam, static_cast<jfloat>(alpha));
|
60
|
+
|
61
|
+
env->DeleteLocalRef(cls);
|
62
|
+
env->DeleteLocalRef(platformInstance);
|
63
|
+
env->DeleteLocalRef(platformClass);
|
64
|
+
env->DeleteLocalRef(strParam);
|
65
|
+
}
|
66
|
+
|
67
|
+
void JNI_callPlatformWithBool(JNIEnv *env, jobject unistylesModule, std::string name, std::string sig, bool param) {
|
68
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
69
|
+
jfieldID platformFieldId = env->GetFieldID(cls, "platform", "Lcom/unistyles/Platform;");
|
70
|
+
jobject platformInstance = env->GetObjectField(unistylesModule, platformFieldId);
|
71
|
+
jclass platformClass = env->GetObjectClass(platformInstance);
|
72
|
+
jmethodID methodId = env->GetMethodID(platformClass, name.c_str(), sig.c_str());
|
73
|
+
|
74
|
+
env->CallVoidMethod(platformInstance, methodId, param);
|
75
|
+
env->DeleteLocalRef(cls);
|
76
|
+
env->DeleteLocalRef(platformInstance);
|
77
|
+
env->DeleteLocalRef(platformClass);
|
78
|
+
}
|
79
|
+
|
80
|
+
jobject JNI_callPlatform(JNIEnv *env, jobject unistylesModule, std::string name, std::string sig) {
|
81
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
82
|
+
jfieldID platformFieldId = env->GetFieldID(cls, "platform", "Lcom/unistyles/Platform;");
|
83
|
+
jobject platformInstance = env->GetObjectField(unistylesModule, platformFieldId);
|
84
|
+
jclass platformClass = env->GetObjectClass(platformInstance);
|
85
|
+
jmethodID methodId = env->GetMethodID(platformClass, name.c_str(), sig.c_str());
|
86
|
+
jobject result = env->CallObjectMethod(platformInstance, methodId);
|
87
|
+
|
88
|
+
env->DeleteLocalRef(cls);
|
89
|
+
env->DeleteLocalRef(platformInstance);
|
90
|
+
env->DeleteLocalRef(platformClass);
|
91
|
+
|
92
|
+
return result;
|
93
|
+
}
|
94
|
+
|
34
95
|
void throwKotlinException(
|
35
96
|
JNIEnv *env,
|
36
97
|
const char *message
|
@@ -1,9 +1,16 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
1
3
|
#include <jni.h>
|
2
4
|
#include <string>
|
3
5
|
#include <map>
|
4
6
|
#include <UnistylesRuntime.h>
|
5
7
|
|
6
8
|
Dimensions jobjectToDimensions(JNIEnv *env, jobject dimensionObj);
|
9
|
+
Screen jobjectToScreen(JNIEnv *env, jobject screenObj);
|
7
10
|
Insets jobjectToInsets(JNIEnv *env, jobject insetsObj);
|
8
11
|
|
12
|
+
void JNI_callPlatformWithColor(JNIEnv *env, jobject unistylesModule, std::string name, std::string sig, std::string param, float alpha);
|
13
|
+
jobject JNI_callPlatform(JNIEnv *env, jobject unistylesModule, std::string name, std::string sig);
|
14
|
+
void JNI_callPlatformWithBool(JNIEnv *env, jobject unistylesModule, std::string name, std::string sig, bool param);
|
15
|
+
|
9
16
|
void throwKotlinException(JNIEnv *env, const char *message);
|
@@ -0,0 +1,170 @@
|
|
1
|
+
#include "platform.h"
|
2
|
+
|
3
|
+
void makeShared(JNIEnv *env, jobject unistylesModule, std::shared_ptr<UnistylesRuntime> unistylesRuntime) {
|
4
|
+
unistylesRuntime->setScreenDimensionsCallback([&](){
|
5
|
+
return getScreenDimensions(env, unistylesModule);
|
6
|
+
});
|
7
|
+
|
8
|
+
unistylesRuntime->setColorSchemeCallback([&](){
|
9
|
+
return getColorScheme(env, unistylesModule);
|
10
|
+
});
|
11
|
+
|
12
|
+
unistylesRuntime->setStatusBarDimensionsCallback([&](){
|
13
|
+
return getStatusBarDimensions(env, unistylesModule);
|
14
|
+
});
|
15
|
+
|
16
|
+
unistylesRuntime->setNavigationBarDimensionsCallback([&](){
|
17
|
+
return getNavigationBarDimensions(env, unistylesModule);
|
18
|
+
});
|
19
|
+
|
20
|
+
unistylesRuntime->setInsetsCallback([&](){
|
21
|
+
return getInsets(env, unistylesModule);
|
22
|
+
});
|
23
|
+
|
24
|
+
unistylesRuntime->setContentSizeCategoryCallback([&](){
|
25
|
+
return getContentSizeCategory(env, unistylesModule);
|
26
|
+
});
|
27
|
+
|
28
|
+
unistylesRuntime->setNavigationBarColorCallback([=](const std::string &color, float alpha) {
|
29
|
+
setNavigationBarColor(env, unistylesModule, color, alpha);
|
30
|
+
});
|
31
|
+
|
32
|
+
unistylesRuntime->setStatusBarColorCallback([=](const std::string &color, float alpha) {
|
33
|
+
setStatusBarColor(env, unistylesModule, color, alpha);
|
34
|
+
});
|
35
|
+
|
36
|
+
unistylesRuntime->setNavigationBarHiddenCallback([=](bool hidden) {
|
37
|
+
setNavigationBarHidden(env, unistylesModule, hidden);
|
38
|
+
});
|
39
|
+
|
40
|
+
unistylesRuntime->setStatusBarHiddenCallback([=](bool hidden) {
|
41
|
+
setStatusBarHidden(env, unistylesModule, hidden);
|
42
|
+
});
|
43
|
+
|
44
|
+
unistylesRuntime->setImmersiveModeCallback([=](bool enabled) {
|
45
|
+
setImmersiveMode(env, unistylesModule, enabled);
|
46
|
+
});
|
47
|
+
|
48
|
+
unistylesRuntime->setRootViewBackgroundColorCallback([=](const std::string &color, float alpha) {
|
49
|
+
setRootViewBackgroundColor(env, unistylesModule, color, alpha);
|
50
|
+
});
|
51
|
+
|
52
|
+
unistylesRuntime->setDisableAnimatedInsetsAndroidCallback([=]() {
|
53
|
+
disableAnimatedInsets(env, unistylesModule);
|
54
|
+
});
|
55
|
+
|
56
|
+
Screen screen = getScreenDimensions(env, unistylesModule);
|
57
|
+
|
58
|
+
unistylesRuntime->screen = Dimensions{screen.width, screen.height};
|
59
|
+
unistylesRuntime->contentSizeCategory = getContentSizeCategory(env, unistylesModule);
|
60
|
+
unistylesRuntime->colorScheme = getColorScheme(env, unistylesModule);
|
61
|
+
unistylesRuntime->statusBar = getStatusBarDimensions(env, unistylesModule);
|
62
|
+
unistylesRuntime->insets = getInsets(env, unistylesModule);
|
63
|
+
unistylesRuntime->navigationBar = getNavigationBarDimensions(env, unistylesModule);
|
64
|
+
unistylesRuntime->fontScale = screen.fontScale;
|
65
|
+
unistylesRuntime->pixelRatio = screen.pixelRatio;
|
66
|
+
unistylesRuntime->rtl = getIsRTL(env, unistylesModule);
|
67
|
+
}
|
68
|
+
|
69
|
+
void disableAnimatedInsets(JNIEnv *env, jobject unistylesModule) {
|
70
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
71
|
+
jfieldID platformFieldId = env->GetFieldID(cls, "platform", "Lcom/unistyles/Platform;");
|
72
|
+
jobject platformInstance = env->GetObjectField(unistylesModule, platformFieldId);
|
73
|
+
jclass platformClass = env->GetObjectClass(platformInstance);
|
74
|
+
jmethodID methodId = env->GetMethodID(platformClass, "disableAnimatedInsets", "()V");
|
75
|
+
|
76
|
+
env->CallVoidMethod(platformInstance, methodId);
|
77
|
+
|
78
|
+
env->DeleteLocalRef(cls);
|
79
|
+
env->DeleteLocalRef(platformInstance);
|
80
|
+
env->DeleteLocalRef(platformClass);
|
81
|
+
}
|
82
|
+
|
83
|
+
Screen getScreenDimensions(JNIEnv *env, jobject unistylesModule) {
|
84
|
+
jobject result = JNI_callPlatform(env, unistylesModule, "getScreenDimensions", "()Lcom/unistyles/Screen;");
|
85
|
+
Screen screenDimensions = jobjectToScreen(env, result);
|
86
|
+
|
87
|
+
return screenDimensions;
|
88
|
+
}
|
89
|
+
|
90
|
+
std::string getColorScheme(JNIEnv *env, jobject unistylesModule) {
|
91
|
+
jstring colorScheme = (jstring) JNI_callPlatform(env, unistylesModule, "getColorScheme", "()Ljava/lang/String;");
|
92
|
+
const char *colorSchemeChars = env->GetStringUTFChars(colorScheme, nullptr);
|
93
|
+
std::string colorSchemeStr = std::string(colorSchemeChars);
|
94
|
+
|
95
|
+
env->ReleaseStringUTFChars(colorScheme, colorSchemeChars);
|
96
|
+
env->DeleteLocalRef(colorScheme);
|
97
|
+
|
98
|
+
return colorSchemeStr;
|
99
|
+
}
|
100
|
+
|
101
|
+
bool getIsRTL(JNIEnv *env, jobject unistylesModule) {
|
102
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
103
|
+
jfieldID platformFieldId = env->GetFieldID(cls, "platform", "Lcom/unistyles/Platform;");
|
104
|
+
jobject platformInstance = env->GetObjectField(unistylesModule, platformFieldId);
|
105
|
+
jclass platformClass = env->GetObjectClass(platformInstance);
|
106
|
+
jmethodID methodId = env->GetMethodID(platformClass, "getIsRTL", "()Z");
|
107
|
+
jboolean result = env->CallBooleanMethod(platformInstance, methodId);
|
108
|
+
|
109
|
+
env->DeleteLocalRef(cls);
|
110
|
+
env->DeleteLocalRef(platformInstance);
|
111
|
+
env->DeleteLocalRef(platformClass);
|
112
|
+
|
113
|
+
return result;
|
114
|
+
}
|
115
|
+
|
116
|
+
Dimensions getStatusBarDimensions(JNIEnv *env, jobject unistylesModule) {
|
117
|
+
jobject dimensionsObj = JNI_callPlatform(env, unistylesModule, "getStatusBarDimensions", "()Lcom/unistyles/Dimensions;");
|
118
|
+
Dimensions statusBarDimensions = jobjectToDimensions(env, dimensionsObj);
|
119
|
+
|
120
|
+
return statusBarDimensions;
|
121
|
+
}
|
122
|
+
|
123
|
+
Dimensions getNavigationBarDimensions(JNIEnv *env, jobject unistylesModule) {
|
124
|
+
jobject dimensionsObj = JNI_callPlatform(env, unistylesModule, "getNavigationBarDimensions", "()Lcom/unistyles/Dimensions;");
|
125
|
+
Dimensions navigationBarDimensions = jobjectToDimensions(env, dimensionsObj);
|
126
|
+
|
127
|
+
return navigationBarDimensions;
|
128
|
+
}
|
129
|
+
|
130
|
+
Insets getInsets(JNIEnv *env, jobject unistylesModule) {
|
131
|
+
jobject insetsObj = JNI_callPlatform(env, unistylesModule, "getInsets", "()Lcom/unistyles/Insets;");
|
132
|
+
Insets insets = jobjectToInsets(env, insetsObj);
|
133
|
+
|
134
|
+
return insets;
|
135
|
+
}
|
136
|
+
|
137
|
+
std::string getContentSizeCategory(JNIEnv *env, jobject unistylesModule) {
|
138
|
+
jstring contentSizeCategory = (jstring) JNI_callPlatform(env, unistylesModule, "getContentSizeCategory", "()Ljava/lang/String;");
|
139
|
+
const char *contentSizeCategoryChars = env->GetStringUTFChars(contentSizeCategory, nullptr);
|
140
|
+
std::string contentSizeCategoryStr = std::string(contentSizeCategoryChars);
|
141
|
+
|
142
|
+
env->ReleaseStringUTFChars(contentSizeCategory, contentSizeCategoryChars);
|
143
|
+
env->DeleteLocalRef(contentSizeCategory);
|
144
|
+
|
145
|
+
return contentSizeCategoryStr;
|
146
|
+
}
|
147
|
+
|
148
|
+
void setStatusBarColor(JNIEnv *env, jobject unistylesModule, std::string color, float alpha) {
|
149
|
+
JNI_callPlatformWithColor(env, unistylesModule, "onSetStatusBarColor", "(Ljava/lang/String;F)V", color, alpha);
|
150
|
+
}
|
151
|
+
|
152
|
+
void setNavigationBarColor(JNIEnv *env, jobject unistylesModule, std::string color, float alpha) {
|
153
|
+
JNI_callPlatformWithColor(env, unistylesModule, "onSetNavigationBarColor", "(Ljava/lang/String;F)V", color, alpha);
|
154
|
+
}
|
155
|
+
|
156
|
+
void setNavigationBarHidden(JNIEnv *env, jobject unistylesModule, bool hidden) {
|
157
|
+
JNI_callPlatformWithBool(env, unistylesModule, "onSetNavigationBarHidden", "(Z)V", hidden);
|
158
|
+
}
|
159
|
+
|
160
|
+
void setStatusBarHidden(JNIEnv *env, jobject unistylesModule, bool hidden) {
|
161
|
+
JNI_callPlatformWithBool(env, unistylesModule, "onSetStatusBarHidden", "(Z)V", hidden);
|
162
|
+
}
|
163
|
+
|
164
|
+
void setImmersiveMode(JNIEnv *env, jobject unistylesModule, bool enabled) {
|
165
|
+
JNI_callPlatformWithBool(env, unistylesModule, "onSetImmersiveMode", "(Z)V", enabled);
|
166
|
+
}
|
167
|
+
|
168
|
+
void setRootViewBackgroundColor(JNIEnv *env, jobject unistylesModule, std::string color, float alpha) {
|
169
|
+
JNI_callPlatformWithColor(env, unistylesModule, "onSetRootViewBackgroundColor", "(Ljava/lang/String;F)V", color, alpha);
|
170
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "UnistylesRuntime.h"
|
4
|
+
#include "helpers.h"
|
5
|
+
|
6
|
+
void makeShared(JNIEnv *env, jobject unistylesModule, std::shared_ptr<UnistylesRuntime> unistylesRuntime);
|
7
|
+
Screen getScreenDimensions(JNIEnv *env, jobject unistylesModule);
|
8
|
+
std::string getColorScheme(JNIEnv *env, jobject unistylesModule);
|
9
|
+
Dimensions getStatusBarDimensions(JNIEnv *env, jobject unistylesModule);
|
10
|
+
Dimensions getNavigationBarDimensions(JNIEnv *env, jobject unistylesModule);
|
11
|
+
void setNavigationBarHidden(JNIEnv *env, jobject unistylesModule, bool hidden);
|
12
|
+
void setStatusBarHidden(JNIEnv *env, jobject unistylesModule, bool hidden);
|
13
|
+
void setImmersiveMode(JNIEnv *env, jobject unistylesModule, bool hidden);
|
14
|
+
void setRootViewBackgroundColor(JNIEnv *env, jobject unistylesModule, std::string color, float alpha);
|
15
|
+
Insets getInsets(JNIEnv *env, jobject unistylesModule);
|
16
|
+
bool getIsRTL(JNIEnv *env, jobject unistylesModule);
|
17
|
+
std::string getContentSizeCategory(JNIEnv *env, jobject unistylesModule);
|
18
|
+
void setNavigationBarColor(JNIEnv *env, jobject unistylesModule, std::string color, float alpha);
|
19
|
+
void setStatusBarColor(JNIEnv *env, jobject unistylesModule, std::string color, float alpha);
|
20
|
+
void disableAnimatedInsets(JNIEnv *env, jobject unistylesModule);
|