react-native-unistyles 3.0.0-alpha.8 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +30 -41
- 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 +3 -0
- package/cxx/common/Helpers.h +116 -5
- package/cxx/core/HostStyle.cpp +7 -2
- package/cxx/core/HostStyle.h +1 -1
- package/cxx/core/StyleSheet.h +0 -1
- package/cxx/core/Unistyle.h +8 -11
- package/cxx/core/UnistyleData.h +5 -3
- package/cxx/core/UnistyleWrapper.h +108 -13
- package/cxx/core/UnistylesCommitHook.cpp +14 -18
- 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 +109 -48
- package/cxx/core/UnistylesRegistry.h +11 -10
- 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 +18 -11
- package/cxx/hybridObjects/HybridStatusBar.cpp +0 -4
- package/cxx/hybridObjects/HybridStatusBar.h +3 -4
- package/cxx/hybridObjects/HybridStyleSheet.cpp +145 -19
- package/cxx/hybridObjects/HybridStyleSheet.h +27 -5
- package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +78 -11
- package/cxx/hybridObjects/HybridUnistylesRuntime.h +17 -3
- package/cxx/parser/Parser.cpp +211 -128
- package/cxx/parser/Parser.h +7 -6
- 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/Pressable.js +74 -0
- package/lib/commonjs/components/Pressable.js.map +1 -0
- package/lib/commonjs/components/Pressable.web.js +115 -0
- package/lib/commonjs/components/Pressable.web.js.map +1 -0
- package/lib/commonjs/components/index.js +27 -0
- package/lib/commonjs/components/index.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/getBoundArgs.js +18 -0
- package/lib/commonjs/core/getBoundArgs.js.map +1 -0
- package/lib/commonjs/core/getId.js +9 -0
- package/lib/commonjs/core/getId.js.map +1 -0
- package/lib/commonjs/core/index.js +27 -0
- package/lib/commonjs/core/index.js.map +1 -0
- package/lib/commonjs/hooks/index.js +13 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useMedia.js +59 -0
- package/lib/commonjs/hooks/useMedia.js.map +1 -0
- package/lib/commonjs/hooks/useMedia.web.js +43 -0
- package/lib/commonjs/hooks/useMedia.web.js.map +1 -0
- package/lib/commonjs/index.js +28 -11
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/mq.js +31 -18
- 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 +11 -8
- 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/TurboUnistyles/NativeTurboUnistyles.js +1 -2
- package/lib/commonjs/specs/TurboUnistyles/NativeTurboUnistyles.js.map +1 -1
- package/lib/commonjs/specs/UnistylesRuntime/index.js +0 -2
- 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 +0 -7
- package/lib/commonjs/specs/index.web.js.map +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 +27 -24
- package/lib/commonjs/web/convert/index.js.map +1 -1
- 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/{boxShadow.js → shadow/boxShadow.js} +22 -37
- 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/{textShadow.js → shadow/textShadow.js} +21 -35
- package/lib/commonjs/web/convert/shadow/textShadow.js.map +1 -0
- package/lib/commonjs/web/convert/style.js +11 -7
- package/lib/commonjs/web/convert/style.js.map +1 -1
- package/lib/commonjs/web/convert/types.js.map +1 -1
- package/lib/commonjs/web/convert/utils.js +8 -4
- package/lib/commonjs/web/convert/utils.js.map +1 -1
- package/lib/commonjs/web/create.js +35 -67
- package/lib/commonjs/web/create.js.map +1 -1
- package/lib/commonjs/web/index.js +18 -7
- package/lib/commonjs/web/index.js.map +1 -1
- package/lib/commonjs/web/listener.js +61 -0
- package/lib/commonjs/web/listener.js.map +1 -0
- package/lib/commonjs/web/mock.js +2 -12
- package/lib/commonjs/web/mock.js.map +1 -1
- package/lib/commonjs/web/registry.js +154 -19
- package/lib/commonjs/web/registry.js.map +1 -1
- package/lib/commonjs/web/runtime.js +22 -13
- package/lib/commonjs/web/runtime.js.map +1 -1
- package/lib/commonjs/web/shadowRegistry.js +143 -0
- package/lib/commonjs/web/shadowRegistry.js.map +1 -0
- package/lib/commonjs/web/state.js +31 -72
- package/lib/commonjs/web/state.js.map +1 -1
- 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 +77 -0
- package/lib/commonjs/web/utils/unistyle.js.map +1 -0
- package/lib/commonjs/web/{variants/getVariants.js → variants.js} +2 -2
- package/lib/commonjs/web/variants.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/Pressable.js +68 -0
- package/lib/module/components/Pressable.js.map +1 -0
- package/lib/module/components/Pressable.web.js +109 -0
- package/lib/module/components/Pressable.web.js.map +1 -0
- package/lib/module/components/index.js +6 -0
- package/lib/module/components/index.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/getBoundArgs.js +13 -0
- package/lib/module/core/getBoundArgs.js.map +1 -0
- package/lib/module/core/getId.js +4 -0
- package/lib/module/core/getId.js.map +1 -0
- package/lib/module/core/index.js +6 -0
- package/lib/module/core/index.js.map +1 -0
- package/lib/module/hooks/index.js +4 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useMedia.js +54 -0
- package/lib/module/hooks/useMedia.js.map +1 -0
- package/lib/module/hooks/useMedia.web.js +38 -0
- package/lib/module/hooks/useMedia.web.js.map +1 -0
- package/lib/module/index.js +2 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/mq.js +27 -17
- 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 +11 -8
- 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/TurboUnistyles/NativeTurboUnistyles.js +1 -2
- package/lib/module/specs/TurboUnistyles/NativeTurboUnistyles.js.map +1 -1
- package/lib/module/specs/UnistylesRuntime/index.js +0 -2
- 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 +0 -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 +23 -20
- package/lib/module/web/convert/index.js.map +1 -1
- 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 +11 -7
- package/lib/module/web/convert/style.js.map +1 -1
- package/lib/module/web/convert/types.js.map +1 -1
- package/lib/module/web/convert/utils.js +5 -3
- package/lib/module/web/convert/utils.js.map +1 -1
- package/lib/module/web/create.js +37 -69
- package/lib/module/web/create.js.map +1 -1
- package/lib/module/web/index.js +9 -3
- package/lib/module/web/index.js.map +1 -1
- package/lib/module/web/listener.js +57 -0
- package/lib/module/web/listener.js.map +1 -0
- package/lib/module/web/mock.js +1 -11
- package/lib/module/web/mock.js.map +1 -1
- package/lib/module/web/registry.js +155 -20
- package/lib/module/web/registry.js.map +1 -1
- package/lib/module/web/runtime.js +23 -14
- package/lib/module/web/runtime.js.map +1 -1
- package/lib/module/web/shadowRegistry.js +139 -0
- package/lib/module/web/shadowRegistry.js.map +1 -0
- package/lib/module/web/state.js +32 -73
- package/lib/module/web/state.js.map +1 -1
- 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 +65 -0
- package/lib/module/web/utils/unistyle.js.map +1 -0
- package/lib/module/web/{variants/getVariants.js → variants.js} +2 -2
- package/lib/module/web/variants.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/Pressable.d.ts +8 -0
- package/lib/typescript/src/components/Pressable.d.ts.map +1 -0
- package/lib/typescript/src/components/Pressable.web.d.ts +14 -0
- package/lib/typescript/src/components/Pressable.web.d.ts.map +1 -0
- package/lib/typescript/src/components/index.d.ts +4 -0
- package/lib/typescript/src/components/index.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/getBoundArgs.d.ts +2 -0
- package/lib/typescript/src/core/getBoundArgs.d.ts.map +1 -0
- package/lib/typescript/src/core/getId.d.ts +2 -0
- package/lib/typescript/src/core/getId.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +4 -0
- package/lib/typescript/src/core/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +2 -0
- package/lib/typescript/src/hooks/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useMedia.d.ts +6 -0
- package/lib/typescript/src/hooks/useMedia.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useMedia.web.d.ts +6 -0
- package/lib/typescript/src/hooks/useMedia.web.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 +8 -6
- 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 +4 -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 +5 -3
- 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 +4 -2
- 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 +0 -2
- 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 +2 -0
- package/lib/typescript/src/types/common.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +2 -2
- 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 +1 -2
- package/lib/typescript/src/web/convert/index.d.ts.map +1 -1
- 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 +1 -2
- package/lib/typescript/src/web/convert/style.d.ts.map +1 -1
- package/lib/typescript/src/web/convert/types.d.ts +7 -1
- package/lib/typescript/src/web/convert/types.d.ts.map +1 -1
- package/lib/typescript/src/web/convert/utils.d.ts +8 -4
- package/lib/typescript/src/web/convert/utils.d.ts.map +1 -1
- package/lib/typescript/src/web/create.d.ts +215 -1221
- package/lib/typescript/src/web/create.d.ts.map +1 -1
- package/lib/typescript/src/web/index.d.ts +223 -1222
- package/lib/typescript/src/web/index.d.ts.map +1 -1
- package/lib/typescript/src/web/{listener/listener.d.ts → listener.d.ts} +5 -2
- package/lib/typescript/src/web/listener.d.ts.map +1 -0
- package/lib/typescript/src/web/mock.d.ts +0 -9
- package/lib/typescript/src/web/mock.d.ts.map +1 -1
- package/lib/typescript/src/web/registry.d.ts +18 -6
- package/lib/typescript/src/web/registry.d.ts.map +1 -1
- package/lib/typescript/src/web/runtime.d.ts +6 -5
- package/lib/typescript/src/web/runtime.d.ts.map +1 -1
- 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 +3 -9
- package/lib/typescript/src/web/state.d.ts.map +1 -1
- 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 +19 -0
- package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -0
- package/lib/typescript/src/web/{variants/getVariants.d.ts → variants.d.ts} +2 -2
- package/lib/typescript/src/web/variants.d.ts.map +1 -0
- package/nitrogen/generated/android/c++/JColorScheme.hpp +2 -2
- 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 +2 -2
- package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +5 -2
- package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +9 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/ColorScheme.kt +5 -1
- 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/Orientation.kt +5 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +6 -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 +24 -37
- package/plugin/common.js +27 -2
- package/plugin/import.js +29 -3
- package/plugin/index.js +104 -15
- package/plugin/ref.js +58 -44
- package/plugin/style.js +443 -9
- package/plugin/stylesheet.js +10 -3
- package/src/components/Display.tsx +12 -0
- package/src/components/Hide.tsx +12 -0
- package/src/components/Pressable.tsx +89 -0
- package/src/components/Pressable.web.tsx +129 -0
- package/src/components/index.ts +3 -0
- package/src/core/createUnistylesComponent.native.tsx +83 -0
- package/src/core/createUnistylesComponent.tsx +84 -0
- package/src/core/getBoundArgs.ts +15 -0
- package/src/core/getId.ts +1 -0
- package/src/core/index.ts +3 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useMedia.ts +64 -0
- package/src/hooks/useMedia.web.ts +47 -0
- package/src/index.ts +3 -12
- package/src/mq.ts +33 -15
- package/src/specs/NativePlatform/NativePlatform.nitro.ts +8 -6
- package/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.ts +0 -1
- package/src/specs/NavigtionBar/index.ts +1 -25
- package/src/specs/ShadowRegistry/index.ts +17 -12
- package/src/specs/ShadowRegistry/types.ts +6 -2
- 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 +7 -3
- package/src/specs/TurboUnistyles/NativeTurboUnistyles.ts +1 -2
- package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.ts +2 -2
- package/src/specs/UnistylesRuntime/index.ts +4 -3
- package/src/specs/index.ts +6 -2
- package/src/specs/index.web.ts +0 -4
- package/src/types/breakpoints.ts +25 -13
- package/src/types/common.ts +2 -0
- package/src/types/index.ts +2 -2
- package/src/types/stylesheet.ts +7 -5
- package/src/types/variants.ts +7 -1
- package/src/utils.ts +22 -0
- package/src/web/convert/index.ts +24 -24
- 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/src/web/convert/style.ts +61 -10
- package/src/web/convert/types.ts +8 -1
- package/src/web/convert/utils.ts +13 -7
- package/src/web/create.ts +35 -83
- package/src/web/index.ts +9 -4
- package/src/web/listener.ts +65 -0
- package/src/web/mock.ts +1 -12
- package/src/web/registry.ts +202 -28
- package/src/web/runtime.ts +29 -18
- package/src/web/shadowRegistry.ts +149 -0
- package/src/web/state.ts +52 -87
- package/src/web/utils/common.ts +45 -0
- package/src/web/utils/index.ts +2 -0
- package/src/web/utils/unistyle.ts +94 -0
- package/src/web/{variants/getVariants.ts → variants.ts} +2 -2
- 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/commonjs/web/convert/boxShadow.js.map +0 -1
- package/lib/commonjs/web/convert/breakpoint.js +0 -25
- package/lib/commonjs/web/convert/breakpoint.js.map +0 -1
- package/lib/commonjs/web/convert/shadow.js +0 -68
- package/lib/commonjs/web/convert/shadow.js.map +0 -1
- package/lib/commonjs/web/convert/textShadow.js.map +0 -1
- package/lib/commonjs/web/convert/transform.js +0 -72
- package/lib/commonjs/web/convert/transform.js.map +0 -1
- package/lib/commonjs/web/listener/index.js +0 -13
- package/lib/commonjs/web/listener/index.js.map +0 -1
- package/lib/commonjs/web/listener/listener.js +0 -36
- package/lib/commonjs/web/listener/listener.js.map +0 -1
- package/lib/commonjs/web/mq.js +0 -23
- package/lib/commonjs/web/mq.js.map +0 -1
- package/lib/commonjs/web/pseudo.js +0 -11
- package/lib/commonjs/web/pseudo.js.map +0 -1
- package/lib/commonjs/web/utils.js +0 -78
- package/lib/commonjs/web/utils.js.map +0 -1
- package/lib/commonjs/web/variants/getVariants.js.map +0 -1
- package/lib/commonjs/web/variants/index.js +0 -28
- package/lib/commonjs/web/variants/index.js.map +0 -1
- package/lib/commonjs/web/variants/useVariants.js +0 -75
- package/lib/commonjs/web/variants/useVariants.js.map +0 -1
- package/lib/module/web/convert/boxShadow.js +0 -72
- package/lib/module/web/convert/boxShadow.js.map +0 -1
- package/lib/module/web/convert/breakpoint.js +0 -20
- package/lib/module/web/convert/breakpoint.js.map +0 -1
- package/lib/module/web/convert/shadow.js +0 -63
- package/lib/module/web/convert/shadow.js.map +0 -1
- package/lib/module/web/convert/textShadow.js +0 -68
- package/lib/module/web/convert/textShadow.js.map +0 -1
- package/lib/module/web/convert/transform.js +0 -67
- package/lib/module/web/convert/transform.js.map +0 -1
- package/lib/module/web/listener/index.js +0 -4
- package/lib/module/web/listener/index.js.map +0 -1
- package/lib/module/web/listener/listener.js +0 -31
- package/lib/module/web/listener/listener.js.map +0 -1
- package/lib/module/web/mq.js +0 -17
- package/lib/module/web/mq.js.map +0 -1
- package/lib/module/web/pseudo.js +0 -6
- package/lib/module/web/pseudo.js.map +0 -1
- package/lib/module/web/utils.js +0 -65
- package/lib/module/web/utils.js.map +0 -1
- package/lib/module/web/variants/getVariants.js.map +0 -1
- package/lib/module/web/variants/index.js +0 -5
- package/lib/module/web/variants/index.js.map +0 -1
- package/lib/module/web/variants/useVariants.js +0 -70
- package/lib/module/web/variants/useVariants.js.map +0 -1
- package/lib/typescript/example/App.d.ts +0 -4
- package/lib/typescript/example/App.d.ts.map +0 -1
- package/lib/typescript/example/Typography.d.ts +0 -11
- package/lib/typescript/example/Typography.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/src/web/convert/boxShadow.d.ts +0 -3
- package/lib/typescript/src/web/convert/boxShadow.d.ts.map +0 -1
- package/lib/typescript/src/web/convert/breakpoint.d.ts +0 -3
- package/lib/typescript/src/web/convert/breakpoint.d.ts.map +0 -1
- package/lib/typescript/src/web/convert/shadow.d.ts +0 -2
- package/lib/typescript/src/web/convert/shadow.d.ts.map +0 -1
- package/lib/typescript/src/web/convert/textShadow.d.ts +0 -3
- package/lib/typescript/src/web/convert/textShadow.d.ts.map +0 -1
- package/lib/typescript/src/web/convert/transform.d.ts +0 -5
- package/lib/typescript/src/web/convert/transform.d.ts.map +0 -1
- package/lib/typescript/src/web/listener/index.d.ts +0 -2
- package/lib/typescript/src/web/listener/index.d.ts.map +0 -1
- package/lib/typescript/src/web/listener/listener.d.ts.map +0 -1
- package/lib/typescript/src/web/mq.d.ts +0 -4
- package/lib/typescript/src/web/mq.d.ts.map +0 -1
- package/lib/typescript/src/web/pseudo.d.ts +0 -4
- package/lib/typescript/src/web/pseudo.d.ts.map +0 -1
- package/lib/typescript/src/web/utils.d.ts +0 -20
- package/lib/typescript/src/web/utils.d.ts.map +0 -1
- package/lib/typescript/src/web/variants/getVariants.d.ts.map +0 -1
- package/lib/typescript/src/web/variants/index.d.ts +0 -3
- package/lib/typescript/src/web/variants/index.d.ts.map +0 -1
- package/lib/typescript/src/web/variants/useVariants.d.ts +0 -3
- package/lib/typescript/src/web/variants/useVariants.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 -438
- package/plugin/__tests__/ref.spec.js +0 -1181
- package/plugin/__tests__/stylesheet.spec.js +0 -489
- package/src/web/convert/boxShadow.ts +0 -72
- package/src/web/convert/breakpoint.ts +0 -21
- package/src/web/convert/shadow.ts +0 -68
- package/src/web/convert/textShadow.ts +0 -69
- package/src/web/convert/transform.ts +0 -89
- package/src/web/listener/index.ts +0 -1
- package/src/web/listener/listener.ts +0 -33
- package/src/web/mq.ts +0 -19
- package/src/web/pseudo.ts +0 -11
- package/src/web/utils.ts +0 -95
- package/src/web/variants/index.ts +0 -2
- package/src/web/variants/useVariants.ts +0 -79
- /package/nitrogen/generated/android/{UnistylesOnLoad.kt → unistylesOnLoad.kt} +0 -0
package/cxx/parser/Parser.cpp
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#include "Parser.h"
|
2
|
+
#include "UnistyleWrapper.h"
|
2
3
|
|
3
4
|
using namespace margelo::nitro::unistyles;
|
4
5
|
using namespace facebook;
|
@@ -8,19 +9,19 @@ using Variants = std::vector<std::pair<std::string, std::string>>;
|
|
8
9
|
|
9
10
|
// called only once while processing StyleSheet.create
|
10
11
|
void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
|
11
|
-
jsi::Object unwrappedStyleSheet = this->unwrapStyleSheet(rt, styleSheet);
|
12
|
+
jsi::Object unwrappedStyleSheet = this->unwrapStyleSheet(rt, styleSheet, std::nullopt);
|
12
13
|
|
13
14
|
helpers::enumerateJSIObject(rt, unwrappedStyleSheet, [&](const std::string& styleKey, jsi::Value& propertyValue){
|
14
15
|
helpers::assertThat(rt, propertyValue.isObject(), "Unistyles: Style with name '" + styleKey + "' is not a function or object.");
|
15
16
|
|
16
17
|
jsi::Object styleValue = propertyValue.asObject(rt);
|
17
18
|
|
18
|
-
|
19
19
|
if (styleValue.isFunction(rt)) {
|
20
20
|
styleSheet->unistyles[styleKey] = std::make_shared<UnistyleDynamicFunction>(
|
21
21
|
UnistyleType::DynamicFunction,
|
22
22
|
styleKey,
|
23
|
-
styleValue
|
23
|
+
styleValue,
|
24
|
+
styleSheet
|
24
25
|
);
|
25
26
|
|
26
27
|
return;
|
@@ -29,12 +30,13 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
|
|
29
30
|
styleSheet->unistyles[styleKey] = std::make_shared<Unistyle>(
|
30
31
|
UnistyleType::Object,
|
31
32
|
styleKey,
|
32
|
-
styleValue
|
33
|
+
styleValue,
|
34
|
+
styleSheet
|
33
35
|
);
|
34
36
|
});
|
35
37
|
}
|
36
38
|
|
37
|
-
jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
|
39
|
+
jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime) {
|
38
40
|
// firstly we need to get object representation of user's StyleSheet
|
39
41
|
// StyleSheet can be a function or an object
|
40
42
|
|
@@ -45,7 +47,7 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
|
|
45
47
|
|
46
48
|
// StyleSheet is a function
|
47
49
|
auto& state = core::UnistylesRegistry::get().getState(rt);
|
48
|
-
auto theme = state.
|
50
|
+
auto theme = state.getCurrentJSTheme();
|
49
51
|
|
50
52
|
if (styleSheet->type == StyleSheetType::Themable) {
|
51
53
|
return styleSheet->rawValue
|
@@ -56,7 +58,7 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
|
|
56
58
|
|
57
59
|
// stylesheet also has a mini runtime dependency
|
58
60
|
// StyleSheetType::ThemableWithMiniRuntime
|
59
|
-
auto miniRuntime = this->_unistylesRuntime->getMiniRuntimeAsValue(rt);
|
61
|
+
auto miniRuntime = this->_unistylesRuntime->getMiniRuntimeAsValue(rt, maybeMiniRuntime);
|
60
62
|
|
61
63
|
return styleSheet->rawValue
|
62
64
|
.asFunction(rt)
|
@@ -91,32 +93,81 @@ void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_
|
|
91
93
|
continue;
|
92
94
|
}
|
93
95
|
|
94
|
-
this->rebuildUnistyle(rt, styleSheet, unistyle, variants);
|
96
|
+
this->rebuildUnistyle(rt, styleSheet, unistyle, variants, std::nullopt);
|
95
97
|
}
|
96
98
|
}
|
97
99
|
|
98
100
|
// rebuild all unistyles that are affected by platform event
|
99
|
-
void parser::Parser::rebuildUnistylesInDependencyMap(jsi::Runtime& rt, DependencyMap& dependencyMap) {
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
101
|
+
void parser::Parser::rebuildUnistylesInDependencyMap(jsi::Runtime& rt, DependencyMap& dependencyMap, std::vector<std::shared_ptr<core::StyleSheet>>& styleSheets, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime) {
|
102
|
+
std::unordered_map<std::shared_ptr<StyleSheet>, jsi::Value> parsedStyleSheets{};
|
103
|
+
std::unordered_map<std::shared_ptr<core::Unistyle>, bool> parsedUnistyles{};
|
104
|
+
|
105
|
+
// parse all stylesheets that depends on changes
|
106
|
+
for (auto styleSheet : styleSheets) {
|
107
|
+
parsedStyleSheets.emplace(styleSheet, this->unwrapStyleSheet(rt, styleSheet, maybeMiniRuntime));
|
108
|
+
}
|
109
|
+
|
110
|
+
// then parse all visible Unistyles managed by Unistyle
|
111
|
+
for (auto& [shadowNode, unistyles] : dependencyMap) {
|
112
|
+
auto styleSheet = unistyles.begin()->get()->unistyle->parent;
|
113
|
+
|
114
|
+
// stylesheet may be optional for exotic unistyles
|
115
|
+
if (styleSheet != nullptr && !parsedStyleSheets.contains(styleSheet)) {
|
116
|
+
parsedStyleSheets.emplace(styleSheet, this->unwrapStyleSheet(rt, styleSheet, maybeMiniRuntime));
|
117
|
+
}
|
118
|
+
|
119
|
+
for (auto& unistyleData : unistyles) {
|
120
|
+
auto& unistyle = unistyleData->unistyle;
|
121
|
+
|
122
|
+
// for RN styles or inline styles, compute styles only once
|
123
|
+
if (unistyle->styleKey == helpers::EXOTIC_STYLE_KEY) {
|
124
|
+
if (!unistyleData->parsedStyle.has_value()) {
|
125
|
+
unistyleData->parsedStyle = jsi::Value(rt, unistyle->rawValue).asObject(rt);
|
126
|
+
|
127
|
+
if (!parsedUnistyles.contains(unistyle)) {
|
128
|
+
parsedUnistyles.emplace(unistyle, true);
|
129
|
+
}
|
108
130
|
}
|
109
131
|
|
110
|
-
|
111
|
-
|
112
|
-
|
132
|
+
continue;
|
133
|
+
}
|
134
|
+
|
135
|
+
// reference Unistyles StyleSheet as we may mix them for one style
|
136
|
+
auto unistyleStyleSheet = unistyle->parent;
|
137
|
+
|
138
|
+
// we may hit now other StyleSheets that are referenced from affected nodes
|
139
|
+
if (unistyleStyleSheet != nullptr && !parsedStyleSheets.contains(unistyleStyleSheet)) {
|
140
|
+
parsedStyleSheets.emplace(unistyleStyleSheet, this->unwrapStyleSheet(rt, unistyleStyleSheet, maybeMiniRuntime));
|
141
|
+
}
|
142
|
+
|
143
|
+
// StyleSheet might have styles that are not affected
|
144
|
+
if (!parsedStyleSheets[unistyleStyleSheet].asObject(rt).hasProperty(rt, unistyle->styleKey.c_str())) {
|
145
|
+
continue;
|
146
|
+
}
|
147
|
+
|
148
|
+
unistyle->rawValue = parsedStyleSheets[unistyleStyleSheet].asObject(rt).getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
|
149
|
+
this->rebuildUnistyle(rt, unistyleStyleSheet, unistyle, unistyleData->variants, unistyleData->dynamicFunctionMetadata);
|
150
|
+
unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
|
151
|
+
|
152
|
+
if (!parsedUnistyles.contains(unistyle)) {
|
153
|
+
parsedUnistyles.emplace(unistyle, true);
|
154
|
+
}
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
// parse whatever left in StyleSheets to be later accessible
|
159
|
+
// for createUnistylesComponent
|
160
|
+
for (auto styleSheet : styleSheets) {
|
161
|
+
for (auto& [_, unistyle] : styleSheet->unistyles) {
|
162
|
+
if (!parsedUnistyles.contains(unistyle)) {
|
163
|
+
unistyle->rawValue = parsedStyleSheets[styleSheet].asObject(rt).getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
|
113
164
|
}
|
114
165
|
}
|
115
166
|
}
|
116
167
|
}
|
117
168
|
|
118
169
|
// rebuild single unistyle
|
119
|
-
void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle, const Variants& variants) {
|
170
|
+
void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle, const Variants& variants, std::optional<std::vector<folly::dynamic>> metadata) {
|
120
171
|
if (unistyle->type == core::UnistyleType::Object) {
|
121
172
|
auto result = this->parseFirstLevel(rt, unistyle, variants);
|
122
173
|
|
@@ -125,20 +176,17 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
|
|
125
176
|
|
126
177
|
// for functions we need to call memoized function
|
127
178
|
// with last know arguments and parse it with new theme and mini runtime
|
128
|
-
if (unistyle->type == core::UnistyleType::DynamicFunction) {
|
179
|
+
if (unistyle->type == core::UnistyleType::DynamicFunction && metadata.has_value()) {
|
129
180
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
130
|
-
auto maybeMetadata = unistyleFn->dynamicFunctionMetadata;
|
131
|
-
|
132
|
-
helpers::assertThat(rt, maybeMetadata.has_value(), "Unistyles: Your dynamic function '" + unistyleFn->styleKey + "' has no metadata and can't be processed.");
|
133
181
|
|
134
182
|
// convert arguments to jsi::Value
|
135
|
-
auto
|
183
|
+
auto dynamicFunctionMetadata = metadata.value();
|
136
184
|
std::vector<jsi::Value> args{};
|
137
185
|
|
138
|
-
args.reserve(
|
186
|
+
args.reserve(dynamicFunctionMetadata.size());
|
139
187
|
|
140
|
-
for (int i = 0; i <
|
141
|
-
folly::dynamic& arg =
|
188
|
+
for (int i = 0; i < dynamicFunctionMetadata.size(); i++) {
|
189
|
+
folly::dynamic& arg = dynamicFunctionMetadata.at(i);
|
142
190
|
|
143
191
|
args.emplace_back(jsi::valueFromDynamic(rt, arg));
|
144
192
|
}
|
@@ -146,7 +194,10 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
|
|
146
194
|
const jsi::Value *argStart = args.data();
|
147
195
|
|
148
196
|
// call cached function with memoized arguments
|
149
|
-
auto functionResult = unistyleFn->
|
197
|
+
auto functionResult = unistyleFn->rawValue
|
198
|
+
.asFunction(rt)
|
199
|
+
.call(rt, argStart, dynamicFunctionMetadata.size())
|
200
|
+
.asObject(rt);
|
150
201
|
|
151
202
|
unistyleFn->unprocessedValue = std::move(functionResult);
|
152
203
|
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
|
@@ -154,83 +205,19 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
|
|
154
205
|
}
|
155
206
|
|
156
207
|
// convert dependency map to shadow tree updates
|
157
|
-
|
208
|
+
void parser::Parser::rebuildShadowLeafUpdates(jsi::Runtime& rt, core::DependencyMap& dependencyMap) {
|
158
209
|
shadow::ShadowLeafUpdates updates;
|
159
|
-
auto&
|
160
|
-
|
161
|
-
for (const auto& [styleSheet, map] : dependencyMap) {
|
162
|
-
for (const auto& [shadowNode, unistyles] : map) {
|
163
|
-
for (const auto& [unistyle, variants, parsedStyle] : unistyles) {
|
164
|
-
auto rawProps = this->parseStylesToShadowTreeStyles(rt, parsedStyle.value());
|
165
|
-
|
166
|
-
if (updates.contains(shadowNode)) {
|
167
|
-
updates[shadowNode].emplace_back(std::move(rawProps));
|
168
|
-
|
169
|
-
continue;
|
170
|
-
}
|
171
|
-
|
172
|
-
updates.emplace(shadowNode, std::vector<RawProps>{std::move(rawProps)});
|
173
|
-
}
|
174
|
-
}
|
175
|
-
}
|
176
|
-
|
177
|
-
return updates;
|
178
|
-
}
|
179
|
-
|
180
|
-
// convert jsi::Value arguments to folly::dynamic
|
181
|
-
std::vector<folly::dynamic> parser::Parser::parseDynamicFunctionArguments(jsi::Runtime& rt, size_t count, const jsi::Value* arguments) {
|
182
|
-
std::vector<folly::dynamic> parsedArgument{};
|
183
|
-
|
184
|
-
parsedArgument.reserve(3);
|
185
|
-
|
186
|
-
for (size_t i = 0; i < count; i++) {
|
187
|
-
auto& arg = arguments[i];
|
188
|
-
|
189
|
-
if (arg.isBool()) {
|
190
|
-
parsedArgument.push_back(folly::dynamic(arg.asBool()));
|
191
|
-
|
192
|
-
continue;
|
193
|
-
}
|
194
|
-
|
195
|
-
if (arg.isNumber()) {
|
196
|
-
parsedArgument.push_back(folly::dynamic(arg.asNumber()));
|
197
|
-
|
198
|
-
continue;
|
199
|
-
}
|
200
|
-
|
201
|
-
if (arg.isString()) {
|
202
|
-
parsedArgument.push_back(folly::dynamic(arg.asString(rt).utf8(rt)));
|
203
|
-
|
204
|
-
continue;
|
205
|
-
}
|
206
|
-
|
207
|
-
if (arg.isUndefined()) {
|
208
|
-
parsedArgument.push_back(folly::dynamic());
|
209
|
-
|
210
|
-
continue;
|
211
|
-
}
|
212
|
-
|
213
|
-
if (arg.isNull()) {
|
214
|
-
parsedArgument.push_back(folly::dynamic(nullptr));
|
215
|
-
|
216
|
-
continue;
|
217
|
-
}
|
218
|
-
|
219
|
-
if (!arg.isObject()) {
|
220
|
-
continue;;
|
221
|
-
}
|
222
|
-
|
223
|
-
auto argObj = arg.asObject(rt);
|
210
|
+
auto& registry = core::UnistylesRegistry::get();
|
224
211
|
|
225
|
-
|
226
|
-
|
227
|
-
|
212
|
+
for (const auto& [shadowNode, unistyles] : dependencyMap) {
|
213
|
+
// this step is required to parse string colors eg. #000000 to int representation
|
214
|
+
auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyles);
|
228
215
|
|
229
|
-
|
230
|
-
}
|
216
|
+
updates.emplace(shadowNode, std::move(rawProps));
|
231
217
|
}
|
232
218
|
|
233
|
-
|
219
|
+
registry.trafficController.setUpdates(updates);
|
220
|
+
registry.trafficController.resumeUnistylesTraffic();
|
234
221
|
}
|
235
222
|
|
236
223
|
// first level of StyleSheet, we can expect here different properties than on second level
|
@@ -294,6 +281,18 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
294
281
|
return;
|
295
282
|
}
|
296
283
|
|
284
|
+
if (propertyName == "boxShadow" && propertyValueObject.isArray(rt)) {
|
285
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseBoxShadow(rt, unistyle, propertyValueObject));
|
286
|
+
|
287
|
+
return;
|
288
|
+
}
|
289
|
+
|
290
|
+
if (propertyName == "filter" && propertyValueObject.isArray(rt)) {
|
291
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseFilters(rt, unistyle, propertyValueObject));
|
292
|
+
|
293
|
+
return;
|
294
|
+
}
|
295
|
+
|
297
296
|
if (propertyName == "fontVariant" && propertyValueObject.isArray(rt)) {
|
298
297
|
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), propertyValue);
|
299
298
|
|
@@ -344,7 +343,9 @@ jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unist
|
|
344
343
|
jsi::PropNameID::forUtf8(rt, unistyle->styleKey),
|
345
344
|
1,
|
346
345
|
[this, unistylesRuntime, unistyle](jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
|
347
|
-
auto thisObject = thisVal.
|
346
|
+
auto thisObject = thisVal.isObject()
|
347
|
+
? thisVal.asObject(rt)
|
348
|
+
: jsi::Object(rt);
|
348
349
|
auto parser = parser::Parser(unistylesRuntime);
|
349
350
|
|
350
351
|
// call user function
|
@@ -353,20 +354,36 @@ jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unist
|
|
353
354
|
// memoize metadata to call it later
|
354
355
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
355
356
|
|
356
|
-
unistyleFn->dynamicFunctionMetadata = core::DynamicFunctionMetadata{
|
357
|
-
count,
|
358
|
-
this->parseDynamicFunctionArguments(rt, count, args)
|
359
|
-
};
|
360
|
-
|
361
357
|
unistyleFn->unprocessedValue = jsi::Value(rt, result).asObject(rt);
|
362
|
-
|
358
|
+
|
359
|
+
jsi::Value rawVariants = thisObject.hasProperty(rt, helpers::STYLE_VARIANTS.c_str())
|
360
|
+
? thisObject.getProperty(rt, helpers::STYLE_VARIANTS.c_str())
|
361
|
+
: jsi::Value::undefined();
|
362
|
+
std::optional<Variants> variants = rawVariants.isUndefined()
|
363
|
+
? std::nullopt
|
364
|
+
: std::optional<Variants>(helpers::variantsToPairs(rt, rawVariants.asObject(rt)));
|
365
|
+
|
366
|
+
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
|
363
367
|
unistyleFn->seal();
|
364
368
|
|
365
|
-
|
369
|
+
jsi::Object style = jsi::Value(rt, unistyleFn->parsedStyle.value()).asObject(rt);
|
370
|
+
|
371
|
+
// include dependencies for createUnistylesComponent
|
372
|
+
style.setProperty(rt, "__proto__", generateUnistylesPrototype(rt, unistylesRuntime, unistyle, variants, helpers::functionArgumentsToArray(rt, args, count)));
|
373
|
+
|
374
|
+
// update shadow leaf updates to indicate newest changes
|
375
|
+
auto& registry = core::UnistylesRegistry::get();
|
376
|
+
auto lastArg = count == 0
|
377
|
+
? jsi::Value::undefined()
|
378
|
+
: jsi::Value(rt, args[count - 1]);
|
379
|
+
|
380
|
+
registry.shadowLeafUpdateFromUnistyle(rt, unistyle, lastArg);
|
381
|
+
|
382
|
+
return style;
|
366
383
|
});
|
367
384
|
}
|
368
385
|
|
369
|
-
// function
|
386
|
+
// function converts babel generated dependencies to C++ dependencies
|
370
387
|
std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies) {
|
371
388
|
helpers::assertThat(rt, dependencies.isArray(rt), "Unistyles: Babel transform is invalid - unexpected type for dependencies.");
|
372
389
|
|
@@ -385,10 +402,6 @@ std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &
|
|
385
402
|
|
386
403
|
// eg. [{ scale: 2 }, { translateX: 100 }]
|
387
404
|
jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
|
388
|
-
if (!obj.isArray(rt)) {
|
389
|
-
return jsi::Value::undefined();
|
390
|
-
}
|
391
|
-
|
392
405
|
std::vector<jsi::Value> parsedTransforms{};
|
393
406
|
|
394
407
|
parsedTransforms.reserve(2);
|
@@ -418,6 +431,67 @@ jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared un
|
|
418
431
|
return result;
|
419
432
|
}
|
420
433
|
|
434
|
+
// eg [{offsetX: 5, offsetY: 5, blurRadius: 5, spreadDistance: 0, color: ‘rgba(255, 0, 0, 0.5)’}]
|
435
|
+
jsi::Value parser::Parser::parseBoxShadow(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
|
436
|
+
std::vector<jsi::Value> parsedBoxShadows{};
|
437
|
+
|
438
|
+
parsedBoxShadows.reserve(2);
|
439
|
+
|
440
|
+
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
441
|
+
if (!value.isObject()) {
|
442
|
+
return;
|
443
|
+
}
|
444
|
+
|
445
|
+
auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
|
446
|
+
|
447
|
+
parsedBoxShadows.emplace_back(std::move(parsedResult));
|
448
|
+
});
|
449
|
+
|
450
|
+
// create jsi::Array result with correct box shadows
|
451
|
+
jsi::Array result = jsi::Array(rt, parsedBoxShadows.size());
|
452
|
+
|
453
|
+
for (size_t i = 0; i < parsedBoxShadows.size(); i++) {
|
454
|
+
result.setValueAtIndex(rt, i, parsedBoxShadows[i]);
|
455
|
+
}
|
456
|
+
|
457
|
+
return result;
|
458
|
+
}
|
459
|
+
|
460
|
+
// eg. [{ brightness: 0.5 }, { opacity: 0.25 }]
|
461
|
+
jsi::Value parser::Parser::parseFilters(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
|
462
|
+
std::vector<jsi::Value> parsedFilters{};
|
463
|
+
|
464
|
+
parsedFilters.reserve(2);
|
465
|
+
|
466
|
+
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
467
|
+
if (!value.isObject()) {
|
468
|
+
return;
|
469
|
+
}
|
470
|
+
|
471
|
+
auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
|
472
|
+
|
473
|
+
// take only one filter per object
|
474
|
+
jsi::Array propertyNames = parsedResult.asObject(rt).getPropertyNames(rt);
|
475
|
+
size_t length = propertyNames.size(rt);
|
476
|
+
|
477
|
+
// ignore no filters
|
478
|
+
if (length == 0) {
|
479
|
+
return;
|
480
|
+
}
|
481
|
+
|
482
|
+
parsedFilters.emplace_back(std::move(parsedResult));
|
483
|
+
});
|
484
|
+
|
485
|
+
// create jsi::Array result with correct filters
|
486
|
+
jsi::Array result = jsi::Array(rt, parsedFilters.size());
|
487
|
+
|
488
|
+
for (size_t i = 0; i < parsedFilters.size(); i++) {
|
489
|
+
result.setValueAtIndex(rt, i, parsedFilters[i]);
|
490
|
+
}
|
491
|
+
|
492
|
+
return result;
|
493
|
+
}
|
494
|
+
|
421
495
|
// find value based on breakpoints and mq
|
422
496
|
jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
|
423
497
|
auto& registry = core::UnistylesRegistry::get();
|
@@ -532,9 +606,9 @@ jsi::Value parser::Parser::getStylesForVariant(jsi::Runtime& rt, const std::stri
|
|
532
606
|
? selectedVariant.value().c_str()
|
533
607
|
: "default";
|
534
608
|
auto hasKey = groupValue.hasProperty(rt, selectedVariantKey);
|
535
|
-
|
536
|
-
if (hasKey
|
537
|
-
// add 'default' selection to variants map
|
609
|
+
|
610
|
+
if (!hasKey || !selectedVariant.has_value()) {
|
611
|
+
// for no key, add 'default' selection to variants map
|
538
612
|
variants.emplace_back(groupName, selectedVariantKey);
|
539
613
|
}
|
540
614
|
|
@@ -572,7 +646,7 @@ jsi::Object parser::Parser::parseCompoundVariants(jsi::Runtime& rt, Unistyle::Sh
|
|
572
646
|
return parsedCompoundVariants;
|
573
647
|
}
|
574
648
|
|
575
|
-
// check every condition in compound variants,
|
649
|
+
// check every condition in compound variants, supports boolean variants
|
576
650
|
bool parser::Parser::shouldApplyCompoundVariants(jsi::Runtime& rt, const Variants& variants, jsi::Object& compoundVariant) {
|
577
651
|
if (variants.empty()) {
|
578
652
|
return false;
|
@@ -589,7 +663,9 @@ bool parser::Parser::shouldApplyCompoundVariants(jsi::Runtime& rt, const Variant
|
|
589
663
|
auto property = compoundVariant.getProperty(rt, variantKey.c_str());
|
590
664
|
auto propertyName = property.isBool()
|
591
665
|
? (property.asBool() ? "true" : "false")
|
592
|
-
: property.
|
666
|
+
: property.isString()
|
667
|
+
? property.asString(rt).utf8(rt)
|
668
|
+
: "";
|
593
669
|
|
594
670
|
if (propertyName != variantValue) {
|
595
671
|
return false;
|
@@ -667,20 +743,27 @@ jsi::Value parser::Parser::parseSecondLevel(jsi::Runtime &rt, Unistyle::Shared u
|
|
667
743
|
return parsedStyle;
|
668
744
|
}
|
669
745
|
|
670
|
-
// convert
|
671
|
-
|
746
|
+
// convert unistyles to folly with int colors
|
747
|
+
folly::dynamic parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles) {
|
672
748
|
jsi::Object convertedStyles = jsi::Object(rt);
|
673
749
|
auto& state = core::UnistylesRegistry::get().getState(rt);
|
674
750
|
|
675
|
-
|
676
|
-
|
677
|
-
|
751
|
+
for (const auto& unistyleData : unistyles) {
|
752
|
+
// this can happen for exotic stylesheets
|
753
|
+
if (!unistyleData->parsedStyle.has_value()) {
|
754
|
+
return nullptr;
|
678
755
|
}
|
679
756
|
|
680
|
-
|
681
|
-
|
757
|
+
helpers::enumerateJSIObject(rt, unistyleData->parsedStyle.value(), [&](const std::string& propertyName, jsi::Value& propertyValue){
|
758
|
+
if (this->isColor(propertyName)) {
|
759
|
+
return convertedStyles.setProperty(rt, propertyName.c_str(), jsi::Value(state.parseColor(propertyValue)));
|
760
|
+
}
|
761
|
+
|
762
|
+
convertedStyles.setProperty(rt, propertyName.c_str(), propertyValue);
|
763
|
+
});
|
764
|
+
}
|
682
765
|
|
683
|
-
return
|
766
|
+
return jsi::dynamicFromValue(rt, std::move(convertedStyles));
|
684
767
|
}
|
685
768
|
|
686
769
|
// check is styleKey contains color
|
package/cxx/parser/Parser.h
CHANGED
@@ -24,24 +24,25 @@ struct Parser {
|
|
24
24
|
void buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
25
25
|
void parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
26
26
|
void rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Variants& variants);
|
27
|
-
void rebuildUnistylesInDependencyMap(jsi::Runtime& rt, core::DependencyMap& dependencyMap);
|
28
|
-
|
27
|
+
void rebuildUnistylesInDependencyMap(jsi::Runtime& rt, core::DependencyMap& dependencyMap, std::vector<std::shared_ptr<core::StyleSheet>>& styleSheets, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime);
|
28
|
+
void rebuildShadowLeafUpdates(jsi::Runtime& rt, core::DependencyMap& dependencyMap);
|
29
|
+
folly::dynamic parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles);
|
30
|
+
void rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle, const Variants& variants, std::optional<std::vector<folly::dynamic>>);
|
29
31
|
|
30
32
|
private:
|
31
|
-
|
32
|
-
jsi::Object unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
33
|
+
jsi::Object unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, std::optional<UnistylesNativeMiniRuntime>);
|
33
34
|
jsi::Object parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<Variants> variants);
|
34
35
|
jsi::Value parseSecondLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Value& nestedObject);
|
35
36
|
jsi::Function createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle);
|
36
|
-
std::vector<folly::dynamic> parseDynamicFunctionArguments(jsi::Runtime& rt, size_t count, const jsi::Value* arguments);
|
37
37
|
std::vector<UnistyleDependency> parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies);
|
38
38
|
jsi::Value parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
39
|
+
jsi::Value parseBoxShadow(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
40
|
+
jsi::Value parseFilters(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
39
41
|
jsi::Value getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
40
42
|
jsi::Object parseVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
|
41
43
|
jsi::Value getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants);
|
42
44
|
jsi::Object parseCompoundVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
|
43
45
|
bool shouldApplyCompoundVariants(jsi::Runtime& rt, const Variants& variants, jsi::Object& compoundVariant);
|
44
|
-
RawProps parseStylesToShadowTreeStyles(jsi::Runtime& rt, const jsi::Object& parsedStyles);
|
45
46
|
bool isColor(const std::string& propertyName);
|
46
47
|
|
47
48
|
std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#pragma once
|
2
2
|
|
3
3
|
#include <jsi/jsi.h>
|
4
|
+
#include <folly/dynamic.h>
|
4
5
|
#include <react/renderer/uimanager/UIManager.h>
|
5
6
|
|
6
7
|
namespace margelo::nitro::unistyles::shadow {
|
@@ -8,6 +9,7 @@ namespace margelo::nitro::unistyles::shadow {
|
|
8
9
|
using namespace facebook;
|
9
10
|
using namespace facebook::react;
|
10
11
|
|
11
|
-
|
12
|
+
// translates Unistyles changes to unified shadow tree changes
|
13
|
+
using ShadowLeafUpdates = std::unordered_map<const ShadowNodeFamily*, folly::dynamic>;
|
12
14
|
|
13
15
|
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#import "mutex"
|
4
|
+
#import "ShadowLeafUpdate.h"
|
5
|
+
|
6
|
+
namespace margelo::nitro::unistyles::shadow {
|
7
|
+
|
8
|
+
// Like a traffic officer managing a jam, this struct ensures everything
|
9
|
+
// is synchronized within a set timeframe, controlling flow and preventing chaos.
|
10
|
+
struct ShadowTrafficController {
|
11
|
+
inline bool shouldStop() {
|
12
|
+
return !_canCommit;
|
13
|
+
}
|
14
|
+
|
15
|
+
inline void stopUnistylesTraffic() {
|
16
|
+
this->_canCommit = false;
|
17
|
+
}
|
18
|
+
|
19
|
+
inline void resumeUnistylesTraffic() {
|
20
|
+
this->_canCommit = true;
|
21
|
+
}
|
22
|
+
|
23
|
+
inline shadow::ShadowLeafUpdates& getUpdates() {
|
24
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
25
|
+
|
26
|
+
return _unistylesUpdates;
|
27
|
+
}
|
28
|
+
|
29
|
+
inline void setUpdates(shadow::ShadowLeafUpdates& newUpdates) {
|
30
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
31
|
+
|
32
|
+
auto& targetUpdates = _unistylesUpdates;
|
33
|
+
|
34
|
+
// this is important as overriding updates may skip some interim changes
|
35
|
+
// Unistyles emits different events so this will make sure that everything is synced
|
36
|
+
std::for_each(newUpdates.begin(), newUpdates.end(), [&targetUpdates](auto& pair){
|
37
|
+
if (targetUpdates.contains(pair.first)) {
|
38
|
+
targetUpdates[pair.first] = std::move(pair.second);
|
39
|
+
|
40
|
+
return;
|
41
|
+
}
|
42
|
+
|
43
|
+
targetUpdates.emplace(pair.first, std::move(pair.second));
|
44
|
+
});
|
45
|
+
}
|
46
|
+
|
47
|
+
inline void removeShadowNode(const ShadowNodeFamily* shadowNodeFamily) {
|
48
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
49
|
+
|
50
|
+
if (_unistylesUpdates.contains(shadowNodeFamily)) {
|
51
|
+
_unistylesUpdates.erase(shadowNodeFamily);
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
inline void restore() {
|
56
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
57
|
+
|
58
|
+
_unistylesUpdates = {};
|
59
|
+
_canCommit = false;
|
60
|
+
}
|
61
|
+
|
62
|
+
private:
|
63
|
+
std::atomic<bool> _canCommit = false;
|
64
|
+
shadow::ShadowLeafUpdates _unistylesUpdates{};
|
65
|
+
|
66
|
+
// this struct should be accessed in thread-safe manner. Otherwise shadow tree updates
|
67
|
+
// from different threads will break it
|
68
|
+
std::mutex _mutex;
|
69
|
+
};
|
70
|
+
|
71
|
+
}
|