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
package/plugin/import.js CHANGED
@@ -1,3 +1,4 @@
1
+ /** @param {import('./index').UnistylesPluginPass} state */
1
2
  function addUnistylesImport(t, path, state) {
2
3
  const localNames = Object.keys(state.reactNativeImports)
3
4
  const names = Object.values(state.reactNativeImports)
@@ -38,27 +39,6 @@ function addUnistylesImport(t, path, state) {
38
39
  path.node.body.unshift(newImport)
39
40
  })
40
41
 
41
- // import variants
42
- if (state.file.hasVariants) {
43
- const unistylesImport = path.node.body
44
- .find(node => t.isImportDeclaration(node) && node.source.value === 'react-native-unistyles')
45
-
46
- if (unistylesImport) {
47
- // prevent duplications
48
- if (!unistylesImport.specifiers.some(specifier => specifier.local.name === 'Variants')) {
49
- unistylesImport.specifiers.push(t.importSpecifier(t.identifier('Variants'), t.identifier('Variants')))
50
- }
51
- } else {
52
- // Add a new import declaration for "Variants" from "react-native-unistyles"
53
- const newImport = t.importDeclaration(
54
- [t.importSpecifier(t.identifier('Variants'), t.identifier('Variants'))],
55
- t.stringLiteral('react-native-unistyles')
56
- )
57
-
58
- path.node.body.unshift(newImport)
59
- }
60
- }
61
-
62
42
  // cleanup
63
43
  nodesToRemove.forEach(node => path.node.body.splice(path.node.body.indexOf(node), 1))
64
44
  }
@@ -0,0 +1,41 @@
1
+ export interface UnistylesPluginOptions {
2
+ /**
3
+ * By default babel plugin will look for any `react-native-unistyles` import to start processing your file.
4
+ * However, in some cases you might want to process files that miss such import:
5
+ * - ui-kits that aggregates Unistyles components
6
+ * - monorepos that use Unistyles under absolute path like `@codemask/styles`
7
+ *
8
+ * If that's your case, you can configure the Babel plugin to process them.
9
+ */
10
+ autoProcessImports?: string[]
11
+
12
+ /**
13
+ * By default babel plugin will ignore `node_modules`.
14
+ * However similar to `autoProcessImports`, you can configure it to process extra paths.
15
+ *
16
+ * Under these paths we will replace `react-native` imports with `react-native-unistyles` factories that will borrow components refs [read more](https://www.unistyl.es/v3/other/babel-plugin#3-component-factory-borrowing-ref).
17
+ *
18
+ * Defaults to:
19
+ *
20
+ * ```ts
21
+ * ['react-native-reanimated/src/component', 'react-native-gesture-handler/src/components']
22
+ * ```
23
+ */
24
+ autoProcessPaths?: string[];
25
+
26
+ /**
27
+ * In order to list detected dependencies by the Babel plugin you can enable the `debug` flag.
28
+ * It will `console.log` name of the file and component with Unistyles dependencies.
29
+ */
30
+ debug?: boolean;
31
+
32
+ /**
33
+ * Only applicable for Unistyles monorepo for
34
+ * path resolution, don't use it!
35
+ */
36
+ isLocal?: boolean;
37
+ }
38
+
39
+ export interface UnistylesPluginPass {
40
+ opts: UnistylesPluginOptions;
41
+ }
package/plugin/index.js CHANGED
@@ -1,8 +1,7 @@
1
1
  const { addUnistylesImport, isInsideNodeModules } = require('./import')
2
- const { getStyleMetadata, getStyleAttribute, styleAttributeToArray, handlePressable } = require('./style')
3
2
  const { hasStringRef } = require('./ref')
4
- const { isUnistylesStyleSheet, analyzeDependencies, addStyleSheetTag, getUnistyles } = require('./stylesheet')
5
- const { isUsingVariants, extractVariants, addJSXVariants } = require('./variants')
3
+ const { isUnistylesStyleSheet, analyzeDependencies, addStyleSheetTag, getUnistyles, isKindOfStyleSheet } = require('./stylesheet')
4
+ const { extractVariants } = require('./variants')
6
5
 
7
6
  const reactNativeComponentNames = [
8
7
  'ActivityIndicator',
@@ -20,38 +19,52 @@ const reactNativeComponentNames = [
20
19
  'RefreshControl',
21
20
  'TouchableHighlight',
22
21
  'TouchableOpacity',
23
- 'VirtualizedList'
22
+ 'VirtualizedList',
23
+ // Modal - there is no exposed native handle
24
+ // TouchableWithoutFeedback - can't accept a ref
24
25
  ]
25
26
 
26
- // Modal - there is no exposed native handle
27
- // TouchableWithoutFeedback - can't accept a ref
27
+ // auto replace RN imports to Unistyles imports under these paths
28
+ // our implementation simply borrows 'ref' to register it in ShadowRegistry
29
+ // so we won't affect anyone's implementation
30
+ const REPLACE_WITH_UNISTYLES_PATHS = [
31
+ 'react-native-reanimated/src/component',
32
+ 'react-native-gesture-handler/src/components'
33
+ ]
28
34
 
29
35
  module.exports = function ({ types: t }) {
30
36
  return {
31
37
  name: 'babel-react-native-unistyles',
32
38
  visitor: {
33
39
  Program: {
40
+ /** @param {import('./index').UnistylesPluginPass} state */
34
41
  enter(path, state) {
35
- if (isInsideNodeModules(state)) {
36
- return
37
- }
42
+ state.file.replaceWithUnistyles = REPLACE_WITH_UNISTYLES_PATHS
43
+ .concat(state.opts.autoProcessPaths ?? [])
44
+ .some(path => state.filename.includes(path))
38
45
 
39
46
  state.file.hasAnyUnistyle = false
40
- state.file.hasUnistylesImport = false
41
- state.file.shouldIncludePressable = false
42
47
  state.file.hasVariants = false
43
48
  state.file.styleSheetLocalName = ''
44
49
  state.file.tagNumber = 0
45
- state.file.isClassComponent = false
46
50
  state.reactNativeImports = {}
51
+ state.file.forceProcessing = false
47
52
  },
48
53
  exit(path, state) {
49
- if (state.file.hasAnyUnistyle || state.file.hasVariants) {
54
+ if (isInsideNodeModules(state) && !state.file.replaceWithUnistyles) {
55
+ return
56
+ }
57
+
58
+ if (state.file.hasAnyUnistyle || state.file.hasVariants || state.file.replaceWithUnistyles) {
50
59
  addUnistylesImport(t, path, state)
51
60
  }
52
61
  }
53
62
  },
54
63
  FunctionDeclaration(path, state) {
64
+ if (isInsideNodeModules(state)) {
65
+ return
66
+ }
67
+
55
68
  const componentName = path.node.id
56
69
  ? path.node.id.name
57
70
  : null
@@ -61,13 +74,16 @@ module.exports = function ({ types: t }) {
61
74
  }
62
75
  },
63
76
  ClassDeclaration(path, state) {
77
+ if (isInsideNodeModules(state)) {
78
+ return
79
+ }
80
+
64
81
  const componentName = path.node.id
65
82
  ? path.node.id.name
66
83
  : null
67
84
 
68
85
  if (componentName) {
69
86
  state.file.hasVariants = false
70
- state.file.isClassComponent = true
71
87
  }
72
88
  },
73
89
  VariableDeclaration(path, state) {
@@ -87,16 +103,15 @@ module.exports = function ({ types: t }) {
87
103
  }
88
104
  })
89
105
  },
106
+ /** @param {import('./index').UnistylesPluginPass} state */
90
107
  ImportDeclaration(path, state) {
91
- if (isInsideNodeModules(state)) {
108
+ if (isInsideNodeModules(state) && !state.file.replaceWithUnistyles) {
92
109
  return
93
110
  }
94
111
 
95
112
  const importSource = path.node.source.value
96
113
 
97
114
  if (importSource.includes('react-native-unistyles')) {
98
- state.file.hasUnistylesImport = true
99
-
100
115
  path.node.specifiers.forEach(specifier => {
101
116
  if (specifier.imported && specifier.imported.name === 'StyleSheet') {
102
117
  state.file.styleSheetLocalName = specifier.local.name
@@ -104,20 +119,16 @@ module.exports = function ({ types: t }) {
104
119
  })
105
120
  }
106
121
 
107
- if (importSource.includes('react-native')) {
122
+ if (importSource === 'react-native') {
108
123
  path.node.specifiers.forEach(specifier => {
109
- if (specifier.imported && specifier.imported.name === 'Pressable' && specifier.local.name !== 'NativePressableReactNative') {
110
- state.file.shouldIncludePressable = true
111
- }
112
-
113
124
  if (specifier.imported && reactNativeComponentNames.includes(specifier.imported.name)) {
114
125
  state.reactNativeImports[specifier.local.name] = specifier.imported.name
115
126
  }
116
127
  })
117
128
  }
118
129
 
119
- if (importSource.includes('react-native-web/dist/exports/Pressable')) {
120
- state.file.shouldIncludePressable = true
130
+ if (!state.file.forceProcessing && Array.isArray(state.opts.autoProcessImports)) {
131
+ state.file.forceProcessing = state.opts.autoProcessImports.includes(importSource)
121
132
  }
122
133
  },
123
134
  JSXElement(path, state) {
@@ -125,63 +136,28 @@ module.exports = function ({ types: t }) {
125
136
  return
126
137
  }
127
138
 
128
- if (state.file.isClassComponent) {
129
- return
130
- }
131
-
132
- const openingElement = path.node.openingElement
133
- const openingElementName = openingElement.name.name
134
- const isReactNativeComponent = Boolean(state.reactNativeImports[openingElementName])
135
- const isAnimatedComponent = (
136
- !isReactNativeComponent &&
137
- openingElement.name.object &&
138
- openingElement.name.object.name === 'Animated'
139
- )
140
-
141
- if (!isReactNativeComponent && !isAnimatedComponent) {
142
- return
143
- }
144
-
145
- const styleAttr = getStyleAttribute(t, path)
146
-
147
- // component has no style prop
148
- if (!styleAttr) {
149
- return
150
- }
151
-
152
- const metadata = getStyleMetadata(t, styleAttr.value.expression, null, state)
153
-
154
- if (openingElementName === 'Pressable') {
155
- return handlePressable(t, path, styleAttr, metadata, state)
156
- }
157
-
158
- // style prop is using unexpected expression
159
- if (metadata.length === 0) {
160
- return
161
- }
162
-
163
- styleAttributeToArray(t, path)
164
-
165
- // to add import
166
- state.file.hasAnyUnistyle = true
167
-
168
139
  if (hasStringRef(t, path)) {
169
140
  throw new Error("Detected string based ref which is not supported by Unistyles.")
170
141
  }
171
142
  },
172
- CallExpression(path, state) {
143
+ BlockStatement(path, state) {
173
144
  if (isInsideNodeModules(state)) {
174
145
  return
175
146
  }
176
147
 
177
- if (isUsingVariants(t, path)) {
178
- extractVariants(t, path, state)
148
+ extractVariants(t, path, state)
149
+ },
150
+ CallExpression(path, state) {
151
+ if (isInsideNodeModules(state)) {
152
+ return
179
153
  }
180
154
 
181
- if (!isUnistylesStyleSheet(t, path, state)) {
155
+ if (!isUnistylesStyleSheet(t, path, state) && !isKindOfStyleSheet(t, path, state)) {
182
156
  return
183
157
  }
184
158
 
159
+ state.file.hasAnyUnistyle = true
160
+
185
161
  addStyleSheetTag(t, path, state)
186
162
 
187
163
  const arg = path.node.arguments[0]
@@ -227,14 +203,6 @@ module.exports = function ({ types: t }) {
227
203
  })
228
204
  }
229
205
  }
230
- },
231
- ReturnStatement(path, state) {
232
- // ignore nested returns in JSX elements
233
- const hasJSXParent = path.findParent(p => p.isJSXElement())
234
-
235
- if (!hasJSXParent && state.file.hasVariants) {
236
- addJSXVariants(t, path, state)
237
- }
238
206
  }
239
207
  }
240
208
  }
@@ -42,6 +42,20 @@ function isUnistylesStyleSheet(t, path, state) {
42
42
  )
43
43
  }
44
44
 
45
+ function isKindOfStyleSheet(t, path, state) {
46
+ if (!state.file.forceProcessing) {
47
+ return false
48
+ }
49
+
50
+ const callee = path.get('callee')
51
+
52
+ return (
53
+ t.isMemberExpression(callee.node) &&
54
+ callee.node.property.name === 'create' &&
55
+ t.isIdentifier(callee.node.object)
56
+ )
57
+ }
58
+
45
59
  function addStyleSheetTag(t, path, state) {
46
60
  const callee = path.get('callee')
47
61
  const uniqueId = stringToUniqueId(state.filename.replace(state.cwd, '')) + ++state.file.tagNumber
@@ -49,6 +63,7 @@ function addStyleSheetTag(t, path, state) {
49
63
  callee.container.arguments.push(t.numericLiteral(uniqueId))
50
64
  }
51
65
 
66
+ /** @param {import('./index').UnistylesPluginPass} state */
52
67
  function analyzeDependencies(t, state, name, unistyleObj, themeName, rtName) {
53
68
  const debugMessage = deps => {
54
69
  if (state.opts.debug) {
@@ -208,5 +223,6 @@ module.exports = {
208
223
  isUnistylesStyleSheet,
209
224
  analyzeDependencies,
210
225
  addStyleSheetTag,
211
- getUnistyles
226
+ getUnistyles,
227
+ isKindOfStyleSheet
212
228
  }
@@ -1,92 +1,66 @@
1
- function isUsingVariants(t, path) {
2
- const callee = path.get('callee')
3
-
4
- return (
5
- t.isMemberExpression(callee) &&
6
- t.isIdentifier(callee.node.object, { name: 'styles' }) &&
7
- t.isIdentifier(callee.node.property, { name: 'useVariants' }) &&
8
- t.isObjectExpression(path.node.arguments[0])
9
- )
10
- }
11
-
12
1
  function extractVariants(t, path, state) {
13
- const arg = path.node.arguments[0]
14
-
15
- const variantDeclaration = t.variableDeclaration('const', [
16
- t.variableDeclarator(
17
- t.identifier('__uni__variants'),
18
- arg
19
- )
20
- ])
21
-
22
- // Replace useVariants argument with __uni__variants
23
- path.node.arguments[0] = t.identifier('__uni__variants')
24
-
25
- path.insertBefore(variantDeclaration)
26
-
27
- state.file.hasVariants = true
28
- }
29
-
30
- function wrapVariants(t, path) {
31
- const wrapperElement = t.jsxElement(
32
- t.jsxOpeningElement(
33
- t.jsxIdentifier('Variants'),
34
- [
35
- t.jsxAttribute(
36
- t.jsxIdentifier('variants'),
37
- t.jsxExpressionContainer(t.identifier('__uni__variants'))
38
- ),
39
- ],
40
- false
41
- ),
42
- t.jsxClosingElement(t.jsxIdentifier('Variants')),
43
- []
44
- )
45
-
46
- const element = path.openingElement && path.openingElement.name
47
- const isWrappedInRegularFragment = t.isJSXFragment(path)
48
- const isWrappedInFragment = (t.isJSXMemberExpression(element) && element.object.name === 'React' && element.property.name === 'Fragment') || (t.isJSXIdentifier(element) && element.name === 'Fragment')
49
-
50
- wrapperElement.children = (isWrappedInRegularFragment || isWrappedInFragment)
51
- ? path.children
52
- : [path]
2
+ const maybeVariants = path.node.body.filter(node => (
3
+ t.isExpressionStatement(node) &&
4
+ t.isCallExpression(node.expression) &&
5
+ t.isMemberExpression(node.expression.callee)
6
+ ))
53
7
 
54
- // copy Fragment props like key
55
- if (isWrappedInFragment) {
56
- wrapperElement.openingElement.attributes.push(...path.openingElement.attributes)
8
+ if (maybeVariants.length === 0) {
9
+ return
57
10
  }
58
11
 
59
- return wrapperElement
60
- }
12
+ const targetVariant = maybeVariants.find(variant => {
13
+ const calleeName = variant.expression.callee.object.name
14
+
15
+ return (
16
+ t.isIdentifier(variant.expression.callee.object, { name: calleeName }) &&
17
+ t.isIdentifier(variant.expression.callee.property, { name: 'useVariants' }) &&
18
+ t.isObjectExpression(variant.expression.arguments[0])
19
+ )
20
+ })
61
21
 
62
- function addJSXVariants(t, path) {
63
- if (!t.isReturnStatement(path.node)) {
22
+ if (!targetVariant) {
64
23
  return
65
24
  }
66
25
 
67
- const jsxElement = path.node.argument
26
+ const calleeName = targetVariant.expression.callee.object.name
27
+ const node = targetVariant.expression
28
+ const newUniqueName = path.scope.generateUidIdentifier(calleeName)
68
29
 
69
- if (t.isConditionalExpression(jsxElement)) {
70
- const ifStatement = t.ifStatement(
71
- jsxElement.test,
72
- t.blockStatement([t.returnStatement(jsxElement.consequent)]),
73
- t.blockStatement([t.returnStatement(jsxElement.alternate)])
74
- )
30
+ // Create shadow declaration eg. const _styles = styles
31
+ const shadowDeclaration = t.variableDeclaration('const', [
32
+ t.variableDeclarator(newUniqueName, t.identifier(calleeName))
33
+ ])
75
34
 
76
- path.replaceWith(ifStatement)
35
+ // Create the new call expression eg. const styles = _styles.useVariants(...)
36
+ const newCallExpression = t.callExpression(
37
+ t.memberExpression(t.identifier(newUniqueName.name), t.identifier('useVariants')),
38
+ node.arguments
39
+ )
40
+ const finalDeclaration = t.variableDeclaration('const', [
41
+ t.variableDeclarator(t.identifier(calleeName), newCallExpression)
42
+ ])
77
43
 
78
- return
79
- }
44
+ // Find the current node's index, we will move everything after to new block
45
+ const pathIndex = path.node.body
46
+ .findIndex(bodyPath => bodyPath === targetVariant)
47
+ const rest = path.node.body.slice(pathIndex + 1)
80
48
 
81
- if (!t.isJSXElement(jsxElement) && !t.isJSXFragment(jsxElement)) {
82
- return
83
- }
49
+ // move rest to new block (scope)
50
+ const blockStatement = t.blockStatement([
51
+ finalDeclaration,
52
+ ...rest
53
+ ])
54
+
55
+ path.node.body = [
56
+ ...path.node.body.slice(0, pathIndex),
57
+ shadowDeclaration,
58
+ blockStatement
59
+ ]
84
60
 
85
- path.get('argument').replaceWith(wrapVariants(t, jsxElement));
61
+ state.file.hasVariants = true
86
62
  }
87
63
 
88
64
  module.exports = {
89
- isUsingVariants,
90
- extractVariants,
91
- addJSXVariants
65
+ extractVariants
92
66
  }
@@ -21,7 +21,7 @@ export const ScopedTheme: React.FunctionComponent<React.PropsWithChildren<ThemeP
21
21
  const mappedChildren = [
22
22
  <Apply key={name} name={name} />,
23
23
  children,
24
- <Apply key='dispose' name={previousScopedTheme} />
24
+ <Apply key='dispose' name={previousScopedTheme as keyof UnistylesThemes | undefined} />
25
25
  ]
26
26
 
27
27
  return (
@@ -1,4 +1,3 @@
1
1
  export { Hide } from './Hide'
2
2
  export { Display } from './Display'
3
- export { Variants } from './Variants'
4
3
  export { ScopedTheme } from './ScopedTheme'
@@ -0,0 +1,4 @@
1
+ import { ImageBackground as NativeImageBackground } from 'react-native'
2
+ import { createUnistylesImageBackground } from '../../core'
3
+
4
+ export const ImageBackground = createUnistylesImageBackground(NativeImageBackground)
@@ -1,4 +1,56 @@
1
+ import React from 'react'
1
2
  import { ImageBackground as NativeImageBackground } from 'react-native'
2
- import { createUnistylesImageBackground } from '../../core'
3
+ import { forwardRef } from 'react'
4
+ import type { UnistylesValues } from '../../types'
5
+ import { getClassName } from '../../core'
6
+ import { isServer } from '../../web/utils'
7
+ import { UnistylesShadowRegistry } from '../../web'
3
8
 
4
- export const ImageBackground = createUnistylesImageBackground(NativeImageBackground)
9
+ type Props = {
10
+ style?: UnistylesValues
11
+ imageStyle?: UnistylesValues
12
+ }
13
+
14
+ export const ImageBackground = forwardRef<unknown, Props>((props, forwardedRef) => {
15
+ let storedRef: NativeImageBackground | null = null
16
+ let storedImageRef: NativeImageBackground | null = null
17
+ const styleClassNames = getClassName(props.style)
18
+ const imageClassNames = getClassName(props.imageStyle)
19
+
20
+ return (
21
+ // @ts-expect-error - RN types are not compatible with RNW styles
22
+ <NativeImageBackground
23
+ {...props}
24
+ style={styleClassNames}
25
+ imageStyle={imageClassNames}
26
+ ref={isServer() ? undefined : ref => {
27
+ if (!ref) {
28
+ // @ts-expect-error hidden from TS
29
+ UnistylesShadowRegistry.remove(storedRef, styleClassNames?.hash)
30
+ }
31
+
32
+ storedRef = ref
33
+ // @ts-expect-error hidden from TS
34
+ UnistylesShadowRegistry.add(ref, styleClassNames?.hash)
35
+
36
+ if (typeof forwardedRef === 'function') {
37
+ return forwardedRef(ref)
38
+ }
39
+
40
+ if (forwardedRef) {
41
+ forwardedRef.current = ref
42
+ }
43
+ }}
44
+ imageRef={isServer() ? undefined : ref => {
45
+ if (!ref) {
46
+ // @ts-expect-error hidden from TS
47
+ UnistylesShadowRegistry.remove(storedImageRef, imageClassNames?.hash)
48
+ }
49
+
50
+ storedImageRef = ref
51
+ // @ts-expect-error hidden from TS
52
+ UnistylesShadowRegistry.add(ref, imageClassNames?.hash)
53
+ }}
54
+ />
55
+ )
56
+ })
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useRef } from 'react'
1
+ import React, { forwardRef, useEffect, useRef } from 'react'
2
2
  import { Pressable as NativePressableReactNative } from 'react-native'
3
3
  import type { PressableProps as Props, View } from 'react-native'
4
4
  import { UnistylesShadowRegistry } from '../../specs'
@@ -11,6 +11,15 @@ type PressableProps = Props & {
11
11
  export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ...props }, forwardedRef) => {
12
12
  const storedRef = useRef<View | null>()
13
13
 
14
+ useEffect(() => {
15
+ return () => {
16
+ if (storedRef.current) {
17
+ // @ts-expect-error - this is hidden from TS
18
+ UnistylesShadowRegistry.remove(storedRef.current)
19
+ }
20
+ }
21
+ }, [])
22
+
14
23
  return (
15
24
  <NativePressableReactNative
16
25
  {...props}
@@ -18,14 +27,13 @@ export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ..
18
27
  const unistyles = typeof style === 'function'
19
28
  ? style({ pressed: false })
20
29
  : style
21
- const styles = Array.isArray(unistyles)
22
- ? unistyles
23
- : [unistyles]
24
30
 
25
- // @ts-expect-error - this is hidden from TS
26
- UnistylesShadowRegistry.add(ref, styles)
31
+ // @ts-expect-error web types are not compatible with RN styles
32
+ UnistylesShadowRegistry.add(ref, unistyles)
27
33
 
28
- storedRef.current = ref
34
+ if (ref) {
35
+ storedRef.current = ref
36
+ }
29
37
 
30
38
  return passForwardedRef(props, ref, forwardedRef)
31
39
  }}
@@ -33,22 +41,13 @@ export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ..
33
41
  const unistyles = typeof style === 'function'
34
42
  ? style(state)
35
43
  : style
36
- const styles = Array.isArray(unistyles)
37
- ? unistyles
38
- : [unistyles]
39
44
 
40
45
  if (!storedRef.current) {
41
46
  return unistyles
42
47
  }
43
48
 
44
- if (state.pressed) {
45
- UnistylesShadowRegistry.selectVariants(variants)
46
- }
47
-
48
- // @ts-expect-error - this is hidden from TS
49
- UnistylesShadowRegistry.remove(storedRef.current)
50
49
  // @ts-expect-error - this is hidden from TS
51
- UnistylesShadowRegistry.add(storedRef.current, styles)
50
+ UnistylesShadowRegistry.add(storedRef.current, unistyles)
52
51
 
53
52
  return unistyles
54
53
  }}