@fluixi/utils 1.0.0-alpha.53

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 (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/index.cjs +1 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +1 -0
  7. package/dist/index.mjs +1 -0
  8. package/dist/lib/array/advanced.cjs +1 -0
  9. package/dist/lib/array/advanced.d.ts +1116 -0
  10. package/dist/lib/array/advanced.d.ts.map +1 -0
  11. package/dist/lib/array/advanced.js +2429 -0
  12. package/dist/lib/array/advanced.mjs +1 -0
  13. package/dist/lib/array/array.cjs +1 -0
  14. package/dist/lib/array/array.d.ts +6 -0
  15. package/dist/lib/array/array.d.ts.map +1 -0
  16. package/dist/lib/array/array.js +31 -0
  17. package/dist/lib/array/array.mjs +1 -0
  18. package/dist/lib/array/index.cjs +1 -0
  19. package/dist/lib/array/index.d.ts +4 -0
  20. package/dist/lib/array/index.d.ts.map +1 -0
  21. package/dist/lib/array/index.js +3 -0
  22. package/dist/lib/array/index.mjs +1 -0
  23. package/dist/lib/array/utils.cjs +1 -0
  24. package/dist/lib/array/utils.d.ts +100 -0
  25. package/dist/lib/array/utils.d.ts.map +1 -0
  26. package/dist/lib/array/utils.js +165 -0
  27. package/dist/lib/array/utils.mjs +1 -0
  28. package/dist/lib/color/color.cjs +1 -0
  29. package/dist/lib/color/color.d.ts +366 -0
  30. package/dist/lib/color/color.d.ts.map +1 -0
  31. package/dist/lib/color/color.js +722 -0
  32. package/dist/lib/color/color.mjs +1 -0
  33. package/dist/lib/color/constants.cjs +1 -0
  34. package/dist/lib/color/constants.d.ts +361 -0
  35. package/dist/lib/color/constants.d.ts.map +1 -0
  36. package/dist/lib/color/constants.js +358 -0
  37. package/dist/lib/color/constants.mjs +1 -0
  38. package/dist/lib/color/conversions.cjs +1 -0
  39. package/dist/lib/color/conversions.d.ts +166 -0
  40. package/dist/lib/color/conversions.d.ts.map +1 -0
  41. package/dist/lib/color/conversions.js +766 -0
  42. package/dist/lib/color/conversions.mjs +1 -0
  43. package/dist/lib/color/helpers.cjs +1 -0
  44. package/dist/lib/color/helpers.d.ts +75 -0
  45. package/dist/lib/color/helpers.d.ts.map +1 -0
  46. package/dist/lib/color/helpers.js +419 -0
  47. package/dist/lib/color/helpers.mjs +1 -0
  48. package/dist/lib/color/index.cjs +1 -0
  49. package/dist/lib/color/index.d.ts +12 -0
  50. package/dist/lib/color/index.d.ts.map +1 -0
  51. package/dist/lib/color/index.js +15 -0
  52. package/dist/lib/color/index.mjs +1 -0
  53. package/dist/lib/color/types.cjs +1 -0
  54. package/dist/lib/color/types.d.ts +179 -0
  55. package/dist/lib/color/types.d.ts.map +1 -0
  56. package/dist/lib/color/types.js +1 -0
  57. package/dist/lib/color/types.mjs +0 -0
  58. package/dist/lib/color/utils.cjs +1 -0
  59. package/dist/lib/color/utils.d.ts +199 -0
  60. package/dist/lib/color/utils.d.ts.map +1 -0
  61. package/dist/lib/color/utils.js +858 -0
  62. package/dist/lib/color/utils.mjs +1 -0
  63. package/dist/lib/compare/comparators.cjs +1 -0
  64. package/dist/lib/compare/comparators.d.ts +65 -0
  65. package/dist/lib/compare/comparators.d.ts.map +1 -0
  66. package/dist/lib/compare/comparators.js +210 -0
  67. package/dist/lib/compare/comparators.mjs +1 -0
  68. package/dist/lib/compare/index.cjs +1 -0
  69. package/dist/lib/compare/index.d.ts +2 -0
  70. package/dist/lib/compare/index.d.ts.map +1 -0
  71. package/dist/lib/compare/index.js +1 -0
  72. package/dist/lib/compare/index.mjs +1 -0
  73. package/dist/lib/crypto/hash.cjs +1 -0
  74. package/dist/lib/crypto/hash.d.ts +6 -0
  75. package/dist/lib/crypto/hash.d.ts.map +1 -0
  76. package/dist/lib/crypto/hash.js +53 -0
  77. package/dist/lib/crypto/hash.mjs +1 -0
  78. package/dist/lib/crypto/index.cjs +1 -0
  79. package/dist/lib/crypto/index.d.ts +2 -0
  80. package/dist/lib/crypto/index.d.ts.map +1 -0
  81. package/dist/lib/crypto/index.js +1 -0
  82. package/dist/lib/crypto/index.mjs +1 -0
  83. package/dist/lib/dom/events.cjs +1 -0
  84. package/dist/lib/dom/events.d.ts +159 -0
  85. package/dist/lib/dom/events.d.ts.map +1 -0
  86. package/dist/lib/dom/events.js +50 -0
  87. package/dist/lib/dom/events.mjs +1 -0
  88. package/dist/lib/dom/index.cjs +1 -0
  89. package/dist/lib/dom/index.d.ts +3 -0
  90. package/dist/lib/dom/index.d.ts.map +1 -0
  91. package/dist/lib/dom/index.js +2 -0
  92. package/dist/lib/dom/index.mjs +1 -0
  93. package/dist/lib/dom/utils.cjs +1 -0
  94. package/dist/lib/dom/utils.d.ts +6 -0
  95. package/dist/lib/dom/utils.d.ts.map +1 -0
  96. package/dist/lib/dom/utils.js +37 -0
  97. package/dist/lib/dom/utils.mjs +1 -0
  98. package/dist/lib/functions/functions.cjs +1 -0
  99. package/dist/lib/functions/functions.d.ts +329 -0
  100. package/dist/lib/functions/functions.d.ts.map +1 -0
  101. package/dist/lib/functions/functions.js +585 -0
  102. package/dist/lib/functions/functions.mjs +1 -0
  103. package/dist/lib/functions/index.cjs +1 -0
  104. package/dist/lib/functions/index.d.ts +3 -0
  105. package/dist/lib/functions/index.d.ts.map +1 -0
  106. package/dist/lib/functions/index.js +1 -0
  107. package/dist/lib/functions/index.mjs +1 -0
  108. package/dist/lib/functions/types.cjs +1 -0
  109. package/dist/lib/functions/types.d.ts +2 -0
  110. package/dist/lib/functions/types.d.ts.map +1 -0
  111. package/dist/lib/functions/types.js +1 -0
  112. package/dist/lib/functions/types.mjs +0 -0
  113. package/dist/lib/helpers.cjs +1 -0
  114. package/dist/lib/helpers.d.ts +13 -0
  115. package/dist/lib/helpers.d.ts.map +1 -0
  116. package/dist/lib/helpers.js +66 -0
  117. package/dist/lib/helpers.mjs +1 -0
  118. package/dist/lib/index.cjs +1 -0
  119. package/dist/lib/index.d.ts +6 -0
  120. package/dist/lib/index.d.ts.map +1 -0
  121. package/dist/lib/index.js +8 -0
  122. package/dist/lib/index.mjs +1 -0
  123. package/dist/lib/maths/constants.cjs +1 -0
  124. package/dist/lib/maths/constants.d.ts +84 -0
  125. package/dist/lib/maths/constants.d.ts.map +1 -0
  126. package/dist/lib/maths/constants.js +79 -0
  127. package/dist/lib/maths/constants.mjs +1 -0
  128. package/dist/lib/maths/fn/advanced.cjs +1 -0
  129. package/dist/lib/maths/fn/advanced.d.ts +149 -0
  130. package/dist/lib/maths/fn/advanced.d.ts.map +1 -0
  131. package/dist/lib/maths/fn/advanced.js +264 -0
  132. package/dist/lib/maths/fn/advanced.mjs +1 -0
  133. package/dist/lib/maths/fn/basic.cjs +1 -0
  134. package/dist/lib/maths/fn/basic.d.ts +182 -0
  135. package/dist/lib/maths/fn/basic.d.ts.map +1 -0
  136. package/dist/lib/maths/fn/basic.js +343 -0
  137. package/dist/lib/maths/fn/basic.mjs +1 -0
  138. package/dist/lib/maths/fn/complex.cjs +1 -0
  139. package/dist/lib/maths/fn/complex.d.ts +153 -0
  140. package/dist/lib/maths/fn/complex.d.ts.map +1 -0
  141. package/dist/lib/maths/fn/complex.js +383 -0
  142. package/dist/lib/maths/fn/complex.mjs +1 -0
  143. package/dist/lib/maths/fn/index.cjs +1 -0
  144. package/dist/lib/maths/fn/index.d.ts +10 -0
  145. package/dist/lib/maths/fn/index.d.ts.map +1 -0
  146. package/dist/lib/maths/fn/index.js +9 -0
  147. package/dist/lib/maths/fn/index.mjs +1 -0
  148. package/dist/lib/maths/fn/trigo.cjs +1 -0
  149. package/dist/lib/maths/fn/trigo.d.ts +147 -0
  150. package/dist/lib/maths/fn/trigo.d.ts.map +1 -0
  151. package/dist/lib/maths/fn/trigo.js +227 -0
  152. package/dist/lib/maths/fn/trigo.mjs +1 -0
  153. package/dist/lib/maths/fn/vector.cjs +1 -0
  154. package/dist/lib/maths/fn/vector.d.ts +512 -0
  155. package/dist/lib/maths/fn/vector.d.ts.map +1 -0
  156. package/dist/lib/maths/fn/vector.js +1136 -0
  157. package/dist/lib/maths/fn/vector.mjs +1 -0
  158. package/dist/lib/maths/formatter.cjs +1 -0
  159. package/dist/lib/maths/formatter.d.ts +35 -0
  160. package/dist/lib/maths/formatter.d.ts.map +1 -0
  161. package/dist/lib/maths/formatter.js +56 -0
  162. package/dist/lib/maths/formatter.mjs +1 -0
  163. package/dist/lib/maths/guards.cjs +1 -0
  164. package/dist/lib/maths/guards.d.ts +166 -0
  165. package/dist/lib/maths/guards.d.ts.map +1 -0
  166. package/dist/lib/maths/guards.js +315 -0
  167. package/dist/lib/maths/guards.mjs +1 -0
  168. package/dist/lib/maths/index.cjs +1 -0
  169. package/dist/lib/maths/index.d.ts +24 -0
  170. package/dist/lib/maths/index.d.ts.map +1 -0
  171. package/dist/lib/maths/index.js +29 -0
  172. package/dist/lib/maths/index.mjs +1 -0
  173. package/dist/lib/maths/parser.cjs +1 -0
  174. package/dist/lib/maths/parser.d.ts +20 -0
  175. package/dist/lib/maths/parser.d.ts.map +1 -0
  176. package/dist/lib/maths/parser.js +78 -0
  177. package/dist/lib/maths/parser.mjs +1 -0
  178. package/dist/lib/maths/random.cjs +1 -0
  179. package/dist/lib/maths/random.d.ts +27 -0
  180. package/dist/lib/maths/random.d.ts.map +1 -0
  181. package/dist/lib/maths/random.js +49 -0
  182. package/dist/lib/maths/random.mjs +1 -0
  183. package/dist/lib/maths/types/advanced.cjs +1 -0
  184. package/dist/lib/maths/types/advanced.d.ts +357 -0
  185. package/dist/lib/maths/types/advanced.d.ts.map +1 -0
  186. package/dist/lib/maths/types/advanced.js +5 -0
  187. package/dist/lib/maths/types/advanced.mjs +0 -0
  188. package/dist/lib/maths/types/basic.cjs +1 -0
  189. package/dist/lib/maths/types/basic.d.ts +95 -0
  190. package/dist/lib/maths/types/basic.d.ts.map +1 -0
  191. package/dist/lib/maths/types/basic.js +5 -0
  192. package/dist/lib/maths/types/basic.mjs +0 -0
  193. package/dist/lib/maths/types/index.cjs +1 -0
  194. package/dist/lib/maths/types/index.d.ts +4 -0
  195. package/dist/lib/maths/types/index.d.ts.map +1 -0
  196. package/dist/lib/maths/types/index.js +3 -0
  197. package/dist/lib/maths/types/index.mjs +0 -0
  198. package/dist/lib/maths/types/negative.cjs +1 -0
  199. package/dist/lib/maths/types/negative.d.ts +51 -0
  200. package/dist/lib/maths/types/negative.d.ts.map +1 -0
  201. package/dist/lib/maths/types/negative.js +5 -0
  202. package/dist/lib/maths/types/negative.mjs +0 -0
  203. package/dist/lib/maths/types/operations.cjs +1 -0
  204. package/dist/lib/maths/types/operations.d.ts +188 -0
  205. package/dist/lib/maths/types/operations.d.ts.map +1 -0
  206. package/dist/lib/maths/types/operations.js +6 -0
  207. package/dist/lib/maths/types/operations.mjs +0 -0
  208. package/dist/lib/object/clone.cjs +1 -0
  209. package/dist/lib/object/clone.d.ts +46 -0
  210. package/dist/lib/object/clone.d.ts.map +1 -0
  211. package/dist/lib/object/clone.js +104 -0
  212. package/dist/lib/object/clone.mjs +1 -0
  213. package/dist/lib/object/diff.cjs +1 -0
  214. package/dist/lib/object/diff.d.ts +203 -0
  215. package/dist/lib/object/diff.d.ts.map +1 -0
  216. package/dist/lib/object/diff.js +805 -0
  217. package/dist/lib/object/diff.mjs +1 -0
  218. package/dist/lib/object/getter-setter.cjs +1 -0
  219. package/dist/lib/object/getter-setter.d.ts +361 -0
  220. package/dist/lib/object/getter-setter.d.ts.map +1 -0
  221. package/dist/lib/object/getter-setter.js +1771 -0
  222. package/dist/lib/object/getter-setter.mjs +1 -0
  223. package/dist/lib/object/index.cjs +6 -0
  224. package/dist/lib/object/index.d.ts +13 -0
  225. package/dist/lib/object/index.d.ts.map +1 -0
  226. package/dist/lib/object/index.js +12 -0
  227. package/dist/lib/object/index.mjs +6 -0
  228. package/dist/lib/object/merge.cjs +1 -0
  229. package/dist/lib/object/merge.d.ts +93 -0
  230. package/dist/lib/object/merge.d.ts.map +1 -0
  231. package/dist/lib/object/merge.js +474 -0
  232. package/dist/lib/object/merge.mjs +1 -0
  233. package/dist/lib/object/object.cjs +1 -0
  234. package/dist/lib/object/object.d.ts +128 -0
  235. package/dist/lib/object/object.d.ts.map +1 -0
  236. package/dist/lib/object/object.js +432 -0
  237. package/dist/lib/object/object.mjs +1 -0
  238. package/dist/lib/object/omit.cjs +1 -0
  239. package/dist/lib/object/omit.d.ts +351 -0
  240. package/dist/lib/object/omit.d.ts.map +1 -0
  241. package/dist/lib/object/omit.js +656 -0
  242. package/dist/lib/object/omit.mjs +1 -0
  243. package/dist/lib/object/reconcile.cjs +1 -0
  244. package/dist/lib/object/reconcile.d.ts +7 -0
  245. package/dist/lib/object/reconcile.d.ts.map +1 -0
  246. package/dist/lib/object/reconcile.js +122 -0
  247. package/dist/lib/object/reconcile.mjs +1 -0
  248. package/dist/lib/object/selector.cjs +1 -0
  249. package/dist/lib/object/selector.d.ts +50 -0
  250. package/dist/lib/object/selector.d.ts.map +1 -0
  251. package/dist/lib/object/selector.js +371 -0
  252. package/dist/lib/object/selector.mjs +1 -0
  253. package/dist/lib/object/sort.cjs +1 -0
  254. package/dist/lib/object/sort.d.ts +149 -0
  255. package/dist/lib/object/sort.d.ts.map +1 -0
  256. package/dist/lib/object/sort.js +298 -0
  257. package/dist/lib/object/sort.mjs +1 -0
  258. package/dist/lib/object/transform.cjs +1 -0
  259. package/dist/lib/object/transform.d.ts +620 -0
  260. package/dist/lib/object/transform.d.ts.map +1 -0
  261. package/dist/lib/object/transform.js +1058 -0
  262. package/dist/lib/object/transform.mjs +1 -0
  263. package/dist/lib/object/types.cjs +1 -0
  264. package/dist/lib/object/types.d.ts +250 -0
  265. package/dist/lib/object/types.d.ts.map +1 -0
  266. package/dist/lib/object/types.js +1 -0
  267. package/dist/lib/object/types.mjs +0 -0
  268. package/dist/lib/object/utils.cjs +6 -0
  269. package/dist/lib/object/utils.d.ts +165 -0
  270. package/dist/lib/object/utils.d.ts.map +1 -0
  271. package/dist/lib/object/utils.js +444 -0
  272. package/dist/lib/object/utils.mjs +6 -0
  273. package/dist/lib/primitive/boolean/boolean.cjs +1 -0
  274. package/dist/lib/primitive/boolean/boolean.d.ts +276 -0
  275. package/dist/lib/primitive/boolean/boolean.d.ts.map +1 -0
  276. package/dist/lib/primitive/boolean/boolean.js +615 -0
  277. package/dist/lib/primitive/boolean/boolean.mjs +1 -0
  278. package/dist/lib/primitive/boolean/index.cjs +1 -0
  279. package/dist/lib/primitive/boolean/index.d.ts +3 -0
  280. package/dist/lib/primitive/boolean/index.d.ts.map +1 -0
  281. package/dist/lib/primitive/boolean/index.js +2 -0
  282. package/dist/lib/primitive/boolean/index.mjs +1 -0
  283. package/dist/lib/primitive/boolean/types.cjs +1 -0
  284. package/dist/lib/primitive/boolean/types.d.ts +14 -0
  285. package/dist/lib/primitive/boolean/types.d.ts.map +1 -0
  286. package/dist/lib/primitive/boolean/types.js +1 -0
  287. package/dist/lib/primitive/boolean/types.mjs +0 -0
  288. package/dist/lib/primitive/date/date.cjs +1 -0
  289. package/dist/lib/primitive/date/date.d.ts +641 -0
  290. package/dist/lib/primitive/date/date.d.ts.map +1 -0
  291. package/dist/lib/primitive/date/date.js +1998 -0
  292. package/dist/lib/primitive/date/date.mjs +1 -0
  293. package/dist/lib/primitive/date/index.cjs +1 -0
  294. package/dist/lib/primitive/date/index.d.ts +3 -0
  295. package/dist/lib/primitive/date/index.d.ts.map +1 -0
  296. package/dist/lib/primitive/date/index.js +2 -0
  297. package/dist/lib/primitive/date/index.mjs +1 -0
  298. package/dist/lib/primitive/date/types.cjs +1 -0
  299. package/dist/lib/primitive/date/types.d.ts +205 -0
  300. package/dist/lib/primitive/date/types.d.ts.map +1 -0
  301. package/dist/lib/primitive/date/types.js +7 -0
  302. package/dist/lib/primitive/date/types.mjs +0 -0
  303. package/dist/lib/primitive/index.cjs +5 -0
  304. package/dist/lib/primitive/index.d.ts +5 -0
  305. package/dist/lib/primitive/index.d.ts.map +1 -0
  306. package/dist/lib/primitive/index.js +4 -0
  307. package/dist/lib/primitive/index.mjs +5 -0
  308. package/dist/lib/primitive/string/index.cjs +5 -0
  309. package/dist/lib/primitive/string/index.d.ts +3 -0
  310. package/dist/lib/primitive/string/index.d.ts.map +1 -0
  311. package/dist/lib/primitive/string/index.js +2 -0
  312. package/dist/lib/primitive/string/index.mjs +5 -0
  313. package/dist/lib/primitive/string/parser-2.cjs +8 -0
  314. package/dist/lib/primitive/string/parser-2.d.ts +17 -0
  315. package/dist/lib/primitive/string/parser-2.d.ts.map +1 -0
  316. package/dist/lib/primitive/string/parser-2.js +656 -0
  317. package/dist/lib/primitive/string/parser-2.mjs +8 -0
  318. package/dist/lib/primitive/string/parser.cjs +3 -0
  319. package/dist/lib/primitive/string/parser.d.ts +9 -0
  320. package/dist/lib/primitive/string/parser.d.ts.map +1 -0
  321. package/dist/lib/primitive/string/parser.js +775 -0
  322. package/dist/lib/primitive/string/parser.mjs +3 -0
  323. package/dist/lib/primitive/string/string.cjs +5 -0
  324. package/dist/lib/primitive/string/string.d.ts +535 -0
  325. package/dist/lib/primitive/string/string.d.ts.map +1 -0
  326. package/dist/lib/primitive/string/string.js +1301 -0
  327. package/dist/lib/primitive/string/string.mjs +5 -0
  328. package/dist/lib/primitive/string/types.cjs +1 -0
  329. package/dist/lib/primitive/string/types.d.ts +318 -0
  330. package/dist/lib/primitive/string/types.d.ts.map +1 -0
  331. package/dist/lib/primitive/string/types.js +5 -0
  332. package/dist/lib/primitive/string/types.mjs +0 -0
  333. package/dist/lib/primitive/types.cjs +1 -0
  334. package/dist/lib/primitive/types.d.ts +27 -0
  335. package/dist/lib/primitive/types.d.ts.map +1 -0
  336. package/dist/lib/primitive/types.js +1 -0
  337. package/dist/lib/primitive/types.mjs +0 -0
  338. package/dist/lib/url/index.cjs +1 -0
  339. package/dist/lib/url/index.d.ts +3 -0
  340. package/dist/lib/url/index.d.ts.map +1 -0
  341. package/dist/lib/url/index.js +2 -0
  342. package/dist/lib/url/index.mjs +1 -0
  343. package/dist/lib/url/parser.cjs +1 -0
  344. package/dist/lib/url/parser.d.ts +216 -0
  345. package/dist/lib/url/parser.d.ts.map +1 -0
  346. package/dist/lib/url/parser.js +488 -0
  347. package/dist/lib/url/parser.mjs +1 -0
  348. package/dist/lib/url/types.cjs +1 -0
  349. package/dist/lib/url/types.d.ts +18 -0
  350. package/dist/lib/url/types.d.ts.map +1 -0
  351. package/dist/lib/url/types.js +1 -0
  352. package/dist/lib/url/types.mjs +0 -0
  353. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  354. package/package.json +150 -0
@@ -0,0 +1 @@
1
+ var f={x:.95047,y:1,z:1.08883},g=.008856,b=903.3;function p(o,n,t){return Math.max(n,Math.min(t,o))}function G(o,n=2){let t=Math.pow(10,n);return Math.round(o*t)/t}function M(o){let n=o.r/255,t=o.g/255,r=o.b/255,e=Math.max(n,t,r),c=Math.min(n,t,r),s=e-c,a=0,l=0,u=(e+c)/2;if(s!==0)switch(l=u>.5?s/(2-e-c):s/(e+c),e){case n:a=((t-r)/s+(t<r?6:0))/6;break;case t:a=((r-n)/s+2)/6;break;case r:a=((n-t)/s+4)/6;break}return{h:a*360,s:l*100,l:u*100,a:o.a}}function x(o){let n=o.r/255,t=o.g/255,r=o.b/255,e=Math.max(n,t,r),c=Math.min(n,t,r),s=e-c,a=0,l=e===0?0:s/e,u=e;if(s!==0)switch(e){case n:a=((t-r)/s+(t<r?6:0))/6;break;case t:a=((r-n)/s+2)/6;break;case r:a=((n-t)/s+4)/6;break}return{h:a*360,s:l*100,v:u*100,a:o.a}}function d(o){let n=x(o),t=(100-n.s)*n.v/100,r=100-n.v;return{h:n.h,w:t,b:r,a:o.a}}function O(o){let n=o.r/255,t=o.g/255,r=o.b/255,e=1-Math.max(n,t,r),c=e===1?0:(1-n-e)/(1-e),s=e===1?0:(1-t-e)/(1-e),a=e===1?0:(1-r-e)/(1-e);return{c:c*100,m:s*100,y:a*100,k:e*100,a:o.a}}function y(o){let n=o.r/255,t=o.g/255,r=o.b/255;n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;let e=n*.4124564+t*.3575761+r*.1804375,c=n*.2126729+t*.7151522+r*.072175,s=n*.0193339+t*.119192+r*.9503041;return{x:e*100,y:c*100,z:s*100,alpha:o.a}}function m(o){let n=y(o);return A(n)}function S(o){let n=m(o);return Y(n)}function T(o){let n=o.r/255,t=o.g/255,r=o.b/255,e=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,c=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,s=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,a=.4122214708*e+.5363325363*c+.0514459929*s,l=.2119034982*e+.6806995451*c+.1073969566*s,u=.0883024619*e+.2817188376*c+.6299787005*s,i=Math.cbrt(a),h=Math.cbrt(l),C=Math.cbrt(u);return{l:.2104542553*i+.793617785*h-.0040720468*C,a:1.9779984951*i-2.428592205*h+.4505937099*C,b:.0259040371*i+.7827717662*h-.808675766*C,alpha:o.a}}function K(o){let n=T(o);return W(n)}function H(o){let n=o.h/360,t=o.s/100,r=o.l/100,e,c,s;if(t===0)e=c=s=r;else{let a=(i,h,C)=>(C<0&&(C+=1),C>1&&(C-=1),C<.16666666666666666?i+(h-i)*6*C:C<.5?h:C<.6666666666666666?i+(h-i)*(.6666666666666666-C)*6:i),l=r<.5?r*(1+t):r+t-r*t,u=2*r-l;e=a(u,l,n+1/3),c=a(u,l,n),s=a(u,l,n-1/3)}return{r:Math.round(e*255),g:Math.round(c*255),b:Math.round(s*255),a:o.a}}function q(o){let n=H(o);return x(n)}function D(o){let n=H(o);return d(n)}function L(o){let n=o.h/360,t=o.s/100,r=o.v/100,e=Math.floor(n*6),c=n*6-e,s=r*(1-t),a=r*(1-c*t),l=r*(1-(1-c)*t),u,i,h;switch(e%6){case 0:u=r,i=l,h=s;break;case 1:u=a,i=r,h=s;break;case 2:u=s,i=r,h=l;break;case 3:u=s,i=a,h=r;break;case 4:u=l,i=s,h=r;break;default:u=r,i=s,h=a;break}return{r:Math.round(u*255),g:Math.round(i*255),b:Math.round(h*255),a:o.a}}function F(o){let n=L(o);return M(n)}function N(o){let n=(100-o.s)*o.v/100,t=100-o.v;return{h:o.h,w:n,b:t,a:o.a}}function B(o){let n=o.h,t=o.w/100,r=o.b/100,e=t+r;e>1&&(t/=e,r/=e);let c=1-r,s=c===0?0:1-t/c;return L({h:n,s:s*100,v:c*100,a:o.a})}function U(o){let n=B(o);return M(n)}function J(o){let n=B(o);return x(n)}function w(o){let n=o.c/100,t=o.m/100,r=o.y/100,e=o.k/100,c=255*(1-n)*(1-e),s=255*(1-t)*(1-e),a=255*(1-r)*(1-e);return{r:Math.round(c),g:Math.round(s),b:Math.round(a),a:o.a}}function Q(o){let n=w(o);return M(n)}function $(o){let n=w(o);return x(n)}function k(o){let n=o.x/100,t=o.y/100,r=o.z/100,e=n*3.2404542+t*-1.5371385+r*-.4985314,c=n*-.969266+t*1.8760108+r*.041556,s=n*.0556434+t*-.2040259+r*1.0572252;return e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,c=c>.0031308?1.055*Math.pow(c,1/2.4)-.055:12.92*c,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:12.92*s,{r:Math.round(p(e*255,0,255)),g:Math.round(p(c*255,0,255)),b:Math.round(p(s*255,0,255)),a:o.alpha||1}}function A(o){let n=o.x/f.x/100,t=o.y/f.y/100,r=o.z/f.z/100,e=n>g?Math.cbrt(n):(b*n+16)/116,c=t>g?Math.cbrt(t):(b*t+16)/116,s=r>g?Math.cbrt(r):(b*r+16)/116,a=116*c-16,l=500*(e-c),u=200*(c-s);return{l:p(a,0,100),a:l,b:u,alpha:o.alpha}}function R(o){let n=(o.l+16)/116,t=o.a/500+n,r=n-o.b/200,e=t*t*t>g?t*t*t:(116*t-16)/b,c=o.l>b*g?Math.pow((o.l+16)/116,3):o.l/b,s=r*r*r>g?r*r*r:(116*r-16)/b;return{x:e*f.x*100,y:c*f.y*100,z:s*f.z*100,alpha:o.alpha}}function v(o){let n=R(o);return k(n)}function Y(o){let n=Math.sqrt(o.a*o.a+o.b*o.b),t=Math.atan2(o.b,o.a)*180/Math.PI;return t<0&&(t+=360),{l:o.l,c:n,h:t,alpha:o.alpha}}function z(o){let n=o.h*Math.PI/180,t=o.c*Math.cos(n),r=o.c*Math.sin(n);return{l:o.l,a:t,b:r,alpha:o.alpha}}function V(o){let n=z(o);return v(n)}function oo(o){let n=z(o);return R(n)}function X(o){let n=o.l+.3963377774*o.a+.2158037573*o.b,t=o.l-.1055613458*o.a-.0638541728*o.b,r=o.l-.0894841775*o.a-1.291485548*o.b,e=n*n*n,c=t*t*t,s=r*r*r,a=4.0767416621*e-3.3077115913*c+.2309699292*s,l=-1.2684380046*e+2.6097574011*c-.3413193965*s,u=-.0041960863*e-.7034186147*c+1.707614701*s;return a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:12.92*a,l=l>.0031308?1.055*Math.pow(l,1/2.4)-.055:12.92*l,u=u>.0031308?1.055*Math.pow(u,1/2.4)-.055:12.92*u,{r:Math.round(p(a*255,0,255)),g:Math.round(p(l*255,0,255)),b:Math.round(p(u*255,0,255)),a:o.alpha}}function W(o){let n=Math.sqrt(o.a*o.a+o.b*o.b),t=Math.atan2(o.b,o.a)*180/Math.PI;return t<0&&(t+=360),{l:o.l,c:n,h:t,alpha:o.alpha}}function P(o){let n=o.h*Math.PI/180,t=o.c*Math.cos(n),r=o.c*Math.sin(n);return{l:o.l,a:t,b:r,alpha:o.alpha}}function Z(o){let n=P(o);return X(n)}function _(o){if("r"in o&&"g"in o&&"b"in o)return o;if("h"in o&&"s"in o&&"l"in o)return H(o);if("h"in o&&"s"in o&&"v"in o)return L(o);if("h"in o&&"w"in o&&"b"in o)return B(o);if("c"in o&&"m"in o&&"y"in o&&"k"in o)return w(o);if("x"in o&&"y"in o&&"z"in o)return k(o);if("l"in o&&"a"in o&&"b"in o&&!("c"in o)&&!("h"in o))return v(o);if("l"in o&&"c"in o&&"h"in o){let n=o;return n.l<=1?Z(o):V(n)}throw new Error("Unknown color format")}function I(o,n,t={}){let{round:r=!0,precision:e=2,preserveAlpha:c=!0}=t,s=_(o),a;switch(n.toLowerCase()){case"rgb":a=s;break;case"hsl":a=M(s);break;case"hsv":a=x(s);break;case"hwb":a=d(s);break;case"cmyk":a=O(s);break;case"xyz":a=y(s);break;case"lab":a=m(s);break;case"lch":a=S(s);break;case"oklab":a=T(s);break;case"oklch":a=K(s);break;default:a=s}return r&&a&&Object.keys(a).forEach(l=>{typeof a[l]=="number"&&l!=="a"&&l!=="alpha"&&(a[l]=G(a[l],e))}),c||(delete a.a,delete a.alpha),a}function no(o,n,t={}){return o.map(r=>I(r,n,t))}function E(o,n){let t={rgb:["hsl","hsv","hwb","cmyk","xyz","lab","lch","oklab","oklch"],hsl:["rgb","hsv","hwb"],hsv:["rgb","hsl","hwb"],hwb:["rgb","hsl","hsv"],cmyk:["rgb","hsl","hsv"],xyz:["rgb","lab"],lab:["rgb","xyz","lch"],lch:["rgb","lab","xyz"],oklab:["rgb","oklch"],oklch:["rgb","oklab"]};return o=o.toLowerCase(),n=n.toLowerCase(),o===n?[o]:t[o]?.includes(n)?[o,n]:t[o]?.includes("rgb")&&t.rgb?.includes(n)?[o,"rgb",n]:["lab","lch"].includes(o)&&["lab","lch"].includes(n)&&o!==n?[o,"xyz",n]:["oklab","oklch"].includes(o)&&["oklab","oklch"].includes(n)&&o!==n?[o,"oklab",n]:t[o]&&t.rgb?.includes(n)?[o,"rgb",n]:null}function to(o,n){let t=E(o,n);return t!==null&&t.length<=2}function j(){return["rgb","hsl","hsv","hwb","cmyk","xyz","lab","lch","oklab","oklch"]}function ro(o){return j().includes(o.toLowerCase())}export{_ as anyToRgb,no as batchConvert,Q as cmykToHsl,$ as cmykToHsv,w as cmykToRgb,I as convertColor,E as getConversionPath,j as getSupportedFormats,to as hasDirectConversion,q as hslToHsv,D as hslToHwb,H as hslToRgb,F as hsvToHsl,N as hsvToHwb,L as hsvToRgb,U as hwbToHsl,J as hwbToHsv,B as hwbToRgb,ro as isValidFormat,Y as labToLch,v as labToRgb,R as labToXyz,z as lchToLab,V as lchToRgb,oo as lchToXyz,W as oklabToOklch,X as oklabToRgb,P as oklchToOklab,Z as oklchToRgb,O as rgbToCmyk,M as rgbToHsl,x as rgbToHsv,d as rgbToHwb,m as rgbToLab,S as rgbToLch,T as rgbToOklab,K as rgbToOklch,y as rgbToXyz,A as xyzToLab,k as xyzToRgb};
@@ -0,0 +1 @@
1
+ "use strict";var Q=Object.defineProperty;var kt=Object.getOwnPropertyDescriptor;var wt=Object.getOwnPropertyNames;var Rt=Object.prototype.hasOwnProperty;var Ot=(t,e)=>{for(var r in e)Q(t,r,{get:e[r],enumerable:!0})},Ht=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of wt(e))!Rt.call(t,s)&&s!==r&&Q(t,s,{get:()=>e[s],enumerable:!(n=kt(e,s))||n.enumerable});return t};var Lt=t=>Ht(Q({},"__esModule",{value:!0}),t);var Zt={};Ot(Zt,{adjustTemperature:()=>Gt,blendColors:()=>Xt,colorDistance:()=>Mt,findClosestColor:()=>Vt,generateGradient:()=>Yt,getColorName:()=>It,getDominantComponent:()=>Wt,getPerceivedBrightness:()=>yt,invertColor:()=>Pt,isDark:()=>Et,isLight:()=>xt,randomColor:()=>qt,simulateColorBlindness:()=>Ft,toGrayscale:()=>Kt,toSepia:()=>zt});module.exports=Lt(Zt);var Y={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",transparent:"transparent",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",zinc:"#71717a",stone:"#78716c",neutral:"#737373",slate:"#64748b",gray50:"#f9fafb",gray100:"#f3f4f6",gray200:"#e5e7eb",gray300:"#d1d5db",gray400:"#9ca3af",gray500:"#6b7280",gray600:"#4b5563",gray700:"#374151",gray800:"#1f2937",gray900:"#111827",gray950:"#030712",red50:"#fef2f2",red100:"#fee2e2",red200:"#fecaca",red300:"#fca5a5",red400:"#f87171",red500:"#ef4444",red600:"#dc2626",red700:"#b91c1c",red800:"#991b1b",red900:"#7f1d1d",red950:"#450a0a",orange50:"#fff7ed",orange100:"#ffedd5",orange200:"#fed7aa",orange300:"#fdba74",orange400:"#fb923c",orange500:"#f97316",orange600:"#ea580c",orange700:"#c2410c",orange800:"#9a3412",orange900:"#7c2d12",orange950:"#431407",amber50:"#fffbeb",amber100:"#fef3c7",amber200:"#fde68a",amber300:"#fcd34d",amber400:"#fbbf24",amber500:"#f59e0b",amber600:"#d97706",amber700:"#b45309",amber800:"#92400e",amber900:"#78350f",amber950:"#451a03",yellow50:"#fefce8",yellow100:"#fef9c3",yellow200:"#fef08a",yellow300:"#fde047",yellow400:"#facc15",yellow500:"#eab308",yellow600:"#ca8a04",yellow700:"#a16207",yellow800:"#854d0e",yellow900:"#713f12",yellow950:"#422006",lime50:"#f7fee7",lime100:"#ecfccb",lime200:"#d9f99d",lime300:"#bef264",lime400:"#a3e635",lime500:"#84cc16",lime600:"#65a30d",lime700:"#4d7c0f",lime800:"#3f6212",lime900:"#365314",lime950:"#1a2e05",green50:"#f0fdf4",green100:"#dcfce7",green200:"#bbf7d0",green300:"#86efac",green400:"#4ade80",green500:"#22c55e",green600:"#16a34a",green700:"#15803d",green800:"#166534",green900:"#14532d",green950:"#052e16",emerald50:"#ecfdf5",emerald100:"#d1fae5",emerald200:"#a7f3d0",emerald300:"#6ee7b7",emerald400:"#34d399",emerald500:"#10b981",emerald600:"#059669",emerald700:"#047857",emerald800:"#065f46",emerald900:"#064e3b",emerald950:"#022c22",teal50:"#f0fdfa",teal100:"#ccfbf1",teal200:"#99f6e4",teal300:"#5eead4",teal400:"#2dd4bf",teal500:"#14b8a6",teal600:"#0d9488",teal700:"#0f766e",teal800:"#115e59",teal900:"#134e4a",teal950:"#042f2e",cyan50:"#ecfeff",cyan100:"#cffafe",cyan200:"#a5f3fc",cyan300:"#67e8f9",cyan400:"#22d3ee",cyan500:"#06b6d4",cyan600:"#0891b2",cyan700:"#0e7490",cyan800:"#155e75",cyan900:"#164e63",cyan950:"#083344",sky50:"#f0f9ff",sky100:"#e0f2fe",sky200:"#bae6fd",sky300:"#7dd3fc",sky400:"#38bdf8",sky500:"#0ea5e9",sky600:"#0284c7",sky700:"#0369a1",sky800:"#075985",sky900:"#0c4a6e",sky950:"#082f49",blue50:"#eff6ff",blue100:"#dbeafe",blue200:"#bfdbfe",blue300:"#93c5fd",blue400:"#60a5fa",blue500:"#3b82f6",blue600:"#2563eb",blue700:"#1d4ed8",blue800:"#1e40af",blue900:"#1e3a8a",blue950:"#172554",indigo50:"#eef2ff",indigo100:"#e0e7ff",indigo200:"#c7d2fe",indigo300:"#a5b4fc",indigo400:"#818cf8",indigo500:"#6366f1",indigo600:"#4f46e5",indigo700:"#4338ca",indigo800:"#3730a3",indigo900:"#312e81",indigo950:"#1e1b4b",violet50:"#f5f3ff",violet100:"#ede9fe",violet200:"#ddd6fe",violet300:"#c4b5fd",violet400:"#a78bfa",violet500:"#8b5cf6",violet600:"#7c3aed",violet700:"#6d28d9",violet800:"#5b21b6",violet900:"#4c1d95",violet950:"#2e1065",purple50:"#faf5ff",purple100:"#f3e8ff",purple200:"#e9d5ff",purple300:"#d8b4fe",purple400:"#c084fc",purple500:"#a855f7",purple600:"#9333ea",purple700:"#7e22ce",purple800:"#6b21a8",purple900:"#581c87",purple950:"#3b0764",fuchsia50:"#fdf4ff",fuchsia100:"#fae8ff",fuchsia200:"#f5d0fe",fuchsia300:"#f0abfc",fuchsia400:"#e879f9",fuchsia500:"#d946ef",fuchsia600:"#c026d3",fuchsia700:"#a21caf",fuchsia800:"#86198f",fuchsia900:"#701a75",fuchsia950:"#4a044e",pink50:"#fdf2f8",pink100:"#fce7f3",pink200:"#fbcfe8",pink300:"#f9a8d4",pink400:"#f472b6",pink500:"#ec4899",pink600:"#db2777",pink700:"#be185d",pink800:"#9d174d",pink900:"#831843",pink950:"#500724",rose50:"#fff1f2",rose100:"#ffe4e6",rose200:"#fecdd3",rose300:"#fda4af",rose400:"#fb7185",rose500:"#f43f5e",rose600:"#e11d48",rose700:"#be123c",rose800:"#9f1239",rose900:"#881337",rose950:"#4c0519"};var W={LEGACY_RGB:/^rgb\(\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s*,\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s*,\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s*\)$/i,MODERN_RGB:/^rgb\(\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s+(\d{1,3}|\.\d+|\d+\.\d+%?)\s+(\d{1,3}|\.\d+|\d+\.\d+%?)\s*\)$/i,LEGACY_RGBA:/^rgba\(\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s*,\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s*,\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s*,\s*(0|1|0?\.\d+|\d{1,3}%?|\.\d+%?)\s*\)$/i,MODERN_RGBA:/^rgba?\(\s*(\d{1,3}|\.\d+|\d+\.\d+%?)\s+(\d{1,3}|\.\d+|\d+\.\d+%?)\s+(\d{1,3}|\.\d+|\d+\.\d+%?)\s*\/\s*(0|1|0?\.\d+|\d{1,3}%?|\.\d+%?)\s*\)$/i,COMPREHENSIVE:/^rgba?\(\s*((?:\d{1,3}(?:\.\d+)?%?|\.\d+%?|var\([^)]+\)))\s*(?:[,\s]\s*((?:\d{1,3}(?:\.\d+)?%?|\.\d+%?|var\([^)]+\))))?\s*(?:[,\s]\s*((?:\d{1,3}(?:\.\d+)?%?|\.\d+%?|var\([^)]+\))))?\s*(?:(?:\s*[,\s]?\s*\/?\s*|\s*\/\s*)((?:0|1|0?\.\d+|\.\d+|\d{1,3}%?|var\([^)]+\))))?\s*\)$/i,STRICT_RGB:/^rgb\(\s*((?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]|\d{1,2}(?:\.\d+)?%|100%|\.\d+%?|var\([^)]+\)))\s*,\s*((?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]|\d{1,2}(?:\.\d+)?%|100%|\.\d+%?|var\([^)]+\)))\s*,\s*((?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]|\d{1,2}(?:\.\d+)?%|100%|\.\d+%?|var\([^)]+\)))\s*\)$/i,STRICT_RGBA:/^rgba\(\s*((?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]|\d{1,2}(?:\.\d+)?%|100%|\.\d+%?|var\([^)]+\)))\s*,\s*((?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]|\d{1,2}(?:\.\d+)?%|100%|\.\d+%?|var\([^)]+\)))\s*,\s*((?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]|\d{1,2}(?:\.\d+)?%|100%|\.\d+%?|var\([^)]+\)))\s*,\s*((?:0|1|0?\.\d+|\.\d+|\d{1,2}(?:\.\d+)?%|100%|var\([^)]+\)))\s*\)$/i,MODERN_RGB_ALPHA:/^rgba?\(\s*((?:\d{1,3}(?:\.\d+)?%?|\.\d+%?|var\([^)]+\)))\s+((?:\d{1,3}(?:\.\d+)?%?|\.\d+%?|var\([^)]+\)))\s+((?:\d{1,3}(?:\.\d+)?%?|\.\d+%?|var\([^)]+\)))\s*(?:\/\s*((?:0|1|0?\.\d+|\.\d+|\d{1,3}%?|var\([^)]+\))))?\s*\)$/i},K=t=>{let e=t.trim().toLowerCase();if(!e||e.includes("var("))return null;let r=l=>{if(!l)return null;let b=l.trim();if(!b||b.includes("var("))return null;if(b.endsWith("%")){let u=parseFloat(b);if(isNaN(u))return null;let h=Math.max(0,Math.min(100,u));return Math.round(h*255/100)}let c=parseFloat(b);return isNaN(c)?null:Math.round(Math.max(0,Math.min(255,c)))},n=l=>{if(!l)return 1;let b=l.trim();if(!b||b.includes("var("))return 1;if(b.endsWith("%")){let u=parseFloat(b);return isNaN(u)?1:Math.max(0,Math.min(100,u))/100}let c=parseFloat(b);return isNaN(c)?1:Math.max(0,Math.min(1,c))},s=/^rgba?\(\s*([^,]+)\s*,\s*([^,]+)\s*,\s*([^,]+)\s*(?:,\s*([^\)]+))?\s*\)$/,o=e.match(s);if(o){let l=r(o[1]),b=r(o[2]),c=r(o[3]),u=n(o[4]);if(l!==null&&b!==null&&c!==null)return[l,b,c,u]}let i=/^rgba?\(\s*([^\s\/]+)\s+([^\s\/]+)\s+([^\s\/]+)\s*(?:\/\s*([^\)]+))?\s*\)$/;if(o=e.match(i),o){let l=r(o[1]),b=r(o[2]),c=r(o[3]),u=n(o[4]);if(l!==null&&b!==null&&c!==null)return[l,b,c,u]}let a=/^rgb\(\s*([^\s,]+)\s+([^\s,]+)\s+([^\s,]+)\s*\)$/;if(o=e.match(a),o){let l=r(o[1]),b=r(o[2]),c=r(o[3]);if(l!==null&&b!==null&&c!==null)return[l,b,c,1]}return null},X={HEX:/^#([a-fA-F0-9]{3,4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/,RGB:W.COMPREHENSIVE,HSL:/^hsla?\(\s*(\d+(?:\.\d+)?)(?:deg|rad|grad|turn)?\s*,\s*(\d+(?:\.\d+)?)%\s*,\s*(\d+(?:\.\d+)?)%(?:\s*[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i,OKLCH:/^oklch\(\s*(\d+(?:\.\d+)?%?)\s+(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)(?:\s+[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i,OKLAB:/^oklab\(\s*(\d+(?:\.\d+)?%?)\s+([+-]?\d+(?:\.\d+)?)\s+([+-]?\d+(?:\.\d+)?)(?:\s+[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i,HSV:/^hsv\(\s*(\d+(?:\.\d+)?)(?:deg|rad|grad|turn)?\s*,\s*(\d+(?:\.\d+)?)%\s*,\s*(\d+(?:\.\d+)?)%(?:\s*[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i,CMYK:/^cmyk\(\s*(\d+(?:\.\d+)?)%\s*,\s*(\d+(?:\.\d+)?)%\s*,\s*(\d+(?:\.\d+)?)%\s*,\s*(\d+(?:\.\d+)?)%(?:\s*[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i,COLOR_FUNCTION:/^color\(\s*([a-z]+)\s+((?:\d+(?:\.\d+)?%?\s+)*\d+(?:\.\d+)?%?)(?:\s*[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i,LAB:/^lab\(\s*(\d+(?:\.\d+)?%?)\s+([+-]?\d+(?:\.\d+)?)\s+([+-]?\d+(?:\.\d+)?)(?:\s*[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i,LCH:/^lch\(\s*(\d+(?:\.\d+)?%?)\s+(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)(?:\s*[,\s/]\s*(\d*\.?\d+%?))?\s*\)$/i};var C=t=>{if(!t||typeof t!="string")return null;let e=t.trim().toLowerCase();if(!e)return null;if(e==="transparent")return[0,0,0,0];let r=e;if(Y[r])return C(Y[r]);let n=K(e);if(n)return n;let s=e.match(X.HEX);if(s){let a=s[1];(a.length===3||a.length===4)&&(a=a.split("").map(h=>h+h).join(""));let l=parseInt(a.substring(0,2),16),b=parseInt(a.substring(2,4),16),c=parseInt(a.substring(4,6),16),u=a.length===8?parseInt(a.substring(6,8),16)/255:1;if(!isNaN(l)&&!isNaN(b)&&!isNaN(c)&&!isNaN(u))return[l,b,c,u]}let o=e.match(X.HSL);if(o){let a=parseFloat(o[1]),l=parseFloat(o[2])/100,b=parseFloat(o[3])/100,c=o[4]?P(o[4]):1;if(!isNaN(a)&&!isNaN(l)&&!isNaN(b)&&!isNaN(c))return ct(a,l,b,c)}let i=e.match(X.OKLCH);if(i){let a=P(i[1]),l=parseFloat(i[2]),b=parseFloat(i[3]),c=i[4]?P(i[4]):1;if(!isNaN(a)&&!isNaN(l)&&!isNaN(b)&&!isNaN(c))return vt(a,l,b,c)}return null},ct=(t,e,r,n=1)=>{t=t%360,t<0&&(t+=360);let s=(1-Math.abs(2*r-1))*e,o=s*(1-Math.abs(t/60%2-1)),i=r-s/2,a=0,l=0,b=0;return t>=0&&t<60?[a,l,b]=[s,o,0]:t>=60&&t<120?[a,l,b]=[o,s,0]:t>=120&&t<180?[a,l,b]=[0,s,o]:t>=180&&t<240?[a,l,b]=[0,o,s]:t>=240&&t<300?[a,l,b]=[o,0,s]:t>=300&&t<360&&([a,l,b]=[s,0,o]),[Math.round((a+i)*255),Math.round((l+i)*255),Math.round((b+i)*255),n]},vt=(t,e,r,n=1)=>{let s=r%360,o=Math.min(100,e*100),i=t*100;return ct(s,o/100,i/100,n)},tt=(t,e,r,n=1)=>(a=>typeof a=="string"&&a.includes("var("))(n)||typeof n=="number"&&n!==1?`rgba(${t} ${e} ${r} / ${n})`:`rgb(${t} ${e} ${r})`,E=t=>{let e=Math.round(t).toString(16);return e.length===1?`0${e}`:e},P=t=>t.endsWith("%")?parseFloat(t)/100:parseFloat(t),et=t=>{if(t.toLowerCase()in Y)return!0;if(t.toLowerCase().trim().startsWith("rgb"))return K(t)!==null;let{RGB:e,...r}=X;return Object.values(r).some(n=>n.test(t))},I=(t,e,r,n=1)=>{let s=`#${E(t)}${E(e)}${E(r)}`;return n<1?`${s}${E(Math.round(n*255))}`:s},$=(t,e,r,n=1)=>{let s=t/255,o=e/255,i=r/255,a=Math.max(s,o,i),l=Math.min(s,o,i),b=0,c=0,u=(a+l)/2;if(a!==l){let d=a-l;switch(c=u>.5?d/(2-a-l):d/(a+l),a){case s:b=(o-i)/d+(o<i?6:0);break;case o:b=(i-s)/d+2;break;case i:b=(s-o)/d+4;break}b/=6}b=Math.round(b*360),c=Math.round(c*100);let h=Math.round(u*100);return n===1?`hsl(${b}, ${c}%, ${h}%)`:`hsla(${b}, ${c}%, ${h}%, ${n})`},bt=(t,e,r,n=1)=>{let s=t/255,o=e/255,i=r/255,a=Math.max(s,o,i),l=Math.min(s,o,i),b=a-l,c=0;if(b!==0){switch(a){case s:c=(o-i)/b+(o<i?6:0);break;case o:c=(i-s)/b+2;break;case i:c=(s-o)/b+4;break}c/=6}let u=a===0?0:b/a,h=a;c=Math.round(c*360);let d=Math.round(u*100),g=Math.round(h*100);return n===1?`hsv(${c}, ${d}%, ${g}%)`:`hsva(${c}, ${d}%, ${g}%, ${n})`},ut=(t,e,r,n=1)=>{if(t===0&&e===0&&r===0)return"cmyk(0%, 0%, 0%, 100%)";let s=t/255,o=e/255,i=r/255,a=1-Math.max(s,o,i),l=(1-s-a)/(1-a),b=(1-o-a)/(1-a),c=(1-i-a)/(1-a),u=Math.round(l*100),h=Math.round(b*100),d=Math.round(c*100),g=Math.round(a*100);return`cmyk(${u}%, ${h}%, ${d}%, ${g}%)`},j=(t,e,r)=>{let[n,s,o]=[t,e,r].map(i=>(i=i/255,i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)));return .2126*n+.7152*s+.0722*o},ht=(t,e)=>{let r=C(t),n=C(e);if(!r||!n)return 1;let s=j(r[0],r[1],r[2]),o=j(n[0],n[1],n[2]),i=Math.max(s,o),a=Math.min(s,o);return(i+.05)/(a+.05)},rt=(t,e)=>{let r=C(t);if(!r)return t;let[n,s,o,i]=r;e.alpha!==void 0&&(i=Math.max(0,Math.min(1,e.alpha)));let a=0,l=0,b=0;if(e.lightness!==void 0||e.saturation!==void 0||e.hue!==void 0){let c=n/255,u=s/255,h=o/255,d=Math.max(c,u,h),g=Math.min(c,u,h);if(b=(d+g)/2,d!==g){let v=d-g;switch(l=b>.5?v/(2-d-g):v/(d+g),d){case c:a=(u-h)/v+(u<h?6:0);break;case u:a=(h-c)/v+2;break;case h:a=(c-u)/v+4;break}a/=6}a*=360,l*=100,b*=100,e.hue!==void 0&&(a=(a+e.hue)%360,a<0&&(a+=360)),e.saturation!==void 0&&(l=Math.max(0,Math.min(100,l+e.saturation))),e.lightness!==void 0&&(b=Math.max(0,Math.min(100,b+e.lightness)));let m=a/360,L=l/100,R=b/100,p=(1-Math.abs(2*R-1))*L,O=p*(1-Math.abs(m*6%2-1)),y=R-p/2,M=0,k=0,w=0;m<1/6?[M,k,w]=[p,O,0]:m<2/6?[M,k,w]=[O,p,0]:m<3/6?[M,k,w]=[0,p,O]:m<4/6?[M,k,w]=[0,O,p]:m<5/6?[M,k,w]=[O,0,p]:[M,k,w]=[p,0,O],n=Math.round((M+y)*255),s=Math.round((k+y)*255),o=Math.round((w+y)*255)}if(e.contrast!==void 0){let c=e.contrast/100*2.55,u=(n+s+o)/3;n=Math.round(u+(n-u)*(1+c)),s=Math.round(u+(s-u)*(1+c)),o=Math.round(u+(o-u)*(1+c)),n=Math.max(0,Math.min(255,n)),s=Math.max(0,Math.min(255,s)),o=Math.max(0,Math.min(255,o))}return I(n,s,o,i)},ft=t=>{let{color:e,with:r="transparent",percentage:n=50,colorSpace:s="srgb"}=t,o=C(e),i=C(r);if(!o||!i)return e;let a=n/100,[l,b,c,u]=o,[h,d,g,m]=i;switch(t.opacity!==void 0&&(u=typeof t.opacity=="number"?t.opacity:P(t.opacity)),t.withOpacity!==void 0&&(m=typeof t.withOpacity=="number"?t.withOpacity:P(t.withOpacity)),s){case"srgb":default:let L=Math.round(l+(h-l)*a),R=Math.round(b+(d-b)*a),p=Math.round(c+(g-c)*a),O=u+(m-u)*a;return I(L,R,p,O);case"hsl":let y=C($(l,b,c,u)),M=C($(h,d,g,m));if(!y||!M)return e;let k=(y[0]+(M[0]-y[0])*a)%360,w=y[1]+(M[1]-y[1])*a,v=y[2]+(M[2]-y[2])*a;return`hsl(${k}, ${w}%, ${v}%)`}},dt=(t,e={})=>{let r=C(t);if(!r)return{};let n=e.shades||10,s=e.lightnessFactor||.1,o=e.saturationFactor||.05,i={};for(let a=0;a<n;a++){let l=a/(n-1),b=(l-.5)*2*s*100,c=rt(t,{lightness:b,saturation:(l-.5)*2*o*100}),u=a===0?"50":`${a*100}`;i[u]=c}if(e.includeComplementary){let a=C($(r[0],r[1],r[2]));if(a){let l=a[0];l=(l+180)%360,i.complementary=`hsl(${l}, ${a[1]}%, ${a[2]}%)`}}if(e.includeAnalogous){let a=C($(r[0],r[1],r[2]));if(a){let l=a[0];i.analogous1=`hsl(${(l-30+360)%360}, ${a[1]}%, ${a[2]}%)`,i.analogous2=`hsl(${(l+30)%360}, ${a[1]}%, ${a[2]}%)`}}if(e.includeTriadic){let a=C($(r[0],r[1],r[2]));if(a){let l=a[0];i.triadic1=`hsl(${(l+120)%360}, ${a[1]}%, ${a[2]}%)`,i.triadic2=`hsl(${(l+240)%360}, ${a[1]}%, ${a[2]}%)`}}return i},gt=(t,e={})=>{let{lightColor:r="#ffffff",darkColor:n="#000000",targetRatio:s=4.5,fallbackColor:o="#000000"}=e,i=C(t);if(!i)return o;let a=j(i[0],i[1],i[2]),l=j(...C(r).slice(0,3)),b=j(...C(n).slice(0,3)),c=(Math.max(a,l)+.05)/(Math.min(a,l)+.05),u=(Math.max(a,b)+.05)/(Math.min(a,b)+.05);return c>=s&&u>=s?c>u?r:n:c>=s?r:u>=s?n:c>u?r:n};var S={x:.95047,y:1,z:1.08883},A=.008856,T=903.3;function B(t,e,r){return Math.max(e,Math.min(r,t))}function $t(t,e=2){let r=Math.pow(10,e);return Math.round(t*r)/r}function _(t){let e=t.r/255,r=t.g/255,n=t.b/255,s=Math.max(e,r,n),o=Math.min(e,r,n),i=s-o,a=0,l=0,b=(s+o)/2;if(i!==0)switch(l=b>.5?i/(2-s-o):i/(s+o),s){case e:a=((r-n)/i+(r<n?6:0))/6;break;case r:a=((n-e)/i+2)/6;break;case n:a=((e-r)/i+4)/6;break}return{h:a*360,s:l*100,l:b*100,a:t.a}}function q(t){let e=t.r/255,r=t.g/255,n=t.b/255,s=Math.max(e,r,n),o=Math.min(e,r,n),i=s-o,a=0,l=s===0?0:i/s,b=s;if(i!==0)switch(s){case e:a=((r-n)/i+(r<n?6:0))/6;break;case r:a=((n-e)/i+2)/6;break;case n:a=((e-r)/i+4)/6;break}return{h:a*360,s:l*100,v:b*100,a:t.a}}function Z(t){let e=q(t),r=(100-e.s)*e.v/100,n=100-e.v;return{h:e.h,w:r,b:n,a:t.a}}function nt(t){let e=t.r/255,r=t.g/255,n=t.b/255,s=1-Math.max(e,r,n),o=s===1?0:(1-e-s)/(1-s),i=s===1?0:(1-r-s)/(1-s),a=s===1?0:(1-n-s)/(1-s);return{c:o*100,m:i*100,y:a*100,k:s*100,a:t.a}}function z(t){let e=t.r/255,r=t.g/255,n=t.b/255;e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;let s=e*.4124564+r*.3575761+n*.1804375,o=e*.2126729+r*.7151522+n*.072175,i=e*.0193339+r*.119192+n*.9503041;return{x:s*100,y:o*100,z:i*100,alpha:t.a}}function x(t){let e=z(t);return jt(e)}function D(t){let e=x(t);return Bt(e)}function H(t){let e=t.r/255,r=t.g/255,n=t.b/255,s=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,o=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,i=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,a=.4122214708*s+.5363325363*o+.0514459929*i,l=.2119034982*s+.6806995451*o+.1073969566*i,b=.0883024619*s+.2817188376*o+.6299787005*i,c=Math.cbrt(a),u=Math.cbrt(l),h=Math.cbrt(b);return{l:.2104542553*c+.793617785*u-.0040720468*h,a:1.9779984951*c-2.428592205*u+.4505937099*h,b:.0259040371*c+.7827717662*u-.808675766*h,alpha:t.a}}function N(t){let e=H(t);return Nt(e)}function G(t){let e=t.h/360,r=t.s/100,n=t.l/100,s,o,i;if(r===0)s=o=i=n;else{let a=(c,u,h)=>(h<0&&(h+=1),h>1&&(h-=1),h<.16666666666666666?c+(u-c)*6*h:h<.5?u:h<.6666666666666666?c+(u-c)*(.6666666666666666-h)*6:c),l=n<.5?n*(1+r):n+r-n*r,b=2*n-l;s=a(b,l,e+1/3),o=a(b,l,e),i=a(b,l,e-1/3)}return{r:Math.round(s*255),g:Math.round(o*255),b:Math.round(i*255),a:t.a}}function U(t){let e=t.h/360,r=t.s/100,n=t.v/100,s=Math.floor(e*6),o=e*6-s,i=n*(1-r),a=n*(1-o*r),l=n*(1-(1-o)*r),b,c,u;switch(s%6){case 0:b=n,c=l,u=i;break;case 1:b=a,c=n,u=i;break;case 2:b=i,c=n,u=l;break;case 3:b=i,c=a,u=n;break;case 4:b=l,c=i,u=n;break;default:b=n,c=i,u=a;break}return{r:Math.round(b*255),g:Math.round(c*255),b:Math.round(u*255),a:t.a}}function ot(t){let e=t.h,r=t.w/100,n=t.b/100,s=r+n;s>1&&(r/=s,n/=s);let o=1-n,i=o===0?0:1-r/o;return U({h:e,s:i*100,v:o*100,a:t.a})}function st(t){let e=t.c/100,r=t.m/100,n=t.y/100,s=t.k/100,o=255*(1-e)*(1-s),i=255*(1-r)*(1-s),a=255*(1-n)*(1-s);return{r:Math.round(o),g:Math.round(i),b:Math.round(a),a:t.a}}function J(t){let e=t.x/100,r=t.y/100,n=t.z/100,s=e*3.2404542+r*-1.5371385+n*-.4985314,o=e*-.969266+r*1.8760108+n*.041556,i=e*.0556434+r*-.2040259+n*1.0572252;return s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:12.92*s,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,{r:Math.round(B(s*255,0,255)),g:Math.round(B(o*255,0,255)),b:Math.round(B(i*255,0,255)),a:t.alpha||1}}function jt(t){let e=t.x/S.x/100,r=t.y/S.y/100,n=t.z/S.z/100,s=e>A?Math.cbrt(e):(T*e+16)/116,o=r>A?Math.cbrt(r):(T*r+16)/116,i=n>A?Math.cbrt(n):(T*n+16)/116,a=116*o-16,l=500*(s-o),b=200*(o-i);return{l:B(a,0,100),a:l,b,alpha:t.alpha}}function Tt(t){let e=(t.l+16)/116,r=t.a/500+e,n=e-t.b/200,s=r*r*r>A?r*r*r:(116*r-16)/T,o=t.l>T*A?Math.pow((t.l+16)/116,3):t.l/T,i=n*n*n>A?n*n*n:(116*n-16)/T;return{x:s*S.x*100,y:o*S.y*100,z:i*S.z*100,alpha:t.alpha}}function F(t){let e=Tt(t);return J(e)}function Bt(t){let e=Math.sqrt(t.a*t.a+t.b*t.b),r=Math.atan2(t.b,t.a)*180/Math.PI;return r<0&&(r+=360),{l:t.l,c:e,h:r,alpha:t.alpha}}function _t(t){let e=t.h*Math.PI/180,r=t.c*Math.cos(e),n=t.c*Math.sin(e);return{l:t.l,a:r,b:n,alpha:t.alpha}}function at(t){let e=_t(t);return F(e)}function it(t){let e=t.l+.3963377774*t.a+.2158037573*t.b,r=t.l-.1055613458*t.a-.0638541728*t.b,n=t.l-.0894841775*t.a-1.291485548*t.b,s=e*e*e,o=r*r*r,i=n*n*n,a=4.0767416621*s-3.3077115913*o+.2309699292*i,l=-1.2684380046*s+2.6097574011*o-.3413193965*i,b=-.0041960863*s-.7034186147*o+1.707614701*i;return a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:12.92*a,l=l>.0031308?1.055*Math.pow(l,1/2.4)-.055:12.92*l,b=b>.0031308?1.055*Math.pow(b,1/2.4)-.055:12.92*b,{r:Math.round(B(a*255,0,255)),g:Math.round(B(l*255,0,255)),b:Math.round(B(b*255,0,255)),a:t.alpha}}function Nt(t){let e=Math.sqrt(t.a*t.a+t.b*t.b),r=Math.atan2(t.b,t.a)*180/Math.PI;return r<0&&(r+=360),{l:t.l,c:e,h:r,alpha:t.alpha}}function St(t){let e=t.h*Math.PI/180,r=t.c*Math.cos(e),n=t.c*Math.sin(e);return{l:t.l,a:r,b:n,alpha:t.alpha}}function V(t){let e=St(t);return it(e)}function At(t){if("r"in t&&"g"in t&&"b"in t)return t;if("h"in t&&"s"in t&&"l"in t)return G(t);if("h"in t&&"s"in t&&"v"in t)return U(t);if("h"in t&&"w"in t&&"b"in t)return ot(t);if("c"in t&&"m"in t&&"y"in t&&"k"in t)return st(t);if("x"in t&&"y"in t&&"z"in t)return J(t);if("l"in t&&"a"in t&&"b"in t&&!("c"in t)&&!("h"in t))return F(t);if("l"in t&&"c"in t&&"h"in t){let e=t;return e.l<=1?V(t):at(e)}throw new Error("Unknown color format")}function mt(t,e,r={}){let{round:n=!0,precision:s=2,preserveAlpha:o=!0}=r,i=At(t),a;switch(e.toLowerCase()){case"rgb":a=i;break;case"hsl":a=_(i);break;case"hsv":a=q(i);break;case"hwb":a=Z(i);break;case"cmyk":a=nt(i);break;case"xyz":a=z(i);break;case"lab":a=x(i);break;case"lch":a=D(i);break;case"oklab":a=H(i);break;case"oklch":a=N(i);break;default:a=i}return n&&a&&Object.keys(a).forEach(l=>{typeof a[l]=="number"&&l!=="a"&&l!=="alpha"&&(a[l]=$t(a[l],s))}),o||(delete a.a,delete a.alpha),a}function Ct(t,e){let r={rgb:["hsl","hsv","hwb","cmyk","xyz","lab","lch","oklab","oklch"],hsl:["rgb","hsv","hwb"],hsv:["rgb","hsl","hwb"],hwb:["rgb","hsl","hsv"],cmyk:["rgb","hsl","hsv"],xyz:["rgb","lab"],lab:["rgb","xyz","lch"],lch:["rgb","lab","xyz"],oklab:["rgb","oklch"],oklch:["rgb","oklab"]};return t=t.toLowerCase(),e=e.toLowerCase(),t===e?[t]:r[t]?.includes(e)?[t,e]:r[t]?.includes("rgb")&&r.rgb?.includes(e)?[t,"rgb",e]:["lab","lch"].includes(t)&&["lab","lch"].includes(e)&&t!==e?[t,"xyz",e]:["oklab","oklch"].includes(t)&&["oklab","oklch"].includes(e)&&t!==e?[t,"oklab",e]:r[t]&&r.rgb?.includes(e)?[t,"rgb",e]:null}function lt(){return["rgb","hsl","hsv","hwb","cmyk","xyz","lab","lch","oklab","oklch"]}function pt(t){return lt().includes(t.toLowerCase())}var f=class t{constructor(e="#000000"){this._r=0;this._g=0;this._b=0;this._a=1;this.set(e)}static parseRgbString(e){return K(e)}static isRgbFormat(e){return Object.values(W).some(r=>r.test(e.trim()))}static getRgbPatternMatch(e){let r=e.trim();for(let[n,s]of Object.entries(W))if(s.test(r))return n;return null}static toModernRgbSyntax(e,r,n,s){let o=[e,r,n];return s!==void 0&&s!==1?`rgb(${o.join(" ")} / ${s})`:`rgb(${o.join(" ")})`}static toLegacyRgbSyntax(e,r,n,s){let o=[e,r,n];return s!==void 0&&s!==1?`rgba(${o.join(", ")}, ${s})`:`rgb(${o.join(", ")})`}static normalizeRgbString(e,r="modern"){let n=K(e);if(!n)return null;let[s,o,i,a]=n;return r==="modern"?this.toModernRgbSyntax(s,o,i,a):this.toLegacyRgbSyntax(s,o,i,a)}set(e){if(typeof e=="string"){let r=C(e);r&&([this._r,this._g,this._b,this._a]=r)}else if(Array.isArray(e))[this._r=0,this._g=0,this._b=0,this._a=1]=e;else if(e instanceof t)[this._r,this._g,this._b,this._a]=[e._r,e._g,e._b,e._a];else if(typeof e=="object")return this.setFromObject(e);return this._clamp(),this}_clamp(){this._r=Math.max(0,Math.min(255,Math.round(this._r))),this._g=Math.max(0,Math.min(255,Math.round(this._g))),this._b=Math.max(0,Math.min(255,Math.round(this._b))),this._a=Math.max(0,Math.min(1,this._a))}get r(){return this._r}set r(e){this._r=e,this._clamp()}get g(){return this._g}set g(e){this._g=e,this._clamp()}get b(){return this._b}set b(e){this._b=e,this._clamp()}get a(){return this._a}set a(e){this._a=e,this._clamp()}get rgb(){return[this._r,this._g,this._b]}get rgba(){return[this._r,this._g,this._b,this._a]}toHex(){return I(this._r,this._g,this._b,this._a)}toRgb(){return tt(this._r,this._g,this._b)}toRgba(){return tt(this._r,this._g,this._b,this._a)}getRgbObject(){return{r:this._r,g:this._g,b:this._b,a:this._a}}toHsl(){return $(this._r,this._g,this._b,this._a)}getHslObject(){return _(this.getRgbObject())}toHsv(){return bt(this._r,this._g,this._b,this._a)}getHsvObject(){return q(this.getRgbObject())}toHwb(){let e=Z(this.getRgbObject()),r=this._a<1?` / ${Math.round(this._a*100)/100}`:"";return`hwb(${Math.round(e.h)} ${Math.round(e.w)}% ${Math.round(e.b)}%${r})`}getHwbObject(){return Z(this.getRgbObject())}toCmyk(){return ut(this._r,this._g,this._b,this._a)}getCmykObject(){return nt(this.getRgbObject())}toXyz(){let e=z(this.getRgbObject()),r=this._a<1?` / ${Math.round(this._a*100)/100}`:"";return`color(xyz ${e.x.toFixed(4)} ${e.y.toFixed(4)} ${e.z.toFixed(4)}${r})`}getXyzObject(){return z(this.getRgbObject())}toLab(){let e=x(this.getRgbObject()),r=this._a<1?` / ${Math.round(this._a*100)/100}`:"";return`lab(${e.l.toFixed(2)}% ${e.a.toFixed(2)} ${e.b.toFixed(2)}${r})`}getLabObject(){return x(this.getRgbObject())}toLch(){let e=D(this.getRgbObject()),r=this._a<1?` / ${Math.round(this._a*100)/100}`:"";return`lch(${e.l.toFixed(2)}% ${e.c.toFixed(2)} ${e.h.toFixed(2)}${r})`}getLchObject(){return D(this.getRgbObject())}toOklab(){let e=H(this.getRgbObject()),r=this._a<1?` / ${Math.round(this._a*100)/100}`:"";return`oklab(${e.l.toFixed(4)} ${e.a.toFixed(4)} ${e.b.toFixed(4)}${r})`}getOklabObject(){return H(this.getRgbObject())}toOklch(){let e=N(this.getRgbObject()),r=this._a<1?` / ${Math.round(this._a*100)/100}`:"";return`oklch(${e.l.toFixed(4)} ${e.c.toFixed(4)} ${e.h.toFixed(2)}${r})`}getOklchObject(){return N(this.getRgbObject())}adjust(e){let r=rt(this.toHex(),e);return this.set(r),this}lighten(e){return this.adjust({lightness:e})}darken(e){return this.adjust({lightness:-e})}saturate(e){return this.adjust({saturation:e})}desaturate(e){return this.adjust({saturation:-e})}rotate(e){return this.adjust({hue:e})}alpha(e){return this._a=Math.max(0,Math.min(1,e)),this}mix(e,r=50,n="srgb"){let s=ft({color:this.toHex(),with:e,percentage:r,colorSpace:n});return this.set(s),this}getContrastColor(e={}){let r=gt(this.toHex(),e);return new t(r)}getLuminance(){return j(this._r,this._g,this._b)}getContrastRatio(e){let r=e instanceof t?e.toHex():e;return ht(this.toHex(),r)}getPalette(e={}){return dt(this.toHex(),e)}clone(){return new t(this.rgba)}toString(e="hex"){switch(e){case"hex":return this.toHex();case"rgb":return this.toRgb();case"rgba":return this.toRgba();case"hsl":return this.toHsl();case"hsla":return this.toHsl();case"hsv":return this.toHsv();case"hsva":return this.toHsv();case"hwb":return this.toHwb();case"cmyk":return this.toCmyk();case"xyz":return this.toXyz();case"lab":return this.toLab();case"lch":return this.toLch();case"oklab":return this.toOklab();case"oklch":return this.toOklch();default:return this.toHex()}}convertTo(e,r={}){return mt(this.getRgbObject(),e,r)}setFromObject(e){let r;if("r"in e&&"g"in e&&"b"in e)r=e;else if("h"in e&&"s"in e&&"l"in e)r=G(e);else if("h"in e&&"s"in e&&"v"in e)r=U(e);else if("h"in e&&"w"in e&&"b"in e)r=ot(e);else if("c"in e&&"m"in e&&"y"in e&&"k"in e)r=st(e);else if("x"in e&&"y"in e&&"z"in e)r=J(e);else if("l"in e&&"a"in e&&"b"in e)r=F(e);else if("l"in e&&"c"in e&&"h"in e){let n=e;r=n.l<=1?V(e):at(n)}else throw new Error("Unknown color format");return this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a??1,this._clamp(),this}getHarmony(e={}){let{type:r="complementary",count:n=5,angleOffset:s=30}=e,o=this.getHslObject(),i=[];switch(r){case"complementary":i.push(new t({h:(o.h+180)%360,s:o.s,l:o.l,a:o.a}));break;case"analogous":i.push(new t({h:(o.h-s+360)%360,s:o.s,l:o.l,a:o.a}),new t({h:(o.h+s)%360,s:o.s,l:o.l,a:o.a}));break;case"triadic":i.push(new t({h:(o.h+120)%360,s:o.s,l:o.l,a:o.a}),new t({h:(o.h+240)%360,s:o.s,l:o.l,a:o.a}));break;case"tetradic":i.push(new t({h:(o.h+90)%360,s:o.s,l:o.l,a:o.a}),new t({h:(o.h+180)%360,s:o.s,l:o.l,a:o.a}),new t({h:(o.h+270)%360,s:o.s,l:o.l,a:o.a}));break;case"split-complementary":i.push(new t({h:(o.h+150)%360,s:o.s,l:o.l,a:o.a}),new t({h:(o.h+210)%360,s:o.s,l:o.l,a:o.a}));break;case"square":i.push(new t({h:(o.h+90)%360,s:o.s,l:o.l,a:o.a}),new t({h:(o.h+180)%360,s:o.s,l:o.l,a:o.a}),new t({h:(o.h+270)%360,s:o.s,l:o.l,a:o.a}));break;case"monochromatic":let a=100/(n+1);for(let l=1;l<=n;l++)i.push(new t({h:o.h,s:o.s,l:Math.max(0,Math.min(100,a*l)),a:o.a}));break}return i}static getSupportedFormats(){return lt()}static isValidFormat(e){return pt(e)}static getConversionPath(e,r){return Ct(e,r)}isValid(){return et(this.toHex())}static fromString(e){return et(e)?new t(e):null}static random(){let e=Math.floor(Math.random()*256),r=Math.floor(Math.random()*256),n=Math.floor(Math.random()*256);return new t([e,r,n,1])}static get transparent(){return new t("transparent")}static get white(){return new t("#ffffff")}static get black(){return new t("#000000")}static get red(){return new t("#ff0000")}static get green(){return new t("#00ff00")}static get blue(){return new t("#0000ff")}static get yellow(){return new t("#ffff00")}static get cyan(){return new t("#00ffff")}static get magenta(){return new t("#ff00ff")}static get gray(){return new t("#808080")}static get lightGray(){return new t("#d3d3d3")}static get darkGray(){return new t("#a9a9a9")}static get orange(){return new t("#ffa500")}static get purple(){return new t("#800080")}static get pink(){return new t("#ffc0cb")}static get brown(){return new t("#a52a2a")}static get teal(){return new t("#008080")}static get lime(){return new t("#00ff00")}static get indigo(){return new t("#4b0082")}static get violet(){return new t("#ee82ee")}};function Gt(t,e={}){let{temperature:r=0,intensity:n=.5}=e,o=(t instanceof f?t:new f(t)).getRgbObject(),i=Math.max(-1,Math.min(1,r/1e4)),a=o.r,l=o.g,b=o.b;if(i>0)a=Math.min(255,a+i*255*n),l=Math.min(255,l+i*200*n),b=Math.max(0,b-i*100*n);else{let c=Math.abs(i);a=Math.max(0,a-c*100*n),l=Math.max(0,l-c*50*n),b=Math.min(255,b+c*255*n)}return new f([Math.round(a),Math.round(l),Math.round(b),o.a||1])}function Ft(t,e="protanopia"){let n=(t instanceof f?t:new f(t)).getRgbObject(),s=n.r/255,o=n.g/255,i=n.b/255,a;switch(e){case"protanopia":a=[[.56667,.43333,0],[.55833,.44167,0],[0,.24167,.75833]];break;case"deuteranopia":a=[[.625,.375,0],[.7,.3,0],[0,.3,.7]];break;case"tritanopia":a=[[.95,.05,0],[0,.43333,.56667],[0,.475,.525]];break;case"achromatopsia":let u=.299*s+.587*o+.114*i;return new f([Math.round(u*255),Math.round(u*255),Math.round(u*255),n.a||1]);default:a=[[1,0,0],[0,1,0],[0,0,1]]}let l=a[0][0]*s+a[0][1]*o+a[0][2]*i,b=a[1][0]*s+a[1][1]*o+a[1][2]*i,c=a[2][0]*s+a[2][1]*o+a[2][2]*i;return new f([Math.round(Math.max(0,Math.min(255,l*255))),Math.round(Math.max(0,Math.min(255,b*255))),Math.round(Math.max(0,Math.min(255,c*255))),n.a||1])}function Pt(t,e=!1){let n=(t instanceof f?t:new f(t)).getRgbObject();return e?(.299*n.r+.587*n.g+.114*n.b)/255>.5?f.black:f.white:new f([255-n.r,255-n.g,255-n.b,n.a||1])}function Kt(t,e="luminosity"){let n=(t instanceof f?t:new f(t)).getRgbObject(),s;switch(e){case"average":s=(n.r+n.g+n.b)/3;break;case"luminosity":s=.299*n.r+.587*n.g+.114*n.b;break;case"lightness":s=(Math.max(n.r,n.g,n.b)+Math.min(n.r,n.g,n.b))/2;break;default:s=.299*n.r+.587*n.g+.114*n.b}let o=Math.round(s);return new f([o,o,o,n.a||1])}function zt(t,e=1){let n=(t instanceof f?t:new f(t)).getRgbObject(),s=n.r/255,o=n.g/255,i=n.b/255,a=.393*s+.769*o+.189*i,l=.349*s+.686*o+.168*i,b=.272*s+.534*o+.131*i;return a=s+(a-s)*e,l=o+(l-o)*e,b=i+(b-i)*e,new f([Math.round(Math.max(0,Math.min(255,a*255))),Math.round(Math.max(0,Math.min(255,l*255))),Math.round(Math.max(0,Math.min(255,b*255))),n.a||1])}function Mt(t,e){let r=t instanceof f?t:new f(t),n=e instanceof f?e:new f(e),s=x(r.getRgbObject()),o=x(n.getRgbObject()),i=s.l-o.l,a=s.a-o.a,l=s.b-o.b;return Math.sqrt(i*i+a*a+l*l)}function Vt(t,e){let r=t instanceof f?t:new f(t),n=null,s=1/0;for(let o of e){let i=Mt(r,o);i<s&&(s=i,n=o instanceof f?o:new f(o))}return n||r}function Yt(t,e,r=5,n="rgb"){let s=t instanceof f?t:new f(t),o=e instanceof f?e:new f(e),i=[];if(r<2)return[s];for(let a=0;a<r;a++){let l=a/(r-1),b;switch(n){case"hsl":{let c=_(s.getRgbObject()),u=_(o.getRgbObject()),h=c.h,d=u.h,g=d-h;Math.abs(g)>180&&(h<d?h+=360:d+=360);let m=(h+(d-h)*l)%360,L=c.s+(u.s-c.s)*l,R=c.l+(u.l-c.l)*l,p=(c.a??1)+((u.a??1)-(c.a??1))*l;b=G({h:m,s:L,l:R,a:p});break}case"lab":{let c=x(s.getRgbObject()),u=x(o.getRgbObject()),h=c.l+(u.l-c.l)*l,d=c.a+(u.a-c.a)*l,g=c.b+(u.b-c.b)*l,m=(c.alpha??1)+((u.alpha??1)-(c.alpha??1))*l;b=F({l:h,a:d,b:g,alpha:m});break}case"oklab":{let c=H(s.getRgbObject()),u=H(o.getRgbObject()),h=c.l+(u.l-c.l)*l,d=c.a+(u.a-c.a)*l,g=c.b+(u.b-c.b)*l,m=(c.alpha??1)+((u.alpha??1)-(c.alpha??1))*l;b=it({l:h,a:d,b:g,alpha:m});break}case"oklch":{let c=N(s.getRgbObject()),u=N(o.getRgbObject()),h=c.h,d=u.h,g=d-h;Math.abs(g)>180&&(h<d?h+=360:d+=360);let m=c.l+(u.l-c.l)*l,L=c.c+(u.c-c.c)*l,R=(h+(d-h)*l)%360,p=(c.alpha??1)+((u.alpha??1)-(c.alpha??1))*l;b=V({l:m,c:L,h:R,alpha:p});break}default:{let c=s.getRgbObject(),u=o.getRgbObject();b={r:Math.round(c.r+(u.r-c.r)*l),g:Math.round(c.g+(u.g-c.g)*l),b:Math.round(c.b+(u.b-c.b)*l),a:(c.a??1)+((u.a??1)-(c.a??1))*l};break}}i.push(new f(b))}return i}function yt(t){let r=(t instanceof f?t:new f(t)).getRgbObject();return(.299*r.r+.587*r.g+.114*r.b)/255}function xt(t){return yt(t)>.5}function Et(t){return!xt(t)}function Xt(t,e,r="normal",n=1){let s=t instanceof f?t:new f(t),o=e instanceof f?e:new f(e),i=s.getRgbObject(),a=o.getRgbObject(),l=(b,c)=>{let u=b/255,h=c/255,d;switch(r){case"multiply":d=u*h;break;case"screen":d=1-(1-u)*(1-h);break;case"overlay":d=u<.5?2*u*h:1-2*(1-u)*(1-h);break;default:d=h*n+u*(1-n);break}return Math.round(Math.max(0,Math.min(255,d*255)))};return new f([l(i.r,a.r),l(i.g,a.g),l(i.b,a.b),i.a||1])}function Wt(t){let r=(t instanceof f?t:new f(t)).getRgbObject(),n=Math.max(r.r,r.g,r.b),s=Math.min(r.r,r.g,r.b);return n-s<20?"gray":r.r===n?"red":r.g===n?"green":"blue"}function It(t){let e=t instanceof f?t:new f(t),r=_(e.getRgbObject());if(r.s<10)return r.l>90?"white":r.l<10?"black":r.l>60?"light gray":r.l<40?"dark gray":"gray";let n=r.h,s;return n<15||n>=345?s="red":n<45?s="orange":n<75?s="yellow":n<165?s="green":n<255?s="blue":n<285?s="purple":n<315?s="magenta":s="pink",r.l<30?`dark ${s}`:r.l>70?`light ${s}`:r.s<30?`dull ${s}`:r.s>70?`vivid ${s}`:s}function qt(t={}){let{hue:e=[0,360],saturation:r=[0,100],lightness:n=[0,100],alpha:s=1}=t,o=e[0]+Math.random()*(e[1]-e[0]),i=r[0]+Math.random()*(r[1]-r[0]),a=n[0]+Math.random()*(n[1]-n[0]),l=G({h:o,s:i,l:a,a:s});return new f(l)}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @fileoverview Advanced color helper utilities
3
+ * Provides temperature adjustments, color blindness simulation, and other advanced operations
4
+ */
5
+ import type { ColorTemperatureOptions } from './types.js';
6
+ import { Color } from './color.js';
7
+ /**
8
+ * Color temperature adjustment
9
+ * Adjusts color temperature (warm/cool)
10
+ */
11
+ export declare function adjustTemperature(color: string | Color, options?: ColorTemperatureOptions): Color;
12
+ /**
13
+ * Simulate color blindness
14
+ * Types: protanopia, deuteranopia, tritanopia, achromatopsia
15
+ */
16
+ export declare function simulateColorBlindness(color: string | Color, type?: 'protanopia' | 'deuteranopia' | 'tritanopia' | 'achromatopsia'): Color;
17
+ /**
18
+ * Invert color
19
+ */
20
+ export declare function invertColor(color: string | Color, bw?: boolean): Color;
21
+ /**
22
+ * Grayscale conversion
23
+ */
24
+ export declare function toGrayscale(color: string | Color, method?: 'average' | 'luminosity' | 'lightness'): Color;
25
+ /**
26
+ * Sepia tone effect
27
+ */
28
+ export declare function toSepia(color: string | Color, intensity?: number): Color;
29
+ /**
30
+ * Calculate color distance using Delta E (CIE2000)
31
+ * Returns a value where 0 = identical, >100 = very different
32
+ */
33
+ export declare function colorDistance(color1: string | Color, color2: string | Color): number;
34
+ /**
35
+ * Find closest color from a palette
36
+ */
37
+ export declare function findClosestColor(color: string | Color, palette: (string | Color)[]): Color;
38
+ /**
39
+ * Generate gradient colors
40
+ */
41
+ export declare function generateGradient(startColor: string | Color, endColor: string | Color, steps?: number, colorSpace?: 'rgb' | 'hsl' | 'lab' | 'oklab' | 'oklch'): Color[];
42
+ /**
43
+ * Calculate perceptual brightness (0-1)
44
+ */
45
+ export declare function getPerceivedBrightness(color: string | Color): number;
46
+ /**
47
+ * Check if color is light (brightness > 0.5)
48
+ */
49
+ export declare function isLight(color: string | Color): boolean;
50
+ /**
51
+ * Check if color is dark (brightness <= 0.5)
52
+ */
53
+ export declare function isDark(color: string | Color): boolean;
54
+ /**
55
+ * Blend two colors using various blend modes
56
+ */
57
+ export declare function blendColors(base: string | Color, blend: string | Color, mode?: 'multiply' | 'screen' | 'overlay' | 'normal', opacity?: number): Color;
58
+ /**
59
+ * Get dominant color component
60
+ */
61
+ export declare function getDominantComponent(color: string | Color): 'red' | 'green' | 'blue' | 'gray';
62
+ /**
63
+ * Get color name (basic approximation)
64
+ */
65
+ export declare function getColorName(color: string | Color): string;
66
+ /**
67
+ * Random color generator with constraints
68
+ */
69
+ export declare function randomColor(options?: {
70
+ hue?: [number, number];
71
+ saturation?: [number, number];
72
+ lightness?: [number, number];
73
+ alpha?: number;
74
+ }): Color;
75
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/color/helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAY,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAYnC;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,KAAK,EACrB,OAAO,GAAE,uBAA4B,GACpC,KAAK,CA2BP;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,KAAK,EACrB,IAAI,GACA,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,eAA8B,GACjC,KAAK,CAgEP;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,GAAE,OAAe,GAAG,KAAK,CAY7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,GAAG,KAAK,EACrB,MAAM,GAAE,SAAS,GAAG,YAAY,GAAG,WAA0B,GAC5D,KAAK,CA0BP;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,SAAS,GAAE,MAAU,GAAG,KAAK,CAwB3E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAAG,KAAK,EACtB,MAAM,EAAE,MAAM,GAAG,KAAK,GACrB,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,KAAK,EACrB,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,GAC1B,KAAK,CAeP;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,GAAG,KAAK,EAC1B,QAAQ,EAAE,MAAM,GAAG,KAAK,EACxB,KAAK,GAAE,MAAU,EACjB,UAAU,GAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,OAAe,GAC5D,KAAK,EAAE,CAoHT;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,GAAG,KAAK,EACpB,KAAK,EAAE,MAAM,GAAG,KAAK,EACrB,IAAI,GAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAmB,EAC7D,OAAO,GAAE,MAAU,GAClB,KAAK,CAyCP;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GAAG,KAAK,GACpB,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAenC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAmC1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GACL,KAAK,CAcP"}
@@ -0,0 +1,419 @@
1
+ /**
2
+ * @fileoverview Advanced color helper utilities
3
+ * Provides temperature adjustments, color blindness simulation, and other advanced operations
4
+ */
5
+ import { Color } from './color.js';
6
+ import { rgbToHsl, hslToRgb, rgbToLab, labToRgb, rgbToOklab, oklabToRgb, rgbToOklch, oklchToRgb, } from './conversions.js';
7
+ /**
8
+ * Color temperature adjustment
9
+ * Adjusts color temperature (warm/cool)
10
+ */
11
+ export function adjustTemperature(color, options = {}) {
12
+ const { temperature = 0, intensity = 0.5 } = options;
13
+ const colorObj = color instanceof Color ? color : new Color(color);
14
+ const rgb = colorObj.getRgbObject();
15
+ // Normalized temperature (-1 to 1)
16
+ const normalizedTemp = Math.max(-1, Math.min(1, temperature / 10000));
17
+ // Adjust RGB channels based on temperature
18
+ let r = rgb.r;
19
+ let g = rgb.g;
20
+ let b = rgb.b;
21
+ if (normalizedTemp > 0) {
22
+ // Warmer (add red/yellow)
23
+ r = Math.min(255, r + normalizedTemp * 255 * intensity);
24
+ g = Math.min(255, g + normalizedTemp * 200 * intensity);
25
+ b = Math.max(0, b - normalizedTemp * 100 * intensity);
26
+ }
27
+ else {
28
+ // Cooler (add blue)
29
+ const coolness = Math.abs(normalizedTemp);
30
+ r = Math.max(0, r - coolness * 100 * intensity);
31
+ g = Math.max(0, g - coolness * 50 * intensity);
32
+ b = Math.min(255, b + coolness * 255 * intensity);
33
+ }
34
+ return new Color([Math.round(r), Math.round(g), Math.round(b), rgb.a || 1]);
35
+ }
36
+ /**
37
+ * Simulate color blindness
38
+ * Types: protanopia, deuteranopia, tritanopia, achromatopsia
39
+ */
40
+ export function simulateColorBlindness(color, type = 'protanopia') {
41
+ const colorObj = color instanceof Color ? color : new Color(color);
42
+ const rgb = colorObj.getRgbObject();
43
+ let r = rgb.r / 255;
44
+ let g = rgb.g / 255;
45
+ let b = rgb.b / 255;
46
+ // Transformation matrices for different types of color blindness
47
+ let matrix;
48
+ switch (type) {
49
+ case 'protanopia': // Red-blind
50
+ matrix = [
51
+ [0.56667, 0.43333, 0.0],
52
+ [0.55833, 0.44167, 0.0],
53
+ [0.0, 0.24167, 0.75833],
54
+ ];
55
+ break;
56
+ case 'deuteranopia': // Green-blind
57
+ matrix = [
58
+ [0.625, 0.375, 0.0],
59
+ [0.7, 0.3, 0.0],
60
+ [0.0, 0.3, 0.7],
61
+ ];
62
+ break;
63
+ case 'tritanopia': // Blue-blind
64
+ matrix = [
65
+ [0.95, 0.05, 0.0],
66
+ [0.0, 0.43333, 0.56667],
67
+ [0.0, 0.475, 0.525],
68
+ ];
69
+ break;
70
+ case 'achromatopsia': // Complete color blindness (grayscale)
71
+ const gray = 0.299 * r + 0.587 * g + 0.114 * b;
72
+ return new Color([
73
+ Math.round(gray * 255),
74
+ Math.round(gray * 255),
75
+ Math.round(gray * 255),
76
+ rgb.a || 1,
77
+ ]);
78
+ default:
79
+ matrix = [
80
+ [1, 0, 0],
81
+ [0, 1, 0],
82
+ [0, 0, 1],
83
+ ];
84
+ }
85
+ // Apply transformation
86
+ const newR = matrix[0][0] * r + matrix[0][1] * g + matrix[0][2] * b;
87
+ const newG = matrix[1][0] * r + matrix[1][1] * g + matrix[1][2] * b;
88
+ const newB = matrix[2][0] * r + matrix[2][1] * g + matrix[2][2] * b;
89
+ return new Color([
90
+ Math.round(Math.max(0, Math.min(255, newR * 255))),
91
+ Math.round(Math.max(0, Math.min(255, newG * 255))),
92
+ Math.round(Math.max(0, Math.min(255, newB * 255))),
93
+ rgb.a || 1,
94
+ ]);
95
+ }
96
+ /**
97
+ * Invert color
98
+ */
99
+ export function invertColor(color, bw = false) {
100
+ const colorObj = color instanceof Color ? color : new Color(color);
101
+ const rgb = colorObj.getRgbObject();
102
+ if (bw) {
103
+ // Black or white inversion based on luminance
104
+ const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
105
+ return luminance > 0.5 ? Color.black : Color.white;
106
+ }
107
+ // RGB inversion
108
+ return new Color([255 - rgb.r, 255 - rgb.g, 255 - rgb.b, rgb.a || 1]);
109
+ }
110
+ /**
111
+ * Grayscale conversion
112
+ */
113
+ export function toGrayscale(color, method = 'luminosity') {
114
+ const colorObj = color instanceof Color ? color : new Color(color);
115
+ const rgb = colorObj.getRgbObject();
116
+ let gray;
117
+ switch (method) {
118
+ case 'average':
119
+ gray = (rgb.r + rgb.g + rgb.b) / 3;
120
+ break;
121
+ case 'luminosity':
122
+ gray = 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b;
123
+ break;
124
+ case 'lightness':
125
+ gray =
126
+ (Math.max(rgb.r, rgb.g, rgb.b) + Math.min(rgb.r, rgb.g, rgb.b)) / 2;
127
+ break;
128
+ default:
129
+ gray = 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b;
130
+ }
131
+ const value = Math.round(gray);
132
+ return new Color([value, value, value, rgb.a || 1]);
133
+ }
134
+ /**
135
+ * Sepia tone effect
136
+ */
137
+ export function toSepia(color, intensity = 1) {
138
+ const colorObj = color instanceof Color ? color : new Color(color);
139
+ const rgb = colorObj.getRgbObject();
140
+ const r = rgb.r / 255;
141
+ const g = rgb.g / 255;
142
+ const b = rgb.b / 255;
143
+ // Sepia transformation matrix
144
+ let newR = 0.393 * r + 0.769 * g + 0.189 * b;
145
+ let newG = 0.349 * r + 0.686 * g + 0.168 * b;
146
+ let newB = 0.272 * r + 0.534 * g + 0.131 * b;
147
+ // Apply intensity
148
+ newR = r + (newR - r) * intensity;
149
+ newG = g + (newG - g) * intensity;
150
+ newB = b + (newB - b) * intensity;
151
+ return new Color([
152
+ Math.round(Math.max(0, Math.min(255, newR * 255))),
153
+ Math.round(Math.max(0, Math.min(255, newG * 255))),
154
+ Math.round(Math.max(0, Math.min(255, newB * 255))),
155
+ rgb.a || 1,
156
+ ]);
157
+ }
158
+ /**
159
+ * Calculate color distance using Delta E (CIE2000)
160
+ * Returns a value where 0 = identical, >100 = very different
161
+ */
162
+ export function colorDistance(color1, color2) {
163
+ const c1 = color1 instanceof Color ? color1 : new Color(color1);
164
+ const c2 = color2 instanceof Color ? color2 : new Color(color2);
165
+ const lab1 = rgbToLab(c1.getRgbObject());
166
+ const lab2 = rgbToLab(c2.getRgbObject());
167
+ // Simplified Delta E calculation (Euclidean distance in LAB space)
168
+ const deltaL = lab1.l - lab2.l;
169
+ const deltaA = lab1.a - lab2.a;
170
+ const deltaB = lab1.b - lab2.b;
171
+ return Math.sqrt(deltaL * deltaL + deltaA * deltaA + deltaB * deltaB);
172
+ }
173
+ /**
174
+ * Find closest color from a palette
175
+ */
176
+ export function findClosestColor(color, palette) {
177
+ const targetColor = color instanceof Color ? color : new Color(color);
178
+ let closestColor = null;
179
+ let minDistance = Infinity;
180
+ for (const paletteColor of palette) {
181
+ const distance = colorDistance(targetColor, paletteColor);
182
+ if (distance < minDistance) {
183
+ minDistance = distance;
184
+ closestColor =
185
+ paletteColor instanceof Color ? paletteColor : new Color(paletteColor);
186
+ }
187
+ }
188
+ return closestColor || targetColor;
189
+ }
190
+ /**
191
+ * Generate gradient colors
192
+ */
193
+ export function generateGradient(startColor, endColor, steps = 5, colorSpace = 'rgb') {
194
+ const start = startColor instanceof Color ? startColor : new Color(startColor);
195
+ const end = endColor instanceof Color ? endColor : new Color(endColor);
196
+ const colors = [];
197
+ if (steps < 2) {
198
+ return [start];
199
+ }
200
+ for (let i = 0; i < steps; i++) {
201
+ const t = i / (steps - 1);
202
+ let interpolated;
203
+ switch (colorSpace) {
204
+ case 'hsl': {
205
+ const hsl1 = rgbToHsl(start.getRgbObject());
206
+ const hsl2 = rgbToHsl(end.getRgbObject());
207
+ // Handle hue interpolation (shortest path around color wheel)
208
+ let h1 = hsl1.h;
209
+ let h2 = hsl2.h;
210
+ const diff = h2 - h1;
211
+ if (Math.abs(diff) > 180) {
212
+ if (h1 < h2) {
213
+ h1 += 360;
214
+ }
215
+ else {
216
+ h2 += 360;
217
+ }
218
+ }
219
+ const h = (h1 + (h2 - h1) * t) % 360;
220
+ const s = hsl1.s + (hsl2.s - hsl1.s) * t;
221
+ const l = hsl1.l + (hsl2.l - hsl1.l) * t;
222
+ const a = (hsl1.a ?? 1) + ((hsl2.a ?? 1) - (hsl1.a ?? 1)) * t;
223
+ interpolated = hslToRgb({ h, s, l, a });
224
+ break;
225
+ }
226
+ case 'lab': {
227
+ const lab1 = rgbToLab(start.getRgbObject());
228
+ const lab2 = rgbToLab(end.getRgbObject());
229
+ const l = lab1.l + (lab2.l - lab1.l) * t;
230
+ const a = lab1.a + (lab2.a - lab1.a) * t;
231
+ const b = lab1.b + (lab2.b - lab1.b) * t;
232
+ const alpha = (lab1.alpha ?? 1) + ((lab2.alpha ?? 1) - (lab1.alpha ?? 1)) * t;
233
+ interpolated = labToRgb({ l, a, b, alpha });
234
+ break;
235
+ }
236
+ case 'oklab': {
237
+ const oklab1 = rgbToOklab(start.getRgbObject());
238
+ const oklab2 = rgbToOklab(end.getRgbObject());
239
+ const l = oklab1.l + (oklab2.l - oklab1.l) * t;
240
+ const a = oklab1.a + (oklab2.a - oklab1.a) * t;
241
+ const b = oklab1.b + (oklab2.b - oklab1.b) * t;
242
+ const alpha = (oklab1.alpha ?? 1) + ((oklab2.alpha ?? 1) - (oklab1.alpha ?? 1)) * t;
243
+ interpolated = oklabToRgb({ l, a, b, alpha });
244
+ break;
245
+ }
246
+ case 'oklch': {
247
+ const oklch1 = rgbToOklch(start.getRgbObject());
248
+ const oklch2 = rgbToOklch(end.getRgbObject());
249
+ // Handle hue interpolation (shortest path around color wheel)
250
+ let h1 = oklch1.h;
251
+ let h2 = oklch2.h;
252
+ const diff = h2 - h1;
253
+ if (Math.abs(diff) > 180) {
254
+ if (h1 < h2) {
255
+ h1 += 360;
256
+ }
257
+ else {
258
+ h2 += 360;
259
+ }
260
+ }
261
+ const l = oklch1.l + (oklch2.l - oklch1.l) * t;
262
+ const c = oklch1.c + (oklch2.c - oklch1.c) * t;
263
+ const h = (h1 + (h2 - h1) * t) % 360;
264
+ const alpha = (oklch1.alpha ?? 1) + ((oklch2.alpha ?? 1) - (oklch1.alpha ?? 1)) * t;
265
+ interpolated = oklchToRgb({ l, c, h, alpha });
266
+ break;
267
+ }
268
+ case 'rgb':
269
+ default: {
270
+ const rgb1 = start.getRgbObject();
271
+ const rgb2 = end.getRgbObject();
272
+ interpolated = {
273
+ r: Math.round(rgb1.r + (rgb2.r - rgb1.r) * t),
274
+ g: Math.round(rgb1.g + (rgb2.g - rgb1.g) * t),
275
+ b: Math.round(rgb1.b + (rgb2.b - rgb1.b) * t),
276
+ a: (rgb1.a ?? 1) + ((rgb2.a ?? 1) - (rgb1.a ?? 1)) * t,
277
+ };
278
+ break;
279
+ }
280
+ }
281
+ colors.push(new Color(interpolated));
282
+ }
283
+ return colors;
284
+ }
285
+ /**
286
+ * Calculate perceptual brightness (0-1)
287
+ */
288
+ export function getPerceivedBrightness(color) {
289
+ const colorObj = color instanceof Color ? color : new Color(color);
290
+ const rgb = colorObj.getRgbObject();
291
+ // Using W3C formula for perceived brightness
292
+ return (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
293
+ }
294
+ /**
295
+ * Check if color is light (brightness > 0.5)
296
+ */
297
+ export function isLight(color) {
298
+ return getPerceivedBrightness(color) > 0.5;
299
+ }
300
+ /**
301
+ * Check if color is dark (brightness <= 0.5)
302
+ */
303
+ export function isDark(color) {
304
+ return !isLight(color);
305
+ }
306
+ /**
307
+ * Blend two colors using various blend modes
308
+ */
309
+ export function blendColors(base, blend, mode = 'normal', opacity = 1) {
310
+ const baseColor = base instanceof Color ? base : new Color(base);
311
+ const blendColor = blend instanceof Color ? blend : new Color(blend);
312
+ const b = baseColor.getRgbObject();
313
+ const a = blendColor.getRgbObject();
314
+ const blendChannel = (base, blend) => {
315
+ const b = base / 255;
316
+ const a = blend / 255;
317
+ let result;
318
+ switch (mode) {
319
+ case 'multiply':
320
+ result = b * a;
321
+ break;
322
+ case 'screen':
323
+ result = 1 - (1 - b) * (1 - a);
324
+ break;
325
+ case 'overlay':
326
+ result = b < 0.5 ? 2 * b * a : 1 - 2 * (1 - b) * (1 - a);
327
+ break;
328
+ case 'normal':
329
+ default:
330
+ result = a * opacity + b * (1 - opacity);
331
+ break;
332
+ }
333
+ return Math.round(Math.max(0, Math.min(255, result * 255)));
334
+ };
335
+ return new Color([
336
+ blendChannel(b.r, a.r),
337
+ blendChannel(b.g, a.g),
338
+ blendChannel(b.b, a.b),
339
+ b.a || 1,
340
+ ]);
341
+ }
342
+ /**
343
+ * Get dominant color component
344
+ */
345
+ export function getDominantComponent(color) {
346
+ const colorObj = color instanceof Color ? color : new Color(color);
347
+ const rgb = colorObj.getRgbObject();
348
+ const max = Math.max(rgb.r, rgb.g, rgb.b);
349
+ const min = Math.min(rgb.r, rgb.g, rgb.b);
350
+ // Check if color is grayscale
351
+ if (max - min < 20) {
352
+ return 'gray';
353
+ }
354
+ if (rgb.r === max)
355
+ return 'red';
356
+ if (rgb.g === max)
357
+ return 'green';
358
+ return 'blue';
359
+ }
360
+ /**
361
+ * Get color name (basic approximation)
362
+ */
363
+ export function getColorName(color) {
364
+ const colorObj = color instanceof Color ? color : new Color(color);
365
+ const hsl = rgbToHsl(colorObj.getRgbObject());
366
+ // Determine saturation level
367
+ if (hsl.s < 10) {
368
+ if (hsl.l > 90)
369
+ return 'white';
370
+ if (hsl.l < 10)
371
+ return 'black';
372
+ if (hsl.l > 60)
373
+ return 'light gray';
374
+ if (hsl.l < 40)
375
+ return 'dark gray';
376
+ return 'gray';
377
+ }
378
+ // Determine hue
379
+ const h = hsl.h;
380
+ let hueName;
381
+ if (h < 15 || h >= 345)
382
+ hueName = 'red';
383
+ else if (h < 45)
384
+ hueName = 'orange';
385
+ else if (h < 75)
386
+ hueName = 'yellow';
387
+ else if (h < 165)
388
+ hueName = 'green';
389
+ else if (h < 255)
390
+ hueName = 'blue';
391
+ else if (h < 285)
392
+ hueName = 'purple';
393
+ else if (h < 315)
394
+ hueName = 'magenta';
395
+ else
396
+ hueName = 'pink';
397
+ // Add lightness modifier
398
+ if (hsl.l < 30)
399
+ return `dark ${hueName}`;
400
+ if (hsl.l > 70)
401
+ return `light ${hueName}`;
402
+ // Add saturation modifier
403
+ if (hsl.s < 30)
404
+ return `dull ${hueName}`;
405
+ if (hsl.s > 70)
406
+ return `vivid ${hueName}`;
407
+ return hueName;
408
+ }
409
+ /**
410
+ * Random color generator with constraints
411
+ */
412
+ export function randomColor(options = {}) {
413
+ const { hue = [0, 360], saturation = [0, 100], lightness = [0, 100], alpha = 1, } = options;
414
+ const h = hue[0] + Math.random() * (hue[1] - hue[0]);
415
+ const s = saturation[0] + Math.random() * (saturation[1] - saturation[0]);
416
+ const l = lightness[0] + Math.random() * (lightness[1] - lightness[0]);
417
+ const rgb = hslToRgb({ h, s, l, a: alpha });
418
+ return new Color(rgb);
419
+ }