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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (536) 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 +14 -15
  14. package/cxx/core/UnistylesCommitHook.h +6 -11
  15. package/cxx/core/UnistylesCommitShadowNode.h +13 -0
  16. package/cxx/core/UnistylesMountHook.cpp +28 -0
  17. package/cxx/core/UnistylesMountHook.h +25 -0
  18. package/cxx/core/UnistylesRegistry.cpp +104 -89
  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 +136 -46
  24. package/cxx/hybridObjects/HybridStyleSheet.h +23 -5
  25. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +51 -8
  26. package/cxx/hybridObjects/HybridUnistylesRuntime.h +12 -1
  27. package/cxx/parser/Parser.cpp +236 -165
  28. package/cxx/parser/Parser.h +11 -14
  29. package/cxx/shadowTree/ShadowLeafUpdate.h +2 -1
  30. package/cxx/shadowTree/ShadowTrafficController.h +60 -0
  31. package/cxx/shadowTree/ShadowTreeManager.cpp +17 -17
  32. package/cxx/shadowTree/ShadowTreeManager.h +3 -2
  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 +9 -1
  40. package/lib/commonjs/core/createUnistylesComponent.js +18 -0
  41. package/lib/commonjs/core/createUnistylesComponent.js.map +1 -0
  42. package/lib/commonjs/core/createUnistylesComponent.native.js +46 -0
  43. package/lib/commonjs/core/createUnistylesComponent.native.js.map +1 -0
  44. package/lib/commonjs/core/index.js +27 -0
  45. package/lib/commonjs/core/index.js.map +1 -0
  46. package/lib/commonjs/core/useBreakpoint.js +22 -0
  47. package/lib/commonjs/core/useBreakpoint.js.map +1 -0
  48. package/lib/commonjs/core/useBreakpoint.native.js +24 -0
  49. package/lib/commonjs/core/useBreakpoint.native.js.map +1 -0
  50. package/lib/commonjs/core/useTheme.js +22 -0
  51. package/lib/commonjs/core/useTheme.js.map +1 -0
  52. package/lib/commonjs/core/useTheme.native.js +24 -0
  53. package/lib/commonjs/core/useTheme.native.js.map +1 -0
  54. package/lib/commonjs/global.js +3 -0
  55. package/lib/commonjs/index.js +23 -11
  56. package/lib/commonjs/index.js.map +1 -1
  57. package/lib/commonjs/mq.js +1 -4
  58. package/lib/commonjs/mq.js.map +2 -1
  59. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js +1 -0
  60. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js.map +2 -1
  61. package/lib/commonjs/specs/NativePlatform/index.js.map +1 -1
  62. package/lib/commonjs/specs/NavigtionBar/index.js +1 -1
  63. package/lib/commonjs/specs/NavigtionBar/index.js.map +1 -1
  64. package/lib/commonjs/specs/ShadowRegistry/index.js +7 -6
  65. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  66. package/lib/commonjs/specs/ShadowRegistry/types.js +3 -0
  67. package/lib/commonjs/specs/StatusBar/index.js +1 -1
  68. package/lib/commonjs/specs/StatusBar/index.js.map +1 -1
  69. package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.js +2 -4
  70. package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.js.map +1 -1
  71. package/lib/commonjs/specs/StyleSheet/index.js +1 -0
  72. package/lib/commonjs/specs/StyleSheet/index.js.map +2 -1
  73. package/lib/commonjs/specs/UnistylesRuntime/index.js +1 -1
  74. package/lib/commonjs/specs/UnistylesRuntime/index.js.map +1 -1
  75. package/lib/commonjs/specs/index.js +7 -0
  76. package/lib/commonjs/specs/index.js.map +1 -1
  77. package/lib/commonjs/specs/index.web.js +1 -1
  78. package/lib/commonjs/specs/index.web.js.map +2 -1
  79. package/lib/commonjs/specs/types.js +10 -10
  80. package/lib/commonjs/specs/types.js.map +1 -0
  81. package/lib/commonjs/types/accessibility.js +1 -1
  82. package/lib/commonjs/types/accessibility.js.map +1 -0
  83. package/lib/commonjs/types/common.js +3 -0
  84. package/lib/commonjs/types/stylesheet.js.map +1 -1
  85. package/lib/commonjs/types/variants.js.map +1 -1
  86. package/lib/commonjs/web/convert/boxShadow.js +74 -0
  87. package/lib/commonjs/web/convert/boxShadow.js.map +2 -0
  88. package/lib/commonjs/web/convert/index.js +68 -0
  89. package/lib/commonjs/web/convert/index.js.map +2 -0
  90. package/lib/commonjs/web/convert/module.d.js +2 -0
  91. package/lib/commonjs/web/convert/module.d.js.map +1 -0
  92. package/lib/commonjs/web/convert/pseudo.js +10 -0
  93. package/lib/commonjs/web/convert/pseudo.js.map +2 -0
  94. package/lib/commonjs/web/convert/shadow.js +64 -0
  95. package/lib/commonjs/web/convert/shadow.js.map +1 -0
  96. package/lib/commonjs/web/convert/style.js +93 -0
  97. package/lib/commonjs/web/convert/style.js.map +2 -0
  98. package/lib/commonjs/web/convert/textShadow.js +73 -0
  99. package/lib/commonjs/web/convert/textShadow.js.map +1 -0
  100. package/lib/commonjs/web/convert/transform.js +72 -0
  101. package/lib/commonjs/web/convert/transform.js.map +2 -0
  102. package/lib/commonjs/web/convert/types.js +9 -0
  103. package/lib/commonjs/web/convert/types.js.map +1 -0
  104. package/lib/commonjs/web/convert/utils.js +54 -0
  105. package/lib/commonjs/web/convert/utils.js.map +2 -0
  106. package/lib/commonjs/web/create.js +48 -0
  107. package/lib/commonjs/web/create.js.map +1 -0
  108. package/lib/commonjs/web/index.js +60 -0
  109. package/lib/commonjs/web/index.js.map +1 -0
  110. package/lib/commonjs/web/listener.js +35 -0
  111. package/lib/commonjs/web/listener.js.map +1 -0
  112. package/lib/commonjs/web/mock.js +28 -0
  113. package/lib/commonjs/web/mock.js.map +1 -0
  114. package/lib/commonjs/web/mq.js +23 -0
  115. package/lib/commonjs/web/mq.js.map +1 -0
  116. package/lib/commonjs/web/registry.js +183 -0
  117. package/lib/commonjs/web/registry.js.map +2 -0
  118. package/lib/commonjs/web/runtime.js +167 -0
  119. package/lib/commonjs/web/runtime.js.map +2 -0
  120. package/lib/commonjs/web/shadowRegistry.js +114 -0
  121. package/lib/commonjs/web/shadowRegistry.js.map +2 -0
  122. package/lib/commonjs/web/state.js +69 -0
  123. package/lib/commonjs/web/state.js.map +2 -0
  124. package/lib/commonjs/web/utils/common.js +92 -0
  125. package/lib/commonjs/web/utils/common.js.map +1 -0
  126. package/lib/commonjs/web/utils/index.js +28 -0
  127. package/lib/commonjs/web/utils/index.js.map +1 -0
  128. package/lib/commonjs/web/utils/unistyle.js +82 -0
  129. package/lib/commonjs/web/utils/unistyle.js.map +2 -0
  130. package/lib/commonjs/web/variants/getVariants.js +39 -0
  131. package/lib/commonjs/web/variants/getVariants.js.map +2 -0
  132. package/lib/commonjs/web/variants/index.js +28 -0
  133. package/lib/commonjs/web/variants/index.js.map +1 -0
  134. package/lib/commonjs/web/variants/useVariants.js +58 -0
  135. package/lib/commonjs/web/variants/useVariants.js.map +2 -0
  136. package/lib/module/common.js.map +1 -1
  137. package/lib/module/core/createUnistylesComponent.js +12 -0
  138. package/lib/module/core/createUnistylesComponent.js.map +1 -0
  139. package/lib/module/core/createUnistylesComponent.native.js +39 -0
  140. package/lib/module/core/createUnistylesComponent.native.js.map +1 -0
  141. package/lib/module/core/index.js +6 -0
  142. package/lib/module/core/index.js.map +1 -0
  143. package/lib/module/core/useBreakpoint.js +17 -0
  144. package/lib/module/core/useBreakpoint.js.map +1 -0
  145. package/lib/module/core/useBreakpoint.native.js +19 -0
  146. package/lib/module/core/useBreakpoint.native.js.map +2 -0
  147. package/lib/module/core/useTheme.js +17 -0
  148. package/lib/module/core/useTheme.js.map +1 -0
  149. package/lib/module/core/useTheme.native.js +19 -0
  150. package/lib/module/core/useTheme.native.js.map +1 -0
  151. package/lib/module/global.js +1 -1
  152. package/lib/module/global.js.map +1 -0
  153. package/lib/module/index.js +1 -9
  154. package/lib/module/index.js.map +1 -1
  155. package/lib/module/mq.js +1 -4
  156. package/lib/module/mq.js.map +2 -1
  157. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js +1 -0
  158. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js.map +2 -1
  159. package/lib/module/specs/NavigtionBar/UnistylesNavigationBar.nitro.js.map +1 -1
  160. package/lib/module/specs/NavigtionBar/index.js +1 -1
  161. package/lib/module/specs/NavigtionBar/index.js.map +1 -1
  162. package/lib/module/specs/ShadowRegistry/ShadowRegistry.nitro.js.map +1 -0
  163. package/lib/module/specs/ShadowRegistry/index.js +7 -6
  164. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  165. package/lib/module/specs/ShadowRegistry/types.js +2 -0
  166. package/lib/module/specs/ShadowRegistry/types.js.map +1 -1
  167. package/lib/module/specs/StatusBar/UnistylesStatusBar.nitro.js.map +1 -0
  168. package/lib/module/specs/StatusBar/index.js +1 -1
  169. package/lib/module/specs/StatusBar/index.js.map +1 -1
  170. package/lib/module/specs/StyleSheet/UnistylesStyleSheet.nitro.js +1 -1
  171. package/lib/module/specs/StyleSheet/UnistylesStyleSheet.nitro.js.map +1 -1
  172. package/lib/module/specs/StyleSheet/index.js +1 -0
  173. package/lib/module/specs/StyleSheet/index.js.map +2 -1
  174. package/lib/module/specs/UnistylesRuntime/UnistylesRuntime.nitro.js.map +1 -1
  175. package/lib/module/specs/UnistylesRuntime/index.js +1 -1
  176. package/lib/module/specs/UnistylesRuntime/index.js.map +2 -1
  177. package/lib/module/specs/index.js +2 -1
  178. package/lib/module/specs/index.js.map +1 -1
  179. package/lib/module/specs/index.web.js +1 -1
  180. package/lib/module/specs/index.web.js.map +2 -1
  181. package/lib/module/specs/types.js.map +1 -0
  182. package/lib/module/types/accessibility.js +1 -1
  183. package/lib/module/types/accessibility.js.map +1 -0
  184. package/lib/module/types/breakpoints.js.map +1 -1
  185. package/lib/module/types/common.js +1 -1
  186. package/lib/module/types/common.js.map +1 -0
  187. package/lib/module/types/core.js.map +1 -0
  188. package/lib/module/types/index.js.map +2 -1
  189. package/lib/module/types/stylesheet.js.map +1 -1
  190. package/lib/module/types/variants.js.map +1 -0
  191. package/lib/module/web/convert/boxShadow.js +72 -0
  192. package/lib/module/web/convert/boxShadow.js.map +1 -0
  193. package/lib/module/web/convert/index.js +69 -0
  194. package/lib/module/web/convert/index.js.map +1 -0
  195. package/lib/module/web/convert/module.d.js +2 -0
  196. package/lib/module/web/convert/module.d.js.map +1 -0
  197. package/lib/module/web/convert/pseudo.js +5 -0
  198. package/lib/module/web/convert/pseudo.js.map +1 -0
  199. package/lib/module/web/convert/shadow.js +63 -0
  200. package/lib/module/web/convert/shadow.js.map +1 -0
  201. package/lib/module/web/convert/style.js +88 -0
  202. package/lib/module/web/convert/style.js.map +1 -0
  203. package/lib/module/web/convert/textShadow.js +65 -0
  204. package/lib/module/web/convert/textShadow.js.map +2 -0
  205. package/lib/module/web/convert/transform.js +67 -0
  206. package/lib/module/web/convert/transform.js.map +1 -0
  207. package/lib/module/web/convert/types.js +5 -0
  208. package/lib/module/web/convert/types.js.map +1 -0
  209. package/lib/module/web/convert/utils.js +42 -0
  210. package/lib/module/web/convert/utils.js.map +2 -0
  211. package/lib/module/web/create.js +39 -0
  212. package/lib/module/web/create.js.map +2 -0
  213. package/lib/module/web/index.js +25 -0
  214. package/lib/module/web/index.js.map +1 -0
  215. package/lib/module/web/listener.js +31 -0
  216. package/lib/module/web/listener.js.map +2 -0
  217. package/lib/module/web/mock.js +24 -0
  218. package/lib/module/web/mock.js.map +1 -0
  219. package/lib/module/web/mq.js +17 -0
  220. package/lib/module/web/mq.js.map +1 -0
  221. package/lib/module/web/registry.js +179 -0
  222. package/lib/module/web/registry.js.map +1 -0
  223. package/lib/module/web/runtime.js +163 -0
  224. package/lib/module/web/runtime.js.map +1 -0
  225. package/lib/module/web/shadowRegistry.js +118 -0
  226. package/lib/module/web/shadowRegistry.js.map +1 -0
  227. package/lib/module/web/state.js +65 -0
  228. package/lib/module/web/state.js.map +2 -0
  229. package/lib/module/web/utils/common.js +78 -0
  230. package/lib/module/web/utils/common.js.map +2 -0
  231. package/lib/module/web/utils/index.js +5 -0
  232. package/lib/module/web/utils/index.js.map +1 -0
  233. package/lib/module/web/utils/unistyle.js +69 -0
  234. package/lib/module/web/utils/unistyle.js.map +2 -0
  235. package/lib/module/web/variants/getVariants.js +34 -0
  236. package/lib/module/web/variants/getVariants.js.map +1 -0
  237. package/lib/module/web/variants/index.js +5 -0
  238. package/lib/module/web/variants/index.js.map +1 -0
  239. package/lib/module/web/variants/useVariants.js +53 -0
  240. package/lib/module/web/variants/useVariants.js.map +1 -0
  241. package/lib/typescript/src/core/createUnistylesComponent.d.ts +6 -0
  242. package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +1 -0
  243. package/lib/typescript/src/core/createUnistylesComponent.native.d.ts +6 -0
  244. package/lib/typescript/src/core/createUnistylesComponent.native.d.ts.map +1 -0
  245. package/lib/typescript/src/core/index.d.ts +4 -0
  246. package/lib/typescript/src/core/index.d.ts.map +1 -0
  247. package/lib/typescript/src/core/useBreakpoint.d.ts +2 -0
  248. package/lib/typescript/src/core/useBreakpoint.d.ts.map +1 -0
  249. package/lib/typescript/src/core/useBreakpoint.native.d.ts +2 -0
  250. package/lib/typescript/src/core/useBreakpoint.native.d.ts.map +1 -0
  251. package/lib/typescript/src/core/useTheme.d.ts +3 -0
  252. package/lib/typescript/src/core/useTheme.d.ts.map +1 -0
  253. package/lib/typescript/src/core/useTheme.native.d.ts +3 -0
  254. package/lib/typescript/src/core/useTheme.native.d.ts.map +1 -0
  255. package/lib/typescript/src/index.d.ts +2 -0
  256. package/lib/typescript/src/index.d.ts.map +1 -1
  257. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts +6 -2
  258. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts.map +1 -1
  259. package/lib/typescript/src/specs/NavigtionBar/index.d.ts +5 -0
  260. package/lib/typescript/src/specs/NavigtionBar/index.d.ts.map +1 -1
  261. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +3 -3
  262. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  263. package/lib/typescript/src/specs/StatusBar/index.d.ts +5 -0
  264. package/lib/typescript/src/specs/StatusBar/index.d.ts.map +1 -1
  265. package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts +3 -1
  266. package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts.map +1 -1
  267. package/lib/typescript/src/specs/StyleSheet/index.d.ts +3 -1
  268. package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
  269. package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts +0 -1
  270. package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts.map +1 -1
  271. package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts +3 -1
  272. package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts.map +1 -1
  273. package/lib/typescript/src/specs/index.d.ts +4 -2
  274. package/lib/typescript/src/specs/index.d.ts.map +1 -1
  275. package/lib/typescript/src/specs/index.web.d.ts +1 -1
  276. package/lib/typescript/src/specs/index.web.d.ts.map +1 -1
  277. package/lib/typescript/src/types/breakpoints.d.ts +11 -11
  278. package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
  279. package/lib/typescript/src/types/index.d.ts +1 -1
  280. package/lib/typescript/src/types/index.d.ts.map +1 -1
  281. package/lib/typescript/src/types/stylesheet.d.ts +6 -4
  282. package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
  283. package/lib/typescript/src/types/variants.d.ts +4 -1
  284. package/lib/typescript/src/types/variants.d.ts.map +1 -1
  285. package/lib/typescript/src/web/convert/boxShadow.d.ts +8 -0
  286. package/lib/typescript/src/web/convert/boxShadow.d.ts.map +1 -0
  287. package/lib/typescript/src/web/convert/index.d.ts +3 -0
  288. package/lib/typescript/src/web/convert/index.d.ts.map +1 -0
  289. package/lib/typescript/src/web/convert/pseudo.d.ts +6 -0
  290. package/lib/typescript/src/web/convert/pseudo.d.ts.map +1 -0
  291. package/lib/typescript/src/web/convert/shadow.d.ts.map +1 -0
  292. package/lib/typescript/src/web/convert/style.d.ts +2 -0
  293. package/lib/typescript/src/web/convert/style.d.ts.map +1 -0
  294. package/lib/typescript/src/web/convert/textShadow.d.ts +8 -0
  295. package/lib/typescript/src/web/convert/textShadow.d.ts.map +1 -0
  296. package/lib/typescript/src/web/convert/transform.d.ts +4 -0
  297. package/lib/typescript/src/web/convert/transform.d.ts.map +1 -0
  298. package/lib/typescript/{web → src/web}/convert/types.d.ts +1 -1
  299. package/lib/typescript/src/web/convert/types.d.ts.map +1 -0
  300. package/lib/typescript/src/web/convert/utils.d.ts.map +1 -0
  301. package/lib/typescript/src/web/create.d.ts +1443 -0
  302. package/lib/typescript/{web → src/web}/create.d.ts.map +1 -1
  303. package/lib/typescript/src/web/index.d.ts +1459 -0
  304. package/lib/typescript/{web → src/web}/index.d.ts.map +1 -1
  305. package/lib/typescript/{web/listener → src/web}/listener.d.ts +3 -2
  306. package/lib/typescript/src/web/listener.d.ts.map +1 -0
  307. package/lib/typescript/src/web/mock.d.ts +5 -0
  308. package/lib/typescript/src/web/mock.d.ts.map +1 -0
  309. package/lib/typescript/src/web/mq.d.ts +8 -0
  310. package/lib/typescript/src/web/mq.d.ts.map +1 -0
  311. package/lib/typescript/src/web/registry.d.ts +28 -0
  312. package/lib/typescript/src/web/registry.d.ts.map +1 -0
  313. package/lib/typescript/{web → src/web}/runtime.d.ts +9 -9
  314. package/lib/typescript/src/web/runtime.d.ts.map +1 -0
  315. package/lib/typescript/src/web/shadowRegistry.d.ts +16 -0
  316. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -0
  317. package/lib/typescript/src/web/state.d.ts +18 -0
  318. package/lib/typescript/src/web/state.d.ts.map +1 -0
  319. package/lib/typescript/{web/utils.d.ts → src/web/utils/common.d.ts} +8 -9
  320. package/lib/typescript/src/web/utils/common.d.ts.map +1 -0
  321. package/lib/typescript/src/web/utils/index.d.ts +3 -0
  322. package/lib/typescript/src/web/utils/index.d.ts.map +1 -0
  323. package/lib/typescript/src/web/utils/unistyle.d.ts +20 -0
  324. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -0
  325. package/lib/typescript/src/web/variants/getVariants.d.ts +3 -0
  326. package/lib/typescript/src/web/variants/getVariants.d.ts.map +1 -0
  327. package/lib/typescript/src/web/variants/index.d.ts +3 -0
  328. package/lib/typescript/src/web/variants/index.d.ts.map +1 -0
  329. package/lib/typescript/src/web/variants/useVariants.d.ts +3 -0
  330. package/lib/typescript/src/web/variants/useVariants.d.ts.map +1 -0
  331. package/nitrogen/generated/android/c++/JColorScheme.hpp +1 -1
  332. package/nitrogen/generated/android/c++/JFunc_void.hpp +48 -0
  333. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency_.hpp +8 -8
  334. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +31 -22
  335. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +8 -3
  336. package/nitrogen/generated/android/c++/JOrientation.hpp +1 -1
  337. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +4 -1
  338. package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +9 -7
  339. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void.kt +45 -0
  340. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +25 -5
  341. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +2 -1
  342. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +2 -1
  343. package/nitrogen/generated/android/unistyles+autolinking.cmake +13 -1
  344. package/nitrogen/generated/android/{UnistylesOnLoad.cpp → unistylesOnLoad.cpp} +4 -2
  345. package/nitrogen/generated/android/{UnistylesOnLoad.hpp → unistylesOnLoad.hpp} +1 -1
  346. package/nitrogen/generated/ios/Unistyles+autolinking.rb +5 -3
  347. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +25 -0
  348. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +53 -31
  349. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +0 -29
  350. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +7 -1
  351. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +3 -13
  352. package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +167 -104
  353. package/nitrogen/generated/ios/swift/UnistyleDependency.swift +4 -0
  354. package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +16 -5
  355. package/nitrogen/generated/shared/c++/ColorScheme.hpp +2 -2
  356. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +2 -0
  357. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +5 -0
  358. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +3 -0
  359. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +3 -0
  360. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +3 -0
  361. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +3 -0
  362. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +2 -1
  363. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +10 -4
  364. package/nitrogen/generated/shared/c++/Orientation.hpp +2 -2
  365. package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -1
  366. package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +10 -9
  367. package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +9 -8
  368. package/package.json +18 -30
  369. package/plugin/common.js +12 -1
  370. package/plugin/index.js +110 -23
  371. package/plugin/ref.js +64 -13
  372. package/plugin/style.js +82 -22
  373. package/plugin/stylesheet.js +53 -3
  374. package/plugin/variants.js +33 -0
  375. package/src/common.js +4 -0
  376. package/src/core/createUnistylesComponent.js +6 -0
  377. package/src/core/createUnistylesComponent.native.js +31 -0
  378. package/src/core/createUnistylesComponent.native.tsx +44 -0
  379. package/src/core/createUnistylesComponent.tsx +10 -0
  380. package/src/core/index.js +3 -0
  381. package/src/core/index.ts +3 -0
  382. package/src/core/useBreakpoint.js +14 -0
  383. package/src/core/useBreakpoint.native.js +16 -0
  384. package/src/core/useBreakpoint.native.ts +21 -0
  385. package/src/core/useBreakpoint.ts +18 -0
  386. package/src/core/useTheme.js +14 -0
  387. package/src/core/useTheme.native.js +16 -0
  388. package/src/core/useTheme.native.ts +22 -0
  389. package/src/core/useTheme.ts +19 -0
  390. package/src/global.js +1 -0
  391. package/src/index.js +3 -0
  392. package/src/index.ts +2 -12
  393. package/src/mq.js +38 -0
  394. package/src/specs/NativePlatform/NativePlatform.nitro.js +19 -0
  395. package/src/specs/NativePlatform/NativePlatform.nitro.ts +7 -3
  396. package/src/specs/NativePlatform/index.js +1 -0
  397. package/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.js +1 -0
  398. package/src/specs/NavigtionBar/index.js +9 -0
  399. package/src/specs/NavigtionBar/index.ts +6 -1
  400. package/src/specs/ShadowRegistry/ShadowRegistry.nitro.js +1 -0
  401. package/src/specs/ShadowRegistry/index.js +26 -0
  402. package/src/specs/ShadowRegistry/index.ts +10 -9
  403. package/src/specs/ShadowRegistry/types.js +1 -0
  404. package/src/specs/StatusBar/UnistylesStatusBar.nitro.js +1 -0
  405. package/src/specs/StatusBar/index.js +25 -0
  406. package/src/specs/StatusBar/index.ts +6 -1
  407. package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.js +1 -0
  408. package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.ts +4 -1
  409. package/src/specs/StyleSheet/index.js +13 -0
  410. package/src/specs/StyleSheet/index.ts +6 -1
  411. package/src/specs/TurboUnistyles/NativeTurboUnistyles.js +2 -0
  412. package/src/specs/TurboUnistyles/index.js +1 -0
  413. package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.js +1 -0
  414. package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.ts +0 -1
  415. package/src/specs/UnistylesRuntime/index.js +20 -0
  416. package/src/specs/UnistylesRuntime/index.ts +4 -2
  417. package/src/specs/index.js +8 -0
  418. package/src/specs/index.ts +6 -2
  419. package/src/specs/index.web.js +2 -0
  420. package/src/specs/index.web.ts +1 -1
  421. package/src/specs/types.js +17 -0
  422. package/src/types/accessibility.js +30 -0
  423. package/src/types/breakpoints.js +1 -0
  424. package/src/types/breakpoints.ts +25 -13
  425. package/src/types/common.js +1 -0
  426. package/src/types/core.js +1 -0
  427. package/src/types/index.js +1 -0
  428. package/src/types/index.ts +1 -1
  429. package/src/types/stylesheet.js +2 -0
  430. package/src/types/stylesheet.ts +7 -5
  431. package/src/types/variants.js +1 -0
  432. package/src/types/variants.ts +7 -1
  433. package/src/web/convert/boxShadow.js +59 -0
  434. package/{web → src/web}/convert/boxShadow.ts +14 -15
  435. package/src/web/convert/index.js +56 -0
  436. package/{web → src/web}/convert/index.ts +8 -15
  437. package/src/web/convert/pseudo.js +131 -0
  438. package/src/web/convert/pseudo.ts +137 -0
  439. package/src/web/convert/shadow.js +50 -0
  440. package/src/web/convert/style.js +137 -0
  441. package/{web → src/web}/convert/style.ts +61 -10
  442. package/src/web/convert/textShadow.js +56 -0
  443. package/{web → src/web}/convert/textShadow.ts +13 -14
  444. package/src/web/convert/transform.js +65 -0
  445. package/{web → src/web}/convert/transform.ts +7 -8
  446. package/src/web/convert/types.js +2 -0
  447. package/{web → src/web}/convert/types.ts +1 -1
  448. package/src/web/convert/utils.js +39 -0
  449. package/src/web/create.js +36 -0
  450. package/src/web/create.ts +47 -0
  451. package/src/web/index.js +22 -0
  452. package/{web → src/web}/index.ts +3 -2
  453. package/src/web/listener.js +26 -0
  454. package/{web/listener → src/web}/listener.ts +3 -3
  455. package/src/web/mock.js +21 -0
  456. package/{web → src/web}/mock.ts +2 -12
  457. package/src/web/mq.js +14 -0
  458. package/{web → src/web}/mq.ts +1 -3
  459. package/src/web/registry.js +165 -0
  460. package/src/web/registry.ts +236 -0
  461. package/src/web/runtime.js +160 -0
  462. package/{web → src/web}/runtime.ts +21 -18
  463. package/src/web/shadowRegistry.js +96 -0
  464. package/src/web/shadowRegistry.ts +121 -0
  465. package/src/web/state.js +68 -0
  466. package/src/web/state.ts +94 -0
  467. package/src/web/utils/common.js +79 -0
  468. package/{web/utils.ts → src/web/utils/common.ts} +48 -36
  469. package/src/web/utils/index.js +2 -0
  470. package/src/web/utils/index.ts +2 -0
  471. package/src/web/utils/unistyle.js +72 -0
  472. package/src/web/utils/unistyle.ts +104 -0
  473. package/src/web/variants/getVariants.js +26 -0
  474. package/src/web/variants/getVariants.ts +42 -0
  475. package/src/web/variants/index.js +2 -0
  476. package/src/web/variants/index.ts +2 -0
  477. package/src/web/variants/useVariants.js +50 -0
  478. package/src/web/variants/useVariants.ts +65 -0
  479. package/lib/typescript/example/App.d.ts +0 -4
  480. package/lib/typescript/example/App.d.ts.map +0 -1
  481. package/lib/typescript/example/unistyles.d.ts +0 -63
  482. package/lib/typescript/example/unistyles.d.ts.map +0 -1
  483. package/lib/typescript/expo-example/App.d.ts +0 -4
  484. package/lib/typescript/expo-example/App.d.ts.map +0 -1
  485. package/lib/typescript/expo-example/unistyles.d.ts +0 -63
  486. package/lib/typescript/expo-example/unistyles.d.ts.map +0 -1
  487. package/lib/typescript/web/convert/boxShadow.d.ts +0 -3
  488. package/lib/typescript/web/convert/boxShadow.d.ts.map +0 -1
  489. package/lib/typescript/web/convert/breakpoint.d.ts +0 -3
  490. package/lib/typescript/web/convert/breakpoint.d.ts.map +0 -1
  491. package/lib/typescript/web/convert/index.d.ts +0 -4
  492. package/lib/typescript/web/convert/index.d.ts.map +0 -1
  493. package/lib/typescript/web/convert/shadow.d.ts.map +0 -1
  494. package/lib/typescript/web/convert/style.d.ts +0 -3
  495. package/lib/typescript/web/convert/style.d.ts.map +0 -1
  496. package/lib/typescript/web/convert/textShadow.d.ts +0 -3
  497. package/lib/typescript/web/convert/textShadow.d.ts.map +0 -1
  498. package/lib/typescript/web/convert/transform.d.ts +0 -5
  499. package/lib/typescript/web/convert/transform.d.ts.map +0 -1
  500. package/lib/typescript/web/convert/types.d.ts.map +0 -1
  501. package/lib/typescript/web/convert/utils.d.ts.map +0 -1
  502. package/lib/typescript/web/create.d.ts +0 -2449
  503. package/lib/typescript/web/index.d.ts +0 -2464
  504. package/lib/typescript/web/listener/index.d.ts +0 -2
  505. package/lib/typescript/web/listener/index.d.ts.map +0 -1
  506. package/lib/typescript/web/listener/listener.d.ts.map +0 -1
  507. package/lib/typescript/web/mock.d.ts +0 -14
  508. package/lib/typescript/web/mock.d.ts.map +0 -1
  509. package/lib/typescript/web/mq.d.ts +0 -4
  510. package/lib/typescript/web/mq.d.ts.map +0 -1
  511. package/lib/typescript/web/pseudo.d.ts +0 -4
  512. package/lib/typescript/web/pseudo.d.ts.map +0 -1
  513. package/lib/typescript/web/registry.d.ts +0 -12
  514. package/lib/typescript/web/registry.d.ts.map +0 -1
  515. package/lib/typescript/web/runtime.d.ts.map +0 -1
  516. package/lib/typescript/web/state.d.ts +0 -24
  517. package/lib/typescript/web/state.d.ts.map +0 -1
  518. package/lib/typescript/web/useVariants.d.ts +0 -3
  519. package/lib/typescript/web/useVariants.d.ts.map +0 -1
  520. package/lib/typescript/web/utils.d.ts.map +0 -1
  521. package/plugin/__tests__/dependencies.spec.js +0 -360
  522. package/plugin/__tests__/ref.spec.js +0 -991
  523. package/plugin/__tests__/stylesheet.spec.js +0 -396
  524. package/web/convert/breakpoint.ts +0 -21
  525. package/web/create.ts +0 -102
  526. package/web/listener/index.ts +0 -1
  527. package/web/pseudo.ts +0 -11
  528. package/web/registry.ts +0 -41
  529. package/web/state.ts +0 -148
  530. package/web/useVariants.ts +0 -99
  531. /package/lib/typescript/{web → src/web}/convert/shadow.d.ts +0 -0
  532. /package/lib/typescript/{web → src/web}/convert/utils.d.ts +0 -0
  533. /package/nitrogen/generated/android/{UnistylesOnLoad.kt → unistylesOnLoad.kt} +0 -0
  534. /package/{web → src/web}/convert/module.d.ts +0 -0
  535. /package/{web → src/web}/convert/shadow.ts +0 -0
  536. /package/{web → src/web}/convert/utils.ts +0 -0
@@ -0,0 +1,56 @@
1
+ import { deepMergeObjects, warn } from '../utils';
2
+ import { validateShadow } from './shadow';
3
+ import { TEXT_SHADOW_STYLES } from './types';
4
+ import { extractShadowValue, normalizeColor, normalizeNumericValue } from './utils';
5
+ const createTextShadowValue = (style) => {
6
+ const { textShadowColor, textShadowOffset, textShadowRadius } = style;
7
+ const offsetX = normalizeNumericValue(textShadowOffset.width);
8
+ const offsetY = normalizeNumericValue(textShadowOffset.height);
9
+ const radius = normalizeNumericValue(textShadowRadius);
10
+ const color = normalizeColor(textShadowColor);
11
+ return `${offsetX} ${offsetY} ${radius} ${color}`;
12
+ };
13
+ export const getTextShadowStyle = (styles) => {
14
+ const missingStyles = TEXT_SHADOW_STYLES.filter(key => !(key in styles));
15
+ if (missingStyles.length) {
16
+ warn(`can't apply text shadow as you miss these properties: ${missingStyles.join(', ')}`);
17
+ return {};
18
+ }
19
+ const breakpointsSet = new Set();
20
+ try {
21
+ validateShadow(TEXT_SHADOW_STYLES, styles, breakpointsSet);
22
+ }
23
+ catch (error) {
24
+ if (typeof error === 'string') {
25
+ warn(error);
26
+ }
27
+ return {};
28
+ }
29
+ const breakpoints = Array.from(breakpointsSet);
30
+ // If no breakpoints were used return styles without media queries
31
+ if (breakpoints.length === 0) {
32
+ return {
33
+ textShadow: createTextShadowValue(styles)
34
+ };
35
+ }
36
+ // Create textShadow for each breakpoint
37
+ const breakpointStyles = breakpoints.map(breakpoint => {
38
+ const color = extractShadowValue('textShadowColor', breakpoint, styles);
39
+ const { width, height } = extractShadowValue('textShadowOffset', breakpoint, styles);
40
+ const radius = extractShadowValue('textShadowRadius', breakpoint, styles);
41
+ return {
42
+ [breakpoint]: {
43
+ textShadow: createTextShadowValue({
44
+ textShadowColor: color,
45
+ textShadowOffset: {
46
+ width,
47
+ height
48
+ },
49
+ textShadowRadius: radius
50
+ })
51
+ }
52
+ };
53
+ });
54
+ // Merge all breakpoints styles into one
55
+ return deepMergeObjects(...breakpointStyles);
56
+ };
@@ -1,8 +1,5 @@
1
- import { media } from 'typestyle'
2
- import type { NestedCSSProperties } from 'typestyle/lib/types'
3
1
  import { deepMergeObjects, warn } from '../utils'
4
2
  import { validateShadow } from './shadow'
5
- import { convertBreakpoint } from './breakpoint'
6
3
  import { TEXT_SHADOW_STYLES, type TextShadow } from './types'
7
4
  import { extractShadowValue, normalizeColor, normalizeNumericValue } from './utils'
8
5
 
@@ -16,7 +13,7 @@ const createTextShadowValue = (style: TextShadow) => {
16
13
  return `${offsetX} ${offsetY} ${radius} ${color}`
17
14
  }
18
15
 
19
- export const getTextShadowStyle = (styles: Record<string, any>): NestedCSSProperties => {
16
+ export const getTextShadowStyle = (styles: Record<string, any>) => {
20
17
  const missingStyles = TEXT_SHADOW_STYLES.filter(key => !(key in styles))
21
18
 
22
19
  if (missingStyles.length) {
@@ -52,16 +49,18 @@ export const getTextShadowStyle = (styles: Record<string, any>): NestedCSSProper
52
49
  const { width, height } = extractShadowValue('textShadowOffset', breakpoint, styles)
53
50
  const radius = extractShadowValue('textShadowRadius', breakpoint, styles)
54
51
 
55
- return media(convertBreakpoint(breakpoint), {
56
- textShadow: createTextShadowValue({
57
- textShadowColor: color,
58
- textShadowOffset: {
59
- width,
60
- height
61
- },
62
- textShadowRadius: radius
63
- })
64
- })
52
+ return {
53
+ [breakpoint]: {
54
+ textShadow: createTextShadowValue({
55
+ textShadowColor: color,
56
+ textShadowOffset: {
57
+ width,
58
+ height
59
+ },
60
+ textShadowRadius: radius
61
+ })
62
+ }
63
+ }
65
64
  })
66
65
 
67
66
  // Merge all breakpoints styles into one
@@ -0,0 +1,65 @@
1
+ import { deepMergeObjects, keyInObject } from '../utils';
2
+ import { normalizeNumericValue } from './utils';
3
+ const normalizeTransform = (key, value) => {
4
+ if (key.includes('scale')) {
5
+ return value;
6
+ }
7
+ if (typeof value === 'number') {
8
+ return normalizeNumericValue(value);
9
+ }
10
+ return value;
11
+ };
12
+ const createTransformValue = (transforms) => transforms
13
+ .map(transform => {
14
+ const [key] = Object.keys(transform);
15
+ if (!key) {
16
+ return undefined;
17
+ }
18
+ const value = transform[key];
19
+ switch (key) {
20
+ case 'matrix':
21
+ case 'matrix3d':
22
+ return `${key}(${value.join(',')})`;
23
+ default:
24
+ return `${key}(${normalizeTransform(key, value)})`;
25
+ }
26
+ })
27
+ .filter(Boolean)
28
+ .join(' ');
29
+ export const getTransformStyle = (transforms) => {
30
+ const breakpoints = new Set();
31
+ const normalTransforms = [];
32
+ transforms.forEach(transform => {
33
+ const [property] = Object.keys(transform);
34
+ if (!property) {
35
+ return;
36
+ }
37
+ const value = transform[property];
38
+ if (typeof value === 'object' && !Array.isArray(value)) {
39
+ Object.keys(value).forEach(breakpoint => breakpoints.add(breakpoint));
40
+ return;
41
+ }
42
+ normalTransforms.push(transform);
43
+ });
44
+ const breakpointTransforms = Array.from(breakpoints).flatMap(breakpoint => {
45
+ const transformsPerBreakpoint = transforms.flatMap(transform => {
46
+ const [property] = Object.keys(transform);
47
+ if (!property) {
48
+ return [];
49
+ }
50
+ const value = transform[property];
51
+ if (typeof value === 'object' && !Array.isArray(value)) {
52
+ return keyInObject(value, breakpoint) ? [{ [property]: value[breakpoint] }] : [];
53
+ }
54
+ return [];
55
+ });
56
+ return [{
57
+ [breakpoint]: {
58
+ transform: createTransformValue(transformsPerBreakpoint)
59
+ }
60
+ }];
61
+ });
62
+ return deepMergeObjects({
63
+ transform: createTransformValue(normalTransforms)
64
+ }, ...breakpointTransforms);
65
+ };
@@ -1,8 +1,5 @@
1
- import { media } from 'typestyle'
2
- import type { NestedCSSProperties } from 'typestyle/lib/types'
3
1
  import { deepMergeObjects, keyInObject } from '../utils'
4
2
  import { normalizeNumericValue } from './utils'
5
- import { convertBreakpoint } from './breakpoint'
6
3
 
7
4
  type Transforms = Array<Record<string, any>>
8
5
 
@@ -39,7 +36,7 @@ const createTransformValue = (transforms: Transforms) => transforms
39
36
  .filter(Boolean)
40
37
  .join(' ')
41
38
 
42
- export const getTransformStyle = (transforms: Transforms): NestedCSSProperties => {
39
+ export const getTransformStyle = (transforms: Transforms) => {
43
40
  const breakpoints = new Set<string>()
44
41
  const normalTransforms: Transforms = []
45
42
 
@@ -78,12 +75,14 @@ export const getTransformStyle = (transforms: Transforms): NestedCSSProperties =
78
75
  return []
79
76
  })
80
77
 
81
- return media(convertBreakpoint(breakpoint), {
82
- transform: createTransformValue(transformsPerBreakpoint)
83
- })
78
+ return [{
79
+ [breakpoint]: {
80
+ transform: createTransformValue(transformsPerBreakpoint)
81
+ }
82
+ }]
84
83
  })
85
84
 
86
- return deepMergeObjects({
85
+ return deepMergeObjects<Record<string, any>>({
87
86
  transform: createTransformValue(normalTransforms)
88
87
  }, ...breakpointTransforms)
89
88
  }
@@ -0,0 +1,2 @@
1
+ export const TEXT_SHADOW_STYLES = ['textShadowColor', 'textShadowOffset', 'textShadowRadius'];
2
+ export const BOX_SHADOW_STYLES = ['shadowColor', 'shadowRadius', 'shadowOpacity', 'shadowOffset'];
@@ -1,5 +1,5 @@
1
1
  import type { TextStyle, ViewStyle } from 'react-native'
2
- import type { ToDeepUnistyles } from '../../src/types/stylesheet'
2
+ import type { ToDeepUnistyles } from '../../types/stylesheet'
3
3
 
4
4
  export type ShadowOffset = ToDeepUnistyles<{ width: number, height: number }>
5
5
 
@@ -0,0 +1,39 @@
1
+ // based on react-native-web normalizer
2
+ // https://github.com/necolas/react-native-web
3
+ import normalizeColors from '@react-native/normalize-colors';
4
+ import { BOX_SHADOW_STYLES, TEXT_SHADOW_STYLES } from './types';
5
+ export const isTransform = (key, value) => key === 'transform' && Array.isArray(value);
6
+ export const isTextShadow = (key) => TEXT_SHADOW_STYLES.includes(key);
7
+ export const isBoxShadow = (key) => BOX_SHADOW_STYLES.includes(key);
8
+ export const normalizeNumericValue = (value) => value ? `${value}px` : value;
9
+ export const normalizeColor = (color, opacity = 1) => {
10
+ // If the opacity is 1 there's no need to normalize the color
11
+ if (opacity === 1) {
12
+ return color;
13
+ }
14
+ const integer = normalizeColors(color);
15
+ // If the color is an unknown format, the return value is null
16
+ if (integer === null) {
17
+ return color;
18
+ }
19
+ const hex = integer.toString(16).padStart(8, '0');
20
+ if (hex.length === 8) {
21
+ const [r = 0, g = 0, b = 0, a = 1] = hex
22
+ .split(/(?=(?:..)*$)/)
23
+ .map(x => parseInt(x, 16))
24
+ .filter(num => !isNaN(num));
25
+ return `rgba(${r},${g},${b},${(a / 255) * opacity})`;
26
+ }
27
+ return color;
28
+ };
29
+ export const extractShadowValue = (key, breakpoint, styles) => {
30
+ const value = styles[key];
31
+ if (key === 'textShadowOffset' || key === 'shadowOffset') {
32
+ const { width, height } = value;
33
+ return {
34
+ width: typeof width === 'object' ? width[breakpoint] : width,
35
+ height: typeof height === 'object' ? height[breakpoint] : height
36
+ };
37
+ }
38
+ return typeof value === 'object' ? value[breakpoint] : value;
39
+ };
@@ -0,0 +1,36 @@
1
+ import { assignSecrets, reduceObject, getStyles, deepMergeObjects } from './utils';
2
+ import { UnistylesRuntime } from './runtime';
3
+ import { createUseVariants, getVariants } from './variants';
4
+ export const create = (stylesheet) => {
5
+ const computedStylesheet = typeof stylesheet === 'function'
6
+ ? stylesheet(UnistylesRuntime.theme, UnistylesRuntime.miniRuntime)
7
+ : stylesheet;
8
+ const selectedVariants = new Map();
9
+ const copyVariants = () => Object.fromEntries(selectedVariants.entries());
10
+ const addSecrets = (value, key, args) => assignSecrets(value, {
11
+ __uni__key: key,
12
+ __uni__refs: new Set(),
13
+ __uni__stylesheet: stylesheet,
14
+ __uni__args: args,
15
+ __uni__variants: copyVariants()
16
+ });
17
+ const styles = reduceObject(computedStylesheet, (value, _key) => {
18
+ const key = String(_key);
19
+ if (typeof value === 'function') {
20
+ const dynamicStyle = (...args) => {
21
+ const result = value(...args);
22
+ const variants = Object.fromEntries(getVariants({ [key]: result }, copyVariants()));
23
+ const resultWithVariants = deepMergeObjects(result, variants[key] ?? {});
24
+ // Add secrets to result of dynamic styles function
25
+ return addSecrets(getStyles(resultWithVariants), key, args);
26
+ };
27
+ // Add secrets to dynamic styles function
28
+ return addSecrets(dynamicStyle, key);
29
+ }
30
+ // Add secrets to static styles
31
+ return addSecrets(getStyles(value), key);
32
+ });
33
+ // Inject useVariants hook to styles
34
+ createUseVariants(styles, newVariants => Object.entries(newVariants).forEach(([key, value]) => selectedVariants.set(key, value)));
35
+ return styles;
36
+ };
@@ -0,0 +1,47 @@
1
+ import type { ReactNativeStyleSheet } from '../types'
2
+ import type { StyleSheetWithSuperPowers, StyleSheet } from '../types/stylesheet'
3
+ import { assignSecrets, reduceObject, getStyles, deepMergeObjects } from './utils'
4
+ import { UnistylesRuntime } from './runtime'
5
+ import { createUseVariants, getVariants } from './variants'
6
+
7
+ export const create = (stylesheet: StyleSheetWithSuperPowers<StyleSheet>) => {
8
+ const computedStylesheet = typeof stylesheet === 'function'
9
+ ? stylesheet(UnistylesRuntime.theme, UnistylesRuntime.miniRuntime)
10
+ : stylesheet
11
+ const selectedVariants = new Map<string, any>()
12
+
13
+ const copyVariants = () => Object.fromEntries(selectedVariants.entries())
14
+ const addSecrets = (value: any, key: string, args?: Array<any>) => assignSecrets(value, {
15
+ __uni__key: key,
16
+ __uni__refs: new Set(),
17
+ __uni__stylesheet: stylesheet,
18
+ __uni__args: args,
19
+ __uni__variants: copyVariants()
20
+ })
21
+
22
+ const styles = reduceObject(computedStylesheet, (value, _key) => {
23
+ const key = String(_key)
24
+
25
+ if (typeof value === 'function') {
26
+ const dynamicStyle = (...args: Array<any>) => {
27
+ const result = value(...args)
28
+ const variants = Object.fromEntries(getVariants({ [key]: result } as ReactNativeStyleSheet<StyleSheet>, copyVariants()))
29
+ const resultWithVariants = deepMergeObjects(result, variants[key] ?? {})
30
+
31
+ // Add secrets to result of dynamic styles function
32
+ return addSecrets(getStyles(resultWithVariants), key, args)
33
+ }
34
+
35
+ // Add secrets to dynamic styles function
36
+ return addSecrets(dynamicStyle, key)
37
+ }
38
+
39
+ // Add secrets to static styles
40
+ return addSecrets(getStyles(value), key)
41
+ }) as ReactNativeStyleSheet<StyleSheet>
42
+
43
+ // Inject useVariants hook to styles
44
+ createUseVariants(styles, newVariants => Object.entries(newVariants).forEach(([key, value]) => selectedVariants.set(key, value)))
45
+
46
+ return styles
47
+ }
@@ -0,0 +1,22 @@
1
+ import { create } from './create';
2
+ import { UnistylesState } from './state';
3
+ import { deepMergeObjects } from './utils';
4
+ export const StyleSheet = {
5
+ configure: UnistylesState.init,
6
+ create,
7
+ absoluteFill: {
8
+ position: 'absolute',
9
+ left: 0,
10
+ top: 0,
11
+ right: 0,
12
+ bottom: 0,
13
+ },
14
+ compose: (a, b) => deepMergeObjects(a, b),
15
+ flatten: (...styles) => deepMergeObjects(...styles),
16
+ hairlineWidth: 1
17
+ };
18
+ export { UnistylesRuntime } from './runtime';
19
+ export { UnistylesShadowRegistry } from './shadowRegistry';
20
+ export * from './mock';
21
+ // TODO: Work on SSR
22
+ export const getSSRUnistyles = () => [];
@@ -1,5 +1,4 @@
1
1
  import { create } from './create'
2
- import { UnistylesRuntime } from './runtime'
3
2
  import { UnistylesState } from './state'
4
3
  import { deepMergeObjects } from './utils'
5
4
 
@@ -19,6 +18,8 @@ export const StyleSheet = {
19
18
  }
20
19
 
21
20
  export { UnistylesRuntime } from './runtime'
21
+ export { UnistylesShadowRegistry } from './shadowRegistry'
22
22
  export * from './mock'
23
23
 
24
- export const getSSRUnistyles = () => UnistylesRuntime.getSSRUnistyles()
24
+ // TODO: Work on SSR
25
+ export const getSSRUnistyles = () => []
@@ -0,0 +1,26 @@
1
+ import { UnistyleDependency } from '../specs/NativePlatform';
2
+ import { UnistylesRuntime } from './runtime';
3
+ class UnistylesListenerBuilder {
4
+ isInitialized = false;
5
+ listeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set());
6
+ emitChange = (dependency) => {
7
+ this.listeners[dependency]?.forEach(listener => listener());
8
+ };
9
+ initListeners = () => {
10
+ if (this.isInitialized) {
11
+ return;
12
+ }
13
+ this.isInitialized = true;
14
+ UnistylesRuntime.darkMedia?.addEventListener('change', () => this.emitChange(UnistyleDependency.ColorScheme));
15
+ UnistylesRuntime.lightMedia?.addEventListener('change', () => this.emitChange(UnistyleDependency.ColorScheme));
16
+ window.addEventListener('orientationchange', () => this.emitChange(UnistyleDependency.Orientation));
17
+ window.addEventListener('resize', () => this.emitChange(UnistyleDependency.Dimensions));
18
+ };
19
+ addListeners = (dependencies, listener) => {
20
+ dependencies.forEach(dependency => this.listeners[dependency]?.add(listener));
21
+ return () => {
22
+ dependencies.forEach(dependency => this.listeners[dependency]?.delete(listener));
23
+ };
24
+ };
25
+ }
26
+ export const UnistylesListener = new UnistylesListenerBuilder();
@@ -1,7 +1,7 @@
1
- import { UnistyleDependency } from '../../src/specs/NativePlatform'
2
- import { UnistylesRuntime } from '../runtime'
1
+ import { UnistyleDependency } from '../specs/NativePlatform'
2
+ import { UnistylesRuntime } from './runtime'
3
3
 
4
- export class UnistylesListenerBuilder {
4
+ class UnistylesListenerBuilder {
5
5
  private isInitialized = false
6
6
  private listeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set<VoidFunction>())
7
7
 
@@ -0,0 +1,21 @@
1
+ export const StatusBar = {
2
+ width: 0,
3
+ height: 0,
4
+ setStyle: () => { },
5
+ setHidden: () => { },
6
+ setBackgroundColor: () => { },
7
+ equals: () => true,
8
+ toString: () => 'StatusBar',
9
+ __type: 'web',
10
+ name: 'StatusBar'
11
+ };
12
+ export const NavigationBar = {
13
+ width: 0,
14
+ height: 0,
15
+ setHidden: () => { },
16
+ setBackgroundColor: () => { },
17
+ equals: () => true,
18
+ toString: () => 'NavigationBar',
19
+ __type: 'web',
20
+ name: 'NavigationBar'
21
+ };
@@ -1,5 +1,5 @@
1
- import type { UnistylesNavigationBar as NavigationBarSpec } from '../src/specs/NavigtionBar'
2
- import type { UnistylesStatusBar as StatusBarSpec } from '../src/specs/StatusBar'
1
+ import type { UnistylesNavigationBar as NavigationBarSpec } from '../specs/NavigtionBar'
2
+ import type { UnistylesStatusBar as StatusBarSpec } from '../specs/StatusBar'
3
3
 
4
4
  export const StatusBar: StatusBarSpec = {
5
5
  width: 0,
@@ -23,13 +23,3 @@ export const NavigationBar: NavigationBarSpec = {
23
23
  __type: 'web',
24
24
  name: 'NavigationBar'
25
25
  }
26
-
27
- export const UnistylesShadowRegistry = {
28
- name: 'UnistylesShadowRegistry',
29
- __type: 'web',
30
- equals: () => true,
31
- toString: () => 'UnistylesShadowRegistry',
32
- dispose: () => {},
33
- add: () => {},
34
- remove: () => {},
35
- }
package/src/web/mq.js ADDED
@@ -0,0 +1,14 @@
1
+ const IS_UNISTYLES_REGEX = /:([hw])\[(\d+)(?:,\s*(\d+|Infinity))?]/;
2
+ const UNISTYLES_WIDTH_REGEX = /:(w)\[(\d+)(?:,\s*(\d+|Infinity))?]/;
3
+ const UNISTYLES_HEIGHT_REGEX = /:(h)\[(\d+)(?:,\s*(\d+|Infinity))?]/;
4
+ export const parseMq = (mq) => {
5
+ const [, width, fromW, toW] = UNISTYLES_WIDTH_REGEX.exec(mq) || [];
6
+ const [, height, fromH, toH] = UNISTYLES_HEIGHT_REGEX.exec(mq) || [];
7
+ return {
8
+ minWidth: !width || fromW === 'Infinity' ? undefined : Number(fromW),
9
+ maxWidth: !width || toW === 'Infinity' ? undefined : Number(toW),
10
+ minHeight: !height || fromH === 'Infinity' ? undefined : Number(fromH),
11
+ maxHeight: !height || toH === 'Infinity' ? undefined : Number(toH),
12
+ };
13
+ };
14
+ export const isUnistylesMq = (mq) => IS_UNISTYLES_REGEX.test(mq);
@@ -1,10 +1,8 @@
1
- import type { MediaQuery } from 'typestyle/lib/types'
2
-
3
1
  const IS_UNISTYLES_REGEX = /:([hw])\[(\d+)(?:,\s*(\d+|Infinity))?]/
4
2
  const UNISTYLES_WIDTH_REGEX = /:(w)\[(\d+)(?:,\s*(\d+|Infinity))?]/
5
3
  const UNISTYLES_HEIGHT_REGEX = /:(h)\[(\d+)(?:,\s*(\d+|Infinity))?]/
6
4
 
7
- export const parseMq = (mq: string): MediaQuery => {
5
+ export const parseMq = (mq: string) => {
8
6
  const [, width, fromW, toW] = UNISTYLES_WIDTH_REGEX.exec(mq) || []
9
7
  const [, height, fromH, toH] = UNISTYLES_HEIGHT_REGEX.exec(mq) || []
10
8
 
@@ -0,0 +1,165 @@
1
+ import { UnistylesRuntime } from './runtime';
2
+ import { extractMediaQueryValue, keyInObject, getMediaQuery, generateHash, extractUnistyleDependencies, deepMergeObjects } from './utils';
3
+ import { UnistylesListener } from './listener';
4
+ import { convertUnistyles } from './convert';
5
+ import { getVariants } from './variants';
6
+ class UnistylesRegistryBuilder {
7
+ stylesheets = new Map();
8
+ stylesCounter = new Map();
9
+ #styleTag = null;
10
+ disposeListenersMap = new Map();
11
+ dependenciesMap = new Map();
12
+ get styleTag() {
13
+ const tag = this.#styleTag;
14
+ if (!tag) {
15
+ const newTag = document.createElement('style');
16
+ newTag.id = 'unistyles-web';
17
+ this.#styleTag = newTag;
18
+ document.head.appendChild(newTag);
19
+ return newTag;
20
+ }
21
+ return tag;
22
+ }
23
+ getComputedStylesheet = (stylesheet) => {
24
+ if (typeof stylesheet !== 'function') {
25
+ return stylesheet;
26
+ }
27
+ const computedStylesheet = this.stylesheets.get(stylesheet);
28
+ if (computedStylesheet) {
29
+ return computedStylesheet;
30
+ }
31
+ const createdStylesheet = stylesheet(UnistylesRuntime.theme, UnistylesRuntime.miniRuntime);
32
+ const dependencies = Object.values(createdStylesheet).flatMap(value => extractUnistyleDependencies(value));
33
+ this.addDependenciesToStylesheet(stylesheet, dependencies);
34
+ this.stylesheets.set(stylesheet, createdStylesheet);
35
+ return createdStylesheet;
36
+ };
37
+ addDependenciesToStylesheet = (stylesheet, dependencies) => {
38
+ this.disposeListenersMap.get(stylesheet)?.();
39
+ const dependenciesMap = this.dependenciesMap.get(stylesheet) ?? new Set(dependencies);
40
+ dependencies.forEach(dependency => dependenciesMap.add(dependency));
41
+ const dispose = UnistylesListener.addListeners(Array.from(dependenciesMap), () => {
42
+ const newComputedStylesheet = stylesheet(UnistylesRuntime.theme, UnistylesRuntime.miniRuntime);
43
+ this.stylesheets.set(stylesheet, newComputedStylesheet);
44
+ });
45
+ this.dependenciesMap.set(stylesheet, dependenciesMap);
46
+ this.disposeListenersMap.set(stylesheet, dispose);
47
+ };
48
+ add = ({ key, value, stylesheet, args, variants }) => {
49
+ const hash = generateHash(value);
50
+ const existingCounter = this.stylesCounter.get(hash);
51
+ if (!existingCounter || existingCounter.size === 0) {
52
+ const counter = new Set();
53
+ const dependencies = extractUnistyleDependencies(value);
54
+ counter.add(value);
55
+ this.stylesCounter.set(hash, counter);
56
+ this.applyStyles(hash, convertUnistyles(value));
57
+ UnistylesListener.addListeners(dependencies, async () => {
58
+ // Move this callback to the end of the event loop
59
+ await Promise.resolve();
60
+ const newComputedStyleSheet = this.getComputedStylesheet(stylesheet);
61
+ const newValue = newComputedStyleSheet[key];
62
+ const result = typeof newValue === 'function'
63
+ ? newValue(...args)
64
+ : newValue;
65
+ const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants));
66
+ const resultWithVariants = deepMergeObjects(result, variantsResult ?? {});
67
+ this.applyStyles(hash, convertUnistyles(resultWithVariants));
68
+ });
69
+ return hash;
70
+ }
71
+ existingCounter.add(value);
72
+ return hash;
73
+ };
74
+ applyStyles = (hash, styles) => {
75
+ Object.entries(styles).forEach(([key, value]) => {
76
+ if (!this.styleTag.sheet) {
77
+ return;
78
+ }
79
+ if (typeof value === 'object' && !key.startsWith('_')) {
80
+ const mediaQuery = getMediaQuery(key);
81
+ const cssRules = Array.from(this.styleTag.sheet.cssRules);
82
+ let queryRule = cssRules.find(rule => {
83
+ if (!(rule instanceof CSSMediaRule)) {
84
+ return false;
85
+ }
86
+ return rule.media.item(0)?.includes(mediaQuery);
87
+ }) ?? null;
88
+ if (!queryRule) {
89
+ const mediaQueryValue = extractMediaQueryValue(mediaQuery);
90
+ const ruleIndex = mediaQueryValue
91
+ ? cssRules.reduce((acc, rule, ruleIndex) => {
92
+ if (!(rule instanceof CSSMediaRule)) {
93
+ return acc;
94
+ }
95
+ const ruleMediaQueryValue = extractMediaQueryValue(rule.conditionText);
96
+ if (ruleMediaQueryValue === undefined) {
97
+ return;
98
+ }
99
+ return ruleMediaQueryValue > mediaQueryValue ? ruleIndex : acc;
100
+ }, cssRules.length)
101
+ : undefined;
102
+ queryRule = this.styleTag.sheet.cssRules.item(this.styleTag.sheet.insertRule(`@media ${mediaQuery} {.${hash} {}}`, ruleIndex));
103
+ }
104
+ if (queryRule instanceof CSSMediaRule) {
105
+ Object.entries(value).forEach(([mqKey, mqValue]) => {
106
+ this.applyRule({
107
+ hash,
108
+ key: mqKey,
109
+ value: mqValue,
110
+ sheet: queryRule
111
+ });
112
+ });
113
+ }
114
+ return;
115
+ }
116
+ // Pseudo
117
+ if (typeof value === 'object') {
118
+ Object.entries(value).forEach(([pseudoKey, pseudoValue]) => {
119
+ this.applyRule({
120
+ hash: `${hash}${key.replace('_', ':')}`,
121
+ key: pseudoKey,
122
+ value: pseudoValue,
123
+ sheet: this.styleTag.sheet
124
+ });
125
+ });
126
+ return;
127
+ }
128
+ this.applyRule({
129
+ hash,
130
+ key,
131
+ value,
132
+ sheet: this.styleTag.sheet
133
+ });
134
+ });
135
+ };
136
+ applyRule = ({ hash, key, value, sheet }) => {
137
+ let rule = Array.from(sheet.cssRules).find(rule => {
138
+ if (!(rule instanceof CSSStyleRule)) {
139
+ return false;
140
+ }
141
+ // In unistyles pseudos are prefixed with ':' but in css some of them are prefixed with '::'
142
+ return rule.selectorText.replace('::', ':').includes(hash);
143
+ }) ?? null;
144
+ if (!rule) {
145
+ rule = sheet.cssRules.item(sheet.insertRule(`.${hash} {}`));
146
+ }
147
+ if (!(rule instanceof CSSStyleRule) || !keyInObject(rule.style, key)) {
148
+ return;
149
+ }
150
+ rule.style[key] = value;
151
+ };
152
+ remove = (value) => {
153
+ const hash = generateHash(value);
154
+ const existingStyles = this.stylesCounter.get(hash);
155
+ if (!existingStyles) {
156
+ return;
157
+ }
158
+ existingStyles.delete(value);
159
+ if (existingStyles.size === 0) {
160
+ const ruleIndex = Array.from(this.styleTag.sheet?.cssRules ?? []).findIndex(rule => rule.cssText.includes(`.${hash}`));
161
+ this.styleTag.sheet?.deleteRule(ruleIndex);
162
+ }
163
+ };
164
+ }
165
+ export const UnistylesRegistry = new UnistylesRegistryBuilder();