react-native-unistyles 3.0.0-beta.7 → 3.0.0-experimental-2025051401

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.
Files changed (390) hide show
  1. package/README.md +41 -19
  2. package/Unistyles.podspec +1 -0
  3. package/android/CMakeLists.txt +2 -1
  4. package/android/src/main/cxx/NativeUnistylesModule.cpp +3 -7
  5. package/android/src/main/cxx/NativeUnistylesModule.h +0 -4
  6. package/android/src/main/java/com/unistyles/NativePlatform+android.kt +5 -1
  7. package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +11 -4
  8. package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +1 -1
  9. package/android/src/main/java/com/unistyles/UnistylesModule.kt +1 -7
  10. package/components/native/ActivityIndicator/package.json +1 -0
  11. package/components/native/Animated/package.json +1 -0
  12. package/components/native/FlatList/package.json +1 -0
  13. package/components/native/Image/package.json +2 -1
  14. package/components/native/ImageBackground/package.json +1 -0
  15. package/components/native/KeyboardAvoidingView/package.json +1 -0
  16. package/components/native/NativeText/package.json +1 -0
  17. package/components/native/NativeView/package.json +1 -0
  18. package/components/native/Pressable/package.json +1 -0
  19. package/components/native/RefreshControl/package.json +1 -0
  20. package/components/native/ScrollView/package.json +1 -0
  21. package/components/native/SectionList/package.json +1 -0
  22. package/components/native/Switch/package.json +1 -0
  23. package/components/native/Text/package.json +1 -0
  24. package/components/native/TextInput/package.json +1 -0
  25. package/components/native/TouchableHighlight/package.json +1 -0
  26. package/components/native/TouchableOpacity/package.json +1 -0
  27. package/components/native/View/package.json +1 -0
  28. package/components/native/VirtualizedList/package.json +1 -0
  29. package/cxx/common/Helpers.h +89 -0
  30. package/cxx/core/HostUnistyle.cpp +14 -5
  31. package/cxx/core/StyleSheet.h +1 -1
  32. package/cxx/core/UnistyleWrapper.h +1 -1
  33. package/cxx/core/UnistylesCommitShadowNode.h +0 -21
  34. package/cxx/core/UnistylesRegistry.cpp +74 -69
  35. package/cxx/core/UnistylesRegistry.h +1 -1
  36. package/cxx/hybridObjects/HybridShadowRegistry.cpp +2 -5
  37. package/cxx/hybridObjects/HybridStyleSheet.cpp +10 -19
  38. package/cxx/hybridObjects/HybridStyleSheet.h +3 -8
  39. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +5 -1
  40. package/cxx/parser/Parser.cpp +200 -89
  41. package/cxx/parser/Parser.h +1 -1
  42. package/cxx/shadowTree/ShadowTrafficController.h +13 -9
  43. package/cxx/shadowTree/ShadowTreeManager.cpp +64 -59
  44. package/cxx/shadowTree/ShadowTreeManager.h +0 -1
  45. package/ios/NativePlatform+ios.swift +1 -1
  46. package/ios/NativePlatformListener+ios.swift +12 -7
  47. package/ios/UnistylesModuleOnLoad.h +1 -5
  48. package/ios/UnistylesModuleOnLoad.mm +5 -13
  49. package/lib/commonjs/components/native/Image.js +27 -1
  50. package/lib/commonjs/components/native/Image.js.map +1 -1
  51. package/lib/commonjs/components/native/Image.native.js +10 -0
  52. package/lib/commonjs/components/native/Image.native.js.map +1 -0
  53. package/lib/commonjs/components/native/ImageBackground.js +21 -36
  54. package/lib/commonjs/components/native/ImageBackground.js.map +1 -1
  55. package/lib/commonjs/components/native/Pressable.native.js +16 -2
  56. package/lib/commonjs/components/native/Pressable.native.js.map +1 -1
  57. package/lib/commonjs/core/createUnistylesElement.js +17 -21
  58. package/lib/commonjs/core/createUnistylesElement.js.map +1 -1
  59. package/lib/commonjs/core/createUnistylesElement.native.js +7 -1
  60. package/lib/commonjs/core/createUnistylesElement.native.js.map +1 -1
  61. package/lib/commonjs/core/createUnistylesImageBackground.js +10 -4
  62. package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
  63. package/lib/commonjs/core/getClassname.js +11 -5
  64. package/lib/commonjs/core/getClassname.js.map +1 -1
  65. package/lib/commonjs/core/passForwardRef.js +3 -5
  66. package/lib/commonjs/core/passForwardRef.js.map +1 -1
  67. package/lib/commonjs/core/useProxifiedUnistyles/listener.js +5 -3
  68. package/lib/commonjs/core/useProxifiedUnistyles/listener.js.map +1 -1
  69. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js +15 -2
  70. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
  71. package/lib/commonjs/core/withUnistyles/withUnistyles.js +14 -5
  72. package/lib/commonjs/core/withUnistyles/withUnistyles.js.map +1 -1
  73. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js +14 -7
  74. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js.map +1 -1
  75. package/lib/commonjs/hooks/useMedia.js +4 -4
  76. package/lib/commonjs/hooks/useMedia.js.map +1 -1
  77. package/lib/commonjs/hooks/useMedia.native.js +4 -4
  78. package/lib/commonjs/hooks/useMedia.native.js.map +1 -1
  79. package/lib/commonjs/mocks.js +203 -0
  80. package/lib/commonjs/mocks.js.map +1 -0
  81. package/lib/commonjs/mq.js +1 -23
  82. package/lib/commonjs/mq.js.map +1 -1
  83. package/lib/commonjs/reanimated/index.js +13 -0
  84. package/lib/commonjs/reanimated/index.js.map +1 -0
  85. package/lib/commonjs/reanimated/useAnimatedTheme.js +22 -0
  86. package/lib/commonjs/reanimated/useAnimatedTheme.js.map +1 -0
  87. package/lib/commonjs/reanimated/useAnimatedTheme.native.js +24 -0
  88. package/lib/commonjs/reanimated/useAnimatedTheme.native.js.map +1 -0
  89. package/lib/commonjs/server/getServerUnistyles.js +9 -4
  90. package/lib/commonjs/server/getServerUnistyles.js.map +1 -1
  91. package/lib/commonjs/server/hydrateServerUnistyles.js +4 -2
  92. package/lib/commonjs/server/hydrateServerUnistyles.js.map +1 -1
  93. package/lib/commonjs/server/resetServerUnistyles.js +4 -2
  94. package/lib/commonjs/server/resetServerUnistyles.js.map +1 -1
  95. package/lib/commonjs/server/serialize.js +24 -0
  96. package/lib/commonjs/server/serialize.js.map +1 -0
  97. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js +1 -0
  98. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
  99. package/lib/commonjs/specs/ShadowRegistry/index.js +2 -2
  100. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  101. package/lib/commonjs/utils.js +23 -1
  102. package/lib/commonjs/utils.js.map +1 -1
  103. package/lib/commonjs/web/convert/index.js +4 -7
  104. package/lib/commonjs/web/convert/index.js.map +1 -1
  105. package/lib/commonjs/web/convert/object/filter.js +7 -8
  106. package/lib/commonjs/web/convert/object/filter.js.map +1 -1
  107. package/lib/commonjs/web/create.js +10 -2
  108. package/lib/commonjs/web/create.js.map +1 -1
  109. package/lib/commonjs/web/css/core.js +2 -2
  110. package/lib/commonjs/web/css/core.js.map +1 -1
  111. package/lib/commonjs/web/css/state.js +6 -3
  112. package/lib/commonjs/web/css/state.js.map +1 -1
  113. package/lib/commonjs/web/index.js +7 -12
  114. package/lib/commonjs/web/index.js.map +1 -1
  115. package/lib/commonjs/web/registry.js +11 -9
  116. package/lib/commonjs/web/registry.js.map +1 -1
  117. package/lib/commonjs/web/runtime.js +5 -1
  118. package/lib/commonjs/web/runtime.js.map +1 -1
  119. package/lib/commonjs/web/services.js +7 -2
  120. package/lib/commonjs/web/services.js.map +1 -1
  121. package/lib/commonjs/web/shadowRegistry.js +27 -10
  122. package/lib/commonjs/web/shadowRegistry.js.map +1 -1
  123. package/lib/commonjs/web/state.js +11 -2
  124. package/lib/commonjs/web/state.js.map +1 -1
  125. package/lib/commonjs/web/types.js +2 -0
  126. package/lib/commonjs/web/types.js.map +1 -1
  127. package/lib/commonjs/web/utils/createUnistylesRef.js +31 -0
  128. package/lib/commonjs/web/utils/createUnistylesRef.js.map +1 -0
  129. package/lib/commonjs/web/utils/unistyle.js +40 -14
  130. package/lib/commonjs/web/utils/unistyle.js.map +1 -1
  131. package/lib/commonjs/web-only/getWebProps.js +19 -0
  132. package/lib/commonjs/web-only/getWebProps.js.map +1 -0
  133. package/lib/commonjs/web-only/index.js +13 -0
  134. package/lib/commonjs/web-only/index.js.map +1 -0
  135. package/lib/module/components/native/Image.js +26 -2
  136. package/lib/module/components/native/Image.js.map +1 -1
  137. package/lib/module/components/native/Image.native.js +6 -0
  138. package/lib/module/components/native/Image.native.js.map +1 -0
  139. package/lib/module/components/native/ImageBackground.js +22 -37
  140. package/lib/module/components/native/ImageBackground.js.map +1 -1
  141. package/lib/module/components/native/Pressable.native.js +16 -2
  142. package/lib/module/components/native/Pressable.native.js.map +1 -1
  143. package/lib/module/core/createUnistylesElement.js +17 -21
  144. package/lib/module/core/createUnistylesElement.js.map +1 -1
  145. package/lib/module/core/createUnistylesElement.native.js +7 -1
  146. package/lib/module/core/createUnistylesElement.native.js.map +1 -1
  147. package/lib/module/core/createUnistylesImageBackground.js +10 -4
  148. package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
  149. package/lib/module/core/getClassname.js +9 -5
  150. package/lib/module/core/getClassname.js.map +1 -1
  151. package/lib/module/core/passForwardRef.js +3 -5
  152. package/lib/module/core/passForwardRef.js.map +1 -1
  153. package/lib/module/core/useProxifiedUnistyles/listener.js +3 -3
  154. package/lib/module/core/useProxifiedUnistyles/listener.js.map +1 -1
  155. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js +15 -2
  156. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
  157. package/lib/module/core/withUnistyles/withUnistyles.js +14 -5
  158. package/lib/module/core/withUnistyles/withUnistyles.js.map +1 -1
  159. package/lib/module/core/withUnistyles/withUnistyles.native.js +14 -7
  160. package/lib/module/core/withUnistyles/withUnistyles.native.js.map +1 -1
  161. package/lib/module/hooks/useMedia.js +1 -1
  162. package/lib/module/hooks/useMedia.js.map +1 -1
  163. package/lib/module/hooks/useMedia.native.js +1 -1
  164. package/lib/module/hooks/useMedia.native.js.map +1 -1
  165. package/lib/module/mocks.js +201 -0
  166. package/lib/module/mocks.js.map +1 -0
  167. package/lib/module/mq.js +0 -19
  168. package/lib/module/mq.js.map +1 -1
  169. package/lib/module/reanimated/index.js +4 -0
  170. package/lib/module/reanimated/index.js.map +1 -0
  171. package/lib/module/reanimated/useAnimatedTheme.js +17 -0
  172. package/lib/module/reanimated/useAnimatedTheme.js.map +1 -0
  173. package/lib/module/reanimated/useAnimatedTheme.native.js +19 -0
  174. package/lib/module/reanimated/useAnimatedTheme.native.js.map +1 -0
  175. package/lib/module/server/getServerUnistyles.js +7 -4
  176. package/lib/module/server/getServerUnistyles.js.map +1 -1
  177. package/lib/module/server/hydrateServerUnistyles.js +2 -2
  178. package/lib/module/server/hydrateServerUnistyles.js.map +1 -1
  179. package/lib/module/server/resetServerUnistyles.js +2 -2
  180. package/lib/module/server/resetServerUnistyles.js.map +1 -1
  181. package/lib/module/server/serialize.js +19 -0
  182. package/lib/module/server/serialize.js.map +1 -0
  183. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js +1 -0
  184. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
  185. package/lib/module/specs/ShadowRegistry/index.js +2 -2
  186. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  187. package/lib/module/utils.js +19 -0
  188. package/lib/module/utils.js.map +1 -1
  189. package/lib/module/web/convert/index.js +4 -7
  190. package/lib/module/web/convert/index.js.map +1 -1
  191. package/lib/module/web/convert/object/filter.js +3 -4
  192. package/lib/module/web/convert/object/filter.js.map +1 -1
  193. package/lib/module/web/create.js +9 -3
  194. package/lib/module/web/create.js.map +1 -1
  195. package/lib/module/web/css/core.js +2 -2
  196. package/lib/module/web/css/core.js.map +1 -1
  197. package/lib/module/web/css/state.js +6 -3
  198. package/lib/module/web/css/state.js.map +1 -1
  199. package/lib/module/web/index.js +4 -10
  200. package/lib/module/web/index.js.map +1 -1
  201. package/lib/module/web/registry.js +11 -9
  202. package/lib/module/web/registry.js.map +1 -1
  203. package/lib/module/web/runtime.js +5 -1
  204. package/lib/module/web/runtime.js.map +1 -1
  205. package/lib/module/web/services.js +7 -1
  206. package/lib/module/web/services.js.map +1 -1
  207. package/lib/module/web/shadowRegistry.js +27 -10
  208. package/lib/module/web/shadowRegistry.js.map +1 -1
  209. package/lib/module/web/state.js +11 -2
  210. package/lib/module/web/state.js.map +1 -1
  211. package/lib/module/web/types.js +1 -1
  212. package/lib/module/web/types.js.map +1 -1
  213. package/lib/module/web/utils/createUnistylesRef.js +24 -0
  214. package/lib/module/web/utils/createUnistylesRef.js.map +1 -0
  215. package/lib/module/web/utils/unistyle.js +32 -10
  216. package/lib/module/web/utils/unistyle.js.map +1 -1
  217. package/lib/module/web-only/getWebProps.js +14 -0
  218. package/lib/module/web-only/getWebProps.js.map +1 -0
  219. package/lib/module/web-only/index.js +4 -0
  220. package/lib/module/web-only/index.js.map +1 -0
  221. package/lib/typescript/src/components/native/Animated.d.ts.map +1 -1
  222. package/lib/typescript/src/components/native/Image.d.ts.map +1 -1
  223. package/lib/typescript/src/components/native/Image.native.d.ts +2 -0
  224. package/lib/typescript/src/components/native/Image.native.d.ts.map +1 -0
  225. package/lib/typescript/src/components/native/ImageBackground.d.ts.map +1 -1
  226. package/lib/typescript/src/components/native/Pressable.native.d.ts.map +1 -1
  227. package/lib/typescript/src/core/createUnistylesElement.d.ts.map +1 -1
  228. package/lib/typescript/src/core/createUnistylesElement.native.d.ts.map +1 -1
  229. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
  230. package/lib/typescript/src/core/getClassname.d.ts +5 -5
  231. package/lib/typescript/src/core/getClassname.d.ts.map +1 -1
  232. package/lib/typescript/src/core/passForwardRef.d.ts +1 -1
  233. package/lib/typescript/src/core/passForwardRef.d.ts.map +1 -1
  234. package/lib/typescript/src/core/useProxifiedUnistyles/listener.d.ts.map +1 -1
  235. package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts.map +1 -1
  236. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -1
  237. package/lib/typescript/src/core/warn.d.ts.map +1 -1
  238. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts +1 -1
  239. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts.map +1 -1
  240. package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts +1 -3
  241. package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts.map +1 -1
  242. package/lib/typescript/src/hooks/useMedia.d.ts.map +1 -1
  243. package/lib/typescript/src/hooks/useMedia.native.d.ts.map +1 -1
  244. package/lib/typescript/src/mocks.d.ts +2 -0
  245. package/lib/typescript/src/mocks.d.ts.map +1 -0
  246. package/lib/typescript/src/mq.d.ts +0 -8
  247. package/lib/typescript/src/mq.d.ts.map +1 -1
  248. package/lib/typescript/src/reanimated/index.d.ts +2 -0
  249. package/lib/typescript/src/reanimated/index.d.ts.map +1 -0
  250. package/lib/typescript/src/reanimated/useAnimatedTheme.d.ts +4 -0
  251. package/lib/typescript/src/reanimated/useAnimatedTheme.d.ts.map +1 -0
  252. package/lib/typescript/src/reanimated/useAnimatedTheme.native.d.ts +4 -0
  253. package/lib/typescript/src/reanimated/useAnimatedTheme.native.d.ts.map +1 -0
  254. package/lib/typescript/src/server/getServerUnistyles.d.ts.map +1 -1
  255. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts +0 -1
  256. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts.map +1 -1
  257. package/lib/typescript/src/server/resetServerUnistyles.d.ts.map +1 -1
  258. package/lib/typescript/src/server/serialize.d.ts +2 -0
  259. package/lib/typescript/src/server/serialize.d.ts.map +1 -0
  260. package/lib/typescript/src/server/useServerUnistyles.d.ts.map +1 -1
  261. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts +2 -1
  262. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts.map +1 -1
  263. package/lib/typescript/src/specs/StatusBar/index.d.ts.map +1 -1
  264. package/lib/typescript/src/types/common.d.ts +0 -1
  265. package/lib/typescript/src/types/common.d.ts.map +1 -1
  266. package/lib/typescript/src/types/stylesheet.d.ts +1 -1
  267. package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
  268. package/lib/typescript/src/utils.d.ts +8 -0
  269. package/lib/typescript/src/utils.d.ts.map +1 -1
  270. package/lib/typescript/src/web/convert/index.d.ts +2 -1
  271. package/lib/typescript/src/web/convert/index.d.ts.map +1 -1
  272. package/lib/typescript/src/web/convert/object/boxShadow.d.ts.map +1 -1
  273. package/lib/typescript/src/web/convert/object/filter.d.ts +2 -1
  274. package/lib/typescript/src/web/convert/object/filter.d.ts.map +1 -1
  275. package/lib/typescript/src/web/convert/object/objectStyle.d.ts.map +1 -1
  276. package/lib/typescript/src/web/convert/object/transform.d.ts.map +1 -1
  277. package/lib/typescript/src/web/convert/pseudo.d.ts.map +1 -1
  278. package/lib/typescript/src/web/convert/shadow/boxShadow.d.ts.map +1 -1
  279. package/lib/typescript/src/web/convert/shadow/getShadowBreakpoints.d.ts.map +1 -1
  280. package/lib/typescript/src/web/convert/shadow/textShadow.d.ts.map +1 -1
  281. package/lib/typescript/src/web/convert/style.d.ts.map +1 -1
  282. package/lib/typescript/src/web/convert/utils.d.ts.map +1 -1
  283. package/lib/typescript/src/web/create.d.ts.map +1 -1
  284. package/lib/typescript/src/web/css/core.d.ts.map +1 -1
  285. package/lib/typescript/src/web/css/state.d.ts +4 -1
  286. package/lib/typescript/src/web/css/state.d.ts.map +1 -1
  287. package/lib/typescript/src/web/css/utils.d.ts.map +1 -1
  288. package/lib/typescript/src/web/index.d.ts +0 -5
  289. package/lib/typescript/src/web/index.d.ts.map +1 -1
  290. package/lib/typescript/src/web/listener.d.ts.map +1 -1
  291. package/lib/typescript/src/web/registry.d.ts +2 -2
  292. package/lib/typescript/src/web/registry.d.ts.map +1 -1
  293. package/lib/typescript/src/web/runtime.d.ts.map +1 -1
  294. package/lib/typescript/src/web/services.d.ts +6 -1
  295. package/lib/typescript/src/web/services.d.ts.map +1 -1
  296. package/lib/typescript/src/web/shadowRegistry.d.ts +2 -2
  297. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -1
  298. package/lib/typescript/src/web/state.d.ts +2 -0
  299. package/lib/typescript/src/web/state.d.ts.map +1 -1
  300. package/lib/typescript/src/web/types.d.ts +3 -0
  301. package/lib/typescript/src/web/types.d.ts.map +1 -1
  302. package/lib/typescript/src/web/utils/common.d.ts.map +1 -1
  303. package/lib/typescript/src/web/utils/createUnistylesRef.d.ts +11 -0
  304. package/lib/typescript/src/web/utils/createUnistylesRef.d.ts.map +1 -0
  305. package/lib/typescript/src/web/utils/unistyle.d.ts +5 -2
  306. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
  307. package/lib/typescript/src/web/variants.d.ts.map +1 -1
  308. package/lib/typescript/src/web-only/getWebProps.d.ts +7 -0
  309. package/lib/typescript/src/web-only/getWebProps.d.ts.map +1 -0
  310. package/lib/typescript/src/web-only/index.d.ts +2 -0
  311. package/lib/typescript/src/web-only/index.d.ts.map +1 -0
  312. package/nitrogen/generated/android/c++/JFunc_void_UnistylesNativeMiniRuntime.hpp +2 -2
  313. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.hpp +2 -2
  314. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +19 -19
  315. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +3 -0
  316. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_UnistylesNativeMiniRuntime.kt +7 -2
  317. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.kt +7 -2
  318. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +22 -22
  319. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +2 -1
  320. package/nitrogen/generated/android/unistyles+autolinking.cmake +16 -0
  321. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +0 -1
  322. package/nitrogen/generated/ios/swift/UnistyleDependency.swift +4 -0
  323. package/nitrogen/generated/shared/c++/Dimensions.hpp +1 -0
  324. package/nitrogen/generated/shared/c++/Insets.hpp +1 -0
  325. package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -1
  326. package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +1 -0
  327. package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +1 -0
  328. package/package.json +77 -33
  329. package/plugin/index.d.ts +51 -18
  330. package/plugin/index.js +878 -177
  331. package/reanimated/package.json +6 -0
  332. package/server/package.json +6 -0
  333. package/src/components/native/Image.native.tsx +4 -0
  334. package/src/components/native/Image.tsx +36 -3
  335. package/src/components/native/ImageBackground.tsx +20 -36
  336. package/src/components/native/Pressable.native.tsx +25 -2
  337. package/src/core/createUnistylesElement.native.tsx +13 -2
  338. package/src/core/createUnistylesElement.tsx +26 -27
  339. package/src/core/createUnistylesImageBackground.tsx +16 -5
  340. package/src/core/getClassname.ts +16 -5
  341. package/src/core/passForwardRef.ts +5 -5
  342. package/src/core/useProxifiedUnistyles/listener.ts +3 -3
  343. package/src/core/useProxifiedUnistyles/useProxifiedUnistyles.ts +18 -1
  344. package/src/core/withUnistyles/withUnistyles.native.tsx +42 -17
  345. package/src/core/withUnistyles/withUnistyles.tsx +23 -6
  346. package/src/hooks/useMedia.native.ts +1 -1
  347. package/src/hooks/useMedia.ts +1 -1
  348. package/src/mocks.ts +217 -0
  349. package/src/mq.ts +0 -24
  350. package/src/reanimated/index.ts +1 -0
  351. package/src/reanimated/useAnimatedTheme.native.ts +21 -0
  352. package/src/reanimated/useAnimatedTheme.ts +19 -0
  353. package/src/server/getServerUnistyles.tsx +15 -10
  354. package/src/server/hydrateServerUnistyles.ts +3 -2
  355. package/src/server/resetServerUnistyles.ts +4 -3
  356. package/src/server/serialize.ts +20 -0
  357. package/src/specs/NativePlatform/NativePlatform.nitro.ts +2 -1
  358. package/src/specs/ShadowRegistry/index.ts +2 -2
  359. package/src/types/common.ts +0 -1
  360. package/src/types/stylesheet.ts +1 -1
  361. package/src/utils.ts +25 -0
  362. package/src/web/convert/index.ts +5 -7
  363. package/src/web/convert/object/filter.ts +4 -4
  364. package/src/web/create.ts +10 -3
  365. package/src/web/css/core.ts +2 -2
  366. package/src/web/css/state.ts +5 -3
  367. package/src/web/index.ts +4 -16
  368. package/src/web/registry.ts +20 -11
  369. package/src/web/runtime.ts +6 -2
  370. package/src/web/services.ts +14 -1
  371. package/src/web/shadowRegistry.ts +35 -13
  372. package/src/web/state.ts +14 -2
  373. package/src/web/types.ts +9 -4
  374. package/src/web/utils/createUnistylesRef.ts +33 -0
  375. package/src/web/utils/unistyle.ts +55 -23
  376. package/src/web-only/getWebProps.ts +18 -0
  377. package/src/web-only/index.ts +2 -0
  378. package/web/package.json +6 -0
  379. package/cxx/core/UnistylesCommitHook.cpp +0 -49
  380. package/cxx/core/UnistylesCommitHook.h +0 -27
  381. package/cxx/core/UnistylesMountHook.cpp +0 -28
  382. package/cxx/core/UnistylesMountHook.h +0 -27
  383. package/lib/module/package.json +0 -1
  384. package/plugin/consts.js +0 -63
  385. package/plugin/exotic.js +0 -54
  386. package/plugin/import.js +0 -51
  387. package/plugin/ref.js +0 -11
  388. package/plugin/stylesheet.js +0 -565
  389. package/plugin/variants.js +0 -66
  390. /package/cxx/common/{Constants.h → UnistylesConstants.h} +0 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../lib/commonjs/reanimated/index",
3
+ "module": "../lib/module/reanimated/index",
4
+ "react-native": "../src/reanimated/index",
5
+ "types": "../lib/typescript/src/reanimated/index"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../lib/commonjs/server/index",
3
+ "module": "../lib/module/server/index",
4
+ "react-native": "../src/server/index",
5
+ "types": "../lib/typescript/src/server/index"
6
+ }
@@ -0,0 +1,4 @@
1
+ import { Image as NativeImage } from 'react-native'
2
+ import { createUnistylesElement } from '../../core'
3
+
4
+ export const Image = createUnistylesElement(NativeImage)
@@ -1,4 +1,37 @@
1
- import { Image as NativeImage } from 'react-native'
2
- import { createUnistylesElement } from '../../core'
1
+ import React, { type ComponentProps, forwardRef } from 'react'
2
+ import { type ImageStyle, Image as NativeImage, type StyleProp, type ViewStyle } from 'react-native'
3
+ import { getClassName } from '../../core'
4
+ import { maybeWarnAboutMultipleUnistyles } from '../../core/warn'
5
+ import type { UnistylesValues } from '../../types'
6
+ import { copyComponentProperties } from '../../utils'
7
+ import { checkForProp } from '../../web/utils'
8
+ import { createUnistylesRef } from '../../web/utils/createUnistylesRef'
3
9
 
4
- export const Image = createUnistylesElement(NativeImage)
10
+ type Props = ComponentProps<typeof NativeImage> & {
11
+ style?: UnistylesValues
12
+ imageStyle?: UnistylesValues
13
+ }
14
+
15
+ const UnistylesImage = forwardRef<unknown, Props>((props, forwardedRef) => {
16
+ const classNames = getClassName(props.style)
17
+ const ref = createUnistylesRef(classNames, forwardedRef)
18
+ const hasWidthStyle = checkForProp(props.style, 'width')
19
+ const hasHeightStyle = checkForProp(props.style, 'height')
20
+
21
+ maybeWarnAboutMultipleUnistyles(props.style as ViewStyle, 'Image')
22
+
23
+ return (
24
+ <NativeImage
25
+ {...props}
26
+ style={[
27
+ classNames,
28
+ // Clear inline width and height extracted from source
29
+ hasWidthStyle && { width: '' },
30
+ hasHeightStyle && { height: '' }
31
+ ] as StyleProp<ImageStyle>}
32
+ ref={ref}
33
+ />
34
+ )
35
+ })
36
+
37
+ export const Image = copyComponentProperties(NativeImage, UnistylesImage)
@@ -1,11 +1,12 @@
1
1
  import React from 'react'
2
2
  import { forwardRef } from 'react'
3
- import { ImageBackground as NativeImageBackground } from 'react-native'
3
+ import { type ImageStyle, ImageBackground as NativeImageBackground, type StyleProp, type ViewStyle } from 'react-native'
4
4
  import { getClassName } from '../../core'
5
+ import { maybeWarnAboutMultipleUnistyles } from '../../core/warn'
5
6
  import type { UnistylesValues } from '../../types'
6
7
  import { copyComponentProperties } from '../../utils'
7
- import { UnistylesShadowRegistry } from '../../web'
8
- import { isServer } from '../../web/utils'
8
+ import { keyInObject } from '../../web/utils'
9
+ import { createUnistylesRef } from '../../web/utils/createUnistylesRef'
9
10
 
10
11
  type Props = {
11
12
  style?: UnistylesValues
@@ -13,45 +14,28 @@ type Props = {
13
14
  }
14
15
 
15
16
  const UnistylesImageBackground = forwardRef<unknown, Props>((props, forwardedRef) => {
16
- let storedRef: NativeImageBackground | null = null
17
- let storedImageRef: NativeImageBackground | null = null
18
17
  const styleClassNames = getClassName(props.style)
19
18
  const imageClassNames = getClassName(props.imageStyle)
19
+ const ref = createUnistylesRef(styleClassNames, forwardedRef)
20
+ const imageRef = createUnistylesRef(imageClassNames)
21
+ const hasWidthStyle = typeof props.imageStyle === 'object' && keyInObject(props.imageStyle, 'width')
22
+ const hasHeightStyle = typeof props.imageStyle === 'object' && keyInObject(props.imageStyle, 'height')
23
+
24
+ maybeWarnAboutMultipleUnistyles(props.style as ViewStyle, 'ImageBackground')
25
+ maybeWarnAboutMultipleUnistyles(props.imageStyle as ViewStyle, 'ImageBackground')
20
26
 
21
27
  return (
22
- // @ts-expect-error - RN types are not compatible with RNW styles
23
28
  <NativeImageBackground
24
29
  {...props}
25
- style={styleClassNames}
26
- imageStyle={imageClassNames}
27
- ref={isServer() ? undefined : ref => {
28
- if (!ref) {
29
- // @ts-expect-error hidden from TS
30
- UnistylesShadowRegistry.remove(storedRef, styleClassNames?.hash)
31
- }
32
-
33
- storedRef = ref
34
- // @ts-expect-error hidden from TS
35
- UnistylesShadowRegistry.add(ref, styleClassNames?.hash)
36
-
37
- if (typeof forwardedRef === 'function') {
38
- return forwardedRef(ref)
39
- }
40
-
41
- if (forwardedRef) {
42
- forwardedRef.current = ref
43
- }
44
- }}
45
- imageRef={isServer() ? undefined : ref => {
46
- if (!ref) {
47
- // @ts-expect-error hidden from TS
48
- UnistylesShadowRegistry.remove(storedImageRef, imageClassNames?.hash)
49
- }
50
-
51
- storedImageRef = ref
52
- // @ts-expect-error hidden from TS
53
- UnistylesShadowRegistry.add(ref, imageClassNames?.hash)
54
- }}
30
+ style={styleClassNames as StyleProp<ViewStyle>}
31
+ imageStyle={[
32
+ imageClassNames,
33
+ // Clear inline width and height extracted from source
34
+ hasWidthStyle && { width: '' },
35
+ hasHeightStyle && { height: '' }
36
+ ] as StyleProp<ImageStyle>}
37
+ ref={ref}
38
+ imageRef={imageRef}
55
39
  />
56
40
  )
57
41
  })
@@ -25,7 +25,8 @@ const getStyles = (styleProps: Record<string, any> = {}) => {
25
25
  }
26
26
 
27
27
  export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ...props }, forwardedRef) => {
28
- const storedRef = useRef<View | null>()
28
+ const storedRef = useRef<View | null>(null)
29
+ const scopedTheme = UnistylesShadowRegistry.getScopedTheme()
29
30
 
30
31
  useLayoutEffect(() => {
31
32
  return () => {
@@ -40,14 +41,34 @@ export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ..
40
41
  <NativePressableReactNative
41
42
  {...props}
42
43
  ref={ref => {
44
+ const isPropStyleAFunction = typeof style === 'function'
45
+ const unistyles = isPropStyleAFunction
46
+ ? style.call(style, { pressed: false })
47
+ : getStyles(style as unknown as Record<string, any>)
48
+
43
49
  if (ref) {
44
50
  storedRef.current = ref
45
51
  }
46
52
 
47
- return passForwardedRef(props, ref, forwardedRef)
53
+ return passForwardedRef(
54
+ ref,
55
+ forwardedRef,
56
+ () => {
57
+ // @ts-expect-error - this is hidden from TS
58
+ UnistylesShadowRegistry.add(ref, unistyles)
59
+ },
60
+ () => {
61
+ // @ts-expect-error - this is hidden from TS
62
+ UnistylesShadowRegistry.remove(ref)
63
+ }
64
+ )
48
65
  }}
49
66
  style={state => {
50
67
  const isPropStyleAFunction = typeof style === 'function'
68
+ const previousScopedTheme = UnistylesShadowRegistry.getScopedTheme()
69
+
70
+ UnistylesShadowRegistry.setScopedTheme(scopedTheme)
71
+
51
72
  const unistyles = isPropStyleAFunction
52
73
  ? style.call(style, state)
53
74
  : getStyles(style as unknown as Record<string, any>)
@@ -62,6 +83,8 @@ export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ..
62
83
  // @ts-expect-error - this is hidden from TS
63
84
  UnistylesShadowRegistry.add(storedRef.current, unistyles)
64
85
 
86
+ UnistylesShadowRegistry.setScopedTheme(previousScopedTheme)
87
+
65
88
  return unistyles
66
89
  }}
67
90
  />
@@ -38,10 +38,21 @@ export const createUnistylesElement = (Component: any) => {
38
38
  storedRef.current = getNativeRef(Component, ref)
39
39
  }
40
40
 
41
- passForwardedRef(props, ref, forwardedRef)
42
-
43
41
  // @ts-ignore we don't know the type of the component
44
42
  maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
43
+
44
+ return passForwardedRef(
45
+ ref,
46
+ forwardedRef,
47
+ () => {
48
+ // @ts-ignore this is hidden from TS
49
+ UnistylesShadowRegistry.add(ref, props.style)
50
+ },
51
+ () => {
52
+ // @ts-ignore this is hidden from TS
53
+ UnistylesShadowRegistry.remove(ref)
54
+ }
55
+ )
45
56
  }}
46
57
  />
47
58
  )
@@ -1,45 +1,44 @@
1
1
  import React from 'react'
2
+ import type { ViewStyle } from 'react-native'
2
3
  import type { UnistylesValues } from '../types'
3
4
  import { copyComponentProperties } from '../utils'
4
- import { UnistylesShadowRegistry } from '../web'
5
5
  import { isServer } from '../web/utils'
6
+ import { createUnistylesRef } from '../web/utils/createUnistylesRef'
6
7
  import { getClassName } from './getClassname'
7
8
  import { maybeWarnAboutMultipleUnistyles } from './warn'
8
9
 
10
+ const STYLE_PROPS = ['style', 'contentContainerStyle', 'columnWrapperStyle'] as const
11
+
9
12
  type ComponentProps = {
10
- style?: UnistylesValues | Array<UnistylesValues>
13
+ [K in typeof STYLE_PROPS[number]]?: UnistylesValues
14
+ }
15
+
16
+ const buildUnistylesProps = (Component: any, props: ComponentProps, forwardedRef: React.ForwardedRef<unknown>) => {
17
+ const componentStyleProps = STYLE_PROPS.filter(styleProp => styleProp in props)
18
+ const classNames = Object.fromEntries(componentStyleProps.map(styleProp => [styleProp, getClassName(props[styleProp])]))
19
+ const refs = componentStyleProps.map(styleProp => {
20
+ return createUnistylesRef(
21
+ classNames[styleProp],
22
+ styleProp === 'style' ? forwardedRef : undefined
23
+ )
24
+ })
25
+
26
+ componentStyleProps.forEach(styleProp => {
27
+ maybeWarnAboutMultipleUnistyles(props[styleProp] as ViewStyle, Component.displayName)
28
+ })
29
+
30
+ return {
31
+ ...classNames,
32
+ ref: isServer() ? undefined : (componentRef: any) => refs.forEach(ref => ref?.(componentRef))
33
+ }
11
34
  }
12
35
 
13
36
  export const createUnistylesElement = (Component: any) => {
14
37
  const UnistylesComponent = React.forwardRef<unknown, ComponentProps>((props, forwardedRef) => {
15
- let storedRef: HTMLElement | null = null
16
- const classNames = getClassName(props.style)
17
-
18
38
  return (
19
39
  <Component
20
40
  {...props}
21
- style={classNames}
22
- ref={isServer() ? undefined : (ref: HTMLElement | null) => {
23
- // @ts-ignore we don't know the type of the component
24
- maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
25
-
26
- if (!ref) {
27
- // @ts-expect-error hidden from TS
28
- UnistylesShadowRegistry.remove(storedRef, classNames?.hash)
29
- }
30
-
31
- storedRef = ref
32
- // @ts-expect-error hidden from TS
33
- UnistylesShadowRegistry.add(ref, classNames?.hash)
34
-
35
- if (typeof forwardedRef === 'function') {
36
- return forwardedRef(ref)
37
- }
38
-
39
- if (forwardedRef) {
40
- forwardedRef.current = ref
41
- }
42
- }}
41
+ {...buildUnistylesProps(Component, props, forwardedRef)}
43
42
  />
44
43
  )
45
44
  })
@@ -27,12 +27,23 @@ export const createUnistylesImageBackground = (Component: typeof ImageBackground
27
27
  <Component
28
28
  {...props}
29
29
  ref={ref => {
30
- passForwardedRef(props, ref, forwardedRef)
30
+ return passForwardedRef(
31
+ ref,
32
+ forwardedRef,
33
+ () => {
34
+ // @ts-expect-error - this is hidden from TS
35
+ UnistylesShadowRegistry.add(ref, props.style)
36
+ },
37
+ () => {
38
+ // @ts-expect-error - this is hidden from TS
39
+ UnistylesShadowRegistry.remove(ref)
31
40
 
32
- return () => {
33
- // @ts-ignore
34
- UnistylesShadowRegistry.remove(ref)
35
- }
41
+ if (storedImageRef.current) {
42
+ // @ts-expect-error - this is hidden from TS
43
+ UnistylesShadowRegistry.remove(storedImageRef.current)
44
+ }
45
+ }
46
+ )
36
47
  }}
37
48
  imageRef={ref => {
38
49
  if (ref) {
@@ -1,14 +1,25 @@
1
1
  import type { UnistylesValues } from '../types'
2
- import { UnistylesWeb } from '../web'
2
+ import * as unistyles from '../web/services'
3
+ import { checkForAnimated } from '../web/utils'
3
4
 
4
- export const getClassName = (unistyle: UnistylesValues | undefined | Array<UnistylesValues>) => {
5
+ export const getClassName = (unistyle: UnistylesValues | undefined | Array<UnistylesValues>, forChild?: boolean) => {
5
6
  if (!unistyle) {
6
7
  return undefined
7
8
  }
8
9
 
9
- const { hash, injectedClassName } = UnistylesWeb.shadowRegistry.addStyles(
10
- Array.isArray(unistyle) ? unistyle.flat(Number.POSITIVE_INFINITY) : [unistyle]
10
+ const flattenedStyles = Array.isArray(unistyle) ? unistyle.flat(Number.POSITIVE_INFINITY) : [unistyle]
11
+ const animatedStyles = flattenedStyles.filter(checkForAnimated)
12
+ const regularStyles = flattenedStyles.filter(style => !checkForAnimated(style))
13
+
14
+ const { hash, injectedClassName } = unistyles.services.shadowRegistry.addStyles(
15
+ regularStyles,
16
+ forChild
11
17
  )
12
18
 
13
- return hash ? { $$css: true, hash, injectedClassName } : undefined
19
+ return hash
20
+ ? [
21
+ { $$css: true, hash, injectedClassName },
22
+ animatedStyles,
23
+ ] as const
24
+ : undefined
14
25
  }
@@ -1,10 +1,10 @@
1
1
  import React from 'react'
2
- import { UnistylesShadowRegistry } from '../specs'
3
2
 
4
3
  export const passForwardedRef = <T>(
5
- props: any,
6
4
  ref: T,
7
- forwardedRef: React.ForwardedRef<T>
5
+ forwardedRef: React.ForwardedRef<T>,
6
+ onMount?: () => void,
7
+ onUnmount?: () => void
8
8
  ) => {
9
9
  const passForwardedRef = () => {
10
10
  if (typeof forwardedRef === 'function') {
@@ -19,10 +19,10 @@ export const passForwardedRef = <T>(
19
19
  }
20
20
  const forwardedRefReturnFn = passForwardedRef()
21
21
 
22
- // @ts-expect-error hidden from TS
23
- UnistylesShadowRegistry.add(ref, props.style)
22
+ onMount?.()
24
23
 
25
24
  return () => {
26
25
  forwardedRefReturnFn?.()
26
+ onUnmount?.()
27
27
  }
28
28
  }
@@ -1,10 +1,10 @@
1
1
  import { UnistyleDependency } from '../../specs'
2
- import { UnistylesWeb } from '../../web'
2
+ import * as unistyles from '../../web/services'
3
3
  import type { ListenerProps } from './types'
4
4
 
5
5
  export const listener = ({ dependencies, updateTheme, updateRuntime }: ListenerProps) => {
6
- const disposeTheme = UnistylesWeb.listener.addListeners(dependencies.filter(dependency => dependency === UnistyleDependency.Theme), updateTheme)
7
- const disposeRuntime = UnistylesWeb.listener.addListeners(dependencies.filter(dependency => dependency !== UnistyleDependency.Theme), updateRuntime)
6
+ const disposeTheme = unistyles.services.listener.addListeners(dependencies.filter(dependency => dependency === UnistyleDependency.Theme), updateTheme)
7
+ const disposeRuntime = unistyles.services.listener.addListeners(dependencies.filter(dependency => dependency !== UnistyleDependency.Theme), updateRuntime)
8
8
 
9
9
  return () => {
10
10
  disposeTheme()
@@ -24,6 +24,7 @@ const RTDependencyMap = {
24
24
  statusBar: UnistyleDependency.StatusBar,
25
25
  pixelRatio: UnistyleDependency.PixelRatio,
26
26
  themeName: UnistyleDependency.ThemeName,
27
+ rtl: UnistyleDependency.Rtl
27
28
  } satisfies Partial<Record<keyof UnistylesMiniRuntime, UnistyleDependency>>
28
29
 
29
30
  export const useProxifiedUnistyles = (forcedTheme?: UnistylesTheme) => {
@@ -31,7 +32,7 @@ export const useProxifiedUnistyles = (forcedTheme?: UnistylesTheme) => {
31
32
  const [dependencies] = useState(() => new Set<number>())
32
33
  const [theme, setTheme] = useState(UnistylesRuntime.getTheme(scopedTheme))
33
34
  const [_, runtimeChanged] = useReducer(() => ({}), {})
34
- const disposeRef = useRef<VoidFunction>()
35
+ const disposeRef = useRef<VoidFunction>(undefined)
35
36
 
36
37
  const reinitListener = () => {
37
38
  disposeRef.current?.()
@@ -63,6 +64,22 @@ export const useProxifiedUnistyles = (forcedTheme?: UnistylesTheme) => {
63
64
  })
64
65
  const proxifiedRuntime = new Proxy(getMiniRuntime(), {
65
66
  get: (target, prop) => {
67
+ if (prop === 'insets') {
68
+ return new Proxy(target.insets, {
69
+ get: (target, prop) => {
70
+ if (prop === 'ime') {
71
+ dependencies.add(UnistyleDependency.Ime)
72
+
73
+ return target[prop as keyof typeof target]
74
+ }
75
+
76
+ dependencies.add(UnistyleDependency.Insets)
77
+
78
+ return target[prop as keyof typeof target]
79
+ }
80
+ })
81
+ }
82
+
66
83
  if (prop in RTDependencyMap) {
67
84
  dependencies.add(RTDependencyMap[prop as keyof typeof RTDependencyMap])
68
85
  }
@@ -1,33 +1,58 @@
1
1
  import React, { forwardRef, useEffect, type ComponentType, useRef } from 'react'
2
2
  import { type UnistyleDependency, UnistylesShadowRegistry } from '../../specs'
3
3
  import type { UnistylesTheme } from '../../types'
4
- import type { PartialBy } from '../../types/common'
5
4
  import { deepMergeObjects } from '../../utils'
6
5
  import { useProxifiedUnistyles } from '../useProxifiedUnistyles'
7
6
  import { maybeWarnAboutMultipleUnistyles } from '../warn'
8
- import type { Mappings, SupportedStyleProps } from './types'
7
+ import type { Mappings } from './types'
9
8
 
10
9
  // @ts-expect-error
11
10
  type GenericComponentProps<P> = ComponentProps<P>
12
11
  // @ts-expect-error
13
12
  type GenericComponentRef<T> = ComponentRef<T>
14
13
 
14
+ type UnistylesSecrets = {
15
+ uni__getStyles: () => Record<string, any>,
16
+ uni__dependencies: Array<UnistyleDependency>
17
+ }
18
+
19
+ type MappedSecrets = {
20
+ styles: Record<string, any>,
21
+ dependencies: Array<UnistyleDependency>
22
+ }
23
+
15
24
  export const withUnistyles = <TComponent, TMappings extends GenericComponentProps<TComponent>>(Component: TComponent, mappings?: Mappings<TMappings>) => {
16
25
  type TProps = GenericComponentProps<TComponent>
17
- type PropsWithUnistyles = PartialBy<TProps, keyof TMappings | SupportedStyleProps> & {
26
+ type PropsWithUnistyles = Partial<TProps> & {
18
27
  uniProps?: Mappings<TProps>
19
28
  }
20
- const getSecrets = (styleProps: Record<string, any> = {}): { uni__getStyles(): any, uni__dependencies: Array<UnistyleDependency> } => {
21
- const unistyleKey = Object
22
- .keys(styleProps)
23
- .find(key => key.startsWith('unistyles_'))
24
-
25
- return unistyleKey
26
- ? styleProps[unistyleKey]
27
- : {
28
- uni__getStyles: () => styleProps,
29
- uni__dependencies: [],
30
- }
29
+ const getSecrets = (styleProps: Record<string, any> = {}): MappedSecrets => {
30
+ const styles = Array.isArray(styleProps)
31
+ ? styleProps.flat()
32
+ : [styleProps]
33
+
34
+ const secrets: Array<UnistylesSecrets> = styles
35
+ .filter(Boolean)
36
+ .reduce((acc, style) => {
37
+ const unistyleKey = Object
38
+ .keys(style)
39
+ .find(key => key.startsWith('unistyles_'))
40
+
41
+ return acc.concat([
42
+ unistyleKey
43
+ ? style[unistyleKey]
44
+ : {
45
+ uni__getStyles: () => style,
46
+ uni__dependencies: [],
47
+ }
48
+ ])
49
+ }, [])
50
+
51
+ return {
52
+ styles: secrets.reduce((acc, secret) => Object
53
+ .assign(acc, secret.uni__getStyles()), {} as Record<string, any>),
54
+ dependencies: secrets.flatMap(secret => secret.uni__dependencies),
55
+ }
31
56
  }
32
57
 
33
58
  return forwardRef<GenericComponentRef<TComponent>, PropsWithUnistyles>((props, ref) => {
@@ -46,7 +71,7 @@ export const withUnistyles = <TComponent, TMappings extends GenericComponentProp
46
71
  const styleSecrets = getSecrets(narrowedProps.style)
47
72
  const contentContainerStyleSecrets = getSecrets(narrowedProps.contentContainerStyle)
48
73
 
49
- addDependencies(Array.from(new Set([...styleSecrets.uni__dependencies, ...contentContainerStyleSecrets.uni__dependencies])))
74
+ addDependencies(Array.from(new Set([...styleSecrets.dependencies, ...contentContainerStyleSecrets.dependencies])))
50
75
  }, [narrowedProps.style, narrowedProps.contentContainerStyle])
51
76
 
52
77
  const mappingsProps = mappings ? mappings(proxifiedTheme, proxifiedRuntime) : {}
@@ -58,10 +83,10 @@ export const withUnistyles = <TComponent, TMappings extends GenericComponentProp
58
83
  const finalProps = {
59
84
  ...deepMergeObjects(mappingsProps, unistyleProps, props),
60
85
  ...narrowedProps.style ? {
61
- style: styleSecrets.uni__getStyles(),
86
+ style: styleSecrets.styles,
62
87
  } : {},
63
88
  ...narrowedProps.contentContainerStyle ? {
64
- contentContainerStyle: contentContainerStyleSecrets.uni__getStyles(),
89
+ contentContainerStyle: contentContainerStyleSecrets.styles,
65
90
  } : {},
66
91
  } as any
67
92
 
@@ -1,11 +1,10 @@
1
1
  import React, { type ComponentType, forwardRef, type ComponentProps, type ComponentRef } from 'react'
2
2
  import type { UnistylesValues } from '../../types'
3
- import type { PartialBy } from '../../types/common'
4
3
  import { deepMergeObjects } from '../../utils'
5
4
  import { getClassName } from '../getClassname'
6
5
  import { useProxifiedUnistyles } from '../useProxifiedUnistyles'
7
6
  import { maybeWarnAboutMultipleUnistyles } from '../warn'
8
- import type { Mappings, SupportedStyleProps } from './types'
7
+ import type { Mappings } from './types'
9
8
 
10
9
  // @ts-expect-error
11
10
  type GenericComponentProps<T> = ComponentProps<T>
@@ -14,7 +13,7 @@ type GenericComponentRef<T> = ComponentRef<T>
14
13
 
15
14
  export const withUnistyles = <TComponent, TMappings extends GenericComponentProps<TComponent>>(Component: TComponent, mappings?: Mappings<TMappings>) => {
16
15
  type TProps = GenericComponentProps<TComponent>
17
- type PropsWithUnistyles = PartialBy<TProps, keyof TMappings | SupportedStyleProps> & {
16
+ type PropsWithUnistyles = Partial<TProps> & {
18
17
  uniProps?: Mappings<TProps>
19
18
  }
20
19
  type UnistyleStyles = {
@@ -24,17 +23,27 @@ export const withUnistyles = <TComponent, TMappings extends GenericComponentProp
24
23
 
25
24
  return forwardRef<GenericComponentRef<TComponent>, PropsWithUnistyles>((props, ref) => {
26
25
  const narrowedProps = props as PropsWithUnistyles & UnistyleStyles
27
- const styleClassNames = getClassName(narrowedProps.style)
26
+ const styleClassNames = getClassName(narrowedProps.style, true)
28
27
  const contentContainerStyleClassNames = getClassName(narrowedProps.contentContainerStyle)
29
28
  const { proxifiedRuntime, proxifiedTheme } = useProxifiedUnistyles()
30
29
 
31
30
  const mappingsProps = mappings ? mappings(proxifiedTheme, proxifiedRuntime) : {}
32
31
  const unistyleProps = narrowedProps.uniProps ? narrowedProps.uniProps(proxifiedTheme, proxifiedRuntime) : {}
33
32
 
33
+
34
+ const emptyStyles = narrowedProps.style
35
+ ? Object.fromEntries(
36
+ Object.entries(Object.getOwnPropertyDescriptors(narrowedProps.style))
37
+ .filter(([key]) => !key.startsWith("unistyles") && !key.startsWith("_"))
38
+ .map(([key]) => [key, undefined])
39
+ )
40
+ : undefined
41
+
34
42
  const combinedProps = {
35
43
  ...deepMergeObjects(mappingsProps, unistyleProps, props),
36
44
  ...narrowedProps.style ? {
37
- style: styleClassNames,
45
+ // Override default component styles with undefined values to reset them
46
+ style: emptyStyles
38
47
  } : {},
39
48
  ...narrowedProps.contentContainerStyle ? {
40
49
  contentContainerStyle: contentContainerStyleClassNames,
@@ -47,7 +56,15 @@ export const withUnistyles = <TComponent, TMappings extends GenericComponentProp
47
56
  maybeWarnAboutMultipleUnistyles(narrowedProps.contentContainerStyle, `withUnistyles(${Component.displayName ?? Component.name ?? 'Unknown'})`)
48
57
 
49
58
  const NativeComponent = Component as ComponentType
59
+ const [classNames] = styleClassNames ?? []
50
60
 
51
- return <NativeComponent {...combinedProps} ref={ref} />
61
+ return (
62
+ <div
63
+ className={classNames?.hash}
64
+ style={{ display: 'contents' }}
65
+ >
66
+ <NativeComponent {...combinedProps} ref={ref} />
67
+ </div>
68
+ )
52
69
  })
53
70
  }
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useLayoutEffect, useState } from 'react'
2
- import { isUnistylesMq, isValidMq, parseMq } from '../mq'
3
2
  import { StyleSheet, UnistyleDependency, UnistylesRuntime } from '../specs'
3
+ import { isUnistylesMq, isValidMq, parseMq } from '../utils'
4
4
 
5
5
  export const useMedia = (config: { mq: symbol }) => {
6
6
  const computeIsVisible = (): boolean => {
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef, useState } from 'react'
2
- import { isUnistylesMq, isValidMq, parseMq } from '../mq'
2
+ import { isUnistylesMq, isValidMq, parseMq } from '../utils'
3
3
 
4
4
  export const useMedia = (config: { mq: symbol }) => {
5
5
  const disposeRef = useRef(() => {})