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
@@ -8,6 +8,7 @@ namespace margelo::nitro::unistyles::core {
|
|
8
8
|
// React Native uses 0-10
|
9
9
|
// Reanimated uses 27-28
|
10
10
|
constexpr shadow::ShadowNodeTraits::Trait UnistylesCommitTrait{1 << 30};
|
11
|
+
constexpr shadow::ShadowNodeTraits::Trait UnistylesMountTrait{1 << 31};
|
11
12
|
|
12
13
|
struct UnistylesCommitShadowNode: public shadow::ShadowNode {
|
13
14
|
inline void addUnistylesCommitTrait() {
|
@@ -21,6 +22,18 @@ struct UnistylesCommitShadowNode: public shadow::ShadowNode {
|
|
21
22
|
inline bool hasUnistylesCommitTrait() {
|
22
23
|
return traits_.check(UnistylesCommitTrait);
|
23
24
|
}
|
25
|
+
|
26
|
+
inline void addUnistylesMountTrait() {
|
27
|
+
traits_.set(UnistylesMountTrait);
|
28
|
+
}
|
29
|
+
|
30
|
+
inline void removeUnistylesMountTrait() {
|
31
|
+
traits_.unset(UnistylesMountTrait);
|
32
|
+
}
|
33
|
+
|
34
|
+
inline bool hasUnistylesMountTrait() {
|
35
|
+
return traits_.check(UnistylesMountTrait);
|
36
|
+
}
|
24
37
|
};
|
25
38
|
|
26
39
|
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#include "UnistylesMountHook.h"
|
2
|
+
|
3
|
+
using namespace margelo::nitro::unistyles;
|
4
|
+
using namespace facebook::react;
|
5
|
+
|
6
|
+
core::UnistylesMountHook::~UnistylesMountHook() noexcept {
|
7
|
+
_uiManager->unregisterMountHook(*this);
|
8
|
+
}
|
9
|
+
|
10
|
+
void core::UnistylesMountHook::shadowTreeDidMount(RootShadowNode::Shared const &rootShadowNode, double mountTime) noexcept {
|
11
|
+
auto rootNode = std::const_pointer_cast<RootShadowNode>(rootShadowNode);
|
12
|
+
auto unistylesRootNode = std::reinterpret_pointer_cast<core::UnistylesCommitShadowNode>(rootNode);
|
13
|
+
|
14
|
+
// if this is Unistyles commit, do nothing
|
15
|
+
if (unistylesRootNode->hasUnistylesMountTrait()) {
|
16
|
+
unistylesRootNode->removeUnistylesMountTrait();
|
17
|
+
|
18
|
+
return;
|
19
|
+
}
|
20
|
+
|
21
|
+
// this is React Native or Reanimated commit
|
22
|
+
// one more time merge Unistyles changes
|
23
|
+
auto& registry = core::UnistylesRegistry::get();
|
24
|
+
|
25
|
+
if (!registry.trafficController.shouldStop()) {
|
26
|
+
shadow::ShadowTreeManager::updateShadowTree(this->_uiManager->getShadowTreeRegistry());
|
27
|
+
}
|
28
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <react/renderer/uimanager/UIManager.h>
|
4
|
+
#include <react/renderer/uimanager/UIManagerMountHook.h>
|
5
|
+
#include "ShadowTreeManager.h"
|
6
|
+
#include "HybridUnistylesRuntime.h"
|
7
|
+
|
8
|
+
namespace margelo::nitro::unistyles::core {
|
9
|
+
|
10
|
+
using namespace facebook::react;
|
11
|
+
|
12
|
+
struct UnistylesMountHook : public UIManagerMountHook {
|
13
|
+
UnistylesMountHook(std::shared_ptr<UIManager> uiManager, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime)
|
14
|
+
: _uiManager{uiManager}, _unistylesRuntime{unistylesRuntime} {
|
15
|
+
_uiManager->registerMountHook(*this);
|
16
|
+
}
|
17
|
+
|
18
|
+
~UnistylesMountHook() noexcept override;
|
19
|
+
|
20
|
+
void shadowTreeDidMount(RootShadowNode::Shared const &rootShadowNode, double mountTime) noexcept override;
|
21
|
+
|
22
|
+
private:
|
23
|
+
std::shared_ptr<UIManager> _uiManager;
|
24
|
+
std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
|
25
|
+
};
|
26
|
+
|
27
|
+
}
|
@@ -1,19 +1,15 @@
|
|
1
1
|
#include "UnistylesRegistry.h"
|
2
2
|
#include "UnistylesState.h"
|
3
|
+
#include "Parser.h"
|
3
4
|
|
4
5
|
using namespace margelo::nitro::unistyles;
|
5
6
|
using namespace facebook;
|
6
7
|
using namespace facebook::react;
|
7
8
|
|
8
|
-
|
9
|
-
std::shared_ptr<core::StyleSheet>,
|
10
|
-
std::unordered_map<const ShadowNodeFamily*, std::vector<core::Unistyle::Shared>>
|
11
|
-
>;
|
12
|
-
|
13
|
-
void core::UnistylesRegistry::registerTheme(jsi::Runtime& rt, std::string name, jsi::Object&& theme) {
|
9
|
+
void core::UnistylesRegistry::registerTheme(jsi::Runtime& rt, std::string name, jsi::Value& theme) {
|
14
10
|
auto& state = this->getState(rt);
|
15
11
|
|
16
|
-
state._jsThemes.emplace(name,
|
12
|
+
state._jsThemes.emplace(name, std::move(theme));
|
17
13
|
state._registeredThemeNames.push_back(name);
|
18
14
|
}
|
19
15
|
|
@@ -62,115 +58,159 @@ void core::UnistylesRegistry::createState(jsi::Runtime& rt) {
|
|
62
58
|
void core::UnistylesRegistry::updateTheme(jsi::Runtime& rt, std::string& themeName, jsi::Function&& callback) {
|
63
59
|
auto& state = this->getState(rt);
|
64
60
|
auto it = state._jsThemes.find(themeName);
|
65
|
-
|
61
|
+
|
66
62
|
helpers::assertThat(rt, it != state._jsThemes.end(), "Unistyles: You're trying to update theme '" + themeName + "' but it wasn't registered.");
|
67
|
-
|
68
|
-
auto currentThemeValue = it->second.lock(rt);
|
69
|
-
|
70
|
-
helpers::assertThat(rt, currentThemeValue.isObject(), "Unistyles: Unable to update your theme from C++. It was already garbage collected.");
|
71
|
-
|
72
|
-
auto result = callback.call(rt, currentThemeValue.asObject(rt));
|
73
|
-
|
74
|
-
helpers::assertThat(rt, result.isObject(), "Unistyles: Returned theme is not an object. Please check your updateTheme function.");
|
75
63
|
|
76
|
-
|
77
|
-
}
|
64
|
+
auto result = callback.call(rt, it->second);
|
78
65
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
}
|
83
|
-
|
84
|
-
this->_shadowRegistry[shadowNodeFamily].emplace_back(unistyle);
|
66
|
+
helpers::assertThat(rt, result.isObject(), "Unistyles: Returned theme is not an object. Please check your updateTheme function.");
|
67
|
+
|
68
|
+
it->second = result.asObject(rt);
|
85
69
|
}
|
86
70
|
|
87
|
-
void core::UnistylesRegistry::
|
88
|
-
|
89
|
-
|
71
|
+
void core::UnistylesRegistry::linkShadowNodeWithUnistyle(
|
72
|
+
jsi::Runtime& rt,
|
73
|
+
const ShadowNodeFamily* shadowNodeFamily,
|
74
|
+
std::vector<core::Unistyle::Shared>& unistyles,
|
75
|
+
Variants& variants,
|
76
|
+
std::vector<std::vector<folly::dynamic>>& arguments,
|
77
|
+
std::optional<std::string> uniquePressableId
|
78
|
+
) {
|
79
|
+
auto parser = parser::Parser(nullptr);
|
80
|
+
shadow::ShadowLeafUpdates updates;
|
90
81
|
|
91
|
-
|
92
|
-
|
82
|
+
for (size_t index = 0; index < unistyles.size(); index++) {
|
83
|
+
Unistyle::Shared unistyle = unistyles[index];
|
84
|
+
|
85
|
+
this->_shadowRegistry[&rt][shadowNodeFamily].emplace_back(std::make_shared<UnistyleData>(unistyle, variants, arguments[index], uniquePressableId));
|
86
|
+
|
87
|
+
// add or update node for shadow leaf updates
|
88
|
+
// dynamic functions are parsed later
|
89
|
+
if (unistyle->type == UnistyleType::Object) {
|
90
|
+
for (const auto& [family, unistyles] : this->_shadowRegistry[&rt]) {
|
91
|
+
for (const auto& unistyleData : unistyles) {
|
92
|
+
if (unistyleData->unistyle == unistyle && family == shadowNodeFamily) {
|
93
|
+
updates[family] = parser.parseStylesToShadowTreeStyles(rt, {unistyleData});
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
93
98
|
}
|
99
|
+
|
100
|
+
this->trafficController.setUpdates(updates);
|
101
|
+
this->trafficController.resumeUnistylesTraffic();
|
94
102
|
}
|
95
103
|
|
96
|
-
|
97
|
-
this->
|
104
|
+
void core::UnistylesRegistry::unlinkShadowNodeWithUnistyles(jsi::Runtime& rt, const ShadowNodeFamily* shadowNodeFamily) {
|
105
|
+
this->_shadowRegistry[&rt].erase(shadowNodeFamily);
|
106
|
+
this->trafficController.removeShadowNode(shadowNodeFamily);
|
98
107
|
|
99
|
-
|
108
|
+
if (this->_shadowRegistry[&rt].empty()) {
|
109
|
+
this->_shadowRegistry.erase(&rt);
|
110
|
+
}
|
100
111
|
}
|
101
112
|
|
102
|
-
|
103
|
-
|
104
|
-
this->_styleSheetRegistry.begin(),
|
105
|
-
this->_styleSheetRegistry.end(),
|
106
|
-
[tag](std::shared_ptr<StyleSheet> styleSheet){
|
107
|
-
return styleSheet->tag == tag;
|
108
|
-
}
|
109
|
-
);
|
110
|
-
|
111
|
-
if (it == this->_styleSheetRegistry.cend()) {
|
112
|
-
throw std::runtime_error("stylesheet with tag: " + std::to_string(tag) + " cannot be found.");
|
113
|
-
}
|
113
|
+
std::shared_ptr<core::StyleSheet> core::UnistylesRegistry::addStyleSheet(jsi::Runtime& rt, int unid, core::StyleSheetType type, jsi::Object&& rawValue) {
|
114
|
+
this->_styleSheetRegistry[&rt][unid] = std::make_shared<core::StyleSheet>(unid, type, std::move(rawValue));
|
114
115
|
|
115
|
-
this->_styleSheetRegistry
|
116
|
+
return this->_styleSheetRegistry[&rt][unid];
|
116
117
|
}
|
117
|
-
|
118
|
-
DependencyMap core::UnistylesRegistry::buildDependencyMap(std::vector<UnistyleDependency>& deps) {
|
118
|
+
|
119
|
+
core::DependencyMap core::UnistylesRegistry::buildDependencyMap(jsi::Runtime& rt, std::vector<UnistyleDependency>& deps) {
|
119
120
|
DependencyMap dependencyMap;
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
// that depends on something affected
|
121
|
+
std::set<UnistyleDependency> uniqueDependencies(deps.begin(), deps.end());
|
122
|
+
|
123
|
+
for (const auto& [family, unistyles] : this->_shadowRegistry[&rt]) {
|
124
|
+
for (const auto& unistyleData : unistyles) {
|
125
125
|
bool hasAnyOfDependencies = std::any_of(
|
126
|
-
unistyle->dependencies.begin(),
|
127
|
-
unistyle->dependencies.end(),
|
128
|
-
[&
|
129
|
-
return std::find(
|
126
|
+
unistyleData->unistyle->dependencies.begin(),
|
127
|
+
unistyleData->unistyle->dependencies.end(),
|
128
|
+
[&uniqueDependencies](UnistyleDependency dep) {
|
129
|
+
return std::find(uniqueDependencies.begin(), uniqueDependencies.end(), dep) != uniqueDependencies.end();
|
130
130
|
}
|
131
131
|
);
|
132
|
-
|
132
|
+
|
133
133
|
if (!hasAnyOfDependencies) {
|
134
134
|
continue;
|
135
135
|
}
|
136
|
-
|
137
|
-
// if so, we need to find shadow family too
|
138
|
-
for (const auto& pair : this->_shadowRegistry) {
|
139
|
-
const auto& [family, unistyles] = pair;
|
140
|
-
|
141
|
-
for (const auto& shadowUnistyle : unistyles) {
|
142
|
-
if (unistyle != shadowUnistyle) {
|
143
|
-
continue;
|
144
|
-
}
|
145
136
|
|
146
|
-
|
147
|
-
|
137
|
+
// we need to take in count all unistyles from the shadowNode
|
138
|
+
// as user might be using spreads and not all of them may have dependencies
|
139
|
+
for (const auto& unistyleData : unistyles) {
|
140
|
+
dependencyMap[family].emplace_back(unistyleData);
|
148
141
|
}
|
142
|
+
|
143
|
+
break;
|
149
144
|
}
|
150
145
|
}
|
151
146
|
|
152
147
|
return dependencyMap;
|
153
148
|
}
|
154
149
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
150
|
+
// called from proxied function only, we don't know host
|
151
|
+
// so we need to rebuild all instances as they may have different variants
|
152
|
+
void core::UnistylesRegistry::shadowLeafUpdateFromUnistyle(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<std::string> uniquePressableId) {
|
153
|
+
shadow::ShadowLeafUpdates updates;
|
154
|
+
auto parser = parser::Parser(nullptr);
|
155
|
+
|
156
|
+
for (const auto& [family, unistyles] : this->_shadowRegistry[&rt]) {
|
157
|
+
for (const auto& unistyleData : unistyles) {
|
158
|
+
if (unistyleData->unistyle == unistyle) {
|
159
|
+
// special case for pressable
|
160
|
+
if (uniquePressableId.has_value() && unistyleData->pressableId.has_value() && uniquePressableId.value() == unistyleData->pressableId.value()) {
|
161
|
+
unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
|
162
|
+
}
|
162
163
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
164
|
+
updates[family] = parser.parseStylesToShadowTreeStyles(rt, { unistyleData });
|
165
|
+
}
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
169
|
+
this->trafficController.setUpdates(updates);
|
170
|
+
}
|
167
171
|
|
168
|
-
|
169
|
-
|
172
|
+
std::vector<std::shared_ptr<core::StyleSheet>> core::UnistylesRegistry::getStyleSheetsToRefresh(jsi::Runtime& rt, std::vector<UnistyleDependency>& unistylesDependencies) {
|
173
|
+
std::vector<std::shared_ptr<core::StyleSheet>> stylesheetsToRefresh{};
|
174
|
+
auto themeDidChangeIt = std::find(unistylesDependencies.begin(),
|
175
|
+
unistylesDependencies.end(),
|
176
|
+
UnistyleDependency::THEME);
|
177
|
+
auto themeDidChange = themeDidChangeIt != unistylesDependencies.end();
|
178
|
+
auto runtimeDidChange = (themeDidChange && unistylesDependencies.size() > 1) || unistylesDependencies.size() > 0;
|
179
|
+
|
180
|
+
// if nothing changed, skip further lookup
|
181
|
+
if (!themeDidChange && !runtimeDidChange) {
|
182
|
+
return stylesheetsToRefresh;
|
183
|
+
}
|
184
|
+
|
185
|
+
auto& styleSheets = this->_styleSheetRegistry[&rt];
|
186
|
+
|
187
|
+
std::for_each(styleSheets.begin(), styleSheets.end(), [&](std::pair<int, std::shared_ptr<core::StyleSheet>> pair){
|
188
|
+
auto& [_, styleSheet] = pair;
|
189
|
+
|
190
|
+
if (styleSheet->type == StyleSheetType::ThemableWithMiniRuntime) {
|
191
|
+
for (const auto& unistylePair: styleSheet->unistyles) {
|
192
|
+
auto& [_, unistyle] = unistylePair;
|
193
|
+
|
194
|
+
bool hasAnyOfDependencies = std::any_of(
|
195
|
+
unistyle->dependencies.begin(),
|
196
|
+
unistyle->dependencies.end(),
|
197
|
+
[&unistylesDependencies](UnistyleDependency dep) {
|
198
|
+
return std::find(unistylesDependencies.begin(), unistylesDependencies.end(), dep) != unistylesDependencies.end();
|
199
|
+
}
|
200
|
+
);
|
201
|
+
|
202
|
+
if (hasAnyOfDependencies) {
|
203
|
+
stylesheetsToRefresh.emplace_back(styleSheet);
|
204
|
+
|
205
|
+
return;
|
170
206
|
}
|
171
207
|
}
|
172
208
|
}
|
173
|
-
}
|
174
209
|
|
175
|
-
|
210
|
+
if (styleSheet->type == StyleSheetType::Themable && themeDidChange) {
|
211
|
+
stylesheetsToRefresh.emplace_back(styleSheet);
|
212
|
+
}
|
213
|
+
});
|
214
|
+
|
215
|
+
return stylesheetsToRefresh;
|
176
216
|
}
|
@@ -1,6 +1,8 @@
|
|
1
1
|
#pragma once
|
2
2
|
|
3
|
+
#include "set"
|
3
4
|
#include <jsi/jsi.h>
|
5
|
+
#include <folly/dynamic.h>
|
4
6
|
#include <react/renderer/uimanager/UIManager.h>
|
5
7
|
#include <unordered_map>
|
6
8
|
#include <unordered_set>
|
@@ -8,6 +10,8 @@
|
|
8
10
|
#include "StyleSheetRegistry.h"
|
9
11
|
#include "StyleSheet.h"
|
10
12
|
#include "Unistyle.h"
|
13
|
+
#include "UnistyleData.h"
|
14
|
+
#include "ShadowTrafficController.h"
|
11
15
|
|
12
16
|
namespace margelo::nitro::unistyles::core {
|
13
17
|
|
@@ -16,10 +20,7 @@ struct UnistylesState;
|
|
16
20
|
using namespace facebook;
|
17
21
|
using namespace facebook::react;
|
18
22
|
|
19
|
-
using DependencyMap = std::unordered_map<
|
20
|
-
std::shared_ptr<core::StyleSheet>,
|
21
|
-
std::unordered_map<const ShadowNodeFamily*, std::vector<core::Unistyle::Shared>>
|
22
|
-
>;
|
23
|
+
using DependencyMap = std::unordered_map<const ShadowNodeFamily*, std::vector<std::shared_ptr<UnistyleData>>>;
|
23
24
|
|
24
25
|
struct UnistylesRegistry: public StyleSheetRegistry {
|
25
26
|
static UnistylesRegistry& get();
|
@@ -27,7 +28,7 @@ struct UnistylesRegistry: public StyleSheetRegistry {
|
|
27
28
|
UnistylesRegistry(const UnistylesRegistry&) = delete;
|
28
29
|
UnistylesRegistry(const UnistylesRegistry&&) = delete;
|
29
30
|
|
30
|
-
void registerTheme(jsi::Runtime& rt, std::string name, jsi::
|
31
|
+
void registerTheme(jsi::Runtime& rt, std::string name, jsi::Value& theme);
|
31
32
|
void registerBreakpoints(jsi::Runtime& rt, std::vector<std::pair<std::string, double>>& sortedBreakpoints);
|
32
33
|
void setPrefersAdaptiveThemes(jsi::Runtime& rt, bool prefersAdaptiveThemes);
|
33
34
|
void setInitialThemeName(jsi::Runtime& rt, std::string themeName);
|
@@ -35,22 +36,23 @@ struct UnistylesRegistry: public StyleSheetRegistry {
|
|
35
36
|
|
36
37
|
UnistylesState& getState(jsi::Runtime& rt);
|
37
38
|
void createState(jsi::Runtime& rt);
|
38
|
-
|
39
|
-
void
|
40
|
-
|
41
|
-
|
42
|
-
DependencyMap buildDependencyMap(std::vector<UnistyleDependency>& deps);
|
43
|
-
|
39
|
+
std::vector<std::shared_ptr<core::StyleSheet>> getStyleSheetsToRefresh(jsi::Runtime& rt, std::vector<UnistyleDependency>& unistylesDependencies);
|
40
|
+
void linkShadowNodeWithUnistyle(jsi::Runtime& rt, const ShadowNodeFamily*, std::vector<core::Unistyle::Shared>& unistyles, Variants& variants, std::vector<std::vector<folly::dynamic>>&, std::optional<std::string> uniquePressableId);
|
41
|
+
void unlinkShadowNodeWithUnistyles(jsi::Runtime& rt, const ShadowNodeFamily*);
|
42
|
+
std::shared_ptr<core::StyleSheet> addStyleSheet(jsi::Runtime& rt, int tag, core::StyleSheetType type, jsi::Object&& rawValue);
|
43
|
+
DependencyMap buildDependencyMap(jsi::Runtime& rt, std::vector<UnistyleDependency>& deps);
|
44
|
+
void shadowLeafUpdateFromUnistyle(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<std::string> uniquePressableId);
|
45
|
+
shadow::ShadowTrafficController trafficController{};
|
44
46
|
|
45
47
|
private:
|
46
48
|
UnistylesRegistry() = default;
|
47
49
|
|
48
50
|
std::unordered_map<jsi::Runtime*, UnistylesState> _states{};
|
49
|
-
std::
|
50
|
-
std::unordered_map<const ShadowNodeFamily*, std::vector<
|
51
|
+
std::unordered_map<jsi::Runtime*, std::unordered_map<int, std::shared_ptr<core::StyleSheet>>> _styleSheetRegistry{};
|
52
|
+
std::unordered_map<jsi::Runtime*, std::unordered_map<const ShadowNodeFamily*, std::vector<const std::shared_ptr<UnistyleData>>>> _shadowRegistry{};
|
51
53
|
};
|
52
54
|
|
53
|
-
UnistylesRegistry& UnistylesRegistry::get() {
|
55
|
+
inline UnistylesRegistry& UnistylesRegistry::get() {
|
54
56
|
static UnistylesRegistry cache;
|
55
57
|
|
56
58
|
return cache;
|
@@ -23,9 +23,13 @@ std::optional<std::string>& core::UnistylesState::getCurrentThemeName() {
|
|
23
23
|
return this->_currentThemeName;
|
24
24
|
}
|
25
25
|
|
26
|
-
jsi::Object core::UnistylesState::
|
26
|
+
jsi::Object core::UnistylesState::getCurrentJSTheme() {
|
27
27
|
auto hasSomeThemes = _registeredThemeNames.size() > 0;
|
28
28
|
|
29
|
+
if (!hasSomeThemes && !this->hasUserConfig) {
|
30
|
+
helpers::assertThat(*_rt, false, "Unistyles: One of your stylesheets is trying to get the theme, but no theme has been selected yet. Did you forget to call StyleSheet.configure? If you called it, make sure you did so before any StyleSheet.create.");
|
31
|
+
}
|
32
|
+
|
29
33
|
// return empty object, if user didn't register any themes
|
30
34
|
if (!hasSomeThemes) {
|
31
35
|
return jsi::Object(*_rt);
|
@@ -37,14 +41,22 @@ jsi::Object core::UnistylesState::getJSTheme() {
|
|
37
41
|
|
38
42
|
helpers::assertThat(*_rt, it != this->_jsThemes.end(), "Unistyles: You're trying to get theme '" + _currentThemeName.value() + "', but it was not registered. Did you forget to register it with StyleSheet.configure?");
|
39
43
|
|
40
|
-
|
44
|
+
return it->second.asObject(*_rt);
|
45
|
+
}
|
41
46
|
|
42
|
-
|
47
|
+
jsi::Object core::UnistylesState::getJSThemeByName(std::string& themeName) {
|
48
|
+
auto it = this->_jsThemes.find(themeName);
|
43
49
|
|
44
|
-
|
50
|
+
helpers::assertThat(*_rt, it != this->_jsThemes.end(), "Unistyles: You're trying to get theme '" + themeName + "', but it was not registered. Did you forget to register it with StyleSheet.configure?");
|
51
|
+
|
52
|
+
return it->second.asObject(*_rt);
|
45
53
|
}
|
46
54
|
|
47
55
|
void core::UnistylesState::computeCurrentBreakpoint(int screenWidth) {
|
56
|
+
if (this->_sortedBreakpointPairs.size() == 0) {
|
57
|
+
return;
|
58
|
+
}
|
59
|
+
|
48
60
|
this->_currentBreakpointName = helpers::getBreakpointFromScreenWidth(
|
49
61
|
screenWidth,
|
50
62
|
this->_sortedBreakpointPairs
|
@@ -87,9 +99,18 @@ int core::UnistylesState::parseColor(jsi::Value& maybeColor) {
|
|
87
99
|
if (!maybeColor.isString()) {
|
88
100
|
return 0;
|
89
101
|
}
|
90
|
-
|
91
|
-
// we must convert it to uint32_t first, otherwise color will be broken
|
92
|
-
uint32_t color = this->_processColorFn.get()->call(*_rt, maybeColor.asString(*_rt)).asNumber();
|
93
102
|
|
94
|
-
|
103
|
+
auto colorString = maybeColor.asString(*_rt);
|
104
|
+
|
105
|
+
if (!this->_colorCache.contains(colorString.utf8(*_rt).c_str())) {
|
106
|
+
#ifdef ANDROID
|
107
|
+
int color = this->_processColorFn.get()->call(*_rt, colorString).asNumber();
|
108
|
+
#else
|
109
|
+
uint32_t color = this->_processColorFn.get()->call(*_rt, colorString).asNumber();
|
110
|
+
#endif
|
111
|
+
|
112
|
+
this->_colorCache[colorString.utf8(*_rt).c_str()] = color ? color : 0;
|
113
|
+
}
|
114
|
+
|
115
|
+
return this->_colorCache[colorString.utf8(*_rt).c_str()];
|
95
116
|
}
|
@@ -17,6 +17,7 @@ struct UnistylesState {
|
|
17
17
|
UnistylesState(const UnistylesState&) = delete;
|
18
18
|
UnistylesState(const UnistylesState&&) = delete;
|
19
19
|
|
20
|
+
bool hasUserConfig = false;
|
20
21
|
bool hasAdaptiveThemes();
|
21
22
|
bool hasInitialTheme();
|
22
23
|
bool getPrefersAdaptiveThemes();
|
@@ -28,14 +29,15 @@ struct UnistylesState {
|
|
28
29
|
std::optional<std::string> getCurrentBreakpointName();
|
29
30
|
std::vector<std::pair<std::string, double>> getSortedBreakpointPairs();
|
30
31
|
|
31
|
-
jsi::Object
|
32
|
+
jsi::Object getCurrentJSTheme();
|
33
|
+
jsi::Object getJSThemeByName(std::string& themeName);
|
32
34
|
int parseColor(jsi::Value& color);
|
33
35
|
void computeCurrentBreakpoint(int screenWidth);
|
34
36
|
void registerProcessColorFunction(jsi::Function&& fn);
|
35
37
|
|
36
38
|
private:
|
37
39
|
jsi::Runtime* _rt;
|
38
|
-
std::unordered_map<std::string, jsi::
|
40
|
+
std::unordered_map<std::string, jsi::Value> _jsThemes{};
|
39
41
|
std::optional<bool> _prefersAdaptiveThemes = std::nullopt;
|
40
42
|
std::optional<std::string> _initialThemeName = std::nullopt;
|
41
43
|
std::optional<std::string> _currentBreakpointName = std::nullopt;
|
@@ -43,6 +45,7 @@ private:
|
|
43
45
|
std::vector<std::string> _registeredThemeNames{};
|
44
46
|
std::optional<std::string> _currentThemeName = std::nullopt;
|
45
47
|
std::shared_ptr<jsi::Function> _processColorFn;
|
48
|
+
std::unordered_map<std::string, uint32_t> _colorCache{};
|
46
49
|
|
47
50
|
friend class UnistylesRegistry;
|
48
51
|
};
|
@@ -1,9 +1,5 @@
|
|
1
1
|
#include "HybridNavigationBar.h"
|
2
2
|
|
3
|
-
void HybridNavigationBar::setBackgroundColor(double color) {
|
4
|
-
this->_nativePlatform.setNavigationBarBackgroundColor(color);
|
5
|
-
};
|
6
|
-
|
7
3
|
void HybridNavigationBar::setHidden(bool isHidden) {
|
8
4
|
this->_nativePlatform.setNavigationBarHidden(isHidden);
|
9
5
|
};
|
@@ -1,19 +1,18 @@
|
|
1
1
|
#pragma once
|
2
2
|
|
3
3
|
#include "HybridUnistylesNavigationBarSpec.hpp"
|
4
|
-
#include "
|
4
|
+
#include "NativePlatform.h"
|
5
5
|
#include <optional>
|
6
6
|
|
7
7
|
using namespace margelo::nitro::unistyles;
|
8
8
|
|
9
9
|
struct HybridNavigationBar: public HybridUnistylesNavigationBarSpec {
|
10
10
|
HybridNavigationBar(Unistyles::HybridNativePlatformSpecCxx nativePlatform): HybridObject(TAG), _nativePlatform{nativePlatform} {}
|
11
|
-
|
12
|
-
void setBackgroundColor(double color) override;
|
11
|
+
|
13
12
|
void setHidden(bool isHidden) override;
|
14
13
|
double getWidth() override;
|
15
14
|
double getHeight() override;
|
16
|
-
|
15
|
+
|
17
16
|
private:
|
18
17
|
Unistyles::HybridNativePlatformSpecCxx _nativePlatform;
|
19
18
|
};
|
@@ -4,27 +4,35 @@ using namespace margelo::nitro::unistyles;
|
|
4
4
|
using namespace facebook::react;
|
5
5
|
|
6
6
|
jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
|
7
|
-
helpers::assertThat(rt, count ==
|
8
|
-
|
7
|
+
helpers::assertThat(rt, count == 5, "Unistyles: Invalid babel transform 'ShadowRegistry link' expected 5 arguments.");
|
8
|
+
|
9
9
|
ShadowNode::Shared shadowNodeWrapper = shadowNodeFromValue(rt, args[0]);
|
10
|
-
core::Unistyle::Shared
|
11
|
-
|
10
|
+
std::vector<core::Unistyle::Shared> unistyleWrappers = core::unistyleFromValue(rt, args[1]);
|
11
|
+
core::Variants variants = helpers::variantsToPairs(rt, args[2].asObject(rt));
|
12
|
+
jsi::Array rawArguments = args[3].asObject(rt).asArray(rt);
|
13
|
+
std::optional<std::string> uniquePressableId = args[4].isUndefined()
|
14
|
+
? std::nullopt
|
15
|
+
: std::make_optional<std::string>(args[4].asString(rt).utf8(rt));
|
16
|
+
std::vector<std::vector<folly::dynamic>> arguments;
|
12
17
|
auto& registry = core::UnistylesRegistry::get();
|
13
18
|
|
14
|
-
|
19
|
+
helpers::iterateJSIArray(rt, rawArguments, [&rt, &arguments](size_t index, jsi::Value& value){
|
20
|
+
arguments.push_back(helpers::parseDynamicFunctionArguments(rt, value.asObject(rt).asArray(rt)));
|
21
|
+
});
|
15
22
|
|
23
|
+
registry.linkShadowNodeWithUnistyle(rt, &shadowNodeWrapper->getFamily(), unistyleWrappers, variants, arguments, uniquePressableId);
|
24
|
+
|
16
25
|
return jsi::Value::undefined();
|
17
26
|
}
|
18
27
|
|
19
28
|
jsi::Value HybridShadowRegistry::unlink(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
|
20
|
-
helpers::assertThat(rt, count ==
|
21
|
-
|
29
|
+
helpers::assertThat(rt, count == 1, "Unistyles: Invalid babel transform 'ShadowRegistry unlink' expected 1 arguments.");
|
30
|
+
|
22
31
|
ShadowNode::Shared shadowNodeWrapper = shadowNodeFromValue(rt, args[0]);
|
23
|
-
|
24
|
-
|
32
|
+
|
25
33
|
auto& registry = core::UnistylesRegistry::get();
|
26
34
|
|
27
|
-
registry.
|
28
|
-
|
35
|
+
registry.unlinkShadowNodeWithUnistyles(rt, &shadowNodeWrapper->getFamily());
|
36
|
+
|
29
37
|
return jsi::Value::undefined();
|
30
38
|
}
|
@@ -1,19 +1,18 @@
|
|
1
1
|
#pragma once
|
2
2
|
|
3
3
|
#include "HybridUnistylesStatusBarSpec.hpp"
|
4
|
-
#include "
|
4
|
+
#include "NativePlatform.h"
|
5
5
|
#include <optional>
|
6
6
|
|
7
7
|
using namespace margelo::nitro::unistyles;
|
8
8
|
|
9
9
|
struct HybridStatusBar: public HybridUnistylesStatusBarSpec {
|
10
10
|
HybridStatusBar(Unistyles::HybridNativePlatformSpecCxx nativePlatform): HybridObject(TAG), _nativePlatform{nativePlatform} {}
|
11
|
-
|
12
|
-
void setBackgroundColor(double color) override;
|
11
|
+
|
13
12
|
double getWidth() override;
|
14
13
|
double getHeight() override;
|
15
14
|
void setHidden(bool isHidden) override;
|
16
|
-
|
15
|
+
|
17
16
|
private:
|
18
17
|
Unistyles::HybridNativePlatformSpecCxx _nativePlatform;
|
19
18
|
};
|