react-native-unistyles 3.0.0-beta.3 → 3.0.0-beta.5

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 (496) hide show
  1. package/README.md +6 -3
  2. package/android/src/main/cxx/NativeUnistylesModule.cpp +1 -1
  3. package/android/src/main/cxx/NativeUnistylesModule.h +1 -1
  4. package/components/native/ActivityIndicator/package.json +2 -1
  5. package/components/native/FlatList/package.json +2 -1
  6. package/components/native/Image/package.json +2 -1
  7. package/components/native/ImageBackground/package.json +2 -1
  8. package/components/native/KeyboardAvoidingView/package.json +2 -1
  9. package/components/native/Pressable/package.json +1 -1
  10. package/components/native/RefreshControl/package.json +2 -1
  11. package/components/native/ScrollView/package.json +2 -1
  12. package/components/native/SectionList/package.json +2 -1
  13. package/components/native/Switch/package.json +2 -1
  14. package/components/native/Text/package.json +2 -1
  15. package/components/native/TextInput/package.json +2 -1
  16. package/components/native/TouchableHighlight/package.json +2 -1
  17. package/components/native/TouchableOpacity/package.json +2 -1
  18. package/components/native/View/package.json +2 -1
  19. package/components/native/VirtualizedList/package.json +2 -1
  20. package/cxx/common/Constants.h +4 -4
  21. package/cxx/common/Helpers.h +1 -1
  22. package/cxx/core/HashGenerator.cpp +23 -0
  23. package/cxx/core/HashGenerator.h +13 -0
  24. package/cxx/core/HostUnistyle.cpp +83 -0
  25. package/cxx/core/HostUnistyle.h +27 -0
  26. package/cxx/core/RNStyle.h +18 -0
  27. package/cxx/core/Unistyle.h +9 -4
  28. package/cxx/core/UnistyleWrapper.h +92 -47
  29. package/cxx/core/UnistylesRegistry.cpp +19 -11
  30. package/cxx/core/UnistylesRegistry.h +2 -4
  31. package/cxx/hybridObjects/HybridNavigationBar.cpp +3 -3
  32. package/cxx/hybridObjects/HybridNavigationBar.h +2 -2
  33. package/cxx/hybridObjects/HybridShadowRegistry.cpp +32 -45
  34. package/cxx/hybridObjects/HybridShadowRegistry.h +0 -10
  35. package/cxx/hybridObjects/HybridStatusBar.cpp +3 -3
  36. package/cxx/hybridObjects/HybridStatusBar.h +2 -2
  37. package/cxx/hybridObjects/HybridStyleSheet.cpp +25 -8
  38. package/cxx/hybridObjects/HybridStyleSheet.h +2 -1
  39. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +15 -15
  40. package/cxx/hybridObjects/HybridUnistylesRuntime.h +2 -2
  41. package/cxx/parser/Parser.cpp +17 -24
  42. package/cxx/parser/Parser.h +2 -1
  43. package/ios/NativePlatform+ios.swift +5 -7
  44. package/ios/NativePlatform.swift +2 -2
  45. package/ios/UnistylesModuleOnLoad.mm +2 -1
  46. package/lib/commonjs/components/ScopedTheme.js.map +1 -1
  47. package/lib/commonjs/components/index.js +0 -7
  48. package/lib/commonjs/components/index.js.map +1 -1
  49. package/lib/commonjs/components/native/ImageBackground.js +45 -1
  50. package/lib/commonjs/components/native/ImageBackground.js.map +1 -1
  51. package/lib/commonjs/components/native/ImageBackground.native.js +10 -0
  52. package/lib/commonjs/components/native/ImageBackground.native.js.map +1 -0
  53. package/lib/commonjs/components/native/Pressable.js +26 -51
  54. package/lib/commonjs/components/native/Pressable.js.map +1 -1
  55. package/lib/commonjs/components/native/Pressable.native.js +14 -11
  56. package/lib/commonjs/components/native/Pressable.native.js.map +1 -1
  57. package/lib/commonjs/core/createUnistylesElement.js +29 -5
  58. package/lib/commonjs/core/createUnistylesElement.js.map +1 -1
  59. package/lib/commonjs/core/createUnistylesElement.native.js +40 -0
  60. package/lib/commonjs/core/createUnistylesElement.native.js.map +1 -0
  61. package/lib/commonjs/core/createUnistylesImageBackground.js +36 -14
  62. package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
  63. package/lib/commonjs/core/getClassname.js +25 -0
  64. package/lib/commonjs/core/getClassname.js.map +1 -0
  65. package/lib/commonjs/core/getClassname.native.js +9 -0
  66. package/lib/commonjs/core/getClassname.native.js.map +1 -0
  67. package/lib/commonjs/core/index.js +14 -7
  68. package/lib/commonjs/core/index.js.map +1 -1
  69. package/lib/commonjs/core/passForwardRef.js +2 -2
  70. package/lib/commonjs/core/passForwardRef.js.map +1 -1
  71. package/lib/commonjs/core/useProxifiedUnistyles/index.js +13 -0
  72. package/lib/commonjs/core/useProxifiedUnistyles/index.js.map +1 -0
  73. package/lib/commonjs/core/useProxifiedUnistyles/listener.js +22 -0
  74. package/lib/commonjs/core/useProxifiedUnistyles/listener.js.map +1 -0
  75. package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js +26 -0
  76. package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js.map +1 -0
  77. package/lib/commonjs/core/useProxifiedUnistyles/types.js +6 -0
  78. package/lib/commonjs/core/useProxifiedUnistyles/types.js.map +1 -0
  79. package/lib/commonjs/core/{withUnistyles/useDependencies.js → useProxifiedUnistyles/useProxifiedUnistyles.js} +22 -22
  80. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -0
  81. package/lib/commonjs/core/useUnistyles.js +19 -0
  82. package/lib/commonjs/core/useUnistyles.js.map +1 -0
  83. package/lib/commonjs/core/warn.js +16 -0
  84. package/lib/commonjs/core/warn.js.map +1 -0
  85. package/lib/commonjs/core/withUnistyles/withUnistyles.js +19 -55
  86. package/lib/commonjs/core/withUnistyles/withUnistyles.js.map +1 -1
  87. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js +32 -65
  88. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js.map +1 -1
  89. package/lib/commonjs/index.js +23 -4
  90. package/lib/commonjs/index.js.map +1 -1
  91. package/lib/commonjs/server/getServerUnistyles.js +38 -0
  92. package/lib/commonjs/server/getServerUnistyles.js.map +1 -0
  93. package/lib/commonjs/server/hydrateServerUnistyles.js +17 -0
  94. package/lib/commonjs/server/hydrateServerUnistyles.js.map +1 -0
  95. package/lib/commonjs/server/index.js +34 -0
  96. package/lib/commonjs/server/index.js.map +1 -0
  97. package/lib/commonjs/server/resetServerUnistyles.js +16 -0
  98. package/lib/commonjs/server/resetServerUnistyles.js.map +1 -0
  99. package/lib/commonjs/server/types.js +8 -0
  100. package/lib/commonjs/server/types.js.map +1 -0
  101. package/lib/commonjs/server/useServerUnistyles.js +27 -0
  102. package/lib/commonjs/server/useServerUnistyles.js.map +1 -0
  103. package/lib/commonjs/specs/ShadowRegistry/index.js +6 -3
  104. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  105. package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
  106. package/lib/commonjs/utils.js +4 -2
  107. package/lib/commonjs/utils.js.map +1 -1
  108. package/lib/commonjs/web/convert/object/filter.js +2 -2
  109. package/lib/commonjs/web/convert/object/filter.js.map +1 -1
  110. package/lib/commonjs/web/convert/style.js +4 -4
  111. package/lib/commonjs/web/convert/style.js.map +1 -1
  112. package/lib/commonjs/web/create.js +20 -15
  113. package/lib/commonjs/web/create.js.map +1 -1
  114. package/lib/commonjs/web/css/core.js +55 -0
  115. package/lib/commonjs/web/css/core.js.map +1 -0
  116. package/lib/commonjs/web/css/index.js +17 -0
  117. package/lib/commonjs/web/css/index.js.map +1 -0
  118. package/lib/commonjs/web/css/state.js +155 -0
  119. package/lib/commonjs/web/css/state.js.map +1 -0
  120. package/lib/commonjs/web/css/utils.js +47 -0
  121. package/lib/commonjs/web/css/utils.js.map +1 -0
  122. package/lib/commonjs/web/index.js +14 -18
  123. package/lib/commonjs/web/index.js.map +1 -1
  124. package/lib/commonjs/web/listener.js +9 -7
  125. package/lib/commonjs/web/listener.js.map +1 -1
  126. package/lib/commonjs/web/registry.js +44 -123
  127. package/lib/commonjs/web/registry.js.map +1 -1
  128. package/lib/commonjs/web/runtime.js +28 -21
  129. package/lib/commonjs/web/runtime.js.map +1 -1
  130. package/lib/commonjs/web/services.js +28 -0
  131. package/lib/commonjs/web/services.js.map +1 -0
  132. package/lib/commonjs/web/shadowRegistry.js +46 -93
  133. package/lib/commonjs/web/shadowRegistry.js.map +1 -1
  134. package/lib/commonjs/web/state.js +39 -9
  135. package/lib/commonjs/web/state.js.map +1 -1
  136. package/lib/commonjs/web/types.js +6 -0
  137. package/lib/commonjs/web/types.js.map +1 -0
  138. package/lib/commonjs/web/utils/common.js +29 -9
  139. package/lib/commonjs/web/utils/common.js.map +1 -1
  140. package/lib/commonjs/web/utils/unistyle.js +28 -19
  141. package/lib/commonjs/web/utils/unistyle.js.map +1 -1
  142. package/lib/commonjs/web/variants.js +25 -27
  143. package/lib/commonjs/web/variants.js.map +1 -1
  144. package/lib/module/components/ScopedTheme.js.map +1 -1
  145. package/lib/module/components/index.js +0 -1
  146. package/lib/module/components/index.js.map +1 -1
  147. package/lib/module/components/native/ImageBackground.js +45 -2
  148. package/lib/module/components/native/ImageBackground.js.map +1 -1
  149. package/lib/module/components/native/ImageBackground.native.js +6 -0
  150. package/lib/module/components/native/ImageBackground.native.js.map +1 -0
  151. package/lib/module/components/native/Pressable.js +27 -52
  152. package/lib/module/components/native/Pressable.js.map +1 -1
  153. package/lib/module/components/native/Pressable.native.js +15 -12
  154. package/lib/module/components/native/Pressable.native.js.map +1 -1
  155. package/lib/module/core/createUnistylesElement.js +29 -5
  156. package/lib/module/core/createUnistylesElement.js.map +1 -1
  157. package/lib/module/core/createUnistylesElement.native.js +33 -0
  158. package/lib/module/core/createUnistylesElement.native.js.map +1 -0
  159. package/lib/module/core/createUnistylesImageBackground.js +34 -13
  160. package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
  161. package/lib/module/core/getClassname.js +20 -0
  162. package/lib/module/core/getClassname.js.map +1 -0
  163. package/lib/module/core/getClassname.native.js +4 -0
  164. package/lib/module/core/getClassname.native.js.map +1 -0
  165. package/lib/module/core/index.js +2 -1
  166. package/lib/module/core/index.js.map +1 -1
  167. package/lib/module/core/passForwardRef.js +2 -2
  168. package/lib/module/core/passForwardRef.js.map +1 -1
  169. package/lib/module/core/useProxifiedUnistyles/index.js +4 -0
  170. package/lib/module/core/useProxifiedUnistyles/index.js.map +1 -0
  171. package/lib/module/core/useProxifiedUnistyles/listener.js +17 -0
  172. package/lib/module/core/useProxifiedUnistyles/listener.js.map +1 -0
  173. package/lib/module/core/useProxifiedUnistyles/listener.native.js +21 -0
  174. package/lib/module/core/useProxifiedUnistyles/listener.native.js.map +1 -0
  175. package/lib/module/core/useProxifiedUnistyles/types.js +4 -0
  176. package/lib/module/core/useProxifiedUnistyles/types.js.map +1 -0
  177. package/lib/module/core/{withUnistyles/useDependencies.js → useProxifiedUnistyles/useProxifiedUnistyles.js} +19 -19
  178. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -0
  179. package/lib/module/core/useUnistyles.js +14 -0
  180. package/lib/module/core/useUnistyles.js.map +1 -0
  181. package/lib/module/core/warn.js +11 -0
  182. package/lib/module/core/warn.js.map +1 -0
  183. package/lib/module/core/withUnistyles/withUnistyles.js +19 -55
  184. package/lib/module/core/withUnistyles/withUnistyles.js.map +1 -1
  185. package/lib/module/core/withUnistyles/withUnistyles.native.js +33 -66
  186. package/lib/module/core/withUnistyles/withUnistyles.native.js.map +1 -1
  187. package/lib/module/index.js +3 -2
  188. package/lib/module/index.js.map +1 -1
  189. package/lib/module/server/getServerUnistyles.js +32 -0
  190. package/lib/module/server/getServerUnistyles.js.map +1 -0
  191. package/lib/module/server/hydrateServerUnistyles.js +12 -0
  192. package/lib/module/server/hydrateServerUnistyles.js.map +1 -0
  193. package/lib/module/server/index.js +7 -0
  194. package/lib/module/server/index.js.map +1 -0
  195. package/lib/module/server/resetServerUnistyles.js +11 -0
  196. package/lib/module/server/resetServerUnistyles.js.map +1 -0
  197. package/lib/module/server/types.js +4 -0
  198. package/lib/module/server/types.js.map +1 -0
  199. package/lib/module/server/useServerUnistyles.js +22 -0
  200. package/lib/module/server/useServerUnistyles.js.map +1 -0
  201. package/lib/module/specs/ShadowRegistry/index.js +6 -3
  202. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  203. package/lib/module/specs/StyleSheet/index.js.map +1 -1
  204. package/lib/module/utils.js +2 -1
  205. package/lib/module/utils.js.map +1 -1
  206. package/lib/module/web/convert/object/filter.js +2 -2
  207. package/lib/module/web/convert/object/filter.js.map +1 -1
  208. package/lib/module/web/convert/style.js +4 -4
  209. package/lib/module/web/convert/style.js.map +1 -1
  210. package/lib/module/web/create.js +20 -15
  211. package/lib/module/web/create.js.map +1 -1
  212. package/lib/module/web/css/core.js +50 -0
  213. package/lib/module/web/css/core.js.map +1 -0
  214. package/lib/module/web/css/index.js +4 -0
  215. package/lib/module/web/css/index.js.map +1 -0
  216. package/lib/module/web/css/state.js +150 -0
  217. package/lib/module/web/css/state.js.map +1 -0
  218. package/lib/module/web/css/utils.js +41 -0
  219. package/lib/module/web/css/utils.js.map +1 -0
  220. package/lib/module/web/index.js +10 -5
  221. package/lib/module/web/index.js.map +1 -1
  222. package/lib/module/web/listener.js +8 -7
  223. package/lib/module/web/listener.js.map +1 -1
  224. package/lib/module/web/registry.js +44 -124
  225. package/lib/module/web/registry.js.map +1 -1
  226. package/lib/module/web/runtime.js +27 -21
  227. package/lib/module/web/runtime.js.map +1 -1
  228. package/lib/module/web/services.js +23 -0
  229. package/lib/module/web/services.js.map +1 -0
  230. package/lib/module/web/shadowRegistry.js +46 -94
  231. package/lib/module/web/shadowRegistry.js.map +1 -1
  232. package/lib/module/web/state.js +39 -10
  233. package/lib/module/web/state.js.map +1 -1
  234. package/lib/module/web/types.js +4 -0
  235. package/lib/module/web/types.js.map +1 -0
  236. package/lib/module/web/utils/common.js +26 -7
  237. package/lib/module/web/utils/common.js.map +1 -1
  238. package/lib/module/web/utils/unistyle.js +27 -17
  239. package/lib/module/web/utils/unistyle.js.map +1 -1
  240. package/lib/module/web/variants.js +25 -27
  241. package/lib/module/web/variants.js.map +1 -1
  242. package/lib/typescript/src/components/index.d.ts +0 -1
  243. package/lib/typescript/src/components/index.d.ts.map +1 -1
  244. package/lib/typescript/src/components/native/ActivityIndicator.d.ts +3 -1
  245. package/lib/typescript/src/components/native/ActivityIndicator.d.ts.map +1 -1
  246. package/lib/typescript/src/components/native/FlatList.d.ts +3 -1
  247. package/lib/typescript/src/components/native/FlatList.d.ts.map +1 -1
  248. package/lib/typescript/src/components/native/Image.d.ts +3 -1
  249. package/lib/typescript/src/components/native/Image.d.ts.map +1 -1
  250. package/lib/typescript/src/components/native/ImageBackground.d.ts +8 -2
  251. package/lib/typescript/src/components/native/ImageBackground.d.ts.map +1 -1
  252. package/lib/typescript/src/components/native/ImageBackground.native.d.ts +3 -0
  253. package/lib/typescript/src/components/native/ImageBackground.native.d.ts.map +1 -0
  254. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts +3 -1
  255. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts.map +1 -1
  256. package/lib/typescript/src/components/native/Pressable.d.ts +3 -2
  257. package/lib/typescript/src/components/native/Pressable.d.ts.map +1 -1
  258. package/lib/typescript/src/components/native/Pressable.native.d.ts.map +1 -1
  259. package/lib/typescript/src/components/native/RefreshControl.d.ts +3 -1
  260. package/lib/typescript/src/components/native/RefreshControl.d.ts.map +1 -1
  261. package/lib/typescript/src/components/native/ScrollView.d.ts +3 -1
  262. package/lib/typescript/src/components/native/ScrollView.d.ts.map +1 -1
  263. package/lib/typescript/src/components/native/SectionList.d.ts +3 -1
  264. package/lib/typescript/src/components/native/SectionList.d.ts.map +1 -1
  265. package/lib/typescript/src/components/native/Switch.d.ts +3 -1
  266. package/lib/typescript/src/components/native/Switch.d.ts.map +1 -1
  267. package/lib/typescript/src/components/native/Text.d.ts +3 -1
  268. package/lib/typescript/src/components/native/Text.d.ts.map +1 -1
  269. package/lib/typescript/src/components/native/TextInput.d.ts +3 -1
  270. package/lib/typescript/src/components/native/TextInput.d.ts.map +1 -1
  271. package/lib/typescript/src/components/native/TouchableHighlight.d.ts +3 -1
  272. package/lib/typescript/src/components/native/TouchableHighlight.d.ts.map +1 -1
  273. package/lib/typescript/src/components/native/TouchableOpacity.d.ts +3 -1
  274. package/lib/typescript/src/components/native/TouchableOpacity.d.ts.map +1 -1
  275. package/lib/typescript/src/components/native/View.d.ts +3 -1
  276. package/lib/typescript/src/components/native/View.d.ts.map +1 -1
  277. package/lib/typescript/src/components/native/VirtualizedList.d.ts +3 -1
  278. package/lib/typescript/src/components/native/VirtualizedList.d.ts.map +1 -1
  279. package/lib/typescript/src/core/createUnistylesElement.d.ts +6 -1
  280. package/lib/typescript/src/core/createUnistylesElement.d.ts.map +1 -1
  281. package/lib/typescript/src/core/createUnistylesElement.native.d.ts +3 -0
  282. package/lib/typescript/src/core/createUnistylesElement.native.d.ts.map +1 -0
  283. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
  284. package/lib/typescript/src/core/getClassname.d.ts +7 -0
  285. package/lib/typescript/src/core/getClassname.d.ts.map +1 -0
  286. package/lib/typescript/src/core/getClassname.native.d.ts +2 -0
  287. package/lib/typescript/src/core/getClassname.native.d.ts.map +1 -0
  288. package/lib/typescript/src/core/index.d.ts +2 -1
  289. package/lib/typescript/src/core/index.d.ts.map +1 -1
  290. package/lib/typescript/src/core/passForwardRef.d.ts.map +1 -1
  291. package/lib/typescript/src/core/useProxifiedUnistyles/index.d.ts +2 -0
  292. package/lib/typescript/src/core/useProxifiedUnistyles/index.d.ts.map +1 -0
  293. package/lib/typescript/src/core/useProxifiedUnistyles/listener.d.ts +3 -0
  294. package/lib/typescript/src/core/useProxifiedUnistyles/listener.d.ts.map +1 -0
  295. package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts +3 -0
  296. package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts.map +1 -0
  297. package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts +7 -0
  298. package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts.map +1 -0
  299. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts +8 -0
  300. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -0
  301. package/lib/typescript/src/core/useUnistyles.d.ts +6 -0
  302. package/lib/typescript/src/core/useUnistyles.d.ts.map +1 -0
  303. package/lib/typescript/src/core/warn.d.ts +3 -0
  304. package/lib/typescript/src/core/warn.d.ts.map +1 -0
  305. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts +0 -3
  306. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts.map +1 -1
  307. package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts.map +1 -1
  308. package/lib/typescript/src/index.d.ts +3 -2
  309. package/lib/typescript/src/index.d.ts.map +1 -1
  310. package/lib/typescript/src/server/getServerUnistyles.d.ts +4 -0
  311. package/lib/typescript/src/server/getServerUnistyles.d.ts.map +1 -0
  312. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts +8 -0
  313. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts.map +1 -0
  314. package/lib/typescript/src/server/index.d.ts +5 -0
  315. package/lib/typescript/src/server/index.d.ts.map +1 -0
  316. package/lib/typescript/src/server/resetServerUnistyles.d.ts +2 -0
  317. package/lib/typescript/src/server/resetServerUnistyles.d.ts.map +1 -0
  318. package/lib/typescript/src/server/types.d.ts +5 -0
  319. package/lib/typescript/src/server/types.d.ts.map +1 -0
  320. package/lib/typescript/src/server/useServerUnistyles.d.ts +4 -0
  321. package/lib/typescript/src/server/useServerUnistyles.d.ts.map +1 -0
  322. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +0 -3
  323. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  324. package/lib/typescript/src/specs/StyleSheet/index.d.ts +4 -1
  325. package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
  326. package/lib/typescript/src/utils.d.ts +1 -0
  327. package/lib/typescript/src/utils.d.ts.map +1 -1
  328. package/lib/typescript/src/web/convert/style.d.ts.map +1 -1
  329. package/lib/typescript/src/web/create.d.ts.map +1 -1
  330. package/lib/typescript/src/web/css/core.d.ts +3 -0
  331. package/lib/typescript/src/web/css/core.d.ts.map +1 -0
  332. package/lib/typescript/src/web/css/index.d.ts +2 -0
  333. package/lib/typescript/src/web/css/index.d.ts.map +1 -0
  334. package/lib/typescript/src/web/css/state.d.ts +30 -0
  335. package/lib/typescript/src/web/css/state.d.ts.map +1 -0
  336. package/lib/typescript/src/web/css/utils.d.ts +4 -0
  337. package/lib/typescript/src/web/css/utils.d.ts.map +1 -0
  338. package/lib/typescript/src/web/index.d.ts +7 -1
  339. package/lib/typescript/src/web/index.d.ts.map +1 -1
  340. package/lib/typescript/src/web/listener.d.ts +4 -3
  341. package/lib/typescript/src/web/listener.d.ts.map +1 -1
  342. package/lib/typescript/src/web/registry.d.ts +11 -8
  343. package/lib/typescript/src/web/registry.d.ts.map +1 -1
  344. package/lib/typescript/src/web/runtime.d.ts +6 -4
  345. package/lib/typescript/src/web/runtime.d.ts.map +1 -1
  346. package/lib/typescript/src/web/services.d.ts +15 -0
  347. package/lib/typescript/src/web/services.d.ts.map +1 -0
  348. package/lib/typescript/src/web/shadowRegistry.d.ts +10 -13
  349. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -1
  350. package/lib/typescript/src/web/state.d.ts +7 -3
  351. package/lib/typescript/src/web/state.d.ts.map +1 -1
  352. package/lib/typescript/src/web/types.d.ts +13 -0
  353. package/lib/typescript/src/web/types.d.ts.map +1 -0
  354. package/lib/typescript/src/web/utils/common.d.ts +2 -1
  355. package/lib/typescript/src/web/utils/common.d.ts.map +1 -1
  356. package/lib/typescript/src/web/utils/unistyle.d.ts +5 -4
  357. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
  358. package/lib/typescript/src/web/variants.d.ts +2 -2
  359. package/lib/typescript/src/web/variants.d.ts.map +1 -1
  360. package/nitrogen/generated/android/c++/JColorScheme.hpp +2 -1
  361. package/nitrogen/generated/android/c++/JDimensions.hpp +2 -1
  362. package/nitrogen/generated/android/c++/JFunc_void_UnistylesNativeMiniRuntime.hpp +36 -10
  363. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.hpp +53 -19
  364. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +5 -5
  365. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +1 -1
  366. package/nitrogen/generated/android/c++/JInsets.hpp +2 -1
  367. package/nitrogen/generated/android/c++/JOrientation.hpp +2 -1
  368. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +2 -1
  369. package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +2 -1
  370. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/ColorScheme.kt +1 -1
  371. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Dimensions.kt +10 -5
  372. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_UnistylesNativeMiniRuntime.kt +43 -14
  373. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.kt +43 -14
  374. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +10 -10
  375. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Insets.kt +13 -8
  376. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Orientation.kt +1 -1
  377. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +1 -1
  378. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +19 -14
  379. package/nitrogen/generated/android/unistyles+autolinking.cmake +4 -1
  380. package/nitrogen/generated/android/unistyles+autolinking.gradle +1 -1
  381. package/nitrogen/generated/android/unistylesOnLoad.cpp +7 -3
  382. package/nitrogen/generated/android/unistylesOnLoad.hpp +1 -1
  383. package/nitrogen/generated/ios/Unistyles+autolinking.rb +1 -1
  384. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +21 -6
  385. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +105 -27
  386. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +5 -3
  387. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.cpp +1 -1
  388. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +92 -33
  389. package/nitrogen/generated/ios/swift/ColorScheme.swift +1 -1
  390. package/nitrogen/generated/ios/swift/Dimensions.swift +1 -1
  391. package/nitrogen/generated/ios/swift/Func_void_UnistylesNativeMiniRuntime.swift +46 -0
  392. package/nitrogen/generated/ios/swift/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.swift +46 -0
  393. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +36 -23
  394. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec_cxx.swift +327 -0
  395. package/nitrogen/generated/ios/swift/Insets.swift +1 -1
  396. package/nitrogen/generated/ios/swift/Orientation.swift +1 -1
  397. package/nitrogen/generated/ios/swift/UnistyleDependency.swift +1 -1
  398. package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +1 -1
  399. package/nitrogen/generated/shared/c++/ColorScheme.hpp +1 -1
  400. package/nitrogen/generated/shared/c++/Dimensions.hpp +1 -1
  401. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +1 -1
  402. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +1 -1
  403. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.cpp +1 -1
  404. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +1 -1
  405. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.cpp +1 -1
  406. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +1 -1
  407. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.cpp +1 -1
  408. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +1 -1
  409. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.cpp +1 -1
  410. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +1 -1
  411. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +1 -1
  412. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +1 -1
  413. package/nitrogen/generated/shared/c++/Insets.hpp +1 -1
  414. package/nitrogen/generated/shared/c++/Orientation.hpp +1 -1
  415. package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -2
  416. package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +1 -1
  417. package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +1 -1
  418. package/package.json +21 -12
  419. package/plugin/import.js +1 -21
  420. package/plugin/index.d.ts +41 -0
  421. package/plugin/index.js +44 -76
  422. package/plugin/stylesheet.js +17 -1
  423. package/plugin/variants.js +49 -75
  424. package/src/components/ScopedTheme.tsx +1 -1
  425. package/src/components/index.ts +0 -1
  426. package/src/components/native/ImageBackground.native.tsx +4 -0
  427. package/src/components/native/ImageBackground.tsx +54 -2
  428. package/src/components/native/Pressable.native.tsx +16 -17
  429. package/src/components/native/Pressable.tsx +35 -69
  430. package/src/core/createUnistylesElement.native.tsx +36 -0
  431. package/src/core/createUnistylesElement.tsx +42 -8
  432. package/src/core/createUnistylesImageBackground.tsx +40 -19
  433. package/src/core/getClassname.native.ts +1 -0
  434. package/src/core/getClassname.ts +13 -0
  435. package/src/core/index.ts +2 -1
  436. package/src/core/passForwardRef.ts +1 -2
  437. package/src/core/useProxifiedUnistyles/index.ts +1 -0
  438. package/src/core/useProxifiedUnistyles/listener.native.ts +18 -0
  439. package/src/core/useProxifiedUnistyles/listener.ts +13 -0
  440. package/src/core/useProxifiedUnistyles/types.ts +7 -0
  441. package/src/core/{withUnistyles/useDependencies.ts → useProxifiedUnistyles/useProxifiedUnistyles.ts} +19 -26
  442. package/src/core/useUnistyles.ts +11 -0
  443. package/src/core/warn.ts +13 -0
  444. package/src/core/withUnistyles/withUnistyles.native.tsx +39 -68
  445. package/src/core/withUnistyles/withUnistyles.tsx +19 -56
  446. package/src/index.ts +3 -2
  447. package/src/server/getServerUnistyles.tsx +20 -0
  448. package/src/server/hydrateServerUnistyles.ts +17 -0
  449. package/src/server/index.ts +5 -0
  450. package/src/server/resetServerUnistyles.ts +9 -0
  451. package/src/server/types.ts +4 -0
  452. package/src/server/useServerUnistyles.tsx +22 -0
  453. package/src/specs/ShadowRegistry/index.ts +12 -9
  454. package/src/specs/StyleSheet/index.ts +5 -1
  455. package/src/utils.ts +15 -11
  456. package/src/web/convert/object/filter.ts +2 -2
  457. package/src/web/convert/style.ts +8 -7
  458. package/src/web/create.ts +23 -18
  459. package/src/web/css/core.ts +58 -0
  460. package/src/web/css/index.ts +1 -0
  461. package/src/web/css/state.ts +191 -0
  462. package/src/web/css/utils.ts +54 -0
  463. package/src/web/index.ts +18 -5
  464. package/src/web/listener.ts +8 -8
  465. package/src/web/registry.ts +47 -152
  466. package/src/web/runtime.ts +32 -22
  467. package/src/web/services.ts +28 -0
  468. package/src/web/shadowRegistry.ts +46 -104
  469. package/src/web/state.ts +46 -11
  470. package/src/web/types.ts +13 -0
  471. package/src/web/utils/common.ts +32 -8
  472. package/src/web/utils/unistyle.ts +40 -25
  473. package/src/web/variants.ts +27 -27
  474. package/cxx/core/HostStyle.cpp +0 -73
  475. package/cxx/core/HostStyle.h +0 -34
  476. package/lib/commonjs/components/Variants.js +0 -36
  477. package/lib/commonjs/components/Variants.js.map +0 -1
  478. package/lib/commonjs/core/createUnistylesComponent.js +0 -16
  479. package/lib/commonjs/core/createUnistylesComponent.js.map +0 -1
  480. package/lib/commonjs/core/withUnistyles/useDependencies.js.map +0 -1
  481. package/lib/module/components/Variants.js +0 -29
  482. package/lib/module/components/Variants.js.map +0 -1
  483. package/lib/module/core/createUnistylesComponent.js +0 -11
  484. package/lib/module/core/createUnistylesComponent.js.map +0 -1
  485. package/lib/module/core/withUnistyles/useDependencies.js.map +0 -1
  486. package/lib/typescript/src/components/Variants.d.ts +0 -7
  487. package/lib/typescript/src/components/Variants.d.ts.map +0 -1
  488. package/lib/typescript/src/core/createUnistylesComponent.d.ts +0 -14
  489. package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +0 -1
  490. package/lib/typescript/src/core/withUnistyles/useDependencies.d.ts +0 -13
  491. package/lib/typescript/src/core/withUnistyles/useDependencies.d.ts.map +0 -1
  492. package/nitrogen/generated/android/unistylesOnLoad.kt +0 -1
  493. package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +0 -314
  494. package/plugin/style.js +0 -168
  495. package/src/components/Variants.tsx +0 -30
  496. package/src/core/createUnistylesComponent.tsx +0 -14
@@ -1,7 +1,10 @@
1
- import React, { forwardRef, useRef } from 'react'
1
+ import React, { forwardRef } from 'react'
2
2
  import { Pressable as NativePressableReactNative } from 'react-native'
3
- import type { PressableProps as Props, View, ViewStyle } from 'react-native'
3
+ import type { PressableProps as Props, View } from 'react-native'
4
4
  import { UnistylesShadowRegistry } from '../../specs'
5
+ import type { UnistylesValues } from '../../types'
6
+ import { getClassName } from '../../core'
7
+ import { isServer } from '../../web/utils'
5
8
 
6
9
  type Variants = Record<string, string | boolean | undefined>
7
10
  type WebPressableState = {
@@ -10,88 +13,51 @@ type WebPressableState = {
10
13
  focused: boolean
11
14
  }
12
15
 
13
- type WebPressableStyle = ((state: WebPressableState) => ViewStyle) | ViewStyle
16
+ type WebPressableStyle = ((state: WebPressableState) => UnistylesValues) | UnistylesValues
14
17
 
15
18
  type PressableProps = Props & {
16
19
  variants?: Variants
17
20
  style?: WebPressableStyle,
18
21
  }
19
22
 
20
- const initialState: WebPressableState = {
21
- pressed: false,
22
- hovered: false,
23
- focused: false
24
- }
25
-
26
- type UpdateStylesProps = {
27
- ref: View | null,
28
- style: WebPressableStyle,
29
- variants?: Variants,
30
- state: WebPressableState
31
- scopedTheme?: string
32
- }
33
-
34
- const extractStyleResult = (style: any) => {
35
- return typeof style === 'function'
36
- ? [style()]
37
- : Array.isArray(style)
38
- ? style.map(style => typeof style === 'function' ? style() : style)
39
- : [style]
40
- }
41
-
42
- const updateStyles = ({ ref, style, state, scopedTheme, variants }: UpdateStylesProps) => {
43
- const styleResult = typeof style === 'function'
44
- ? style(state)
45
- : style
46
- const extractedResult = extractStyleResult(styleResult)
47
- const previousScopedTheme = UnistylesShadowRegistry.getScopedTheme()
48
- const previousVariants = UnistylesShadowRegistry.getVariants()
49
-
50
- UnistylesShadowRegistry.selectVariants(variants as unknown as Variants)
51
- UnistylesShadowRegistry.setScopedTheme(scopedTheme as any)
52
-
53
- UnistylesShadowRegistry.add(ref, extractedResult)
54
-
55
- UnistylesShadowRegistry.setScopedTheme(previousScopedTheme)
56
- UnistylesShadowRegistry.selectVariants(previousVariants as unknown as Variants)
57
- }
58
-
59
- export const Pressable = forwardRef<View, PressableProps>(({ style, ...props }, passedRef) => {
60
- const storedRef = useRef<View | null>(null)
23
+ export const Pressable = forwardRef<View, PressableProps>(({ style, ...props }, forwardedRef) => {
61
24
  const scopedTheme = UnistylesShadowRegistry.getScopedTheme()
62
- const variants = UnistylesShadowRegistry.getVariants()
25
+ let storedRef: HTMLElement | null = null
26
+ let classNames: ReturnType<typeof getClassName> | undefined = undefined
63
27
 
64
28
  return (
65
29
  <NativePressableReactNative
66
30
  {...props}
67
- style={state => {
68
- if (!storedRef.current) {
69
- return {}
70
- }
31
+ ref={isServer() ? undefined : ref => {
32
+ storedRef = ref as unknown as HTMLElement
33
+ // @ts-expect-error hidden from TS
34
+ UnistylesShadowRegistry.add(storedRef, classNames?.hash)
71
35
 
72
- updateStyles({
73
- ref: storedRef.current,
74
- style: style as WebPressableStyle,
75
- variants,
76
- scopedTheme,
77
- state: state as WebPressableState
78
- })
36
+ if (typeof forwardedRef === 'function') {
37
+ return forwardedRef(ref)
38
+ }
79
39
 
80
- return {}
40
+ if (forwardedRef) {
41
+ forwardedRef.current = ref
42
+ }
81
43
  }}
82
- ref={ref => {
83
- storedRef.current = ref
84
- updateStyles({
85
- ref,
86
- style: style as WebPressableStyle,
87
- variants,
88
- scopedTheme,
89
- state: initialState
90
- })
44
+ style={state => {
45
+ const styleResult = typeof style === 'function'
46
+ ? style(state as WebPressableState)
47
+ : style
48
+ const previousScopedTheme = UnistylesShadowRegistry.getScopedTheme()
91
49
 
92
- if (typeof passedRef === 'object' && passedRef !== null) {
93
- passedRef.current = ref
94
- }
50
+ UnistylesShadowRegistry.setScopedTheme(scopedTheme)
51
+
52
+ // @ts-expect-error hidden from TS
53
+ UnistylesShadowRegistry.remove(storedRef, classNames?.hash)
54
+ classNames = getClassName(styleResult as UnistylesValues)
55
+ // @ts-expect-error hidden from TS
56
+ UnistylesShadowRegistry.add(storedRef, classNames?.hash)
57
+
58
+ UnistylesShadowRegistry.setScopedTheme(previousScopedTheme)
59
+
60
+ return classNames as any
95
61
  }}
96
62
  />
97
63
  )
@@ -0,0 +1,36 @@
1
+ import React, { useEffect, useRef } from 'react'
2
+ import { UnistylesShadowRegistry } from '../specs'
3
+ import { passForwardedRef } from './passForwardRef'
4
+ import { maybeWarnAboutMultipleUnistyles } from './warn'
5
+
6
+ export const createUnistylesElement = (Component: any) => React.forwardRef((props, forwardedRef) => {
7
+ const storedRef = useRef<unknown>(null)
8
+
9
+ useEffect(() => {
10
+ return () => {
11
+ if (storedRef.current) {
12
+ // @ts-ignore
13
+ UnistylesShadowRegistry.remove(storedRef.current)
14
+ }
15
+ }
16
+ }, [])
17
+
18
+ return (
19
+ <Component
20
+ {...props}
21
+ ref={(ref: unknown) => {
22
+ if (ref) {
23
+ storedRef.current = Component.name === 'KeyboardAvoidingView'
24
+ // @ts-ignore this is special case for KeyboardAvoidingView
25
+ ? ref.viewRef.current
26
+ : ref
27
+ }
28
+
29
+ passForwardedRef(props, ref, forwardedRef)
30
+
31
+ // @ts-ignore we don't know the type of the component
32
+ maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
33
+ }}
34
+ />
35
+ )
36
+ })
@@ -1,9 +1,43 @@
1
1
  import React from 'react'
2
- import { passForwardedRef } from './passForwardRef'
3
-
4
- export const createUnistylesElement = (Component: any) => React.forwardRef((props, forwardedRef) => (
5
- <Component
6
- {...props}
7
- ref={(ref: unknown) => passForwardedRef(props, ref, forwardedRef)}
8
- />
9
- ))
2
+ import type { UnistylesValues } from '../types'
3
+ import { getClassName } from './getClassname'
4
+ import { isServer } from '../web/utils'
5
+ import { UnistylesShadowRegistry } from '../web'
6
+ import { maybeWarnAboutMultipleUnistyles } from './warn'
7
+
8
+ type ComponentProps = {
9
+ style?: UnistylesValues | Array<UnistylesValues>
10
+ }
11
+
12
+ export const createUnistylesElement = (Component: any) => React.forwardRef<unknown, ComponentProps>((props, forwardedRef) => {
13
+ let storedRef: HTMLElement | null = null
14
+ const classNames = getClassName(props.style)
15
+
16
+ return (
17
+ <Component
18
+ {...props}
19
+ style={classNames}
20
+ ref={isServer() ? undefined : (ref: HTMLElement | null) => {
21
+ // @ts-ignore we don't know the type of the component
22
+ maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
23
+
24
+ if (!ref) {
25
+ // @ts-expect-error hidden from TS
26
+ UnistylesShadowRegistry.remove(storedRef, classNames?.hash)
27
+ }
28
+
29
+ storedRef = ref
30
+ // @ts-expect-error hidden from TS
31
+ UnistylesShadowRegistry.add(ref, classNames?.hash)
32
+
33
+ if (typeof forwardedRef === 'function') {
34
+ return forwardedRef(ref)
35
+ }
36
+
37
+ if (forwardedRef) {
38
+ forwardedRef.current = ref
39
+ }
40
+ }}
41
+ />
42
+ )
43
+ })
@@ -1,24 +1,45 @@
1
- import React from 'react'
2
- import type { ImageBackground, ImageBackgroundProps } from 'react-native'
1
+ import React, { useEffect, useRef } from 'react'
2
+ import type { Image, ImageBackground, ImageBackgroundProps } from 'react-native'
3
3
  import { UnistylesShadowRegistry } from '../specs'
4
4
  import { passForwardedRef } from './passForwardRef'
5
+ import { maybeWarnAboutMultipleUnistyles } from './warn'
5
6
 
6
- export const createUnistylesImageBackground = (Component: typeof ImageBackground) => React.forwardRef<ImageBackground, ImageBackgroundProps>((props, forwardedRef) => (
7
- <Component
8
- {...props}
9
- ref={ref => passForwardedRef(props, ref, forwardedRef)}
10
- imageRef={ref => {
11
- const style = Array.isArray(props.imageStyle)
12
- ? props.imageStyle
13
- : [props.imageStyle]
7
+ export const createUnistylesImageBackground = (Component: typeof ImageBackground) => React.forwardRef<ImageBackground, ImageBackgroundProps>((props, forwardedRef) => {
8
+ const storedImageRef = useRef<Image | null>(null)
14
9
 
15
- // @ts-expect-error - This is hidden from TS
16
- UnistylesShadowRegistry.add(ref, style)
17
-
18
- return () => {
19
- // @ts-expect-error - This is hidden from TS
20
- UnistylesShadowRegistry.remove(ref)
10
+ useEffect(() => {
11
+ return () => {
12
+ if (storedImageRef.current) {
13
+ // @ts-ignore
14
+ UnistylesShadowRegistry.remove(storedImageRef.current)
21
15
  }
22
- }}
23
- />
24
- ))
16
+ }
17
+ }, [])
18
+
19
+ // @ts-expect-error we don't know the type of the component
20
+ maybeWarnAboutMultipleUnistyles(props.style, 'ImageBackground')
21
+ // @ts-ignore we don't know the type of the component
22
+ maybeWarnAboutMultipleUnistyles(props.imageStyle, 'ImageBackground')
23
+
24
+ return (
25
+ <Component
26
+ {...props}
27
+ ref={ref => {
28
+ passForwardedRef(props, ref, forwardedRef)
29
+
30
+ return () => {
31
+ // @ts-ignore
32
+ UnistylesShadowRegistry.remove(ref)
33
+ }
34
+ }}
35
+ imageRef={ref => {
36
+ if (ref) {
37
+ storedImageRef.current = ref
38
+ }
39
+
40
+ // @ts-expect-error web types are not compatible with RN styles
41
+ UnistylesShadowRegistry.add(ref, props.imageStyle)
42
+ }}
43
+ />
44
+ )
45
+ })
@@ -0,0 +1 @@
1
+ export const getClassName = () => undefined
@@ -0,0 +1,13 @@
1
+ import type { UnistylesValues } from '../types';
2
+ import { UnistylesShadowRegistry } from '../web';
3
+
4
+ export const getClassName = (unistyle: UnistylesValues | undefined | Array<UnistylesValues>) => {
5
+ if (!unistyle) {
6
+ return undefined
7
+ }
8
+
9
+ // @ts-expect-error hidden from TS
10
+ const { hash, injectedClassName } = UnistylesShadowRegistry.addStyles(Array.isArray(unistyle) ? unistyle : [unistyle])
11
+
12
+ return hash ? { $$css: true, hash, injectedClassName } : undefined
13
+ }
package/src/core/index.ts CHANGED
@@ -1,5 +1,6 @@
1
- export { createUnistylesComponent } from './createUnistylesComponent'
2
1
  export { createUnistylesElement } from './createUnistylesElement'
3
2
  export { createUnistylesImageBackground } from './createUnistylesImageBackground'
4
3
  export { withUnistyles } from './withUnistyles'
5
4
  export { passForwardedRef } from './passForwardRef'
5
+ export { getClassName } from './getClassname'
6
+ export { useUnistyles } from './useUnistyles'
@@ -19,11 +19,10 @@ export const passForwardedRef = <T>(
19
19
  }
20
20
  const forwardedRefReturnFn = passForwardedRef()
21
21
 
22
+ // @ts-expect-error hidden from TS
22
23
  UnistylesShadowRegistry.add(ref, props.style)
23
24
 
24
25
  return () => {
25
- // @ts-expect-error - This is hidden from TS
26
- UnistylesShadowRegistry.remove(ref)
27
26
  forwardedRefReturnFn?.()
28
27
  }
29
28
  }
@@ -0,0 +1 @@
1
+ export { useProxifiedUnistyles } from './useProxifiedUnistyles'
@@ -0,0 +1,18 @@
1
+ import { StyleSheet, UnistyleDependency } from '../../specs'
2
+ import type { ListenerProps } from './types'
3
+
4
+ export const listener = ({ dependencies, updateTheme, updateRuntime }: ListenerProps) => {
5
+ const listensToTheme = dependencies.includes(UnistyleDependency.Theme)
6
+ // @ts-expect-error - this is hidden from TS
7
+ const dispose = StyleSheet.addChangeListener(changedDependencies => {
8
+ if (listensToTheme && changedDependencies.includes(UnistyleDependency.Theme)) {
9
+ updateTheme()
10
+ }
11
+
12
+ if (changedDependencies.some((dependency: UnistyleDependency) => dependencies.includes(dependency))) {
13
+ updateRuntime()
14
+ }
15
+ })
16
+
17
+ return () => dispose()
18
+ }
@@ -0,0 +1,13 @@
1
+ import { UnistyleDependency } from '../../specs'
2
+ import { UnistylesWeb } from '../../web'
3
+ import type { ListenerProps } from './types'
4
+
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)
8
+
9
+ return () => {
10
+ disposeTheme()
11
+ disposeRuntime()
12
+ }
13
+ }
@@ -0,0 +1,7 @@
1
+ import type { UnistyleDependency } from '../../specs'
2
+
3
+ export type ListenerProps = {
4
+ updateTheme: VoidFunction,
5
+ updateRuntime: VoidFunction,
6
+ dependencies: Array<UnistyleDependency>
7
+ }
@@ -3,7 +3,7 @@ import { UnistylesRuntime, UnistylesShadowRegistry, type UnistylesMiniRuntime }
3
3
  // It's imported that way because of circular dependency
4
4
  import { UnistyleDependency } from '../../specs/NativePlatform'
5
5
  import type { UnistylesTheme } from '../../types'
6
- import type { Mappings } from './types'
6
+ import { listener } from './listener'
7
7
 
8
8
  const getMiniRuntime = (): UnistylesMiniRuntime => {
9
9
  // @ts-expect-error This is hidden from TS
@@ -26,13 +26,7 @@ const RTDependencyMap = {
26
26
  themeName: UnistyleDependency.ThemeName,
27
27
  } satisfies Partial<Record<keyof UnistylesMiniRuntime, UnistyleDependency>>
28
28
 
29
- type ListenerProps = {
30
- updateTheme: VoidFunction,
31
- updateRuntime: VoidFunction,
32
- dependencies: Array<UnistyleDependency>
33
- }
34
-
35
- export const useDependencies = (listener: (props: ListenerProps) => VoidFunction) => {
29
+ export const useProxifiedUnistyles = () => {
36
30
  const scopedTheme = UnistylesShadowRegistry.getScopedTheme() as UnistylesTheme
37
31
  const [dependencies] = useState(() => new Set<number>())
38
32
  const [theme, setTheme] = useState(UnistylesRuntime.getTheme(scopedTheme))
@@ -60,27 +54,26 @@ export const useDependencies = (listener: (props: ListenerProps) => VoidFunction
60
54
  return () => disposeRef.current?.()
61
55
  }, [dependencies.size])
62
56
 
63
- return {
64
- mappingsCallback: (callback: Mappings) => {
65
- const proxifiedTheme = new Proxy(theme, {
66
- get: (target, prop) => {
67
- dependencies.add(UnistyleDependency.Theme)
57
+ const proxifiedTheme = new Proxy(theme, {
58
+ get: (target, prop) => {
59
+ dependencies.add(UnistyleDependency.Theme)
68
60
 
69
- return target[prop]
70
- }
71
- })
72
- const proxifiedRuntime = new Proxy(getMiniRuntime(), {
73
- get: (target, prop) => {
74
- if (prop in RTDependencyMap) {
75
- dependencies.add(RTDependencyMap[prop as keyof typeof RTDependencyMap])
76
- }
61
+ return target[prop]
62
+ }
63
+ })
64
+ const proxifiedRuntime = new Proxy(getMiniRuntime(), {
65
+ get: (target, prop) => {
66
+ if (prop in RTDependencyMap) {
67
+ dependencies.add(RTDependencyMap[prop as keyof typeof RTDependencyMap])
68
+ }
77
69
 
78
- return target[prop as keyof typeof target]
79
- }
80
- })
70
+ return target[prop as keyof typeof target]
71
+ }
72
+ })
81
73
 
82
- return callback(proxifiedTheme, proxifiedRuntime)
83
- },
74
+ return {
75
+ proxifiedTheme,
76
+ proxifiedRuntime,
84
77
  addDependencies: (newDependencies: Array<UnistyleDependency>) => {
85
78
  const dependenciesSize = dependencies.size
86
79
 
@@ -0,0 +1,11 @@
1
+ import type { UnistylesTheme } from '../types'
2
+ import { useProxifiedUnistyles } from './useProxifiedUnistyles'
3
+
4
+ export const useUnistyles = () => {
5
+ const { proxifiedRuntime, proxifiedTheme } = useProxifiedUnistyles()
6
+
7
+ return {
8
+ theme: proxifiedTheme as UnistylesTheme,
9
+ rt: proxifiedRuntime
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ import type { ViewStyle } from 'react-native'
2
+
3
+ export const maybeWarnAboutMultipleUnistyles = (style: ViewStyle, displayName = 'Unknown') => {
4
+ if (__DEV__ && style && !Array.isArray(style)) {
5
+ const unistylesKeys = Object
6
+ .keys(style)
7
+ .filter(key => key.startsWith('unistyles-'))
8
+
9
+ if (unistylesKeys.length > 1) {
10
+ console.warn(`Unistyles: we detected style object with ${unistylesKeys.length} unistyles styles. This might cause no updates or unpredictable behavior. Please check style prop for "${displayName}" and use array syntax instead of object syntax.`)
11
+ }
12
+ }
13
+ }
@@ -1,10 +1,10 @@
1
- import React, { forwardRef, useEffect, useRef, type ComponentType } from 'react'
2
- import { StyleSheet, UnistyleDependency } from '../../specs'
1
+ import React, { forwardRef, useEffect, type ComponentType } from 'react'
2
+ import type { UnistyleDependency } from '../../specs'
3
3
  import type { PartialBy } from '../../types/common'
4
4
  import { deepMergeObjects } from '../../utils'
5
- import { SUPPORTED_STYLE_PROPS } from './types'
6
5
  import type { Mappings, SupportedStyleProps } from './types'
7
- import { useDependencies } from './useDependencies'
6
+ import { maybeWarnAboutMultipleUnistyles } from '../warn'
7
+ import { useProxifiedUnistyles } from '../useProxifiedUnistyles'
8
8
 
9
9
  // @ts-expect-error
10
10
  type GenericComponentProps<P> = ComponentProps<P>
@@ -16,81 +16,52 @@ export const withUnistyles = <TComponent, TMappings extends GenericComponentProp
16
16
  type PropsWithUnistyles = PartialBy<TProps, keyof TMappings | SupportedStyleProps> & {
17
17
  uniProps?: Mappings<TProps>
18
18
  }
19
+ const getSecrets = (styleProps: Record<string, any> = {}): { uni__getStyles(): any, uni__dependencies: Array<UnistyleDependency> } => {
20
+ const unistyleKey = Object
21
+ .keys(styleProps)
22
+ .find(key => key.startsWith('unistyles-'))
23
+
24
+ return unistyleKey
25
+ ? styleProps[unistyleKey]
26
+ : {
27
+ uni__getStyles: () => styleProps,
28
+ uni__dependencies: [],
29
+ }
30
+ }
19
31
 
20
32
  return forwardRef<GenericComponentRef<TComponent>, PropsWithUnistyles>((props, ref) => {
21
33
  const narrowedProps = props as PropsWithUnistyles
22
- const stylesRef = useRef<Record<string, any>>({})
23
- const isForcedRef = useRef(false)
24
34
  const NativeComponent = Component as ComponentType
25
35
 
26
- if (!isForcedRef.current) {
27
- SUPPORTED_STYLE_PROPS.forEach(propName => {
28
- if (narrowedProps?.[propName]) {
29
- if (Array.isArray(narrowedProps[propName])) {
30
- console.error(`🦄 Unistyles: withUnistyles requires ${propName} to be an object. Please check props for component: ${NativeComponent.displayName}`)
31
- }
32
-
33
- // @ts-expect-error - this is hidden from TS
34
- if (props[propName].__unistyles_name && !props[propName].__proto__?.getStyle) {
35
- console.error(`🦄 Unistyles: withUnistyles received style that is not bound. You likely used the spread operator on a Unistyle style. Please check props for component: ${NativeComponent.displayName}`)
36
- }
37
-
38
- stylesRef.current = {
39
- ...stylesRef.current,
40
- // @ts-expect-error - this is hidden from TS
41
- [propName]: props[propName].__proto__?.getStyle?.() || props[propName]
42
- }
43
- }
44
- })
45
- }
46
-
47
- const { mappingsCallback, addDependencies } = useDependencies(({ dependencies, updateTheme, updateRuntime }) => {
48
- const listensToTheme = dependencies.includes(UnistyleDependency.Theme)
49
- // @ts-expect-error - this is hidden from TS
50
- const dispose = StyleSheet.addChangeListener(changedDependencies => {
51
- if (listensToTheme && changedDependencies.includes(UnistyleDependency.Theme)) {
52
- updateTheme()
53
- }
54
-
55
- if (changedDependencies.some((dependency: UnistyleDependency) => dependencies.includes(dependency))) {
56
- SUPPORTED_STYLE_PROPS.forEach(propName => {
57
- if (narrowedProps?.[propName]) {
58
- stylesRef.current = {
59
- ...stylesRef.current,
60
- // @ts-expect-error - this is hidden from TS
61
- [propName]: props[propName].__proto__?.getStyle?.() || props[propName]
62
- }
36
+ // @ts-ignore we don't know the type of the component
37
+ maybeWarnAboutMultipleUnistyles(narrowedProps.style, `withUnistyles(${Component.displayName ?? Component.name ?? 'Unknown'})`)
38
+ // @ts-ignore we don't know the type of the component
39
+ maybeWarnAboutMultipleUnistyles(narrowedProps.contentContainerStyle, `withUnistyles(${Component.displayName ?? Component.name ?? 'Unknown'})`)
63
40
 
64
- isForcedRef.current = true
65
- }
66
- })
67
-
68
- updateRuntime()
69
- }
70
- })
71
-
72
- return () => dispose()
73
- })
41
+ const { proxifiedRuntime, proxifiedTheme, addDependencies } = useProxifiedUnistyles()
74
42
 
75
43
  useEffect(() => {
76
- const styleDependencies = narrowedProps.style?.__proto__.uni__dependencies ?? [] as Array<UnistyleDependency>
77
- const contentContainerStyleDependencies = narrowedProps.contentContainerStyle?.__proto__.uni__dependencies ?? [] as Array<UnistyleDependency>
44
+ const styleSecrets = getSecrets(narrowedProps.style)
45
+ const contentContainerStyleSecrets = getSecrets(narrowedProps.contentContainerStyle)
78
46
 
79
- addDependencies([...styleDependencies, ...contentContainerStyleDependencies])
47
+ addDependencies(Array.from(new Set([...styleSecrets.uni__dependencies, ...contentContainerStyleSecrets.uni__dependencies])))
80
48
  }, [narrowedProps.style, narrowedProps.contentContainerStyle])
81
49
 
82
- const mappingProps = mappings ? mappingsCallback(mappings) : {}
83
- const unistyleProps = narrowedProps.uniProps ? mappingsCallback(narrowedProps.uniProps) : {}
84
- const finalProps = deepMergeObjects<Record<string, any>>(mappingProps, unistyleProps, props)
85
-
86
- // override with Unistyles styles
87
- SUPPORTED_STYLE_PROPS.forEach(propName => {
88
- if (finalProps[propName]) {
89
- finalProps[propName] = stylesRef.current[propName]
90
- }
91
- })
92
-
93
- isForcedRef.current = false
50
+ const mappingsProps = mappings ? mappings(proxifiedTheme, proxifiedRuntime) : {}
51
+ const unistyleProps = narrowedProps.uniProps ? narrowedProps.uniProps(proxifiedTheme, proxifiedRuntime) : {}
52
+
53
+ const styleSecrets = getSecrets(narrowedProps.style)
54
+ const contentContainerStyleSecrets = getSecrets(narrowedProps.contentContainerStyle)
55
+
56
+ const finalProps = {
57
+ ...deepMergeObjects(mappingsProps, unistyleProps, props),
58
+ ...narrowedProps.style ? {
59
+ style: styleSecrets.uni__getStyles(),
60
+ } : {},
61
+ ...narrowedProps.contentContainerStyle ? {
62
+ contentContainerStyle: contentContainerStyleSecrets.uni__getStyles(),
63
+ } : {},
64
+ } as any
94
65
 
95
66
  return <NativeComponent {...finalProps as TProps} ref={ref} />
96
67
  })