react-native-unistyles 3.0.0-alpha.2 → 3.0.0-alpha.20

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 (316) hide show
  1. package/Unistyles.podspec +3 -2
  2. package/cxx/common/Constants.h +2 -0
  3. package/cxx/common/Helpers.h +97 -5
  4. package/cxx/core/HostStyle.cpp +19 -13
  5. package/cxx/core/HostStyle.h +4 -0
  6. package/cxx/core/StyleSheet.h +0 -2
  7. package/cxx/core/StyleSheetRegistry.cpp +10 -13
  8. package/cxx/core/StyleSheetRegistry.h +4 -4
  9. package/cxx/core/Unistyle.h +7 -10
  10. package/cxx/core/UnistyleData.h +23 -0
  11. package/cxx/core/UnistyleWrapper.h +78 -10
  12. package/cxx/core/UnistylesCommitHook.cpp +22 -13
  13. package/cxx/core/UnistylesCommitHook.h +8 -1
  14. package/cxx/core/UnistylesCommitShadowNode.h +13 -0
  15. package/cxx/core/UnistylesMountHook.cpp +37 -0
  16. package/cxx/core/UnistylesMountHook.h +31 -0
  17. package/cxx/core/UnistylesRegistry.cpp +56 -81
  18. package/cxx/core/UnistylesRegistry.h +15 -13
  19. package/cxx/core/UnistylesState.cpp +14 -8
  20. package/cxx/core/UnistylesState.h +1 -0
  21. package/cxx/hybridObjects/HybridShadowRegistry.cpp +15 -9
  22. package/cxx/hybridObjects/HybridStyleSheet.cpp +43 -38
  23. package/cxx/hybridObjects/HybridStyleSheet.h +10 -7
  24. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +35 -16
  25. package/cxx/hybridObjects/HybridUnistylesRuntime.h +2 -0
  26. package/cxx/parser/Parser.cpp +105 -164
  27. package/cxx/parser/Parser.h +8 -14
  28. package/cxx/shadowTree/ShadowLeafUpdate.h +1 -1
  29. package/cxx/shadowTree/ShadowTrafficController.h +33 -0
  30. package/cxx/shadowTree/ShadowTreeManager.cpp +13 -11
  31. package/cxx/shadowTree/ShadowTreeManager.h +1 -0
  32. package/ios/Unistyles.h +1 -0
  33. package/ios/UnistylesModuleOnLoad.h +2 -0
  34. package/ios/UnistylesModuleOnLoad.mm +8 -1
  35. package/lib/commonjs/index.js +4 -0
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/commonjs/specs/NavigtionBar/index.js +1 -1
  38. package/lib/commonjs/specs/NavigtionBar/index.js.map +1 -1
  39. package/lib/commonjs/specs/ShadowRegistry/index.js +7 -6
  40. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  41. package/lib/commonjs/specs/StatusBar/index.js +1 -1
  42. package/lib/commonjs/specs/StatusBar/index.js.map +1 -1
  43. package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
  44. package/lib/commonjs/specs/UnistylesRuntime/index.js +1 -1
  45. package/lib/commonjs/specs/UnistylesRuntime/index.js.map +1 -1
  46. package/lib/commonjs/specs/index.web.js +1 -1
  47. package/lib/commonjs/web/convert/boxShadow.js +77 -0
  48. package/lib/commonjs/web/convert/boxShadow.js.map +1 -0
  49. package/lib/commonjs/web/convert/breakpoint.js +25 -0
  50. package/lib/commonjs/web/convert/breakpoint.js.map +1 -0
  51. package/lib/commonjs/web/convert/index.js +76 -0
  52. package/lib/commonjs/web/convert/index.js.map +1 -0
  53. package/lib/commonjs/web/convert/module.d.js +2 -0
  54. package/lib/commonjs/web/convert/module.d.js.map +1 -0
  55. package/lib/commonjs/web/convert/shadow.js +68 -0
  56. package/lib/commonjs/web/convert/shadow.js.map +1 -0
  57. package/lib/commonjs/web/convert/style.js +89 -0
  58. package/lib/commonjs/web/convert/style.js.map +1 -0
  59. package/lib/commonjs/web/convert/textShadow.js +73 -0
  60. package/lib/commonjs/web/convert/textShadow.js.map +1 -0
  61. package/lib/commonjs/web/convert/transform.js +72 -0
  62. package/lib/commonjs/web/convert/transform.js.map +1 -0
  63. package/lib/commonjs/web/convert/types.js +9 -0
  64. package/lib/commonjs/web/convert/types.js.map +1 -0
  65. package/lib/commonjs/web/convert/utils.js +55 -0
  66. package/lib/commonjs/web/convert/utils.js.map +1 -0
  67. package/lib/commonjs/web/create.js +51 -0
  68. package/lib/commonjs/web/create.js.map +1 -0
  69. package/lib/commonjs/web/createUnistylesComponent.js +61 -0
  70. package/lib/commonjs/web/createUnistylesComponent.js.map +1 -0
  71. package/lib/commonjs/web/index.js +60 -0
  72. package/lib/commonjs/web/index.js.map +1 -0
  73. package/lib/commonjs/web/listener/index.js +20 -0
  74. package/lib/commonjs/web/listener/index.js.map +1 -0
  75. package/lib/commonjs/web/listener/listenToDependencies.js +38 -0
  76. package/lib/commonjs/web/listener/listenToDependencies.js.map +1 -0
  77. package/lib/commonjs/web/listener/listener.js +35 -0
  78. package/lib/commonjs/web/listener/listener.js.map +1 -0
  79. package/lib/commonjs/web/mock.js +28 -0
  80. package/lib/commonjs/web/mock.js.map +1 -0
  81. package/lib/commonjs/web/mq.js +23 -0
  82. package/lib/commonjs/web/mq.js.map +1 -0
  83. package/lib/commonjs/web/pseudo.js +10 -0
  84. package/lib/commonjs/web/pseudo.js.map +1 -0
  85. package/lib/commonjs/web/registry.js +50 -0
  86. package/lib/commonjs/web/registry.js.map +1 -0
  87. package/lib/commonjs/web/runtime.js +163 -0
  88. package/lib/commonjs/web/runtime.js.map +1 -0
  89. package/lib/commonjs/web/shadowRegistry.js +123 -0
  90. package/lib/commonjs/web/shadowRegistry.js.map +1 -0
  91. package/lib/commonjs/web/state.js +81 -0
  92. package/lib/commonjs/web/state.js.map +1 -0
  93. package/lib/commonjs/web/utils.js +130 -0
  94. package/lib/commonjs/web/utils.js.map +1 -0
  95. package/lib/commonjs/web/variants/getVariants.js +39 -0
  96. package/lib/commonjs/web/variants/getVariants.js.map +1 -0
  97. package/lib/commonjs/web/variants/index.js +28 -0
  98. package/lib/commonjs/web/variants/index.js.map +1 -0
  99. package/lib/commonjs/web/variants/useVariants.js +59 -0
  100. package/lib/commonjs/web/variants/useVariants.js.map +1 -0
  101. package/lib/module/index.js +4 -0
  102. package/lib/module/index.js.map +1 -1
  103. package/lib/module/specs/NavigtionBar/index.js +1 -1
  104. package/lib/module/specs/NavigtionBar/index.js.map +1 -1
  105. package/lib/module/specs/ShadowRegistry/index.js +7 -6
  106. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  107. package/lib/module/specs/StatusBar/index.js +1 -1
  108. package/lib/module/specs/StatusBar/index.js.map +1 -1
  109. package/lib/module/specs/StyleSheet/index.js.map +1 -1
  110. package/lib/module/specs/UnistylesRuntime/index.js +1 -1
  111. package/lib/module/specs/UnistylesRuntime/index.js.map +1 -1
  112. package/lib/module/specs/index.web.js +1 -1
  113. package/lib/module/specs/index.web.js.map +1 -1
  114. package/lib/module/web/convert/boxShadow.js +72 -0
  115. package/lib/module/web/convert/boxShadow.js.map +1 -0
  116. package/lib/module/web/convert/breakpoint.js +20 -0
  117. package/lib/module/web/convert/breakpoint.js.map +1 -0
  118. package/lib/module/web/convert/index.js +71 -0
  119. package/lib/module/web/convert/index.js.map +1 -0
  120. package/lib/module/web/convert/module.d.js +2 -0
  121. package/lib/module/web/convert/module.d.js.map +1 -0
  122. package/lib/module/web/convert/shadow.js +63 -0
  123. package/lib/module/web/convert/shadow.js.map +1 -0
  124. package/lib/module/web/convert/style.js +84 -0
  125. package/lib/module/web/convert/style.js.map +1 -0
  126. package/lib/module/web/convert/textShadow.js +68 -0
  127. package/lib/module/web/convert/textShadow.js.map +1 -0
  128. package/lib/module/web/convert/transform.js +67 -0
  129. package/lib/module/web/convert/transform.js.map +1 -0
  130. package/lib/module/web/convert/types.js +5 -0
  131. package/lib/module/web/convert/types.js.map +1 -0
  132. package/lib/module/web/convert/utils.js +43 -0
  133. package/lib/module/web/convert/utils.js.map +1 -0
  134. package/lib/module/web/create.js +46 -0
  135. package/lib/module/web/create.js.map +1 -0
  136. package/lib/module/web/createUnistylesComponent.js +54 -0
  137. package/lib/module/web/createUnistylesComponent.js.map +1 -0
  138. package/lib/module/web/index.js +26 -0
  139. package/lib/module/web/index.js.map +1 -0
  140. package/lib/module/web/listener/index.js +5 -0
  141. package/lib/module/web/listener/index.js.map +1 -0
  142. package/lib/module/web/listener/listenToDependencies.js +33 -0
  143. package/lib/module/web/listener/listenToDependencies.js.map +1 -0
  144. package/lib/module/web/listener/listener.js +31 -0
  145. package/lib/module/web/listener/listener.js.map +1 -0
  146. package/lib/module/web/mock.js +24 -0
  147. package/lib/module/web/mock.js.map +1 -0
  148. package/lib/module/web/mq.js +17 -0
  149. package/lib/module/web/mq.js.map +1 -0
  150. package/lib/module/web/pseudo.js +5 -0
  151. package/lib/module/web/pseudo.js.map +1 -0
  152. package/lib/module/web/registry.js +46 -0
  153. package/lib/module/web/registry.js.map +1 -0
  154. package/lib/module/web/runtime.js +159 -0
  155. package/lib/module/web/runtime.js.map +1 -0
  156. package/lib/module/web/shadowRegistry.js +119 -0
  157. package/lib/module/web/shadowRegistry.js.map +1 -0
  158. package/lib/module/web/state.js +77 -0
  159. package/lib/module/web/state.js.map +1 -0
  160. package/lib/module/web/utils.js +112 -0
  161. package/lib/module/web/utils.js.map +1 -0
  162. package/lib/module/web/variants/getVariants.js +34 -0
  163. package/lib/module/web/variants/getVariants.js.map +1 -0
  164. package/lib/module/web/variants/index.js +5 -0
  165. package/lib/module/web/variants/index.js.map +1 -0
  166. package/lib/module/web/variants/useVariants.js +54 -0
  167. package/lib/module/web/variants/useVariants.js.map +1 -0
  168. package/lib/typescript/example/App.d.ts.map +1 -1
  169. package/lib/typescript/example/Typography.d.ts +12 -0
  170. package/lib/typescript/example/Typography.d.ts.map +1 -0
  171. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +3 -3
  172. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  173. package/lib/typescript/src/specs/StyleSheet/index.d.ts +2 -1
  174. package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
  175. package/lib/typescript/src/specs/index.web.d.ts +1 -1
  176. package/lib/typescript/src/specs/index.web.d.ts.map +1 -1
  177. package/lib/typescript/src/types/stylesheet.d.ts +2 -2
  178. package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
  179. package/lib/typescript/src/web/convert/boxShadow.d.ts.map +1 -0
  180. package/lib/typescript/src/web/convert/breakpoint.d.ts.map +1 -0
  181. package/lib/typescript/{web → src/web}/convert/index.d.ts +1 -1
  182. package/lib/typescript/src/web/convert/index.d.ts.map +1 -0
  183. package/lib/typescript/src/web/convert/shadow.d.ts.map +1 -0
  184. package/lib/typescript/src/web/convert/style.d.ts.map +1 -0
  185. package/lib/typescript/src/web/convert/textShadow.d.ts.map +1 -0
  186. package/lib/typescript/src/web/convert/transform.d.ts.map +1 -0
  187. package/lib/typescript/{web → src/web}/convert/types.d.ts +1 -1
  188. package/lib/typescript/src/web/convert/types.d.ts.map +1 -0
  189. package/lib/typescript/src/web/convert/utils.d.ts.map +1 -0
  190. package/lib/typescript/{web → src/web}/create.d.ts +11 -11
  191. package/lib/typescript/{web → src/web}/create.d.ts.map +1 -1
  192. package/lib/typescript/src/web/createUnistylesComponent.d.ts +3 -0
  193. package/lib/typescript/src/web/createUnistylesComponent.d.ts.map +1 -0
  194. package/lib/typescript/{web → src/web}/index.d.ts +14 -13
  195. package/lib/typescript/{web → src/web}/index.d.ts.map +1 -1
  196. package/lib/typescript/src/web/listener/index.d.ts +3 -0
  197. package/lib/typescript/src/web/listener/index.d.ts.map +1 -0
  198. package/lib/typescript/src/web/listener/listenToDependencies.d.ts +12 -0
  199. package/lib/typescript/src/web/listener/listenToDependencies.d.ts.map +1 -0
  200. package/lib/typescript/{web → src/web}/listener/listener.d.ts +3 -2
  201. package/lib/typescript/src/web/listener/listener.d.ts.map +1 -0
  202. package/lib/typescript/src/web/mock.d.ts +5 -0
  203. package/lib/typescript/src/web/mock.d.ts.map +1 -0
  204. package/lib/typescript/src/web/mq.d.ts.map +1 -0
  205. package/lib/typescript/src/web/pseudo.d.ts +6 -0
  206. package/lib/typescript/src/web/pseudo.d.ts.map +1 -0
  207. package/lib/typescript/src/web/registry.d.ts +15 -0
  208. package/lib/typescript/src/web/registry.d.ts.map +1 -0
  209. package/lib/typescript/{web → src/web}/runtime.d.ts +6 -7
  210. package/lib/typescript/src/web/runtime.d.ts.map +1 -0
  211. package/lib/typescript/src/web/shadowRegistry.d.ts +17 -0
  212. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -0
  213. package/lib/typescript/{web → src/web}/state.d.ts +4 -9
  214. package/lib/typescript/src/web/state.d.ts.map +1 -0
  215. package/lib/typescript/src/web/utils.d.ts +35 -0
  216. package/lib/typescript/src/web/utils.d.ts.map +1 -0
  217. package/lib/typescript/src/web/variants/getVariants.d.ts +3 -0
  218. package/lib/typescript/src/web/variants/getVariants.d.ts.map +1 -0
  219. package/lib/typescript/src/web/variants/index.d.ts +3 -0
  220. package/lib/typescript/src/web/variants/index.d.ts.map +1 -0
  221. package/lib/typescript/src/web/variants/useVariants.d.ts +3 -0
  222. package/lib/typescript/src/web/variants/useVariants.d.ts.map +1 -0
  223. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +6 -3
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +8 -3
  225. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +1 -1
  226. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +1 -1
  227. package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +14 -2
  228. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +3 -0
  229. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +3 -0
  230. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +3 -0
  231. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +3 -0
  232. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +3 -0
  233. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +1 -1
  234. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +4 -1
  235. package/package.json +3 -3
  236. package/plugin/__tests__/dependencies.spec.js +199 -111
  237. package/plugin/__tests__/ref.spec.js +638 -202
  238. package/plugin/__tests__/stylesheet.spec.js +182 -71
  239. package/plugin/index.js +110 -23
  240. package/plugin/ref.js +64 -13
  241. package/plugin/style.js +82 -22
  242. package/plugin/stylesheet.js +44 -1
  243. package/plugin/variants.js +33 -0
  244. package/src/index.ts +3 -0
  245. package/src/specs/NavigtionBar/index.ts +1 -1
  246. package/src/specs/ShadowRegistry/index.ts +10 -9
  247. package/src/specs/StatusBar/index.ts +1 -1
  248. package/src/specs/StyleSheet/index.ts +3 -1
  249. package/src/specs/UnistylesRuntime/index.ts +1 -1
  250. package/src/specs/index.web.ts +1 -1
  251. package/src/types/stylesheet.ts +2 -2
  252. package/{web → src/web}/convert/breakpoint.ts +1 -1
  253. package/{web → src/web}/convert/index.ts +2 -2
  254. package/{web → src/web}/convert/types.ts +1 -1
  255. package/src/web/create.ts +50 -0
  256. package/src/web/createUnistylesComponent.tsx +54 -0
  257. package/{web → src/web}/index.ts +3 -2
  258. package/src/web/listener/index.ts +2 -0
  259. package/src/web/listener/listenToDependencies.ts +45 -0
  260. package/{web → src/web}/listener/listener.ts +2 -2
  261. package/{web → src/web}/mock.ts +2 -12
  262. package/src/web/pseudo.ts +137 -0
  263. package/src/web/registry.ts +60 -0
  264. package/{web → src/web}/runtime.ts +4 -6
  265. package/src/web/shadowRegistry.ts +124 -0
  266. package/{web → src/web}/state.ts +5 -49
  267. package/{web → src/web}/utils.ts +91 -17
  268. package/src/web/variants/getVariants.ts +42 -0
  269. package/src/web/variants/index.ts +2 -0
  270. package/src/web/variants/useVariants.ts +65 -0
  271. package/lib/typescript/web/convert/boxShadow.d.ts.map +0 -1
  272. package/lib/typescript/web/convert/breakpoint.d.ts.map +0 -1
  273. package/lib/typescript/web/convert/index.d.ts.map +0 -1
  274. package/lib/typescript/web/convert/shadow.d.ts.map +0 -1
  275. package/lib/typescript/web/convert/style.d.ts.map +0 -1
  276. package/lib/typescript/web/convert/textShadow.d.ts.map +0 -1
  277. package/lib/typescript/web/convert/transform.d.ts.map +0 -1
  278. package/lib/typescript/web/convert/types.d.ts.map +0 -1
  279. package/lib/typescript/web/convert/utils.d.ts.map +0 -1
  280. package/lib/typescript/web/listener/index.d.ts +0 -2
  281. package/lib/typescript/web/listener/index.d.ts.map +0 -1
  282. package/lib/typescript/web/listener/listener.d.ts.map +0 -1
  283. package/lib/typescript/web/mock.d.ts +0 -14
  284. package/lib/typescript/web/mock.d.ts.map +0 -1
  285. package/lib/typescript/web/mq.d.ts.map +0 -1
  286. package/lib/typescript/web/pseudo.d.ts +0 -4
  287. package/lib/typescript/web/pseudo.d.ts.map +0 -1
  288. package/lib/typescript/web/registry.d.ts +0 -12
  289. package/lib/typescript/web/registry.d.ts.map +0 -1
  290. package/lib/typescript/web/runtime.d.ts.map +0 -1
  291. package/lib/typescript/web/state.d.ts.map +0 -1
  292. package/lib/typescript/web/useVariants.d.ts +0 -3
  293. package/lib/typescript/web/useVariants.d.ts.map +0 -1
  294. package/lib/typescript/web/utils.d.ts +0 -18
  295. package/lib/typescript/web/utils.d.ts.map +0 -1
  296. package/web/create.ts +0 -102
  297. package/web/listener/index.ts +0 -1
  298. package/web/pseudo.ts +0 -11
  299. package/web/registry.ts +0 -41
  300. package/web/useVariants.ts +0 -99
  301. /package/lib/typescript/{web → src/web}/convert/boxShadow.d.ts +0 -0
  302. /package/lib/typescript/{web → src/web}/convert/breakpoint.d.ts +0 -0
  303. /package/lib/typescript/{web → src/web}/convert/shadow.d.ts +0 -0
  304. /package/lib/typescript/{web → src/web}/convert/style.d.ts +0 -0
  305. /package/lib/typescript/{web → src/web}/convert/textShadow.d.ts +0 -0
  306. /package/lib/typescript/{web → src/web}/convert/transform.d.ts +0 -0
  307. /package/lib/typescript/{web → src/web}/convert/utils.d.ts +0 -0
  308. /package/lib/typescript/{web → src/web}/mq.d.ts +0 -0
  309. /package/{web → src/web}/convert/boxShadow.ts +0 -0
  310. /package/{web → src/web}/convert/module.d.ts +0 -0
  311. /package/{web → src/web}/convert/shadow.ts +0 -0
  312. /package/{web → src/web}/convert/style.ts +0 -0
  313. /package/{web → src/web}/convert/textShadow.ts +0 -0
  314. /package/{web → src/web}/convert/transform.ts +0 -0
  315. /package/{web → src/web}/convert/utils.ts +0 -0
  316. /package/{web → src/web}/mq.ts +0 -0
@@ -14,9 +14,9 @@ pluginTester({
14
14
  },
15
15
  tests: [
16
16
  {
17
- title: 'Does nothing if there is no import from Unistyles',
17
+ title: 'Does nothing if there is no import from React Native',
18
18
  code: `
19
- import { StyleSheet } from 'react-native'
19
+ import { StyleSheet, View, Text } from 'custom-lib'
20
20
 
21
21
  export const Example = () => {
22
22
  return (
@@ -33,7 +33,7 @@ pluginTester({
33
33
  })
34
34
  `,
35
35
  output: `
36
- import { StyleSheet } from 'react-native'
36
+ import { StyleSheet, View, Text } from 'custom-lib'
37
37
 
38
38
  export const Example = () => {
39
39
  return (
@@ -51,9 +51,9 @@ pluginTester({
51
51
  `
52
52
  },
53
53
  {
54
- title: 'Adds ref if there is any import from Unistyles',
54
+ title: 'Adds ref if there is any import from React Native',
55
55
  code: `
56
- import 'react-native-unistyles'
56
+ import { View, Text } from 'react-native'
57
57
 
58
58
  export const Example = () => {
59
59
  return (
@@ -71,15 +71,15 @@ pluginTester({
71
71
  `,
72
72
  output: `
73
73
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
74
- import 'react-native-unistyles'
74
+ import { View, Text } from 'react-native'
75
75
 
76
76
  export const Example = () => {
77
77
  return (
78
78
  <View
79
- style={styles.container}
79
+ style={[styles.container]}
80
80
  ref={ref => {
81
- UnistylesShadowRegistry.add(ref, styles.container)
82
- return () => UnistylesShadowRegistry.remove(ref, styles.container)
81
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, undefined)
82
+ return () => UnistylesShadowRegistry.remove(ref)
83
83
  }}
84
84
  >
85
85
  <Text>Hello world</Text>
@@ -94,10 +94,63 @@ pluginTester({
94
94
  })
95
95
  `
96
96
  },
97
+ {
98
+ title: 'Adds ref only for React Native components',
99
+ code: `
100
+ import { View } from 'react-native'
101
+ import { Text } from 'custom-lib'
102
+
103
+ export const Example = () => {
104
+ return (
105
+ <View style={styles.container}>
106
+ <Text style={styles.text}>Hello world</Text>
107
+ </View>
108
+ )
109
+ }
110
+
111
+ const styles = StyleSheet.create({
112
+ container: {
113
+ backgroundColor: 'red'
114
+ },
115
+ text: {
116
+ color: 'blue'
117
+ }
118
+ })
119
+ `,
120
+ output: `
121
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
122
+ import { View } from 'react-native'
123
+ import { Text } from 'custom-lib'
124
+
125
+ export const Example = () => {
126
+ return (
127
+ <View
128
+ style={[styles.container]}
129
+ ref={ref => {
130
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, undefined)
131
+ return () => UnistylesShadowRegistry.remove(ref)
132
+ }}
133
+ >
134
+ <Text style={styles.text}>Hello world</Text>
135
+ </View>
136
+ )
137
+ }
138
+
139
+ const styles = StyleSheet.create({
140
+ container: {
141
+ backgroundColor: 'red'
142
+ },
143
+ text: {
144
+ color: 'blue'
145
+ }
146
+ })
147
+ `
148
+ },
97
149
  {
98
150
  title: 'Preserves user\'s ref',
99
151
  code: `
100
152
  import React from 'react'
153
+ import { View, Text } from 'react-native'
101
154
  import { StyleSheet } from 'react-native-unistyles'
102
155
 
103
156
  export const Example = () => {
@@ -122,6 +175,7 @@ pluginTester({
122
175
  output: `
123
176
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
124
177
  import React from 'react'
178
+ import { View, Text } from 'react-native'
125
179
  import { StyleSheet } from 'react-native-unistyles'
126
180
 
127
181
  export const Example = () => {
@@ -130,38 +184,42 @@ pluginTester({
130
184
  return (
131
185
  <View
132
186
  ref={_ref => {
133
- ref = _ref
134
- UnistylesShadowRegistry.add(_ref, styles.container)
135
- return () => UnistylesShadowRegistry.remove(_ref, styles.container)
187
+ ref.current = _ref
188
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, undefined)
189
+ return () => UnistylesShadowRegistry.remove(_ref)
136
190
  }}
137
- style={styles.container}
191
+ style={[styles.container]}
138
192
  >
139
193
  <Text>Hello world</Text>
140
194
  </View>
141
195
  )
142
196
  }
143
197
 
144
- const styles = StyleSheet.create({
145
- container: {
146
- backgroundColor: 'red'
147
- }
148
- })
198
+ const styles = StyleSheet.create(
199
+ {
200
+ container: {
201
+ backgroundColor: 'red'
202
+ }
203
+ },
204
+ 921918562
205
+ )
149
206
  `
150
207
  },
151
208
  {
152
209
  title: 'Preserves user\'s ref as function',
153
210
  code: `
154
211
  import { useRef } from 'react'
212
+ import { View, Text } from 'react-native'
155
213
  import { StyleSheet } from 'react-native-unistyles'
156
214
 
157
215
  export const Example = () => {
158
- let myRef = useRef()
216
+ const myRef = useRef()
159
217
 
160
218
  return (
161
219
  <View
162
220
  ref={ref => {
163
221
  doSomething(ref)
164
- myRef = ref
222
+ myRef.current = ref
165
223
  }}
166
224
  style={styles.container}
167
225
  >
@@ -179,49 +237,54 @@ pluginTester({
179
237
  output: `
180
238
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
181
239
  import { useRef } from 'react'
240
+ import { View, Text } from 'react-native'
182
241
  import { StyleSheet } from 'react-native-unistyles'
183
242
 
184
243
  export const Example = () => {
185
- let myRef = useRef()
244
+ const myRef = useRef()
186
245
 
187
246
  return (
188
247
  <View
189
248
  ref={ref => {
190
249
  doSomething(ref)
191
- myRef = ref
192
- UnistylesShadowRegistry.add(ref, styles.container)
250
+ myRef.current = ref
251
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, undefined)
193
252
  return () => {
194
- UnistylesShadowRegistry.remove(ref, styles.container)
253
+ UnistylesShadowRegistry.remove(ref)
195
254
  }
196
255
  }}
197
- style={styles.container}
256
+ style={[styles.container]}
198
257
  >
199
258
  <Text>Hello world</Text>
200
259
  </View>
201
260
  )
202
261
  }
203
262
 
204
- const styles = StyleSheet.create({
205
- container: {
206
- backgroundColor: 'red'
207
- }
208
- })
263
+ const styles = StyleSheet.create(
264
+ {
265
+ container: {
266
+ backgroundColor: 'red'
267
+ }
268
+ },
269
+ 921918562
270
+ )
209
271
  `
210
272
  },
211
273
  {
212
274
  title: 'Preserves user\'s ref as function with cleanup',
213
275
  code: `
214
276
  import React from 'react'
277
+ import { View, Text } from 'react-native'
215
278
  import { StyleSheet } from 'react-native-unistyles'
216
279
 
217
280
  export const Example = () => {
218
- let myRef = React.useRef()
281
+ const myRef = React.useRef()
219
282
 
220
283
  return (
221
284
  <View
222
285
  ref={ref => {
223
286
  doSomething(ref)
224
- myRef = ref
287
+ myRef.current = ref
225
288
 
226
289
  return () => {
227
290
  customCleanup()
@@ -243,49 +306,54 @@ pluginTester({
243
306
  output: `
244
307
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
245
308
  import React from 'react'
309
+ import { View, Text } from 'react-native'
246
310
  import { StyleSheet } from 'react-native-unistyles'
247
311
 
248
312
  export const Example = () => {
249
- let myRef = React.useRef()
313
+ const myRef = React.useRef()
250
314
 
251
315
  return (
252
316
  <View
253
317
  ref={ref => {
254
318
  doSomething(ref)
255
- myRef = ref
256
- UnistylesShadowRegistry.add(ref, styles.container)
319
+ myRef.current = ref
320
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, undefined)
257
321
  return () => {
258
322
  ;(() => {
259
323
  customCleanup()
260
324
  })()
261
- UnistylesShadowRegistry.remove(ref, styles.container)
325
+ UnistylesShadowRegistry.remove(ref)
262
326
  }
263
327
  }}
264
- style={styles.container}
328
+ style={[styles.container]}
265
329
  >
266
330
  <Text>Hello world</Text>
267
331
  </View>
268
332
  )
269
333
  }
270
334
 
271
- const styles = StyleSheet.create({
272
- container: {
273
- backgroundColor: 'red'
274
- }
275
- })
335
+ const styles = StyleSheet.create(
336
+ {
337
+ container: {
338
+ backgroundColor: 'red'
339
+ }
340
+ },
341
+ 921918562
342
+ )
276
343
  `
277
344
  },
278
345
  {
279
346
  title: 'Preserves user\'s ref as assigned arrow function',
280
347
  code: `
281
348
  import React from 'react'
349
+ import { View, Text } from 'react-native'
282
350
  import { StyleSheet } from 'react-native-unistyles'
283
351
 
284
352
  export const Example = () => {
285
- let myRef = React.useRef()
353
+ const myRef = React.useRef()
286
354
  const fn = ref => {
287
355
  doSomething(ref)
288
- myRef = ref
356
+ myRef.current = ref
289
357
 
290
358
  return () => {
291
359
  customCleanup2()
@@ -311,52 +379,57 @@ pluginTester({
311
379
  output: `
312
380
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
313
381
  import React from 'react'
382
+ import { View, Text } from 'react-native'
314
383
  import { StyleSheet } from 'react-native-unistyles'
315
384
 
316
385
  export const Example = () => {
317
- let myRef = React.useRef()
386
+ const myRef = React.useRef()
318
387
  const fn = ref => {
319
388
  doSomething(ref)
320
- myRef = ref
389
+ myRef.current = ref
321
390
  }
322
391
 
323
392
  return (
324
393
  <View
325
394
  ref={_ref => {
326
395
  fn(_ref)
327
- UnistylesShadowRegistry.add(_ref, styles.container)
396
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, undefined)
328
397
  return () => {
329
398
  ;(() => {
330
399
  customCleanup2()
331
400
  })()
332
- UnistylesShadowRegistry.remove(_ref, styles.container)
401
+ UnistylesShadowRegistry.remove(_ref)
333
402
  }
334
403
  }}
335
- style={styles.container}
404
+ style={[styles.container]}
336
405
  >
337
406
  <Text>Hello world</Text>
338
407
  </View>
339
408
  )
340
409
  }
341
410
 
342
- const styles = StyleSheet.create({
343
- container: {
344
- backgroundColor: 'red'
345
- }
346
- })
411
+ const styles = StyleSheet.create(
412
+ {
413
+ container: {
414
+ backgroundColor: 'red'
415
+ }
416
+ },
417
+ 921918562
418
+ )
347
419
  `
348
420
  },
349
421
  {
350
422
  title: 'Preserves user\'s ref as assigned function function',
351
423
  code: `
352
424
  import React from 'react'
425
+ import { View, Text } from 'react-native'
353
426
  import { StyleSheet } from 'react-native-unistyles'
354
427
 
355
428
  export const Example = () => {
356
- let myRef = React.useRef()
429
+ const myRef = React.useRef()
357
430
  function fn(ref) {
358
431
  doSomething(ref)
359
- myRef = ref
432
+ myRef.current = ref
360
433
 
361
434
  return () => {
362
435
  customCleanup2()
@@ -382,49 +455,54 @@ pluginTester({
382
455
  output: `
383
456
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
384
457
  import React from 'react'
458
+ import { View, Text } from 'react-native'
385
459
  import { StyleSheet } from 'react-native-unistyles'
386
460
 
387
461
  export const Example = () => {
388
- let myRef = React.useRef()
462
+ const myRef = React.useRef()
389
463
  function fn(ref) {
390
464
  doSomething(ref)
391
- myRef = ref
465
+ myRef.current = ref
392
466
  }
393
467
 
394
468
  return (
395
469
  <View
396
470
  ref={_ref => {
397
471
  fn(_ref)
398
- UnistylesShadowRegistry.add(_ref, styles.container)
472
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, undefined)
399
473
  return () => {
400
474
  ;(() => {
401
475
  customCleanup2()
402
476
  })()
403
- UnistylesShadowRegistry.remove(_ref, styles.container)
477
+ UnistylesShadowRegistry.remove(_ref)
404
478
  }
405
479
  }}
406
- style={styles.container}
480
+ style={[styles.container]}
407
481
  >
408
482
  <Text>Hello world</Text>
409
483
  </View>
410
484
  )
411
485
  }
412
486
 
413
- const styles = StyleSheet.create({
414
- container: {
415
- backgroundColor: 'red'
416
- }
417
- })
487
+ const styles = StyleSheet.create(
488
+ {
489
+ container: {
490
+ backgroundColor: 'red'
491
+ }
492
+ },
493
+ 921918562
494
+ )
418
495
  `
419
496
  },
420
497
  {
421
498
  title: 'Should not modify ref if user is using inline styles',
422
499
  code: `
423
500
  import { useRef } from 'react'
501
+ import { View, Text } from 'react-native'
424
502
  import { StyleSheet } from 'react-native-unistyles'
425
503
 
426
504
  export const Example = () => {
427
- let myRef = useRef()
505
+ const myRef = useRef()
428
506
 
429
507
  return (
430
508
  <View
@@ -445,39 +523,54 @@ pluginTester({
445
523
  })
446
524
  `,
447
525
  output: `
526
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
448
527
  import { useRef } from 'react'
528
+ import { View, Text } from 'react-native'
449
529
  import { StyleSheet } from 'react-native-unistyles'
450
530
 
451
531
  export const Example = () => {
452
- let myRef = useRef()
532
+ const myRef = useRef()
453
533
 
454
534
  return (
455
535
  <View
456
- ref={myRef}
457
- style={{
458
- backgroundColor: 'red'
536
+ ref={_ref => {
537
+ myRef.current = _ref
538
+ UnistylesShadowRegistry.add(
539
+ _ref,
540
+ {
541
+ backgroundColor: 'red'
542
+ },
543
+ undefined,
544
+ undefined
545
+ )
546
+ return () => UnistylesShadowRegistry.remove(_ref)
459
547
  }}
548
+ style={[{ backgroundColor: 'red' }]}
460
549
  >
461
550
  <Text>Hello world</Text>
462
551
  </View>
463
552
  )
464
553
  }
465
554
 
466
- const styles = StyleSheet.create({
467
- container: {
468
- backgroundColor: 'red'
469
- }
470
- })
555
+ const styles = StyleSheet.create(
556
+ {
557
+ container: {
558
+ backgroundColor: 'red'
559
+ }
560
+ },
561
+ 921918562
562
+ )
471
563
  `
472
564
  },
473
565
  {
474
- title: 'Should not modify ref if user is not member accessing styles',
566
+ title: 'Should modify ref if user is not member accessing styles',
475
567
  code: `
476
568
  import { useRef } from 'react'
569
+ import { View, Text } from 'react-native'
477
570
  import { StyleSheet } from 'react-native-unistyles'
478
571
 
479
572
  export const Example = () => {
480
- let myRef = useRef()
573
+ const myRef = useRef()
481
574
 
482
575
  return (
483
576
  <View
@@ -499,40 +592,51 @@ pluginTester({
499
592
  })
500
593
  `,
501
594
  output: `
595
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
502
596
  import { useRef } from 'react'
597
+ import { View, Text } from 'react-native'
503
598
  import { StyleSheet } from 'react-native-unistyles'
504
599
 
505
600
  export const Example = () => {
506
- let myRef = useRef()
601
+ const myRef = useRef()
507
602
 
508
603
  return (
509
604
  <View
510
- ref={myRef}
511
- style={{
512
- ...obj1,
513
- ...obj2
605
+ ref={_ref => {
606
+ myRef.current = _ref
607
+ UnistylesShadowRegistry.add(_ref, obj1, undefined, undefined)
608
+ UnistylesShadowRegistry.add(_ref, obj2, undefined, undefined)
609
+ return () => {
610
+ ;(() => UnistylesShadowRegistry.remove(_ref))()
611
+ UnistylesShadowRegistry.remove(_ref)
612
+ }
514
613
  }}
614
+ style={[obj1, obj2]}
515
615
  >
516
616
  <Text>Hello world</Text>
517
617
  </View>
518
618
  )
519
619
  }
520
620
 
521
- const styles = StyleSheet.create({
522
- container: {
523
- backgroundColor: 'red'
524
- }
525
- })
621
+ const styles = StyleSheet.create(
622
+ {
623
+ container: {
624
+ backgroundColor: 'red'
625
+ }
626
+ },
627
+ 921918562
628
+ )
526
629
  `
527
630
  },
528
631
  {
529
- title: 'Should not modify ref if user is not member accessing styles in array',
632
+ title: 'Should modify ref if user is not member accessing styles in array',
530
633
  code: `
531
634
  import { useRef } from 'react'
635
+ import { View, Text } from 'react-native'
532
636
  import { StyleSheet } from 'react-native-unistyles'
533
637
 
534
638
  export const Example = () => {
535
- let myRef = useRef()
639
+ const myRef = useRef()
536
640
 
537
641
  return (
538
642
  <View
@@ -551,34 +655,51 @@ pluginTester({
551
655
  })
552
656
  `,
553
657
  output: `
658
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
554
659
  import { useRef } from 'react'
660
+ import { View, Text } from 'react-native'
555
661
  import { StyleSheet } from 'react-native-unistyles'
556
662
 
557
663
  export const Example = () => {
558
- let myRef = useRef()
664
+ const myRef = useRef()
559
665
 
560
666
  return (
561
- <View ref={myRef} style={[obj1, obj2]}>
667
+ <View
668
+ ref={_ref => {
669
+ myRef.current = _ref
670
+ UnistylesShadowRegistry.add(_ref, obj1, undefined, undefined)
671
+ UnistylesShadowRegistry.add(_ref, obj2, undefined, undefined)
672
+ return () => {
673
+ ;(() => UnistylesShadowRegistry.remove(_ref))()
674
+ UnistylesShadowRegistry.remove(_ref)
675
+ }
676
+ }}
677
+ style={[obj1, obj2]}
678
+ >
562
679
  <Text>Hello world</Text>
563
680
  </View>
564
681
  )
565
682
  }
566
683
 
567
- const styles = StyleSheet.create({
568
- container: {
569
- backgroundColor: 'red'
570
- }
571
- })
684
+ const styles = StyleSheet.create(
685
+ {
686
+ container: {
687
+ backgroundColor: 'red'
688
+ }
689
+ },
690
+ 921918562
691
+ )
572
692
  `
573
693
  },
574
694
  {
575
695
  title: 'Should modify ref if user is using spreads on styles',
576
696
  code: `
577
697
  import { useRef } from 'react'
698
+ import { View, Text } from 'react-native'
578
699
  import { StyleSheet } from 'react-native-unistyles'
579
700
 
580
701
  export const Example = () => {
581
- let myRef = useRef()
702
+ const myRef = useRef()
582
703
 
583
704
  return (
584
705
  <View
@@ -604,45 +725,56 @@ pluginTester({
604
725
  output: `
605
726
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
606
727
  import { useRef } from 'react'
728
+ import { View, Text } from 'react-native'
607
729
  import { StyleSheet } from 'react-native-unistyles'
608
730
 
609
731
  export const Example = () => {
610
- let myRef = useRef()
732
+ const myRef = useRef()
611
733
 
612
734
  return (
613
735
  <View
614
736
  ref={_ref => {
615
- myRef = _ref
616
- UnistylesShadowRegistry.add(_ref, styles.container)
617
- return () => UnistylesShadowRegistry.remove(_ref, styles.container)
618
- }}
619
- style={{
620
- ...styles.container,
621
- ...{
622
- backgroundColor: 'red'
737
+ myRef.current = _ref
738
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, undefined)
739
+ UnistylesShadowRegistry.add(
740
+ _ref,
741
+ {
742
+ backgroundColor: 'red'
743
+ },
744
+ undefined,
745
+ undefined
746
+ )
747
+ return () => {
748
+ ;(() => UnistylesShadowRegistry.remove(_ref))()
749
+ UnistylesShadowRegistry.remove(_ref)
623
750
  }
624
751
  }}
752
+ style={[styles.container, { backgroundColor: 'red' }]}
625
753
  >
626
754
  <Text>Hello world</Text>
627
755
  </View>
628
756
  )
629
757
  }
630
758
 
631
- const styles = StyleSheet.create({
632
- container: {
633
- backgroundColor: 'red'
634
- }
635
- })
759
+ const styles = StyleSheet.create(
760
+ {
761
+ container: {
762
+ backgroundColor: 'red'
763
+ }
764
+ },
765
+ 921918562
766
+ )
636
767
  `
637
768
  },
638
769
  {
639
770
  title: 'Should modify ref if user is using array for styles',
640
771
  code: `
641
772
  import { useRef } from 'react'
773
+ import { View, Text } from 'react-native'
642
774
  import { StyleSheet } from 'react-native-unistyles'
643
775
 
644
776
  export const Example = () => {
645
- let myRef = useRef()
777
+ const myRef = useRef()
646
778
 
647
779
  return (
648
780
  <View
@@ -668,50 +800,61 @@ pluginTester({
668
800
  output: `
669
801
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
670
802
  import { useRef } from 'react'
803
+ import { View, Text } from 'react-native'
671
804
  import { StyleSheet } from 'react-native-unistyles'
672
805
 
673
806
  export const Example = () => {
674
- let myRef = useRef()
807
+ const myRef = useRef()
675
808
 
676
809
  return (
677
810
  <View
678
811
  ref={_ref => {
679
- myRef = _ref
680
- UnistylesShadowRegistry.add(_ref, styles.container)
681
- return () => UnistylesShadowRegistry.remove(_ref, styles.container)
682
- }}
683
- style={[
684
- styles.container,
685
- {
686
- backgroundColor: 'red'
812
+ myRef.current = _ref
813
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, undefined)
814
+ UnistylesShadowRegistry.add(
815
+ _ref,
816
+ {
817
+ backgroundColor: 'red'
818
+ },
819
+ undefined,
820
+ undefined
821
+ )
822
+ return () => {
823
+ ;(() => UnistylesShadowRegistry.remove(_ref))()
824
+ UnistylesShadowRegistry.remove(_ref)
687
825
  }
688
- ]}
826
+ }}
827
+ style={[styles.container, { backgroundColor: 'red' }]}
689
828
  >
690
829
  <Text>Hello world</Text>
691
830
  </View>
692
831
  )
693
832
  }
694
833
 
695
- const styles = StyleSheet.create({
696
- container: {
697
- backgroundColor: 'red'
698
- }
699
- })
834
+ const styles = StyleSheet.create(
835
+ {
836
+ container: {
837
+ backgroundColor: 'red'
838
+ }
839
+ },
840
+ 921918562
841
+ )
700
842
  `
701
843
  },
702
844
  {
703
845
  title: 'Should modify ref if user is using single style in array',
704
846
  code: `
705
847
  import { useRef } from 'react'
848
+ import { View, Text } from 'react-native'
706
849
  import { StyleSheet } from 'react-native-unistyles'
707
850
 
708
851
  export const Example = () => {
709
- let myRef = useRef()
852
+ const myRef = useRef()
710
853
 
711
854
  return (
712
855
  <View
713
856
  ref={myRef}
714
- style={[styles.container]}
857
+ style={styles.container}
715
858
  >
716
859
  <Text>Hello world</Text>
717
860
  </View>
@@ -727,17 +870,18 @@ pluginTester({
727
870
  output: `
728
871
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
729
872
  import { useRef } from 'react'
873
+ import { View, Text } from 'react-native'
730
874
  import { StyleSheet } from 'react-native-unistyles'
731
875
 
732
876
  export const Example = () => {
733
- let myRef = useRef()
877
+ const myRef = useRef()
734
878
 
735
879
  return (
736
880
  <View
737
881
  ref={_ref => {
738
- myRef = _ref
739
- UnistylesShadowRegistry.add(_ref, styles.container)
740
- return () => UnistylesShadowRegistry.remove(_ref, styles.container)
882
+ myRef.current = _ref
883
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, undefined)
884
+ return () => UnistylesShadowRegistry.remove(_ref)
741
885
  }}
742
886
  style={[styles.container]}
743
887
  >
@@ -746,21 +890,25 @@ pluginTester({
746
890
  )
747
891
  }
748
892
 
749
- const styles = StyleSheet.create({
750
- container: {
751
- backgroundColor: 'red'
752
- }
753
- })
893
+ const styles = StyleSheet.create(
894
+ {
895
+ container: {
896
+ backgroundColor: 'red'
897
+ }
898
+ },
899
+ 921918562
900
+ )
754
901
  `
755
902
  },
756
903
  {
757
904
  title: 'Should modify ref if user is using dynamic function in array',
758
905
  code: `
759
906
  import { useRef } from 'react'
907
+ import { View, Text } from 'react-native'
760
908
  import { StyleSheet } from 'react-native-unistyles'
761
909
 
762
910
  export const Example = () => {
763
- let myRef = useRef()
911
+ const myRef = useRef()
764
912
 
765
913
  return (
766
914
  <View
@@ -783,40 +931,45 @@ pluginTester({
783
931
  output: `
784
932
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
785
933
  import { useRef } from 'react'
934
+ import { View, Text } from 'react-native'
786
935
  import { StyleSheet } from 'react-native-unistyles'
787
936
 
788
937
  export const Example = () => {
789
- let myRef = useRef()
938
+ const myRef = useRef()
790
939
 
791
940
  return (
792
941
  <View
793
942
  ref={_ref => {
794
- myRef = _ref
795
- UnistylesShadowRegistry.add(_ref, styles.container)
796
- return () => UnistylesShadowRegistry.remove(_ref, styles.container)
943
+ myRef.current = _ref
944
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, [1, 2])
945
+ return () => UnistylesShadowRegistry.remove(_ref)
797
946
  }}
798
- style={[styles.container(1, 2, 1)]}
947
+ style={[styles.container(1, 2)]}
799
948
  >
800
949
  <Text>Hello world</Text>
801
950
  </View>
802
951
  )
803
952
  }
804
953
 
805
- const styles = StyleSheet.create({
806
- container: () => ({
807
- backgroundColor: 'red'
808
- })
809
- })
954
+ const styles = StyleSheet.create(
955
+ {
956
+ container: () => ({
957
+ backgroundColor: 'red'
958
+ })
959
+ },
960
+ 921918562
961
+ )
810
962
  `
811
963
  },
812
964
  {
813
965
  title: 'Should modify ref if user is using dynamic function in object',
814
966
  code: `
815
967
  import { useRef } from 'react'
968
+ import { View, Text } from 'react-native'
816
969
  import { StyleSheet } from 'react-native-unistyles'
817
970
 
818
971
  export const Example = () => {
819
- let myRef = useRef()
972
+ const myRef = useRef()
820
973
 
821
974
  return (
822
975
  <View
@@ -832,51 +985,61 @@ pluginTester({
832
985
  }
833
986
 
834
987
  const styles = StyleSheet.create({
835
- container: () => ({
988
+ container: {
836
989
  backgroundColor: 'red'
837
- })
990
+ }
838
991
  })
839
992
  `,
840
993
  output: `
841
994
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
842
995
  import { useRef } from 'react'
996
+ import { View, Text } from 'react-native'
843
997
  import { StyleSheet } from 'react-native-unistyles'
844
998
 
845
999
  export const Example = () => {
846
- let myRef = useRef()
1000
+ const myRef = useRef()
847
1001
 
848
1002
  return (
849
1003
  <View
850
1004
  ref={_ref => {
851
- myRef = _ref
852
- UnistylesShadowRegistry.add(_ref, styles.container)
853
- return () => UnistylesShadowRegistry.remove(_ref, styles.container)
854
- }}
855
- style={{
856
- backgroundColor: 'red',
857
- ...styles.container(1, 2, 1)
1005
+ myRef.current = _ref
1006
+ UnistylesShadowRegistry.add(_ref, styles.container, undefined, [1, 2])
1007
+ UnistylesShadowRegistry.add(_ref, { backgroundColor: 'red' }, undefined, undefined)
1008
+ return () => {
1009
+ ;(() => UnistylesShadowRegistry.remove(_ref))()
1010
+ UnistylesShadowRegistry.remove(_ref)
1011
+ }
858
1012
  }}
1013
+ style={[{ backgroundColor: 'red' }, styles.container(1, 2)]}
859
1014
  >
860
1015
  <Text>Hello world</Text>
861
1016
  </View>
862
1017
  )
863
1018
  }
864
1019
 
865
- const styles = StyleSheet.create({
866
- container: () => ({
867
- backgroundColor: 'red'
868
- })
869
- })
1020
+ const styles = StyleSheet.create(
1021
+ {
1022
+ container: {
1023
+ backgroundColor: 'red'
1024
+ }
1025
+ },
1026
+ 921918562
1027
+ )
870
1028
  `
871
1029
  },
872
1030
  {
873
- title: 'Should modify registry names if user changes name of member expression',
1031
+ title: 'It should extract variants and pass them to ShadowReigstry',
874
1032
  code: `
875
1033
  import { useRef } from 'react'
1034
+ import { View, Text } from 'react-native'
876
1035
  import { StyleSheet } from 'react-native-unistyles'
877
1036
 
878
1037
  export const Example = () => {
879
- let myRef = useRef()
1038
+ const myRef = useRef()
1039
+
1040
+ styles.useVariants({
1041
+ size: 'default'
1042
+ })
880
1043
 
881
1044
  return (
882
1045
  <View
@@ -890,62 +1053,90 @@ pluginTester({
890
1053
 
891
1054
  const uhh = StyleSheet.create({
892
1055
  dkk: () => ({
893
- backgroundColor: 'red'
1056
+ backgroundColor: 'red',
1057
+ variants: {
1058
+ size: {
1059
+ small: {
1060
+ backgroundColor: 'blue'
1061
+ },
1062
+ default: {
1063
+ backgroundColor: 'green'
1064
+ }
1065
+ }
1066
+ }
894
1067
  })
895
1068
  })
896
1069
  `,
897
1070
  output: `
898
1071
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
899
1072
  import { useRef } from 'react'
1073
+ import { View, Text } from 'react-native'
900
1074
  import { StyleSheet } from 'react-native-unistyles'
901
1075
 
902
1076
  export const Example = () => {
903
- let myRef = useRef()
1077
+ const myRef = useRef()
1078
+ const __uni__variants = {
1079
+ size: 'default'
1080
+ }
1081
+ styles.useVariants(__uni__variants)
904
1082
 
905
1083
  return (
906
1084
  <View
907
1085
  ref={_ref => {
908
- myRef = _ref
909
- UnistylesShadowRegistry.add(_ref, uhh.dkk)
910
- return () => UnistylesShadowRegistry.remove(_ref, uhh.dkk)
1086
+ myRef.current = _ref
1087
+ UnistylesShadowRegistry.add(_ref, uhh.dkk, __uni__variants, [])
1088
+ return () => UnistylesShadowRegistry.remove(_ref)
911
1089
  }}
912
- style={uhh.dkk(1)}
1090
+ style={[uhh.dkk()]}
913
1091
  >
914
1092
  <Text>Hello world</Text>
915
1093
  </View>
916
1094
  )
917
1095
  }
918
1096
 
919
- const uhh = StyleSheet.create({
920
- dkk: () => ({
921
- backgroundColor: 'red'
922
- })
923
- })
1097
+ const uhh = StyleSheet.create(
1098
+ {
1099
+ dkk: () => ({
1100
+ backgroundColor: 'red',
1101
+ variants: {
1102
+ size: {
1103
+ small: {
1104
+ backgroundColor: 'blue'
1105
+ },
1106
+ default: {
1107
+ backgroundColor: 'green'
1108
+ }
1109
+ }
1110
+ },
1111
+ uni__dependencies: [4]
1112
+ })
1113
+ },
1114
+ 921918562
1115
+ )
924
1116
  `
925
1117
  },
926
1118
  {
927
- title: 'Should increment counter for web dynamic functions',
1119
+ title: 'Should modify registry names if user changes name of member expression',
928
1120
  code: `
929
1121
  import { useRef } from 'react'
1122
+ import { View, Text } from 'react-native'
930
1123
  import { StyleSheet } from 'react-native-unistyles'
931
1124
 
932
1125
  export const Example = () => {
933
- let myRef = useRef()
1126
+ const myRef = useRef()
934
1127
 
935
1128
  return (
936
1129
  <View
937
1130
  ref={myRef}
938
- style={styles.container()}
1131
+ style={uhh.dkk()}
939
1132
  >
940
- <Text style={styles.container()}>
941
- Hello world
942
- </Text>
1133
+ <Text>Hello world</Text>
943
1134
  </View>
944
1135
  )
945
1136
  }
946
1137
 
947
- const styles = StyleSheet.create({
948
- container: () => ({
1138
+ const uhh = StyleSheet.create({
1139
+ dkk: () => ({
949
1140
  backgroundColor: 'red'
950
1141
  })
951
1142
  })
@@ -953,39 +1144,284 @@ pluginTester({
953
1144
  output: `
954
1145
  import { UnistylesShadowRegistry } from 'react-native-unistyles'
955
1146
  import { useRef } from 'react'
1147
+ import { View, Text } from 'react-native'
956
1148
  import { StyleSheet } from 'react-native-unistyles'
957
1149
 
958
1150
  export const Example = () => {
959
- let myRef = useRef()
1151
+ const myRef = useRef()
960
1152
 
961
1153
  return (
962
1154
  <View
963
1155
  ref={_ref => {
964
- myRef = _ref
965
- UnistylesShadowRegistry.add(_ref, styles.container)
966
- return () => UnistylesShadowRegistry.remove(_ref, styles.container)
1156
+ myRef.current = _ref
1157
+ UnistylesShadowRegistry.add(_ref, uhh.dkk, undefined, [])
1158
+ return () => UnistylesShadowRegistry.remove(_ref)
967
1159
  }}
968
- style={styles.container(1)}
1160
+ style={[uhh.dkk()]}
969
1161
  >
970
- <Text
971
- style={styles.container(2)}
1162
+ <Text>Hello world</Text>
1163
+ </View>
1164
+ )
1165
+ }
1166
+
1167
+ const uhh = StyleSheet.create(
1168
+ {
1169
+ dkk: () => ({
1170
+ backgroundColor: 'red'
1171
+ })
1172
+ },
1173
+ 921918562
1174
+ )
1175
+ `
1176
+ },
1177
+ {
1178
+ title: 'Should pass ref for dynamic functions to bind it to shadow node',
1179
+ code: `
1180
+ import { View } from 'react-native'
1181
+ import { StyleSheet } from 'react-native-unistyles'
1182
+
1183
+ export const Example = () => {
1184
+ return (
1185
+ <React.Fragment>
1186
+ <View style={styles.container(1, 5)} />
1187
+ <View style={styles.container(2, 6)} />
1188
+ <View style={styles.container(5, 1)} />
1189
+ </React.Fragment>
1190
+ )
1191
+ }
1192
+
1193
+ const styles = StyleSheet.create({
1194
+ container: (flex, gap) => ({
1195
+ flex,
1196
+ gap
1197
+ })
1198
+ })
1199
+ `,
1200
+ output: `
1201
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
1202
+ import { View } from 'react-native'
1203
+ import { StyleSheet } from 'react-native-unistyles'
1204
+
1205
+ export const Example = () => {
1206
+ return (
1207
+ <React.Fragment>
1208
+ <View
1209
+ style={[styles.container(1, 5)]}
972
1210
  ref={ref => {
973
- UnistylesShadowRegistry.add(ref, styles.container)
974
- return () => UnistylesShadowRegistry.remove(ref, styles.container)
1211
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, [1, 5])
1212
+ return () => UnistylesShadowRegistry.remove(ref)
975
1213
  }}
976
- >
977
- Hello world
978
- </Text>
979
- </View>
1214
+ />
1215
+ <View
1216
+ style={[styles.container(2, 6)]}
1217
+ ref={ref => {
1218
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, [2, 6])
1219
+ return () => UnistylesShadowRegistry.remove(ref)
1220
+ }}
1221
+ />
1222
+ <View
1223
+ style={[styles.container(5, 1)]}
1224
+ ref={ref => {
1225
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, [5, 1])
1226
+ return () => UnistylesShadowRegistry.remove(ref)
1227
+ }}
1228
+ />
1229
+ </React.Fragment>
1230
+ )
1231
+ }
1232
+
1233
+ const styles = StyleSheet.create(
1234
+ {
1235
+ container: (flex, gap) => ({
1236
+ flex,
1237
+ gap
1238
+ })
1239
+ },
1240
+ 921918562
1241
+ )
1242
+ `
1243
+ },
1244
+ {
1245
+ title: 'Should pass refs for dynamic functions',
1246
+ code: `
1247
+ import { View } from 'react-native'
1248
+ import { StyleSheet } from 'react-native-unistyles'
1249
+
1250
+ export const Example = () => {
1251
+ return (
1252
+ <React.Fragment>
1253
+ <View style={[styles.container(1, 5), styles.container2(1, 6)]} />
1254
+ </React.Fragment>
980
1255
  )
981
1256
  }
982
1257
 
983
1258
  const styles = StyleSheet.create({
984
- container: () => ({
985
- backgroundColor: 'red'
1259
+ container: (flex, gap) => ({
1260
+ flex,
1261
+ gap
986
1262
  })
987
1263
  })
1264
+ `,
1265
+ output: `
1266
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
1267
+ import { View } from 'react-native'
1268
+ import { StyleSheet } from 'react-native-unistyles'
1269
+
1270
+ export const Example = () => {
1271
+ return (
1272
+ <React.Fragment>
1273
+ <View
1274
+ style={[styles.container(1, 5), styles.container2(1, 6)]}
1275
+ ref={ref => {
1276
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, [1, 5])
1277
+ UnistylesShadowRegistry.add(ref, styles.container2, undefined, [1, 6])
1278
+ return () => {
1279
+ ;(() => UnistylesShadowRegistry.remove(ref))()
1280
+ UnistylesShadowRegistry.remove(ref)
1281
+ }
1282
+ }}
1283
+ />
1284
+ </React.Fragment>
1285
+ )
1286
+ }
1287
+
1288
+ const styles = StyleSheet.create(
1289
+ {
1290
+ container: (flex, gap) => ({
1291
+ flex,
1292
+ gap
1293
+ })
1294
+ },
1295
+ 921918562
1296
+ )
1297
+ `
1298
+ },
1299
+ {
1300
+ title: 'Should keep order of spreads',
1301
+ code: `
1302
+ import { View } from 'react-native'
1303
+ import { StyleSheet } from 'react-native-unistyles'
1304
+
1305
+ export const Example = () => {
1306
+ return (
1307
+ <View style={{...styles.container, ...styles.secondProp, ...styles.thirdProp}} />
1308
+ )
1309
+ }
1310
+
1311
+ const styles = StyleSheet.create(theme => ({
1312
+ container: {
1313
+ flex: 1,
1314
+ alignItems: 'center',
1315
+ justifyContent: 'center',
1316
+ backgroundColor: theme.colors.backgroundColor
1317
+ },
1318
+ secondProp: {
1319
+ marginHorizontal: theme.gap(10),
1320
+ backgroundColor: 'red'
1321
+ },
1322
+ thirdProp: {
1323
+ backgroundColor: 'blue'
1324
+ }
1325
+ }))
1326
+ `,
1327
+ output: `
1328
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
1329
+ import { View } from 'react-native'
1330
+ import { StyleSheet } from 'react-native-unistyles'
1331
+
1332
+ export const Example = () => {
1333
+ return (
1334
+ <View
1335
+ style={[styles.container, styles.secondProp, styles.thirdProp]}
1336
+ ref={ref => {
1337
+ UnistylesShadowRegistry.add(ref, styles.container, undefined, undefined)
1338
+ UnistylesShadowRegistry.add(ref, styles.secondProp, undefined, undefined)
1339
+ UnistylesShadowRegistry.add(ref, styles.thirdProp, undefined, undefined)
1340
+ return () => {
1341
+ ;(() => {
1342
+ ;(() => UnistylesShadowRegistry.remove(ref))()
1343
+ UnistylesShadowRegistry.remove(ref)
1344
+ })()
1345
+ UnistylesShadowRegistry.remove(ref)
1346
+ }
1347
+ }}
1348
+ />
1349
+ )
1350
+ }
1351
+
1352
+ const styles = StyleSheet.create(
1353
+ theme => ({
1354
+ container: {
1355
+ flex: 1,
1356
+ alignItems: 'center',
1357
+ justifyContent: 'center',
1358
+ backgroundColor: theme.colors.backgroundColor,
1359
+ uni__dependencies: [0]
1360
+ },
1361
+ secondProp: {
1362
+ marginHorizontal: theme.gap(10),
1363
+ backgroundColor: 'red',
1364
+ uni__dependencies: [0]
1365
+ },
1366
+ thirdProp: {
1367
+ backgroundColor: 'blue'
1368
+ }
1369
+ }),
1370
+ 921918562
1371
+ )
988
1372
  `
989
1373
  },
1374
+ {
1375
+ title: 'Should support nested styles',
1376
+ code: `
1377
+ import { View } from 'react-native'
1378
+ import { StyleSheet } from 'react-native-unistyles'
1379
+
1380
+ export const Example = ({ styles }) => {
1381
+ return (
1382
+ <View style={styles.nested.prop} />
1383
+ )
1384
+ }
1385
+
1386
+ const styles = StyleSheet.create(theme => ({
1387
+ container: {
1388
+ flex: 1,
1389
+ alignItems: 'center',
1390
+ justifyContent: 'center',
1391
+ backgroundColor: theme.colors.backgroundColor
1392
+ }
1393
+ }))
1394
+ `,
1395
+ output: `
1396
+ import { UnistylesShadowRegistry } from 'react-native-unistyles'
1397
+ import { View } from 'react-native'
1398
+ import { StyleSheet } from 'react-native-unistyles'
1399
+
1400
+ export const Example = ({ styles }) => {
1401
+ return (
1402
+ <View
1403
+ style={[styles.nested.prop]}
1404
+ ref={ref => {
1405
+ UnistylesShadowRegistry.add(ref, styles.nested.prop, undefined, undefined)
1406
+ return () => UnistylesShadowRegistry.remove(ref)
1407
+ }}
1408
+ />
1409
+ )
1410
+ }
1411
+
1412
+ const styles = StyleSheet.create(
1413
+ theme => ({
1414
+ container: {
1415
+ flex: 1,
1416
+ alignItems: 'center',
1417
+ justifyContent: 'center',
1418
+ backgroundColor: theme.colors.backgroundColor,
1419
+ uni__dependencies: [0]
1420
+ }
1421
+ }),
1422
+ 921918562
1423
+ )
1424
+ `
1425
+ }
990
1426
  ]
991
1427
  })