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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +7 -0
  2. package/android/CMakeLists.txt +12 -21
  3. package/cxx/common/Constants.h +3 -0
  4. package/cxx/common/Helpers.h +118 -5
  5. package/cxx/core/HostStyle.cpp +12 -8
  6. package/cxx/core/HostStyle.h +4 -0
  7. package/cxx/core/StyleSheet.h +0 -2
  8. package/cxx/core/StyleSheetRegistry.cpp +10 -13
  9. package/cxx/core/StyleSheetRegistry.h +4 -4
  10. package/cxx/core/Unistyle.h +7 -10
  11. package/cxx/core/UnistyleData.h +23 -0
  12. package/cxx/core/UnistyleWrapper.h +61 -12
  13. package/cxx/core/UnistylesCommitHook.cpp +17 -16
  14. package/cxx/core/UnistylesCommitHook.h +7 -11
  15. package/cxx/core/UnistylesCommitShadowNode.h +13 -0
  16. package/cxx/core/UnistylesMountHook.cpp +26 -0
  17. package/cxx/core/UnistylesMountHook.h +24 -0
  18. package/cxx/core/UnistylesRegistry.cpp +85 -88
  19. package/cxx/core/UnistylesRegistry.h +16 -13
  20. package/cxx/core/UnistylesState.cpp +29 -11
  21. package/cxx/core/UnistylesState.h +5 -2
  22. package/cxx/hybridObjects/HybridShadowRegistry.cpp +15 -13
  23. package/cxx/hybridObjects/HybridStyleSheet.cpp +144 -46
  24. package/cxx/hybridObjects/HybridStyleSheet.h +23 -4
  25. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +51 -8
  26. package/cxx/hybridObjects/HybridUnistylesRuntime.h +12 -1
  27. package/cxx/parser/Parser.cpp +209 -176
  28. package/cxx/parser/Parser.h +10 -14
  29. package/cxx/shadowTree/ShadowLeafUpdate.h +1 -1
  30. package/cxx/shadowTree/ShadowTrafficController.h +37 -0
  31. package/cxx/shadowTree/ShadowTreeManager.cpp +16 -15
  32. package/cxx/shadowTree/ShadowTreeManager.h +2 -1
  33. package/ios/Equatable.swift +2 -1
  34. package/ios/NativePlatform+ios.swift +21 -5
  35. package/ios/NativePlatform+keyboard.swift +83 -0
  36. package/ios/NativePlatformListener+ios.swift +36 -23
  37. package/ios/Unistyles.h +1 -0
  38. package/ios/UnistylesModuleOnLoad.h +13 -2
  39. package/ios/UnistylesModuleOnLoad.mm +11 -1
  40. package/lib/commonjs/common.js.map +1 -1
  41. package/lib/commonjs/core/createUnistylesComponent.js +18 -0
  42. package/lib/commonjs/core/createUnistylesComponent.js.map +1 -0
  43. package/lib/commonjs/core/createUnistylesComponent.native.js +45 -0
  44. package/lib/commonjs/core/createUnistylesComponent.native.js.map +2 -0
  45. package/lib/commonjs/core/index.js +27 -0
  46. package/lib/commonjs/core/index.js.map +1 -0
  47. package/lib/commonjs/core/useBreakpoint.js +22 -0
  48. package/lib/commonjs/core/useBreakpoint.js.map +1 -0
  49. package/lib/commonjs/core/useBreakpoint.native.js +24 -0
  50. package/lib/commonjs/core/useBreakpoint.native.js.map +2 -0
  51. package/lib/commonjs/core/useTheme.js +22 -0
  52. package/lib/commonjs/core/useTheme.js.map +2 -0
  53. package/lib/commonjs/core/useTheme.native.js +24 -0
  54. package/lib/commonjs/core/useTheme.native.js.map +2 -0
  55. package/lib/commonjs/global.js +3 -0
  56. package/lib/commonjs/index.js +23 -11
  57. package/lib/commonjs/index.js.map +1 -1
  58. package/lib/commonjs/mq.js +1 -4
  59. package/lib/commonjs/mq.js.map +2 -1
  60. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js +6 -4
  61. package/lib/commonjs/specs/NativePlatform/NativePlatform.nitro.js.map +1 -1
  62. package/lib/commonjs/specs/NativePlatform/index.js.map +1 -1
  63. package/lib/commonjs/specs/NavigtionBar/index.js +1 -1
  64. package/lib/commonjs/specs/NavigtionBar/index.js.map +1 -1
  65. package/lib/commonjs/specs/ShadowRegistry/ShadowRegistry.nitro.js.map +1 -1
  66. package/lib/commonjs/specs/ShadowRegistry/index.js +7 -6
  67. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  68. package/lib/commonjs/specs/ShadowRegistry/types.js +3 -0
  69. package/lib/commonjs/specs/StatusBar/UnistylesStatusBar.nitro.js.map +1 -1
  70. package/lib/commonjs/specs/StatusBar/index.js +1 -1
  71. package/lib/commonjs/specs/StatusBar/index.js.map +2 -1
  72. package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.js +2 -4
  73. package/lib/commonjs/specs/StyleSheet/UnistylesStyleSheet.nitro.js.map +1 -1
  74. package/lib/commonjs/specs/StyleSheet/index.js +1 -0
  75. package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
  76. package/lib/commonjs/specs/TurboUnistyles/NativeTurboUnistyles.js +1 -3
  77. package/lib/commonjs/specs/TurboUnistyles/NativeTurboUnistyles.js.map +2 -1
  78. package/lib/commonjs/specs/UnistylesRuntime/index.js +1 -1
  79. package/lib/commonjs/specs/UnistylesRuntime/index.js.map +1 -1
  80. package/lib/commonjs/specs/index.js +7 -0
  81. package/lib/commonjs/specs/index.js.map +1 -1
  82. package/lib/commonjs/specs/index.web.js +1 -1
  83. package/lib/commonjs/specs/types.js.map +1 -0
  84. package/lib/commonjs/types/accessibility.js +9 -9
  85. package/lib/commonjs/types/accessibility.js.map +1 -1
  86. package/lib/commonjs/types/common.js +3 -0
  87. package/lib/commonjs/types/core.js.map +1 -1
  88. package/lib/commonjs/types/index.js.map +2 -1
  89. package/lib/commonjs/types/stylesheet.js +1 -2
  90. package/lib/commonjs/types/stylesheet.js.map +1 -1
  91. package/lib/commonjs/web/convert/boxShadow.js +77 -0
  92. package/lib/commonjs/web/convert/boxShadow.js.map +1 -0
  93. package/lib/commonjs/web/convert/index.js +68 -0
  94. package/lib/commonjs/web/convert/index.js.map +2 -0
  95. package/lib/commonjs/web/convert/module.d.js +2 -0
  96. package/lib/commonjs/web/convert/module.d.js.map +1 -0
  97. package/lib/commonjs/web/convert/pseudo.js +10 -0
  98. package/lib/commonjs/web/convert/pseudo.js.map +2 -0
  99. package/lib/commonjs/web/convert/shadow.js +68 -0
  100. package/lib/commonjs/web/convert/shadow.js.map +2 -0
  101. package/lib/commonjs/web/convert/style.js +93 -0
  102. package/lib/commonjs/web/convert/style.js.map +2 -0
  103. package/lib/commonjs/web/convert/textShadow.js +70 -0
  104. package/lib/commonjs/web/convert/textShadow.js.map +2 -0
  105. package/lib/commonjs/web/convert/transform.js +72 -0
  106. package/lib/commonjs/web/convert/transform.js.map +2 -0
  107. package/lib/commonjs/web/convert/types.js +9 -0
  108. package/lib/commonjs/web/convert/types.js.map +1 -0
  109. package/lib/commonjs/web/convert/utils.js +54 -0
  110. package/lib/commonjs/web/convert/utils.js.map +2 -0
  111. package/lib/commonjs/web/create.js +48 -0
  112. package/lib/commonjs/web/create.js.map +1 -0
  113. package/lib/commonjs/web/index.js +60 -0
  114. package/lib/commonjs/web/index.js.map +2 -0
  115. package/lib/commonjs/web/listener.js +35 -0
  116. package/lib/commonjs/web/listener.js.map +2 -0
  117. package/lib/commonjs/web/mock.js +28 -0
  118. package/lib/commonjs/web/mock.js.map +2 -0
  119. package/lib/commonjs/web/mq.js +23 -0
  120. package/lib/commonjs/web/mq.js.map +1 -0
  121. package/lib/commonjs/web/registry.js +183 -0
  122. package/lib/commonjs/web/registry.js.map +2 -0
  123. package/lib/commonjs/web/runtime.js +167 -0
  124. package/lib/commonjs/web/runtime.js.map +2 -0
  125. package/lib/commonjs/web/shadowRegistry.js +114 -0
  126. package/lib/commonjs/web/shadowRegistry.js.map +2 -0
  127. package/lib/commonjs/web/state.js +69 -0
  128. package/lib/commonjs/web/state.js.map +2 -0
  129. package/lib/commonjs/web/utils/common.js +90 -0
  130. package/lib/commonjs/web/utils/common.js.map +2 -0
  131. package/lib/commonjs/web/utils/index.js +28 -0
  132. package/lib/commonjs/web/utils/index.js.map +1 -0
  133. package/lib/commonjs/web/utils/unistyle.js +82 -0
  134. package/lib/commonjs/web/utils/unistyle.js.map +2 -0
  135. package/lib/commonjs/web/variants/getVariants.js +39 -0
  136. package/lib/commonjs/web/variants/getVariants.js.map +1 -0
  137. package/lib/commonjs/web/variants/index.js +28 -0
  138. package/lib/commonjs/web/variants/index.js.map +1 -0
  139. package/lib/commonjs/web/variants/useVariants.js +58 -0
  140. package/lib/commonjs/web/variants/useVariants.js.map +2 -0
  141. package/lib/module/core/createUnistylesComponent.js +11 -0
  142. package/lib/module/core/createUnistylesComponent.js.map +2 -0
  143. package/lib/module/core/createUnistylesComponent.native.js +39 -0
  144. package/lib/module/core/createUnistylesComponent.native.js.map +1 -0
  145. package/lib/module/core/index.js +6 -0
  146. package/lib/module/core/index.js.map +1 -0
  147. package/lib/module/core/useBreakpoint.js +17 -0
  148. package/lib/module/core/useBreakpoint.js.map +1 -0
  149. package/lib/module/core/useBreakpoint.native.js +19 -0
  150. package/lib/module/core/useBreakpoint.native.js.map +2 -0
  151. package/lib/module/core/useTheme.js +17 -0
  152. package/lib/module/core/useTheme.js.map +2 -0
  153. package/lib/module/core/useTheme.native.js +19 -0
  154. package/lib/module/core/useTheme.native.js.map +2 -0
  155. package/lib/module/global.js +1 -1
  156. package/lib/module/global.js.map +1 -0
  157. package/lib/module/index.js +1 -9
  158. package/lib/module/index.js.map +1 -1
  159. package/lib/module/mq.js +1 -4
  160. package/lib/module/mq.js.map +2 -1
  161. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js +1 -0
  162. package/lib/module/specs/NativePlatform/NativePlatform.nitro.js.map +2 -1
  163. package/lib/module/specs/NativePlatform/index.js.map +1 -1
  164. package/lib/module/specs/NavigtionBar/UnistylesNavigationBar.nitro.js.map +1 -1
  165. package/lib/module/specs/NavigtionBar/index.js +1 -1
  166. package/lib/module/specs/NavigtionBar/index.js.map +2 -1
  167. package/lib/module/specs/ShadowRegistry/ShadowRegistry.nitro.js.map +1 -1
  168. package/lib/module/specs/ShadowRegistry/index.js +7 -6
  169. package/lib/module/specs/ShadowRegistry/index.js.map +2 -1
  170. package/lib/module/specs/ShadowRegistry/types.js +2 -0
  171. package/lib/module/specs/ShadowRegistry/types.js.map +1 -0
  172. package/lib/module/specs/StatusBar/UnistylesStatusBar.nitro.js.map +1 -1
  173. package/lib/module/specs/StatusBar/index.js +1 -1
  174. package/lib/module/specs/StatusBar/index.js.map +1 -1
  175. package/lib/module/specs/StyleSheet/index.js +1 -0
  176. package/lib/module/specs/StyleSheet/index.js.map +2 -1
  177. package/lib/module/specs/TurboUnistyles/NativeTurboUnistyles.js.map +2 -1
  178. package/lib/module/specs/UnistylesRuntime/UnistylesRuntime.nitro.js.map +1 -0
  179. package/lib/module/specs/UnistylesRuntime/index.js +1 -1
  180. package/lib/module/specs/UnistylesRuntime/index.js.map +1 -1
  181. package/lib/module/specs/index.js +2 -1
  182. package/lib/module/specs/index.js.map +1 -1
  183. package/lib/module/specs/index.web.js +1 -1
  184. package/lib/module/specs/index.web.js.map +2 -1
  185. package/lib/module/specs/types.js +10 -10
  186. package/lib/module/specs/types.js.map +1 -1
  187. package/lib/module/types/accessibility.js +1 -1
  188. package/lib/module/types/accessibility.js.map +1 -0
  189. package/lib/module/types/breakpoints.js.map +1 -0
  190. package/lib/module/types/common.js +1 -1
  191. package/lib/module/types/common.js.map +1 -0
  192. package/lib/module/types/core.js.map +1 -1
  193. package/lib/module/types/index.js.map +2 -1
  194. package/lib/module/types/stylesheet.js.map +1 -1
  195. package/lib/module/types/variants.js.map +1 -0
  196. package/lib/module/web/convert/boxShadow.js +72 -0
  197. package/lib/module/web/convert/boxShadow.js.map +1 -0
  198. package/lib/module/web/convert/index.js +69 -0
  199. package/lib/module/web/convert/index.js.map +2 -0
  200. package/lib/module/web/convert/module.d.js +2 -0
  201. package/lib/module/web/convert/module.d.js.map +1 -0
  202. package/lib/module/web/convert/pseudo.js +5 -0
  203. package/lib/module/web/convert/pseudo.js.map +2 -0
  204. package/lib/module/web/convert/shadow.js +59 -0
  205. package/lib/module/web/convert/shadow.js.map +1 -0
  206. package/lib/module/web/convert/style.js +88 -0
  207. package/lib/module/web/convert/style.js.map +1 -0
  208. package/lib/module/web/convert/textShadow.js +68 -0
  209. package/lib/module/web/convert/textShadow.js.map +1 -0
  210. package/lib/module/web/convert/transform.js +67 -0
  211. package/lib/module/web/convert/transform.js.map +1 -0
  212. package/lib/module/web/convert/types.js +5 -0
  213. package/lib/module/web/convert/types.js.map +1 -0
  214. package/lib/module/web/convert/utils.js +42 -0
  215. package/lib/module/web/convert/utils.js.map +1 -0
  216. package/lib/module/web/create.js +43 -0
  217. package/lib/module/web/create.js.map +1 -0
  218. package/lib/module/web/index.js +25 -0
  219. package/lib/module/web/index.js.map +2 -0
  220. package/lib/module/web/listener.js +31 -0
  221. package/lib/module/web/listener.js.map +2 -0
  222. package/lib/module/web/mock.js +24 -0
  223. package/lib/module/web/mock.js.map +2 -0
  224. package/lib/module/web/mq.js +17 -0
  225. package/lib/module/web/mq.js.map +1 -0
  226. package/lib/module/web/registry.js +181 -0
  227. package/lib/module/web/registry.js.map +1 -0
  228. package/lib/module/web/runtime.js +163 -0
  229. package/lib/module/web/runtime.js.map +1 -0
  230. package/lib/module/web/shadowRegistry.js +118 -0
  231. package/lib/module/web/shadowRegistry.js.map +1 -0
  232. package/lib/module/web/state.js +65 -0
  233. package/lib/module/web/state.js.map +2 -0
  234. package/lib/module/web/utils/common.js +80 -0
  235. package/lib/module/web/utils/common.js.map +1 -0
  236. package/lib/module/web/utils/index.js +5 -0
  237. package/lib/module/web/utils/index.js.map +1 -0
  238. package/lib/module/web/utils/unistyle.js +69 -0
  239. package/lib/module/web/utils/unistyle.js.map +1 -0
  240. package/lib/module/web/variants/getVariants.js +34 -0
  241. package/lib/module/web/variants/getVariants.js.map +2 -0
  242. package/lib/module/web/variants/index.js +5 -0
  243. package/lib/module/web/variants/index.js.map +1 -0
  244. package/lib/module/web/variants/useVariants.js +53 -0
  245. package/lib/module/web/variants/useVariants.js.map +2 -0
  246. package/lib/typescript/src/core/createUnistylesComponent.d.ts +6 -0
  247. package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +1 -0
  248. package/lib/typescript/src/core/createUnistylesComponent.native.d.ts +6 -0
  249. package/lib/typescript/src/core/createUnistylesComponent.native.d.ts.map +1 -0
  250. package/lib/typescript/src/core/index.d.ts +4 -0
  251. package/lib/typescript/src/core/index.d.ts.map +1 -0
  252. package/lib/typescript/src/core/useBreakpoint.d.ts +2 -0
  253. package/lib/typescript/src/core/useBreakpoint.d.ts.map +1 -0
  254. package/lib/typescript/src/core/useBreakpoint.native.d.ts +2 -0
  255. package/lib/typescript/src/core/useBreakpoint.native.d.ts.map +1 -0
  256. package/lib/typescript/src/core/useTheme.d.ts +3 -0
  257. package/lib/typescript/src/core/useTheme.d.ts.map +1 -0
  258. package/lib/typescript/src/core/useTheme.native.d.ts +3 -0
  259. package/lib/typescript/src/core/useTheme.native.d.ts.map +1 -0
  260. package/lib/typescript/src/index.d.ts +2 -0
  261. package/lib/typescript/src/index.d.ts.map +1 -1
  262. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts +6 -2
  263. package/lib/typescript/src/specs/NativePlatform/NativePlatform.nitro.d.ts.map +1 -1
  264. package/lib/typescript/src/specs/NavigtionBar/index.d.ts +5 -0
  265. package/lib/typescript/src/specs/NavigtionBar/index.d.ts.map +1 -1
  266. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +3 -3
  267. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  268. package/lib/typescript/src/specs/StatusBar/index.d.ts +5 -0
  269. package/lib/typescript/src/specs/StatusBar/index.d.ts.map +1 -1
  270. package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts +3 -1
  271. package/lib/typescript/src/specs/StyleSheet/UnistylesStyleSheet.nitro.d.ts.map +1 -1
  272. package/lib/typescript/src/specs/StyleSheet/index.d.ts +3 -1
  273. package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
  274. package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts +0 -1
  275. package/lib/typescript/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.d.ts.map +1 -1
  276. package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts +3 -1
  277. package/lib/typescript/src/specs/UnistylesRuntime/index.d.ts.map +1 -1
  278. package/lib/typescript/src/specs/index.d.ts +4 -2
  279. package/lib/typescript/src/specs/index.d.ts.map +1 -1
  280. package/lib/typescript/src/specs/index.web.d.ts +1 -1
  281. package/lib/typescript/src/specs/index.web.d.ts.map +1 -1
  282. package/lib/typescript/src/types/breakpoints.d.ts +11 -11
  283. package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
  284. package/lib/typescript/src/types/index.d.ts +1 -1
  285. package/lib/typescript/src/types/index.d.ts.map +1 -1
  286. package/lib/typescript/src/types/stylesheet.d.ts +6 -4
  287. package/lib/typescript/src/types/stylesheet.d.ts.map +1 -1
  288. package/lib/typescript/src/types/variants.d.ts +4 -1
  289. package/lib/typescript/src/types/variants.d.ts.map +1 -1
  290. package/lib/typescript/src/web/convert/boxShadow.d.ts +8 -0
  291. package/lib/typescript/src/web/convert/boxShadow.d.ts.map +1 -0
  292. package/lib/typescript/src/web/convert/index.d.ts +3 -0
  293. package/lib/typescript/src/web/convert/index.d.ts.map +1 -0
  294. package/lib/typescript/src/web/convert/pseudo.d.ts +6 -0
  295. package/lib/typescript/src/web/convert/pseudo.d.ts.map +1 -0
  296. package/lib/typescript/src/web/convert/shadow.d.ts.map +1 -0
  297. package/lib/typescript/src/web/convert/style.d.ts +2 -0
  298. package/lib/typescript/src/web/convert/style.d.ts.map +1 -0
  299. package/lib/typescript/src/web/convert/textShadow.d.ts +8 -0
  300. package/lib/typescript/src/web/convert/textShadow.d.ts.map +1 -0
  301. package/lib/typescript/src/web/convert/transform.d.ts +4 -0
  302. package/lib/typescript/src/web/convert/transform.d.ts.map +1 -0
  303. package/lib/typescript/{web → src/web}/convert/types.d.ts +1 -1
  304. package/lib/typescript/src/web/convert/types.d.ts.map +1 -0
  305. package/lib/typescript/src/web/convert/utils.d.ts.map +1 -0
  306. package/lib/typescript/src/web/create.d.ts +1443 -0
  307. package/lib/typescript/{web → src/web}/create.d.ts.map +1 -1
  308. package/lib/typescript/src/web/index.d.ts +1459 -0
  309. package/lib/typescript/{web → src/web}/index.d.ts.map +1 -1
  310. package/lib/typescript/{web/listener → src/web}/listener.d.ts +3 -2
  311. package/lib/typescript/src/web/listener.d.ts.map +1 -0
  312. package/lib/typescript/src/web/mock.d.ts +5 -0
  313. package/lib/typescript/src/web/mock.d.ts.map +1 -0
  314. package/lib/typescript/src/web/mq.d.ts +8 -0
  315. package/lib/typescript/src/web/mq.d.ts.map +1 -0
  316. package/lib/typescript/src/web/registry.d.ts +28 -0
  317. package/lib/typescript/src/web/registry.d.ts.map +1 -0
  318. package/lib/typescript/{web → src/web}/runtime.d.ts +9 -9
  319. package/lib/typescript/src/web/runtime.d.ts.map +1 -0
  320. package/lib/typescript/src/web/shadowRegistry.d.ts +16 -0
  321. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -0
  322. package/lib/typescript/src/web/state.d.ts +18 -0
  323. package/lib/typescript/src/web/state.d.ts.map +1 -0
  324. package/lib/typescript/{web/utils.d.ts → src/web/utils/common.d.ts} +8 -9
  325. package/lib/typescript/src/web/utils/common.d.ts.map +1 -0
  326. package/lib/typescript/src/web/utils/index.d.ts +3 -0
  327. package/lib/typescript/src/web/utils/index.d.ts.map +1 -0
  328. package/lib/typescript/src/web/utils/unistyle.d.ts +20 -0
  329. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -0
  330. package/lib/typescript/src/web/variants/getVariants.d.ts +3 -0
  331. package/lib/typescript/src/web/variants/getVariants.d.ts.map +1 -0
  332. package/lib/typescript/src/web/variants/index.d.ts +3 -0
  333. package/lib/typescript/src/web/variants/index.d.ts.map +1 -0
  334. package/lib/typescript/src/web/variants/useVariants.d.ts +3 -0
  335. package/lib/typescript/src/web/variants/useVariants.d.ts.map +1 -0
  336. package/nitrogen/generated/android/c++/JColorScheme.hpp +1 -1
  337. package/nitrogen/generated/android/c++/JFunc_void.hpp +48 -0
  338. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency_.hpp +8 -8
  339. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +31 -22
  340. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +8 -3
  341. package/nitrogen/generated/android/c++/JOrientation.hpp +1 -1
  342. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +4 -1
  343. package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +9 -7
  344. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void.kt +45 -0
  345. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +25 -5
  346. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +2 -1
  347. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +2 -1
  348. package/nitrogen/generated/android/unistyles+autolinking.cmake +13 -1
  349. package/nitrogen/generated/android/{UnistylesOnLoad.cpp → unistylesOnLoad.cpp} +4 -2
  350. package/nitrogen/generated/android/{UnistylesOnLoad.hpp → unistylesOnLoad.hpp} +1 -1
  351. package/nitrogen/generated/ios/Unistyles+autolinking.rb +5 -3
  352. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +25 -0
  353. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +53 -31
  354. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +0 -29
  355. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +7 -1
  356. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +3 -13
  357. package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +167 -104
  358. package/nitrogen/generated/ios/swift/UnistyleDependency.swift +4 -0
  359. package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +16 -5
  360. package/nitrogen/generated/shared/c++/ColorScheme.hpp +2 -2
  361. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +2 -0
  362. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +5 -0
  363. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +3 -0
  364. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +3 -0
  365. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +3 -0
  366. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +3 -0
  367. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +2 -1
  368. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +10 -4
  369. package/nitrogen/generated/shared/c++/Orientation.hpp +2 -2
  370. package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -1
  371. package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +10 -9
  372. package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +9 -8
  373. package/package.json +18 -30
  374. package/plugin/common.js +12 -1
  375. package/plugin/index.js +110 -23
  376. package/plugin/ref.js +64 -13
  377. package/plugin/style.js +82 -22
  378. package/plugin/stylesheet.js +53 -3
  379. package/plugin/variants.js +33 -0
  380. package/src/common.js +4 -0
  381. package/src/core/createUnistylesComponent.js +6 -0
  382. package/src/core/createUnistylesComponent.native.js +31 -0
  383. package/src/core/createUnistylesComponent.native.tsx +44 -0
  384. package/src/core/createUnistylesComponent.tsx +10 -0
  385. package/src/core/index.js +3 -0
  386. package/src/core/index.ts +3 -0
  387. package/src/core/useBreakpoint.js +14 -0
  388. package/src/core/useBreakpoint.native.js +16 -0
  389. package/src/core/useBreakpoint.native.ts +21 -0
  390. package/src/core/useBreakpoint.ts +18 -0
  391. package/src/core/useTheme.js +14 -0
  392. package/src/core/useTheme.native.js +16 -0
  393. package/src/core/useTheme.native.ts +22 -0
  394. package/src/core/useTheme.ts +19 -0
  395. package/src/global.js +1 -0
  396. package/src/index.js +3 -0
  397. package/src/index.ts +2 -12
  398. package/src/mq.js +38 -0
  399. package/src/specs/NativePlatform/NativePlatform.nitro.js +19 -0
  400. package/src/specs/NativePlatform/NativePlatform.nitro.ts +7 -3
  401. package/src/specs/NativePlatform/index.js +1 -0
  402. package/src/specs/NavigtionBar/UnistylesNavigationBar.nitro.js +1 -0
  403. package/src/specs/NavigtionBar/index.js +9 -0
  404. package/src/specs/NavigtionBar/index.ts +6 -1
  405. package/src/specs/ShadowRegistry/ShadowRegistry.nitro.js +1 -0
  406. package/src/specs/ShadowRegistry/index.js +26 -0
  407. package/src/specs/ShadowRegistry/index.ts +10 -9
  408. package/src/specs/ShadowRegistry/types.js +1 -0
  409. package/src/specs/StatusBar/UnistylesStatusBar.nitro.js +1 -0
  410. package/src/specs/StatusBar/index.js +25 -0
  411. package/src/specs/StatusBar/index.ts +6 -1
  412. package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.js +1 -0
  413. package/src/specs/StyleSheet/UnistylesStyleSheet.nitro.ts +4 -1
  414. package/src/specs/StyleSheet/index.js +13 -0
  415. package/src/specs/StyleSheet/index.ts +6 -1
  416. package/src/specs/TurboUnistyles/NativeTurboUnistyles.js +2 -0
  417. package/src/specs/TurboUnistyles/index.js +1 -0
  418. package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.js +1 -0
  419. package/src/specs/UnistylesRuntime/UnistylesRuntime.nitro.ts +0 -1
  420. package/src/specs/UnistylesRuntime/index.js +20 -0
  421. package/src/specs/UnistylesRuntime/index.ts +4 -2
  422. package/src/specs/index.js +8 -0
  423. package/src/specs/index.ts +6 -2
  424. package/src/specs/index.web.js +2 -0
  425. package/src/specs/index.web.ts +1 -1
  426. package/src/specs/types.js +17 -0
  427. package/src/types/accessibility.js +30 -0
  428. package/src/types/breakpoints.js +1 -0
  429. package/src/types/breakpoints.ts +25 -13
  430. package/src/types/common.js +1 -0
  431. package/src/types/core.js +1 -0
  432. package/src/types/index.js +1 -0
  433. package/src/types/index.ts +1 -1
  434. package/src/types/stylesheet.js +2 -0
  435. package/src/types/stylesheet.ts +7 -5
  436. package/src/types/variants.js +1 -0
  437. package/src/types/variants.ts +7 -1
  438. package/src/web/convert/boxShadow.js +59 -0
  439. package/{web → src/web}/convert/boxShadow.ts +14 -15
  440. package/src/web/convert/index.js +56 -0
  441. package/{web → src/web}/convert/index.ts +8 -15
  442. package/src/web/convert/pseudo.js +131 -0
  443. package/src/web/convert/pseudo.ts +137 -0
  444. package/src/web/convert/shadow.js +50 -0
  445. package/src/web/convert/style.js +137 -0
  446. package/{web → src/web}/convert/style.ts +61 -10
  447. package/src/web/convert/textShadow.js +56 -0
  448. package/{web → src/web}/convert/textShadow.ts +13 -14
  449. package/src/web/convert/transform.js +65 -0
  450. package/{web → src/web}/convert/transform.ts +7 -8
  451. package/src/web/convert/types.js +2 -0
  452. package/{web → src/web}/convert/types.ts +1 -1
  453. package/src/web/convert/utils.js +39 -0
  454. package/src/web/create.js +36 -0
  455. package/src/web/create.ts +47 -0
  456. package/src/web/index.js +22 -0
  457. package/{web → src/web}/index.ts +3 -2
  458. package/src/web/listener.js +26 -0
  459. package/{web/listener → src/web}/listener.ts +3 -3
  460. package/src/web/mock.js +21 -0
  461. package/{web → src/web}/mock.ts +2 -12
  462. package/src/web/mq.js +14 -0
  463. package/{web → src/web}/mq.ts +1 -3
  464. package/src/web/registry.js +165 -0
  465. package/src/web/registry.ts +236 -0
  466. package/src/web/runtime.js +160 -0
  467. package/{web → src/web}/runtime.ts +21 -18
  468. package/src/web/shadowRegistry.js +96 -0
  469. package/src/web/shadowRegistry.ts +121 -0
  470. package/src/web/state.js +68 -0
  471. package/src/web/state.ts +94 -0
  472. package/src/web/utils/common.js +79 -0
  473. package/{web/utils.ts → src/web/utils/common.ts} +48 -36
  474. package/src/web/utils/index.js +2 -0
  475. package/src/web/utils/index.ts +2 -0
  476. package/src/web/utils/unistyle.js +72 -0
  477. package/src/web/utils/unistyle.ts +104 -0
  478. package/src/web/variants/getVariants.js +26 -0
  479. package/src/web/variants/getVariants.ts +42 -0
  480. package/src/web/variants/index.js +2 -0
  481. package/src/web/variants/index.ts +2 -0
  482. package/src/web/variants/useVariants.js +50 -0
  483. package/src/web/variants/useVariants.ts +65 -0
  484. package/lib/typescript/example/App.d.ts +0 -4
  485. package/lib/typescript/example/App.d.ts.map +0 -1
  486. package/lib/typescript/example/unistyles.d.ts +0 -63
  487. package/lib/typescript/example/unistyles.d.ts.map +0 -1
  488. package/lib/typescript/expo-example/App.d.ts +0 -4
  489. package/lib/typescript/expo-example/App.d.ts.map +0 -1
  490. package/lib/typescript/expo-example/unistyles.d.ts +0 -63
  491. package/lib/typescript/expo-example/unistyles.d.ts.map +0 -1
  492. package/lib/typescript/web/convert/boxShadow.d.ts +0 -3
  493. package/lib/typescript/web/convert/boxShadow.d.ts.map +0 -1
  494. package/lib/typescript/web/convert/breakpoint.d.ts +0 -3
  495. package/lib/typescript/web/convert/breakpoint.d.ts.map +0 -1
  496. package/lib/typescript/web/convert/index.d.ts +0 -4
  497. package/lib/typescript/web/convert/index.d.ts.map +0 -1
  498. package/lib/typescript/web/convert/shadow.d.ts.map +0 -1
  499. package/lib/typescript/web/convert/style.d.ts +0 -3
  500. package/lib/typescript/web/convert/style.d.ts.map +0 -1
  501. package/lib/typescript/web/convert/textShadow.d.ts +0 -3
  502. package/lib/typescript/web/convert/textShadow.d.ts.map +0 -1
  503. package/lib/typescript/web/convert/transform.d.ts +0 -5
  504. package/lib/typescript/web/convert/transform.d.ts.map +0 -1
  505. package/lib/typescript/web/convert/types.d.ts.map +0 -1
  506. package/lib/typescript/web/convert/utils.d.ts.map +0 -1
  507. package/lib/typescript/web/create.d.ts +0 -2449
  508. package/lib/typescript/web/index.d.ts +0 -2464
  509. package/lib/typescript/web/listener/index.d.ts +0 -2
  510. package/lib/typescript/web/listener/index.d.ts.map +0 -1
  511. package/lib/typescript/web/listener/listener.d.ts.map +0 -1
  512. package/lib/typescript/web/mock.d.ts +0 -14
  513. package/lib/typescript/web/mock.d.ts.map +0 -1
  514. package/lib/typescript/web/mq.d.ts +0 -4
  515. package/lib/typescript/web/mq.d.ts.map +0 -1
  516. package/lib/typescript/web/pseudo.d.ts +0 -4
  517. package/lib/typescript/web/pseudo.d.ts.map +0 -1
  518. package/lib/typescript/web/registry.d.ts +0 -12
  519. package/lib/typescript/web/registry.d.ts.map +0 -1
  520. package/lib/typescript/web/runtime.d.ts.map +0 -1
  521. package/lib/typescript/web/state.d.ts +0 -24
  522. package/lib/typescript/web/state.d.ts.map +0 -1
  523. package/lib/typescript/web/useVariants.d.ts +0 -3
  524. package/lib/typescript/web/useVariants.d.ts.map +0 -1
  525. package/lib/typescript/web/utils.d.ts.map +0 -1
  526. package/plugin/__tests__/dependencies.spec.js +0 -360
  527. package/plugin/__tests__/ref.spec.js +0 -991
  528. package/plugin/__tests__/stylesheet.spec.js +0 -396
  529. package/web/convert/breakpoint.ts +0 -21
  530. package/web/create.ts +0 -102
  531. package/web/listener/index.ts +0 -1
  532. package/web/pseudo.ts +0 -11
  533. package/web/registry.ts +0 -41
  534. package/web/state.ts +0 -148
  535. package/web/useVariants.ts +0 -99
  536. /package/lib/typescript/{web → src/web}/convert/shadow.d.ts +0 -0
  537. /package/lib/typescript/{web → src/web}/convert/utils.d.ts +0 -0
  538. /package/nitrogen/generated/android/{UnistylesOnLoad.kt → unistylesOnLoad.kt} +0 -0
  539. /package/{web → src/web}/convert/module.d.ts +0 -0
  540. /package/{web → src/web}/convert/shadow.ts +0 -0
  541. /package/{web → src/web}/convert/utils.ts +0 -0
@@ -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()