react-native-unistyles 3.0.0-alpha.4 → 3.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/Unistyles.podspec +1 -1
- package/android/CMakeLists.txt +19 -45
- package/android/build.gradle +6 -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 +285 -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 +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 +23 -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 +119 -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 +16 -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 +226 -175
- package/cxx/parser/Parser.h +11 -15
- package/cxx/shadowTree/ShadowLeafUpdate.h +2 -1
- package/cxx/shadowTree/ShadowTrafficController.h +71 -0
- package/cxx/shadowTree/ShadowTreeManager.cpp +23 -18
- package/cxx/shadowTree/ShadowTreeManager.h +3 -2
- package/ios/Equatable.swift +2 -1
- package/ios/NativePlatform+ios.swift +21 -7
- package/ios/NativePlatform+keyboard.swift +83 -0
- package/ios/NativePlatformListener+ios.swift +37 -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 +0 -29
- 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 +129 -13
- package/plugin/style.js +189 -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
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)
|
|
@@ -68,14 +70,14 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
|
|
|
68
70
|
void parser::Parser::parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
|
|
69
71
|
for (const auto& [_, unistyle] : styleSheet->unistyles) {
|
|
70
72
|
if (unistyle->type == core::UnistyleType::Object) {
|
|
71
|
-
auto result = this->parseFirstLevel(rt, unistyle,
|
|
73
|
+
auto result = this->parseFirstLevel(rt, unistyle, std::nullopt);
|
|
72
74
|
|
|
73
75
|
unistyle->parsedStyle = std::move(result);
|
|
74
76
|
unistyle->seal();
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
if (unistyle->type == core::UnistyleType::DynamicFunction) {
|
|
78
|
-
auto hostFn = this->createDynamicFunctionProxy(rt, unistyle
|
|
80
|
+
auto hostFn = this->createDynamicFunctionProxy(rt, unistyle);
|
|
79
81
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
|
80
82
|
|
|
81
83
|
// defer parsing dynamic functions
|
|
@@ -85,59 +87,106 @@ void parser::Parser::parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
|
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
// rebuild all unistyles in StyleSheet that depends on variants
|
|
88
|
-
void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
|
|
90
|
+
void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Variants& variants) {
|
|
89
91
|
for (const auto& [_, unistyle] : styleSheet->unistyles) {
|
|
90
92
|
if (!unistyle->dependsOn(UnistyleDependency::VARIANTS)) {
|
|
91
93
|
continue;
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
this->rebuildUnistyle(rt, styleSheet, unistyle);
|
|
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
|
-
|
|
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);
|
|
112
164
|
}
|
|
113
165
|
}
|
|
114
166
|
}
|
|
115
167
|
}
|
|
116
168
|
|
|
117
169
|
// rebuild single unistyle
|
|
118
|
-
void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle) {
|
|
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) {
|
|
119
171
|
if (unistyle->type == core::UnistyleType::Object) {
|
|
120
|
-
auto result = this->parseFirstLevel(rt, unistyle,
|
|
172
|
+
auto result = this->parseFirstLevel(rt, unistyle, variants);
|
|
121
173
|
|
|
122
174
|
unistyle->parsedStyle = std::move(result);
|
|
123
175
|
}
|
|
124
176
|
|
|
125
177
|
// for functions we need to call memoized function
|
|
126
178
|
// with last know arguments and parse it with new theme and mini runtime
|
|
127
|
-
if (unistyle->type == core::UnistyleType::DynamicFunction) {
|
|
179
|
+
if (unistyle->type == core::UnistyleType::DynamicFunction && metadata.has_value()) {
|
|
128
180
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
|
129
|
-
auto maybeMetadata = unistyleFn->dynamicFunctionMetadata;
|
|
130
|
-
|
|
131
|
-
helpers::assertThat(rt, maybeMetadata.has_value(), "Unistyles: Your dynamic function '" + unistyleFn->styleKey + "' has no metadata and can't be processed.");
|
|
132
181
|
|
|
133
182
|
// convert arguments to jsi::Value
|
|
134
|
-
auto
|
|
183
|
+
auto dynamicFunctionMetadata = metadata.value();
|
|
135
184
|
std::vector<jsi::Value> args{};
|
|
136
|
-
|
|
137
|
-
args.reserve(3);
|
|
138
185
|
|
|
139
|
-
|
|
140
|
-
|
|
186
|
+
args.reserve(dynamicFunctionMetadata.size());
|
|
187
|
+
|
|
188
|
+
for (int i = 0; i < dynamicFunctionMetadata.size(); i++) {
|
|
189
|
+
folly::dynamic& arg = dynamicFunctionMetadata.at(i);
|
|
141
190
|
|
|
142
191
|
args.emplace_back(jsi::valueFromDynamic(rt, arg));
|
|
143
192
|
}
|
|
@@ -145,96 +194,34 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
|
|
|
145
194
|
const jsi::Value *argStart = args.data();
|
|
146
195
|
|
|
147
196
|
// call cached function with memoized arguments
|
|
148
|
-
auto functionResult = unistyleFn->
|
|
197
|
+
auto functionResult = unistyleFn->rawValue
|
|
198
|
+
.asFunction(rt)
|
|
199
|
+
.call(rt, argStart, dynamicFunctionMetadata.size())
|
|
200
|
+
.asObject(rt);
|
|
149
201
|
|
|
150
202
|
unistyleFn->unprocessedValue = std::move(functionResult);
|
|
151
|
-
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn,
|
|
203
|
+
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
|
|
152
204
|
}
|
|
153
205
|
}
|
|
154
206
|
|
|
155
207
|
// convert dependency map to shadow tree updates
|
|
156
|
-
|
|
208
|
+
void parser::Parser::rebuildShadowLeafUpdates(jsi::Runtime& rt, core::DependencyMap& dependencyMap) {
|
|
157
209
|
shadow::ShadowLeafUpdates updates;
|
|
158
|
-
auto&
|
|
159
|
-
|
|
160
|
-
for (const auto& [styleSheet, map] : dependencyMap) {
|
|
161
|
-
for (const auto& [shadowNode, unistyles] : map) {
|
|
162
|
-
for (const auto& unistyle : unistyles) {
|
|
163
|
-
auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyle->parsedStyle.value());
|
|
164
|
-
|
|
165
|
-
if (updates.contains(shadowNode)) {
|
|
166
|
-
updates[shadowNode].emplace_back(std::move(rawProps));
|
|
167
|
-
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
updates.emplace(shadowNode, std::vector<RawProps>{std::move(rawProps)});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return updates;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
// convert jsi::Value arguments to folly::dynamic
|
|
180
|
-
std::vector<folly::dynamic> parser::Parser::parseDynamicFunctionArguments(jsi::Runtime& rt, size_t count, const jsi::Value* arguments) {
|
|
181
|
-
std::vector<folly::dynamic> parsedArgument{};
|
|
182
|
-
|
|
183
|
-
parsedArgument.reserve(3);
|
|
184
|
-
|
|
185
|
-
for (size_t i = 0; i < count; i++) {
|
|
186
|
-
auto& arg = arguments[i];
|
|
187
|
-
|
|
188
|
-
if (arg.isBool()) {
|
|
189
|
-
parsedArgument.push_back(folly::dynamic(arg.asBool()));
|
|
190
|
-
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
if (arg.isNumber()) {
|
|
195
|
-
parsedArgument.push_back(folly::dynamic(arg.asNumber()));
|
|
196
|
-
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if (arg.isString()) {
|
|
201
|
-
parsedArgument.push_back(folly::dynamic(arg.asString(rt).utf8(rt)));
|
|
202
|
-
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
if (arg.isUndefined()) {
|
|
207
|
-
parsedArgument.push_back(folly::dynamic());
|
|
208
|
-
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
if (arg.isNull()) {
|
|
213
|
-
parsedArgument.push_back(folly::dynamic(nullptr));
|
|
214
|
-
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
if (!arg.isObject()) {
|
|
219
|
-
continue;;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
auto argObj = arg.asObject(rt);
|
|
210
|
+
auto& registry = core::UnistylesRegistry::get();
|
|
223
211
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
parsedArgument.push_back(jsi::dynamicFromValue(rt, arg));
|
|
212
|
+
for (const auto& [shadowNode, unistyles] : dependencyMap) {
|
|
213
|
+
auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyles);
|
|
227
214
|
|
|
228
|
-
|
|
229
|
-
}
|
|
215
|
+
updates.emplace(shadowNode, std::move(rawProps));
|
|
230
216
|
}
|
|
231
217
|
|
|
232
|
-
|
|
218
|
+
registry.trafficController.setUpdates(updates);
|
|
219
|
+
registry.trafficController.resumeUnistylesTraffic();
|
|
233
220
|
}
|
|
234
221
|
|
|
235
222
|
// first level of StyleSheet, we can expect here different properties than on second level
|
|
236
223
|
// eg. variants, compoundVariants, mq, breakpoints etc.
|
|
237
|
-
jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants
|
|
224
|
+
jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<Variants> variants) {
|
|
238
225
|
// for objects - we simply operate on them
|
|
239
226
|
// for functions we need to work on the unprocessed result (object)
|
|
240
227
|
auto& style = unistyle->type == core::UnistyleType::Object
|
|
@@ -293,6 +280,18 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
|
293
280
|
return;
|
|
294
281
|
}
|
|
295
282
|
|
|
283
|
+
if (propertyName == "boxShadow" && propertyValueObject.isArray(rt)) {
|
|
284
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseBoxShadow(rt, unistyle, propertyValueObject));
|
|
285
|
+
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (propertyName == "filter" && propertyValueObject.isArray(rt)) {
|
|
290
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseFilters(rt, unistyle, propertyValueObject));
|
|
291
|
+
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
|
|
296
295
|
if (propertyName == "fontVariant" && propertyValueObject.isArray(rt)) {
|
|
297
296
|
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), propertyValue);
|
|
298
297
|
|
|
@@ -317,15 +316,15 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
|
317
316
|
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), this->parseSecondLevel(rt, unistyle, valueFromBreakpoint));
|
|
318
317
|
});
|
|
319
318
|
|
|
320
|
-
if (shouldParseVariants && !variants.empty()) {
|
|
319
|
+
if (shouldParseVariants && variants.has_value() && !variants.value().empty()) {
|
|
321
320
|
auto propertyValueObject = style.getProperty(rt, "variants").asObject(rt);
|
|
322
|
-
auto parsedVariant = this->parseVariants(rt, unistyle, propertyValueObject, variants);
|
|
321
|
+
auto parsedVariant = this->parseVariants(rt, unistyle, propertyValueObject, variants.value());
|
|
323
322
|
|
|
324
323
|
helpers::mergeJSIObjects(rt, parsedStyle, parsedVariant);
|
|
325
324
|
|
|
326
325
|
if (shouldParseCompoundVariants) {
|
|
327
326
|
auto compoundVariants = style.getProperty(rt, "compoundVariants").asObject(rt);
|
|
328
|
-
auto parsedCompoundVariants = this->parseCompoundVariants(rt, unistyle, compoundVariants, variants);
|
|
327
|
+
auto parsedCompoundVariants = this->parseCompoundVariants(rt, unistyle, compoundVariants, variants.value());
|
|
329
328
|
|
|
330
329
|
helpers::mergeJSIObjects(rt, parsedStyle, parsedCompoundVariants);
|
|
331
330
|
}
|
|
@@ -335,14 +334,14 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
|
335
334
|
}
|
|
336
335
|
|
|
337
336
|
// function replaces original user dynamic function with additional logic to memoize arguments
|
|
338
|
-
jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle
|
|
337
|
+
jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle) {
|
|
339
338
|
auto unistylesRuntime = this->_unistylesRuntime;
|
|
340
339
|
|
|
341
340
|
return jsi::Function::createFromHostFunction(
|
|
342
341
|
rt,
|
|
343
342
|
jsi::PropNameID::forUtf8(rt, unistyle->styleKey),
|
|
344
343
|
1,
|
|
345
|
-
[this, unistylesRuntime, unistyle
|
|
344
|
+
[this, unistylesRuntime, unistyle](jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
|
|
346
345
|
auto thisObject = thisVal.asObject(rt);
|
|
347
346
|
auto parser = parser::Parser(unistylesRuntime);
|
|
348
347
|
|
|
@@ -352,16 +351,29 @@ jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unist
|
|
|
352
351
|
// memoize metadata to call it later
|
|
353
352
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
|
354
353
|
|
|
355
|
-
unistyleFn->dynamicFunctionMetadata = core::DynamicFunctionMetadata{
|
|
356
|
-
count,
|
|
357
|
-
this->parseDynamicFunctionArguments(rt, count, args)
|
|
358
|
-
};
|
|
359
|
-
|
|
360
354
|
unistyleFn->unprocessedValue = jsi::Value(rt, result).asObject(rt);
|
|
355
|
+
|
|
356
|
+
jsi::Value rawVariants = thisObject.hasProperty(rt, helpers::STYLE_VARIANTS.c_str())
|
|
357
|
+
? thisObject.getProperty(rt, helpers::STYLE_VARIANTS.c_str())
|
|
358
|
+
: jsi::Value::undefined();
|
|
359
|
+
std::optional<Variants> variants = rawVariants.isUndefined()
|
|
360
|
+
? std::nullopt
|
|
361
|
+
: std::optional<Variants>(helpers::variantsToPairs(rt, rawVariants.asObject(rt)));
|
|
362
|
+
|
|
361
363
|
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
|
|
362
364
|
unistyleFn->seal();
|
|
363
365
|
|
|
364
|
-
|
|
366
|
+
jsi::Object style = jsi::Value(rt, unistyleFn->parsedStyle.value()).asObject(rt);
|
|
367
|
+
|
|
368
|
+
// include dependencies for createUnistylesComponent
|
|
369
|
+
style.setProperty(rt, "__proto__", generateUnistylesPrototype(rt, unistylesRuntime, unistyle, variants, helpers::functionArgumentsToArray(rt, args, count)));
|
|
370
|
+
|
|
371
|
+
// update shadow leaf updates to indicate newest changes
|
|
372
|
+
auto& registry = core::UnistylesRegistry::get();
|
|
373
|
+
|
|
374
|
+
registry.shadowLeafUpdateFromUnistyle(rt, unistyle);
|
|
375
|
+
|
|
376
|
+
return style;
|
|
365
377
|
});
|
|
366
378
|
}
|
|
367
379
|
|
|
@@ -370,7 +382,7 @@ std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &
|
|
|
370
382
|
helpers::assertThat(rt, dependencies.isArray(rt), "Unistyles: Babel transform is invalid - unexpected type for dependencies.");
|
|
371
383
|
|
|
372
384
|
std::vector<UnistyleDependency> parsedDependencies{};
|
|
373
|
-
|
|
385
|
+
|
|
374
386
|
parsedDependencies.reserve(5);
|
|
375
387
|
|
|
376
388
|
helpers::iterateJSIArray(rt, dependencies.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
@@ -384,12 +396,8 @@ std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &
|
|
|
384
396
|
|
|
385
397
|
// eg. [{ scale: 2 }, { translateX: 100 }]
|
|
386
398
|
jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
|
|
387
|
-
if (!obj.isArray(rt)) {
|
|
388
|
-
return jsi::Value::undefined();
|
|
389
|
-
}
|
|
390
|
-
|
|
391
399
|
std::vector<jsi::Value> parsedTransforms{};
|
|
392
|
-
|
|
400
|
+
|
|
393
401
|
parsedTransforms.reserve(2);
|
|
394
402
|
|
|
395
403
|
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
@@ -417,6 +425,67 @@ jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared un
|
|
|
417
425
|
return result;
|
|
418
426
|
}
|
|
419
427
|
|
|
428
|
+
// eg [{offsetX: 5, offsetY: 5, blurRadius: 5, spreadDistance: 0, color: ‘rgba(255, 0, 0, 0.5)’}]
|
|
429
|
+
jsi::Value parser::Parser::parseBoxShadow(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
|
|
430
|
+
std::vector<jsi::Value> parsedBoxShadows{};
|
|
431
|
+
|
|
432
|
+
parsedBoxShadows.reserve(2);
|
|
433
|
+
|
|
434
|
+
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
435
|
+
if (!value.isObject()) {
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
|
|
440
|
+
|
|
441
|
+
parsedBoxShadows.emplace_back(std::move(parsedResult));
|
|
442
|
+
});
|
|
443
|
+
|
|
444
|
+
// create jsi::Array result with correct box shadows
|
|
445
|
+
jsi::Array result = jsi::Array(rt, parsedBoxShadows.size());
|
|
446
|
+
|
|
447
|
+
for (size_t i = 0; i < parsedBoxShadows.size(); i++) {
|
|
448
|
+
result.setValueAtIndex(rt, i, parsedBoxShadows[i]);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
return result;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// eg. [{ brightness: 0.5 }, { opacity: 0.25 }]
|
|
455
|
+
jsi::Value parser::Parser::parseFilters(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
|
|
456
|
+
std::vector<jsi::Value> parsedFilters{};
|
|
457
|
+
|
|
458
|
+
parsedFilters.reserve(2);
|
|
459
|
+
|
|
460
|
+
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
461
|
+
if (!value.isObject()) {
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
|
|
466
|
+
|
|
467
|
+
// take only one filter per object
|
|
468
|
+
jsi::Array propertyNames = parsedResult.asObject(rt).getPropertyNames(rt);
|
|
469
|
+
size_t length = propertyNames.size(rt);
|
|
470
|
+
|
|
471
|
+
// ignore no filters
|
|
472
|
+
if (length == 0) {
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
parsedFilters.emplace_back(std::move(parsedResult));
|
|
477
|
+
});
|
|
478
|
+
|
|
479
|
+
// create jsi::Array result with correct filters
|
|
480
|
+
jsi::Array result = jsi::Array(rt, parsedFilters.size());
|
|
481
|
+
|
|
482
|
+
for (size_t i = 0; i < parsedFilters.size(); i++) {
|
|
483
|
+
result.setValueAtIndex(rt, i, parsedFilters[i]);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
return result;
|
|
487
|
+
}
|
|
488
|
+
|
|
420
489
|
// find value based on breakpoints and mq
|
|
421
490
|
jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
|
|
422
491
|
auto& registry = core::UnistylesRegistry::get();
|
|
@@ -438,7 +507,7 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
|
|
|
438
507
|
auto propertyName = propertyNames.getValueAtIndex(rt, i).asString(rt).utf8(rt);
|
|
439
508
|
auto propertyValue = obj.getProperty(rt, propertyName.c_str());
|
|
440
509
|
auto mq = core::UnistylesMQ{propertyName};
|
|
441
|
-
|
|
510
|
+
|
|
442
511
|
if (mq.isMQ()) {
|
|
443
512
|
unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
|
|
444
513
|
}
|
|
@@ -451,11 +520,11 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
|
|
|
451
520
|
|
|
452
521
|
// check orientation breakpoints if user didn't register own breakpoint
|
|
453
522
|
bool hasOrientationBreakpoint = obj.hasProperty(rt, currentOrientation);
|
|
454
|
-
|
|
523
|
+
|
|
455
524
|
if (hasOrientationBreakpoint) {
|
|
456
525
|
unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
|
|
457
526
|
}
|
|
458
|
-
|
|
527
|
+
|
|
459
528
|
if (!hasBreakpoints && hasOrientationBreakpoint) {
|
|
460
529
|
return obj.getProperty(rt, currentOrientation);
|
|
461
530
|
}
|
|
@@ -463,7 +532,7 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
|
|
|
463
532
|
if (!currentBreakpoint.has_value()) {
|
|
464
533
|
return jsi::Value::undefined();
|
|
465
534
|
}
|
|
466
|
-
|
|
535
|
+
|
|
467
536
|
unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
|
|
468
537
|
|
|
469
538
|
// if you're still here it means that there is no
|
|
@@ -509,7 +578,7 @@ jsi::Object parser::Parser::parseVariants(jsi::Runtime& rt, Unistyle::Shared uni
|
|
|
509
578
|
: std::nullopt;
|
|
510
579
|
|
|
511
580
|
// we've got a match, but we need to check some condition
|
|
512
|
-
auto styles = this->getStylesForVariant(rt, groupValue.asObject(rt), selectedVariant);
|
|
581
|
+
auto styles = this->getStylesForVariant(rt, groupName, groupValue.asObject(rt), selectedVariant, variants);
|
|
513
582
|
|
|
514
583
|
// oops, invalid variant
|
|
515
584
|
if (styles.isUndefined() || !styles.isObject()) {
|
|
@@ -525,13 +594,19 @@ jsi::Object parser::Parser::parseVariants(jsi::Runtime& rt, Unistyle::Shared uni
|
|
|
525
594
|
}
|
|
526
595
|
|
|
527
596
|
// helpers function to support 'default' variants
|
|
528
|
-
jsi::Value parser::Parser::getStylesForVariant(jsi::Runtime& rt, jsi::Object&& groupValue, std::optional<std::string> selectedVariant) {
|
|
597
|
+
jsi::Value parser::Parser::getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants) {
|
|
529
598
|
// if there is no value, let's try 'default'
|
|
530
599
|
auto selectedVariantKey = selectedVariant.has_value()
|
|
531
600
|
? selectedVariant.value().c_str()
|
|
532
601
|
: "default";
|
|
602
|
+
auto hasKey = groupValue.hasProperty(rt, selectedVariantKey);
|
|
603
|
+
|
|
604
|
+
if (!hasKey || !selectedVariant.has_value()) {
|
|
605
|
+
// for no key, add 'default' selection to variants map
|
|
606
|
+
variants.emplace_back(groupName, selectedVariantKey);
|
|
607
|
+
}
|
|
533
608
|
|
|
534
|
-
if (
|
|
609
|
+
if (hasKey) {
|
|
535
610
|
return groupValue.getProperty(rt, selectedVariantKey);
|
|
536
611
|
}
|
|
537
612
|
|
|
@@ -571,28 +646,20 @@ bool parser::Parser::shouldApplyCompoundVariants(jsi::Runtime& rt, const Variant
|
|
|
571
646
|
return false;
|
|
572
647
|
}
|
|
573
648
|
|
|
574
|
-
jsi::Array propertyNames = compoundVariant.getPropertyNames(rt);
|
|
575
|
-
size_t length = propertyNames.size(rt);
|
|
576
|
-
size_t allConditions = compoundVariant.hasProperty(rt, "styles")
|
|
577
|
-
? length - 1
|
|
578
|
-
: length;
|
|
579
|
-
|
|
580
|
-
if (allConditions != variants.size()) {
|
|
581
|
-
return false;
|
|
582
|
-
}
|
|
583
|
-
|
|
584
649
|
for (auto it = variants.cbegin(); it != variants.cend(); ++it) {
|
|
585
650
|
auto variantKey = it->first;
|
|
586
651
|
auto variantValue = it->second;
|
|
587
652
|
|
|
588
653
|
if (!compoundVariant.hasProperty(rt, variantKey.c_str())) {
|
|
589
|
-
|
|
654
|
+
continue;
|
|
590
655
|
}
|
|
591
656
|
|
|
592
657
|
auto property = compoundVariant.getProperty(rt, variantKey.c_str());
|
|
593
658
|
auto propertyName = property.isBool()
|
|
594
659
|
? (property.asBool() ? "true" : "false")
|
|
595
|
-
: property.
|
|
660
|
+
: property.isString()
|
|
661
|
+
? property.asString(rt).utf8(rt)
|
|
662
|
+
: "";
|
|
596
663
|
|
|
597
664
|
if (propertyName != variantValue) {
|
|
598
665
|
return false;
|
|
@@ -670,43 +737,27 @@ jsi::Value parser::Parser::parseSecondLevel(jsi::Runtime &rt, Unistyle::Shared u
|
|
|
670
737
|
return parsedStyle;
|
|
671
738
|
}
|
|
672
739
|
|
|
673
|
-
//
|
|
674
|
-
|
|
675
|
-
Variants pairs{};
|
|
676
|
-
|
|
677
|
-
helpers::enumerateJSIObject(rt, variants, [&](const std::string& variantName, jsi::Value& variantValue){
|
|
678
|
-
if (variantValue.isUndefined() || variantValue.isNull()) {
|
|
679
|
-
return;
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
if (variantValue.isBool()) {
|
|
683
|
-
pairs.emplace_back(std::make_pair(variantName, variantValue.asBool() ? "true" : "false"));
|
|
684
|
-
|
|
685
|
-
return;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
if (variantValue.isString()) {
|
|
689
|
-
pairs.emplace_back(std::make_pair(variantName, variantValue.asString(rt).utf8(rt)));
|
|
690
|
-
}
|
|
691
|
-
});
|
|
692
|
-
|
|
693
|
-
return pairs;
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
// convert jsi::Object to RawValue with int colors
|
|
697
|
-
RawProps parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, jsi::Object& styles) {
|
|
740
|
+
// convert unistyles to folly with int colors
|
|
741
|
+
folly::dynamic parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles) {
|
|
698
742
|
jsi::Object convertedStyles = jsi::Object(rt);
|
|
699
743
|
auto& state = core::UnistylesRegistry::get().getState(rt);
|
|
700
744
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
745
|
+
for (const auto& unistyleData : unistyles) {
|
|
746
|
+
// this can happen for exotic stylesheets
|
|
747
|
+
if (!unistyleData->parsedStyle.has_value()) {
|
|
748
|
+
return nullptr;
|
|
704
749
|
}
|
|
705
750
|
|
|
706
|
-
|
|
707
|
-
|
|
751
|
+
helpers::enumerateJSIObject(rt, unistyleData->parsedStyle.value(), [&](const std::string& propertyName, jsi::Value& propertyValue){
|
|
752
|
+
if (this->isColor(propertyName)) {
|
|
753
|
+
return convertedStyles.setProperty(rt, propertyName.c_str(), jsi::Value(state.parseColor(propertyValue)));
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
convertedStyles.setProperty(rt, propertyName.c_str(), propertyValue);
|
|
757
|
+
});
|
|
758
|
+
}
|
|
708
759
|
|
|
709
|
-
return
|
|
760
|
+
return jsi::dynamicFromValue(rt, std::move(convertedStyles));
|
|
710
761
|
}
|
|
711
762
|
|
|
712
763
|
// check is styleKey contains color
|