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
|
@@ -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,26 @@
|
|
|
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
|
+
// React Native commit did mount
|
|
22
|
+
auto& registry = core::UnistylesRegistry::get();
|
|
23
|
+
|
|
24
|
+
// so, resume Unistyles commits
|
|
25
|
+
registry.trafficController.resumeUnistylesTraffic();
|
|
26
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
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) : _uiManager{uiManager} {
|
|
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
|
+
};
|
|
23
|
+
|
|
24
|
+
}
|
|
@@ -5,15 +5,10 @@ using namespace margelo::nitro::unistyles;
|
|
|
5
5
|
using namespace facebook;
|
|
6
6
|
using namespace facebook::react;
|
|
7
7
|
|
|
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) {
|
|
8
|
+
void core::UnistylesRegistry::registerTheme(jsi::Runtime& rt, std::string name, jsi::Value& theme) {
|
|
14
9
|
auto& state = this->getState(rt);
|
|
15
10
|
|
|
16
|
-
state._jsThemes.emplace(name,
|
|
11
|
+
state._jsThemes.emplace(name, std::move(theme));
|
|
17
12
|
state._registeredThemeNames.push_back(name);
|
|
18
13
|
}
|
|
19
14
|
|
|
@@ -62,115 +57,117 @@ void core::UnistylesRegistry::createState(jsi::Runtime& rt) {
|
|
|
62
57
|
void core::UnistylesRegistry::updateTheme(jsi::Runtime& rt, std::string& themeName, jsi::Function&& callback) {
|
|
63
58
|
auto& state = this->getState(rt);
|
|
64
59
|
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));
|
|
60
|
+
|
|
61
|
+
helpers::assertThat(rt, it != state._jsThemes.end(), "Unistyles: You're trying to update theme '" + themeName + "' but it wasn't registered.");
|
|
62
|
+
|
|
63
|
+
auto result = callback.call(rt, it->second);
|
|
64
|
+
|
|
65
|
+
helpers::assertThat(rt, result.isObject(), "Unistyles: Returned theme is not an object. Please check your updateTheme function.");
|
|
66
|
+
|
|
67
|
+
it->second = result.asObject(rt);
|
|
77
68
|
}
|
|
78
69
|
|
|
79
|
-
void core::UnistylesRegistry::linkShadowNodeWithUnistyle(
|
|
80
|
-
|
|
81
|
-
|
|
70
|
+
void core::UnistylesRegistry::linkShadowNodeWithUnistyle(
|
|
71
|
+
jsi::Runtime& rt,
|
|
72
|
+
const ShadowNodeFamily* shadowNodeFamily,
|
|
73
|
+
std::vector<core::Unistyle::Shared>& unistyles,
|
|
74
|
+
Variants& variants,
|
|
75
|
+
std::vector<folly::dynamic>& arguments
|
|
76
|
+
) {
|
|
77
|
+
if (!this->_shadowRegistry[&rt].contains(shadowNodeFamily)) {
|
|
78
|
+
this->_shadowRegistry[&rt][shadowNodeFamily] = {};
|
|
82
79
|
}
|
|
83
|
-
|
|
84
|
-
this
|
|
80
|
+
|
|
81
|
+
std::for_each(unistyles.begin(), unistyles.end(), [&, this](Unistyle::Shared unistyle){
|
|
82
|
+
this->_shadowRegistry[&rt][shadowNodeFamily].emplace_back(std::make_shared<UnistyleData>(unistyle, variants, arguments));
|
|
83
|
+
});
|
|
85
84
|
}
|
|
86
85
|
|
|
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
|
-
}
|
|
86
|
+
void core::UnistylesRegistry::unlinkShadowNodeWithUnistyles(jsi::Runtime& rt, const ShadowNodeFamily* shadowNodeFamily) {
|
|
87
|
+
this->_shadowRegistry[&rt].erase(shadowNodeFamily);
|
|
94
88
|
}
|
|
95
89
|
|
|
96
|
-
|
|
97
|
-
this->_styleSheetRegistry
|
|
90
|
+
core::Unistyle::Shared core::UnistylesRegistry::findUnistyleFromKey(jsi::Runtime& rt, std::string styleKey, int tag) {
|
|
91
|
+
auto targetStyleSheet = this->_styleSheetRegistry[&rt][tag];
|
|
92
|
+
|
|
93
|
+
if (targetStyleSheet == nullptr) {
|
|
94
|
+
return nullptr;
|
|
95
|
+
}
|
|
98
96
|
|
|
99
|
-
return
|
|
97
|
+
return targetStyleSheet.get()->unistyles[styleKey];
|
|
100
98
|
}
|
|
101
99
|
|
|
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;
|
|
100
|
+
std::shared_ptr<core::StyleSheet> core::UnistylesRegistry::addStyleSheet(jsi::Runtime& rt, int unid, core::StyleSheetType type, jsi::Object&& rawValue) {
|
|
101
|
+
this->_styleSheetRegistry[&rt][unid] = std::make_shared<core::StyleSheet>(unid, type, std::move(rawValue));
|
|
102
|
+
|
|
103
|
+
return this->_styleSheetRegistry[&rt][unid];
|
|
116
104
|
}
|
|
117
|
-
|
|
118
|
-
DependencyMap core::UnistylesRegistry::buildDependencyMap(std::vector<UnistyleDependency>& deps) {
|
|
105
|
+
|
|
106
|
+
core::DependencyMap core::UnistylesRegistry::buildDependencyMap(jsi::Runtime& rt, std::vector<UnistyleDependency>& deps) {
|
|
119
107
|
DependencyMap dependencyMap;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// that depends on something affected
|
|
108
|
+
std::set<UnistyleDependency> uniqueDependencies(deps.begin(), deps.end());
|
|
109
|
+
|
|
110
|
+
for (const auto& [family, unistyles] : this->_shadowRegistry[&rt]) {
|
|
111
|
+
for (const auto& unistyleData : unistyles) {
|
|
125
112
|
bool hasAnyOfDependencies = std::any_of(
|
|
126
|
-
unistyle->dependencies.begin(),
|
|
127
|
-
unistyle->dependencies.end(),
|
|
128
|
-
[&
|
|
129
|
-
return std::find(
|
|
113
|
+
unistyleData->unistyle->dependencies.begin(),
|
|
114
|
+
unistyleData->unistyle->dependencies.end(),
|
|
115
|
+
[&uniqueDependencies](UnistyleDependency dep) {
|
|
116
|
+
return std::find(uniqueDependencies.begin(), uniqueDependencies.end(), dep) != uniqueDependencies.end();
|
|
130
117
|
}
|
|
131
118
|
);
|
|
132
|
-
|
|
119
|
+
|
|
133
120
|
if (!hasAnyOfDependencies) {
|
|
134
121
|
continue;
|
|
135
122
|
}
|
|
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
|
-
}
|
|
123
|
+
|
|
124
|
+
// we need to take in count all unistyles from the shadowNode
|
|
125
|
+
// as user might be using spreads and not all of them may have dependencies
|
|
126
|
+
for (const auto& unistyleData : unistyles) {
|
|
127
|
+
dependencyMap[family].emplace_back(unistyleData);
|
|
148
128
|
}
|
|
129
|
+
|
|
130
|
+
break;
|
|
149
131
|
}
|
|
150
132
|
}
|
|
151
133
|
|
|
152
134
|
return dependencyMap;
|
|
153
135
|
}
|
|
154
136
|
|
|
155
|
-
DependencyMap core::UnistylesRegistry::buildDependencyMap() {
|
|
137
|
+
core::DependencyMap core::UnistylesRegistry::buildDependencyMap(jsi::Runtime& rt) {
|
|
156
138
|
DependencyMap dependencyMap;
|
|
157
|
-
|
|
158
|
-
for (const auto&
|
|
159
|
-
for (const auto&
|
|
160
|
-
|
|
161
|
-
const auto& [family, unistyles] = pair;
|
|
162
|
-
|
|
163
|
-
for (const auto& shadowUnistyle : unistyles) {
|
|
164
|
-
if (unistyle != shadowUnistyle) {
|
|
165
|
-
continue;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// make sure to use base Unistyle class
|
|
169
|
-
dependencyMap[styleSheet][family].push_back(shadowUnistyle);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
139
|
+
|
|
140
|
+
for (const auto& [family, unistyles] : this->_shadowRegistry[&rt]) {
|
|
141
|
+
for (const auto& unistyleData : unistyles) {
|
|
142
|
+
dependencyMap[family].emplace_back(unistyleData);
|
|
172
143
|
}
|
|
173
144
|
}
|
|
174
145
|
|
|
175
146
|
return dependencyMap;
|
|
176
147
|
}
|
|
148
|
+
|
|
149
|
+
std::vector<std::shared_ptr<core::StyleSheet>> core::UnistylesRegistry::getStyleSheetsToRefresh(jsi::Runtime& rt, bool themeDidChange, bool runtimeDidChange) {
|
|
150
|
+
std::vector<std::shared_ptr<core::StyleSheet>> stylesheetsToRefresh{};
|
|
151
|
+
|
|
152
|
+
if (!themeDidChange && !runtimeDidChange) {
|
|
153
|
+
return stylesheetsToRefresh;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
auto& styleSheets = this->_styleSheetRegistry[&rt];
|
|
157
|
+
|
|
158
|
+
std::for_each(styleSheets.begin(), styleSheets.end(), [&](std::pair<int, std::shared_ptr<core::StyleSheet>> pair){
|
|
159
|
+
auto& [_, styleSheet] = pair;
|
|
160
|
+
|
|
161
|
+
if (styleSheet->type == StyleSheetType::ThemableWithMiniRuntime && (themeDidChange || runtimeDidChange)) {
|
|
162
|
+
stylesheetsToRefresh.emplace_back(styleSheet);
|
|
163
|
+
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (styleSheet->type == StyleSheetType::Themable && themeDidChange) {
|
|
168
|
+
stylesheetsToRefresh.emplace_back(styleSheet);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
return stylesheetsToRefresh;
|
|
173
|
+
}
|
|
@@ -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
|
+
DependencyMap buildDependencyMap(jsi::Runtime& rt);
|
|
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
|
}
|