react-native-css 3.0.0-nightly.4723140 → 3.0.0-nightly.61014be

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 (494) hide show
  1. package/README.md +184 -1
  2. package/dist/commonjs/babel/allowedModules.js +23 -0
  3. package/dist/commonjs/babel/allowedModules.js.map +1 -0
  4. package/dist/commonjs/babel/helpers.js +18 -122
  5. package/dist/commonjs/babel/helpers.js.map +1 -1
  6. package/dist/commonjs/babel/import-plugin.js +62 -58
  7. package/dist/commonjs/babel/import-plugin.js.map +1 -1
  8. package/dist/commonjs/babel/react-native-web.js +118 -0
  9. package/dist/commonjs/babel/react-native-web.js.map +1 -0
  10. package/dist/commonjs/babel/react-native.js +118 -0
  11. package/dist/commonjs/babel/react-native.js.map +1 -0
  12. package/dist/commonjs/compiler/atRules.js +101 -0
  13. package/dist/commonjs/compiler/atRules.js.map +1 -0
  14. package/dist/commonjs/compiler/attributes.test.js +20 -0
  15. package/dist/commonjs/compiler/attributes.test.js.map +1 -0
  16. package/dist/commonjs/compiler/compiler.js +143 -344
  17. package/dist/commonjs/compiler/compiler.js.map +1 -1
  18. package/dist/commonjs/compiler/compiler.types.js.map +1 -1
  19. package/dist/commonjs/compiler/container-query.js +10 -10
  20. package/dist/commonjs/compiler/container-query.js.map +1 -1
  21. package/dist/commonjs/compiler/declarations.js +1233 -988
  22. package/dist/commonjs/compiler/declarations.js.map +1 -1
  23. package/dist/commonjs/compiler/inheritance.test.js +78 -0
  24. package/dist/commonjs/compiler/inheritance.test.js.map +1 -0
  25. package/dist/commonjs/compiler/keyframes.js +15 -24
  26. package/dist/commonjs/compiler/keyframes.js.map +1 -1
  27. package/dist/commonjs/compiler/media-query.js +22 -22
  28. package/dist/commonjs/compiler/media-query.js.map +1 -1
  29. package/dist/commonjs/compiler/selectors.js +264 -184
  30. package/dist/commonjs/compiler/selectors.js.map +1 -1
  31. package/dist/commonjs/compiler/split-by-delimiter.js +21 -0
  32. package/dist/commonjs/compiler/split-by-delimiter.js.map +1 -0
  33. package/dist/commonjs/compiler/stylesheet.js +385 -0
  34. package/dist/commonjs/compiler/stylesheet.js.map +1 -0
  35. package/dist/commonjs/components/Text.js +2 -0
  36. package/dist/commonjs/components/Text.js.map +1 -1
  37. package/dist/commonjs/components/View.js +2 -0
  38. package/dist/commonjs/components/View.js.map +1 -1
  39. package/dist/commonjs/index.js +11 -0
  40. package/dist/commonjs/index.js.map +1 -1
  41. package/dist/commonjs/jest/index.js +2 -18
  42. package/dist/commonjs/jest/index.js.map +1 -1
  43. package/dist/commonjs/metro/index.js +111 -50
  44. package/dist/commonjs/metro/index.js.map +1 -1
  45. package/dist/commonjs/metro/injection-code.js +24 -4
  46. package/dist/commonjs/metro/injection-code.js.map +1 -1
  47. package/dist/commonjs/metro/resolver.js +62 -0
  48. package/dist/commonjs/metro/resolver.js.map +1 -0
  49. package/dist/commonjs/metro/typescript.js +1 -1
  50. package/dist/commonjs/poison.pill.js +36 -0
  51. package/dist/commonjs/poison.pill.js.map +1 -0
  52. package/dist/commonjs/runtime/native/conditions/guards.js +10 -4
  53. package/dist/commonjs/runtime/native/conditions/guards.js.map +1 -1
  54. package/dist/commonjs/runtime/native/conditions/media-query.js +2 -0
  55. package/dist/commonjs/runtime/native/conditions/media-query.js.map +1 -1
  56. package/dist/commonjs/runtime/native/index.js +11 -1
  57. package/dist/commonjs/runtime/native/index.js.map +1 -1
  58. package/dist/commonjs/runtime/native/injection.js +18 -0
  59. package/dist/commonjs/runtime/native/injection.js.map +1 -1
  60. package/dist/commonjs/runtime/native/react/rules.js +23 -27
  61. package/dist/commonjs/runtime/native/react/rules.js.map +1 -1
  62. package/dist/commonjs/runtime/native/reactivity.js +1 -5
  63. package/dist/commonjs/runtime/native/reactivity.js.map +1 -1
  64. package/dist/commonjs/runtime/native/styles/animation.js +70 -72
  65. package/dist/commonjs/runtime/native/styles/animation.js.map +1 -1
  66. package/dist/commonjs/runtime/native/styles/border.js +12 -0
  67. package/dist/commonjs/runtime/native/styles/border.js.map +1 -0
  68. package/dist/commonjs/runtime/native/styles/box-shadow.js +40 -0
  69. package/dist/commonjs/runtime/native/styles/box-shadow.js.map +1 -0
  70. package/dist/commonjs/runtime/native/styles/calc.js +33 -61
  71. package/dist/commonjs/runtime/native/styles/calc.js.map +1 -1
  72. package/dist/commonjs/runtime/native/styles/calculate-props.js +123 -0
  73. package/dist/commonjs/runtime/native/styles/calculate-props.js.map +1 -0
  74. package/dist/commonjs/runtime/native/styles/constants.js +2 -1
  75. package/dist/commonjs/runtime/native/styles/constants.js.map +1 -1
  76. package/dist/commonjs/runtime/native/styles/filters.js +84 -0
  77. package/dist/commonjs/runtime/native/styles/filters.js.map +1 -0
  78. package/dist/commonjs/runtime/native/styles/index.js +2 -110
  79. package/dist/commonjs/runtime/native/styles/index.js.map +1 -1
  80. package/dist/commonjs/runtime/native/styles/platform-functions.js +46 -0
  81. package/dist/commonjs/runtime/native/styles/platform-functions.js.map +1 -0
  82. package/dist/commonjs/runtime/native/styles/resolve.js +46 -13
  83. package/dist/commonjs/runtime/native/styles/resolve.js.map +1 -1
  84. package/dist/commonjs/runtime/native/styles/shorthand.js +34 -17
  85. package/dist/commonjs/runtime/native/styles/shorthand.js.map +1 -1
  86. package/dist/commonjs/runtime/native/styles/transform.js +9 -3
  87. package/dist/commonjs/runtime/native/styles/transform.js.map +1 -1
  88. package/dist/commonjs/runtime/native/styles/units.js +7 -4
  89. package/dist/commonjs/runtime/native/styles/units.js.map +1 -1
  90. package/dist/commonjs/runtime/native/styles/variables.js +57 -36
  91. package/dist/commonjs/runtime/native/styles/variables.js.map +1 -1
  92. package/dist/commonjs/runtime/utils/objects.js +18 -5
  93. package/dist/commonjs/runtime/utils/objects.js.map +1 -1
  94. package/dist/commonjs/runtime/utils/style-value.js +7 -0
  95. package/dist/commonjs/runtime/utils/style-value.js.map +1 -1
  96. package/dist/commonjs/runtime/web/index.js +1 -0
  97. package/dist/commonjs/runtime/web/index.js.map +1 -1
  98. package/dist/commonjs/runtime/web/metro.js +6 -0
  99. package/dist/commonjs/runtime/web/metro.js.map +1 -0
  100. package/dist/module/babel/allowedModules.js +19 -0
  101. package/dist/module/babel/allowedModules.js.map +1 -0
  102. package/dist/module/babel/helpers.js +17 -116
  103. package/dist/module/babel/helpers.js.map +1 -1
  104. package/dist/module/babel/import-plugin.js +63 -59
  105. package/dist/module/babel/import-plugin.js.map +1 -1
  106. package/dist/module/babel/react-native-web.js +112 -0
  107. package/dist/module/babel/react-native-web.js.map +1 -0
  108. package/dist/module/babel/react-native.js +112 -0
  109. package/dist/module/babel/react-native.js.map +1 -0
  110. package/dist/module/compiler/atRules.js +97 -0
  111. package/dist/module/compiler/atRules.js.map +1 -0
  112. package/dist/module/compiler/attributes.test.js +20 -0
  113. package/dist/module/compiler/attributes.test.js.map +1 -0
  114. package/dist/module/compiler/compiler.js +144 -345
  115. package/dist/module/compiler/compiler.js.map +1 -1
  116. package/dist/module/compiler/compiler.types.js +0 -12
  117. package/dist/module/compiler/compiler.types.js.map +1 -1
  118. package/dist/module/compiler/container-query.js +10 -10
  119. package/dist/module/compiler/container-query.js.map +1 -1
  120. package/dist/module/compiler/declarations.js +1172 -992
  121. package/dist/module/compiler/declarations.js.map +1 -1
  122. package/dist/module/compiler/inheritance.test.js +78 -0
  123. package/dist/module/compiler/inheritance.test.js.map +1 -0
  124. package/dist/module/compiler/keyframes.js +15 -24
  125. package/dist/module/compiler/keyframes.js.map +1 -1
  126. package/dist/module/compiler/media-query.js +22 -22
  127. package/dist/module/compiler/media-query.js.map +1 -1
  128. package/dist/module/compiler/selectors.js +264 -184
  129. package/dist/module/compiler/selectors.js.map +1 -1
  130. package/dist/module/compiler/split-by-delimiter.js +17 -0
  131. package/dist/module/compiler/split-by-delimiter.js.map +1 -0
  132. package/dist/module/compiler/stylesheet.js +380 -0
  133. package/dist/module/compiler/stylesheet.js.map +1 -0
  134. package/dist/module/components/Text.js +1 -0
  135. package/dist/module/components/Text.js.map +1 -1
  136. package/dist/module/components/View.js +1 -0
  137. package/dist/module/components/View.js.map +1 -1
  138. package/dist/module/index.js +1 -0
  139. package/dist/module/index.js.map +1 -1
  140. package/dist/module/jest/index.js +3 -3
  141. package/dist/module/jest/index.js.map +1 -1
  142. package/dist/module/metro/index.js +111 -50
  143. package/dist/module/metro/index.js.map +1 -1
  144. package/dist/module/metro/injection-code.js +22 -3
  145. package/dist/module/metro/injection-code.js.map +1 -1
  146. package/dist/module/metro/resolver.js +57 -0
  147. package/dist/module/metro/resolver.js.map +1 -0
  148. package/dist/module/metro/typescript.js +1 -1
  149. package/dist/module/poison.pill.js +34 -0
  150. package/dist/module/poison.pill.js.map +1 -0
  151. package/dist/module/runtime/native/conditions/guards.js +10 -4
  152. package/dist/module/runtime/native/conditions/guards.js.map +1 -1
  153. package/dist/module/runtime/native/conditions/media-query.js +2 -0
  154. package/dist/module/runtime/native/conditions/media-query.js.map +1 -1
  155. package/dist/module/runtime/native/index.js +1 -2
  156. package/dist/module/runtime/native/index.js.map +1 -1
  157. package/dist/module/runtime/native/injection.js +18 -0
  158. package/dist/module/runtime/native/injection.js.map +1 -1
  159. package/dist/module/runtime/native/react/rules.js +22 -27
  160. package/dist/module/runtime/native/react/rules.js.map +1 -1
  161. package/dist/module/runtime/native/reactivity.js +1 -5
  162. package/dist/module/runtime/native/reactivity.js.map +1 -1
  163. package/dist/module/runtime/native/styles/animation.js +68 -71
  164. package/dist/module/runtime/native/styles/animation.js.map +1 -1
  165. package/dist/module/runtime/native/styles/border.js +8 -0
  166. package/dist/module/runtime/native/styles/border.js.map +1 -0
  167. package/dist/module/runtime/native/styles/box-shadow.js +35 -0
  168. package/dist/module/runtime/native/styles/box-shadow.js.map +1 -0
  169. package/dist/module/runtime/native/styles/calc.js +33 -62
  170. package/dist/module/runtime/native/styles/calc.js.map +1 -1
  171. package/dist/module/runtime/native/styles/calculate-props.js +118 -0
  172. package/dist/module/runtime/native/styles/calculate-props.js.map +1 -0
  173. package/dist/module/runtime/native/styles/constants.js +1 -0
  174. package/dist/module/runtime/native/styles/constants.js.map +1 -1
  175. package/dist/module/runtime/native/styles/filters.js +70 -0
  176. package/dist/module/runtime/native/styles/filters.js.map +1 -0
  177. package/dist/module/runtime/native/styles/index.js +2 -110
  178. package/dist/module/runtime/native/styles/index.js.map +1 -1
  179. package/dist/module/runtime/native/styles/platform-functions.js +36 -0
  180. package/dist/module/runtime/native/styles/platform-functions.js.map +1 -0
  181. package/dist/module/runtime/native/styles/resolve.js +47 -14
  182. package/dist/module/runtime/native/styles/resolve.js.map +1 -1
  183. package/dist/module/runtime/native/styles/shorthand.js +34 -17
  184. package/dist/module/runtime/native/styles/shorthand.js.map +1 -1
  185. package/dist/module/runtime/native/styles/transform.js +9 -3
  186. package/dist/module/runtime/native/styles/transform.js.map +1 -1
  187. package/dist/module/runtime/native/styles/units.js +7 -4
  188. package/dist/module/runtime/native/styles/units.js.map +1 -1
  189. package/dist/module/runtime/native/styles/variables.js +57 -36
  190. package/dist/module/runtime/native/styles/variables.js.map +1 -1
  191. package/dist/module/runtime/utils/objects.js +16 -4
  192. package/dist/module/runtime/utils/objects.js.map +1 -1
  193. package/dist/module/runtime/utils/style-value.js +6 -0
  194. package/dist/module/runtime/utils/style-value.js.map +1 -1
  195. package/dist/module/runtime/web/index.js +2 -0
  196. package/dist/module/runtime/web/index.js.map +1 -1
  197. package/dist/module/runtime/web/metro.js +5 -0
  198. package/dist/module/runtime/web/metro.js.map +1 -0
  199. package/dist/typescript/commonjs/example/app.config.d.ts +4 -0
  200. package/dist/typescript/commonjs/example/app.config.d.ts.map +1 -0
  201. package/dist/typescript/commonjs/example/src/App.d.ts.map +1 -1
  202. package/dist/typescript/commonjs/src/babel/allowedModules.d.ts +2 -0
  203. package/dist/typescript/commonjs/src/babel/allowedModules.d.ts.map +1 -0
  204. package/dist/typescript/commonjs/src/babel/helpers.d.ts +3 -8
  205. package/dist/typescript/commonjs/src/babel/helpers.d.ts.map +1 -1
  206. package/dist/typescript/commonjs/src/babel/import-plugin.d.ts.map +1 -1
  207. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts +8 -0
  208. package/dist/typescript/commonjs/src/babel/react-native-web.d.ts.map +1 -0
  209. package/dist/typescript/commonjs/src/babel/react-native.d.ts +8 -0
  210. package/dist/typescript/commonjs/src/babel/react-native.d.ts.map +1 -0
  211. package/dist/typescript/commonjs/src/compiler/atRules.d.ts +34 -0
  212. package/dist/typescript/commonjs/src/compiler/atRules.d.ts.map +1 -0
  213. package/dist/typescript/commonjs/src/compiler/attributes.test.d.ts +2 -0
  214. package/dist/typescript/commonjs/src/compiler/attributes.test.d.ts.map +1 -0
  215. package/dist/typescript/commonjs/src/compiler/compiler.d.ts +1 -1
  216. package/dist/typescript/commonjs/src/compiler/compiler.d.ts.map +1 -1
  217. package/dist/typescript/commonjs/src/compiler/compiler.types.d.ts +27 -108
  218. package/dist/typescript/commonjs/src/compiler/compiler.types.d.ts.map +1 -1
  219. package/dist/typescript/commonjs/src/compiler/container-query.d.ts +2 -2
  220. package/dist/typescript/commonjs/src/compiler/container-query.d.ts.map +1 -1
  221. package/dist/typescript/commonjs/src/compiler/declarations.d.ts +118 -25
  222. package/dist/typescript/commonjs/src/compiler/declarations.d.ts.map +1 -1
  223. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts +2 -0
  224. package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts.map +1 -0
  225. package/dist/typescript/commonjs/src/compiler/keyframes.d.ts +5 -4
  226. package/dist/typescript/commonjs/src/compiler/keyframes.d.ts.map +1 -1
  227. package/dist/typescript/commonjs/src/compiler/media-query.d.ts +4 -4
  228. package/dist/typescript/commonjs/src/compiler/media-query.d.ts.map +1 -1
  229. package/dist/typescript/commonjs/src/compiler/selectors.d.ts +10 -5
  230. package/dist/typescript/commonjs/src/compiler/selectors.d.ts.map +1 -1
  231. package/dist/typescript/commonjs/src/compiler/split-by-delimiter.d.ts +2 -0
  232. package/dist/typescript/commonjs/src/compiler/split-by-delimiter.d.ts.map +1 -0
  233. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts +54 -0
  234. package/dist/typescript/commonjs/src/compiler/stylesheet.d.ts.map +1 -0
  235. package/dist/typescript/commonjs/src/components/Text.d.ts +1 -1
  236. package/dist/typescript/commonjs/src/components/Text.d.ts.map +1 -1
  237. package/dist/typescript/commonjs/src/components/View.d.ts +1 -1
  238. package/dist/typescript/commonjs/src/components/View.d.ts.map +1 -1
  239. package/dist/typescript/commonjs/src/index.d.ts +1 -0
  240. package/dist/typescript/commonjs/src/index.d.ts.map +1 -1
  241. package/dist/typescript/commonjs/src/jest/index.d.ts +2 -3
  242. package/dist/typescript/commonjs/src/jest/index.d.ts.map +1 -1
  243. package/dist/typescript/commonjs/src/metro/index.d.ts +5 -4
  244. package/dist/typescript/commonjs/src/metro/index.d.ts.map +1 -1
  245. package/dist/typescript/commonjs/src/metro/injection-code.d.ts +15 -1
  246. package/dist/typescript/commonjs/src/metro/injection-code.d.ts.map +1 -1
  247. package/dist/typescript/commonjs/src/metro/resolver.d.ts +4 -0
  248. package/dist/typescript/commonjs/src/metro/resolver.d.ts.map +1 -0
  249. package/dist/typescript/commonjs/src/poison.pill.d.ts +2 -0
  250. package/dist/typescript/commonjs/src/poison.pill.d.ts.map +1 -0
  251. package/dist/typescript/commonjs/src/runtime/native/api.d.ts +1 -1
  252. package/dist/typescript/commonjs/src/runtime/native/conditions/guards.d.ts.map +1 -1
  253. package/dist/typescript/commonjs/src/runtime/native/index.d.ts +1 -1
  254. package/dist/typescript/commonjs/src/runtime/native/index.d.ts.map +1 -1
  255. package/dist/typescript/commonjs/src/runtime/native/react/rules.d.ts +2 -1
  256. package/dist/typescript/commonjs/src/runtime/native/react/rules.d.ts.map +1 -1
  257. package/dist/typescript/commonjs/src/runtime/native/react/useNativeCss.d.ts +1 -1
  258. package/dist/typescript/commonjs/src/runtime/native/reactivity.d.ts +1 -1
  259. package/dist/typescript/commonjs/src/runtime/native/reactivity.d.ts.map +1 -1
  260. package/dist/typescript/commonjs/src/runtime/native/styles/animation.d.ts +3 -2
  261. package/dist/typescript/commonjs/src/runtime/native/styles/animation.d.ts.map +1 -1
  262. package/dist/typescript/commonjs/src/runtime/native/styles/border.d.ts +2 -0
  263. package/dist/typescript/commonjs/src/runtime/native/styles/border.d.ts.map +1 -0
  264. package/dist/typescript/commonjs/src/runtime/native/styles/box-shadow.d.ts +3 -0
  265. package/dist/typescript/commonjs/src/runtime/native/styles/box-shadow.d.ts.map +1 -0
  266. package/dist/typescript/commonjs/src/runtime/native/styles/calc.d.ts.map +1 -1
  267. package/dist/typescript/commonjs/src/runtime/native/styles/calculate-props.d.ts +10 -0
  268. package/dist/typescript/commonjs/src/runtime/native/styles/calculate-props.d.ts.map +1 -0
  269. package/dist/typescript/commonjs/src/runtime/native/styles/constants.d.ts +1 -0
  270. package/dist/typescript/commonjs/src/runtime/native/styles/constants.d.ts.map +1 -1
  271. package/dist/typescript/commonjs/src/runtime/native/styles/filters.d.ts +12 -0
  272. package/dist/typescript/commonjs/src/runtime/native/styles/filters.d.ts.map +1 -0
  273. package/dist/typescript/commonjs/src/runtime/native/styles/index.d.ts +3 -4
  274. package/dist/typescript/commonjs/src/runtime/native/styles/index.d.ts.map +1 -1
  275. package/dist/typescript/commonjs/src/runtime/native/styles/platform-functions.d.ts +8 -0
  276. package/dist/typescript/commonjs/src/runtime/native/styles/platform-functions.d.ts.map +1 -0
  277. package/dist/typescript/commonjs/src/runtime/native/styles/resolve.d.ts +6 -2
  278. package/dist/typescript/commonjs/src/runtime/native/styles/resolve.d.ts.map +1 -1
  279. package/dist/typescript/commonjs/src/runtime/native/styles/shorthand.d.ts +3 -4
  280. package/dist/typescript/commonjs/src/runtime/native/styles/shorthand.d.ts.map +1 -1
  281. package/dist/typescript/commonjs/src/runtime/native/styles/text-shadow.d.ts +1 -1
  282. package/dist/typescript/commonjs/src/runtime/native/styles/text-shadow.d.ts.map +1 -1
  283. package/dist/typescript/commonjs/src/runtime/native/styles/transform.d.ts.map +1 -1
  284. package/dist/typescript/commonjs/src/runtime/native/styles/units.d.ts.map +1 -1
  285. package/dist/typescript/commonjs/src/runtime/native/styles/variables.d.ts +1 -1
  286. package/dist/typescript/commonjs/src/runtime/native/styles/variables.d.ts.map +1 -1
  287. package/dist/typescript/commonjs/src/runtime/runtime.types.d.ts +0 -15
  288. package/dist/typescript/commonjs/src/runtime/runtime.types.d.ts.map +1 -1
  289. package/dist/typescript/commonjs/src/runtime/utils/components.d.ts +1 -1
  290. package/dist/typescript/commonjs/src/runtime/utils/objects.d.ts +2 -1
  291. package/dist/typescript/commonjs/src/runtime/utils/objects.d.ts.map +1 -1
  292. package/dist/typescript/commonjs/src/runtime/utils/style-value.d.ts +3 -2
  293. package/dist/typescript/commonjs/src/runtime/utils/style-value.d.ts.map +1 -1
  294. package/dist/typescript/commonjs/src/runtime/web/index.d.ts +1 -0
  295. package/dist/typescript/commonjs/src/runtime/web/index.d.ts.map +1 -1
  296. package/dist/typescript/commonjs/src/runtime/web/metro.d.ts +2 -0
  297. package/dist/typescript/commonjs/src/runtime/web/metro.d.ts.map +1 -0
  298. package/dist/typescript/module/example/app.config.d.ts +4 -0
  299. package/dist/typescript/module/example/app.config.d.ts.map +1 -0
  300. package/dist/typescript/module/example/src/App.d.ts.map +1 -1
  301. package/dist/typescript/module/src/babel/allowedModules.d.ts +2 -0
  302. package/dist/typescript/module/src/babel/allowedModules.d.ts.map +1 -0
  303. package/dist/typescript/module/src/babel/helpers.d.ts +3 -8
  304. package/dist/typescript/module/src/babel/helpers.d.ts.map +1 -1
  305. package/dist/typescript/module/src/babel/import-plugin.d.ts.map +1 -1
  306. package/dist/typescript/module/src/babel/react-native-web.d.ts +8 -0
  307. package/dist/typescript/module/src/babel/react-native-web.d.ts.map +1 -0
  308. package/dist/typescript/module/src/babel/react-native.d.ts +8 -0
  309. package/dist/typescript/module/src/babel/react-native.d.ts.map +1 -0
  310. package/dist/typescript/module/src/compiler/atRules.d.ts +34 -0
  311. package/dist/typescript/module/src/compiler/atRules.d.ts.map +1 -0
  312. package/dist/typescript/module/src/compiler/attributes.test.d.ts +2 -0
  313. package/dist/typescript/module/src/compiler/attributes.test.d.ts.map +1 -0
  314. package/dist/typescript/module/src/compiler/compiler.d.ts +1 -1
  315. package/dist/typescript/module/src/compiler/compiler.d.ts.map +1 -1
  316. package/dist/typescript/module/src/compiler/compiler.types.d.ts +27 -108
  317. package/dist/typescript/module/src/compiler/compiler.types.d.ts.map +1 -1
  318. package/dist/typescript/module/src/compiler/container-query.d.ts +2 -2
  319. package/dist/typescript/module/src/compiler/container-query.d.ts.map +1 -1
  320. package/dist/typescript/module/src/compiler/declarations.d.ts +118 -25
  321. package/dist/typescript/module/src/compiler/declarations.d.ts.map +1 -1
  322. package/dist/typescript/module/src/compiler/inheritance.test.d.ts +2 -0
  323. package/dist/typescript/module/src/compiler/inheritance.test.d.ts.map +1 -0
  324. package/dist/typescript/module/src/compiler/keyframes.d.ts +5 -4
  325. package/dist/typescript/module/src/compiler/keyframes.d.ts.map +1 -1
  326. package/dist/typescript/module/src/compiler/media-query.d.ts +4 -4
  327. package/dist/typescript/module/src/compiler/media-query.d.ts.map +1 -1
  328. package/dist/typescript/module/src/compiler/selectors.d.ts +10 -5
  329. package/dist/typescript/module/src/compiler/selectors.d.ts.map +1 -1
  330. package/dist/typescript/module/src/compiler/split-by-delimiter.d.ts +2 -0
  331. package/dist/typescript/module/src/compiler/split-by-delimiter.d.ts.map +1 -0
  332. package/dist/typescript/module/src/compiler/stylesheet.d.ts +54 -0
  333. package/dist/typescript/module/src/compiler/stylesheet.d.ts.map +1 -0
  334. package/dist/typescript/module/src/components/Text.d.ts +1 -1
  335. package/dist/typescript/module/src/components/Text.d.ts.map +1 -1
  336. package/dist/typescript/module/src/components/View.d.ts +1 -1
  337. package/dist/typescript/module/src/components/View.d.ts.map +1 -1
  338. package/dist/typescript/module/src/index.d.ts +1 -0
  339. package/dist/typescript/module/src/index.d.ts.map +1 -1
  340. package/dist/typescript/module/src/jest/index.d.ts +2 -3
  341. package/dist/typescript/module/src/jest/index.d.ts.map +1 -1
  342. package/dist/typescript/module/src/metro/index.d.ts +5 -4
  343. package/dist/typescript/module/src/metro/index.d.ts.map +1 -1
  344. package/dist/typescript/module/src/metro/injection-code.d.ts +15 -1
  345. package/dist/typescript/module/src/metro/injection-code.d.ts.map +1 -1
  346. package/dist/typescript/module/src/metro/resolver.d.ts +4 -0
  347. package/dist/typescript/module/src/metro/resolver.d.ts.map +1 -0
  348. package/dist/typescript/module/src/poison.pill.d.ts +2 -0
  349. package/dist/typescript/module/src/poison.pill.d.ts.map +1 -0
  350. package/dist/typescript/module/src/runtime/native/api.d.ts +1 -1
  351. package/dist/typescript/module/src/runtime/native/conditions/guards.d.ts.map +1 -1
  352. package/dist/typescript/module/src/runtime/native/index.d.ts +1 -1
  353. package/dist/typescript/module/src/runtime/native/index.d.ts.map +1 -1
  354. package/dist/typescript/module/src/runtime/native/react/rules.d.ts +2 -1
  355. package/dist/typescript/module/src/runtime/native/react/rules.d.ts.map +1 -1
  356. package/dist/typescript/module/src/runtime/native/react/useNativeCss.d.ts +1 -1
  357. package/dist/typescript/module/src/runtime/native/reactivity.d.ts +1 -1
  358. package/dist/typescript/module/src/runtime/native/reactivity.d.ts.map +1 -1
  359. package/dist/typescript/module/src/runtime/native/styles/animation.d.ts +3 -2
  360. package/dist/typescript/module/src/runtime/native/styles/animation.d.ts.map +1 -1
  361. package/dist/typescript/module/src/runtime/native/styles/border.d.ts +2 -0
  362. package/dist/typescript/module/src/runtime/native/styles/border.d.ts.map +1 -0
  363. package/dist/typescript/module/src/runtime/native/styles/box-shadow.d.ts +3 -0
  364. package/dist/typescript/module/src/runtime/native/styles/box-shadow.d.ts.map +1 -0
  365. package/dist/typescript/module/src/runtime/native/styles/calc.d.ts.map +1 -1
  366. package/dist/typescript/module/src/runtime/native/styles/calculate-props.d.ts +10 -0
  367. package/dist/typescript/module/src/runtime/native/styles/calculate-props.d.ts.map +1 -0
  368. package/dist/typescript/module/src/runtime/native/styles/constants.d.ts +1 -0
  369. package/dist/typescript/module/src/runtime/native/styles/constants.d.ts.map +1 -1
  370. package/dist/typescript/module/src/runtime/native/styles/filters.d.ts +12 -0
  371. package/dist/typescript/module/src/runtime/native/styles/filters.d.ts.map +1 -0
  372. package/dist/typescript/module/src/runtime/native/styles/index.d.ts +3 -4
  373. package/dist/typescript/module/src/runtime/native/styles/index.d.ts.map +1 -1
  374. package/dist/typescript/module/src/runtime/native/styles/platform-functions.d.ts +8 -0
  375. package/dist/typescript/module/src/runtime/native/styles/platform-functions.d.ts.map +1 -0
  376. package/dist/typescript/module/src/runtime/native/styles/resolve.d.ts +6 -2
  377. package/dist/typescript/module/src/runtime/native/styles/resolve.d.ts.map +1 -1
  378. package/dist/typescript/module/src/runtime/native/styles/shorthand.d.ts +3 -4
  379. package/dist/typescript/module/src/runtime/native/styles/shorthand.d.ts.map +1 -1
  380. package/dist/typescript/module/src/runtime/native/styles/text-shadow.d.ts +1 -1
  381. package/dist/typescript/module/src/runtime/native/styles/text-shadow.d.ts.map +1 -1
  382. package/dist/typescript/module/src/runtime/native/styles/transform.d.ts.map +1 -1
  383. package/dist/typescript/module/src/runtime/native/styles/units.d.ts.map +1 -1
  384. package/dist/typescript/module/src/runtime/native/styles/variables.d.ts +1 -1
  385. package/dist/typescript/module/src/runtime/native/styles/variables.d.ts.map +1 -1
  386. package/dist/typescript/module/src/runtime/runtime.types.d.ts +0 -15
  387. package/dist/typescript/module/src/runtime/runtime.types.d.ts.map +1 -1
  388. package/dist/typescript/module/src/runtime/utils/components.d.ts +1 -1
  389. package/dist/typescript/module/src/runtime/utils/objects.d.ts +2 -1
  390. package/dist/typescript/module/src/runtime/utils/objects.d.ts.map +1 -1
  391. package/dist/typescript/module/src/runtime/utils/style-value.d.ts +3 -2
  392. package/dist/typescript/module/src/runtime/utils/style-value.d.ts.map +1 -1
  393. package/dist/typescript/module/src/runtime/web/index.d.ts +1 -0
  394. package/dist/typescript/module/src/runtime/web/index.d.ts.map +1 -1
  395. package/dist/typescript/module/src/runtime/web/metro.d.ts +2 -0
  396. package/dist/typescript/module/src/runtime/web/metro.d.ts.map +1 -0
  397. package/package.json +67 -13
  398. package/src/babel/allowedModules.ts +24 -0
  399. package/src/babel/helpers.ts +16 -158
  400. package/src/babel/import-plugin.ts +125 -132
  401. package/src/babel/react-native-web.ts +226 -0
  402. package/src/babel/react-native.ts +226 -0
  403. package/src/compiler/atRules.ts +144 -0
  404. package/src/compiler/attributes.test.ts +28 -0
  405. package/src/compiler/compiler.ts +154 -482
  406. package/src/compiler/compiler.types.ts +30 -135
  407. package/src/compiler/container-query.ts +12 -12
  408. package/src/compiler/declarations.ts +1789 -1971
  409. package/src/compiler/inheritance.test.ts +121 -0
  410. package/src/compiler/keyframes.ts +28 -42
  411. package/src/compiler/media-query.ts +27 -26
  412. package/src/compiler/selectors.ts +289 -271
  413. package/src/compiler/split-by-delimiter.ts +19 -0
  414. package/src/compiler/stylesheet.ts +546 -0
  415. package/src/components/Text.tsx +2 -0
  416. package/src/components/View.tsx +2 -0
  417. package/src/index.ts +2 -0
  418. package/src/jest/index.ts +6 -5
  419. package/src/metro/index.ts +161 -64
  420. package/src/metro/injection-code.ts +33 -3
  421. package/src/metro/resolver.ts +89 -0
  422. package/src/metro/typescript.ts +1 -1
  423. package/src/poison.pill.ts +32 -0
  424. package/src/runtime/native/conditions/guards.ts +12 -4
  425. package/src/runtime/native/conditions/media-query.ts +2 -0
  426. package/src/runtime/native/index.ts +1 -2
  427. package/src/runtime/native/injection.ts +30 -0
  428. package/src/runtime/native/react/rules.ts +26 -33
  429. package/src/runtime/native/reactivity.ts +3 -7
  430. package/src/runtime/native/styles/animation.ts +143 -104
  431. package/src/runtime/native/styles/border.ts +10 -0
  432. package/src/runtime/native/styles/box-shadow.ts +54 -0
  433. package/src/runtime/native/styles/calc.ts +37 -60
  434. package/src/runtime/native/styles/calculate-props.ts +165 -0
  435. package/src/runtime/native/styles/constants.ts +1 -0
  436. package/src/runtime/native/styles/filters.ts +98 -0
  437. package/src/runtime/native/styles/index.ts +2 -138
  438. package/src/runtime/native/styles/platform-functions.ts +50 -0
  439. package/src/runtime/native/styles/resolve.ts +91 -17
  440. package/src/runtime/native/styles/shorthand.ts +61 -41
  441. package/src/runtime/native/styles/transform.ts +10 -4
  442. package/src/runtime/native/styles/units.ts +9 -4
  443. package/src/runtime/native/styles/variables.ts +51 -35
  444. package/src/runtime/runtime.types.ts +0 -25
  445. package/src/runtime/utils/objects.ts +20 -5
  446. package/src/runtime/utils/style-value.ts +14 -2
  447. package/src/runtime/web/index.ts +3 -0
  448. package/src/runtime/web/metro.ts +2 -0
  449. package/types.d.ts +70 -0
  450. package/dist/commonjs/compiler/add.js +0 -175
  451. package/dist/commonjs/compiler/add.js.map +0 -1
  452. package/dist/commonjs/components/ActivityIndicator.js +0 -20
  453. package/dist/commonjs/components/ActivityIndicator.js.map +0 -1
  454. package/dist/commonjs/components/SafeAreaProvider/index.js +0 -41
  455. package/dist/commonjs/components/SafeAreaProvider/index.js.map +0 -1
  456. package/dist/commonjs/components/SafeAreaProvider/index.web.js +0 -13
  457. package/dist/commonjs/components/SafeAreaProvider/index.web.js.map +0 -1
  458. package/dist/commonjs/components/TextInput.js +0 -20
  459. package/dist/commonjs/components/TextInput.js.map +0 -1
  460. package/dist/module/compiler/add.js +0 -168
  461. package/dist/module/compiler/add.js.map +0 -1
  462. package/dist/module/components/ActivityIndicator.js +0 -16
  463. package/dist/module/components/ActivityIndicator.js.map +0 -1
  464. package/dist/module/components/SafeAreaProvider/index.js +0 -36
  465. package/dist/module/components/SafeAreaProvider/index.js.map +0 -1
  466. package/dist/module/components/SafeAreaProvider/index.web.js +0 -4
  467. package/dist/module/components/SafeAreaProvider/index.web.js.map +0 -1
  468. package/dist/module/components/TextInput.js +0 -16
  469. package/dist/module/components/TextInput.js.map +0 -1
  470. package/dist/typescript/commonjs/src/compiler/add.d.ts +0 -10
  471. package/dist/typescript/commonjs/src/compiler/add.d.ts.map +0 -1
  472. package/dist/typescript/commonjs/src/components/ActivityIndicator.d.ts +0 -3
  473. package/dist/typescript/commonjs/src/components/ActivityIndicator.d.ts.map +0 -1
  474. package/dist/typescript/commonjs/src/components/SafeAreaProvider/index.d.ts +0 -4
  475. package/dist/typescript/commonjs/src/components/SafeAreaProvider/index.d.ts.map +0 -1
  476. package/dist/typescript/commonjs/src/components/SafeAreaProvider/index.web.d.ts +0 -2
  477. package/dist/typescript/commonjs/src/components/SafeAreaProvider/index.web.d.ts.map +0 -1
  478. package/dist/typescript/commonjs/src/components/TextInput.d.ts +0 -13
  479. package/dist/typescript/commonjs/src/components/TextInput.d.ts.map +0 -1
  480. package/dist/typescript/module/src/compiler/add.d.ts +0 -10
  481. package/dist/typescript/module/src/compiler/add.d.ts.map +0 -1
  482. package/dist/typescript/module/src/components/ActivityIndicator.d.ts +0 -3
  483. package/dist/typescript/module/src/components/ActivityIndicator.d.ts.map +0 -1
  484. package/dist/typescript/module/src/components/SafeAreaProvider/index.d.ts +0 -4
  485. package/dist/typescript/module/src/components/SafeAreaProvider/index.d.ts.map +0 -1
  486. package/dist/typescript/module/src/components/SafeAreaProvider/index.web.d.ts +0 -2
  487. package/dist/typescript/module/src/components/SafeAreaProvider/index.web.d.ts.map +0 -1
  488. package/dist/typescript/module/src/components/TextInput.d.ts +0 -13
  489. package/dist/typescript/module/src/components/TextInput.d.ts.map +0 -1
  490. package/src/compiler/add.ts +0 -257
  491. package/src/components/ActivityIndicator.tsx +0 -19
  492. package/src/components/SafeAreaProvider/index.tsx +0 -50
  493. package/src/components/SafeAreaProvider/index.web.tsx +0 -1
  494. package/src/components/TextInput.tsx +0 -20
@@ -3,28 +3,261 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.addAnimationValue = addAnimationValue;
7
+ exports.addTransitionValue = addTransitionValue;
8
+ exports.allEqual = allEqual;
9
+ exports.equal = equal;
10
+ exports.kebabCase = kebabCase;
11
+ exports.parseAlignContent = parseAlignContent;
12
+ exports.parseAlignItems = parseAlignItems;
13
+ exports.parseAlignSelf = parseAlignSelf;
14
+ exports.parseAngle = parseAngle;
15
+ exports.parseAspectRatio = parseAspectRatio;
16
+ exports.parseBorderBlockColor = parseBorderBlockColor;
17
+ exports.parseBorderBlockWidth = parseBorderBlockWidth;
18
+ exports.parseBorderSideWidth = parseBorderSideWidth;
19
+ exports.parseBorderSideWidthDeclaration = parseBorderSideWidthDeclaration;
20
+ exports.parseBorderStyle = parseBorderStyle;
21
+ exports.parseBorderStyleDeclaration = parseBorderStyleDeclaration;
22
+ exports.parseBoxShadow = parseBoxShadow;
23
+ exports.parseCalcArguments = parseCalcArguments;
6
24
  exports.parseCalcFn = parseCalcFn;
25
+ exports.parseColor = parseColor;
26
+ exports.parseColorDeclaration = parseColorDeclaration;
27
+ exports.parseColorOrAuto = parseColorOrAuto;
7
28
  exports.parseDeclaration = parseDeclaration;
29
+ exports.parseDeclarationCustom = parseDeclarationCustom;
30
+ exports.parseDeclarationUnparsed = parseDeclarationUnparsed;
31
+ exports.parseDimension = parseDimension;
32
+ exports.parseDimensionPercentageFor_LengthValue = parseDimensionPercentageFor_LengthValue;
33
+ exports.parseDisplay = parseDisplay;
34
+ exports.parseEnv = parseEnv;
35
+ exports.parseFontColorDeclaration = parseFontColorDeclaration;
36
+ exports.parseFontSize = parseFontSize;
37
+ exports.parseFontSizeDeclaration = parseFontSizeDeclaration;
38
+ exports.parseFontStyle = parseFontStyle;
39
+ exports.parseFontStyleDeclaration = parseFontStyleDeclaration;
40
+ exports.parseFontVariantCaps = parseFontVariantCaps;
41
+ exports.parseFontVariantCapsDeclaration = parseFontVariantCapsDeclaration;
42
+ exports.parseFontWeight = parseFontWeight;
43
+ exports.parseFontWeightDeclaration = parseFontWeightDeclaration;
44
+ exports.parseGap = parseGap;
45
+ exports.parseJustifyContent = parseJustifyContent;
8
46
  exports.parseLength = parseLength;
9
- exports.parseScale = parseScale;
10
- exports.parseTranslate = parseTranslate;
47
+ exports.parseLengthDeclaration = parseLengthDeclaration;
48
+ exports.parseLengthOrCoercePercentageToRuntime = parseLengthOrCoercePercentageToRuntime;
49
+ exports.parseLengthPercentageOrAuto = parseLengthPercentageOrAuto;
50
+ exports.parseLengthPercentageOrAutoDeclaration = parseLengthPercentageOrAutoDeclaration;
51
+ exports.parseLineHeight = parseLineHeight;
52
+ exports.parseLineHeightDeclaration = parseLineHeightDeclaration;
53
+ exports.parseOverflow = parseOverflow;
54
+ exports.parsePointerEvents = parsePointerEvents;
55
+ exports.parsePosition = parsePosition;
56
+ exports.parseSVGPaint = parseSVGPaint;
57
+ exports.parseScaleValue = parseScaleValue;
58
+ exports.parseSize = parseSize;
59
+ exports.parseSize2DDimensionPercentage = parseSize2DDimensionPercentage;
60
+ exports.parseSize2DDimensionPercentageDeclaration = parseSize2DDimensionPercentageDeclaration;
61
+ exports.parseSizeDeclaration = parseSizeDeclaration;
62
+ exports.parseTextAlign = parseTextAlign;
63
+ exports.parseTextDecorationLine = parseTextDecorationLine;
64
+ exports.parseTextDecorationLineDeclaration = parseTextDecorationLineDeclaration;
65
+ exports.parseTextDecorationStyle = parseTextDecorationStyle;
66
+ exports.parseTextShadow = parseTextShadow;
67
+ exports.parseTime = parseTime;
68
+ exports.parseTranslateProp = parseTranslateProp;
69
+ exports.parseUnparsed = parseUnparsed;
11
70
  exports.parseUnresolvedColor = parseUnresolvedColor;
12
- var _constants = require("../runtime/native/styles/constants.js");
13
- var _styleValue = require("../runtime/utils/style-value.js");
71
+ exports.parseUserSelect = parseUserSelect;
72
+ exports.parseVerticalAlign = parseVerticalAlign;
73
+ exports.reduceParseUnparsed = reduceParseUnparsed;
74
+ exports.round = round;
75
+ exports.unparsedFunction = unparsedFunction;
76
+ var _colorjs = _interopRequireDefault(require("colorjs.io"));
14
77
  var _keyframes = require("./keyframes.js");
15
78
  var _selectors = require("./selectors.js");
16
- /* eslint-disable */
79
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
80
  // cSpell:ignore rcap,vmin,svmin,lvmin,dvmin,cqmin,vmax,svmax,lvmax,dvmax,cqmax,currentcolor,oklab,oklch,prophoto
18
81
 
82
+ const CommaSeparator = Symbol("CommaSeparator");
19
83
  const propertyRename = {
20
- "margin-inline-start": "margin-start",
21
- "margin-inline-end": "margin-end",
22
- "padding-inline-start": "padding-start",
23
- "padding-inline-end": "padding-end"
84
+ "background-image": "experimental_backgroundImage"
24
85
  };
25
- const validProperties = ["align-content", "align-items", "align-self", "animation", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "aspect-ratio", "background-color", "block-size", "border", "border-block", "border-block-color", "border-block-end", "border-block-end-color", "border-block-end-width", "border-block-start", "border-block-start-color", "border-block-start-width", "border-block-width", "border-bottom", "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-width", "border-color", "border-end-end-radius", "border-end-start-radius", "border-inline", "border-inline-color", "border-inline-end", "border-inline-end-color", "border-inline-end-width", "border-inline-start", "border-inline-start-color", "border-inline-start-width", "border-inline-width", "border-left", "border-left-color", "border-left-width", "border-radius", "border-right", "border-right-color", "border-right-width", "border-start-end-radius", "border-start-start-radius", "border-style", "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-width", "border-width", "bottom", "box-shadow", "caret-color", "color", "column-gap", "container", "container-name", "container-type", "display", "fill", "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "font", "font-family", "font-size", "font-style", "font-variant-caps", "font-weight", "gap", "height", "inline-size", "inset", "inset-block", "inset-block-end", "inset-block-start", "inset-inline", "inset-inline-end", "inset-inline-start", "justify-content", "left", "letter-spacing", "line-height", "margin", "margin-block", "margin-block-end", "margin-block-start", "margin-bottom", "margin-inline", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right", "margin-top", "max-block-size", "max-height", "max-inline-size", "max-width", "min-block-size", "min-height", "min-inline-size", "min-width", "opacity", "overflow", "padding", "padding-block", "padding-block-end", "padding-block-start", "padding-bottom", "padding-inline", "padding-inline-end", "padding-inline-start", "padding-left", "padding-right", "padding-top", "pointer-events", "position", "right", "rotate", "row-gap", "scale", "stroke", "stroke-width", "text-align", "text-decoration", "text-decoration-color", "text-decoration-line", "text-decoration-style", "text-shadow", "text-transform", "top", "transform", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "translate", "user-select", "vertical-align", "width", "z-index"];
26
- const validPropertiesLoose = new Set(validProperties);
27
- function parseDeclaration(declaration, options, add, addWarning) {
86
+ const unparsedRuntimeParsing = new Set(["animation", "text-shadow", "transform", "box-shadow", "border"]);
87
+ const parsers = {
88
+ "align-content": parseAlignContent,
89
+ "align-items": parseAlignItems,
90
+ "align-self": parseAlignSelf,
91
+ "animation": addAnimationValue,
92
+ "animation-delay": addAnimationValue,
93
+ "animation-direction": addAnimationValue,
94
+ "animation-duration": addAnimationValue,
95
+ "animation-fill-mode": addAnimationValue,
96
+ "animation-iteration-count": addAnimationValue,
97
+ "animation-name": addAnimationValue,
98
+ "animation-play-state": addAnimationValue,
99
+ "animation-timing-function": addAnimationValue,
100
+ "aspect-ratio": parseAspectRatio,
101
+ "background-color": parseColorDeclaration,
102
+ "background-image": parseBackgroundImage,
103
+ "block-size": parseSizeDeclaration,
104
+ "border": parseBorder,
105
+ "border-block": parseBorderBlock,
106
+ "border-block-color": parseBorderBlockColor,
107
+ "border-block-end": parseBorderBlockEnd,
108
+ "border-block-end-color": parseColorDeclaration,
109
+ "border-block-end-width": parseBorderSideWidthDeclaration,
110
+ "border-block-start": parseBorderBlockStart,
111
+ "border-block-start-color": parseColorDeclaration,
112
+ "border-block-start-width": parseBorderSideWidthDeclaration,
113
+ "border-block-width": parseBorderBlockWidth,
114
+ "border-bottom": parseBorderSide,
115
+ "border-bottom-color": parseColorDeclaration,
116
+ "border-bottom-left-radius": parseSize2DDimensionPercentageDeclaration,
117
+ "border-bottom-right-radius": parseSize2DDimensionPercentageDeclaration,
118
+ "border-bottom-width": parseBorderSideWidthDeclaration,
119
+ "border-color": parseBorderColor,
120
+ "border-end-end-radius": parseSize2DDimensionPercentageDeclaration,
121
+ "border-end-start-radius": parseSize2DDimensionPercentageDeclaration,
122
+ "border-inline": parseBorderInline,
123
+ "border-inline-color": parseBorderBlockColor,
124
+ "border-inline-end": parseBorderInlineEnd,
125
+ "border-inline-end-color": parseColorDeclaration,
126
+ "border-inline-end-width": parseBorderSideWidthDeclaration,
127
+ "border-inline-start": parseBorderInlineStart,
128
+ "border-inline-start-color": parseColorDeclaration,
129
+ "border-inline-start-width": parseBorderSideWidthDeclaration,
130
+ "border-inline-width": parseBorderBlockWidth,
131
+ "border-left": parseBorderSide,
132
+ "border-left-color": parseColorDeclaration,
133
+ "border-left-width": parseBorderSideWidthDeclaration,
134
+ "border-radius": parseBorderRadius,
135
+ "border-right": parseBorderSide,
136
+ "border-right-color": parseColorDeclaration,
137
+ "border-right-width": parseBorderSideWidthDeclaration,
138
+ "border-start-end-radius": parseSize2DDimensionPercentageDeclaration,
139
+ "border-start-start-radius": parseSize2DDimensionPercentageDeclaration,
140
+ "border-style": parseBorderStyleDeclaration,
141
+ "border-top": parseBorderSide,
142
+ "border-top-color": parseColorDeclaration,
143
+ "border-top-left-radius": parseSize2DDimensionPercentageDeclaration,
144
+ "border-top-right-radius": parseSize2DDimensionPercentageDeclaration,
145
+ "border-top-width": parseBorderSideWidthDeclaration,
146
+ "border-width": parseBorderWidth,
147
+ "bottom": parseSizeDeclaration,
148
+ "box-shadow": parseBoxShadow,
149
+ "caret-color": parseColorOrAuto,
150
+ "color": parseFontColorDeclaration,
151
+ "column-gap": parseGap,
152
+ "container": parseContainer,
153
+ "container-name": parseContainerName,
154
+ "container-type": parseContainerType,
155
+ "display": parseDisplay,
156
+ "fill": parseSVGPaint,
157
+ "filter": parseFilter,
158
+ "flex": parseFlex,
159
+ "flex-basis": parseLengthPercentageOrAutoDeclaration,
160
+ "flex-direction": ({
161
+ value
162
+ }) => value,
163
+ "flex-flow": parseFlexFlow,
164
+ "flex-grow": ({
165
+ value
166
+ }) => value,
167
+ "flex-shrink": ({
168
+ value
169
+ }) => value,
170
+ "flex-wrap": ({
171
+ value
172
+ }) => value,
173
+ "font": parseFont,
174
+ "font-family": parseFontFamily,
175
+ "font-size": parseFontSizeDeclaration,
176
+ "font-style": parseFontStyleDeclaration,
177
+ "font-variant-caps": parseFontVariantCapsDeclaration,
178
+ "font-weight": parseFontWeightDeclaration,
179
+ "gap": parseGap,
180
+ "height": parseSizeDeclaration,
181
+ "inline-size": parseSizeDeclaration,
182
+ "inset": parseInset,
183
+ "inset-block": parseInsetBlock,
184
+ "inset-block-end": parseLengthPercentageOrAutoDeclaration,
185
+ "inset-block-start": parseLengthPercentageOrAutoDeclaration,
186
+ "inset-inline": parseInsetInline,
187
+ "inset-inline-end": parseLengthPercentageOrAutoDeclaration,
188
+ "inset-inline-start": parseLengthPercentageOrAutoDeclaration,
189
+ "justify-content": parseJustifyContent,
190
+ "left": parseSizeDeclaration,
191
+ "letter-spacing": parseLetterSpacing,
192
+ "line-height": parseLineHeightDeclaration,
193
+ "margin": parseMargin,
194
+ "margin-block": parseMarginBlock,
195
+ "margin-block-end": parseLengthPercentageOrAutoDeclaration,
196
+ "margin-block-start": parseLengthPercentageOrAutoDeclaration,
197
+ "margin-bottom": parseSizeDeclaration,
198
+ "margin-inline": parseMarginInline,
199
+ "margin-inline-end": parseLengthPercentageOrAutoDeclaration,
200
+ "margin-inline-start": parseLengthPercentageOrAutoDeclaration,
201
+ "margin-left": parseSizeDeclaration,
202
+ "margin-right": parseSizeDeclaration,
203
+ "margin-top": parseSizeDeclaration,
204
+ "max-block-size": parseSizeDeclaration,
205
+ "max-height": parseSizeDeclaration,
206
+ "max-inline-size": parseSizeDeclaration,
207
+ "max-width": parseSizeDeclaration,
208
+ "min-block-size": parseSizeDeclaration,
209
+ "min-height": parseSizeDeclaration,
210
+ "min-inline-size": parseSizeDeclaration,
211
+ "min-width": parseSizeDeclaration,
212
+ "opacity": ({
213
+ value
214
+ }) => value,
215
+ "overflow": parseOverflow,
216
+ "padding": parsePadding,
217
+ "padding-block": parsePaddingBlock,
218
+ "padding-block-end": parseLengthPercentageOrAutoDeclaration,
219
+ "padding-block-start": parseLengthPercentageOrAutoDeclaration,
220
+ "padding-bottom": parseSizeDeclaration,
221
+ "padding-inline": parsePaddingInline,
222
+ "padding-inline-end": parseLengthPercentageOrAutoDeclaration,
223
+ "padding-inline-start": parseLengthPercentageOrAutoDeclaration,
224
+ "padding-left": parseSizeDeclaration,
225
+ "padding-right": parseSizeDeclaration,
226
+ "padding-top": parseSizeDeclaration,
227
+ "position": parsePosition,
228
+ "right": parseSizeDeclaration,
229
+ "rotate": parseRotate,
230
+ "row-gap": parseGap,
231
+ "scale": parseScale,
232
+ "stroke": parseSVGPaint,
233
+ "stroke-width": parseLengthDeclaration,
234
+ "text-align": parseTextAlign,
235
+ "text-decoration": parseTextDecoration,
236
+ "text-decoration-color": parseColorDeclaration,
237
+ "text-decoration-line": parseTextDecorationLineDeclaration,
238
+ "text-decoration-style": parseTextDecorationStyle,
239
+ "text-shadow": parseTextShadow,
240
+ "text-transform": ({
241
+ value
242
+ }) => value.case,
243
+ "top": parseSizeDeclaration,
244
+ "transform": parseTransform,
245
+ "transition": addTransitionValue,
246
+ "transition-delay": addTransitionValue,
247
+ "transition-duration": addTransitionValue,
248
+ "transition-property": addTransitionValue,
249
+ "transition-timing-function": addTransitionValue,
250
+ "translate": parseTranslate,
251
+ "user-select": parseUserSelect,
252
+ "vertical-align": parseVerticalAlign,
253
+ "width": parseSizeDeclaration,
254
+ "z-index": parseZIndex
255
+ };
256
+
257
+ // This is missing LightningCSS types
258
+ parsers["pointer-events"] = parsePointerEvents;
259
+ const validProperties = new Set(Object.keys(parsers));
260
+ function parseDeclaration(declaration, builder) {
28
261
  if ("vendorPrefix" in declaration && declaration.vendorPrefix.length) {
29
262
  return;
30
263
  }
@@ -32,661 +265,417 @@ function parseDeclaration(declaration, options, add, addWarning) {
32
265
  return;
33
266
  }
34
267
  if (declaration.property === "unparsed") {
35
- return parseDeclarationUnparsed(declaration, options, add, addWarning);
268
+ parseDeclarationUnparsed(declaration, builder);
36
269
  } else if (declaration.property === "custom") {
37
- return parseDeclarationCustom(declaration, options, add, addWarning);
38
- }
39
- if (!isValid(declaration)) {
40
- return addWarning("property", declaration.property);
270
+ parseDeclarationCustom(declaration, builder);
271
+ } else {
272
+ parseWithParser(declaration, builder);
41
273
  }
42
- const parseOptions = {
43
- ...options,
44
- add,
45
- addWarning(value) {
46
- return addWarning("value", declaration.property, value);
274
+ }
275
+ function parseWithParser(declaration, builder) {
276
+ if (declaration.property in parsers) {
277
+ const parser = parsers[declaration.property];
278
+ builder.descriptorProperty = declaration.property;
279
+ const value = parser(declaration, builder, declaration.property);
280
+ if (value !== undefined) {
281
+ builder.addDescriptor(propertyRename[declaration.property] ?? declaration.property, value);
47
282
  }
48
- };
49
- function handleStyleShorthand(name, options) {
50
- if (allEqual(...Object.values(options))) {
51
- return add("style", name, Object.values(options)[0]);
52
- } else {
53
- for (const [name, value] of Object.entries(options)) {
54
- add("style", name, value);
55
- }
283
+ } else {
284
+ builder.addWarning("property", declaration.property);
285
+ }
286
+ }
287
+ function parseInsetBlock({
288
+ value
289
+ }, builder) {
290
+ builder.addShorthand("inset-block", {
291
+ "inset-block-start": parseLengthPercentageOrAuto(value.blockStart, builder),
292
+ "inset-block-end": parseLengthPercentageOrAuto(value.blockEnd, builder)
293
+ });
294
+ }
295
+ function parseInsetInline({
296
+ value
297
+ }, builder) {
298
+ builder.addShorthand("inset-inline", {
299
+ "inset-block-start": parseLengthPercentageOrAuto(value.inlineStart, builder),
300
+ "inset-block-end": parseLengthPercentageOrAuto(value.inlineEnd, builder)
301
+ });
302
+ }
303
+ function parseInset({
304
+ value
305
+ }, builder) {
306
+ builder.addShorthand("inset", {
307
+ top: parseLengthPercentageOrAuto(value.top, builder),
308
+ bottom: parseLengthPercentageOrAuto(value.bottom, builder),
309
+ left: parseLengthPercentageOrAuto(value.left, builder),
310
+ right: parseLengthPercentageOrAuto(value.right, builder)
311
+ });
312
+ }
313
+ function parseBorderRadius({
314
+ value
315
+ }, builder) {
316
+ builder.addShorthand("border-radius", {
317
+ "border-bottom-left-radius": parseSize2DDimensionPercentage(value.bottomLeft, builder),
318
+ "border-bottom-right-radius": parseSize2DDimensionPercentage(value.bottomRight, builder),
319
+ "border-top-left-radius": parseSize2DDimensionPercentage(value.topLeft, builder),
320
+ "border-top-right-radius": parseSize2DDimensionPercentage(value.topRight, builder)
321
+ });
322
+ }
323
+ function parseBorderColor({
324
+ value
325
+ }, builder) {
326
+ builder.addShorthand("border-color", {
327
+ "border-top-color": parseColor(value.top, builder),
328
+ "border-bottom-color": parseColor(value.bottom, builder),
329
+ "border-left-color": parseColor(value.left, builder),
330
+ "border-right-color": parseColor(value.right, builder)
331
+ });
332
+ }
333
+ function parseBorderWidth({
334
+ value
335
+ }, builder) {
336
+ builder.addShorthand("border-width", {
337
+ "border-top-width": parseBorderSideWidth(value.top, builder),
338
+ "border-bottom-width": parseBorderSideWidth(value.bottom, builder),
339
+ "border-left-width": parseBorderSideWidth(value.left, builder),
340
+ "border-right-width": parseBorderSideWidth(value.right, builder)
341
+ });
342
+ }
343
+ function parseBorder({
344
+ value
345
+ }, builder) {
346
+ builder.addShorthand("border", {
347
+ "border-width": parseBorderSideWidth(value.width, builder),
348
+ "border-style": parseBorderStyle(value.style, builder),
349
+ "border-color": parseColor(value.color, builder)
350
+ });
351
+ }
352
+ function parseBorderSide({
353
+ value,
354
+ property
355
+ }, builder) {
356
+ builder.addDescriptor(property + "-color", parseColor(value.color, builder));
357
+ builder.addDescriptor(property + "-width", parseBorderSideWidth(value.width, builder));
358
+ }
359
+ function parseBorderBlock({
360
+ value
361
+ }, builder) {
362
+ builder.addDescriptor("border-top-color", parseColor(value.color, builder));
363
+ builder.addDescriptor("border-bottom-color", parseColor(value.color, builder));
364
+ builder.addDescriptor("border-top-width", parseBorderSideWidth(value.width, builder));
365
+ builder.addDescriptor("border-bottom-width", parseBorderSideWidth(value.width, builder));
366
+ }
367
+ function parseBorderBlockStart({
368
+ value
369
+ }, builder) {
370
+ builder.addDescriptor("border-top-color", parseColor(value.color, builder));
371
+ builder.addDescriptor("border-top-width", parseBorderSideWidth(value.width, builder));
372
+ }
373
+ function parseBorderBlockEnd({
374
+ value
375
+ }, builder) {
376
+ builder.addDescriptor("border-bottom-color", parseColor(value.color, builder));
377
+ builder.addDescriptor("border-bottom-width", parseBorderSideWidth(value.width, builder));
378
+ }
379
+ function parseBorderInline({
380
+ value
381
+ }, builder) {
382
+ builder.addDescriptor("border-left-color", parseColor(value.color, builder));
383
+ builder.addDescriptor("border-right-color", parseColor(value.color, builder));
384
+ builder.addDescriptor("border-left-width", parseBorderSideWidth(value.width, builder));
385
+ builder.addDescriptor("border-right-width", parseBorderSideWidth(value.width, builder));
386
+ }
387
+ function parseBorderInlineStart({
388
+ value
389
+ }, builder) {
390
+ builder.addDescriptor("border-left-color", parseColor(value.color, builder));
391
+ builder.addDescriptor("border-left-width", parseBorderSideWidth(value.width, builder));
392
+ }
393
+ function parseBorderInlineEnd({
394
+ value
395
+ }, builder) {
396
+ builder.addDescriptor("border-right-color", parseColor(value.color, builder));
397
+ builder.addDescriptor("border-right-width", parseBorderSideWidth(value.width, builder));
398
+ }
399
+ function parseFlexFlow({
400
+ value
401
+ }, builder) {
402
+ builder.addDescriptor("flexWrap", value.wrap);
403
+ builder.addDescriptor("flexDirection", value.direction);
404
+ }
405
+ function parseFlex({
406
+ value
407
+ }, builder) {
408
+ builder.addDescriptor("flex-grow", value.grow);
409
+ builder.addDescriptor("flex-shrink", value.shrink);
410
+ builder.addDescriptor("flex-basis", parseLengthPercentageOrAuto(value.basis, builder));
411
+ }
412
+ function parseMargin({
413
+ value
414
+ }, builder) {
415
+ builder.addShorthand("margin", {
416
+ "margin-top": parseSize(value.top, builder, {
417
+ allowAuto: true
418
+ }),
419
+ "margin-bottom": parseSize(value.bottom, builder, {
420
+ allowAuto: true
421
+ }),
422
+ "margin-left": parseSize(value.left, builder, {
423
+ allowAuto: true
424
+ }),
425
+ "margin-right": parseSize(value.right, builder, {
426
+ allowAuto: true
427
+ })
428
+ });
429
+ }
430
+ function parseMarginBlock({
431
+ value
432
+ }, builder) {
433
+ builder.addShorthand("margin-block", {
434
+ "margin-block-start": parseLengthPercentageOrAuto(value.blockStart, builder),
435
+ "margin-block-end": parseLengthPercentageOrAuto(value.blockEnd, builder)
436
+ });
437
+ }
438
+ function parseMarginInline({
439
+ value
440
+ }, builder) {
441
+ builder.addShorthand("margin-inline", {
442
+ "margin-inline-start": parseLengthPercentageOrAuto(value.inlineStart, builder),
443
+ "margin-inline-end": parseLengthPercentageOrAuto(value.inlineEnd, builder)
444
+ });
445
+ }
446
+ function parsePadding({
447
+ value
448
+ }, builder) {
449
+ builder.addShorthand("padding", {
450
+ "padding-top": parseSize(value.top, builder),
451
+ "padding-bottom": parseSize(value.bottom, builder),
452
+ "padding-left": parseSize(value.left, builder),
453
+ "padding-right": parseSize(value.right, builder)
454
+ });
455
+ }
456
+ function parsePaddingBlock({
457
+ value
458
+ }, builder) {
459
+ builder.addShorthand("padding-block", {
460
+ "padding-block-start": parseLengthPercentageOrAuto(value.blockStart, builder),
461
+ "padding-block-end": parseLengthPercentageOrAuto(value.blockEnd, builder)
462
+ });
463
+ }
464
+ function parsePaddingInline({
465
+ value
466
+ }, builder) {
467
+ builder.addShorthand("padding-inline", {
468
+ "padding-inline-start": parseLengthPercentageOrAuto(value.inlineStart, builder),
469
+ "padding-inline-end": parseLengthPercentageOrAuto(value.inlineEnd, builder)
470
+ });
471
+ }
472
+ function parseFont({
473
+ value
474
+ }, builder) {
475
+ builder.addDescriptor("font-family", value.family[0]);
476
+ builder.addDescriptor("line-height", parseLineHeight(value.lineHeight, builder));
477
+ builder.addDescriptor("font-size", parseFontSize(value.size, builder));
478
+ builder.addDescriptor("font-style", parseFontStyle(value.style, builder));
479
+ builder.addDescriptor("font-variant-caps", parseFontVariantCaps(value.variantCaps, builder));
480
+ builder.addDescriptor("font-weight", parseFontWeight(value.weight, builder));
481
+ }
482
+ function parseTransform({
483
+ value
484
+ }, builder) {
485
+ builder.addDescriptor("transform", [{}, "@transform", value.flatMap(t => {
486
+ switch (t.type) {
487
+ case "perspective":
488
+ return [[{}, "@perspective", parseLength(t.value, builder)]];
489
+ case "translate":
490
+ return [[{}, "@translateX", parseLengthOrCoercePercentageToRuntime(t.value[0], builder)], [[{}, "@translateY", parseLengthOrCoercePercentageToRuntime(t.value[1], builder)]]];
491
+ case "translateX":
492
+ return [[{}, "@translateX", parseLengthOrCoercePercentageToRuntime(t.value, builder)]];
493
+ case "translateY":
494
+ return [[{}, "@translateY", parseLengthOrCoercePercentageToRuntime(t.value, builder)]];
495
+ case "rotate":
496
+ return [[{}, "@rotate", parseAngle(t.value, builder)]];
497
+ case "rotateX":
498
+ return [[{}, "@rotateX", parseAngle(t.value, builder)]];
499
+ case "rotateY":
500
+ return [[{}, "@rotateY", parseAngle(t.value, builder)]];
501
+ case "rotateZ":
502
+ return [[{}, "@rotateZ", parseAngle(t.value, builder)]];
503
+ case "scale":
504
+ return [[{}, "@scaleX", parseLength(t.value[0], builder)], [{}, "@scaleY", parseLength(t.value[1], builder)]];
505
+ case "scaleX":
506
+ return [[{}, "scaleX", parseLength(t.value, builder)]];
507
+ case "scaleY":
508
+ return [[{}, "scaleY", parseLength(t.value, builder)]];
509
+ case "skew":
510
+ return [[{}, "skewX", parseAngle(t.value[0], builder)], [{}, "skewY", parseAngle(t.value[1], builder)]];
511
+ case "skewX":
512
+ return [[{}, "skewX", parseAngle(t.value, builder)]];
513
+ case "skewY":
514
+ return [[{}, "skewY", parseAngle(t.value, builder)]];
515
+ case "translateZ":
516
+ case "translate3d":
517
+ case "scaleZ":
518
+ case "scale3d":
519
+ case "rotate3d":
520
+ case "matrix":
521
+ case "matrix3d":
522
+ return [[]];
56
523
  }
524
+ })]);
525
+ return;
526
+ }
527
+ function parseTranslate({
528
+ value
529
+ }, builder) {
530
+ builder.addDescriptor("translateX", [{}, "translateX", parseTranslateProp(value, "x", builder)]);
531
+ builder.addDescriptor("translateY", [{}, "translateY", parseTranslateProp(value, "y", builder)]);
532
+ }
533
+ function parseRotate({
534
+ value
535
+ }, builder) {
536
+ builder.addDescriptor("rotateX", [{}, "rotateX", parseAngle(value.x, builder)]);
537
+ builder.addDescriptor("rotateY", [{}, "rotateY", parseAngle(value.y, builder)]);
538
+ builder.addDescriptor("rotateZ", [{}, "rotateZ", parseAngle(value.z, builder)]);
539
+ }
540
+ function parseScale({
541
+ value
542
+ }, builder) {
543
+ builder.addDescriptor("scaleX", [{}, "scaleX", parseScaleValue(value, "x", builder)]);
544
+ builder.addDescriptor("scaleY", [{}, "scaleY", parseScaleValue(value, "y", builder)]);
545
+ }
546
+ function parseScaleValue(translate, prop, builder) {
547
+ if (translate === "none") {
548
+ return 0;
57
549
  }
58
- switch (declaration.property) {
59
- case "background-color":
60
- return add("style", declaration.property, parseColor(declaration.value, parseOptions));
61
- case "opacity":
62
- return add("style", declaration.property, declaration.value);
63
- case "color":
64
- return add("style", declaration.property, parseColor(declaration.value, parseOptions));
65
- case "display":
66
- return add("style", declaration.property, parseDisplay(declaration.value, parseOptions));
67
- case "width":
68
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
69
- case "height":
70
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
71
- case "min-width":
72
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
73
- case "min-height":
74
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
75
- case "max-width":
76
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
77
- case "max-height":
78
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
79
- case "block-size":
80
- return add("style", "width", parseSize(declaration.value, parseOptions));
81
- case "inline-size":
82
- return add("style", "height", parseSize(declaration.value, parseOptions));
83
- case "min-block-size":
84
- return add("style", "min-width", parseSize(declaration.value, parseOptions));
85
- case "min-inline-size":
86
- return add("style", "min-height", parseSize(declaration.value, parseOptions));
87
- case "max-block-size":
88
- return add("style", "max-width", parseSize(declaration.value, parseOptions));
89
- case "max-inline-size":
90
- return add("style", "max-height", parseSize(declaration.value, parseOptions));
91
- case "overflow":
92
- return add("style", declaration.property, parseOverflow(declaration.value.x, parseOptions));
93
- case "position":
94
- const value = declaration.value.type;
95
- if (value === "absolute" || value === "relative") {
96
- return add("style", declaration.property, value);
97
- } else {
98
- parseOptions.addWarning("value", value);
99
- }
100
- return;
101
- case "top":
102
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
103
- case "bottom":
104
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
105
- case "left":
106
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
107
- case "right":
108
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
109
- case "inset-block-start":
110
- return add("style", declaration.property, parseLengthPercentageOrAuto(declaration.value, parseOptions));
111
- case "inset-block-end":
112
- return add("style", declaration.property, parseLengthPercentageOrAuto(declaration.value, parseOptions));
113
- case "inset-inline-start":
114
- return add("style", declaration.property, parseLengthPercentageOrAuto(declaration.value, parseOptions));
115
- case "inset-inline-end":
116
- return add("style", declaration.property, parseLengthPercentageOrAuto(declaration.value, parseOptions));
117
- case "inset-block":
118
- return handleStyleShorthand("inset-block", {
119
- "inset-block-start": parseLengthPercentageOrAuto(declaration.value.blockStart, parseOptions),
120
- "inset-block-end": parseLengthPercentageOrAuto(declaration.value.blockEnd, parseOptions)
121
- });
122
- case "inset-inline":
123
- return handleStyleShorthand("inset-inline", {
124
- "inset-block-start": parseLengthPercentageOrAuto(declaration.value.inlineStart, parseOptions),
125
- "inset-block-end": parseLengthPercentageOrAuto(declaration.value.inlineEnd, parseOptions)
126
- });
127
- case "inset":
128
- handleStyleShorthand("inset", {
129
- top: parseLengthPercentageOrAuto(declaration.value.top, {
130
- ...parseOptions,
131
- addWarning: buildAddWarning(addWarning, "top")
132
- }),
133
- bottom: parseLengthPercentageOrAuto(declaration.value.bottom, {
134
- ...parseOptions,
135
- addWarning: buildAddWarning(addWarning, "bottom")
136
- }),
137
- left: parseLengthPercentageOrAuto(declaration.value.left, {
138
- ...parseOptions,
139
- addWarning: buildAddWarning(addWarning, "left")
140
- }),
141
- right: parseLengthPercentageOrAuto(declaration.value.right, {
142
- ...parseOptions,
143
- addWarning: buildAddWarning(addWarning, "right")
144
- })
145
- });
146
- return;
147
- case "border-top-color":
148
- return add("style", declaration.property, parseColor(declaration.value, parseOptions));
149
- case "border-bottom-color":
150
- return add("style", declaration.property, parseColor(declaration.value, parseOptions));
151
- case "border-left-color":
152
- return add("style", declaration.property, parseColor(declaration.value, parseOptions));
153
- case "border-right-color":
154
- return add("style", declaration.property, parseColor(declaration.value, parseOptions));
155
- case "border-block-start-color":
156
- return add("style", "border-top-color", parseColor(declaration.value, parseOptions));
157
- case "border-block-end-color":
158
- return add("style", "border-bottom-color", parseColor(declaration.value, parseOptions));
159
- case "border-inline-start-color":
160
- return add("style", "border-left-color", parseColor(declaration.value, parseOptions));
161
- case "border-inline-end-color":
162
- return add("style", "border-right-color", parseColor(declaration.value, parseOptions));
163
- case "border-top-width":
164
- return add("style", declaration.property, parseBorderSideWidth(declaration.value, parseOptions));
165
- case "border-bottom-width":
166
- return add("style", declaration.property, parseBorderSideWidth(declaration.value, parseOptions));
167
- case "border-left-width":
168
- return add("style", declaration.property, parseBorderSideWidth(declaration.value, parseOptions));
169
- case "border-right-width":
170
- return add("style", declaration.property, parseBorderSideWidth(declaration.value, parseOptions));
171
- case "border-block-start-width":
172
- return add("style", "border-top-width", parseBorderSideWidth(declaration.value, parseOptions));
173
- case "border-block-end-width":
174
- return add("style", "border-bottom-width", parseBorderSideWidth(declaration.value, parseOptions));
175
- case "border-inline-start-width":
176
- return add("style", "border-left-width", parseBorderSideWidth(declaration.value, parseOptions));
177
- case "border-inline-end-width":
178
- return add("style", "border-right-width", parseBorderSideWidth(declaration.value, parseOptions));
179
- case "border-top-left-radius":
180
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
181
- case "border-top-right-radius":
182
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
183
- case "border-bottom-left-radius":
184
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
185
- case "border-bottom-right-radius":
186
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
187
- case "border-start-start-radius":
188
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
189
- case "border-start-end-radius":
190
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
191
- case "border-end-start-radius":
192
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
193
- case "border-end-end-radius":
194
- return add("style", declaration.property, parseLength(declaration.value[0], parseOptions));
195
- case "border-radius":
196
- handleStyleShorthand("border-radius", {
197
- "border-bottom-left-radius": parseLength(declaration.value.bottomLeft[0], parseOptions),
198
- "border-bottom-right-radius": parseLength(declaration.value.bottomRight[0], parseOptions),
199
- "border-top-left-radius": parseLength(declaration.value.topLeft[0], parseOptions),
200
- "border-top-right-radius": parseLength(declaration.value.topRight[0], parseOptions)
201
- });
202
- return;
203
- case "border-color":
204
- handleStyleShorthand("border-color", {
205
- "border-top-color": parseColor(declaration.value.top, {
206
- ...parseOptions,
207
- addWarning: buildAddWarning(addWarning, "border-top-color")
208
- }),
209
- "border-bottom-color": parseColor(declaration.value.bottom, {
210
- ...parseOptions,
211
- addWarning: buildAddWarning(addWarning, "border-bottom-color")
212
- }),
213
- "border-left-color": parseColor(declaration.value.left, {
214
- ...parseOptions,
215
- addWarning: buildAddWarning(addWarning, "border-left-color")
216
- }),
217
- "border-right-color": parseColor(declaration.value.right, {
218
- ...parseOptions,
219
- addWarning: buildAddWarning(addWarning, "border-right-color")
220
- })
221
- });
222
- return;
223
- case "border-style":
224
- return add("style", declaration.property, parseBorderStyle(declaration.value, parseOptions));
225
- case "border-width":
226
- handleStyleShorthand("border-width", {
227
- "border-top-width": parseBorderSideWidth(declaration.value.top, parseOptions),
228
- "border-bottom-width": parseBorderSideWidth(declaration.value.bottom, parseOptions),
229
- "border-left-width": parseBorderSideWidth(declaration.value.left, parseOptions),
230
- "border-right-width": parseBorderSideWidth(declaration.value.right, parseOptions)
231
- });
232
- return;
233
- case "border-block-color":
234
- add("style", "border-top-color", parseColor(declaration.value.start, parseOptions));
235
- add("style", "border-bottom-color", parseColor(declaration.value.end, parseOptions));
236
- return;
237
- case "border-block-width":
238
- add("style", "border-top-width", parseBorderSideWidth(declaration.value.start, parseOptions));
239
- add("style", "border-bottom-width", parseBorderSideWidth(declaration.value.end, parseOptions));
240
- return;
241
- case "border-inline-color":
242
- add("style", "border-left-color", parseColor(declaration.value.start, parseOptions));
243
- add("style", "border-right-color", parseColor(declaration.value.end, parseOptions));
244
- return;
245
- case "border-inline-width":
246
- add("style", "border-left-width", parseBorderSideWidth(declaration.value.start, parseOptions));
247
- add("style", "border-right-width", parseBorderSideWidth(declaration.value.end, parseOptions));
248
- return;
249
- case "border":
250
- handleStyleShorthand("border", {
251
- "border-width": parseBorderSideWidth(declaration.value.width, parseOptions),
252
- "border-style": parseBorderStyle(declaration.value.style, parseOptions)
253
- });
254
- return;
255
- case "border-top":
256
- add("style", declaration.property + "-color", parseColor(declaration.value.color, parseOptions));
257
- add("style", declaration.property + "-width", parseBorderSideWidth(declaration.value.width, parseOptions));
258
- return;
259
- case "border-bottom":
260
- add("style", declaration.property + "-color", parseColor(declaration.value.color, parseOptions));
261
- add("style", declaration.property + "-width", parseBorderSideWidth(declaration.value.width, parseOptions));
262
- return;
263
- case "border-left":
264
- add("style", declaration.property + "-color", parseColor(declaration.value.color, parseOptions));
265
- add("style", declaration.property + "-width", parseBorderSideWidth(declaration.value.width, parseOptions));
266
- return;
267
- case "border-right":
268
- add("style", declaration.property + "-color", parseColor(declaration.value.color, parseOptions));
269
- add("style", declaration.property + "-width", parseBorderSideWidth(declaration.value.width, parseOptions));
270
- return;
271
- case "border-block":
272
- add("style", "border-top-color", parseColor(declaration.value.color, parseOptions));
273
- add("style", "border-bottom-color", parseColor(declaration.value.color, parseOptions));
274
- add("style", "border-top-width", parseBorderSideWidth(declaration.value.width, parseOptions));
275
- add("style", "border-bottom-width", parseBorderSideWidth(declaration.value.width, parseOptions));
276
- return;
277
- case "border-block-start":
278
- add("style", "border-top-color", parseColor(declaration.value.color, parseOptions));
279
- add("style", "border-top-width", parseBorderSideWidth(declaration.value.width, parseOptions));
280
- return;
281
- case "border-block-end":
282
- add("style", "border-bottom-color", parseColor(declaration.value.color, parseOptions));
283
- add("style", "border-bottom-width", parseBorderSideWidth(declaration.value.width, parseOptions));
284
- return;
285
- case "border-inline":
286
- add("style", "border-left-color", parseColor(declaration.value.color, parseOptions));
287
- add("style", "border-right-color", parseColor(declaration.value.color, parseOptions));
288
- add("style", "border-left-width", parseBorderSideWidth(declaration.value.width, parseOptions));
289
- add("style", "border-right-width", parseBorderSideWidth(declaration.value.width, parseOptions));
290
- return;
291
- case "border-inline-start":
292
- add("style", "border-left-color", parseColor(declaration.value.color, parseOptions));
293
- add("style", "border-left-width", parseBorderSideWidth(declaration.value.width, parseOptions));
294
- return;
295
- case "border-inline-end":
296
- add("style", "border-right-color", parseColor(declaration.value.color, parseOptions));
297
- add("style", "border-right-width", parseBorderSideWidth(declaration.value.width, parseOptions));
298
- return;
299
- case "flex-direction":
300
- return add("style", declaration.property, declaration.value);
301
- case "flex-wrap":
302
- return add("style", declaration.property, declaration.value);
303
- case "flex-flow":
304
- add("style", "flexWrap", declaration.value.wrap);
305
- add("style", "flexDirection", declaration.value.direction);
306
- break;
307
- case "flex-grow":
308
- return add("style", declaration.property, declaration.value);
309
- case "flex-shrink":
310
- return add("style", declaration.property, declaration.value);
311
- case "flex-basis":
312
- return add("style", declaration.property, parseLengthPercentageOrAuto(declaration.value, parseOptions));
313
- case "flex":
314
- add("style", "flex-grow", declaration.value.grow);
315
- add("style", "flex-shrink", declaration.value.shrink);
316
- add("style", "flex-basis", parseLengthPercentageOrAuto(declaration.value.basis, parseOptions));
317
- break;
318
- case "align-content":
319
- return add("style", declaration.property, parseAlignContent(declaration.value, parseOptions));
320
- case "justify-content":
321
- return add("style", declaration.property, parseJustifyContent(declaration.value, parseOptions));
322
- case "align-self":
323
- return add("style", declaration.property, parseAlignSelf(declaration.value, parseOptions));
324
- case "align-items":
325
- return add("style", declaration.property, parseAlignItems(declaration.value, parseOptions));
326
- case "row-gap":
327
- return add("style", "row-gap", parseGap(declaration.value, parseOptions));
328
- case "column-gap":
329
- return add("style", "column-gap", parseGap(declaration.value, parseOptions));
330
- case "gap":
331
- add("style", "row-gap", parseGap(declaration.value.row, parseOptions));
332
- add("style", "column-gap", parseGap(declaration.value.column, parseOptions));
333
- return;
334
- case "margin":
335
- handleStyleShorthand("margin", {
336
- "margin-top": parseSize(declaration.value.top, parseOptions, {
337
- allowAuto: true
338
- }),
339
- "margin-bottom": parseSize(declaration.value.bottom, parseOptions, {
340
- allowAuto: true
341
- }),
342
- "margin-left": parseSize(declaration.value.left, parseOptions, {
343
- allowAuto: true
344
- }),
345
- "margin-right": parseSize(declaration.value.right, parseOptions, {
346
- allowAuto: true
347
- })
348
- });
349
- return;
350
- case "margin-top":
351
- return add("style", declaration.property, parseSize(declaration.value, parseOptions, {
352
- allowAuto: true
353
- }));
354
- case "margin-bottom":
355
- return add("style", declaration.property, parseSize(declaration.value, parseOptions, {
356
- allowAuto: true
357
- }));
358
- case "margin-left":
359
- return add("style", declaration.property, parseSize(declaration.value, parseOptions, {
360
- allowAuto: true
361
- }));
362
- case "margin-right":
363
- return add("style", declaration.property, parseSize(declaration.value, parseOptions, {
364
- allowAuto: true
365
- }));
366
- case "margin-block-start":
367
- return add("style", "margin-start", parseLengthPercentageOrAuto(declaration.value, parseOptions, {
368
- allowAuto: true
369
- }));
370
- case "margin-block-end":
371
- return add("style", "margin-end", parseLengthPercentageOrAuto(declaration.value, parseOptions, {
372
- allowAuto: true
373
- }));
374
- case "margin-inline-start":
375
- return add("style", "margin-start", parseLengthPercentageOrAuto(declaration.value, parseOptions, {
376
- allowAuto: true
377
- }));
378
- case "margin-inline-end":
379
- return add("style", "margin-end", parseLengthPercentageOrAuto(declaration.value, parseOptions, {
380
- allowAuto: true
381
- }));
382
- case "margin-block":
383
- handleStyleShorthand("margin-block", {
384
- "margin-start": parseLengthPercentageOrAuto(declaration.value.blockStart, parseOptions),
385
- "margin-end": parseLengthPercentageOrAuto(declaration.value.blockEnd, parseOptions)
386
- });
387
- return;
388
- case "margin-inline":
389
- handleStyleShorthand("margin-inline", {
390
- "margin-start": parseLengthPercentageOrAuto(declaration.value.inlineStart, parseOptions),
391
- "margin-end": parseLengthPercentageOrAuto(declaration.value.inlineEnd, parseOptions)
392
- });
393
- return;
394
- case "padding":
395
- handleStyleShorthand("padding", {
396
- "padding-top": parseSize(declaration.value.top, parseOptions),
397
- "padding-left": parseSize(declaration.value.left, parseOptions),
398
- "padding-right": parseSize(declaration.value.right, parseOptions),
399
- "padding-bottom": parseSize(declaration.value.bottom, parseOptions)
400
- });
401
- break;
402
- case "padding-top":
403
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
404
- case "padding-bottom":
405
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
406
- case "padding-left":
407
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
408
- case "padding-right":
409
- return add("style", declaration.property, parseSize(declaration.value, parseOptions));
410
- case "padding-block-start":
411
- return add("style", "padding-start", parseLengthPercentageOrAuto(declaration.value, parseOptions));
412
- case "padding-block-end":
413
- return add("style", "padding-end", parseLengthPercentageOrAuto(declaration.value, parseOptions));
414
- case "padding-inline-start":
415
- return add("style", "padding-start", parseLengthPercentageOrAuto(declaration.value, parseOptions));
416
- case "padding-inline-end":
417
- return add("style", "padding-end", parseLengthPercentageOrAuto(declaration.value, parseOptions));
418
- case "padding-block":
419
- handleStyleShorthand("padding-block", {
420
- "padding-start": parseLengthPercentageOrAuto(declaration.value.blockStart, parseOptions),
421
- "padding-end": parseLengthPercentageOrAuto(declaration.value.blockEnd, parseOptions)
422
- });
423
- return;
424
- case "padding-inline":
425
- handleStyleShorthand("padding-inline", {
426
- "padding-start": parseLengthPercentageOrAuto(declaration.value.inlineStart, parseOptions),
427
- "padding-end": parseLengthPercentageOrAuto(declaration.value.inlineEnd, parseOptions)
428
- });
429
- return;
430
- case "font-weight":
431
- return add("style", declaration.property, parseFontWeight(declaration.value, parseOptions));
432
- case "font-size":
433
- {
434
- add("style", declaration.property, parseFontSize(declaration.value, parseOptions));
435
- add("style", `--${_constants.emVariableName}`, parseFontSize(declaration.value, parseOptions));
436
- return;
437
- }
438
- case "font-family":
439
- return add("style", declaration.property, parseFontFamily(declaration.value));
440
- case "font-style":
441
- return add("style", declaration.property, parseFontStyle(declaration.value, parseOptions));
442
- case "font-variant-caps":
443
- return add("style", declaration.property, parseFontVariantCaps(declaration.value, parseOptions));
444
- case "line-height":
445
- return add("style", declaration.property, parseLineHeight(declaration.value, parseOptions));
446
- case "font":
447
- add("style", declaration.property + "-family", parseFontFamily(declaration.value.family));
448
- add("style", "line-height", parseLineHeight(declaration.value.lineHeight, parseOptions));
449
- add("style", declaration.property + "-size", parseFontSize(declaration.value.size, parseOptions));
450
- add("style", declaration.property + "-style", parseFontStyle(declaration.value.style, parseOptions));
451
- add("style", declaration.property + "-variant", parseFontVariantCaps(declaration.value.variantCaps, parseOptions));
452
- add("style", declaration.property + "-weight", parseFontWeight(declaration.value.weight, parseOptions));
453
- return;
454
- case "vertical-align":
455
- return add("style", declaration.property, parseVerticalAlign(declaration.value, parseOptions));
456
- case "transition-property":
457
- case "transition-duration":
458
- case "transition-delay":
459
- case "transition-timing-function":
460
- case "transition":
461
- return addTransitionValue(declaration, parseOptions);
462
- case "animation-duration":
463
- return add("animation", "animationDuration", declaration.value.map(t => parseTime(t)));
464
- case "animation-timing-function":
465
- case "animation-iteration-count":
466
- case "animation-name":
467
- case "animation-delay":
468
- case "animation-direction":
469
- case "animation-play-state":
470
- case "animation-fill-mode":
471
- case "animation":
472
- return addAnimationValue(declaration, parseOptions);
473
- case "transform":
474
- {
475
- add("style", "transform", [{}, "@transform", declaration.value.flatMap(t => {
476
- switch (t.type) {
477
- case "perspective":
478
- return [[{}, "@perspective", [parseLength(t.value, parseOptions)]]];
479
- case "translate":
480
- return [[{}, "@translateX", [parseLengthOrCoercePercentageToRuntime(t.value[0], parseOptions)]], [[{}, "@translateY", [parseLengthOrCoercePercentageToRuntime(t.value[1], parseOptions)]]]];
481
- case "translateX":
482
- return [[{}, "@translateX", [parseLengthOrCoercePercentageToRuntime(t.value, parseOptions)]]];
483
- case "translateY":
484
- return [[{}, "@translateY", [parseLengthOrCoercePercentageToRuntime(t.value, parseOptions)]]];
485
- case "rotate":
486
- return [[{}, "@rotate", [parseAngle(t.value, parseOptions)]]];
487
- case "rotateX":
488
- return [[{}, "@rotateX", [parseAngle(t.value, parseOptions)]]];
489
- case "rotateY":
490
- return [[{}, "@rotateY", [parseAngle(t.value, parseOptions)]]];
491
- case "rotateZ":
492
- return [[{}, "@rotateZ", [parseAngle(t.value, parseOptions)]]];
493
- case "scale":
494
- return [[{}, "@scaleX", [parseLength(t.value[0], parseOptions)]], [{}, "@scaleY", [parseLength(t.value[0], parseOptions)]]];
495
- case "scaleX":
496
- return [[{}, "scaleX", [parseLength(t.value, parseOptions)]]];
497
- case "scaleY":
498
- return [[{}, "scaleY", [parseLength(t.value, parseOptions)]]];
499
- case "skew":
500
- return [[{}, "skewX", [parseAngle(t.value[0], parseOptions)]], [{}, "skewY", [parseAngle(t.value[0], parseOptions)]]];
501
- case "skewX":
502
- return [[{}, "skewX", [parseAngle(t.value, parseOptions)]]];
503
- case "skewY":
504
- return [[{}, "skewY", [parseAngle(t.value, parseOptions)]]];
505
- case "translateZ":
506
- case "translate3d":
507
- case "scaleZ":
508
- case "scale3d":
509
- case "rotate3d":
510
- case "matrix":
511
- case "matrix3d":
512
- return [[]];
513
- }
514
- })]);
515
- return;
516
- }
517
- case "translate":
518
- add("style", "translateX", [{}, "translateX", [parseTranslate(declaration.value, "x", parseOptions)]]);
519
- add("style", "translateY", [{}, "translateX", [parseTranslate(declaration.value, "y", parseOptions)]]);
520
- return;
521
- case "rotate":
522
- add("style", "rotateX", [{}, "rotateX", [parseAngle(declaration.value.x, parseOptions)]]);
523
- add("style", "rotateY", [{}, "rotateY", [parseAngle(declaration.value.y, parseOptions)]]);
524
- add("style", "rotateZ", [{}, "rotateZ", [parseAngle(declaration.value.z, parseOptions)]]);
525
- return;
526
- case "scale":
527
- add("style", "scaleX", [{}, "scaleX", [parseScale(declaration.value, "x", parseOptions)]]);
528
- add("style", "scaleY", [{}, "scaleY", [parseScale(declaration.value, "y", parseOptions)]]);
529
- return;
530
- case "text-transform":
531
- return add("style", declaration.property, declaration.value.case);
532
- case "letter-spacing":
533
- if (declaration.value.type !== "normal") {
534
- return add("style", declaration.property, parseLength(declaration.value.value, parseOptions));
535
- }
536
- return;
537
- case "text-decoration-line":
538
- return add("style", declaration.property, parseTextDecorationLine(declaration.value, parseOptions));
539
- case "text-decoration-color":
540
- return add("style", declaration.property, parseColor(declaration.value, parseOptions));
541
- case "text-decoration":
542
- add("style", "text-decoration-color", parseColor(declaration.value.color, parseOptions));
543
- add("style", "text-decoration-line", parseTextDecorationLine(declaration.value.line, parseOptions));
544
- return;
545
- case "text-shadow":
546
- return parseTextShadow(add, declaration.value, parseOptions);
547
- case "z-index":
548
- if (declaration.value.type === "integer") {
549
- add("style", declaration.property, parseLength(declaration.value.value, parseOptions));
550
- } else {
551
- parseOptions.addWarning("value", declaration.value.type);
552
- }
553
- return;
554
- case "container-type":
555
- return;
556
- case "container-name":
557
- return add("container", declaration.property, declaration.value.type === "none" ? false : declaration.value.value);
558
- case "container":
559
- return add("container", "container-name", declaration.value.name.type === "none" ? false : declaration.value.name.value);
560
- case "text-decoration-style":
561
- return add("style", declaration.property, parseTextDecorationStyle(declaration.value, parseOptions));
562
- case "text-align":
563
- return add("style", declaration.property, parseTextAlign(declaration.value, parseOptions));
564
- case "box-shadow":
565
- {
566
- return parseBoxShadow(declaration.value, parseOptions);
567
- }
568
- case "aspect-ratio":
569
- {
570
- return add("style", declaration.property, parseAspectRatio(declaration.value));
571
- }
572
- case "user-select":
573
- {
574
- return add("style", declaration.property, parseUserSelect(declaration.value, parseOptions));
575
- }
576
- case "fill":
577
- {
578
- return add("style", declaration.property, parseSVGPaint(declaration.value, parseOptions));
579
- }
580
- case "stroke":
581
- {
582
- return add("style", declaration.property, parseSVGPaint(declaration.value, parseOptions));
583
- }
584
- case "stroke-width":
585
- {
586
- return add("style", declaration.property, parseDimensionPercentageFor_LengthValue(declaration.value, parseOptions));
587
- }
588
- case "caret-color":
589
- {
590
- return add("style", declaration.property, parseColorOrAuto(declaration.value, parseOptions));
591
- }
592
- default:
593
- {
594
- /**
595
- * This is used to know when lightningcss has added a new property and we need to add it to the
596
- * switch.
597
- *
598
- * If your build fails here, its because you have a newer version of lightningcss installed.
599
- */
600
- declaration;
601
- }
550
+ return parseLength(translate[prop], builder);
551
+ }
552
+ function parseLetterSpacing({
553
+ value
554
+ }, builder) {
555
+ if (value.type === "normal") {
556
+ return;
602
557
  }
558
+ return parseLength(value.value, builder);
603
559
  }
604
- function buildAddWarning(addWarning, property) {
605
- return function (type, value) {
606
- if (type === "property") {
607
- return addWarning(type, property);
608
- } else if (type === "value") {
609
- return addWarning(type, property, value);
610
- }
611
- };
560
+ function parseTextDecoration({
561
+ value
562
+ }, builder) {
563
+ builder.addDescriptor("text-decoration-color", parseColor(value.color, builder));
564
+ builder.addDescriptor("text-decoration-line", parseTextDecorationLine(value.line, builder));
612
565
  }
613
- function parseDeclarationUnparsed(declaration, options, add, addWarning) {
566
+ function parseZIndex({
567
+ value
568
+ }, builder) {
569
+ if (value.type === "integer") {
570
+ return parseLength(value.value, builder);
571
+ } else {
572
+ builder.addWarning("value", value.type);
573
+ return;
574
+ }
575
+ }
576
+ function parseContainerType(_value, _builder) {
577
+ return;
578
+ }
579
+ function parseContainerName({
580
+ value
581
+ }, builder) {
582
+ builder.addContainer(value.type === "none" ? false : value.value);
583
+ return;
584
+ }
585
+ function parseContainer({
586
+ value
587
+ }, builder) {
588
+ builder.addContainer(value.name.type === "none" ? false : value.name.value);
589
+ return;
590
+ }
591
+ function parseDeclarationUnparsed(declaration, builder) {
614
592
  let property = declaration.value.propertyId.property;
615
- if (!isValid(declaration.value.propertyId)) {
616
- return addWarning("property", property);
617
- }
618
- const parseOptions = {
619
- ...options,
620
- add,
621
- addWarning: buildAddWarning(addWarning, property)
622
- };
593
+ if (!(property in parsers)) {
594
+ builder.addWarning("property", property);
595
+ return;
596
+ }
623
597
 
624
598
  /**
625
599
  * React Native doesn't support all the logical properties
626
600
  */
627
- if (propertyRename[declaration.value.propertyId.property]) {
628
- property = propertyRename[declaration.value.propertyId.property];
601
+ const rename = propertyRename[property];
602
+ if (rename) {
603
+ property = rename;
629
604
  }
630
605
 
631
606
  /**
632
607
  * Unparsed shorthand properties need to be parsed at runtime
633
608
  */
634
- if (runtimeShorthands.has(property)) {
635
- let args = parseUnparsed(declaration.value.value, parseOptions);
636
- if (!(0, _styleValue.isStyleDescriptorArray)(args)) {
637
- args = [args];
638
- }
609
+ builder.descriptorProperty = property;
610
+ if (unparsedRuntimeParsing.has(property)) {
611
+ const args = parseUnparsed(declaration.value.value, builder);
639
612
  if (property === "animation") {
640
- return add("style", "animation", [{}, `@${(0, _selectors.toRNProperty)(property)}`, args]);
613
+ builder.addDescriptor("animation", [{}, `@${(0, _selectors.toRNProperty)(property)}`, args]);
641
614
  } else {
642
- return add("style", property, [{}, `@${(0, _selectors.toRNProperty)(property)}`, args, 1]);
615
+ builder.addDescriptor(property, [{}, `@${(0, _selectors.toRNProperty)(property)}`, args, 1]);
643
616
  }
644
- }
645
- return add("style", property, parseUnparsed(declaration.value.value, parseOptions));
646
- }
647
- function parseDeclarationCustom(declaration, options, add, addWarning) {
648
- const parseOptions = {
649
- ...options,
650
- add,
651
- addWarning(type, value) {
652
- if (type === "property") {
653
- return addWarning(type, property);
654
- } else if (type === "value") {
655
- return addWarning(type, property, value);
656
- }
657
- }
658
- };
659
- let property = declaration.value.name;
660
- if (validPropertiesLoose.has(property) || property.startsWith("--") || property.startsWith("-rn-")) {
661
- return add("style", property, parseUnparsed(declaration.value.value, {
662
- ...parseOptions,
663
- allowAuto: allowAuto.has(property)
664
- }));
665
617
  } else {
666
- return addWarning("property", declaration.value.name);
618
+ const value = parseUnparsed(declaration.value.value, builder);
619
+ builder.addDescriptor(property, value);
620
+ if (property === "font-size") {
621
+ builder.addDescriptor("--__rn-css-em", value);
622
+ }
623
+ if (property === "color") {
624
+ builder.addDescriptor("--__rn-css-current-color", value);
625
+ }
667
626
  }
668
627
  }
669
- function isValid(declaration) {
670
- return validPropertiesLoose.has(declaration.property);
628
+ function parseDeclarationCustom(declaration, builder) {
629
+ const property = declaration.value.name;
630
+ if (validProperties.has(property) || property.startsWith("--") || property.startsWith("-rn-")) {
631
+ builder.addDescriptor(property, parseUnparsed(declaration.value.value, builder, allowAuto.has(property)));
632
+ } else {
633
+ builder.addWarning("property", declaration.value.name);
634
+ }
671
635
  }
672
- function reduceParseUnparsed(tokenOrValues, options) {
673
- const result = tokenOrValues.map(tokenOrValue => parseUnparsed(tokenOrValue, options)).filter(v => v !== undefined);
636
+ function reduceParseUnparsed(tokenOrValues, builder) {
637
+ const result = tokenOrValues.map(tokenOrValue => parseUnparsed(tokenOrValue, builder)).filter(v => v !== undefined);
674
638
  if (result.length === 0) {
675
639
  return undefined;
676
- } else {
677
- return result;
678
640
  }
641
+ let currentGroup = [];
642
+ let groups = [currentGroup];
643
+ for (const value of result) {
644
+ if (value === CommaSeparator) {
645
+ currentGroup = [];
646
+ groups.push(currentGroup);
647
+ } else {
648
+ currentGroup.push(value);
649
+ }
650
+ }
651
+ groups = groups.flatMap(group => {
652
+ if (!Array.isArray(group)) {
653
+ return [];
654
+ }
655
+ if (group.length === 0) {
656
+ return [];
657
+ } else if (group.length === 1) {
658
+ const first = group[0];
659
+ if (first === undefined) {
660
+ return [];
661
+ } else {
662
+ return [first];
663
+ }
664
+ } else {
665
+ return [group];
666
+ }
667
+ });
668
+ return groups.length === 1 ? groups[0] : groups;
679
669
  }
680
- function unparsedFunction(token, options) {
681
- const args = reduceParseUnparsed(token.value.arguments, options);
682
- return [{}, token.value.name, args];
670
+ function unparsedFunction(token, builder) {
671
+ return [{}, token.value.name, reduceParseUnparsed(token.value.arguments, builder)];
683
672
  }
684
673
 
685
674
  /**
686
675
  * When the CSS cannot be parsed (often due to a runtime condition like a CSS variable)
687
- * This function best efforts parsing it into a function that we can evaluate at runtime
676
+ * This export function best efforts parsing it into a export function that we can evaluate at runtime
688
677
  */
689
- function parseUnparsed(tokenOrValue, options) {
678
+ function parseUnparsed(tokenOrValue, builder, allowAuto = false) {
690
679
  if (tokenOrValue === undefined || tokenOrValue === null) {
691
680
  return;
692
681
  }
@@ -695,6 +684,8 @@ function parseUnparsed(tokenOrValue, options) {
695
684
  return true;
696
685
  } else if (tokenOrValue === "false") {
697
686
  return false;
687
+ } else if (tokenOrValue === "currentcolor") {
688
+ return [{}, "var", "__rn-css-current-color"];
698
689
  } else {
699
690
  return tokenOrValue;
700
691
  }
@@ -703,22 +694,22 @@ function parseUnparsed(tokenOrValue, options) {
703
694
  return round(tokenOrValue);
704
695
  }
705
696
  if (Array.isArray(tokenOrValue)) {
706
- const args = reduceParseUnparsed(tokenOrValue, options);
697
+ const args = reduceParseUnparsed(tokenOrValue, builder);
707
698
  if (!args) return;
708
- if (args.length === 1) return args[0];
699
+ if (Array.isArray(args) && args.length === 1) return args[0];
709
700
  return args;
710
701
  }
711
702
  switch (tokenOrValue.type) {
712
703
  case "unresolved-color":
713
704
  {
714
- return parseUnresolvedColor(tokenOrValue.value, options);
705
+ return parseUnresolvedColor(tokenOrValue.value, builder);
715
706
  }
716
707
  case "var":
717
708
  {
718
- const args = [tokenOrValue.value.name.ident.slice(2)];
719
- const fallback = parseUnparsed(tokenOrValue.value.fallback, options);
709
+ let args = tokenOrValue.value.name.ident.slice(2);
710
+ const fallback = parseUnparsed(tokenOrValue.value.fallback, builder);
720
711
  if (fallback !== undefined) {
721
- args.push(fallback);
712
+ args = [args, fallback];
722
713
  }
723
714
  return [{}, "var", args, 1];
724
715
  }
@@ -737,72 +728,86 @@ function parseUnparsed(tokenOrValue, options) {
737
728
  case "translateX":
738
729
  case "translateY":
739
730
  tokenOrValue.value.name = `@${tokenOrValue.value.name}`;
740
- return unparsedFunction(tokenOrValue, options);
741
- case "platformColor":
742
- case "getPixelSizeForLayoutSize":
743
- case "roundToNearestPixel":
744
- case "pixelScale":
731
+ return unparsedFunction(tokenOrValue, builder);
732
+ case "brightness":
733
+ case "contrast":
734
+ case "cubic-bezier":
735
+ case "drop-shadow":
745
736
  case "fontScale":
746
- case "shadow":
747
- case "rgb":
748
- case "rgba":
737
+ case "grayscale":
749
738
  case "hsl":
750
739
  case "hsla":
751
- return unparsedFunction(tokenOrValue, options);
740
+ case "hue-rotate":
741
+ case "invert":
742
+ case "linear-gradient":
743
+ case "opacity":
744
+ case "pixelScale":
745
+ case "pixelSizeForLayoutSize":
746
+ case "platformColor":
747
+ case "radial-gradient":
748
+ case "rgb":
749
+ case "rgba":
750
+ case "roundToNearestPixel":
751
+ case "saturate":
752
+ case "sepia":
753
+ case "shadow":
754
+ case "steps":
755
+ return unparsedFunction(tokenOrValue, builder);
752
756
  case "hairlineWidth":
753
757
  return [{}, tokenOrValue.value.name, []];
754
- case "platformSelect":
755
- case "fontScaleSelect":
756
- case "pixelScaleSelect":
757
- return parseRNRuntimeSpecificsFunction(tokenOrValue.value.name, tokenOrValue.value.arguments, options);
758
758
  case "calc":
759
759
  case "max":
760
760
  case "min":
761
761
  case "clamp":
762
- return parseCalcFn(tokenOrValue.value.name, tokenOrValue.value.arguments, options);
762
+ return parseCalcFn(tokenOrValue.value.name, tokenOrValue.value.arguments, builder);
763
763
  default:
764
764
  {
765
- options.addWarning("function", tokenOrValue.value.name);
765
+ builder.addWarning("function", tokenOrValue.value.name);
766
766
  return;
767
767
  }
768
768
  }
769
769
  }
770
770
  case "length":
771
- return parseLength(tokenOrValue.value, options);
771
+ return parseLength(tokenOrValue.value, builder);
772
772
  case "angle":
773
- return parseAngle(tokenOrValue.value, options);
773
+ return parseAngle(tokenOrValue.value, builder);
774
774
  case "token":
775
775
  switch (tokenOrValue.value.type) {
776
776
  case "string":
777
- case "number":
778
777
  case "ident":
779
778
  {
780
779
  const value = tokenOrValue.value.value;
781
- if (typeof value === "string") {
782
- if (!options.allowAuto && value === "auto") {
783
- return options.addWarning("value", value);
784
- }
785
- if (value === "inherit") {
786
- return options.addWarning("value", value);
787
- }
788
- if (value === "true") {
789
- return true;
790
- } else if (value === "false") {
791
- return false;
792
- } else {
793
- return value;
794
- }
780
+ if (!allowAuto && value === "auto") {
781
+ builder.addWarning("value", value);
782
+ return;
783
+ }
784
+ if (value === "inherit") {
785
+ builder.addWarning("value", value);
786
+ return;
787
+ } else if (value === "currentcolor") {
788
+ return [{}, "var", "__rn-css-current-color"];
789
+ }
790
+ if (value === "true") {
791
+ return true;
792
+ } else if (value === "false") {
793
+ return false;
795
794
  } else {
796
795
  return value;
797
796
  }
798
797
  }
798
+ case "number":
799
+ {
800
+ return round(tokenOrValue.value.value);
801
+ }
799
802
  case "function":
800
- options.addWarning("value", tokenOrValue.value.value);
803
+ builder.addWarning("value", tokenOrValue.value.value);
801
804
  return;
802
805
  case "percentage":
803
806
  return `${round(tokenOrValue.value.value * 100)}%`;
804
807
  case "dimension":
805
- return parseDimension(tokenOrValue.value, options);
808
+ return parseDimension(tokenOrValue.value, builder);
809
+ case "comma":
810
+ return CommaSeparator;
806
811
  case "at-keyword":
807
812
  case "hash":
808
813
  case "id-hash":
@@ -812,7 +817,6 @@ function parseUnparsed(tokenOrValue, options) {
812
817
  case "comment":
813
818
  case "colon":
814
819
  case "semicolon":
815
- case "comma":
816
820
  case "include-match":
817
821
  case "dash-match":
818
822
  case "prefix-match":
@@ -836,9 +840,9 @@ function parseUnparsed(tokenOrValue, options) {
836
840
  }
837
841
  }
838
842
  case "color":
839
- return parseColor(tokenOrValue.value, options);
843
+ return parseColor(tokenOrValue.value, builder);
840
844
  case "env":
841
- return parseEnv(tokenOrValue.value, options);
845
+ return parseEnv(tokenOrValue.value, builder);
842
846
  case "time":
843
847
  return parseTime(tokenOrValue.value);
844
848
  case "url":
@@ -853,10 +857,13 @@ function parseUnparsed(tokenOrValue, options) {
853
857
  }
854
858
  return;
855
859
  }
856
- function parseLength(length, options) {
860
+ function parseLengthDeclaration(declaration, builder) {
861
+ return parseLength(declaration.value, builder);
862
+ }
863
+ function parseLength(length, builder) {
857
864
  const {
858
865
  inlineRem = 14
859
- } = options;
866
+ } = builder.getOptions();
860
867
  if (typeof length === "number") {
861
868
  return length;
862
869
  }
@@ -868,12 +875,12 @@ function parseLength(length, options) {
868
875
  if (typeof inlineRem === "number") {
869
876
  return length.value * inlineRem;
870
877
  } else {
871
- return [{}, "rem", [length.value]];
878
+ return [{}, "rem", length.value];
872
879
  }
873
880
  case "vw":
874
881
  case "vh":
875
882
  case "em":
876
- return [{}, length.unit, [length.value], 1];
883
+ return [{}, length.unit, length.value, 1];
877
884
  case "in":
878
885
  case "cm":
879
886
  case "mm":
@@ -918,7 +925,7 @@ function parseLength(length, options) {
918
925
  case "lvmax":
919
926
  case "dvmax":
920
927
  case "cqmax":
921
- options.addWarning("value", `${length.value}${length.unit}`);
928
+ builder.addWarning("value", `${length.value}${length.unit}`);
922
929
  return undefined;
923
930
  default:
924
931
  {
@@ -943,13 +950,13 @@ function parseLength(length, options) {
943
950
  case "dimension":
944
951
  case "value":
945
952
  {
946
- return parseLength(length.value, options);
953
+ return parseLength(length.value, builder);
947
954
  }
948
955
  }
949
956
  }
950
957
  return;
951
958
  }
952
- function parseAngle(angle, options) {
959
+ function parseAngle(angle, builder) {
953
960
  if (typeof angle === "number") {
954
961
  return `${angle}deg`;
955
962
  }
@@ -958,23 +965,47 @@ function parseAngle(angle, options) {
958
965
  case "rad":
959
966
  return `${angle.value}${angle.type}`;
960
967
  default:
961
- options.addWarning("value", angle.value);
968
+ builder.addWarning("value", angle.value);
962
969
  return undefined;
963
970
  }
964
971
  }
965
- function parseSize(size, options, {
972
+ function parseSizeDeclaration(declaration, builder) {
973
+ return parseSize(declaration.value, builder);
974
+ }
975
+ function parsePointerEvents({
976
+ value
977
+ }, builder) {
978
+ switch (value) {
979
+ case "none":
980
+ case "box-none":
981
+ case "box-only":
982
+ case "auto":
983
+ return value;
984
+ case "visible":
985
+ case "visiblePainted":
986
+ case "visibleFill":
987
+ case "visibleStroke":
988
+ case "painted":
989
+ case "fill":
990
+ case "stroke":
991
+ builder.addWarning("value", value);
992
+ }
993
+ return;
994
+ }
995
+ function parseSize(size, builder, options, {
966
996
  allowAuto = false
967
997
  } = {}) {
998
+ allowAuto = (typeof options === "object" ? options.allowAuto : allowAuto) ?? false;
968
999
  switch (size.type) {
969
1000
  case "length-percentage":
970
- return parseLength(size.value, options);
1001
+ return parseLength(size.value, builder);
971
1002
  case "none":
972
1003
  return size.type;
973
1004
  case "auto":
974
1005
  if (allowAuto) {
975
1006
  return size.type;
976
1007
  } else {
977
- options.addWarning("value", size.type);
1008
+ builder.addWarning("value", size.type);
978
1009
  return undefined;
979
1010
  }
980
1011
  case "min-content":
@@ -983,7 +1014,7 @@ function parseSize(size, options, {
983
1014
  case "fit-content-function":
984
1015
  case "stretch":
985
1016
  case "contain":
986
- options.addWarning("value", size.type);
1017
+ builder.addWarning("value", size.type);
987
1018
  return undefined;
988
1019
  default:
989
1020
  {
@@ -992,58 +1023,174 @@ function parseSize(size, options, {
992
1023
  }
993
1024
  return;
994
1025
  }
995
- function parseColorOrAuto(color, options) {
996
- if (color.type === "auto") {
997
- options.addWarning("value", `Invalid color value ${color.type}`);
1026
+ function parseColorOrAuto({
1027
+ value
1028
+ }, builder) {
1029
+ if (value.type === "auto") {
1030
+ builder.addWarning("value", `Invalid color value ${value.type}`);
998
1031
  return;
999
1032
  } else {
1000
- return parseColor(color.value, options);
1033
+ return parseColor(value.value, builder);
1001
1034
  }
1002
1035
  }
1003
- function parseColor(color, options) {
1004
- if (typeof color === "string") {
1005
- // TODO: Could web system colors be mapped to native?
1036
+ function parseFontColorDeclaration(declaration, builder) {
1037
+ parseColorDeclaration(declaration, builder);
1038
+ builder.addDescriptor("--__rn-css-color", parseColor(declaration.value, builder));
1039
+ }
1040
+ function parseColorDeclaration(declaration, builder) {
1041
+ builder.addDescriptor(declaration.property, parseColor(declaration.value, builder));
1042
+ }
1043
+ function parseColor(cssColor, builder) {
1044
+ if (typeof cssColor === "string") {
1045
+ if (namedColors.has(cssColor)) {
1046
+ return cssColor;
1047
+ }
1006
1048
  return;
1007
1049
  }
1008
- switch (color.type) {
1050
+ let color;
1051
+ const {
1052
+ hexColors = true,
1053
+ colorPrecision
1054
+ } = builder.getOptions();
1055
+ switch (cssColor.type) {
1056
+ case "currentcolor":
1057
+ return [{}, "var", "__rn-css-current-color"];
1058
+ case "light-dark":
1059
+ {
1060
+ const extraRule = {
1061
+ s: [],
1062
+ m: [["=", "prefers-color-scheme", "dark"]]
1063
+ };
1064
+ builder.addUnnamedDescriptor(parseColor(cssColor.dark, builder), false, extraRule);
1065
+ builder.addExtraRule(extraRule);
1066
+ return parseColor(cssColor.light, builder);
1067
+ }
1009
1068
  case "rgb":
1010
1069
  {
1011
- // Hex is smaller than rgb, so we convert it
1012
- const hexValues = [color.r.toString(16).padStart(2, "0"), color.g.toString(16).padStart(2, "0"), color.b.toString(16).padStart(2, "0")];
1013
- if (color.alpha !== 1) {
1014
- hexValues.push(Math.round(color.alpha * 255).toString(16).padStart(2, "0"));
1015
- }
1016
- return `#${hexValues.join("")}`;
1070
+ color = new _colorjs.default({
1071
+ space: "sRGB",
1072
+ coords: [cssColor.r / 255, cssColor.g / 255, cssColor.b / 255],
1073
+ alpha: cssColor.alpha
1074
+ });
1075
+ break;
1017
1076
  }
1018
1077
  case "hsl":
1019
- return `hsla(${color.h}, ${color.s}, ${color.l}, ${color.alpha})`;
1020
- case "currentcolor":
1021
- options.addWarning("value", color.type);
1022
- return;
1023
- case "light-dark":
1078
+ color = new _colorjs.default({
1079
+ space: cssColor.type,
1080
+ coords: [cssColor.h, cssColor.s, cssColor.l],
1081
+ alpha: cssColor.alpha
1082
+ });
1083
+ break;
1084
+ case "hwb":
1085
+ color = new _colorjs.default({
1086
+ space: cssColor.type,
1087
+ coords: [cssColor.h, cssColor.w, cssColor.b],
1088
+ alpha: cssColor.alpha
1089
+ });
1090
+ break;
1024
1091
  case "lab":
1092
+ color = new _colorjs.default({
1093
+ space: cssColor.type,
1094
+ coords: [cssColor.l, cssColor.a, cssColor.b],
1095
+ alpha: cssColor.alpha
1096
+ });
1097
+ break;
1025
1098
  case "lch":
1099
+ color = new _colorjs.default({
1100
+ space: cssColor.type,
1101
+ coords: [cssColor.l, cssColor.c, cssColor.h],
1102
+ alpha: cssColor.alpha
1103
+ });
1104
+ break;
1026
1105
  case "oklab":
1106
+ color = new _colorjs.default({
1107
+ space: cssColor.type,
1108
+ coords: [cssColor.l, cssColor.a, cssColor.b],
1109
+ alpha: cssColor.alpha
1110
+ });
1111
+ break;
1027
1112
  case "oklch":
1113
+ color = new _colorjs.default({
1114
+ space: cssColor.type,
1115
+ coords: [cssColor.l, cssColor.c, cssColor.h],
1116
+ alpha: cssColor.alpha
1117
+ });
1118
+ break;
1028
1119
  case "srgb":
1120
+ color = new _colorjs.default({
1121
+ space: cssColor.type,
1122
+ coords: [cssColor.r, cssColor.g, cssColor.b],
1123
+ alpha: cssColor.alpha
1124
+ });
1125
+ break;
1029
1126
  case "srgb-linear":
1127
+ color = new _colorjs.default({
1128
+ space: cssColor.type,
1129
+ coords: [cssColor.r, cssColor.g, cssColor.b],
1130
+ alpha: cssColor.alpha
1131
+ });
1132
+ break;
1030
1133
  case "display-p3":
1134
+ color = new _colorjs.default({
1135
+ space: "p3",
1136
+ coords: [cssColor.r, cssColor.g, cssColor.b],
1137
+ alpha: cssColor.alpha
1138
+ });
1139
+ break;
1031
1140
  case "a98-rgb":
1141
+ color = new _colorjs.default({
1142
+ space: "a98rgb",
1143
+ coords: [cssColor.r, cssColor.g, cssColor.b],
1144
+ alpha: cssColor.alpha
1145
+ });
1146
+ break;
1032
1147
  case "prophoto-rgb":
1148
+ color = new _colorjs.default({
1149
+ space: "prophoto",
1150
+ coords: [cssColor.r, cssColor.g, cssColor.b],
1151
+ alpha: cssColor.alpha
1152
+ });
1153
+ break;
1033
1154
  case "rec2020":
1155
+ color = new _colorjs.default({
1156
+ space: cssColor.type,
1157
+ coords: [cssColor.r, cssColor.g, cssColor.b],
1158
+ alpha: cssColor.alpha
1159
+ });
1160
+ break;
1034
1161
  case "xyz-d50":
1162
+ color = new _colorjs.default({
1163
+ space: cssColor.type,
1164
+ coords: [cssColor.x, cssColor.y, cssColor.z],
1165
+ alpha: cssColor.alpha
1166
+ });
1167
+ break;
1035
1168
  case "xyz-d65":
1036
- case "hwb":
1037
- options.addWarning("value", `Invalid color unit ${color.type}`);
1038
- return undefined;
1169
+ color = new _colorjs.default({
1170
+ space: cssColor.type,
1171
+ coords: [cssColor.x, cssColor.y, cssColor.z],
1172
+ alpha: cssColor.alpha
1173
+ });
1174
+ break;
1039
1175
  default:
1040
1176
  {
1041
- color;
1177
+ cssColor;
1042
1178
  }
1043
1179
  }
1044
- return;
1180
+ if (!hexColors || colorPrecision) {
1181
+ return color?.toString({
1182
+ precision: colorPrecision ?? 3
1183
+ });
1184
+ } else {
1185
+ return color?.toString({
1186
+ format: "hex"
1187
+ });
1188
+ }
1189
+ }
1190
+ function parseLengthPercentageOrAutoDeclaration(value, builder) {
1191
+ return parseLengthPercentageOrAuto(value.value, builder);
1045
1192
  }
1046
- function parseLengthPercentageOrAuto(lengthPercentageOrAuto, options, {
1193
+ function parseLengthPercentageOrAuto(lengthPercentageOrAuto, builder, {
1047
1194
  allowAuto = false
1048
1195
  } = {}) {
1049
1196
  switch (lengthPercentageOrAuto.type) {
@@ -1051,11 +1198,11 @@ function parseLengthPercentageOrAuto(lengthPercentageOrAuto, options, {
1051
1198
  if (allowAuto) {
1052
1199
  return lengthPercentageOrAuto.type;
1053
1200
  } else {
1054
- options.addWarning("value", lengthPercentageOrAuto.type);
1201
+ builder.addWarning("value", lengthPercentageOrAuto.type);
1055
1202
  return undefined;
1056
1203
  }
1057
1204
  case "length-percentage":
1058
- return parseLength(lengthPercentageOrAuto.value, options);
1205
+ return parseLength(lengthPercentageOrAuto.value, builder);
1059
1206
  default:
1060
1207
  {
1061
1208
  lengthPercentageOrAuto;
@@ -1063,109 +1210,112 @@ function parseLengthPercentageOrAuto(lengthPercentageOrAuto, options, {
1063
1210
  }
1064
1211
  return;
1065
1212
  }
1066
- function parseJustifyContent(justifyContent, options) {
1213
+ function parseJustifyContent(declaration, builder) {
1067
1214
  const allowed = new Set(["flex-start", "flex-end", "center", "space-between", "space-around", "space-evenly"]);
1068
1215
  let value;
1069
- switch (justifyContent.type) {
1216
+ switch (declaration.value.type) {
1070
1217
  case "normal":
1071
1218
  case "left":
1072
1219
  case "right":
1073
- value = justifyContent.type;
1220
+ value = declaration.value.type;
1074
1221
  break;
1075
1222
  case "content-distribution":
1076
1223
  case "content-position":
1077
- value = justifyContent.value;
1224
+ value = declaration.value.value;
1078
1225
  break;
1079
1226
  default:
1080
1227
  {
1081
- justifyContent;
1228
+ declaration.value;
1082
1229
  }
1083
1230
  }
1084
1231
  if (value && !allowed.has(value)) {
1085
- options.addWarning("value", value);
1232
+ builder.addWarning("value", value);
1086
1233
  return;
1087
1234
  }
1088
1235
  return value;
1089
1236
  }
1090
- function parseAlignContent(alignContent, options) {
1237
+ function parseAlignContent(declaration, builder) {
1091
1238
  const allowed = new Set(["flex-start", "flex-end", "center", "stretch", "space-between", "space-around"]);
1092
1239
  let value;
1093
- switch (alignContent.type) {
1240
+ switch (declaration.value.type) {
1094
1241
  case "normal":
1095
1242
  case "baseline-position":
1096
- value = alignContent.type;
1243
+ value = declaration.value.type;
1097
1244
  break;
1098
1245
  case "content-distribution":
1099
1246
  case "content-position":
1100
- value = alignContent.value;
1247
+ value = declaration.value.value;
1101
1248
  break;
1102
1249
  default:
1103
1250
  {
1104
- alignContent;
1251
+ declaration.value;
1105
1252
  }
1106
1253
  }
1107
1254
  if (value && !allowed.has(value)) {
1108
- options.addWarning("value", value);
1255
+ builder.addWarning("value", value);
1109
1256
  return;
1110
1257
  }
1111
1258
  return value;
1112
1259
  }
1113
- function parseAlignItems(alignItems, options) {
1260
+ function parseAlignItems(alignItems, builder) {
1114
1261
  const allowed = new Set(["auto", "flex-start", "flex-end", "center", "stretch", "baseline"]);
1115
1262
  let value;
1116
- switch (alignItems.type) {
1263
+ switch (alignItems.value.type) {
1117
1264
  case "normal":
1118
1265
  value = "auto";
1119
1266
  break;
1120
1267
  case "stretch":
1121
- value = alignItems.type;
1268
+ value = alignItems.value.type;
1122
1269
  break;
1123
1270
  case "baseline-position":
1124
1271
  value = "baseline";
1125
1272
  break;
1126
1273
  case "self-position":
1127
- value = alignItems.value;
1274
+ value = alignItems.value.value;
1128
1275
  break;
1129
1276
  default:
1130
1277
  {
1131
- alignItems;
1278
+ alignItems.value;
1132
1279
  }
1133
1280
  }
1134
1281
  if (value && !allowed.has(value)) {
1135
- options.addWarning("value", value);
1282
+ builder.addWarning("value", value);
1136
1283
  return;
1137
1284
  }
1138
1285
  return value;
1139
1286
  }
1140
- function parseAlignSelf(alignSelf, options) {
1287
+ function parseAlignSelf(alignSelf, builder) {
1141
1288
  const allowed = new Set(["auto", "flex-start", "flex-end", "center", "stretch", "baseline"]);
1142
1289
  let value;
1143
- switch (alignSelf.type) {
1290
+ switch (alignSelf.value.type) {
1144
1291
  case "normal":
1145
1292
  case "auto":
1146
1293
  value = "auto";
1147
1294
  break;
1148
1295
  case "stretch":
1149
- value = alignSelf.type;
1296
+ value = alignSelf.value.type;
1150
1297
  break;
1151
1298
  case "baseline-position":
1152
1299
  value = "baseline";
1153
1300
  break;
1154
1301
  case "self-position":
1155
- value = alignSelf.value;
1302
+ value = alignSelf.value.value;
1156
1303
  break;
1157
1304
  default:
1158
1305
  {
1159
- alignSelf;
1306
+ alignSelf.value;
1160
1307
  }
1161
1308
  }
1162
1309
  if (value && !allowed.has(value)) {
1163
- options.addWarning("value", value);
1310
+ builder.addWarning("value", value);
1164
1311
  return;
1165
1312
  }
1166
1313
  return value;
1167
1314
  }
1168
- function parseFontWeight(fontWeight, options) {
1315
+ function parseFontWeightDeclaration(declaration, builder) {
1316
+ return parseFontWeight(declaration.value, builder);
1317
+ }
1318
+ function parseFontWeight(fontWeight, builder) {
1169
1319
  switch (fontWeight.type) {
1170
1320
  case "absolute":
1171
1321
  if (fontWeight.value.type === "weight") {
@@ -1175,7 +1325,7 @@ function parseFontWeight(fontWeight, options) {
1175
1325
  }
1176
1326
  case "bolder":
1177
1327
  case "lighter":
1178
- options.addWarning("value", fontWeight.type);
1328
+ builder.addWarning("value", fontWeight.type);
1179
1329
  return;
1180
1330
  default:
1181
1331
  {
@@ -1184,32 +1334,36 @@ function parseFontWeight(fontWeight, options) {
1184
1334
  }
1185
1335
  return;
1186
1336
  }
1187
- function parseTextShadow(add, [textShadow], options) {
1337
+ function parseTextShadow(declaration, builder) {
1338
+ const [textShadow] = declaration.value;
1188
1339
  if (!textShadow) {
1189
1340
  return;
1190
1341
  }
1191
- add("style", "textShadowColor", parseColor(textShadow.color, options));
1192
- add("style", "textShadowOffset.width", parseLength(textShadow.xOffset, options));
1193
- add("style", "textShadowOffset.height", parseLength(textShadow.yOffset, options));
1194
- add("style", "textShadowRadius", parseLength(textShadow.blur, options));
1342
+ builder.addDescriptor("textShadowColor", parseColor(textShadow.color, builder));
1343
+ builder.addDescriptor("textShadowOffset.width", parseLength(textShadow.xOffset, builder));
1344
+ builder.addDescriptor("textShadowOffset.height", parseLength(textShadow.yOffset, builder));
1345
+ builder.addDescriptor("textShadowRadius", parseLength(textShadow.blur, builder));
1195
1346
  }
1196
- function parseTextDecorationStyle(textDecorationStyle, options) {
1347
+ function parseTextDecorationStyle(declaration, builder) {
1197
1348
  const allowed = new Set(["solid", "double", "dotted", "dashed"]);
1198
- if (allowed.has(textDecorationStyle)) {
1199
- return textDecorationStyle;
1349
+ if (allowed.has(declaration.value)) {
1350
+ return declaration.value;
1200
1351
  }
1201
- options.addWarning("value", textDecorationStyle);
1202
- return undefined;
1352
+ builder.addWarning("value", declaration.value);
1353
+ return;
1354
+ }
1355
+ function parseTextDecorationLineDeclaration(declaration, builder) {
1356
+ return parseTextDecorationLine(declaration.value, builder);
1203
1357
  }
1204
- function parseTextDecorationLine(textDecorationLine, options) {
1205
- if (!Array.isArray(textDecorationLine)) {
1206
- if (textDecorationLine === "none") {
1207
- return textDecorationLine;
1358
+ function parseTextDecorationLine(value, builder) {
1359
+ if (!Array.isArray(value)) {
1360
+ if (value === "none") {
1361
+ return value;
1208
1362
  }
1209
- options.addWarning("value", textDecorationLine);
1363
+ builder.addWarning("value", value);
1210
1364
  return;
1211
1365
  }
1212
- const set = new Set(textDecorationLine);
1366
+ const set = new Set(value);
1213
1367
  if (set.has("underline")) {
1214
1368
  if (set.has("line-through")) {
1215
1369
  return "underline line-through";
@@ -1219,70 +1373,105 @@ function parseTextDecorationLine(textDecorationLine, options) {
1219
1373
  } else if (set.has("line-through")) {
1220
1374
  return "line-through";
1221
1375
  }
1222
- options.addWarning("value", textDecorationLine.join(" "));
1376
+ builder.addWarning("value", value.join(" "));
1223
1377
  return undefined;
1224
1378
  }
1225
- function parseOverflow(overflow, options) {
1379
+ function parsePosition({
1380
+ value
1381
+ }, builder) {
1382
+ if (value.type === "absolute" || value.type === "relative") {
1383
+ return value.type;
1384
+ }
1385
+ builder.addWarning("value", value.type);
1386
+ return;
1387
+ }
1388
+ function parseOverflow({
1389
+ value
1390
+ }, builder) {
1226
1391
  const allowed = new Set(["visible", "hidden"]);
1227
- if (allowed.has(overflow)) {
1228
- return overflow;
1392
+ if (allowed.has(value.x)) {
1393
+ return value.x;
1229
1394
  }
1230
- options.addWarning("value", overflow);
1395
+ builder.addWarning("value", value.x);
1231
1396
  return undefined;
1232
1397
  }
1233
- function parseBorderStyle(borderStyle, options) {
1398
+ function parseBorderStyleDeclaration(declaration, builder) {
1399
+ return parseBorderStyle(declaration.value, builder);
1400
+ }
1401
+ function parseBorderStyle(value, builder) {
1234
1402
  const allowed = new Set(["solid", "dotted", "dashed"]);
1235
- if (typeof borderStyle === "string") {
1236
- if (allowed.has(borderStyle)) {
1237
- return borderStyle;
1403
+ if (typeof value === "string") {
1404
+ if (allowed.has(value)) {
1405
+ return value;
1238
1406
  } else {
1239
- options.addWarning("value", borderStyle);
1407
+ builder.addWarning("value", value);
1240
1408
  return undefined;
1241
1409
  }
1242
- } else if (borderStyle.top === borderStyle.bottom && borderStyle.top === borderStyle.left && borderStyle.top === borderStyle.right && allowed.has(borderStyle.top)) {
1243
- return borderStyle.top;
1410
+ } else if (value.top === value.bottom && value.top === value.left && value.top === value.right && allowed.has(value.top)) {
1411
+ return value.top;
1244
1412
  }
1245
- options.addWarning("value", borderStyle.top);
1413
+ builder.addWarning("value", value.top);
1246
1414
  return undefined;
1247
1415
  }
1248
- function parseBorderSideWidth(borderSideWidth, options) {
1249
- if (borderSideWidth.type === "length") {
1250
- return parseLength(borderSideWidth.value, options);
1416
+ function parseBorderBlockColor({
1417
+ value
1418
+ }, builder) {
1419
+ builder.addDescriptor("border-top-color", parseColor(value.start, builder));
1420
+ builder.addDescriptor("border-bottom-color", parseColor(value.end, builder));
1421
+ return;
1422
+ }
1423
+ function parseBorderBlockWidth(declaration, builder) {
1424
+ builder.addDescriptor("border-top-width", parseBorderSideWidth(declaration.value.start, builder));
1425
+ builder.addDescriptor("border-bottom-width", parseBorderSideWidth(declaration.value.end, builder));
1426
+ }
1427
+ function parseBorderSideWidthDeclaration(declaration, builder) {
1428
+ return parseBorderSideWidth(declaration.value, builder);
1429
+ }
1430
+ function parseBorderSideWidth(value, builder) {
1431
+ if (value.type === "length") {
1432
+ return parseLength(value.value, builder);
1251
1433
  }
1252
- options.addWarning("value", borderSideWidth.type);
1434
+ builder.addWarning("value", value.type);
1253
1435
  return undefined;
1254
1436
  }
1255
- function parseVerticalAlign(verticalAlign, options) {
1256
- if (verticalAlign.type === "length") {
1437
+ function parseVerticalAlign({
1438
+ value
1439
+ }, builder) {
1440
+ if (value.type === "length") {
1257
1441
  return undefined;
1258
1442
  }
1259
1443
  const allowed = new Set(["auto", "top", "bottom", "middle"]);
1260
- if (allowed.has(verticalAlign.value)) {
1261
- return verticalAlign.value;
1444
+ if (allowed.has(value.value)) {
1445
+ return value.value;
1262
1446
  }
1263
- options.addWarning("value", verticalAlign.value);
1447
+ builder.addWarning("value", value.value);
1264
1448
  return undefined;
1265
1449
  }
1266
- function parseFontFamily(fontFamily) {
1450
+ function parseFontFamily({
1451
+ value
1452
+ }) {
1267
1453
  // React Native only allows one font family - better hope this is the right one :)
1268
- return fontFamily[0];
1454
+ return value[0];
1269
1455
  }
1270
- function parseLineHeight(lineHeight, options) {
1271
- switch (lineHeight.type) {
1456
+ function parseLineHeightDeclaration(declaration, builder) {
1457
+ return parseLineHeight(declaration.value, builder);
1458
+ }
1459
+ function parseLineHeight(value, builder) {
1460
+ switch (value.type) {
1272
1461
  case "normal":
1273
1462
  return undefined;
1274
1463
  case "number":
1275
- return [{}, "em", [lineHeight.value], 1];
1464
+ return [{}, "em", [value.value], 1];
1276
1465
  case "length":
1277
1466
  {
1278
- const length = lineHeight.value;
1467
+ const length = value.value;
1279
1468
  switch (length.type) {
1280
1469
  case "dimension":
1281
- return parseLength(length, options);
1470
+ return parseLength(length, builder);
1282
1471
  case "percentage":
1283
1472
  case "calc":
1284
- options.addWarning("value", length.value);
1285
- return undefined;
1473
+ builder.addWarning("value", typeof length.value === "number" ? length.value : JSON.stringify(length.value));
1474
+ return;
1286
1475
  default:
1287
1476
  {
1288
1477
  length;
@@ -1292,218 +1481,173 @@ function parseLineHeight(lineHeight, options) {
1292
1481
  }
1293
1482
  default:
1294
1483
  {
1295
- lineHeight;
1484
+ value;
1296
1485
  }
1297
1486
  }
1298
1487
  return;
1299
1488
  }
1300
- function parseFontSize(fontSize, options) {
1301
- switch (fontSize.type) {
1489
+ function parseFontSizeDeclaration(declaration, builder) {
1490
+ const fontSize = parseFontSize(declaration.value, builder);
1491
+ builder.addDescriptor("fontSize", fontSize);
1492
+ builder.addDescriptor("--__rn-css-em", fontSize);
1493
+ }
1494
+ function parseFontSize(value, builder) {
1495
+ switch (value.type) {
1302
1496
  case "length":
1303
- return parseLength(fontSize.value, options);
1497
+ return parseLength(value.value, builder);
1304
1498
  case "absolute":
1305
1499
  case "relative":
1306
- options.addWarning("value", fontSize.value);
1500
+ builder.addWarning("value", value.value);
1307
1501
  return undefined;
1308
1502
  default:
1309
1503
  {
1310
- fontSize;
1504
+ value;
1311
1505
  }
1312
1506
  }
1313
1507
  return;
1314
1508
  }
1315
- function parseFontStyle(fontStyle, options) {
1316
- switch (fontStyle.type) {
1509
+ function parseFontStyleDeclaration(declaration, builder) {
1510
+ return parseFontStyle(declaration.value, builder);
1511
+ }
1512
+ function parseFontStyle(value, builder) {
1513
+ switch (value.type) {
1317
1514
  case "normal":
1318
1515
  case "italic":
1319
- return fontStyle.type;
1516
+ return value.type;
1320
1517
  case "oblique":
1321
- options.addWarning("value", fontStyle.type);
1518
+ builder.addWarning("value", value.type);
1322
1519
  return undefined;
1323
1520
  default:
1324
1521
  {
1325
- fontStyle;
1522
+ value;
1326
1523
  }
1327
1524
  }
1328
1525
  return;
1329
1526
  }
1330
- function parseFontVariantCaps(fontVariantCaps, options) {
1527
+ function parseFontVariantCapsDeclaration(declaration, builder) {
1528
+ return parseFontVariantCaps(declaration.value, builder);
1529
+ }
1530
+ function parseFontVariantCaps(value, builder) {
1331
1531
  const allowed = new Set(["small-caps", "oldstyle-nums", "lining-nums", "tabular-nums", "proportional-nums"]);
1332
- if (allowed.has(fontVariantCaps)) {
1333
- return fontVariantCaps;
1532
+ if (allowed.has(value)) {
1533
+ return value;
1334
1534
  }
1335
- options.addWarning("value", fontVariantCaps);
1535
+ builder.addWarning("value", value);
1336
1536
  return undefined;
1337
1537
  }
1338
- function parseLengthOrCoercePercentageToRuntime(value, options) {
1339
- return parseLength(value, options);
1538
+ function parseLengthOrCoercePercentageToRuntime(value, builder) {
1539
+ return parseLength(value, builder);
1340
1540
  }
1341
- function parseGap(value, options) {
1342
- if (value.type === "normal") {
1343
- options.addWarning("value", value.type);
1541
+ function parseGap(declaration, builder) {
1542
+ if ("column" in declaration.value) {
1543
+ builder.addDescriptor("row-gap", parseGap(declaration, builder));
1544
+ builder.addDescriptor("column-gap", parseGap(declaration, builder));
1344
1545
  return;
1345
- }
1346
- return parseLength(value.value, options);
1347
- }
1348
- function parseRNRuntimeSpecificsFunction(name, args, options) {
1349
- let key;
1350
- const runtimeArgs = {};
1351
- for (const token of args) {
1352
- if (!key) {
1353
- if (token.type === "token" && (token.value.type === "ident" || token.value.type === "number")) {
1354
- key = token.value.value.toString();
1355
- continue;
1356
- }
1357
- } else {
1358
- if (token.type !== "token") {
1359
- const value = parseUnparsed(token, options);
1360
- if (value === undefined) {
1361
- return;
1362
- }
1363
- runtimeArgs[key] = value;
1364
- key = undefined;
1365
- } else {
1366
- switch (token.value.type) {
1367
- case "string":
1368
- case "number":
1369
- case "ident":
1370
- {
1371
- if (key) {
1372
- runtimeArgs[key] = parseUnparsed(token, options);
1373
- key = undefined;
1374
- continue;
1375
- } else {
1376
- return;
1377
- }
1378
- }
1379
- case "delim":
1380
- case "comma":
1381
- continue;
1382
- case "function":
1383
- case "at-keyword":
1384
- case "hash":
1385
- case "id-hash":
1386
- case "unquoted-url":
1387
- case "percentage":
1388
- case "dimension":
1389
- case "white-space":
1390
- case "comment":
1391
- case "colon":
1392
- case "semicolon":
1393
- case "include-match":
1394
- case "dash-match":
1395
- case "prefix-match":
1396
- case "suffix-match":
1397
- case "substring-match":
1398
- case "cdo":
1399
- case "cdc":
1400
- case "parenthesis-block":
1401
- case "square-bracket-block":
1402
- case "curly-bracket-block":
1403
- case "bad-url":
1404
- case "bad-string":
1405
- case "close-parenthesis":
1406
- case "close-square-bracket":
1407
- case "close-curly-bracket":
1408
- return undefined;
1409
- }
1410
- }
1546
+ } else {
1547
+ if (declaration.value.type === "normal") {
1548
+ builder.addWarning("value", declaration.value.type);
1549
+ return;
1411
1550
  }
1551
+ return parseLength(declaration.value.value, builder);
1412
1552
  }
1413
- return [{}, name, Object.entries(runtimeArgs)];
1414
1553
  }
1415
- function parseTextAlign(textAlign, options) {
1554
+ function parseTextAlign({
1555
+ value
1556
+ }, builder) {
1416
1557
  const allowed = new Set(["auto", "left", "right", "center", "justify"]);
1417
- if (allowed.has(textAlign)) {
1418
- return textAlign;
1558
+ if (allowed.has(value)) {
1559
+ return value;
1419
1560
  }
1420
- options.addWarning("value", textAlign);
1561
+ builder.addWarning("value", value);
1421
1562
  return undefined;
1422
1563
  }
1423
- function parseBoxShadow(boxShadows, options) {
1424
- if (boxShadows.length > 1) {
1425
- options.addWarning("value", "multiple box shadows");
1426
- return;
1427
- }
1428
- const boxShadow = boxShadows[0];
1429
- if (!boxShadow) {
1430
- return;
1564
+ function parseBoxShadow({
1565
+ value
1566
+ }, builder) {
1567
+ for (const [index, shadow] of value.entries()) {
1568
+ builder.addDescriptor(`boxShadow.[${index}].color`, parseColor(shadow.color, builder));
1569
+ builder.addDescriptor(`boxShadow.[${index}].offsetX`, parseLength(shadow.xOffset, builder));
1570
+ builder.addDescriptor(`boxShadow.[${index}].offsetY`, parseLength(shadow.yOffset, builder));
1571
+ builder.addDescriptor(`boxShadow.[${index}].blurRadius`, parseLength(shadow.blur, builder));
1572
+ builder.addDescriptor(`boxShadow.[${index}].spreadDistance`, parseLength(shadow.spread, builder));
1573
+ builder.addDescriptor(`boxShadow.[${index}].inset`, shadow.inset ? true : undefined);
1431
1574
  }
1432
- options.add("style", "shadowColor", parseColor(boxShadow.color, options));
1433
- options.add("style", "shadowRadius", parseLength(boxShadow.spread, options));
1434
- // options.add("style",
1435
- // ["shadowOffsetWidth"],
1436
- // parseLength(boxShadow.xOffset, options, ["", ""),
1437
- // );
1438
- // options.add("style",
1439
- // ["shadowOffset", "height"],
1440
- // parseLength(boxShadow.yOffset, options),
1441
- // );
1442
- }
1443
- function parseDisplay(display, options) {
1444
- if (display.type === "keyword") {
1445
- if (display.value === "none") {
1446
- return display.value;
1575
+ }
1576
+ function parseDisplay({
1577
+ value
1578
+ }, builder) {
1579
+ if (value.type === "keyword") {
1580
+ if (value.value === "none") {
1581
+ return value.value;
1447
1582
  } else {
1448
- return options.addWarning("value", display.value);
1583
+ builder.addWarning("value", value.value);
1584
+ return;
1449
1585
  }
1450
- } else if (display.type === "pair") {
1451
- if (display.outside === "block") {
1452
- switch (display.inside.type) {
1586
+ } else {
1587
+ if (value.outside === "block") {
1588
+ switch (value.inside.type) {
1453
1589
  case "flow":
1454
- if (display.isListItem) {
1455
- return options.addWarning("value", "list-item");
1590
+ if (value.isListItem) {
1591
+ builder.addWarning("value", "list-item");
1456
1592
  } else {
1457
- return options.addWarning("value", "block");
1593
+ builder.addWarning("value", "block");
1458
1594
  }
1595
+ return;
1596
+ case "flex":
1597
+ return value.inside.type;
1459
1598
  case "flow-root":
1460
- return options.addWarning("value", "flow-root");
1461
1599
  case "table":
1462
- return options.addWarning("value", display.inside.type);
1463
- case "flex":
1464
- return display.inside.type;
1465
1600
  case "box":
1466
1601
  case "grid":
1467
1602
  case "ruby":
1468
- return options.addWarning("value", display.inside.type);
1603
+ builder.addWarning("value", value.inside.type);
1604
+ return;
1469
1605
  }
1470
1606
  } else {
1471
- switch (display.inside.type) {
1607
+ switch (value.inside.type) {
1472
1608
  case "flow":
1473
- return options.addWarning("value", "inline");
1609
+ builder.addWarning("value", "inline");
1610
+ return;
1474
1611
  case "flow-root":
1475
- return options.addWarning("value", "inline-block");
1612
+ builder.addWarning("value", "inline-block");
1613
+ return;
1476
1614
  case "table":
1477
- return options.addWarning("value", "inline-table");
1615
+ builder.addWarning("value", "inline-table");
1616
+ return;
1478
1617
  case "flex":
1479
- return options.addWarning("value", "inline-flex");
1618
+ builder.addWarning("value", "inline-flex");
1619
+ return;
1480
1620
  case "box":
1481
1621
  case "grid":
1482
- return options.addWarning("value", "inline-grid");
1622
+ builder.addWarning("value", "inline-grid");
1623
+ return;
1483
1624
  case "ruby":
1484
- return options.addWarning("value", display.inside.type);
1625
+ builder.addWarning("value", value.inside.type);
1626
+ return;
1485
1627
  }
1486
1628
  }
1487
1629
  }
1488
- return;
1489
1630
  }
1490
- function parseAspectRatio(
1491
- // This is missing types
1492
- aspectRatio) {
1493
- if (aspectRatio.auto) {
1631
+ function parseAspectRatio({
1632
+ value
1633
+ }) {
1634
+ if (!value.ratio) {
1635
+ return;
1636
+ } else if (value.auto) {
1494
1637
  return "auto";
1495
1638
  } else {
1496
- if (aspectRatio.ratio[0] === aspectRatio.ratio[1]) {
1639
+ const [width, height] = value.ratio;
1640
+ if (width === height) {
1497
1641
  return 1;
1498
1642
  } else {
1499
- return aspectRatio.ratio.join(" / ");
1643
+ return `${width}/${height}`;
1500
1644
  }
1501
1645
  }
1502
1646
  }
1503
1647
  function parseDimension({
1504
1648
  unit,
1505
1649
  value
1506
- }, options) {
1650
+ }, builder) {
1507
1651
  switch (unit) {
1508
1652
  case "px":
1509
1653
  return value;
@@ -1514,40 +1658,46 @@ function parseDimension({
1514
1658
  return [{}, unit, [value / 100], 1];
1515
1659
  default:
1516
1660
  {
1517
- return options.addWarning("value", `${value}${unit}`);
1661
+ builder.addWarning("value", `${value}${unit}`);
1662
+ return;
1518
1663
  }
1519
1664
  }
1520
1665
  }
1521
- function parseUserSelect(value, options) {
1666
+ function parseUserSelect({
1667
+ value
1668
+ }, builder) {
1522
1669
  const allowed = ["auto", "text", "none", "contain", "all"];
1523
1670
  if (allowed.includes(value)) {
1524
1671
  return value;
1525
1672
  } else {
1526
- return options.addWarning("value", value);
1673
+ builder.addWarning("value", value);
1674
+ return;
1527
1675
  }
1528
1676
  }
1529
- function parseSVGPaint(value, options) {
1677
+ function parseSVGPaint({
1678
+ value
1679
+ }, builder) {
1530
1680
  if (value.type === "none") {
1531
1681
  return "transparent";
1532
1682
  } else if (value.type === "color") {
1533
- return parseColor(value.value, options);
1683
+ return parseColor(value.value, builder);
1534
1684
  }
1535
1685
  return;
1536
1686
  }
1537
1687
  function round(number) {
1538
1688
  return Math.round((number + Number.EPSILON) * 100) / 100;
1539
1689
  }
1540
- function parseDimensionPercentageFor_LengthValue(value, options) {
1690
+ function parseDimensionPercentageFor_LengthValue(value, builder) {
1541
1691
  if (value.type === "calc") {
1542
1692
  return undefined;
1543
1693
  } else if (value.type === "percentage") {
1544
1694
  return `${value.value}%`;
1545
1695
  } else {
1546
- return parseLength(value.value, options);
1696
+ return parseLength(value.value, builder);
1547
1697
  }
1548
1698
  }
1549
1699
  const allowAuto = new Set(["pointer-events"]);
1550
- function parseEnv(value, options) {
1700
+ function parseEnv(value, builder) {
1551
1701
  switch (value.name.type) {
1552
1702
  case "ua":
1553
1703
  switch (value.name.value) {
@@ -1555,7 +1705,7 @@ function parseEnv(value, options) {
1555
1705
  case "safe-area-inset-right":
1556
1706
  case "safe-area-inset-bottom":
1557
1707
  case "safe-area-inset-left":
1558
- return [{}, "var", [`--react-native-css-${value.name.value}`, parseUnparsed(value.fallback, options)], 1];
1708
+ return [{}, "var", [`--react-native-css-${value.name.value}`, parseUnparsed(value.fallback, builder)], 1];
1559
1709
  case "viewport-segment-width":
1560
1710
  case "viewport-segment-height":
1561
1711
  case "viewport-segment-top":
@@ -1569,28 +1719,28 @@ function parseEnv(value, options) {
1569
1719
  }
1570
1720
  return;
1571
1721
  }
1572
- function parseCalcFn(name, tokens, options) {
1573
- const args = parseCalcArguments(tokens, options);
1722
+ function parseCalcFn(name, tokens, builder) {
1723
+ const args = parseCalcArguments(tokens, builder);
1574
1724
  if (args) {
1575
1725
  return [{}, name, args];
1576
1726
  }
1577
1727
  return;
1578
1728
  }
1579
- function parseCalcArguments([...args], options) {
1729
+ function parseCalcArguments([...args], builder) {
1580
1730
  const parsed = [];
1581
1731
  let mode;
1582
1732
  for (const [currentIndex, arg] of args.entries()) {
1583
1733
  switch (arg.type) {
1584
1734
  case "env":
1585
1735
  {
1586
- parsed.push(parseEnv(arg.value, options));
1736
+ parsed.push(parseEnv(arg.value, builder));
1587
1737
  break;
1588
1738
  }
1589
1739
  case "var":
1590
1740
  case "function":
1591
1741
  case "unresolved-color":
1592
1742
  {
1593
- const value = parseUnparsed(arg, options);
1743
+ const value = parseUnparsed(arg, builder);
1594
1744
  if (value === undefined) {
1595
1745
  return undefined;
1596
1746
  }
@@ -1599,7 +1749,7 @@ function parseCalcArguments([...args], options) {
1599
1749
  }
1600
1750
  case "length":
1601
1751
  {
1602
- const value = parseLength(arg.value, options);
1752
+ const value = parseLength(arg.value, builder);
1603
1753
  if (value !== undefined) {
1604
1754
  parsed.push(value);
1605
1755
  }
@@ -1625,13 +1775,13 @@ function parseCalcArguments([...args], options) {
1625
1775
  }
1626
1776
  break;
1627
1777
  case "percentage":
1628
- if (!mode) mode = "percentage";
1778
+ mode ??= "percentage";
1629
1779
  if (mode !== "percentage") return;
1630
1780
  parsed.push(`${arg.value.value * 100}%`);
1631
1781
  break;
1632
1782
  case "number":
1633
1783
  {
1634
- if (!mode) mode = "number";
1784
+ mode ??= "number";
1635
1785
  if (mode !== "number") return;
1636
1786
  parsed.push(arg.value.value);
1637
1787
  break;
@@ -1644,6 +1794,7 @@ function parseCalcArguments([...args], options) {
1644
1794
  */
1645
1795
  let closeParenthesisIndex = -1;
1646
1796
  for (let index = args.length - 1; index > 0; index--) {
1797
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1647
1798
  const value = args[index];
1648
1799
  if (value.type === "token" && value.value.type === "close-parenthesis") {
1649
1800
  closeParenthesisIndex = index;
@@ -1658,7 +1809,7 @@ function parseCalcArguments([...args], options) {
1658
1809
  .splice(currentIndex, closeParenthesisIndex - currentIndex + 1)
1659
1810
  // Then drop the surrounding parenthesis
1660
1811
  .slice(1, -1);
1661
- parsed.push(parseCalcFn("calc", innerCalcArgs, options));
1812
+ parsed.push(parseCalcFn("calc", innerCalcArgs, builder));
1662
1813
  break;
1663
1814
  }
1664
1815
  case "close-parenthesis":
@@ -1693,26 +1844,27 @@ function parseCalcArguments([...args], options) {
1693
1844
  }
1694
1845
  return parsed;
1695
1846
  }
1696
- function parseTranslate(translate, prop, options) {
1697
- if (translate === "none") {
1847
+ function parseTranslateProp(value, prop, builder) {
1848
+ if (value === "none") {
1698
1849
  return 0;
1699
1850
  }
1700
- return parseLength(translate[prop], options);
1851
+ return parseLength(value[prop], builder);
1701
1852
  }
1702
- function parseScale(translate, prop, options) {
1703
- if (translate === "none") {
1704
- return 0;
1705
- }
1706
- return parseLength(translate[prop], options);
1707
- }
1708
- function parseUnresolvedColor(color, options) {
1853
+ function parseUnresolvedColor(color, builder) {
1709
1854
  switch (color.type) {
1710
1855
  case "rgb":
1711
- return [{}, "rgba", [round(color.r * 255), round(color.g * 255), round(color.b * 255), parseUnparsed(color.alpha, options)]];
1856
+ return [{}, "rgba", [round(color.r * 255), round(color.g * 255), round(color.b * 255), parseUnparsed(color.alpha, builder)]];
1712
1857
  case "hsl":
1713
- return [{}, color.type, [color.h, color.s, color.l, parseUnparsed(color.alpha, options)]];
1858
+ return [{}, color.type, [color.h, color.s, color.l, parseUnparsed(color.alpha, builder)]];
1714
1859
  case "light-dark":
1715
- return undefined;
1860
+ {
1861
+ const extraRule = builder.extendRule({
1862
+ m: [["=", "prefers-color-scheme", "dark"]]
1863
+ });
1864
+ builder.addUnnamedDescriptor(reduceParseUnparsed(color.dark, builder), false, extraRule);
1865
+ builder.addExtraRule(extraRule);
1866
+ return reduceParseUnparsed(color.light, builder);
1867
+ }
1716
1868
  default:
1717
1869
  color;
1718
1870
  }
@@ -1746,36 +1898,48 @@ function equal(a, b) {
1746
1898
  function parseTime(time) {
1747
1899
  return time.type === "milliseconds" ? time.value : time.value * 1000;
1748
1900
  }
1749
- function addTransitionValue(declaration, options) {
1901
+ function parseSize2DDimensionPercentageDeclaration(declaration, builder) {
1902
+ return parseSize2DDimensionPercentage(declaration.value, builder);
1903
+ }
1904
+ function parseSize2DDimensionPercentage(value, builder) {
1905
+ return parseLength(value[0], builder);
1906
+ }
1907
+ function addTransitionValue(declaration, builder) {
1750
1908
  switch (declaration.property) {
1751
1909
  case "transition":
1752
- const grouped = {};
1753
- for (const animation of declaration.value) {
1754
- for (const [key, value] of Object.entries(animation)) {
1755
- grouped[key] ??= [];
1756
- grouped[key].push(value);
1910
+ {
1911
+ const grouped = {};
1912
+ for (const animation of declaration.value) {
1913
+ for (const [key, value] of Object.entries(animation)) {
1914
+ grouped[key] ??= [];
1915
+ grouped[key].push(value);
1916
+ }
1757
1917
  }
1918
+ for (const [property, value] of Object.entries(grouped)) {
1919
+ addTransitionValue({
1920
+ property: `transition-${kebabCase(property)}`,
1921
+ value
1922
+ }, builder);
1923
+ }
1924
+ break;
1758
1925
  }
1759
- for (const [property, value] of Object.entries(grouped)) {
1760
- addTransitionValue({
1761
- property: `transition-${kebabCase(property)}`,
1762
- value
1763
- }, options);
1764
- }
1765
- break;
1766
1926
  case "transition-property":
1767
1927
  {
1768
- return options.add("transition", declaration.property, declaration.value.map(v => v.property));
1928
+ builder.addDescriptor(declaration.property, declaration.value.map(v => v.property).filter(v => v in parsers || v === "all" || v === "none").map(v => (0, _selectors.toRNProperty)(v)));
1929
+ return;
1769
1930
  }
1770
1931
  case "transition-duration":
1771
- return options.add("transition", declaration.property, declaration.value.map(t => parseTime(t)));
1932
+ builder.addDescriptor(declaration.property, declaration.value.map(t => parseTime(t)));
1933
+ return;
1772
1934
  case "transition-delay":
1773
- return options.add("transition", declaration.property, declaration.value.map(t => parseTime(t)));
1935
+ builder.addDescriptor(declaration.property, declaration.value.map(t => parseTime(t)));
1936
+ return;
1774
1937
  case "transition-timing-function":
1775
- return options.add("transition", declaration.property, (0, _keyframes.parseEasingFunction)(declaration.value));
1938
+ builder.addDescriptor(declaration.property, (0, _keyframes.parseEasingFunction)(declaration.value));
1939
+ return;
1776
1940
  }
1777
1941
  }
1778
- function addAnimationValue(declaration, options) {
1942
+ function addAnimationValue(declaration, builder) {
1779
1943
  switch (declaration.property) {
1780
1944
  case "animation":
1781
1945
  {
@@ -1790,48 +1954,48 @@ function addAnimationValue(declaration, options) {
1790
1954
  addAnimationValue({
1791
1955
  property: `animation-${kebabCase(property)}`,
1792
1956
  value
1793
- }, options);
1957
+ }, builder);
1794
1958
  }
1795
1959
  break;
1796
1960
  }
1797
1961
  case "animation-delay":
1798
1962
  {
1799
- options.add("animation", declaration.property, declaration.value.map(t => parseTime(t)));
1963
+ builder.addDescriptor(declaration.property, declaration.value.map(t => parseTime(t)));
1800
1964
  break;
1801
1965
  }
1802
1966
  case "animation-direction":
1803
1967
  {
1804
- options.add("animation", declaration.property, declaration.value);
1968
+ builder.addDescriptor(declaration.property, declaration.value);
1805
1969
  break;
1806
1970
  }
1807
1971
  case "animation-duration":
1808
1972
  {
1809
- options.add("animation", declaration.property, declaration.value.map(t => parseTime(t)));
1973
+ builder.addDescriptor(declaration.property, declaration.value.map(t => parseTime(t)));
1810
1974
  break;
1811
1975
  }
1812
1976
  case "animation-fill-mode":
1813
1977
  {
1814
- options.add("animation", declaration.property, declaration.value);
1978
+ builder.addDescriptor(declaration.property, declaration.value);
1815
1979
  break;
1816
1980
  }
1817
1981
  case "animation-iteration-count":
1818
1982
  {
1819
- options.add("animation", declaration.property, (0, _keyframes.parseIterationCount)(declaration.value));
1983
+ builder.addDescriptor(declaration.property, (0, _keyframes.parseIterationCount)(declaration.value));
1820
1984
  break;
1821
1985
  }
1822
1986
  case "animation-name":
1823
1987
  {
1824
- options.add("animation", declaration.property, declaration.value.map(v => v.type === "none" ? "none" : [{}, "animationName", [v.value], 1]));
1988
+ builder.addDescriptor(declaration.property, declaration.value.map(v => v.type === "none" ? "none" : [{}, "animationName", [v.value], 1]));
1825
1989
  break;
1826
1990
  }
1827
1991
  case "animation-play-state":
1828
1992
  {
1829
- options.add("animation", declaration.property, declaration.value);
1993
+ builder.addDescriptor(declaration.property, declaration.value);
1830
1994
  break;
1831
1995
  }
1832
1996
  case "animation-timing-function":
1833
1997
  {
1834
- options.add("animation", declaration.property, (0, _keyframes.parseEasingFunction)(declaration.value));
1998
+ builder.addDescriptor(declaration.property, (0, _keyframes.parseEasingFunction)(declaration.value));
1835
1999
  break;
1836
2000
  }
1837
2001
  }
@@ -1839,5 +2003,86 @@ function addAnimationValue(declaration, options) {
1839
2003
  function kebabCase(str) {
1840
2004
  return str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? "-" : "") + $.toLowerCase());
1841
2005
  }
1842
- const runtimeShorthands = new Set(["animation", "text-shadow", "transform"]);
2006
+ function parseBackgroundImage(declaration, builder) {
2007
+ builder.addDescriptor("experimental_backgroundImage", declaration.value.flatMap(image => {
2008
+ switch (image.type) {
2009
+ case "gradient":
2010
+ {
2011
+ const gradient = parseGradient(image.value, builder);
2012
+ return gradient ? [gradient] : [];
2013
+ }
2014
+ case "none":
2015
+ return ["none"];
2016
+ }
2017
+ return [];
2018
+ }));
2019
+ return;
2020
+ }
2021
+ function parseGradient(gradient, builder) {
2022
+ switch (gradient.type) {
2023
+ case "linear":
2024
+ {
2025
+ return [{}, "@linear-gradient", [parseLineDirection(gradient.direction, builder), ...gradient.items.map(item => parseGradientItem(item, builder))]];
2026
+ }
2027
+ }
2028
+ return;
2029
+ }
2030
+ function parseLineDirection(lineDirection, builder) {
2031
+ switch (lineDirection.type) {
2032
+ case "corner":
2033
+ return `to ${lineDirection.horizontal} ${lineDirection.vertical}`;
2034
+ case "horizontal":
2035
+ case "vertical":
2036
+ return `to ${lineDirection.value}`;
2037
+ case "angle":
2038
+ return parseAngle(lineDirection.value, builder);
2039
+ default:
2040
+ {
2041
+ lineDirection;
2042
+ }
2043
+ }
2044
+ return;
2045
+ }
2046
+ function parseGradientItem(item, builder) {
2047
+ switch (item.type) {
2048
+ case "color-stop":
2049
+ {
2050
+ const args = [parseColor(item.color, builder)];
2051
+ if (item.position) {
2052
+ args.push(parseLength(item.position, builder));
2053
+ }
2054
+ return [{}, "@colorStop", args, 1];
2055
+ }
2056
+ case "hint":
2057
+ return parseLength(item.value, builder);
2058
+ }
2059
+ }
2060
+ function parseFilter(declaration, builder) {
2061
+ if (declaration.value.type === "none") {
2062
+ return "unset";
2063
+ }
2064
+ return declaration.value.value.map(value => {
2065
+ switch (value.type) {
2066
+ case "opacity":
2067
+ case "blur":
2068
+ case "brightness":
2069
+ case "contrast":
2070
+ case "grayscale":
2071
+ case "invert":
2072
+ case "saturate":
2073
+ case "sepia":
2074
+ return {
2075
+ [value.type]: parseLength(value.value, builder)
2076
+ };
2077
+ case "hue-rotate":
2078
+ return {
2079
+ [value.type]: parseAngle(value.value, builder)
2080
+ };
2081
+ case "drop-shadow":
2082
+ case "url":
2083
+ return;
2084
+ }
2085
+ }).filter(value => value !== undefined);
2086
+ }
2087
+ const namedColors = new Set(["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "grey", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"]);
1843
2088
  //# sourceMappingURL=declarations.js.map