react-native-unistyles 3.0.0-alpha.3 → 3.0.0-alpha.30
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/android/CMakeLists.txt +12 -21
- package/cxx/common/Constants.h +3 -0
- package/cxx/common/Helpers.h +118 -5
- package/cxx/core/HostStyle.cpp +12 -8
- package/cxx/core/HostStyle.h +4 -0
- package/cxx/core/StyleSheet.h +0 -2
- package/cxx/core/StyleSheetRegistry.cpp +10 -13
- package/cxx/core/StyleSheetRegistry.h +4 -4
- package/cxx/core/Unistyle.h +7 -10
- package/cxx/core/UnistyleData.h +23 -0
- package/cxx/core/UnistyleWrapper.h +61 -12
- package/cxx/core/UnistylesCommitHook.cpp +17 -16
- package/cxx/core/UnistylesCommitHook.h +7 -11
- package/cxx/core/UnistylesCommitShadowNode.h +13 -0
- package/cxx/core/UnistylesMountHook.cpp +26 -0
- package/cxx/core/UnistylesMountHook.h +24 -0
- package/cxx/core/UnistylesRegistry.cpp +85 -88
- package/cxx/core/UnistylesRegistry.h +16 -13
- package/cxx/core/UnistylesState.cpp +29 -11
- package/cxx/core/UnistylesState.h +5 -2
- package/cxx/hybridObjects/HybridShadowRegistry.cpp +15 -13
- package/cxx/hybridObjects/HybridStyleSheet.cpp +144 -46
- package/cxx/hybridObjects/HybridStyleSheet.h +23 -4
- package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +51 -8
- package/cxx/hybridObjects/HybridUnistylesRuntime.h +12 -1
- package/cxx/parser/Parser.cpp +209 -176
- package/cxx/parser/Parser.h +10 -14
- package/cxx/shadowTree/ShadowLeafUpdate.h +1 -1
- package/cxx/shadowTree/ShadowTrafficController.h +37 -0
- package/cxx/shadowTree/ShadowTreeManager.cpp +16 -15
- package/cxx/shadowTree/ShadowTreeManager.h +2 -1
- package/ios/Equatable.swift +2 -1
- package/ios/NativePlatform+ios.swift +21 -5
- package/ios/NativePlatform+keyboard.swift +83 -0
- package/ios/NativePlatformListener+ios.swift +36 -23
- package/ios/Unistyles.h +1 -0
- package/ios/UnistylesModuleOnLoad.h +13 -2
- package/ios/UnistylesModuleOnLoad.mm +11 -1
- package/lib/commonjs/common.js.map +1 -1
- package/lib/commonjs/core/createUnistylesComponent.js +18 -0
- package/lib/commonjs/core/createUnistylesComponent.js.map +1 -0
- package/lib/commonjs/core/createUnistylesComponent.native.js +45 -0
- package/lib/commonjs/core/createUnistylesComponent.native.js.map +2 -0
- package/lib/commonjs/core/index.js +27 -0
- package/lib/commonjs/core/index.js.map +1 -0
- package/lib/commonjs/core/useBreakpoint.js +22 -0
- package/lib/commonjs/core/useBreakpoint.js.map +1 -0
- package/lib/commonjs/core/useBreakpoint.native.js +24 -0
- package/lib/commonjs/core/useBreakpoint.native.js.map +2 -0
- package/lib/commonjs/core/useTheme.js +22 -0
- package/lib/commonjs/core/useTheme.js.map +2 -0
- package/lib/commonjs/core/useTheme.native.js +24 -0
- package/lib/commonjs/core/useTheme.native.js.map +2 -0
- package/lib/commonjs/global.js +3 -0
- package/lib/commonjs/index.js +23 -11
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/mq.js +1 -4
- package/lib/commonjs/mq.js.map +2 -1
- package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js +6 -4
- package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
- package/lib/commonjs/specs/NativePlatform/index.js.map +1 -1
- package/lib/commonjs/specs/NavigtionBar/index.js +1 -1
- package/lib/commonjs/specs/NavigtionBar/index.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/ShadowRegistry.nitro.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/index.js +7 -6
- package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/types.js +3 -0
- package/lib/commonjs/specs/StatusBar/UnistylesStatusBar.nitro.js.map +1 -1
- package/lib/commonjs/specs/StatusBar/index.js +1 -1
- package/lib/commonjs/specs/StatusBar/index.js.map +2 -1
- package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.js +2 -4
- package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.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 -3
- package/lib/commonjs/specs/TurboUnistyles/NativeTurboUnistyles.js.map +2 -1
- package/lib/commonjs/specs/UnistylesRuntime/index.js +1 -1
- 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/specs/types.js.map +1 -0
- package/lib/commonjs/types/accessibility.js +9 -9
- package/lib/commonjs/types/accessibility.js.map +1 -1
- package/lib/commonjs/types/common.js +3 -0
- package/lib/commonjs/types/core.js.map +1 -1
- package/lib/commonjs/types/index.js.map +2 -1
- package/lib/commonjs/types/stylesheet.js +1 -2
- package/lib/commonjs/types/stylesheet.js.map +1 -1
- package/lib/commonjs/web/convert/boxShadow.js +77 -0
- package/lib/commonjs/web/convert/boxShadow.js.map +1 -0
- package/lib/commonjs/web/convert/index.js +68 -0
- package/lib/commonjs/web/convert/index.js.map +2 -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/pseudo.js +10 -0
- package/lib/commonjs/web/convert/pseudo.js.map +2 -0
- package/lib/commonjs/web/convert/shadow.js +68 -0
- package/lib/commonjs/web/convert/shadow.js.map +2 -0
- package/lib/commonjs/web/convert/style.js +93 -0
- package/lib/commonjs/web/convert/style.js.map +2 -0
- package/lib/commonjs/web/convert/textShadow.js +70 -0
- package/lib/commonjs/web/convert/textShadow.js.map +2 -0
- package/lib/commonjs/web/convert/transform.js +72 -0
- package/lib/commonjs/web/convert/transform.js.map +2 -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 +54 -0
- package/lib/commonjs/web/convert/utils.js.map +2 -0
- package/lib/commonjs/web/create.js +48 -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 +2 -0
- package/lib/commonjs/web/listener.js +35 -0
- package/lib/commonjs/web/listener.js.map +2 -0
- package/lib/commonjs/web/mock.js +28 -0
- package/lib/commonjs/web/mock.js.map +2 -0
- package/lib/commonjs/web/mq.js +23 -0
- package/lib/commonjs/web/mq.js.map +1 -0
- package/lib/commonjs/web/registry.js +183 -0
- package/lib/commonjs/web/registry.js.map +2 -0
- package/lib/commonjs/web/runtime.js +167 -0
- package/lib/commonjs/web/runtime.js.map +2 -0
- package/lib/commonjs/web/shadowRegistry.js +114 -0
- package/lib/commonjs/web/shadowRegistry.js.map +2 -0
- package/lib/commonjs/web/state.js +69 -0
- package/lib/commonjs/web/state.js.map +2 -0
- package/lib/commonjs/web/utils/common.js +90 -0
- package/lib/commonjs/web/utils/common.js.map +2 -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 +82 -0
- package/lib/commonjs/web/utils/unistyle.js.map +2 -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 +58 -0
- package/lib/commonjs/web/variants/useVariants.js.map +2 -0
- package/lib/module/core/createUnistylesComponent.js +11 -0
- package/lib/module/core/createUnistylesComponent.js.map +2 -0
- package/lib/module/core/createUnistylesComponent.native.js +39 -0
- package/lib/module/core/createUnistylesComponent.native.js.map +1 -0
- package/lib/module/core/index.js +6 -0
- package/lib/module/core/index.js.map +1 -0
- package/lib/module/core/useBreakpoint.js +17 -0
- package/lib/module/core/useBreakpoint.js.map +1 -0
- package/lib/module/core/useBreakpoint.native.js +19 -0
- package/lib/module/core/useBreakpoint.native.js.map +2 -0
- package/lib/module/core/useTheme.js +17 -0
- package/lib/module/core/useTheme.js.map +2 -0
- package/lib/module/core/useTheme.native.js +19 -0
- package/lib/module/core/useTheme.native.js.map +2 -0
- package/lib/module/global.js +1 -1
- package/lib/module/global.js.map +1 -0
- package/lib/module/index.js +1 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/mq.js +1 -4
- package/lib/module/mq.js.map +2 -1
- package/lib/module/specs/NativePlatform/NativePlatform.nitro.js +1 -0
- package/lib/module/specs/NativePlatform/NativePlatform.nitro.js.map +2 -1
- package/lib/module/specs/NativePlatform/index.js.map +1 -1
- package/lib/module/specs/NavigtionBar/UnistylesNavigationBar.nitro.js.map +1 -1
- package/lib/module/specs/NavigtionBar/index.js +1 -1
- package/lib/module/specs/NavigtionBar/index.js.map +2 -1
- package/lib/module/specs/ShadowRegistry/ShadowRegistry.nitro.js.map +1 -1
- package/lib/module/specs/ShadowRegistry/index.js +7 -6
- package/lib/module/specs/ShadowRegistry/index.js.map +2 -1
- package/lib/module/specs/ShadowRegistry/types.js +2 -0
- package/lib/module/specs/ShadowRegistry/types.js.map +1 -0
- package/lib/module/specs/StatusBar/UnistylesStatusBar.nitro.js.map +1 -1
- package/lib/module/specs/StatusBar/index.js +1 -1
- 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 +2 -1
- package/lib/module/specs/TurboUnistyles/NativeTurboUnistyles.js.map +2 -1
- package/lib/module/specs/UnistylesRuntime/UnistylesRuntime.nitro.js.map +1 -0
- package/lib/module/specs/UnistylesRuntime/index.js +1 -1
- 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 +2 -1
- package/lib/module/specs/types.js +10 -10
- package/lib/module/specs/types.js.map +1 -1
- package/lib/module/types/accessibility.js +1 -1
- package/lib/module/types/accessibility.js.map +1 -0
- package/lib/module/types/breakpoints.js.map +1 -0
- package/lib/module/types/common.js +1 -1
- package/lib/module/types/common.js.map +1 -0
- package/lib/module/types/core.js.map +1 -1
- package/lib/module/types/index.js.map +2 -1
- package/lib/module/types/stylesheet.js.map +1 -1
- package/lib/module/types/variants.js.map +1 -0
- package/lib/module/web/convert/boxShadow.js +72 -0
- package/lib/module/web/convert/boxShadow.js.map +1 -0
- package/lib/module/web/convert/index.js +69 -0
- package/lib/module/web/convert/index.js.map +2 -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/pseudo.js +5 -0
- package/lib/module/web/convert/pseudo.js.map +2 -0
- package/lib/module/web/convert/shadow.js +59 -0
- package/lib/module/web/convert/shadow.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/textShadow.js +68 -0
- package/lib/module/web/convert/textShadow.js.map +1 -0
- package/lib/module/web/convert/transform.js +67 -0
- package/lib/module/web/convert/transform.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 +42 -0
- package/lib/module/web/convert/utils.js.map +1 -0
- package/lib/module/web/create.js +43 -0
- package/lib/module/web/create.js.map +1 -0
- package/lib/module/web/index.js +25 -0
- package/lib/module/web/index.js.map +2 -0
- package/lib/module/web/listener.js +31 -0
- package/lib/module/web/listener.js.map +2 -0
- package/lib/module/web/mock.js +24 -0
- package/lib/module/web/mock.js.map +2 -0
- package/lib/module/web/mq.js +17 -0
- package/lib/module/web/mq.js.map +1 -0
- package/lib/module/web/registry.js +181 -0
- package/lib/module/web/registry.js.map +1 -0
- package/lib/module/web/runtime.js +163 -0
- package/lib/module/web/runtime.js.map +1 -0
- package/lib/module/web/shadowRegistry.js +118 -0
- package/lib/module/web/shadowRegistry.js.map +1 -0
- package/lib/module/web/state.js +65 -0
- package/lib/module/web/state.js.map +2 -0
- package/lib/module/web/utils/common.js +80 -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 +69 -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 +2 -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 +53 -0
- package/lib/module/web/variants/useVariants.js.map +2 -0
- package/lib/typescript/src/core/createUnistylesComponent.d.ts +6 -0
- package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +1 -0
- package/lib/typescript/src/core/createUnistylesComponent.native.d.ts +6 -0
- package/lib/typescript/src/core/createUnistylesComponent.native.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/core/useBreakpoint.d.ts +2 -0
- package/lib/typescript/src/core/useBreakpoint.d.ts.map +1 -0
- package/lib/typescript/src/core/useBreakpoint.native.d.ts +2 -0
- package/lib/typescript/src/core/useBreakpoint.native.d.ts.map +1 -0
- package/lib/typescript/src/core/useTheme.d.ts +3 -0
- package/lib/typescript/src/core/useTheme.d.ts.map +1 -0
- package/lib/typescript/src/core/useTheme.native.d.ts +3 -0
- package/lib/typescript/src/core/useTheme.native.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts +6 -2
- package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/NavigtionBar/index.d.ts +5 -0
- package/lib/typescript/src/specs/NavigtionBar/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +3 -3
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/StatusBar/index.d.ts +5 -0
- 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 +0 -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/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/web/convert/boxShadow.d.ts +8 -0
- package/lib/typescript/src/web/convert/boxShadow.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/pseudo.d.ts +6 -0
- package/lib/typescript/src/web/convert/pseudo.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow.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/src/web/convert/textShadow.d.ts +8 -0
- package/lib/typescript/src/web/convert/textShadow.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/transform.d.ts +4 -0
- package/lib/typescript/src/web/convert/transform.d.ts.map +1 -0
- package/lib/typescript/{web → src/web}/convert/types.d.ts +1 -1
- package/lib/typescript/src/web/convert/types.d.ts.map +1 -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 +3 -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/mq.d.ts +8 -0
- package/lib/typescript/src/web/mq.d.ts.map +1 -0
- package/lib/typescript/src/web/registry.d.ts +28 -0
- package/lib/typescript/src/web/registry.d.ts.map +1 -0
- package/lib/typescript/{web → src/web}/runtime.d.ts +9 -9
- package/lib/typescript/src/web/runtime.d.ts.map +1 -0
- package/lib/typescript/src/web/shadowRegistry.d.ts +16 -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/{web/utils.d.ts → src/web/utils/common.d.ts} +8 -9
- 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.hpp +48 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency_.hpp +8 -8
- package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +31 -22
- package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +8 -3
- 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/Func_void.kt +45 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +25 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +2 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +2 -1
- package/nitrogen/generated/android/unistyles+autolinking.cmake +13 -1
- package/nitrogen/generated/android/{UnistylesOnLoad.cpp → unistylesOnLoad.cpp} +4 -2
- package/nitrogen/generated/android/{UnistylesOnLoad.hpp → unistylesOnLoad.hpp} +1 -1
- package/nitrogen/generated/ios/Unistyles+autolinking.rb +5 -3
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +25 -0
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +53 -31
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +0 -29
- package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +7 -1
- package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +3 -13
- package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +167 -104
- 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 -0
- package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +5 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +3 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +3 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +3 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +3 -0
- 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 +18 -30
- package/plugin/common.js +12 -1
- package/plugin/index.js +110 -23
- package/plugin/ref.js +64 -13
- package/plugin/style.js +82 -22
- package/plugin/stylesheet.js +53 -3
- package/plugin/variants.js +33 -0
- package/src/common.js +4 -0
- package/src/core/createUnistylesComponent.js +6 -0
- package/src/core/createUnistylesComponent.native.js +31 -0
- package/src/core/createUnistylesComponent.native.tsx +44 -0
- package/src/core/createUnistylesComponent.tsx +10 -0
- package/src/core/index.js +3 -0
- package/src/core/index.ts +3 -0
- package/src/core/useBreakpoint.js +14 -0
- package/src/core/useBreakpoint.native.js +16 -0
- package/src/core/useBreakpoint.native.ts +21 -0
- package/src/core/useBreakpoint.ts +18 -0
- package/src/core/useTheme.js +14 -0
- package/src/core/useTheme.native.js +16 -0
- package/src/core/useTheme.native.ts +22 -0
- package/src/core/useTheme.ts +19 -0
- package/src/global.js +1 -0
- package/src/index.js +3 -0
- package/src/index.ts +2 -12
- package/src/mq.js +38 -0
- package/src/specs/NativePlatform/NativePlatform.nitro.js +19 -0
- package/src/specs/NativePlatform/NativePlatform.nitro.ts +7 -3
- package/src/specs/NativePlatform/index.js +1 -0
- package/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.js +1 -0
- package/src/specs/NavigtionBar/index.js +9 -0
- package/src/specs/NavigtionBar/index.ts +6 -1
- package/src/specs/ShadowRegistry/ShadowRegistry.nitro.js +1 -0
- package/src/specs/ShadowRegistry/index.js +26 -0
- package/src/specs/ShadowRegistry/index.ts +10 -9
- package/src/specs/ShadowRegistry/types.js +1 -0
- package/src/specs/StatusBar/UnistylesStatusBar.nitro.js +1 -0
- package/src/specs/StatusBar/index.js +25 -0
- package/src/specs/StatusBar/index.ts +6 -1
- package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.js +1 -0
- package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.ts +4 -1
- package/src/specs/StyleSheet/index.js +13 -0
- package/src/specs/StyleSheet/index.ts +6 -1
- package/src/specs/TurboUnistyles/NativeTurboUnistyles.js +2 -0
- package/src/specs/TurboUnistyles/index.js +1 -0
- package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.js +1 -0
- package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.ts +0 -1
- package/src/specs/UnistylesRuntime/index.js +20 -0
- package/src/specs/UnistylesRuntime/index.ts +4 -2
- package/src/specs/index.js +8 -0
- package/src/specs/index.ts +6 -2
- package/src/specs/index.web.js +2 -0
- package/src/specs/index.web.ts +1 -1
- package/src/specs/types.js +17 -0
- package/src/types/accessibility.js +30 -0
- package/src/types/breakpoints.js +1 -0
- package/src/types/breakpoints.ts +25 -13
- package/src/types/common.js +1 -0
- package/src/types/core.js +1 -0
- package/src/types/index.js +1 -0
- package/src/types/index.ts +1 -1
- package/src/types/stylesheet.js +2 -0
- package/src/types/stylesheet.ts +7 -5
- package/src/types/variants.js +1 -0
- package/src/types/variants.ts +7 -1
- package/src/web/convert/boxShadow.js +59 -0
- package/{web → src/web}/convert/boxShadow.ts +14 -15
- package/src/web/convert/index.js +56 -0
- package/{web → src/web}/convert/index.ts +8 -15
- package/src/web/convert/pseudo.js +131 -0
- package/src/web/convert/pseudo.ts +137 -0
- package/src/web/convert/shadow.js +50 -0
- package/src/web/convert/style.js +137 -0
- package/{web → src/web}/convert/style.ts +61 -10
- package/src/web/convert/textShadow.js +56 -0
- package/{web → src/web}/convert/textShadow.ts +13 -14
- package/src/web/convert/transform.js +65 -0
- package/{web → src/web}/convert/transform.ts +7 -8
- package/src/web/convert/types.js +2 -0
- package/{web → src/web}/convert/types.ts +1 -1
- package/src/web/convert/utils.js +39 -0
- package/src/web/create.js +36 -0
- package/src/web/create.ts +47 -0
- package/src/web/index.js +22 -0
- package/{web → src/web}/index.ts +3 -2
- package/src/web/listener.js +26 -0
- package/{web/listener → src/web}/listener.ts +3 -3
- package/src/web/mock.js +21 -0
- package/{web → src/web}/mock.ts +2 -12
- package/src/web/mq.js +14 -0
- package/{web → src/web}/mq.ts +1 -3
- package/src/web/registry.js +165 -0
- package/src/web/registry.ts +236 -0
- package/src/web/runtime.js +160 -0
- package/{web → src/web}/runtime.ts +21 -18
- package/src/web/shadowRegistry.js +96 -0
- package/src/web/shadowRegistry.ts +121 -0
- package/src/web/state.js +68 -0
- package/src/web/state.ts +94 -0
- package/src/web/utils/common.js +79 -0
- package/{web/utils.ts → src/web/utils/common.ts} +48 -36
- package/src/web/utils/index.js +2 -0
- package/src/web/utils/index.ts +2 -0
- package/src/web/utils/unistyle.js +72 -0
- package/src/web/utils/unistyle.ts +104 -0
- package/src/web/variants/getVariants.js +26 -0
- package/src/web/variants/getVariants.ts +42 -0
- package/src/web/variants/index.js +2 -0
- package/src/web/variants/index.ts +2 -0
- package/src/web/variants/useVariants.js +50 -0
- package/src/web/variants/useVariants.ts +65 -0
- 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.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.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.map +0 -1
- 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/breakpoint.ts +0 -21
- package/web/create.ts +0 -102
- package/web/listener/index.ts +0 -1
- 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/lib/typescript/{web → src/web}/convert/shadow.d.ts +0 -0
- /package/lib/typescript/{web → src/web}/convert/utils.d.ts +0 -0
- /package/nitrogen/generated/android/{UnistylesOnLoad.kt → unistylesOnLoad.kt} +0 -0
- /package/{web → src/web}/convert/module.d.ts +0 -0
- /package/{web → src/web}/convert/shadow.ts +0 -0
- /package/{web → src/web}/convert/utils.ts +0 -0
package/cxx/parser/Parser.cpp
CHANGED
|
@@ -11,16 +11,16 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
|
|
|
11
11
|
jsi::Object unwrappedStyleSheet = this->unwrapStyleSheet(rt, styleSheet);
|
|
12
12
|
|
|
13
13
|
helpers::enumerateJSIObject(rt, unwrappedStyleSheet, [&](const std::string& styleKey, jsi::Value& propertyValue){
|
|
14
|
-
helpers::assertThat(rt, propertyValue.isObject(), "
|
|
14
|
+
helpers::assertThat(rt, propertyValue.isObject(), "Unistyles: Style with name '" + styleKey + "' is not a function or object.");
|
|
15
15
|
|
|
16
16
|
jsi::Object styleValue = propertyValue.asObject(rt);
|
|
17
17
|
|
|
18
|
-
|
|
19
18
|
if (styleValue.isFunction(rt)) {
|
|
20
19
|
styleSheet->unistyles[styleKey] = std::make_shared<UnistyleDynamicFunction>(
|
|
21
20
|
UnistyleType::DynamicFunction,
|
|
22
21
|
styleKey,
|
|
23
|
-
styleValue
|
|
22
|
+
styleValue,
|
|
23
|
+
styleSheet
|
|
24
24
|
);
|
|
25
25
|
|
|
26
26
|
return;
|
|
@@ -29,7 +29,8 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
|
|
|
29
29
|
styleSheet->unistyles[styleKey] = std::make_shared<Unistyle>(
|
|
30
30
|
UnistyleType::Object,
|
|
31
31
|
styleKey,
|
|
32
|
-
styleValue
|
|
32
|
+
styleValue,
|
|
33
|
+
styleSheet
|
|
33
34
|
);
|
|
34
35
|
});
|
|
35
36
|
}
|
|
@@ -45,7 +46,7 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
|
|
|
45
46
|
|
|
46
47
|
// StyleSheet is a function
|
|
47
48
|
auto& state = core::UnistylesRegistry::get().getState(rt);
|
|
48
|
-
auto theme = state.
|
|
49
|
+
auto theme = state.getCurrentJSTheme();
|
|
49
50
|
|
|
50
51
|
if (styleSheet->type == StyleSheetType::Themable) {
|
|
51
52
|
return styleSheet->rawValue
|
|
@@ -68,14 +69,14 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
|
|
|
68
69
|
void parser::Parser::parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
|
|
69
70
|
for (const auto& [_, unistyle] : styleSheet->unistyles) {
|
|
70
71
|
if (unistyle->type == core::UnistyleType::Object) {
|
|
71
|
-
auto result = this->parseFirstLevel(rt, unistyle,
|
|
72
|
+
auto result = this->parseFirstLevel(rt, unistyle, std::nullopt);
|
|
72
73
|
|
|
73
74
|
unistyle->parsedStyle = std::move(result);
|
|
74
75
|
unistyle->seal();
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
if (unistyle->type == core::UnistyleType::DynamicFunction) {
|
|
78
|
-
auto hostFn = this->createDynamicFunctionProxy(rt, unistyle
|
|
79
|
+
auto hostFn = this->createDynamicFunctionProxy(rt, unistyle);
|
|
79
80
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
|
80
81
|
|
|
81
82
|
// defer parsing dynamic functions
|
|
@@ -85,59 +86,98 @@ void parser::Parser::parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
|
|
|
85
86
|
}
|
|
86
87
|
|
|
87
88
|
// rebuild all unistyles in StyleSheet that depends on variants
|
|
88
|
-
void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
|
|
89
|
+
void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Variants& variants) {
|
|
89
90
|
for (const auto& [_, unistyle] : styleSheet->unistyles) {
|
|
90
91
|
if (!unistyle->dependsOn(UnistyleDependency::VARIANTS)) {
|
|
91
92
|
continue;
|
|
92
93
|
}
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
// todo skip dynamic functions
|
|
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) {
|
|
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));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// then parse all visible Unistyles
|
|
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));
|
|
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.c_str() && !unistyleData->parsedStyle.has_value()) {
|
|
124
|
+
unistyleData->parsedStyle = jsi::Value(rt, unistyle->rawValue).asObject(rt);
|
|
125
|
+
|
|
126
|
+
if (!parsedUnistyles.contains(unistyle)) {
|
|
127
|
+
parsedUnistyles.emplace(unistyle, true);
|
|
108
128
|
}
|
|
109
129
|
|
|
110
|
-
|
|
111
|
-
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// StyleSheet might have styles that are not affected
|
|
134
|
+
if (!parsedStyleSheets[styleSheet].asObject(rt).hasProperty(rt, unistyle->styleKey.c_str())) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
unistyle->rawValue = parsedStyleSheets[styleSheet].asObject(rt).getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
|
|
139
|
+
this->rebuildUnistyle(rt, styleSheet, unistyle, unistyleData->variants, unistyleData->dynamicFunctionMetadata);
|
|
140
|
+
unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
|
|
141
|
+
|
|
142
|
+
if (!parsedUnistyles.contains(unistyle)) {
|
|
143
|
+
parsedUnistyles.emplace(unistyle, true);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// parse whatever left in StyleSheets
|
|
149
|
+
for (auto styleSheet : styleSheets) {
|
|
150
|
+
for (auto& [_, unistyle] : styleSheet->unistyles) {
|
|
151
|
+
if (!parsedUnistyles.contains(unistyle)) {
|
|
152
|
+
parsedUnistyles.emplace(unistyle, true);
|
|
153
|
+
unistyle->rawValue = parsedStyleSheets[styleSheet].asObject(rt).getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
|
|
154
|
+
this->rebuildUnistyle(rt, styleSheet, unistyle, {}, std::nullopt);
|
|
112
155
|
}
|
|
113
156
|
}
|
|
114
157
|
}
|
|
115
158
|
}
|
|
116
159
|
|
|
117
160
|
// rebuild single unistyle
|
|
118
|
-
void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle) {
|
|
161
|
+
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
162
|
if (unistyle->type == core::UnistyleType::Object) {
|
|
120
|
-
auto result = this->parseFirstLevel(rt, unistyle,
|
|
163
|
+
auto result = this->parseFirstLevel(rt, unistyle, variants);
|
|
121
164
|
|
|
122
165
|
unistyle->parsedStyle = std::move(result);
|
|
123
166
|
}
|
|
124
167
|
|
|
125
168
|
// for functions we need to call memoized function
|
|
126
169
|
// with last know arguments and parse it with new theme and mini runtime
|
|
127
|
-
if (unistyle->type == core::UnistyleType::DynamicFunction) {
|
|
170
|
+
if (unistyle->type == core::UnistyleType::DynamicFunction && metadata.has_value()) {
|
|
128
171
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
|
129
|
-
auto maybeMetadata = unistyleFn->dynamicFunctionMetadata;
|
|
130
|
-
|
|
131
|
-
helpers::assertThat(rt, maybeMetadata.has_value(), "Your dynamic function '" + unistyleFn->styleKey + "' has no metadata and can't be processed.");
|
|
132
172
|
|
|
133
173
|
// convert arguments to jsi::Value
|
|
134
|
-
auto
|
|
174
|
+
auto dynamicFunctionMetadata = metadata.value();
|
|
135
175
|
std::vector<jsi::Value> args{};
|
|
136
|
-
|
|
137
|
-
args.reserve(3);
|
|
138
176
|
|
|
139
|
-
|
|
140
|
-
|
|
177
|
+
args.reserve(dynamicFunctionMetadata.size());
|
|
178
|
+
|
|
179
|
+
for (int i = 0; i < dynamicFunctionMetadata.size(); i++) {
|
|
180
|
+
folly::dynamic& arg = dynamicFunctionMetadata.at(i);
|
|
141
181
|
|
|
142
182
|
args.emplace_back(jsi::valueFromDynamic(rt, arg));
|
|
143
183
|
}
|
|
@@ -145,96 +185,34 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
|
|
|
145
185
|
const jsi::Value *argStart = args.data();
|
|
146
186
|
|
|
147
187
|
// call cached function with memoized arguments
|
|
148
|
-
auto functionResult = unistyleFn->
|
|
188
|
+
auto functionResult = unistyleFn->rawValue
|
|
189
|
+
.asFunction(rt)
|
|
190
|
+
.call(rt, argStart, dynamicFunctionMetadata.size())
|
|
191
|
+
.asObject(rt);
|
|
149
192
|
|
|
150
193
|
unistyleFn->unprocessedValue = std::move(functionResult);
|
|
151
|
-
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn,
|
|
194
|
+
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
|
|
152
195
|
}
|
|
153
196
|
}
|
|
154
197
|
|
|
155
198
|
// convert dependency map to shadow tree updates
|
|
156
|
-
|
|
199
|
+
void parser::Parser::rebuildShadowLeafUpdates(core::DependencyMap& dependencyMap) {
|
|
157
200
|
shadow::ShadowLeafUpdates updates;
|
|
201
|
+
auto& registry = core::UnistylesRegistry::get();
|
|
158
202
|
auto& rt = this->_unistylesRuntime->getRuntime();
|
|
159
203
|
|
|
160
|
-
for (const auto& [
|
|
161
|
-
|
|
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));
|
|
204
|
+
for (const auto& [shadowNode, unistyles] : dependencyMap) {
|
|
205
|
+
auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyles);
|
|
167
206
|
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
updates.emplace(shadowNode, std::vector<RawProps>{std::move(rawProps)});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
207
|
+
updates.emplace(shadowNode, std::move(rawProps));
|
|
174
208
|
}
|
|
175
209
|
|
|
176
|
-
|
|
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);
|
|
223
|
-
|
|
224
|
-
// allow arrays and objects too
|
|
225
|
-
if (!argObj.isFunction(rt) && !argObj.isArrayBuffer(rt)) {
|
|
226
|
-
parsedArgument.push_back(jsi::dynamicFromValue(rt, arg));
|
|
227
|
-
|
|
228
|
-
continue;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
return parsedArgument;
|
|
210
|
+
registry.trafficController._unistylesUpdates[&rt] = std::move(updates);
|
|
233
211
|
}
|
|
234
212
|
|
|
235
213
|
// first level of StyleSheet, we can expect here different properties than on second level
|
|
236
214
|
// eg. variants, compoundVariants, mq, breakpoints etc.
|
|
237
|
-
jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants
|
|
215
|
+
jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<Variants> variants) {
|
|
238
216
|
// for objects - we simply operate on them
|
|
239
217
|
// for functions we need to work on the unprocessed result (object)
|
|
240
218
|
auto& style = unistyle->type == core::UnistyleType::Object
|
|
@@ -293,6 +271,18 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
|
293
271
|
return;
|
|
294
272
|
}
|
|
295
273
|
|
|
274
|
+
if (propertyName == "boxShadow" && propertyValueObject.isArray(rt)) {
|
|
275
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseBoxShadow(rt, unistyle, propertyValueObject));
|
|
276
|
+
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (propertyName == "filter" && propertyValueObject.isArray(rt)) {
|
|
281
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseFilters(rt, unistyle, propertyValueObject));
|
|
282
|
+
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
|
|
296
286
|
if (propertyName == "fontVariant" && propertyValueObject.isArray(rt)) {
|
|
297
287
|
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), propertyValue);
|
|
298
288
|
|
|
@@ -316,20 +306,16 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
|
316
306
|
|
|
317
307
|
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), this->parseSecondLevel(rt, unistyle, valueFromBreakpoint));
|
|
318
308
|
});
|
|
319
|
-
|
|
320
|
-
if (shouldParseVariants) {
|
|
321
|
-
unistyle->addDependency(UnistyleDependency::VARIANTS);
|
|
322
|
-
}
|
|
323
309
|
|
|
324
|
-
if (shouldParseVariants && !variants.empty()) {
|
|
310
|
+
if (shouldParseVariants && variants.has_value() && !variants.value().empty()) {
|
|
325
311
|
auto propertyValueObject = style.getProperty(rt, "variants").asObject(rt);
|
|
326
|
-
auto parsedVariant = this->parseVariants(rt, unistyle, propertyValueObject, variants);
|
|
312
|
+
auto parsedVariant = this->parseVariants(rt, unistyle, propertyValueObject, variants.value());
|
|
327
313
|
|
|
328
314
|
helpers::mergeJSIObjects(rt, parsedStyle, parsedVariant);
|
|
329
315
|
|
|
330
316
|
if (shouldParseCompoundVariants) {
|
|
331
317
|
auto compoundVariants = style.getProperty(rt, "compoundVariants").asObject(rt);
|
|
332
|
-
auto parsedCompoundVariants = this->parseCompoundVariants(rt, unistyle, compoundVariants, variants);
|
|
318
|
+
auto parsedCompoundVariants = this->parseCompoundVariants(rt, unistyle, compoundVariants, variants.value());
|
|
333
319
|
|
|
334
320
|
helpers::mergeJSIObjects(rt, parsedStyle, parsedCompoundVariants);
|
|
335
321
|
}
|
|
@@ -339,14 +325,14 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
|
339
325
|
}
|
|
340
326
|
|
|
341
327
|
// function replaces original user dynamic function with additional logic to memoize arguments
|
|
342
|
-
jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle
|
|
328
|
+
jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle) {
|
|
343
329
|
auto unistylesRuntime = this->_unistylesRuntime;
|
|
344
330
|
|
|
345
331
|
return jsi::Function::createFromHostFunction(
|
|
346
332
|
rt,
|
|
347
333
|
jsi::PropNameID::forUtf8(rt, unistyle->styleKey),
|
|
348
334
|
1,
|
|
349
|
-
[this, unistylesRuntime, unistyle
|
|
335
|
+
[this, unistylesRuntime, unistyle](jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
|
|
350
336
|
auto thisObject = thisVal.asObject(rt);
|
|
351
337
|
auto parser = parser::Parser(unistylesRuntime);
|
|
352
338
|
|
|
@@ -356,25 +342,33 @@ jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unist
|
|
|
356
342
|
// memoize metadata to call it later
|
|
357
343
|
auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
|
|
358
344
|
|
|
359
|
-
unistyleFn->dynamicFunctionMetadata = core::DynamicFunctionMetadata{
|
|
360
|
-
count,
|
|
361
|
-
this->parseDynamicFunctionArguments(rt, count, args)
|
|
362
|
-
};
|
|
363
|
-
|
|
364
345
|
unistyleFn->unprocessedValue = jsi::Value(rt, result).asObject(rt);
|
|
346
|
+
|
|
347
|
+
jsi::Value rawVariants = thisObject.hasProperty(rt, helpers::STYLE_VARIANTS.c_str())
|
|
348
|
+
? thisObject.getProperty(rt, helpers::STYLE_VARIANTS.c_str())
|
|
349
|
+
: jsi::Value::undefined();
|
|
350
|
+
std::optional<Variants> variants = rawVariants.isUndefined()
|
|
351
|
+
? std::nullopt
|
|
352
|
+
: std::optional<Variants>(helpers::variantsToPairs(rt, rawVariants.asObject(rt)));
|
|
353
|
+
|
|
365
354
|
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
|
|
366
355
|
unistyleFn->seal();
|
|
367
356
|
|
|
368
|
-
|
|
357
|
+
// include dependencies for createUnistylesComponent
|
|
358
|
+
jsi::Object style = jsi::Value(rt, unistyleFn->parsedStyle.value()).asObject(rt);
|
|
359
|
+
|
|
360
|
+
helpers::defineHiddenProperty(rt, style, helpers::STYLE_DEPENDENCIES, helpers::dependenciesToJSIArray(rt, unistyle->dependencies));
|
|
361
|
+
|
|
362
|
+
return style;
|
|
369
363
|
});
|
|
370
364
|
}
|
|
371
365
|
|
|
372
366
|
// function convert babel generated dependencies to C++ dependencies
|
|
373
367
|
std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies) {
|
|
374
|
-
helpers::assertThat(rt, dependencies.isArray(rt), "
|
|
368
|
+
helpers::assertThat(rt, dependencies.isArray(rt), "Unistyles: Babel transform is invalid - unexpected type for dependencies.");
|
|
375
369
|
|
|
376
370
|
std::vector<UnistyleDependency> parsedDependencies{};
|
|
377
|
-
|
|
371
|
+
|
|
378
372
|
parsedDependencies.reserve(5);
|
|
379
373
|
|
|
380
374
|
helpers::iterateJSIArray(rt, dependencies.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
@@ -388,12 +382,8 @@ std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &
|
|
|
388
382
|
|
|
389
383
|
// eg. [{ scale: 2 }, { translateX: 100 }]
|
|
390
384
|
jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
|
|
391
|
-
if (!obj.isArray(rt)) {
|
|
392
|
-
return jsi::Value::undefined();
|
|
393
|
-
}
|
|
394
|
-
|
|
395
385
|
std::vector<jsi::Value> parsedTransforms{};
|
|
396
|
-
|
|
386
|
+
|
|
397
387
|
parsedTransforms.reserve(2);
|
|
398
388
|
|
|
399
389
|
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
@@ -421,6 +411,67 @@ jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared un
|
|
|
421
411
|
return result;
|
|
422
412
|
}
|
|
423
413
|
|
|
414
|
+
// eg [{offsetX: 5, offsetY: 5, blurRadius: 5, spreadDistance: 0, color: ‘rgba(255, 0, 0, 0.5)’}]
|
|
415
|
+
jsi::Value parser::Parser::parseBoxShadow(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
|
|
416
|
+
std::vector<jsi::Value> parsedBoxShadows{};
|
|
417
|
+
|
|
418
|
+
parsedBoxShadows.reserve(2);
|
|
419
|
+
|
|
420
|
+
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
421
|
+
if (!value.isObject()) {
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
|
|
426
|
+
|
|
427
|
+
parsedBoxShadows.emplace_back(std::move(parsedResult));
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
// create jsi::Array result with correct box shadows
|
|
431
|
+
jsi::Array result = jsi::Array(rt, parsedBoxShadows.size());
|
|
432
|
+
|
|
433
|
+
for (size_t i = 0; i < parsedBoxShadows.size(); i++) {
|
|
434
|
+
result.setValueAtIndex(rt, i, parsedBoxShadows[i]);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
return result;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// eg. [{ brightness: 0.5 }, { opacity: 0.25 }]
|
|
441
|
+
jsi::Value parser::Parser::parseFilters(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
|
|
442
|
+
std::vector<jsi::Value> parsedFilters{};
|
|
443
|
+
|
|
444
|
+
parsedFilters.reserve(2);
|
|
445
|
+
|
|
446
|
+
helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
|
|
447
|
+
if (!value.isObject()) {
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
|
|
452
|
+
|
|
453
|
+
// take only one filter per object
|
|
454
|
+
jsi::Array propertyNames = parsedResult.asObject(rt).getPropertyNames(rt);
|
|
455
|
+
size_t length = propertyNames.size(rt);
|
|
456
|
+
|
|
457
|
+
// ignore no filters
|
|
458
|
+
if (length == 0) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
parsedFilters.emplace_back(std::move(parsedResult));
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
// create jsi::Array result with correct filters
|
|
466
|
+
jsi::Array result = jsi::Array(rt, parsedFilters.size());
|
|
467
|
+
|
|
468
|
+
for (size_t i = 0; i < parsedFilters.size(); i++) {
|
|
469
|
+
result.setValueAtIndex(rt, i, parsedFilters[i]);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
return result;
|
|
473
|
+
}
|
|
474
|
+
|
|
424
475
|
// find value based on breakpoints and mq
|
|
425
476
|
jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
|
|
426
477
|
auto& registry = core::UnistylesRegistry::get();
|
|
@@ -442,7 +493,7 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
|
|
|
442
493
|
auto propertyName = propertyNames.getValueAtIndex(rt, i).asString(rt).utf8(rt);
|
|
443
494
|
auto propertyValue = obj.getProperty(rt, propertyName.c_str());
|
|
444
495
|
auto mq = core::UnistylesMQ{propertyName};
|
|
445
|
-
|
|
496
|
+
|
|
446
497
|
if (mq.isMQ()) {
|
|
447
498
|
unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
|
|
448
499
|
}
|
|
@@ -455,11 +506,11 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
|
|
|
455
506
|
|
|
456
507
|
// check orientation breakpoints if user didn't register own breakpoint
|
|
457
508
|
bool hasOrientationBreakpoint = obj.hasProperty(rt, currentOrientation);
|
|
458
|
-
|
|
509
|
+
|
|
459
510
|
if (hasOrientationBreakpoint) {
|
|
460
511
|
unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
|
|
461
512
|
}
|
|
462
|
-
|
|
513
|
+
|
|
463
514
|
if (!hasBreakpoints && hasOrientationBreakpoint) {
|
|
464
515
|
return obj.getProperty(rt, currentOrientation);
|
|
465
516
|
}
|
|
@@ -467,7 +518,7 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
|
|
|
467
518
|
if (!currentBreakpoint.has_value()) {
|
|
468
519
|
return jsi::Value::undefined();
|
|
469
520
|
}
|
|
470
|
-
|
|
521
|
+
|
|
471
522
|
unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
|
|
472
523
|
|
|
473
524
|
// if you're still here it means that there is no
|
|
@@ -513,7 +564,7 @@ jsi::Object parser::Parser::parseVariants(jsi::Runtime& rt, Unistyle::Shared uni
|
|
|
513
564
|
: std::nullopt;
|
|
514
565
|
|
|
515
566
|
// we've got a match, but we need to check some condition
|
|
516
|
-
auto styles = this->getStylesForVariant(rt, groupValue.asObject(rt), selectedVariant);
|
|
567
|
+
auto styles = this->getStylesForVariant(rt, groupName, groupValue.asObject(rt), selectedVariant, variants);
|
|
517
568
|
|
|
518
569
|
// oops, invalid variant
|
|
519
570
|
if (styles.isUndefined() || !styles.isObject()) {
|
|
@@ -529,13 +580,19 @@ jsi::Object parser::Parser::parseVariants(jsi::Runtime& rt, Unistyle::Shared uni
|
|
|
529
580
|
}
|
|
530
581
|
|
|
531
582
|
// helpers function to support 'default' variants
|
|
532
|
-
jsi::Value parser::Parser::getStylesForVariant(jsi::Runtime& rt, jsi::Object&& groupValue, std::optional<std::string> selectedVariant) {
|
|
583
|
+
jsi::Value parser::Parser::getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants) {
|
|
533
584
|
// if there is no value, let's try 'default'
|
|
534
585
|
auto selectedVariantKey = selectedVariant.has_value()
|
|
535
586
|
? selectedVariant.value().c_str()
|
|
536
587
|
: "default";
|
|
588
|
+
auto hasKey = groupValue.hasProperty(rt, selectedVariantKey);
|
|
537
589
|
|
|
538
|
-
if (
|
|
590
|
+
if (!hasKey || !selectedVariant.has_value()) {
|
|
591
|
+
// for no key, add 'default' selection to variants map
|
|
592
|
+
variants.emplace_back(groupName, selectedVariantKey);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
if (hasKey) {
|
|
539
596
|
return groupValue.getProperty(rt, selectedVariantKey);
|
|
540
597
|
}
|
|
541
598
|
|
|
@@ -575,28 +632,20 @@ bool parser::Parser::shouldApplyCompoundVariants(jsi::Runtime& rt, const Variant
|
|
|
575
632
|
return false;
|
|
576
633
|
}
|
|
577
634
|
|
|
578
|
-
jsi::Array propertyNames = compoundVariant.getPropertyNames(rt);
|
|
579
|
-
size_t length = propertyNames.size(rt);
|
|
580
|
-
size_t allConditions = compoundVariant.hasProperty(rt, "styles")
|
|
581
|
-
? length - 1
|
|
582
|
-
: length;
|
|
583
|
-
|
|
584
|
-
if (allConditions != variants.size()) {
|
|
585
|
-
return false;
|
|
586
|
-
}
|
|
587
|
-
|
|
588
635
|
for (auto it = variants.cbegin(); it != variants.cend(); ++it) {
|
|
589
636
|
auto variantKey = it->first;
|
|
590
637
|
auto variantValue = it->second;
|
|
591
638
|
|
|
592
639
|
if (!compoundVariant.hasProperty(rt, variantKey.c_str())) {
|
|
593
|
-
|
|
640
|
+
continue;
|
|
594
641
|
}
|
|
595
642
|
|
|
596
643
|
auto property = compoundVariant.getProperty(rt, variantKey.c_str());
|
|
597
644
|
auto propertyName = property.isBool()
|
|
598
645
|
? (property.asBool() ? "true" : "false")
|
|
599
|
-
: property.
|
|
646
|
+
: property.isString()
|
|
647
|
+
? property.asString(rt).utf8(rt)
|
|
648
|
+
: "";
|
|
600
649
|
|
|
601
650
|
if (propertyName != variantValue) {
|
|
602
651
|
return false;
|
|
@@ -674,41 +723,25 @@ jsi::Value parser::Parser::parseSecondLevel(jsi::Runtime &rt, Unistyle::Shared u
|
|
|
674
723
|
return parsedStyle;
|
|
675
724
|
}
|
|
676
725
|
|
|
677
|
-
//
|
|
678
|
-
|
|
679
|
-
Variants pairs{};
|
|
680
|
-
|
|
681
|
-
helpers::enumerateJSIObject(rt, variants, [&](const std::string& variantName, jsi::Value& variantValue){
|
|
682
|
-
if (variantValue.isUndefined() || variantValue.isNull()) {
|
|
683
|
-
return;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
if (variantValue.isBool()) {
|
|
687
|
-
pairs.emplace_back(std::make_pair(variantName, variantValue.asBool() ? "true" : "false"));
|
|
688
|
-
|
|
689
|
-
return;
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
if (variantValue.isString()) {
|
|
693
|
-
pairs.emplace_back(std::make_pair(variantName, variantValue.asString(rt).utf8(rt)));
|
|
694
|
-
}
|
|
695
|
-
});
|
|
696
|
-
|
|
697
|
-
return pairs;
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
// convert jsi::Object to RawValue with int colors
|
|
701
|
-
RawProps parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, jsi::Object& styles) {
|
|
726
|
+
// convert unistyles to RawValue with int colors
|
|
727
|
+
RawProps parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles) {
|
|
702
728
|
jsi::Object convertedStyles = jsi::Object(rt);
|
|
703
729
|
auto& state = core::UnistylesRegistry::get().getState(rt);
|
|
704
730
|
|
|
705
|
-
|
|
706
|
-
if (
|
|
707
|
-
|
|
731
|
+
for (const auto& unistyleData : unistyles) {
|
|
732
|
+
if (!unistyleData->parsedStyle.has_value()) {
|
|
733
|
+
// todo this something happens with large dataset, debug it
|
|
734
|
+
continue;
|
|
708
735
|
}
|
|
709
736
|
|
|
710
|
-
|
|
711
|
-
|
|
737
|
+
helpers::enumerateJSIObject(rt, unistyleData->parsedStyle.value(), [&](const std::string& propertyName, jsi::Value& propertyValue){
|
|
738
|
+
if (this->isColor(propertyName)) {
|
|
739
|
+
return convertedStyles.setProperty(rt, propertyName.c_str(), jsi::Value(state.parseColor(propertyValue)));
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
convertedStyles.setProperty(rt, propertyName.c_str(), propertyValue);
|
|
743
|
+
});
|
|
744
|
+
}
|
|
712
745
|
|
|
713
746
|
return RawProps(rt, std::move(convertedStyles));
|
|
714
747
|
}
|
package/cxx/parser/Parser.h
CHANGED
|
@@ -17,36 +17,32 @@ using namespace facebook;
|
|
|
17
17
|
using namespace margelo::nitro::unistyles::core;
|
|
18
18
|
|
|
19
19
|
using Variants = std::vector<std::pair<std::string, std::string>>;
|
|
20
|
-
using DependencyMap = std::unordered_map<
|
|
21
|
-
std::shared_ptr<core::StyleSheet>,
|
|
22
|
-
std::unordered_map<const ShadowNodeFamily*, std::vector<core::Unistyle::Shared>>
|
|
23
|
-
>;
|
|
24
20
|
|
|
25
21
|
struct Parser {
|
|
26
22
|
Parser(std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime): _unistylesRuntime{unistylesRuntime} {}
|
|
27
23
|
|
|
28
24
|
void buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
|
29
25
|
void parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
|
30
|
-
|
|
31
|
-
void
|
|
32
|
-
void
|
|
33
|
-
shadow::ShadowLeafUpdates dependencyMapToShadowLeafUpdates(DependencyMap& dependencyMap);
|
|
26
|
+
void rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Variants& variants);
|
|
27
|
+
void rebuildUnistylesInDependencyMap(jsi::Runtime& rt, core::DependencyMap& dependencyMap, std::vector<std::shared_ptr<core::StyleSheet>> styleSheets);
|
|
28
|
+
void rebuildShadowLeafUpdates(core::DependencyMap& dependencyMap);
|
|
34
29
|
|
|
35
30
|
private:
|
|
36
|
-
void rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle);
|
|
31
|
+
void rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle, const Variants& variants, std::optional<std::vector<folly::dynamic>>);
|
|
37
32
|
jsi::Object unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
|
38
|
-
jsi::Object parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants
|
|
33
|
+
jsi::Object parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<Variants> variants);
|
|
39
34
|
jsi::Value parseSecondLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Value& nestedObject);
|
|
40
|
-
jsi::Function createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle
|
|
41
|
-
std::vector<folly::dynamic> parseDynamicFunctionArguments(jsi::Runtime& rt, size_t count, const jsi::Value* arguments);
|
|
35
|
+
jsi::Function createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle);
|
|
42
36
|
std::vector<UnistyleDependency> parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies);
|
|
43
37
|
jsi::Value parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
38
|
+
jsi::Value parseBoxShadow(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
39
|
+
jsi::Value parseFilters(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
44
40
|
jsi::Value getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
45
41
|
jsi::Object parseVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
|
|
46
|
-
jsi::Value getStylesForVariant(jsi::Runtime& rt, jsi::Object&& groupValue, std::optional<std::string> selectedVariant);
|
|
42
|
+
jsi::Value getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants);
|
|
47
43
|
jsi::Object parseCompoundVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
|
|
48
44
|
bool shouldApplyCompoundVariants(jsi::Runtime& rt, const Variants& variants, jsi::Object& compoundVariant);
|
|
49
|
-
RawProps parseStylesToShadowTreeStyles(jsi::Runtime& rt,
|
|
45
|
+
RawProps parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles);
|
|
50
46
|
bool isColor(const std::string& propertyName);
|
|
51
47
|
|
|
52
48
|
std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
|