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,236 @@
1
+ import type { UnistylesTheme, UnistylesValues } from '../types'
2
+ import type { StyleSheet, StyleSheetWithSuperPowers } from '../types/stylesheet'
3
+ import { UnistylesRuntime } from './runtime'
4
+ import { extractMediaQueryValue, keyInObject, getMediaQuery, generateHash, extractUnistyleDependencies, deepMergeObjects } from './utils'
5
+ import { UnistylesListener } from './listener'
6
+ import { convertUnistyles } from './convert'
7
+ import type { UnistyleDependency } from '../specs/NativePlatform'
8
+ import type { UnistylesMiniRuntime } from '../specs'
9
+ import { getVariants } from './variants'
10
+
11
+ type AddProps = {
12
+ value: UnistylesValues,
13
+ stylesheet: StyleSheetWithSuperPowers<StyleSheet>,
14
+ key: string,
15
+ args: Array<any>,
16
+ variants: Record<string, any>
17
+ }
18
+
19
+ type ApplyRuleProps = {
20
+ hash: string,
21
+ key: string,
22
+ value: any,
23
+ sheet: CSSStyleSheet | CSSMediaRule
24
+ }
25
+
26
+ type RemoveReadonlyStyleKeys<T extends string> = T extends 'length' | 'parentRule' ? never : T
27
+
28
+ class UnistylesRegistryBuilder {
29
+ private readonly stylesheets = new Map<StyleSheetWithSuperPowers<StyleSheet>, StyleSheet>()
30
+ private readonly stylesCounter = new Map<string, Set<UnistylesValues>>()
31
+ #styleTag: HTMLStyleElement | null = null
32
+ private readonly disposeListenersMap = new Map<object, VoidFunction>()
33
+ private readonly dependenciesMap = new Map<StyleSheetWithSuperPowers<StyleSheet>, Set<UnistyleDependency>>()
34
+
35
+ private get styleTag() {
36
+ const tag = this.#styleTag
37
+
38
+ if (!tag) {
39
+ const newTag = document.createElement('style')
40
+
41
+ newTag.id = 'unistyles-web'
42
+ this.#styleTag = newTag
43
+ document.head.appendChild(newTag)
44
+
45
+ return newTag
46
+ }
47
+
48
+ return tag
49
+ }
50
+
51
+ getComputedStylesheet = (stylesheet: StyleSheetWithSuperPowers<StyleSheet>) => {
52
+ if (typeof stylesheet !== 'function') {
53
+ return stylesheet
54
+ }
55
+
56
+ const computedStylesheet = this.stylesheets.get(stylesheet)
57
+
58
+ if (computedStylesheet) {
59
+ return computedStylesheet
60
+ }
61
+
62
+ const createdStylesheet = stylesheet(UnistylesRuntime.theme, UnistylesRuntime.miniRuntime)
63
+ const dependencies = Object.values(createdStylesheet).flatMap(value => extractUnistyleDependencies(value))
64
+
65
+ this.addDependenciesToStylesheet(stylesheet, dependencies)
66
+ this.stylesheets.set(stylesheet, createdStylesheet)
67
+
68
+ return createdStylesheet
69
+ }
70
+
71
+ addDependenciesToStylesheet = (stylesheet: (theme: UnistylesTheme, miniRuntime: UnistylesMiniRuntime) => StyleSheet, dependencies: Array<UnistyleDependency>) => {
72
+ this.disposeListenersMap.get(stylesheet)?.()
73
+
74
+ const dependenciesMap = this.dependenciesMap.get(stylesheet) ?? new Set(dependencies)
75
+
76
+ dependencies.forEach(dependency => dependenciesMap.add(dependency))
77
+
78
+ const dispose = UnistylesListener.addListeners(Array.from(dependenciesMap), () => {
79
+ const newComputedStylesheet = stylesheet(UnistylesRuntime.theme, UnistylesRuntime.miniRuntime)
80
+
81
+ this.stylesheets.set(stylesheet, newComputedStylesheet)
82
+ })
83
+
84
+ this.dependenciesMap.set(stylesheet, dependenciesMap)
85
+ this.disposeListenersMap.set(stylesheet, dispose)
86
+ }
87
+
88
+ add = ({ key, value, stylesheet, args, variants }: AddProps) => {
89
+ const hash = generateHash(value)
90
+ const existingCounter = this.stylesCounter.get(hash)
91
+
92
+ if (!existingCounter || existingCounter.size === 0) {
93
+ const counter = new Set<UnistylesValues>()
94
+ const dependencies = extractUnistyleDependencies(value)
95
+
96
+ counter.add(value)
97
+ this.stylesCounter.set(hash, counter)
98
+ this.applyStyles(hash, convertUnistyles(value))
99
+
100
+ UnistylesListener.addListeners(dependencies, async () => {
101
+ // Move this callback to the end of the event loop
102
+ await Promise.resolve()
103
+
104
+ const newComputedStyleSheet = this.getComputedStylesheet(stylesheet)
105
+ const newValue = newComputedStyleSheet[key]!
106
+ const result = typeof newValue === 'function'
107
+ ? newValue(...args)
108
+ : newValue
109
+ const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants))
110
+ const resultWithVariants = deepMergeObjects(result, variantsResult ?? {})
111
+
112
+ this.applyStyles(hash, convertUnistyles(resultWithVariants))
113
+ })
114
+
115
+ return hash
116
+ }
117
+
118
+ existingCounter.add(value)
119
+
120
+ return hash
121
+ }
122
+
123
+ private applyStyles = (hash: string, styles: Record<string, any>) => {
124
+ Object.entries(styles).forEach(([key, value]) => {
125
+ if (!this.styleTag.sheet) {
126
+ return
127
+ }
128
+
129
+ if (typeof value === 'object' && !key.startsWith('_')) {
130
+ const mediaQuery = getMediaQuery(key)
131
+ const cssRules = Array.from(this.styleTag.sheet.cssRules)
132
+ let queryRule = cssRules.find(rule => {
133
+ if (!(rule instanceof CSSMediaRule)) {
134
+ return false
135
+ }
136
+
137
+ return rule.media.item(0)?.includes(mediaQuery)
138
+ }) ?? null
139
+
140
+ if (!queryRule) {
141
+ const mediaQueryValue = extractMediaQueryValue(mediaQuery)
142
+ const ruleIndex = mediaQueryValue
143
+ ? cssRules.reduce<number | undefined>((acc, rule, ruleIndex) => {
144
+ if (!(rule instanceof CSSMediaRule)) {
145
+ return acc
146
+ }
147
+
148
+ const ruleMediaQueryValue = extractMediaQueryValue(rule.conditionText)
149
+
150
+ if (ruleMediaQueryValue === undefined) {
151
+ return
152
+ }
153
+
154
+ return ruleMediaQueryValue > mediaQueryValue ? ruleIndex : acc
155
+ }, cssRules.length)
156
+ : undefined
157
+ queryRule = this.styleTag.sheet.cssRules.item(this.styleTag.sheet.insertRule(`@media ${mediaQuery} {.${hash} {}}`, ruleIndex))
158
+ }
159
+
160
+ if (queryRule instanceof CSSMediaRule) {
161
+ Object.entries(value).forEach(([mqKey, mqValue]) => {
162
+ this.applyRule({
163
+ hash,
164
+ key: mqKey,
165
+ value: mqValue,
166
+ sheet: queryRule
167
+ })
168
+ })
169
+ }
170
+
171
+ return
172
+ }
173
+
174
+ // Pseudo
175
+ if (typeof value === 'object') {
176
+ Object.entries(value).forEach(([pseudoKey, pseudoValue]) => {
177
+ this.applyRule({
178
+ hash: `${hash}${key.replace('_', ':')}`,
179
+ key: pseudoKey,
180
+ value: pseudoValue,
181
+ sheet: this.styleTag.sheet!
182
+ })
183
+ })
184
+
185
+ return
186
+ }
187
+
188
+ this.applyRule({
189
+ hash,
190
+ key,
191
+ value,
192
+ sheet: this.styleTag.sheet
193
+ })
194
+ })
195
+ }
196
+
197
+ private applyRule = ({ hash, key, value, sheet }: ApplyRuleProps) => {
198
+ let rule = Array.from(sheet.cssRules).find(rule => {
199
+ if (!(rule instanceof CSSStyleRule)) {
200
+ return false
201
+ }
202
+
203
+ // In unistyles pseudos are prefixed with ':' but in css some of them are prefixed with '::'
204
+ return rule.selectorText.replace('::', ':').includes(hash)
205
+ }) ?? null
206
+
207
+ if (!rule) {
208
+ rule = sheet.cssRules.item(sheet.insertRule(`.${hash} {}`))
209
+ }
210
+
211
+ if (!(rule instanceof CSSStyleRule) || !keyInObject(rule.style, key)) {
212
+ return
213
+ }
214
+
215
+ rule.style[key as RemoveReadonlyStyleKeys<typeof key>] = value
216
+ }
217
+
218
+ remove = (value: UnistylesValues) => {
219
+ const hash = generateHash(value)
220
+ const existingStyles = this.stylesCounter.get(hash)
221
+
222
+ if (!existingStyles) {
223
+ return
224
+ }
225
+
226
+ existingStyles.delete(value)
227
+
228
+ if (existingStyles.size === 0) {
229
+ const ruleIndex = Array.from(this.styleTag.sheet?.cssRules ?? []).findIndex(rule => rule.cssText.includes(`.${hash}`))
230
+
231
+ this.styleTag.sheet?.deleteRule(ruleIndex)
232
+ }
233
+ }
234
+ }
235
+
236
+ export const UnistylesRegistry = new UnistylesRegistryBuilder()
@@ -0,0 +1,160 @@
1
+ import { UnistyleDependency } from '../specs/NativePlatform';
2
+ import { ColorScheme, Orientation } from '../specs/types';
3
+ import { WebContentSizeCategory } from '../types';
4
+ import { UnistylesListener } from './listener';
5
+ import { NavigationBar, StatusBar } from './mock';
6
+ import { UnistylesState } from './state';
7
+ import { hexToRGBA, isServer, schemeToTheme } from './utils';
8
+ class UnistylesRuntimeBuilder {
9
+ lightMedia = this.getLightMedia();
10
+ darkMedia = this.getDarkMedia();
11
+ getLightMedia() {
12
+ if (isServer()) {
13
+ return null;
14
+ }
15
+ if (!this.lightMedia) {
16
+ this.lightMedia = window.matchMedia('(prefers-color-scheme: light)');
17
+ }
18
+ return this.lightMedia;
19
+ }
20
+ getDarkMedia() {
21
+ if (isServer()) {
22
+ return null;
23
+ }
24
+ if (!this.darkMedia) {
25
+ this.darkMedia = window.matchMedia('(prefers-color-scheme: dark)');
26
+ }
27
+ return this.darkMedia;
28
+ }
29
+ get colorScheme() {
30
+ switch (true) {
31
+ case this.getLightMedia()?.matches:
32
+ return ColorScheme.Light;
33
+ case this.getDarkMedia()?.matches:
34
+ return ColorScheme.Dark;
35
+ default:
36
+ return ColorScheme.Unspecified;
37
+ }
38
+ }
39
+ get themeName() {
40
+ return UnistylesState.themeName;
41
+ }
42
+ get contentSizeCategory() {
43
+ return WebContentSizeCategory.Unspecified;
44
+ }
45
+ get breakpoint() {
46
+ return UnistylesState.breakpoint;
47
+ }
48
+ get orientation() {
49
+ if (isServer()) {
50
+ return Orientation.Portrait;
51
+ }
52
+ return screen.orientation.type.includes('portrait') ? Orientation.Portrait : Orientation.Landscape;
53
+ }
54
+ get theme() {
55
+ return this.getTheme(this.themeName);
56
+ }
57
+ get pixelRatio() {
58
+ return isServer() ? 1 : window.devicePixelRatio;
59
+ }
60
+ get screen() {
61
+ if (isServer()) {
62
+ return {
63
+ width: 0,
64
+ height: 0
65
+ };
66
+ }
67
+ return {
68
+ width: window.innerWidth,
69
+ height: window.innerHeight
70
+ };
71
+ }
72
+ get fontScale() {
73
+ return 1;
74
+ }
75
+ get insets() {
76
+ return {
77
+ top: 0,
78
+ bottom: 0,
79
+ left: 0,
80
+ right: 0,
81
+ ime: 0
82
+ };
83
+ }
84
+ get statusBar() {
85
+ return StatusBar;
86
+ }
87
+ get rtl() {
88
+ return isServer() ? true : document.documentElement.dir === 'rtl';
89
+ }
90
+ get hasAdaptiveThemes() {
91
+ return UnistylesState.hasAdaptiveThemes;
92
+ }
93
+ get navigationBar() {
94
+ return NavigationBar;
95
+ }
96
+ get miniRuntime() {
97
+ return {
98
+ colorScheme: this.colorScheme,
99
+ themeName: this.themeName,
100
+ contentSizeCategory: this.contentSizeCategory,
101
+ breakpoint: this.breakpoint,
102
+ isLandscape: this.orientation === Orientation.Landscape,
103
+ isPortrait: this.orientation === Orientation.Portrait,
104
+ pixelRatio: this.pixelRatio,
105
+ screen: this.screen,
106
+ fontScale: this.fontScale,
107
+ insets: this.insets,
108
+ statusBar: {
109
+ width: this.statusBar.width,
110
+ height: this.statusBar.height
111
+ },
112
+ navigationBar: {
113
+ width: this.navigationBar.width,
114
+ height: this.navigationBar.height,
115
+ },
116
+ rtl: this.rtl,
117
+ hasAdaptiveThemes: this.hasAdaptiveThemes
118
+ };
119
+ }
120
+ setTheme = (themeName) => {
121
+ if (themeName === UnistylesRuntime.themeName) {
122
+ return;
123
+ }
124
+ UnistylesState.themeName = themeName;
125
+ UnistylesListener.emitChange(UnistyleDependency.Theme);
126
+ UnistylesListener.emitChange(UnistyleDependency.ThemeName);
127
+ };
128
+ setAdaptiveThemes = (isEnabled) => {
129
+ UnistylesState.hasAdaptiveThemes = isEnabled;
130
+ if (!isEnabled) {
131
+ return;
132
+ }
133
+ this.setTheme(schemeToTheme(UnistylesRuntime.colorScheme));
134
+ };
135
+ setRootViewBackgroundColor = (hex, alpha) => {
136
+ if (isServer()) {
137
+ return;
138
+ }
139
+ document.documentElement.style.backgroundColor = alpha ? hexToRGBA(hex, alpha) : hex;
140
+ };
141
+ setImmersiveMode = () => { };
142
+ updateTheme = (themeName, updater) => {
143
+ const oldTheme = UnistylesState.themes.get(themeName);
144
+ if (!oldTheme) {
145
+ throw new Error(`🦄 Theme "${themeName}" is not registered!`);
146
+ }
147
+ UnistylesState.themes.set(themeName, updater(oldTheme));
148
+ };
149
+ getTheme = (themeName = this.themeName) => {
150
+ if (!themeName) {
151
+ throw new Error('🦄 No theme selected!');
152
+ }
153
+ const theme = UnistylesState.themes.get(themeName);
154
+ if (!theme) {
155
+ throw new Error(`🦄 Theme "${this.themeName}" is not registered!`);
156
+ }
157
+ return theme;
158
+ };
159
+ }
160
+ export const UnistylesRuntime = new UnistylesRuntimeBuilder();
@@ -1,7 +1,7 @@
1
- import { UnistyleDependency } from '../src/specs/NativePlatform'
2
- import { ColorScheme, Orientation, type AppTheme, type AppThemeName } from '../src/specs/types'
3
- import type { UnistylesMiniRuntime } from '../src/specs/UnistylesRuntime'
4
- import { WebContentSizeCategory } from '../src/types'
1
+ import { UnistyleDependency } from '../specs/NativePlatform'
2
+ import { ColorScheme, Orientation, type AppTheme, type AppThemeName } from '../specs/types'
3
+ import type { UnistylesMiniRuntime } from '../specs/UnistylesRuntime'
4
+ import { WebContentSizeCategory } from '../types'
5
5
  import { UnistylesListener } from './listener'
6
6
  import { NavigationBar, StatusBar } from './mock'
7
7
  import { UnistylesState } from './state'
@@ -67,17 +67,7 @@ class UnistylesRuntimeBuilder {
67
67
  }
68
68
 
69
69
  get theme() {
70
- if (!this.themeName) {
71
- throw new Error('🦄 No theme selected!')
72
- }
73
-
74
- const theme = UnistylesState.themes.get(this.themeName)
75
-
76
- if (!theme) {
77
- throw new Error(`🦄 Theme "${this.themeName}" is not registered!`)
78
- }
79
-
80
- return theme
70
+ return this.getTheme(this.themeName)
81
71
  }
82
72
 
83
73
  get pixelRatio() {
@@ -134,7 +124,8 @@ class UnistylesRuntimeBuilder {
134
124
  themeName: this.themeName,
135
125
  contentSizeCategory: this.contentSizeCategory,
136
126
  breakpoint: this.breakpoint,
137
- orientation: this.orientation,
127
+ isLandscape: this.orientation === Orientation.Landscape,
128
+ isPortrait: this.orientation === Orientation.Portrait,
138
129
  pixelRatio: this.pixelRatio,
139
130
  screen: this.screen,
140
131
  fontScale: this.fontScale,
@@ -169,7 +160,7 @@ class UnistylesRuntimeBuilder {
169
160
  return
170
161
  }
171
162
 
172
- this.setTheme(schemeToTheme(UnistylesRuntime.colorScheme))
163
+ this.setTheme(schemeToTheme(UnistylesRuntime.colorScheme) as AppThemeName)
173
164
  }
174
165
 
175
166
  setRootViewBackgroundColor = (hex: string, alpha?: number) => {
@@ -192,7 +183,19 @@ class UnistylesRuntimeBuilder {
192
183
  UnistylesState.themes.set(themeName, updater(oldTheme))
193
184
  }
194
185
 
195
- getSSRUnistyles = () => UnistylesState.tags
186
+ getTheme = (themeName = this.themeName) => {
187
+ if (!themeName) {
188
+ throw new Error('🦄 No theme selected!')
189
+ }
190
+
191
+ const theme = UnistylesState.themes.get(themeName)
192
+
193
+ if (!theme) {
194
+ throw new Error(`🦄 Theme "${this.themeName}" is not registered!`)
195
+ }
196
+
197
+ return theme
198
+ }
196
199
  }
197
200
 
198
201
  export const UnistylesRuntime = new UnistylesRuntimeBuilder()
@@ -0,0 +1,96 @@
1
+ import { UnistylesRegistry } from './registry';
2
+ import { createDoubleMap, deepMergeObjects, equal, extractSecrets, extractUnistyleDependencies, isInDocument } from './utils';
3
+ import { getVariants } from './variants';
4
+ class UnistylesShadowRegistryBuilder {
5
+ // MOCKS
6
+ name = 'UnistylesShadowRegistry';
7
+ __type = 'web';
8
+ equals = () => true;
9
+ toString = () => 'UnistylesShadowRegistry';
10
+ dispose = () => { };
11
+ // END MOCKS
12
+ resultsMap = createDoubleMap();
13
+ classNamesMap = createDoubleMap();
14
+ add = (ref, _style, _variants, _args) => {
15
+ // Style is not provided
16
+ if (!_style) {
17
+ return;
18
+ }
19
+ // Array of styles
20
+ if (Array.isArray(_style)) {
21
+ _style.forEach(style => this.add(ref, style, _variants, _args));
22
+ return;
23
+ }
24
+ // Not a unistyle
25
+ if (!Object.keys(_style).some(key => key.startsWith('__uni__'))) {
26
+ return;
27
+ }
28
+ // Ref is unmounted, remove style tags from the document
29
+ if (ref === null) {
30
+ const secrets = extractSecrets(_style);
31
+ secrets.forEach(({ __uni__refs, __uni__key }) => {
32
+ __uni__refs.forEach(ref => {
33
+ if (isInDocument(ref)) {
34
+ return;
35
+ }
36
+ const oldResult = this.resultsMap.get(ref, __uni__key);
37
+ this.resultsMap.delete(ref, __uni__key);
38
+ this.classNamesMap.delete(ref, __uni__key);
39
+ if (oldResult) {
40
+ UnistylesRegistry.remove(oldResult);
41
+ }
42
+ });
43
+ });
44
+ return;
45
+ }
46
+ // Ref is not an HTMLElement
47
+ if (!(ref instanceof HTMLElement)) {
48
+ return;
49
+ }
50
+ extractSecrets(_style).forEach(secret => {
51
+ const { __uni__key, __uni__stylesheet, __uni__variants, __uni__args = [], __uni__refs } = secret;
52
+ const newComputedStylesheet = UnistylesRegistry.getComputedStylesheet(__uni__stylesheet);
53
+ const style = newComputedStylesheet[__uni__key];
54
+ const args = _args ?? __uni__args;
55
+ const variants = _variants && Object.keys(_variants).length > 0 ? _variants : __uni__variants;
56
+ const result = typeof style === 'function'
57
+ ? style(...args)
58
+ : style;
59
+ const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants));
60
+ const resultWithVariants = deepMergeObjects(result, variantsResult ?? {});
61
+ const oldResult = this.resultsMap.get(ref, __uni__key);
62
+ // If results are the same do nothing
63
+ if (equal(oldResult, resultWithVariants)) {
64
+ return;
65
+ }
66
+ const oldClassNames = this.classNamesMap.get(ref, __uni__key);
67
+ // Remove old styles
68
+ if (oldResult) {
69
+ UnistylesRegistry.remove(oldResult);
70
+ }
71
+ // Remove old classnames from the ref
72
+ oldClassNames?.forEach(className => ref.classList.remove(className));
73
+ this.resultsMap.set(ref, __uni__key, resultWithVariants);
74
+ const className = UnistylesRegistry.add({
75
+ key: __uni__key,
76
+ args,
77
+ stylesheet: __uni__stylesheet,
78
+ value: resultWithVariants,
79
+ variants
80
+ });
81
+ const injectedClassNames = resultWithVariants?._web?._classNames ?? [];
82
+ const newClassNames = injectedClassNames.concat(className);
83
+ const dependencies = extractUnistyleDependencies(resultWithVariants);
84
+ if (typeof __uni__stylesheet === 'function') {
85
+ // Add dependencies from dynamic styles to stylesheet
86
+ UnistylesRegistry.addDependenciesToStylesheet(__uni__stylesheet, dependencies);
87
+ }
88
+ __uni__refs.add(ref);
89
+ this.classNamesMap.set(ref, __uni__key, newClassNames);
90
+ // Add new classnames to the ref
91
+ ref.classList.add(...newClassNames);
92
+ });
93
+ };
94
+ remove = () => { };
95
+ }
96
+ export const UnistylesShadowRegistry = new UnistylesShadowRegistryBuilder();
@@ -0,0 +1,121 @@
1
+ import type { UnistylesValues } from '../types'
2
+ import { UnistylesRegistry } from './registry'
3
+ import { createDoubleMap, deepMergeObjects, equal, extractSecrets, extractUnistyleDependencies, isInDocument } from './utils'
4
+ import { getVariants } from './variants'
5
+
6
+ type Style = UnistylesValues | ((...args: Array<any>) => UnistylesValues)
7
+
8
+ class UnistylesShadowRegistryBuilder {
9
+ // MOCKS
10
+ name = 'UnistylesShadowRegistry'
11
+ __type = 'web'
12
+ equals = () => true
13
+ toString = () => 'UnistylesShadowRegistry'
14
+ dispose = () => {}
15
+ // END MOCKS
16
+
17
+ private resultsMap = createDoubleMap<HTMLElement, string, UnistylesValues>()
18
+ private classNamesMap = createDoubleMap<HTMLElement, string, Array<string>>()
19
+
20
+ add = (ref: any, _style?: Style | Array<Style>, _variants?: Record<string, any>, _args?: Array<any>) => {
21
+ // Style is not provided
22
+ if (!_style) {
23
+ return
24
+ }
25
+
26
+ // Array of styles
27
+ if (Array.isArray(_style)) {
28
+ _style.forEach(style => this.add(ref, style, _variants, _args))
29
+
30
+ return
31
+ }
32
+
33
+ // Not a unistyle
34
+ if (!Object.keys(_style).some(key => key.startsWith('__uni__'))) {
35
+ return
36
+ }
37
+
38
+ // Ref is unmounted, remove style tags from the document
39
+ if (ref === null) {
40
+ const secrets = extractSecrets(_style)
41
+
42
+ secrets.forEach(({ __uni__refs, __uni__key }) => {
43
+ __uni__refs.forEach(ref => {
44
+ if (isInDocument(ref)) {
45
+ return
46
+ }
47
+
48
+ const oldResult = this.resultsMap.get(ref, __uni__key)
49
+ this.resultsMap.delete(ref, __uni__key)
50
+ this.classNamesMap.delete(ref, __uni__key)
51
+
52
+ if (oldResult) {
53
+ UnistylesRegistry.remove(oldResult)
54
+ }
55
+ })
56
+ })
57
+
58
+ return
59
+ }
60
+
61
+ // Ref is not an HTMLElement
62
+ if (!(ref instanceof HTMLElement)) {
63
+ return
64
+ }
65
+
66
+ extractSecrets(_style).forEach(secret => {
67
+ const { __uni__key, __uni__stylesheet, __uni__variants, __uni__args = [], __uni__refs } = secret
68
+ const newComputedStylesheet = UnistylesRegistry.getComputedStylesheet(__uni__stylesheet)
69
+ const style = newComputedStylesheet[__uni__key]!
70
+ const args = _args ?? __uni__args
71
+ const variants = _variants && Object.keys(_variants).length > 0 ? _variants : __uni__variants
72
+ const result = typeof style === 'function'
73
+ ? style(...args)
74
+ : style
75
+ const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants))
76
+ const resultWithVariants = deepMergeObjects(result, variantsResult ?? {})
77
+ const oldResult = this.resultsMap.get(ref, __uni__key)
78
+
79
+ // If results are the same do nothing
80
+ if (equal(oldResult, resultWithVariants)) {
81
+ return
82
+ }
83
+
84
+ const oldClassNames = this.classNamesMap.get(ref, __uni__key)
85
+
86
+ // Remove old styles
87
+ if (oldResult) {
88
+ UnistylesRegistry.remove(oldResult)
89
+ }
90
+
91
+ // Remove old classnames from the ref
92
+ oldClassNames?.forEach(className => ref.classList.remove(className))
93
+ this.resultsMap.set(ref, __uni__key, resultWithVariants)
94
+
95
+ const className = UnistylesRegistry.add({
96
+ key: __uni__key,
97
+ args,
98
+ stylesheet: __uni__stylesheet,
99
+ value: resultWithVariants,
100
+ variants
101
+ })
102
+ const injectedClassNames: Array<string> = resultWithVariants?._web?._classNames ?? []
103
+ const newClassNames = injectedClassNames.concat(className)
104
+ const dependencies = extractUnistyleDependencies(resultWithVariants)
105
+
106
+ if (typeof __uni__stylesheet === 'function') {
107
+ // Add dependencies from dynamic styles to stylesheet
108
+ UnistylesRegistry.addDependenciesToStylesheet(__uni__stylesheet, dependencies)
109
+ }
110
+
111
+ __uni__refs.add(ref)
112
+ this.classNamesMap.set(ref, __uni__key, newClassNames)
113
+ // Add new classnames to the ref
114
+ ref.classList.add(...newClassNames)
115
+ })
116
+ }
117
+
118
+ remove = () => {}
119
+ }
120
+
121
+ export const UnistylesShadowRegistry = new UnistylesShadowRegistryBuilder()