react-native-unistyles 3.0.0-alpha.3 → 3.0.0-alpha.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (541) hide show
  1. package/README.md +7 -0
  2. package/android/CMakeLists.txt +12 -21
  3. package/cxx/common/Constants.h +3 -0
  4. package/cxx/common/Helpers.h +118 -5
  5. package/cxx/core/HostStyle.cpp +12 -8
  6. package/cxx/core/HostStyle.h +4 -0
  7. package/cxx/core/StyleSheet.h +0 -2
  8. package/cxx/core/StyleSheetRegistry.cpp +10 -13
  9. package/cxx/core/StyleSheetRegistry.h +4 -4
  10. package/cxx/core/Unistyle.h +7 -10
  11. package/cxx/core/UnistyleData.h +23 -0
  12. package/cxx/core/UnistyleWrapper.h +61 -12
  13. package/cxx/core/UnistylesCommitHook.cpp +17 -16
  14. package/cxx/core/UnistylesCommitHook.h +7 -11
  15. package/cxx/core/UnistylesCommitShadowNode.h +13 -0
  16. package/cxx/core/UnistylesMountHook.cpp +26 -0
  17. package/cxx/core/UnistylesMountHook.h +24 -0
  18. package/cxx/core/UnistylesRegistry.cpp +85 -88
  19. package/cxx/core/UnistylesRegistry.h +16 -13
  20. package/cxx/core/UnistylesState.cpp +29 -11
  21. package/cxx/core/UnistylesState.h +5 -2
  22. package/cxx/hybridObjects/HybridShadowRegistry.cpp +15 -13
  23. package/cxx/hybridObjects/HybridStyleSheet.cpp +144 -46
  24. package/cxx/hybridObjects/HybridStyleSheet.h +23 -4
  25. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +51 -8
  26. package/cxx/hybridObjects/HybridUnistylesRuntime.h +12 -1
  27. package/cxx/parser/Parser.cpp +209 -176
  28. package/cxx/parser/Parser.h +10 -14
  29. package/cxx/shadowTree/ShadowLeafUpdate.h +1 -1
  30. package/cxx/shadowTree/ShadowTrafficController.h +37 -0
  31. package/cxx/shadowTree/ShadowTreeManager.cpp +16 -15
  32. package/cxx/shadowTree/ShadowTreeManager.h +2 -1
  33. package/ios/Equatable.swift +2 -1
  34. package/ios/NativePlatform+ios.swift +21 -5
  35. package/ios/NativePlatform+keyboard.swift +83 -0
  36. package/ios/NativePlatformListener+ios.swift +36 -23
  37. package/ios/Unistyles.h +1 -0
  38. package/ios/UnistylesModuleOnLoad.h +13 -2
  39. package/ios/UnistylesModuleOnLoad.mm +11 -1
  40. package/lib/commonjs/common.js.map +1 -1
  41. package/lib/commonjs/core/createUnistylesComponent.js +18 -0
  42. package/lib/commonjs/core/createUnistylesComponent.js.map +1 -0
  43. package/lib/commonjs/core/createUnistylesComponent.native.js +45 -0
  44. package/lib/commonjs/core/createUnistylesComponent.native.js.map +2 -0
  45. package/lib/commonjs/core/index.js +27 -0
  46. package/lib/commonjs/core/index.js.map +1 -0
  47. package/lib/commonjs/core/useBreakpoint.js +22 -0
  48. package/lib/commonjs/core/useBreakpoint.js.map +1 -0
  49. package/lib/commonjs/core/useBreakpoint.native.js +24 -0
  50. package/lib/commonjs/core/useBreakpoint.native.js.map +2 -0
  51. package/lib/commonjs/core/useTheme.js +22 -0
  52. package/lib/commonjs/core/useTheme.js.map +2 -0
  53. package/lib/commonjs/core/useTheme.native.js +24 -0
  54. package/lib/commonjs/core/useTheme.native.js.map +2 -0
  55. package/lib/commonjs/global.js +3 -0
  56. package/lib/commonjs/index.js +23 -11
  57. package/lib/commonjs/index.js.map +1 -1
  58. package/lib/commonjs/mq.js +1 -4
  59. package/lib/commonjs/mq.js.map +2 -1
  60. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js +6 -4
  61. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
  62. package/lib/commonjs/specs/NativePlatform/index.js.map +1 -1
  63. package/lib/commonjs/specs/NavigtionBar/index.js +1 -1
  64. package/lib/commonjs/specs/NavigtionBar/index.js.map +1 -1
  65. package/lib/commonjs/specs/ShadowRegistry/ShadowRegistry.nitro.js.map +1 -1
  66. package/lib/commonjs/specs/ShadowRegistry/index.js +7 -6
  67. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  68. package/lib/commonjs/specs/ShadowRegistry/types.js +3 -0
  69. package/lib/commonjs/specs/StatusBar/UnistylesStatusBar.nitro.js.map +1 -1
  70. package/lib/commonjs/specs/StatusBar/index.js +1 -1
  71. package/lib/commonjs/specs/StatusBar/index.js.map +2 -1
  72. package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.js +2 -4
  73. package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.js.map +1 -1
  74. package/lib/commonjs/specs/StyleSheet/index.js +1 -0
  75. package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
  76. package/lib/commonjs/specs/TurboUnistyles/NativeTurboUnistyles.js +1 -3
  77. package/lib/commonjs/specs/TurboUnistyles/NativeTurboUnistyles.js.map +2 -1
  78. package/lib/commonjs/specs/UnistylesRuntime/index.js +1 -1
  79. package/lib/commonjs/specs/UnistylesRuntime/index.js.map +1 -1
  80. package/lib/commonjs/specs/index.js +7 -0
  81. package/lib/commonjs/specs/index.js.map +1 -1
  82. package/lib/commonjs/specs/index.web.js +1 -1
  83. package/lib/commonjs/specs/types.js.map +1 -0
  84. package/lib/commonjs/types/accessibility.js +9 -9
  85. package/lib/commonjs/types/accessibility.js.map +1 -1
  86. package/lib/commonjs/types/common.js +3 -0
  87. package/lib/commonjs/types/core.js.map +1 -1
  88. package/lib/commonjs/types/index.js.map +2 -1
  89. package/lib/commonjs/types/stylesheet.js +1 -2
  90. package/lib/commonjs/types/stylesheet.js.map +1 -1
  91. package/lib/commonjs/web/convert/boxShadow.js +77 -0
  92. package/lib/commonjs/web/convert/boxShadow.js.map +1 -0
  93. package/lib/commonjs/web/convert/index.js +68 -0
  94. package/lib/commonjs/web/convert/index.js.map +2 -0
  95. package/lib/commonjs/web/convert/module.d.js +2 -0
  96. package/lib/commonjs/web/convert/module.d.js.map +1 -0
  97. package/lib/commonjs/web/convert/pseudo.js +10 -0
  98. package/lib/commonjs/web/convert/pseudo.js.map +2 -0
  99. package/lib/commonjs/web/convert/shadow.js +68 -0
  100. package/lib/commonjs/web/convert/shadow.js.map +2 -0
  101. package/lib/commonjs/web/convert/style.js +93 -0
  102. package/lib/commonjs/web/convert/style.js.map +2 -0
  103. package/lib/commonjs/web/convert/textShadow.js +70 -0
  104. package/lib/commonjs/web/convert/textShadow.js.map +2 -0
  105. package/lib/commonjs/web/convert/transform.js +72 -0
  106. package/lib/commonjs/web/convert/transform.js.map +2 -0
  107. package/lib/commonjs/web/convert/types.js +9 -0
  108. package/lib/commonjs/web/convert/types.js.map +1 -0
  109. package/lib/commonjs/web/convert/utils.js +54 -0
  110. package/lib/commonjs/web/convert/utils.js.map +2 -0
  111. package/lib/commonjs/web/create.js +48 -0
  112. package/lib/commonjs/web/create.js.map +1 -0
  113. package/lib/commonjs/web/index.js +60 -0
  114. package/lib/commonjs/web/index.js.map +2 -0
  115. package/lib/commonjs/web/listener.js +35 -0
  116. package/lib/commonjs/web/listener.js.map +2 -0
  117. package/lib/commonjs/web/mock.js +28 -0
  118. package/lib/commonjs/web/mock.js.map +2 -0
  119. package/lib/commonjs/web/mq.js +23 -0
  120. package/lib/commonjs/web/mq.js.map +1 -0
  121. package/lib/commonjs/web/registry.js +183 -0
  122. package/lib/commonjs/web/registry.js.map +2 -0
  123. package/lib/commonjs/web/runtime.js +167 -0
  124. package/lib/commonjs/web/runtime.js.map +2 -0
  125. package/lib/commonjs/web/shadowRegistry.js +114 -0
  126. package/lib/commonjs/web/shadowRegistry.js.map +2 -0
  127. package/lib/commonjs/web/state.js +69 -0
  128. package/lib/commonjs/web/state.js.map +2 -0
  129. package/lib/commonjs/web/utils/common.js +90 -0
  130. package/lib/commonjs/web/utils/common.js.map +2 -0
  131. package/lib/commonjs/web/utils/index.js +28 -0
  132. package/lib/commonjs/web/utils/index.js.map +1 -0
  133. package/lib/commonjs/web/utils/unistyle.js +82 -0
  134. package/lib/commonjs/web/utils/unistyle.js.map +2 -0
  135. package/lib/commonjs/web/variants/getVariants.js +39 -0
  136. package/lib/commonjs/web/variants/getVariants.js.map +1 -0
  137. package/lib/commonjs/web/variants/index.js +28 -0
  138. package/lib/commonjs/web/variants/index.js.map +1 -0
  139. package/lib/commonjs/web/variants/useVariants.js +58 -0
  140. package/lib/commonjs/web/variants/useVariants.js.map +2 -0
  141. package/lib/module/core/createUnistylesComponent.js +11 -0
  142. package/lib/module/core/createUnistylesComponent.js.map +2 -0
  143. package/lib/module/core/createUnistylesComponent.native.js +39 -0
  144. package/lib/module/core/createUnistylesComponent.native.js.map +1 -0
  145. package/lib/module/core/index.js +6 -0
  146. package/lib/module/core/index.js.map +1 -0
  147. package/lib/module/core/useBreakpoint.js +17 -0
  148. package/lib/module/core/useBreakpoint.js.map +1 -0
  149. package/lib/module/core/useBreakpoint.native.js +19 -0
  150. package/lib/module/core/useBreakpoint.native.js.map +2 -0
  151. package/lib/module/core/useTheme.js +17 -0
  152. package/lib/module/core/useTheme.js.map +2 -0
  153. package/lib/module/core/useTheme.native.js +19 -0
  154. package/lib/module/core/useTheme.native.js.map +2 -0
  155. package/lib/module/global.js +1 -1
  156. package/lib/module/global.js.map +1 -0
  157. package/lib/module/index.js +1 -9
  158. package/lib/module/index.js.map +1 -1
  159. package/lib/module/mq.js +1 -4
  160. package/lib/module/mq.js.map +2 -1
  161. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js +1 -0
  162. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js.map +2 -1
  163. package/lib/module/specs/NativePlatform/index.js.map +1 -1
  164. package/lib/module/specs/NavigtionBar/UnistylesNavigationBar.nitro.js.map +1 -1
  165. package/lib/module/specs/NavigtionBar/index.js +1 -1
  166. package/lib/module/specs/NavigtionBar/index.js.map +2 -1
  167. package/lib/module/specs/ShadowRegistry/ShadowRegistry.nitro.js.map +1 -1
  168. package/lib/module/specs/ShadowRegistry/index.js +7 -6
  169. package/lib/module/specs/ShadowRegistry/index.js.map +2 -1
  170. package/lib/module/specs/ShadowRegistry/types.js +2 -0
  171. package/lib/module/specs/ShadowRegistry/types.js.map +1 -0
  172. package/lib/module/specs/StatusBar/UnistylesStatusBar.nitro.js.map +1 -1
  173. package/lib/module/specs/StatusBar/index.js +1 -1
  174. package/lib/module/specs/StatusBar/index.js.map +1 -1
  175. package/lib/module/specs/StyleSheet/index.js +1 -0
  176. package/lib/module/specs/StyleSheet/index.js.map +2 -1
  177. package/lib/module/specs/TurboUnistyles/NativeTurboUnistyles.js.map +2 -1
  178. package/lib/module/specs/UnistylesRuntime/UnistylesRuntime.nitro.js.map +1 -0
  179. package/lib/module/specs/UnistylesRuntime/index.js +1 -1
  180. package/lib/module/specs/UnistylesRuntime/index.js.map +1 -1
  181. package/lib/module/specs/index.js +2 -1
  182. package/lib/module/specs/index.js.map +1 -1
  183. package/lib/module/specs/index.web.js +1 -1
  184. package/lib/module/specs/index.web.js.map +2 -1
  185. package/lib/module/specs/types.js +10 -10
  186. package/lib/module/specs/types.js.map +1 -1
  187. package/lib/module/types/accessibility.js +1 -1
  188. package/lib/module/types/accessibility.js.map +1 -0
  189. package/lib/module/types/breakpoints.js.map +1 -0
  190. package/lib/module/types/common.js +1 -1
  191. package/lib/module/types/common.js.map +1 -0
  192. package/lib/module/types/core.js.map +1 -1
  193. package/lib/module/types/index.js.map +2 -1
  194. package/lib/module/types/stylesheet.js.map +1 -1
  195. package/lib/module/types/variants.js.map +1 -0
  196. package/lib/module/web/convert/boxShadow.js +72 -0
  197. package/lib/module/web/convert/boxShadow.js.map +1 -0
  198. package/lib/module/web/convert/index.js +69 -0
  199. package/lib/module/web/convert/index.js.map +2 -0
  200. package/lib/module/web/convert/module.d.js +2 -0
  201. package/lib/module/web/convert/module.d.js.map +1 -0
  202. package/lib/module/web/convert/pseudo.js +5 -0
  203. package/lib/module/web/convert/pseudo.js.map +2 -0
  204. package/lib/module/web/convert/shadow.js +59 -0
  205. package/lib/module/web/convert/shadow.js.map +1 -0
  206. package/lib/module/web/convert/style.js +88 -0
  207. package/lib/module/web/convert/style.js.map +1 -0
  208. package/lib/module/web/convert/textShadow.js +68 -0
  209. package/lib/module/web/convert/textShadow.js.map +1 -0
  210. package/lib/module/web/convert/transform.js +67 -0
  211. package/lib/module/web/convert/transform.js.map +1 -0
  212. package/lib/module/web/convert/types.js +5 -0
  213. package/lib/module/web/convert/types.js.map +1 -0
  214. package/lib/module/web/convert/utils.js +42 -0
  215. package/lib/module/web/convert/utils.js.map +1 -0
  216. package/lib/module/web/create.js +43 -0
  217. package/lib/module/web/create.js.map +1 -0
  218. package/lib/module/web/index.js +25 -0
  219. package/lib/module/web/index.js.map +2 -0
  220. package/lib/module/web/listener.js +31 -0
  221. package/lib/module/web/listener.js.map +2 -0
  222. package/lib/module/web/mock.js +24 -0
  223. package/lib/module/web/mock.js.map +2 -0
  224. package/lib/module/web/mq.js +17 -0
  225. package/lib/module/web/mq.js.map +1 -0
  226. package/lib/module/web/registry.js +181 -0
  227. package/lib/module/web/registry.js.map +1 -0
  228. package/lib/module/web/runtime.js +163 -0
  229. package/lib/module/web/runtime.js.map +1 -0
  230. package/lib/module/web/shadowRegistry.js +118 -0
  231. package/lib/module/web/shadowRegistry.js.map +1 -0
  232. package/lib/module/web/state.js +65 -0
  233. package/lib/module/web/state.js.map +2 -0
  234. package/lib/module/web/utils/common.js +80 -0
  235. package/lib/module/web/utils/common.js.map +1 -0
  236. package/lib/module/web/utils/index.js +5 -0
  237. package/lib/module/web/utils/index.js.map +1 -0
  238. package/lib/module/web/utils/unistyle.js +69 -0
  239. package/lib/module/web/utils/unistyle.js.map +1 -0
  240. package/lib/module/web/variants/getVariants.js +34 -0
  241. package/lib/module/web/variants/getVariants.js.map +2 -0
  242. package/lib/module/web/variants/index.js +5 -0
  243. package/lib/module/web/variants/index.js.map +1 -0
  244. package/lib/module/web/variants/useVariants.js +53 -0
  245. package/lib/module/web/variants/useVariants.js.map +2 -0
  246. package/lib/typescript/src/core/createUnistylesComponent.d.ts +6 -0
  247. package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +1 -0
  248. package/lib/typescript/src/core/createUnistylesComponent.native.d.ts +6 -0
  249. package/lib/typescript/src/core/createUnistylesComponent.native.d.ts.map +1 -0
  250. package/lib/typescript/src/core/index.d.ts +4 -0
  251. package/lib/typescript/src/core/index.d.ts.map +1 -0
  252. package/lib/typescript/src/core/useBreakpoint.d.ts +2 -0
  253. package/lib/typescript/src/core/useBreakpoint.d.ts.map +1 -0
  254. package/lib/typescript/src/core/useBreakpoint.native.d.ts +2 -0
  255. package/lib/typescript/src/core/useBreakpoint.native.d.ts.map +1 -0
  256. package/lib/typescript/src/core/useTheme.d.ts +3 -0
  257. package/lib/typescript/src/core/useTheme.d.ts.map +1 -0
  258. package/lib/typescript/src/core/useTheme.native.d.ts +3 -0
  259. package/lib/typescript/src/core/useTheme.native.d.ts.map +1 -0
  260. package/lib/typescript/src/index.d.ts +2 -0
  261. package/lib/typescript/src/index.d.ts.map +1 -1
  262. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts +6 -2
  263. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts.map +1 -1
  264. package/lib/typescript/src/specs/NavigtionBar/index.d.ts +5 -0
  265. package/lib/typescript/src/specs/NavigtionBar/index.d.ts.map +1 -1
  266. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +3 -3
  267. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  268. package/lib/typescript/src/specs/StatusBar/index.d.ts +5 -0
  269. package/lib/typescript/src/specs/StatusBar/index.d.ts.map +1 -1
  270. package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts +3 -1
  271. package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts.map +1 -1
  272. package/lib/typescript/src/specs/StyleSheet/index.d.ts +3 -1
  273. package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
  274. package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts +0 -1
  275. package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts.map +1 -1
  276. package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts +3 -1
  277. package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts.map +1 -1
  278. package/lib/typescript/src/specs/index.d.ts +4 -2
  279. package/lib/typescript/src/specs/index.d.ts.map +1 -1
  280. package/lib/typescript/src/specs/index.web.d.ts +1 -1
  281. package/lib/typescript/src/specs/index.web.d.ts.map +1 -1
  282. package/lib/typescript/src/types/breakpoints.d.ts +11 -11
  283. package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
  284. package/lib/typescript/src/types/index.d.ts +1 -1
  285. package/lib/typescript/src/types/index.d.ts.map +1 -1
  286. package/lib/typescript/src/types/stylesheet.d.ts +6 -4
  287. package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
  288. package/lib/typescript/src/types/variants.d.ts +4 -1
  289. package/lib/typescript/src/types/variants.d.ts.map +1 -1
  290. package/lib/typescript/src/web/convert/boxShadow.d.ts +8 -0
  291. package/lib/typescript/src/web/convert/boxShadow.d.ts.map +1 -0
  292. package/lib/typescript/src/web/convert/index.d.ts +3 -0
  293. package/lib/typescript/src/web/convert/index.d.ts.map +1 -0
  294. package/lib/typescript/src/web/convert/pseudo.d.ts +6 -0
  295. package/lib/typescript/src/web/convert/pseudo.d.ts.map +1 -0
  296. package/lib/typescript/src/web/convert/shadow.d.ts.map +1 -0
  297. package/lib/typescript/src/web/convert/style.d.ts +2 -0
  298. package/lib/typescript/src/web/convert/style.d.ts.map +1 -0
  299. package/lib/typescript/src/web/convert/textShadow.d.ts +8 -0
  300. package/lib/typescript/src/web/convert/textShadow.d.ts.map +1 -0
  301. package/lib/typescript/src/web/convert/transform.d.ts +4 -0
  302. package/lib/typescript/src/web/convert/transform.d.ts.map +1 -0
  303. package/lib/typescript/{web → src/web}/convert/types.d.ts +1 -1
  304. package/lib/typescript/src/web/convert/types.d.ts.map +1 -0
  305. package/lib/typescript/src/web/convert/utils.d.ts.map +1 -0
  306. package/lib/typescript/src/web/create.d.ts +1443 -0
  307. package/lib/typescript/{web → src/web}/create.d.ts.map +1 -1
  308. package/lib/typescript/src/web/index.d.ts +1459 -0
  309. package/lib/typescript/{web → src/web}/index.d.ts.map +1 -1
  310. package/lib/typescript/{web/listener → src/web}/listener.d.ts +3 -2
  311. package/lib/typescript/src/web/listener.d.ts.map +1 -0
  312. package/lib/typescript/src/web/mock.d.ts +5 -0
  313. package/lib/typescript/src/web/mock.d.ts.map +1 -0
  314. package/lib/typescript/src/web/mq.d.ts +8 -0
  315. package/lib/typescript/src/web/mq.d.ts.map +1 -0
  316. package/lib/typescript/src/web/registry.d.ts +28 -0
  317. package/lib/typescript/src/web/registry.d.ts.map +1 -0
  318. package/lib/typescript/{web → src/web}/runtime.d.ts +9 -9
  319. package/lib/typescript/src/web/runtime.d.ts.map +1 -0
  320. package/lib/typescript/src/web/shadowRegistry.d.ts +16 -0
  321. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -0
  322. package/lib/typescript/src/web/state.d.ts +18 -0
  323. package/lib/typescript/src/web/state.d.ts.map +1 -0
  324. package/lib/typescript/{web/utils.d.ts → src/web/utils/common.d.ts} +8 -9
  325. package/lib/typescript/src/web/utils/common.d.ts.map +1 -0
  326. package/lib/typescript/src/web/utils/index.d.ts +3 -0
  327. package/lib/typescript/src/web/utils/index.d.ts.map +1 -0
  328. package/lib/typescript/src/web/utils/unistyle.d.ts +20 -0
  329. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -0
  330. package/lib/typescript/src/web/variants/getVariants.d.ts +3 -0
  331. package/lib/typescript/src/web/variants/getVariants.d.ts.map +1 -0
  332. package/lib/typescript/src/web/variants/index.d.ts +3 -0
  333. package/lib/typescript/src/web/variants/index.d.ts.map +1 -0
  334. package/lib/typescript/src/web/variants/useVariants.d.ts +3 -0
  335. package/lib/typescript/src/web/variants/useVariants.d.ts.map +1 -0
  336. package/nitrogen/generated/android/c++/JColorScheme.hpp +1 -1
  337. package/nitrogen/generated/android/c++/JFunc_void.hpp +48 -0
  338. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency_.hpp +8 -8
  339. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +31 -22
  340. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +8 -3
  341. package/nitrogen/generated/android/c++/JOrientation.hpp +1 -1
  342. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +4 -1
  343. package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +9 -7
  344. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void.kt +45 -0
  345. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +25 -5
  346. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +2 -1
  347. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +2 -1
  348. package/nitrogen/generated/android/unistyles+autolinking.cmake +13 -1
  349. package/nitrogen/generated/android/{UnistylesOnLoad.cpp → unistylesOnLoad.cpp} +4 -2
  350. package/nitrogen/generated/android/{UnistylesOnLoad.hpp → unistylesOnLoad.hpp} +1 -1
  351. package/nitrogen/generated/ios/Unistyles+autolinking.rb +5 -3
  352. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +25 -0
  353. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +53 -31
  354. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +0 -29
  355. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +7 -1
  356. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +3 -13
  357. package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +167 -104
  358. package/nitrogen/generated/ios/swift/UnistyleDependency.swift +4 -0
  359. package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +16 -5
  360. package/nitrogen/generated/shared/c++/ColorScheme.hpp +2 -2
  361. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +2 -0
  362. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +5 -0
  363. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +3 -0
  364. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +3 -0
  365. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +3 -0
  366. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +3 -0
  367. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +2 -1
  368. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +10 -4
  369. package/nitrogen/generated/shared/c++/Orientation.hpp +2 -2
  370. package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -1
  371. package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +10 -9
  372. package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +9 -8
  373. package/package.json +18 -30
  374. package/plugin/common.js +12 -1
  375. package/plugin/index.js +110 -23
  376. package/plugin/ref.js +64 -13
  377. package/plugin/style.js +82 -22
  378. package/plugin/stylesheet.js +53 -3
  379. package/plugin/variants.js +33 -0
  380. package/src/common.js +4 -0
  381. package/src/core/createUnistylesComponent.js +6 -0
  382. package/src/core/createUnistylesComponent.native.js +31 -0
  383. package/src/core/createUnistylesComponent.native.tsx +44 -0
  384. package/src/core/createUnistylesComponent.tsx +10 -0
  385. package/src/core/index.js +3 -0
  386. package/src/core/index.ts +3 -0
  387. package/src/core/useBreakpoint.js +14 -0
  388. package/src/core/useBreakpoint.native.js +16 -0
  389. package/src/core/useBreakpoint.native.ts +21 -0
  390. package/src/core/useBreakpoint.ts +18 -0
  391. package/src/core/useTheme.js +14 -0
  392. package/src/core/useTheme.native.js +16 -0
  393. package/src/core/useTheme.native.ts +22 -0
  394. package/src/core/useTheme.ts +19 -0
  395. package/src/global.js +1 -0
  396. package/src/index.js +3 -0
  397. package/src/index.ts +2 -12
  398. package/src/mq.js +38 -0
  399. package/src/specs/NativePlatform/NativePlatform.nitro.js +19 -0
  400. package/src/specs/NativePlatform/NativePlatform.nitro.ts +7 -3
  401. package/src/specs/NativePlatform/index.js +1 -0
  402. package/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.js +1 -0
  403. package/src/specs/NavigtionBar/index.js +9 -0
  404. package/src/specs/NavigtionBar/index.ts +6 -1
  405. package/src/specs/ShadowRegistry/ShadowRegistry.nitro.js +1 -0
  406. package/src/specs/ShadowRegistry/index.js +26 -0
  407. package/src/specs/ShadowRegistry/index.ts +10 -9
  408. package/src/specs/ShadowRegistry/types.js +1 -0
  409. package/src/specs/StatusBar/UnistylesStatusBar.nitro.js +1 -0
  410. package/src/specs/StatusBar/index.js +25 -0
  411. package/src/specs/StatusBar/index.ts +6 -1
  412. package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.js +1 -0
  413. package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.ts +4 -1
  414. package/src/specs/StyleSheet/index.js +13 -0
  415. package/src/specs/StyleSheet/index.ts +6 -1
  416. package/src/specs/TurboUnistyles/NativeTurboUnistyles.js +2 -0
  417. package/src/specs/TurboUnistyles/index.js +1 -0
  418. package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.js +1 -0
  419. package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.ts +0 -1
  420. package/src/specs/UnistylesRuntime/index.js +20 -0
  421. package/src/specs/UnistylesRuntime/index.ts +4 -2
  422. package/src/specs/index.js +8 -0
  423. package/src/specs/index.ts +6 -2
  424. package/src/specs/index.web.js +2 -0
  425. package/src/specs/index.web.ts +1 -1
  426. package/src/specs/types.js +17 -0
  427. package/src/types/accessibility.js +30 -0
  428. package/src/types/breakpoints.js +1 -0
  429. package/src/types/breakpoints.ts +25 -13
  430. package/src/types/common.js +1 -0
  431. package/src/types/core.js +1 -0
  432. package/src/types/index.js +1 -0
  433. package/src/types/index.ts +1 -1
  434. package/src/types/stylesheet.js +2 -0
  435. package/src/types/stylesheet.ts +7 -5
  436. package/src/types/variants.js +1 -0
  437. package/src/types/variants.ts +7 -1
  438. package/src/web/convert/boxShadow.js +59 -0
  439. package/{web → src/web}/convert/boxShadow.ts +14 -15
  440. package/src/web/convert/index.js +56 -0
  441. package/{web → src/web}/convert/index.ts +8 -15
  442. package/src/web/convert/pseudo.js +131 -0
  443. package/src/web/convert/pseudo.ts +137 -0
  444. package/src/web/convert/shadow.js +50 -0
  445. package/src/web/convert/style.js +137 -0
  446. package/{web → src/web}/convert/style.ts +61 -10
  447. package/src/web/convert/textShadow.js +56 -0
  448. package/{web → src/web}/convert/textShadow.ts +13 -14
  449. package/src/web/convert/transform.js +65 -0
  450. package/{web → src/web}/convert/transform.ts +7 -8
  451. package/src/web/convert/types.js +2 -0
  452. package/{web → src/web}/convert/types.ts +1 -1
  453. package/src/web/convert/utils.js +39 -0
  454. package/src/web/create.js +36 -0
  455. package/src/web/create.ts +47 -0
  456. package/src/web/index.js +22 -0
  457. package/{web → src/web}/index.ts +3 -2
  458. package/src/web/listener.js +26 -0
  459. package/{web/listener → src/web}/listener.ts +3 -3
  460. package/src/web/mock.js +21 -0
  461. package/{web → src/web}/mock.ts +2 -12
  462. package/src/web/mq.js +14 -0
  463. package/{web → src/web}/mq.ts +1 -3
  464. package/src/web/registry.js +165 -0
  465. package/src/web/registry.ts +236 -0
  466. package/src/web/runtime.js +160 -0
  467. package/{web → src/web}/runtime.ts +21 -18
  468. package/src/web/shadowRegistry.js +96 -0
  469. package/src/web/shadowRegistry.ts +121 -0
  470. package/src/web/state.js +68 -0
  471. package/src/web/state.ts +94 -0
  472. package/src/web/utils/common.js +79 -0
  473. package/{web/utils.ts → src/web/utils/common.ts} +48 -36
  474. package/src/web/utils/index.js +2 -0
  475. package/src/web/utils/index.ts +2 -0
  476. package/src/web/utils/unistyle.js +72 -0
  477. package/src/web/utils/unistyle.ts +104 -0
  478. package/src/web/variants/getVariants.js +26 -0
  479. package/src/web/variants/getVariants.ts +42 -0
  480. package/src/web/variants/index.js +2 -0
  481. package/src/web/variants/index.ts +2 -0
  482. package/src/web/variants/useVariants.js +50 -0
  483. package/src/web/variants/useVariants.ts +65 -0
  484. package/lib/typescript/example/App.d.ts +0 -4
  485. package/lib/typescript/example/App.d.ts.map +0 -1
  486. package/lib/typescript/example/unistyles.d.ts +0 -63
  487. package/lib/typescript/example/unistyles.d.ts.map +0 -1
  488. package/lib/typescript/expo-example/App.d.ts +0 -4
  489. package/lib/typescript/expo-example/App.d.ts.map +0 -1
  490. package/lib/typescript/expo-example/unistyles.d.ts +0 -63
  491. package/lib/typescript/expo-example/unistyles.d.ts.map +0 -1
  492. package/lib/typescript/web/convert/boxShadow.d.ts +0 -3
  493. package/lib/typescript/web/convert/boxShadow.d.ts.map +0 -1
  494. package/lib/typescript/web/convert/breakpoint.d.ts +0 -3
  495. package/lib/typescript/web/convert/breakpoint.d.ts.map +0 -1
  496. package/lib/typescript/web/convert/index.d.ts +0 -4
  497. package/lib/typescript/web/convert/index.d.ts.map +0 -1
  498. package/lib/typescript/web/convert/shadow.d.ts.map +0 -1
  499. package/lib/typescript/web/convert/style.d.ts +0 -3
  500. package/lib/typescript/web/convert/style.d.ts.map +0 -1
  501. package/lib/typescript/web/convert/textShadow.d.ts +0 -3
  502. package/lib/typescript/web/convert/textShadow.d.ts.map +0 -1
  503. package/lib/typescript/web/convert/transform.d.ts +0 -5
  504. package/lib/typescript/web/convert/transform.d.ts.map +0 -1
  505. package/lib/typescript/web/convert/types.d.ts.map +0 -1
  506. package/lib/typescript/web/convert/utils.d.ts.map +0 -1
  507. package/lib/typescript/web/create.d.ts +0 -2449
  508. package/lib/typescript/web/index.d.ts +0 -2464
  509. package/lib/typescript/web/listener/index.d.ts +0 -2
  510. package/lib/typescript/web/listener/index.d.ts.map +0 -1
  511. package/lib/typescript/web/listener/listener.d.ts.map +0 -1
  512. package/lib/typescript/web/mock.d.ts +0 -14
  513. package/lib/typescript/web/mock.d.ts.map +0 -1
  514. package/lib/typescript/web/mq.d.ts +0 -4
  515. package/lib/typescript/web/mq.d.ts.map +0 -1
  516. package/lib/typescript/web/pseudo.d.ts +0 -4
  517. package/lib/typescript/web/pseudo.d.ts.map +0 -1
  518. package/lib/typescript/web/registry.d.ts +0 -12
  519. package/lib/typescript/web/registry.d.ts.map +0 -1
  520. package/lib/typescript/web/runtime.d.ts.map +0 -1
  521. package/lib/typescript/web/state.d.ts +0 -24
  522. package/lib/typescript/web/state.d.ts.map +0 -1
  523. package/lib/typescript/web/useVariants.d.ts +0 -3
  524. package/lib/typescript/web/useVariants.d.ts.map +0 -1
  525. package/lib/typescript/web/utils.d.ts.map +0 -1
  526. package/plugin/__tests__/dependencies.spec.js +0 -360
  527. package/plugin/__tests__/ref.spec.js +0 -991
  528. package/plugin/__tests__/stylesheet.spec.js +0 -396
  529. package/web/convert/breakpoint.ts +0 -21
  530. package/web/create.ts +0 -102
  531. package/web/listener/index.ts +0 -1
  532. package/web/pseudo.ts +0 -11
  533. package/web/registry.ts +0 -41
  534. package/web/state.ts +0 -148
  535. package/web/useVariants.ts +0 -99
  536. /package/lib/typescript/{web → src/web}/convert/shadow.d.ts +0 -0
  537. /package/lib/typescript/{web → src/web}/convert/utils.d.ts +0 -0
  538. /package/nitrogen/generated/android/{UnistylesOnLoad.kt → unistylesOnLoad.kt} +0 -0
  539. /package/{web → src/web}/convert/module.d.ts +0 -0
  540. /package/{web → src/web}/convert/shadow.ts +0 -0
  541. /package/{web → src/web}/convert/utils.ts +0 -0
@@ -11,16 +11,16 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
11
11
  jsi::Object unwrappedStyleSheet = this->unwrapStyleSheet(rt, styleSheet);
12
12
 
13
13
  helpers::enumerateJSIObject(rt, unwrappedStyleSheet, [&](const std::string& styleKey, jsi::Value& propertyValue){
14
- helpers::assertThat(rt, propertyValue.isObject(), "style with name '" + styleKey + "' is not a function or object.");
14
+ helpers::assertThat(rt, propertyValue.isObject(), "Unistyles: Style with name '" + styleKey + "' is not a function or object.");
15
15
 
16
16
  jsi::Object styleValue = propertyValue.asObject(rt);
17
17
 
18
-
19
18
  if (styleValue.isFunction(rt)) {
20
19
  styleSheet->unistyles[styleKey] = std::make_shared<UnistyleDynamicFunction>(
21
20
  UnistyleType::DynamicFunction,
22
21
  styleKey,
23
- styleValue
22
+ styleValue,
23
+ styleSheet
24
24
  );
25
25
 
26
26
  return;
@@ -29,7 +29,8 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
29
29
  styleSheet->unistyles[styleKey] = std::make_shared<Unistyle>(
30
30
  UnistyleType::Object,
31
31
  styleKey,
32
- styleValue
32
+ styleValue,
33
+ styleSheet
33
34
  );
34
35
  });
35
36
  }
@@ -45,7 +46,7 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
45
46
 
46
47
  // StyleSheet is a function
47
48
  auto& state = core::UnistylesRegistry::get().getState(rt);
48
- auto theme = state.getJSTheme();
49
+ auto theme = state.getCurrentJSTheme();
49
50
 
50
51
  if (styleSheet->type == StyleSheetType::Themable) {
51
52
  return styleSheet->rawValue
@@ -68,14 +69,14 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
68
69
  void parser::Parser::parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
69
70
  for (const auto& [_, unistyle] : styleSheet->unistyles) {
70
71
  if (unistyle->type == core::UnistyleType::Object) {
71
- auto result = this->parseFirstLevel(rt, unistyle, styleSheet->variants);
72
+ auto result = this->parseFirstLevel(rt, unistyle, std::nullopt);
72
73
 
73
74
  unistyle->parsedStyle = std::move(result);
74
75
  unistyle->seal();
75
76
  }
76
77
 
77
78
  if (unistyle->type == core::UnistyleType::DynamicFunction) {
78
- auto hostFn = this->createDynamicFunctionProxy(rt, unistyle, styleSheet->variants);
79
+ auto hostFn = this->createDynamicFunctionProxy(rt, unistyle);
79
80
  auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
80
81
 
81
82
  // defer parsing dynamic functions
@@ -85,59 +86,98 @@ void parser::Parser::parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
85
86
  }
86
87
 
87
88
  // rebuild all unistyles in StyleSheet that depends on variants
88
- void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet) {
89
+ void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Variants& variants) {
89
90
  for (const auto& [_, unistyle] : styleSheet->unistyles) {
90
91
  if (!unistyle->dependsOn(UnistyleDependency::VARIANTS)) {
91
92
  continue;
92
93
  }
93
94
 
94
- this->rebuildUnistyle(rt, styleSheet, unistyle);
95
+ // todo skip dynamic functions
96
+ this->rebuildUnistyle(rt, styleSheet, unistyle, variants, std::nullopt);
95
97
  }
96
98
  }
97
99
 
98
100
  // rebuild all unistyles that are affected by platform event
99
- void parser::Parser::rebuildUnistylesInDependencyMap(jsi::Runtime& rt, DependencyMap& dependencyMap) {
100
- for (const auto& [styleSheet, map] : dependencyMap) {
101
- jsi::Object unwrappedStyleSheet = this->unwrapStyleSheet(rt, styleSheet);
102
-
103
- for (const auto& [shadowNode, unistyles] : map) {
104
- for (const auto& unistyle : unistyles) {
105
- // StyleSheet might have styles that are not affected
106
- if (!unwrappedStyleSheet.hasProperty(rt, unistyle->styleKey.c_str())) {
107
- continue;
101
+ void parser::Parser::rebuildUnistylesInDependencyMap(jsi::Runtime& rt, DependencyMap& dependencyMap, std::vector<std::shared_ptr<core::StyleSheet>> styleSheets) {
102
+ std::unordered_map<std::shared_ptr<StyleSheet>, jsi::Value> parsedStyleSheets{};
103
+ std::unordered_map<std::shared_ptr<core::Unistyle>, bool> parsedUnistyles{};
104
+
105
+ // parse all stylesheets that depends on changes
106
+ for (auto styleSheet : styleSheets) {
107
+ parsedStyleSheets.emplace(styleSheet, this->unwrapStyleSheet(rt, styleSheet));
108
+ }
109
+
110
+ // then parse all visible Unistyles
111
+ for (auto& [shadowNode, unistyles] : dependencyMap) {
112
+ auto styleSheet = unistyles.begin()->get()->unistyle->parent;
113
+
114
+ // stylesheet may be optional for exotic unistyles
115
+ if (styleSheet != nullptr && !parsedStyleSheets.contains(styleSheet)) {
116
+ parsedStyleSheets.emplace(styleSheet, this->unwrapStyleSheet(rt, styleSheet));
117
+ }
118
+
119
+ for (auto& unistyleData : unistyles) {
120
+ auto& unistyle = unistyleData->unistyle;
121
+
122
+ // for RN styles or inline styles, compute styles only once
123
+ if (unistyle->styleKey == helpers::EXOTIC_STYLE_KEY.c_str() && !unistyleData->parsedStyle.has_value()) {
124
+ unistyleData->parsedStyle = jsi::Value(rt, unistyle->rawValue).asObject(rt);
125
+
126
+ if (!parsedUnistyles.contains(unistyle)) {
127
+ parsedUnistyles.emplace(unistyle, true);
108
128
  }
109
129
 
110
- unistyle->rawValue = unwrappedStyleSheet.getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
111
- this->rebuildUnistyle(rt, styleSheet, unistyle);
130
+ continue;
131
+ }
132
+
133
+ // StyleSheet might have styles that are not affected
134
+ if (!parsedStyleSheets[styleSheet].asObject(rt).hasProperty(rt, unistyle->styleKey.c_str())) {
135
+ continue;
136
+ }
137
+
138
+ unistyle->rawValue = parsedStyleSheets[styleSheet].asObject(rt).getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
139
+ this->rebuildUnistyle(rt, styleSheet, unistyle, unistyleData->variants, unistyleData->dynamicFunctionMetadata);
140
+ unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
141
+
142
+ if (!parsedUnistyles.contains(unistyle)) {
143
+ parsedUnistyles.emplace(unistyle, true);
144
+ }
145
+ }
146
+ }
147
+
148
+ // parse whatever left in StyleSheets
149
+ for (auto styleSheet : styleSheets) {
150
+ for (auto& [_, unistyle] : styleSheet->unistyles) {
151
+ if (!parsedUnistyles.contains(unistyle)) {
152
+ parsedUnistyles.emplace(unistyle, true);
153
+ unistyle->rawValue = parsedStyleSheets[styleSheet].asObject(rt).getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
154
+ this->rebuildUnistyle(rt, styleSheet, unistyle, {}, std::nullopt);
112
155
  }
113
156
  }
114
157
  }
115
158
  }
116
159
 
117
160
  // rebuild single unistyle
118
- void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle) {
161
+ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle, const Variants& variants, std::optional<std::vector<folly::dynamic>> metadata) {
119
162
  if (unistyle->type == core::UnistyleType::Object) {
120
- auto result = this->parseFirstLevel(rt, unistyle, styleSheet->variants);
163
+ auto result = this->parseFirstLevel(rt, unistyle, variants);
121
164
 
122
165
  unistyle->parsedStyle = std::move(result);
123
166
  }
124
167
 
125
168
  // for functions we need to call memoized function
126
169
  // with last know arguments and parse it with new theme and mini runtime
127
- if (unistyle->type == core::UnistyleType::DynamicFunction) {
170
+ if (unistyle->type == core::UnistyleType::DynamicFunction && metadata.has_value()) {
128
171
  auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
129
- auto maybeMetadata = unistyleFn->dynamicFunctionMetadata;
130
-
131
- helpers::assertThat(rt, maybeMetadata.has_value(), "Your dynamic function '" + unistyleFn->styleKey + "' has no metadata and can't be processed.");
132
172
 
133
173
  // convert arguments to jsi::Value
134
- auto metadata = unistyleFn->dynamicFunctionMetadata.value();
174
+ auto dynamicFunctionMetadata = metadata.value();
135
175
  std::vector<jsi::Value> args{};
136
-
137
- args.reserve(3);
138
176
 
139
- for (int i = 0; i < metadata.count; i++) {
140
- folly::dynamic& arg = metadata.arguments.at(i);
177
+ args.reserve(dynamicFunctionMetadata.size());
178
+
179
+ for (int i = 0; i < dynamicFunctionMetadata.size(); i++) {
180
+ folly::dynamic& arg = dynamicFunctionMetadata.at(i);
141
181
 
142
182
  args.emplace_back(jsi::valueFromDynamic(rt, arg));
143
183
  }
@@ -145,96 +185,34 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
145
185
  const jsi::Value *argStart = args.data();
146
186
 
147
187
  // call cached function with memoized arguments
148
- auto functionResult = unistyleFn->proxiedFunction.value().callAsConstructor(rt, argStart, metadata.count).asObject(rt);
188
+ auto functionResult = unistyleFn->rawValue
189
+ .asFunction(rt)
190
+ .call(rt, argStart, dynamicFunctionMetadata.size())
191
+ .asObject(rt);
149
192
 
150
193
  unistyleFn->unprocessedValue = std::move(functionResult);
151
- unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, styleSheet->variants);
194
+ unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
152
195
  }
153
196
  }
154
197
 
155
198
  // convert dependency map to shadow tree updates
156
- shadow::ShadowLeafUpdates parser::Parser::dependencyMapToShadowLeafUpdates(DependencyMap& dependencyMap) {
199
+ void parser::Parser::rebuildShadowLeafUpdates(core::DependencyMap& dependencyMap) {
157
200
  shadow::ShadowLeafUpdates updates;
201
+ auto& registry = core::UnistylesRegistry::get();
158
202
  auto& rt = this->_unistylesRuntime->getRuntime();
159
203
 
160
- for (const auto& [styleSheet, map] : dependencyMap) {
161
- for (const auto& [shadowNode, unistyles] : map) {
162
- for (const auto& unistyle : unistyles) {
163
- auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyle->parsedStyle.value());
164
-
165
- if (updates.contains(shadowNode)) {
166
- updates[shadowNode].emplace_back(std::move(rawProps));
204
+ for (const auto& [shadowNode, unistyles] : dependencyMap) {
205
+ auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyles);
167
206
 
168
- continue;
169
- }
170
-
171
- updates.emplace(shadowNode, std::vector<RawProps>{std::move(rawProps)});
172
- }
173
- }
207
+ updates.emplace(shadowNode, std::move(rawProps));
174
208
  }
175
209
 
176
- return updates;
177
- }
178
-
179
- // convert jsi::Value arguments to folly::dynamic
180
- std::vector<folly::dynamic> parser::Parser::parseDynamicFunctionArguments(jsi::Runtime& rt, size_t count, const jsi::Value* arguments) {
181
- std::vector<folly::dynamic> parsedArgument{};
182
-
183
- parsedArgument.reserve(3);
184
-
185
- for (size_t i = 0; i < count; i++) {
186
- auto& arg = arguments[i];
187
-
188
- if (arg.isBool()) {
189
- parsedArgument.push_back(folly::dynamic(arg.asBool()));
190
-
191
- continue;
192
- }
193
-
194
- if (arg.isNumber()) {
195
- parsedArgument.push_back(folly::dynamic(arg.asNumber()));
196
-
197
- continue;
198
- }
199
-
200
- if (arg.isString()) {
201
- parsedArgument.push_back(folly::dynamic(arg.asString(rt).utf8(rt)));
202
-
203
- continue;
204
- }
205
-
206
- if (arg.isUndefined()) {
207
- parsedArgument.push_back(folly::dynamic());
208
-
209
- continue;
210
- }
211
-
212
- if (arg.isNull()) {
213
- parsedArgument.push_back(folly::dynamic(nullptr));
214
-
215
- continue;
216
- }
217
-
218
- if (!arg.isObject()) {
219
- continue;;
220
- }
221
-
222
- auto argObj = arg.asObject(rt);
223
-
224
- // allow arrays and objects too
225
- if (!argObj.isFunction(rt) && !argObj.isArrayBuffer(rt)) {
226
- parsedArgument.push_back(jsi::dynamicFromValue(rt, arg));
227
-
228
- continue;
229
- }
230
- }
231
-
232
- return parsedArgument;
210
+ registry.trafficController._unistylesUpdates[&rt] = std::move(updates);
233
211
  }
234
212
 
235
213
  // first level of StyleSheet, we can expect here different properties than on second level
236
214
  // eg. variants, compoundVariants, mq, breakpoints etc.
237
- jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants& variants) {
215
+ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<Variants> variants) {
238
216
  // for objects - we simply operate on them
239
217
  // for functions we need to work on the unprocessed result (object)
240
218
  auto& style = unistyle->type == core::UnistyleType::Object
@@ -293,6 +271,18 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
293
271
  return;
294
272
  }
295
273
 
274
+ if (propertyName == "boxShadow" && propertyValueObject.isArray(rt)) {
275
+ parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseBoxShadow(rt, unistyle, propertyValueObject));
276
+
277
+ return;
278
+ }
279
+
280
+ if (propertyName == "filter" && propertyValueObject.isArray(rt)) {
281
+ parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseFilters(rt, unistyle, propertyValueObject));
282
+
283
+ return;
284
+ }
285
+
296
286
  if (propertyName == "fontVariant" && propertyValueObject.isArray(rt)) {
297
287
  parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), propertyValue);
298
288
 
@@ -316,20 +306,16 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
316
306
 
317
307
  parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), this->parseSecondLevel(rt, unistyle, valueFromBreakpoint));
318
308
  });
319
-
320
- if (shouldParseVariants) {
321
- unistyle->addDependency(UnistyleDependency::VARIANTS);
322
- }
323
309
 
324
- if (shouldParseVariants && !variants.empty()) {
310
+ if (shouldParseVariants && variants.has_value() && !variants.value().empty()) {
325
311
  auto propertyValueObject = style.getProperty(rt, "variants").asObject(rt);
326
- auto parsedVariant = this->parseVariants(rt, unistyle, propertyValueObject, variants);
312
+ auto parsedVariant = this->parseVariants(rt, unistyle, propertyValueObject, variants.value());
327
313
 
328
314
  helpers::mergeJSIObjects(rt, parsedStyle, parsedVariant);
329
315
 
330
316
  if (shouldParseCompoundVariants) {
331
317
  auto compoundVariants = style.getProperty(rt, "compoundVariants").asObject(rt);
332
- auto parsedCompoundVariants = this->parseCompoundVariants(rt, unistyle, compoundVariants, variants);
318
+ auto parsedCompoundVariants = this->parseCompoundVariants(rt, unistyle, compoundVariants, variants.value());
333
319
 
334
320
  helpers::mergeJSIObjects(rt, parsedStyle, parsedCompoundVariants);
335
321
  }
@@ -339,14 +325,14 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
339
325
  }
340
326
 
341
327
  // function replaces original user dynamic function with additional logic to memoize arguments
342
- jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants& variants) {
328
+ jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle) {
343
329
  auto unistylesRuntime = this->_unistylesRuntime;
344
330
 
345
331
  return jsi::Function::createFromHostFunction(
346
332
  rt,
347
333
  jsi::PropNameID::forUtf8(rt, unistyle->styleKey),
348
334
  1,
349
- [this, unistylesRuntime, unistyle, &variants](jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
335
+ [this, unistylesRuntime, unistyle](jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count) {
350
336
  auto thisObject = thisVal.asObject(rt);
351
337
  auto parser = parser::Parser(unistylesRuntime);
352
338
 
@@ -356,25 +342,33 @@ jsi::Function parser::Parser::createDynamicFunctionProxy(jsi::Runtime& rt, Unist
356
342
  // memoize metadata to call it later
357
343
  auto unistyleFn = std::dynamic_pointer_cast<UnistyleDynamicFunction>(unistyle);
358
344
 
359
- unistyleFn->dynamicFunctionMetadata = core::DynamicFunctionMetadata{
360
- count,
361
- this->parseDynamicFunctionArguments(rt, count, args)
362
- };
363
-
364
345
  unistyleFn->unprocessedValue = jsi::Value(rt, result).asObject(rt);
346
+
347
+ jsi::Value rawVariants = thisObject.hasProperty(rt, helpers::STYLE_VARIANTS.c_str())
348
+ ? thisObject.getProperty(rt, helpers::STYLE_VARIANTS.c_str())
349
+ : jsi::Value::undefined();
350
+ std::optional<Variants> variants = rawVariants.isUndefined()
351
+ ? std::nullopt
352
+ : std::optional<Variants>(helpers::variantsToPairs(rt, rawVariants.asObject(rt)));
353
+
365
354
  unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
366
355
  unistyleFn->seal();
367
356
 
368
- return jsi::Value(rt, unistyleFn->parsedStyle.value());
357
+ // include dependencies for createUnistylesComponent
358
+ jsi::Object style = jsi::Value(rt, unistyleFn->parsedStyle.value()).asObject(rt);
359
+
360
+ helpers::defineHiddenProperty(rt, style, helpers::STYLE_DEPENDENCIES, helpers::dependenciesToJSIArray(rt, unistyle->dependencies));
361
+
362
+ return style;
369
363
  });
370
364
  }
371
365
 
372
366
  // function convert babel generated dependencies to C++ dependencies
373
367
  std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies) {
374
- helpers::assertThat(rt, dependencies.isArray(rt), "babel transform is invalid. Unexpected type for dependencies. Please report new Github issue.");
368
+ helpers::assertThat(rt, dependencies.isArray(rt), "Unistyles: Babel transform is invalid - unexpected type for dependencies.");
375
369
 
376
370
  std::vector<UnistyleDependency> parsedDependencies{};
377
-
371
+
378
372
  parsedDependencies.reserve(5);
379
373
 
380
374
  helpers::iterateJSIArray(rt, dependencies.asArray(rt), [&](size_t i, jsi::Value& value){
@@ -388,12 +382,8 @@ std::vector<UnistyleDependency> parser::Parser::parseDependencies(jsi::Runtime &
388
382
 
389
383
  // eg. [{ scale: 2 }, { translateX: 100 }]
390
384
  jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
391
- if (!obj.isArray(rt)) {
392
- return jsi::Value::undefined();
393
- }
394
-
395
385
  std::vector<jsi::Value> parsedTransforms{};
396
-
386
+
397
387
  parsedTransforms.reserve(2);
398
388
 
399
389
  helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
@@ -421,6 +411,67 @@ jsi::Value parser::Parser::parseTransforms(jsi::Runtime& rt, Unistyle::Shared un
421
411
  return result;
422
412
  }
423
413
 
414
+ // eg [{offsetX: 5, offsetY: 5, blurRadius: 5, spreadDistance: 0, color: ‘rgba(255, 0, 0, 0.5)’}]
415
+ jsi::Value parser::Parser::parseBoxShadow(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
416
+ std::vector<jsi::Value> parsedBoxShadows{};
417
+
418
+ parsedBoxShadows.reserve(2);
419
+
420
+ helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
421
+ if (!value.isObject()) {
422
+ return;
423
+ }
424
+
425
+ auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
426
+
427
+ parsedBoxShadows.emplace_back(std::move(parsedResult));
428
+ });
429
+
430
+ // create jsi::Array result with correct box shadows
431
+ jsi::Array result = jsi::Array(rt, parsedBoxShadows.size());
432
+
433
+ for (size_t i = 0; i < parsedBoxShadows.size(); i++) {
434
+ result.setValueAtIndex(rt, i, parsedBoxShadows[i]);
435
+ }
436
+
437
+ return result;
438
+ }
439
+
440
+ // eg. [{ brightness: 0.5 }, { opacity: 0.25 }]
441
+ jsi::Value parser::Parser::parseFilters(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
442
+ std::vector<jsi::Value> parsedFilters{};
443
+
444
+ parsedFilters.reserve(2);
445
+
446
+ helpers::iterateJSIArray(rt, obj.asArray(rt), [&](size_t i, jsi::Value& value){
447
+ if (!value.isObject()) {
448
+ return;
449
+ }
450
+
451
+ auto parsedResult = this->parseSecondLevel(rt, unistyle, value);
452
+
453
+ // take only one filter per object
454
+ jsi::Array propertyNames = parsedResult.asObject(rt).getPropertyNames(rt);
455
+ size_t length = propertyNames.size(rt);
456
+
457
+ // ignore no filters
458
+ if (length == 0) {
459
+ return;
460
+ }
461
+
462
+ parsedFilters.emplace_back(std::move(parsedResult));
463
+ });
464
+
465
+ // create jsi::Array result with correct filters
466
+ jsi::Array result = jsi::Array(rt, parsedFilters.size());
467
+
468
+ for (size_t i = 0; i < parsedFilters.size(); i++) {
469
+ result.setValueAtIndex(rt, i, parsedFilters[i]);
470
+ }
471
+
472
+ return result;
473
+ }
474
+
424
475
  // find value based on breakpoints and mq
425
476
  jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj) {
426
477
  auto& registry = core::UnistylesRegistry::get();
@@ -442,7 +493,7 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
442
493
  auto propertyName = propertyNames.getValueAtIndex(rt, i).asString(rt).utf8(rt);
443
494
  auto propertyValue = obj.getProperty(rt, propertyName.c_str());
444
495
  auto mq = core::UnistylesMQ{propertyName};
445
-
496
+
446
497
  if (mq.isMQ()) {
447
498
  unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
448
499
  }
@@ -455,11 +506,11 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
455
506
 
456
507
  // check orientation breakpoints if user didn't register own breakpoint
457
508
  bool hasOrientationBreakpoint = obj.hasProperty(rt, currentOrientation);
458
-
509
+
459
510
  if (hasOrientationBreakpoint) {
460
511
  unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
461
512
  }
462
-
513
+
463
514
  if (!hasBreakpoints && hasOrientationBreakpoint) {
464
515
  return obj.getProperty(rt, currentOrientation);
465
516
  }
@@ -467,7 +518,7 @@ jsi::Value parser::Parser::getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::S
467
518
  if (!currentBreakpoint.has_value()) {
468
519
  return jsi::Value::undefined();
469
520
  }
470
-
521
+
471
522
  unistyle->addDependency(UnistyleDependency::BREAKPOINTS);
472
523
 
473
524
  // if you're still here it means that there is no
@@ -513,7 +564,7 @@ jsi::Object parser::Parser::parseVariants(jsi::Runtime& rt, Unistyle::Shared uni
513
564
  : std::nullopt;
514
565
 
515
566
  // we've got a match, but we need to check some condition
516
- auto styles = this->getStylesForVariant(rt, groupValue.asObject(rt), selectedVariant);
567
+ auto styles = this->getStylesForVariant(rt, groupName, groupValue.asObject(rt), selectedVariant, variants);
517
568
 
518
569
  // oops, invalid variant
519
570
  if (styles.isUndefined() || !styles.isObject()) {
@@ -529,13 +580,19 @@ jsi::Object parser::Parser::parseVariants(jsi::Runtime& rt, Unistyle::Shared uni
529
580
  }
530
581
 
531
582
  // helpers function to support 'default' variants
532
- jsi::Value parser::Parser::getStylesForVariant(jsi::Runtime& rt, jsi::Object&& groupValue, std::optional<std::string> selectedVariant) {
583
+ jsi::Value parser::Parser::getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants) {
533
584
  // if there is no value, let's try 'default'
534
585
  auto selectedVariantKey = selectedVariant.has_value()
535
586
  ? selectedVariant.value().c_str()
536
587
  : "default";
588
+ auto hasKey = groupValue.hasProperty(rt, selectedVariantKey);
537
589
 
538
- if (groupValue.hasProperty(rt, selectedVariantKey)) {
590
+ if (!hasKey || !selectedVariant.has_value()) {
591
+ // for no key, add 'default' selection to variants map
592
+ variants.emplace_back(groupName, selectedVariantKey);
593
+ }
594
+
595
+ if (hasKey) {
539
596
  return groupValue.getProperty(rt, selectedVariantKey);
540
597
  }
541
598
 
@@ -575,28 +632,20 @@ bool parser::Parser::shouldApplyCompoundVariants(jsi::Runtime& rt, const Variant
575
632
  return false;
576
633
  }
577
634
 
578
- jsi::Array propertyNames = compoundVariant.getPropertyNames(rt);
579
- size_t length = propertyNames.size(rt);
580
- size_t allConditions = compoundVariant.hasProperty(rt, "styles")
581
- ? length - 1
582
- : length;
583
-
584
- if (allConditions != variants.size()) {
585
- return false;
586
- }
587
-
588
635
  for (auto it = variants.cbegin(); it != variants.cend(); ++it) {
589
636
  auto variantKey = it->first;
590
637
  auto variantValue = it->second;
591
638
 
592
639
  if (!compoundVariant.hasProperty(rt, variantKey.c_str())) {
593
- return false;
640
+ continue;
594
641
  }
595
642
 
596
643
  auto property = compoundVariant.getProperty(rt, variantKey.c_str());
597
644
  auto propertyName = property.isBool()
598
645
  ? (property.asBool() ? "true" : "false")
599
- : property.asString(rt).utf8(rt);
646
+ : property.isString()
647
+ ? property.asString(rt).utf8(rt)
648
+ : "";
600
649
 
601
650
  if (propertyName != variantValue) {
602
651
  return false;
@@ -674,41 +723,25 @@ jsi::Value parser::Parser::parseSecondLevel(jsi::Runtime &rt, Unistyle::Shared u
674
723
  return parsedStyle;
675
724
  }
676
725
 
677
- // helpers function that convert variants from JS to C++ variants
678
- Variants parser::Parser::variantsToPairs(jsi::Runtime& rt, jsi::Object&& variants) {
679
- Variants pairs{};
680
-
681
- helpers::enumerateJSIObject(rt, variants, [&](const std::string& variantName, jsi::Value& variantValue){
682
- if (variantValue.isUndefined() || variantValue.isNull()) {
683
- return;
684
- }
685
-
686
- if (variantValue.isBool()) {
687
- pairs.emplace_back(std::make_pair(variantName, variantValue.asBool() ? "true" : "false"));
688
-
689
- return;
690
- }
691
-
692
- if (variantValue.isString()) {
693
- pairs.emplace_back(std::make_pair(variantName, variantValue.asString(rt).utf8(rt)));
694
- }
695
- });
696
-
697
- return pairs;
698
- }
699
-
700
- // convert jsi::Object to RawValue with int colors
701
- RawProps parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, jsi::Object& styles) {
726
+ // convert unistyles to RawValue with int colors
727
+ RawProps parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles) {
702
728
  jsi::Object convertedStyles = jsi::Object(rt);
703
729
  auto& state = core::UnistylesRegistry::get().getState(rt);
704
730
 
705
- helpers::enumerateJSIObject(rt, styles, [&](const std::string& propertyName, jsi::Value& propertyValue){
706
- if (this->isColor(propertyName)) {
707
- return convertedStyles.setProperty(rt, propertyName.c_str(), jsi::Value(state.parseColor(propertyValue)));
731
+ for (const auto& unistyleData : unistyles) {
732
+ if (!unistyleData->parsedStyle.has_value()) {
733
+ // todo this something happens with large dataset, debug it
734
+ continue;
708
735
  }
709
736
 
710
- convertedStyles.setProperty(rt, propertyName.c_str(), propertyValue);
711
- });
737
+ helpers::enumerateJSIObject(rt, unistyleData->parsedStyle.value(), [&](const std::string& propertyName, jsi::Value& propertyValue){
738
+ if (this->isColor(propertyName)) {
739
+ return convertedStyles.setProperty(rt, propertyName.c_str(), jsi::Value(state.parseColor(propertyValue)));
740
+ }
741
+
742
+ convertedStyles.setProperty(rt, propertyName.c_str(), propertyValue);
743
+ });
744
+ }
712
745
 
713
746
  return RawProps(rt, std::move(convertedStyles));
714
747
  }
@@ -17,36 +17,32 @@ using namespace facebook;
17
17
  using namespace margelo::nitro::unistyles::core;
18
18
 
19
19
  using Variants = std::vector<std::pair<std::string, std::string>>;
20
- using DependencyMap = std::unordered_map<
21
- std::shared_ptr<core::StyleSheet>,
22
- std::unordered_map<const ShadowNodeFamily*, std::vector<core::Unistyle::Shared>>
23
- >;
24
20
 
25
21
  struct Parser {
26
22
  Parser(std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime): _unistylesRuntime{unistylesRuntime} {}
27
23
 
28
24
  void buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
29
25
  void parseUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
30
- Variants variantsToPairs(jsi::Runtime& rt, jsi::Object&& variants);
31
- void rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
32
- void rebuildUnistylesInDependencyMap(jsi::Runtime& rt, DependencyMap& dependencyMap);
33
- shadow::ShadowLeafUpdates dependencyMapToShadowLeafUpdates(DependencyMap& dependencyMap);
26
+ void rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Variants& variants);
27
+ void rebuildUnistylesInDependencyMap(jsi::Runtime& rt, core::DependencyMap& dependencyMap, std::vector<std::shared_ptr<core::StyleSheet>> styleSheets);
28
+ void rebuildShadowLeafUpdates(core::DependencyMap& dependencyMap);
34
29
 
35
30
  private:
36
- void rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle);
31
+ void rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet, Unistyle::Shared unistyle, const Variants& variants, std::optional<std::vector<folly::dynamic>>);
37
32
  jsi::Object unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<StyleSheet> styleSheet);
38
- jsi::Object parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants& variants);
33
+ jsi::Object parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, std::optional<Variants> variants);
39
34
  jsi::Value parseSecondLevel(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Value& nestedObject);
40
- jsi::Function createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle, Variants& variants);
41
- std::vector<folly::dynamic> parseDynamicFunctionArguments(jsi::Runtime& rt, size_t count, const jsi::Value* arguments);
35
+ jsi::Function createDynamicFunctionProxy(jsi::Runtime& rt, Unistyle::Shared unistyle);
42
36
  std::vector<UnistyleDependency> parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies);
43
37
  jsi::Value parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
38
+ jsi::Value parseBoxShadow(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
39
+ jsi::Value parseFilters(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
44
40
  jsi::Value getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
45
41
  jsi::Object parseVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
46
- jsi::Value getStylesForVariant(jsi::Runtime& rt, jsi::Object&& groupValue, std::optional<std::string> selectedVariant);
42
+ jsi::Value getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants);
47
43
  jsi::Object parseCompoundVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
48
44
  bool shouldApplyCompoundVariants(jsi::Runtime& rt, const Variants& variants, jsi::Object& compoundVariant);
49
- RawProps parseStylesToShadowTreeStyles(jsi::Runtime& rt, jsi::Object& parsedStyles);
45
+ RawProps parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles);
50
46
  bool isColor(const std::string& propertyName);
51
47
 
52
48
  std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;