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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/README.md +18 -3
  2. package/android/src/main/cxx/NativeUnistylesModule.cpp +2 -2
  3. package/android/src/main/cxx/NativeUnistylesModule.h +1 -1
  4. package/android/src/main/java/com/unistyles/NativePlatform+android.kt +1 -2
  5. package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +4 -0
  6. package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +2 -1
  7. package/android/src/main/java/com/unistyles/UnistylesModule.kt +0 -4
  8. package/android/src/main/java/com/unistyles/UnistylesPackage.kt +6 -6
  9. package/components/native/ActivityIndicator/package.json +2 -1
  10. package/components/native/Animated/package.json +5 -0
  11. package/components/native/FlatList/package.json +2 -1
  12. package/components/native/Image/package.json +2 -1
  13. package/components/native/ImageBackground/package.json +2 -1
  14. package/components/native/KeyboardAvoidingView/package.json +2 -1
  15. package/components/native/NativeText/package.json +5 -0
  16. package/components/native/NativeView/package.json +5 -0
  17. package/components/native/Pressable/package.json +1 -1
  18. package/components/native/RefreshControl/package.json +2 -1
  19. package/components/native/ScrollView/package.json +2 -1
  20. package/components/native/SectionList/package.json +2 -1
  21. package/components/native/Switch/package.json +2 -1
  22. package/components/native/Text/package.json +2 -1
  23. package/components/native/TextInput/package.json +2 -1
  24. package/components/native/TouchableHighlight/package.json +2 -1
  25. package/components/native/TouchableOpacity/package.json +2 -1
  26. package/components/native/View/package.json +2 -1
  27. package/components/native/VirtualizedList/package.json +2 -1
  28. package/cxx/common/Constants.h +4 -4
  29. package/cxx/common/Helpers.h +1 -1
  30. package/cxx/core/HashGenerator.cpp +23 -0
  31. package/cxx/core/HashGenerator.h +13 -0
  32. package/cxx/core/HostUnistyle.cpp +83 -0
  33. package/cxx/core/HostUnistyle.h +27 -0
  34. package/cxx/core/RNStyle.h +18 -0
  35. package/cxx/core/Unistyle.h +13 -4
  36. package/cxx/core/UnistyleWrapper.h +92 -47
  37. package/cxx/core/UnistylesRegistry.cpp +40 -11
  38. package/cxx/core/UnistylesRegistry.h +5 -4
  39. package/cxx/hybridObjects/HybridNavigationBar.cpp +3 -3
  40. package/cxx/hybridObjects/HybridNavigationBar.h +2 -2
  41. package/cxx/hybridObjects/HybridShadowRegistry.cpp +39 -45
  42. package/cxx/hybridObjects/HybridShadowRegistry.h +0 -10
  43. package/cxx/hybridObjects/HybridStatusBar.cpp +3 -3
  44. package/cxx/hybridObjects/HybridStatusBar.h +2 -2
  45. package/cxx/hybridObjects/HybridStyleSheet.cpp +52 -10
  46. package/cxx/hybridObjects/HybridStyleSheet.h +2 -1
  47. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +15 -15
  48. package/cxx/hybridObjects/HybridUnistylesRuntime.h +2 -2
  49. package/cxx/parser/Parser.cpp +26 -27
  50. package/cxx/parser/Parser.h +2 -1
  51. package/ios/NativePlatform+ios.swift +21 -11
  52. package/ios/NativePlatform.swift +2 -2
  53. package/ios/UnistylesModuleOnLoad.h +4 -4
  54. package/ios/UnistylesModuleOnLoad.mm +5 -8
  55. package/lib/commonjs/components/ScopedTheme.js.map +1 -1
  56. package/lib/commonjs/components/index.js +0 -7
  57. package/lib/commonjs/components/index.js.map +1 -1
  58. package/lib/commonjs/components/native/Animated.js +23 -0
  59. package/lib/commonjs/components/native/Animated.js.map +1 -0
  60. package/lib/commonjs/components/native/ImageBackground.js +47 -1
  61. package/lib/commonjs/components/native/ImageBackground.js.map +1 -1
  62. package/lib/commonjs/components/native/ImageBackground.native.js +10 -0
  63. package/lib/commonjs/components/native/ImageBackground.native.js.map +1 -0
  64. package/lib/commonjs/components/native/NativeText.js +13 -0
  65. package/lib/commonjs/components/native/NativeText.js.map +1 -0
  66. package/lib/commonjs/components/native/NativeText.native.js +18 -0
  67. package/lib/commonjs/components/native/NativeText.native.js.map +1 -0
  68. package/lib/commonjs/components/native/NativeView.js +9 -0
  69. package/lib/commonjs/components/native/NativeView.js.map +1 -0
  70. package/lib/commonjs/components/native/NativeView.native.js +20 -0
  71. package/lib/commonjs/components/native/NativeView.native.js.map +1 -0
  72. package/lib/commonjs/components/native/Pressable.js +26 -51
  73. package/lib/commonjs/components/native/Pressable.js.map +1 -1
  74. package/lib/commonjs/components/native/Pressable.native.js +25 -9
  75. package/lib/commonjs/components/native/Pressable.native.js.map +1 -1
  76. package/lib/commonjs/core/createUnistylesElement.js +33 -5
  77. package/lib/commonjs/core/createUnistylesElement.js.map +1 -1
  78. package/lib/commonjs/core/createUnistylesElement.native.js +54 -0
  79. package/lib/commonjs/core/createUnistylesElement.native.js.map +1 -0
  80. package/lib/commonjs/core/createUnistylesImageBackground.js +41 -15
  81. package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
  82. package/lib/commonjs/core/getClassname.js +23 -0
  83. package/lib/commonjs/core/getClassname.js.map +1 -0
  84. package/lib/commonjs/core/getClassname.native.js +9 -0
  85. package/lib/commonjs/core/getClassname.native.js.map +1 -0
  86. package/lib/commonjs/core/index.js +14 -7
  87. package/lib/commonjs/core/index.js.map +1 -1
  88. package/lib/commonjs/core/passForwardRef.js +2 -2
  89. package/lib/commonjs/core/passForwardRef.js.map +1 -1
  90. package/lib/commonjs/core/useProxifiedUnistyles/index.js +13 -0
  91. package/lib/commonjs/core/useProxifiedUnistyles/index.js.map +1 -0
  92. package/lib/commonjs/core/useProxifiedUnistyles/listener.js +22 -0
  93. package/lib/commonjs/core/useProxifiedUnistyles/listener.js.map +1 -0
  94. package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js +26 -0
  95. package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js.map +1 -0
  96. package/lib/commonjs/core/useProxifiedUnistyles/types.js +6 -0
  97. package/lib/commonjs/core/useProxifiedUnistyles/types.js.map +1 -0
  98. package/lib/commonjs/core/{withUnistyles/useDependencies.js → useProxifiedUnistyles/useProxifiedUnistyles.js} +22 -22
  99. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -0
  100. package/lib/commonjs/core/useUnistyles.js +19 -0
  101. package/lib/commonjs/core/useUnistyles.js.map +1 -0
  102. package/lib/commonjs/core/warn.js +16 -0
  103. package/lib/commonjs/core/warn.js.map +1 -0
  104. package/lib/commonjs/core/withUnistyles/withUnistyles.js +19 -55
  105. package/lib/commonjs/core/withUnistyles/withUnistyles.js.map +1 -1
  106. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js +32 -65
  107. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js.map +1 -1
  108. package/lib/commonjs/index.js +23 -4
  109. package/lib/commonjs/index.js.map +1 -1
  110. package/lib/commonjs/server/getServerUnistyles.js +40 -0
  111. package/lib/commonjs/server/getServerUnistyles.js.map +1 -0
  112. package/lib/commonjs/server/hydrateServerUnistyles.js +17 -0
  113. package/lib/commonjs/server/hydrateServerUnistyles.js.map +1 -0
  114. package/lib/commonjs/server/index.js +34 -0
  115. package/lib/commonjs/server/index.js.map +1 -0
  116. package/lib/commonjs/server/resetServerUnistyles.js +16 -0
  117. package/lib/commonjs/server/resetServerUnistyles.js.map +1 -0
  118. package/lib/commonjs/server/types.js +8 -0
  119. package/lib/commonjs/server/types.js.map +1 -0
  120. package/lib/commonjs/server/useServerUnistyles.js +27 -0
  121. package/lib/commonjs/server/useServerUnistyles.js.map +1 -0
  122. package/lib/commonjs/specs/ShadowRegistry/index.js +6 -3
  123. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  124. package/lib/commonjs/specs/StyleSheet/index.js.map +1 -1
  125. package/lib/commonjs/utils.js +19 -2
  126. package/lib/commonjs/utils.js.map +1 -1
  127. package/lib/commonjs/web/convert/object/filter.js +2 -2
  128. package/lib/commonjs/web/convert/object/filter.js.map +1 -1
  129. package/lib/commonjs/web/convert/style.js +4 -4
  130. package/lib/commonjs/web/convert/style.js.map +1 -1
  131. package/lib/commonjs/web/create.js +20 -15
  132. package/lib/commonjs/web/create.js.map +1 -1
  133. package/lib/commonjs/web/css/core.js +55 -0
  134. package/lib/commonjs/web/css/core.js.map +1 -0
  135. package/lib/commonjs/web/css/index.js +17 -0
  136. package/lib/commonjs/web/css/index.js.map +1 -0
  137. package/lib/commonjs/web/css/state.js +155 -0
  138. package/lib/commonjs/web/css/state.js.map +1 -0
  139. package/lib/commonjs/web/css/utils.js +47 -0
  140. package/lib/commonjs/web/css/utils.js.map +1 -0
  141. package/lib/commonjs/web/index.js +14 -18
  142. package/lib/commonjs/web/index.js.map +1 -1
  143. package/lib/commonjs/web/listener.js +9 -7
  144. package/lib/commonjs/web/listener.js.map +1 -1
  145. package/lib/commonjs/web/registry.js +44 -123
  146. package/lib/commonjs/web/registry.js.map +1 -1
  147. package/lib/commonjs/web/runtime.js +28 -21
  148. package/lib/commonjs/web/runtime.js.map +1 -1
  149. package/lib/commonjs/web/services.js +28 -0
  150. package/lib/commonjs/web/services.js.map +1 -0
  151. package/lib/commonjs/web/shadowRegistry.js +46 -93
  152. package/lib/commonjs/web/shadowRegistry.js.map +1 -1
  153. package/lib/commonjs/web/state.js +39 -9
  154. package/lib/commonjs/web/state.js.map +1 -1
  155. package/lib/commonjs/web/types.js +6 -0
  156. package/lib/commonjs/web/types.js.map +1 -0
  157. package/lib/commonjs/web/utils/common.js +29 -9
  158. package/lib/commonjs/web/utils/common.js.map +1 -1
  159. package/lib/commonjs/web/utils/unistyle.js +32 -19
  160. package/lib/commonjs/web/utils/unistyle.js.map +1 -1
  161. package/lib/commonjs/web/variants.js +25 -27
  162. package/lib/commonjs/web/variants.js.map +1 -1
  163. package/lib/module/components/ScopedTheme.js.map +1 -1
  164. package/lib/module/components/index.js +0 -1
  165. package/lib/module/components/index.js.map +1 -1
  166. package/lib/module/components/native/Animated.js +19 -0
  167. package/lib/module/components/native/Animated.js.map +1 -0
  168. package/lib/module/components/native/ImageBackground.js +47 -2
  169. package/lib/module/components/native/ImageBackground.js.map +1 -1
  170. package/lib/module/components/native/ImageBackground.native.js +6 -0
  171. package/lib/module/components/native/ImageBackground.native.js.map +1 -0
  172. package/lib/module/components/native/NativeText.js +4 -0
  173. package/lib/module/components/native/NativeText.js.map +1 -0
  174. package/lib/module/components/native/NativeText.native.js +15 -0
  175. package/lib/module/components/native/NativeText.native.js.map +1 -0
  176. package/lib/module/components/native/NativeView.js +5 -0
  177. package/lib/module/components/native/NativeView.js.map +1 -0
  178. package/lib/module/components/native/NativeView.native.js +17 -0
  179. package/lib/module/components/native/NativeView.native.js.map +1 -0
  180. package/lib/module/components/native/Pressable.js +27 -52
  181. package/lib/module/components/native/Pressable.js.map +1 -1
  182. package/lib/module/components/native/Pressable.native.js +26 -10
  183. package/lib/module/components/native/Pressable.native.js.map +1 -1
  184. package/lib/module/core/createUnistylesElement.js +33 -5
  185. package/lib/module/core/createUnistylesElement.js.map +1 -1
  186. package/lib/module/core/createUnistylesElement.native.js +47 -0
  187. package/lib/module/core/createUnistylesElement.native.js.map +1 -0
  188. package/lib/module/core/createUnistylesImageBackground.js +39 -14
  189. package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
  190. package/lib/module/core/getClassname.js +18 -0
  191. package/lib/module/core/getClassname.js.map +1 -0
  192. package/lib/module/core/getClassname.native.js +4 -0
  193. package/lib/module/core/getClassname.native.js.map +1 -0
  194. package/lib/module/core/index.js +2 -1
  195. package/lib/module/core/index.js.map +1 -1
  196. package/lib/module/core/passForwardRef.js +2 -2
  197. package/lib/module/core/passForwardRef.js.map +1 -1
  198. package/lib/module/core/useProxifiedUnistyles/index.js +4 -0
  199. package/lib/module/core/useProxifiedUnistyles/index.js.map +1 -0
  200. package/lib/module/core/useProxifiedUnistyles/listener.js +17 -0
  201. package/lib/module/core/useProxifiedUnistyles/listener.js.map +1 -0
  202. package/lib/module/core/useProxifiedUnistyles/listener.native.js +21 -0
  203. package/lib/module/core/useProxifiedUnistyles/listener.native.js.map +1 -0
  204. package/lib/module/core/useProxifiedUnistyles/types.js +4 -0
  205. package/lib/module/core/useProxifiedUnistyles/types.js.map +1 -0
  206. package/lib/module/core/{withUnistyles/useDependencies.js → useProxifiedUnistyles/useProxifiedUnistyles.js} +19 -19
  207. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -0
  208. package/lib/module/core/useUnistyles.js +14 -0
  209. package/lib/module/core/useUnistyles.js.map +1 -0
  210. package/lib/module/core/warn.js +11 -0
  211. package/lib/module/core/warn.js.map +1 -0
  212. package/lib/module/core/withUnistyles/withUnistyles.js +19 -55
  213. package/lib/module/core/withUnistyles/withUnistyles.js.map +1 -1
  214. package/lib/module/core/withUnistyles/withUnistyles.native.js +33 -66
  215. package/lib/module/core/withUnistyles/withUnistyles.native.js.map +1 -1
  216. package/lib/module/index.js +3 -2
  217. package/lib/module/index.js.map +1 -1
  218. package/lib/module/server/getServerUnistyles.js +34 -0
  219. package/lib/module/server/getServerUnistyles.js.map +1 -0
  220. package/lib/module/server/hydrateServerUnistyles.js +12 -0
  221. package/lib/module/server/hydrateServerUnistyles.js.map +1 -0
  222. package/lib/module/server/index.js +7 -0
  223. package/lib/module/server/index.js.map +1 -0
  224. package/lib/module/server/resetServerUnistyles.js +11 -0
  225. package/lib/module/server/resetServerUnistyles.js.map +1 -0
  226. package/lib/module/server/types.js +4 -0
  227. package/lib/module/server/types.js.map +1 -0
  228. package/lib/module/server/useServerUnistyles.js +22 -0
  229. package/lib/module/server/useServerUnistyles.js.map +1 -0
  230. package/lib/module/specs/ShadowRegistry/index.js +6 -3
  231. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  232. package/lib/module/specs/StyleSheet/index.js.map +1 -1
  233. package/lib/module/utils.js +16 -1
  234. package/lib/module/utils.js.map +1 -1
  235. package/lib/module/web/convert/object/filter.js +2 -2
  236. package/lib/module/web/convert/object/filter.js.map +1 -1
  237. package/lib/module/web/convert/style.js +4 -4
  238. package/lib/module/web/convert/style.js.map +1 -1
  239. package/lib/module/web/create.js +20 -15
  240. package/lib/module/web/create.js.map +1 -1
  241. package/lib/module/web/css/core.js +50 -0
  242. package/lib/module/web/css/core.js.map +1 -0
  243. package/lib/module/web/css/index.js +4 -0
  244. package/lib/module/web/css/index.js.map +1 -0
  245. package/lib/module/web/css/state.js +150 -0
  246. package/lib/module/web/css/state.js.map +1 -0
  247. package/lib/module/web/css/utils.js +41 -0
  248. package/lib/module/web/css/utils.js.map +1 -0
  249. package/lib/module/web/index.js +10 -5
  250. package/lib/module/web/index.js.map +1 -1
  251. package/lib/module/web/listener.js +8 -7
  252. package/lib/module/web/listener.js.map +1 -1
  253. package/lib/module/web/registry.js +44 -124
  254. package/lib/module/web/registry.js.map +1 -1
  255. package/lib/module/web/runtime.js +27 -21
  256. package/lib/module/web/runtime.js.map +1 -1
  257. package/lib/module/web/services.js +23 -0
  258. package/lib/module/web/services.js.map +1 -0
  259. package/lib/module/web/shadowRegistry.js +46 -94
  260. package/lib/module/web/shadowRegistry.js.map +1 -1
  261. package/lib/module/web/state.js +39 -10
  262. package/lib/module/web/state.js.map +1 -1
  263. package/lib/module/web/types.js +4 -0
  264. package/lib/module/web/types.js.map +1 -0
  265. package/lib/module/web/utils/common.js +26 -7
  266. package/lib/module/web/utils/common.js.map +1 -1
  267. package/lib/module/web/utils/unistyle.js +31 -17
  268. package/lib/module/web/utils/unistyle.js.map +1 -1
  269. package/lib/module/web/variants.js +25 -27
  270. package/lib/module/web/variants.js.map +1 -1
  271. package/lib/typescript/src/components/index.d.ts +0 -1
  272. package/lib/typescript/src/components/index.d.ts.map +1 -1
  273. package/lib/typescript/src/components/native/ActivityIndicator.d.ts +1 -1
  274. package/lib/typescript/src/components/native/ActivityIndicator.d.ts.map +1 -1
  275. package/lib/typescript/src/components/native/Animated.d.ts +39 -0
  276. package/lib/typescript/src/components/native/Animated.d.ts.map +1 -0
  277. package/lib/typescript/src/components/native/FlatList.d.ts +1 -1
  278. package/lib/typescript/src/components/native/FlatList.d.ts.map +1 -1
  279. package/lib/typescript/src/components/native/Image.d.ts +1 -1
  280. package/lib/typescript/src/components/native/Image.d.ts.map +1 -1
  281. package/lib/typescript/src/components/native/ImageBackground.d.ts +1 -2
  282. package/lib/typescript/src/components/native/ImageBackground.d.ts.map +1 -1
  283. package/lib/typescript/src/components/native/ImageBackground.native.d.ts +2 -0
  284. package/lib/typescript/src/components/native/ImageBackground.native.d.ts.map +1 -0
  285. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts +1 -1
  286. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts.map +1 -1
  287. package/lib/typescript/src/components/native/NativeText.d.ts +2 -0
  288. package/lib/typescript/src/components/native/NativeText.d.ts.map +1 -0
  289. package/lib/typescript/src/components/native/NativeText.native.d.ts +2 -0
  290. package/lib/typescript/src/components/native/NativeText.native.d.ts.map +1 -0
  291. package/lib/typescript/src/components/native/NativeView.d.ts +3 -0
  292. package/lib/typescript/src/components/native/NativeView.d.ts.map +1 -0
  293. package/lib/typescript/src/components/native/NativeView.native.d.ts +3 -0
  294. package/lib/typescript/src/components/native/NativeView.native.d.ts.map +1 -0
  295. package/lib/typescript/src/components/native/Pressable.d.ts +3 -2
  296. package/lib/typescript/src/components/native/Pressable.d.ts.map +1 -1
  297. package/lib/typescript/src/components/native/Pressable.native.d.ts.map +1 -1
  298. package/lib/typescript/src/components/native/RefreshControl.d.ts +1 -1
  299. package/lib/typescript/src/components/native/RefreshControl.d.ts.map +1 -1
  300. package/lib/typescript/src/components/native/ScrollView.d.ts +1 -1
  301. package/lib/typescript/src/components/native/ScrollView.d.ts.map +1 -1
  302. package/lib/typescript/src/components/native/SectionList.d.ts +1 -1
  303. package/lib/typescript/src/components/native/SectionList.d.ts.map +1 -1
  304. package/lib/typescript/src/components/native/Switch.d.ts +1 -1
  305. package/lib/typescript/src/components/native/Switch.d.ts.map +1 -1
  306. package/lib/typescript/src/components/native/Text.d.ts +1 -1
  307. package/lib/typescript/src/components/native/Text.d.ts.map +1 -1
  308. package/lib/typescript/src/components/native/TextInput.d.ts +1 -1
  309. package/lib/typescript/src/components/native/TextInput.d.ts.map +1 -1
  310. package/lib/typescript/src/components/native/TouchableHighlight.d.ts +1 -1
  311. package/lib/typescript/src/components/native/TouchableHighlight.d.ts.map +1 -1
  312. package/lib/typescript/src/components/native/TouchableOpacity.d.ts +1 -1
  313. package/lib/typescript/src/components/native/TouchableOpacity.d.ts.map +1 -1
  314. package/lib/typescript/src/components/native/View.d.ts +1 -1
  315. package/lib/typescript/src/components/native/View.d.ts.map +1 -1
  316. package/lib/typescript/src/components/native/VirtualizedList.d.ts +1 -1
  317. package/lib/typescript/src/components/native/VirtualizedList.d.ts.map +1 -1
  318. package/lib/typescript/src/core/createUnistylesElement.d.ts +1 -2
  319. package/lib/typescript/src/core/createUnistylesElement.d.ts.map +1 -1
  320. package/lib/typescript/src/core/createUnistylesElement.native.d.ts +2 -0
  321. package/lib/typescript/src/core/createUnistylesElement.native.d.ts.map +1 -0
  322. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts +2 -3
  323. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
  324. package/lib/typescript/src/core/getClassname.d.ts +7 -0
  325. package/lib/typescript/src/core/getClassname.d.ts.map +1 -0
  326. package/lib/typescript/src/core/getClassname.native.d.ts +2 -0
  327. package/lib/typescript/src/core/getClassname.native.d.ts.map +1 -0
  328. package/lib/typescript/src/core/index.d.ts +2 -1
  329. package/lib/typescript/src/core/index.d.ts.map +1 -1
  330. package/lib/typescript/src/core/passForwardRef.d.ts.map +1 -1
  331. package/lib/typescript/src/core/useProxifiedUnistyles/index.d.ts +2 -0
  332. package/lib/typescript/src/core/useProxifiedUnistyles/index.d.ts.map +1 -0
  333. package/lib/typescript/src/core/useProxifiedUnistyles/listener.d.ts +3 -0
  334. package/lib/typescript/src/core/useProxifiedUnistyles/listener.d.ts.map +1 -0
  335. package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts +3 -0
  336. package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts.map +1 -0
  337. package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts +7 -0
  338. package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts.map +1 -0
  339. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts +8 -0
  340. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -0
  341. package/lib/typescript/src/core/useUnistyles.d.ts +6 -0
  342. package/lib/typescript/src/core/useUnistyles.d.ts.map +1 -0
  343. package/lib/typescript/src/core/warn.d.ts +3 -0
  344. package/lib/typescript/src/core/warn.d.ts.map +1 -0
  345. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts +0 -3
  346. package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts.map +1 -1
  347. package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts.map +1 -1
  348. package/lib/typescript/src/index.d.ts +3 -2
  349. package/lib/typescript/src/index.d.ts.map +1 -1
  350. package/lib/typescript/src/server/getServerUnistyles.d.ts +4 -0
  351. package/lib/typescript/src/server/getServerUnistyles.d.ts.map +1 -0
  352. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts +8 -0
  353. package/lib/typescript/src/server/hydrateServerUnistyles.d.ts.map +1 -0
  354. package/lib/typescript/src/server/index.d.ts +5 -0
  355. package/lib/typescript/src/server/index.d.ts.map +1 -0
  356. package/lib/typescript/src/server/resetServerUnistyles.d.ts +2 -0
  357. package/lib/typescript/src/server/resetServerUnistyles.d.ts.map +1 -0
  358. package/lib/typescript/src/server/types.d.ts +5 -0
  359. package/lib/typescript/src/server/types.d.ts.map +1 -0
  360. package/lib/typescript/src/server/useServerUnistyles.d.ts +4 -0
  361. package/lib/typescript/src/server/useServerUnistyles.d.ts.map +1 -0
  362. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +0 -3
  363. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  364. package/lib/typescript/src/specs/StyleSheet/index.d.ts +5 -1
  365. package/lib/typescript/src/specs/StyleSheet/index.d.ts.map +1 -1
  366. package/lib/typescript/src/utils.d.ts +2 -0
  367. package/lib/typescript/src/utils.d.ts.map +1 -1
  368. package/lib/typescript/src/web/convert/style.d.ts.map +1 -1
  369. package/lib/typescript/src/web/create.d.ts.map +1 -1
  370. package/lib/typescript/src/web/css/core.d.ts +3 -0
  371. package/lib/typescript/src/web/css/core.d.ts.map +1 -0
  372. package/lib/typescript/src/web/css/index.d.ts +2 -0
  373. package/lib/typescript/src/web/css/index.d.ts.map +1 -0
  374. package/lib/typescript/src/web/css/state.d.ts +30 -0
  375. package/lib/typescript/src/web/css/state.d.ts.map +1 -0
  376. package/lib/typescript/src/web/css/utils.d.ts +4 -0
  377. package/lib/typescript/src/web/css/utils.d.ts.map +1 -0
  378. package/lib/typescript/src/web/index.d.ts +7 -1
  379. package/lib/typescript/src/web/index.d.ts.map +1 -1
  380. package/lib/typescript/src/web/listener.d.ts +4 -3
  381. package/lib/typescript/src/web/listener.d.ts.map +1 -1
  382. package/lib/typescript/src/web/registry.d.ts +11 -8
  383. package/lib/typescript/src/web/registry.d.ts.map +1 -1
  384. package/lib/typescript/src/web/runtime.d.ts +6 -4
  385. package/lib/typescript/src/web/runtime.d.ts.map +1 -1
  386. package/lib/typescript/src/web/services.d.ts +15 -0
  387. package/lib/typescript/src/web/services.d.ts.map +1 -0
  388. package/lib/typescript/src/web/shadowRegistry.d.ts +10 -13
  389. package/lib/typescript/src/web/shadowRegistry.d.ts.map +1 -1
  390. package/lib/typescript/src/web/state.d.ts +7 -3
  391. package/lib/typescript/src/web/state.d.ts.map +1 -1
  392. package/lib/typescript/src/web/types.d.ts +13 -0
  393. package/lib/typescript/src/web/types.d.ts.map +1 -0
  394. package/lib/typescript/src/web/utils/common.d.ts +2 -1
  395. package/lib/typescript/src/web/utils/common.d.ts.map +1 -1
  396. package/lib/typescript/src/web/utils/unistyle.d.ts +5 -4
  397. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
  398. package/lib/typescript/src/web/variants.d.ts +2 -2
  399. package/lib/typescript/src/web/variants.d.ts.map +1 -1
  400. package/nitrogen/generated/android/c++/JColorScheme.hpp +2 -1
  401. package/nitrogen/generated/android/c++/JDimensions.hpp +2 -1
  402. package/nitrogen/generated/android/c++/JFunc_void_UnistylesNativeMiniRuntime.hpp +36 -10
  403. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.hpp +53 -19
  404. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.cpp +5 -5
  405. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +1 -1
  406. package/nitrogen/generated/android/c++/JInsets.hpp +2 -1
  407. package/nitrogen/generated/android/c++/JOrientation.hpp +2 -1
  408. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +2 -1
  409. package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +2 -1
  410. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/ColorScheme.kt +1 -1
  411. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Dimensions.kt +10 -5
  412. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_UnistylesNativeMiniRuntime.kt +43 -14
  413. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.kt +43 -14
  414. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/HybridNativePlatformSpec.kt +10 -10
  415. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Insets.kt +13 -8
  416. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/Orientation.kt +1 -1
  417. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistyleDependency.kt +1 -1
  418. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unistyles/UnistylesNativeMiniRuntime.kt +19 -14
  419. package/nitrogen/generated/android/unistyles+autolinking.cmake +4 -1
  420. package/nitrogen/generated/android/unistyles+autolinking.gradle +1 -1
  421. package/nitrogen/generated/android/unistylesOnLoad.cpp +7 -3
  422. package/nitrogen/generated/android/unistylesOnLoad.hpp +1 -1
  423. package/nitrogen/generated/ios/Unistyles+autolinking.rb +1 -1
  424. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.cpp +21 -6
  425. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Bridge.hpp +105 -27
  426. package/nitrogen/generated/ios/Unistyles-Swift-Cxx-Umbrella.hpp +5 -3
  427. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.cpp +1 -1
  428. package/nitrogen/generated/ios/c++/HybridNativePlatformSpecSwift.hpp +92 -33
  429. package/nitrogen/generated/ios/swift/ColorScheme.swift +1 -1
  430. package/nitrogen/generated/ios/swift/Dimensions.swift +1 -1
  431. package/nitrogen/generated/ios/swift/Func_void_UnistylesNativeMiniRuntime.swift +46 -0
  432. package/nitrogen/generated/ios/swift/Func_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.swift +46 -0
  433. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec.swift +36 -23
  434. package/nitrogen/generated/ios/swift/HybridNativePlatformSpec_cxx.swift +327 -0
  435. package/nitrogen/generated/ios/swift/Insets.swift +1 -1
  436. package/nitrogen/generated/ios/swift/Orientation.swift +1 -1
  437. package/nitrogen/generated/ios/swift/UnistyleDependency.swift +1 -1
  438. package/nitrogen/generated/ios/swift/UnistylesNativeMiniRuntime.swift +1 -1
  439. package/nitrogen/generated/shared/c++/ColorScheme.hpp +1 -1
  440. package/nitrogen/generated/shared/c++/Dimensions.hpp +1 -1
  441. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.cpp +1 -1
  442. package/nitrogen/generated/shared/c++/HybridNativePlatformSpec.hpp +1 -1
  443. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.cpp +1 -1
  444. package/nitrogen/generated/shared/c++/HybridUnistylesNavigationBarSpec.hpp +1 -1
  445. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.cpp +1 -1
  446. package/nitrogen/generated/shared/c++/HybridUnistylesRuntimeSpec.hpp +1 -1
  447. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.cpp +1 -1
  448. package/nitrogen/generated/shared/c++/HybridUnistylesShadowRegistrySpec.hpp +1 -1
  449. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.cpp +1 -1
  450. package/nitrogen/generated/shared/c++/HybridUnistylesStatusBarSpec.hpp +1 -1
  451. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.cpp +1 -1
  452. package/nitrogen/generated/shared/c++/HybridUnistylesStyleSheetSpec.hpp +1 -1
  453. package/nitrogen/generated/shared/c++/Insets.hpp +1 -1
  454. package/nitrogen/generated/shared/c++/Orientation.hpp +1 -1
  455. package/nitrogen/generated/shared/c++/UnistyleDependency.hpp +2 -2
  456. package/nitrogen/generated/shared/c++/UnistylesCxxMiniRuntime.hpp +1 -1
  457. package/nitrogen/generated/shared/c++/UnistylesNativeMiniRuntime.hpp +1 -1
  458. package/package.json +23 -14
  459. package/plugin/consts.js +63 -0
  460. package/plugin/exotic.js +54 -0
  461. package/plugin/import.js +1 -21
  462. package/plugin/index.d.ts +89 -0
  463. package/plugin/index.js +58 -96
  464. package/plugin/stylesheet.js +28 -1
  465. package/plugin/variants.js +49 -75
  466. package/src/components/ScopedTheme.tsx +1 -1
  467. package/src/components/index.ts +0 -1
  468. package/src/components/native/Animated.tsx +17 -0
  469. package/src/components/native/ImageBackground.native.tsx +4 -0
  470. package/src/components/native/ImageBackground.tsx +57 -2
  471. package/src/components/native/NativeText.native.tsx +12 -0
  472. package/src/components/native/NativeText.tsx +1 -0
  473. package/src/components/native/NativeView.native.tsx +13 -0
  474. package/src/components/native/NativeView.tsx +3 -0
  475. package/src/components/native/Pressable.native.tsx +32 -15
  476. package/src/components/native/Pressable.tsx +35 -69
  477. package/src/core/createUnistylesElement.native.tsx +51 -0
  478. package/src/core/createUnistylesElement.tsx +47 -8
  479. package/src/core/createUnistylesImageBackground.tsx +44 -18
  480. package/src/core/getClassname.native.ts +1 -0
  481. package/src/core/getClassname.ts +14 -0
  482. package/src/core/index.ts +2 -1
  483. package/src/core/passForwardRef.ts +1 -2
  484. package/src/core/useProxifiedUnistyles/index.ts +1 -0
  485. package/src/core/useProxifiedUnistyles/listener.native.ts +18 -0
  486. package/src/core/useProxifiedUnistyles/listener.ts +13 -0
  487. package/src/core/useProxifiedUnistyles/types.ts +7 -0
  488. package/src/core/{withUnistyles/useDependencies.ts → useProxifiedUnistyles/useProxifiedUnistyles.ts} +19 -26
  489. package/src/core/useUnistyles.ts +11 -0
  490. package/src/core/warn.ts +13 -0
  491. package/src/core/withUnistyles/withUnistyles.native.tsx +39 -68
  492. package/src/core/withUnistyles/withUnistyles.tsx +19 -56
  493. package/src/index.ts +3 -2
  494. package/src/server/getServerUnistyles.tsx +21 -0
  495. package/src/server/hydrateServerUnistyles.ts +17 -0
  496. package/src/server/index.ts +5 -0
  497. package/src/server/resetServerUnistyles.ts +9 -0
  498. package/src/server/types.ts +4 -0
  499. package/src/server/useServerUnistyles.tsx +22 -0
  500. package/src/specs/ShadowRegistry/index.ts +12 -9
  501. package/src/specs/StyleSheet/index.ts +6 -1
  502. package/src/utils.ts +32 -11
  503. package/src/web/convert/object/filter.ts +2 -2
  504. package/src/web/convert/style.ts +8 -7
  505. package/src/web/create.ts +23 -18
  506. package/src/web/css/core.ts +58 -0
  507. package/src/web/css/index.ts +1 -0
  508. package/src/web/css/state.ts +191 -0
  509. package/src/web/css/utils.ts +54 -0
  510. package/src/web/index.ts +18 -5
  511. package/src/web/listener.ts +8 -8
  512. package/src/web/registry.ts +47 -152
  513. package/src/web/runtime.ts +32 -22
  514. package/src/web/services.ts +28 -0
  515. package/src/web/shadowRegistry.ts +46 -104
  516. package/src/web/state.ts +46 -11
  517. package/src/web/types.ts +13 -0
  518. package/src/web/utils/common.ts +32 -8
  519. package/src/web/utils/unistyle.ts +46 -25
  520. package/src/web/variants.ts +27 -27
  521. package/cxx/core/HostStyle.cpp +0 -73
  522. package/cxx/core/HostStyle.h +0 -34
  523. package/lib/commonjs/components/Variants.js +0 -36
  524. package/lib/commonjs/components/Variants.js.map +0 -1
  525. package/lib/commonjs/core/createUnistylesComponent.js +0 -16
  526. package/lib/commonjs/core/createUnistylesComponent.js.map +0 -1
  527. package/lib/commonjs/core/withUnistyles/useDependencies.js.map +0 -1
  528. package/lib/module/components/Variants.js +0 -29
  529. package/lib/module/components/Variants.js.map +0 -1
  530. package/lib/module/core/createUnistylesComponent.js +0 -11
  531. package/lib/module/core/createUnistylesComponent.js.map +0 -1
  532. package/lib/module/core/withUnistyles/useDependencies.js.map +0 -1
  533. package/lib/typescript/src/components/Variants.d.ts +0 -7
  534. package/lib/typescript/src/components/Variants.d.ts.map +0 -1
  535. package/lib/typescript/src/core/createUnistylesComponent.d.ts +0 -14
  536. package/lib/typescript/src/core/createUnistylesComponent.d.ts.map +0 -1
  537. package/lib/typescript/src/core/withUnistyles/useDependencies.d.ts +0 -13
  538. package/lib/typescript/src/core/withUnistyles/useDependencies.d.ts.map +0 -1
  539. package/nitrogen/generated/android/unistylesOnLoad.kt +0 -1
  540. package/nitrogen/generated/ios/swift/HybridNativePlatformSpecCxx.swift +0 -314
  541. package/plugin/style.js +0 -168
  542. package/src/components/Variants.tsx +0 -30
  543. package/src/core/createUnistylesComponent.tsx +0 -14
@@ -5,12 +5,17 @@ import type { UnistylesStyleSheet as UnistylesStyleSheetSpec } from './Unistyles
5
5
  import type { UnistylesBreakpoints, UnistylesThemes } from '../../global'
6
6
  import type { CreateUnistylesStyleSheet } from '../../types'
7
7
 
8
- type UnistylesSettings = {
8
+ type UnistylesThemeSettings = {
9
9
  initialTheme: (() => keyof UnistylesThemes) | keyof UnistylesThemes
10
10
  } | {
11
11
  adaptiveThemes: boolean
12
12
  }
13
13
 
14
+ type UnistylesSettings = UnistylesThemeSettings & {
15
+ CSSVars?: boolean,
16
+ nativeBreakpointsMode?: 'pixels' | 'points'
17
+ }
18
+
14
19
  export type UnistylesConfig = {
15
20
  settings?: UnistylesSettings,
16
21
  themes?: UnistylesThemes,
package/src/utils.ts CHANGED
@@ -1,22 +1,43 @@
1
+ export const isDefined = <T>(value: T): value is NonNullable<T> => value !== undefined && value !== null
2
+
1
3
  export const deepMergeObjects = <T extends Record<PropertyKey, any>>(...sources: Array<T>) => {
2
4
  const target = {} as T
3
5
 
4
- sources.forEach(source => {
5
- Object.keys(source).forEach(key => {
6
- const sourceValue = source[key]
7
- const targetValue = target[key]
6
+ sources
7
+ .filter(isDefined)
8
+ .forEach(source => {
9
+ Object.keys(source).forEach(key => {
10
+ const sourceValue = source[key]
11
+ const targetValue = target[key]
8
12
 
9
- if (Object(sourceValue) === sourceValue && Object(targetValue) === targetValue) {
10
- // @ts-expect-error - can't assign to generic
11
- target[key] = deepMergeObjects(targetValue, sourceValue)
13
+ if (Object(sourceValue) === sourceValue && Object(targetValue) === targetValue) {
14
+ // @ts-expect-error - can't assign to generic
15
+ target[key] = deepMergeObjects(targetValue, sourceValue)
12
16
 
13
- return
14
- }
17
+ return
18
+ }
15
19
 
16
- // @ts-expect-error - can't assign to generic
17
- target[key] = sourceValue
20
+ // @ts-expect-error - can't assign to generic
21
+ target[key] = sourceValue
18
22
  })
19
23
  })
20
24
 
21
25
  return target
22
26
  }
27
+
28
+ export const copyComponentProperties = (Component: any, UnistylesComponent: any) => {
29
+ Object.entries(Component).forEach(([key, value]) => {
30
+ // Filter out the keys we don't want to copy
31
+ if (['$$typeof', 'render'].includes(key)) {
32
+ return
33
+ }
34
+
35
+ UnistylesComponent[key] = value
36
+ })
37
+
38
+ // Those are not enumerable, so we need to copy them manually
39
+ UnistylesComponent.displayName = Component.displayName
40
+ UnistylesComponent.name = Component.name
41
+
42
+ return UnistylesComponent
43
+ }
@@ -3,8 +3,8 @@ import { hyphenate } from '../../utils'
3
3
  import type { Filters } from '../types'
4
4
  import { getObjectStyle } from './objectStyle'
5
5
  import { normalizeColor, normalizeNumericValue } from '../utils'
6
- import { UnistylesRuntime } from '../../runtime'
7
6
  import { isUnistylesMq } from '../../../mq'
7
+ import { UnistylesWeb } from '../../index'
8
8
 
9
9
  const getDropShadowStyle = (dropShadow: DropShadowValue) => {
10
10
  const { offsetX = 0, offsetY = 0, standardDeviation = 0, color = '#000' } = dropShadow
@@ -21,7 +21,7 @@ export const getFilterStyle = (filters: Array<Filters>) => {
21
21
  return []
22
22
  }
23
23
 
24
- const breakpoints = Object.keys(dropShadowValue).filter(key => Object.keys(UnistylesRuntime.breakpoints).includes(key) || isUnistylesMq(key))
24
+ const breakpoints = Object.keys(dropShadowValue).filter(key => Object.keys(UnistylesWeb.runtime.breakpoints).includes(key) || isUnistylesMq(key))
25
25
  const breakpointsDropShadow = Object.fromEntries(breakpoints.map(breakpoint => [breakpoint, getDropShadowStyle(dropShadowValue[breakpoint])]))
26
26
 
27
27
  if (breakpoints.length === 0) {
@@ -1,15 +1,15 @@
1
1
  import { keyInObject } from '../utils'
2
2
 
3
- const SKIP_STYLES = [
3
+ const SKIP_STYLES = new Set([
4
4
  'borderCurve',
5
5
  'elevation',
6
6
  'textAlignVertical',
7
7
  'includeFontPadding',
8
8
  'overlayColor',
9
9
  'tintColor'
10
- ]
10
+ ])
11
11
 
12
- const CSS_NUMBER_KEYS = [
12
+ const CSS_NUMBER_KEYS = new Set([
13
13
  'animationIterationCount',
14
14
  'borderImageOutset',
15
15
  'borderImageSlice',
@@ -53,8 +53,9 @@ const CSS_NUMBER_KEYS = [
53
53
  'strokeDashoffset',
54
54
  'strokeMiterlimit',
55
55
  'strokeOpacity',
56
- 'strokeWidth'
57
- ]
56
+ 'strokeWidth',
57
+ 'aspectRatio'
58
+ ])
58
59
 
59
60
  const convertMap = {
60
61
  marginHorizontal: (value: number) => ({
@@ -124,14 +125,14 @@ const convertMap = {
124
125
 
125
126
  const convertNumber = (key: string, value: any) => {
126
127
  if (typeof value === 'number') {
127
- return CSS_NUMBER_KEYS.includes(key, value) ? value : `${value}px`
128
+ return CSS_NUMBER_KEYS.has(key) ? value : `${value}px`
128
129
  }
129
130
 
130
131
  return value
131
132
  }
132
133
 
133
134
  export const getStyle = (key: string, value: any) => {
134
- if (SKIP_STYLES.includes(key)) {
135
+ if (SKIP_STYLES.has(key)) {
135
136
  return {}
136
137
  }
137
138
 
package/src/web/create.ts CHANGED
@@ -1,36 +1,41 @@
1
1
  import type { StyleSheetWithSuperPowers, StyleSheet } from '../types/stylesheet'
2
+ import { UnistylesWeb } from './index'
2
3
  import { assignSecrets, error, removeInlineStyles } from './utils'
3
- import { UnistylesRuntime } from './runtime'
4
4
 
5
- const useVariants = ['useVariants', () => {}]
5
+ type Variants = Record<string, string | boolean | undefined>
6
6
 
7
7
  export const create = (stylesheet: StyleSheetWithSuperPowers<StyleSheet>, id?: string) => {
8
8
  if (!id) {
9
9
  throw error('Unistyles is not initialized correctly. Please add babel plugin to your babel config.')
10
10
  }
11
11
 
12
- const computedStylesheet = typeof stylesheet === 'function'
13
- ? stylesheet(UnistylesRuntime.theme, UnistylesRuntime.miniRuntime)
14
- : stylesheet
15
-
16
- const addSecrets = (value: any, key: string, args?: Array<any>) => assignSecrets(value, {
12
+ const computedStylesheet = UnistylesWeb.registry.getComputedStylesheet(stylesheet)
13
+ const addSecrets = (value: any, key: string, args = undefined as Array<any> | undefined, variants = {} as Variants) => assignSecrets(value, {
17
14
  __uni__key: key,
18
15
  __uni__stylesheet: stylesheet,
19
16
  __uni__args: args,
20
- __uni__refs: new Set()
17
+ __uni_variants: variants
21
18
  })
22
19
 
23
- const styleSheetStyles = Object.entries(computedStylesheet).map(([key, value]) => {
24
- if (typeof value === 'function') {
25
- return [key, (...args: Array<any>) => {
26
- const result = removeInlineStyles(value(...args))
20
+ const createStyleSheetStyles = (variants?: Variants) => {
21
+ const stylesEntries = Object.entries(computedStylesheet).map(([key, value]) => {
22
+ if (typeof value === 'function') {
23
+ return [key, (...args: Array<any>) => {
24
+ const result = removeInlineStyles(value(...args))
27
25
 
28
- return addSecrets(result, key, args)
29
- }]
30
- }
26
+ return addSecrets(result, key, args, variants)
27
+ }]
28
+ }
31
29
 
32
- return [key, addSecrets(removeInlineStyles(value), key)]
33
- })
30
+ return [key, addSecrets(removeInlineStyles(value), key, undefined, variants)]
31
+ })
32
+
33
+ return Object.fromEntries(stylesEntries.concat([useVariants]))
34
+ }
35
+
36
+ const useVariants = ['useVariants', (variants: Variants) => {
37
+ return createStyleSheetStyles(variants)
38
+ }]
34
39
 
35
- return Object.fromEntries(styleSheetStyles.concat([useVariants]))
40
+ return createStyleSheetStyles()
36
41
  }
@@ -0,0 +1,58 @@
1
+ import { getMediaQuery } from '../utils'
2
+ import type { CSSState } from './state'
3
+
4
+ export const convertToCSS = (hash: string, value: Record<string, any>, state: CSSState) => {
5
+ Object.entries(value).forEach(([styleKey, styleValue]) => {
6
+ if (styleKey[0] === '_') {
7
+ const pseudoClassName = styleKey.replace('_', `${hash}:`)
8
+
9
+ Object.entries(styleValue).forEach(([pseudoStyleKey, pseudoStyleValue]) => {
10
+ if (typeof pseudoStyleValue === 'object' && pseudoStyleValue !== null) {
11
+ const allBreakpoints = Object.keys(pseudoStyleValue)
12
+ Object.entries(pseudoStyleValue).forEach(([breakpointStyleKey, breakpointStyleValue]) => {
13
+ const mediaQuery = getMediaQuery(pseudoStyleKey, allBreakpoints)
14
+
15
+ state.set({
16
+ mediaQuery,
17
+ className: pseudoClassName,
18
+ propertyKey: breakpointStyleKey,
19
+ value: breakpointStyleValue,
20
+ })
21
+ })
22
+
23
+ return
24
+ }
25
+
26
+ state.set({
27
+ className: pseudoClassName,
28
+ propertyKey: pseudoStyleKey,
29
+ value: pseudoStyleValue,
30
+ })
31
+ })
32
+
33
+ return
34
+ }
35
+
36
+ if (typeof styleValue === 'object') {
37
+ const allBreakpoints = Object.keys(styleValue)
38
+ Object.entries(styleValue).forEach(([breakpointStyleKey, breakpointStyleValue]) => {
39
+ const mediaQuery = getMediaQuery(styleKey, allBreakpoints)
40
+
41
+ state.set({
42
+ mediaQuery,
43
+ className: hash,
44
+ propertyKey: breakpointStyleKey,
45
+ value: breakpointStyleValue,
46
+ })
47
+ })
48
+
49
+ return
50
+ }
51
+
52
+ state.set({
53
+ className: hash,
54
+ propertyKey: styleKey,
55
+ value: styleValue,
56
+ })
57
+ })
58
+ }
@@ -0,0 +1 @@
1
+ export * from './state'
@@ -0,0 +1,191 @@
1
+ import type { UnistylesValues } from '../../types'
2
+ import { convertUnistyles } from '../convert'
3
+ import { hyphenate, isServer } from '../utils'
4
+ import { convertToCSS } from './core'
5
+
6
+ type MapType = Map<string, Map<string, Map<string, any>>>
7
+ type SetProps = {
8
+ mediaQuery?: string
9
+ className: string
10
+ isMq?: boolean
11
+ propertyKey: string
12
+ value: any
13
+ }
14
+ type HydrateState = Array<[ string, Array<[ string, Array<[ string, any ]> ]> ]>
15
+
16
+ const safeGetMap = (map: Map<string, Map<string, any>>, key: string) => {
17
+ const nextLevelMap = map.get(key)
18
+
19
+ if (!nextLevelMap) {
20
+ const newMap = new Map<string, any>()
21
+
22
+ map.set(key, newMap)
23
+
24
+ return newMap
25
+ }
26
+
27
+ return nextLevelMap
28
+ }
29
+
30
+ export class CSSState {
31
+ mainMap: MapType = new Map()
32
+ mqMap: MapType = new Map()
33
+ private styleTag: HTMLStyleElement | null = null
34
+ private CSS = ''
35
+
36
+ constructor() {
37
+ if (isServer()) {
38
+ return
39
+ }
40
+
41
+ const ssrTag = document.getElementById('unistyles-web')
42
+
43
+ if (ssrTag) {
44
+ this.styleTag = ssrTag as HTMLStyleElement
45
+
46
+ return
47
+ }
48
+
49
+ this.styleTag = document.createElement('style')
50
+ this.styleTag.id = 'unistyles-web'
51
+ document.head.appendChild(this.styleTag)
52
+ }
53
+
54
+ set = ({ className, propertyKey, value, mediaQuery = '', isMq }: SetProps) => {
55
+ const firstLevelMap = isMq ? this.mqMap : this.mainMap
56
+ const secondLevelMap = safeGetMap(firstLevelMap, mediaQuery)
57
+ const thirdLevelMap = safeGetMap(secondLevelMap, className)
58
+
59
+ thirdLevelMap.set(propertyKey, value)
60
+ }
61
+
62
+ add = (hash: string, values: UnistylesValues) => {
63
+ convertToCSS(hash, convertUnistyles(values), this)
64
+
65
+ if (this.styleTag) {
66
+ this.styleTag.innerText = this.getStyles()
67
+ }
68
+ }
69
+
70
+ addTheme = (theme: string, values: Record<string, any>) => {
71
+ let themeVars = ''
72
+
73
+ const convertToCSS = (key: string, value: any, prev = '-') => {
74
+ if (typeof value === 'object' && value !== null) {
75
+ Object.entries(value).forEach(([nestedKey, nestedValue]) => convertToCSS(nestedKey, nestedValue, `${prev}-${key}`))
76
+ }
77
+
78
+ if (typeof value === 'string') {
79
+ themeVars += `${prev}-${hyphenate(key)}:${value};`
80
+ }
81
+ }
82
+
83
+ Object.entries(values).forEach(([key, value]) => convertToCSS(key, value))
84
+
85
+ if (theme === 'light' || theme === 'dark') {
86
+ this.CSS += `@media (prefers-color-scheme: ${theme}){:root{${themeVars}}}`
87
+ }
88
+
89
+ this.CSS += `:root.${theme}{${themeVars}}`
90
+ }
91
+
92
+ remove = (hash: string) => {
93
+ this.mainMap.forEach(styles => {
94
+ styles.delete(hash)
95
+ })
96
+ this.mqMap.forEach(styles => {
97
+ styles.delete(hash)
98
+ })
99
+
100
+ if (this.styleTag) {
101
+ this.styleTag.innerText = this.getStyles()
102
+ }
103
+ }
104
+
105
+ getStyles = () => {
106
+ let styles = this.CSS
107
+
108
+ const generate = (mediaQuery: string, secondLevelMap: Map<string, Map<string, string>>) => {
109
+ if (mediaQuery) {
110
+ styles += `${mediaQuery}{`
111
+ }
112
+
113
+ for (const [className, thirdLevelMap] of secondLevelMap) {
114
+ styles += `.${className}{`
115
+
116
+ for (const [propertyKey, value] of thirdLevelMap) {
117
+ if (value === undefined) {
118
+ continue
119
+ }
120
+
121
+ styles += `${hyphenate(propertyKey)}:${value};`
122
+ }
123
+
124
+ styles += '}'
125
+ }
126
+
127
+ if (mediaQuery) {
128
+ styles += '}'
129
+ }
130
+ }
131
+
132
+ for (const [mediaQuery, secondLevelMap] of this.mainMap) {
133
+ generate(mediaQuery, secondLevelMap)
134
+ }
135
+
136
+ for (const [mediaQuery, secondLevelMap] of this.mqMap) {
137
+ generate(mediaQuery, secondLevelMap)
138
+ }
139
+
140
+ return styles
141
+ }
142
+
143
+ getState = () => {
144
+ const getState = (map: MapType) => {
145
+ return Array.from(map).map(([mediaQuery, classNames]) => {
146
+ return [
147
+ mediaQuery,
148
+ Array.from(classNames.entries()).map(([className, style]) => {
149
+ return [
150
+ className,
151
+ Array.from(style.entries()).map(([property, value]) => {
152
+ return [property, value]
153
+ })
154
+ ]
155
+ })
156
+ ]
157
+ }) as HydrateState
158
+ }
159
+
160
+ const mainState = getState(this.mainMap)
161
+ const mqState = getState(this.mqMap)
162
+
163
+ return { mainState, mqState }
164
+ }
165
+
166
+ hydrate = ({ mainState, mqState }: ReturnType<typeof this.getState>) => {
167
+ const hydrateState = (map: HydrateState, isMq = false) => {
168
+ map.forEach(([mediaQuery, classNames]) => {
169
+ classNames.forEach(([className, style]) => {
170
+ style.forEach(([propertyKey, value]) => {
171
+ this.set({
172
+ className,
173
+ propertyKey,
174
+ value,
175
+ mediaQuery,
176
+ isMq
177
+ })
178
+ })
179
+ })
180
+ })
181
+ }
182
+
183
+ hydrateState(mainState)
184
+ hydrateState(mqState, true)
185
+ }
186
+
187
+ reset = () => {
188
+ this.mqMap.clear()
189
+ this.mainMap.clear()
190
+ }
191
+ }
@@ -0,0 +1,54 @@
1
+ import { hyphenate } from '../utils'
2
+ import type { CSSState } from './state'
3
+
4
+ export const safeGetMap = (map: Map<string, Map<string, any>>, key: string) => {
5
+ const nextLevelMap = map.get(key)
6
+
7
+ if (!nextLevelMap) {
8
+ const newMap = new Map<string, any>()
9
+
10
+ map.set(key, newMap)
11
+
12
+ return newMap
13
+ }
14
+
15
+ return nextLevelMap
16
+ }
17
+
18
+ export const getStylesFromState = (state: CSSState) => {
19
+ let styles = ''
20
+
21
+ const generate = (mediaQuery: string, secondLevelMap: Map<string, Map<string, string>>) => {
22
+ if (mediaQuery) {
23
+ styles += `${mediaQuery}{`
24
+ }
25
+
26
+ for (const [className, thirdLevelMap] of secondLevelMap) {
27
+ styles += `.${className}{`
28
+
29
+ for (const [propertyKey, value] of thirdLevelMap) {
30
+ if (value === undefined) {
31
+ continue
32
+ }
33
+
34
+ styles += `${hyphenate(propertyKey)}:${value};`
35
+ }
36
+
37
+ styles += '}'
38
+ }
39
+
40
+ if (mediaQuery) {
41
+ styles += '}'
42
+ }
43
+ }
44
+
45
+ for (const [mediaQuery, secondLevelMap] of state.mainMap) {
46
+ generate(mediaQuery, secondLevelMap)
47
+ }
48
+
49
+ for (const [mediaQuery, secondLevelMap] of state.mqMap) {
50
+ generate(mediaQuery, secondLevelMap)
51
+ }
52
+
53
+ return styles
54
+ }
package/src/web/index.ts CHANGED
@@ -1,12 +1,24 @@
1
1
  import { create } from './create'
2
- import { UnistylesState } from './state'
3
2
  import { deepMergeObjects } from '../utils'
4
3
  import type { StyleSheet as NativeStyleSheet } from '../specs/StyleSheet'
5
- import { UnistylesRuntime as UnistylesRuntimeWeb } from './runtime'
6
4
  import type { Runtime as NativeUnistylesRuntime } from '../specs/UnistylesRuntime'
5
+ import type { UnistylesShadowRegistry as NativeUnistylesShadowRegistry } from '../specs/ShadowRegistry'
6
+ import { UnistylesServices } from './services'
7
+ import { isServer } from './utils'
7
8
 
9
+ declare global {
10
+ // @ts-ignore
11
+ var __unistyles__: UnistylesServices
12
+ }
13
+
14
+ if (isServer() && !globalThis.__unistyles__) {
15
+ // @ts-ignore
16
+ globalThis.__unistyles__ = new UnistylesServices()
17
+ }
18
+
19
+ export const UnistylesWeb = isServer() ? globalThis.__unistyles__ : new UnistylesServices()
8
20
  export const StyleSheet = {
9
- configure: UnistylesState.init,
21
+ configure: UnistylesWeb.state.init,
10
22
  create: create,
11
23
  absoluteFill: {
12
24
  position: 'absolute',
@@ -27,7 +39,8 @@ export const StyleSheet = {
27
39
  hairlineWidth: 1
28
40
  } as unknown as typeof NativeStyleSheet
29
41
 
30
- export const UnistylesRuntime = UnistylesRuntimeWeb as unknown as typeof NativeUnistylesRuntime
42
+ export const UnistylesRuntime = UnistylesWeb.runtime as unknown as typeof NativeUnistylesRuntime
43
+ export const UnistylesShadowRegistry = UnistylesWeb.shadowRegistry as unknown as typeof NativeUnistylesShadowRegistry
31
44
 
32
45
  export * from './mock'
33
- export * from './shadowRegistry'
46
+
@@ -1,11 +1,13 @@
1
1
  import { UnistyleDependency } from '../specs/NativePlatform'
2
- import { UnistylesRuntime } from './runtime'
2
+ import type { UnistylesServices } from './types'
3
3
 
4
- class UnistylesListenerBuilder {
4
+ export class UnistylesListener {
5
5
  private isInitialized = false
6
6
  private listeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set<VoidFunction>())
7
7
  private stylesheetListeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set<VoidFunction>())
8
8
 
9
+ constructor(private services: UnistylesServices) {}
10
+
9
11
  emitChange = (dependency: UnistyleDependency) => {
10
12
  this.stylesheetListeners[dependency]?.forEach(listener => listener())
11
13
  this.listeners[dependency]?.forEach(listener => listener())
@@ -18,25 +20,25 @@ class UnistylesListenerBuilder {
18
20
 
19
21
  this.isInitialized = true
20
22
 
21
- UnistylesRuntime.darkMedia?.addEventListener('change', event => {
23
+ this.services.runtime.darkMedia?.addEventListener('change', event => {
22
24
  if (!event.matches) {
23
25
  return
24
26
  }
25
27
 
26
28
  this.emitChange(UnistyleDependency.ColorScheme)
27
29
 
28
- if (UnistylesRuntime.hasAdaptiveThemes) {
30
+ if (this.services.runtime.hasAdaptiveThemes) {
29
31
  this.emitChange(UnistyleDependency.Theme)
30
32
  }
31
33
  })
32
- UnistylesRuntime.lightMedia?.addEventListener('change', event => {
34
+ this.services.runtime.lightMedia?.addEventListener('change', event => {
33
35
  if (!event.matches) {
34
36
  return
35
37
  }
36
38
 
37
39
  this.emitChange(UnistyleDependency.ColorScheme)
38
40
 
39
- if (UnistylesRuntime.hasAdaptiveThemes) {
41
+ if (this.services.runtime.hasAdaptiveThemes) {
40
42
  this.emitChange(UnistyleDependency.Theme)
41
43
  }
42
44
  })
@@ -61,5 +63,3 @@ class UnistylesListenerBuilder {
61
63
  }
62
64
  }
63
65
  }
64
-
65
- export const UnistylesListener = new UnistylesListenerBuilder()