react-native-css 3.0.7 → 3.1.0-rc.1

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 (525) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +24 -0
  3. package/dist/commonjs/babel/helpers.js +7 -0
  4. package/dist/commonjs/babel/helpers.js.map +1 -1
  5. package/dist/commonjs/babel/import-plugin.js +20 -8
  6. package/dist/commonjs/babel/import-plugin.js.map +1 -1
  7. package/dist/commonjs/babel/react-native-web.js +17 -4
  8. package/dist/commonjs/babel/react-native-web.js.map +1 -1
  9. package/dist/commonjs/babel/react-native.js +9 -4
  10. package/dist/commonjs/babel/react-native.js.map +1 -1
  11. package/dist/commonjs/compiler/atRules.js +35 -0
  12. package/dist/commonjs/compiler/atRules.js.map +1 -1
  13. package/dist/commonjs/compiler/compiler.js +44 -28
  14. package/dist/commonjs/compiler/compiler.js.map +1 -1
  15. package/dist/commonjs/compiler/container-query.js +6 -1
  16. package/dist/commonjs/compiler/container-query.js.map +1 -1
  17. package/dist/commonjs/compiler/declarations.js +103 -62
  18. package/dist/commonjs/compiler/declarations.js.map +1 -1
  19. package/dist/commonjs/compiler/lightningcss-loader.js +11 -8
  20. package/dist/commonjs/compiler/lightningcss-loader.js.map +1 -1
  21. package/dist/commonjs/compiler/media-query.js +16 -6
  22. package/dist/commonjs/compiler/media-query.js.map +1 -1
  23. package/dist/commonjs/compiler/selector-builder.js +15 -4
  24. package/dist/commonjs/compiler/selector-builder.js.map +1 -1
  25. package/dist/commonjs/compiler/stylesheet.js +11 -3
  26. package/dist/commonjs/compiler/stylesheet.js.map +1 -1
  27. package/dist/commonjs/components/ImageBackground.js +2 -6
  28. package/dist/commonjs/components/ImageBackground.js.map +1 -1
  29. package/dist/commonjs/components/KeyboardAvoidingView.js +2 -3
  30. package/dist/commonjs/components/KeyboardAvoidingView.js.map +1 -1
  31. package/dist/commonjs/components/index.cjs +46 -1
  32. package/dist/commonjs/components/index.cjs.map +1 -1
  33. package/dist/commonjs/jest/index.js +1 -1
  34. package/dist/commonjs/jest/index.js.map +1 -1
  35. package/dist/commonjs/metro/cache-version.js +43 -0
  36. package/dist/commonjs/metro/cache-version.js.map +1 -0
  37. package/dist/commonjs/metro/index.js +2 -0
  38. package/dist/commonjs/metro/index.js.map +1 -1
  39. package/dist/commonjs/metro/metro-transformer.js +16 -3
  40. package/dist/commonjs/metro/metro-transformer.js.map +1 -1
  41. package/dist/commonjs/metro/typescript.js +26 -6
  42. package/dist/commonjs/metro/typescript.js.map +1 -1
  43. package/dist/commonjs/metro/warnings.js +135 -0
  44. package/dist/commonjs/metro/warnings.js.map +1 -0
  45. package/dist/commonjs/native/api.js +13 -9
  46. package/dist/commonjs/native/api.js.map +1 -1
  47. package/dist/commonjs/native/conditions/attributes.js +16 -9
  48. package/dist/commonjs/native/conditions/attributes.js.map +1 -1
  49. package/dist/commonjs/native/conditions/container-query.js +11 -11
  50. package/dist/commonjs/native/conditions/container-query.js.map +1 -1
  51. package/dist/commonjs/native/conditions/media-query.js +1 -1
  52. package/dist/commonjs/native/conditions/media-query.js.map +1 -1
  53. package/dist/commonjs/native/react/interaction.js +10 -5
  54. package/dist/commonjs/native/react/interaction.js.map +1 -1
  55. package/dist/commonjs/native/react/rules.js +12 -5
  56. package/dist/commonjs/native/react/rules.js.map +1 -1
  57. package/dist/commonjs/native/react/useNativeCss.js +60 -11
  58. package/dist/commonjs/native/react/useNativeCss.js.map +1 -1
  59. package/dist/commonjs/native/react/usePassthrough.js +5 -2
  60. package/dist/commonjs/native/react/usePassthrough.js.map +1 -1
  61. package/dist/commonjs/native/reactivity.js +61 -24
  62. package/dist/commonjs/native/reactivity.js.map +1 -1
  63. package/dist/commonjs/native/reanimated.js +15 -3
  64. package/dist/commonjs/native/reanimated.js.map +1 -1
  65. package/dist/commonjs/native/styles/functions/color-mix.js +43 -29
  66. package/dist/commonjs/native/styles/functions/color-mix.js.map +1 -1
  67. package/dist/commonjs/native/styles/functions/filters.js +14 -1
  68. package/dist/commonjs/native/styles/functions/filters.js.map +1 -1
  69. package/dist/commonjs/native/styles/functions/numeric-functions.js +4 -3
  70. package/dist/commonjs/native/styles/functions/numeric-functions.js.map +1 -1
  71. package/dist/commonjs/native/styles/functions/string-functions.js +16 -1
  72. package/dist/commonjs/native/styles/functions/string-functions.js.map +1 -1
  73. package/dist/commonjs/native/styles/functions/transform-functions.js +5 -4
  74. package/dist/commonjs/native/styles/functions/transform-functions.js.map +1 -1
  75. package/dist/commonjs/native/styles/index.js +95 -12
  76. package/dist/commonjs/native/styles/index.js.map +1 -1
  77. package/dist/commonjs/native/styles/resolve.js +10 -6
  78. package/dist/commonjs/native/styles/resolve.js.map +1 -1
  79. package/dist/commonjs/native/styles/scale-factor.js +13 -0
  80. package/dist/commonjs/native/styles/scale-factor.js.map +1 -0
  81. package/dist/commonjs/native/styles/shorthands/animation.js +6 -3
  82. package/dist/commonjs/native/styles/shorthands/animation.js.map +1 -1
  83. package/dist/commonjs/native/styles/shorthands/index.js +11 -0
  84. package/dist/commonjs/native/styles/shorthands/index.js.map +1 -1
  85. package/dist/commonjs/native/styles/shorthands/logical-border-width.js +22 -0
  86. package/dist/commonjs/native/styles/shorthands/logical-border-width.js.map +1 -0
  87. package/dist/commonjs/native/styles/variables.js +55 -43
  88. package/dist/commonjs/native/styles/variables.js.map +1 -1
  89. package/dist/commonjs/native-internal/root.js +18 -7
  90. package/dist/commonjs/native-internal/root.js.map +1 -1
  91. package/dist/commonjs/native-internal/style-collection.js +1 -1
  92. package/dist/commonjs/native-internal/style-collection.js.map +1 -1
  93. package/dist/commonjs/native-internal/variables.js +1 -1
  94. package/dist/commonjs/native-internal/variables.js.map +1 -1
  95. package/dist/commonjs/utilities/dot-notation.types.js +4 -0
  96. package/dist/commonjs/utilities/style-descriptor.js +4 -9
  97. package/dist/commonjs/utilities/style-descriptor.js.map +1 -1
  98. package/dist/commonjs/web/api.js +1 -1
  99. package/dist/commonjs/web/api.js.map +1 -1
  100. package/dist/commonjs/web/assign-style.js +4 -1
  101. package/dist/commonjs/web/assign-style.js.map +1 -1
  102. package/dist/module/babel/helpers.js +6 -0
  103. package/dist/module/babel/helpers.js.map +1 -1
  104. package/dist/module/babel/import-plugin.js +22 -10
  105. package/dist/module/babel/import-plugin.js.map +1 -1
  106. package/dist/module/babel/react-native-web.js +16 -4
  107. package/dist/module/babel/react-native-web.js.map +1 -1
  108. package/dist/module/babel/react-native.js +9 -4
  109. package/dist/module/babel/react-native.js.map +1 -1
  110. package/dist/module/compiler/atRules.js +33 -0
  111. package/dist/module/compiler/atRules.js.map +1 -1
  112. package/dist/module/compiler/compiler.js +45 -29
  113. package/dist/module/compiler/compiler.js.map +1 -1
  114. package/dist/module/compiler/compiler.types.js +2 -0
  115. package/dist/module/compiler/compiler.types.js.map +1 -1
  116. package/dist/module/compiler/container-query.js +6 -1
  117. package/dist/module/compiler/container-query.js.map +1 -1
  118. package/dist/module/compiler/declarations.js +103 -62
  119. package/dist/module/compiler/declarations.js.map +1 -1
  120. package/dist/module/compiler/lightningcss-loader.js +10 -8
  121. package/dist/module/compiler/lightningcss-loader.js.map +1 -1
  122. package/dist/module/compiler/media-query.js +16 -6
  123. package/dist/module/compiler/media-query.js.map +1 -1
  124. package/dist/module/compiler/selector-builder.js +15 -4
  125. package/dist/module/compiler/selector-builder.js.map +1 -1
  126. package/dist/module/compiler/stylesheet.js +11 -3
  127. package/dist/module/compiler/stylesheet.js.map +1 -1
  128. package/dist/module/components/ImageBackground.js +2 -6
  129. package/dist/module/components/ImageBackground.js.map +1 -1
  130. package/dist/module/components/KeyboardAvoidingView.js +2 -3
  131. package/dist/module/components/KeyboardAvoidingView.js.map +1 -1
  132. package/dist/module/components/index.cjs +46 -1
  133. package/dist/module/components/index.cjs.map +1 -1
  134. package/dist/module/jest/index.js +1 -1
  135. package/dist/module/jest/index.js.map +1 -1
  136. package/dist/module/metro/cache-version.js +39 -0
  137. package/dist/module/metro/cache-version.js.map +1 -0
  138. package/dist/module/metro/index.js +2 -0
  139. package/dist/module/metro/index.js.map +1 -1
  140. package/dist/module/metro/metro-transformer.js +16 -3
  141. package/dist/module/metro/metro-transformer.js.map +1 -1
  142. package/dist/module/metro/typescript.js +26 -6
  143. package/dist/module/metro/typescript.js.map +1 -1
  144. package/dist/module/metro/warnings.js +131 -0
  145. package/dist/module/metro/warnings.js.map +1 -0
  146. package/dist/module/native/api.js +15 -11
  147. package/dist/module/native/api.js.map +1 -1
  148. package/dist/module/native/conditions/attributes.js +16 -9
  149. package/dist/module/native/conditions/attributes.js.map +1 -1
  150. package/dist/module/native/conditions/container-query.js +11 -11
  151. package/dist/module/native/conditions/container-query.js.map +1 -1
  152. package/dist/module/native/conditions/media-query.js +1 -1
  153. package/dist/module/native/conditions/media-query.js.map +1 -1
  154. package/dist/module/native/react/interaction.js +10 -5
  155. package/dist/module/native/react/interaction.js.map +1 -1
  156. package/dist/module/native/react/rules.js +13 -6
  157. package/dist/module/native/react/rules.js.map +1 -1
  158. package/dist/module/native/react/useNativeCss.js +63 -14
  159. package/dist/module/native/react/useNativeCss.js.map +1 -1
  160. package/dist/module/native/react/usePassthrough.js +5 -2
  161. package/dist/module/native/react/usePassthrough.js.map +1 -1
  162. package/dist/module/native/reactivity.js +55 -22
  163. package/dist/module/native/reactivity.js.map +1 -1
  164. package/dist/module/native/reanimated.js +15 -3
  165. package/dist/module/native/reanimated.js.map +1 -1
  166. package/dist/module/native/styles/functions/color-mix.js +43 -29
  167. package/dist/module/native/styles/functions/color-mix.js.map +1 -1
  168. package/dist/module/native/styles/functions/filters.js +12 -0
  169. package/dist/module/native/styles/functions/filters.js.map +1 -1
  170. package/dist/module/native/styles/functions/numeric-functions.js +4 -3
  171. package/dist/module/native/styles/functions/numeric-functions.js.map +1 -1
  172. package/dist/module/native/styles/functions/string-functions.js +13 -0
  173. package/dist/module/native/styles/functions/string-functions.js.map +1 -1
  174. package/dist/module/native/styles/functions/transform-functions.js +5 -4
  175. package/dist/module/native/styles/functions/transform-functions.js.map +1 -1
  176. package/dist/module/native/styles/index.js +95 -12
  177. package/dist/module/native/styles/index.js.map +1 -1
  178. package/dist/module/native/styles/resolve.js +10 -6
  179. package/dist/module/native/styles/resolve.js.map +1 -1
  180. package/dist/module/native/styles/scale-factor.js +9 -0
  181. package/dist/module/native/styles/scale-factor.js.map +1 -0
  182. package/dist/module/native/styles/shorthands/animation.js +6 -3
  183. package/dist/module/native/styles/shorthands/animation.js.map +1 -1
  184. package/dist/module/native/styles/shorthands/index.js +1 -0
  185. package/dist/module/native/styles/shorthands/index.js.map +1 -1
  186. package/dist/module/native/styles/shorthands/logical-border-width.js +18 -0
  187. package/dist/module/native/styles/shorthands/logical-border-width.js.map +1 -0
  188. package/dist/module/native/styles/variables.js +55 -43
  189. package/dist/module/native/styles/variables.js.map +1 -1
  190. package/dist/module/native-internal/root.js +18 -7
  191. package/dist/module/native-internal/root.js.map +1 -1
  192. package/dist/module/native-internal/style-collection.js +1 -1
  193. package/dist/module/native-internal/style-collection.js.map +1 -1
  194. package/dist/module/native-internal/variables.js +2 -2
  195. package/dist/module/native-internal/variables.js.map +1 -1
  196. package/dist/module/utilities/dot-notation.types.js +2 -0
  197. package/dist/module/utilities/style-descriptor.js +4 -9
  198. package/dist/module/utilities/style-descriptor.js.map +1 -1
  199. package/dist/module/web/api.js +1 -1
  200. package/dist/module/web/api.js.map +1 -1
  201. package/dist/module/web/assign-style.js +4 -1
  202. package/dist/module/web/assign-style.js.map +1 -1
  203. package/dist/typescript/commonjs/src/babel/helpers.d.ts +2 -1
  204. package/dist/typescript/commonjs/src/babel/helpers.d.ts.map +1 -1
  205. package/dist/typescript/commonjs/src/babel/import-plugin.d.ts.map +1 -1
  206. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts +2 -1
  207. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts.map +1 -1
  208. package/dist/typescript/commonjs/src/babel/react-native.d.ts.map +1 -1
  209. package/dist/typescript/commonjs/src/compiler/atRules.d.ts +4 -1
  210. package/dist/typescript/commonjs/src/compiler/atRules.d.ts.map +1 -1
  211. package/dist/typescript/commonjs/src/compiler/compiler.d.ts +1 -5
  212. package/dist/typescript/commonjs/src/compiler/compiler.d.ts.map +1 -1
  213. package/dist/typescript/commonjs/src/compiler/compiler.types.d.ts +6 -0
  214. package/dist/typescript/commonjs/src/compiler/compiler.types.d.ts.map +1 -1
  215. package/dist/typescript/commonjs/src/compiler/declarations.d.ts +2 -2
  216. package/dist/typescript/commonjs/src/compiler/declarations.d.ts.map +1 -1
  217. package/dist/typescript/commonjs/src/compiler/lightningcss-loader.d.ts.map +1 -1
  218. package/dist/typescript/commonjs/src/compiler/media-query.d.ts +1 -1
  219. package/dist/typescript/commonjs/src/compiler/media-query.d.ts.map +1 -1
  220. package/dist/typescript/commonjs/src/compiler/selector-builder.d.ts.map +1 -1
  221. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts +6 -8
  222. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts.map +1 -1
  223. package/dist/typescript/commonjs/src/components/ImageBackground.d.ts.map +1 -1
  224. package/dist/typescript/commonjs/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  225. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts +1 -1
  226. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  227. package/dist/typescript/commonjs/src/jest/index.d.ts +2 -10
  228. package/dist/typescript/commonjs/src/jest/index.d.ts.map +1 -1
  229. package/dist/typescript/commonjs/src/metro/cache-version.d.ts +8 -0
  230. package/dist/typescript/commonjs/src/metro/cache-version.d.ts.map +1 -0
  231. package/dist/typescript/commonjs/src/metro/index.d.ts +4 -0
  232. package/dist/typescript/commonjs/src/metro/index.d.ts.map +1 -1
  233. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts +9 -4
  234. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts.map +1 -1
  235. package/dist/typescript/commonjs/src/metro/typescript.d.ts.map +1 -1
  236. package/dist/typescript/commonjs/src/metro/warnings.d.ts +13 -0
  237. package/dist/typescript/commonjs/src/metro/warnings.d.ts.map +1 -0
  238. package/dist/typescript/commonjs/src/native/api.d.ts +4 -8
  239. package/dist/typescript/commonjs/src/native/api.d.ts.map +1 -1
  240. package/dist/typescript/commonjs/src/native/conditions/container-query.d.ts.map +1 -1
  241. package/dist/typescript/commonjs/src/native/react/interaction.d.ts +1 -1
  242. package/dist/typescript/commonjs/src/native/react/interaction.d.ts.map +1 -1
  243. package/dist/typescript/commonjs/src/native/react/rules.d.ts.map +1 -1
  244. package/dist/typescript/commonjs/src/native/react/useNativeCss.d.ts.map +1 -1
  245. package/dist/typescript/commonjs/src/native/react/usePassthrough.d.ts.map +1 -1
  246. package/dist/typescript/commonjs/src/native/reactivity.d.ts +14 -3
  247. package/dist/typescript/commonjs/src/native/reactivity.d.ts.map +1 -1
  248. package/dist/typescript/commonjs/src/native/reanimated.d.ts.map +1 -1
  249. package/dist/typescript/commonjs/src/native/styles/functions/color-mix.d.ts.map +1 -1
  250. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts +2 -0
  251. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts.map +1 -1
  252. package/dist/typescript/commonjs/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  253. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts +2 -0
  254. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts.map +1 -1
  255. package/dist/typescript/commonjs/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  256. package/dist/typescript/commonjs/src/native/styles/index.d.ts +2 -2
  257. package/dist/typescript/commonjs/src/native/styles/index.d.ts.map +1 -1
  258. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts +1 -0
  259. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts.map +1 -1
  260. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts +2 -0
  261. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts.map +1 -0
  262. package/dist/typescript/commonjs/src/native/styles/shorthands/animation.d.ts.map +1 -1
  263. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts +1 -0
  264. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts.map +1 -1
  265. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  266. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  267. package/dist/typescript/commonjs/src/native/styles/variables.d.ts.map +1 -1
  268. package/dist/typescript/commonjs/src/native-internal/root.d.ts +12 -0
  269. package/dist/typescript/commonjs/src/native-internal/root.d.ts.map +1 -1
  270. package/dist/typescript/commonjs/src/native-internal/variables.d.ts +1 -1
  271. package/dist/typescript/commonjs/src/native-internal/variables.d.ts.map +1 -1
  272. package/dist/typescript/commonjs/src/runtime.types.d.ts +11 -6
  273. package/dist/typescript/commonjs/src/runtime.types.d.ts.map +1 -1
  274. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts +2 -1
  275. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts.map +1 -1
  276. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts +1 -1
  277. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts.map +1 -1
  278. package/dist/typescript/commonjs/src/web/api.d.ts +5 -5
  279. package/dist/typescript/commonjs/src/web/api.d.ts.map +1 -1
  280. package/dist/typescript/commonjs/src/web/assign-style.d.ts.map +1 -1
  281. package/dist/typescript/module/src/babel/helpers.d.ts +2 -1
  282. package/dist/typescript/module/src/babel/helpers.d.ts.map +1 -1
  283. package/dist/typescript/module/src/babel/import-plugin.d.ts +1 -1
  284. package/dist/typescript/module/src/babel/import-plugin.d.ts.map +1 -1
  285. package/dist/typescript/module/src/babel/react-native-web.d.ts +2 -1
  286. package/dist/typescript/module/src/babel/react-native-web.d.ts.map +1 -1
  287. package/dist/typescript/module/src/babel/react-native.d.ts.map +1 -1
  288. package/dist/typescript/module/src/compiler/atRules.d.ts +6 -3
  289. package/dist/typescript/module/src/compiler/atRules.d.ts.map +1 -1
  290. package/dist/typescript/module/src/compiler/compiler.d.ts +3 -7
  291. package/dist/typescript/module/src/compiler/compiler.d.ts.map +1 -1
  292. package/dist/typescript/module/src/compiler/compiler.types.d.ts +7 -1
  293. package/dist/typescript/module/src/compiler/compiler.types.d.ts.map +1 -1
  294. package/dist/typescript/module/src/compiler/container-query.d.ts +2 -2
  295. package/dist/typescript/module/src/compiler/container-query.d.ts.map +1 -1
  296. package/dist/typescript/module/src/compiler/declarations.d.ts +4 -4
  297. package/dist/typescript/module/src/compiler/declarations.d.ts.map +1 -1
  298. package/dist/typescript/module/src/compiler/index.d.ts +2 -2
  299. package/dist/typescript/module/src/compiler/index.d.ts.map +1 -1
  300. package/dist/typescript/module/src/compiler/inline-variables.d.ts +1 -1
  301. package/dist/typescript/module/src/compiler/inline-variables.d.ts.map +1 -1
  302. package/dist/typescript/module/src/compiler/keyframes.d.ts +2 -2
  303. package/dist/typescript/module/src/compiler/keyframes.d.ts.map +1 -1
  304. package/dist/typescript/module/src/compiler/lightningcss-loader.d.ts.map +1 -1
  305. package/dist/typescript/module/src/compiler/media-query.d.ts +3 -3
  306. package/dist/typescript/module/src/compiler/media-query.d.ts.map +1 -1
  307. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts +1 -1
  308. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts.map +1 -1
  309. package/dist/typescript/module/src/compiler/selector-builder.d.ts +1 -1
  310. package/dist/typescript/module/src/compiler/selector-builder.d.ts.map +1 -1
  311. package/dist/typescript/module/src/compiler/selectors.d.ts +2 -2
  312. package/dist/typescript/module/src/compiler/selectors.d.ts.map +1 -1
  313. package/dist/typescript/module/src/compiler/stylesheet.d.ts +6 -8
  314. package/dist/typescript/module/src/compiler/stylesheet.d.ts.map +1 -1
  315. package/dist/typescript/module/src/components/ImageBackground.d.ts.map +1 -1
  316. package/dist/typescript/module/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  317. package/dist/typescript/module/src/components/index.d.ts +16 -16
  318. package/dist/typescript/module/src/components/index.d.ts.map +1 -1
  319. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts +1 -1
  320. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  321. package/dist/typescript/module/src/jest/index.d.ts +2 -10
  322. package/dist/typescript/module/src/jest/index.d.ts.map +1 -1
  323. package/dist/typescript/module/src/metro/cache-version.d.ts +8 -0
  324. package/dist/typescript/module/src/metro/cache-version.d.ts.map +1 -0
  325. package/dist/typescript/module/src/metro/index.d.ts +5 -1
  326. package/dist/typescript/module/src/metro/index.d.ts.map +1 -1
  327. package/dist/typescript/module/src/metro/metro-transformer.d.ts +10 -5
  328. package/dist/typescript/module/src/metro/metro-transformer.d.ts.map +1 -1
  329. package/dist/typescript/module/src/metro/typescript.d.ts.map +1 -1
  330. package/dist/typescript/module/src/metro/warnings.d.ts +13 -0
  331. package/dist/typescript/module/src/metro/warnings.d.ts.map +1 -0
  332. package/dist/typescript/module/src/native/api.d.ts +5 -9
  333. package/dist/typescript/module/src/native/api.d.ts.map +1 -1
  334. package/dist/typescript/module/src/native/conditions/attributes.d.ts +1 -1
  335. package/dist/typescript/module/src/native/conditions/attributes.d.ts.map +1 -1
  336. package/dist/typescript/module/src/native/conditions/container-query.d.ts +2 -2
  337. package/dist/typescript/module/src/native/conditions/container-query.d.ts.map +1 -1
  338. package/dist/typescript/module/src/native/conditions/guards.d.ts +2 -2
  339. package/dist/typescript/module/src/native/conditions/guards.d.ts.map +1 -1
  340. package/dist/typescript/module/src/native/conditions/index.d.ts +3 -3
  341. package/dist/typescript/module/src/native/conditions/index.d.ts.map +1 -1
  342. package/dist/typescript/module/src/native/conditions/media-query.d.ts +1 -1
  343. package/dist/typescript/module/src/native/conditions/media-query.d.ts.map +1 -1
  344. package/dist/typescript/module/src/native/index.d.ts +3 -3
  345. package/dist/typescript/module/src/native/index.d.ts.map +1 -1
  346. package/dist/typescript/module/src/native/react/interaction.d.ts +2 -2
  347. package/dist/typescript/module/src/native/react/interaction.d.ts.map +1 -1
  348. package/dist/typescript/module/src/native/react/rules.d.ts +2 -2
  349. package/dist/typescript/module/src/native/react/rules.d.ts.map +1 -1
  350. package/dist/typescript/module/src/native/react/useNativeCss.d.ts +4 -4
  351. package/dist/typescript/module/src/native/react/useNativeCss.d.ts.map +1 -1
  352. package/dist/typescript/module/src/native/react/usePassthrough.d.ts +1 -1
  353. package/dist/typescript/module/src/native/react/usePassthrough.d.ts.map +1 -1
  354. package/dist/typescript/module/src/native/reactivity.d.ts +14 -3
  355. package/dist/typescript/module/src/native/reactivity.d.ts.map +1 -1
  356. package/dist/typescript/module/src/native/reanimated.d.ts.map +1 -1
  357. package/dist/typescript/module/src/native/styles/calculate-props.d.ts +2 -2
  358. package/dist/typescript/module/src/native/styles/calculate-props.d.ts.map +1 -1
  359. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts +1 -1
  360. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts.map +1 -1
  361. package/dist/typescript/module/src/native/styles/functions/calc.d.ts +1 -1
  362. package/dist/typescript/module/src/native/styles/functions/calc.d.ts.map +1 -1
  363. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts +1 -1
  364. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts.map +1 -1
  365. package/dist/typescript/module/src/native/styles/functions/filters.d.ts +3 -1
  366. package/dist/typescript/module/src/native/styles/functions/filters.d.ts.map +1 -1
  367. package/dist/typescript/module/src/native/styles/functions/index.d.ts +8 -8
  368. package/dist/typescript/module/src/native/styles/functions/index.d.ts.map +1 -1
  369. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts +1 -1
  370. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  371. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts +1 -1
  372. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts.map +1 -1
  373. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts +3 -1
  374. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts.map +1 -1
  375. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts +1 -1
  376. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  377. package/dist/typescript/module/src/native/styles/index.d.ts +7 -7
  378. package/dist/typescript/module/src/native/styles/index.d.ts.map +1 -1
  379. package/dist/typescript/module/src/native/styles/line-height.d.ts +1 -1
  380. package/dist/typescript/module/src/native/styles/line-height.d.ts.map +1 -1
  381. package/dist/typescript/module/src/native/styles/resolve.d.ts +4 -3
  382. package/dist/typescript/module/src/native/styles/resolve.d.ts.map +1 -1
  383. package/dist/typescript/module/src/native/styles/scale-factor.d.ts +2 -0
  384. package/dist/typescript/module/src/native/styles/scale-factor.d.ts.map +1 -0
  385. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts +1 -1
  386. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts.map +1 -1
  387. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts +2 -2
  388. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts.map +1 -1
  389. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts +1 -1
  390. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts.map +1 -1
  391. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts +1 -1
  392. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts.map +1 -1
  393. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts +6 -5
  394. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts.map +1 -1
  395. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  396. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  397. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts +1 -1
  398. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts.map +1 -1
  399. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts +1 -1
  400. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts.map +1 -1
  401. package/dist/typescript/module/src/native/styles/units.d.ts +1 -1
  402. package/dist/typescript/module/src/native/styles/units.d.ts.map +1 -1
  403. package/dist/typescript/module/src/native/styles/variables.d.ts +2 -2
  404. package/dist/typescript/module/src/native/styles/variables.d.ts.map +1 -1
  405. package/dist/typescript/module/src/native-internal/index.d.ts +3 -3
  406. package/dist/typescript/module/src/native-internal/index.d.ts.map +1 -1
  407. package/dist/typescript/module/src/native-internal/root.d.ts +13 -1
  408. package/dist/typescript/module/src/native-internal/root.d.ts.map +1 -1
  409. package/dist/typescript/module/src/native-internal/style-collection.d.ts +2 -2
  410. package/dist/typescript/module/src/native-internal/style-collection.d.ts.map +1 -1
  411. package/dist/typescript/module/src/native-internal/variables.d.ts +2 -2
  412. package/dist/typescript/module/src/native-internal/variables.d.ts.map +1 -1
  413. package/dist/typescript/module/src/runtime.d.ts +1 -1
  414. package/dist/typescript/module/src/runtime.d.ts.map +1 -1
  415. package/dist/typescript/module/src/runtime.native.d.ts +1 -1
  416. package/dist/typescript/module/src/runtime.native.d.ts.map +1 -1
  417. package/dist/typescript/module/src/runtime.types.d.ts +11 -6
  418. package/dist/typescript/module/src/runtime.types.d.ts.map +1 -1
  419. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts +2 -1
  420. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts.map +1 -1
  421. package/dist/typescript/module/src/utilities/index.d.ts +3 -3
  422. package/dist/typescript/module/src/utilities/index.d.ts.map +1 -1
  423. package/dist/typescript/module/src/utilities/specificity.d.ts +2 -2
  424. package/dist/typescript/module/src/utilities/specificity.d.ts.map +1 -1
  425. package/dist/typescript/module/src/utilities/style-descriptor.d.ts +1 -1
  426. package/dist/typescript/module/src/utilities/style-descriptor.d.ts.map +1 -1
  427. package/dist/typescript/module/src/web/api.d.ts +5 -5
  428. package/dist/typescript/module/src/web/api.d.ts.map +1 -1
  429. package/dist/typescript/module/src/web/assign-style.d.ts.map +1 -1
  430. package/dist/typescript/module/src/web/index.d.ts +3 -3
  431. package/dist/typescript/module/src/web/index.d.ts.map +1 -1
  432. package/node/babel.mjs +4 -0
  433. package/node/compiler.mjs +2 -0
  434. package/node/metro.mjs +2 -0
  435. package/package.json +63 -28
  436. package/src/babel/helpers.ts +8 -1
  437. package/src/babel/import-plugin.ts +31 -16
  438. package/src/babel/react-native-web.ts +32 -4
  439. package/src/babel/react-native.ts +9 -4
  440. package/src/compiler/atRules.ts +44 -0
  441. package/src/compiler/compiler.ts +78 -47
  442. package/src/compiler/compiler.types.ts +9 -0
  443. package/src/compiler/container-query.ts +8 -3
  444. package/src/compiler/declarations.ts +190 -101
  445. package/src/compiler/lightningcss-loader.ts +16 -15
  446. package/src/compiler/media-query.ts +20 -9
  447. package/src/compiler/selector-builder.ts +31 -4
  448. package/src/compiler/stylesheet.ts +17 -10
  449. package/src/components/ImageBackground.tsx +2 -6
  450. package/src/components/KeyboardAvoidingView.tsx +2 -3
  451. package/src/components/index.cts +46 -1
  452. package/src/jest/index.ts +1 -1
  453. package/src/metro/cache-version.ts +48 -0
  454. package/src/metro/index.ts +7 -0
  455. package/src/metro/metro-transformer.ts +26 -8
  456. package/src/metro/typescript.ts +53 -6
  457. package/src/metro/warnings.ts +187 -0
  458. package/src/native/api.tsx +22 -17
  459. package/src/native/conditions/attributes.ts +26 -9
  460. package/src/native/conditions/container-query.ts +11 -9
  461. package/src/native/conditions/media-query.ts +1 -1
  462. package/src/native/react/interaction.ts +11 -6
  463. package/src/native/react/rules.ts +13 -5
  464. package/src/native/react/useNativeCss.ts +69 -14
  465. package/src/native/react/usePassthrough.ts +3 -2
  466. package/src/native/reactivity.ts +76 -24
  467. package/src/native/reanimated.ts +24 -5
  468. package/src/native/styles/functions/color-mix.ts +45 -39
  469. package/src/native/styles/functions/filters.ts +14 -0
  470. package/src/native/styles/functions/numeric-functions.ts +7 -6
  471. package/src/native/styles/functions/string-functions.ts +18 -0
  472. package/src/native/styles/functions/transform-functions.ts +5 -4
  473. package/src/native/styles/index.ts +100 -13
  474. package/src/native/styles/resolve.ts +15 -11
  475. package/src/native/styles/scale-factor.ts +6 -0
  476. package/src/native/styles/shorthands/animation.ts +8 -2
  477. package/src/native/styles/shorthands/index.ts +1 -0
  478. package/src/native/styles/shorthands/logical-border-width.ts +32 -0
  479. package/src/native/styles/variables.ts +48 -38
  480. package/src/native-internal/root.ts +40 -13
  481. package/src/native-internal/style-collection.ts +1 -1
  482. package/src/native-internal/variables.tsx +6 -4
  483. package/src/runtime.types.ts +17 -15
  484. package/src/utilities/dot-notation.types.ts +4 -3
  485. package/src/utilities/style-descriptor.ts +11 -16
  486. package/src/web/api.tsx +6 -11
  487. package/src/web/assign-style.ts +2 -1
  488. package/types.d.ts +0 -20
  489. package/dist/commonjs/compiler/inheritance.test.js +0 -78
  490. package/dist/commonjs/compiler/inheritance.test.js.map +0 -1
  491. package/dist/module/compiler/inheritance.test.js +0 -78
  492. package/dist/module/compiler/inheritance.test.js.map +0 -1
  493. package/dist/typescript/commonjs/.config/eslint.config.d.mts +0 -3
  494. package/dist/typescript/commonjs/.config/eslint.config.d.mts.map +0 -1
  495. package/dist/typescript/commonjs/eslint.config.d.mts +0 -2
  496. package/dist/typescript/commonjs/eslint.config.d.mts.map +0 -1
  497. package/dist/typescript/commonjs/example/app.config.d.ts +0 -4
  498. package/dist/typescript/commonjs/example/app.config.d.ts.map +0 -1
  499. package/dist/typescript/commonjs/example/index.d.ts +0 -2
  500. package/dist/typescript/commonjs/example/index.d.ts.map +0 -1
  501. package/dist/typescript/commonjs/example/metro.config.d.ts +0 -3
  502. package/dist/typescript/commonjs/example/metro.config.d.ts.map +0 -1
  503. package/dist/typescript/commonjs/example/postcss.config.d.mts +0 -7
  504. package/dist/typescript/commonjs/example/postcss.config.d.mts.map +0 -1
  505. package/dist/typescript/commonjs/example/src/App.d.ts +0 -3
  506. package/dist/typescript/commonjs/example/src/App.d.ts.map +0 -1
  507. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts +0 -2
  508. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts.map +0 -1
  509. package/dist/typescript/module/.config/eslint.config.d.mts +0 -3
  510. package/dist/typescript/module/.config/eslint.config.d.mts.map +0 -1
  511. package/dist/typescript/module/eslint.config.d.mts +0 -2
  512. package/dist/typescript/module/eslint.config.d.mts.map +0 -1
  513. package/dist/typescript/module/example/app.config.d.ts +0 -4
  514. package/dist/typescript/module/example/app.config.d.ts.map +0 -1
  515. package/dist/typescript/module/example/index.d.ts +0 -2
  516. package/dist/typescript/module/example/index.d.ts.map +0 -1
  517. package/dist/typescript/module/example/metro.config.d.ts +0 -3
  518. package/dist/typescript/module/example/metro.config.d.ts.map +0 -1
  519. package/dist/typescript/module/example/postcss.config.d.mts +0 -7
  520. package/dist/typescript/module/example/postcss.config.d.mts.map +0 -1
  521. package/dist/typescript/module/example/src/App.d.ts +0 -3
  522. package/dist/typescript/module/example/src/App.d.ts.map +0 -1
  523. package/dist/typescript/module/src/compiler/inheritance.test.d.ts +0 -2
  524. package/dist/typescript/module/src/compiler/inheritance.test.d.ts.map +0 -1
  525. package/src/compiler/inheritance.test.ts +0 -121
@@ -63,9 +63,10 @@ export function getClassNameSelectors(
63
63
  } else if (isUniversalSelector(selector)) {
64
64
  return [{ type: "universalVariables" }];
65
65
  } else {
66
+ // A nested rule reads its parent's selector list again, so the list is never reversed in place
66
67
  return (
67
68
  parseComponents(
68
- selector.reverse(),
69
+ selector.toReversed(),
69
70
  options,
70
71
  root,
71
72
  root,
@@ -260,7 +261,12 @@ function parseComponents(
260
261
  ? // [data-*] are turned into `dataSet` queries
261
262
  ["d", toRNProperty(component.name.replace("data-", ""))]
262
263
  : // Everything else is turned into `attribute` queries
263
- ["a", toRNProperty(component.name)];
264
+ [
265
+ "a",
266
+ component.name.startsWith("aria-")
267
+ ? component.name
268
+ : toRNProperty(component.name),
269
+ ];
264
270
  if (component.operation) {
265
271
  let operator: AttrSelectorOperator | undefined;
266
272
  switch (component.operation.operator) {
@@ -289,6 +295,15 @@ function parseComponents(
289
295
  if (operator) {
290
296
  // Append the operator onto the attribute query
291
297
  attributeQuery.push(operator, component.operation.value);
298
+ if (
299
+ component.operation.caseSensitivity === "ascii-case-insensitive"
300
+ ) {
301
+ attributeQuery.push("i");
302
+ } else if (
303
+ component.operation.caseSensitivity === "explicit-case-sensitive"
304
+ ) {
305
+ attributeQuery.push("s");
306
+ }
292
307
  }
293
308
  }
294
309
  getAttributeQuery(ref).push(attributeQuery);
@@ -311,7 +326,7 @@ function parseComponents(
311
326
  getAttributeQuery(ref).unshift([
312
327
  "a",
313
328
  "className",
314
- "*=",
329
+ "~=",
315
330
  component.name,
316
331
  ]);
317
332
  } else {
@@ -464,11 +479,23 @@ function parseIsWhereComponents(
464
479
  ? // [data-*] are turned into `dataSet` queries
465
480
  ["d", toRNProperty(component.name.replace("data-", ""))]
466
481
  : // Everything else is turned into `attribute` queries
467
- ["a", toRNProperty(component.name)];
482
+ [
483
+ "a",
484
+ component.name.startsWith("aria-")
485
+ ? component.name
486
+ : toRNProperty(component.name),
487
+ ];
468
488
  if (component.operation) {
469
489
  const operator = operatorMap[component.operation.operator];
470
490
  // Append the operator onto the attribute query
471
491
  attributeQuery.push(operator, component.operation.value);
492
+ if (component.operation.caseSensitivity === "ascii-case-insensitive") {
493
+ attributeQuery.push("i");
494
+ } else if (
495
+ component.operation.caseSensitivity === "explicit-case-sensitive"
496
+ ) {
497
+ attributeQuery.push("s");
498
+ }
472
499
  }
473
500
  queries ??= [{ specificity: [] }];
474
501
  for (const query of queries) {
@@ -9,6 +9,7 @@ import type {
9
9
  AnimationKeyframes,
10
10
  AnimationRecord,
11
11
  CompilerOptions,
12
+ CompilerWarnings,
12
13
  ContainerQuery,
13
14
  MediaCondition,
14
15
  ReactNativeCssStyleSheet,
@@ -68,8 +69,9 @@ export class StylesheetBuilder {
68
69
  ruleOrder: number;
69
70
  warningProperty?: string;
70
71
  warningProperties: string[];
71
- warningValues: Record<string, unknown[]>;
72
+ warningValues: Record<string, string[]>;
72
73
  warningFunctions: string[];
74
+ syntaxWarnings: Set<string>;
73
75
  } = {
74
76
  ruleSets: {},
75
77
  rem: 14,
@@ -77,6 +79,7 @@ export class StylesheetBuilder {
77
79
  warningProperties: [],
78
80
  warningValues: {},
79
81
  warningFunctions: [],
82
+ syntaxWarnings: new Set(),
80
83
  },
81
84
  private selectors: SelectorList = [],
82
85
  ) {}
@@ -198,18 +201,17 @@ export class StylesheetBuilder {
198
201
  }
199
202
 
200
203
  addWarning(type: "property" | "value", property: string): void;
201
- addWarning(type: "style", property: string, value: unknown): void;
204
+ addWarning(type: "style", property: string, value: string): void;
202
205
  addWarning(
203
206
  type: "property" | "style" | "value",
204
207
  property: string,
205
- value?: unknown,
208
+ value: string = property,
206
209
  ): void {
207
210
  switch (type) {
208
211
  case "property":
209
212
  this.shared.warningProperties.push(property);
210
213
  break;
211
214
  case "value": {
212
- value = property;
213
215
  property = this.shared.warningProperty ?? "";
214
216
 
215
217
  if (!property) {
@@ -227,12 +229,13 @@ export class StylesheetBuilder {
227
229
  }
228
230
  }
229
231
 
230
- getWarnings() {
231
- const result: {
232
- properties?: string[];
233
- values?: Record<string, unknown[]>;
234
- functions?: string[];
235
- } = {};
232
+ // A lightningcss message carries no position, so a repeated mistake is one entry
233
+ addSyntaxWarning(message: string): void {
234
+ this.shared.syntaxWarnings.add(message);
235
+ }
236
+
237
+ getWarnings(): CompilerWarnings {
238
+ const result: CompilerWarnings = {};
236
239
 
237
240
  if (this.shared.warningProperties.length) {
238
241
  result.properties = this.shared.warningProperties;
@@ -246,6 +249,10 @@ export class StylesheetBuilder {
246
249
  result.functions = this.shared.warningFunctions;
247
250
  }
248
251
 
252
+ if (this.shared.syntaxWarnings.size) {
253
+ result.syntax = [...this.shared.syntaxWarnings];
254
+ }
255
+
249
256
  return result;
250
257
  }
251
258
 
@@ -12,12 +12,8 @@ import {
12
12
  import { copyComponentProperties } from "./copyComponentProperties";
13
13
 
14
14
  const mapping: StyledConfiguration<typeof RNImageBackground> = {
15
- className: {
16
- target: "style",
17
- nativeStyleMapping: {
18
- backgroundColor: true,
19
- },
20
- },
15
+ className: "style",
16
+ imageClassName: "imageStyle",
21
17
  };
22
18
 
23
19
  export const ImageBackground = copyComponentProperties(
@@ -12,9 +12,8 @@ import {
12
12
  import { copyComponentProperties } from "./copyComponentProperties";
13
13
 
14
14
  const mapping: StyledConfiguration<typeof RNKeyboardAvoidingView> = {
15
- className: {
16
- target: "style",
17
- },
15
+ className: "style",
16
+ contentContainerClassName: "contentContainerStyle",
18
17
  };
19
18
 
20
19
  export const KeyboardAvoidingView = copyComponentProperties(
@@ -90,7 +90,7 @@ module.exports = {
90
90
  return require("react-native").TouchableNativeFeedback;
91
91
  },
92
92
  get TouchableWithoutFeedback() {
93
- return require("react-native").TouchableWithoutFeedback;
93
+ return require("./TouchableWithoutFeedback").TouchableWithoutFeedback;
94
94
  },
95
95
  get VirtualizedSectionList() {
96
96
  return require("react-native").VirtualizedSectionList;
@@ -260,4 +260,49 @@ module.exports = {
260
260
  get VirtualViewMode() {
261
261
  return require("react-native").VirtualViewMode;
262
262
  },
263
+ get EventEmitter() {
264
+ return require("react-native").EventEmitter;
265
+ },
266
+ get unstable_NativeText() {
267
+ return require("react-native").unstable_NativeText;
268
+ },
269
+ get unstable_NativeView() {
270
+ return require("react-native").unstable_NativeView;
271
+ },
272
+ get unstable_VirtualArray() {
273
+ return require("react-native").unstable_VirtualArray;
274
+ },
275
+ get unstable_createVirtualCollectionView() {
276
+ return require("react-native").unstable_createVirtualCollectionView;
277
+ },
278
+ get unstable_VirtualColumn() {
279
+ return require("react-native").unstable_VirtualColumn;
280
+ },
281
+ get unstable_VirtualColumnGenerator() {
282
+ return require("react-native").unstable_VirtualColumnGenerator;
283
+ },
284
+ get unstable_VirtualRow() {
285
+ return require("react-native").unstable_VirtualRow;
286
+ },
287
+ get unstable_getScrollParent() {
288
+ return require("react-native").unstable_getScrollParent;
289
+ },
290
+ get unstable_DEFAULT_INITIAL_NUM_TO_RENDER() {
291
+ return require("react-native").unstable_DEFAULT_INITIAL_NUM_TO_RENDER;
292
+ },
293
+ get NativeComponentRegistry() {
294
+ return require("react-native").NativeComponentRegistry;
295
+ },
296
+ get ReactNativeVersion() {
297
+ return require("react-native").ReactNativeVersion;
298
+ },
299
+ get useAnimatedValueXY() {
300
+ return require("react-native").useAnimatedValueXY;
301
+ },
302
+ get useAnimatedColor() {
303
+ return require("react-native").useAnimatedColor;
304
+ },
305
+ get usePressability() {
306
+ return require("react-native").usePressability;
307
+ },
263
308
  };
package/src/jest/index.ts CHANGED
@@ -21,7 +21,7 @@ export const testID = "react-native-css";
21
21
  beforeEach(() => {
22
22
  StyleCollection.styles.clear();
23
23
  dimensions.set(Dimensions.get("window"));
24
- Appearance.setColorScheme(null);
24
+ Appearance.setColorScheme("unspecified");
25
25
  colorScheme.set(null);
26
26
  });
27
27
 
@@ -0,0 +1,48 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readdirSync, readFileSync } from "node:fs";
3
+ import { dirname, join, relative } from "node:path";
4
+
5
+ import type { CompilerOptions } from "../compiler";
6
+
7
+ /**
8
+ * Expo's supervising worker bypasses a custom worker's getCacheKey hook.
9
+ * Put the engine fingerprint in Metro's top level cacheVersion instead so
10
+ * both supervised and direct workers invalidate compiled CSS after an update.
11
+ */
12
+ export function getCacheVersion(
13
+ cacheVersion: string | undefined,
14
+ options: CompilerOptions | undefined,
15
+ ) {
16
+ const root = dirname(__dirname);
17
+ const hash = createHash("sha256");
18
+
19
+ function visit(directory: string) {
20
+ for (const entry of readdirSync(directory, { withFileTypes: true }).sort(
21
+ (a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0),
22
+ )) {
23
+ const file = join(directory, entry.name);
24
+ if (entry.isDirectory()) {
25
+ if (!["__tests__", "__fixtures__", "__mocks__"].includes(entry.name)) {
26
+ visit(file);
27
+ }
28
+ } else if (
29
+ entry.isFile() &&
30
+ /\.[cm]?[jt]sx?$/.test(entry.name) &&
31
+ !/\.d\.[cm]?ts$/.test(entry.name) &&
32
+ !/\.(test|spec)\.[cm]?[jt]sx?$/.test(entry.name)
33
+ ) {
34
+ // Relative names keep identical installations independent of location.
35
+ hash.update(relative(root, file).split("\\").join("/"));
36
+ hash.update("\0");
37
+ hash.update(readFileSync(file));
38
+ hash.update("\0");
39
+ }
40
+ }
41
+ }
42
+
43
+ // Cover transitive engine helpers as well as the transformer itself. Maps,
44
+ // declarations, and tests do not affect the generated application code.
45
+ visit(root);
46
+ hash.update(JSON.stringify(options ?? {}));
47
+ return `${cacheVersion ?? ""}:react-native-css:${hash.digest("hex")}`;
48
+ }
@@ -4,8 +4,10 @@ import { versions } from "node:process";
4
4
  import type { MetroConfig } from "metro-config";
5
5
 
6
6
  import { type CompilerOptions } from "../compiler";
7
+ import { getCacheVersion } from "./cache-version";
7
8
  import { nativeResolver, webResolver } from "./resolver";
8
9
  import { setupTypeScript } from "./typescript";
10
+ import type { WarningLevel } from "./warnings";
9
11
 
10
12
  export interface WithReactNativeCSSOptions extends CompilerOptions {
11
13
  /* Specify the path to the TypeScript environment file. Defaults types-env.d.ts */
@@ -15,8 +17,12 @@ export interface WithReactNativeCSSOptions extends CompilerOptions {
15
17
  /** Add className to all React Native primitives. Defaults false */
16
18
  globalClassNamePolyfill?: boolean;
17
19
  hexColors?: boolean;
20
+ /** How native builds print the compiler's warnings. Defaults "summary" */
21
+ warnings?: WarningLevel;
18
22
  }
19
23
 
24
+ export type { WarningLevel } from "./warnings";
25
+
20
26
  const metroOverrideResolution = {
21
27
  type: "sourceFile",
22
28
  filePath: require.resolve("./override"),
@@ -47,6 +53,7 @@ export function withReactNativeCSS<
47
53
 
48
54
  return {
49
55
  ...config,
56
+ cacheVersion: getCacheVersion(config.cacheVersion, options),
50
57
  transformerPath: require.resolve("./metro-transformer"),
51
58
  transformer: {
52
59
  ...config.transformer,
@@ -2,24 +2,30 @@ import { unstable_transformerPath } from "@expo/metro-config";
2
2
  import type {
3
3
  JsTransformerConfig,
4
4
  JsTransformOptions,
5
- TransformResponse,
6
5
  } from "metro-transform-worker";
7
6
 
8
7
  import { compile, type CompilerOptions } from "../compiler";
9
8
  import { getNativeInjectionCode } from "./injection-code";
9
+ import { reportCompilerWarnings, type WarningLevel } from "./warnings";
10
+
11
+ type TransformResponse = Awaited<
12
+ ReturnType<typeof import("metro-transform-worker").transform>
13
+ >;
10
14
 
11
15
  const worker =
12
16
  // eslint-disable-next-line @typescript-eslint/no-require-imports
13
17
  require(unstable_transformerPath) as typeof import("metro-transform-worker");
14
18
 
15
19
  export async function transform(
16
- config: JsTransformerConfig,
20
+ config: JsTransformerConfig & {
21
+ reactNativeCSS?:
22
+ | (CompilerOptions & { warnings?: WarningLevel | undefined })
23
+ | undefined;
24
+ },
17
25
  projectRoot: string,
18
26
  filePath: string,
19
27
  data: Buffer,
20
- options: JsTransformOptions & {
21
- reactNativeCSS?: CompilerOptions | undefined;
22
- },
28
+ options: JsTransformOptions,
23
29
  ): Promise<TransformResponse> {
24
30
  const isCss = options.type !== "asset" && /\.(s?css|sass)$/.test(filePath);
25
31
 
@@ -36,11 +42,23 @@ export async function transform(
36
42
 
37
43
  const css = cssFile.output[0].data.css.code.toString();
38
44
 
39
- const productionJS = compile(css, {
40
- ...options.reactNativeCSS,
45
+ const { warnings: warningLevel, ...compilerOptions } =
46
+ config.reactNativeCSS ?? {};
47
+
48
+ const compiled = compile(css, {
49
+ ...compilerOptions,
41
50
  filename: filePath,
42
51
  projectRoot: projectRoot,
43
- }).stylesheet();
52
+ });
53
+
54
+ const productionJS = compiled.stylesheet();
55
+
56
+ // Nothing downstream of the transformer sees the compile result, so this is the one place a build can report it
57
+ reportCompilerWarnings(compiled.warnings(), {
58
+ filename: filePath,
59
+ projectRoot,
60
+ level: warningLevel,
61
+ });
44
62
 
45
63
  data = Buffer.from(getNativeInjectionCode([], [productionJS]));
46
64
 
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable */
2
2
  import { existsSync, readFileSync, writeFileSync } from "fs";
3
+ import { dirname, relative, resolve } from "node:path";
3
4
 
4
5
  import { CommentArray, parse, stringify } from "comment-json";
5
6
 
@@ -16,11 +17,17 @@ export function setupTypeScript(
16
17
  }
17
18
 
18
19
  const configFileName = ts.findConfigFile(
19
- "./",
20
+ resolve("."),
20
21
  ts.sys.fileExists,
21
22
  "tsconfig.json",
22
23
  );
23
24
 
25
+ if (!configFileName) return;
26
+
27
+ const configDirectory = dirname(resolve(configFileName));
28
+ const environmentFile = resolve(envPath);
29
+ const relativeEnvironmentFile = relative(configDirectory, environmentFile);
30
+
24
31
  const userConfig = parse(
25
32
  readFileSync(configFileName, {
26
33
  encoding: "utf-8",
@@ -30,7 +37,8 @@ export function setupTypeScript(
30
37
  if (
31
38
  typeof userConfig !== "object" ||
32
39
  !userConfig ||
33
- Array.isArray(userConfig)
40
+ Array.isArray(userConfig) ||
41
+ Object.prototype.toString.call(userConfig) !== "[object Object]"
34
42
  ) {
35
43
  return;
36
44
  }
@@ -48,25 +56,64 @@ export function setupTypeScript(
48
56
  output.push(`Created ${cyan(envPath)}`);
49
57
  }
50
58
 
51
- userConfig.include ??= new CommentArray(envPath);
52
59
  if (
53
60
  Array.isArray(userConfig.include) &&
54
- !userConfig.include.includes(envPath)
61
+ !(
62
+ Array.isArray(userConfig.files) &&
63
+ userConfig.files.includes(relativeEnvironmentFile)
64
+ ) &&
65
+ !userConfig.include.includes(relativeEnvironmentFile)
55
66
  ) {
56
- userConfig.include.push(envPath);
67
+ userConfig.include.push(relativeEnvironmentFile);
57
68
  updatedConfig = true;
58
69
  output.push(
59
70
  `Updated ${configFileName} to include the ${cyan(envPath)} file`,
60
71
  );
61
72
  }
62
73
 
74
+ // Resolve inheritance on a copy so comments and the user's own settings survive.
75
+ const effectiveConfig = ts.parseJsonConfigFileContent(
76
+ JSON.parse(JSON.stringify(userConfig)),
77
+ ts.sys,
78
+ configDirectory,
79
+ {},
80
+ resolve(configFileName),
81
+ );
82
+ if (
83
+ !effectiveConfig.fileNames.some(
84
+ (file: string) => resolve(file) === environmentFile,
85
+ )
86
+ ) {
87
+ // A files entry can include the declaration even when inherited include or
88
+ // exclude settings omit it. Preserve the original implicit include as well.
89
+ if (
90
+ effectiveConfig.raw.include === undefined &&
91
+ effectiveConfig.raw.files === undefined
92
+ ) {
93
+ userConfig.include = new CommentArray("**/*");
94
+ }
95
+ userConfig.files ??= new CommentArray(
96
+ ...(effectiveConfig.raw.files || []),
97
+ );
98
+ if (
99
+ Array.isArray(userConfig.files) &&
100
+ !userConfig.files.includes(relativeEnvironmentFile)
101
+ ) {
102
+ userConfig.files.push(relativeEnvironmentFile);
103
+ updatedConfig = true;
104
+ output.push(
105
+ `Updated ${configFileName} to include the ${cyan(envPath)} file`,
106
+ );
107
+ }
108
+ }
109
+
63
110
  if (updatedConfig) {
64
111
  writeFileSync(configFileName, stringify(userConfig, null, 2));
65
112
  }
66
113
 
67
114
  if (output.length) {
68
115
  console.log(
69
- `${cyan(bold("NativeWind"))} made the following changes to your project to support TypeScript:\n - ${output.join("\n - ")}`,
116
+ `${cyan(bold("Nativewind"))} made the following changes to your project to support TypeScript:\n - ${output.join("\n - ")}`,
70
117
  );
71
118
  }
72
119
  } catch {}
@@ -0,0 +1,187 @@
1
+ import { relative } from "path";
2
+
3
+ import type { CompilerWarnings } from "../compiler/compiler.types";
4
+
5
+ /** "summary" prints one capped block per CSS file, "verbose" lists every entry, "none" prints nothing */
6
+ export type WarningLevel = "none" | "summary" | "verbose";
7
+
8
+ const SUMMARY_ENTRY_LIMIT = 10;
9
+ const SUMMARY_VALUE_LIMIT = 5;
10
+ const SUMMARY_VALUE_LENGTH_LIMIT = 60;
11
+
12
+ const PREFIX = "react-native-css";
13
+
14
+ // Metro re-transforms a CSS file on every rebuild, so a file's block prints again only when its warnings change
15
+ const lastReportedByFile = new Map<string, string>();
16
+
17
+ // Metro forwards each transform worker's stderr to the bundler's terminal, and a warning never fails the build
18
+ export function reportCompilerWarnings(
19
+ warnings: CompilerWarnings,
20
+ options: {
21
+ filename: string;
22
+ projectRoot: string;
23
+ level?: WarningLevel | undefined;
24
+ },
25
+ ): void {
26
+ const { filename, projectRoot, level = "summary" } = options;
27
+
28
+ if (level === "none") {
29
+ return;
30
+ }
31
+
32
+ const message = formatCompilerWarnings(warnings, {
33
+ displayPath: toDisplayPath(filename, projectRoot),
34
+ verbose: level === "verbose",
35
+ });
36
+
37
+ if (message === undefined) {
38
+ lastReportedByFile.delete(filename);
39
+ return;
40
+ }
41
+
42
+ if (lastReportedByFile.get(filename) === message) {
43
+ return;
44
+ }
45
+
46
+ lastReportedByFile.set(filename, message);
47
+
48
+ console.warn(message);
49
+ }
50
+
51
+ // Plain text: Metro's transform workers write to a pipe, where colour would never render
52
+ export function formatCompilerWarnings(
53
+ warnings: CompilerWarnings,
54
+ options: { displayPath: string; verbose?: boolean | undefined },
55
+ ): string | undefined {
56
+ const { displayPath, verbose = false } = options;
57
+
58
+ const droppedCount =
59
+ (warnings.properties?.length ?? 0) +
60
+ (warnings.functions?.length ?? 0) +
61
+ Object.values(warnings.values ?? {}).reduce(
62
+ (total, entries) => total + entries.length,
63
+ 0,
64
+ );
65
+
66
+ // A syntax warning sends the reader to their stylesheet rather than to what React Native lacks, so it is counted apart
67
+ const syntaxCount = warnings.syntax?.length ?? 0;
68
+
69
+ if (droppedCount === 0 && syntaxCount === 0) {
70
+ return undefined;
71
+ }
72
+
73
+ const properties = limit(unique(warnings.properties), verbose);
74
+ const functions = limit(unique(warnings.functions), verbose);
75
+ const rendered = renderValues(warnings.values, verbose);
76
+ const values = limit(rendered.entries, verbose);
77
+ const syntax = limit(unique(warnings.syntax), verbose);
78
+
79
+ const claims: string[] = [];
80
+ if (droppedCount > 0) {
81
+ claims.push(
82
+ `${droppedCount} ${pluralize(droppedCount, "declaration")} dropped, no React Native equivalent`,
83
+ );
84
+ }
85
+ if (syntaxCount > 0) {
86
+ claims.push(`${syntaxCount} syntax ${pluralize(syntaxCount, "warning")}`);
87
+ }
88
+
89
+ const lines = [`${PREFIX}: ${displayPath} - ${claims.join("; ")}`];
90
+
91
+ if (syntax.shown.length > 0) {
92
+ lines.push(` syntax: ${syntax.shown.join("; ")}${suffix(syntax.hidden)}`);
93
+ }
94
+
95
+ if (properties.shown.length > 0) {
96
+ lines.push(
97
+ ` properties: ${properties.shown.join(", ")}${suffix(properties.hidden)}`,
98
+ );
99
+ }
100
+
101
+ if (values.shown.length > 0) {
102
+ lines.push(` values: ${values.shown.join("; ")}${suffix(values.hidden)}`);
103
+ }
104
+
105
+ if (functions.shown.length > 0) {
106
+ lines.push(
107
+ ` functions: ${functions.shown.join(", ")}${suffix(functions.hidden)}`,
108
+ );
109
+ }
110
+
111
+ if (
112
+ properties.hidden +
113
+ values.hidden +
114
+ functions.hidden +
115
+ rendered.hidden +
116
+ syntax.hidden >
117
+ 0
118
+ ) {
119
+ lines.push(
120
+ ` Set reactNativeCSS.warnings to "verbose" for the full list, or "none" to silence this.`,
121
+ );
122
+ }
123
+
124
+ return lines.join("\n");
125
+ }
126
+
127
+ function toDisplayPath(filename: string, projectRoot: string): string {
128
+ const relativePath = relative(projectRoot, filename);
129
+
130
+ return relativePath === "" || relativePath.startsWith("..")
131
+ ? filename
132
+ : relativePath;
133
+ }
134
+
135
+ function renderValues(
136
+ values: Record<string, string[]> | undefined,
137
+ verbose: boolean,
138
+ ): { entries: string[]; hidden: number } {
139
+ let hidden = 0;
140
+ const entries: string[] = [];
141
+ const recordedByProperty = values ?? {};
142
+
143
+ for (const property of Object.keys(recordedByProperty).sort()) {
144
+ const distinct = unique(recordedByProperty[property]);
145
+ const shown = verbose ? distinct : distinct.slice(0, SUMMARY_VALUE_LIMIT);
146
+ hidden += distinct.length - shown.length;
147
+
148
+ const rendered = shown.map((value) => truncate(value, verbose));
149
+
150
+ entries.push(
151
+ `${property}: ${rendered.join(", ")}${suffix(distinct.length - shown.length)}`,
152
+ );
153
+ }
154
+
155
+ return { entries, hidden };
156
+ }
157
+
158
+ function limit<T>(entries: T[], verbose: boolean) {
159
+ if (verbose || entries.length <= SUMMARY_ENTRY_LIMIT) {
160
+ return { shown: entries, hidden: 0 };
161
+ }
162
+
163
+ return {
164
+ shown: entries.slice(0, SUMMARY_ENTRY_LIMIT),
165
+ hidden: entries.length - SUMMARY_ENTRY_LIMIT,
166
+ };
167
+ }
168
+
169
+ function suffix(hidden: number): string {
170
+ return hidden > 0 ? ` (+${hidden} more)` : "";
171
+ }
172
+
173
+ // Code-unit order rather than localeCompare, whose collation varies with the ICU build
174
+ function unique(entries: string[] | undefined): string[] {
175
+ return entries ? [...new Set(entries)].sort() : [];
176
+ }
177
+
178
+ // An unresolved calc() is recorded as its whole lightningcss node, hundreds of characters long
179
+ function truncate(value: string, verbose: boolean): string {
180
+ return verbose || value.length <= SUMMARY_VALUE_LENGTH_LIMIT
181
+ ? value
182
+ : `${value.slice(0, SUMMARY_VALUE_LENGTH_LIMIT)}...`;
183
+ }
184
+
185
+ function pluralize(count: number, noun: string): string {
186
+ return count === 1 ? noun : `${noun}s`;
187
+ }