react-native-unistyles 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +1 -1
- package/README.md +30 -38
- package/android/CMakeLists.txt +27 -0
- package/android/build.gradle +75 -0
- package/android/src/main/cxx/cpp-adapter.cpp +132 -0
- package/android/src/main/java/com/unistyles/UnistylesModule.kt +189 -0
- package/android/src/main/java/com/unistyles/UnistylesPackage.kt +18 -0
- package/cxx/UnistylesRuntime.cpp +318 -0
- package/cxx/UnistylesRuntime.h +74 -0
- package/ios/UnistylesHelpers.h +3 -0
- package/ios/UnistylesHelpers.mm +5 -0
- package/ios/UnistylesModule.h +16 -0
- package/ios/UnistylesModule.mm +138 -0
- package/ios/platform/Platform_iOS.h +21 -0
- package/ios/platform/Platform_iOS.mm +132 -0
- package/ios/platform/Platform_macOS.h +20 -0
- package/ios/platform/Platform_macOS.mm +83 -0
- package/lib/commonjs/common.js +60 -0
- package/lib/commonjs/common.js.map +1 -0
- package/lib/commonjs/core/UnistyleRegistry.js +94 -0
- package/lib/commonjs/core/UnistyleRegistry.js.map +1 -0
- package/lib/commonjs/core/Unistyles.js +32 -0
- package/lib/commonjs/core/Unistyles.js.map +1 -0
- package/lib/commonjs/core/UnistylesModule.js +197 -0
- package/lib/commonjs/core/UnistylesModule.js.map +1 -0
- package/lib/commonjs/core/UnistylesModule.native.js +9 -0
- package/lib/commonjs/core/UnistylesModule.native.js.map +1 -0
- package/lib/commonjs/core/UnistylesRuntime.js +140 -0
- package/lib/commonjs/core/UnistylesRuntime.js.map +1 -0
- package/lib/commonjs/core/index.js +13 -0
- package/lib/commonjs/core/index.js.map +1 -0
- package/lib/commonjs/createStyleSheet.js +14 -0
- package/lib/commonjs/createStyleSheet.js.map +1 -0
- package/lib/commonjs/global.js +2 -0
- package/lib/commonjs/global.js.map +1 -0
- package/lib/commonjs/hooks/index.js +24 -3
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useCSS.js +44 -0
- package/lib/commonjs/hooks/useCSS.js.map +1 -0
- package/lib/commonjs/hooks/useCSS.native.js +9 -0
- package/lib/commonjs/hooks/useCSS.native.js.map +1 -0
- package/lib/commonjs/hooks/useInitialTheme.js +17 -0
- package/lib/commonjs/hooks/useInitialTheme.js.map +1 -0
- package/lib/commonjs/hooks/useUnistyles.js +64 -0
- package/lib/commonjs/hooks/useUnistyles.js.map +1 -0
- package/lib/commonjs/hooks/useVariants.js +14 -0
- package/lib/commonjs/hooks/useVariants.js.map +1 -0
- package/lib/commonjs/index.js +63 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/normalizer/index.js +32 -0
- package/lib/commonjs/normalizer/index.js.map +1 -0
- package/lib/commonjs/normalizer/module.d.js.map +1 -0
- package/lib/commonjs/{utils/normalizeStyles.web.js → normalizer/normalizeStyle.js} +5 -5
- package/lib/commonjs/normalizer/normalizeStyle.js.map +1 -0
- package/lib/commonjs/{utils → normalizer}/normalizer.js +2 -3
- package/lib/commonjs/normalizer/normalizer.js.map +1 -0
- package/lib/commonjs/normalizer/normalizer.macos.js +3 -0
- package/lib/commonjs/normalizer/normalizer.macos.js.map +1 -0
- package/lib/commonjs/plugins/cssMediaQueriesPlugin.js +14 -0
- package/lib/commonjs/plugins/cssMediaQueriesPlugin.js.map +1 -0
- package/lib/commonjs/plugins/index.js +20 -0
- package/lib/commonjs/plugins/index.js.map +1 -0
- package/lib/commonjs/plugins/normalizeWebStylesPlugin.js +12 -0
- package/lib/commonjs/plugins/normalizeWebStylesPlugin.js.map +1 -0
- package/lib/commonjs/types/common.js +2 -0
- package/lib/{module/utils/module.d.js.map → commonjs/types/common.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/plugin.js +6 -0
- package/lib/commonjs/{utils/module.d.js.map → types/plugin.js.map} +1 -1
- package/lib/commonjs/types/stylesheet.js +6 -0
- package/lib/commonjs/types/{mediaQueries.js.map → stylesheet.js.map} +1 -1
- package/lib/commonjs/types/unistyles.js +6 -0
- package/lib/{module/types/mediaQueries.js.map → commonjs/types/unistyles.js.map} +1 -1
- package/lib/commonjs/types/variants.js +2 -0
- package/lib/commonjs/types/variants.js.map +1 -0
- package/lib/commonjs/useStyles.js +47 -0
- package/lib/commonjs/useStyles.js.map +1 -0
- package/lib/commonjs/utils/breakpoints.js +20 -122
- package/lib/commonjs/utils/breakpoints.js.map +1 -1
- package/lib/commonjs/utils/cssMediaQuery.js +244 -0
- package/lib/commonjs/utils/cssMediaQuery.js.map +1 -0
- package/lib/commonjs/utils/generateId.js +15 -0
- package/lib/commonjs/utils/generateId.js.map +1 -0
- package/lib/commonjs/utils/hash32.js +43 -0
- package/lib/commonjs/utils/hash32.js.map +1 -0
- package/lib/commonjs/utils/index.js +22 -54
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/mq.js +38 -0
- package/lib/commonjs/utils/mq.js.map +1 -0
- package/lib/commonjs/utils/mqParser.js +89 -0
- package/lib/commonjs/utils/mqParser.js.map +1 -0
- package/lib/commonjs/utils/styles.js +45 -72
- package/lib/commonjs/utils/styles.js.map +1 -1
- package/lib/commonjs/utils/withPlugins.js +15 -0
- package/lib/commonjs/utils/withPlugins.js.map +1 -0
- package/lib/module/common.js +53 -0
- package/lib/module/common.js.map +1 -0
- package/lib/module/core/UnistyleRegistry.js +87 -0
- package/lib/module/core/UnistyleRegistry.js.map +1 -0
- package/lib/module/core/Unistyles.js +26 -0
- package/lib/module/core/Unistyles.js.map +1 -0
- package/lib/module/core/UnistylesModule.js +190 -0
- package/lib/module/core/UnistylesModule.js.map +1 -0
- package/lib/module/core/UnistylesModule.native.js +3 -0
- package/lib/module/core/UnistylesModule.native.js.map +1 -0
- package/lib/module/core/UnistylesRuntime.js +133 -0
- package/lib/module/core/UnistylesRuntime.js.map +1 -0
- package/lib/module/core/index.js +2 -0
- package/lib/module/core/index.js.map +1 -0
- package/lib/module/createStyleSheet.js +7 -0
- package/lib/module/createStyleSheet.js.map +1 -0
- package/lib/module/global.js +2 -0
- package/lib/module/global.js.map +1 -0
- package/lib/module/hooks/index.js +4 -1
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useCSS.js +37 -0
- package/lib/module/hooks/useCSS.js.map +1 -0
- package/lib/module/hooks/useCSS.native.js +2 -0
- package/lib/module/hooks/useCSS.native.js.map +1 -0
- package/lib/module/hooks/useInitialTheme.js +10 -0
- package/lib/module/hooks/useInitialTheme.js.map +1 -0
- package/lib/module/hooks/useUnistyles.js +57 -0
- package/lib/module/hooks/useUnistyles.js.map +1 -0
- package/lib/module/hooks/useVariants.js +7 -0
- package/lib/module/hooks/useVariants.js.map +1 -0
- package/lib/module/index.js +30 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/normalizer/index.js +3 -0
- package/lib/module/normalizer/index.js.map +1 -0
- package/lib/module/normalizer/module.d.js.map +1 -0
- package/lib/module/{utils/normalizeStyles.web.js → normalizer/normalizeStyle.js} +3 -3
- package/lib/module/normalizer/normalizeStyle.js.map +1 -0
- package/lib/module/{utils → normalizer}/normalizer.js +2 -3
- package/lib/module/normalizer/normalizer.js.map +1 -0
- package/lib/module/normalizer/normalizer.macos.js +2 -0
- package/lib/module/normalizer/normalizer.macos.js.map +1 -0
- package/lib/module/plugins/cssMediaQueriesPlugin.js +7 -0
- package/lib/module/plugins/cssMediaQueriesPlugin.js.map +1 -0
- package/lib/module/plugins/index.js +3 -0
- package/lib/module/plugins/index.js.map +1 -0
- package/lib/module/plugins/normalizeWebStylesPlugin.js +6 -0
- package/lib/module/plugins/normalizeWebStylesPlugin.js.map +1 -0
- package/lib/module/types/common.js +2 -0
- package/lib/module/types/common.js.map +1 -0
- package/lib/module/types/index.js +1 -0
- package/lib/module/types/index.js.map +1 -1
- package/lib/module/types/plugin.js +2 -0
- package/lib/module/types/plugin.js.map +1 -0
- package/lib/module/types/stylesheet.js +2 -0
- package/lib/module/types/stylesheet.js.map +1 -0
- package/lib/module/types/unistyles.js +2 -0
- package/lib/module/types/unistyles.js.map +1 -0
- package/lib/module/types/variants.js +2 -0
- package/lib/module/types/variants.js.map +1 -0
- package/lib/module/useStyles.js +40 -0
- package/lib/module/useStyles.js.map +1 -0
- package/lib/module/utils/breakpoints.js +19 -120
- package/lib/module/utils/breakpoints.js.map +1 -1
- package/lib/module/utils/cssMediaQuery.js +237 -0
- package/lib/module/utils/cssMediaQuery.js.map +1 -0
- package/lib/module/utils/generateId.js +7 -0
- package/lib/module/utils/generateId.js.map +1 -0
- package/lib/module/utils/hash32.js +36 -0
- package/lib/module/utils/hash32.js.map +1 -0
- package/lib/module/utils/index.js +6 -6
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/mq.js +32 -0
- package/lib/module/utils/mq.js.map +1 -0
- package/lib/module/utils/mqParser.js +78 -0
- package/lib/module/utils/mqParser.js.map +1 -0
- package/lib/module/utils/styles.js +44 -72
- package/lib/module/utils/styles.js.map +1 -1
- package/lib/module/utils/withPlugins.js +8 -0
- package/lib/module/utils/withPlugins.js.map +1 -0
- package/lib/typescript/src/common.d.ts +46 -0
- package/lib/typescript/src/common.d.ts.map +1 -0
- package/lib/typescript/src/core/UnistyleRegistry.d.ts +56 -0
- package/lib/typescript/src/core/UnistyleRegistry.d.ts.map +1 -0
- package/lib/typescript/src/core/Unistyles.d.ts +13 -0
- package/lib/typescript/src/core/Unistyles.d.ts.map +1 -0
- package/lib/typescript/src/core/UnistylesModule.d.ts +19 -0
- package/lib/typescript/src/core/UnistylesModule.d.ts.map +1 -0
- package/lib/typescript/src/core/UnistylesModule.native.d.ts +6 -0
- package/lib/typescript/src/core/UnistylesModule.native.d.ts.map +1 -0
- package/lib/typescript/src/core/UnistylesRuntime.d.ts +81 -0
- package/lib/typescript/src/core/UnistylesRuntime.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +3 -0
- package/lib/typescript/src/core/index.d.ts.map +1 -0
- package/lib/typescript/src/createStyleSheet.d.ts +8 -0
- package/lib/typescript/src/createStyleSheet.d.ts.map +1 -0
- package/lib/typescript/src/global.d.ts +7 -0
- package/lib/typescript/src/global.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +4 -1
- package/lib/typescript/src/hooks/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useCSS.d.ts +3 -0
- package/lib/typescript/src/hooks/useCSS.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useCSS.native.d.ts +3 -0
- package/lib/typescript/src/hooks/useCSS.native.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useInitialTheme.d.ts +3 -0
- package/lib/typescript/src/hooks/useInitialTheme.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useUnistyles.d.ts +14 -0
- package/lib/typescript/src/hooks/useUnistyles.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useVariants.d.ts +3 -0
- package/lib/typescript/src/hooks/useVariants.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +76 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/normalizer/index.d.ts +3 -0
- package/lib/typescript/src/normalizer/index.d.ts.map +1 -0
- package/lib/typescript/src/normalizer/normalizeStyle.d.ts +3 -0
- package/lib/typescript/src/normalizer/normalizeStyle.d.ts.map +1 -0
- package/lib/typescript/src/normalizer/normalizer.d.ts.map +1 -0
- package/lib/typescript/src/normalizer/normalizer.macos.d.ts +1 -0
- package/lib/typescript/src/normalizer/normalizer.macos.d.ts.map +1 -0
- package/lib/typescript/src/plugins/cssMediaQueriesPlugin.d.ts +3 -0
- package/lib/typescript/src/plugins/cssMediaQueriesPlugin.d.ts.map +1 -0
- package/lib/typescript/src/plugins/index.d.ts +3 -0
- package/lib/typescript/src/plugins/index.d.ts.map +1 -0
- package/lib/typescript/src/plugins/normalizeWebStylesPlugin.d.ts +3 -0
- package/lib/typescript/src/plugins/normalizeWebStylesPlugin.d.ts.map +1 -0
- package/lib/typescript/src/types/breakpoints.d.ts +25 -17
- package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/types/common.d.ts +3 -0
- package/lib/typescript/src/types/common.d.ts.map +1 -0
- package/lib/typescript/src/types/core.d.ts +11 -25
- package/lib/typescript/src/types/core.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +7 -2
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/plugin.d.ts +7 -0
- package/lib/typescript/src/types/plugin.d.ts.map +1 -0
- package/lib/typescript/src/types/stylesheet.d.ts +40 -0
- package/lib/typescript/src/types/stylesheet.d.ts.map +1 -0
- package/lib/typescript/src/types/unistyles.d.ts +53 -0
- package/lib/typescript/src/types/unistyles.d.ts.map +1 -0
- package/lib/typescript/src/types/variants.d.ts +14 -0
- package/lib/typescript/src/types/variants.d.ts.map +1 -0
- package/lib/typescript/src/useStyles.d.ts +16 -0
- package/lib/typescript/src/useStyles.d.ts.map +1 -0
- package/lib/typescript/src/utils/breakpoints.d.ts +2 -62
- package/lib/typescript/src/utils/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/utils/cssMediaQuery.d.ts +4 -0
- package/lib/typescript/src/utils/cssMediaQuery.d.ts.map +1 -0
- package/lib/typescript/src/utils/generateId.d.ts +2 -0
- package/lib/typescript/src/utils/generateId.d.ts.map +1 -0
- package/lib/typescript/src/utils/hash32.d.ts +2 -0
- package/lib/typescript/src/utils/hash32.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +7 -6
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/mq.d.ts +26 -0
- package/lib/typescript/src/utils/mq.d.ts.map +1 -0
- package/lib/typescript/src/utils/mqParser.d.ts +16 -0
- package/lib/typescript/src/utils/mqParser.d.ts.map +1 -0
- package/lib/typescript/src/utils/styles.d.ts +3 -49
- package/lib/typescript/src/utils/styles.d.ts.map +1 -1
- package/lib/typescript/src/utils/withPlugins.d.ts +3 -0
- package/lib/typescript/src/utils/withPlugins.d.ts.map +1 -0
- package/package.json +46 -25
- package/react-native-unistyles.podspec +22 -0
- package/src/__tests__/mocks.ts +24 -0
- package/src/common.ts +55 -0
- package/src/core/UnistyleRegistry.ts +108 -0
- package/src/core/Unistyles.ts +35 -0
- package/src/core/UnistylesModule.native.ts +7 -0
- package/src/core/UnistylesModule.ts +230 -0
- package/src/core/UnistylesRuntime.ts +135 -0
- package/src/core/index.ts +2 -0
- package/src/createStyleSheet.ts +8 -0
- package/src/global.ts +6 -0
- package/src/hooks/index.ts +4 -1
- package/src/hooks/useCSS.native.ts +3 -0
- package/src/hooks/useCSS.ts +51 -0
- package/src/hooks/useInitialTheme.ts +11 -0
- package/src/hooks/useUnistyles.ts +64 -0
- package/src/hooks/useVariants.ts +10 -0
- package/src/index.ts +50 -2
- package/src/normalizer/index.ts +2 -0
- package/src/{utils/normalizeStyles.web.ts → normalizer/normalizeStyle.ts} +3 -3
- package/src/normalizer/normalizer.macos.ts +1 -0
- package/src/{utils → normalizer}/normalizer.ts +5 -4
- package/src/plugins/cssMediaQueriesPlugin.ts +8 -0
- package/src/plugins/index.ts +2 -0
- package/src/plugins/normalizeWebStylesPlugin.ts +7 -0
- package/src/types/breakpoints.ts +58 -33
- package/src/types/common.ts +2 -0
- package/src/types/core.ts +11 -36
- package/src/types/index.ts +12 -7
- package/src/types/plugin.ts +7 -0
- package/src/types/stylesheet.ts +49 -0
- package/src/types/unistyles.ts +63 -0
- package/src/types/variants.ts +19 -0
- package/src/useStyles.ts +60 -0
- package/src/utils/breakpoints.ts +28 -124
- package/src/utils/cssMediaQuery.ts +268 -0
- package/src/utils/generateId.ts +10 -0
- package/src/utils/hash32.ts +53 -0
- package/src/utils/index.ts +7 -13
- package/src/utils/mq.ts +57 -0
- package/src/utils/mqParser.ts +99 -0
- package/src/utils/styles.ts +54 -102
- package/src/utils/withPlugins.ts +13 -0
- package/lib/commonjs/UnistylesTheme.js +0 -21
- package/lib/commonjs/UnistylesTheme.js.map +0 -1
- package/lib/commonjs/createUnistyles.js +0 -57
- package/lib/commonjs/createUnistyles.js.map +0 -1
- package/lib/commonjs/hooks/useDimensions.js +0 -10
- package/lib/commonjs/hooks/useDimensions.js.map +0 -1
- package/lib/commonjs/hooks/useDimensions.web.js +0 -34
- package/lib/commonjs/hooks/useDimensions.web.js.map +0 -1
- package/lib/commonjs/types/mediaQueries.js +0 -2
- package/lib/commonjs/utils/common.js +0 -20
- package/lib/commonjs/utils/common.js.map +0 -1
- package/lib/commonjs/utils/mediaQueries.js +0 -189
- package/lib/commonjs/utils/mediaQueries.js.map +0 -1
- package/lib/commonjs/utils/normalizeStyles.js +0 -10
- package/lib/commonjs/utils/normalizeStyles.js.map +0 -1
- package/lib/commonjs/utils/normalizeStyles.web.js.map +0 -1
- package/lib/commonjs/utils/normalizer.js.map +0 -1
- package/lib/module/UnistylesTheme.js +0 -12
- package/lib/module/UnistylesTheme.js.map +0 -1
- package/lib/module/createUnistyles.js +0 -50
- package/lib/module/createUnistyles.js.map +0 -1
- package/lib/module/hooks/useDimensions.js +0 -3
- package/lib/module/hooks/useDimensions.js.map +0 -1
- package/lib/module/hooks/useDimensions.web.js +0 -27
- package/lib/module/hooks/useDimensions.web.js.map +0 -1
- package/lib/module/types/mediaQueries.js +0 -2
- package/lib/module/utils/common.js +0 -12
- package/lib/module/utils/common.js.map +0 -1
- package/lib/module/utils/mediaQueries.js +0 -176
- package/lib/module/utils/mediaQueries.js.map +0 -1
- package/lib/module/utils/normalizeStyles.js +0 -3
- package/lib/module/utils/normalizeStyles.js.map +0 -1
- package/lib/module/utils/normalizeStyles.web.js.map +0 -1
- package/lib/module/utils/normalizer.js.map +0 -1
- package/lib/typescript/examples/expo/src/App.d.ts +0 -3
- package/lib/typescript/examples/expo/src/App.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/Breakpoints.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/Breakpoints.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/EmptyStyles.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/EmptyStyles.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/Extreme.d.ts +0 -7
- package/lib/typescript/examples/expo/src/examples/Extreme.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/MediaQueries.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/MediaQueries.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/Memoization.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/Memoization.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/Minimal.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/Minimal.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/MinimalWithCreateStyleSheet.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/MinimalWithCreateStyleSheet.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/PlatformColors.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/PlatformColors.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/Theme.d.ts +0 -3
- package/lib/typescript/examples/expo/src/examples/Theme.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/examples/index.d.ts +0 -9
- package/lib/typescript/examples/expo/src/examples/index.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/index.d.ts +0 -2
- package/lib/typescript/examples/expo/src/index.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/styles/breakpoints.d.ts +0 -8
- package/lib/typescript/examples/expo/src/styles/breakpoints.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/styles/index.d.ts +0 -46
- package/lib/typescript/examples/expo/src/styles/index.d.ts.map +0 -1
- package/lib/typescript/examples/expo/src/styles/theme.d.ts +0 -24
- package/lib/typescript/examples/expo/src/styles/theme.d.ts.map +0 -1
- package/lib/typescript/src/UnistylesTheme.d.ts +0 -9
- package/lib/typescript/src/UnistylesTheme.d.ts.map +0 -1
- package/lib/typescript/src/createUnistyles.d.ts +0 -10
- package/lib/typescript/src/createUnistyles.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useDimensions.d.ts +0 -3
- package/lib/typescript/src/hooks/useDimensions.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useDimensions.web.d.ts +0 -3
- package/lib/typescript/src/hooks/useDimensions.web.d.ts.map +0 -1
- package/lib/typescript/src/types/mediaQueries.d.ts +0 -8
- package/lib/typescript/src/types/mediaQueries.d.ts.map +0 -1
- package/lib/typescript/src/utils/common.d.ts +0 -7
- package/lib/typescript/src/utils/common.d.ts.map +0 -1
- package/lib/typescript/src/utils/mediaQueries.d.ts +0 -130
- package/lib/typescript/src/utils/mediaQueries.d.ts.map +0 -1
- package/lib/typescript/src/utils/normalizeStyles.d.ts +0 -2
- package/lib/typescript/src/utils/normalizeStyles.d.ts.map +0 -1
- package/lib/typescript/src/utils/normalizeStyles.web.d.ts +0 -5
- package/lib/typescript/src/utils/normalizeStyles.web.d.ts.map +0 -1
- package/lib/typescript/src/utils/normalizer.d.ts.map +0 -1
- package/src/UnistylesTheme.tsx +0 -17
- package/src/__tests__/createUnistyles.spec.tsx +0 -192
- package/src/createUnistyles.ts +0 -70
- package/src/hooks/useDimensions.ts +0 -4
- package/src/hooks/useDimensions.web.ts +0 -34
- package/src/types/mediaQueries.ts +0 -10
- package/src/utils/common.ts +0 -14
- package/src/utils/mediaQueries.ts +0 -201
- package/src/utils/normalizeStyles.ts +0 -2
- /package/lib/commonjs/{utils → normalizer}/module.d.js +0 -0
- /package/lib/module/{utils → normalizer}/module.d.js +0 -0
- /package/lib/typescript/src/{utils → normalizer}/normalizer.d.ts +0 -0
- /package/src/{utils → normalizer}/module.d.ts +0 -0
package/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2023 Jacek Pudysz
|
3
|
+
Copyright (c) 2023-2024 Jacek Pudysz
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
6
6
|
in the Software without restriction, including without limitation the rights
|
package/README.md
CHANGED
@@ -1,55 +1,47 @@
|
|
1
|
-
[<img alt="react-native-unistyles" src="assets/banner.png">](https://
|
2
|
-
|
3
|
-
|
4
|
-
<picture>
|
5
|
-
<source media="(prefers-color-scheme: dark)" srcset="assets/uni-dark.svg">
|
6
|
-
<img alt="react-native-unistyles" src="assets/uni-light.svg">
|
7
|
-
</picture>
|
1
|
+
[<img alt="react-native-unistyles" src="assets/banner.png">](https://reactnativeunistyles.vercel.app/)
|
8
2
|
|
9
3
|
![GitHub package.json version](https://img.shields.io/github/package-json/v/jpudysz/react-native-unistyles?style=for-the-badge)
|
10
|
-
[![npm downloads](https://img.shields.io/npm/
|
11
|
-
![
|
12
|
-
|
4
|
+
[![npm downloads](https://img.shields.io/npm/dt/react-native-unistyles?style=for-the-badge)](https://www.npmjs.com/package/react-native-unistyles)
|
5
|
+
[![License: MIT](https://img.shields.io/badge/License-MIT-44CD11.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)
|
6
|
+
<br />
|
7
|
+
[![platform - expo](https://img.shields.io/badge/Expo-fff?style=for-the-badge&logo=expo&logoColor=black)](https://docs.expo.dev/)
|
8
|
+
[![platform - web](https://img.shields.io/badge/React_Native_Web-white?logo=react&logoColor=57BDDA&style=for-the-badge)](https://www.w3.org/)
|
9
|
+
[![platform - ios](https://img.shields.io/badge/iOS-000?logo=apple&style=for-the-badge)](https://developer.apple.com/ios/)
|
10
|
+
[![platform - macos](https://img.shields.io/badge/macOS-000?logo=apple&style=for-the-badge)](https://developer.apple.com/macos/)
|
11
|
+
[![platform - ssr](https://img.shields.io/badge/SSR-black?style=for-the-badge&logo=next.js&logoColor=white)](https://nextjs.org/)
|
12
|
+
[![platform - android](https://img.shields.io/badge/Android-44CD11?style=for-the-badge&logo=android&logoColor=white)](https://developer.android.com/)
|
13
|
+
|
14
|
+
## [Documentation](https://reactnativeunistyles.vercel.app/)
|
15
|
+
- [Start here](https://reactnativeunistyles.vercel.app/start/introduction/)
|
16
|
+
- [API](https://reactnativeunistyles.vercel.app/reference/create-stylesheet/)
|
17
|
+
- [Show case](https://reactnativeunistyles.vercel.app/show-case/projects/)
|
18
|
+
- [Examples](https://reactnativeunistyles.vercel.app/examples/all/)
|
13
19
|
|
14
20
|
## Features
|
15
|
-
-
|
21
|
+
- 🚀 Shared core with C++ and JSI bindings
|
22
|
+
- 🌉 Supports new architecture
|
23
|
+
- 🔥 Crazy performance, adds under 0.1 ms to your StyleSheet
|
16
24
|
- 🎳 Share up to 100% of your styles across platforms in monorepo
|
17
|
-
- 🎯 Doesn't introduce new components
|
18
|
-
-
|
19
|
-
-
|
20
|
-
-
|
21
|
-
- 🥳 Compatible with Expo,
|
25
|
+
- 🎯 Doesn't introduce new components, everything is packed in one hook
|
26
|
+
- ⚛️ No React Context
|
27
|
+
- 🖥️ Supports custom breakpoints, css-like media queries and variants
|
28
|
+
- 🎨 Register multiple themes and change them with single function call
|
29
|
+
- 🥳 Compatible with Expo, Bare React Native, React Native Web, React Native macOS and SSR
|
22
30
|
- 🛡️ ~99% Test coverage
|
31
|
+
- 🔌 Extend stylesheets with your own plugins
|
23
32
|
- ⚔️ No 3rd party dependencies
|
24
|
-
|
25
|
-
*-based on this [benchmark](https://github.com/efstathiosntonas/react-native-style-libraries-benchmark)
|
33
|
+
- and much much more!
|
26
34
|
|
27
35
|
## Installation
|
28
36
|
|
29
|
-
```
|
37
|
+
```shell
|
30
38
|
yarn add react-native-unistyles
|
31
39
|
```
|
32
40
|
|
33
|
-
##
|
34
|
-
|
35
|
-
- [References](https://reactnativeunistyles.vercel.app/reference/create-stylesheet/)
|
36
|
-
- [Examples](https://reactnativeunistyles.vercel.app/example/breakpoints/)
|
37
|
-
|
38
|
-
## Faster, better and simpler - v.2.0 🚀
|
39
|
-
|
40
|
-
There is ongoing work on branch [2.0](https://github.com/jpudysz/react-native-unistyles/tree/2.0).
|
41
|
-
|
42
|
-
---
|
43
|
-
|
44
|
-
Join early testers and discussion [here](https://github.com/jpudysz/react-native-unistyles/discussions/41).
|
45
|
-
|
46
|
-
```cmd
|
47
|
-
yarn add react-native-unistyles@next
|
48
|
-
```
|
49
|
-
|
50
|
-
## Blog post
|
41
|
+
## Discord
|
42
|
+
Looking for help or you want to chat with me?
|
51
43
|
|
52
|
-
|
44
|
+
[Join Discord](https://discord.gg/akGHf27P4C)
|
53
45
|
|
54
46
|
## Sponsor my work
|
55
47
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
cmake_minimum_required(VERSION 3.9.0)
|
2
|
+
|
3
|
+
project(unistyles)
|
4
|
+
|
5
|
+
add_library(unistyles
|
6
|
+
SHARED
|
7
|
+
../cxx/UnistylesRuntime.cpp
|
8
|
+
./src/main/cxx/cpp-adapter.cpp
|
9
|
+
)
|
10
|
+
|
11
|
+
include_directories(
|
12
|
+
../cxx
|
13
|
+
)
|
14
|
+
|
15
|
+
set_target_properties(unistyles PROPERTIES
|
16
|
+
CXX_STANDARD 17
|
17
|
+
CXX_STANDARD_REQUIRED ON
|
18
|
+
CXX_EXTENSIONS OFF
|
19
|
+
POSITION_INDEPENDENT_CODE ON
|
20
|
+
)
|
21
|
+
|
22
|
+
find_package(ReactAndroid REQUIRED CONFIG)
|
23
|
+
|
24
|
+
target_link_libraries(unistyles
|
25
|
+
ReactAndroid::jsi
|
26
|
+
android
|
27
|
+
)
|
@@ -0,0 +1,75 @@
|
|
1
|
+
buildscript {
|
2
|
+
ext.safeExtGet = {prop, fallback ->
|
3
|
+
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
4
|
+
}
|
5
|
+
repositories {
|
6
|
+
google()
|
7
|
+
gradlePluginPortal()
|
8
|
+
}
|
9
|
+
dependencies {
|
10
|
+
classpath("com.android.tools.build:gradle:7.3.1")
|
11
|
+
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.22")
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
apply plugin: 'com.android.library'
|
16
|
+
apply plugin: 'org.jetbrains.kotlin.android'
|
17
|
+
|
18
|
+
def resolveBuildType() {
|
19
|
+
Gradle gradle = getGradle()
|
20
|
+
String tskReqStr = gradle.getStartParameter().getTaskRequests()['args'].toString()
|
21
|
+
|
22
|
+
return tskReqStr.contains('Release') ? 'release' : 'debug'
|
23
|
+
}
|
24
|
+
|
25
|
+
def isNewArchitectureEnabled() {
|
26
|
+
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
|
27
|
+
}
|
28
|
+
|
29
|
+
if (isNewArchitectureEnabled()) {
|
30
|
+
apply plugin: 'com.facebook.react'
|
31
|
+
}
|
32
|
+
|
33
|
+
android {
|
34
|
+
compileSdkVersion safeExtGet('compileSdkVersion', 33)
|
35
|
+
namespace "com.unistyles"
|
36
|
+
|
37
|
+
defaultConfig {
|
38
|
+
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
39
|
+
minSdkVersion safeExtGet('minSdkVersion', 21)
|
40
|
+
externalNativeBuild {
|
41
|
+
cmake {
|
42
|
+
arguments "-DANDROID_STL=c++_shared"
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
buildFeatures {
|
48
|
+
prefab true
|
49
|
+
}
|
50
|
+
|
51
|
+
externalNativeBuild {
|
52
|
+
cmake {
|
53
|
+
path "CMakeLists.txt"
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
packagingOptions {
|
58
|
+
doNotStrip resolveBuildType() == 'debug' ? "**/**/*.so" : ''
|
59
|
+
excludes = [
|
60
|
+
"META-INF",
|
61
|
+
"META-INF/**",
|
62
|
+
"**/libjsi.so",
|
63
|
+
"**/libc++_shared.so"
|
64
|
+
]
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
repositories {
|
69
|
+
mavenCentral()
|
70
|
+
google()
|
71
|
+
}
|
72
|
+
|
73
|
+
dependencies {
|
74
|
+
implementation 'com.facebook.react:react-native'
|
75
|
+
}
|
@@ -0,0 +1,132 @@
|
|
1
|
+
#include <jni.h>
|
2
|
+
#include <jsi/jsi.h>
|
3
|
+
#include "UnistylesRuntime.h"
|
4
|
+
|
5
|
+
using namespace facebook;
|
6
|
+
|
7
|
+
static jobject unistylesModule = nullptr;
|
8
|
+
std::shared_ptr<UnistylesRuntime> unistylesRuntime = nullptr;
|
9
|
+
|
10
|
+
void throwKotlinException(
|
11
|
+
JNIEnv *env,
|
12
|
+
const char *message
|
13
|
+
) {
|
14
|
+
jclass runtimeExceptionClass = env->FindClass("java/lang/RuntimeException");
|
15
|
+
|
16
|
+
if (runtimeExceptionClass != nullptr) {
|
17
|
+
env->ThrowNew(runtimeExceptionClass, message);
|
18
|
+
env->DeleteLocalRef(runtimeExceptionClass);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
extern "C"
|
23
|
+
JNIEXPORT void JNICALL
|
24
|
+
Java_com_unistyles_UnistylesModule_nativeInstall(
|
25
|
+
JNIEnv *env,
|
26
|
+
jobject thiz,
|
27
|
+
jlong jsi,
|
28
|
+
jint screenWidth,
|
29
|
+
jint screenHeight,
|
30
|
+
jstring colorScheme,
|
31
|
+
jstring contentSizeCategory
|
32
|
+
) {
|
33
|
+
auto runtime = reinterpret_cast<facebook::jsi::Runtime *>(jsi);
|
34
|
+
|
35
|
+
if (unistylesModule == nullptr) {
|
36
|
+
unistylesModule = env->NewGlobalRef(thiz);
|
37
|
+
}
|
38
|
+
|
39
|
+
if (runtime == nullptr || unistylesModule == nullptr) {
|
40
|
+
return throwKotlinException(env, "Something went wrong while initializing UnistylesModule");
|
41
|
+
}
|
42
|
+
|
43
|
+
const char *colorSchemeChars = env->GetStringUTFChars(colorScheme, nullptr);
|
44
|
+
std::string colorSchemeStr(colorSchemeChars);
|
45
|
+
env->ReleaseStringUTFChars(colorScheme, colorSchemeChars);
|
46
|
+
|
47
|
+
const char *contentSizeCategoryChars = env->GetStringUTFChars(contentSizeCategory, nullptr);
|
48
|
+
std::string contentSizeCategoryStr(contentSizeCategoryChars);
|
49
|
+
env->ReleaseStringUTFChars(contentSizeCategory, contentSizeCategoryChars);
|
50
|
+
|
51
|
+
unistylesRuntime = std::make_shared<UnistylesRuntime>(
|
52
|
+
screenWidth,
|
53
|
+
screenHeight,
|
54
|
+
colorSchemeStr,
|
55
|
+
contentSizeCategoryStr
|
56
|
+
);
|
57
|
+
|
58
|
+
unistylesRuntime->onThemeChange([=](const std::string &theme) {
|
59
|
+
jstring themeStr = env->NewStringUTF(theme.c_str());
|
60
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
61
|
+
jmethodID methodId = env->GetMethodID(cls, "onThemeChange", "(Ljava/lang/String;)V");
|
62
|
+
|
63
|
+
env->CallVoidMethod(unistylesModule, methodId, themeStr);
|
64
|
+
env->DeleteLocalRef(themeStr);
|
65
|
+
env->DeleteLocalRef(cls);
|
66
|
+
});
|
67
|
+
|
68
|
+
unistylesRuntime->onLayoutChange([=](const std::string &breakpoint, const std::string &orientation, int width, int height) {
|
69
|
+
jstring breakpointStr = env->NewStringUTF(breakpoint.c_str());
|
70
|
+
jstring orientationStr = env->NewStringUTF(orientation.c_str());
|
71
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
72
|
+
jmethodID methodId = env->GetMethodID(cls, "onLayoutChange", "(Ljava/lang/String;Ljava/lang/String;II)V");
|
73
|
+
|
74
|
+
env->CallVoidMethod(unistylesModule, methodId, breakpointStr, orientationStr, width, height);
|
75
|
+
env->DeleteLocalRef(breakpointStr);
|
76
|
+
env->DeleteLocalRef(orientationStr);
|
77
|
+
env->DeleteLocalRef(cls);
|
78
|
+
});
|
79
|
+
|
80
|
+
unistylesRuntime->onPluginChange([=]() {
|
81
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
82
|
+
jmethodID methodId = env->GetMethodID(cls, "onPluginChange", "()V");
|
83
|
+
|
84
|
+
env->CallVoidMethod(unistylesModule, methodId);
|
85
|
+
env->DeleteLocalRef(cls);
|
86
|
+
});
|
87
|
+
|
88
|
+
unistylesRuntime->onContentSizeCategoryChange([=](const std::string &contentSizeCategory) {
|
89
|
+
jstring contentSizeCategoryStr = env->NewStringUTF(contentSizeCategory.c_str());
|
90
|
+
jclass cls = env->GetObjectClass(unistylesModule);
|
91
|
+
jmethodID methodId = env->GetMethodID(cls, "onContentSizeCategoryChange", "(Ljava/lang/String;)V");
|
92
|
+
|
93
|
+
env->CallVoidMethod(unistylesModule, methodId, contentSizeCategoryStr);
|
94
|
+
env->DeleteLocalRef(contentSizeCategoryStr);
|
95
|
+
env->DeleteLocalRef(cls);
|
96
|
+
});
|
97
|
+
|
98
|
+
jsi::Object hostObject = jsi::Object::createFromHostObject(*runtime, unistylesRuntime);
|
99
|
+
|
100
|
+
runtime->global().setProperty(*runtime, "__UNISTYLES__", std::move(hostObject));
|
101
|
+
}
|
102
|
+
|
103
|
+
extern "C"
|
104
|
+
JNIEXPORT void JNICALL
|
105
|
+
Java_com_unistyles_UnistylesModule_nativeDestroy(JNIEnv *env, jobject thiz) {
|
106
|
+
unistylesRuntime.reset();
|
107
|
+
unistylesModule = nullptr;
|
108
|
+
}
|
109
|
+
|
110
|
+
extern "C"
|
111
|
+
JNIEXPORT void JNICALL
|
112
|
+
Java_com_unistyles_UnistylesModule_nativeOnOrientationChange(JNIEnv *env, jobject thiz, jint width, jint height) {
|
113
|
+
if (unistylesRuntime != nullptr) {
|
114
|
+
unistylesRuntime->handleScreenSizeChange(width, height);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
|
118
|
+
extern "C"
|
119
|
+
JNIEXPORT void JNICALL
|
120
|
+
Java_com_unistyles_UnistylesModule_nativeOnAppearanceChange(JNIEnv *env, jobject thiz, jstring colorScheme) {
|
121
|
+
if (unistylesRuntime != nullptr) {
|
122
|
+
unistylesRuntime->handleAppearanceChange(env->GetStringUTFChars(colorScheme, nullptr));
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
extern "C"
|
127
|
+
JNIEXPORT void JNICALL
|
128
|
+
Java_com_unistyles_UnistylesModule_nativeOnContentSizeCategoryChange(JNIEnv *env, jobject thiz, jstring contentSizeCategory) {
|
129
|
+
if (unistylesRuntime != nullptr) {
|
130
|
+
unistylesRuntime->handleContentSizeCategoryChange(env->GetStringUTFChars(contentSizeCategory, nullptr));
|
131
|
+
}
|
132
|
+
}
|
@@ -0,0 +1,189 @@
|
|
1
|
+
package com.unistyles
|
2
|
+
|
3
|
+
import android.content.BroadcastReceiver
|
4
|
+
import android.content.Context
|
5
|
+
import android.content.Intent
|
6
|
+
import android.content.IntentFilter
|
7
|
+
import android.content.res.Configuration
|
8
|
+
import android.os.Handler
|
9
|
+
import android.os.Looper
|
10
|
+
import android.util.Log
|
11
|
+
import com.facebook.react.bridge.Arguments
|
12
|
+
import com.facebook.react.bridge.LifecycleEventListener
|
13
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
14
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
15
|
+
import com.facebook.react.bridge.ReactMethod
|
16
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule
|
17
|
+
|
18
|
+
|
19
|
+
class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext), LifecycleEventListener {
|
20
|
+
private val configurationChangeReceiver = object : BroadcastReceiver() {
|
21
|
+
override fun onReceive(context: Context, intent: Intent) {
|
22
|
+
if (intent.action == Intent.ACTION_CONFIGURATION_CHANGED) {
|
23
|
+
Handler(Looper.getMainLooper()).postDelayed({
|
24
|
+
this@UnistylesModule.onConfigChange()
|
25
|
+
}, 10)
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
override fun getName() = NAME
|
31
|
+
companion object {
|
32
|
+
const val NAME = "Unistyles"
|
33
|
+
}
|
34
|
+
|
35
|
+
//region Lifecycle
|
36
|
+
init {
|
37
|
+
reactApplicationContext.registerReceiver(configurationChangeReceiver, IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED))
|
38
|
+
}
|
39
|
+
|
40
|
+
override fun onCatalystInstanceDestroy() {
|
41
|
+
reactApplicationContext.unregisterReceiver(configurationChangeReceiver)
|
42
|
+
this.nativeDestroy()
|
43
|
+
}
|
44
|
+
|
45
|
+
//endregion
|
46
|
+
//region Event handlers
|
47
|
+
private fun onConfigChange() {
|
48
|
+
val config = this.getConfig()
|
49
|
+
|
50
|
+
reactApplicationContext.runOnJSQueueThread {
|
51
|
+
this.nativeOnOrientationChange(
|
52
|
+
config["width"] as Int,
|
53
|
+
config["height"] as Int
|
54
|
+
)
|
55
|
+
this.nativeOnAppearanceChange(
|
56
|
+
config["colorScheme"] as String
|
57
|
+
)
|
58
|
+
this.nativeOnContentSizeCategoryChange(config["contentSizeCategory"] as String)
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
private fun getConfig(): Map<String, Any> {
|
63
|
+
val displayMetrics = reactApplicationContext.resources.displayMetrics
|
64
|
+
val colorScheme = when (reactApplicationContext.resources.configuration.uiMode.and(Configuration.UI_MODE_NIGHT_MASK)) {
|
65
|
+
Configuration.UI_MODE_NIGHT_YES -> "dark"
|
66
|
+
Configuration.UI_MODE_NIGHT_NO -> "light"
|
67
|
+
else -> "unspecified"
|
68
|
+
}
|
69
|
+
val fontScale = reactApplicationContext.resources.configuration.fontScale
|
70
|
+
val contentSizeCategory = when {
|
71
|
+
fontScale <= 0.85f -> "Small"
|
72
|
+
fontScale <= 1.0f -> "Default"
|
73
|
+
fontScale <= 1.15f -> "Large"
|
74
|
+
fontScale <= 1.3f -> "ExtraLarge"
|
75
|
+
else -> "Huge"
|
76
|
+
}
|
77
|
+
|
78
|
+
return mapOf(
|
79
|
+
"width" to (displayMetrics.widthPixels / displayMetrics.density).toInt(),
|
80
|
+
"height" to (displayMetrics.heightPixels / displayMetrics.density).toInt(),
|
81
|
+
"colorScheme" to colorScheme,
|
82
|
+
"contentSizeCategory" to contentSizeCategory
|
83
|
+
)
|
84
|
+
}
|
85
|
+
|
86
|
+
//endregion
|
87
|
+
//region Core
|
88
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
89
|
+
fun install(): Boolean {
|
90
|
+
return try {
|
91
|
+
System.loadLibrary("unistyles")
|
92
|
+
val config = this.getConfig()
|
93
|
+
|
94
|
+
this.reactApplicationContext.javaScriptContextHolder?.let {
|
95
|
+
this.nativeInstall(
|
96
|
+
it.get(),
|
97
|
+
config["width"] as Int,
|
98
|
+
config["height"] as Int,
|
99
|
+
config["colorScheme"] as String,
|
100
|
+
config["contentSizeCategory"] as String
|
101
|
+
)
|
102
|
+
|
103
|
+
Log.i(NAME, "Installed Unistyles \uD83E\uDD84!")
|
104
|
+
|
105
|
+
return true
|
106
|
+
}
|
107
|
+
|
108
|
+
false
|
109
|
+
} catch (e: Exception) {
|
110
|
+
false
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
private external fun nativeInstall(jsi: Long, width: Int, height: Int, colorScheme: String, contentSizeCategory: String)
|
115
|
+
private external fun nativeDestroy()
|
116
|
+
private external fun nativeOnOrientationChange(width: Int, height: Int)
|
117
|
+
private external fun nativeOnAppearanceChange(colorScheme: String)
|
118
|
+
private external fun nativeOnContentSizeCategoryChange(contentSizeCategory: String)
|
119
|
+
|
120
|
+
//endregion
|
121
|
+
//region Event emitter
|
122
|
+
private fun onLayoutChange(breakpoint: String, orientation: String, width: Int, height: Int) {
|
123
|
+
val body = Arguments.createMap().apply {
|
124
|
+
putString("type", "layout")
|
125
|
+
putMap("payload", Arguments.createMap().apply {
|
126
|
+
putString("breakpoint", breakpoint)
|
127
|
+
putString("orientation", orientation)
|
128
|
+
putMap("screen", Arguments.createMap().apply {
|
129
|
+
putInt("width", width)
|
130
|
+
putInt("height", height)
|
131
|
+
})
|
132
|
+
})
|
133
|
+
}
|
134
|
+
|
135
|
+
reactApplicationContext
|
136
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
137
|
+
.emit("__unistylesOnChange", body)
|
138
|
+
}
|
139
|
+
|
140
|
+
private fun onThemeChange(themeName: String) {
|
141
|
+
val body = Arguments.createMap().apply {
|
142
|
+
putString("type", "theme")
|
143
|
+
putMap("payload", Arguments.createMap().apply {
|
144
|
+
putString("themeName", themeName)
|
145
|
+
})
|
146
|
+
}
|
147
|
+
|
148
|
+
reactApplicationContext
|
149
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
150
|
+
.emit("__unistylesOnChange", body)
|
151
|
+
}
|
152
|
+
|
153
|
+
private fun onPluginChange() {
|
154
|
+
val body = Arguments.createMap().apply {
|
155
|
+
putString("type", "plugin")
|
156
|
+
}
|
157
|
+
|
158
|
+
reactApplicationContext
|
159
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
160
|
+
.emit("__unistylesOnChange", body)
|
161
|
+
}
|
162
|
+
|
163
|
+
private fun onContentSizeCategoryChange(contentSizeCategory: String) {
|
164
|
+
val body = Arguments.createMap().apply {
|
165
|
+
putString("type", "dynamicTypeSize")
|
166
|
+
putMap("payload", Arguments.createMap().apply {
|
167
|
+
putString("contentSizeCategory", contentSizeCategory)
|
168
|
+
})
|
169
|
+
}
|
170
|
+
|
171
|
+
reactApplicationContext
|
172
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
173
|
+
.emit("__unistylesOnChange", body)
|
174
|
+
}
|
175
|
+
|
176
|
+
@ReactMethod
|
177
|
+
fun addListener(eventName: String?) = Unit
|
178
|
+
|
179
|
+
@ReactMethod
|
180
|
+
fun removeListeners(count: Double) = Unit
|
181
|
+
override fun onHostResume() {
|
182
|
+
this.onConfigChange()
|
183
|
+
}
|
184
|
+
|
185
|
+
override fun onHostPause() {}
|
186
|
+
|
187
|
+
override fun onHostDestroy() {}
|
188
|
+
//endregion
|
189
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
package com.unistyles
|
2
|
+
|
3
|
+
import android.view.View
|
4
|
+
import com.facebook.react.ReactPackage
|
5
|
+
import com.facebook.react.bridge.NativeModule
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
7
|
+
import com.facebook.react.uimanager.ReactShadowNode
|
8
|
+
import com.facebook.react.uimanager.ViewManager
|
9
|
+
|
10
|
+
class UnistylesPackage: ReactPackage {
|
11
|
+
override fun createNativeModules(reactContext: ReactApplicationContext): MutableList<NativeModule> {
|
12
|
+
return mutableListOf(UnistylesModule(reactContext))
|
13
|
+
}
|
14
|
+
|
15
|
+
override fun createViewManagers(reactContext: ReactApplicationContext): MutableList<ViewManager<View, ReactShadowNode<*>>> {
|
16
|
+
return mutableListOf()
|
17
|
+
}
|
18
|
+
}
|