react-native-unistyles 3.0.0-alpha.4 → 3.0.0-alpha.41
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +7 -0
- package/Unistyles.podspec +1 -1
- package/android/CMakeLists.txt +22 -45
- package/android/build.gradle +16 -5
- package/android/src/main/cxx/NativeUnistylesModule.cpp +71 -0
- package/android/src/main/cxx/NativeUnistylesModule.h +42 -0
- package/android/src/main/cxx/cpp-adapter.cpp +8 -86
- package/android/src/main/java/com/unistyles/Equatable.kt +61 -0
- package/android/src/main/java/com/unistyles/NativePlatform+android.kt +294 -0
- package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +152 -0
- package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +59 -0
- package/android/src/main/java/com/unistyles/UnistylesModule.kt +51 -0
- package/android/src/main/java/com/unistyles/UnistylesPackage.kt +16 -14
- package/cxx/NativePlatform.h +11 -0
- package/cxx/common/Constants.h +4 -0
- package/cxx/common/Helpers.h +140 -5
- package/cxx/core/HostStyle.cpp +10 -6
- package/cxx/core/HostStyle.h +4 -0
- package/cxx/core/StyleSheet.h +0 -2
- package/cxx/core/StyleSheetRegistry.cpp +9 -17
- package/cxx/core/StyleSheetRegistry.h +3 -4
- package/cxx/core/Unistyle.h +8 -11
- package/cxx/core/UnistyleData.h +24 -0
- package/cxx/core/UnistyleWrapper.h +108 -13
- package/cxx/core/UnistylesCommitHook.cpp +14 -15
- package/cxx/core/UnistylesCommitHook.h +6 -11
- package/cxx/core/UnistylesCommitShadowNode.h +13 -0
- package/cxx/core/UnistylesMountHook.cpp +28 -0
- package/cxx/core/UnistylesMountHook.h +27 -0
- package/cxx/core/UnistylesRegistry.cpp +123 -83
- package/cxx/core/UnistylesRegistry.h +16 -14
- package/cxx/core/UnistylesState.cpp +29 -8
- package/cxx/core/UnistylesState.h +5 -2
- package/cxx/hybridObjects/HybridNavigationBar.cpp +0 -4
- package/cxx/hybridObjects/HybridNavigationBar.h +3 -4
- package/cxx/hybridObjects/HybridShadowRegistry.cpp +19 -11
- package/cxx/hybridObjects/HybridStatusBar.cpp +0 -4
- package/cxx/hybridObjects/HybridStatusBar.h +3 -4
- package/cxx/hybridObjects/HybridStyleSheet.cpp +154 -23
- package/cxx/hybridObjects/HybridStyleSheet.h +27 -5
- package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +96 -14
- package/cxx/hybridObjects/HybridUnistylesRuntime.h +19 -3
- package/cxx/parser/Parser.cpp +249 -177
- package/cxx/parser/Parser.h +12 -15
- package/cxx/shadowTree/ShadowLeafUpdate.h +3 -1
- package/cxx/shadowTree/ShadowTrafficController.h +71 -0
- package/cxx/shadowTree/ShadowTreeManager.cpp +28 -19
- package/cxx/shadowTree/ShadowTreeManager.h +3 -2
- package/ios/Equatable.swift +2 -1
- package/ios/Extensions.swift +3 -1
- package/ios/NativePlatform+ios.swift +34 -9
- package/ios/NativePlatform+keyboard.swift +83 -0
- package/ios/NativePlatformListener+ios.swift +36 -24
- package/ios/Unistyles.h +1 -0
- package/ios/UnistylesModuleOnLoad.h +8 -2
- package/ios/UnistylesModuleOnLoad.mm +9 -1
- package/lib/commonjs/components/Display.js +18 -0
- package/lib/commonjs/components/Display.js.map +1 -0
- package/lib/commonjs/components/Hide.js +18 -0
- package/lib/commonjs/components/Hide.js.map +1 -0
- package/lib/commonjs/components/index.js +20 -0
- package/lib/commonjs/components/index.js.map +1 -0
- package/lib/commonjs/components/useMedia.js +59 -0
- package/lib/commonjs/components/useMedia.js.map +1 -0
- package/lib/commonjs/components/useMedia.web.js +43 -0
- package/lib/commonjs/components/useMedia.web.js.map +1 -0
- package/lib/commonjs/core/createUnistylesComponent.js +79 -0
- package/lib/commonjs/core/createUnistylesComponent.js.map +1 -0
- package/lib/commonjs/core/createUnistylesComponent.native.js +82 -0
- package/lib/commonjs/core/createUnistylesComponent.native.js.map +1 -0
- package/lib/commonjs/core/index.js +13 -0
- package/lib/commonjs/core/index.js.map +1 -0
- package/lib/commonjs/index.js +21 -11
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/mq.js +25 -12
- package/lib/commonjs/mq.js.map +1 -1
- package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js +1 -0
- package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
- package/lib/commonjs/specs/NavigtionBar/index.js +0 -15
- package/lib/commonjs/specs/NavigtionBar/index.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/index.js +10 -6
- package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/commonjs/specs/StatusBar/index.js +0 -5
- package/lib/commonjs/specs/StatusBar/index.js.map +1 -1
- package/lib/commonjs/specs/StyleSheet/index.js +1 -0
- package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
- package/lib/commonjs/specs/UnistylesRuntime/index.js +1 -3
- package/lib/commonjs/specs/UnistylesRuntime/index.js.map +1 -1
- package/lib/commonjs/specs/index.js +7 -0
- package/lib/commonjs/specs/index.js.map +1 -1
- package/lib/commonjs/specs/index.web.js +1 -1
- package/lib/commonjs/types/stylesheet.js.map +1 -1
- package/lib/commonjs/utils.js +26 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/commonjs/web/convert/index.js +79 -0
- package/lib/commonjs/web/convert/index.js.map +1 -0
- package/lib/commonjs/web/convert/module.d.js +2 -0
- package/lib/commonjs/web/convert/module.d.js.map +1 -0
- package/lib/commonjs/web/convert/object/boxShadow.js +59 -0
- package/lib/commonjs/web/convert/object/boxShadow.js.map +1 -0
- package/lib/commonjs/web/convert/object/filter.js +42 -0
- package/lib/commonjs/web/convert/object/filter.js.map +1 -0
- package/lib/commonjs/web/convert/object/index.js +39 -0
- package/lib/commonjs/web/convert/object/index.js.map +1 -0
- package/lib/commonjs/web/convert/object/objectStyle.js +56 -0
- package/lib/commonjs/web/convert/object/objectStyle.js.map +1 -0
- package/lib/commonjs/web/convert/object/transform.js +27 -0
- package/lib/commonjs/web/convert/object/transform.js.map +1 -0
- package/lib/commonjs/web/convert/pseudo.js +10 -0
- package/lib/commonjs/web/convert/pseudo.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/boxShadow.js +62 -0
- package/lib/commonjs/web/convert/shadow/boxShadow.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/getShadowBreakpoints.js +38 -0
- package/lib/commonjs/web/convert/shadow/getShadowBreakpoints.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/index.js +28 -0
- package/lib/commonjs/web/convert/shadow/index.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/textShadow.js +59 -0
- package/lib/commonjs/web/convert/shadow/textShadow.js.map +1 -0
- package/lib/commonjs/web/convert/style.js +93 -0
- package/lib/commonjs/web/convert/style.js.map +1 -0
- package/lib/commonjs/web/convert/types.js +9 -0
- package/lib/commonjs/web/convert/types.js.map +1 -0
- package/lib/commonjs/web/convert/utils.js +59 -0
- package/lib/commonjs/web/convert/utils.js.map +1 -0
- package/lib/commonjs/web/create.js +49 -0
- package/lib/commonjs/web/create.js.map +1 -0
- package/lib/commonjs/web/index.js +60 -0
- package/lib/commonjs/web/index.js.map +1 -0
- package/lib/commonjs/web/listener.js +61 -0
- package/lib/commonjs/web/listener.js.map +1 -0
- package/lib/commonjs/web/mock.js +27 -0
- package/lib/commonjs/web/mock.js.map +1 -0
- package/lib/commonjs/web/registry.js +172 -0
- package/lib/commonjs/web/registry.js.map +1 -0
- package/lib/commonjs/web/runtime.js +173 -0
- package/lib/commonjs/web/runtime.js.map +1 -0
- package/lib/commonjs/web/shadowRegistry.js +142 -0
- package/lib/commonjs/web/shadowRegistry.js.map +1 -0
- package/lib/commonjs/web/state.js +73 -0
- package/lib/commonjs/web/state.js.map +1 -0
- package/lib/commonjs/web/utils/common.js +39 -0
- package/lib/commonjs/web/utils/common.js.map +1 -0
- package/lib/commonjs/web/utils/index.js +28 -0
- package/lib/commonjs/web/utils/index.js.map +1 -0
- package/lib/commonjs/web/utils/unistyle.js +85 -0
- package/lib/commonjs/web/utils/unistyle.js.map +1 -0
- package/lib/commonjs/web/variants/getVariants.js +39 -0
- package/lib/commonjs/web/variants/getVariants.js.map +1 -0
- package/lib/commonjs/web/variants/index.js +28 -0
- package/lib/commonjs/web/variants/index.js.map +1 -0
- package/lib/commonjs/web/variants/useVariants.js +59 -0
- package/lib/commonjs/web/variants/useVariants.js.map +1 -0
- package/lib/module/components/Display.js +13 -0
- package/lib/module/components/Display.js.map +1 -0
- package/lib/module/components/Hide.js +13 -0
- package/lib/module/components/Hide.js.map +1 -0
- package/lib/module/components/index.js +5 -0
- package/lib/module/components/index.js.map +1 -0
- package/lib/module/components/useMedia.js +54 -0
- package/lib/module/components/useMedia.js.map +1 -0
- package/lib/module/components/useMedia.web.js +38 -0
- package/lib/module/components/useMedia.web.js.map +1 -0
- package/lib/module/core/createUnistylesComponent.js +72 -0
- package/lib/module/core/createUnistylesComponent.js.map +1 -0
- package/lib/module/core/createUnistylesComponent.native.js +75 -0
- package/lib/module/core/createUnistylesComponent.native.js.map +1 -0
- package/lib/module/core/index.js +4 -0
- package/lib/module/core/index.js.map +1 -0
- package/lib/module/index.js +2 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/mq.js +21 -11
- package/lib/module/mq.js.map +1 -1
- package/lib/module/specs/NativePlatform/NativePlatform.nitro.js +1 -0
- package/lib/module/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
- package/lib/module/specs/NavigtionBar/index.js +0 -10
- package/lib/module/specs/NavigtionBar/index.js.map +1 -1
- package/lib/module/specs/ShadowRegistry/index.js +10 -6
- package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/module/specs/StatusBar/index.js +1 -6
- package/lib/module/specs/StatusBar/index.js.map +1 -1
- package/lib/module/specs/StyleSheet/index.js +1 -0
- package/lib/module/specs/StyleSheet/index.js.map +1 -1
- package/lib/module/specs/UnistylesRuntime/index.js +1 -3
- package/lib/module/specs/UnistylesRuntime/index.js.map +1 -1
- package/lib/module/specs/index.js +2 -1
- package/lib/module/specs/index.js.map +1 -1
- package/lib/module/specs/index.web.js +1 -1
- package/lib/module/specs/index.web.js.map +1 -1
- package/lib/module/types/stylesheet.js.map +1 -1
- package/lib/module/utils.js +21 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/module/web/convert/index.js +74 -0
- package/lib/module/web/convert/index.js.map +1 -0
- package/lib/module/web/convert/module.d.js +2 -0
- package/lib/module/web/convert/module.d.js.map +1 -0
- package/lib/module/web/convert/object/boxShadow.js +54 -0
- package/lib/module/web/convert/object/boxShadow.js.map +1 -0
- package/lib/module/web/convert/object/filter.js +37 -0
- package/lib/module/web/convert/object/filter.js.map +1 -0
- package/lib/module/web/convert/object/index.js +6 -0
- package/lib/module/web/convert/object/index.js.map +1 -0
- package/lib/module/web/convert/object/objectStyle.js +51 -0
- package/lib/module/web/convert/object/objectStyle.js.map +1 -0
- package/lib/module/web/convert/object/transform.js +22 -0
- package/lib/module/web/convert/object/transform.js.map +1 -0
- package/lib/module/web/convert/pseudo.js +5 -0
- package/lib/module/web/convert/pseudo.js.map +1 -0
- package/lib/module/web/convert/shadow/boxShadow.js +57 -0
- package/lib/module/web/convert/shadow/boxShadow.js.map +1 -0
- package/lib/module/web/convert/shadow/getShadowBreakpoints.js +33 -0
- package/lib/module/web/convert/shadow/getShadowBreakpoints.js.map +1 -0
- package/lib/module/web/convert/shadow/index.js +5 -0
- package/lib/module/web/convert/shadow/index.js.map +1 -0
- package/lib/module/web/convert/shadow/textShadow.js +54 -0
- package/lib/module/web/convert/shadow/textShadow.js.map +1 -0
- package/lib/module/web/convert/style.js +88 -0
- package/lib/module/web/convert/style.js.map +1 -0
- package/lib/module/web/convert/types.js +5 -0
- package/lib/module/web/convert/types.js.map +1 -0
- package/lib/module/web/convert/utils.js +45 -0
- package/lib/module/web/convert/utils.js.map +1 -0
- package/lib/module/web/create.js +44 -0
- package/lib/module/web/create.js.map +1 -0
- package/lib/module/web/index.js +26 -0
- package/lib/module/web/index.js.map +1 -0
- package/lib/module/web/listener.js +57 -0
- package/lib/module/web/listener.js.map +1 -0
- package/lib/module/web/mock.js +23 -0
- package/lib/module/web/mock.js.map +1 -0
- package/lib/module/web/registry.js +168 -0
- package/lib/module/web/registry.js.map +1 -0
- package/lib/module/web/runtime.js +169 -0
- package/lib/module/web/runtime.js.map +1 -0
- package/lib/module/web/shadowRegistry.js +138 -0
- package/lib/module/web/shadowRegistry.js.map +1 -0
- package/lib/module/web/state.js +69 -0
- package/lib/module/web/state.js.map +1 -0
- package/lib/module/web/utils/common.js +28 -0
- package/lib/module/web/utils/common.js.map +1 -0
- package/lib/module/web/utils/index.js +5 -0
- package/lib/module/web/utils/index.js.map +1 -0
- package/lib/module/web/utils/unistyle.js +72 -0
- package/lib/module/web/utils/unistyle.js.map +1 -0
- package/lib/module/web/variants/getVariants.js +34 -0
- package/lib/module/web/variants/getVariants.js.map +1 -0
- package/lib/module/web/variants/index.js +5 -0
- package/lib/module/web/variants/index.js.map +1 -0
- package/lib/module/web/variants/useVariants.js +54 -0
- package/lib/module/web/variants/useVariants.js.map +1 -0
- package/lib/typescript/src/components/Display.d.ts +7 -0
- package/lib/typescript/src/components/Display.d.ts.map +1 -0
- package/lib/typescript/src/components/Hide.d.ts +7 -0
- package/lib/typescript/src/components/Hide.d.ts.map +1 -0
- package/lib/typescript/src/components/index.d.ts +3 -0
- package/lib/typescript/src/components/index.d.ts.map +1 -0
- package/lib/typescript/src/components/useMedia.d.ts +6 -0
- package/lib/typescript/src/components/useMedia.d.ts.map +1 -0
- package/lib/typescript/src/components/useMedia.web.d.ts +6 -0
- package/lib/typescript/src/components/useMedia.web.d.ts.map +1 -0
- package/lib/typescript/src/core/createUnistylesComponent.d.ts +8 -0
- package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +1 -0
- package/lib/typescript/src/core/createUnistylesComponent.native.d.ts +8 -0
- package/lib/typescript/src/core/createUnistylesComponent.native.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +2 -0
- package/lib/typescript/src/core/index.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/mq.d.ts +8 -0
- package/lib/typescript/src/mq.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts +7 -5
- package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.d.ts +0 -1
- package/lib/typescript/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/NavigtionBar/index.d.ts +1 -10
- package/lib/typescript/src/specs/NavigtionBar/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +4 -4
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/types.d.ts +3 -0
- package/lib/typescript/src/specs/ShadowRegistry/types.d.ts.map +1 -1
- package/lib/typescript/src/specs/StatusBar/UnistylesStatusBar.nitro.d.ts +0 -1
- package/lib/typescript/src/specs/StatusBar/UnistylesStatusBar.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/StatusBar/index.d.ts +2 -4
- package/lib/typescript/src/specs/StatusBar/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts +3 -1
- package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/StyleSheet/index.d.ts +3 -1
- package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts +1 -1
- package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts +3 -1
- package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/index.d.ts +4 -2
- package/lib/typescript/src/specs/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/index.web.d.ts +1 -1
- package/lib/typescript/src/specs/index.web.d.ts.map +1 -1
- package/lib/typescript/src/types/breakpoints.d.ts +11 -11
- package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/types/common.d.ts +1 -0
- package/lib/typescript/src/types/common.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +1 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/stylesheet.d.ts +6 -4
- package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
- package/lib/typescript/src/types/variants.d.ts +4 -1
- package/lib/typescript/src/types/variants.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +2 -0
- package/lib/typescript/src/utils.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/index.d.ts +3 -0
- package/lib/typescript/src/web/convert/index.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/boxShadow.d.ts +9 -0
- package/lib/typescript/src/web/convert/object/boxShadow.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/filter.d.ts +3 -0
- package/lib/typescript/src/web/convert/object/filter.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/index.d.ts +4 -0
- package/lib/typescript/src/web/convert/object/index.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/objectStyle.d.ts +5 -0
- package/lib/typescript/src/web/convert/object/objectStyle.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/transform.d.ts +3 -0
- package/lib/typescript/src/web/convert/object/transform.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/pseudo.d.ts +6 -0
- package/lib/typescript/src/web/convert/pseudo.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/boxShadow.d.ts +8 -0
- package/lib/typescript/src/web/convert/shadow/boxShadow.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/getShadowBreakpoints.d.ts +2 -0
- package/lib/typescript/src/web/convert/shadow/getShadowBreakpoints.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/index.d.ts +3 -0
- package/lib/typescript/src/web/convert/shadow/index.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/textShadow.d.ts +8 -0
- package/lib/typescript/src/web/convert/shadow/textShadow.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/style.d.ts +2 -0
- package/lib/typescript/src/web/convert/style.d.ts.map +1 -0
- package/lib/typescript/{web → src/web}/convert/types.d.ts +8 -2
- package/lib/typescript/src/web/convert/types.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/utils.d.ts +12 -0
- package/lib/typescript/src/web/convert/utils.d.ts.map +1 -0
- package/lib/typescript/src/web/create.d.ts +1443 -0
- package/lib/typescript/{web → src/web}/create.d.ts.map +1 -1
- package/lib/typescript/src/web/index.d.ts +1459 -0
- package/lib/typescript/{web → src/web}/index.d.ts.map +1 -1
- package/lib/typescript/{web/listener → src/web}/listener.d.ts +5 -2
- package/lib/typescript/src/web/listener.d.ts.map +1 -0
- package/lib/typescript/src/web/mock.d.ts +5 -0
- package/lib/typescript/src/web/mock.d.ts.map +1 -0
- package/lib/typescript/src/web/registry.d.ts +24 -0
- package/lib/typescript/src/web/registry.d.ts.map +1 -0
- package/lib/typescript/{web → src/web}/runtime.d.ts +11 -10
- package/lib/typescript/src/web/runtime.d.ts.map +1 -0
- package/lib/typescript/src/web/shadowRegistry.d.ts +17 -0
- package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -0
- package/lib/typescript/src/web/state.d.ts +18 -0
- package/lib/typescript/src/web/state.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/common.d.ts +8 -0
- package/lib/typescript/src/web/utils/common.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/index.d.ts +3 -0
- package/lib/typescript/src/web/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/unistyle.d.ts +20 -0
- package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -0
- package/lib/typescript/src/web/variants/getVariants.d.ts +3 -0
- package/lib/typescript/src/web/variants/getVariants.d.ts.map +1 -0
- package/lib/typescript/src/web/variants/index.d.ts +3 -0
- package/lib/typescript/src/web/variants/index.d.ts.map +1 -0
- package/lib/typescript/src/web/variants/useVariants.d.ts +3 -0
- package/lib/typescript/src/web/variants/useVariants.d.ts.map +1 -0
- package/nitrogen/generated/android/c++/JColorScheme.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_UnistylesNativeMiniRuntime.hpp +57 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.hpp +69 -0
- package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +35 -34
- package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +15 -6
- package/nitrogen/generated/android/c++/JOrientation.hpp +1 -1
- package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +4 -1
- package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +9 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Dimensions.kt +1 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/{Func_void_std__vector_UnistyleDependency_.kt → Func_void_UnistylesNativeMiniRuntime.kt} +6 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.kt +46 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +25 -13
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Insets.kt +1 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +2 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +3 -1
- package/nitrogen/generated/android/unistyles+autolinking.cmake +13 -1
- package/nitrogen/generated/android/unistyles+autolinking.gradle +2 -0
- package/nitrogen/generated/android/{UnistylesOnLoad.cpp → unistylesOnLoad.cpp} +6 -4
- package/nitrogen/generated/android/{UnistylesOnLoad.hpp → unistylesOnLoad.hpp} +1 -1
- package/nitrogen/generated/ios/Unistyles+autolinking.rb +6 -4
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +25 -0
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +73 -38
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +1 -30
- package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +8 -8
- package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +4 -16
- package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +156 -115
- package/nitrogen/generated/ios/swift/UnistyleDependency.swift +4 -0
- package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +16 -5
- package/nitrogen/generated/shared/c++/ColorScheme.hpp +2 -2
- package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +2 -2
- package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +6 -3
- package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.cpp +0 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +3 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +5 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +3 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.cpp +0 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +3 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +2 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +10 -4
- package/nitrogen/generated/shared/c++/Orientation.hpp +2 -2
- package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -1
- package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +10 -9
- package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +9 -8
- package/package.json +20 -30
- package/plugin/common.js +31 -3
- package/plugin/index.js +107 -18
- package/plugin/ref.js +140 -14
- package/plugin/style.js +208 -22
- package/plugin/stylesheet.js +53 -3
- package/plugin/variants.js +33 -0
- package/src/components/Display.tsx +12 -0
- package/src/components/Hide.tsx +12 -0
- package/src/components/index.ts +2 -0
- package/src/components/useMedia.ts +64 -0
- package/src/components/useMedia.web.ts +47 -0
- package/src/core/createUnistylesComponent.native.tsx +83 -0
- package/src/core/createUnistylesComponent.tsx +84 -0
- package/src/core/index.ts +1 -0
- package/src/index.ts +3 -12
- package/src/mq.ts +27 -9
- package/src/specs/NativePlatform/NativePlatform.nitro.ts +7 -5
- package/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.ts +0 -1
- package/src/specs/NavigtionBar/index.ts +1 -25
- package/src/specs/ShadowRegistry/index.ts +16 -10
- package/src/specs/ShadowRegistry/types.ts +4 -1
- package/src/specs/StatusBar/UnistylesStatusBar.nitro.ts +0 -1
- package/src/specs/StatusBar/index.ts +2 -12
- package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.ts +4 -1
- package/src/specs/StyleSheet/index.ts +6 -1
- package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.ts +1 -1
- package/src/specs/UnistylesRuntime/index.ts +5 -4
- package/src/specs/index.ts +6 -2
- package/src/specs/index.web.ts +1 -1
- package/src/types/breakpoints.ts +25 -13
- package/src/types/common.ts +1 -0
- package/src/types/index.ts +1 -1
- package/src/types/stylesheet.ts +7 -5
- package/src/types/variants.ts +7 -1
- package/src/utils.ts +22 -0
- package/{web → src/web}/convert/index.ts +25 -25
- package/src/web/convert/object/boxShadow.ts +55 -0
- package/src/web/convert/object/filter.ts +39 -0
- package/src/web/convert/object/index.ts +3 -0
- package/src/web/convert/object/objectStyle.ts +69 -0
- package/src/web/convert/object/transform.ts +24 -0
- package/src/web/convert/pseudo.ts +137 -0
- package/src/web/convert/shadow/boxShadow.ts +50 -0
- package/src/web/convert/shadow/getShadowBreakpoints.ts +34 -0
- package/src/web/convert/shadow/index.ts +2 -0
- package/src/web/convert/shadow/textShadow.ts +48 -0
- package/{web → src/web}/convert/style.ts +61 -10
- package/{web → src/web}/convert/types.ts +9 -2
- package/{web → src/web}/convert/utils.ts +11 -5
- package/src/web/create.ts +48 -0
- package/{web → src/web}/index.ts +4 -3
- package/src/web/listener.ts +63 -0
- package/{web → src/web}/mock.ts +3 -14
- package/src/web/registry.ts +215 -0
- package/{web → src/web}/runtime.ts +32 -21
- package/src/web/shadowRegistry.ts +145 -0
- package/src/web/state.ts +94 -0
- package/src/web/utils/common.ts +45 -0
- package/src/web/utils/index.ts +2 -0
- package/src/web/utils/unistyle.ts +108 -0
- package/src/web/variants/getVariants.ts +42 -0
- package/src/web/variants/index.ts +2 -0
- package/src/web/variants/useVariants.ts +65 -0
- package/android/src/main/cxx/helpers.cpp +0 -105
- package/android/src/main/cxx/helpers.h +0 -16
- package/android/src/main/cxx/platform.cpp +0 -170
- package/android/src/main/cxx/platform.h +0 -20
- package/lib/typescript/example/App.d.ts +0 -4
- package/lib/typescript/example/App.d.ts.map +0 -1
- package/lib/typescript/example/unistyles.d.ts +0 -63
- package/lib/typescript/example/unistyles.d.ts.map +0 -1
- package/lib/typescript/expo-example/App.d.ts +0 -4
- package/lib/typescript/expo-example/App.d.ts.map +0 -1
- package/lib/typescript/expo-example/unistyles.d.ts +0 -63
- package/lib/typescript/expo-example/unistyles.d.ts.map +0 -1
- package/lib/typescript/web/convert/boxShadow.d.ts +0 -3
- package/lib/typescript/web/convert/boxShadow.d.ts.map +0 -1
- package/lib/typescript/web/convert/breakpoint.d.ts +0 -3
- package/lib/typescript/web/convert/breakpoint.d.ts.map +0 -1
- package/lib/typescript/web/convert/index.d.ts +0 -4
- package/lib/typescript/web/convert/index.d.ts.map +0 -1
- package/lib/typescript/web/convert/shadow.d.ts +0 -2
- package/lib/typescript/web/convert/shadow.d.ts.map +0 -1
- package/lib/typescript/web/convert/style.d.ts +0 -3
- package/lib/typescript/web/convert/style.d.ts.map +0 -1
- package/lib/typescript/web/convert/textShadow.d.ts +0 -3
- package/lib/typescript/web/convert/textShadow.d.ts.map +0 -1
- package/lib/typescript/web/convert/transform.d.ts +0 -5
- package/lib/typescript/web/convert/transform.d.ts.map +0 -1
- package/lib/typescript/web/convert/types.d.ts.map +0 -1
- package/lib/typescript/web/convert/utils.d.ts +0 -8
- package/lib/typescript/web/convert/utils.d.ts.map +0 -1
- package/lib/typescript/web/create.d.ts +0 -2449
- package/lib/typescript/web/index.d.ts +0 -2464
- package/lib/typescript/web/listener/index.d.ts +0 -2
- package/lib/typescript/web/listener/index.d.ts.map +0 -1
- package/lib/typescript/web/listener/listener.d.ts.map +0 -1
- package/lib/typescript/web/mock.d.ts +0 -14
- package/lib/typescript/web/mock.d.ts.map +0 -1
- package/lib/typescript/web/mq.d.ts +0 -4
- package/lib/typescript/web/mq.d.ts.map +0 -1
- package/lib/typescript/web/pseudo.d.ts +0 -4
- package/lib/typescript/web/pseudo.d.ts.map +0 -1
- package/lib/typescript/web/registry.d.ts +0 -12
- package/lib/typescript/web/registry.d.ts.map +0 -1
- package/lib/typescript/web/runtime.d.ts.map +0 -1
- package/lib/typescript/web/state.d.ts +0 -24
- package/lib/typescript/web/state.d.ts.map +0 -1
- package/lib/typescript/web/useVariants.d.ts +0 -3
- package/lib/typescript/web/useVariants.d.ts.map +0 -1
- package/lib/typescript/web/utils.d.ts +0 -18
- package/lib/typescript/web/utils.d.ts.map +0 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency_.hpp +0 -60
- package/plugin/__tests__/dependencies.spec.js +0 -360
- package/plugin/__tests__/ref.spec.js +0 -991
- package/plugin/__tests__/stylesheet.spec.js +0 -396
- package/web/convert/boxShadow.ts +0 -72
- package/web/convert/breakpoint.ts +0 -21
- package/web/convert/shadow.ts +0 -68
- package/web/convert/textShadow.ts +0 -69
- package/web/convert/transform.ts +0 -89
- package/web/create.ts +0 -102
- package/web/listener/index.ts +0 -1
- package/web/listener/listener.ts +0 -33
- package/web/mq.ts +0 -19
- package/web/pseudo.ts +0 -11
- package/web/registry.ts +0 -41
- package/web/state.ts +0 -148
- package/web/useVariants.ts +0 -99
- package/web/utils.ts +0 -95
- /package/nitrogen/generated/android/{UnistylesOnLoad.kt → unistylesOnLoad.kt} +0 -0
- /package/{web → src/web}/convert/module.d.ts +0 -0
@@ -0,0 +1,294 @@
|
|
1
|
+
package com.unistyles
|
2
|
+
|
3
|
+
import android.content.Context
|
4
|
+
import android.content.res.Configuration
|
5
|
+
import android.os.Build
|
6
|
+
import android.util.DisplayMetrics
|
7
|
+
import android.view.View
|
8
|
+
import android.view.WindowManager
|
9
|
+
import androidx.core.text.TextUtilsCompat
|
10
|
+
import androidx.core.view.ViewCompat
|
11
|
+
import androidx.core.view.WindowCompat
|
12
|
+
import androidx.core.view.WindowInsetsCompat
|
13
|
+
import androidx.core.view.WindowInsetsControllerCompat
|
14
|
+
import com.facebook.react.bridge.LifecycleEventListener
|
15
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
16
|
+
import com.margelo.nitro.unistyles.ColorScheme
|
17
|
+
import com.margelo.nitro.unistyles.Dimensions
|
18
|
+
import com.margelo.nitro.unistyles.HybridNativePlatformSpec
|
19
|
+
import com.margelo.nitro.unistyles.Insets
|
20
|
+
import com.margelo.nitro.unistyles.Orientation
|
21
|
+
import com.margelo.nitro.unistyles.UnistyleDependency
|
22
|
+
import com.margelo.nitro.unistyles.UnistylesNativeMiniRuntime
|
23
|
+
import java.util.Locale
|
24
|
+
|
25
|
+
class NativePlatformAndroid(private val reactContext: ReactApplicationContext): HybridNativePlatformSpec(), LifecycleEventListener {
|
26
|
+
private val _insets = NativePlatformInsets(reactContext, this::getMiniRuntime) { this.diffMiniRuntime() }
|
27
|
+
private var _miniRuntime: UnistylesNativeMiniRuntime = buildMiniRuntime()
|
28
|
+
private val _listener = NativePlatformListener(reactContext, this::getMiniRuntime) { this.diffMiniRuntime() }
|
29
|
+
|
30
|
+
init {
|
31
|
+
checkEdgeToEdge()
|
32
|
+
reactContext.addLifecycleEventListener(this)
|
33
|
+
}
|
34
|
+
|
35
|
+
fun invalidate() {
|
36
|
+
reactContext.removeLifecycleEventListener(this)
|
37
|
+
_listener.invalidate()
|
38
|
+
}
|
39
|
+
|
40
|
+
override fun onHostResume() {
|
41
|
+
_insets.startInsetsListener()
|
42
|
+
}
|
43
|
+
|
44
|
+
override fun onHostPause() {
|
45
|
+
_insets.stopInsetsListener()
|
46
|
+
}
|
47
|
+
|
48
|
+
override fun onHostDestroy() {}
|
49
|
+
|
50
|
+
override val memorySize: Long
|
51
|
+
get() = 0
|
52
|
+
|
53
|
+
override fun getInsets(): Insets {
|
54
|
+
return _insets.getInsets()
|
55
|
+
}
|
56
|
+
|
57
|
+
override fun getColorScheme(): ColorScheme {
|
58
|
+
val uiMode = reactContext.resources.configuration.uiMode
|
59
|
+
|
60
|
+
val colorScheme = when (uiMode.and(Configuration.UI_MODE_NIGHT_MASK)) {
|
61
|
+
Configuration.UI_MODE_NIGHT_YES -> ColorScheme.DARK
|
62
|
+
Configuration.UI_MODE_NIGHT_NO -> ColorScheme.LIGHT
|
63
|
+
else -> ColorScheme.UNSPECIFIED
|
64
|
+
}
|
65
|
+
|
66
|
+
return colorScheme
|
67
|
+
}
|
68
|
+
|
69
|
+
override fun getFontScale(): Double {
|
70
|
+
return reactContext.resources.configuration.fontScale.toDouble()
|
71
|
+
}
|
72
|
+
|
73
|
+
override fun getPixelRatio(): Double {
|
74
|
+
return reactContext.resources.displayMetrics.density.toDouble()
|
75
|
+
}
|
76
|
+
|
77
|
+
override fun getOrientation(): Orientation {
|
78
|
+
val orientation = when (reactContext.resources.configuration.orientation) {
|
79
|
+
Configuration.ORIENTATION_PORTRAIT -> Orientation.PORTRAIT
|
80
|
+
Configuration.ORIENTATION_LANDSCAPE -> Orientation.LANDSCAPE
|
81
|
+
else -> Orientation.PORTRAIT
|
82
|
+
}
|
83
|
+
|
84
|
+
return orientation
|
85
|
+
}
|
86
|
+
|
87
|
+
override fun getContentSizeCategory(): String {
|
88
|
+
val fontScale = getFontScale()
|
89
|
+
|
90
|
+
val contentSizeCategory = when {
|
91
|
+
fontScale <= 0.85f -> "Small"
|
92
|
+
fontScale <= 1.0f -> "Default"
|
93
|
+
fontScale <= 1.15f -> "Large"
|
94
|
+
fontScale <= 1.3f -> "ExtraLarge"
|
95
|
+
fontScale <= 1.5f -> "Huge"
|
96
|
+
fontScale <= 1.8 -> "ExtraHuge"
|
97
|
+
else -> "ExtraExtraHuge"
|
98
|
+
}
|
99
|
+
|
100
|
+
return contentSizeCategory
|
101
|
+
}
|
102
|
+
|
103
|
+
override fun getScreenDimensions(): Dimensions {
|
104
|
+
// function takes in count edge-to-edge layout
|
105
|
+
when {
|
106
|
+
Build.VERSION.SDK_INT < Build.VERSION_CODES.R -> {
|
107
|
+
val windowManager = reactContext.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
108
|
+
val metrics = DisplayMetrics()
|
109
|
+
|
110
|
+
@Suppress("DEPRECATION")
|
111
|
+
windowManager.defaultDisplay.getRealMetrics(metrics)
|
112
|
+
|
113
|
+
val screenWidth = (metrics.widthPixels / metrics.density).toDouble()
|
114
|
+
val screenHeight = (metrics.heightPixels / metrics.density).toDouble()
|
115
|
+
|
116
|
+
return Dimensions(screenWidth, screenHeight)
|
117
|
+
}
|
118
|
+
else -> {
|
119
|
+
val displayMetrics = reactContext.resources.displayMetrics
|
120
|
+
|
121
|
+
reactContext.currentActivity?.windowManager?.currentWindowMetrics?.bounds?.let {
|
122
|
+
val boundsWidth = (it.width() / displayMetrics.density).toDouble()
|
123
|
+
val boundsHeight = (it.height() / displayMetrics.density).toDouble()
|
124
|
+
|
125
|
+
return Dimensions(boundsWidth, boundsHeight)
|
126
|
+
} ?: run {
|
127
|
+
val screenWidth = (displayMetrics.widthPixels / displayMetrics.density).toDouble()
|
128
|
+
val screenHeight = (displayMetrics.heightPixels / displayMetrics.density).toDouble()
|
129
|
+
|
130
|
+
return Dimensions(screenWidth, screenHeight)
|
131
|
+
}
|
132
|
+
}
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
override fun getStatusBarDimensions(): Dimensions {
|
137
|
+
val screenWidth = getScreenDimensions().width
|
138
|
+
|
139
|
+
return Dimensions(screenWidth, _insets.getInsets().top)
|
140
|
+
}
|
141
|
+
|
142
|
+
override fun getNavigationBarDimensions(): Dimensions {
|
143
|
+
val screenWidth = getScreenDimensions().width
|
144
|
+
|
145
|
+
return Dimensions(screenWidth, _insets.getInsets().bottom)
|
146
|
+
}
|
147
|
+
|
148
|
+
override fun getPrefersRtlDirection(): Boolean {
|
149
|
+
// forced by React Native
|
150
|
+
val sharedPrefs = reactContext.getSharedPreferences(
|
151
|
+
"com.facebook.react.modules.i18nmanager.I18nUtil",
|
152
|
+
Context.MODE_PRIVATE
|
153
|
+
)
|
154
|
+
val hasForcedRtl = sharedPrefs.getBoolean("RCTI18nUtil_forceRTL", false)
|
155
|
+
// user preferences
|
156
|
+
val isRtl = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == ViewCompat.LAYOUT_DIRECTION_RTL
|
157
|
+
|
158
|
+
return hasForcedRtl || isRtl
|
159
|
+
}
|
160
|
+
|
161
|
+
override fun setRootViewBackgroundColor(color: Double) {
|
162
|
+
reactContext.currentActivity?.let { activity ->
|
163
|
+
activity.window?.decorView?.let { decorView ->
|
164
|
+
activity.runOnUiThread {
|
165
|
+
decorView.rootView.setBackgroundColor(color.toInt())
|
166
|
+
}
|
167
|
+
}
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
override fun setNavigationBarHidden(isHidden: Boolean) {
|
172
|
+
reactContext.currentActivity?.let { activity ->
|
173
|
+
WindowInsetsControllerCompat(activity.window, activity.window.decorView).apply {
|
174
|
+
activity.window?.decorView?.let { decorView ->
|
175
|
+
@Suppress("DEPRECATION")
|
176
|
+
activity.runOnUiThread {
|
177
|
+
if (isHidden) {
|
178
|
+
// below Android 11, we need to use window flags to hide the navigation bar
|
179
|
+
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) {
|
180
|
+
decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
181
|
+
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
|
182
|
+
} else {
|
183
|
+
hide(WindowInsetsCompat.Type.navigationBars())
|
184
|
+
systemBarsBehavior =
|
185
|
+
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
186
|
+
}
|
187
|
+
|
188
|
+
// dispatch new insets to invoke the insets listener
|
189
|
+
val newInsets = WindowInsetsCompat.Builder()
|
190
|
+
.setInsets(WindowInsetsCompat.Type.navigationBars(), androidx.core.graphics.Insets.of(0, 0, 0, 0))
|
191
|
+
.build()
|
192
|
+
|
193
|
+
ViewCompat.dispatchApplyWindowInsets(activity.findViewById(android.R.id.content), newInsets)
|
194
|
+
} else {
|
195
|
+
show(WindowInsetsCompat.Type.navigationBars())
|
196
|
+
}
|
197
|
+
}
|
198
|
+
}
|
199
|
+
}
|
200
|
+
}
|
201
|
+
}
|
202
|
+
|
203
|
+
override fun setStatusBarHidden(isHidden: Boolean) {
|
204
|
+
reactContext.currentActivity?.let { activity ->
|
205
|
+
WindowInsetsControllerCompat(activity.window, activity.window.decorView).apply {
|
206
|
+
activity.window?.let { window ->
|
207
|
+
@Suppress("DEPRECATION")
|
208
|
+
activity.runOnUiThread {
|
209
|
+
if (isHidden) {
|
210
|
+
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) {
|
211
|
+
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
212
|
+
window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN)
|
213
|
+
} else {
|
214
|
+
hide(WindowInsetsCompat.Type.statusBars())
|
215
|
+
}
|
216
|
+
} else {
|
217
|
+
show(WindowInsetsCompat.Type.statusBars())
|
218
|
+
}
|
219
|
+
}
|
220
|
+
}
|
221
|
+
}
|
222
|
+
}
|
223
|
+
}
|
224
|
+
|
225
|
+
override fun setImmersiveMode(isEnabled: Boolean) {
|
226
|
+
this.setStatusBarHidden(isEnabled)
|
227
|
+
this.setNavigationBarHidden(isEnabled)
|
228
|
+
}
|
229
|
+
|
230
|
+
override fun getMiniRuntime(): UnistylesNativeMiniRuntime {
|
231
|
+
return _miniRuntime
|
232
|
+
}
|
233
|
+
|
234
|
+
private fun buildMiniRuntime(): UnistylesNativeMiniRuntime {
|
235
|
+
val orientation = this.getOrientation()
|
236
|
+
|
237
|
+
return UnistylesNativeMiniRuntime(
|
238
|
+
colorScheme = this.getColorScheme(),
|
239
|
+
screen = this.getScreenDimensions(),
|
240
|
+
contentSizeCategory = this.getContentSizeCategory(),
|
241
|
+
insets = this.getInsets(),
|
242
|
+
pixelRatio = this.getPixelRatio(),
|
243
|
+
fontScale = this.getFontScale(),
|
244
|
+
rtl = this.getPrefersRtlDirection(),
|
245
|
+
statusBar = this.getStatusBarDimensions(),
|
246
|
+
navigationBar = this.getNavigationBarDimensions(),
|
247
|
+
isPortrait = orientation == Orientation.PORTRAIT,
|
248
|
+
isLandscape = orientation == Orientation.LANDSCAPE
|
249
|
+
)
|
250
|
+
}
|
251
|
+
|
252
|
+
private fun diffMiniRuntime(): Array<UnistyleDependency> {
|
253
|
+
val newMiniRuntime = this.buildMiniRuntime()
|
254
|
+
val changedDependencies = diffMiniRuntimes(this._miniRuntime, newMiniRuntime)
|
255
|
+
|
256
|
+
if (changedDependencies.isNotEmpty()) {
|
257
|
+
this._miniRuntime = newMiniRuntime
|
258
|
+
}
|
259
|
+
|
260
|
+
return changedDependencies
|
261
|
+
}
|
262
|
+
|
263
|
+
override fun registerPlatformListener(callback: (dependencies: Array<UnistyleDependency>, miniRuntime: UnistylesNativeMiniRuntime) -> Unit) {
|
264
|
+
this._listener.addPlatformListener(callback)
|
265
|
+
}
|
266
|
+
|
267
|
+
override fun registerImeListener(callback: (miniRuntime: UnistylesNativeMiniRuntime) -> Unit) {
|
268
|
+
this._insets.addImeListener(callback)
|
269
|
+
}
|
270
|
+
|
271
|
+
override fun unregisterPlatformListeners() {
|
272
|
+
this._listener.removePlatformListeners()
|
273
|
+
this._insets.removeImeListeners()
|
274
|
+
}
|
275
|
+
|
276
|
+
private fun checkEdgeToEdge() {
|
277
|
+
// react-native-edge-to-edge will set setDecorFitsSystemWindows automatically
|
278
|
+
// if it's present we assume that edge-to-edge is enabled
|
279
|
+
|
280
|
+
try {
|
281
|
+
Class.forName("com.zoontek.rnedgetoedge.EdgeToEdgePackage")
|
282
|
+
} catch (exception: ClassNotFoundException) {
|
283
|
+
enableEdgeToEdge()
|
284
|
+
}
|
285
|
+
}
|
286
|
+
|
287
|
+
private fun enableEdgeToEdge() {
|
288
|
+
reactContext.currentActivity?.let { activity ->
|
289
|
+
activity.runOnUiThread {
|
290
|
+
WindowCompat.setDecorFitsSystemWindows(activity.window, false)
|
291
|
+
}
|
292
|
+
}
|
293
|
+
}
|
294
|
+
}
|
@@ -0,0 +1,152 @@
|
|
1
|
+
package com.unistyles
|
2
|
+
|
3
|
+
import android.graphics.Rect
|
4
|
+
import android.os.Build
|
5
|
+
import android.view.View
|
6
|
+
import android.view.Window
|
7
|
+
import android.view.WindowManager
|
8
|
+
import androidx.core.view.ViewCompat
|
9
|
+
import androidx.core.view.WindowInsetsAnimationCompat
|
10
|
+
import androidx.core.view.WindowInsetsCompat
|
11
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
12
|
+
import com.margelo.nitro.unistyles.Insets
|
13
|
+
import com.margelo.nitro.unistyles.UnistyleDependency
|
14
|
+
import com.margelo.nitro.unistyles.UnistylesNativeMiniRuntime
|
15
|
+
|
16
|
+
typealias CxxImeListener = (miniRuntime: UnistylesNativeMiniRuntime) -> Unit
|
17
|
+
|
18
|
+
class NativePlatformInsets(
|
19
|
+
private val reactContext: ReactApplicationContext,
|
20
|
+
private val getMiniRuntime: () -> UnistylesNativeMiniRuntime,
|
21
|
+
private val diffMiniRuntime: () -> Array<UnistyleDependency>
|
22
|
+
) {
|
23
|
+
private val _imeListeners: MutableList<CxxImeListener> = mutableListOf()
|
24
|
+
private var _insets: Insets = Insets(0.0, 0.0, 0.0, 0.0, 0.0)
|
25
|
+
|
26
|
+
fun getInsets(): Insets {
|
27
|
+
val density = reactContext.resources.displayMetrics.density
|
28
|
+
|
29
|
+
return Insets(
|
30
|
+
this._insets.top / density,
|
31
|
+
this._insets.bottom / density,
|
32
|
+
this._insets.left / density,
|
33
|
+
this._insets.right / density,
|
34
|
+
this._insets.ime / density
|
35
|
+
)
|
36
|
+
}
|
37
|
+
|
38
|
+
fun setInsets(insetsCompat: WindowInsetsCompat, window: Window, animatedBottomInsets: Double?) {
|
39
|
+
// below Android 11, we need to use window flags to detect status bar visibility
|
40
|
+
val isStatusBarVisible = when(Build.VERSION.SDK_INT) {
|
41
|
+
in 30..Int.MAX_VALUE -> {
|
42
|
+
insetsCompat.isVisible(WindowInsetsCompat.Type.statusBars())
|
43
|
+
}
|
44
|
+
else -> {
|
45
|
+
@Suppress("DEPRECATION")
|
46
|
+
window.attributes.flags and WindowManager.LayoutParams.FLAG_FULLSCREEN != WindowManager.LayoutParams.FLAG_FULLSCREEN
|
47
|
+
}
|
48
|
+
}
|
49
|
+
// React Native is forcing insets to make status bar translucent
|
50
|
+
// so we need to calculate top inset manually, as WindowInsetCompat will always return 0
|
51
|
+
val statusBarTopInset = when(isStatusBarVisible) {
|
52
|
+
true -> {
|
53
|
+
val visibleRect = Rect()
|
54
|
+
|
55
|
+
window.decorView.getWindowVisibleDisplayFrame(visibleRect)
|
56
|
+
|
57
|
+
visibleRect.top
|
58
|
+
}
|
59
|
+
false -> 0
|
60
|
+
}
|
61
|
+
|
62
|
+
val insets = insetsCompat.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout())
|
63
|
+
|
64
|
+
// Android 10 and below - set bottom insets to 0 while keyboard is visible and use default bottom insets otherwise
|
65
|
+
// Android 11 and above - animate bottom insets while keyboard is appearing and disappearing
|
66
|
+
val imeInsets = when {
|
67
|
+
animatedBottomInsets != null && Build.VERSION.SDK_INT >= 30 -> animatedBottomInsets
|
68
|
+
Build.VERSION.SDK_INT < 30 -> {
|
69
|
+
val nextBottomInset = insetsCompat.getInsets(WindowInsetsCompat.Type.ime()).bottom - insets.bottom
|
70
|
+
maxOf(nextBottomInset, 0).toDouble()
|
71
|
+
}
|
72
|
+
else -> 0.0
|
73
|
+
}
|
74
|
+
|
75
|
+
val shouldEmitImeEvent = Build.VERSION.SDK_INT < 30 && imeInsets != this._insets.ime || animatedBottomInsets != null && Build.VERSION.SDK_INT >= 30
|
76
|
+
|
77
|
+
this._insets = Insets(
|
78
|
+
statusBarTopInset.toDouble(),
|
79
|
+
insets.bottom.toDouble(),
|
80
|
+
insets.left.toDouble(),
|
81
|
+
insets.right.toDouble(),
|
82
|
+
imeInsets
|
83
|
+
)
|
84
|
+
|
85
|
+
diffMiniRuntime()
|
86
|
+
|
87
|
+
if (shouldEmitImeEvent) {
|
88
|
+
this@NativePlatformInsets.emitImeEvent(this.getMiniRuntime())
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
fun startInsetsListener() {
|
93
|
+
reactContext.currentActivity?.let { activity ->
|
94
|
+
activity.findViewById<View>(android.R.id.content)?.let { mainView ->
|
95
|
+
ViewCompat.setOnApplyWindowInsetsListener(mainView) { _, insets ->
|
96
|
+
setInsets(insets, activity.window, null)
|
97
|
+
|
98
|
+
insets
|
99
|
+
}
|
100
|
+
|
101
|
+
// IME insets are available from Android 11
|
102
|
+
if (Build.VERSION.SDK_INT >= 30) {
|
103
|
+
ViewCompat.setWindowInsetsAnimationCallback(
|
104
|
+
mainView,
|
105
|
+
object : WindowInsetsAnimationCompat.Callback(DISPATCH_MODE_STOP) {
|
106
|
+
override fun onProgress(
|
107
|
+
insets: WindowInsetsCompat,
|
108
|
+
runningAnimations: List<WindowInsetsAnimationCompat>
|
109
|
+
): WindowInsetsCompat {
|
110
|
+
runningAnimations.firstOrNull()?.let {
|
111
|
+
val bottomInset = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom.toDouble() - this@NativePlatformInsets._insets.bottom
|
112
|
+
val nextBottomInset = if (bottomInset < 0) {
|
113
|
+
0.0
|
114
|
+
} else {
|
115
|
+
bottomInset
|
116
|
+
}
|
117
|
+
|
118
|
+
this@NativePlatformInsets.setInsets(insets, activity.window, nextBottomInset)
|
119
|
+
}
|
120
|
+
|
121
|
+
return insets
|
122
|
+
}
|
123
|
+
}
|
124
|
+
)
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
fun emitImeEvent(miniRuntime: UnistylesNativeMiniRuntime) {
|
131
|
+
_imeListeners.forEach { listener ->
|
132
|
+
listener(miniRuntime)
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
fun stopInsetsListener() {
|
137
|
+
reactContext.currentActivity?.let { activity ->
|
138
|
+
activity.window?.decorView?.let { view ->
|
139
|
+
ViewCompat.setOnApplyWindowInsetsListener(view, null)
|
140
|
+
ViewCompat.setWindowInsetsAnimationCallback(view, null)
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
fun addImeListener(listener: CxxImeListener) {
|
146
|
+
this._imeListeners.add(listener)
|
147
|
+
}
|
148
|
+
|
149
|
+
fun removeImeListeners() {
|
150
|
+
this._imeListeners.clear()
|
151
|
+
}
|
152
|
+
}
|
@@ -0,0 +1,59 @@
|
|
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.os.Handler
|
8
|
+
import android.os.Looper
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
10
|
+
import com.margelo.nitro.unistyles.UnistyleDependency
|
11
|
+
import com.margelo.nitro.unistyles.UnistylesNativeMiniRuntime
|
12
|
+
|
13
|
+
typealias CxxDependencyListener = (dependencies: Array<UnistyleDependency>, miniRuntime: UnistylesNativeMiniRuntime) -> Unit
|
14
|
+
|
15
|
+
class NativePlatformListener(
|
16
|
+
private val reactContext: ReactApplicationContext,
|
17
|
+
private val getMiniRuntime: () -> UnistylesNativeMiniRuntime,
|
18
|
+
private val diffMiniRuntime: () -> Array<UnistyleDependency>
|
19
|
+
) {
|
20
|
+
private val _dependencyListeners: MutableList<CxxDependencyListener> = mutableListOf()
|
21
|
+
|
22
|
+
private val configurationChangeReceiver = object : BroadcastReceiver() {
|
23
|
+
override fun onReceive(context: Context, intent: Intent) {
|
24
|
+
Handler(Looper.getMainLooper()).postDelayed({
|
25
|
+
this@NativePlatformListener.onConfigChange()
|
26
|
+
}, 10)
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
init {
|
31
|
+
reactContext.registerReceiver(configurationChangeReceiver, IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED))
|
32
|
+
}
|
33
|
+
|
34
|
+
fun invalidate() {
|
35
|
+
reactContext.unregisterReceiver(configurationChangeReceiver)
|
36
|
+
}
|
37
|
+
|
38
|
+
fun addPlatformListener(listener: CxxDependencyListener) {
|
39
|
+
this._dependencyListeners.add(listener)
|
40
|
+
}
|
41
|
+
|
42
|
+
fun removePlatformListeners() {
|
43
|
+
this._dependencyListeners.clear()
|
44
|
+
}
|
45
|
+
|
46
|
+
private fun emitCxxEvent(dependencies: Array<UnistyleDependency>, miniRuntime: UnistylesNativeMiniRuntime) {
|
47
|
+
this._dependencyListeners.forEach { listener ->
|
48
|
+
listener(dependencies, miniRuntime)
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
fun onConfigChange() {
|
53
|
+
val changedDependencies = diffMiniRuntime()
|
54
|
+
|
55
|
+
if (changedDependencies.isNotEmpty()) {
|
56
|
+
emitCxxEvent(changedDependencies, getMiniRuntime())
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
package com.unistyles
|
2
|
+
|
3
|
+
import com.facebook.fbreact.specs.NativeTurboUnistylesSpec
|
4
|
+
import com.facebook.jni.HybridData
|
5
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
7
|
+
import com.facebook.react.bridge.RuntimeExecutor
|
8
|
+
import com.facebook.react.fabric.FabricUIManager
|
9
|
+
import com.facebook.react.turbomodule.core.interfaces.BindingsInstallerHolder
|
10
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModuleWithJSIBindings
|
11
|
+
import com.facebook.react.uimanager.UIManagerHelper
|
12
|
+
import com.facebook.react.uimanager.common.UIManagerType
|
13
|
+
import com.margelo.nitro.unistyles.HybridNativePlatformSpec
|
14
|
+
|
15
|
+
@Suppress("KotlinJniMissingFunction")
|
16
|
+
class UnistylesModule(reactContext: ReactApplicationContext): NativeTurboUnistylesSpec(reactContext), TurboModuleWithJSIBindings {
|
17
|
+
@DoNotStrip
|
18
|
+
private var mHybridData: HybridData?
|
19
|
+
private val _nativePlatform = NativePlatformAndroid(reactContext)
|
20
|
+
|
21
|
+
companion object {
|
22
|
+
const val NAME = NativeTurboUnistylesSpec.NAME
|
23
|
+
}
|
24
|
+
|
25
|
+
init {
|
26
|
+
mHybridData = initializeHybridData(reactContext)
|
27
|
+
}
|
28
|
+
|
29
|
+
override fun invalidate() {
|
30
|
+
_nativePlatform.invalidate()
|
31
|
+
}
|
32
|
+
|
33
|
+
private fun initializeHybridData(reactContext: ReactApplicationContext): HybridData {
|
34
|
+
val runtimeExecutor = reactContext.catalystInstance?.runtimeExecutor
|
35
|
+
?: throw IllegalStateException("Unistyles: React Native runtime executor is not available. Please follow installation guides.")
|
36
|
+
val fabricUIManager = UIManagerHelper.getUIManager(reactContext, UIManagerType.FABRIC) as? FabricUIManager
|
37
|
+
?: throw IllegalStateException("Unistyles: Fabric UI Manager is not available. Please follow installation guides.")
|
38
|
+
|
39
|
+
return initHybrid(runtimeExecutor, fabricUIManager, _nativePlatform)
|
40
|
+
}
|
41
|
+
|
42
|
+
@DoNotStrip
|
43
|
+
external override fun getBindingsInstaller(): BindingsInstallerHolder
|
44
|
+
|
45
|
+
@DoNotStrip
|
46
|
+
private external fun initHybrid(
|
47
|
+
runtimeExecutor: RuntimeExecutor,
|
48
|
+
fabricUIManager: FabricUIManager,
|
49
|
+
nativePlatform: HybridNativePlatformSpec
|
50
|
+
): HybridData
|
51
|
+
}
|
@@ -1,28 +1,30 @@
|
|
1
1
|
package com.unistyles
|
2
2
|
|
3
|
-
import android.util.Log
|
4
3
|
import com.facebook.react.TurboReactPackage
|
5
4
|
import com.facebook.react.bridge.NativeModule
|
6
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
6
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
7
7
|
import com.facebook.react.module.model.ReactModuleInfoProvider
|
8
8
|
|
9
9
|
class UnistylesPackage: TurboReactPackage() {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
System.loadLibrary("unistyles")
|
16
|
-
Log.i(TAG, "Installed Unistyles \uD83E\uDD84!")
|
17
|
-
} catch (e: Throwable) {
|
18
|
-
Log.e(TAG, "Failed to load Unistyles C++ library! Is it properly linked?", e)
|
19
|
-
throw e
|
20
|
-
}
|
10
|
+
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
11
|
+
return if (name == UnistylesModule.NAME) {
|
12
|
+
UnistylesModule(reactContext)
|
13
|
+
} else {
|
14
|
+
null
|
21
15
|
}
|
22
16
|
}
|
23
17
|
|
24
|
-
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? = null
|
25
18
|
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
26
|
-
return ReactModuleInfoProvider {
|
19
|
+
return ReactModuleInfoProvider {
|
20
|
+
mapOf(UnistylesModule.NAME to ReactModuleInfo(
|
21
|
+
UnistylesModule.NAME,
|
22
|
+
UnistylesModule.NAME,
|
23
|
+
_canOverrideExistingModule = true,
|
24
|
+
_needsEagerInit = true,
|
25
|
+
isCxxModule = true,
|
26
|
+
isTurboModule = true
|
27
|
+
))
|
28
|
+
}
|
27
29
|
}
|
28
30
|
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#if __has_include("Unistyles-Swift-Cxx-Umbrella.hpp")
|
2
|
+
#include "Unistyles-Swift-Cxx-Umbrella.hpp"
|
3
|
+
#elif __has_include("JHybridNativePlatformSpec.hpp")
|
4
|
+
#include "JHybridNativePlatformSpec.hpp"
|
5
|
+
|
6
|
+
namespace Unistyles {
|
7
|
+
using HybridNativePlatformSpecCxx = margelo::nitro::unistyles::JHybridNativePlatformSpec;
|
8
|
+
}
|
9
|
+
#else
|
10
|
+
#error "Unistyles: Can't find platform specific header!"
|
11
|
+
#endif
|
package/cxx/common/Constants.h
CHANGED
@@ -5,6 +5,10 @@ namespace margelo::nitro::unistyles::helpers {
|
|
5
5
|
static const std::string UNISTYLES_ID = "__unid";
|
6
6
|
static const std::string ADD_VARIANTS_FN = "useVariants";
|
7
7
|
static const std::string STYLE_DEPENDENCIES = "uni__dependencies";
|
8
|
+
static const std::string STYLE_VARIANTS = "uni__variants";
|
8
9
|
static const std::string WEB_STYLE_KEY = "_web";
|
10
|
+
static const std::string EXOTIC_STYLE_KEY = "_exotic";
|
11
|
+
static const std::string NAME_STYLE_KEY = "__unistyles_name";
|
12
|
+
static const std::string UNI_PRESSABLE_ID = "__uni_pressable_id";
|
9
13
|
|
10
14
|
}
|