react-native-unistyles 1.1.6 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (394) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -38
  3. package/android/CMakeLists.txt +27 -0
  4. package/android/build.gradle +75 -0
  5. package/android/src/main/cxx/cpp-adapter.cpp +132 -0
  6. package/android/src/main/java/com/unistyles/UnistylesModule.kt +189 -0
  7. package/android/src/main/java/com/unistyles/UnistylesPackage.kt +18 -0
  8. package/cxx/UnistylesRuntime.cpp +318 -0
  9. package/cxx/UnistylesRuntime.h +74 -0
  10. package/ios/UnistylesHelpers.h +3 -0
  11. package/ios/UnistylesHelpers.mm +5 -0
  12. package/ios/UnistylesModule.h +16 -0
  13. package/ios/UnistylesModule.mm +138 -0
  14. package/ios/platform/Platform_iOS.h +21 -0
  15. package/ios/platform/Platform_iOS.mm +132 -0
  16. package/ios/platform/Platform_macOS.h +20 -0
  17. package/ios/platform/Platform_macOS.mm +83 -0
  18. package/lib/commonjs/common.js +60 -0
  19. package/lib/commonjs/common.js.map +1 -0
  20. package/lib/commonjs/core/UnistyleRegistry.js +94 -0
  21. package/lib/commonjs/core/UnistyleRegistry.js.map +1 -0
  22. package/lib/commonjs/core/Unistyles.js +32 -0
  23. package/lib/commonjs/core/Unistyles.js.map +1 -0
  24. package/lib/commonjs/core/UnistylesModule.js +197 -0
  25. package/lib/commonjs/core/UnistylesModule.js.map +1 -0
  26. package/lib/commonjs/core/UnistylesModule.native.js +9 -0
  27. package/lib/commonjs/core/UnistylesModule.native.js.map +1 -0
  28. package/lib/commonjs/core/UnistylesRuntime.js +140 -0
  29. package/lib/commonjs/core/UnistylesRuntime.js.map +1 -0
  30. package/lib/commonjs/core/index.js +13 -0
  31. package/lib/commonjs/core/index.js.map +1 -0
  32. package/lib/commonjs/createStyleSheet.js +14 -0
  33. package/lib/commonjs/createStyleSheet.js.map +1 -0
  34. package/lib/commonjs/global.js +2 -0
  35. package/lib/commonjs/global.js.map +1 -0
  36. package/lib/commonjs/hooks/index.js +24 -3
  37. package/lib/commonjs/hooks/index.js.map +1 -1
  38. package/lib/commonjs/hooks/useCSS.js +44 -0
  39. package/lib/commonjs/hooks/useCSS.js.map +1 -0
  40. package/lib/commonjs/hooks/useCSS.native.js +9 -0
  41. package/lib/commonjs/hooks/useCSS.native.js.map +1 -0
  42. package/lib/commonjs/hooks/useInitialTheme.js +17 -0
  43. package/lib/commonjs/hooks/useInitialTheme.js.map +1 -0
  44. package/lib/commonjs/hooks/useUnistyles.js +64 -0
  45. package/lib/commonjs/hooks/useUnistyles.js.map +1 -0
  46. package/lib/commonjs/hooks/useVariants.js +14 -0
  47. package/lib/commonjs/hooks/useVariants.js.map +1 -0
  48. package/lib/commonjs/index.js +63 -6
  49. package/lib/commonjs/index.js.map +1 -1
  50. package/lib/commonjs/normalizer/index.js +32 -0
  51. package/lib/commonjs/normalizer/index.js.map +1 -0
  52. package/lib/commonjs/normalizer/module.d.js.map +1 -0
  53. package/lib/commonjs/{utils/normalizeStyles.web.js → normalizer/normalizeStyle.js} +5 -5
  54. package/lib/commonjs/normalizer/normalizeStyle.js.map +1 -0
  55. package/lib/commonjs/{utils → normalizer}/normalizer.js +2 -3
  56. package/lib/commonjs/normalizer/normalizer.js.map +1 -0
  57. package/lib/commonjs/normalizer/normalizer.macos.js +3 -0
  58. package/lib/commonjs/normalizer/normalizer.macos.js.map +1 -0
  59. package/lib/commonjs/plugins/cssMediaQueriesPlugin.js +14 -0
  60. package/lib/commonjs/plugins/cssMediaQueriesPlugin.js.map +1 -0
  61. package/lib/commonjs/plugins/index.js +20 -0
  62. package/lib/commonjs/plugins/index.js.map +1 -0
  63. package/lib/commonjs/plugins/normalizeWebStylesPlugin.js +12 -0
  64. package/lib/commonjs/plugins/normalizeWebStylesPlugin.js.map +1 -0
  65. package/lib/commonjs/types/common.js +2 -0
  66. package/lib/{module/utils/module.d.js.map → commonjs/types/common.js.map} +1 -1
  67. package/lib/commonjs/types/index.js +11 -0
  68. package/lib/commonjs/types/index.js.map +1 -1
  69. package/lib/commonjs/types/plugin.js +6 -0
  70. package/lib/commonjs/{utils/module.d.js.map → types/plugin.js.map} +1 -1
  71. package/lib/commonjs/types/stylesheet.js +6 -0
  72. package/lib/commonjs/types/{mediaQueries.js.map → stylesheet.js.map} +1 -1
  73. package/lib/commonjs/types/unistyles.js +6 -0
  74. package/lib/{module/types/mediaQueries.js.map → commonjs/types/unistyles.js.map} +1 -1
  75. package/lib/commonjs/types/variants.js +2 -0
  76. package/lib/commonjs/types/variants.js.map +1 -0
  77. package/lib/commonjs/useStyles.js +47 -0
  78. package/lib/commonjs/useStyles.js.map +1 -0
  79. package/lib/commonjs/utils/breakpoints.js +20 -122
  80. package/lib/commonjs/utils/breakpoints.js.map +1 -1
  81. package/lib/commonjs/utils/cssMediaQuery.js +244 -0
  82. package/lib/commonjs/utils/cssMediaQuery.js.map +1 -0
  83. package/lib/commonjs/utils/generateId.js +15 -0
  84. package/lib/commonjs/utils/generateId.js.map +1 -0
  85. package/lib/commonjs/utils/hash32.js +43 -0
  86. package/lib/commonjs/utils/hash32.js.map +1 -0
  87. package/lib/commonjs/utils/index.js +22 -54
  88. package/lib/commonjs/utils/index.js.map +1 -1
  89. package/lib/commonjs/utils/mq.js +38 -0
  90. package/lib/commonjs/utils/mq.js.map +1 -0
  91. package/lib/commonjs/utils/mqParser.js +89 -0
  92. package/lib/commonjs/utils/mqParser.js.map +1 -0
  93. package/lib/commonjs/utils/styles.js +52 -72
  94. package/lib/commonjs/utils/styles.js.map +1 -1
  95. package/lib/commonjs/utils/withPlugins.js +15 -0
  96. package/lib/commonjs/utils/withPlugins.js.map +1 -0
  97. package/lib/module/common.js +53 -0
  98. package/lib/module/common.js.map +1 -0
  99. package/lib/module/core/UnistyleRegistry.js +87 -0
  100. package/lib/module/core/UnistyleRegistry.js.map +1 -0
  101. package/lib/module/core/Unistyles.js +26 -0
  102. package/lib/module/core/Unistyles.js.map +1 -0
  103. package/lib/module/core/UnistylesModule.js +190 -0
  104. package/lib/module/core/UnistylesModule.js.map +1 -0
  105. package/lib/module/core/UnistylesModule.native.js +3 -0
  106. package/lib/module/core/UnistylesModule.native.js.map +1 -0
  107. package/lib/module/core/UnistylesRuntime.js +133 -0
  108. package/lib/module/core/UnistylesRuntime.js.map +1 -0
  109. package/lib/module/core/index.js +2 -0
  110. package/lib/module/core/index.js.map +1 -0
  111. package/lib/module/createStyleSheet.js +7 -0
  112. package/lib/module/createStyleSheet.js.map +1 -0
  113. package/lib/module/global.js +2 -0
  114. package/lib/module/global.js.map +1 -0
  115. package/lib/module/hooks/index.js +4 -1
  116. package/lib/module/hooks/index.js.map +1 -1
  117. package/lib/module/hooks/useCSS.js +37 -0
  118. package/lib/module/hooks/useCSS.js.map +1 -0
  119. package/lib/module/hooks/useCSS.native.js +2 -0
  120. package/lib/module/hooks/useCSS.native.js.map +1 -0
  121. package/lib/module/hooks/useInitialTheme.js +10 -0
  122. package/lib/module/hooks/useInitialTheme.js.map +1 -0
  123. package/lib/module/hooks/useUnistyles.js +57 -0
  124. package/lib/module/hooks/useUnistyles.js.map +1 -0
  125. package/lib/module/hooks/useVariants.js +7 -0
  126. package/lib/module/hooks/useVariants.js.map +1 -0
  127. package/lib/module/index.js +30 -2
  128. package/lib/module/index.js.map +1 -1
  129. package/lib/module/normalizer/index.js +3 -0
  130. package/lib/module/normalizer/index.js.map +1 -0
  131. package/lib/module/normalizer/module.d.js.map +1 -0
  132. package/lib/module/{utils/normalizeStyles.web.js → normalizer/normalizeStyle.js} +3 -3
  133. package/lib/module/normalizer/normalizeStyle.js.map +1 -0
  134. package/lib/module/{utils → normalizer}/normalizer.js +2 -3
  135. package/lib/module/normalizer/normalizer.js.map +1 -0
  136. package/lib/module/normalizer/normalizer.macos.js +2 -0
  137. package/lib/module/normalizer/normalizer.macos.js.map +1 -0
  138. package/lib/module/plugins/cssMediaQueriesPlugin.js +7 -0
  139. package/lib/module/plugins/cssMediaQueriesPlugin.js.map +1 -0
  140. package/lib/module/plugins/index.js +3 -0
  141. package/lib/module/plugins/index.js.map +1 -0
  142. package/lib/module/plugins/normalizeWebStylesPlugin.js +6 -0
  143. package/lib/module/plugins/normalizeWebStylesPlugin.js.map +1 -0
  144. package/lib/module/types/common.js +2 -0
  145. package/lib/module/types/common.js.map +1 -0
  146. package/lib/module/types/index.js +1 -0
  147. package/lib/module/types/index.js.map +1 -1
  148. package/lib/module/types/plugin.js +2 -0
  149. package/lib/module/types/plugin.js.map +1 -0
  150. package/lib/module/types/stylesheet.js +2 -0
  151. package/lib/module/types/stylesheet.js.map +1 -0
  152. package/lib/module/types/unistyles.js +2 -0
  153. package/lib/module/types/unistyles.js.map +1 -0
  154. package/lib/module/types/variants.js +2 -0
  155. package/lib/module/types/variants.js.map +1 -0
  156. package/lib/module/useStyles.js +40 -0
  157. package/lib/module/useStyles.js.map +1 -0
  158. package/lib/module/utils/breakpoints.js +19 -120
  159. package/lib/module/utils/breakpoints.js.map +1 -1
  160. package/lib/module/utils/cssMediaQuery.js +237 -0
  161. package/lib/module/utils/cssMediaQuery.js.map +1 -0
  162. package/lib/module/utils/generateId.js +7 -0
  163. package/lib/module/utils/generateId.js.map +1 -0
  164. package/lib/module/utils/hash32.js +36 -0
  165. package/lib/module/utils/hash32.js.map +1 -0
  166. package/lib/module/utils/index.js +6 -6
  167. package/lib/module/utils/index.js.map +1 -1
  168. package/lib/module/utils/mq.js +32 -0
  169. package/lib/module/utils/mq.js.map +1 -0
  170. package/lib/module/utils/mqParser.js +78 -0
  171. package/lib/module/utils/mqParser.js.map +1 -0
  172. package/lib/module/utils/styles.js +50 -72
  173. package/lib/module/utils/styles.js.map +1 -1
  174. package/lib/module/utils/withPlugins.js +8 -0
  175. package/lib/module/utils/withPlugins.js.map +1 -0
  176. package/lib/typescript/src/common.d.ts +46 -0
  177. package/lib/typescript/src/common.d.ts.map +1 -0
  178. package/lib/typescript/src/core/UnistyleRegistry.d.ts +56 -0
  179. package/lib/typescript/src/core/UnistyleRegistry.d.ts.map +1 -0
  180. package/lib/typescript/src/core/Unistyles.d.ts +13 -0
  181. package/lib/typescript/src/core/Unistyles.d.ts.map +1 -0
  182. package/lib/typescript/src/core/UnistylesModule.d.ts +19 -0
  183. package/lib/typescript/src/core/UnistylesModule.d.ts.map +1 -0
  184. package/lib/typescript/src/core/UnistylesModule.native.d.ts +6 -0
  185. package/lib/typescript/src/core/UnistylesModule.native.d.ts.map +1 -0
  186. package/lib/typescript/src/core/UnistylesRuntime.d.ts +81 -0
  187. package/lib/typescript/src/core/UnistylesRuntime.d.ts.map +1 -0
  188. package/lib/typescript/src/core/index.d.ts +3 -0
  189. package/lib/typescript/src/core/index.d.ts.map +1 -0
  190. package/lib/typescript/src/createStyleSheet.d.ts +8 -0
  191. package/lib/typescript/src/createStyleSheet.d.ts.map +1 -0
  192. package/lib/typescript/src/global.d.ts +7 -0
  193. package/lib/typescript/src/global.d.ts.map +1 -0
  194. package/lib/typescript/src/hooks/index.d.ts +4 -1
  195. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  196. package/lib/typescript/src/hooks/useCSS.d.ts +3 -0
  197. package/lib/typescript/src/hooks/useCSS.d.ts.map +1 -0
  198. package/lib/typescript/src/hooks/useCSS.native.d.ts +3 -0
  199. package/lib/typescript/src/hooks/useCSS.native.d.ts.map +1 -0
  200. package/lib/typescript/src/hooks/useInitialTheme.d.ts +3 -0
  201. package/lib/typescript/src/hooks/useInitialTheme.d.ts.map +1 -0
  202. package/lib/typescript/src/hooks/useUnistyles.d.ts +14 -0
  203. package/lib/typescript/src/hooks/useUnistyles.d.ts.map +1 -0
  204. package/lib/typescript/src/hooks/useVariants.d.ts +3 -0
  205. package/lib/typescript/src/hooks/useVariants.d.ts.map +1 -0
  206. package/lib/typescript/src/index.d.ts +76 -2
  207. package/lib/typescript/src/index.d.ts.map +1 -1
  208. package/lib/typescript/src/normalizer/index.d.ts +3 -0
  209. package/lib/typescript/src/normalizer/index.d.ts.map +1 -0
  210. package/lib/typescript/src/normalizer/normalizeStyle.d.ts +3 -0
  211. package/lib/typescript/src/normalizer/normalizeStyle.d.ts.map +1 -0
  212. package/lib/typescript/src/normalizer/normalizer.d.ts.map +1 -0
  213. package/lib/typescript/src/normalizer/normalizer.macos.d.ts +1 -0
  214. package/lib/typescript/src/normalizer/normalizer.macos.d.ts.map +1 -0
  215. package/lib/typescript/src/plugins/cssMediaQueriesPlugin.d.ts +3 -0
  216. package/lib/typescript/src/plugins/cssMediaQueriesPlugin.d.ts.map +1 -0
  217. package/lib/typescript/src/plugins/index.d.ts +3 -0
  218. package/lib/typescript/src/plugins/index.d.ts.map +1 -0
  219. package/lib/typescript/src/plugins/normalizeWebStylesPlugin.d.ts +3 -0
  220. package/lib/typescript/src/plugins/normalizeWebStylesPlugin.d.ts.map +1 -0
  221. package/lib/typescript/src/types/breakpoints.d.ts +25 -16
  222. package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
  223. package/lib/typescript/src/types/common.d.ts +3 -0
  224. package/lib/typescript/src/types/common.d.ts.map +1 -0
  225. package/lib/typescript/src/types/core.d.ts +11 -25
  226. package/lib/typescript/src/types/core.d.ts.map +1 -1
  227. package/lib/typescript/src/types/index.d.ts +7 -2
  228. package/lib/typescript/src/types/index.d.ts.map +1 -1
  229. package/lib/typescript/src/types/plugin.d.ts +7 -0
  230. package/lib/typescript/src/types/plugin.d.ts.map +1 -0
  231. package/lib/typescript/src/types/stylesheet.d.ts +40 -0
  232. package/lib/typescript/src/types/stylesheet.d.ts.map +1 -0
  233. package/lib/typescript/src/types/unistyles.d.ts +53 -0
  234. package/lib/typescript/src/types/unistyles.d.ts.map +1 -0
  235. package/lib/typescript/src/types/variants.d.ts +14 -0
  236. package/lib/typescript/src/types/variants.d.ts.map +1 -0
  237. package/lib/typescript/src/useStyles.d.ts +16 -0
  238. package/lib/typescript/src/useStyles.d.ts.map +1 -0
  239. package/lib/typescript/src/utils/breakpoints.d.ts +2 -62
  240. package/lib/typescript/src/utils/breakpoints.d.ts.map +1 -1
  241. package/lib/typescript/src/utils/cssMediaQuery.d.ts +4 -0
  242. package/lib/typescript/src/utils/cssMediaQuery.d.ts.map +1 -0
  243. package/lib/typescript/src/utils/generateId.d.ts +2 -0
  244. package/lib/typescript/src/utils/generateId.d.ts.map +1 -0
  245. package/lib/typescript/src/utils/hash32.d.ts +2 -0
  246. package/lib/typescript/src/utils/hash32.d.ts.map +1 -0
  247. package/lib/typescript/src/utils/index.d.ts +7 -6
  248. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  249. package/lib/typescript/src/utils/mq.d.ts +26 -0
  250. package/lib/typescript/src/utils/mq.d.ts.map +1 -0
  251. package/lib/typescript/src/utils/mqParser.d.ts +16 -0
  252. package/lib/typescript/src/utils/mqParser.d.ts.map +1 -0
  253. package/lib/typescript/src/utils/styles.d.ts +4 -49
  254. package/lib/typescript/src/utils/styles.d.ts.map +1 -1
  255. package/lib/typescript/src/utils/withPlugins.d.ts +3 -0
  256. package/lib/typescript/src/utils/withPlugins.d.ts.map +1 -0
  257. package/package.json +46 -25
  258. package/react-native-unistyles.podspec +22 -0
  259. package/src/__tests__/mocks.ts +24 -0
  260. package/src/common.ts +55 -0
  261. package/src/core/UnistyleRegistry.ts +108 -0
  262. package/src/core/Unistyles.ts +35 -0
  263. package/src/core/UnistylesModule.native.ts +7 -0
  264. package/src/core/UnistylesModule.ts +230 -0
  265. package/src/core/UnistylesRuntime.ts +135 -0
  266. package/src/core/index.ts +2 -0
  267. package/src/createStyleSheet.ts +8 -0
  268. package/src/global.ts +6 -0
  269. package/src/hooks/index.ts +4 -1
  270. package/src/hooks/useCSS.native.ts +3 -0
  271. package/src/hooks/useCSS.ts +51 -0
  272. package/src/hooks/useInitialTheme.ts +11 -0
  273. package/src/hooks/useUnistyles.ts +64 -0
  274. package/src/hooks/useVariants.ts +10 -0
  275. package/src/index.ts +50 -2
  276. package/src/normalizer/index.ts +2 -0
  277. package/src/{utils/normalizeStyles.web.ts → normalizer/normalizeStyle.ts} +3 -3
  278. package/src/normalizer/normalizer.macos.ts +1 -0
  279. package/src/{utils → normalizer}/normalizer.ts +5 -4
  280. package/src/plugins/cssMediaQueriesPlugin.ts +8 -0
  281. package/src/plugins/index.ts +2 -0
  282. package/src/plugins/normalizeWebStylesPlugin.ts +7 -0
  283. package/src/types/breakpoints.ts +55 -27
  284. package/src/types/common.ts +2 -0
  285. package/src/types/core.ts +11 -36
  286. package/src/types/index.ts +12 -7
  287. package/src/types/plugin.ts +7 -0
  288. package/src/types/stylesheet.ts +49 -0
  289. package/src/types/unistyles.ts +63 -0
  290. package/src/types/variants.ts +19 -0
  291. package/src/useStyles.ts +60 -0
  292. package/src/utils/breakpoints.ts +28 -124
  293. package/src/utils/cssMediaQuery.ts +268 -0
  294. package/src/utils/generateId.ts +10 -0
  295. package/src/utils/hash32.ts +53 -0
  296. package/src/utils/index.ts +7 -13
  297. package/src/utils/mq.ts +57 -0
  298. package/src/utils/mqParser.ts +99 -0
  299. package/src/utils/styles.ts +62 -102
  300. package/src/utils/withPlugins.ts +13 -0
  301. package/lib/commonjs/UnistylesTheme.js +0 -21
  302. package/lib/commonjs/UnistylesTheme.js.map +0 -1
  303. package/lib/commonjs/createUnistyles.js +0 -57
  304. package/lib/commonjs/createUnistyles.js.map +0 -1
  305. package/lib/commonjs/hooks/useDimensions.js +0 -10
  306. package/lib/commonjs/hooks/useDimensions.js.map +0 -1
  307. package/lib/commonjs/hooks/useDimensions.web.js +0 -34
  308. package/lib/commonjs/hooks/useDimensions.web.js.map +0 -1
  309. package/lib/commonjs/types/mediaQueries.js +0 -2
  310. package/lib/commonjs/utils/common.js +0 -18
  311. package/lib/commonjs/utils/common.js.map +0 -1
  312. package/lib/commonjs/utils/mediaQueries.js +0 -189
  313. package/lib/commonjs/utils/mediaQueries.js.map +0 -1
  314. package/lib/commonjs/utils/normalizeStyles.js +0 -10
  315. package/lib/commonjs/utils/normalizeStyles.js.map +0 -1
  316. package/lib/commonjs/utils/normalizeStyles.web.js.map +0 -1
  317. package/lib/commonjs/utils/normalizer.js.map +0 -1
  318. package/lib/module/UnistylesTheme.js +0 -12
  319. package/lib/module/UnistylesTheme.js.map +0 -1
  320. package/lib/module/createUnistyles.js +0 -50
  321. package/lib/module/createUnistyles.js.map +0 -1
  322. package/lib/module/hooks/useDimensions.js +0 -3
  323. package/lib/module/hooks/useDimensions.js.map +0 -1
  324. package/lib/module/hooks/useDimensions.web.js +0 -27
  325. package/lib/module/hooks/useDimensions.web.js.map +0 -1
  326. package/lib/module/types/mediaQueries.js +0 -2
  327. package/lib/module/utils/common.js +0 -10
  328. package/lib/module/utils/common.js.map +0 -1
  329. package/lib/module/utils/mediaQueries.js +0 -176
  330. package/lib/module/utils/mediaQueries.js.map +0 -1
  331. package/lib/module/utils/normalizeStyles.js +0 -3
  332. package/lib/module/utils/normalizeStyles.js.map +0 -1
  333. package/lib/module/utils/normalizeStyles.web.js.map +0 -1
  334. package/lib/module/utils/normalizer.js.map +0 -1
  335. package/lib/typescript/examples/expo/src/App.d.ts +0 -3
  336. package/lib/typescript/examples/expo/src/App.d.ts.map +0 -1
  337. package/lib/typescript/examples/expo/src/examples/Breakpoints.d.ts +0 -3
  338. package/lib/typescript/examples/expo/src/examples/Breakpoints.d.ts.map +0 -1
  339. package/lib/typescript/examples/expo/src/examples/EmptyStyles.d.ts +0 -3
  340. package/lib/typescript/examples/expo/src/examples/EmptyStyles.d.ts.map +0 -1
  341. package/lib/typescript/examples/expo/src/examples/Extreme.d.ts +0 -7
  342. package/lib/typescript/examples/expo/src/examples/Extreme.d.ts.map +0 -1
  343. package/lib/typescript/examples/expo/src/examples/MediaQueries.d.ts +0 -3
  344. package/lib/typescript/examples/expo/src/examples/MediaQueries.d.ts.map +0 -1
  345. package/lib/typescript/examples/expo/src/examples/Memoization.d.ts +0 -3
  346. package/lib/typescript/examples/expo/src/examples/Memoization.d.ts.map +0 -1
  347. package/lib/typescript/examples/expo/src/examples/Minimal.d.ts +0 -3
  348. package/lib/typescript/examples/expo/src/examples/Minimal.d.ts.map +0 -1
  349. package/lib/typescript/examples/expo/src/examples/MinimalWithCreateStyleSheet.d.ts +0 -3
  350. package/lib/typescript/examples/expo/src/examples/MinimalWithCreateStyleSheet.d.ts.map +0 -1
  351. package/lib/typescript/examples/expo/src/examples/Theme.d.ts +0 -3
  352. package/lib/typescript/examples/expo/src/examples/Theme.d.ts.map +0 -1
  353. package/lib/typescript/examples/expo/src/examples/index.d.ts +0 -8
  354. package/lib/typescript/examples/expo/src/examples/index.d.ts.map +0 -1
  355. package/lib/typescript/examples/expo/src/index.d.ts +0 -2
  356. package/lib/typescript/examples/expo/src/index.d.ts.map +0 -1
  357. package/lib/typescript/examples/expo/src/styles/breakpoints.d.ts +0 -8
  358. package/lib/typescript/examples/expo/src/styles/breakpoints.d.ts.map +0 -1
  359. package/lib/typescript/examples/expo/src/styles/index.d.ts +0 -46
  360. package/lib/typescript/examples/expo/src/styles/index.d.ts.map +0 -1
  361. package/lib/typescript/examples/expo/src/styles/theme.d.ts +0 -24
  362. package/lib/typescript/examples/expo/src/styles/theme.d.ts.map +0 -1
  363. package/lib/typescript/src/UnistylesTheme.d.ts +0 -9
  364. package/lib/typescript/src/UnistylesTheme.d.ts.map +0 -1
  365. package/lib/typescript/src/createUnistyles.d.ts +0 -10
  366. package/lib/typescript/src/createUnistyles.d.ts.map +0 -1
  367. package/lib/typescript/src/hooks/useDimensions.d.ts +0 -3
  368. package/lib/typescript/src/hooks/useDimensions.d.ts.map +0 -1
  369. package/lib/typescript/src/hooks/useDimensions.web.d.ts +0 -3
  370. package/lib/typescript/src/hooks/useDimensions.web.d.ts.map +0 -1
  371. package/lib/typescript/src/types/mediaQueries.d.ts +0 -8
  372. package/lib/typescript/src/types/mediaQueries.d.ts.map +0 -1
  373. package/lib/typescript/src/utils/common.d.ts +0 -5
  374. package/lib/typescript/src/utils/common.d.ts.map +0 -1
  375. package/lib/typescript/src/utils/mediaQueries.d.ts +0 -130
  376. package/lib/typescript/src/utils/mediaQueries.d.ts.map +0 -1
  377. package/lib/typescript/src/utils/normalizeStyles.d.ts +0 -2
  378. package/lib/typescript/src/utils/normalizeStyles.d.ts.map +0 -1
  379. package/lib/typescript/src/utils/normalizeStyles.web.d.ts +0 -5
  380. package/lib/typescript/src/utils/normalizeStyles.web.d.ts.map +0 -1
  381. package/lib/typescript/src/utils/normalizer.d.ts.map +0 -1
  382. package/src/UnistylesTheme.tsx +0 -17
  383. package/src/__tests__/createUnistyles.spec.tsx +0 -192
  384. package/src/createUnistyles.ts +0 -70
  385. package/src/hooks/useDimensions.ts +0 -4
  386. package/src/hooks/useDimensions.web.ts +0 -34
  387. package/src/types/mediaQueries.ts +0 -10
  388. package/src/utils/common.ts +0 -12
  389. package/src/utils/mediaQueries.ts +0 -201
  390. package/src/utils/normalizeStyles.ts +0 -2
  391. /package/lib/commonjs/{utils → normalizer}/module.d.js +0 -0
  392. /package/lib/module/{utils → normalizer}/module.d.js +0 -0
  393. /package/lib/typescript/src/{utils → normalizer}/normalizer.d.ts +0 -0
  394. /package/src/{utils → normalizer}/module.d.ts +0 -0
@@ -0,0 +1,230 @@
1
+ import { NativeEventEmitter, NativeModules } from 'react-native'
2
+ import type { UnistylesThemes, UnistylesBreakpoints } from 'react-native-unistyles'
3
+ import type { ColorSchemeName } from '../types'
4
+ import { normalizeWebStylesPlugin } from '../plugins'
5
+ import { isServer } from '../common'
6
+
7
+ export class UnistylesBridgeWeb {
8
+ #timerRef?: ReturnType<typeof setTimeout> = undefined
9
+ #hasAdaptiveThemes: boolean = false
10
+ #supportsAutomaticColorScheme = false
11
+ #screenWidth = isServer ? undefined : window.innerWidth
12
+ #screenHeight = isServer ? undefined : window.innerHeight
13
+ #themes: Array<keyof UnistylesThemes> = []
14
+ #breakpoints: UnistylesBreakpoints = {} as UnistylesBreakpoints
15
+ #colorScheme: ColorSchemeName = this.getPreferredColorScheme()
16
+ #themeName: keyof UnistylesThemes = '' as keyof UnistylesThemes
17
+ #enabledPlugins: Array<string> = [normalizeWebStylesPlugin.name]
18
+ #unistylesEvents = new NativeEventEmitter(NativeModules.Unistyles)
19
+ #sortedBreakpointPairs: Array<[keyof UnistylesBreakpoints, number]> = []
20
+ #breakpoint: keyof UnistylesBreakpoints = '' as keyof UnistylesBreakpoints
21
+ #contentSizeCategory: string = 'unspecified'
22
+
23
+ constructor() {
24
+ if (!isServer) {
25
+ this.setupListeners()
26
+ this.#screenWidth = window.innerWidth
27
+ this.#screenHeight = window.innerHeight
28
+ }
29
+ }
30
+
31
+ public install() {
32
+ // @ts-ignore
33
+ // eslint-disable-next-line no-undef
34
+ globalThis.__UNISTYLES__ = new Proxy({}, {
35
+ get: (_target, prop) => {
36
+ switch (prop) {
37
+ case 'themeName':
38
+ return this.getTheme()
39
+ case 'screenWidth':
40
+ return this.#screenWidth
41
+ case 'screenHeight':
42
+ return this.#screenHeight
43
+ case 'contentSizeCategory':
44
+ return this.#contentSizeCategory
45
+ case 'breakpoint':
46
+ return this.#breakpoint || undefined
47
+ case 'breakpoints':
48
+ return this.#breakpoints
49
+ case 'hasAdaptiveThemes':
50
+ return this.#hasAdaptiveThemes
51
+ case 'sortedBreakpointPairs':
52
+ return this.#sortedBreakpointPairs
53
+ case 'enabledPlugins':
54
+ return this.#enabledPlugins
55
+ case 'colorScheme':
56
+ return this.#colorScheme
57
+ case 'useTheme':
58
+ return (themeName: keyof UnistylesThemes) => this.useTheme(themeName)
59
+ case 'useBreakpoints':
60
+ return (breakpoints: UnistylesBreakpoints) => this.useBreakpoints(breakpoints)
61
+ case 'useAdaptiveThemes':
62
+ return (enable: boolean) => this.useAdaptiveThemes(enable)
63
+ case 'addPlugin':
64
+ return (pluginName: string, notify: boolean) => this.addPlugin(pluginName, notify)
65
+ case 'removePlugin':
66
+ return (pluginName: string) => this.removePlugin(pluginName)
67
+ default:
68
+ return Reflect.get(this, prop)
69
+ }
70
+ },
71
+ set: (target, prop, newValue, receiver) => {
72
+ switch (prop) {
73
+ case 'themes': {
74
+ this.#themes = newValue
75
+ this.#supportsAutomaticColorScheme = newValue.includes('light') && newValue.includes('dark')
76
+
77
+ return true
78
+ }
79
+ case 'themeName': {
80
+ this.#themeName = newValue as keyof UnistylesThemes
81
+ this.emitThemeChange()
82
+
83
+ return true
84
+ }
85
+ default:
86
+ return Reflect.set(target, prop, newValue, receiver)
87
+ }
88
+ }
89
+ })
90
+
91
+ return true
92
+ }
93
+
94
+ private useTheme(themeName: keyof UnistylesThemes) {
95
+ this.#themeName = themeName
96
+ this.emitThemeChange()
97
+ }
98
+
99
+ private useBreakpoints(breakpoints: UnistylesBreakpoints) {
100
+ this.#breakpoints = breakpoints
101
+ this.#sortedBreakpointPairs = Object
102
+ .entries(breakpoints)
103
+ .sort(([, a], [, b]) => (a ?? 0) - (b ?? 0)) as Array<[keyof UnistylesBreakpoints, number]>
104
+
105
+ if (!isServer) {
106
+ this.#breakpoint = this.getBreakpointFromScreenWidth(this.#screenWidth as number)
107
+ }
108
+ }
109
+
110
+ private useAdaptiveThemes(enable: boolean) {
111
+ this.#hasAdaptiveThemes = enable
112
+
113
+ if (!this.#hasAdaptiveThemes || !this.#supportsAutomaticColorScheme) {
114
+ return
115
+ }
116
+
117
+ if (this.#themeName !== this.#colorScheme) {
118
+ this.#themeName = this.#colorScheme as keyof UnistylesThemes
119
+ this.emitThemeChange()
120
+ }
121
+ }
122
+
123
+ private addPlugin(pluginName: string, notify: boolean) {
124
+ this.#enabledPlugins = [pluginName].concat(this.#enabledPlugins)
125
+
126
+ if (notify) {
127
+ this.emitPluginChange()
128
+ }
129
+ }
130
+
131
+ private removePlugin(pluginName: string) {
132
+ this.#enabledPlugins = this.#enabledPlugins.filter(name => name !== pluginName)
133
+ this.emitPluginChange()
134
+ }
135
+
136
+ private getTheme(): keyof UnistylesThemes {
137
+
138
+ if (this.#themes.length === 1) {
139
+ return this.#themes.at(0) as keyof UnistylesThemes
140
+ }
141
+
142
+ return this.#themeName
143
+ }
144
+
145
+ private setupListeners() {
146
+ window.addEventListener('resize', () => {
147
+ clearTimeout(this.#timerRef)
148
+
149
+ this.#timerRef = setTimeout(() => {
150
+ this.#screenWidth = window.innerWidth
151
+ this.#screenHeight = window.innerHeight
152
+ this.#breakpoint = this.getBreakpointFromScreenWidth(this.#screenWidth)
153
+
154
+ this.emitLayoutChange()
155
+ }, 100)
156
+ })
157
+
158
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
159
+ this.#colorScheme = event.matches
160
+ ? 'dark'
161
+ : 'light'
162
+
163
+ if (!this.#supportsAutomaticColorScheme || !this.#hasAdaptiveThemes) {
164
+ return
165
+ }
166
+
167
+ if (this.#colorScheme !== this.#themeName) {
168
+ this.#themeName = this.#colorScheme as keyof UnistylesThemes
169
+ this.emitThemeChange()
170
+ }
171
+ })
172
+ }
173
+
174
+ private getBreakpointFromScreenWidth(width: number): keyof UnistylesBreakpoints {
175
+ const breakpoint = this.#sortedBreakpointPairs
176
+ .find(([, value], index, otherBreakpoints) => {
177
+ const minVal = value
178
+ const maxVal = otherBreakpoints[index + 1]?.[1]
179
+
180
+ if (!maxVal) {
181
+ return true
182
+ }
183
+
184
+ return width >= minVal && width < maxVal
185
+ })
186
+
187
+ return breakpoint?.at(0) as keyof UnistylesBreakpoints
188
+ }
189
+
190
+ private getPreferredColorScheme() {
191
+ if (!isServer && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
192
+ return 'dark'
193
+ }
194
+
195
+ return 'light'
196
+ }
197
+
198
+ private emitPluginChange() {
199
+ this.#unistylesEvents.emit('__unistylesOnChange', {
200
+ type: 'plugin'
201
+ })
202
+ }
203
+
204
+ private emitThemeChange() {
205
+ this.#unistylesEvents.emit('__unistylesOnChange', {
206
+ type: 'theme',
207
+ payload: {
208
+ themeName: this.#themeName
209
+ }
210
+ })
211
+ }
212
+
213
+ private emitLayoutChange() {
214
+ this.#unistylesEvents.emit('__unistylesOnChange', {
215
+ type: 'layout',
216
+ payload: {
217
+ breakpoint: this.#breakpoint,
218
+ orientation: (this.#screenWidth as number) > (this.#screenHeight as number)
219
+ ? 'landscape'
220
+ : 'portrait',
221
+ screen: {
222
+ width: this.#screenWidth,
223
+ height: this.#screenHeight
224
+ }
225
+ }
226
+ })
227
+ }
228
+ }
229
+
230
+ export const UnistylesModule = new UnistylesBridgeWeb()
@@ -0,0 +1,135 @@
1
+ import { ScreenOrientation, UnistylesError } from '../common'
2
+ import type { UnistylesBridge, UnistylesPlugin } from '../types'
3
+ import type { UnistylesThemes } from '../global'
4
+ import type { UnistyleRegistry } from './UnistyleRegistry'
5
+
6
+ /**
7
+ * Utility to interact with the Unistyles during runtime
8
+ */
9
+ export class UnistylesRuntime {
10
+ constructor(private unistylesBridge: UnistylesBridge, private unistylesRegistry: UnistyleRegistry) {}
11
+
12
+ /**
13
+ * Get the current color scheme
14
+ * @returns - The current color scheme
15
+ */
16
+ public get colorScheme() {
17
+ return this.unistylesBridge.colorScheme
18
+ }
19
+
20
+ /**
21
+ * Get info about adaptive themes
22
+ * @returns - boolean indicating if the adaptive themes are enabled
23
+ */
24
+ public get hasAdaptiveThemes() {
25
+ return this.unistylesBridge.hasAdaptiveThemes
26
+ }
27
+
28
+ /**
29
+ * Get the current theme name
30
+ * @returns - The current theme name
31
+ */
32
+ public get themeName() {
33
+ return this.unistylesBridge.themeName
34
+ }
35
+
36
+ /**
37
+ * Get the current content size category
38
+ * @returns - The current content size category
39
+ */
40
+ public get contentSizeCategory() {
41
+ return this.unistylesBridge.contentSizeCategory
42
+ }
43
+
44
+ /**
45
+ * Get the current breakpoint based on device size
46
+ * @returns - The current breakpoint
47
+ */
48
+ public get breakpoint() {
49
+ return this.unistylesBridge.breakpoint
50
+ }
51
+
52
+ /**
53
+ * Get registered breakpoints with UnitylesRegistry
54
+ * @returns - The registered breakpoints
55
+ */
56
+ public get breakpoints() {
57
+ return this.unistylesRegistry.breakpoints
58
+ }
59
+
60
+ /**
61
+ * Get the names of currently enabled plugins
62
+ * @returns - The names of currently enabled plugins
63
+ */
64
+ public get enabledPlugins() {
65
+ return this.unistylesBridge.enabledPlugins
66
+ }
67
+
68
+ /**
69
+ * Get the screen size
70
+ * @returns - The screen size { width, height }
71
+ */
72
+ public get screen() {
73
+ return {
74
+ width: this.unistylesBridge.screenWidth,
75
+ height: this.unistylesBridge.screenHeight
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Get the screen orientation
81
+ * @returns - The screen orientation
82
+ */
83
+ public get orientation() {
84
+ const { width, height } = this.screen
85
+
86
+ if (width > height) {
87
+ return ScreenOrientation.Landscape
88
+ }
89
+
90
+ return ScreenOrientation.Portrait
91
+ }
92
+
93
+ /**
94
+ * Switch to a different theme
95
+ * @param name - The name of the theme to switch to
96
+ * @returns - boolean indicating if the theme was switched
97
+ */
98
+ public setTheme = (name: keyof UnistylesThemes) => {
99
+ if (name === this.themeName) {
100
+ return
101
+ }
102
+
103
+ if (this.unistylesRegistry.hasTheme(name)) {
104
+ this.unistylesBridge.useTheme(name)
105
+
106
+ return true
107
+ }
108
+
109
+ throw new Error(UnistylesError.ThemeNotRegistered)
110
+ }
111
+
112
+ /**
113
+ * Enable or disable adaptive themes
114
+ * @param enable - boolean indicating if adaptive themes should be enabled
115
+ */
116
+ public setAdaptiveThemes = (enable: boolean) => {
117
+ this.unistylesBridge.useAdaptiveThemes(enable)
118
+ }
119
+
120
+ /**
121
+ * Enable a plugin
122
+ * @param plugin - Plugin that conforms to UnistylesPlugin interface
123
+ */
124
+ public addPlugin = (plugin: UnistylesPlugin) => {
125
+ this.unistylesRegistry.addPlugin(plugin)
126
+ }
127
+
128
+ /**
129
+ * Disable a plugin
130
+ * @param plugin - Plugin that conforms to UnistylesPlugin interface
131
+ */
132
+ public removePlugin = (plugin: UnistylesPlugin) => {
133
+ this.unistylesRegistry.removePlugin(plugin)
134
+ }
135
+ }
@@ -0,0 +1,2 @@
1
+ export { unistyles } from './Unistyles'
2
+ export type { UnistylesRuntime } from './UnistylesRuntime'
@@ -0,0 +1,8 @@
1
+ import type { StyleSheetWithSuperPowers } from './types'
2
+
3
+ /**
4
+ * Utility to create a stylesheet with superpowers
5
+ * Compatible with React Native StyleSheet.create
6
+ * @param stylesheet - The stylesheet with superpowers to be used
7
+ */
8
+ export const createStyleSheet = <S extends StyleSheetWithSuperPowers>(stylesheet: S): S => stylesheet
package/src/global.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface UnistylesThemes {}
2
+ export interface UnistylesBreakpoints {
3
+ // these breakpoints are only available on mobile, when you didn't specify any breakpoints
4
+ landscape?: number,
5
+ portrait?: number,
6
+ }
@@ -1 +1,4 @@
1
- export { useDimensions } from './useDimensions'
1
+ export { useInitialTheme } from './useInitialTheme'
2
+ export { useUnistyles } from './useUnistyles'
3
+ export { useVariants } from './useVariants'
4
+ export { useCSS } from './useCSS'
@@ -0,0 +1,3 @@
1
+ import type { ReactNativeStyleSheet } from '../types'
2
+
3
+ export const useCSS = <T>(_stylesheet: ReactNativeStyleSheet<T>): void => {}
@@ -0,0 +1,51 @@
1
+ import { useInsertionEffect, useRef } from 'react'
2
+ import { unistyles } from '../core'
3
+ import type { ReactNativeStyleSheet } from '../types'
4
+ import { generateReactNativeWebId } from '../utils'
5
+
6
+ export const useCSS = <T>(stylesheet: ReactNativeStyleSheet<T>) => {
7
+ const insertedIds = useRef<Array<string>>([])
8
+
9
+ useInsertionEffect(() => {
10
+ if (!unistyles.registry.config.experimentalCSSMediaQueries) {
11
+ return
12
+ }
13
+
14
+ Object
15
+ .entries(stylesheet)
16
+ .forEach(([_key, value]) => {
17
+ Object.entries(value!)
18
+ .forEach(([prop, val]) => {
19
+ if (!val.toString().includes('@media')) {
20
+ return
21
+ }
22
+
23
+ const id = generateReactNativeWebId(prop, '""')
24
+
25
+ if (insertedIds.current.includes(id)) {
26
+ return
27
+ }
28
+
29
+ const style = document.createElement('style')
30
+
31
+ style.id = id
32
+ style.innerHTML = val
33
+
34
+ document.head.appendChild(style)
35
+ insertedIds.current = [...insertedIds.current, id]
36
+ })
37
+ })
38
+
39
+ return () => {
40
+ insertedIds.current.forEach(id => {
41
+ const style = document.getElementById(id)
42
+
43
+ if (style) {
44
+ style.remove()
45
+ }
46
+ })
47
+
48
+ insertedIds.current = []
49
+ }
50
+ }, [stylesheet])
51
+ }
@@ -0,0 +1,11 @@
1
+ import { useMemo } from 'react'
2
+ import { unistyles } from '../core'
3
+ import type { UnistylesThemes } from '../global'
4
+
5
+ export const useInitialTheme = (forName: keyof UnistylesThemes) => {
6
+ useMemo(() => {
7
+ if (!unistyles.runtime.themeName) {
8
+ unistyles.runtime.setTheme(forName)
9
+ }
10
+ }, [])
11
+ }
@@ -0,0 +1,64 @@
1
+ import { NativeEventEmitter, NativeModules } from 'react-native'
2
+ import { useEffect, useState } from 'react'
3
+ import { unistyles } from '../core'
4
+ import { UnistylesEventType } from '../common'
5
+ import type { UnistylesDynamicTypeSizeEvent, UnistylesEvents, UnistylesMobileLayoutEvent, UnistylesThemeEvent } from '../types'
6
+
7
+ const unistylesEvents = new NativeEventEmitter(NativeModules.Unistyles)
8
+
9
+ export const useUnistyles = () => {
10
+ const [plugins, setPlugins] = useState(unistyles.runtime.enabledPlugins)
11
+ const [theme, setTheme] = useState(unistyles.registry.getTheme(unistyles.runtime.themeName))
12
+ const [contentSizeCategory, setContentSizeCategory] = useState(unistyles.runtime.contentSizeCategory)
13
+ const [layout, setLayout] = useState({
14
+ breakpoint: unistyles.runtime.breakpoint,
15
+ orientation: unistyles.runtime.orientation,
16
+ screenSize: {
17
+ width: unistyles.runtime.screen.width,
18
+ height: unistyles.runtime.screen.height
19
+ }
20
+ })
21
+
22
+ useEffect(() => {
23
+ const subscription = unistylesEvents.addListener(
24
+ '__unistylesOnChange',
25
+ (event: UnistylesEvents) => {
26
+ switch (event.type) {
27
+ case UnistylesEventType.Theme: {
28
+ const themeEvent = event as UnistylesThemeEvent
29
+
30
+ return setTheme(unistyles.registry.getTheme(themeEvent.payload.themeName))
31
+ }
32
+ case UnistylesEventType.Layout: {
33
+ const layoutEvent = event as UnistylesMobileLayoutEvent
34
+
35
+ return setLayout({
36
+ breakpoint: layoutEvent.payload.breakpoint,
37
+ orientation: layoutEvent.payload.orientation,
38
+ screenSize: layoutEvent.payload.screen
39
+ })
40
+ }
41
+ case UnistylesEventType.Plugin: {
42
+ return setPlugins(unistyles.runtime.enabledPlugins)
43
+ }
44
+ case UnistylesEventType.DynamicTypeSize: {
45
+ const dynamicTypeSizeEvent = event as UnistylesDynamicTypeSizeEvent
46
+
47
+ return setContentSizeCategory(dynamicTypeSizeEvent.payload.contentSizeCategory)
48
+ }
49
+ default:
50
+ return
51
+ }
52
+ }
53
+ )
54
+
55
+ return subscription.remove
56
+ }, [])
57
+
58
+ return {
59
+ plugins,
60
+ theme,
61
+ layout,
62
+ contentSizeCategory
63
+ }
64
+ }
@@ -0,0 +1,10 @@
1
+ import { useRef } from 'react'
2
+ import type { Optional } from '../types'
3
+
4
+ export const useVariants = (variantsMap?: Record<string, Optional<string>>) => {
5
+ const variantsRef = useRef<Optional<Record<string, Optional<string>>>>(variantsMap)
6
+
7
+ variantsRef.current = variantsMap
8
+
9
+ return variantsRef.current
10
+ }
package/src/index.ts CHANGED
@@ -1,2 +1,50 @@
1
- export { UnistylesTheme } from './UnistylesTheme'
2
- export { createUnistyles } from './createUnistyles'
1
+ import { unistyles } from './core'
2
+ import { mq } from './utils'
3
+ import { useInitialTheme } from './hooks'
4
+ import type { UnistylesPlugin } from './types'
5
+ import type { UnistylesThemes, UnistylesBreakpoints } from './global'
6
+ import { ScreenOrientation, AndroidContentSizeCategory, IOSContentSizeCategory } from './common'
7
+ import { useStyles } from './useStyles'
8
+ import { createStyleSheet } from './createStyleSheet'
9
+
10
+ /**
11
+ * Utility to interact with the Unistyles
12
+ * (should be called only once)
13
+ */
14
+ const UnistylesRegistry = {
15
+ /**
16
+ * Register themes to be used in the app
17
+ * @param themes - Key value pair of themes
18
+ */
19
+ addThemes: unistyles.registry.addThemes,
20
+ /**
21
+ * Register breakpoints to be used in the app
22
+ * @param breakpoints - Key value pair of breakpoints
23
+ */
24
+ addBreakpoints: unistyles.registry.addBreakpoints,
25
+ /**
26
+ * Register additional config to customize the Unistyles
27
+ * @param config - Key value pair of config
28
+ */
29
+ addConfig: unistyles.registry.addConfig
30
+ }
31
+
32
+ const UnistylesRuntime = unistyles.runtime
33
+
34
+ export {
35
+ mq,
36
+ useStyles,
37
+ useInitialTheme,
38
+ createStyleSheet,
39
+ ScreenOrientation,
40
+ AndroidContentSizeCategory,
41
+ IOSContentSizeCategory,
42
+ UnistylesRegistry,
43
+ UnistylesRuntime
44
+ }
45
+
46
+ export type {
47
+ UnistylesThemes,
48
+ UnistylesBreakpoints,
49
+ UnistylesPlugin
50
+ }
@@ -0,0 +1,2 @@
1
+ export { normalizeStyle } from './normalizeStyle'
2
+ export { preprocessor, normalizeNumericValue, normalizeColor } from './normalizer'
@@ -1,6 +1,6 @@
1
- import { warn } from './common'
2
1
  import { preprocessor } from './normalizer'
3
- import type { NormalizedBoxShadow, NormalizedTextShadow, BoxShadow, TextShadow, Transforms } from '../types'
2
+ import { warn } from '../common'
3
+ import type { NormalizedBoxShadow, NormalizedTextShadow, BoxShadow, TextShadow, RNStyle } from '../types'
4
4
 
5
5
  const normalizeBoxShadow = <T extends BoxShadow>(style: T): NormalizedBoxShadow => {
6
6
  const requiredBoxShadowProperties = [
@@ -55,7 +55,7 @@ const normalizeTextShadow = <T extends TextShadow>(style: T): NormalizedTextShad
55
55
  }
56
56
  }
57
57
 
58
- export const normalizeStyles = <T extends BoxShadow | TextShadow | { transform: Transforms }>(style: T): T => {
58
+ export const normalizeStyle = <T extends RNStyle>(style: T): T => {
59
59
  const normalizedTransform = ('transform' in style && Array.isArray(style.transform))
60
60
  ? { transform: preprocessor.createTransformValue(style.transform) }
61
61
  : {}
@@ -0,0 +1 @@
1
+ // keep it empty for macOS
@@ -1,7 +1,7 @@
1
1
  // based on react-native-web normalizer
2
2
  // https://github.com/necolas/react-native-web
3
3
  import normalizeColors from '@react-native/normalize-colors'
4
- import type { TextShadow, Transforms, BoxShadow } from '../types'
4
+ import type { TextShadow, Transforms, BoxShadow, Nullable } from '../types'
5
5
 
6
6
  type Preprocessor = {
7
7
  createTextShadowValue(style: TextShadow): string,
@@ -15,9 +15,9 @@ export const normalizeColor = (color: string, opacity: number = 1) => {
15
15
  return color
16
16
  }
17
17
 
18
- const integer = normalizeColors(color) as number | null
18
+ const integer = normalizeColors(color) as Nullable<number>
19
19
 
20
- // If the colour is an unknown format, the return value is null
20
+ // If the color is an unknown format, the return value is null
21
21
  if (integer === null) {
22
22
  return color
23
23
  }
@@ -37,7 +37,8 @@ export const normalizeColor = (color: string, opacity: number = 1) => {
37
37
  }
38
38
 
39
39
  export const normalizeNumericValue = (value: number) => value ? `${value}px` : value
40
- const normalizeTransform = (key: string, value: number | string) => {
40
+
41
+ const normalizeTransform = <T>(key: string, value: T) => {
41
42
  if (key.includes('scale')) {
42
43
  return value
43
44
  }
@@ -0,0 +1,8 @@
1
+ // prevent recursive import
2
+ import { createMediaQueryForStyles } from '../utils/cssMediaQuery'
3
+ import type { UnistylesPlugin } from '../types'
4
+
5
+ export const cssMediaQueriesPlugin: UnistylesPlugin = {
6
+ name: '__unistylesCSSMediaQueries',
7
+ onParsedStyle: (_key, styles, runtime) => createMediaQueryForStyles(styles, runtime)
8
+ }
@@ -0,0 +1,2 @@
1
+ export { normalizeWebStylesPlugin } from './normalizeWebStylesPlugin'
2
+ export { cssMediaQueriesPlugin } from './cssMediaQueriesPlugin'
@@ -0,0 +1,7 @@
1
+ import type { UnistylesPlugin } from '../types'
2
+ import { normalizeStyle } from '../normalizer'
3
+
4
+ export const normalizeWebStylesPlugin: UnistylesPlugin = {
5
+ name: '__unistylesNormalizeWebStyles',
6
+ onParsedStyle: (_key, styles) => normalizeStyle(styles)
7
+ }