react-native-css 0.0.0-nightly.da5ce0f → 0.0.0-nightly.df32ce3

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 (548) hide show
  1. package/README.md +24 -0
  2. package/dist/commonjs/babel/helpers.js +7 -0
  3. package/dist/commonjs/babel/helpers.js.map +1 -1
  4. package/dist/commonjs/babel/import-plugin.js +20 -8
  5. package/dist/commonjs/babel/import-plugin.js.map +1 -1
  6. package/dist/commonjs/babel/react-native-web.js +17 -4
  7. package/dist/commonjs/babel/react-native-web.js.map +1 -1
  8. package/dist/commonjs/babel/react-native.js +9 -4
  9. package/dist/commonjs/babel/react-native.js.map +1 -1
  10. package/dist/commonjs/compiler/atRules.js +35 -0
  11. package/dist/commonjs/compiler/atRules.js.map +1 -1
  12. package/dist/commonjs/compiler/compiler.js +107 -32
  13. package/dist/commonjs/compiler/compiler.js.map +1 -1
  14. package/dist/commonjs/compiler/container-query.js +6 -1
  15. package/dist/commonjs/compiler/container-query.js.map +1 -1
  16. package/dist/commonjs/compiler/declarations.js +103 -62
  17. package/dist/commonjs/compiler/declarations.js.map +1 -1
  18. package/dist/commonjs/compiler/lightningcss-loader.js +11 -8
  19. package/dist/commonjs/compiler/lightningcss-loader.js.map +1 -1
  20. package/dist/commonjs/compiler/media-query.js +16 -6
  21. package/dist/commonjs/compiler/media-query.js.map +1 -1
  22. package/dist/commonjs/compiler/selector-builder.js +15 -4
  23. package/dist/commonjs/compiler/selector-builder.js.map +1 -1
  24. package/dist/commonjs/compiler/stylesheet.js +16 -3
  25. package/dist/commonjs/compiler/stylesheet.js.map +1 -1
  26. package/dist/commonjs/compiler/supports.js +1 -3
  27. package/dist/commonjs/compiler/supports.js.map +1 -1
  28. package/dist/commonjs/components/FlatList.js +1 -0
  29. package/dist/commonjs/components/FlatList.js.map +1 -1
  30. package/dist/commonjs/components/ImageBackground.js +2 -6
  31. package/dist/commonjs/components/ImageBackground.js.map +1 -1
  32. package/dist/commonjs/components/KeyboardAvoidingView.js +2 -3
  33. package/dist/commonjs/components/KeyboardAvoidingView.js.map +1 -1
  34. package/dist/commonjs/components/index.cjs +46 -1
  35. package/dist/commonjs/components/index.cjs.map +1 -1
  36. package/dist/commonjs/jest/index.js +1 -1
  37. package/dist/commonjs/jest/index.js.map +1 -1
  38. package/dist/commonjs/metro/cache-version.js +43 -0
  39. package/dist/commonjs/metro/cache-version.js.map +1 -0
  40. package/dist/commonjs/metro/index.js +2 -0
  41. package/dist/commonjs/metro/index.js.map +1 -1
  42. package/dist/commonjs/metro/metro-transformer.js +16 -3
  43. package/dist/commonjs/metro/metro-transformer.js.map +1 -1
  44. package/dist/commonjs/metro/typescript.js +26 -6
  45. package/dist/commonjs/metro/typescript.js.map +1 -1
  46. package/dist/commonjs/metro/warnings.js +135 -0
  47. package/dist/commonjs/metro/warnings.js.map +1 -0
  48. package/dist/commonjs/native/api.js +13 -9
  49. package/dist/commonjs/native/api.js.map +1 -1
  50. package/dist/commonjs/native/conditions/attributes.js +16 -9
  51. package/dist/commonjs/native/conditions/attributes.js.map +1 -1
  52. package/dist/commonjs/native/conditions/container-query.js +11 -11
  53. package/dist/commonjs/native/conditions/container-query.js.map +1 -1
  54. package/dist/commonjs/native/conditions/media-query.js +1 -1
  55. package/dist/commonjs/native/conditions/media-query.js.map +1 -1
  56. package/dist/commonjs/native/react/interaction.js +10 -5
  57. package/dist/commonjs/native/react/interaction.js.map +1 -1
  58. package/dist/commonjs/native/react/rules.js +12 -5
  59. package/dist/commonjs/native/react/rules.js.map +1 -1
  60. package/dist/commonjs/native/react/useNativeCss.js +60 -11
  61. package/dist/commonjs/native/react/useNativeCss.js.map +1 -1
  62. package/dist/commonjs/native/react/usePassthrough.js +5 -2
  63. package/dist/commonjs/native/react/usePassthrough.js.map +1 -1
  64. package/dist/commonjs/native/reactivity.js +61 -24
  65. package/dist/commonjs/native/reactivity.js.map +1 -1
  66. package/dist/commonjs/native/reanimated.js +15 -3
  67. package/dist/commonjs/native/reanimated.js.map +1 -1
  68. package/dist/commonjs/native/styles/functions/color-mix.js +43 -29
  69. package/dist/commonjs/native/styles/functions/color-mix.js.map +1 -1
  70. package/dist/commonjs/native/styles/functions/filters.js +18 -5
  71. package/dist/commonjs/native/styles/functions/filters.js.map +1 -1
  72. package/dist/commonjs/native/styles/functions/numeric-functions.js +4 -3
  73. package/dist/commonjs/native/styles/functions/numeric-functions.js.map +1 -1
  74. package/dist/commonjs/native/styles/functions/string-functions.js +16 -1
  75. package/dist/commonjs/native/styles/functions/string-functions.js.map +1 -1
  76. package/dist/commonjs/native/styles/functions/transform-functions.js +5 -4
  77. package/dist/commonjs/native/styles/functions/transform-functions.js.map +1 -1
  78. package/dist/commonjs/native/styles/index.js +140 -14
  79. package/dist/commonjs/native/styles/index.js.map +1 -1
  80. package/dist/commonjs/native/styles/resolve.js +10 -6
  81. package/dist/commonjs/native/styles/resolve.js.map +1 -1
  82. package/dist/commonjs/native/styles/scale-factor.js +13 -0
  83. package/dist/commonjs/native/styles/scale-factor.js.map +1 -0
  84. package/dist/commonjs/native/styles/shorthands/_handler.js +10 -0
  85. package/dist/commonjs/native/styles/shorthands/_handler.js.map +1 -1
  86. package/dist/commonjs/native/styles/shorthands/animation.js +6 -3
  87. package/dist/commonjs/native/styles/shorthands/animation.js.map +1 -1
  88. package/dist/commonjs/native/styles/shorthands/box-shadow.js +45 -12
  89. package/dist/commonjs/native/styles/shorthands/box-shadow.js.map +1 -1
  90. package/dist/commonjs/native/styles/shorthands/index.js +11 -0
  91. package/dist/commonjs/native/styles/shorthands/index.js.map +1 -1
  92. package/dist/commonjs/native/styles/shorthands/logical-border-width.js +22 -0
  93. package/dist/commonjs/native/styles/shorthands/logical-border-width.js.map +1 -0
  94. package/dist/commonjs/native/styles/variables.js +55 -43
  95. package/dist/commonjs/native/styles/variables.js.map +1 -1
  96. package/dist/commonjs/native-internal/root.js +18 -7
  97. package/dist/commonjs/native-internal/root.js.map +1 -1
  98. package/dist/commonjs/native-internal/style-collection.js +1 -1
  99. package/dist/commonjs/native-internal/style-collection.js.map +1 -1
  100. package/dist/commonjs/native-internal/variables.js +1 -1
  101. package/dist/commonjs/native-internal/variables.js.map +1 -1
  102. package/dist/commonjs/utilities/dot-notation.types.js +4 -0
  103. package/dist/commonjs/utilities/style-descriptor.js +4 -9
  104. package/dist/commonjs/utilities/style-descriptor.js.map +1 -1
  105. package/dist/commonjs/web/api.js +1 -1
  106. package/dist/commonjs/web/api.js.map +1 -1
  107. package/dist/commonjs/web/assign-style.js +4 -1
  108. package/dist/commonjs/web/assign-style.js.map +1 -1
  109. package/dist/module/babel/helpers.js +6 -0
  110. package/dist/module/babel/helpers.js.map +1 -1
  111. package/dist/module/babel/import-plugin.js +22 -10
  112. package/dist/module/babel/import-plugin.js.map +1 -1
  113. package/dist/module/babel/react-native-web.js +16 -4
  114. package/dist/module/babel/react-native-web.js.map +1 -1
  115. package/dist/module/babel/react-native.js +9 -4
  116. package/dist/module/babel/react-native.js.map +1 -1
  117. package/dist/module/compiler/atRules.js +33 -0
  118. package/dist/module/compiler/atRules.js.map +1 -1
  119. package/dist/module/compiler/compiler.js +109 -34
  120. package/dist/module/compiler/compiler.js.map +1 -1
  121. package/dist/module/compiler/compiler.types.js +2 -0
  122. package/dist/module/compiler/compiler.types.js.map +1 -1
  123. package/dist/module/compiler/container-query.js +6 -1
  124. package/dist/module/compiler/container-query.js.map +1 -1
  125. package/dist/module/compiler/declarations.js +103 -62
  126. package/dist/module/compiler/declarations.js.map +1 -1
  127. package/dist/module/compiler/lightningcss-loader.js +10 -8
  128. package/dist/module/compiler/lightningcss-loader.js.map +1 -1
  129. package/dist/module/compiler/media-query.js +16 -6
  130. package/dist/module/compiler/media-query.js.map +1 -1
  131. package/dist/module/compiler/selector-builder.js +15 -4
  132. package/dist/module/compiler/selector-builder.js.map +1 -1
  133. package/dist/module/compiler/stylesheet.js +16 -3
  134. package/dist/module/compiler/stylesheet.js.map +1 -1
  135. package/dist/module/compiler/supports.js +1 -3
  136. package/dist/module/compiler/supports.js.map +1 -1
  137. package/dist/module/components/FlatList.js +1 -0
  138. package/dist/module/components/FlatList.js.map +1 -1
  139. package/dist/module/components/ImageBackground.js +2 -6
  140. package/dist/module/components/ImageBackground.js.map +1 -1
  141. package/dist/module/components/KeyboardAvoidingView.js +2 -3
  142. package/dist/module/components/KeyboardAvoidingView.js.map +1 -1
  143. package/dist/module/components/index.cjs +46 -1
  144. package/dist/module/components/index.cjs.map +1 -1
  145. package/dist/module/jest/index.js +1 -1
  146. package/dist/module/jest/index.js.map +1 -1
  147. package/dist/module/metro/cache-version.js +39 -0
  148. package/dist/module/metro/cache-version.js.map +1 -0
  149. package/dist/module/metro/index.js +2 -0
  150. package/dist/module/metro/index.js.map +1 -1
  151. package/dist/module/metro/metro-transformer.js +16 -3
  152. package/dist/module/metro/metro-transformer.js.map +1 -1
  153. package/dist/module/metro/typescript.js +26 -6
  154. package/dist/module/metro/typescript.js.map +1 -1
  155. package/dist/module/metro/warnings.js +131 -0
  156. package/dist/module/metro/warnings.js.map +1 -0
  157. package/dist/module/native/api.js +15 -11
  158. package/dist/module/native/api.js.map +1 -1
  159. package/dist/module/native/conditions/attributes.js +16 -9
  160. package/dist/module/native/conditions/attributes.js.map +1 -1
  161. package/dist/module/native/conditions/container-query.js +11 -11
  162. package/dist/module/native/conditions/container-query.js.map +1 -1
  163. package/dist/module/native/conditions/media-query.js +1 -1
  164. package/dist/module/native/conditions/media-query.js.map +1 -1
  165. package/dist/module/native/react/interaction.js +10 -5
  166. package/dist/module/native/react/interaction.js.map +1 -1
  167. package/dist/module/native/react/rules.js +13 -6
  168. package/dist/module/native/react/rules.js.map +1 -1
  169. package/dist/module/native/react/useNativeCss.js +63 -14
  170. package/dist/module/native/react/useNativeCss.js.map +1 -1
  171. package/dist/module/native/react/usePassthrough.js +5 -2
  172. package/dist/module/native/react/usePassthrough.js.map +1 -1
  173. package/dist/module/native/reactivity.js +55 -22
  174. package/dist/module/native/reactivity.js.map +1 -1
  175. package/dist/module/native/reanimated.js +15 -3
  176. package/dist/module/native/reanimated.js.map +1 -1
  177. package/dist/module/native/styles/functions/color-mix.js +43 -29
  178. package/dist/module/native/styles/functions/color-mix.js.map +1 -1
  179. package/dist/module/native/styles/functions/filters.js +16 -4
  180. package/dist/module/native/styles/functions/filters.js.map +1 -1
  181. package/dist/module/native/styles/functions/numeric-functions.js +4 -3
  182. package/dist/module/native/styles/functions/numeric-functions.js.map +1 -1
  183. package/dist/module/native/styles/functions/string-functions.js +13 -0
  184. package/dist/module/native/styles/functions/string-functions.js.map +1 -1
  185. package/dist/module/native/styles/functions/transform-functions.js +5 -4
  186. package/dist/module/native/styles/functions/transform-functions.js.map +1 -1
  187. package/dist/module/native/styles/index.js +140 -14
  188. package/dist/module/native/styles/index.js.map +1 -1
  189. package/dist/module/native/styles/resolve.js +10 -6
  190. package/dist/module/native/styles/resolve.js.map +1 -1
  191. package/dist/module/native/styles/scale-factor.js +9 -0
  192. package/dist/module/native/styles/scale-factor.js.map +1 -0
  193. package/dist/module/native/styles/shorthands/_handler.js +11 -1
  194. package/dist/module/native/styles/shorthands/_handler.js.map +1 -1
  195. package/dist/module/native/styles/shorthands/animation.js +6 -3
  196. package/dist/module/native/styles/shorthands/animation.js.map +1 -1
  197. package/dist/module/native/styles/shorthands/box-shadow.js +46 -12
  198. package/dist/module/native/styles/shorthands/box-shadow.js.map +1 -1
  199. package/dist/module/native/styles/shorthands/index.js +1 -0
  200. package/dist/module/native/styles/shorthands/index.js.map +1 -1
  201. package/dist/module/native/styles/shorthands/logical-border-width.js +18 -0
  202. package/dist/module/native/styles/shorthands/logical-border-width.js.map +1 -0
  203. package/dist/module/native/styles/variables.js +55 -43
  204. package/dist/module/native/styles/variables.js.map +1 -1
  205. package/dist/module/native-internal/root.js +18 -7
  206. package/dist/module/native-internal/root.js.map +1 -1
  207. package/dist/module/native-internal/style-collection.js +1 -1
  208. package/dist/module/native-internal/style-collection.js.map +1 -1
  209. package/dist/module/native-internal/variables.js +2 -2
  210. package/dist/module/native-internal/variables.js.map +1 -1
  211. package/dist/module/utilities/dot-notation.types.js +2 -0
  212. package/dist/module/utilities/style-descriptor.js +4 -9
  213. package/dist/module/utilities/style-descriptor.js.map +1 -1
  214. package/dist/module/web/api.js +1 -1
  215. package/dist/module/web/api.js.map +1 -1
  216. package/dist/module/web/assign-style.js +4 -1
  217. package/dist/module/web/assign-style.js.map +1 -1
  218. package/dist/typescript/commonjs/src/babel/helpers.d.ts +2 -1
  219. package/dist/typescript/commonjs/src/babel/helpers.d.ts.map +1 -1
  220. package/dist/typescript/commonjs/src/babel/import-plugin.d.ts.map +1 -1
  221. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts +2 -1
  222. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts.map +1 -1
  223. package/dist/typescript/commonjs/src/babel/react-native.d.ts.map +1 -1
  224. package/dist/typescript/commonjs/src/compiler/atRules.d.ts +4 -1
  225. package/dist/typescript/commonjs/src/compiler/atRules.d.ts.map +1 -1
  226. package/dist/typescript/commonjs/src/compiler/compiler.d.ts +1 -5
  227. package/dist/typescript/commonjs/src/compiler/compiler.d.ts.map +1 -1
  228. package/dist/typescript/commonjs/src/compiler/compiler.types.d.ts +6 -0
  229. package/dist/typescript/commonjs/src/compiler/compiler.types.d.ts.map +1 -1
  230. package/dist/typescript/commonjs/src/compiler/declarations.d.ts +2 -2
  231. package/dist/typescript/commonjs/src/compiler/declarations.d.ts.map +1 -1
  232. package/dist/typescript/commonjs/src/compiler/lightningcss-loader.d.ts.map +1 -1
  233. package/dist/typescript/commonjs/src/compiler/media-query.d.ts +1 -1
  234. package/dist/typescript/commonjs/src/compiler/media-query.d.ts.map +1 -1
  235. package/dist/typescript/commonjs/src/compiler/selector-builder.d.ts.map +1 -1
  236. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts +7 -8
  237. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts.map +1 -1
  238. package/dist/typescript/commonjs/src/components/FlatList.d.ts.map +1 -1
  239. package/dist/typescript/commonjs/src/components/ImageBackground.d.ts.map +1 -1
  240. package/dist/typescript/commonjs/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  241. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts +1 -1
  242. package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  243. package/dist/typescript/commonjs/src/jest/index.d.ts +2 -10
  244. package/dist/typescript/commonjs/src/jest/index.d.ts.map +1 -1
  245. package/dist/typescript/commonjs/src/metro/cache-version.d.ts +8 -0
  246. package/dist/typescript/commonjs/src/metro/cache-version.d.ts.map +1 -0
  247. package/dist/typescript/commonjs/src/metro/index.d.ts +4 -0
  248. package/dist/typescript/commonjs/src/metro/index.d.ts.map +1 -1
  249. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts +9 -4
  250. package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts.map +1 -1
  251. package/dist/typescript/commonjs/src/metro/typescript.d.ts.map +1 -1
  252. package/dist/typescript/commonjs/src/metro/warnings.d.ts +13 -0
  253. package/dist/typescript/commonjs/src/metro/warnings.d.ts.map +1 -0
  254. package/dist/typescript/commonjs/src/native/api.d.ts +4 -8
  255. package/dist/typescript/commonjs/src/native/api.d.ts.map +1 -1
  256. package/dist/typescript/commonjs/src/native/conditions/container-query.d.ts.map +1 -1
  257. package/dist/typescript/commonjs/src/native/react/interaction.d.ts +1 -1
  258. package/dist/typescript/commonjs/src/native/react/interaction.d.ts.map +1 -1
  259. package/dist/typescript/commonjs/src/native/react/rules.d.ts.map +1 -1
  260. package/dist/typescript/commonjs/src/native/react/useNativeCss.d.ts.map +1 -1
  261. package/dist/typescript/commonjs/src/native/react/usePassthrough.d.ts.map +1 -1
  262. package/dist/typescript/commonjs/src/native/reactivity.d.ts +14 -3
  263. package/dist/typescript/commonjs/src/native/reactivity.d.ts.map +1 -1
  264. package/dist/typescript/commonjs/src/native/reanimated.d.ts.map +1 -1
  265. package/dist/typescript/commonjs/src/native/styles/functions/color-mix.d.ts.map +1 -1
  266. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts +2 -0
  267. package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts.map +1 -1
  268. package/dist/typescript/commonjs/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  269. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts +2 -0
  270. package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts.map +1 -1
  271. package/dist/typescript/commonjs/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  272. package/dist/typescript/commonjs/src/native/styles/index.d.ts +2 -2
  273. package/dist/typescript/commonjs/src/native/styles/index.d.ts.map +1 -1
  274. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts +1 -0
  275. package/dist/typescript/commonjs/src/native/styles/resolve.d.ts.map +1 -1
  276. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts +2 -0
  277. package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts.map +1 -0
  278. package/dist/typescript/commonjs/src/native/styles/shorthands/_handler.d.ts.map +1 -1
  279. package/dist/typescript/commonjs/src/native/styles/shorthands/animation.d.ts.map +1 -1
  280. package/dist/typescript/commonjs/src/native/styles/shorthands/box-shadow.d.ts.map +1 -1
  281. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts +1 -0
  282. package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts.map +1 -1
  283. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  284. package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  285. package/dist/typescript/commonjs/src/native/styles/variables.d.ts.map +1 -1
  286. package/dist/typescript/commonjs/src/native-internal/root.d.ts +12 -0
  287. package/dist/typescript/commonjs/src/native-internal/root.d.ts.map +1 -1
  288. package/dist/typescript/commonjs/src/native-internal/variables.d.ts +1 -1
  289. package/dist/typescript/commonjs/src/native-internal/variables.d.ts.map +1 -1
  290. package/dist/typescript/commonjs/src/runtime.types.d.ts +11 -6
  291. package/dist/typescript/commonjs/src/runtime.types.d.ts.map +1 -1
  292. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts +2 -1
  293. package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts.map +1 -1
  294. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts +1 -1
  295. package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts.map +1 -1
  296. package/dist/typescript/commonjs/src/web/api.d.ts +5 -5
  297. package/dist/typescript/commonjs/src/web/api.d.ts.map +1 -1
  298. package/dist/typescript/commonjs/src/web/assign-style.d.ts.map +1 -1
  299. package/dist/typescript/module/src/babel/helpers.d.ts +2 -1
  300. package/dist/typescript/module/src/babel/helpers.d.ts.map +1 -1
  301. package/dist/typescript/module/src/babel/import-plugin.d.ts +1 -1
  302. package/dist/typescript/module/src/babel/import-plugin.d.ts.map +1 -1
  303. package/dist/typescript/module/src/babel/react-native-web.d.ts +2 -1
  304. package/dist/typescript/module/src/babel/react-native-web.d.ts.map +1 -1
  305. package/dist/typescript/module/src/babel/react-native.d.ts.map +1 -1
  306. package/dist/typescript/module/src/compiler/atRules.d.ts +6 -3
  307. package/dist/typescript/module/src/compiler/atRules.d.ts.map +1 -1
  308. package/dist/typescript/module/src/compiler/compiler.d.ts +3 -7
  309. package/dist/typescript/module/src/compiler/compiler.d.ts.map +1 -1
  310. package/dist/typescript/module/src/compiler/compiler.types.d.ts +7 -1
  311. package/dist/typescript/module/src/compiler/compiler.types.d.ts.map +1 -1
  312. package/dist/typescript/module/src/compiler/container-query.d.ts +2 -2
  313. package/dist/typescript/module/src/compiler/container-query.d.ts.map +1 -1
  314. package/dist/typescript/module/src/compiler/declarations.d.ts +4 -4
  315. package/dist/typescript/module/src/compiler/declarations.d.ts.map +1 -1
  316. package/dist/typescript/module/src/compiler/index.d.ts +2 -2
  317. package/dist/typescript/module/src/compiler/index.d.ts.map +1 -1
  318. package/dist/typescript/module/src/compiler/inline-variables.d.ts +1 -1
  319. package/dist/typescript/module/src/compiler/inline-variables.d.ts.map +1 -1
  320. package/dist/typescript/module/src/compiler/keyframes.d.ts +2 -2
  321. package/dist/typescript/module/src/compiler/keyframes.d.ts.map +1 -1
  322. package/dist/typescript/module/src/compiler/lightningcss-loader.d.ts.map +1 -1
  323. package/dist/typescript/module/src/compiler/media-query.d.ts +3 -3
  324. package/dist/typescript/module/src/compiler/media-query.d.ts.map +1 -1
  325. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts +1 -1
  326. package/dist/typescript/module/src/compiler/pseudo-elements.d.ts.map +1 -1
  327. package/dist/typescript/module/src/compiler/selector-builder.d.ts +1 -1
  328. package/dist/typescript/module/src/compiler/selector-builder.d.ts.map +1 -1
  329. package/dist/typescript/module/src/compiler/selectors.d.ts +2 -2
  330. package/dist/typescript/module/src/compiler/selectors.d.ts.map +1 -1
  331. package/dist/typescript/module/src/compiler/stylesheet.d.ts +7 -8
  332. package/dist/typescript/module/src/compiler/stylesheet.d.ts.map +1 -1
  333. package/dist/typescript/module/src/components/FlatList.d.ts.map +1 -1
  334. package/dist/typescript/module/src/components/ImageBackground.d.ts.map +1 -1
  335. package/dist/typescript/module/src/components/KeyboardAvoidingView.d.ts.map +1 -1
  336. package/dist/typescript/module/src/components/index.d.ts +16 -16
  337. package/dist/typescript/module/src/components/index.d.ts.map +1 -1
  338. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts +1 -1
  339. package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
  340. package/dist/typescript/module/src/jest/index.d.ts +2 -10
  341. package/dist/typescript/module/src/jest/index.d.ts.map +1 -1
  342. package/dist/typescript/module/src/metro/cache-version.d.ts +8 -0
  343. package/dist/typescript/module/src/metro/cache-version.d.ts.map +1 -0
  344. package/dist/typescript/module/src/metro/index.d.ts +5 -1
  345. package/dist/typescript/module/src/metro/index.d.ts.map +1 -1
  346. package/dist/typescript/module/src/metro/metro-transformer.d.ts +10 -5
  347. package/dist/typescript/module/src/metro/metro-transformer.d.ts.map +1 -1
  348. package/dist/typescript/module/src/metro/typescript.d.ts.map +1 -1
  349. package/dist/typescript/module/src/metro/warnings.d.ts +13 -0
  350. package/dist/typescript/module/src/metro/warnings.d.ts.map +1 -0
  351. package/dist/typescript/module/src/native/api.d.ts +5 -9
  352. package/dist/typescript/module/src/native/api.d.ts.map +1 -1
  353. package/dist/typescript/module/src/native/conditions/attributes.d.ts +1 -1
  354. package/dist/typescript/module/src/native/conditions/attributes.d.ts.map +1 -1
  355. package/dist/typescript/module/src/native/conditions/container-query.d.ts +2 -2
  356. package/dist/typescript/module/src/native/conditions/container-query.d.ts.map +1 -1
  357. package/dist/typescript/module/src/native/conditions/guards.d.ts +2 -2
  358. package/dist/typescript/module/src/native/conditions/guards.d.ts.map +1 -1
  359. package/dist/typescript/module/src/native/conditions/index.d.ts +3 -3
  360. package/dist/typescript/module/src/native/conditions/index.d.ts.map +1 -1
  361. package/dist/typescript/module/src/native/conditions/media-query.d.ts +1 -1
  362. package/dist/typescript/module/src/native/conditions/media-query.d.ts.map +1 -1
  363. package/dist/typescript/module/src/native/index.d.ts +3 -3
  364. package/dist/typescript/module/src/native/index.d.ts.map +1 -1
  365. package/dist/typescript/module/src/native/react/interaction.d.ts +2 -2
  366. package/dist/typescript/module/src/native/react/interaction.d.ts.map +1 -1
  367. package/dist/typescript/module/src/native/react/rules.d.ts +2 -2
  368. package/dist/typescript/module/src/native/react/rules.d.ts.map +1 -1
  369. package/dist/typescript/module/src/native/react/useNativeCss.d.ts +4 -4
  370. package/dist/typescript/module/src/native/react/useNativeCss.d.ts.map +1 -1
  371. package/dist/typescript/module/src/native/react/usePassthrough.d.ts +1 -1
  372. package/dist/typescript/module/src/native/react/usePassthrough.d.ts.map +1 -1
  373. package/dist/typescript/module/src/native/reactivity.d.ts +14 -3
  374. package/dist/typescript/module/src/native/reactivity.d.ts.map +1 -1
  375. package/dist/typescript/module/src/native/reanimated.d.ts.map +1 -1
  376. package/dist/typescript/module/src/native/styles/calculate-props.d.ts +2 -2
  377. package/dist/typescript/module/src/native/styles/calculate-props.d.ts.map +1 -1
  378. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts +1 -1
  379. package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts.map +1 -1
  380. package/dist/typescript/module/src/native/styles/functions/calc.d.ts +1 -1
  381. package/dist/typescript/module/src/native/styles/functions/calc.d.ts.map +1 -1
  382. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts +1 -1
  383. package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts.map +1 -1
  384. package/dist/typescript/module/src/native/styles/functions/filters.d.ts +3 -1
  385. package/dist/typescript/module/src/native/styles/functions/filters.d.ts.map +1 -1
  386. package/dist/typescript/module/src/native/styles/functions/index.d.ts +8 -8
  387. package/dist/typescript/module/src/native/styles/functions/index.d.ts.map +1 -1
  388. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts +1 -1
  389. package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
  390. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts +1 -1
  391. package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts.map +1 -1
  392. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts +3 -1
  393. package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts.map +1 -1
  394. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts +1 -1
  395. package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts.map +1 -1
  396. package/dist/typescript/module/src/native/styles/index.d.ts +7 -7
  397. package/dist/typescript/module/src/native/styles/index.d.ts.map +1 -1
  398. package/dist/typescript/module/src/native/styles/line-height.d.ts +1 -1
  399. package/dist/typescript/module/src/native/styles/line-height.d.ts.map +1 -1
  400. package/dist/typescript/module/src/native/styles/resolve.d.ts +4 -3
  401. package/dist/typescript/module/src/native/styles/resolve.d.ts.map +1 -1
  402. package/dist/typescript/module/src/native/styles/scale-factor.d.ts +2 -0
  403. package/dist/typescript/module/src/native/styles/scale-factor.d.ts.map +1 -0
  404. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts +1 -1
  405. package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts.map +1 -1
  406. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts +2 -2
  407. package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts.map +1 -1
  408. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts +1 -1
  409. package/dist/typescript/module/src/native/styles/shorthands/border.d.ts.map +1 -1
  410. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts +1 -1
  411. package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts.map +1 -1
  412. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts +6 -5
  413. package/dist/typescript/module/src/native/styles/shorthands/index.d.ts.map +1 -1
  414. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
  415. package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
  416. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts +1 -1
  417. package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts.map +1 -1
  418. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts +1 -1
  419. package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts.map +1 -1
  420. package/dist/typescript/module/src/native/styles/units.d.ts +1 -1
  421. package/dist/typescript/module/src/native/styles/units.d.ts.map +1 -1
  422. package/dist/typescript/module/src/native/styles/variables.d.ts +2 -2
  423. package/dist/typescript/module/src/native/styles/variables.d.ts.map +1 -1
  424. package/dist/typescript/module/src/native-internal/index.d.ts +3 -3
  425. package/dist/typescript/module/src/native-internal/index.d.ts.map +1 -1
  426. package/dist/typescript/module/src/native-internal/root.d.ts +13 -1
  427. package/dist/typescript/module/src/native-internal/root.d.ts.map +1 -1
  428. package/dist/typescript/module/src/native-internal/style-collection.d.ts +2 -2
  429. package/dist/typescript/module/src/native-internal/style-collection.d.ts.map +1 -1
  430. package/dist/typescript/module/src/native-internal/variables.d.ts +2 -2
  431. package/dist/typescript/module/src/native-internal/variables.d.ts.map +1 -1
  432. package/dist/typescript/module/src/runtime.d.ts +1 -1
  433. package/dist/typescript/module/src/runtime.d.ts.map +1 -1
  434. package/dist/typescript/module/src/runtime.native.d.ts +1 -1
  435. package/dist/typescript/module/src/runtime.native.d.ts.map +1 -1
  436. package/dist/typescript/module/src/runtime.types.d.ts +11 -6
  437. package/dist/typescript/module/src/runtime.types.d.ts.map +1 -1
  438. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts +2 -1
  439. package/dist/typescript/module/src/utilities/dot-notation.types.d.ts.map +1 -1
  440. package/dist/typescript/module/src/utilities/index.d.ts +3 -3
  441. package/dist/typescript/module/src/utilities/index.d.ts.map +1 -1
  442. package/dist/typescript/module/src/utilities/specificity.d.ts +2 -2
  443. package/dist/typescript/module/src/utilities/specificity.d.ts.map +1 -1
  444. package/dist/typescript/module/src/utilities/style-descriptor.d.ts +1 -1
  445. package/dist/typescript/module/src/utilities/style-descriptor.d.ts.map +1 -1
  446. package/dist/typescript/module/src/web/api.d.ts +5 -5
  447. package/dist/typescript/module/src/web/api.d.ts.map +1 -1
  448. package/dist/typescript/module/src/web/assign-style.d.ts.map +1 -1
  449. package/dist/typescript/module/src/web/index.d.ts +3 -3
  450. package/dist/typescript/module/src/web/index.d.ts.map +1 -1
  451. package/node/babel.mjs +4 -0
  452. package/node/compiler.mjs +2 -0
  453. package/node/metro.mjs +2 -0
  454. package/package.json +65 -29
  455. package/src/babel/helpers.ts +8 -1
  456. package/src/babel/import-plugin.ts +31 -16
  457. package/src/babel/react-native-web.ts +32 -4
  458. package/src/babel/react-native.ts +9 -4
  459. package/src/compiler/atRules.ts +44 -0
  460. package/src/compiler/compiler.ts +159 -43
  461. package/src/compiler/compiler.types.ts +9 -0
  462. package/src/compiler/container-query.ts +8 -3
  463. package/src/compiler/declarations.ts +190 -101
  464. package/src/compiler/lightningcss-loader.ts +16 -15
  465. package/src/compiler/media-query.ts +20 -9
  466. package/src/compiler/selector-builder.ts +31 -4
  467. package/src/compiler/stylesheet.ts +23 -10
  468. package/src/compiler/supports.ts +1 -3
  469. package/src/components/FlatList.tsx +1 -0
  470. package/src/components/ImageBackground.tsx +2 -6
  471. package/src/components/KeyboardAvoidingView.tsx +2 -3
  472. package/src/components/index.cts +46 -1
  473. package/src/jest/index.ts +1 -1
  474. package/src/metro/cache-version.ts +48 -0
  475. package/src/metro/index.ts +7 -0
  476. package/src/metro/metro-transformer.ts +26 -8
  477. package/src/metro/typescript.ts +53 -6
  478. package/src/metro/warnings.ts +187 -0
  479. package/src/native/api.tsx +22 -17
  480. package/src/native/conditions/attributes.ts +26 -9
  481. package/src/native/conditions/container-query.ts +11 -9
  482. package/src/native/conditions/media-query.ts +1 -1
  483. package/src/native/react/interaction.ts +11 -6
  484. package/src/native/react/rules.ts +13 -5
  485. package/src/native/react/useNativeCss.ts +69 -14
  486. package/src/native/react/usePassthrough.ts +3 -2
  487. package/src/native/reactivity.ts +76 -24
  488. package/src/native/reanimated.ts +24 -5
  489. package/src/native/styles/functions/color-mix.ts +45 -39
  490. package/src/native/styles/functions/filters.ts +20 -6
  491. package/src/native/styles/functions/numeric-functions.ts +7 -6
  492. package/src/native/styles/functions/string-functions.ts +18 -0
  493. package/src/native/styles/functions/transform-functions.ts +5 -4
  494. package/src/native/styles/index.ts +146 -15
  495. package/src/native/styles/resolve.ts +15 -11
  496. package/src/native/styles/scale-factor.ts +6 -0
  497. package/src/native/styles/shorthands/_handler.ts +14 -1
  498. package/src/native/styles/shorthands/animation.ts +8 -2
  499. package/src/native/styles/shorthands/box-shadow.ts +50 -15
  500. package/src/native/styles/shorthands/index.ts +1 -0
  501. package/src/native/styles/shorthands/logical-border-width.ts +32 -0
  502. package/src/native/styles/variables.ts +48 -38
  503. package/src/native-internal/root.ts +40 -13
  504. package/src/native-internal/style-collection.ts +1 -1
  505. package/src/native-internal/variables.tsx +6 -4
  506. package/src/runtime.types.ts +17 -15
  507. package/src/utilities/dot-notation.types.ts +4 -3
  508. package/src/utilities/style-descriptor.ts +11 -16
  509. package/src/web/api.tsx +6 -11
  510. package/src/web/assign-style.ts +2 -1
  511. package/types.d.ts +0 -20
  512. package/dist/commonjs/compiler/inheritance.test.js +0 -78
  513. package/dist/commonjs/compiler/inheritance.test.js.map +0 -1
  514. package/dist/module/compiler/inheritance.test.js +0 -78
  515. package/dist/module/compiler/inheritance.test.js.map +0 -1
  516. package/dist/typescript/commonjs/.config/eslint.config.d.mts +0 -3
  517. package/dist/typescript/commonjs/.config/eslint.config.d.mts.map +0 -1
  518. package/dist/typescript/commonjs/eslint.config.d.mts +0 -2
  519. package/dist/typescript/commonjs/eslint.config.d.mts.map +0 -1
  520. package/dist/typescript/commonjs/example/app.config.d.ts +0 -4
  521. package/dist/typescript/commonjs/example/app.config.d.ts.map +0 -1
  522. package/dist/typescript/commonjs/example/index.d.ts +0 -2
  523. package/dist/typescript/commonjs/example/index.d.ts.map +0 -1
  524. package/dist/typescript/commonjs/example/metro.config.d.ts +0 -3
  525. package/dist/typescript/commonjs/example/metro.config.d.ts.map +0 -1
  526. package/dist/typescript/commonjs/example/postcss.config.d.mts +0 -7
  527. package/dist/typescript/commonjs/example/postcss.config.d.mts.map +0 -1
  528. package/dist/typescript/commonjs/example/src/App.d.ts +0 -3
  529. package/dist/typescript/commonjs/example/src/App.d.ts.map +0 -1
  530. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts +0 -2
  531. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts.map +0 -1
  532. package/dist/typescript/module/.config/eslint.config.d.mts +0 -3
  533. package/dist/typescript/module/.config/eslint.config.d.mts.map +0 -1
  534. package/dist/typescript/module/eslint.config.d.mts +0 -2
  535. package/dist/typescript/module/eslint.config.d.mts.map +0 -1
  536. package/dist/typescript/module/example/app.config.d.ts +0 -4
  537. package/dist/typescript/module/example/app.config.d.ts.map +0 -1
  538. package/dist/typescript/module/example/index.d.ts +0 -2
  539. package/dist/typescript/module/example/index.d.ts.map +0 -1
  540. package/dist/typescript/module/example/metro.config.d.ts +0 -3
  541. package/dist/typescript/module/example/metro.config.d.ts.map +0 -1
  542. package/dist/typescript/module/example/postcss.config.d.mts +0 -7
  543. package/dist/typescript/module/example/postcss.config.d.mts.map +0 -1
  544. package/dist/typescript/module/example/src/App.d.ts +0 -3
  545. package/dist/typescript/module/example/src/App.d.ts.map +0 -1
  546. package/dist/typescript/module/src/compiler/inheritance.test.d.ts +0 -2
  547. package/dist/typescript/module/src/compiler/inheritance.test.d.ts.map +0 -1
  548. package/src/compiler/inheritance.test.ts +0 -121
@@ -0,0 +1,187 @@
1
+ import { relative } from "path";
2
+
3
+ import type { CompilerWarnings } from "../compiler/compiler.types";
4
+
5
+ /** "summary" prints one capped block per CSS file, "verbose" lists every entry, "none" prints nothing */
6
+ export type WarningLevel = "none" | "summary" | "verbose";
7
+
8
+ const SUMMARY_ENTRY_LIMIT = 10;
9
+ const SUMMARY_VALUE_LIMIT = 5;
10
+ const SUMMARY_VALUE_LENGTH_LIMIT = 60;
11
+
12
+ const PREFIX = "react-native-css";
13
+
14
+ // Metro re-transforms a CSS file on every rebuild, so a file's block prints again only when its warnings change
15
+ const lastReportedByFile = new Map<string, string>();
16
+
17
+ // Metro forwards each transform worker's stderr to the bundler's terminal, and a warning never fails the build
18
+ export function reportCompilerWarnings(
19
+ warnings: CompilerWarnings,
20
+ options: {
21
+ filename: string;
22
+ projectRoot: string;
23
+ level?: WarningLevel | undefined;
24
+ },
25
+ ): void {
26
+ const { filename, projectRoot, level = "summary" } = options;
27
+
28
+ if (level === "none") {
29
+ return;
30
+ }
31
+
32
+ const message = formatCompilerWarnings(warnings, {
33
+ displayPath: toDisplayPath(filename, projectRoot),
34
+ verbose: level === "verbose",
35
+ });
36
+
37
+ if (message === undefined) {
38
+ lastReportedByFile.delete(filename);
39
+ return;
40
+ }
41
+
42
+ if (lastReportedByFile.get(filename) === message) {
43
+ return;
44
+ }
45
+
46
+ lastReportedByFile.set(filename, message);
47
+
48
+ console.warn(message);
49
+ }
50
+
51
+ // Plain text: Metro's transform workers write to a pipe, where colour would never render
52
+ export function formatCompilerWarnings(
53
+ warnings: CompilerWarnings,
54
+ options: { displayPath: string; verbose?: boolean | undefined },
55
+ ): string | undefined {
56
+ const { displayPath, verbose = false } = options;
57
+
58
+ const droppedCount =
59
+ (warnings.properties?.length ?? 0) +
60
+ (warnings.functions?.length ?? 0) +
61
+ Object.values(warnings.values ?? {}).reduce(
62
+ (total, entries) => total + entries.length,
63
+ 0,
64
+ );
65
+
66
+ // A syntax warning sends the reader to their stylesheet rather than to what React Native lacks, so it is counted apart
67
+ const syntaxCount = warnings.syntax?.length ?? 0;
68
+
69
+ if (droppedCount === 0 && syntaxCount === 0) {
70
+ return undefined;
71
+ }
72
+
73
+ const properties = limit(unique(warnings.properties), verbose);
74
+ const functions = limit(unique(warnings.functions), verbose);
75
+ const rendered = renderValues(warnings.values, verbose);
76
+ const values = limit(rendered.entries, verbose);
77
+ const syntax = limit(unique(warnings.syntax), verbose);
78
+
79
+ const claims: string[] = [];
80
+ if (droppedCount > 0) {
81
+ claims.push(
82
+ `${droppedCount} ${pluralize(droppedCount, "declaration")} dropped, no React Native equivalent`,
83
+ );
84
+ }
85
+ if (syntaxCount > 0) {
86
+ claims.push(`${syntaxCount} syntax ${pluralize(syntaxCount, "warning")}`);
87
+ }
88
+
89
+ const lines = [`${PREFIX}: ${displayPath} - ${claims.join("; ")}`];
90
+
91
+ if (syntax.shown.length > 0) {
92
+ lines.push(` syntax: ${syntax.shown.join("; ")}${suffix(syntax.hidden)}`);
93
+ }
94
+
95
+ if (properties.shown.length > 0) {
96
+ lines.push(
97
+ ` properties: ${properties.shown.join(", ")}${suffix(properties.hidden)}`,
98
+ );
99
+ }
100
+
101
+ if (values.shown.length > 0) {
102
+ lines.push(` values: ${values.shown.join("; ")}${suffix(values.hidden)}`);
103
+ }
104
+
105
+ if (functions.shown.length > 0) {
106
+ lines.push(
107
+ ` functions: ${functions.shown.join(", ")}${suffix(functions.hidden)}`,
108
+ );
109
+ }
110
+
111
+ if (
112
+ properties.hidden +
113
+ values.hidden +
114
+ functions.hidden +
115
+ rendered.hidden +
116
+ syntax.hidden >
117
+ 0
118
+ ) {
119
+ lines.push(
120
+ ` Set reactNativeCSS.warnings to "verbose" for the full list, or "none" to silence this.`,
121
+ );
122
+ }
123
+
124
+ return lines.join("\n");
125
+ }
126
+
127
+ function toDisplayPath(filename: string, projectRoot: string): string {
128
+ const relativePath = relative(projectRoot, filename);
129
+
130
+ return relativePath === "" || relativePath.startsWith("..")
131
+ ? filename
132
+ : relativePath;
133
+ }
134
+
135
+ function renderValues(
136
+ values: Record<string, string[]> | undefined,
137
+ verbose: boolean,
138
+ ): { entries: string[]; hidden: number } {
139
+ let hidden = 0;
140
+ const entries: string[] = [];
141
+ const recordedByProperty = values ?? {};
142
+
143
+ for (const property of Object.keys(recordedByProperty).sort()) {
144
+ const distinct = unique(recordedByProperty[property]);
145
+ const shown = verbose ? distinct : distinct.slice(0, SUMMARY_VALUE_LIMIT);
146
+ hidden += distinct.length - shown.length;
147
+
148
+ const rendered = shown.map((value) => truncate(value, verbose));
149
+
150
+ entries.push(
151
+ `${property}: ${rendered.join(", ")}${suffix(distinct.length - shown.length)}`,
152
+ );
153
+ }
154
+
155
+ return { entries, hidden };
156
+ }
157
+
158
+ function limit<T>(entries: T[], verbose: boolean) {
159
+ if (verbose || entries.length <= SUMMARY_ENTRY_LIMIT) {
160
+ return { shown: entries, hidden: 0 };
161
+ }
162
+
163
+ return {
164
+ shown: entries.slice(0, SUMMARY_ENTRY_LIMIT),
165
+ hidden: entries.length - SUMMARY_ENTRY_LIMIT,
166
+ };
167
+ }
168
+
169
+ function suffix(hidden: number): string {
170
+ return hidden > 0 ? ` (+${hidden} more)` : "";
171
+ }
172
+
173
+ // Code-unit order rather than localeCompare, whose collation varies with the ICU build
174
+ function unique(entries: string[] | undefined): string[] {
175
+ return entries ? [...new Set(entries)].sort() : [];
176
+ }
177
+
178
+ // An unresolved calc() is recorded as its whole lightningcss node, hundreds of characters long
179
+ function truncate(value: string, verbose: boolean): string {
180
+ return verbose || value.length <= SUMMARY_VALUE_LENGTH_LIMIT
181
+ ? value
182
+ : `${value.slice(0, SUMMARY_VALUE_LENGTH_LIMIT)}...`;
183
+ }
184
+
185
+ function pluralize(count: number, noun: string): string {
186
+ return count === 1 ? noun : `${noun}s`;
187
+ }
@@ -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,13 +9,16 @@ 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,
21
+ toVariableRecord,
19
22
  VAR_SYMBOL,
20
23
  type Effect,
21
24
  type Getter,
@@ -40,12 +43,9 @@ const defaultMapping: StyledConfiguration<ComponentType<{ style: unknown }>> = {
40
43
  * @param baseComponent
41
44
  * @param mapping
42
45
  */
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,
46
+ export const styled: Styled = (
47
+ baseComponent: ReactComponent<any>,
48
+ mapping: StyledConfiguration<any> = defaultMapping,
49
49
  options?: StyledOptions,
50
50
  ) => {
51
51
  let component: any;
@@ -73,7 +73,7 @@ export const colorScheme: ColorScheme = {
73
73
  return colorSchemeObs.get() ?? Appearance.getColorScheme() ?? "light";
74
74
  },
75
75
  set(value) {
76
- return colorSchemeObs.set(value);
76
+ return colorSchemeObs.set(value === "unspecified" ? null : value);
77
77
  },
78
78
  };
79
79
 
@@ -97,28 +97,33 @@ export function useNativeVariable(name: string) {
97
97
  }
98
98
 
99
99
  const inheritedVariables = useContext(VariableContext);
100
- const [effect, setState] = useState(() => {
100
+ const [, forceUpdate] = useState(0);
101
+ const [effect] = useState(() => {
101
102
  const effect: Effect = {
102
103
  observers: new Set(),
103
- run: () => setState((state) => ({ ...state })),
104
+ run: () => forceUpdate((state) => state + 1),
104
105
  };
105
106
 
106
107
  const get: Getter = (observable) => observable.get(effect);
107
108
 
108
- return { ...effect, get };
109
+ return Object.assign(effect, { get });
109
110
  });
110
111
 
112
+ useEffect(() => {
113
+ // React StrictMode replays setup after cleanup without another render.
114
+ if (effect.observers.size === 0) forceUpdate((state) => state + 1);
115
+ return () => cleanupEffect(effect);
116
+ }, [effect]);
117
+ cleanupEffect(effect);
111
118
  return resolveValue([{}, "var", [name]], effect.get, { inheritedVariables });
112
119
  }
113
120
 
114
121
  /**
115
122
  * @deprecated Use `<VariableContextProvider />` instead.
116
123
  */
117
- export function vars(variables: Record<string, StyleDescriptor>) {
124
+ export function vars(variables: Record<string, StyleDescriptor>): ViewStyle {
118
125
  return Object.assign(
119
126
  { [VAR_SYMBOL]: "inline" },
120
- Object.fromEntries(
121
- Object.entries(variables).map(([k, v]) => [k.replace(/^--/, ""), v]),
122
- ),
123
- );
127
+ toVariableRecord(variables),
128
+ ) as ViewStyle;
124
129
  }
@@ -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) => {
@@ -8,6 +8,7 @@ import type { RenderGuard } from "../conditions/guards";
8
8
  import { getDeepPath } from "../objects";
9
9
  import {
10
10
  activeFamily,
11
+ cleanupEffect,
11
12
  containerLayoutFamily,
12
13
  focusFamily,
13
14
  hoverFamily,
@@ -30,6 +31,7 @@ export function updateRules(
30
31
  forceUpdate = false,
31
32
  isRerender = true,
32
33
  ): ComponentState {
34
+ cleanupEffect(state.ruleEffect);
33
35
  const guards: RenderGuard[] = [];
34
36
  const rules = new Set<StyleRule | InlineVariable | VariableContextValue>();
35
37
  if (forceUpdate) {
@@ -144,13 +146,19 @@ export function updateRules(
144
146
  containers = {
145
147
  ...inheritedContainers,
146
148
  // This container becomes the default container
147
- [DEFAULT_CONTAINER_NAME]: state.ruleEffectGetter,
149
+ [DEFAULT_CONTAINER_NAME]: {
150
+ key: state.ruleEffectGetter,
151
+ props: currentProps,
152
+ },
148
153
  };
149
154
  }
150
155
 
151
156
  // This this component as the named container
152
157
  for (const name of rule.c) {
153
- containers![name] = state.ruleEffectGetter;
158
+ containers![name] = {
159
+ key: state.ruleEffectGetter,
160
+ props: currentProps,
161
+ };
154
162
  }
155
163
 
156
164
  // Enable hover/active/focus/layout handlers
@@ -212,14 +220,14 @@ export function updateRules(
212
220
  };
213
221
  }
214
222
 
215
- if (usesVariables || variables) {
223
+ if (usesVariables || variables || inlineVariables.size) {
216
224
  rules.add(inheritedVariables);
217
225
 
218
226
  if (inlineVariables.size) {
219
227
  variables = Object.assign(
220
228
  {},
221
- variables,
222
229
  inheritedVariables,
230
+ variables,
223
231
  ...Array.from(inlineVariables),
224
232
  { [VAR_SYMBOL]: true },
225
233
  );
@@ -243,7 +251,7 @@ export function updateRules(
243
251
  }
244
252
 
245
253
  // Remove this component from the old observer
246
- state.stylesObs?.cleanup(state.ruleEffect);
254
+ state.stylesObs?.unsubscribe(state.styleEffect);
247
255
 
248
256
  return {
249
257
  ...state,
@@ -4,10 +4,11 @@ import {
4
4
  Fragment,
5
5
  useContext,
6
6
  useEffect,
7
+ useRef,
7
8
  useState,
8
9
  type ComponentType,
9
10
  } from "react";
10
- import { Pressable, View } from "react-native";
11
+ import { Image, Pressable, StyleSheet, View } from "react-native";
11
12
 
12
13
  import { VariableContext } from "react-native-css/native-internal";
13
14
 
@@ -16,6 +17,7 @@ import { testGuards, type RenderGuard } from "../conditions/guards";
16
17
  import {
17
18
  cleanupEffect,
18
19
  ContainerContext,
20
+ hasChangedDependencies,
19
21
  type ContainerContextValue,
20
22
  type Effect,
21
23
  type Getter,
@@ -69,9 +71,6 @@ export function useNativeCss(
69
71
  const inheritedContainers = useContext(ContainerContext);
70
72
 
71
73
  const [state, setState] = useState((): ComponentState => {
72
- // Both effects share the same observers to improve memory usage
73
- const observers = new Set<Effect>();
74
-
75
74
  /**
76
75
  * When fired, this effect will force the rules to be re-evaluated.
77
76
  * This will cause a re-render if there are different rules
@@ -79,7 +78,7 @@ export function useNativeCss(
79
78
  * Use this when a rule condition changes, e.g FastRefresh or media queries
80
79
  */
81
80
  const ruleEffect: Effect = {
82
- observers,
81
+ observers: new Set(),
83
82
  run: () => setState((state) => updateRules(state)),
84
83
  };
85
84
 
@@ -90,11 +89,11 @@ export function useNativeCss(
90
89
  * Use this when a value changes, e.g vm units or light / dark mode
91
90
  */
92
91
  const styleEffect: Effect = {
93
- observers,
92
+ observers: new Set(),
94
93
  run: () => setState((state) => ({ ...state })),
95
94
  };
96
95
 
97
- return updateRules(
96
+ const initialState = updateRules(
98
97
  {
99
98
  ruleEffect,
100
99
  ruleEffectGetter: (observable) => observable.get(ruleEffect),
@@ -110,10 +109,36 @@ export function useNativeCss(
110
109
  false,
111
110
  false,
112
111
  );
112
+ // State initializers may be discarded by React StrictMode. Subscribe once
113
+ // the component commits instead of retaining an abandoned initializer.
114
+ cleanupEffect(ruleEffect);
115
+ return initialState;
113
116
  });
114
117
 
115
- // Both effects share the same observers, so we only need to cleanup one of them
116
- useEffect(() => () => cleanupEffect(state.ruleEffect), [state.ruleEffect]);
118
+ // Distinguishes a fresh mount from an effect replay (Activity, StrictMode)
119
+ const hasCommittedRef = useRef(false);
120
+
121
+ useEffect(() => {
122
+ // Reconnect subscriptions after React replays an effect setup.
123
+ if (state.ruleEffect.observers.size === 0) {
124
+ if (hasCommittedRef.current || hasChangedDependencies(state.ruleEffect)) {
125
+ // Replay, or conditions changed since the initializer: recalculate.
126
+ state.ruleEffect.run();
127
+ state.styleEffect.run();
128
+ } else {
129
+ // Fresh mount: resubscribe to the initializer's dependencies.
130
+ // styleEffect resubscribes itself during render.
131
+ for (const observable of state.ruleEffect.dependencies ?? []) {
132
+ observable.get(state.ruleEffect);
133
+ }
134
+ }
135
+ }
136
+ hasCommittedRef.current = true;
137
+ return () => {
138
+ cleanupEffect(state.ruleEffect);
139
+ cleanupEffect(state.styleEffect);
140
+ };
141
+ }, [state.ruleEffect, state.styleEffect]);
117
142
 
118
143
  // Check if our derived state has changed (e.g the className prop)
119
144
  if (
@@ -137,7 +162,11 @@ export function useNativeCss(
137
162
  return createElement(Fragment);
138
163
  }
139
164
 
140
- let props = getStyledProps(state, originalProps);
165
+ let props = getStyledProps(
166
+ state,
167
+ originalProps,
168
+ type === Image ? adaptImageProps : undefined,
169
+ );
141
170
 
142
171
  if (type === View && props?.onPress) {
143
172
  type = Pressable;
@@ -156,8 +185,18 @@ export function useNativeCss(
156
185
  }
157
186
 
158
187
  if (state.containers) {
188
+ // Publish a new props snapshot even when this component's own rules did not
189
+ // change. Descendants can depend on an ancestor attribute through a group.
190
+ const containers = Object.fromEntries(
191
+ Object.entries(state.containers).map(([name, container]) => [
192
+ name,
193
+ container.key === state.ruleEffectGetter
194
+ ? { key: container.key, props: originalProps }
195
+ : (inheritedContainers[name] ?? container),
196
+ ]),
197
+ );
159
198
  props = {
160
- value: state.containers,
199
+ value: containers,
161
200
  children: createElement(type, props),
162
201
  };
163
202
  type = ContainerContext.Provider;
@@ -181,9 +220,14 @@ export function mappingToConfig(mapping: StyledConfiguration<any>) {
181
220
  } else if (typeof value === "string") {
182
221
  return { source: key, target: value.split(".") };
183
222
  } else if (typeof value === "object") {
184
- const nativeStyleMapping = value.nativeStyleMapping as
185
- | Record<string, string>
186
- | undefined;
223
+ // Keep the declared deprecated alias working. The current spelling wins
224
+ // when both are provided, including an intentionally empty mapping.
225
+ const mapping = value.nativeStyleMapping ?? value.nativeStyleToProp;
226
+ const nativeStyleMapping = mapping
227
+ ? Object.fromEntries(
228
+ Object.entries(mapping).map(([k, v]) => [k, v === true ? k : v]),
229
+ )
230
+ : undefined;
187
231
 
188
232
  if (Array.isArray(value)) {
189
233
  return { source: key, target: value, nativeStyleMapping };
@@ -209,3 +253,14 @@ export function mappingToConfig(mapping: StyledConfiguration<any>) {
209
253
  throw new Error(`styled(): Invalid mapping for ${key}: ${value}`);
210
254
  });
211
255
  }
256
+
257
+ // Apply native Image fitting before normal, inline, and important props merge.
258
+ // The compiler's contentFit mapping remains available to Expo Image adapters.
259
+ function adaptImageProps(props: Record<string, any> | undefined) {
260
+ if (!props || !("contentFit" in props)) return props;
261
+ const { contentFit, style, ...rest } = props;
262
+ return {
263
+ ...rest,
264
+ style: { ...StyleSheet.flatten(style), objectFit: contentFit },
265
+ };
266
+ }
@@ -32,8 +32,9 @@ export function usePassthrough(
32
32
  if (Array.isArray(target)) {
33
33
  for (let i = 0; i < target.length - 1; i++) {
34
34
  const prop = target[i]!;
35
- props[prop] ??= {};
36
- targetProps = props[prop];
35
+ const value = targetProps[prop];
36
+ targetProps[prop] = Array.isArray(value) ? [...value] : { ...value };
37
+ targetProps = targetProps[prop];
37
38
  }
38
39
  target = target[target.length - 1]!;
39
40
  }