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
@@ -11,11 +11,30 @@ export const animatedComponentFamily = weakFamily(
11
11
  return component;
12
12
  }
13
13
 
14
- const createAnimatedComponent =
15
- // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-unsafe-member-access
16
- require("react-native-reanimated").createAnimatedComponent as (
17
- component: ComponentType,
18
- ) => ComponentType;
14
+ // Reanimated 4.5 keeps the original component display name. Compare its
15
+ // public built-in components by identity instead of interpreting that name.
16
+ const reanimated =
17
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
18
+ require("react-native-reanimated") as typeof import("react-native-reanimated");
19
+ const animated = reanimated.default;
20
+ if (
21
+ [
22
+ animated.View,
23
+ animated.Text,
24
+ animated.Image,
25
+ animated.ScrollView,
26
+ animated.FlatList,
27
+ ].some((value) => value === component)
28
+ ) {
29
+ return component;
30
+ }
31
+
32
+ // This public constructor remains supported for arbitrary components; only
33
+ // its FlatList-specific overload is deprecated by Reanimated.
34
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
35
+ const createAnimatedComponent = reanimated.createAnimatedComponent as (
36
+ component: ComponentType,
37
+ ) => ComponentType;
19
38
 
20
39
  return createAnimatedComponent(component);
21
40
  },
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
2
- import type { PlainColorObject } from "colorjs.io";
3
1
  import {
4
2
  ColorSpace,
5
3
  to as convert,
@@ -8,7 +6,6 @@ import {
8
6
  P3,
9
7
  parse,
10
8
  sRGB,
11
- type ColorConstructor,
12
9
  } from "colorjs.io/fn";
13
10
 
14
11
  import type { StyleFunctionResolver } from "../resolve";
@@ -18,49 +15,58 @@ ColorSpace.register(P3);
18
15
  ColorSpace.register(OKLab);
19
16
 
20
17
  export const colorMix: StyleFunctionResolver = (resolveValue, value) => {
21
- const args = resolveValue(value[2]);
22
-
23
- if (!Array.isArray(args) || args.length < 3) {
24
- return;
25
- }
18
+ const resolved = resolveValue(value[2]);
19
+ if (!Array.isArray(resolved)) return;
26
20
 
21
+ // Resolved descriptors may be cached and shared by another styled component.
22
+ const args: unknown[] = [...(resolved as unknown[])];
27
23
  try {
28
24
  const space = args.shift();
25
+ const leftValue = args.shift();
26
+ if (typeof space !== "string" || typeof leftValue !== "string") return;
27
+ ColorSpace.get(space);
28
+ const left = parse(leftValue);
29
+ const percentage = () => {
30
+ const next = args[0];
31
+ if (typeof next !== "string" || !next.endsWith("%")) return undefined;
32
+ args.shift();
33
+ return Number(next.slice(0, -1)) / 100;
34
+ };
35
+ let leftWeight = percentage();
36
+ const rightValue = args.shift();
37
+ if (typeof rightValue !== "string") return;
38
+ const right = parse(rightValue);
39
+ let rightWeight = percentage();
40
+ if (args.length) return;
29
41
 
30
- let left: ColorConstructor | PlainColorObject = parse(
31
- args.shift() as string,
32
- );
33
-
34
- let next = args.shift();
35
-
36
- if (typeof next === "string" && next.endsWith("%")) {
37
- left.alpha = parseFloat(next) / 100;
38
- next = args.shift();
39
- }
40
-
41
- if (next === undefined) {
42
- if (left.spaceId !== "srgb") {
43
- left = convert(left, "srgb");
44
- }
45
-
46
- return `rgba(${(left.coords[0] ?? 0) * 255}, ${(left.coords[1] ?? 0) * 255}, ${(left.coords[2] ?? 0) * 255}, ${left.alpha})`;
47
- }
48
-
49
- if (typeof next !== "string") {
42
+ // CSS Color 5: omitted weights are complementary, then both are normalized.
43
+ leftWeight ??= rightWeight === undefined ? 0.5 : 1 - rightWeight;
44
+ rightWeight ??= 1 - leftWeight;
45
+ if (
46
+ ![leftWeight, rightWeight].every(
47
+ (weight) => Number.isFinite(weight) && weight >= 0 && weight <= 1,
48
+ )
49
+ )
50
50
  return;
51
- }
52
- const right = parse(next);
51
+ const sum = leftWeight + rightWeight;
52
+ if (sum === 0) return;
53
+ const alphaMultiplier = Math.min(sum, 1);
53
54
 
54
- next = args.shift();
55
- if (next && typeof next === "string" && next.endsWith("%")) {
56
- right.alpha = parseFloat(next) / 100;
55
+ let result;
56
+ if (right.alpha === 0 || left.alpha === 0) {
57
+ // A transparent endpoint contributes no premultiplied channels.
58
+ const source = right.alpha === 0 ? left : right;
59
+ const weight = right.alpha === 0 ? leftWeight : rightWeight;
60
+ result = convert(source, "srgb");
61
+ result.alpha = ((source.alpha ?? 1) * weight) / sum;
62
+ } else {
63
+ result = mix(left, right, rightWeight / sum, {
64
+ space,
65
+ outputSpace: "srgb",
66
+ premultiplied: true,
67
+ });
57
68
  }
58
-
59
- const result = mix(left, right, {
60
- space,
61
- outputSpace: "srgb",
62
- });
63
-
69
+ result.alpha = (result.alpha ?? 1) * alphaMultiplier;
64
70
  return `rgba(${(result.coords[0] ?? 0) * 255}, ${(result.coords[1] ?? 0) * 255}, ${(result.coords[2] ?? 0) * 255}, ${result.alpha})`;
65
71
  } catch {
66
72
  return;
@@ -97,3 +97,17 @@ export const dropShadow: StyleFunctionResolver = (
97
97
  }
98
98
  : undefined;
99
99
  };
100
+
101
+ /** CSS variables may expand to multiple filters; native filter arrays must be flat. */
102
+ export const filter: StyleFunctionResolver = (resolveValue, descriptor) => {
103
+ const value: unknown = resolveValue(descriptor[2]);
104
+ if (Array.isArray(value)) {
105
+ const filters: unknown[] = value.flat(Infinity);
106
+ return filters.filter(
107
+ (entry) => entry !== undefined && entry !== "initial",
108
+ );
109
+ }
110
+ if (value === undefined || value === "initial") return;
111
+ if (value === "none") return null;
112
+ return typeof value === "string" ? value : [value];
113
+ };
@@ -23,16 +23,17 @@ export const min: StyleFunctionResolver = (resolveValue, value) => {
23
23
  export const clamp: StyleFunctionResolver = (resolveValue, value) => {
24
24
  const args = resolveValue(value[2]);
25
25
 
26
- const [clampValue, min, max] = args as number[];
26
+ if (!Array.isArray(args)) return;
27
+
28
+ const [minimum, preferred, maximum] = args as unknown[];
27
29
 
28
30
  if (
29
- !Array.isArray(args) ||
30
- typeof clampValue !== "number" ||
31
- typeof min !== "number" ||
32
- typeof max !== "number"
31
+ typeof minimum !== "number" ||
32
+ typeof preferred !== "number" ||
33
+ typeof maximum !== "number"
33
34
  ) {
34
35
  return;
35
36
  }
36
37
 
37
- return Math.min(Math.max(clampValue, min), max);
38
+ return Math.max(minimum, Math.min(preferred, maximum));
38
39
  };
@@ -1,5 +1,23 @@
1
1
  import type { StyleFunctionResolver } from "../resolve";
2
2
 
3
+ export const gradientPosition: StyleFunctionResolver = (
4
+ resolveValue,
5
+ value,
6
+ ) => {
7
+ const position = resolveValue(value[2]);
8
+ return typeof position === "number" ? `${position}px` : position;
9
+ };
10
+
11
+ export const colorStop: StyleFunctionResolver = (resolveValue, value) => {
12
+ const args = resolveValue(value[2]);
13
+ if (!Array.isArray(args)) return args;
14
+ const [color, position] = args as unknown[];
15
+ if (typeof color !== "string") return;
16
+ if (position === undefined) return color;
17
+ if (typeof position !== "number" && typeof position !== "string") return;
18
+ return `${color} ${typeof position === "number" ? `${position}px` : position}`;
19
+ };
20
+
3
21
  export const join: StyleFunctionResolver = (resolveValue, value) => {
4
22
  const args = resolveValue(value[2]);
5
23
 
@@ -1,16 +1,17 @@
1
1
  import { isStyleDescriptorArray } from "react-native-css/utilities";
2
2
 
3
3
  import type { StyleFunctionResolver } from "../resolve";
4
+ import { scaleFactor } from "../scale-factor";
4
5
 
5
6
  export const scale: StyleFunctionResolver = (resolveValue, descriptor) => {
6
7
  const args = descriptor[2];
7
8
 
8
9
  if (!isStyleDescriptorArray(args)) {
9
- return { scale: resolveValue(args) };
10
+ return { scale: scaleFactor(resolveValue(args)) };
10
11
  }
11
12
 
12
- const x = resolveValue(args[0]);
13
- const y = resolveValue(args[1]);
13
+ const x = scaleFactor(resolveValue(args[0]));
14
+ const y = scaleFactor(resolveValue(args[1]));
14
15
 
15
16
  const isXValid = typeof x === "string" || typeof x === "number";
16
17
  const isYValid = typeof y === "string" || typeof y === "number";
@@ -18,7 +19,7 @@ export const scale: StyleFunctionResolver = (resolveValue, descriptor) => {
18
19
  if (isXValid && isYValid) {
19
20
  return x === y ? { scale: x } : [{ scaleX: x }, { scaleY: y }];
20
21
  } else if (isXValid) {
21
- return { scaleX: x };
22
+ return { scale: x };
22
23
  } else if (isYValid) {
23
24
  return { scaleY: y };
24
25
  }
@@ -172,9 +172,10 @@ export const stylesFamily = family(
172
172
  /**
173
173
  * A family is a map, so we need to cleanup the observers when the the hash is no longer used
174
174
  */
175
+ const unsubscribe = obs.unsubscribe;
175
176
  return Object.assign(obs, {
176
- cleanup: (effect: Effect) => {
177
- obs.observers.delete(effect);
177
+ unsubscribe: (effect: Effect) => {
178
+ unsubscribe(effect);
178
179
  if (obs.observers.size === 0) {
179
180
  stylesFamily.delete(hash);
180
181
  }
@@ -186,15 +187,23 @@ export const stylesFamily = family(
186
187
  export function getStyledProps(
187
188
  state: ComponentState,
188
189
  inline: Record<string, any> | undefined | null,
190
+ adaptProps: (
191
+ props: Record<string, any> | undefined,
192
+ ) => Record<string, any> | undefined = (props) => props,
189
193
  ) {
190
194
  let result: Record<string, any> | undefined;
191
195
 
192
196
  const styledProps = state.stylesObs?.get(state.styleEffect);
193
197
 
198
+ // Each config merges a complete props object. Preserve its full target path
199
+ // before the next config merges unrelated inline props over that object.
200
+ const computedTargets: { path: string[]; value: unknown }[] = [];
201
+ const consumedSources: string[] = [];
202
+
194
203
  for (const config of state.configs) {
195
204
  result = deepMergeConfig(
196
205
  config,
197
- nativeStyleMapping(config, styledProps?.normal),
206
+ nativeStyleMapping(config, adaptProps(styledProps?.normal)),
198
207
  inline,
199
208
  true,
200
209
  );
@@ -203,10 +212,27 @@ export function getStyledProps(
203
212
  result = deepMergeConfig(
204
213
  config,
205
214
  result,
206
- nativeStyleMapping(config, styledProps.important),
215
+ nativeStyleMapping(config, adaptProps(styledProps.important)),
207
216
  );
208
217
  }
209
218
 
219
+ if (result && config.target) {
220
+ const path = Array.isArray(config.target)
221
+ ? config.target
222
+ : [config.target];
223
+ let target = result;
224
+ for (const key of path.slice(0, -1)) target = target?.[key];
225
+ const key = path[path.length - 1];
226
+ if (target && key && key in target) {
227
+ computedTargets.push({ path, value: target[key] });
228
+ }
229
+ }
230
+
231
+ // Track consumed className sources for cleanup
232
+ if (config.source !== config.target) {
233
+ consumedSources.push(config.source);
234
+ }
235
+
210
236
  // Apply the handlers
211
237
  if (hoverFamily.has(state.ruleEffectGetter)) {
212
238
  result ??= {};
@@ -265,6 +291,24 @@ export function getStyledProps(
265
291
  }
266
292
  }
267
293
 
294
+ // Restore correctly-merged target props that may have been overwritten
295
+ // by later config iterations' Object.assign({}, left, right)
296
+ if (result) {
297
+ for (const { path, value } of computedTargets) {
298
+ let target = result;
299
+ for (const key of path.slice(0, -1)) {
300
+ const existing = target[key];
301
+ target = target[key] = Array.isArray(existing)
302
+ ? [...existing]
303
+ : { ...existing };
304
+ }
305
+ target[path[path.length - 1]!] = value;
306
+ }
307
+ for (const source of consumedSources) {
308
+ delete result[source];
309
+ }
310
+ }
311
+
268
312
  return result;
269
313
  }
270
314
 
@@ -422,21 +466,59 @@ function deepMergeConfig(
422
466
  * If target is a path, deep merge until we get to the last key
423
467
  */
424
468
  if (Array.isArray(config.target)) {
425
- for (let i = 0; i < config.target.length - 1; i++) {
426
- const key = config.target[i];
427
-
428
- if (key === undefined) {
429
- return result;
430
- }
431
-
469
+ if (config.target.length > 1) {
470
+ const key = config.target[0]!;
432
471
  result[key] = deepMergeConfig(
433
- { source: config.source, target: config.target.slice(i + 1) },
472
+ { source: config.source, target: config.target.slice(1) },
434
473
  left?.[key],
435
474
  right?.[key],
436
475
  rightIsInline,
437
476
  );
438
477
  }
439
478
 
479
+ // For length-1 array targets (e.g. ["contentContainerStyle"]), the loop
480
+ // above runs 0 iterations. Merge the target prop so inline styles don't
481
+ // silently overwrite className-computed styles (same as string target path).
482
+ const finalKey = config.target[config.target.length - 1];
483
+ if (config.target.length === 1 && finalKey && rightIsInline) {
484
+ let rightValue = right?.[finalKey];
485
+ if (rightValue !== undefined) {
486
+ rightValue = filterCssVariables(rightValue);
487
+ }
488
+ if (rightValue === undefined || rightValue === null) {
489
+ // Inline is empty or fully filtered — preserve className-computed value
490
+ if (left && finalKey in left) {
491
+ result[finalKey] = left[finalKey];
492
+ } else {
493
+ // No left value either — remove unfiltered inline value from result
494
+ delete result[finalKey];
495
+ }
496
+ } else if (left && finalKey in left) {
497
+ const leftValue = left[finalKey];
498
+ const leftIsObj =
499
+ typeof leftValue === "object" &&
500
+ leftValue !== null &&
501
+ !Array.isArray(leftValue);
502
+ const rightIsObj =
503
+ typeof rightValue === "object" &&
504
+ rightValue !== null &&
505
+ !Array.isArray(rightValue);
506
+ if (leftIsObj && rightIsObj) {
507
+ if (hasNonOverlappingProperties(leftValue, rightValue)) {
508
+ result[finalKey] = [leftValue, rightValue];
509
+ } else {
510
+ // All left keys are in right — use filtered right value
511
+ result[finalKey] = rightValue;
512
+ }
513
+ } else {
514
+ result[finalKey] = [leftValue, rightValue];
515
+ }
516
+ } else {
517
+ // No left value — use filtered right value (not the unfiltered one from mergeDefinedProps)
518
+ result[finalKey] = rightValue;
519
+ }
520
+ }
521
+
440
522
  return result;
441
523
  }
442
524
 
@@ -465,7 +547,11 @@ function nativeStyleMapping(
465
547
  config: Config,
466
548
  props: Record<string, any> | undefined,
467
549
  ) {
468
- if (!config.nativeStyleMapping || !props) {
550
+ if (!props) {
551
+ return props;
552
+ }
553
+ if (!config.nativeStyleMapping) {
554
+ if (config.target === false) delete props.style;
469
555
  return props;
470
556
  }
471
557
 
@@ -514,5 +600,6 @@ function nativeStyleMapping(
514
600
  target[lastToken!] = styleValue;
515
601
  }
516
602
 
603
+ if (config.target === false) delete props.style;
517
604
  return props;
518
605
  }
@@ -5,6 +5,7 @@ import type {
5
5
  StyleDescriptor,
6
6
  StyleFunction,
7
7
  } from "react-native-css/compiler";
8
+ import { isStyleDescriptorArray } from "react-native-css/utilities";
8
9
 
9
10
  import type { RenderGuard } from "../conditions/guards";
10
11
  import { type Getter, type VariableContextValue } from "../reactivity";
@@ -12,6 +13,7 @@ import type { calculateProps } from "./calculate-props";
12
13
  import { transformKeys } from "./defaults";
13
14
  import * as functions from "./functions";
14
15
  import { lineHeight } from "./line-height";
16
+ import { scaleFactor } from "./scale-factor";
15
17
  import * as shorthands from "./shorthands";
16
18
  import { em, rem, vh, vw } from "./units";
17
19
  import { varResolver } from "./variables";
@@ -51,6 +53,7 @@ export type ResolveValueOptions = {
51
53
  inlineVariables?: InlineVariable | undefined;
52
54
  renderGuards?: RenderGuard[];
53
55
  variableHistory?: Set<string>;
56
+ variableCycles?: Set<string>;
54
57
  /** Pass down to perform recursive calculations and avoid circular dependencies */
55
58
  calculateProps?: typeof calculateProps;
56
59
  };
@@ -77,7 +80,7 @@ export function resolveValue(
77
80
  return null;
78
81
  } else if (value.endsWith("px")) {
79
82
  // Inline vars() might set a value with a px suffix
80
- return parseInt(value.slice(0, -2), 10);
83
+ return parseFloat(value.slice(0, -2));
81
84
  } else {
82
85
  return value;
83
86
  }
@@ -87,7 +90,7 @@ export function resolveValue(
87
90
  return value;
88
91
  }
89
92
 
90
- if (isDescriptorArray(value)) {
93
+ if (isStyleDescriptorArray(value)) {
91
94
  value = value
92
95
  .map((d) => resolveValue(d, get, options))
93
96
  .filter((d) => d !== undefined);
@@ -122,7 +125,16 @@ export function resolveValue(
122
125
  ) as StyleDescriptor;
123
126
  } else if (transformKeys.has(name)) {
124
127
  // translate, rotate, scale, etc.
125
- return { [name]: simpleResolve(value[2], castToArray) };
128
+ let resolved = simpleResolve(value[2], castToArray);
129
+ // CSS scale percentages describe a factor, unlike translation percentages.
130
+ if (
131
+ (name === "scaleX" || name === "scaleY" || name === "scale") &&
132
+ typeof resolved === "string" &&
133
+ resolved.endsWith("%")
134
+ ) {
135
+ resolved = scaleFactor(resolved);
136
+ }
137
+ return { [name]: resolved };
126
138
  } else {
127
139
  let args = simpleResolve(value[2], castToArray);
128
140
 
@@ -154,11 +166,3 @@ export function resolveValue(
154
166
  }
155
167
  }
156
168
  }
157
-
158
- function isDescriptorArray(
159
- value: StyleDescriptor | StyleDescriptor[],
160
- ): value is StyleDescriptor[] {
161
- return Array.isArray(value) && typeof value[0] === "object"
162
- ? Array.isArray(value[0])
163
- : true;
164
- }
@@ -0,0 +1,6 @@
1
+ export function scaleFactor(value: unknown) {
2
+ if (typeof value === "string" && value.endsWith("%")) {
3
+ return Number(value.slice(0, -1)) / 100;
4
+ }
5
+ return value;
6
+ }
@@ -39,6 +39,8 @@ export const animationShorthand = shorthandHandler(
39
39
  [name],
40
40
  [duration, name],
41
41
  [name, duration],
42
+ [name, duration, timingFunction],
43
+ [duration, timingFunction, name],
42
44
  [name, duration, iteration],
43
45
  [name, duration, timingFunction, iteration],
44
46
  [duration, delay, name],
@@ -67,7 +69,7 @@ export const animation: StyleFunctionResolver = (
67
69
  ) => {
68
70
  const animationShortHandTuples = animationShorthand(
69
71
  resolveValue,
70
- value,
72
+ [value[2]],
71
73
  get,
72
74
  options,
73
75
  );
@@ -86,6 +88,10 @@ export const animation: StyleFunctionResolver = (
86
88
  return;
87
89
  }
88
90
 
91
+ if (name === "none") {
92
+ return applyShorthand(animationShortHandTuples);
93
+ }
94
+
89
95
  const keyframes = get(StyleCollection.keyframes(name));
90
96
 
91
97
  const animation: Record<string, any> = {};
@@ -127,5 +133,5 @@ export const animationName: StyleFunctionResolver = (
127
133
  options,
128
134
  ) => {
129
135
  const shorthand: any = animation(resolveValue, value, get, options);
130
- return shorthand.animationName;
136
+ return shorthand?.animationName;
131
137
  };
@@ -1,5 +1,6 @@
1
1
  export * from "./animation";
2
2
  export * from "./border";
3
+ export * from "./logical-border-width";
3
4
  export * from "./box-shadow";
4
5
  export * from "./text-shadow";
5
6
  export * from "./transform";
@@ -0,0 +1,32 @@
1
+ import { ShortHandSymbol } from "../constants";
2
+ import type { StyleFunctionResolver } from "../resolve";
3
+
4
+ function logicalWidth(start: string, end: string): StyleFunctionResolver {
5
+ return (resolve, descriptor) => {
6
+ const resolved = resolve(descriptor[2]);
7
+ const values: unknown[] = Array.isArray(resolved) ? resolved : [resolved];
8
+ if (
9
+ values.length < 1 ||
10
+ values.length > 2 ||
11
+ !values.every(
12
+ (value) =>
13
+ typeof value === "number" && Number.isFinite(value) && value >= 0,
14
+ )
15
+ )
16
+ return;
17
+ return {
18
+ [ShortHandSymbol]: true,
19
+ [start]: values[0],
20
+ [end]: values[1] ?? values[0],
21
+ };
22
+ };
23
+ }
24
+
25
+ export const borderBlockWidth = logicalWidth(
26
+ "borderTopWidth",
27
+ "borderBottomWidth",
28
+ );
29
+ export const borderInlineWidth = logicalWidth(
30
+ "borderStartWidth",
31
+ "borderEndWidth",
32
+ );