react-native-unistyles 3.0.0-beta.4 → 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 +17 -10
  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/README.md CHANGED
@@ -59,12 +59,12 @@ Then follow [installation guides](https://unistyl.es/v3/start/getting-started) f
59
59
  <a href="https://github.com/happyfloat">
60
60
  <img src="https://avatars.githubusercontent.com/u/186333704?s=200&v=4" height="70px" width="70px" alt="happyfloat" />
61
61
  </a>
62
- <a href="https://github.com/hyoban">
63
- <img src="https://avatars.githubusercontent.com/u/38493346?v=4" height="70px" width="70px" alt="hyoban" />
64
- </a>
65
62
  <a href="https://github.com/oscklm">
66
63
  <img src="https://avatars.githubusercontent.com/u/22825865?v=4" height="70px" width="70px" alt="oscklm" />
67
64
  </a>
65
+ <a href="https://github.com/giovannilondero">
66
+ <img src="https://avatars.githubusercontent.com/u/10998991?v=4" height="70px" width="70px" alt="giovannilondero" />
67
+ </a>
68
68
 
69
69
  ## Past sponsors
70
70
 
@@ -86,6 +86,9 @@ Then follow [installation guides](https://unistyl.es/v3/start/getting-started) f
86
86
  <a href="https://github.com/abanobboles">
87
87
  <img src="https://avatars.githubusercontent.com/u/9078953?v=4" height="70px" width="70px" alt="abanobboles" />
88
88
  </a>
89
+ <a href="https://github.com/hyoban">
90
+ <img src="https://avatars.githubusercontent.com/u/38493346?v=4" height="70px" width="70px" alt="hyoban" />
91
+ </a>
89
92
 
90
93
  ## Sponsor my work
91
94
 
@@ -35,7 +35,7 @@ void UnistylesModule::registerNatives() {
35
35
  jni::local_ref<BindingsInstallerHolder::javaobject> UnistylesModule::getBindingsInstaller(jni::alias_ref<UnistylesModule::javaobject> jobj) {
36
36
  auto& runtimeExecutor = jobj->cthis()->_runtimeExecutor;
37
37
  auto& uiManager = jobj->cthis()->_uiManager;
38
- auto& nativePlatform = *jobj->cthis()->_nativePlatform;
38
+ auto& nativePlatform = jobj->cthis()->_nativePlatform;
39
39
 
40
40
  return BindingsInstallerHolder::newObjectCxxArgs([&runtimeExecutor, uiManager, nativePlatform](jsi::Runtime& rt) {
41
41
  // function is called on: first init and every live reload
@@ -36,7 +36,7 @@ struct UnistylesModule : public jni::HybridClass<UnistylesModule> {
36
36
  private:
37
37
  std::shared_ptr<UIManager> _uiManager;
38
38
  RuntimeExecutor _runtimeExecutor;
39
- Unistyles::HybridNativePlatformSpecCxx* _nativePlatform;
39
+ std::shared_ptr<HybridNativePlatformSpec> _nativePlatform;
40
40
  };
41
41
 
42
42
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/ActivityIndicator.js",
3
- "module": "../../../lib/module/components/native/ActivityIndicator.js"
3
+ "module": "../../../lib/module/components/native/ActivityIndicator.js",
4
+ "react-native": "../../../src/components/native/ActivityIndicator.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/FlatList.js",
3
- "module": "../../../lib/module/components/native/FlatList.js"
3
+ "module": "../../../lib/module/components/native/FlatList.js",
4
+ "react-native": "../../../src/components/native/FlatList.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/Image.js",
3
- "module": "../../../lib/module/components/native/Image.js"
3
+ "module": "../../../lib/module/components/native/Image.js",
4
+ "react-native": "../../../src/components/native/Image.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/ImageBackground.js",
3
- "module": "../../../lib/module/components/native/ImageBackground.js"
3
+ "module": "../../../lib/module/components/native/ImageBackground.js",
4
+ "react-native": "../../../src/components/native/ImageBackground.native.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/KeyboardAvoidingView.js",
3
- "module": "../../../lib/module/components/native/KeyboardAvoidingView.js"
3
+ "module": "../../../lib/module/components/native/KeyboardAvoidingView.js",
4
+ "react-native": "../../../src/components/native/KeyboardAvoidingView.tsx"
4
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/Pressable.js",
3
3
  "module": "../../../lib/module/components/native/Pressable.js",
4
- "react-native": "../../../lib/commonjs/components/native/Pressable.native.js"
4
+ "react-native": "../../../src/components/native/Pressable.native.tsx"
5
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/RefreshControl.js",
3
- "module": "../../../lib/module/components/native/RefreshControl.js"
3
+ "module": "../../../lib/module/components/native/RefreshControl.js",
4
+ "react-native": "../../../src/components/native/RefreshControl.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/ScrollView.js",
3
- "module": "../../../lib/module/components/native/ScrollView.js"
3
+ "module": "../../../lib/module/components/native/ScrollView.js",
4
+ "react-native": "../../../src/components/native/ScrollView.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/SectionList.js",
3
- "module": "../../../lib/module/components/native/SectionList.js"
3
+ "module": "../../../lib/module/components/native/SectionList.js",
4
+ "react-native": "../../../src/components/native/SectionList.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/Switch.js",
3
- "module": "../../../lib/module/components/native/Switch.js"
3
+ "module": "../../../lib/module/components/native/Switch.js",
4
+ "react-native": "../../../src/components/native/Switch.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/Text.js",
3
- "module": "../../../lib/module/components/native/Text.js"
3
+ "module": "../../../lib/module/components/native/Text.js",
4
+ "react-native": "../../../src/components/native/Text.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/TextInput.js",
3
- "module": "../../../lib/module/components/native/TextInput.js"
3
+ "module": "../../../lib/module/components/native/TextInput.js",
4
+ "react-native": "../../../src/components/native/TextInput.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/TouchableHighlight.js",
3
- "module": "../../../lib/module/components/native/TouchableHighlight.js"
3
+ "module": "../../../lib/module/components/native/TouchableHighlight.js",
4
+ "react-native": "../../../src/components/native/TouchableHighlight.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/TouchableOpacity.js",
3
- "module": "../../../lib/module/components/native/TouchableOpacity.js"
3
+ "module": "../../../lib/module/components/native/TouchableOpacity.js",
4
+ "react-native": "../../../src/components/native/TouchableOpacity.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/View.js",
3
- "module": "../../../lib/module/components/native/View.js"
3
+ "module": "../../../lib/module/components/native/View.js",
4
+ "react-native": "../../../src/components/native/View.tsx"
4
5
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "main": "../../../lib/commonjs/components/native/VirtualizedList.js",
3
- "module": "../../../lib/module/components/native/VirtualizedList.js"
3
+ "module": "../../../lib/module/components/native/VirtualizedList.js",
4
+ "react-native": "../../../src/components/native/VirtualizedList.tsx"
4
5
  }
@@ -2,14 +2,14 @@
2
2
 
3
3
  namespace margelo::nitro::unistyles::helpers {
4
4
 
5
- static const std::string UNISTYLES_ID = "__unid";
5
+ static const std::string STYLESHEET_ID = "__stylesheetID";
6
+ static const std::string UNISTYLE_ID = "__unistyleID";
6
7
  static const std::string ADD_VARIANTS_FN = "useVariants";
7
8
  static const std::string STYLE_DEPENDENCIES = "uni__dependencies";
8
- static const std::string STYLE_VARIANTS = "uni__variants";
9
+ static const std::string STYLESHEET_VARIANTS = "__stylesheetVariants";
9
10
  static const std::string WEB_STYLE_KEY = "_web";
10
11
  static const std::string EXOTIC_STYLE_KEY = "_exotic";
11
- static const std::string NAME_STYLE_KEY = "__unistyles_name";
12
- static const std::string SECRETS = "__uni__secrets";
13
12
  static const std::string ARGUMENTS = "__uni__args";
13
+ static const std::string GET_STYLES = "uni__getStyles";
14
14
 
15
15
  }
@@ -147,7 +147,7 @@ inline jsi::Object variantsToValue(jsi::Runtime& rt, Variants& variants) {
147
147
  return rawVariants;
148
148
  }
149
149
 
150
- inline std::vector<folly::dynamic> parseDynamicFunctionArguments(jsi::Runtime& rt, jsi::Array&& arguments) {
150
+ inline std::vector<folly::dynamic> parseDynamicFunctionArguments(jsi::Runtime& rt, jsi::Array& arguments) {
151
151
  std::vector<folly::dynamic> parsedArgument{};
152
152
  size_t count = arguments.size(rt);
153
153
 
@@ -0,0 +1,23 @@
1
+ #include "HashGenerator.h"
2
+ #include <sstream>
3
+ #include <iomanip>
4
+ #include <functional>
5
+
6
+ namespace margelo::nitro::unistyles::helpers {
7
+
8
+ std::atomic<unsigned int> HashGenerator::count(0);
9
+
10
+ std::string HashGenerator::generateHash(const std::string& input) {
11
+ std::hash<std::string> stringHasher;
12
+ uint64_t inputHash = stringHasher(input);
13
+
14
+ unsigned int counterValue = count.fetch_add(1, std::memory_order_relaxed);
15
+ uint64_t combinedHash = inputHash ^ (static_cast<uint64_t>(counterValue) << 32);
16
+
17
+ std::stringstream ss;
18
+ ss << std::hex << std::setfill('0') << std::setw(8) << (combinedHash & 0xFFFFFFFF);
19
+
20
+ return "unistyles-" + ss.str();
21
+ }
22
+
23
+ }
@@ -0,0 +1,13 @@
1
+ #pragma once
2
+
3
+ #include <string>
4
+ #include <atomic>
5
+
6
+ namespace margelo::nitro::unistyles::helpers {
7
+
8
+ struct HashGenerator {
9
+ static std::atomic<unsigned int> count;
10
+ static std::string generateHash(const std::string& input);
11
+ };
12
+
13
+ }
@@ -0,0 +1,83 @@
1
+ #include "HostUnistyle.h"
2
+
3
+ using namespace margelo::nitro::unistyles::core;
4
+ using namespace facebook;
5
+
6
+ std::vector<jsi::PropNameID> HostUnistyle::getPropertyNames(jsi::Runtime& rt) {
7
+ auto propertyNames = std::vector<jsi::PropNameID> {};
8
+
9
+ propertyNames.reserve(8);
10
+
11
+ for (const auto& pair : this->_stylesheet->unistyles) {
12
+ propertyNames.emplace_back(jsi::PropNameID::forUtf8(rt, pair.first));
13
+ }
14
+
15
+ propertyNames.emplace_back(jsi::PropNameID::forUtf8(rt, helpers::ADD_VARIANTS_FN.c_str()));
16
+
17
+ return propertyNames;
18
+ }
19
+
20
+ jsi::Value HostUnistyle::get(jsi::Runtime& rt, const jsi::PropNameID& propNameId) {
21
+ auto propertyName = propNameId.utf8(rt);
22
+
23
+ if (propertyName == helpers::STYLESHEET_ID.c_str()) {
24
+ return jsi::Value(this->_stylesheet->tag);
25
+ }
26
+
27
+ if (propertyName == helpers::STYLESHEET_VARIANTS.c_str()) {
28
+ return helpers::variantsToValue(rt, this->_variants);
29
+ }
30
+
31
+ if (propertyName == helpers::ADD_VARIANTS_FN.c_str()) {
32
+ return this->createAddVariantsProxyFunction(rt);
33
+ }
34
+
35
+ if (!this->_stylesheet->unistyles.contains(propertyName)) {
36
+ return jsi::Value::undefined();
37
+ }
38
+
39
+ auto& unistyle = this->_stylesheet->unistyles[propertyName];
40
+
41
+ // check if Unistyles recomputed new style in the background
42
+ // ()when no node was mounted), if so we need to simply rebuild unistyle to get fresh data
43
+ if (unistyle->isDirty) {
44
+ auto parser = parser::Parser(this->_unistylesRuntime);
45
+
46
+ parser.rebuildUnistyle(rt, unistyle, this->_variants, std::nullopt);
47
+ }
48
+
49
+ return valueFromUnistyle(rt, this->_unistylesRuntime, this->_stylesheet->unistyles[propertyName], this->_variants);
50
+ }
51
+
52
+ void HostUnistyle::set(jsi::Runtime& rt, const jsi::PropNameID& propNameId, const jsi::Value& value) {}
53
+
54
+ jsi::Function HostUnistyle::createAddVariantsProxyFunction(jsi::Runtime& rt) {
55
+ auto useVariantsFnName = jsi::PropNameID::forUtf8(rt, helpers::ADD_VARIANTS_FN);
56
+
57
+ return jsi::Function::createFromHostFunction(rt, useVariantsFnName, 1, [this](jsi::Runtime &rt, const jsi::Value &thisVal, const jsi::Value *arguments, size_t count){
58
+ helpers::assertThat(rt, count == 1, "Unistyles: useVariants expected to be called with one argument.");
59
+ helpers::assertThat(rt, arguments[0].isObject(), "Unistyles: useVariants expected to be called with object.");
60
+
61
+ Variants variants = helpers::variantsToPairs(rt, arguments[0].asObject(rt));
62
+ parser::Parser parser = parser::Parser(this->_unistylesRuntime);
63
+
64
+ helpers::enumerateJSIObject(rt, thisVal.asObject(rt), [this, &parser, &rt, &variants](const std::string& name, jsi::Value& value){
65
+ if (name == helpers::ADD_VARIANTS_FN || !this->_stylesheet->unistyles.contains(name)) {
66
+ return;
67
+ }
68
+
69
+ auto unistyle = this->_stylesheet->unistyles[name];
70
+
71
+ if (unistyle->dependsOn(UnistyleDependency::VARIANTS)) {
72
+ parser.rebuildUnistyle(rt, unistyle, variants, std::nullopt);
73
+ }
74
+ });
75
+
76
+ this->_variants = variants;
77
+
78
+ auto style = std::make_shared<core::HostUnistyle>(this->_stylesheet, this->_unistylesRuntime, variants);
79
+ auto styleHostObject = jsi::Object::createFromHostObject(rt, style);
80
+
81
+ return styleHostObject;
82
+ });
83
+ }
@@ -0,0 +1,27 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+ #include "Parser.h"
5
+ #include "UnistyleWrapper.h"
6
+
7
+ namespace margelo::nitro::unistyles::core {
8
+
9
+ using Variants = std::vector<std::pair<std::string, std::string>>;
10
+
11
+ struct JSI_EXPORT HostUnistyle : public jsi::HostObject {
12
+ HostUnistyle(std::shared_ptr<StyleSheet> stylesheet, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, Variants& variants)
13
+ : _stylesheet(stylesheet), _unistylesRuntime{unistylesRuntime}, _variants{std::move(variants)} {};
14
+
15
+ std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& rt);
16
+ jsi::Value get(jsi::Runtime& rt, const jsi::PropNameID& propNameId);
17
+ void set(jsi::Runtime& rt, const jsi::PropNameID& propNameId, const jsi::Value& value);
18
+
19
+ jsi::Function createAddVariantsProxyFunction(jsi::Runtime& rt);
20
+
21
+ private:
22
+ Variants _variants;
23
+ std::shared_ptr<StyleSheet> _stylesheet;
24
+ std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
25
+ };
26
+
27
+ }
@@ -0,0 +1,18 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+ #include "Helpers.h"
5
+ #include "Parser.h"
6
+ #include "HostUnistyle.h"
7
+ #include "UnistyleWrapper.h"
8
+
9
+ namespace margelo::nitro::unistyles::core {
10
+
11
+ inline jsi::Object toRNStyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> stylesheet, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, Variants&& variants) {
12
+ auto style = std::make_shared<core::HostUnistyle>(stylesheet, unistylesRuntime, variants);
13
+ auto styleHostObject = jsi::Object::createFromHostObject(rt, style);
14
+
15
+ return styleHostObject;
16
+ }
17
+
18
+ }
@@ -19,8 +19,8 @@ enum class UnistyleType {
19
19
  struct Unistyle {
20
20
  using Shared = std::shared_ptr<Unistyle>;
21
21
 
22
- Unistyle(UnistyleType type, std::string styleKey, jsi::Object& rawObject, std::shared_ptr<StyleSheet> styleSheet)
23
- : styleKey{styleKey}, type{type}, rawValue{std::move(rawObject)}, parent{styleSheet} {}
22
+ Unistyle(std::string hash, UnistyleType type, std::string styleKey, jsi::Object& rawObject, std::shared_ptr<StyleSheet> styleSheet)
23
+ : unid{hash}, styleKey{styleKey}, type{type}, rawValue{std::move(rawObject)}, parent{styleSheet} {}
24
24
  virtual ~Unistyle() = default;
25
25
 
26
26
  Unistyle(const Unistyle&) = delete;
@@ -28,11 +28,16 @@ struct Unistyle {
28
28
 
29
29
  UnistyleType type;
30
30
  std::string styleKey;
31
+ std::string unid;
31
32
  jsi::Object rawValue;
32
33
  std::optional<jsi::Object> parsedStyle;
33
34
  std::vector<UnistyleDependency> dependencies{};
34
35
  std::shared_ptr<StyleSheet> parent;
35
36
 
37
+ // defines if given unattached unistyle was modified
38
+ // and should be recomputed when mounting new node
39
+ bool isDirty = false;
40
+
36
41
  inline void addDependency(UnistyleDependency dependency) {
37
42
  // we can't add dependencies if unistyle is sealed
38
43
  if (this->_isSealed) {
@@ -65,8 +70,8 @@ struct UnistyleDynamicFunction: public Unistyle {
65
70
  // unprocessedValue <- object generated after calling proxy and user's original function
66
71
  // parsedStyle <- parsed with Unistyle's parser
67
72
 
68
- UnistyleDynamicFunction(UnistyleType type, std::string styleKey, jsi::Object& rawObject, std::shared_ptr<StyleSheet> styleSheet)
69
- : Unistyle(type, styleKey, rawObject, styleSheet) {}
73
+ UnistyleDynamicFunction(std::string hash, UnistyleType type, std::string styleKey, jsi::Object& rawObject, std::shared_ptr<StyleSheet> styleSheet)
74
+ : Unistyle(hash, type, styleKey, rawObject, styleSheet) {}
70
75
 
71
76
  UnistyleDynamicFunction(const UnistyleDynamicFunction&) = delete;
72
77
  UnistyleDynamicFunction(UnistyleDynamicFunction&& other) = delete;
@@ -21,6 +21,7 @@ struct UnistyleWrapper: public jsi::NativeState {
21
21
 
22
22
  inline static Unistyle::Shared unistyleFromStaticStyleSheet(jsi::Runtime& rt, jsi::Object& value) {
23
23
  auto exoticUnistyle = std::make_shared<Unistyle>(
24
+ helpers::HashGenerator::generateHash(helpers::EXOTIC_STYLE_KEY),
24
25
  UnistyleType::Object,
25
26
  helpers::EXOTIC_STYLE_KEY,
26
27
  value,
@@ -32,56 +33,63 @@ inline static Unistyle::Shared unistyleFromStaticStyleSheet(jsi::Runtime& rt, js
32
33
  return exoticUnistyle;
33
34
  }
34
35
 
35
- inline static std::vector<Unistyle::Shared> unistylesFromNonExistentNativeState(jsi::Runtime& rt, jsi::Object& value) {
36
- auto hasUnistyleName = value.hasProperty(rt, helpers::NAME_STYLE_KEY.c_str());
37
-
38
- // return wrapped RN/inline style
39
- if (!hasUnistyleName) {
40
- return {unistyleFromStaticStyleSheet(rt, value)};
41
- }
36
+ inline static std::vector<std::string> getUnistylesHashKeys(jsi::Runtime& rt, jsi::Object& object) {
37
+ std::vector<std::string> matchingKeys{};
38
+ const std::string prefix = "unistyles-";
42
39
 
43
- throw jsi::JSError(rt, R"(Unistyles: Style is not bound!
40
+ auto propertyNames = object.getPropertyNames(rt);
41
+ size_t length = propertyNames.length(rt);
44
42
 
45
- Potential reasons:
46
- - You likely used the spread operator on a Unistyle style outside of a JSX component
43
+ for (size_t i = 0; i < length; i++) {
44
+ auto propertyName = propertyNames.getValueAtIndex(rt, i).getString(rt);
45
+ std::string key = propertyName.utf8(rt);
47
46
 
48
- If you need to merge styles, do it within the style prop of your JSX component:
47
+ if (key.compare(0, prefix.length(), prefix) == 0) {
48
+ matchingKeys.push_back(key);
49
+ }
50
+ }
49
51
 
50
- style={{...styles.container, ...styles.otherProp}}
51
- or
52
- style={[styles.container, styles.otherProp]}
52
+ return matchingKeys;
53
+ }
53
54
 
54
- If you pass computed style prop to component use array syntax:
55
+ inline static std::vector<Unistyle::Shared> unistylesFromHashKeys(jsi::Runtime& rt, jsi::Object& object, std::vector<std::string> keys) {
56
+ std::vector<Unistyle::Shared> unistyles{};
57
+ auto& registry = UnistylesRegistry::get();
55
58
 
56
- customStyleProp={[styles.container, styles.otherProp]}
59
+ for (auto& key: keys) {
60
+ unistyles.emplace_back(registry.getUnistyleById(rt, key));
61
+ }
57
62
 
58
- Copying a Unistyle style outside of a JSX element will remove its internal C++ state, leading to unexpected behavior.)");
63
+ return unistyles;
59
64
  }
60
65
 
61
- inline static jsi::Object generateUnistylesPrototype(
62
- jsi::Runtime& rt,
63
- std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime,
64
- Unistyle::Shared unistyle,
65
- std::optional<Variants> variants,
66
- std::optional<jsi::Array> arguments
67
- ) {
68
- // add prototype metadata for createUnistylesComponent
69
- auto proto = jsi::Object(rt);
70
- auto hostFn = jsi::Function::createFromHostFunction(rt, jsi::PropNameID::forUtf8(rt, "getStyle"), 0, [unistyle, unistylesRuntime](jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count){
71
- auto variants = helpers::variantsToPairs(rt, thisValue.asObject(rt).getProperty(rt, "variants").asObject(rt));
72
- auto arguments = helpers::parseDynamicFunctionArguments(rt, thisValue.asObject(rt).getProperty(rt, "arguments").asObject(rt).asArray(rt));
73
-
74
- parser::Parser(unistylesRuntime).rebuildUnistyle(rt, unistyle->parent, unistyle, variants, std::make_optional<std::vector<folly::dynamic>>(arguments));
66
+ inline static std::vector<Unistyle::Shared> unistylesFromNonExistentNativeState(jsi::Runtime& rt, jsi::Object& value) {
67
+ auto unistyleHashKeys = getUnistylesHashKeys(rt, value);
75
68
 
76
- return jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
69
+ // return wrapped RN/inline style
70
+ if (unistyleHashKeys.empty()) {
71
+ return {unistyleFromStaticStyleSheet(rt, value)};
72
+ }
73
+
74
+ // last chance to fallback and get unistyle based on hash
75
+ auto unistyles = unistylesFromHashKeys(rt, value, unistyleHashKeys);
76
+ auto areValid = std::all_of(unistyles.begin(), unistyles.end(), [](Unistyle::Shared unistyle){
77
+ return unistyle != nullptr;
77
78
  });
78
79
 
79
- proto.setProperty(rt, "getStyle", std::move(hostFn));
80
- proto.setProperty(rt, "arguments", arguments.has_value() ? std::move(arguments.value()) : jsi::Array(rt, 0));
81
- proto.setProperty(rt, "variants", variants.has_value() ? helpers::pairsToVariantsValue(rt, variants.value()) : jsi::Object(rt));
82
- proto.setProperty(rt, helpers::STYLE_DEPENDENCIES.c_str(), helpers::dependenciesToJSIArray(rt, unistyle->dependencies));
80
+ if (!areValid) {
81
+ throw jsi::JSError(rt, R"(Unistyles: Style is not bound!
83
82
 
84
- return proto;
83
+ You likely altered unistyle hash key and we're not able to recover C++ state attached to this node.)");
84
+ }
85
+
86
+ // someone merged unistyles, and will be warned in JS
87
+ // the best we can do is to return first unistyle
88
+ if (unistyles.size() > 1) {
89
+ return {unistyles.at(0)};
90
+ }
91
+
92
+ return unistyles;
85
93
  }
86
94
 
87
95
  inline static std::vector<Unistyle::Shared> unistyleFromValue(jsi::Runtime& rt, const jsi::Value& value) {
@@ -116,28 +124,65 @@ inline static std::vector<Unistyle::Shared> unistyleFromValue(jsi::Runtime& rt,
116
124
  return unistyles;
117
125
  }
118
126
 
119
- inline static jsi::Value valueFromUnistyle(jsi::Runtime& rt, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, Unistyle::Shared unistyle, Variants& variants) {
127
+ inline static jsi::Value objectFromUnistyle(jsi::Runtime& rt, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, Unistyle::Shared unistyle, Variants& variants, std::optional<jsi::Array> arguments) {
120
128
  auto wrappedUnistyle = std::make_shared<UnistyleWrapper>(unistyle);
129
+ auto unistyleID = jsi::PropNameID::forUtf8(rt, unistyle->unid);
121
130
 
122
- if (unistyle->type == UnistyleType::Object) {
123
- jsi::Object obj = jsi::Object(rt);
131
+ jsi::Object obj = jsi::Object(rt);
124
132
 
125
- obj.setNativeState(rt, std::move(wrappedUnistyle));
126
- obj.setProperty(rt, helpers::NAME_STYLE_KEY.c_str(), jsi::String::createFromUtf8(rt, unistyle->styleKey));
133
+ obj.setNativeState(rt, std::move(wrappedUnistyle));
127
134
 
128
- helpers::defineHiddenProperty(rt, obj, helpers::STYLE_DEPENDENCIES.c_str(), helpers::dependenciesToJSIArray(rt, unistyle->dependencies));
129
- helpers::mergeJSIObjects(rt, obj, unistyle->parsedStyle.value());
135
+ auto secrets = jsi::Object(rt);
130
136
 
131
- obj.setProperty(rt, "__proto__", generateUnistylesPrototype(rt, unistylesRuntime, unistyle, variants, std::nullopt));
137
+ auto parsedArguments = arguments.has_value()
138
+ ? helpers::parseDynamicFunctionArguments(rt, arguments.value())
139
+ : std::optional<std::vector<folly::dynamic>>{};
140
+
141
+ if (arguments.has_value()) {
142
+ // this is required for HybridShadowRegistry::link
143
+ helpers::defineHiddenProperty(rt, secrets, helpers::ARGUMENTS.c_str(), arguments.value());
144
+ }
145
+
146
+ // this is required for HybridShadowRegistry::link
147
+ helpers::defineHiddenProperty(rt, secrets, helpers::STYLESHEET_VARIANTS.c_str(), helpers::variantsToValue(rt, variants));
148
+
149
+ // this is required for withUnistyles
150
+ helpers::defineHiddenProperty(rt, secrets, helpers::STYLE_DEPENDENCIES.c_str(), helpers::dependenciesToJSIArray(rt, unistyle->dependencies));
151
+
152
+ // this is required for withUnistyles
153
+ auto hostFn = jsi::Function::createFromHostFunction(
154
+ rt,
155
+ jsi::PropNameID::forUtf8(rt, helpers::GET_STYLES.c_str()),
156
+ 0,
157
+ [unistyle, unistylesRuntime, variants, parsedArguments](jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count
158
+ ) {
159
+ parser::Parser(unistylesRuntime).rebuildUnistyle(rt, unistyle, variants, parsedArguments);
160
+
161
+ return jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
162
+ });
163
+
164
+ helpers::defineHiddenProperty(rt, secrets, helpers::GET_STYLES.c_str(), std::move(hostFn));
132
165
 
133
- return obj;
166
+ obj.setProperty(rt, unistyleID, secrets);
167
+
168
+ helpers::mergeJSIObjects(rt, obj, unistyle->parsedStyle.value());
169
+
170
+ return obj;
171
+ }
172
+
173
+ inline static jsi::Value valueFromUnistyle(jsi::Runtime& rt, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, Unistyle::Shared unistyle, Variants& variants) {
174
+ if (unistyle->type == UnistyleType::Object) {
175
+ return objectFromUnistyle(rt, unistylesRuntime, unistyle, variants, std::nullopt);
134
176
  }
135
177
 
178
+ auto wrappedUnistyle = std::make_shared<UnistyleWrapper>(unistyle);
179
+ auto unistyleID = jsi::PropNameID::forUtf8(rt, unistyle->unid);
180
+
136
181
  auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
137
182
  auto hostFn = jsi::Value(rt, unistyleFn->proxiedFunction.value()).asObject(rt).asFunction(rt);
138
183
 
139
184
  hostFn.setNativeState(rt, std::move(wrappedUnistyle));
140
- hostFn.setProperty(rt, helpers::NAME_STYLE_KEY.c_str(), jsi::String::createFromUtf8(rt, unistyleFn->styleKey));
185
+ hostFn.setProperty(rt, unistyleID, jsi::Object(rt));
141
186
 
142
187
  return std::move(hostFn);
143
188
  }