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