react-native-unistyles 3.0.0-beta.4 → 3.0.0-beta.6

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 (543) hide show
  1. package/README.md +18 -3
  2. package/android/src/main/cxx/NativeUnistylesModule.cpp +2 -2
  3. package/android/src/main/cxx/NativeUnistylesModule.h +1 -1
  4. package/android/src/main/java/com/unistyles/NativePlatform+android.kt +1 -2
  5. package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +4 -0
  6. package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +2 -1
  7. package/android/src/main/java/com/unistyles/UnistylesModule.kt +0 -4
  8. package/android/src/main/java/com/unistyles/UnistylesPackage.kt +6 -6
  9. package/components/native/ActivityIndicator/package.json +2 -1
  10. package/components/native/Animated/package.json +5 -0
  11. package/components/native/FlatList/package.json +2 -1
  12. package/components/native/Image/package.json +2 -1
  13. package/components/native/ImageBackground/package.json +2 -1
  14. package/components/native/KeyboardAvoidingView/package.json +2 -1
  15. package/components/native/NativeText/package.json +5 -0
  16. package/components/native/NativeView/package.json +5 -0
  17. package/components/native/Pressable/package.json +1 -1
  18. package/components/native/RefreshControl/package.json +2 -1
  19. package/components/native/ScrollView/package.json +2 -1
  20. package/components/native/SectionList/package.json +2 -1
  21. package/components/native/Switch/package.json +2 -1
  22. package/components/native/Text/package.json +2 -1
  23. package/components/native/TextInput/package.json +2 -1
  24. package/components/native/TouchableHighlight/package.json +2 -1
  25. package/components/native/TouchableOpacity/package.json +2 -1
  26. package/components/native/View/package.json +2 -1
  27. package/components/native/VirtualizedList/package.json +2 -1
  28. package/cxx/common/Constants.h +4 -4
  29. package/cxx/common/Helpers.h +1 -1
  30. package/cxx/core/HashGenerator.cpp +23 -0
  31. package/cxx/core/HashGenerator.h +13 -0
  32. package/cxx/core/HostUnistyle.cpp +83 -0
  33. package/cxx/core/HostUnistyle.h +27 -0
  34. package/cxx/core/RNStyle.h +18 -0
  35. package/cxx/core/Unistyle.h +13 -4
  36. package/cxx/core/UnistyleWrapper.h +92 -47
  37. package/cxx/core/UnistylesRegistry.cpp +40 -11
  38. package/cxx/core/UnistylesRegistry.h +5 -4
  39. package/cxx/hybridObjects/HybridNavigationBar.cpp +3 -3
  40. package/cxx/hybridObjects/HybridNavigationBar.h +2 -2
  41. package/cxx/hybridObjects/HybridShadowRegistry.cpp +39 -45
  42. package/cxx/hybridObjects/HybridShadowRegistry.h +0 -10
  43. package/cxx/hybridObjects/HybridStatusBar.cpp +3 -3
  44. package/cxx/hybridObjects/HybridStatusBar.h +2 -2
  45. package/cxx/hybridObjects/HybridStyleSheet.cpp +52 -10
  46. package/cxx/hybridObjects/HybridStyleSheet.h +2 -1
  47. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +15 -15
  48. package/cxx/hybridObjects/HybridUnistylesRuntime.h +2 -2
  49. package/cxx/parser/Parser.cpp +26 -27
  50. package/cxx/parser/Parser.h +2 -1
  51. package/ios/NativePlatform+ios.swift +21 -11
  52. package/ios/NativePlatform.swift +2 -2
  53. package/ios/UnistylesModuleOnLoad.h +4 -4
  54. package/ios/UnistylesModuleOnLoad.mm +5 -8
  55. package/lib/commonjs/components/ScopedTheme.js.map +1 -1
  56. package/lib/commonjs/components/index.js +0 -7
  57. package/lib/commonjs/components/index.js.map +1 -1
  58. package/lib/commonjs/components/native/Animated.js +23 -0
  59. package/lib/commonjs/components/native/Animated.js.map +1 -0
  60. package/lib/commonjs/components/native/ImageBackground.js +47 -1
  61. package/lib/commonjs/components/native/ImageBackground.js.map +1 -1
  62. package/lib/commonjs/components/native/ImageBackground.native.js +10 -0
  63. package/lib/commonjs/components/native/ImageBackground.native.js.map +1 -0
  64. package/lib/commonjs/components/native/NativeText.js +13 -0
  65. package/lib/commonjs/components/native/NativeText.js.map +1 -0
  66. package/lib/commonjs/components/native/NativeText.native.js +18 -0
  67. package/lib/commonjs/components/native/NativeText.native.js.map +1 -0
  68. package/lib/commonjs/components/native/NativeView.js +9 -0
  69. package/lib/commonjs/components/native/NativeView.js.map +1 -0
  70. package/lib/commonjs/components/native/NativeView.native.js +20 -0
  71. package/lib/commonjs/components/native/NativeView.native.js.map +1 -0
  72. package/lib/commonjs/components/native/Pressable.js +26 -51
  73. package/lib/commonjs/components/native/Pressable.js.map +1 -1
  74. package/lib/commonjs/components/native/Pressable.native.js +25 -9
  75. package/lib/commonjs/components/native/Pressable.native.js.map +1 -1
  76. package/lib/commonjs/core/createUnistylesElement.js +33 -5
  77. package/lib/commonjs/core/createUnistylesElement.js.map +1 -1
  78. package/lib/commonjs/core/createUnistylesElement.native.js +54 -0
  79. package/lib/commonjs/core/createUnistylesElement.native.js.map +1 -0
  80. package/lib/commonjs/core/createUnistylesImageBackground.js +41 -15
  81. package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
  82. package/lib/commonjs/core/getClassname.js +23 -0
  83. package/lib/commonjs/core/getClassname.js.map +1 -0
  84. package/lib/commonjs/core/getClassname.native.js +9 -0
  85. package/lib/commonjs/core/getClassname.native.js.map +1 -0
  86. package/lib/commonjs/core/index.js +14 -7
  87. package/lib/commonjs/core/index.js.map +1 -1
  88. package/lib/commonjs/core/passForwardRef.js +2 -2
  89. package/lib/commonjs/core/passForwardRef.js.map +1 -1
  90. package/lib/commonjs/core/useProxifiedUnistyles/index.js +13 -0
  91. package/lib/commonjs/core/useProxifiedUnistyles/index.js.map +1 -0
  92. package/lib/commonjs/core/useProxifiedUnistyles/listener.js +22 -0
  93. package/lib/commonjs/core/useProxifiedUnistyles/listener.js.map +1 -0
  94. package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js +26 -0
  95. package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js.map +1 -0
  96. package/lib/commonjs/core/useProxifiedUnistyles/types.js +6 -0
  97. package/lib/commonjs/core/useProxifiedUnistyles/types.js.map +1 -0
  98. package/lib/commonjs/core/{withUnistyles/useDependencies.js → useProxifiedUnistyles/useProxifiedUnistyles.js} +22 -22
  99. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -0
  100. package/lib/commonjs/core/useUnistyles.js +19 -0
  101. package/lib/commonjs/core/useUnistyles.js.map +1 -0
  102. package/lib/commonjs/core/warn.js +16 -0
  103. package/lib/commonjs/core/warn.js.map +1 -0
  104. package/lib/commonjs/core/withUnistyles/withUnistyles.js +19 -55
  105. package/lib/commonjs/core/withUnistyles/withUnistyles.js.map +1 -1
  106. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js +32 -65
  107. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js.map +1 -1
  108. package/lib/commonjs/index.js +23 -4
  109. package/lib/commonjs/index.js.map +1 -1
  110. package/lib/commonjs/server/getServerUnistyles.js +40 -0
  111. package/lib/commonjs/server/getServerUnistyles.js.map +1 -0
  112. package/lib/commonjs/server/hydrateServerUnistyles.js +17 -0
  113. package/lib/commonjs/server/hydrateServerUnistyles.js.map +1 -0
  114. package/lib/commonjs/server/index.js +34 -0
  115. package/lib/commonjs/server/index.js.map +1 -0
  116. package/lib/commonjs/server/resetServerUnistyles.js +16 -0
  117. package/lib/commonjs/server/resetServerUnistyles.js.map +1 -0
  118. package/lib/commonjs/server/types.js +8 -0
  119. package/lib/commonjs/server/types.js.map +1 -0
  120. package/lib/commonjs/server/useServerUnistyles.js +27 -0
  121. package/lib/commonjs/server/useServerUnistyles.js.map +1 -0
  122. package/lib/commonjs/specs/ShadowRegistry/index.js +6 -3
  123. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  124. package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
  125. package/lib/commonjs/utils.js +19 -2
  126. package/lib/commonjs/utils.js.map +1 -1
  127. package/lib/commonjs/web/convert/object/filter.js +2 -2
  128. package/lib/commonjs/web/convert/object/filter.js.map +1 -1
  129. package/lib/commonjs/web/convert/style.js +4 -4
  130. package/lib/commonjs/web/convert/style.js.map +1 -1
  131. package/lib/commonjs/web/create.js +20 -15
  132. package/lib/commonjs/web/create.js.map +1 -1
  133. package/lib/commonjs/web/css/core.js +55 -0
  134. package/lib/commonjs/web/css/core.js.map +1 -0
  135. package/lib/commonjs/web/css/index.js +17 -0
  136. package/lib/commonjs/web/css/index.js.map +1 -0
  137. package/lib/commonjs/web/css/state.js +155 -0
  138. package/lib/commonjs/web/css/state.js.map +1 -0
  139. package/lib/commonjs/web/css/utils.js +47 -0
  140. package/lib/commonjs/web/css/utils.js.map +1 -0
  141. package/lib/commonjs/web/index.js +14 -18
  142. package/lib/commonjs/web/index.js.map +1 -1
  143. package/lib/commonjs/web/listener.js +9 -7
  144. package/lib/commonjs/web/listener.js.map +1 -1
  145. package/lib/commonjs/web/registry.js +44 -123
  146. package/lib/commonjs/web/registry.js.map +1 -1
  147. package/lib/commonjs/web/runtime.js +28 -21
  148. package/lib/commonjs/web/runtime.js.map +1 -1
  149. package/lib/commonjs/web/services.js +28 -0
  150. package/lib/commonjs/web/services.js.map +1 -0
  151. package/lib/commonjs/web/shadowRegistry.js +46 -93
  152. package/lib/commonjs/web/shadowRegistry.js.map +1 -1
  153. package/lib/commonjs/web/state.js +39 -9
  154. package/lib/commonjs/web/state.js.map +1 -1
  155. package/lib/commonjs/web/types.js +6 -0
  156. package/lib/commonjs/web/types.js.map +1 -0
  157. package/lib/commonjs/web/utils/common.js +29 -9
  158. package/lib/commonjs/web/utils/common.js.map +1 -1
  159. package/lib/commonjs/web/utils/unistyle.js +32 -19
  160. package/lib/commonjs/web/utils/unistyle.js.map +1 -1
  161. package/lib/commonjs/web/variants.js +25 -27
  162. package/lib/commonjs/web/variants.js.map +1 -1
  163. package/lib/module/components/ScopedTheme.js.map +1 -1
  164. package/lib/module/components/index.js +0 -1
  165. package/lib/module/components/index.js.map +1 -1
  166. package/lib/module/components/native/Animated.js +19 -0
  167. package/lib/module/components/native/Animated.js.map +1 -0
  168. package/lib/module/components/native/ImageBackground.js +47 -2
  169. package/lib/module/components/native/ImageBackground.js.map +1 -1
  170. package/lib/module/components/native/ImageBackground.native.js +6 -0
  171. package/lib/module/components/native/ImageBackground.native.js.map +1 -0
  172. package/lib/module/components/native/NativeText.js +4 -0
  173. package/lib/module/components/native/NativeText.js.map +1 -0
  174. package/lib/module/components/native/NativeText.native.js +15 -0
  175. package/lib/module/components/native/NativeText.native.js.map +1 -0
  176. package/lib/module/components/native/NativeView.js +5 -0
  177. package/lib/module/components/native/NativeView.js.map +1 -0
  178. package/lib/module/components/native/NativeView.native.js +17 -0
  179. package/lib/module/components/native/NativeView.native.js.map +1 -0
  180. package/lib/module/components/native/Pressable.js +27 -52
  181. package/lib/module/components/native/Pressable.js.map +1 -1
  182. package/lib/module/components/native/Pressable.native.js +26 -10
  183. package/lib/module/components/native/Pressable.native.js.map +1 -1
  184. package/lib/module/core/createUnistylesElement.js +33 -5
  185. package/lib/module/core/createUnistylesElement.js.map +1 -1
  186. package/lib/module/core/createUnistylesElement.native.js +47 -0
  187. package/lib/module/core/createUnistylesElement.native.js.map +1 -0
  188. package/lib/module/core/createUnistylesImageBackground.js +39 -14
  189. package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
  190. package/lib/module/core/getClassname.js +18 -0
  191. package/lib/module/core/getClassname.js.map +1 -0
  192. package/lib/module/core/getClassname.native.js +4 -0
  193. package/lib/module/core/getClassname.native.js.map +1 -0
  194. package/lib/module/core/index.js +2 -1
  195. package/lib/module/core/index.js.map +1 -1
  196. package/lib/module/core/passForwardRef.js +2 -2
  197. package/lib/module/core/passForwardRef.js.map +1 -1
  198. package/lib/module/core/useProxifiedUnistyles/index.js +4 -0
  199. package/lib/module/core/useProxifiedUnistyles/index.js.map +1 -0
  200. package/lib/module/core/useProxifiedUnistyles/listener.js +17 -0
  201. package/lib/module/core/useProxifiedUnistyles/listener.js.map +1 -0
  202. package/lib/module/core/useProxifiedUnistyles/listener.native.js +21 -0
  203. package/lib/module/core/useProxifiedUnistyles/listener.native.js.map +1 -0
  204. package/lib/module/core/useProxifiedUnistyles/types.js +4 -0
  205. package/lib/module/core/useProxifiedUnistyles/types.js.map +1 -0
  206. package/lib/module/core/{withUnistyles/useDependencies.js → useProxifiedUnistyles/useProxifiedUnistyles.js} +19 -19
  207. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -0
  208. package/lib/module/core/useUnistyles.js +14 -0
  209. package/lib/module/core/useUnistyles.js.map +1 -0
  210. package/lib/module/core/warn.js +11 -0
  211. package/lib/module/core/warn.js.map +1 -0
  212. package/lib/module/core/withUnistyles/withUnistyles.js +19 -55
  213. package/lib/module/core/withUnistyles/withUnistyles.js.map +1 -1
  214. package/lib/module/core/withUnistyles/withUnistyles.native.js +33 -66
  215. package/lib/module/core/withUnistyles/withUnistyles.native.js.map +1 -1
  216. package/lib/module/index.js +3 -2
  217. package/lib/module/index.js.map +1 -1
  218. package/lib/module/server/getServerUnistyles.js +34 -0
  219. package/lib/module/server/getServerUnistyles.js.map +1 -0
  220. package/lib/module/server/hydrateServerUnistyles.js +12 -0
  221. package/lib/module/server/hydrateServerUnistyles.js.map +1 -0
  222. package/lib/module/server/index.js +7 -0
  223. package/lib/module/server/index.js.map +1 -0
  224. package/lib/module/server/resetServerUnistyles.js +11 -0
  225. package/lib/module/server/resetServerUnistyles.js.map +1 -0
  226. package/lib/module/server/types.js +4 -0
  227. package/lib/module/server/types.js.map +1 -0
  228. package/lib/module/server/useServerUnistyles.js +22 -0
  229. package/lib/module/server/useServerUnistyles.js.map +1 -0
  230. package/lib/module/specs/ShadowRegistry/index.js +6 -3
  231. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  232. package/lib/module/specs/StyleSheet/index.js.map +1 -1
  233. package/lib/module/utils.js +16 -1
  234. package/lib/module/utils.js.map +1 -1
  235. package/lib/module/web/convert/object/filter.js +2 -2
  236. package/lib/module/web/convert/object/filter.js.map +1 -1
  237. package/lib/module/web/convert/style.js +4 -4
  238. package/lib/module/web/convert/style.js.map +1 -1
  239. package/lib/module/web/create.js +20 -15
  240. package/lib/module/web/create.js.map +1 -1
  241. package/lib/module/web/css/core.js +50 -0
  242. package/lib/module/web/css/core.js.map +1 -0
  243. package/lib/module/web/css/index.js +4 -0
  244. package/lib/module/web/css/index.js.map +1 -0
  245. package/lib/module/web/css/state.js +150 -0
  246. package/lib/module/web/css/state.js.map +1 -0
  247. package/lib/module/web/css/utils.js +41 -0
  248. package/lib/module/web/css/utils.js.map +1 -0
  249. package/lib/module/web/index.js +10 -5
  250. package/lib/module/web/index.js.map +1 -1
  251. package/lib/module/web/listener.js +8 -7
  252. package/lib/module/web/listener.js.map +1 -1
  253. package/lib/module/web/registry.js +44 -124
  254. package/lib/module/web/registry.js.map +1 -1
  255. package/lib/module/web/runtime.js +27 -21
  256. package/lib/module/web/runtime.js.map +1 -1
  257. package/lib/module/web/services.js +23 -0
  258. package/lib/module/web/services.js.map +1 -0
  259. package/lib/module/web/shadowRegistry.js +46 -94
  260. package/lib/module/web/shadowRegistry.js.map +1 -1
  261. package/lib/module/web/state.js +39 -10
  262. package/lib/module/web/state.js.map +1 -1
  263. package/lib/module/web/types.js +4 -0
  264. package/lib/module/web/types.js.map +1 -0
  265. package/lib/module/web/utils/common.js +26 -7
  266. package/lib/module/web/utils/common.js.map +1 -1
  267. package/lib/module/web/utils/unistyle.js +31 -17
  268. package/lib/module/web/utils/unistyle.js.map +1 -1
  269. package/lib/module/web/variants.js +25 -27
  270. package/lib/module/web/variants.js.map +1 -1
  271. package/lib/typescript/src/components/index.d.ts +0 -1
  272. package/lib/typescript/src/components/index.d.ts.map +1 -1
  273. package/lib/typescript/src/components/native/ActivityIndicator.d.ts +1 -1
  274. package/lib/typescript/src/components/native/ActivityIndicator.d.ts.map +1 -1
  275. package/lib/typescript/src/components/native/Animated.d.ts +39 -0
  276. package/lib/typescript/src/components/native/Animated.d.ts.map +1 -0
  277. package/lib/typescript/src/components/native/FlatList.d.ts +1 -1
  278. package/lib/typescript/src/components/native/FlatList.d.ts.map +1 -1
  279. package/lib/typescript/src/components/native/Image.d.ts +1 -1
  280. package/lib/typescript/src/components/native/Image.d.ts.map +1 -1
  281. package/lib/typescript/src/components/native/ImageBackground.d.ts +1 -2
  282. package/lib/typescript/src/components/native/ImageBackground.d.ts.map +1 -1
  283. package/lib/typescript/src/components/native/ImageBackground.native.d.ts +2 -0
  284. package/lib/typescript/src/components/native/ImageBackground.native.d.ts.map +1 -0
  285. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts +1 -1
  286. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts.map +1 -1
  287. package/lib/typescript/src/components/native/NativeText.d.ts +2 -0
  288. package/lib/typescript/src/components/native/NativeText.d.ts.map +1 -0
  289. package/lib/typescript/src/components/native/NativeText.native.d.ts +2 -0
  290. package/lib/typescript/src/components/native/NativeText.native.d.ts.map +1 -0
  291. package/lib/typescript/src/components/native/NativeView.d.ts +3 -0
  292. package/lib/typescript/src/components/native/NativeView.d.ts.map +1 -0
  293. package/lib/typescript/src/components/native/NativeView.native.d.ts +3 -0
  294. package/lib/typescript/src/components/native/NativeView.native.d.ts.map +1 -0
  295. package/lib/typescript/src/components/native/Pressable.d.ts +3 -2
  296. package/lib/typescript/src/components/native/Pressable.d.ts.map +1 -1
  297. package/lib/typescript/src/components/native/Pressable.native.d.ts.map +1 -1
  298. package/lib/typescript/src/components/native/RefreshControl.d.ts +1 -1
  299. package/lib/typescript/src/components/native/RefreshControl.d.ts.map +1 -1
  300. package/lib/typescript/src/components/native/ScrollView.d.ts +1 -1
  301. package/lib/typescript/src/components/native/ScrollView.d.ts.map +1 -1
  302. package/lib/typescript/src/components/native/SectionList.d.ts +1 -1
  303. package/lib/typescript/src/components/native/SectionList.d.ts.map +1 -1
  304. package/lib/typescript/src/components/native/Switch.d.ts +1 -1
  305. package/lib/typescript/src/components/native/Switch.d.ts.map +1 -1
  306. package/lib/typescript/src/components/native/Text.d.ts +1 -1
  307. package/lib/typescript/src/components/native/Text.d.ts.map +1 -1
  308. package/lib/typescript/src/components/native/TextInput.d.ts +1 -1
  309. package/lib/typescript/src/components/native/TextInput.d.ts.map +1 -1
  310. package/lib/typescript/src/components/native/TouchableHighlight.d.ts +1 -1
  311. package/lib/typescript/src/components/native/TouchableHighlight.d.ts.map +1 -1
  312. package/lib/typescript/src/components/native/TouchableOpacity.d.ts +1 -1
  313. package/lib/typescript/src/components/native/TouchableOpacity.d.ts.map +1 -1
  314. package/lib/typescript/src/components/native/View.d.ts +1 -1
  315. package/lib/typescript/src/components/native/View.d.ts.map +1 -1
  316. package/lib/typescript/src/components/native/VirtualizedList.d.ts +1 -1
  317. package/lib/typescript/src/components/native/VirtualizedList.d.ts.map +1 -1
  318. package/lib/typescript/src/core/createUnistylesElement.d.ts +1 -2
  319. package/lib/typescript/src/core/createUnistylesElement.d.ts.map +1 -1
  320. package/lib/typescript/src/core/createUnistylesElement.native.d.ts +2 -0
  321. package/lib/typescript/src/core/createUnistylesElement.native.d.ts.map +1 -0
  322. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts +2 -3
  323. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
  324. package/lib/typescript/src/core/getClassname.d.ts +7 -0
  325. package/lib/typescript/src/core/getClassname.d.ts.map +1 -0
  326. package/lib/typescript/src/core/getClassname.native.d.ts +2 -0
  327. package/lib/typescript/src/core/getClassname.native.d.ts.map +1 -0
  328. package/lib/typescript/src/core/index.d.ts +2 -1
  329. package/lib/typescript/src/core/index.d.ts.map +1 -1
  330. package/lib/typescript/src/core/passForwardRef.d.ts.map +1 -1
  331. package/lib/typescript/src/core/useProxifiedUnistyles/index.d.ts +2 -0
  332. package/lib/typescript/src/core/useProxifiedUnistyles/index.d.ts.map +1 -0
  333. package/lib/typescript/src/core/useProxifiedUnistyles/listener.d.ts +3 -0
  334. package/lib/typescript/src/core/useProxifiedUnistyles/listener.d.ts.map +1 -0
  335. package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts +3 -0
  336. package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts.map +1 -0
  337. package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts +7 -0
  338. package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts.map +1 -0
  339. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts +8 -0
  340. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -0
  341. package/lib/typescript/src/core/useUnistyles.d.ts +6 -0
  342. package/lib/typescript/src/core/useUnistyles.d.ts.map +1 -0
  343. package/lib/typescript/src/core/warn.d.ts +3 -0
  344. package/lib/typescript/src/core/warn.d.ts.map +1 -0
  345. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts +0 -3
  346. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts.map +1 -1
  347. package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts.map +1 -1
  348. package/lib/typescript/src/index.d.ts +3 -2
  349. package/lib/typescript/src/index.d.ts.map +1 -1
  350. package/lib/typescript/src/server/getServerUnistyles.d.ts +4 -0
  351. package/lib/typescript/src/server/getServerUnistyles.d.ts.map +1 -0
  352. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts +8 -0
  353. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts.map +1 -0
  354. package/lib/typescript/src/server/index.d.ts +5 -0
  355. package/lib/typescript/src/server/index.d.ts.map +1 -0
  356. package/lib/typescript/src/server/resetServerUnistyles.d.ts +2 -0
  357. package/lib/typescript/src/server/resetServerUnistyles.d.ts.map +1 -0
  358. package/lib/typescript/src/server/types.d.ts +5 -0
  359. package/lib/typescript/src/server/types.d.ts.map +1 -0
  360. package/lib/typescript/src/server/useServerUnistyles.d.ts +4 -0
  361. package/lib/typescript/src/server/useServerUnistyles.d.ts.map +1 -0
  362. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +0 -3
  363. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  364. package/lib/typescript/src/specs/StyleSheet/index.d.ts +5 -1
  365. package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
  366. package/lib/typescript/src/utils.d.ts +2 -0
  367. package/lib/typescript/src/utils.d.ts.map +1 -1
  368. package/lib/typescript/src/web/convert/style.d.ts.map +1 -1
  369. package/lib/typescript/src/web/create.d.ts.map +1 -1
  370. package/lib/typescript/src/web/css/core.d.ts +3 -0
  371. package/lib/typescript/src/web/css/core.d.ts.map +1 -0
  372. package/lib/typescript/src/web/css/index.d.ts +2 -0
  373. package/lib/typescript/src/web/css/index.d.ts.map +1 -0
  374. package/lib/typescript/src/web/css/state.d.ts +30 -0
  375. package/lib/typescript/src/web/css/state.d.ts.map +1 -0
  376. package/lib/typescript/src/web/css/utils.d.ts +4 -0
  377. package/lib/typescript/src/web/css/utils.d.ts.map +1 -0
  378. package/lib/typescript/src/web/index.d.ts +7 -1
  379. package/lib/typescript/src/web/index.d.ts.map +1 -1
  380. package/lib/typescript/src/web/listener.d.ts +4 -3
  381. package/lib/typescript/src/web/listener.d.ts.map +1 -1
  382. package/lib/typescript/src/web/registry.d.ts +11 -8
  383. package/lib/typescript/src/web/registry.d.ts.map +1 -1
  384. package/lib/typescript/src/web/runtime.d.ts +6 -4
  385. package/lib/typescript/src/web/runtime.d.ts.map +1 -1
  386. package/lib/typescript/src/web/services.d.ts +15 -0
  387. package/lib/typescript/src/web/services.d.ts.map +1 -0
  388. package/lib/typescript/src/web/shadowRegistry.d.ts +10 -13
  389. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -1
  390. package/lib/typescript/src/web/state.d.ts +7 -3
  391. package/lib/typescript/src/web/state.d.ts.map +1 -1
  392. package/lib/typescript/src/web/types.d.ts +13 -0
  393. package/lib/typescript/src/web/types.d.ts.map +1 -0
  394. package/lib/typescript/src/web/utils/common.d.ts +2 -1
  395. package/lib/typescript/src/web/utils/common.d.ts.map +1 -1
  396. package/lib/typescript/src/web/utils/unistyle.d.ts +5 -4
  397. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
  398. package/lib/typescript/src/web/variants.d.ts +2 -2
  399. package/lib/typescript/src/web/variants.d.ts.map +1 -1
  400. package/nitrogen/generated/android/c++/JColorScheme.hpp +2 -1
  401. package/nitrogen/generated/android/c++/JDimensions.hpp +2 -1
  402. package/nitrogen/generated/android/c++/JFunc_void_UnistylesNativeMiniRuntime.hpp +36 -10
  403. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.hpp +53 -19
  404. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +5 -5
  405. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +1 -1
  406. package/nitrogen/generated/android/c++/JInsets.hpp +2 -1
  407. package/nitrogen/generated/android/c++/JOrientation.hpp +2 -1
  408. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +2 -1
  409. package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +2 -1
  410. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/ColorScheme.kt +1 -1
  411. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Dimensions.kt +10 -5
  412. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_UnistylesNativeMiniRuntime.kt +43 -14
  413. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.kt +43 -14
  414. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +10 -10
  415. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Insets.kt +13 -8
  416. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Orientation.kt +1 -1
  417. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +1 -1
  418. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +19 -14
  419. package/nitrogen/generated/android/unistyles+autolinking.cmake +4 -1
  420. package/nitrogen/generated/android/unistyles+autolinking.gradle +1 -1
  421. package/nitrogen/generated/android/unistylesOnLoad.cpp +7 -3
  422. package/nitrogen/generated/android/unistylesOnLoad.hpp +1 -1
  423. package/nitrogen/generated/ios/Unistyles+autolinking.rb +1 -1
  424. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +21 -6
  425. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +105 -27
  426. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +5 -3
  427. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.cpp +1 -1
  428. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +92 -33
  429. package/nitrogen/generated/ios/swift/ColorScheme.swift +1 -1
  430. package/nitrogen/generated/ios/swift/Dimensions.swift +1 -1
  431. package/nitrogen/generated/ios/swift/Func_void_UnistylesNativeMiniRuntime.swift +46 -0
  432. package/nitrogen/generated/ios/swift/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.swift +46 -0
  433. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +36 -23
  434. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec_cxx.swift +327 -0
  435. package/nitrogen/generated/ios/swift/Insets.swift +1 -1
  436. package/nitrogen/generated/ios/swift/Orientation.swift +1 -1
  437. package/nitrogen/generated/ios/swift/UnistyleDependency.swift +1 -1
  438. package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +1 -1
  439. package/nitrogen/generated/shared/c++/ColorScheme.hpp +1 -1
  440. package/nitrogen/generated/shared/c++/Dimensions.hpp +1 -1
  441. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +1 -1
  442. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +1 -1
  443. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.cpp +1 -1
  444. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +1 -1
  445. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.cpp +1 -1
  446. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +1 -1
  447. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.cpp +1 -1
  448. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +1 -1
  449. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.cpp +1 -1
  450. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +1 -1
  451. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +1 -1
  452. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +1 -1
  453. package/nitrogen/generated/shared/c++/Insets.hpp +1 -1
  454. package/nitrogen/generated/shared/c++/Orientation.hpp +1 -1
  455. package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -2
  456. package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +1 -1
  457. package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +1 -1
  458. package/package.json +23 -14
  459. package/plugin/consts.js +63 -0
  460. package/plugin/exotic.js +54 -0
  461. package/plugin/import.js +1 -21
  462. package/plugin/index.d.ts +89 -0
  463. package/plugin/index.js +58 -96
  464. package/plugin/stylesheet.js +28 -1
  465. package/plugin/variants.js +49 -75
  466. package/src/components/ScopedTheme.tsx +1 -1
  467. package/src/components/index.ts +0 -1
  468. package/src/components/native/Animated.tsx +17 -0
  469. package/src/components/native/ImageBackground.native.tsx +4 -0
  470. package/src/components/native/ImageBackground.tsx +57 -2
  471. package/src/components/native/NativeText.native.tsx +12 -0
  472. package/src/components/native/NativeText.tsx +1 -0
  473. package/src/components/native/NativeView.native.tsx +13 -0
  474. package/src/components/native/NativeView.tsx +3 -0
  475. package/src/components/native/Pressable.native.tsx +32 -15
  476. package/src/components/native/Pressable.tsx +35 -69
  477. package/src/core/createUnistylesElement.native.tsx +51 -0
  478. package/src/core/createUnistylesElement.tsx +47 -8
  479. package/src/core/createUnistylesImageBackground.tsx +44 -18
  480. package/src/core/getClassname.native.ts +1 -0
  481. package/src/core/getClassname.ts +14 -0
  482. package/src/core/index.ts +2 -1
  483. package/src/core/passForwardRef.ts +1 -2
  484. package/src/core/useProxifiedUnistyles/index.ts +1 -0
  485. package/src/core/useProxifiedUnistyles/listener.native.ts +18 -0
  486. package/src/core/useProxifiedUnistyles/listener.ts +13 -0
  487. package/src/core/useProxifiedUnistyles/types.ts +7 -0
  488. package/src/core/{withUnistyles/useDependencies.ts → useProxifiedUnistyles/useProxifiedUnistyles.ts} +19 -26
  489. package/src/core/useUnistyles.ts +11 -0
  490. package/src/core/warn.ts +13 -0
  491. package/src/core/withUnistyles/withUnistyles.native.tsx +39 -68
  492. package/src/core/withUnistyles/withUnistyles.tsx +19 -56
  493. package/src/index.ts +3 -2
  494. package/src/server/getServerUnistyles.tsx +21 -0
  495. package/src/server/hydrateServerUnistyles.ts +17 -0
  496. package/src/server/index.ts +5 -0
  497. package/src/server/resetServerUnistyles.ts +9 -0
  498. package/src/server/types.ts +4 -0
  499. package/src/server/useServerUnistyles.tsx +22 -0
  500. package/src/specs/ShadowRegistry/index.ts +12 -9
  501. package/src/specs/StyleSheet/index.ts +6 -1
  502. package/src/utils.ts +32 -11
  503. package/src/web/convert/object/filter.ts +2 -2
  504. package/src/web/convert/style.ts +8 -7
  505. package/src/web/create.ts +23 -18
  506. package/src/web/css/core.ts +58 -0
  507. package/src/web/css/index.ts +1 -0
  508. package/src/web/css/state.ts +191 -0
  509. package/src/web/css/utils.ts +54 -0
  510. package/src/web/index.ts +18 -5
  511. package/src/web/listener.ts +8 -8
  512. package/src/web/registry.ts +47 -152
  513. package/src/web/runtime.ts +32 -22
  514. package/src/web/services.ts +28 -0
  515. package/src/web/shadowRegistry.ts +46 -104
  516. package/src/web/state.ts +46 -11
  517. package/src/web/types.ts +13 -0
  518. package/src/web/utils/common.ts +32 -8
  519. package/src/web/utils/unistyle.ts +46 -25
  520. package/src/web/variants.ts +27 -27
  521. package/cxx/core/HostStyle.cpp +0 -73
  522. package/cxx/core/HostStyle.h +0 -34
  523. package/lib/commonjs/components/Variants.js +0 -36
  524. package/lib/commonjs/components/Variants.js.map +0 -1
  525. package/lib/commonjs/core/createUnistylesComponent.js +0 -16
  526. package/lib/commonjs/core/createUnistylesComponent.js.map +0 -1
  527. package/lib/commonjs/core/withUnistyles/useDependencies.js.map +0 -1
  528. package/lib/module/components/Variants.js +0 -29
  529. package/lib/module/components/Variants.js.map +0 -1
  530. package/lib/module/core/createUnistylesComponent.js +0 -11
  531. package/lib/module/core/createUnistylesComponent.js.map +0 -1
  532. package/lib/module/core/withUnistyles/useDependencies.js.map +0 -1
  533. package/lib/typescript/src/components/Variants.d.ts +0 -7
  534. package/lib/typescript/src/components/Variants.d.ts.map +0 -1
  535. package/lib/typescript/src/core/createUnistylesComponent.d.ts +0 -14
  536. package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +0 -1
  537. package/lib/typescript/src/core/withUnistyles/useDependencies.d.ts +0 -13
  538. package/lib/typescript/src/core/withUnistyles/useDependencies.d.ts.map +0 -1
  539. package/nitrogen/generated/android/unistylesOnLoad.kt +0 -1
  540. package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +0 -314
  541. package/plugin/style.js +0 -168
  542. package/src/components/Variants.tsx +0 -30
  543. package/src/core/createUnistylesComponent.tsx +0 -14
@@ -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
  }
@@ -75,7 +75,7 @@ void core::UnistylesRegistry::linkShadowNodeWithUnistyle(
75
75
  ) {
76
76
  shadow::ShadowLeafUpdates updates;
77
77
  auto parser = parser::Parser(nullptr);
78
-
78
+
79
79
  std::for_each(unistylesData.begin(), unistylesData.end(), [this, &rt, shadowNodeFamily](std::shared_ptr<UnistyleData> unistyleData){
80
80
  this->_shadowRegistry[&rt][shadowNodeFamily].emplace_back(unistyleData);
81
81
  });
@@ -86,6 +86,27 @@ void core::UnistylesRegistry::linkShadowNodeWithUnistyle(
86
86
  this->trafficController.resumeUnistylesTraffic();
87
87
  }
88
88
 
89
+ void core::UnistylesRegistry::removeDuplicatedUnistyles(jsi::Runtime& rt, const ShadowNodeFamily *shadowNodeFamily, std::vector<core::Unistyle::Shared>& unistyles) {
90
+ auto targetFamilyUnistyles = this->_shadowRegistry[&rt][shadowNodeFamily];
91
+
92
+ unistyles.erase(
93
+ std::remove_if(
94
+ unistyles.begin(),
95
+ unistyles.end(),
96
+ [&targetFamilyUnistyles](const core::Unistyle::Shared& unistyle) {
97
+ return std::any_of(
98
+ targetFamilyUnistyles.begin(),
99
+ targetFamilyUnistyles.end(),
100
+ [&unistyle](const std::shared_ptr<core::UnistyleData>& data) {
101
+ return data->unistyle == unistyle;
102
+ }
103
+ );
104
+ }
105
+ ),
106
+ unistyles.end()
107
+ );
108
+ }
109
+
89
110
  void core::UnistylesRegistry::unlinkShadowNodeWithUnistyles(jsi::Runtime& rt, const ShadowNodeFamily* shadowNodeFamily) {
90
111
  this->_shadowRegistry[&rt].erase(shadowNodeFamily);
91
112
  this->trafficController.removeShadowNode(shadowNodeFamily);
@@ -159,7 +180,7 @@ std::vector<std::shared_ptr<core::StyleSheet>> core::UnistylesRegistry::getStyle
159
180
  UnistyleDependency::THEME);
160
181
  auto themeDidChange = themeDidChangeIt != unistylesDependencies.end();
161
182
  auto runtimeDidChange = (themeDidChange && unistylesDependencies.size() > 1) || unistylesDependencies.size() > 0;
162
-
183
+
163
184
  // if nothing changed, skip further lookup
164
185
  if (!themeDidChange && !runtimeDidChange) {
165
186
  return stylesheetsToRefresh;
@@ -173,7 +194,7 @@ std::vector<std::shared_ptr<core::StyleSheet>> core::UnistylesRegistry::getStyle
173
194
  if (styleSheet->type == StyleSheetType::ThemableWithMiniRuntime) {
174
195
  for (const auto& unistylePair: styleSheet->unistyles) {
175
196
  auto& [_, unistyle] = unistylePair;
176
-
197
+
177
198
  bool hasAnyOfDependencies = std::any_of(
178
199
  unistyle->dependencies.begin(),
179
200
  unistyle->dependencies.end(),
@@ -181,10 +202,10 @@ std::vector<std::shared_ptr<core::StyleSheet>> core::UnistylesRegistry::getStyle
181
202
  return std::find(unistylesDependencies.begin(), unistylesDependencies.end(), dep) != unistylesDependencies.end();
182
203
  }
183
204
  );
184
-
205
+
185
206
  if (hasAnyOfDependencies) {
186
207
  stylesheetsToRefresh.emplace_back(styleSheet);
187
-
208
+
188
209
  return;
189
210
  }
190
211
  }
@@ -198,18 +219,26 @@ std::vector<std::shared_ptr<core::StyleSheet>> core::UnistylesRegistry::getStyle
198
219
  return stylesheetsToRefresh;
199
220
  }
200
221
 
201
- const core::Variants& core::UnistylesRegistry::getScopedVariants() {
202
- return this->_scopedVariants;
222
+ core::Unistyle::Shared core::UnistylesRegistry::getUnistyleById(jsi::Runtime& rt, std::string unistyleID) {
223
+ for (auto& pair: this->_styleSheetRegistry[&rt]) {
224
+ auto [_, stylesheet] = pair;
225
+
226
+ for (auto unistylePair: stylesheet->unistyles) {
227
+ auto [_, unistyle] = unistylePair;
228
+
229
+ if (unistyle->unid == unistyleID) {
230
+ return unistyle;
231
+ }
232
+ }
233
+ }
234
+
235
+ return nullptr;
203
236
  }
204
237
 
205
238
  const std::optional<std::string> core::UnistylesRegistry::getScopedTheme() {
206
239
  return this->_scopedTheme;
207
240
  }
208
241
 
209
- void core::UnistylesRegistry::setScopedVariants(core::Variants&& variants) {
210
- this->_scopedVariants = std::move(variants);
211
- }
212
-
213
242
  void core::UnistylesRegistry::setScopedTheme(std::optional<std::string> themeName) {
214
243
  this->_scopedTheme = std::move(themeName);
215
244
  }
@@ -27,6 +27,8 @@ struct UnistylesRegistry: public StyleSheetRegistry {
27
27
 
28
28
  UnistylesRegistry(const UnistylesRegistry&) = delete;
29
29
  UnistylesRegistry(const UnistylesRegistry&&) = delete;
30
+
31
+ bool shouldUsePointsForBreakpoints = false;
30
32
 
31
33
  void registerTheme(jsi::Runtime& rt, std::string name, jsi::Value& theme);
32
34
  void registerBreakpoints(jsi::Runtime& rt, std::vector<std::pair<std::string, double>>& sortedBreakpoints);
@@ -43,15 +45,14 @@ struct UnistylesRegistry: public StyleSheetRegistry {
43
45
  DependencyMap buildDependencyMap(jsi::Runtime& rt, std::vector<UnistyleDependency>& deps);
44
46
  void shadowLeafUpdateFromUnistyle(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Value& maybePressableId);
45
47
  shadow::ShadowTrafficController trafficController{};
46
- const core::Variants& getScopedVariants();
47
48
  const std::optional<std::string> getScopedTheme();
48
- void setScopedVariants(core::Variants&& variants);
49
+ void removeDuplicatedUnistyles(jsi::Runtime& rt, const ShadowNodeFamily* shadowNodeFamily, std::vector<core::Unistyle::Shared>& unistyles);
49
50
  void setScopedTheme(std::optional<std::string> themeName);
51
+ core::Unistyle::Shared getUnistyleById(jsi::Runtime& rt, std::string unistyleID);
50
52
 
51
53
  private:
52
54
  UnistylesRegistry() = default;
53
-
54
- core::Variants _scopedVariants{};
55
+
55
56
  std::optional<std::string> _scopedTheme{};
56
57
  std::unordered_map<jsi::Runtime*, UnistylesState> _states{};
57
58
  std::unordered_map<jsi::Runtime*, std::unordered_map<int, std::shared_ptr<core::StyleSheet>>> _styleSheetRegistry{};
@@ -1,13 +1,13 @@
1
1
  #include "HybridNavigationBar.h"
2
2
 
3
3
  void HybridNavigationBar::setHidden(bool isHidden) {
4
- this->_nativePlatform.setNavigationBarHidden(isHidden);
4
+ this->_nativePlatform->setNavigationBarHidden(isHidden);
5
5
  };
6
6
 
7
7
  double HybridNavigationBar::getWidth() {
8
- return this->_nativePlatform.getNavigationBarDimensions().width;
8
+ return this->_nativePlatform->getNavigationBarDimensions().width;
9
9
  }
10
10
 
11
11
  double HybridNavigationBar::getHeight() {
12
- return this->_nativePlatform.getNavigationBarDimensions().height;
12
+ return this->_nativePlatform->getNavigationBarDimensions().height;
13
13
  }
@@ -7,12 +7,12 @@
7
7
  using namespace margelo::nitro::unistyles;
8
8
 
9
9
  struct HybridNavigationBar: public HybridUnistylesNavigationBarSpec {
10
- HybridNavigationBar(Unistyles::HybridNativePlatformSpecCxx nativePlatform): HybridObject(TAG), _nativePlatform{nativePlatform} {}
10
+ HybridNavigationBar(std::shared_ptr<HybridNativePlatformSpec> nativePlatform): HybridObject(TAG), _nativePlatform{nativePlatform} {}
11
11
 
12
12
  void setHidden(bool isHidden) override;
13
13
  double getWidth() override;
14
14
  double getHeight() override;
15
15
 
16
16
  private:
17
- Unistyles::HybridNativePlatformSpecCxx _nativePlatform;
17
+ std::shared_ptr<HybridNativePlatformSpec> _nativePlatform;
18
18
  };
@@ -7,30 +7,38 @@ jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisVa
7
7
  helpers::assertThat(rt, count == 2, "Unistyles: Invalid babel transform 'ShadowRegistry link' expected 2 arguments.");
8
8
 
9
9
  ShadowNode::Shared shadowNodeWrapper = shadowNodeFromValue(rt, args[0]);
10
+
10
11
  std::vector<core::Unistyle::Shared> unistyleWrappers = core::unistyleFromValue(rt, args[1]);
11
12
  std::vector<std::vector<folly::dynamic>> arguments;
12
13
  auto& registry = core::UnistylesRegistry::get();
13
14
 
14
- for (size_t i = 0; i < unistyleWrappers.size(); i++) {
15
- if (unistyleWrappers[i]->type == core::UnistyleType::DynamicFunction) {
16
- auto rawStyle = args[1].asObject(rt).asArray(rt).getValueAtIndex(rt, i);
17
-
18
- helpers::assertThat(rt, rawStyle.isObject(), "Unistyles: Dynamic function is not bound!");
19
-
20
- auto maybeSecrets = rawStyle.getObject(rt).getProperty(rt, helpers::SECRETS.c_str());
15
+ // this is special case for Animated, and prevents appending same unistyles to node
16
+ registry.removeDuplicatedUnistyles(rt, &shadowNodeWrapper->getFamily(), unistyleWrappers);
21
17
 
22
- helpers::assertThat(rt, maybeSecrets.isObject(), "Unistyles: Dynamic function is not bound!");
23
-
24
- auto secrets = maybeSecrets.asObject(rt).getProperty(rt, helpers::ARGUMENTS.c_str());
25
-
26
- arguments.push_back(helpers::parseDynamicFunctionArguments(rt, secrets.asObject(rt).asArray(rt)));
18
+ if (unistyleWrappers.empty()) {
19
+ return jsi::Value::undefined();
20
+ }
27
21
 
28
- continue;
22
+ for (size_t i = 0; i < unistyleWrappers.size(); i++) {
23
+ if (unistyleWrappers[i]->type == core::UnistyleType::DynamicFunction) {
24
+ try {
25
+ auto rawStyle = args[1].asObject(rt).asArray(rt).getValueAtIndex(rt, i);
26
+ auto rawStyleObj = rawStyle.getObject(rt);
27
+ auto unistyleHashKeys = core::getUnistylesHashKeys(rt, rawStyleObj);
28
+ auto secrets = rawStyleObj.getProperty(rt, unistyleHashKeys.at(0).c_str()).asObject(rt);
29
+ auto secretArguments = secrets.getProperty(rt, helpers::ARGUMENTS.c_str()).asObject(rt).asArray(rt);
30
+
31
+ arguments.push_back(helpers::parseDynamicFunctionArguments(rt, secretArguments));
32
+
33
+ continue;
34
+ } catch (...) {
35
+ arguments.push_back({});
36
+ }
29
37
  }
30
38
 
31
39
  arguments.push_back({});
32
40
  }
33
-
41
+
34
42
  auto scopedTheme = registry.getScopedTheme();
35
43
 
36
44
  // check if scope theme exists
@@ -47,9 +55,23 @@ jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisVa
47
55
  // create unistyleData based on wrappers
48
56
  for (size_t i = 0; i < unistyleWrappers.size(); i++) {
49
57
  core::Unistyle::Shared& unistyle = unistyleWrappers[i];
58
+ auto rawStyle = args[1].asObject(rt).asArray(rt).getValueAtIndex(rt, i);
59
+ auto rawStyleObj = rawStyle.getObject(rt);
60
+ auto unistyleHashKeys = core::getUnistylesHashKeys(rt, rawStyleObj);
61
+ core::Variants variants{};
62
+
63
+ if (unistyleHashKeys.size() == 1) {
64
+ auto secrets = rawStyleObj.getProperty(rt, unistyleHashKeys.at(0).c_str()).asObject(rt);
65
+ auto hasVariants = secrets.hasProperty(rt, helpers::STYLESHEET_VARIANTS.c_str());
66
+
67
+ if (hasVariants) {
68
+ variants = helpers::variantsToPairs(rt, secrets.getProperty(rt, helpers::STYLESHEET_VARIANTS.c_str()).asObject(rt));
69
+ }
70
+ }
71
+
50
72
  std::shared_ptr<core::UnistyleData> unistyleData = std::make_shared<core::UnistyleData>(
51
73
  unistyle,
52
- registry.getScopedVariants(),
74
+ variants,
53
75
  arguments[i],
54
76
  scopedTheme
55
77
  );
@@ -62,9 +84,6 @@ jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisVa
62
84
 
63
85
  // if so we need to force update
64
86
  parser.rebuildUnistyleWithScopedTheme(rt, parsedStyleSheet, unistyleData);
65
- } else {
66
- // for other styles, not scoped to theme we need to compute variants value
67
- parser.rebuildUnistyleWithVariants(rt, unistyleData);
68
87
  }
69
88
 
70
89
  unistylesData.emplace_back(unistyleData);
@@ -91,25 +110,9 @@ jsi::Value HybridShadowRegistry::unlink(jsi::Runtime &rt, const jsi::Value &this
91
110
  return jsi::Value::undefined();
92
111
  }
93
112
 
94
- jsi::Value HybridShadowRegistry::selectVariants(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
95
- helpers::assertThat(rt, count == 1, "Unistyles: Invalid babel transform 'ShadowRegistry selectVariants' expected 1 arguments.");
96
-
97
- auto& registry = core::UnistylesRegistry::get();
98
-
99
- if (args[0].isUndefined()) {
100
- registry.setScopedVariants({});
101
- }
102
-
103
- if (args[0].isObject()) {
104
- registry.setScopedVariants(helpers::variantsToPairs(rt, args[0].asObject(rt)));
105
- }
106
-
107
- return jsi::Value::undefined();
108
- }
109
-
110
113
  jsi::Value HybridShadowRegistry::setScopedTheme(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
111
114
  helpers::assertThat(rt, count == 1, "Unistyles: setScopedTheme expected 1 argument.");
112
-
115
+
113
116
  auto& registry = core::UnistylesRegistry::get();
114
117
 
115
118
  if (args[0].isUndefined()) {
@@ -127,17 +130,8 @@ jsi::Value HybridShadowRegistry::setScopedTheme(jsi::Runtime &rt, const jsi::Val
127
130
  jsi::Value HybridShadowRegistry::getScopedTheme(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
128
131
  auto& registry = core::UnistylesRegistry::get();
129
132
  auto maybeScopedTheme = registry.getScopedTheme();
130
-
133
+
131
134
  return maybeScopedTheme.has_value()
132
135
  ? jsi::String::createFromUtf8(rt, maybeScopedTheme.value())
133
136
  : jsi::Value::undefined();
134
137
  }
135
-
136
- jsi::Value HybridShadowRegistry::getVariants(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
137
- auto& registry = core::UnistylesRegistry::get();
138
- auto maybeScopedVariants = registry.getScopedVariants();
139
-
140
- return maybeScopedVariants.size() > 0
141
- ? helpers::variantsToValue(rt, maybeScopedVariants)
142
- : jsi::Value::undefined();
143
- }
@@ -20,10 +20,6 @@ struct HybridShadowRegistry: public HybridUnistylesShadowRegistrySpec {
20
20
  const jsi::Value& thisValue,
21
21
  const jsi::Value* args,
22
22
  size_t count);
23
- jsi::Value selectVariants(jsi::Runtime& rt,
24
- const jsi::Value& thisValue,
25
- const jsi::Value* args,
26
- size_t count);
27
23
  jsi::Value setScopedTheme(jsi::Runtime& rt,
28
24
  const jsi::Value& thisValue,
29
25
  const jsi::Value* args,
@@ -32,10 +28,6 @@ struct HybridShadowRegistry: public HybridUnistylesShadowRegistrySpec {
32
28
  const jsi::Value& thisValue,
33
29
  const jsi::Value* args,
34
30
  size_t count);
35
- jsi::Value getVariants(jsi::Runtime& rt,
36
- const jsi::Value& thisValue,
37
- const jsi::Value* args,
38
- size_t count);
39
31
 
40
32
  void loadHybridMethods() override {
41
33
  HybridUnistylesShadowRegistrySpec::loadHybridMethods();
@@ -43,10 +35,8 @@ struct HybridShadowRegistry: public HybridUnistylesShadowRegistrySpec {
43
35
  registerHybrids(this, [](Prototype& prototype) {
44
36
  prototype.registerRawHybridMethod("link", 2, &HybridShadowRegistry::link);
45
37
  prototype.registerRawHybridMethod("unlink", 1, &HybridShadowRegistry::unlink);
46
- prototype.registerRawHybridMethod("selectVariants", 1, &HybridShadowRegistry::selectVariants);
47
38
  prototype.registerRawHybridMethod("setScopedTheme", 1, &HybridShadowRegistry::setScopedTheme);
48
39
  prototype.registerRawHybridMethod("getScopedTheme", 0, &HybridShadowRegistry::getScopedTheme);
49
- prototype.registerRawHybridMethod("getVariants", 0, &HybridShadowRegistry::getVariants);
50
40
  });
51
41
  };
52
42
 
@@ -1,13 +1,13 @@
1
1
  #include "HybridStatusBar.h"
2
2
 
3
3
  double HybridStatusBar::getWidth() {
4
- return this->_nativePlatform.getStatusBarDimensions().width;
4
+ return this->_nativePlatform->getStatusBarDimensions().width;
5
5
  }
6
6
 
7
7
  double HybridStatusBar::getHeight() {
8
- return this->_nativePlatform.getStatusBarDimensions().height;
8
+ return this->_nativePlatform->getStatusBarDimensions().height;
9
9
  }
10
10
 
11
11
  void HybridStatusBar::setHidden(bool isHidden) {
12
- return this->_nativePlatform.setStatusBarHidden(isHidden);
12
+ this->_nativePlatform->setStatusBarHidden(isHidden);
13
13
  }
@@ -7,12 +7,12 @@
7
7
  using namespace margelo::nitro::unistyles;
8
8
 
9
9
  struct HybridStatusBar: public HybridUnistylesStatusBarSpec {
10
- HybridStatusBar(Unistyles::HybridNativePlatformSpecCxx nativePlatform): HybridObject(TAG), _nativePlatform{nativePlatform} {}
10
+ HybridStatusBar(std::shared_ptr<HybridNativePlatformSpec> nativePlatform): HybridObject(TAG), _nativePlatform{nativePlatform} {}
11
11
 
12
12
  double getWidth() override;
13
13
  double getHeight() override;
14
14
  void setHidden(bool isHidden) override;
15
15
 
16
16
  private:
17
- Unistyles::HybridNativePlatformSpecCxx _nativePlatform;
17
+ std::shared_ptr<HybridNativePlatformSpec> _nativePlatform;
18
18
  };