react-native-unistyles 3.0.0-alpha.4 → 3.0.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/Unistyles.podspec +1 -1
- package/android/CMakeLists.txt +22 -45
- package/android/build.gradle +16 -5
- package/android/src/main/cxx/NativeUnistylesModule.cpp +71 -0
- package/android/src/main/cxx/NativeUnistylesModule.h +42 -0
- package/android/src/main/cxx/cpp-adapter.cpp +8 -86
- package/android/src/main/java/com/unistyles/Equatable.kt +61 -0
- package/android/src/main/java/com/unistyles/NativePlatform+android.kt +294 -0
- package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +152 -0
- package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +59 -0
- package/android/src/main/java/com/unistyles/UnistylesModule.kt +51 -0
- package/android/src/main/java/com/unistyles/UnistylesPackage.kt +16 -14
- package/cxx/NativePlatform.h +11 -0
- package/cxx/common/Constants.h +4 -0
- package/cxx/common/Helpers.h +140 -5
- package/cxx/core/HostStyle.cpp +10 -6
- package/cxx/core/HostStyle.h +4 -0
- package/cxx/core/StyleSheet.h +0 -2
- package/cxx/core/StyleSheetRegistry.cpp +9 -17
- package/cxx/core/StyleSheetRegistry.h +3 -4
- package/cxx/core/Unistyle.h +8 -11
- package/cxx/core/UnistyleData.h +24 -0
- package/cxx/core/UnistyleWrapper.h +108 -13
- package/cxx/core/UnistylesCommitHook.cpp +14 -15
- package/cxx/core/UnistylesCommitHook.h +6 -11
- package/cxx/core/UnistylesCommitShadowNode.h +13 -0
- package/cxx/core/UnistylesMountHook.cpp +28 -0
- package/cxx/core/UnistylesMountHook.h +27 -0
- package/cxx/core/UnistylesRegistry.cpp +123 -83
- package/cxx/core/UnistylesRegistry.h +16 -14
- package/cxx/core/UnistylesState.cpp +29 -8
- package/cxx/core/UnistylesState.h +5 -2
- package/cxx/hybridObjects/HybridNavigationBar.cpp +0 -4
- package/cxx/hybridObjects/HybridNavigationBar.h +3 -4
- package/cxx/hybridObjects/HybridShadowRegistry.cpp +19 -11
- package/cxx/hybridObjects/HybridStatusBar.cpp +0 -4
- package/cxx/hybridObjects/HybridStatusBar.h +3 -4
- package/cxx/hybridObjects/HybridStyleSheet.cpp +154 -23
- package/cxx/hybridObjects/HybridStyleSheet.h +27 -5
- package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +96 -14
- package/cxx/hybridObjects/HybridUnistylesRuntime.h +19 -3
- package/cxx/parser/Parser.cpp +249 -177
- package/cxx/parser/Parser.h +12 -15
- package/cxx/shadowTree/ShadowLeafUpdate.h +3 -1
- package/cxx/shadowTree/ShadowTrafficController.h +71 -0
- package/cxx/shadowTree/ShadowTreeManager.cpp +28 -19
- package/cxx/shadowTree/ShadowTreeManager.h +3 -2
- package/ios/Equatable.swift +2 -1
- package/ios/Extensions.swift +3 -1
- package/ios/NativePlatform+ios.swift +34 -9
- package/ios/NativePlatform+keyboard.swift +83 -0
- package/ios/NativePlatformListener+ios.swift +36 -24
- package/ios/Unistyles.h +1 -0
- package/ios/UnistylesModuleOnLoad.h +8 -2
- package/ios/UnistylesModuleOnLoad.mm +9 -1
- package/lib/commonjs/components/Display.js +18 -0
- package/lib/commonjs/components/Display.js.map +1 -0
- package/lib/commonjs/components/Hide.js +18 -0
- package/lib/commonjs/components/Hide.js.map +1 -0
- package/lib/commonjs/components/index.js +20 -0
- package/lib/commonjs/components/index.js.map +1 -0
- package/lib/commonjs/components/useMedia.js +59 -0
- package/lib/commonjs/components/useMedia.js.map +1 -0
- package/lib/commonjs/components/useMedia.web.js +43 -0
- package/lib/commonjs/components/useMedia.web.js.map +1 -0
- package/lib/commonjs/core/createUnistylesComponent.js +79 -0
- package/lib/commonjs/core/createUnistylesComponent.js.map +1 -0
- package/lib/commonjs/core/createUnistylesComponent.native.js +82 -0
- package/lib/commonjs/core/createUnistylesComponent.native.js.map +1 -0
- package/lib/commonjs/core/index.js +13 -0
- package/lib/commonjs/core/index.js.map +1 -0
- package/lib/commonjs/index.js +21 -11
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/mq.js +25 -12
- package/lib/commonjs/mq.js.map +1 -1
- package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js +1 -0
- package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
- package/lib/commonjs/specs/NavigtionBar/index.js +0 -15
- package/lib/commonjs/specs/NavigtionBar/index.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/index.js +10 -6
- package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/commonjs/specs/StatusBar/index.js +0 -5
- package/lib/commonjs/specs/StatusBar/index.js.map +1 -1
- package/lib/commonjs/specs/StyleSheet/index.js +1 -0
- package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
- package/lib/commonjs/specs/UnistylesRuntime/index.js +1 -3
- package/lib/commonjs/specs/UnistylesRuntime/index.js.map +1 -1
- package/lib/commonjs/specs/index.js +7 -0
- package/lib/commonjs/specs/index.js.map +1 -1
- package/lib/commonjs/specs/index.web.js +1 -1
- package/lib/commonjs/types/stylesheet.js.map +1 -1
- package/lib/commonjs/utils.js +26 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/commonjs/web/convert/index.js +79 -0
- package/lib/commonjs/web/convert/index.js.map +1 -0
- package/lib/commonjs/web/convert/module.d.js +2 -0
- package/lib/commonjs/web/convert/module.d.js.map +1 -0
- package/lib/commonjs/web/convert/object/boxShadow.js +59 -0
- package/lib/commonjs/web/convert/object/boxShadow.js.map +1 -0
- package/lib/commonjs/web/convert/object/filter.js +42 -0
- package/lib/commonjs/web/convert/object/filter.js.map +1 -0
- package/lib/commonjs/web/convert/object/index.js +39 -0
- package/lib/commonjs/web/convert/object/index.js.map +1 -0
- package/lib/commonjs/web/convert/object/objectStyle.js +56 -0
- package/lib/commonjs/web/convert/object/objectStyle.js.map +1 -0
- package/lib/commonjs/web/convert/object/transform.js +27 -0
- package/lib/commonjs/web/convert/object/transform.js.map +1 -0
- package/lib/commonjs/web/convert/pseudo.js +10 -0
- package/lib/commonjs/web/convert/pseudo.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/boxShadow.js +62 -0
- package/lib/commonjs/web/convert/shadow/boxShadow.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/getShadowBreakpoints.js +38 -0
- package/lib/commonjs/web/convert/shadow/getShadowBreakpoints.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/index.js +28 -0
- package/lib/commonjs/web/convert/shadow/index.js.map +1 -0
- package/lib/commonjs/web/convert/shadow/textShadow.js +59 -0
- package/lib/commonjs/web/convert/shadow/textShadow.js.map +1 -0
- package/lib/commonjs/web/convert/style.js +93 -0
- package/lib/commonjs/web/convert/style.js.map +1 -0
- package/lib/commonjs/web/convert/types.js +9 -0
- package/lib/commonjs/web/convert/types.js.map +1 -0
- package/lib/commonjs/web/convert/utils.js +59 -0
- package/lib/commonjs/web/convert/utils.js.map +1 -0
- package/lib/commonjs/web/create.js +49 -0
- package/lib/commonjs/web/create.js.map +1 -0
- package/lib/commonjs/web/index.js +60 -0
- package/lib/commonjs/web/index.js.map +1 -0
- package/lib/commonjs/web/listener.js +61 -0
- package/lib/commonjs/web/listener.js.map +1 -0
- package/lib/commonjs/web/mock.js +27 -0
- package/lib/commonjs/web/mock.js.map +1 -0
- package/lib/commonjs/web/registry.js +172 -0
- package/lib/commonjs/web/registry.js.map +1 -0
- package/lib/commonjs/web/runtime.js +173 -0
- package/lib/commonjs/web/runtime.js.map +1 -0
- package/lib/commonjs/web/shadowRegistry.js +142 -0
- package/lib/commonjs/web/shadowRegistry.js.map +1 -0
- package/lib/commonjs/web/state.js +73 -0
- package/lib/commonjs/web/state.js.map +1 -0
- package/lib/commonjs/web/utils/common.js +39 -0
- package/lib/commonjs/web/utils/common.js.map +1 -0
- package/lib/commonjs/web/utils/index.js +28 -0
- package/lib/commonjs/web/utils/index.js.map +1 -0
- package/lib/commonjs/web/utils/unistyle.js +85 -0
- package/lib/commonjs/web/utils/unistyle.js.map +1 -0
- package/lib/commonjs/web/variants/getVariants.js +39 -0
- package/lib/commonjs/web/variants/getVariants.js.map +1 -0
- package/lib/commonjs/web/variants/index.js +28 -0
- package/lib/commonjs/web/variants/index.js.map +1 -0
- package/lib/commonjs/web/variants/useVariants.js +59 -0
- package/lib/commonjs/web/variants/useVariants.js.map +1 -0
- package/lib/module/components/Display.js +13 -0
- package/lib/module/components/Display.js.map +1 -0
- package/lib/module/components/Hide.js +13 -0
- package/lib/module/components/Hide.js.map +1 -0
- package/lib/module/components/index.js +5 -0
- package/lib/module/components/index.js.map +1 -0
- package/lib/module/components/useMedia.js +54 -0
- package/lib/module/components/useMedia.js.map +1 -0
- package/lib/module/components/useMedia.web.js +38 -0
- package/lib/module/components/useMedia.web.js.map +1 -0
- package/lib/module/core/createUnistylesComponent.js +72 -0
- package/lib/module/core/createUnistylesComponent.js.map +1 -0
- package/lib/module/core/createUnistylesComponent.native.js +75 -0
- package/lib/module/core/createUnistylesComponent.native.js.map +1 -0
- package/lib/module/core/index.js +4 -0
- package/lib/module/core/index.js.map +1 -0
- package/lib/module/index.js +2 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/mq.js +21 -11
- package/lib/module/mq.js.map +1 -1
- package/lib/module/specs/NativePlatform/NativePlatform.nitro.js +1 -0
- package/lib/module/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
- package/lib/module/specs/NavigtionBar/index.js +0 -10
- package/lib/module/specs/NavigtionBar/index.js.map +1 -1
- package/lib/module/specs/ShadowRegistry/index.js +10 -6
- package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/module/specs/StatusBar/index.js +1 -6
- package/lib/module/specs/StatusBar/index.js.map +1 -1
- package/lib/module/specs/StyleSheet/index.js +1 -0
- package/lib/module/specs/StyleSheet/index.js.map +1 -1
- package/lib/module/specs/UnistylesRuntime/index.js +1 -3
- package/lib/module/specs/UnistylesRuntime/index.js.map +1 -1
- package/lib/module/specs/index.js +2 -1
- package/lib/module/specs/index.js.map +1 -1
- package/lib/module/specs/index.web.js +1 -1
- package/lib/module/specs/index.web.js.map +1 -1
- package/lib/module/types/stylesheet.js.map +1 -1
- package/lib/module/utils.js +21 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/module/web/convert/index.js +74 -0
- package/lib/module/web/convert/index.js.map +1 -0
- package/lib/module/web/convert/module.d.js +2 -0
- package/lib/module/web/convert/module.d.js.map +1 -0
- package/lib/module/web/convert/object/boxShadow.js +54 -0
- package/lib/module/web/convert/object/boxShadow.js.map +1 -0
- package/lib/module/web/convert/object/filter.js +37 -0
- package/lib/module/web/convert/object/filter.js.map +1 -0
- package/lib/module/web/convert/object/index.js +6 -0
- package/lib/module/web/convert/object/index.js.map +1 -0
- package/lib/module/web/convert/object/objectStyle.js +51 -0
- package/lib/module/web/convert/object/objectStyle.js.map +1 -0
- package/lib/module/web/convert/object/transform.js +22 -0
- package/lib/module/web/convert/object/transform.js.map +1 -0
- package/lib/module/web/convert/pseudo.js +5 -0
- package/lib/module/web/convert/pseudo.js.map +1 -0
- package/lib/module/web/convert/shadow/boxShadow.js +57 -0
- package/lib/module/web/convert/shadow/boxShadow.js.map +1 -0
- package/lib/module/web/convert/shadow/getShadowBreakpoints.js +33 -0
- package/lib/module/web/convert/shadow/getShadowBreakpoints.js.map +1 -0
- package/lib/module/web/convert/shadow/index.js +5 -0
- package/lib/module/web/convert/shadow/index.js.map +1 -0
- package/lib/module/web/convert/shadow/textShadow.js +54 -0
- package/lib/module/web/convert/shadow/textShadow.js.map +1 -0
- package/lib/module/web/convert/style.js +88 -0
- package/lib/module/web/convert/style.js.map +1 -0
- package/lib/module/web/convert/types.js +5 -0
- package/lib/module/web/convert/types.js.map +1 -0
- package/lib/module/web/convert/utils.js +45 -0
- package/lib/module/web/convert/utils.js.map +1 -0
- package/lib/module/web/create.js +44 -0
- package/lib/module/web/create.js.map +1 -0
- package/lib/module/web/index.js +26 -0
- package/lib/module/web/index.js.map +1 -0
- package/lib/module/web/listener.js +57 -0
- package/lib/module/web/listener.js.map +1 -0
- package/lib/module/web/mock.js +23 -0
- package/lib/module/web/mock.js.map +1 -0
- package/lib/module/web/registry.js +168 -0
- package/lib/module/web/registry.js.map +1 -0
- package/lib/module/web/runtime.js +169 -0
- package/lib/module/web/runtime.js.map +1 -0
- package/lib/module/web/shadowRegistry.js +138 -0
- package/lib/module/web/shadowRegistry.js.map +1 -0
- package/lib/module/web/state.js +69 -0
- package/lib/module/web/state.js.map +1 -0
- package/lib/module/web/utils/common.js +28 -0
- package/lib/module/web/utils/common.js.map +1 -0
- package/lib/module/web/utils/index.js +5 -0
- package/lib/module/web/utils/index.js.map +1 -0
- package/lib/module/web/utils/unistyle.js +72 -0
- package/lib/module/web/utils/unistyle.js.map +1 -0
- package/lib/module/web/variants/getVariants.js +34 -0
- package/lib/module/web/variants/getVariants.js.map +1 -0
- package/lib/module/web/variants/index.js +5 -0
- package/lib/module/web/variants/index.js.map +1 -0
- package/lib/module/web/variants/useVariants.js +54 -0
- package/lib/module/web/variants/useVariants.js.map +1 -0
- package/lib/typescript/src/components/Display.d.ts +7 -0
- package/lib/typescript/src/components/Display.d.ts.map +1 -0
- package/lib/typescript/src/components/Hide.d.ts +7 -0
- package/lib/typescript/src/components/Hide.d.ts.map +1 -0
- package/lib/typescript/src/components/index.d.ts +3 -0
- package/lib/typescript/src/components/index.d.ts.map +1 -0
- package/lib/typescript/src/components/useMedia.d.ts +6 -0
- package/lib/typescript/src/components/useMedia.d.ts.map +1 -0
- package/lib/typescript/src/components/useMedia.web.d.ts +6 -0
- package/lib/typescript/src/components/useMedia.web.d.ts.map +1 -0
- package/lib/typescript/src/core/createUnistylesComponent.d.ts +8 -0
- package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +1 -0
- package/lib/typescript/src/core/createUnistylesComponent.native.d.ts +8 -0
- package/lib/typescript/src/core/createUnistylesComponent.native.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +2 -0
- package/lib/typescript/src/core/index.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/mq.d.ts +8 -0
- package/lib/typescript/src/mq.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts +7 -5
- package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.d.ts +0 -1
- package/lib/typescript/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/NavigtionBar/index.d.ts +1 -10
- package/lib/typescript/src/specs/NavigtionBar/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +4 -4
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/types.d.ts +3 -0
- package/lib/typescript/src/specs/ShadowRegistry/types.d.ts.map +1 -1
- package/lib/typescript/src/specs/StatusBar/UnistylesStatusBar.nitro.d.ts +0 -1
- package/lib/typescript/src/specs/StatusBar/UnistylesStatusBar.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/StatusBar/index.d.ts +2 -4
- package/lib/typescript/src/specs/StatusBar/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts +3 -1
- package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/StyleSheet/index.d.ts +3 -1
- package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts +1 -1
- package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts.map +1 -1
- package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts +3 -1
- package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/index.d.ts +4 -2
- package/lib/typescript/src/specs/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/index.web.d.ts +1 -1
- package/lib/typescript/src/specs/index.web.d.ts.map +1 -1
- package/lib/typescript/src/types/breakpoints.d.ts +11 -11
- package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/types/common.d.ts +1 -0
- package/lib/typescript/src/types/common.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +1 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/stylesheet.d.ts +6 -4
- package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
- package/lib/typescript/src/types/variants.d.ts +4 -1
- package/lib/typescript/src/types/variants.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +2 -0
- package/lib/typescript/src/utils.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/index.d.ts +3 -0
- package/lib/typescript/src/web/convert/index.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/boxShadow.d.ts +9 -0
- package/lib/typescript/src/web/convert/object/boxShadow.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/filter.d.ts +3 -0
- package/lib/typescript/src/web/convert/object/filter.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/index.d.ts +4 -0
- package/lib/typescript/src/web/convert/object/index.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/objectStyle.d.ts +5 -0
- package/lib/typescript/src/web/convert/object/objectStyle.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/transform.d.ts +3 -0
- package/lib/typescript/src/web/convert/object/transform.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/pseudo.d.ts +6 -0
- package/lib/typescript/src/web/convert/pseudo.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/boxShadow.d.ts +8 -0
- package/lib/typescript/src/web/convert/shadow/boxShadow.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/getShadowBreakpoints.d.ts +2 -0
- package/lib/typescript/src/web/convert/shadow/getShadowBreakpoints.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/index.d.ts +3 -0
- package/lib/typescript/src/web/convert/shadow/index.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/shadow/textShadow.d.ts +8 -0
- package/lib/typescript/src/web/convert/shadow/textShadow.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/style.d.ts +2 -0
- package/lib/typescript/src/web/convert/style.d.ts.map +1 -0
- package/lib/typescript/{web → src/web}/convert/types.d.ts +8 -2
- package/lib/typescript/src/web/convert/types.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/utils.d.ts +12 -0
- package/lib/typescript/src/web/convert/utils.d.ts.map +1 -0
- package/lib/typescript/src/web/create.d.ts +1443 -0
- package/lib/typescript/{web → src/web}/create.d.ts.map +1 -1
- package/lib/typescript/src/web/index.d.ts +1459 -0
- package/lib/typescript/{web → src/web}/index.d.ts.map +1 -1
- package/lib/typescript/{web/listener → src/web}/listener.d.ts +5 -2
- package/lib/typescript/src/web/listener.d.ts.map +1 -0
- package/lib/typescript/src/web/mock.d.ts +5 -0
- package/lib/typescript/src/web/mock.d.ts.map +1 -0
- package/lib/typescript/src/web/registry.d.ts +24 -0
- package/lib/typescript/src/web/registry.d.ts.map +1 -0
- package/lib/typescript/{web → src/web}/runtime.d.ts +11 -10
- package/lib/typescript/src/web/runtime.d.ts.map +1 -0
- package/lib/typescript/src/web/shadowRegistry.d.ts +17 -0
- package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -0
- package/lib/typescript/src/web/state.d.ts +18 -0
- package/lib/typescript/src/web/state.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/common.d.ts +8 -0
- package/lib/typescript/src/web/utils/common.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/index.d.ts +3 -0
- package/lib/typescript/src/web/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/web/utils/unistyle.d.ts +20 -0
- package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -0
- package/lib/typescript/src/web/variants/getVariants.d.ts +3 -0
- package/lib/typescript/src/web/variants/getVariants.d.ts.map +1 -0
- package/lib/typescript/src/web/variants/index.d.ts +3 -0
- package/lib/typescript/src/web/variants/index.d.ts.map +1 -0
- package/lib/typescript/src/web/variants/useVariants.d.ts +3 -0
- package/lib/typescript/src/web/variants/useVariants.d.ts.map +1 -0
- package/nitrogen/generated/android/c++/JColorScheme.hpp +1 -1
- package/nitrogen/generated/android/c++/JFunc_void_UnistylesNativeMiniRuntime.hpp +57 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.hpp +69 -0
- package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +35 -34
- package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +15 -6
- package/nitrogen/generated/android/c++/JOrientation.hpp +1 -1
- package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +4 -1
- package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +9 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Dimensions.kt +1 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/{Func_void_std__vector_UnistyleDependency_.kt → Func_void_UnistylesNativeMiniRuntime.kt} +6 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.kt +46 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +25 -13
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Insets.kt +1 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +2 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +3 -1
- package/nitrogen/generated/android/unistyles+autolinking.cmake +13 -1
- package/nitrogen/generated/android/unistyles+autolinking.gradle +2 -0
- package/nitrogen/generated/android/{UnistylesOnLoad.cpp → unistylesOnLoad.cpp} +6 -4
- package/nitrogen/generated/android/{UnistylesOnLoad.hpp → unistylesOnLoad.hpp} +1 -1
- package/nitrogen/generated/ios/Unistyles+autolinking.rb +6 -4
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +25 -0
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +73 -38
- package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +1 -30
- package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +8 -8
- package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +4 -16
- package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +156 -115
- package/nitrogen/generated/ios/swift/UnistyleDependency.swift +4 -0
- package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +16 -5
- package/nitrogen/generated/shared/c++/ColorScheme.hpp +2 -2
- package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +2 -2
- package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +6 -3
- package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.cpp +0 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +3 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +5 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +3 -0
- package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.cpp +0 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +3 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +2 -1
- package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +10 -4
- package/nitrogen/generated/shared/c++/Orientation.hpp +2 -2
- package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -1
- package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +10 -9
- package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +9 -8
- package/package.json +20 -30
- package/plugin/common.js +31 -3
- package/plugin/index.js +107 -18
- package/plugin/ref.js +140 -14
- package/plugin/style.js +208 -22
- package/plugin/stylesheet.js +53 -3
- package/plugin/variants.js +33 -0
- package/src/components/Display.tsx +12 -0
- package/src/components/Hide.tsx +12 -0
- package/src/components/index.ts +2 -0
- package/src/components/useMedia.ts +64 -0
- package/src/components/useMedia.web.ts +47 -0
- package/src/core/createUnistylesComponent.native.tsx +83 -0
- package/src/core/createUnistylesComponent.tsx +84 -0
- package/src/core/index.ts +1 -0
- package/src/index.ts +3 -12
- package/src/mq.ts +27 -9
- package/src/specs/NativePlatform/NativePlatform.nitro.ts +7 -5
- package/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.ts +0 -1
- package/src/specs/NavigtionBar/index.ts +1 -25
- package/src/specs/ShadowRegistry/index.ts +16 -10
- package/src/specs/ShadowRegistry/types.ts +4 -1
- package/src/specs/StatusBar/UnistylesStatusBar.nitro.ts +0 -1
- package/src/specs/StatusBar/index.ts +2 -12
- package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.ts +4 -1
- package/src/specs/StyleSheet/index.ts +6 -1
- package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.ts +1 -1
- package/src/specs/UnistylesRuntime/index.ts +5 -4
- package/src/specs/index.ts +6 -2
- package/src/specs/index.web.ts +1 -1
- package/src/types/breakpoints.ts +25 -13
- package/src/types/common.ts +1 -0
- package/src/types/index.ts +1 -1
- package/src/types/stylesheet.ts +7 -5
- package/src/types/variants.ts +7 -1
- package/src/utils.ts +22 -0
- package/{web → src/web}/convert/index.ts +25 -25
- package/src/web/convert/object/boxShadow.ts +55 -0
- package/src/web/convert/object/filter.ts +39 -0
- package/src/web/convert/object/index.ts +3 -0
- package/src/web/convert/object/objectStyle.ts +69 -0
- package/src/web/convert/object/transform.ts +24 -0
- package/src/web/convert/pseudo.ts +137 -0
- package/src/web/convert/shadow/boxShadow.ts +50 -0
- package/src/web/convert/shadow/getShadowBreakpoints.ts +34 -0
- package/src/web/convert/shadow/index.ts +2 -0
- package/src/web/convert/shadow/textShadow.ts +48 -0
- package/{web → src/web}/convert/style.ts +61 -10
- package/{web → src/web}/convert/types.ts +9 -2
- package/{web → src/web}/convert/utils.ts +11 -5
- package/src/web/create.ts +48 -0
- package/{web → src/web}/index.ts +4 -3
- package/src/web/listener.ts +63 -0
- package/{web → src/web}/mock.ts +3 -14
- package/src/web/registry.ts +215 -0
- package/{web → src/web}/runtime.ts +32 -21
- package/src/web/shadowRegistry.ts +145 -0
- package/src/web/state.ts +94 -0
- package/src/web/utils/common.ts +45 -0
- package/src/web/utils/index.ts +2 -0
- package/src/web/utils/unistyle.ts +108 -0
- package/src/web/variants/getVariants.ts +42 -0
- package/src/web/variants/index.ts +2 -0
- package/src/web/variants/useVariants.ts +65 -0
- package/android/src/main/cxx/helpers.cpp +0 -105
- package/android/src/main/cxx/helpers.h +0 -16
- package/android/src/main/cxx/platform.cpp +0 -170
- package/android/src/main/cxx/platform.h +0 -20
- package/lib/typescript/example/App.d.ts +0 -4
- package/lib/typescript/example/App.d.ts.map +0 -1
- package/lib/typescript/example/unistyles.d.ts +0 -63
- package/lib/typescript/example/unistyles.d.ts.map +0 -1
- package/lib/typescript/expo-example/App.d.ts +0 -4
- package/lib/typescript/expo-example/App.d.ts.map +0 -1
- package/lib/typescript/expo-example/unistyles.d.ts +0 -63
- package/lib/typescript/expo-example/unistyles.d.ts.map +0 -1
- package/lib/typescript/web/convert/boxShadow.d.ts +0 -3
- package/lib/typescript/web/convert/boxShadow.d.ts.map +0 -1
- package/lib/typescript/web/convert/breakpoint.d.ts +0 -3
- package/lib/typescript/web/convert/breakpoint.d.ts.map +0 -1
- package/lib/typescript/web/convert/index.d.ts +0 -4
- package/lib/typescript/web/convert/index.d.ts.map +0 -1
- package/lib/typescript/web/convert/shadow.d.ts +0 -2
- package/lib/typescript/web/convert/shadow.d.ts.map +0 -1
- package/lib/typescript/web/convert/style.d.ts +0 -3
- package/lib/typescript/web/convert/style.d.ts.map +0 -1
- package/lib/typescript/web/convert/textShadow.d.ts +0 -3
- package/lib/typescript/web/convert/textShadow.d.ts.map +0 -1
- package/lib/typescript/web/convert/transform.d.ts +0 -5
- package/lib/typescript/web/convert/transform.d.ts.map +0 -1
- package/lib/typescript/web/convert/types.d.ts.map +0 -1
- package/lib/typescript/web/convert/utils.d.ts +0 -8
- package/lib/typescript/web/convert/utils.d.ts.map +0 -1
- package/lib/typescript/web/create.d.ts +0 -2449
- package/lib/typescript/web/index.d.ts +0 -2464
- package/lib/typescript/web/listener/index.d.ts +0 -2
- package/lib/typescript/web/listener/index.d.ts.map +0 -1
- package/lib/typescript/web/listener/listener.d.ts.map +0 -1
- package/lib/typescript/web/mock.d.ts +0 -14
- package/lib/typescript/web/mock.d.ts.map +0 -1
- package/lib/typescript/web/mq.d.ts +0 -4
- package/lib/typescript/web/mq.d.ts.map +0 -1
- package/lib/typescript/web/pseudo.d.ts +0 -4
- package/lib/typescript/web/pseudo.d.ts.map +0 -1
- package/lib/typescript/web/registry.d.ts +0 -12
- package/lib/typescript/web/registry.d.ts.map +0 -1
- package/lib/typescript/web/runtime.d.ts.map +0 -1
- package/lib/typescript/web/state.d.ts +0 -24
- package/lib/typescript/web/state.d.ts.map +0 -1
- package/lib/typescript/web/useVariants.d.ts +0 -3
- package/lib/typescript/web/useVariants.d.ts.map +0 -1
- package/lib/typescript/web/utils.d.ts +0 -18
- package/lib/typescript/web/utils.d.ts.map +0 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency_.hpp +0 -60
- package/plugin/__tests__/dependencies.spec.js +0 -360
- package/plugin/__tests__/ref.spec.js +0 -991
- package/plugin/__tests__/stylesheet.spec.js +0 -396
- package/web/convert/boxShadow.ts +0 -72
- package/web/convert/breakpoint.ts +0 -21
- package/web/convert/shadow.ts +0 -68
- package/web/convert/textShadow.ts +0 -69
- package/web/convert/transform.ts +0 -89
- package/web/create.ts +0 -102
- package/web/listener/index.ts +0 -1
- package/web/listener/listener.ts +0 -33
- package/web/mq.ts +0 -19
- package/web/pseudo.ts +0 -11
- package/web/registry.ts +0 -41
- package/web/state.ts +0 -148
- package/web/useVariants.ts +0 -99
- package/web/utils.ts +0 -95
- /package/nitrogen/generated/android/{UnistylesOnLoad.kt → unistylesOnLoad.kt} +0 -0
- /package/{web → src/web}/convert/module.d.ts +0 -0
package/cxx/parser/Parser.h
CHANGED
|
@@ -17,36 +17,33 @@ using namespace facebook;
|
|
|
17
17
|
using namespace margelo::nitro::unistyles::core;
|
|
18
18
|
|
|
19
19
|
using Variants = std::vector<std::pair<std::string, std::string>>;
|
|
20
|
-
using DependencyMap = std::unordered_map<
|
|
21
|
-
std::shared_ptr<core::StyleSheet>,
|
|
22
|
-
std::unordered_map<const ShadowNodeFamily*, std::vector<core::Unistyle::Shared>>
|
|
23
|
-
>;
|
|
24
20
|
|
|
25
21
|
struct Parser {
|
|
26
22
|
Parser(std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime): _unistylesRuntime{unistylesRuntime} {}
|
|
27
23
|
|
|
28
24
|
void buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
|
29
25
|
void parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
|
|
30
|
-
|
|
31
|
-
void
|
|
32
|
-
void
|
|
33
|
-
|
|
26
|
+
void rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Variants& variants);
|
|
27
|
+
void rebuildUnistylesInDependencyMap(jsi::Runtime& rt, core::DependencyMap& dependencyMap, std::vector<std::shared_ptr<core::StyleSheet>>& styleSheets, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime);
|
|
28
|
+
void rebuildShadowLeafUpdates(jsi::Runtime& rt, core::DependencyMap& dependencyMap);
|
|
29
|
+
folly::dynamic parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles);
|
|
30
|
+
void rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle, const Variants& variants, std::optional<std::vector<folly::dynamic>>);
|
|
34
31
|
|
|
35
32
|
private:
|
|
36
|
-
|
|
37
|
-
jsi::Object
|
|
38
|
-
jsi::Object parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants& variants);
|
|
33
|
+
jsi::Object unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, std::optional<UnistylesNativeMiniRuntime>);
|
|
34
|
+
jsi::Object parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<Variants> variants);
|
|
39
35
|
jsi::Value parseSecondLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Value& nestedObject);
|
|
40
|
-
jsi::Function createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle
|
|
41
|
-
std::vector<folly::dynamic> parseDynamicFunctionArguments(jsi::Runtime& rt, size_t count, const jsi::Value* arguments);
|
|
36
|
+
jsi::Function createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle);
|
|
42
37
|
std::vector<UnistyleDependency> parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies);
|
|
43
38
|
jsi::Value parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
39
|
+
jsi::Value parseBoxShadow(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
40
|
+
jsi::Value parseFilters(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
44
41
|
jsi::Value getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
|
|
45
42
|
jsi::Object parseVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
|
|
46
|
-
jsi::Value getStylesForVariant(jsi::Runtime& rt, jsi::Object&& groupValue, std::optional<std::string> selectedVariant);
|
|
43
|
+
jsi::Value getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants);
|
|
47
44
|
jsi::Object parseCompoundVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
|
|
48
45
|
bool shouldApplyCompoundVariants(jsi::Runtime& rt, const Variants& variants, jsi::Object& compoundVariant);
|
|
49
|
-
|
|
46
|
+
std::optional<std::string> getUniquePressableIdFromArguments(jsi::Runtime& rt, const jsi::Value* args, size_t count);
|
|
50
47
|
bool isColor(const std::string& propertyName);
|
|
51
48
|
|
|
52
49
|
std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include <jsi/jsi.h>
|
|
4
|
+
#include <folly/dynamic.h>
|
|
4
5
|
#include <react/renderer/uimanager/UIManager.h>
|
|
5
6
|
|
|
6
7
|
namespace margelo::nitro::unistyles::shadow {
|
|
@@ -8,6 +9,7 @@ namespace margelo::nitro::unistyles::shadow {
|
|
|
8
9
|
using namespace facebook;
|
|
9
10
|
using namespace facebook::react;
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
// translates Unistyles changes to unified shadow tree changes
|
|
13
|
+
using ShadowLeafUpdates = std::unordered_map<const ShadowNodeFamily*, folly::dynamic>;
|
|
12
14
|
|
|
13
15
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import "mutex"
|
|
4
|
+
#import "ShadowLeafUpdate.h"
|
|
5
|
+
|
|
6
|
+
namespace margelo::nitro::unistyles::shadow {
|
|
7
|
+
|
|
8
|
+
// Like a traffic officer managing a jam, this struct ensures everything
|
|
9
|
+
// is synchronized within a set timeframe, controlling flow and preventing chaos.
|
|
10
|
+
struct ShadowTrafficController {
|
|
11
|
+
inline bool shouldStop() {
|
|
12
|
+
return !_canCommit;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
inline void stopUnistylesTraffic() {
|
|
16
|
+
this->_canCommit = false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
inline void resumeUnistylesTraffic() {
|
|
20
|
+
this->_canCommit = true;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
inline shadow::ShadowLeafUpdates& getUpdates() {
|
|
24
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
|
25
|
+
|
|
26
|
+
return _unistylesUpdates;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
inline void setUpdates(shadow::ShadowLeafUpdates& newUpdates) {
|
|
30
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
|
31
|
+
|
|
32
|
+
auto& targetUpdates = _unistylesUpdates;
|
|
33
|
+
|
|
34
|
+
// this is important as overriding updates may skip some interim changes
|
|
35
|
+
// Unistyles emits different events so this will make sure that everything is synced
|
|
36
|
+
std::for_each(newUpdates.begin(), newUpdates.end(), [&targetUpdates](auto& pair){
|
|
37
|
+
if (targetUpdates.contains(pair.first)) {
|
|
38
|
+
targetUpdates[pair.first] = std::move(pair.second);
|
|
39
|
+
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
targetUpdates.emplace(pair.first, std::move(pair.second));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
inline void removeShadowNode(const ShadowNodeFamily* shadowNodeFamily) {
|
|
48
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
|
49
|
+
|
|
50
|
+
if (_unistylesUpdates.contains(shadowNodeFamily)) {
|
|
51
|
+
_unistylesUpdates.erase(shadowNodeFamily);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
inline void restore() {
|
|
56
|
+
std::lock_guard<std::mutex> lock(_mutex);
|
|
57
|
+
|
|
58
|
+
_unistylesUpdates = {};
|
|
59
|
+
_canCommit = false;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private:
|
|
63
|
+
std::atomic<bool> _canCommit = false;
|
|
64
|
+
shadow::ShadowLeafUpdates _unistylesUpdates{};
|
|
65
|
+
|
|
66
|
+
// this struct should be accessed in thread-safe manner. Otherwise shadow tree updates
|
|
67
|
+
// from different threads will break it
|
|
68
|
+
std::mutex _mutex;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
}
|
|
@@ -6,26 +6,29 @@ using namespace facebook;
|
|
|
6
6
|
|
|
7
7
|
using AffectedNodes = std::unordered_map<const ShadowNodeFamily*, std::unordered_set<int>>;
|
|
8
8
|
|
|
9
|
-
void shadow::ShadowTreeManager::updateShadowTree(
|
|
10
|
-
auto&
|
|
11
|
-
|
|
9
|
+
void shadow::ShadowTreeManager::updateShadowTree(const ShadowTreeRegistry& shadowTreeRegistry) {
|
|
10
|
+
auto& registry = core::UnistylesRegistry::get();
|
|
11
|
+
auto updates = registry.trafficController.getUpdates();
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
if (updates.empty()) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
shadowTreeRegistry.enumerate([&updates](const ShadowTree& shadowTree, bool& stop){
|
|
14
18
|
// we could iterate via updates and create multiple commits
|
|
15
19
|
// but it can cause performance issues for hundreds of nodes
|
|
16
20
|
// so let's mutate Shadow Tree in single transaction
|
|
17
21
|
auto transaction = [&](const RootShadowNode& oldRootShadowNode) {
|
|
18
22
|
auto affectedNodes = shadow::ShadowTreeManager::findAffectedNodes(oldRootShadowNode, updates);
|
|
19
23
|
auto newRootNode = std::static_pointer_cast<RootShadowNode>(shadow::ShadowTreeManager::cloneShadowTree(
|
|
20
|
-
rt,
|
|
21
24
|
oldRootShadowNode,
|
|
22
25
|
updates,
|
|
23
26
|
affectedNodes
|
|
24
27
|
));
|
|
25
|
-
|
|
26
|
-
// set unistyles
|
|
28
|
+
|
|
29
|
+
// set unistyles trait
|
|
27
30
|
auto unistylesRootNode = std::reinterpret_pointer_cast<core::UnistylesCommitShadowNode>(newRootNode);
|
|
28
|
-
|
|
31
|
+
|
|
29
32
|
unistylesRootNode->addUnistylesCommitTrait();
|
|
30
33
|
|
|
31
34
|
return newRootNode;
|
|
@@ -36,7 +39,7 @@ void shadow::ShadowTreeManager::updateShadowTree(facebook::jsi::Runtime& rt, sha
|
|
|
36
39
|
// enableStateReconciliation: https://reactnative.dev/architecture/render-pipeline#react-native-renderer-state-updates
|
|
37
40
|
// mountSynchronously: must be true as this is update from C++ not React
|
|
38
41
|
shadowTree.commit(transaction, {false, true});
|
|
39
|
-
|
|
42
|
+
|
|
40
43
|
|
|
41
44
|
// for now we're assuming single surface, can be improved in the future
|
|
42
45
|
// stop = true means stop enumerating next shadow tree
|
|
@@ -83,7 +86,7 @@ AffectedNodes shadow::ShadowTreeManager::findAffectedNodes(const RootShadowNode&
|
|
|
83
86
|
|
|
84
87
|
// based on Reanimated algorithm
|
|
85
88
|
// clone affected nodes recursively, inject props and commit tree
|
|
86
|
-
ShadowNode::Unshared shadow::ShadowTreeManager::cloneShadowTree(
|
|
89
|
+
ShadowNode::Unshared shadow::ShadowTreeManager::cloneShadowTree(const ShadowNode &shadowNode, ShadowLeafUpdates& updates, AffectedNodes& affectedNodes) {
|
|
87
90
|
const auto family = &shadowNode.getFamily();
|
|
88
91
|
const auto rawPropsIt = updates.find(family);
|
|
89
92
|
const auto childrenIt = affectedNodes.find(family);
|
|
@@ -93,7 +96,7 @@ ShadowNode::Unshared shadow::ShadowTreeManager::cloneShadowTree(jsi::Runtime& rt
|
|
|
93
96
|
if (childrenIt != affectedNodes.end()) {
|
|
94
97
|
// get all indexes of children and clone it recursively
|
|
95
98
|
for (const auto index : childrenIt->second) {
|
|
96
|
-
children[index] = cloneShadowTree(
|
|
99
|
+
children[index] = cloneShadowTree(*children[index], updates, affectedNodes);
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
102
|
|
|
@@ -106,14 +109,20 @@ ShadowNode::Unshared shadow::ShadowTreeManager::cloneShadowTree(jsi::Runtime& rt
|
|
|
106
109
|
*shadowNode.getContextContainer()
|
|
107
110
|
};
|
|
108
111
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
// this is important and critical
|
|
113
|
+
// first of all Android doesn't like nullish props (they work perfectly fine on iOS)
|
|
114
|
+
// second of all Android props MUST be constructed from previous props, otherwise RawProps::~RawProps error occurs
|
|
115
|
+
// Meta wants to remove shadowNode.getProps()->rawProps, but for now it's the only viable solution
|
|
116
|
+
#ifdef ANDROID
|
|
117
|
+
auto safeProps = rawPropsIt->second == nullptr ? folly::dynamic::object() : rawPropsIt->second;
|
|
118
|
+
auto newProps = folly::dynamic::merge(shadowNode.getProps()->rawProps, safeProps);
|
|
119
|
+
#else
|
|
120
|
+
auto newProps = rawPropsIt->second;
|
|
121
|
+
#endif
|
|
122
|
+
|
|
123
|
+
updatedProps = shadowNode
|
|
124
|
+
.getComponentDescriptor()
|
|
125
|
+
.cloneProps(propsParserContext, shadowNode.getProps(), RawProps(newProps));
|
|
117
126
|
}
|
|
118
127
|
|
|
119
128
|
return shadowNode.clone({
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
#include <ranges>
|
|
7
7
|
#include "ShadowLeafUpdate.h"
|
|
8
8
|
#include "UnistylesCommitShadowNode.h"
|
|
9
|
+
#include "UnistylesRegistry.h"
|
|
9
10
|
|
|
10
11
|
namespace margelo::nitro::unistyles::shadow {
|
|
11
12
|
|
|
@@ -15,9 +16,9 @@ using namespace facebook;
|
|
|
15
16
|
using AffectedNodes = std::unordered_map<const ShadowNodeFamily *, std::unordered_set<int>>;
|
|
16
17
|
|
|
17
18
|
struct ShadowTreeManager {
|
|
18
|
-
static void updateShadowTree(
|
|
19
|
+
static void updateShadowTree(const ShadowTreeRegistry& shadowTreeRegistry);
|
|
19
20
|
static AffectedNodes findAffectedNodes(const RootShadowNode& rootNode, ShadowLeafUpdates& updates);
|
|
20
|
-
static ShadowNode::Unshared cloneShadowTree(
|
|
21
|
+
static ShadowNode::Unshared cloneShadowTree(const ShadowNode &shadowNode, ShadowLeafUpdates& updates, AffectedNodes& affectedNodes);
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
}
|
package/ios/Equatable.swift
CHANGED
|
@@ -36,7 +36,8 @@ extension UnistylesNativeMiniRuntime {
|
|
|
36
36
|
dependencies.append(UnistyleDependency.breakpoints)
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
// no need to check isLandscape, as it's always opposite
|
|
40
|
+
if (lhs.isPortrait != rhs.isPortrait) {
|
|
40
41
|
dependencies.append(UnistyleDependency.orientation)
|
|
41
42
|
}
|
|
42
43
|
|
package/ios/Extensions.swift
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import Foundation
|
|
2
2
|
|
|
3
3
|
extension UIColor {
|
|
4
|
+
// int is universal way of color representation
|
|
5
|
+
// iOS API expects UIColor, so we need to translate it
|
|
4
6
|
public static func fromInt(_ color: Int) -> UIColor {
|
|
5
7
|
let red = CGFloat((color >> 16) & 0xFF) / 255.0
|
|
6
8
|
let green = CGFloat((color >> 8) & 0xFF) / 255.0
|
|
7
9
|
let blue = CGFloat(color & 0xFF) / 255.0
|
|
8
|
-
|
|
10
|
+
|
|
9
11
|
return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
|
|
10
12
|
}
|
|
11
13
|
}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
#if os(iOS)
|
|
2
2
|
|
|
3
3
|
import Foundation
|
|
4
|
+
import Combine
|
|
4
5
|
import NitroModules
|
|
5
6
|
|
|
6
|
-
typealias
|
|
7
|
+
typealias CxxDependencyListener = (Array<UnistyleDependency>, UnistylesNativeMiniRuntime) -> Void
|
|
8
|
+
typealias CxxImeListener = (UnistylesNativeMiniRuntime) -> Void
|
|
7
9
|
|
|
8
10
|
class NativeIOSPlatform: HybridNativePlatformSpec {
|
|
9
11
|
var miniRuntime: UnistylesNativeMiniRuntime?
|
|
12
|
+
var keyboardAnimation = KeyboardAnimation()
|
|
13
|
+
var cancellables = Set<AnyCancellable>()
|
|
10
14
|
|
|
11
|
-
var
|
|
15
|
+
var dependencyListeners: Array<CxxDependencyListener> = []
|
|
16
|
+
var imeListeners: Array<CxxImeListener> = []
|
|
12
17
|
var hybridContext = margelo.nitro.HybridContext()
|
|
13
18
|
var memorySize: Int {
|
|
14
19
|
return getSizeOf(self)
|
|
@@ -18,10 +23,12 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
|
|
|
18
23
|
self.miniRuntime = self.buildMiniRuntime()
|
|
19
24
|
|
|
20
25
|
setupPlatformListeners()
|
|
26
|
+
setupKeyboardListeners()
|
|
21
27
|
}
|
|
22
28
|
|
|
23
29
|
deinit {
|
|
24
30
|
removePlatformListeners()
|
|
31
|
+
removeKeyboardListeners()
|
|
25
32
|
}
|
|
26
33
|
|
|
27
34
|
func getMiniRuntime() -> UnistylesNativeMiniRuntime {
|
|
@@ -29,6 +36,8 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
|
|
|
29
36
|
}
|
|
30
37
|
|
|
31
38
|
func buildMiniRuntime() -> UnistylesNativeMiniRuntime {
|
|
39
|
+
let orientation = self.getOrientation()
|
|
40
|
+
|
|
32
41
|
return UnistylesNativeMiniRuntime(
|
|
33
42
|
colorScheme: self.getColorScheme(),
|
|
34
43
|
screen: self.getScreenDimensions(),
|
|
@@ -39,7 +48,8 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
|
|
|
39
48
|
rtl: self.getPrefersRtlDirection(),
|
|
40
49
|
statusBar: self.getStatusBarDimensions(),
|
|
41
50
|
navigationBar: self.getNavigationBarDimensions(),
|
|
42
|
-
|
|
51
|
+
isPortrait: orientation == .portrait,
|
|
52
|
+
isLandscape: orientation == .landscape
|
|
43
53
|
)
|
|
44
54
|
}
|
|
45
55
|
|
|
@@ -177,18 +187,35 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
|
|
|
177
187
|
return getContentSizeCategoryFn()
|
|
178
188
|
}
|
|
179
189
|
}
|
|
190
|
+
|
|
191
|
+
func getMainWindow() -> UIWindow? {
|
|
192
|
+
guard let mainWindow = UIApplication.shared.connectedScenes
|
|
193
|
+
.compactMap({ $0 as? UIWindowScene })
|
|
194
|
+
.flatMap({ $0.windows })
|
|
195
|
+
.first(where: { $0.isKeyWindow }) else {
|
|
196
|
+
return nil
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return mainWindow
|
|
200
|
+
}
|
|
180
201
|
|
|
181
202
|
// todo handle IME animation
|
|
182
203
|
func getInsets() -> Insets {
|
|
183
204
|
func getInsetsFn() -> Insets {
|
|
184
|
-
guard let window =
|
|
205
|
+
guard let window = getMainWindow() else {
|
|
185
206
|
// this should never happen, but it's better to return zeros
|
|
186
207
|
return Insets(top: 0, bottom: 0, left: 0, right: 0, ime: 0)
|
|
187
208
|
}
|
|
188
209
|
|
|
189
210
|
let safeArea = window.safeAreaInsets
|
|
190
211
|
|
|
191
|
-
return Insets(
|
|
212
|
+
return Insets(
|
|
213
|
+
top: safeArea.top,
|
|
214
|
+
bottom: safeArea.bottom,
|
|
215
|
+
left: safeArea.left,
|
|
216
|
+
right: safeArea.right,
|
|
217
|
+
ime: keyboardAnimation.animatedImeInset
|
|
218
|
+
)
|
|
192
219
|
}
|
|
193
220
|
|
|
194
221
|
if Thread.isMainThread {
|
|
@@ -219,7 +246,7 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
|
|
|
219
246
|
|
|
220
247
|
func getStatusBarDimensions() -> Dimensions {
|
|
221
248
|
func getStatusBarDimensionsFn() -> Dimensions {
|
|
222
|
-
guard let window =
|
|
249
|
+
guard let window = getMainWindow(),
|
|
223
250
|
let statusBarManager = window.windowScene?.statusBarManager else {
|
|
224
251
|
// this should never happen, but it's better to return defaults
|
|
225
252
|
return Dimensions(width: 0, height: 0)
|
|
@@ -274,15 +301,13 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
|
|
|
274
301
|
func getNavigationBarDimensions() -> Dimensions {
|
|
275
302
|
return Dimensions(width: 0, height: 0);
|
|
276
303
|
}
|
|
277
|
-
|
|
304
|
+
|
|
278
305
|
func setStatusBarHidden(isHidden: Bool) throws {
|
|
279
306
|
self.onWindowChange(Notification(name: NSNotification.Name("RCTWindowFrameDidChangeNotification")))
|
|
280
307
|
}
|
|
281
308
|
|
|
282
309
|
// not implemented for iOS as there are no such APIs
|
|
283
|
-
func setNavigationBarBackgroundColor(color: Double) throws {}
|
|
284
310
|
func setNavigationBarHidden(isHidden: Bool) throws {}
|
|
285
|
-
func setStatusBarBackgroundColor(color: Double) throws {}
|
|
286
311
|
|
|
287
312
|
// implemented from JS
|
|
288
313
|
func setImmersiveMode(isEnabled: Bool) throws {}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
struct KeyboardAnimation {
|
|
4
|
+
var animatedImeInset: CGFloat = 0
|
|
5
|
+
var keyboardHeight: CGFloat = 0
|
|
6
|
+
var animationDuration: Double = 0
|
|
7
|
+
var displayLink: CADisplayLink?
|
|
8
|
+
var startTime: CFTimeInterval = 0
|
|
9
|
+
var from: CGFloat = 0
|
|
10
|
+
var to: CGFloat = 0
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
extension NativeIOSPlatform {
|
|
14
|
+
func setupKeyboardListeners() {
|
|
15
|
+
NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
|
|
16
|
+
NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
func removeKeyboardListeners() {
|
|
20
|
+
keyboardAnimation.displayLink?.invalidate()
|
|
21
|
+
|
|
22
|
+
NotificationCenter.default.removeObserver(
|
|
23
|
+
self,
|
|
24
|
+
name: UIResponder.keyboardWillShowNotification,
|
|
25
|
+
object: nil
|
|
26
|
+
)
|
|
27
|
+
NotificationCenter.default.removeObserver(
|
|
28
|
+
self,
|
|
29
|
+
name: UIResponder.keyboardWillHideNotification,
|
|
30
|
+
object: nil
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@objc func onKeyboardWillShow(notification: NSNotification) {
|
|
35
|
+
guard let frame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return }
|
|
36
|
+
guard let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double else { return }
|
|
37
|
+
|
|
38
|
+
keyboardAnimation.keyboardHeight = frame.height
|
|
39
|
+
keyboardAnimation.animationDuration = duration
|
|
40
|
+
|
|
41
|
+
startAnimation(toValue: keyboardAnimation.keyboardHeight)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@objc func onKeyboardWillHide(notification: NSNotification) {
|
|
45
|
+
guard let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double else { return }
|
|
46
|
+
|
|
47
|
+
keyboardAnimation.animationDuration = duration
|
|
48
|
+
|
|
49
|
+
startAnimation(toValue: 0)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
func startAnimation(toValue targetValue: CGFloat) {
|
|
53
|
+
keyboardAnimation.startTime = CACurrentMediaTime()
|
|
54
|
+
keyboardAnimation.displayLink?.invalidate()
|
|
55
|
+
|
|
56
|
+
keyboardAnimation.from = keyboardAnimation.animatedImeInset
|
|
57
|
+
keyboardAnimation.to = targetValue
|
|
58
|
+
|
|
59
|
+
if (keyboardAnimation.from == keyboardAnimation.to) {
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
keyboardAnimation.displayLink = CADisplayLink(target: self, selector: #selector(updateAnimation))
|
|
64
|
+
keyboardAnimation.displayLink?.add(to: .main, forMode: .default)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@objc func updateAnimation() {
|
|
68
|
+
let elapsedTime = CACurrentMediaTime() - keyboardAnimation.startTime
|
|
69
|
+
let linearProgress = min(elapsedTime / keyboardAnimation.animationDuration, 1)
|
|
70
|
+
let easedProgress = 1 - pow(1 - linearProgress, 3)
|
|
71
|
+
|
|
72
|
+
// Interpolate between 'from' and 'to'
|
|
73
|
+
keyboardAnimation.animatedImeInset = keyboardAnimation.from + (keyboardAnimation.to - keyboardAnimation.from) * CGFloat(easedProgress)
|
|
74
|
+
|
|
75
|
+
self.miniRuntime?.insets.ime = keyboardAnimation.animatedImeInset
|
|
76
|
+
self.emitImeEvent(updatedMiniRuntime: self.miniRuntime!)
|
|
77
|
+
|
|
78
|
+
if linearProgress >= 1 {
|
|
79
|
+
keyboardAnimation.displayLink?.invalidate()
|
|
80
|
+
keyboardAnimation.displayLink = nil
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -2,40 +2,52 @@ import Foundation
|
|
|
2
2
|
|
|
3
3
|
extension NativeIOSPlatform {
|
|
4
4
|
func setupPlatformListeners() {
|
|
5
|
-
NotificationCenter.default.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
NotificationCenter.default.publisher(for: NSNotification.Name("RCTWindowFrameDidChangeNotification"))
|
|
6
|
+
// add small delay (10ms) to make sure all values are up ot date
|
|
7
|
+
.delay(for: .milliseconds(10), scheduler: RunLoop.current)
|
|
8
|
+
.sink { [weak self] notification in
|
|
9
|
+
self?.onWindowChange(notification)
|
|
10
|
+
}
|
|
11
|
+
.store(in: &cancellables)
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
func removePlatformListeners() {
|
|
14
|
-
|
|
15
|
+
self.unregisterPlatformListeners()
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
func registerPlatformListener(callback: @escaping (CxxDependencyListener)) throws {
|
|
19
|
+
self.dependencyListeners.append(callback)
|
|
15
20
|
}
|
|
16
21
|
|
|
17
|
-
func
|
|
18
|
-
|
|
22
|
+
func registerImeListener(callback: @escaping ((UnistylesNativeMiniRuntime) -> Void)) throws {
|
|
23
|
+
self.imeListeners.append(callback)
|
|
19
24
|
}
|
|
20
25
|
|
|
21
|
-
func emitCxxEvent(dependencies: Array<UnistyleDependency
|
|
22
|
-
self.
|
|
26
|
+
func emitCxxEvent(dependencies: Array<UnistyleDependency>, updatedMiniRuntime: UnistylesNativeMiniRuntime) {
|
|
27
|
+
self.dependencyListeners.forEach { $0(dependencies, updatedMiniRuntime) }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func emitImeEvent(updatedMiniRuntime: UnistylesNativeMiniRuntime) {
|
|
31
|
+
self.imeListeners.forEach { $0(updatedMiniRuntime) }
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
func unregisterPlatformListeners() {
|
|
35
|
+
cancellables.removeAll()
|
|
36
|
+
dependencyListeners.removeAll()
|
|
37
|
+
imeListeners.removeAll()
|
|
23
38
|
}
|
|
24
39
|
|
|
25
40
|
@objc func onWindowChange(_ notification: Notification) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
self.miniRuntime = newMiniRuntime
|
|
37
|
-
self.emitCxxEvent(dependencies: changedDependencies)
|
|
38
|
-
}
|
|
41
|
+
guard let currentMiniRuntime = self.miniRuntime else {
|
|
42
|
+
return
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let newMiniRuntime = self.buildMiniRuntime()
|
|
46
|
+
let changedDependencies = UnistylesNativeMiniRuntime.diff(lhs: currentMiniRuntime, rhs: newMiniRuntime)
|
|
47
|
+
|
|
48
|
+
if (changedDependencies.count > 0) {
|
|
49
|
+
self.miniRuntime = newMiniRuntime
|
|
50
|
+
self.emitCxxEvent(dependencies: changedDependencies, updatedMiniRuntime: newMiniRuntime)
|
|
39
51
|
}
|
|
40
52
|
}
|
|
41
53
|
}
|
package/ios/Unistyles.h
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
+
#ifndef RCT_NEW_ARCH_ENABLED
|
|
4
|
+
#error "Unistyles 3.0 requires your project to have New Architecture enabled."
|
|
5
|
+
#endif
|
|
6
|
+
|
|
3
7
|
#import <React/RCTEventEmitter.h>
|
|
4
|
-
#import <ReactCommon/RCTTurboModuleWithJSIBindings.h>
|
|
5
8
|
#import "TurboUnistyles/TurboUnistyles.h"
|
|
6
9
|
#import <React/RCTSurfacePresenter.h>
|
|
7
10
|
#import <React/RCTScheduler.h>
|
|
11
|
+
#import <React/RCTRuntimeExecutorModule.h>
|
|
12
|
+
#import <ReactCommon/RCTRuntimeExecutor.h>
|
|
13
|
+
#import <ReactCommon/RCTTurboModuleWithJSIBindings.h>
|
|
8
14
|
|
|
9
15
|
@interface UnistylesModule: RCTEventEmitter<NativeTurboUnistylesSpec>
|
|
10
16
|
@end
|
|
11
17
|
|
|
12
|
-
@interface UnistylesModule()<RCTTurboModuleWithJSIBindings>
|
|
18
|
+
@interface UnistylesModule()<RCTTurboModuleWithJSIBindings, RCTRuntimeExecutorModule>
|
|
13
19
|
@end
|
|
@@ -11,6 +11,7 @@ using namespace margelo::nitro;
|
|
|
11
11
|
RCT_EXPORT_MODULE(Unistyles)
|
|
12
12
|
|
|
13
13
|
__weak RCTSurfacePresenter* _surfacePresenter;
|
|
14
|
+
@synthesize runtimeExecutor = _runtimeExecutor;
|
|
14
15
|
|
|
15
16
|
+ (BOOL)requiresMainQueueSetup {
|
|
16
17
|
return YES;
|
|
@@ -35,8 +36,15 @@ __weak RCTSurfacePresenter* _surfacePresenter;
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
- (void)createHybrids:(jsi::Runtime&)rt {
|
|
39
|
+
auto runOnJSThread = ([executor = _runtimeExecutor](std::function<void(jsi::Runtime& rt)> &&callback) {
|
|
40
|
+
__block auto objcCallback = callback;
|
|
41
|
+
|
|
42
|
+
[executor execute:^(jsi::Runtime& rt){
|
|
43
|
+
objcCallback(rt);
|
|
44
|
+
}];
|
|
45
|
+
});
|
|
38
46
|
auto nativePlatform = Unistyles::NativePlatform::create();
|
|
39
|
-
auto unistylesRuntime = std::make_shared<HybridUnistylesRuntime>(nativePlatform, rt);
|
|
47
|
+
auto unistylesRuntime = std::make_shared<HybridUnistylesRuntime>(nativePlatform, rt, runOnJSThread);
|
|
40
48
|
auto uiManager = [_surfacePresenter scheduler].uiManager;
|
|
41
49
|
auto styleSheet = std::make_shared<HybridStyleSheet>(unistylesRuntime, uiManager);
|
|
42
50
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Display = void 0;
|
|
7
|
+
var _useMedia = require("./useMedia");
|
|
8
|
+
const Display = ({
|
|
9
|
+
children,
|
|
10
|
+
...props
|
|
11
|
+
}) => {
|
|
12
|
+
const {
|
|
13
|
+
isVisible
|
|
14
|
+
} = (0, _useMedia.useMedia)(props);
|
|
15
|
+
return isVisible ? children : null;
|
|
16
|
+
};
|
|
17
|
+
exports.Display = Display;
|
|
18
|
+
//# sourceMappingURL=Display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_useMedia","require","Display","children","props","isVisible","useMedia","exports"],"sourceRoot":"../../../src","sources":["components/Display.tsx"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAIO,MAAMC,OAA8C,GAAGA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,KAAK;EACtF,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,kBAAQ,EAACF,KAAK,CAAC;EAErC,OAAOC,SAAS,GACVF,QAAQ,GACR,IAAI;AACd,CAAC;AAAAI,OAAA,CAAAL,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Hide = void 0;
|
|
7
|
+
var _useMedia = require("./useMedia");
|
|
8
|
+
const Hide = ({
|
|
9
|
+
children,
|
|
10
|
+
...props
|
|
11
|
+
}) => {
|
|
12
|
+
const {
|
|
13
|
+
isVisible
|
|
14
|
+
} = (0, _useMedia.useMedia)(props);
|
|
15
|
+
return !isVisible ? children : null;
|
|
16
|
+
};
|
|
17
|
+
exports.Hide = Hide;
|
|
18
|
+
//# sourceMappingURL=Hide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_useMedia","require","Hide","children","props","isVisible","useMedia","exports"],"sourceRoot":"../../../src","sources":["components/Hide.tsx"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAIO,MAAMC,IAAwC,GAAGA,CAAC;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,KAAK;EAChF,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,kBAAQ,EAACF,KAAK,CAAC;EAErC,OAAO,CAACC,SAAS,GACXF,QAAQ,GACR,IAAI;AACd,CAAC;AAAAI,OAAA,CAAAL,IAAA,GAAAA,IAAA","ignoreList":[]}
|