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
@@ -1,4 +1,4 @@
1
- import { resolve } from "path";
1
+ import { basename, dirname, resolve, sep } from "path";
2
2
 
3
3
  import { type PluginObj } from "@babel/core";
4
4
  import type { Statement } from "@babel/types";
@@ -16,6 +16,7 @@ import {
16
16
  import {
17
17
  handleReactNativeWebIdentifierRequire,
18
18
  handleReactNativeWebImport,
19
+ handleReactNativeWebInteropRequireDefault,
19
20
  handleReactNativeWebObjectPatternRequire,
20
21
  } from "./react-native-web";
21
22
 
@@ -24,10 +25,14 @@ export default function ({
24
25
  }: {
25
26
  types: BabelTypes;
26
27
  }): PluginObj<PluginState> {
27
- const processed = new WeakSet();
28
+ const processed = new WeakSet<Statement>();
28
29
 
29
- const thisModuleDist = resolve(__dirname, "../../../dist");
30
- const thisModuleSrc = resolve(__dirname, "../../../src");
30
+ const packageRoot = resolve(
31
+ __dirname,
32
+ basename(dirname(__dirname)) === "src" ? "../.." : "../../..",
33
+ );
34
+ const thisModuleDist = resolve(packageRoot, "dist") + sep;
35
+ const thisModuleSrc = resolve(packageRoot, "src") + sep;
31
36
 
32
37
  function isFromThisModule(filename: string): boolean {
33
38
  return (
@@ -39,17 +44,19 @@ export default function ({
39
44
  name: "Rewrite react-native to react-native-css",
40
45
  visitor: {
41
46
  ImportDeclaration(path, state): void {
47
+ const { filename } = state;
48
+
42
49
  if (
43
- processed.has(path) ||
50
+ filename === undefined ||
44
51
  processed.has(path.node) ||
45
- isFromThisModule(state.filename)
52
+ isFromThisModule(filename)
46
53
  ) {
47
54
  return;
48
55
  }
49
56
 
50
57
  const statements =
51
- handleReactNativeImport(path.node, t, state.filename) ??
52
- handleReactNativeWebImport(path.node, t, state.filename);
58
+ handleReactNativeImport(path.node, t, filename) ??
59
+ handleReactNativeWebImport(path.node, t, filename);
53
60
 
54
61
  if (!statements) {
55
62
  return;
@@ -62,10 +69,12 @@ export default function ({
62
69
  path.replaceWithMultiple(statements);
63
70
  },
64
71
  VariableDeclaration(path, state): void {
72
+ const { filename } = state;
73
+
65
74
  if (
66
- processed.has(path) ||
75
+ filename === undefined ||
67
76
  processed.has(path.node) ||
68
- isFromThisModule(state.filename)
77
+ isFromThisModule(filename)
69
78
  ) {
70
79
  return;
71
80
  }
@@ -94,6 +103,11 @@ export default function ({
94
103
  return;
95
104
  }
96
105
 
106
+ // A local function called require is not the module loader.
107
+ if (path.scope.getBinding("require")) {
108
+ return;
109
+ }
110
+
97
111
  const initArg = init.arguments.at(0);
98
112
 
99
113
  if (!initArg) {
@@ -114,14 +128,14 @@ export default function ({
114
128
  t,
115
129
  id.name,
116
130
  initArg.value,
117
- state.filename,
131
+ filename,
118
132
  ) ??
119
133
  handleReactNativeWebIdentifierRequire(
120
134
  path,
121
135
  t,
122
136
  id.name,
123
137
  initArg.value,
124
- state.filename,
138
+ filename,
125
139
  );
126
140
  } else if (
127
141
  t.isObjectPattern(id) &&
@@ -134,14 +148,14 @@ export default function ({
134
148
  t,
135
149
  id,
136
150
  initArg.value,
137
- state.filename,
151
+ filename,
138
152
  ) ??
139
153
  handleReactNativeWebObjectPatternRequire(
140
154
  path,
141
155
  t,
142
156
  id,
143
157
  initArg.value,
144
- state.filename,
158
+ filename,
145
159
  );
146
160
  } else if (
147
161
  t.isIdentifier(id) &&
@@ -152,12 +166,13 @@ export default function ({
152
166
  if (!source) {
153
167
  return;
154
168
  }
155
- statements = handleReactNativeWebIdentifierRequire(
169
+ statements = handleReactNativeWebInteropRequireDefault(
156
170
  path,
157
171
  t,
158
172
  id.name,
173
+ init,
159
174
  source,
160
- state.filename,
175
+ filename,
161
176
  );
162
177
  }
163
178
 
@@ -1,7 +1,6 @@
1
- import { resolve } from "path";
2
-
3
1
  import { type NodePath } from "@babel/traverse";
4
2
  import tBabelTypes, {
3
+ type CallExpression,
5
4
  type ImportDeclaration,
6
5
  type ObjectPattern,
7
6
  type Statement,
@@ -9,12 +8,13 @@ import tBabelTypes, {
9
8
  } from "@babel/types";
10
9
 
11
10
  import { allowedModules } from "./allowedModules";
11
+ import { resolveImportSource } from "./helpers";
12
12
 
13
13
  type BabelTypes = typeof tBabelTypes;
14
14
 
15
15
  function parseReactNativeWebSource(source: string, filename: string) {
16
16
  if (source.startsWith(".")) {
17
- source = resolve(filename, source);
17
+ source = resolveImportSource(filename, source);
18
18
 
19
19
  const internalPath = source.split("react-native-web/dist")[1];
20
20
  if (!internalPath) {
@@ -48,6 +48,7 @@ export function handleReactNativeWebImport(
48
48
  filename: string,
49
49
  ): Statement[] | undefined {
50
50
  const { specifiers, source } = declaration;
51
+ if (declaration.importKind && declaration.importKind !== "value") return;
51
52
 
52
53
  const rnwSource = parseReactNativeWebSource(source.value, filename);
53
54
  if (!rnwSource) {
@@ -76,7 +77,7 @@ export function handleReactNativeWebImport(
76
77
  } else {
77
78
  statements.push(
78
79
  t.importDeclaration(
79
- [t.importSpecifier(specifier.local, specifier.local)],
80
+ [t.importSpecifier(specifier.local, t.identifier(name))],
80
81
  t.stringLiteral(`react-native-css/components/${name}`),
81
82
  ),
82
83
  );
@@ -89,6 +90,10 @@ export function handleReactNativeWebImport(
89
90
  ),
90
91
  );
91
92
  } else {
93
+ if (specifier.importKind && specifier.importKind !== "value") {
94
+ statements.push(t.importDeclaration([specifier], source));
95
+ continue;
96
+ }
92
97
  const localName = t.isStringLiteral(specifier.imported)
93
98
  ? specifier.imported.value
94
99
  : specifier.imported.name;
@@ -158,6 +163,28 @@ export function handleReactNativeWebIdentifierRequire(
158
163
  }
159
164
  }
160
165
 
166
+ export function handleReactNativeWebInteropRequireDefault(
167
+ path: NodePath<VariableDeclaration>,
168
+ t: BabelTypes,
169
+ id: string,
170
+ init: CallExpression,
171
+ source: string,
172
+ filename: string,
173
+ ) {
174
+ const parsed = parseReactNativeWebSource(source, filename);
175
+ if (!parsed) return;
176
+
177
+ const wrapped = t.cloneNode(init);
178
+ wrapped.arguments = [
179
+ t.callExpression(t.identifier("require"), [t.stringLiteral(parsed.source)]),
180
+ ];
181
+ return [
182
+ t.variableDeclaration(path.node.kind, [
183
+ t.variableDeclarator(t.identifier(id), wrapped),
184
+ ]),
185
+ ];
186
+ }
187
+
161
188
  export function handleReactNativeWebObjectPatternRequire(
162
189
  path: NodePath<VariableDeclaration>,
163
190
  t: BabelTypes,
@@ -180,6 +207,7 @@ export function handleReactNativeWebObjectPatternRequire(
180
207
  // We need to exit as we do not handle `const { Text, ...rest } = require('react-native-web');`
181
208
  return;
182
209
  } else if (
210
+ identifier.computed ||
183
211
  !(t.isIdentifier(identifier.value) && t.isIdentifier(identifier.key))
184
212
  ) {
185
213
  // Bail out on anything that isn't `const { <key>: <identifier> } = require('react-native-web');`
@@ -1,5 +1,3 @@
1
- import { dirname, resolve } from "path";
2
-
3
1
  import { type NodePath } from "@babel/traverse";
4
2
  import tBabelTypes, {
5
3
  type ImportDeclaration,
@@ -9,12 +7,13 @@ import tBabelTypes, {
9
7
  } from "@babel/types";
10
8
 
11
9
  import { allowedModules } from "./allowedModules";
10
+ import { resolveImportSource } from "./helpers";
12
11
 
13
12
  type BabelTypes = typeof tBabelTypes;
14
13
 
15
14
  function parseReactNativeSource(source: string, filename: string) {
16
15
  if (source.startsWith(".")) {
17
- source = resolve(dirname(filename), source);
16
+ source = resolveImportSource(filename, source);
18
17
 
19
18
  const internalPath = source.split("react-native/Libraries/Components/")[1];
20
19
  if (!internalPath) {
@@ -48,6 +47,7 @@ export function handleReactNativeImport(
48
47
  filename: string,
49
48
  ): Statement[] | undefined {
50
49
  const { specifiers, source } = declaration;
50
+ if (declaration.importKind && declaration.importKind !== "value") return;
51
51
 
52
52
  const rnwSource = parseReactNativeSource(source.value, filename);
53
53
  if (!rnwSource) {
@@ -76,7 +76,7 @@ export function handleReactNativeImport(
76
76
  } else {
77
77
  statements.push(
78
78
  t.importDeclaration(
79
- [t.importSpecifier(specifier.local, specifier.local)],
79
+ [t.importSpecifier(specifier.local, t.identifier(name))],
80
80
  t.stringLiteral(`react-native-css/components/${name}`),
81
81
  ),
82
82
  );
@@ -89,6 +89,10 @@ export function handleReactNativeImport(
89
89
  ),
90
90
  );
91
91
  } else {
92
+ if (specifier.importKind && specifier.importKind !== "value") {
93
+ statements.push(t.importDeclaration([specifier], source));
94
+ continue;
95
+ }
92
96
  const localName = t.isStringLiteral(specifier.imported)
93
97
  ? specifier.imported.value
94
98
  : specifier.imported.name;
@@ -180,6 +184,7 @@ export function handleReactNativeObjectPatternRequire(
180
184
  // We need to exit as we do not handle `const { Text, ...rest } = require('react-native');`
181
185
  return;
182
186
  } else if (
187
+ identifier.computed ||
183
188
  !(t.isIdentifier(identifier.value) && t.isIdentifier(identifier.key))
184
189
  ) {
185
190
  // Bail out on anything that isn't `const { <key>: <identifier> } = require('react-native');`
@@ -1,4 +1,5 @@
1
1
  import type {
2
+ Declaration,
2
3
  DeclarationBlock,
3
4
  ParsedComponent,
4
5
  Rule,
@@ -99,6 +100,49 @@ export function parsePropAtRule(rules?: (Rule | PropAtRule)[]) {
99
100
  return mapping;
100
101
  }
101
102
 
103
+ const mappingProperty = "-rn-native-mapping";
104
+
105
+ export function isMappingProperty(name: string) {
106
+ return name === mappingProperty || name.startsWith(`${mappingProperty}-`);
107
+ }
108
+
109
+ /** Declaration metadata survives the optimizer flattening nested at rules. */
110
+ export function parsePropDeclarations(declarations: Declaration[] = []) {
111
+ const mapping: StyleRuleMapping = {};
112
+ for (const declaration of declarations) {
113
+ if (
114
+ declaration.property !== "custom" ||
115
+ !isMappingProperty(declaration.value.name)
116
+ ) {
117
+ continue;
118
+ }
119
+ const { name, value } = declaration.value;
120
+ const target = value.filter(
121
+ (item): item is Extract<TokenOrValue, { type: "token" }> =>
122
+ item.type === "token" && item.value.type !== "white-space",
123
+ );
124
+ if (target.length === 0) continue;
125
+ nativeMappingAtRuleBlock(
126
+ [
127
+ {
128
+ type: "token",
129
+ value: {
130
+ type: "ident",
131
+ value:
132
+ name === mappingProperty
133
+ ? "*"
134
+ : name.slice(mappingProperty.length + 1),
135
+ },
136
+ },
137
+ { type: "token", value: { type: "colon" } },
138
+ ...target,
139
+ ],
140
+ mapping,
141
+ );
142
+ }
143
+ return mapping;
144
+ }
145
+
102
146
  function nativeMappingAtRuleBlock(
103
147
  token: Extract<TokenOrValue, { type: "token" }>[],
104
148
  mapping: StyleRuleMapping = {},
@@ -4,16 +4,20 @@ import { inspect } from "node:util";
4
4
  import { debug } from "debug";
5
5
  import {
6
6
  type ContainerRule,
7
- type MediaQuery as CSSMediaQuery,
8
7
  type CustomAtRules,
9
8
  type MediaRule,
10
9
  type ParsedComponent,
11
10
  type PropertyRule,
12
11
  type Rule,
13
12
  type Visitor,
13
+ type Warning,
14
14
  } from "lightningcss";
15
15
 
16
- import { maybeMutateReactNativeOptions, parsePropAtRule } from "./atRules";
16
+ import {
17
+ maybeMutateReactNativeOptions,
18
+ parsePropAtRule,
19
+ parsePropDeclarations,
20
+ } from "./atRules";
17
21
  import type {
18
22
  CompilerOptions,
19
23
  ContainerQuery,
@@ -39,6 +43,21 @@ import { supportsConditionValid } from "./supports";
39
43
 
40
44
  const defaultLogger = debug("react-native-css:compiler");
41
45
 
46
+ // lightningcss reports this package's own at-rule as unknown
47
+ const OWN_AT_RULE_WARNING = "Unknown at rule: @nativeMapping";
48
+
49
+ // The warning is the only record of what lightningcss could not parse; only the first pass reads the author's CSS
50
+ function reportSyntaxWarnings(
51
+ builder: StylesheetBuilder,
52
+ warnings: Warning[],
53
+ ): void {
54
+ for (const warning of warnings) {
55
+ if (warning.message !== OWN_AT_RULE_WARNING) {
56
+ builder.addSyntaxWarning(warning.message);
57
+ }
58
+ }
59
+ }
60
+
42
61
  /**
43
62
  * Converts a CSS file to a collection of style declarations that can be used with the StyleSheet API
44
63
  *
@@ -92,9 +111,41 @@ export function compile(code: Buffer | string, options: CompilerOptions = {}) {
92
111
  const css = typeof code === "string" ? code : code.toString();
93
112
  const match = css.match(/:root\s*\{[^}]*font-size:\s*([\d.]+)px/);
94
113
  effectiveRem = match?.[1] ? parseFloat(match[1]) : 14;
114
+ options.inlineRem = effectiveRem;
95
115
  }
96
116
 
97
- const firstPassVisitor: Visitor<CustomAtRules> = {};
117
+ const firstPassVisitor: Visitor<CustomAtRules> = {
118
+ Rule(rule) {
119
+ if (
120
+ rule.type === "unknown" &&
121
+ ["cssInterop", "react-native"].includes(rule.value.name)
122
+ ) {
123
+ throw new Error(
124
+ `Unsupported @${rule.value.name} configuration. Use the compiler inlineVariables.exclude option to preserve variables, @media (prefers-color-scheme: dark) for dark mode, and React Native Appearance.setColorScheme() for manual selection.`,
125
+ );
126
+ }
127
+ // Reject before variable inlining can erase an unsupported condition and
128
+ // accidentally turn its values into unconditional declarations.
129
+ if (
130
+ rule.type === "style" &&
131
+ rule.value.selectors.some(
132
+ (selector) =>
133
+ selector.some(
134
+ (part) => part.type === "pseudo-class" && part.kind === "root",
135
+ ) &&
136
+ selector.some(
137
+ (part) =>
138
+ part.type === "class" ||
139
+ (part.type === "attribute" && part.name === "class"),
140
+ ),
141
+ )
142
+ ) {
143
+ throw new Error(
144
+ "Class-qualified :root selectors are unsupported on native. Use @media (prefers-color-scheme: dark) for dark mode, and React Native Appearance.setColorScheme() for manual selection.",
145
+ );
146
+ }
147
+ },
148
+ };
98
149
 
99
150
  if (effectiveRem !== false) {
100
151
  const remMultiplier = effectiveRem;
@@ -135,7 +186,7 @@ export function compile(code: Buffer | string, options: CompilerOptions = {}) {
135
186
  };
136
187
  }
137
188
 
138
- const { code: firstPass } = lightningcss({
189
+ const { code: firstPass, warnings: firstPassWarnings } = lightningcss({
139
190
  code: typeof code === "string" ? new TextEncoder().encode(code) : code,
140
191
  include: Features.DoublePositionGradients | Features.ColorFunction,
141
192
  exclude: Features.VendorPrefixes,
@@ -196,6 +247,8 @@ export function compile(code: Buffer | string, options: CompilerOptions = {}) {
196
247
  projectRoot: options.projectRoot ?? process.cwd(),
197
248
  });
198
249
 
250
+ reportSyntaxWarnings(builder, firstPassWarnings);
251
+
199
252
  return {
200
253
  stylesheet: () => builder.getNativeStyleSheet(),
201
254
  warnings: () => builder.getWarnings(),
@@ -254,7 +307,12 @@ function extractRule(
254
307
  const value = rule.value;
255
308
 
256
309
  const declarationBlock = value.declarations;
257
- mapping = { ...mapping, ...parsePropAtRule(value.rules) };
310
+ mapping = {
311
+ ...mapping,
312
+ ...parsePropAtRule(value.rules),
313
+ ...parsePropDeclarations(declarationBlock?.declarations),
314
+ ...parsePropDeclarations(declarationBlock?.importantDeclarations),
315
+ };
258
316
 
259
317
  // If the rule is a style declaration, extract it with the `getExtractedStyle` function and store it in the `declarations` map
260
318
  builder = builder.fork("style", value.selectors);
@@ -337,39 +395,16 @@ function extractMedia(
337
395
  builder: StylesheetBuilder,
338
396
  mapping: StyleRuleMapping,
339
397
  ) {
340
- builder = builder.fork("media");
341
-
342
- // Initialize an empty array to store screen media queries
343
- const media: CSSMediaQuery[] = [];
344
-
345
- // Iterate over all media queries in the mediaRule
398
+ // Comma separated queries are alternatives. Each branch inherits the outer
399
+ // conditions without adding its siblings as required conjunctions.
346
400
  for (const mediaQuery of mediaRule.query.mediaQueries) {
347
- if (
348
- // If this is only a media query
349
- (mediaQuery.mediaType === "print" && mediaQuery.qualifier !== "not") ||
350
- // If this is a @media not print {}
351
- // We can only do this if there are no conditions, as @media not print and (min-width: 100px) could be valid
352
- (mediaQuery.mediaType !== "print" &&
353
- mediaQuery.qualifier === "not" &&
354
- mediaQuery.condition === null)
355
- ) {
401
+ const queryBuilder = builder.fork("media");
402
+ if (!parseMediaQuery(mediaQuery, queryBuilder)) {
356
403
  continue;
357
404
  }
358
-
359
- media.push(mediaQuery);
360
- }
361
-
362
- if (media.length === 0) {
363
- return;
364
- }
365
-
366
- for (const m of media) {
367
- parseMediaQuery(m, builder);
368
- }
369
-
370
- // Iterate over all rules in the mediaRule and extract their styles using the updated CompilerCollection
371
- for (const rule of mediaRule.rules) {
372
- extractRule(rule, builder, mapping);
405
+ for (const rule of mediaRule.rules) {
406
+ extractRule(rule, queryBuilder, mapping);
407
+ }
373
408
  }
374
409
  }
375
410
 
@@ -386,9 +421,12 @@ function extractContainer(
386
421
  builder = builder.fork("container");
387
422
 
388
423
  // Iterate over all rules inside the containerRule and extract their styles using the updated CompilerCollection
389
- const query: ContainerQuery = {
390
- m: parseContainerCondition(containerRule.condition, builder),
391
- };
424
+ const condition = parseContainerCondition(containerRule.condition, builder);
425
+ if (!condition) {
426
+ // An unsupported condition must not turn into an unconditional container.
427
+ return;
428
+ }
429
+ const query: ContainerQuery = { m: condition };
392
430
 
393
431
  if (containerRule.name) {
394
432
  query.n = `c:${containerRule.name}`;
@@ -438,21 +476,14 @@ function parsePropertyInitialValue(
438
476
  case "length-percentage":
439
477
  return parseLength(component.value, builder);
440
478
  case "token-list":
441
- return reduceParseUnparsed(
442
- component.value,
443
- builder,
444
- "@property",
445
- false,
446
- );
479
+ return reduceParseUnparsed(component.value, builder, "@property", false);
447
480
  case "custom-ident":
448
481
  case "literal":
449
482
  return component.value;
450
483
  case "repeated": {
451
484
  const results = component.value.components
452
485
  .map((c) => parsePropertyInitialValue(c, builder))
453
- .filter(
454
- (v): v is NonNullable<StyleDescriptor> => v !== undefined,
455
- );
486
+ .filter((v): v is NonNullable<StyleDescriptor> => v !== undefined);
456
487
  // Unwrap single-child repeated values so downstream consumers get a
457
488
  // scalar instead of a 1-element array. For example, `<length>+` with
458
489
  // initial-value `10px` should produce the same shape as `<length>`.
@@ -24,6 +24,15 @@ export interface InlineVariableOptions {
24
24
  exclude?: `--${string}`[];
25
25
  }
26
26
 
27
+ // A channel is absent when the compile recorded nothing on it
28
+ export interface CompilerWarnings {
29
+ properties?: string[];
30
+ values?: Record<string, string[]>;
31
+ functions?: string[];
32
+ // CSS lightningcss could not parse, which the author fixes in their stylesheet
33
+ syntax?: string[];
34
+ }
35
+
27
36
  /**
28
37
  * A `react-native-css` StyleSheet
29
38
  */
@@ -36,9 +36,14 @@ function parseContainerQueryCondition(
36
36
  const query = parseContainerCondition(condition.value, builder);
37
37
  return query ? ["!", query] : undefined;
38
38
  case "operation":
39
- const conditions = condition.conditions
40
- .map((c) => parseContainerQueryCondition(c, builder))
41
- .filter((v): v is MediaCondition => !!v);
39
+ const parsed = condition.conditions.map((c) =>
40
+ parseContainerCondition(c, builder),
41
+ );
42
+ if (condition.operator === "and" && parsed.some((c) => !c)) {
43
+ // Dropping a conjunct would broaden the query to unrelated containers.
44
+ return;
45
+ }
46
+ const conditions = parsed.filter((c): c is MediaCondition => !!c);
42
47
 
43
48
  if (conditions.length === 0) {
44
49
  return;