rnwind 0.0.1 → 0.0.2

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 (330) hide show
  1. package/lib/cjs/core/parser/animation.cjs +427 -0
  2. package/lib/cjs/core/parser/animation.cjs.map +1 -0
  3. package/lib/cjs/core/parser/animation.d.ts +126 -0
  4. package/lib/cjs/core/parser/border-dispatcher.cjs +180 -0
  5. package/lib/cjs/core/parser/border-dispatcher.cjs.map +1 -0
  6. package/lib/cjs/core/parser/border-dispatcher.d.ts +15 -0
  7. package/lib/cjs/core/parser/case-convert.cjs +15 -0
  8. package/lib/cjs/core/parser/case-convert.cjs.map +1 -0
  9. package/lib/cjs/core/parser/case-convert.d.ts +6 -0
  10. package/lib/cjs/core/parser/color-properties-dispatcher.cjs +84 -0
  11. package/lib/cjs/core/parser/color-properties-dispatcher.cjs.map +1 -0
  12. package/lib/cjs/core/parser/color-properties-dispatcher.d.ts +19 -0
  13. package/lib/cjs/core/parser/color.cjs +164 -0
  14. package/lib/cjs/core/parser/color.cjs.map +1 -0
  15. package/lib/cjs/core/parser/color.d.ts +12 -0
  16. package/lib/cjs/core/parser/constants.cjs +21 -0
  17. package/lib/cjs/core/parser/constants.cjs.map +1 -0
  18. package/lib/cjs/core/parser/constants.d.ts +8 -0
  19. package/lib/cjs/core/parser/declaration.cjs +347 -0
  20. package/lib/cjs/core/parser/declaration.cjs.map +1 -0
  21. package/lib/cjs/core/parser/declaration.d.ts +15 -0
  22. package/lib/cjs/core/parser/gradient.cjs +132 -0
  23. package/lib/cjs/core/parser/gradient.cjs.map +1 -0
  24. package/lib/cjs/core/parser/gradient.d.ts +59 -0
  25. package/lib/cjs/core/parser/haptics.cjs +73 -0
  26. package/lib/cjs/core/parser/haptics.cjs.map +1 -0
  27. package/lib/cjs/core/parser/haptics.d.ts +47 -0
  28. package/lib/cjs/core/parser/index.d.ts +8 -0
  29. package/lib/cjs/core/parser/keyframes.cjs +95 -0
  30. package/lib/cjs/core/parser/keyframes.cjs.map +1 -0
  31. package/lib/cjs/core/parser/keyframes.d.ts +26 -0
  32. package/lib/cjs/core/parser/layout-dispatcher.cjs +100 -0
  33. package/lib/cjs/core/parser/layout-dispatcher.cjs.map +1 -0
  34. package/lib/cjs/core/parser/layout-dispatcher.d.ts +14 -0
  35. package/lib/cjs/core/parser/length.cjs +96 -0
  36. package/lib/cjs/core/parser/length.cjs.map +1 -0
  37. package/lib/cjs/core/parser/length.d.ts +48 -0
  38. package/lib/cjs/core/parser/motion-dispatcher.cjs +77 -0
  39. package/lib/cjs/core/parser/motion-dispatcher.cjs.map +1 -0
  40. package/lib/cjs/core/parser/motion-dispatcher.d.ts +11 -0
  41. package/lib/cjs/core/parser/property.cjs +22 -0
  42. package/lib/cjs/core/parser/property.cjs.map +1 -0
  43. package/lib/cjs/core/parser/property.d.ts +8 -0
  44. package/lib/cjs/core/parser/safe-area.cjs +404 -0
  45. package/lib/cjs/core/parser/safe-area.cjs.map +1 -0
  46. package/lib/cjs/core/parser/safe-area.d.ts +39 -0
  47. package/lib/cjs/core/parser/selector.cjs +22 -0
  48. package/lib/cjs/core/parser/selector.cjs.map +1 -0
  49. package/lib/cjs/core/parser/selector.d.ts +11 -0
  50. package/lib/cjs/core/parser/shorthand.cjs +156 -0
  51. package/lib/cjs/core/parser/shorthand.cjs.map +1 -0
  52. package/lib/cjs/core/parser/shorthand.d.ts +61 -0
  53. package/lib/cjs/core/parser/text-truncate.cjs +78 -0
  54. package/lib/cjs/core/parser/text-truncate.cjs.map +1 -0
  55. package/lib/cjs/core/parser/text-truncate.d.ts +44 -0
  56. package/lib/cjs/core/parser/theme-vars.cjs +414 -0
  57. package/lib/cjs/core/parser/theme-vars.cjs.map +1 -0
  58. package/lib/cjs/core/parser/theme-vars.d.ts +61 -0
  59. package/lib/cjs/core/parser/tokens.cjs +304 -0
  60. package/lib/cjs/core/parser/tokens.cjs.map +1 -0
  61. package/lib/cjs/core/parser/tokens.d.ts +45 -0
  62. package/lib/cjs/core/parser/transform.cjs +198 -0
  63. package/lib/cjs/core/parser/transform.cjs.map +1 -0
  64. package/lib/cjs/core/parser/transform.d.ts +36 -0
  65. package/lib/cjs/core/parser/tw-parser.cjs +1567 -0
  66. package/lib/cjs/core/parser/tw-parser.cjs.map +1 -0
  67. package/lib/cjs/core/parser/tw-parser.d.ts +194 -0
  68. package/lib/cjs/core/parser/types.d.ts +37 -0
  69. package/lib/cjs/core/parser/typography-dispatcher.cjs +93 -0
  70. package/lib/cjs/core/parser/typography-dispatcher.cjs.map +1 -0
  71. package/lib/cjs/core/parser/typography-dispatcher.d.ts +11 -0
  72. package/lib/cjs/core/parser/typography.cjs +97 -0
  73. package/lib/cjs/core/parser/typography.cjs.map +1 -0
  74. package/lib/cjs/core/parser/typography.d.ts +43 -0
  75. package/lib/cjs/core/style-builder/build-style.cjs +397 -0
  76. package/lib/cjs/core/style-builder/build-style.cjs.map +1 -0
  77. package/lib/cjs/core/style-builder/build-style.d.ts +54 -0
  78. package/lib/cjs/core/style-builder/index.d.ts +3 -0
  79. package/lib/cjs/core/style-builder/union-builder.cjs +326 -0
  80. package/lib/cjs/core/style-builder/union-builder.cjs.map +1 -0
  81. package/lib/cjs/core/style-builder/union-builder.d.ts +128 -0
  82. package/lib/cjs/core/types.d.ts +14 -0
  83. package/lib/cjs/metro/dts.cjs +127 -0
  84. package/lib/cjs/metro/dts.cjs.map +1 -0
  85. package/lib/cjs/metro/dts.d.ts +16 -0
  86. package/lib/cjs/metro/index.cjs +19 -0
  87. package/lib/cjs/metro/index.cjs.map +1 -0
  88. package/lib/cjs/metro/index.d.ts +9 -0
  89. package/lib/cjs/metro/resolver.cjs +47 -0
  90. package/lib/cjs/metro/resolver.cjs.map +1 -0
  91. package/lib/cjs/metro/resolver.d.ts +22 -0
  92. package/lib/cjs/metro/state.cjs +251 -0
  93. package/lib/cjs/metro/state.cjs.map +1 -0
  94. package/lib/cjs/metro/state.d.ts +72 -0
  95. package/lib/cjs/metro/transform-ast.cjs +1255 -0
  96. package/lib/cjs/metro/transform-ast.cjs.map +1 -0
  97. package/lib/cjs/metro/transform-ast.d.ts +73 -0
  98. package/lib/cjs/metro/transformer.cjs +345 -0
  99. package/lib/cjs/metro/transformer.cjs.map +1 -0
  100. package/lib/cjs/metro/transformer.d.ts +47 -0
  101. package/lib/cjs/metro/warn-unknown-classes.cjs +86 -0
  102. package/lib/cjs/metro/warn-unknown-classes.cjs.map +1 -0
  103. package/lib/cjs/metro/warn-unknown-classes.d.ts +21 -0
  104. package/lib/cjs/metro/with-config.cjs +196 -0
  105. package/lib/cjs/metro/with-config.cjs.map +1 -0
  106. package/lib/cjs/metro/with-config.d.ts +57 -0
  107. package/lib/cjs/runtime/chain-handlers.cjs +37 -0
  108. package/lib/cjs/runtime/chain-handlers.cjs.map +1 -0
  109. package/lib/cjs/runtime/chain-handlers.d.ts +33 -0
  110. package/lib/cjs/runtime/components/rnwind-provider.cjs +98 -0
  111. package/lib/cjs/runtime/components/rnwind-provider.cjs.map +1 -0
  112. package/lib/cjs/runtime/components/rnwind-provider.d.ts +84 -0
  113. package/lib/cjs/runtime/gradient-types.d.ts +58 -0
  114. package/lib/cjs/runtime/haptics.cjs +113 -0
  115. package/lib/cjs/runtime/haptics.cjs.map +1 -0
  116. package/lib/cjs/runtime/haptics.d.ts +48 -0
  117. package/lib/cjs/runtime/hooks/use-css.cjs +21 -0
  118. package/lib/cjs/runtime/hooks/use-css.cjs.map +1 -0
  119. package/lib/cjs/runtime/hooks/use-css.d.ts +11 -0
  120. package/lib/cjs/runtime/hooks/use-interact.cjs +46 -0
  121. package/lib/cjs/runtime/hooks/use-interact.cjs.map +1 -0
  122. package/lib/cjs/runtime/hooks/use-interact.d.ts +42 -0
  123. package/lib/cjs/runtime/hooks/use-scheme.cjs +68 -0
  124. package/lib/cjs/runtime/hooks/use-scheme.cjs.map +1 -0
  125. package/lib/cjs/runtime/hooks/use-scheme.d.ts +34 -0
  126. package/lib/cjs/runtime/index.cjs +45 -0
  127. package/lib/cjs/runtime/index.cjs.map +1 -0
  128. package/lib/cjs/runtime/index.d.ts +27 -0
  129. package/lib/cjs/runtime/interactive-box.cjs +35 -0
  130. package/lib/cjs/runtime/interactive-box.cjs.map +1 -0
  131. package/lib/cjs/runtime/interactive-box.d.ts +40 -0
  132. package/lib/cjs/runtime/lookup-css.cjs +542 -0
  133. package/lib/cjs/runtime/lookup-css.cjs.map +1 -0
  134. package/lib/cjs/runtime/lookup-css.d.ts +164 -0
  135. package/lib/cjs/runtime/types.d.ts +29 -0
  136. package/lib/cjs/testing/index.cjs +367 -0
  137. package/lib/cjs/testing/index.cjs.map +1 -0
  138. package/lib/cjs/testing/index.d.ts +145 -0
  139. package/lib/esm/core/parser/animation.d.ts +126 -0
  140. package/lib/esm/core/parser/animation.mjs +408 -0
  141. package/lib/esm/core/parser/animation.mjs.map +1 -0
  142. package/lib/esm/core/parser/border-dispatcher.d.ts +15 -0
  143. package/lib/esm/core/parser/border-dispatcher.mjs +178 -0
  144. package/lib/esm/core/parser/border-dispatcher.mjs.map +1 -0
  145. package/lib/esm/core/parser/case-convert.d.ts +6 -0
  146. package/lib/esm/core/parser/case-convert.mjs +13 -0
  147. package/lib/esm/core/parser/case-convert.mjs.map +1 -0
  148. package/lib/esm/core/parser/color-properties-dispatcher.d.ts +19 -0
  149. package/lib/esm/core/parser/color-properties-dispatcher.mjs +82 -0
  150. package/lib/esm/core/parser/color-properties-dispatcher.mjs.map +1 -0
  151. package/lib/esm/core/parser/color.d.ts +12 -0
  152. package/lib/esm/core/parser/color.mjs +162 -0
  153. package/lib/esm/core/parser/color.mjs.map +1 -0
  154. package/lib/esm/core/parser/constants.d.ts +8 -0
  155. package/lib/esm/core/parser/constants.mjs +13 -0
  156. package/lib/esm/core/parser/constants.mjs.map +1 -0
  157. package/lib/esm/core/parser/declaration.d.ts +15 -0
  158. package/lib/esm/core/parser/declaration.mjs +345 -0
  159. package/lib/esm/core/parser/declaration.mjs.map +1 -0
  160. package/lib/esm/core/parser/gradient.d.ts +59 -0
  161. package/lib/esm/core/parser/gradient.mjs +130 -0
  162. package/lib/esm/core/parser/gradient.mjs.map +1 -0
  163. package/lib/esm/core/parser/haptics.d.ts +47 -0
  164. package/lib/esm/core/parser/haptics.mjs +71 -0
  165. package/lib/esm/core/parser/haptics.mjs.map +1 -0
  166. package/lib/esm/core/parser/index.d.ts +8 -0
  167. package/lib/esm/core/parser/keyframes.d.ts +26 -0
  168. package/lib/esm/core/parser/keyframes.mjs +91 -0
  169. package/lib/esm/core/parser/keyframes.mjs.map +1 -0
  170. package/lib/esm/core/parser/layout-dispatcher.d.ts +14 -0
  171. package/lib/esm/core/parser/layout-dispatcher.mjs +98 -0
  172. package/lib/esm/core/parser/layout-dispatcher.mjs.map +1 -0
  173. package/lib/esm/core/parser/length.d.ts +48 -0
  174. package/lib/esm/core/parser/length.mjs +90 -0
  175. package/lib/esm/core/parser/length.mjs.map +1 -0
  176. package/lib/esm/core/parser/motion-dispatcher.d.ts +11 -0
  177. package/lib/esm/core/parser/motion-dispatcher.mjs +75 -0
  178. package/lib/esm/core/parser/motion-dispatcher.mjs.map +1 -0
  179. package/lib/esm/core/parser/property.d.ts +8 -0
  180. package/lib/esm/core/parser/property.mjs +20 -0
  181. package/lib/esm/core/parser/property.mjs.map +1 -0
  182. package/lib/esm/core/parser/safe-area.d.ts +39 -0
  183. package/lib/esm/core/parser/safe-area.mjs +402 -0
  184. package/lib/esm/core/parser/safe-area.mjs.map +1 -0
  185. package/lib/esm/core/parser/selector.d.ts +11 -0
  186. package/lib/esm/core/parser/selector.mjs +20 -0
  187. package/lib/esm/core/parser/selector.mjs.map +1 -0
  188. package/lib/esm/core/parser/shorthand.d.ts +61 -0
  189. package/lib/esm/core/parser/shorthand.mjs +148 -0
  190. package/lib/esm/core/parser/shorthand.mjs.map +1 -0
  191. package/lib/esm/core/parser/text-truncate.d.ts +44 -0
  192. package/lib/esm/core/parser/text-truncate.mjs +75 -0
  193. package/lib/esm/core/parser/text-truncate.mjs.map +1 -0
  194. package/lib/esm/core/parser/theme-vars.d.ts +61 -0
  195. package/lib/esm/core/parser/theme-vars.mjs +409 -0
  196. package/lib/esm/core/parser/theme-vars.mjs.map +1 -0
  197. package/lib/esm/core/parser/tokens.d.ts +45 -0
  198. package/lib/esm/core/parser/tokens.mjs +298 -0
  199. package/lib/esm/core/parser/tokens.mjs.map +1 -0
  200. package/lib/esm/core/parser/transform.d.ts +36 -0
  201. package/lib/esm/core/parser/transform.mjs +193 -0
  202. package/lib/esm/core/parser/transform.mjs.map +1 -0
  203. package/lib/esm/core/parser/tw-parser.d.ts +194 -0
  204. package/lib/esm/core/parser/tw-parser.mjs +1565 -0
  205. package/lib/esm/core/parser/tw-parser.mjs.map +1 -0
  206. package/lib/esm/core/parser/types.d.ts +37 -0
  207. package/lib/esm/core/parser/typography-dispatcher.d.ts +11 -0
  208. package/lib/esm/core/parser/typography-dispatcher.mjs +91 -0
  209. package/lib/esm/core/parser/typography-dispatcher.mjs.map +1 -0
  210. package/lib/esm/core/parser/typography.d.ts +43 -0
  211. package/lib/esm/core/parser/typography.mjs +91 -0
  212. package/lib/esm/core/parser/typography.mjs.map +1 -0
  213. package/lib/esm/core/style-builder/build-style.d.ts +54 -0
  214. package/lib/esm/core/style-builder/build-style.mjs +395 -0
  215. package/lib/esm/core/style-builder/build-style.mjs.map +1 -0
  216. package/lib/esm/core/style-builder/index.d.ts +3 -0
  217. package/lib/esm/core/style-builder/union-builder.d.ts +128 -0
  218. package/lib/esm/core/style-builder/union-builder.mjs +324 -0
  219. package/lib/esm/core/style-builder/union-builder.mjs.map +1 -0
  220. package/lib/esm/core/types.d.ts +14 -0
  221. package/lib/esm/metro/dts.d.ts +16 -0
  222. package/lib/esm/metro/dts.mjs +125 -0
  223. package/lib/esm/metro/dts.mjs.map +1 -0
  224. package/lib/esm/metro/index.d.ts +9 -0
  225. package/lib/esm/metro/index.mjs +6 -0
  226. package/lib/esm/metro/index.mjs.map +1 -0
  227. package/lib/esm/metro/resolver.d.ts +22 -0
  228. package/lib/esm/metro/resolver.mjs +43 -0
  229. package/lib/esm/metro/resolver.mjs.map +1 -0
  230. package/lib/esm/metro/state.d.ts +72 -0
  231. package/lib/esm/metro/state.mjs +243 -0
  232. package/lib/esm/metro/state.mjs.map +1 -0
  233. package/lib/esm/metro/transform-ast.d.ts +73 -0
  234. package/lib/esm/metro/transform-ast.mjs +1234 -0
  235. package/lib/esm/metro/transform-ast.mjs.map +1 -0
  236. package/lib/esm/metro/transformer.d.ts +47 -0
  237. package/lib/esm/metro/transformer.mjs +322 -0
  238. package/lib/esm/metro/transformer.mjs.map +1 -0
  239. package/lib/esm/metro/warn-unknown-classes.d.ts +21 -0
  240. package/lib/esm/metro/warn-unknown-classes.mjs +84 -0
  241. package/lib/esm/metro/warn-unknown-classes.mjs.map +1 -0
  242. package/lib/esm/metro/with-config.d.ts +57 -0
  243. package/lib/esm/metro/with-config.mjs +194 -0
  244. package/lib/esm/metro/with-config.mjs.map +1 -0
  245. package/lib/esm/runtime/chain-handlers.d.ts +33 -0
  246. package/lib/esm/runtime/chain-handlers.mjs +34 -0
  247. package/lib/esm/runtime/chain-handlers.mjs.map +1 -0
  248. package/lib/esm/runtime/components/rnwind-provider.d.ts +84 -0
  249. package/lib/esm/runtime/components/rnwind-provider.mjs +94 -0
  250. package/lib/esm/runtime/components/rnwind-provider.mjs.map +1 -0
  251. package/lib/esm/runtime/gradient-types.d.ts +58 -0
  252. package/lib/esm/runtime/haptics.d.ts +48 -0
  253. package/lib/esm/runtime/haptics.mjs +110 -0
  254. package/lib/esm/runtime/haptics.mjs.map +1 -0
  255. package/lib/esm/runtime/hooks/use-css.d.ts +11 -0
  256. package/lib/esm/runtime/hooks/use-css.mjs +19 -0
  257. package/lib/esm/runtime/hooks/use-css.mjs.map +1 -0
  258. package/lib/esm/runtime/hooks/use-interact.d.ts +42 -0
  259. package/lib/esm/runtime/hooks/use-interact.mjs +44 -0
  260. package/lib/esm/runtime/hooks/use-interact.mjs.map +1 -0
  261. package/lib/esm/runtime/hooks/use-scheme.d.ts +34 -0
  262. package/lib/esm/runtime/hooks/use-scheme.mjs +63 -0
  263. package/lib/esm/runtime/hooks/use-scheme.mjs.map +1 -0
  264. package/lib/esm/runtime/index.d.ts +27 -0
  265. package/lib/esm/runtime/index.mjs +18 -0
  266. package/lib/esm/runtime/index.mjs.map +1 -0
  267. package/lib/esm/runtime/interactive-box.d.ts +40 -0
  268. package/lib/esm/runtime/interactive-box.mjs +33 -0
  269. package/lib/esm/runtime/interactive-box.mjs.map +1 -0
  270. package/lib/esm/runtime/lookup-css.d.ts +164 -0
  271. package/lib/esm/runtime/lookup-css.mjs +531 -0
  272. package/lib/esm/runtime/lookup-css.mjs.map +1 -0
  273. package/lib/esm/runtime/types.d.ts +29 -0
  274. package/lib/esm/testing/index.d.ts +145 -0
  275. package/lib/esm/testing/index.mjs +344 -0
  276. package/lib/esm/testing/index.mjs.map +1 -0
  277. package/package.json +79 -13
  278. package/preset.css +1171 -0
  279. package/src/core/parser/animation.ts +404 -0
  280. package/src/core/parser/border-dispatcher.ts +176 -0
  281. package/src/core/parser/case-convert.ts +10 -0
  282. package/src/core/parser/color-properties-dispatcher.ts +78 -0
  283. package/src/core/parser/color.ts +157 -0
  284. package/src/core/parser/constants.ts +11 -0
  285. package/src/core/parser/declaration.ts +340 -0
  286. package/src/core/parser/gradient.ts +148 -0
  287. package/src/core/parser/haptics.ts +88 -0
  288. package/src/core/parser/index.ts +8 -0
  289. package/src/core/parser/keyframes.ts +84 -0
  290. package/src/core/parser/layout-dispatcher.ts +92 -0
  291. package/src/core/parser/length.ts +100 -0
  292. package/src/core/parser/motion-dispatcher.ts +89 -0
  293. package/src/core/parser/property.ts +15 -0
  294. package/src/core/parser/safe-area.ts +404 -0
  295. package/src/core/parser/selector.ts +17 -0
  296. package/src/core/parser/shorthand.ts +152 -0
  297. package/src/core/parser/text-truncate.ts +79 -0
  298. package/src/core/parser/theme-vars.ts +412 -0
  299. package/src/core/parser/tokens.ts +286 -0
  300. package/src/core/parser/transform.ts +195 -0
  301. package/src/core/parser/tw-parser.ts +1709 -0
  302. package/src/core/parser/types.ts +45 -0
  303. package/src/core/parser/typography-dispatcher.ts +83 -0
  304. package/src/core/parser/typography.ts +83 -0
  305. package/src/core/style-builder/build-style.ts +442 -0
  306. package/src/core/style-builder/index.ts +3 -0
  307. package/src/core/style-builder/union-builder.ts +328 -0
  308. package/src/core/types.ts +15 -0
  309. package/src/metro/dts.ts +128 -0
  310. package/src/metro/index.ts +9 -0
  311. package/src/metro/resolver.ts +42 -0
  312. package/src/metro/state.ts +257 -0
  313. package/src/metro/transform-ast.ts +1498 -0
  314. package/src/metro/transformer.ts +347 -0
  315. package/src/metro/warn-unknown-classes.ts +79 -0
  316. package/src/metro/with-config.ts +229 -0
  317. package/src/runtime/chain-handlers.ts +47 -0
  318. package/src/runtime/components/rnwind-provider.tsx +144 -0
  319. package/src/runtime/gradient-types.ts +60 -0
  320. package/src/runtime/haptics.ts +120 -0
  321. package/src/runtime/hooks/use-css.ts +16 -0
  322. package/src/runtime/hooks/use-interact.ts +65 -0
  323. package/src/runtime/hooks/use-scheme.ts +63 -0
  324. package/src/runtime/index.ts +54 -0
  325. package/src/runtime/interactive-box.tsx +57 -0
  326. package/src/runtime/lookup-css.ts +628 -0
  327. package/src/runtime/types.ts +32 -0
  328. package/src/testing/index.ts +507 -0
  329. package/src/types/tailwindcss-node.d.ts +33 -0
  330. package/src/index.ts +0 -1
@@ -0,0 +1,180 @@
1
+ 'use strict';
2
+
3
+ var caseConvert = require('./case-convert.cjs');
4
+ var color = require('./color.cjs');
5
+
6
+ /**
7
+ * Build an inline-color pair from a `{start, end}`-shaped value.
8
+ * @param leftKey RN key for the start side.
9
+ * @param rightKey RN key for the end side.
10
+ * @param value Typed `{start, end}` color value.
11
+ * @returns Two RN entries.
12
+ */
13
+ function colorPair(leftKey, rightKey, value) {
14
+ const tagged = value;
15
+ return [
16
+ [leftKey, color.cssColorToString(tagged.start)],
17
+ [rightKey, color.cssColorToString(tagged.end)],
18
+ ];
19
+ }
20
+ /**
21
+ * Coerce a border-width-shaped length to a pixel number. Drops
22
+ * percentages — RN borders don't accept them.
23
+ * @param value Typed length value (`{type: 'length', value: {unit, value}}`).
24
+ * @returns Pixel number, or null when unrepresentable.
25
+ */
26
+ function lengthToPxValue(value) {
27
+ if (typeof value !== 'object' || value === null)
28
+ return null;
29
+ const tagged = value;
30
+ const inner = tagged.type === 'length'
31
+ ? tagged.value?.value
32
+ : tagged.value;
33
+ if (!inner || typeof inner.value !== 'number')
34
+ return null;
35
+ const dim = inner;
36
+ if (dim.unit === 'px')
37
+ return dim.value;
38
+ if (dim.unit === 'rem' || dim.unit === 'em')
39
+ return dim.value * 16;
40
+ return dim.value;
41
+ }
42
+ /**
43
+ * Build an inline-width pair from a `{start, end}`-shaped value.
44
+ * @param leftKey RN key for the start side.
45
+ * @param rightKey RN key for the end side.
46
+ * @param value Typed `{start, end}` length value.
47
+ * @returns Two RN entries, or empty when either side is unrepresentable.
48
+ */
49
+ function widthPair(leftKey, rightKey, value) {
50
+ const tagged = value;
51
+ const start = lengthToPxValue(tagged.start);
52
+ const end = lengthToPxValue(tagged.end);
53
+ if (start === null || end === null)
54
+ return [];
55
+ return [
56
+ [leftKey, start],
57
+ [rightKey, end],
58
+ ];
59
+ }
60
+ /**
61
+ * Expand a `border-width` shorthand to RN longhands. Collapses to the
62
+ * `borderWidth` shorthand when all four sides match.
63
+ * @param value Typed border-width value with `{top, right, bottom, left}`.
64
+ * @returns RN entries.
65
+ */
66
+ function borderWidthShorthand(value) {
67
+ const tagged = value;
68
+ const top = lengthToPxValue(tagged.top);
69
+ const right = lengthToPxValue(tagged.right);
70
+ const bottom = lengthToPxValue(tagged.bottom);
71
+ const left = lengthToPxValue(tagged.left);
72
+ if (top === null || right === null || bottom === null || left === null)
73
+ return [];
74
+ if (top === right && right === bottom && bottom === left)
75
+ return [['borderWidth', top]];
76
+ return [
77
+ ['borderTopWidth', top],
78
+ ['borderRightWidth', right],
79
+ ['borderBottomWidth', bottom],
80
+ ['borderLeftWidth', left],
81
+ ];
82
+ }
83
+ /**
84
+ * Map CSS `border-style` keywords to the strings RN accepts. RN
85
+ * supports only `solid` / `dashed` / `dotted` / `none` — fall back to
86
+ * `solid` for everything else.
87
+ * @param css CSS border-style keyword.
88
+ * @returns RN border-style.
89
+ */
90
+ function mapBorderStyle(css) {
91
+ if (css === 'dashed' || css === 'dotted' || css === 'none')
92
+ return css;
93
+ return 'solid';
94
+ }
95
+ /**
96
+ * Dispatch border-* longhands and their logical-direction variants to
97
+ * RN style entries. Returns `null` for any property the dispatcher
98
+ * doesn't handle so the caller can fall through.
99
+ *
100
+ * Logical-direction inputs (`border-inline-*`, `border-block-*`,
101
+ * `border-inline-start-*`, …) lower to RN's physical pairs
102
+ * (`borderLeft*` / `borderRight*` / `borderTop*` / `borderBottom*`)
103
+ * since RN doesn't honor logical directions at the style level.
104
+ * @param decl One lightningcss declaration.
105
+ * @returns RN entries when the property matched, else `null`.
106
+ */
107
+ function dispatchBorderDeclaration(decl) {
108
+ switch (decl.property) {
109
+ case 'border-inline-color': {
110
+ return colorPair('borderLeftColor', 'borderRightColor', decl.value);
111
+ }
112
+ case 'border-block-color': {
113
+ return colorPair('borderTopColor', 'borderBottomColor', decl.value);
114
+ }
115
+ case 'border-inline-start-color': {
116
+ return [['borderLeftColor', color.cssColorToString(decl.value)]];
117
+ }
118
+ case 'border-inline-end-color': {
119
+ return [['borderRightColor', color.cssColorToString(decl.value)]];
120
+ }
121
+ case 'border-block-start-color': {
122
+ return [['borderTopColor', color.cssColorToString(decl.value)]];
123
+ }
124
+ case 'border-block-end-color': {
125
+ return [['borderBottomColor', color.cssColorToString(decl.value)]];
126
+ }
127
+ case 'border-width': {
128
+ return borderWidthShorthand(decl.value);
129
+ }
130
+ case 'border-top-width':
131
+ case 'border-right-width':
132
+ case 'border-bottom-width':
133
+ case 'border-left-width': {
134
+ const v = lengthToPxValue(decl.value);
135
+ return v === null ? [] : [[caseConvert.kebabToCamel(decl.property), v]];
136
+ }
137
+ case 'border-inline-width': {
138
+ return widthPair('borderLeftWidth', 'borderRightWidth', decl.value);
139
+ }
140
+ case 'border-block-width': {
141
+ return widthPair('borderTopWidth', 'borderBottomWidth', decl.value);
142
+ }
143
+ case 'border-inline-start-width': {
144
+ const v = lengthToPxValue(decl.value);
145
+ return v === null ? [] : [['borderLeftWidth', v]];
146
+ }
147
+ case 'border-inline-end-width': {
148
+ const v = lengthToPxValue(decl.value);
149
+ return v === null ? [] : [['borderRightWidth', v]];
150
+ }
151
+ case 'border-block-start-width': {
152
+ const v = lengthToPxValue(decl.value);
153
+ return v === null ? [] : [['borderTopWidth', v]];
154
+ }
155
+ case 'border-block-end-width': {
156
+ const v = lengthToPxValue(decl.value);
157
+ return v === null ? [] : [['borderBottomWidth', v]];
158
+ }
159
+ case 'border-style': {
160
+ const styleValue = decl.value.top;
161
+ if (typeof styleValue !== 'string')
162
+ return [];
163
+ return [['borderStyle', mapBorderStyle(styleValue)]];
164
+ }
165
+ case 'border-top-style':
166
+ case 'border-right-style':
167
+ case 'border-bottom-style':
168
+ case 'border-left-style': {
169
+ if (typeof decl.value !== 'string')
170
+ return [];
171
+ return [['borderStyle', mapBorderStyle(decl.value)]];
172
+ }
173
+ default: {
174
+ return null;
175
+ }
176
+ }
177
+ }
178
+
179
+ exports.dispatchBorderDeclaration = dispatchBorderDeclaration;
180
+ //# sourceMappingURL=border-dispatcher.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"border-dispatcher.cjs","sources":["../../../../../src/core/parser/border-dispatcher.ts"],"sourcesContent":["import type { Declaration as LcDeclaration } from 'lightningcss'\nimport { kebabToCamel } from './case-convert'\nimport { cssColorToString } from './color'\nimport type { RNEntry } from './types'\n\n/**\n * Build an inline-color pair from a `{start, end}`-shaped value.\n * @param leftKey RN key for the start side.\n * @param rightKey RN key for the end side.\n * @param value Typed `{start, end}` color value.\n * @returns Two RN entries.\n */\nfunction colorPair(leftKey: string, rightKey: string, value: unknown): readonly RNEntry[] {\n const tagged = value as { start?: unknown; end?: unknown }\n return [\n [leftKey, cssColorToString(tagged.start as never)],\n [rightKey, cssColorToString(tagged.end as never)],\n ]\n}\n\n/**\n * Coerce a border-width-shaped length to a pixel number. Drops\n * percentages — RN borders don't accept them.\n * @param value Typed length value (`{type: 'length', value: {unit, value}}`).\n * @returns Pixel number, or null when unrepresentable.\n */\nfunction lengthToPxValue(value: unknown): number | null {\n if (typeof value !== 'object' || value === null) return null\n const tagged = value as {\n type?: string\n value?: { type?: string; value?: { unit?: string; value?: number } } | { unit?: string; value?: number }\n }\n const inner =\n tagged.type === 'length'\n ? (tagged.value as { type?: string; value?: { unit?: string; value?: number } })?.value\n : tagged.value\n if (!inner || typeof (inner as { value?: number }).value !== 'number') return null\n const dim = inner as { unit?: string; value: number }\n if (dim.unit === 'px') return dim.value\n if (dim.unit === 'rem' || dim.unit === 'em') return dim.value * 16\n return dim.value\n}\n\n/**\n * Build an inline-width pair from a `{start, end}`-shaped value.\n * @param leftKey RN key for the start side.\n * @param rightKey RN key for the end side.\n * @param value Typed `{start, end}` length value.\n * @returns Two RN entries, or empty when either side is unrepresentable.\n */\nfunction widthPair(leftKey: string, rightKey: string, value: unknown): readonly RNEntry[] {\n const tagged = value as { start?: unknown; end?: unknown }\n const start = lengthToPxValue(tagged.start)\n const end = lengthToPxValue(tagged.end)\n if (start === null || end === null) return []\n return [\n [leftKey, start],\n [rightKey, end],\n ]\n}\n\n/**\n * Expand a `border-width` shorthand to RN longhands. Collapses to the\n * `borderWidth` shorthand when all four sides match.\n * @param value Typed border-width value with `{top, right, bottom, left}`.\n * @returns RN entries.\n */\nfunction borderWidthShorthand(value: unknown): readonly RNEntry[] {\n const tagged = value as { top?: unknown; right?: unknown; bottom?: unknown; left?: unknown }\n const top = lengthToPxValue(tagged.top)\n const right = lengthToPxValue(tagged.right)\n const bottom = lengthToPxValue(tagged.bottom)\n const left = lengthToPxValue(tagged.left)\n if (top === null || right === null || bottom === null || left === null) return []\n if (top === right && right === bottom && bottom === left) return [['borderWidth', top]]\n return [\n ['borderTopWidth', top],\n ['borderRightWidth', right],\n ['borderBottomWidth', bottom],\n ['borderLeftWidth', left],\n ]\n}\n\n/**\n * Map CSS `border-style` keywords to the strings RN accepts. RN\n * supports only `solid` / `dashed` / `dotted` / `none` — fall back to\n * `solid` for everything else.\n * @param css CSS border-style keyword.\n * @returns RN border-style.\n */\nfunction mapBorderStyle(css: string): string {\n if (css === 'dashed' || css === 'dotted' || css === 'none') return css\n return 'solid'\n}\n\n/**\n * Dispatch border-* longhands and their logical-direction variants to\n * RN style entries. Returns `null` for any property the dispatcher\n * doesn't handle so the caller can fall through.\n *\n * Logical-direction inputs (`border-inline-*`, `border-block-*`,\n * `border-inline-start-*`, …) lower to RN's physical pairs\n * (`borderLeft*` / `borderRight*` / `borderTop*` / `borderBottom*`)\n * since RN doesn't honor logical directions at the style level.\n * @param decl One lightningcss declaration.\n * @returns RN entries when the property matched, else `null`.\n */\nexport function dispatchBorderDeclaration(decl: LcDeclaration): readonly RNEntry[] | null {\n switch (decl.property) {\n case 'border-inline-color': {\n return colorPair('borderLeftColor', 'borderRightColor', decl.value)\n }\n case 'border-block-color': {\n return colorPair('borderTopColor', 'borderBottomColor', decl.value)\n }\n case 'border-inline-start-color': {\n return [['borderLeftColor', cssColorToString(decl.value)]]\n }\n case 'border-inline-end-color': {\n return [['borderRightColor', cssColorToString(decl.value)]]\n }\n case 'border-block-start-color': {\n return [['borderTopColor', cssColorToString(decl.value)]]\n }\n case 'border-block-end-color': {\n return [['borderBottomColor', cssColorToString(decl.value)]]\n }\n case 'border-width': {\n return borderWidthShorthand(decl.value)\n }\n case 'border-top-width':\n case 'border-right-width':\n case 'border-bottom-width':\n case 'border-left-width': {\n const v = lengthToPxValue(decl.value)\n return v === null ? [] : [[kebabToCamel(decl.property), v]]\n }\n case 'border-inline-width': {\n return widthPair('borderLeftWidth', 'borderRightWidth', decl.value)\n }\n case 'border-block-width': {\n return widthPair('borderTopWidth', 'borderBottomWidth', decl.value)\n }\n case 'border-inline-start-width': {\n const v = lengthToPxValue(decl.value)\n return v === null ? [] : [['borderLeftWidth', v]]\n }\n case 'border-inline-end-width': {\n const v = lengthToPxValue(decl.value)\n return v === null ? [] : [['borderRightWidth', v]]\n }\n case 'border-block-start-width': {\n const v = lengthToPxValue(decl.value)\n return v === null ? [] : [['borderTopWidth', v]]\n }\n case 'border-block-end-width': {\n const v = lengthToPxValue(decl.value)\n return v === null ? [] : [['borderBottomWidth', v]]\n }\n case 'border-style': {\n const styleValue = (decl.value as { top?: string }).top\n if (typeof styleValue !== 'string') return []\n return [['borderStyle', mapBorderStyle(styleValue)]]\n }\n case 'border-top-style':\n case 'border-right-style':\n case 'border-bottom-style':\n case 'border-left-style': {\n if (typeof decl.value !== 'string') return []\n return [['borderStyle', mapBorderStyle(decl.value)]]\n }\n default: {\n return null\n }\n }\n}\n"],"names":["cssColorToString","kebabToCamel"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Declaration as LcDeclaration } from 'lightningcss';
2
+ import type { RNEntry } from './types';
3
+ /**
4
+ * Dispatch border-* longhands and their logical-direction variants to
5
+ * RN style entries. Returns `null` for any property the dispatcher
6
+ * doesn't handle so the caller can fall through.
7
+ *
8
+ * Logical-direction inputs (`border-inline-*`, `border-block-*`,
9
+ * `border-inline-start-*`, …) lower to RN's physical pairs
10
+ * (`borderLeft*` / `borderRight*` / `borderTop*` / `borderBottom*`)
11
+ * since RN doesn't honor logical directions at the style level.
12
+ * @param decl One lightningcss declaration.
13
+ * @returns RN entries when the property matched, else `null`.
14
+ */
15
+ export declare function dispatchBorderDeclaration(decl: LcDeclaration): readonly RNEntry[] | null;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.cjs');
4
+
5
+ /**
6
+ * Kebab-case to camelCase — `border-radius` → `borderRadius`.
7
+ * @param name Kebab-case CSS property name.
8
+ * @returns camelCase RN key.
9
+ */
10
+ function kebabToCamel(name) {
11
+ return name.replaceAll(constants.KEBAB_BOUNDARY_REGEX, (_, c) => c.toUpperCase());
12
+ }
13
+
14
+ exports.kebabToCamel = kebabToCamel;
15
+ //# sourceMappingURL=case-convert.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-convert.cjs","sources":["../../../../../src/core/parser/case-convert.ts"],"sourcesContent":["import { KEBAB_BOUNDARY_REGEX } from './constants'\n\n/**\n * Kebab-case to camelCase — `border-radius` → `borderRadius`.\n * @param name Kebab-case CSS property name.\n * @returns camelCase RN key.\n */\nexport function kebabToCamel(name: string): string {\n return name.replaceAll(KEBAB_BOUNDARY_REGEX, (_, c: string) => c.toUpperCase())\n}\n"],"names":["KEBAB_BOUNDARY_REGEX"],"mappings":";;;;AAEA;;;;AAIG;AACG,SAAU,YAAY,CAAC,IAAY,EAAA;AACvC,IAAA,OAAO,IAAI,CAAC,UAAU,CAACA,8BAAoB,EAAE,CAAC,CAAC,EAAE,CAAS,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACjF;;;;"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Kebab-case to camelCase — `border-radius` → `borderRadius`.
3
+ * @param name Kebab-case CSS property name.
4
+ * @returns camelCase RN key.
5
+ */
6
+ export declare function kebabToCamel(name: string): string;
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ var color = require('./color.cjs');
4
+
5
+ /**
6
+ * Build a `[key, hex]` entry from a typed CssColor. Drops keyword colors
7
+ * (e.g. `'currentcolor'` strings — RN can't render them).
8
+ * @param key RN style key (camelCase).
9
+ * @param value Typed `CssColor`-shaped value.
10
+ * @returns Single-entry list or empty.
11
+ */
12
+ function colorEntry(key, value) {
13
+ if (value === null || value === undefined)
14
+ return [];
15
+ if (typeof value === 'string')
16
+ return [[key, value]];
17
+ const hex = color.cssColorToString(value);
18
+ if (!hex || hex === 'transparent' || hex === 'currentColor')
19
+ return [[key, hex]];
20
+ return [[key, hex]];
21
+ }
22
+ /**
23
+ * Several typed color properties wrap their `CssColor` payload inside a
24
+ * `{type: 'color', value: CssColor}` envelope. Unwrap so the inner color
25
+ * reaches {@link cssColorToString}.
26
+ * @param value Either a `CssColor` directly or a `{type: 'color', value}` wrapper.
27
+ * @returns Unwrapped `CssColor` (or the input untouched).
28
+ */
29
+ function unwrapTaggedColor(value) {
30
+ if (typeof value !== 'object' || value === null)
31
+ return value;
32
+ const tagged = value;
33
+ if (tagged.type === 'color')
34
+ return tagged.value;
35
+ return value;
36
+ }
37
+ /**
38
+ * Dispatch color-typed CSS properties (text-decoration-color, fill,
39
+ * stroke, caret-color, outline-color, …) to RN-compatible style entries.
40
+ *
41
+ * lightningcss emits two shapes for color properties:
42
+ * - bare `CssColor` value (e.g. `text-decoration-color`, `outline-color`)
43
+ * - wrapped `{type: 'color', value: CssColor}` (e.g. `fill`, `stroke`,
44
+ * `caret-color`, `accent-color`)
45
+ * We unwrap both and run them through {@link cssColorToString} to land
46
+ * at hex/rgba.
47
+ *
48
+ * Returns `null` for any property the dispatcher doesn't handle so the
49
+ * caller can fall through to the next dispatcher.
50
+ * @param decl One lightningcss declaration.
51
+ * @returns RN entries when the property matched, else `null`.
52
+ */
53
+ function dispatchColorPropertyDeclaration(decl) {
54
+ switch (decl.property) {
55
+ case 'text-decoration-color': {
56
+ return colorEntry('textDecorationColor', decl.value);
57
+ }
58
+ case 'caret-color': {
59
+ return colorEntry('caretColor', unwrapTaggedColor(decl.value));
60
+ }
61
+ case 'fill': {
62
+ return colorEntry('fill', unwrapTaggedColor(decl.value));
63
+ }
64
+ case 'stroke': {
65
+ return colorEntry('stroke', unwrapTaggedColor(decl.value));
66
+ }
67
+ case 'outline-color': {
68
+ // RN doesn't render outlines, but tooling like react-native-web /
69
+ // a11y overlays read it — keep so cross-platform code carries the
70
+ // value through.
71
+ return colorEntry('outlineColor', decl.value);
72
+ }
73
+ case 'accent-color': {
74
+ // RN has no native accent color; skip silently.
75
+ return [];
76
+ }
77
+ default: {
78
+ return null;
79
+ }
80
+ }
81
+ }
82
+
83
+ exports.dispatchColorPropertyDeclaration = dispatchColorPropertyDeclaration;
84
+ //# sourceMappingURL=color-properties-dispatcher.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-properties-dispatcher.cjs","sources":["../../../../../src/core/parser/color-properties-dispatcher.ts"],"sourcesContent":["import type { Declaration as LcDeclaration } from 'lightningcss'\nimport { cssColorToString } from './color'\nimport type { RNEntry } from './types'\n\n/**\n * Build a `[key, hex]` entry from a typed CssColor. Drops keyword colors\n * (e.g. `'currentcolor'` strings — RN can't render them).\n * @param key RN style key (camelCase).\n * @param value Typed `CssColor`-shaped value.\n * @returns Single-entry list or empty.\n */\nfunction colorEntry(key: string, value: unknown): readonly RNEntry[] {\n if (value === null || value === undefined) return []\n if (typeof value === 'string') return [[key, value]]\n const hex = cssColorToString(value as never)\n if (!hex || hex === 'transparent' || hex === 'currentColor') return [[key, hex]]\n return [[key, hex]]\n}\n\n/**\n * Several typed color properties wrap their `CssColor` payload inside a\n * `{type: 'color', value: CssColor}` envelope. Unwrap so the inner color\n * reaches {@link cssColorToString}.\n * @param value Either a `CssColor` directly or a `{type: 'color', value}` wrapper.\n * @returns Unwrapped `CssColor` (or the input untouched).\n */\nfunction unwrapTaggedColor(value: unknown): unknown {\n if (typeof value !== 'object' || value === null) return value\n const tagged = value as { type?: string; value?: unknown }\n if (tagged.type === 'color') return tagged.value\n return value\n}\n\n/**\n * Dispatch color-typed CSS properties (text-decoration-color, fill,\n * stroke, caret-color, outline-color, …) to RN-compatible style entries.\n *\n * lightningcss emits two shapes for color properties:\n * - bare `CssColor` value (e.g. `text-decoration-color`, `outline-color`)\n * - wrapped `{type: 'color', value: CssColor}` (e.g. `fill`, `stroke`,\n * `caret-color`, `accent-color`)\n * We unwrap both and run them through {@link cssColorToString} to land\n * at hex/rgba.\n *\n * Returns `null` for any property the dispatcher doesn't handle so the\n * caller can fall through to the next dispatcher.\n * @param decl One lightningcss declaration.\n * @returns RN entries when the property matched, else `null`.\n */\nexport function dispatchColorPropertyDeclaration(decl: LcDeclaration): readonly RNEntry[] | null {\n switch (decl.property) {\n case 'text-decoration-color': {\n return colorEntry('textDecorationColor', decl.value)\n }\n case 'caret-color': {\n return colorEntry('caretColor', unwrapTaggedColor(decl.value))\n }\n case 'fill': {\n return colorEntry('fill', unwrapTaggedColor(decl.value))\n }\n case 'stroke': {\n return colorEntry('stroke', unwrapTaggedColor(decl.value))\n }\n case 'outline-color': {\n // RN doesn't render outlines, but tooling like react-native-web /\n // a11y overlays read it — keep so cross-platform code carries the\n // value through.\n return colorEntry('outlineColor', decl.value)\n }\n case 'accent-color': {\n // RN has no native accent color; skip silently.\n return []\n }\n default: {\n return null\n }\n }\n}\n"],"names":["cssColorToString"],"mappings":";;;;AAIA;;;;;;AAMG;AACH,SAAS,UAAU,CAAC,GAAW,EAAE,KAAc,EAAA;AAC7C,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,EAAE;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpD,IAAA,MAAM,GAAG,GAAGA,sBAAgB,CAAC,KAAc,CAAC;IAC5C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,cAAc;AAAE,QAAA,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChF,IAAA,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB;AAEA;;;;;;AAMG;AACH,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK;IAC7D,MAAM,MAAM,GAAG,KAA2C;AAC1D,IAAA,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC,KAAK;AAChD,IAAA,OAAO,KAAK;AACd;AAEA;;;;;;;;;;;;;;;AAeG;AACG,SAAU,gCAAgC,CAAC,IAAmB,EAAA;AAClE,IAAA,QAAQ,IAAI,CAAC,QAAQ;QACnB,KAAK,uBAAuB,EAAE;YAC5B,OAAO,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC;QACtD;QACA,KAAK,aAAa,EAAE;YAClB,OAAO,UAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE;QACA,KAAK,MAAM,EAAE;YACX,OAAO,UAAU,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D;QACA,KAAK,QAAQ,EAAE;YACb,OAAO,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D;QACA,KAAK,eAAe,EAAE;;;;YAIpB,OAAO,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC;QAC/C;QACA,KAAK,cAAc,EAAE;;AAEnB,YAAA,OAAO,EAAE;QACX;QACA,SAAS;AACP,YAAA,OAAO,IAAI;QACb;;AAEJ;;;;"}
@@ -0,0 +1,19 @@
1
+ import type { Declaration as LcDeclaration } from 'lightningcss';
2
+ import type { RNEntry } from './types';
3
+ /**
4
+ * Dispatch color-typed CSS properties (text-decoration-color, fill,
5
+ * stroke, caret-color, outline-color, …) to RN-compatible style entries.
6
+ *
7
+ * lightningcss emits two shapes for color properties:
8
+ * - bare `CssColor` value (e.g. `text-decoration-color`, `outline-color`)
9
+ * - wrapped `{type: 'color', value: CssColor}` (e.g. `fill`, `stroke`,
10
+ * `caret-color`, `accent-color`)
11
+ * We unwrap both and run them through {@link cssColorToString} to land
12
+ * at hex/rgba.
13
+ *
14
+ * Returns `null` for any property the dispatcher doesn't handle so the
15
+ * caller can fall through to the next dispatcher.
16
+ * @param decl One lightningcss declaration.
17
+ * @returns RN entries when the property matched, else `null`.
18
+ */
19
+ export declare function dispatchColorPropertyDeclaration(decl: LcDeclaration): readonly RNEntry[] | null;
@@ -0,0 +1,164 @@
1
+ 'use strict';
2
+
3
+ var culori = require('culori');
4
+
5
+ /**
6
+ * Clamp a 0-255 float to the integer byte range RN color strings accept.
7
+ * @param value Unclamped float (may be negative or above 255).
8
+ * @returns Integer in `[0, 255]`.
9
+ */
10
+ function clampByte(value) {
11
+ if (value < 0)
12
+ return 0;
13
+ if (value > 255)
14
+ return 255;
15
+ return Math.round(value);
16
+ }
17
+ /**
18
+ * Two-digit hex encoding of a 0-255 byte.
19
+ * @param byte Byte value (may be out-of-range — clamped).
20
+ * @returns Zero-padded two-char hex string.
21
+ */
22
+ function byteToHex(byte) {
23
+ const hex = clampByte(byte).toString(16);
24
+ return hex.length === 1 ? `0${hex}` : hex;
25
+ }
26
+ /**
27
+ * Format an integer-RGB triple + alpha as `#rrggbb` or `rgba(r, g, b, a)`.
28
+ * @param r 0-255 red.
29
+ * @param g 0-255 green.
30
+ * @param b 0-255 blue.
31
+ * @param alpha 0-1 alpha.
32
+ * @returns Color string.
33
+ */
34
+ function rgbIntsToString(r, g, b, alpha) {
35
+ if (alpha >= 1)
36
+ return `#${byteToHex(r)}${byteToHex(g)}${byteToHex(b)}`;
37
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
38
+ }
39
+ /**
40
+ * Format a float-RGB triple + alpha (CSS `color(srgb …)` forms) as
41
+ * hex/rgba.
42
+ * @param r 0-1 red.
43
+ * @param g 0-1 green.
44
+ * @param b 0-1 blue.
45
+ * @param alpha 0-1 alpha.
46
+ * @returns Color string.
47
+ */
48
+ function floatRgbToString(r, g, b, alpha) {
49
+ return rgbIntsToString(clampByte(r * 255), clampByte(g * 255), clampByte(b * 255), alpha);
50
+ }
51
+ /**
52
+ * Dispatch a LAB-family color through culori's hex formatter.
53
+ * @param color Typed LAB-family color.
54
+ * @returns `#rrggbb` string, or `null` when culori couldn't convert.
55
+ */
56
+ function culoriHexFor(color) {
57
+ switch (color.type) {
58
+ case 'oklch': {
59
+ return culori.formatHex({ mode: 'oklch', l: color.l, c: color.c, h: color.h }) ?? null;
60
+ }
61
+ case 'oklab': {
62
+ return culori.formatHex({ mode: 'oklab', l: color.l, a: color.a, b: color.b }) ?? null;
63
+ }
64
+ case 'lab': {
65
+ return culori.formatHex({ mode: 'lab', l: color.l, a: color.a, b: color.b }) ?? null;
66
+ }
67
+ case 'lch': {
68
+ return culori.formatHex({ mode: 'lch', l: color.l, c: color.c, h: color.h }) ?? null;
69
+ }
70
+ default: {
71
+ return null;
72
+ }
73
+ }
74
+ }
75
+ /**
76
+ * Convert a LAB / LCH / OKLAB / OKLCH color to sRGB hex via culori. RN
77
+ * can't evaluate these modern color spaces at paint time; compile-time
78
+ * lowering to sRGB is the only portable path.
79
+ * @param color Typed lab-family color.
80
+ * @returns Hex or rgba string in sRGB.
81
+ */
82
+ function labFamilyToHex(color) {
83
+ const hex = culoriHexFor(color);
84
+ if (!hex)
85
+ return color.alpha < 1 ? 'rgba(0, 0, 0, 0)' : 'transparent';
86
+ if (color.alpha >= 1)
87
+ return hex;
88
+ const back = culori.rgb(hex);
89
+ if (!back)
90
+ return hex;
91
+ return rgbIntsToString(clampByte(back.r * 255), clampByte(back.g * 255), clampByte(back.b * 255), color.alpha);
92
+ }
93
+ /**
94
+ * Convert a CSS `color(xyz-d50 …)` / `color(xyz-d65 …)` value to sRGB hex
95
+ * via culori.
96
+ * @param color Typed XYZ color (discriminated by `type`).
97
+ * @param color.type Whether the color is in the D50 or D65 XYZ space.
98
+ * @param color.x CIE X component (0–1).
99
+ * @param color.y CIE Y component (0–1).
100
+ * @param color.z CIE Z component (0–1).
101
+ * @param color.alpha Alpha channel (0–1).
102
+ * @returns `#rrggbb` string, or `'transparent'` when culori rejects it.
103
+ */
104
+ function xyzToHex(color) {
105
+ const mode = color.type === 'xyz-d50' ? 'xyz50' : 'xyz65';
106
+ const hex = culori.formatHex({ mode, x: color.x, y: color.y, z: color.z }) ?? null;
107
+ if (!hex)
108
+ return color.alpha < 1 ? 'rgba(0, 0, 0, 0)' : 'transparent';
109
+ if (color.alpha >= 1)
110
+ return hex;
111
+ const back = culori.rgb(hex);
112
+ if (!back)
113
+ return hex;
114
+ return rgbIntsToString(clampByte(back.r * 255), clampByte(back.g * 255), clampByte(back.b * 255), color.alpha);
115
+ }
116
+ /**
117
+ * Convert a lightningcss `CssColor` to an RN-safe color string. RGB
118
+ * passes through unchanged. LAB / LCH / OKLAB / OKLCH / `color(xyz-…)`
119
+ * forms go through culori to reach sRGB — RN's native view manager only
120
+ * understands sRGB-family strings. SystemColor keywords (`'background'`,
121
+ * `'canvas'`, …) pass through untouched; they have no RN analog and the
122
+ * runtime ignores unknown color strings gracefully.
123
+ * @param color Typed color value.
124
+ * @returns Color string RN accepts.
125
+ */
126
+ function cssColorToString(color) {
127
+ if (typeof color === 'string')
128
+ return color;
129
+ switch (color.type) {
130
+ case 'rgb': {
131
+ return rgbIntsToString(color.r, color.g, color.b, color.alpha);
132
+ }
133
+ case 'lab':
134
+ case 'lch':
135
+ case 'oklab':
136
+ case 'oklch': {
137
+ return labFamilyToHex(color);
138
+ }
139
+ case 'srgb':
140
+ case 'srgb-linear':
141
+ case 'display-p3':
142
+ case 'a98-rgb':
143
+ case 'prophoto-rgb':
144
+ case 'rec2020': {
145
+ return floatRgbToString(color.r, color.g, color.b, color.alpha);
146
+ }
147
+ case 'xyz-d50':
148
+ case 'xyz-d65': {
149
+ return xyzToHex(color);
150
+ }
151
+ case 'currentcolor': {
152
+ return 'currentColor';
153
+ }
154
+ case 'light-dark': {
155
+ return cssColorToString(color.light);
156
+ }
157
+ default: {
158
+ return 'transparent';
159
+ }
160
+ }
161
+ }
162
+
163
+ exports.cssColorToString = cssColorToString;
164
+ //# sourceMappingURL=color.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.cjs","sources":["../../../../../src/core/parser/color.ts"],"sourcesContent":["import type { CssColor, LABColor } from 'lightningcss'\nimport { formatHex, rgb as culoriRgb } from 'culori'\n\n/**\n * Clamp a 0-255 float to the integer byte range RN color strings accept.\n * @param value Unclamped float (may be negative or above 255).\n * @returns Integer in `[0, 255]`.\n */\nfunction clampByte(value: number): number {\n if (value < 0) return 0\n if (value > 255) return 255\n return Math.round(value)\n}\n\n/**\n * Two-digit hex encoding of a 0-255 byte.\n * @param byte Byte value (may be out-of-range — clamped).\n * @returns Zero-padded two-char hex string.\n */\nfunction byteToHex(byte: number): string {\n const hex = clampByte(byte).toString(16)\n return hex.length === 1 ? `0${hex}` : hex\n}\n\n/**\n * Format an integer-RGB triple + alpha as `#rrggbb` or `rgba(r, g, b, a)`.\n * @param r 0-255 red.\n * @param g 0-255 green.\n * @param b 0-255 blue.\n * @param alpha 0-1 alpha.\n * @returns Color string.\n */\nfunction rgbIntsToString(r: number, g: number, b: number, alpha: number): string {\n if (alpha >= 1) return `#${byteToHex(r)}${byteToHex(g)}${byteToHex(b)}`\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\n/**\n * Format a float-RGB triple + alpha (CSS `color(srgb …)` forms) as\n * hex/rgba.\n * @param r 0-1 red.\n * @param g 0-1 green.\n * @param b 0-1 blue.\n * @param alpha 0-1 alpha.\n * @returns Color string.\n */\nfunction floatRgbToString(r: number, g: number, b: number, alpha: number): string {\n return rgbIntsToString(clampByte(r * 255), clampByte(g * 255), clampByte(b * 255), alpha)\n}\n\n/**\n * Dispatch a LAB-family color through culori's hex formatter.\n * @param color Typed LAB-family color.\n * @returns `#rrggbb` string, or `null` when culori couldn't convert.\n */\nfunction culoriHexFor(color: LABColor): string | null {\n switch (color.type) {\n case 'oklch': {\n return formatHex({ mode: 'oklch', l: color.l, c: color.c, h: color.h }) ?? null\n }\n case 'oklab': {\n return formatHex({ mode: 'oklab', l: color.l, a: color.a, b: color.b }) ?? null\n }\n case 'lab': {\n return formatHex({ mode: 'lab', l: color.l, a: color.a, b: color.b }) ?? null\n }\n case 'lch': {\n return formatHex({ mode: 'lch', l: color.l, c: color.c, h: color.h }) ?? null\n }\n default: {\n return null\n }\n }\n}\n\n/**\n * Convert a LAB / LCH / OKLAB / OKLCH color to sRGB hex via culori. RN\n * can't evaluate these modern color spaces at paint time; compile-time\n * lowering to sRGB is the only portable path.\n * @param color Typed lab-family color.\n * @returns Hex or rgba string in sRGB.\n */\nfunction labFamilyToHex(color: LABColor): string {\n const hex = culoriHexFor(color)\n if (!hex) return color.alpha < 1 ? 'rgba(0, 0, 0, 0)' : 'transparent'\n if (color.alpha >= 1) return hex\n const back = culoriRgb(hex)\n if (!back) return hex\n return rgbIntsToString(clampByte(back.r * 255), clampByte(back.g * 255), clampByte(back.b * 255), color.alpha)\n}\n\n/**\n * Convert a CSS `color(xyz-d50 …)` / `color(xyz-d65 …)` value to sRGB hex\n * via culori.\n * @param color Typed XYZ color (discriminated by `type`).\n * @param color.type Whether the color is in the D50 or D65 XYZ space.\n * @param color.x CIE X component (0–1).\n * @param color.y CIE Y component (0–1).\n * @param color.z CIE Z component (0–1).\n * @param color.alpha Alpha channel (0–1).\n * @returns `#rrggbb` string, or `'transparent'` when culori rejects it.\n */\nfunction xyzToHex(color: { type: 'xyz-d50' | 'xyz-d65'; x: number; y: number; z: number; alpha: number }): string {\n const mode = color.type === 'xyz-d50' ? 'xyz50' : 'xyz65'\n const hex = formatHex({ mode, x: color.x, y: color.y, z: color.z }) ?? null\n if (!hex) return color.alpha < 1 ? 'rgba(0, 0, 0, 0)' : 'transparent'\n if (color.alpha >= 1) return hex\n const back = culoriRgb(hex)\n if (!back) return hex\n return rgbIntsToString(clampByte(back.r * 255), clampByte(back.g * 255), clampByte(back.b * 255), color.alpha)\n}\n\n/**\n * Convert a lightningcss `CssColor` to an RN-safe color string. RGB\n * passes through unchanged. LAB / LCH / OKLAB / OKLCH / `color(xyz-…)`\n * forms go through culori to reach sRGB — RN's native view manager only\n * understands sRGB-family strings. SystemColor keywords (`'background'`,\n * `'canvas'`, …) pass through untouched; they have no RN analog and the\n * runtime ignores unknown color strings gracefully.\n * @param color Typed color value.\n * @returns Color string RN accepts.\n */\nexport function cssColorToString(color: CssColor): string {\n if (typeof color === 'string') return color\n switch (color.type) {\n case 'rgb': {\n return rgbIntsToString(color.r, color.g, color.b, color.alpha)\n }\n case 'lab':\n case 'lch':\n case 'oklab':\n case 'oklch': {\n return labFamilyToHex(color)\n }\n case 'srgb':\n case 'srgb-linear':\n case 'display-p3':\n case 'a98-rgb':\n case 'prophoto-rgb':\n case 'rec2020': {\n return floatRgbToString(color.r, color.g, color.b, color.alpha)\n }\n case 'xyz-d50':\n case 'xyz-d65': {\n return xyzToHex(color)\n }\n case 'currentcolor': {\n return 'currentColor'\n }\n case 'light-dark': {\n return cssColorToString(color.light)\n }\n default: {\n return 'transparent'\n }\n }\n}\n"],"names":["formatHex","culoriRgb"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CssColor } from 'lightningcss';
2
+ /**
3
+ * Convert a lightningcss `CssColor` to an RN-safe color string. RGB
4
+ * passes through unchanged. LAB / LCH / OKLAB / OKLCH / `color(xyz-…)`
5
+ * forms go through culori to reach sRGB — RN's native view manager only
6
+ * understands sRGB-family strings. SystemColor keywords (`'background'`,
7
+ * `'canvas'`, …) pass through untouched; they have no RN analog and the
8
+ * runtime ignores unknown color strings gracefully.
9
+ * @param color Typed color value.
10
+ * @returns Color string RN accepts.
11
+ */
12
+ export declare function cssColorToString(color: CssColor): string;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ /** 1 rem = 16 px — matches the CSS default so unit-bare Tailwind spacing stays predictable. */
4
+ const REM_TO_PX = 16;
5
+ // Hot-path regexes hoisted to module scope so they're compiled once per
6
+ // process; an inline literal would recompile on every declaration.
7
+ const BARE_NUMBER_REGEX = /^-?\d+(?:\.\d+)?$/;
8
+ const LENGTH_PX_REGEX = /^(-?\d+(?:\.\d+)?)px$/;
9
+ const LENGTH_REM_REGEX = /^(-?\d+(?:\.\d+)?)rem$/;
10
+ const CALC_RATIO_REGEX = /^calc\(\s*(-?\d+(?:\.\d+)?)\s*\/\s*(-?\d+(?:\.\d+)?)\s*\)$/;
11
+ const CALC_MUL_REGEX = /^calc\(\s*(-?\d+(?:\.\d+)?)(?:px|rem)?\s*\*\s*(-?\d+(?:\.\d+)?)\s*\)$/;
12
+ const KEBAB_BOUNDARY_REGEX = /-([a-z])/g;
13
+
14
+ exports.BARE_NUMBER_REGEX = BARE_NUMBER_REGEX;
15
+ exports.CALC_MUL_REGEX = CALC_MUL_REGEX;
16
+ exports.CALC_RATIO_REGEX = CALC_RATIO_REGEX;
17
+ exports.KEBAB_BOUNDARY_REGEX = KEBAB_BOUNDARY_REGEX;
18
+ exports.LENGTH_PX_REGEX = LENGTH_PX_REGEX;
19
+ exports.LENGTH_REM_REGEX = LENGTH_REM_REGEX;
20
+ exports.REM_TO_PX = REM_TO_PX;
21
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs","sources":["../../../../../src/core/parser/constants.ts"],"sourcesContent":["/** 1 rem = 16 px — matches the CSS default so unit-bare Tailwind spacing stays predictable. */\nexport const REM_TO_PX = 16\n\n// Hot-path regexes hoisted to module scope so they're compiled once per\n// process; an inline literal would recompile on every declaration.\nexport const BARE_NUMBER_REGEX = /^-?\\d+(?:\\.\\d+)?$/\nexport const LENGTH_PX_REGEX = /^(-?\\d+(?:\\.\\d+)?)px$/\nexport const LENGTH_REM_REGEX = /^(-?\\d+(?:\\.\\d+)?)rem$/\nexport const CALC_RATIO_REGEX = /^calc\\(\\s*(-?\\d+(?:\\.\\d+)?)\\s*\\/\\s*(-?\\d+(?:\\.\\d+)?)\\s*\\)$/\nexport const CALC_MUL_REGEX = /^calc\\(\\s*(-?\\d+(?:\\.\\d+)?)(?:px|rem)?\\s*\\*\\s*(-?\\d+(?:\\.\\d+)?)\\s*\\)$/\nexport const KEBAB_BOUNDARY_REGEX = /-([a-z])/g\n"],"names":[],"mappings":";;AAAA;AACO,MAAM,SAAS,GAAG;AAEzB;AACA;AACO,MAAM,iBAAiB,GAAG;AAC1B,MAAM,eAAe,GAAG;AACxB,MAAM,gBAAgB,GAAG;AACzB,MAAM,gBAAgB,GAAG;AACzB,MAAM,cAAc,GAAG;AACvB,MAAM,oBAAoB,GAAG;;;;;;;;;;"}
@@ -0,0 +1,8 @@
1
+ /** 1 rem = 16 px — matches the CSS default so unit-bare Tailwind spacing stays predictable. */
2
+ export declare const REM_TO_PX = 16;
3
+ export declare const BARE_NUMBER_REGEX: RegExp;
4
+ export declare const LENGTH_PX_REGEX: RegExp;
5
+ export declare const LENGTH_REM_REGEX: RegExp;
6
+ export declare const CALC_RATIO_REGEX: RegExp;
7
+ export declare const CALC_MUL_REGEX: RegExp;
8
+ export declare const KEBAB_BOUNDARY_REGEX: RegExp;