react-native-css 3.0.6 → 3.1.0-rc.0

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 (483) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/commonjs/babel/import-plugin.js +9 -3
  3. package/dist/commonjs/babel/import-plugin.js.map +1 -1
  4. package/dist/commonjs/babel/react-native-web.js +16 -3
  5. package/dist/commonjs/babel/react-native-web.js.map +1 -1
  6. package/dist/commonjs/babel/react-native.js +7 -2
  7. package/dist/commonjs/babel/react-native.js.map +1 -1
  8. package/dist/commonjs/compiler/atRules.js +35 -0
  9. package/dist/commonjs/compiler/atRules.js.map +1 -1
  10. package/dist/commonjs/compiler/compiler.js +43 -30
  11. package/dist/commonjs/compiler/compiler.js.map +1 -1
  12. package/dist/commonjs/compiler/container-query.js +6 -1
  13. package/dist/commonjs/compiler/container-query.js.map +1 -1
  14. package/dist/commonjs/compiler/declarations.js +102 -61
  15. package/dist/commonjs/compiler/declarations.js.map +1 -1
  16. package/dist/commonjs/compiler/lightningcss-loader.js +11 -8
  17. package/dist/commonjs/compiler/lightningcss-loader.js.map +1 -1
  18. package/dist/commonjs/compiler/media-query.js +16 -6
  19. package/dist/commonjs/compiler/media-query.js.map +1 -1
  20. package/dist/commonjs/compiler/selector-builder.js +13 -3
  21. package/dist/commonjs/compiler/selector-builder.js.map +1 -1
  22. package/dist/commonjs/components/FlatList.js +1 -0
  23. package/dist/commonjs/components/FlatList.js.map +1 -1
  24. package/dist/commonjs/components/ImageBackground.js +2 -6
  25. package/dist/commonjs/components/ImageBackground.js.map +1 -1
  26. package/dist/commonjs/components/KeyboardAvoidingView.js +2 -3
  27. package/dist/commonjs/components/KeyboardAvoidingView.js.map +1 -1
  28. package/dist/commonjs/components/index.cjs +46 -1
  29. package/dist/commonjs/components/index.cjs.map +1 -1
  30. package/dist/commonjs/jest/index.js +1 -1
  31. package/dist/commonjs/jest/index.js.map +1 -1
  32. package/dist/commonjs/metro/cache-version.js +43 -0
  33. package/dist/commonjs/metro/cache-version.js.map +1 -0
  34. package/dist/commonjs/metro/index.js +2 -0
  35. package/dist/commonjs/metro/index.js.map +1 -1
  36. package/dist/commonjs/metro/metro-transformer.js +1 -1
  37. package/dist/commonjs/metro/metro-transformer.js.map +1 -1
  38. package/dist/commonjs/metro/typescript.js +26 -6
  39. package/dist/commonjs/metro/typescript.js.map +1 -1
  40. package/dist/commonjs/native/api.js +12 -8
  41. package/dist/commonjs/native/api.js.map +1 -1
  42. package/dist/commonjs/native/conditions/attributes.js +16 -9
  43. package/dist/commonjs/native/conditions/attributes.js.map +1 -1
  44. package/dist/commonjs/native/conditions/container-query.js +11 -11
  45. package/dist/commonjs/native/conditions/container-query.js.map +1 -1
  46. package/dist/commonjs/native/conditions/media-query.js +1 -1
  47. package/dist/commonjs/native/conditions/media-query.js.map +1 -1
  48. package/dist/commonjs/native/react/interaction.js +10 -5
  49. package/dist/commonjs/native/react/interaction.js.map +1 -1
  50. package/dist/commonjs/native/react/rules.js +12 -5
  51. package/dist/commonjs/native/react/rules.js.map +1 -1
  52. package/dist/commonjs/native/react/useNativeCss.js +48 -12
  53. package/dist/commonjs/native/react/useNativeCss.js.map +1 -1
  54. package/dist/commonjs/native/react/usePassthrough.js +5 -2
  55. package/dist/commonjs/native/react/usePassthrough.js.map +1 -1
  56. package/dist/commonjs/native/reactivity.js +32 -22
  57. package/dist/commonjs/native/reactivity.js.map +1 -1
  58. package/dist/commonjs/native/reanimated.js +15 -3
  59. package/dist/commonjs/native/reanimated.js.map +1 -1
  60. package/dist/commonjs/native/styles/functions/color-mix.js +43 -29
  61. package/dist/commonjs/native/styles/functions/color-mix.js.map +1 -1
  62. package/dist/commonjs/native/styles/functions/filters.js +18 -5
  63. package/dist/commonjs/native/styles/functions/filters.js.map +1 -1
  64. package/dist/commonjs/native/styles/functions/numeric-functions.js +4 -3
  65. package/dist/commonjs/native/styles/functions/numeric-functions.js.map +1 -1
  66. package/dist/commonjs/native/styles/functions/string-functions.js +16 -1
  67. package/dist/commonjs/native/styles/functions/string-functions.js.map +1 -1
  68. package/dist/commonjs/native/styles/functions/transform-functions.js +5 -4
  69. package/dist/commonjs/native/styles/functions/transform-functions.js.map +1 -1
  70. package/dist/commonjs/native/styles/index.js +140 -14
  71. package/dist/commonjs/native/styles/index.js.map +1 -1
  72. package/dist/commonjs/native/styles/resolve.js +10 -6
  73. package/dist/commonjs/native/styles/resolve.js.map +1 -1
  74. package/dist/commonjs/native/styles/scale-factor.js +13 -0
  75. package/dist/commonjs/native/styles/scale-factor.js.map +1 -0
  76. package/dist/commonjs/native/styles/shorthands/animation.js +6 -3
  77. package/dist/commonjs/native/styles/shorthands/animation.js.map +1 -1
  78. package/dist/commonjs/native/styles/shorthands/index.js +11 -0
  79. package/dist/commonjs/native/styles/shorthands/index.js.map +1 -1
  80. package/dist/commonjs/native/styles/shorthands/logical-border-width.js +22 -0
  81. package/dist/commonjs/native/styles/shorthands/logical-border-width.js.map +1 -0
  82. package/dist/commonjs/native/styles/variables.js +55 -43
  83. package/dist/commonjs/native/styles/variables.js.map +1 -1
  84. package/dist/commonjs/native-internal/style-collection.js +1 -1
  85. package/dist/commonjs/native-internal/style-collection.js.map +1 -1
  86. package/dist/commonjs/utilities/dot-notation.types.js +4 -0
  87. package/dist/commonjs/utilities/style-descriptor.js +4 -9
  88. package/dist/commonjs/utilities/style-descriptor.js.map +1 -1
  89. package/dist/commonjs/web/api.js +1 -1
  90. package/dist/commonjs/web/api.js.map +1 -1
  91. package/dist/commonjs/web/assign-style.js +4 -1
  92. package/dist/commonjs/web/assign-style.js.map +1 -1
  93. package/dist/module/babel/import-plugin.js +11 -5
  94. package/dist/module/babel/import-plugin.js.map +1 -1
  95. package/dist/module/babel/react-native-web.js +16 -4
  96. package/dist/module/babel/react-native-web.js.map +1 -1
  97. package/dist/module/babel/react-native.js +7 -2
  98. package/dist/module/babel/react-native.js.map +1 -1
  99. package/dist/module/compiler/atRules.js +33 -0
  100. package/dist/module/compiler/atRules.js.map +1 -1
  101. package/dist/module/compiler/compiler.js +44 -31
  102. package/dist/module/compiler/compiler.js.map +1 -1
  103. package/dist/module/compiler/container-query.js +6 -1
  104. package/dist/module/compiler/container-query.js.map +1 -1
  105. package/dist/module/compiler/declarations.js +102 -61
  106. package/dist/module/compiler/declarations.js.map +1 -1
  107. package/dist/module/compiler/lightningcss-loader.js +10 -8
  108. package/dist/module/compiler/lightningcss-loader.js.map +1 -1
  109. package/dist/module/compiler/media-query.js +16 -6
  110. package/dist/module/compiler/media-query.js.map +1 -1
  111. package/dist/module/compiler/selector-builder.js +13 -3
  112. package/dist/module/compiler/selector-builder.js.map +1 -1
  113. package/dist/module/components/FlatList.js +1 -0
  114. package/dist/module/components/FlatList.js.map +1 -1
  115. package/dist/module/components/ImageBackground.js +2 -6
  116. package/dist/module/components/ImageBackground.js.map +1 -1
  117. package/dist/module/components/KeyboardAvoidingView.js +2 -3
  118. package/dist/module/components/KeyboardAvoidingView.js.map +1 -1
  119. package/dist/module/components/index.cjs +46 -1
  120. package/dist/module/components/index.cjs.map +1 -1
  121. package/dist/module/jest/index.js +1 -1
  122. package/dist/module/jest/index.js.map +1 -1
  123. package/dist/module/metro/cache-version.js +39 -0
  124. package/dist/module/metro/cache-version.js.map +1 -0
  125. package/dist/module/metro/index.js +2 -0
  126. package/dist/module/metro/index.js.map +1 -1
  127. package/dist/module/metro/metro-transformer.js +1 -1
  128. package/dist/module/metro/metro-transformer.js.map +1 -1
  129. package/dist/module/metro/typescript.js +26 -6
  130. package/dist/module/metro/typescript.js.map +1 -1
  131. package/dist/module/native/api.js +14 -10
  132. package/dist/module/native/api.js.map +1 -1
  133. package/dist/module/native/conditions/attributes.js +16 -9
  134. package/dist/module/native/conditions/attributes.js.map +1 -1
  135. package/dist/module/native/conditions/container-query.js +11 -11
  136. package/dist/module/native/conditions/container-query.js.map +1 -1
  137. package/dist/module/native/conditions/media-query.js +1 -1
  138. package/dist/module/native/conditions/media-query.js.map +1 -1
  139. package/dist/module/native/react/interaction.js +10 -5
  140. package/dist/module/native/react/interaction.js.map +1 -1
  141. package/dist/module/native/react/rules.js +13 -6
  142. package/dist/module/native/react/rules.js.map +1 -1
  143. package/dist/module/native/react/useNativeCss.js +49 -13
  144. package/dist/module/native/react/useNativeCss.js.map +1 -1
  145. package/dist/module/native/react/usePassthrough.js +5 -2
  146. package/dist/module/native/react/usePassthrough.js.map +1 -1
  147. package/dist/module/native/reactivity.js +32 -22
  148. package/dist/module/native/reactivity.js.map +1 -1
  149. package/dist/module/native/reanimated.js +15 -3
  150. package/dist/module/native/reanimated.js.map +1 -1
  151. package/dist/module/native/styles/functions/color-mix.js +43 -29
  152. package/dist/module/native/styles/functions/color-mix.js.map +1 -1
  153. package/dist/module/native/styles/functions/filters.js +16 -4
  154. package/dist/module/native/styles/functions/filters.js.map +1 -1
  155. package/dist/module/native/styles/functions/numeric-functions.js +4 -3
  156. package/dist/module/native/styles/functions/numeric-functions.js.map +1 -1
  157. package/dist/module/native/styles/functions/string-functions.js +13 -0
  158. package/dist/module/native/styles/functions/string-functions.js.map +1 -1
  159. package/dist/module/native/styles/functions/transform-functions.js +5 -4
  160. package/dist/module/native/styles/functions/transform-functions.js.map +1 -1
  161. package/dist/module/native/styles/index.js +140 -14
  162. package/dist/module/native/styles/index.js.map +1 -1
  163. package/dist/module/native/styles/resolve.js +10 -6
  164. package/dist/module/native/styles/resolve.js.map +1 -1
  165. package/dist/module/native/styles/scale-factor.js +9 -0
  166. package/dist/module/native/styles/scale-factor.js.map +1 -0
  167. package/dist/module/native/styles/shorthands/animation.js +6 -3
  168. package/dist/module/native/styles/shorthands/animation.js.map +1 -1
  169. package/dist/module/native/styles/shorthands/index.js +1 -0
  170. package/dist/module/native/styles/shorthands/index.js.map +1 -1
  171. package/dist/module/native/styles/shorthands/logical-border-width.js +18 -0
  172. package/dist/module/native/styles/shorthands/logical-border-width.js.map +1 -0
  173. package/dist/module/native/styles/variables.js +55 -43
  174. package/dist/module/native/styles/variables.js.map +1 -1
  175. package/dist/module/native-internal/style-collection.js +1 -1
  176. package/dist/module/native-internal/style-collection.js.map +1 -1
  177. package/dist/module/utilities/dot-notation.types.js +2 -0
  178. package/dist/module/utilities/style-descriptor.js +4 -9
  179. package/dist/module/utilities/style-descriptor.js.map +1 -1
  180. package/dist/module/web/api.js +1 -1
  181. package/dist/module/web/api.js.map +1 -1
  182. package/dist/module/web/assign-style.js +4 -1
  183. package/dist/module/web/assign-style.js.map +1 -1
  184. package/dist/typescript/commonjs/src/babel/import-plugin.d.ts.map +1 -1
  185. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts +2 -1
  186. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts.map +1 -1
  187. package/dist/typescript/commonjs/src/babel/react-native.d.ts.map +1 -1
  188. package/dist/typescript/commonjs/src/compiler/atRules.d.ts +4 -1
  189. package/dist/typescript/commonjs/src/compiler/atRules.d.ts.map +1 -1
  190. package/dist/typescript/commonjs/src/compiler/compiler.d.ts.map +1 -1
  191. package/dist/typescript/commonjs/src/compiler/declarations.d.ts +2 -2
  192. package/dist/typescript/commonjs/src/compiler/declarations.d.ts.map +1 -1
  193. package/dist/typescript/commonjs/src/compiler/lightningcss-loader.d.ts.map +1 -1
  194. package/dist/typescript/commonjs/src/compiler/media-query.d.ts +1 -1
  195. package/dist/typescript/commonjs/src/compiler/media-query.d.ts.map +1 -1
  196. package/dist/typescript/commonjs/src/compiler/selector-builder.d.ts.map +1 -1
  197. package/dist/typescript/commonjs/src/components/FlatList.d.ts.map +1 -1
  198. package/dist/typescript/commonjs/src/components/ImageBackground.d.ts.map +1 -1
  199. package/dist/typescript/commonjs/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  200. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts +1 -1
  201. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  202. package/dist/typescript/commonjs/src/metro/cache-version.d.ts +8 -0
  203. package/dist/typescript/commonjs/src/metro/cache-version.d.ts.map +1 -0
  204. package/dist/typescript/commonjs/src/metro/index.d.ts.map +1 -1
  205. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts +5 -3
  206. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts.map +1 -1
  207. package/dist/typescript/commonjs/src/metro/typescript.d.ts.map +1 -1
  208. package/dist/typescript/commonjs/src/native/api.d.ts +4 -8
  209. package/dist/typescript/commonjs/src/native/api.d.ts.map +1 -1
  210. package/dist/typescript/commonjs/src/native/conditions/container-query.d.ts.map +1 -1
  211. package/dist/typescript/commonjs/src/native/react/interaction.d.ts +1 -1
  212. package/dist/typescript/commonjs/src/native/react/interaction.d.ts.map +1 -1
  213. package/dist/typescript/commonjs/src/native/react/rules.d.ts.map +1 -1
  214. package/dist/typescript/commonjs/src/native/react/useNativeCss.d.ts.map +1 -1
  215. package/dist/typescript/commonjs/src/native/react/usePassthrough.d.ts.map +1 -1
  216. package/dist/typescript/commonjs/src/native/reactivity.d.ts +7 -3
  217. package/dist/typescript/commonjs/src/native/reactivity.d.ts.map +1 -1
  218. package/dist/typescript/commonjs/src/native/reanimated.d.ts.map +1 -1
  219. package/dist/typescript/commonjs/src/native/styles/functions/color-mix.d.ts.map +1 -1
  220. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts +2 -0
  221. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts.map +1 -1
  222. package/dist/typescript/commonjs/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  223. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts +2 -0
  224. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts.map +1 -1
  225. package/dist/typescript/commonjs/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  226. package/dist/typescript/commonjs/src/native/styles/index.d.ts +2 -2
  227. package/dist/typescript/commonjs/src/native/styles/index.d.ts.map +1 -1
  228. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts +1 -0
  229. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts.map +1 -1
  230. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts +2 -0
  231. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts.map +1 -0
  232. package/dist/typescript/commonjs/src/native/styles/shorthands/animation.d.ts.map +1 -1
  233. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts +1 -0
  234. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts.map +1 -1
  235. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  236. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  237. package/dist/typescript/commonjs/src/native/styles/variables.d.ts.map +1 -1
  238. package/dist/typescript/commonjs/src/native-internal/variables.d.ts +1 -1
  239. package/dist/typescript/commonjs/src/native-internal/variables.d.ts.map +1 -1
  240. package/dist/typescript/commonjs/src/runtime.types.d.ts +11 -6
  241. package/dist/typescript/commonjs/src/runtime.types.d.ts.map +1 -1
  242. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts +2 -1
  243. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts.map +1 -1
  244. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts +1 -1
  245. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts.map +1 -1
  246. package/dist/typescript/commonjs/src/web/api.d.ts +5 -5
  247. package/dist/typescript/commonjs/src/web/api.d.ts.map +1 -1
  248. package/dist/typescript/commonjs/src/web/assign-style.d.ts.map +1 -1
  249. package/dist/typescript/module/src/babel/import-plugin.d.ts +1 -1
  250. package/dist/typescript/module/src/babel/import-plugin.d.ts.map +1 -1
  251. package/dist/typescript/module/src/babel/react-native-web.d.ts +2 -1
  252. package/dist/typescript/module/src/babel/react-native-web.d.ts.map +1 -1
  253. package/dist/typescript/module/src/babel/react-native.d.ts.map +1 -1
  254. package/dist/typescript/module/src/compiler/atRules.d.ts +6 -3
  255. package/dist/typescript/module/src/compiler/atRules.d.ts.map +1 -1
  256. package/dist/typescript/module/src/compiler/compiler.d.ts +2 -2
  257. package/dist/typescript/module/src/compiler/compiler.d.ts.map +1 -1
  258. package/dist/typescript/module/src/compiler/compiler.types.d.ts +1 -1
  259. package/dist/typescript/module/src/compiler/compiler.types.d.ts.map +1 -1
  260. package/dist/typescript/module/src/compiler/container-query.d.ts +2 -2
  261. package/dist/typescript/module/src/compiler/container-query.d.ts.map +1 -1
  262. package/dist/typescript/module/src/compiler/declarations.d.ts +4 -4
  263. package/dist/typescript/module/src/compiler/declarations.d.ts.map +1 -1
  264. package/dist/typescript/module/src/compiler/index.d.ts +2 -2
  265. package/dist/typescript/module/src/compiler/index.d.ts.map +1 -1
  266. package/dist/typescript/module/src/compiler/inline-variables.d.ts +1 -1
  267. package/dist/typescript/module/src/compiler/inline-variables.d.ts.map +1 -1
  268. package/dist/typescript/module/src/compiler/keyframes.d.ts +2 -2
  269. package/dist/typescript/module/src/compiler/keyframes.d.ts.map +1 -1
  270. package/dist/typescript/module/src/compiler/lightningcss-loader.d.ts.map +1 -1
  271. package/dist/typescript/module/src/compiler/media-query.d.ts +3 -3
  272. package/dist/typescript/module/src/compiler/media-query.d.ts.map +1 -1
  273. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts +1 -1
  274. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts.map +1 -1
  275. package/dist/typescript/module/src/compiler/selector-builder.d.ts +1 -1
  276. package/dist/typescript/module/src/compiler/selector-builder.d.ts.map +1 -1
  277. package/dist/typescript/module/src/compiler/selectors.d.ts +2 -2
  278. package/dist/typescript/module/src/compiler/selectors.d.ts.map +1 -1
  279. package/dist/typescript/module/src/compiler/stylesheet.d.ts +1 -1
  280. package/dist/typescript/module/src/compiler/stylesheet.d.ts.map +1 -1
  281. package/dist/typescript/module/src/components/FlatList.d.ts.map +1 -1
  282. package/dist/typescript/module/src/components/ImageBackground.d.ts.map +1 -1
  283. package/dist/typescript/module/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  284. package/dist/typescript/module/src/components/index.d.ts +16 -16
  285. package/dist/typescript/module/src/components/index.d.ts.map +1 -1
  286. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts +1 -1
  287. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  288. package/dist/typescript/module/src/metro/cache-version.d.ts +8 -0
  289. package/dist/typescript/module/src/metro/cache-version.d.ts.map +1 -0
  290. package/dist/typescript/module/src/metro/index.d.ts +1 -1
  291. package/dist/typescript/module/src/metro/index.d.ts.map +1 -1
  292. package/dist/typescript/module/src/metro/metro-transformer.d.ts +6 -4
  293. package/dist/typescript/module/src/metro/metro-transformer.d.ts.map +1 -1
  294. package/dist/typescript/module/src/metro/typescript.d.ts.map +1 -1
  295. package/dist/typescript/module/src/native/api.d.ts +5 -9
  296. package/dist/typescript/module/src/native/api.d.ts.map +1 -1
  297. package/dist/typescript/module/src/native/conditions/attributes.d.ts +1 -1
  298. package/dist/typescript/module/src/native/conditions/attributes.d.ts.map +1 -1
  299. package/dist/typescript/module/src/native/conditions/container-query.d.ts +2 -2
  300. package/dist/typescript/module/src/native/conditions/container-query.d.ts.map +1 -1
  301. package/dist/typescript/module/src/native/conditions/guards.d.ts +2 -2
  302. package/dist/typescript/module/src/native/conditions/guards.d.ts.map +1 -1
  303. package/dist/typescript/module/src/native/conditions/index.d.ts +3 -3
  304. package/dist/typescript/module/src/native/conditions/index.d.ts.map +1 -1
  305. package/dist/typescript/module/src/native/conditions/media-query.d.ts +1 -1
  306. package/dist/typescript/module/src/native/conditions/media-query.d.ts.map +1 -1
  307. package/dist/typescript/module/src/native/index.d.ts +3 -3
  308. package/dist/typescript/module/src/native/index.d.ts.map +1 -1
  309. package/dist/typescript/module/src/native/react/interaction.d.ts +2 -2
  310. package/dist/typescript/module/src/native/react/interaction.d.ts.map +1 -1
  311. package/dist/typescript/module/src/native/react/rules.d.ts +2 -2
  312. package/dist/typescript/module/src/native/react/rules.d.ts.map +1 -1
  313. package/dist/typescript/module/src/native/react/useNativeCss.d.ts +4 -4
  314. package/dist/typescript/module/src/native/react/useNativeCss.d.ts.map +1 -1
  315. package/dist/typescript/module/src/native/react/usePassthrough.d.ts +1 -1
  316. package/dist/typescript/module/src/native/react/usePassthrough.d.ts.map +1 -1
  317. package/dist/typescript/module/src/native/reactivity.d.ts +7 -3
  318. package/dist/typescript/module/src/native/reactivity.d.ts.map +1 -1
  319. package/dist/typescript/module/src/native/reanimated.d.ts.map +1 -1
  320. package/dist/typescript/module/src/native/styles/calculate-props.d.ts +2 -2
  321. package/dist/typescript/module/src/native/styles/calculate-props.d.ts.map +1 -1
  322. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts +1 -1
  323. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts.map +1 -1
  324. package/dist/typescript/module/src/native/styles/functions/calc.d.ts +1 -1
  325. package/dist/typescript/module/src/native/styles/functions/calc.d.ts.map +1 -1
  326. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts +1 -1
  327. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts.map +1 -1
  328. package/dist/typescript/module/src/native/styles/functions/filters.d.ts +3 -1
  329. package/dist/typescript/module/src/native/styles/functions/filters.d.ts.map +1 -1
  330. package/dist/typescript/module/src/native/styles/functions/index.d.ts +8 -8
  331. package/dist/typescript/module/src/native/styles/functions/index.d.ts.map +1 -1
  332. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts +1 -1
  333. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  334. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts +1 -1
  335. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts.map +1 -1
  336. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts +3 -1
  337. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts.map +1 -1
  338. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts +1 -1
  339. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  340. package/dist/typescript/module/src/native/styles/index.d.ts +7 -7
  341. package/dist/typescript/module/src/native/styles/index.d.ts.map +1 -1
  342. package/dist/typescript/module/src/native/styles/line-height.d.ts +1 -1
  343. package/dist/typescript/module/src/native/styles/line-height.d.ts.map +1 -1
  344. package/dist/typescript/module/src/native/styles/resolve.d.ts +4 -3
  345. package/dist/typescript/module/src/native/styles/resolve.d.ts.map +1 -1
  346. package/dist/typescript/module/src/native/styles/scale-factor.d.ts +2 -0
  347. package/dist/typescript/module/src/native/styles/scale-factor.d.ts.map +1 -0
  348. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts +1 -1
  349. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts.map +1 -1
  350. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts +2 -2
  351. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts.map +1 -1
  352. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts +1 -1
  353. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts.map +1 -1
  354. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts +1 -1
  355. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts.map +1 -1
  356. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts +6 -5
  357. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts.map +1 -1
  358. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  359. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  360. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts +1 -1
  361. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts.map +1 -1
  362. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts +1 -1
  363. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts.map +1 -1
  364. package/dist/typescript/module/src/native/styles/units.d.ts +1 -1
  365. package/dist/typescript/module/src/native/styles/units.d.ts.map +1 -1
  366. package/dist/typescript/module/src/native/styles/variables.d.ts +2 -2
  367. package/dist/typescript/module/src/native/styles/variables.d.ts.map +1 -1
  368. package/dist/typescript/module/src/native-internal/index.d.ts +3 -3
  369. package/dist/typescript/module/src/native-internal/index.d.ts.map +1 -1
  370. package/dist/typescript/module/src/native-internal/root.d.ts +1 -1
  371. package/dist/typescript/module/src/native-internal/root.d.ts.map +1 -1
  372. package/dist/typescript/module/src/native-internal/style-collection.d.ts +2 -2
  373. package/dist/typescript/module/src/native-internal/style-collection.d.ts.map +1 -1
  374. package/dist/typescript/module/src/native-internal/variables.d.ts +2 -2
  375. package/dist/typescript/module/src/native-internal/variables.d.ts.map +1 -1
  376. package/dist/typescript/module/src/runtime.d.ts +1 -1
  377. package/dist/typescript/module/src/runtime.d.ts.map +1 -1
  378. package/dist/typescript/module/src/runtime.native.d.ts +1 -1
  379. package/dist/typescript/module/src/runtime.native.d.ts.map +1 -1
  380. package/dist/typescript/module/src/runtime.types.d.ts +11 -6
  381. package/dist/typescript/module/src/runtime.types.d.ts.map +1 -1
  382. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts +2 -1
  383. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts.map +1 -1
  384. package/dist/typescript/module/src/utilities/index.d.ts +3 -3
  385. package/dist/typescript/module/src/utilities/index.d.ts.map +1 -1
  386. package/dist/typescript/module/src/utilities/specificity.d.ts +2 -2
  387. package/dist/typescript/module/src/utilities/specificity.d.ts.map +1 -1
  388. package/dist/typescript/module/src/utilities/style-descriptor.d.ts +1 -1
  389. package/dist/typescript/module/src/utilities/style-descriptor.d.ts.map +1 -1
  390. package/dist/typescript/module/src/web/api.d.ts +5 -5
  391. package/dist/typescript/module/src/web/api.d.ts.map +1 -1
  392. package/dist/typescript/module/src/web/assign-style.d.ts.map +1 -1
  393. package/dist/typescript/module/src/web/index.d.ts +3 -3
  394. package/dist/typescript/module/src/web/index.d.ts.map +1 -1
  395. package/node/babel.mjs +4 -0
  396. package/node/compiler.mjs +2 -0
  397. package/node/metro.mjs +2 -0
  398. package/package.json +61 -27
  399. package/src/babel/import-plugin.ts +15 -4
  400. package/src/babel/react-native-web.ts +32 -3
  401. package/src/babel/react-native.ts +7 -1
  402. package/src/compiler/atRules.ts +44 -0
  403. package/src/compiler/compiler.ts +73 -49
  404. package/src/compiler/container-query.ts +8 -3
  405. package/src/compiler/declarations.ts +189 -100
  406. package/src/compiler/lightningcss-loader.ts +16 -15
  407. package/src/compiler/media-query.ts +20 -9
  408. package/src/compiler/selector-builder.ts +29 -3
  409. package/src/components/FlatList.tsx +1 -0
  410. package/src/components/ImageBackground.tsx +2 -6
  411. package/src/components/KeyboardAvoidingView.tsx +2 -3
  412. package/src/components/index.cts +46 -1
  413. package/src/jest/index.ts +1 -1
  414. package/src/metro/cache-version.ts +48 -0
  415. package/src/metro/index.ts +2 -0
  416. package/src/metro/metro-transformer.ts +9 -6
  417. package/src/metro/typescript.ts +53 -6
  418. package/src/native/api.tsx +20 -14
  419. package/src/native/conditions/attributes.ts +26 -9
  420. package/src/native/conditions/container-query.ts +11 -9
  421. package/src/native/conditions/media-query.ts +1 -1
  422. package/src/native/react/interaction.ts +11 -6
  423. package/src/native/react/rules.ts +13 -5
  424. package/src/native/react/useNativeCss.ts +54 -14
  425. package/src/native/react/usePassthrough.ts +3 -2
  426. package/src/native/reactivity.ts +42 -24
  427. package/src/native/reanimated.ts +24 -5
  428. package/src/native/styles/functions/color-mix.ts +45 -39
  429. package/src/native/styles/functions/filters.ts +20 -6
  430. package/src/native/styles/functions/numeric-functions.ts +7 -6
  431. package/src/native/styles/functions/string-functions.ts +18 -0
  432. package/src/native/styles/functions/transform-functions.ts +5 -4
  433. package/src/native/styles/index.ts +146 -15
  434. package/src/native/styles/resolve.ts +15 -11
  435. package/src/native/styles/scale-factor.ts +6 -0
  436. package/src/native/styles/shorthands/animation.ts +8 -2
  437. package/src/native/styles/shorthands/index.ts +1 -0
  438. package/src/native/styles/shorthands/logical-border-width.ts +32 -0
  439. package/src/native/styles/variables.ts +48 -38
  440. package/src/native-internal/style-collection.ts +1 -1
  441. package/src/runtime.types.ts +17 -15
  442. package/src/utilities/dot-notation.types.ts +4 -3
  443. package/src/utilities/style-descriptor.ts +11 -16
  444. package/src/web/api.tsx +6 -11
  445. package/src/web/assign-style.ts +2 -1
  446. package/types.d.ts +0 -20
  447. package/dist/commonjs/compiler/inheritance.test.js +0 -78
  448. package/dist/commonjs/compiler/inheritance.test.js.map +0 -1
  449. package/dist/module/compiler/inheritance.test.js +0 -78
  450. package/dist/module/compiler/inheritance.test.js.map +0 -1
  451. package/dist/typescript/commonjs/.config/eslint.config.d.mts +0 -3
  452. package/dist/typescript/commonjs/.config/eslint.config.d.mts.map +0 -1
  453. package/dist/typescript/commonjs/eslint.config.d.mts +0 -2
  454. package/dist/typescript/commonjs/eslint.config.d.mts.map +0 -1
  455. package/dist/typescript/commonjs/example/app.config.d.ts +0 -4
  456. package/dist/typescript/commonjs/example/app.config.d.ts.map +0 -1
  457. package/dist/typescript/commonjs/example/index.d.ts +0 -2
  458. package/dist/typescript/commonjs/example/index.d.ts.map +0 -1
  459. package/dist/typescript/commonjs/example/metro.config.d.ts +0 -3
  460. package/dist/typescript/commonjs/example/metro.config.d.ts.map +0 -1
  461. package/dist/typescript/commonjs/example/postcss.config.d.mts +0 -7
  462. package/dist/typescript/commonjs/example/postcss.config.d.mts.map +0 -1
  463. package/dist/typescript/commonjs/example/src/App.d.ts +0 -3
  464. package/dist/typescript/commonjs/example/src/App.d.ts.map +0 -1
  465. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts +0 -2
  466. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts.map +0 -1
  467. package/dist/typescript/module/.config/eslint.config.d.mts +0 -3
  468. package/dist/typescript/module/.config/eslint.config.d.mts.map +0 -1
  469. package/dist/typescript/module/eslint.config.d.mts +0 -2
  470. package/dist/typescript/module/eslint.config.d.mts.map +0 -1
  471. package/dist/typescript/module/example/app.config.d.ts +0 -4
  472. package/dist/typescript/module/example/app.config.d.ts.map +0 -1
  473. package/dist/typescript/module/example/index.d.ts +0 -2
  474. package/dist/typescript/module/example/index.d.ts.map +0 -1
  475. package/dist/typescript/module/example/metro.config.d.ts +0 -3
  476. package/dist/typescript/module/example/metro.config.d.ts.map +0 -1
  477. package/dist/typescript/module/example/postcss.config.d.mts +0 -7
  478. package/dist/typescript/module/example/postcss.config.d.mts.map +0 -1
  479. package/dist/typescript/module/example/src/App.d.ts +0 -3
  480. package/dist/typescript/module/example/src/App.d.ts.map +0 -1
  481. package/dist/typescript/module/src/compiler/inheritance.test.d.ts +0 -2
  482. package/dist/typescript/module/src/compiler/inheritance.test.d.ts.map +0 -1
  483. package/src/compiler/inheritance.test.ts +0 -121
@@ -260,7 +260,12 @@ function parseComponents(
260
260
  ? // [data-*] are turned into `dataSet` queries
261
261
  ["d", toRNProperty(component.name.replace("data-", ""))]
262
262
  : // Everything else is turned into `attribute` queries
263
- ["a", toRNProperty(component.name)];
263
+ [
264
+ "a",
265
+ component.name.startsWith("aria-")
266
+ ? component.name
267
+ : toRNProperty(component.name),
268
+ ];
264
269
  if (component.operation) {
265
270
  let operator: AttrSelectorOperator | undefined;
266
271
  switch (component.operation.operator) {
@@ -289,6 +294,15 @@ function parseComponents(
289
294
  if (operator) {
290
295
  // Append the operator onto the attribute query
291
296
  attributeQuery.push(operator, component.operation.value);
297
+ if (
298
+ component.operation.caseSensitivity === "ascii-case-insensitive"
299
+ ) {
300
+ attributeQuery.push("i");
301
+ } else if (
302
+ component.operation.caseSensitivity === "explicit-case-sensitive"
303
+ ) {
304
+ attributeQuery.push("s");
305
+ }
292
306
  }
293
307
  }
294
308
  getAttributeQuery(ref).push(attributeQuery);
@@ -311,7 +325,7 @@ function parseComponents(
311
325
  getAttributeQuery(ref).unshift([
312
326
  "a",
313
327
  "className",
314
- "*=",
328
+ "~=",
315
329
  component.name,
316
330
  ]);
317
331
  } else {
@@ -464,11 +478,23 @@ function parseIsWhereComponents(
464
478
  ? // [data-*] are turned into `dataSet` queries
465
479
  ["d", toRNProperty(component.name.replace("data-", ""))]
466
480
  : // Everything else is turned into `attribute` queries
467
- ["a", toRNProperty(component.name)];
481
+ [
482
+ "a",
483
+ component.name.startsWith("aria-")
484
+ ? component.name
485
+ : toRNProperty(component.name),
486
+ ];
468
487
  if (component.operation) {
469
488
  const operator = operatorMap[component.operation.operator];
470
489
  // Append the operator onto the attribute query
471
490
  attributeQuery.push(operator, component.operation.value);
491
+ if (component.operation.caseSensitivity === "ascii-case-insensitive") {
492
+ attributeQuery.push("i");
493
+ } else if (
494
+ component.operation.caseSensitivity === "explicit-case-sensitive"
495
+ ) {
496
+ attributeQuery.push("s");
497
+ }
472
498
  }
473
499
  queries ??= [{ specificity: [] }];
474
500
  for (const query of queries) {
@@ -10,6 +10,7 @@ import {
10
10
  import { copyComponentProperties } from "./copyComponentProperties";
11
11
 
12
12
  const mapping: StyledConfiguration<typeof RNFlatList> = {
13
+ className: "style",
13
14
  ListFooterComponentClassName: "ListFooterComponentStyle",
14
15
  ListHeaderComponentClassName: "ListHeaderComponentStyle",
15
16
  columnWrapperClassName: "columnWrapperStyle",
@@ -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,6 +4,7 @@ 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";
9
10
 
@@ -47,6 +48,7 @@ export function withReactNativeCSS<
47
48
 
48
49
  return {
49
50
  ...config,
51
+ cacheVersion: getCacheVersion(config.cacheVersion, options),
50
52
  transformerPath: require.resolve("./metro-transformer"),
51
53
  transformer: {
52
54
  ...config.transformer,
@@ -2,24 +2,27 @@ 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";
10
9
 
10
+ type TransformResponse = Awaited<
11
+ ReturnType<typeof import("metro-transform-worker").transform>
12
+ >;
13
+
11
14
  const worker =
12
15
  // eslint-disable-next-line @typescript-eslint/no-require-imports
13
16
  require(unstable_transformerPath) as typeof import("metro-transform-worker");
14
17
 
15
18
  export async function transform(
16
- config: JsTransformerConfig,
19
+ config: JsTransformerConfig & {
20
+ reactNativeCSS?: CompilerOptions | undefined;
21
+ },
17
22
  projectRoot: string,
18
23
  filePath: string,
19
24
  data: Buffer,
20
- options: JsTransformOptions & {
21
- reactNativeCSS?: CompilerOptions | undefined;
22
- },
25
+ options: JsTransformOptions,
23
26
  ): Promise<TransformResponse> {
24
27
  const isCss = options.type !== "asset" && /\.(s?css|sass)$/.test(filePath);
25
28
 
@@ -37,7 +40,7 @@ export async function transform(
37
40
  const css = cssFile.output[0].data.css.code.toString();
38
41
 
39
42
  const productionJS = compile(css, {
40
- ...options.reactNativeCSS,
43
+ ...config.reactNativeCSS,
41
44
  filename: filePath,
42
45
  projectRoot: projectRoot,
43
46
  }).stylesheet();
@@ -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 {}
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable */
2
- import { useContext, useState, type ComponentType } from "react";
3
- import { Appearance } from "react-native";
2
+ import { useContext, useEffect, useState, type ComponentType } from "react";
3
+ import { Appearance, type ViewStyle } from "react-native";
4
4
 
5
5
  import type { StyleDescriptor } from "react-native-css/compiler";
6
6
  import { VariableContext } from "react-native-css/native-internal";
@@ -9,12 +9,14 @@ import type {
9
9
  ColorScheme,
10
10
  Props,
11
11
  ReactComponent,
12
+ Styled,
12
13
  StyledConfiguration,
13
14
  StyledOptions,
14
15
  } from "../runtime.types";
15
16
  import { mappingToConfig, useNativeCss } from "./react/useNativeCss";
16
17
  import { usePassthrough } from "./react/usePassthrough";
17
18
  import {
19
+ cleanupEffect,
18
20
  colorScheme as colorSchemeObs,
19
21
  VAR_SYMBOL,
20
22
  type Effect,
@@ -40,12 +42,9 @@ const defaultMapping: StyledConfiguration<ComponentType<{ style: unknown }>> = {
40
42
  * @param baseComponent
41
43
  * @param mapping
42
44
  */
43
- export const styled = <
44
- const C extends ReactComponent<any>,
45
- const M extends StyledConfiguration<C>,
46
- >(
47
- baseComponent: C,
48
- mapping: M = defaultMapping as M,
45
+ export const styled: Styled = (
46
+ baseComponent: ReactComponent<any>,
47
+ mapping: StyledConfiguration<any> = defaultMapping,
49
48
  options?: StyledOptions,
50
49
  ) => {
51
50
  let component: any;
@@ -73,7 +72,7 @@ export const colorScheme: ColorScheme = {
73
72
  return colorSchemeObs.get() ?? Appearance.getColorScheme() ?? "light";
74
73
  },
75
74
  set(value) {
76
- return colorSchemeObs.set(value);
75
+ return colorSchemeObs.set(value === "unspecified" ? null : value);
77
76
  },
78
77
  };
79
78
 
@@ -97,28 +96,35 @@ export function useNativeVariable(name: string) {
97
96
  }
98
97
 
99
98
  const inheritedVariables = useContext(VariableContext);
100
- const [effect, setState] = useState(() => {
99
+ const [, forceUpdate] = useState(0);
100
+ const [effect] = useState(() => {
101
101
  const effect: Effect = {
102
102
  observers: new Set(),
103
- run: () => setState((state) => ({ ...state })),
103
+ run: () => forceUpdate((state) => state + 1),
104
104
  };
105
105
 
106
106
  const get: Getter = (observable) => observable.get(effect);
107
107
 
108
- return { ...effect, get };
108
+ return Object.assign(effect, { get });
109
109
  });
110
110
 
111
+ useEffect(() => {
112
+ // React StrictMode replays setup after cleanup without another render.
113
+ if (effect.observers.size === 0) forceUpdate((state) => state + 1);
114
+ return () => cleanupEffect(effect);
115
+ }, [effect]);
116
+ cleanupEffect(effect);
111
117
  return resolveValue([{}, "var", [name]], effect.get, { inheritedVariables });
112
118
  }
113
119
 
114
120
  /**
115
121
  * @deprecated Use `<VariableContextProvider />` instead.
116
122
  */
117
- export function vars(variables: Record<string, StyleDescriptor>) {
123
+ export function vars(variables: Record<string, StyleDescriptor>): ViewStyle {
118
124
  return Object.assign(
119
125
  { [VAR_SYMBOL]: "inline" },
120
126
  Object.fromEntries(
121
127
  Object.entries(variables).map(([k, v]) => [k.replace(/^--/, ""), v]),
122
128
  ),
123
- );
129
+ ) as ViewStyle;
124
130
  }
@@ -11,7 +11,7 @@ export function testAttributes(
11
11
  }
12
12
 
13
13
  function testAttribute(
14
- [type, prop, operator, testValue]: AttributeQuery,
14
+ [type, prop, operator, testValue, caseSensitivity]: AttributeQuery,
15
15
  props: Record<string, unknown> | undefined | null,
16
16
  guards: RenderGuard[],
17
17
  ) {
@@ -32,21 +32,38 @@ function testAttribute(
32
32
  return value !== undefined && value !== null && value !== false;
33
33
  }
34
34
 
35
+ if (operator === "!") return !value;
36
+ if (value === undefined || value === null || testValue === undefined)
37
+ return false;
38
+
39
+ if (
40
+ typeof value !== "string" &&
41
+ typeof value !== "number" &&
42
+ typeof value !== "boolean"
43
+ )
44
+ return false;
45
+ let actual = String(value);
46
+ if (caseSensitivity === "i") {
47
+ // CSS attribute flags fold ASCII letters only, not Unicode characters.
48
+ actual = actual.replace(/[A-Z]/g, (letter) => letter.toLowerCase());
49
+ testValue = testValue.replace(/[A-Z]/g, (letter) => letter.toLowerCase());
50
+ }
51
+
35
52
  switch (operator) {
36
- case "!":
37
- return !value;
38
53
  case "=":
39
- return value == testValue;
54
+ return actual === testValue;
40
55
  case "~=":
41
- return testValue && value?.toString().split(" ").includes(testValue);
56
+ return (
57
+ testValue !== "" && actual.split(/[\t\n\f\r ]+/).includes(testValue)
58
+ );
42
59
  case "|=":
43
- return testValue && value?.toString().startsWith(testValue + "-");
60
+ return actual === testValue || actual.startsWith(testValue + "-");
44
61
  case "^=":
45
- return testValue && value?.toString().startsWith(testValue);
62
+ return testValue !== "" && actual.startsWith(testValue);
46
63
  case "$=":
47
- return testValue && value?.toString().endsWith(testValue);
64
+ return testValue !== "" && actual.endsWith(testValue);
48
65
  case "*=":
49
- return testValue && value?.toString().includes(testValue);
66
+ return testValue !== "" && actual.includes(testValue);
50
67
  default:
51
68
  operator satisfies never;
52
69
  return false;
@@ -16,7 +16,7 @@ import {
16
16
  type ContainerContextValue,
17
17
  type Getter,
18
18
  } from "../reactivity";
19
- // import { testAttributes } from "./attributes";
19
+ import { testAttributes } from "./attributes";
20
20
  import type { RenderGuard } from "./guards";
21
21
 
22
22
  export const DEFAULT_CONTAINER_NAME = "c:___default___";
@@ -47,15 +47,17 @@ export function testContainerQuery(
47
47
  return false;
48
48
  }
49
49
 
50
- // if (query.a && !testAttributes(query.a, container.props, guards)) {
51
- // return false;
52
- // }
50
+ // Ancestor snapshots have their own context guard. Their attributes must not
51
+ // be compared with this descendant's props by the ordinary attribute guards.
52
+ if (query.a && !testAttributes(query.a, container.props, [])) {
53
+ return false;
54
+ }
53
55
 
54
- if (query.m && !testContainerMediaCondition(query.m, container, get)) {
56
+ if (query.m && !testContainerMediaCondition(query.m, container.key, get)) {
55
57
  return false;
56
58
  }
57
59
 
58
- if (query.p && !testContainerPseudoCondition(query.p, container, get)) {
60
+ if (query.p && !testContainerPseudoCondition(query.p, container.key, get)) {
59
61
  return false;
60
62
  }
61
63
 
@@ -119,11 +121,11 @@ function testContainerMediaCondition(
119
121
  case ">":
120
122
  return left > right;
121
123
  case ">=":
122
- return left > right;
124
+ return left >= right;
123
125
  case "<":
124
- return left > right;
126
+ return left < right;
125
127
  case "<=":
126
- return left > right;
128
+ return left <= right;
127
129
  default:
128
130
  condition[0] satisfies never;
129
131
  return false;
@@ -39,7 +39,7 @@ function testComparison(mediaQuery: MediaCondition, get: Getter): Boolean {
39
39
 
40
40
  switch (mediaQuery[1]) {
41
41
  case "dir":
42
- return (I18nManager.isRTL && value === "rtl") || value === "ltr";
42
+ return value === (I18nManager.isRTL ? "rtl" : "ltr");
43
43
  case "hover":
44
44
  return true;
45
45
  case "platform":
@@ -11,7 +11,7 @@ import {
11
11
 
12
12
  const mainCache = new WeakMap<
13
13
  WeakKey,
14
- WeakMap<Function, (event: any) => void>
14
+ Map<InteractionType, WeakMap<Function, (event: any) => void>>
15
15
  >();
16
16
 
17
17
  type Handler = (event: unknown) => void;
@@ -40,14 +40,19 @@ const defaultHandlers: Record<InteractionType, Handler> = {
40
40
  export function getInteractionHandler(
41
41
  weakKey: WeakKey,
42
42
  type: InteractionType,
43
- handler = defaultHandlers[type],
43
+ handler?: Handler | null,
44
44
  ) {
45
- let cache = mainCache.get(weakKey);
46
- if (!cache) {
47
- cache = new WeakMap();
48
- mainCache.set(weakKey, cache);
45
+ handler ??= defaultHandlers[type];
46
+ let interactions = mainCache.get(weakKey);
47
+ if (!interactions) {
48
+ interactions = new Map();
49
+ mainCache.set(weakKey, interactions);
49
50
  }
50
51
 
52
+ // A caller may reuse one callback for events that update opposite states.
53
+ let cache = interactions.get(type);
54
+ if (!cache) interactions.set(type, (cache = new WeakMap()));
55
+
51
56
  let cached = cache.get(handler);
52
57
  if (!cached) {
53
58
  cached = (event: any) => {