@design-edito/tools 0.4.3 → 0.4.5

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 (446) hide show
  1. package/agnostic/arrays/dedupe/index.js +0 -2
  2. package/agnostic/arrays/find-duplicates/index.js +0 -2
  3. package/agnostic/arrays/index.d.ts +2 -2
  4. package/agnostic/arrays/index.js +2 -2
  5. package/agnostic/arrays/is-array-of/index.js +4 -4
  6. package/agnostic/arrays/make/index.js +0 -2
  7. package/agnostic/arrays/random-pick/index.js +20 -5
  8. package/agnostic/arrays/shuffle/index.js +0 -2
  9. package/agnostic/booleans/is-falsy/index.js +12 -7
  10. package/agnostic/colors/channels/index.js +936 -13
  11. package/agnostic/colors/contrast/index.js +624 -12
  12. package/agnostic/colors/convert/index.js +845 -26
  13. package/agnostic/colors/distance/index.js +493 -9
  14. package/agnostic/colors/grayscale/index.js +751 -15
  15. package/agnostic/colors/index.d.ts +2 -2
  16. package/agnostic/colors/index.js +2 -2
  17. package/agnostic/colors/invert/index.js +687 -13
  18. package/agnostic/colors/lerp/index.js +735 -20
  19. package/agnostic/colors/luminance/index.js +624 -10
  20. package/agnostic/colors/palette/index.js +838 -11
  21. package/agnostic/colors/rotate/index.js +838 -11
  22. package/agnostic/colors/tidy/index.js +528 -9
  23. package/agnostic/colors/typechecks/index.js +247 -14
  24. package/agnostic/css/bem/index.js +23 -11
  25. package/agnostic/css/clss/index.js +28 -4
  26. package/agnostic/css/generate-nice-color/index.js +0 -2
  27. package/agnostic/css/index.d.ts +2 -2
  28. package/agnostic/css/index.js +2 -2
  29. package/agnostic/css/is-valid-css-class-name/index.js +5 -5
  30. package/agnostic/css/scale/index.js +20 -7
  31. package/agnostic/css/styles-set/index.js +15 -6
  32. package/agnostic/errors/register/index.js +0 -2
  33. package/agnostic/errors/unknown-to-string/index.js +8 -4
  34. package/agnostic/html/get-node-ancestors/index.js +28 -5
  35. package/agnostic/html/get-position-inside-parent/index.js +0 -2
  36. package/agnostic/html/hyper-json/cast/index.js +2937 -21
  37. package/agnostic/html/hyper-json/index.js +2939 -35
  38. package/agnostic/html/hyper-json/method/index.js +11 -4
  39. package/agnostic/html/hyper-json/serialize/index.js +222 -8
  40. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +2937 -21
  41. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +2937 -21
  42. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +2937 -21
  43. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +2937 -21
  44. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +2937 -21
  45. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +2937 -21
  46. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +2937 -21
  47. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +2937 -21
  48. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +2937 -21
  49. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +2937 -21
  50. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +2937 -21
  51. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +2937 -22
  52. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.js +2937 -21
  53. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +2937 -23
  54. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +2937 -21
  55. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +15 -15
  56. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +15 -15
  57. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +2937 -21
  58. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +2937 -21
  59. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +2937 -21
  60. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +2937 -21
  61. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +2937 -21
  62. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +2937 -21
  63. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +2937 -21
  64. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +2937 -21
  65. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +2937 -21
  66. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +2937 -21
  67. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +2937 -21
  68. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +2937 -21
  69. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +2937 -21
  70. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +2937 -21
  71. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +2937 -21
  72. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +2937 -21
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +2937 -22
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +2937 -21
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +2937 -21
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +2937 -21
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +2937 -22
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +2937 -21
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +2937 -21
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +2937 -21
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +2937 -21
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +2937 -21
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +2937 -21
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +2937 -21
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +2937 -21
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +2937 -21
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +2937 -21
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +2937 -21
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +2937 -21
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +2937 -21
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +2937 -21
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +2937 -21
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +2937 -21
  94. package/agnostic/html/hyper-json/smart-tags/index.js +181 -7
  95. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.js +194 -8
  96. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.js +194 -8
  97. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +2937 -21
  98. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +2937 -21
  99. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +2938 -22
  100. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +2937 -21
  101. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +4 -4
  102. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +4 -4
  103. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +2937 -21
  104. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.js +191 -8
  105. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +2937 -21
  106. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +2937 -21
  107. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +2937 -22
  108. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +2937 -21
  109. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +2937 -21
  110. package/agnostic/html/hyper-json/transformer/index.js +146 -6
  111. package/agnostic/html/hyper-json/tree/index.js +2937 -21
  112. package/agnostic/html/hyper-json/types/index.js +16 -4
  113. package/agnostic/html/hyper-json/utils/index.js +2937 -21
  114. package/agnostic/html/index.d.ts +2 -2
  115. package/agnostic/html/index.js +2 -2
  116. package/agnostic/html/insert-node/index.js +14 -4
  117. package/agnostic/html/placeholders/index.js +0 -2
  118. package/agnostic/html/replace-in-element/index.js +28 -5
  119. package/agnostic/html/selector-to-element/index.js +10 -4
  120. package/agnostic/html/string-to-nodes/index.js +10 -4
  121. package/agnostic/index.d.ts +4 -4
  122. package/agnostic/index.js +4 -4
  123. package/agnostic/misc/assert/index.js +16 -8
  124. package/agnostic/misc/cast/index.js +56 -13
  125. package/agnostic/misc/connection/index.js +10 -4
  126. package/agnostic/misc/crawler/index.js +6 -4
  127. package/agnostic/misc/crossenv/detect-runtime/index.js +0 -3
  128. package/agnostic/misc/crossenv/types.js +11 -4
  129. package/agnostic/misc/crossenv/window/index.js +22 -7
  130. package/agnostic/misc/data-size/index.js +0 -2
  131. package/agnostic/misc/index.d.ts +5 -5
  132. package/agnostic/misc/index.js +5 -5
  133. package/agnostic/misc/is-constructor-function/index.js +4 -4
  134. package/agnostic/misc/is-nullish/index.js +8 -6
  135. package/agnostic/misc/logs/logger/index.js +0 -2
  136. package/agnostic/misc/logs/make-text-block/index.js +11 -4
  137. package/agnostic/misc/logs/styles/index.js +47 -5
  138. package/agnostic/misc/lorem-ipsum/index.js +22 -7
  139. package/agnostic/misc/normalize-extension/index.js +0 -2
  140. package/agnostic/misc/outcome/index.js +10 -6
  141. package/agnostic/numbers/absolute-modulo/index.js +4 -4
  142. package/agnostic/numbers/approximate-rational/index.js +0 -2
  143. package/agnostic/numbers/clamp/index.js +6 -4
  144. package/agnostic/numbers/geometric-progressions/index.js +14 -4
  145. package/agnostic/numbers/index.d.ts +2 -2
  146. package/agnostic/numbers/index.js +2 -2
  147. package/agnostic/numbers/interpolate/index.js +0 -2
  148. package/agnostic/numbers/round/index.js +13 -6
  149. package/agnostic/objects/deep-get-property/index.js +5 -4
  150. package/agnostic/objects/enums/is-in-enum/index.js +9 -4
  151. package/agnostic/objects/flatten-getters/index.js +0 -2
  152. package/agnostic/objects/index.d.ts +3 -3
  153. package/agnostic/objects/index.js +3 -3
  154. package/agnostic/objects/is-object/index.js +7 -5
  155. package/agnostic/objects/is-record/index.js +5 -4
  156. package/agnostic/objects/record-format/index.js +0 -2
  157. package/agnostic/objects/record-map/index.js +10 -4
  158. package/agnostic/objects/sort-keys/index.js +0 -2
  159. package/agnostic/objects/validation/index.js +0 -2
  160. package/agnostic/optim/memoize/index.js +0 -2
  161. package/agnostic/optim/throttle-debounce/index.js +0 -2
  162. package/agnostic/random/hex-char/index.js +7 -5
  163. package/agnostic/random/index.d.ts +1 -1
  164. package/agnostic/random/index.js +1 -1
  165. package/agnostic/random/random/index.js +12 -5
  166. package/agnostic/random/uuid/index.js +18 -7
  167. package/agnostic/regexps/index.js +0 -2
  168. package/agnostic/sanitization/file-name/index.js +6 -4
  169. package/agnostic/sanitization/html/index.js +10 -4
  170. package/agnostic/sanitization/index.d.ts +1 -1
  171. package/agnostic/sanitization/index.js +1 -1
  172. package/agnostic/sanitization/path/index.js +6 -4
  173. package/agnostic/sanitization/user-input/index.js +0 -2
  174. package/agnostic/strings/char-codes/index.js +0 -2
  175. package/agnostic/strings/index.d.ts +2 -2
  176. package/agnostic/strings/index.js +2 -2
  177. package/agnostic/strings/matches/index.js +14 -6
  178. package/agnostic/strings/normalize-indent/index.js +0 -2
  179. package/agnostic/strings/parse-table/index.js +7 -5
  180. package/agnostic/strings/replace-all/index.js +0 -2
  181. package/agnostic/strings/to-alphanum/index.js +0 -2
  182. package/agnostic/strings/trim/index.js +7 -5
  183. package/agnostic/time/dates/format-date/index.d.ts +3 -0
  184. package/agnostic/time/dates/format-date/index.js +2 -3
  185. package/agnostic/time/duration/index.js +0 -2
  186. package/agnostic/time/timeout/index.js +0 -2
  187. package/agnostic/time/transitions/index.js +6 -4
  188. package/agnostic/time/wait/index.js +6 -4
  189. package/components/BeforeAfter/index.js +51 -14
  190. package/components/Disclaimer/index.js +107 -6
  191. package/components/Drawer/index.js +133 -24
  192. package/components/EventListener/index.js +44 -11
  193. package/components/Gallery/index.js +42 -11
  194. package/components/Image/index.js +222 -34
  195. package/components/IntersectionObserver/index.js +107 -6
  196. package/components/Overlayer/index.js +51 -14
  197. package/components/Paginator/index.js +153 -6
  198. package/components/ResizeObserver/index.js +118 -6
  199. package/components/Scrllgngn/index.js +332 -42
  200. package/components/ScrollListener/index.js +135 -30
  201. package/components/Sequencer/index.js +139 -37
  202. package/components/ShadowRoot/index.js +44 -11
  203. package/components/Subtitles/index.js +241 -10
  204. package/components/Theatre/index.js +134 -6
  205. package/components/UIModule/index.js +74 -21
  206. package/components/Video/index.d.ts +10 -0
  207. package/components/Video/index.js +448 -94
  208. package/components/index.d.ts +4 -4
  209. package/components/index.js +4 -4
  210. package/components/utils/index.js +9 -4
  211. package/index.d.ts +0 -1
  212. package/index.js +0 -1
  213. package/node/@aws-s3/storage/directory/copy-dir/index.js +70 -5
  214. package/node/@aws-s3/storage/directory/index.d.ts +1 -1
  215. package/node/@aws-s3/storage/directory/index.js +1 -1
  216. package/node/@aws-s3/storage/directory/list/index.js +39 -5
  217. package/node/@aws-s3/storage/directory/move-dir/index.js +83 -5
  218. package/node/@aws-s3/storage/directory/remove-dir/index.js +66 -5
  219. package/node/@aws-s3/storage/file/copy/index.js +51 -5
  220. package/node/@aws-s3/storage/file/download/index.js +37 -5
  221. package/node/@aws-s3/storage/file/exists/index.js +41 -5
  222. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  223. package/node/@aws-s3/storage/file/index.js +1 -1
  224. package/node/@aws-s3/storage/file/move/index.js +62 -5
  225. package/node/@aws-s3/storage/file/remove/index.js +42 -5
  226. package/node/@aws-s3/storage/file/stat/index.js +44 -5
  227. package/node/@aws-s3/storage/file/upload/index.js +62 -5
  228. package/node/@express/@multer/index.js +19 -9
  229. package/node/@google-cloud/storage/bucket/get-metadata/index.js +16 -8
  230. package/node/@google-cloud/storage/directory/copy-dir/index.js +41 -6
  231. package/node/@google-cloud/storage/directory/index.d.ts +1 -1
  232. package/node/@google-cloud/storage/directory/index.js +1 -1
  233. package/node/@google-cloud/storage/directory/list/index.js +33 -6
  234. package/node/@google-cloud/storage/directory/move-dir/index.js +41 -6
  235. package/node/@google-cloud/storage/directory/remove-dir/index.js +37 -6
  236. package/node/@google-cloud/storage/file/copy/index.js +39 -6
  237. package/node/@google-cloud/storage/file/download/index.js +32 -6
  238. package/node/@google-cloud/storage/file/exists/index.js +29 -6
  239. package/node/@google-cloud/storage/file/generate-signed-url/index.js +16 -8
  240. package/node/@google-cloud/storage/file/get-metadata/index.js +16 -8
  241. package/node/@google-cloud/storage/file/get-permissions/index.js +16 -8
  242. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  243. package/node/@google-cloud/storage/file/index.js +1 -1
  244. package/node/@google-cloud/storage/file/move/index.js +41 -6
  245. package/node/@google-cloud/storage/file/remove/index.js +34 -6
  246. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +80 -14
  247. package/node/@google-cloud/storage/file/stat/index.js +36 -6
  248. package/node/@google-cloud/storage/file/update-metadata/index.js +16 -8
  249. package/node/@google-cloud/storage/file/upload/index.js +46 -6
  250. package/node/@google-cloud/storage/index.d.ts +1 -1
  251. package/node/@google-cloud/storage/index.js +1 -1
  252. package/node/cloud-storage/clients/index.js +9 -7
  253. package/node/cloud-storage/operations/copy-dir/index.js +191 -22
  254. package/node/cloud-storage/operations/copy-file/index.js +140 -22
  255. package/node/cloud-storage/operations/download-file/index.js +91 -22
  256. package/node/cloud-storage/operations/exists-file/index.js +91 -22
  257. package/node/cloud-storage/operations/index.d.ts +1 -1
  258. package/node/cloud-storage/operations/index.js +1 -1
  259. package/node/cloud-storage/operations/list-dir/index.js +86 -22
  260. package/node/cloud-storage/operations/move-dir/index.js +157 -22
  261. package/node/cloud-storage/operations/move-file/index.js +145 -22
  262. package/node/cloud-storage/operations/remove-dir/index.js +147 -22
  263. package/node/cloud-storage/operations/remove-file/index.js +109 -22
  264. package/node/cloud-storage/operations/stat-file/index.js +112 -22
  265. package/node/cloud-storage/operations/upload-file/index.js +150 -22
  266. package/node/encryption/@aes-256-gcm/buffer/index.js +58 -12
  267. package/node/encryption/@aes-256-gcm/uint8-array/index.js +53 -7
  268. package/node/encryption/key/index.js +0 -2
  269. package/node/files/index.d.ts +1 -1
  270. package/node/files/index.js +1 -1
  271. package/node/files/is-in-directory/index.js +0 -2
  272. package/node/files/read-write/index.js +0 -2
  273. package/node/files/subpaths/index.js +13 -5
  274. package/node/ftps/directory/copy-dir/index.js +62 -6
  275. package/node/ftps/directory/list/index.js +27 -6
  276. package/node/ftps/directory/move-dir/index.js +38 -6
  277. package/node/ftps/directory/remove-dir/index.js +42 -6
  278. package/node/ftps/file/copy/index.js +47 -6
  279. package/node/ftps/file/download/index.js +32 -6
  280. package/node/ftps/file/exists/index.js +34 -6
  281. package/node/ftps/file/move/index.js +44 -6
  282. package/node/ftps/file/remove/index.js +40 -6
  283. package/node/ftps/file/stat/index.js +36 -6
  284. package/node/ftps/file/upload/index.js +45 -6
  285. package/node/images/create/index.js +556 -12
  286. package/node/images/format/index.js +583 -19
  287. package/node/images/metadata/index.js +563 -10
  288. package/node/images/transform/index.js +895 -77
  289. package/node/images/transform/operations/blur/index.js +21 -6
  290. package/node/images/transform/operations/brighten/index.js +21 -6
  291. package/node/images/transform/operations/extend/index.js +586 -13
  292. package/node/images/transform/operations/extract/index.js +26 -6
  293. package/node/images/transform/operations/flatten/index.js +581 -13
  294. package/node/images/transform/operations/flip/index.js +4 -4
  295. package/node/images/transform/operations/flop/index.js +4 -4
  296. package/node/images/transform/operations/hue/index.js +23 -6
  297. package/node/images/transform/operations/index.d.ts +3 -3
  298. package/node/images/transform/operations/index.js +3 -3
  299. package/node/images/transform/operations/level/index.js +27 -6
  300. package/node/images/transform/operations/lighten/index.js +23 -6
  301. package/node/images/transform/operations/normalize/index.js +24 -6
  302. package/node/images/transform/operations/overlay/index.js +670 -13
  303. package/node/images/transform/operations/resize/index.js +607 -13
  304. package/node/images/transform/operations/rotate/index.js +581 -13
  305. package/node/images/transform/operations/saturate/index.js +25 -6
  306. package/node/images/types.js +27 -5
  307. package/node/images/utils/index.js +563 -13
  308. package/node/index.d.ts +2 -2
  309. package/node/index.js +2 -2
  310. package/node/process/on-exit/index.js +0 -2
  311. package/node/process/prompt-continue/index.js +0 -2
  312. package/node/process/spawner/index.js +67 -13
  313. package/node/sftp/directory/copy-dir/index.js +60 -6
  314. package/node/sftp/directory/index.d.ts +1 -1
  315. package/node/sftp/directory/index.js +1 -1
  316. package/node/sftp/directory/list/index.js +27 -6
  317. package/node/sftp/directory/move-dir/index.js +35 -6
  318. package/node/sftp/directory/remove-dir/index.js +42 -6
  319. package/node/sftp/file/copy/index.js +45 -6
  320. package/node/sftp/file/download/index.js +30 -6
  321. package/node/sftp/file/exists/index.js +27 -6
  322. package/node/sftp/file/index.d.ts +2 -2
  323. package/node/sftp/file/index.js +2 -2
  324. package/node/sftp/file/move/index.js +38 -6
  325. package/node/sftp/file/remove/index.js +33 -6
  326. package/node/sftp/file/stat/index.js +36 -6
  327. package/node/sftp/file/upload/index.js +37 -6
  328. package/package.json +1 -8
  329. package/chunks/chunk-2FNCUXAX.js +0 -27
  330. package/chunks/chunk-2GJSPEO4.js +0 -31
  331. package/chunks/chunk-2IGP6V77.js +0 -22
  332. package/chunks/chunk-3QI2MSDK.js +0 -34
  333. package/chunks/chunk-3RNLPW7B.js +0 -101
  334. package/chunks/chunk-3RZMW72G.js +0 -33
  335. package/chunks/chunk-4KLCJX2T.js +0 -36
  336. package/chunks/chunk-4LTN4SCD.js +0 -55
  337. package/chunks/chunk-4Q4T7QQO.js +0 -27
  338. package/chunks/chunk-4Q5TKOIG.js +0 -53
  339. package/chunks/chunk-57YKZBJR.js +0 -29
  340. package/chunks/chunk-5H3IRSOB.js +0 -8
  341. package/chunks/chunk-5NTPCRFH.js +0 -32
  342. package/chunks/chunk-5TM235Z3.js +0 -40
  343. package/chunks/chunk-5WVGUZL5.js +0 -35
  344. package/chunks/chunk-6XL25OZX.js +0 -12
  345. package/chunks/chunk-75BICI4L.js +0 -20
  346. package/chunks/chunk-77SWZUHV.js +0 -31
  347. package/chunks/chunk-AC4UMIWM.js +0 -124
  348. package/chunks/chunk-AG4VERYN.js +0 -25
  349. package/chunks/chunk-AP3VYSVF.js +0 -36
  350. package/chunks/chunk-ASXK7XCC.js +0 -18
  351. package/chunks/chunk-AVIMGMTP.js +0 -17
  352. package/chunks/chunk-B4HGXMP3.js +0 -20
  353. package/chunks/chunk-B5V7D2ZL.js +0 -77
  354. package/chunks/chunk-B6653QJD.js +0 -37
  355. package/chunks/chunk-BCX4HPD7.js +0 -33
  356. package/chunks/chunk-CVMYA5XK.js +0 -632
  357. package/chunks/chunk-DMWGHBIL.js +0 -25
  358. package/chunks/chunk-DNIOWD7K.js +0 -8
  359. package/chunks/chunk-E2ZY3SEW.js +0 -26
  360. package/chunks/chunk-E6MSDKON.js +0 -13
  361. package/chunks/chunk-E7BBN5JC.js +0 -22
  362. package/chunks/chunk-EX2QKFY5.js +0 -41
  363. package/chunks/chunk-EYYNCLVR.js +0 -33
  364. package/chunks/chunk-F2YJXIT7.js +0 -78
  365. package/chunks/chunk-FSNNEPY5.js +0 -37
  366. package/chunks/chunk-GG4EFNMU.js +0 -89
  367. package/chunks/chunk-GQBFMP6N.js +0 -32
  368. package/chunks/chunk-H3HRQ52T.js +0 -32
  369. package/chunks/chunk-H4PP6AHP.js +0 -15
  370. package/chunks/chunk-HC6ZOHCS.js +0 -14
  371. package/chunks/chunk-HMMPT3UM.js +0 -47
  372. package/chunks/chunk-HQLRJ7XW.js +0 -12
  373. package/chunks/chunk-HYGUIF2O.js +0 -23
  374. package/chunks/chunk-HYPEWMYZ.js +0 -10
  375. package/chunks/chunk-I5MRXMHR.js +0 -32
  376. package/chunks/chunk-I6ZP5T5V.js +0 -10
  377. package/chunks/chunk-IEZ3O5OF.js +0 -40
  378. package/chunks/chunk-IPRWXI27.js +0 -31
  379. package/chunks/chunk-IRKZUMWZ.js +0 -38
  380. package/chunks/chunk-ISJONMNA.js +0 -16
  381. package/chunks/chunk-JB27MAKY.js +0 -22
  382. package/chunks/chunk-JZ6GM444.js +0 -43
  383. package/chunks/chunk-K5UF634H.js +0 -25
  384. package/chunks/chunk-LEBGVBYD.js +0 -138
  385. package/chunks/chunk-LJ5MGLLU.js +0 -56
  386. package/chunks/chunk-LUAYN7VJ.js +0 -27
  387. package/chunks/chunk-MDVGDZU6.js +0 -25
  388. package/chunks/chunk-ML22TIBW.js +0 -37
  389. package/chunks/chunk-MO4TRYNI.js +0 -29
  390. package/chunks/chunk-MSU7JU63.js +0 -49
  391. package/chunks/chunk-NIBRPZJD.js +0 -58
  392. package/chunks/chunk-O32IRXDX.js +0 -78
  393. package/chunks/chunk-OAX7GS7C.js +0 -36
  394. package/chunks/chunk-OBSTP7YR.js +0 -257
  395. package/chunks/chunk-OFCSIK6J.js +0 -13
  396. package/chunks/chunk-OFYGPRWE.js +0 -21
  397. package/chunks/chunk-OGBUSUE6.js +0 -12
  398. package/chunks/chunk-OSAXBA7G.js +0 -10
  399. package/chunks/chunk-OT7QXCH6.js +0 -23
  400. package/chunks/chunk-OZ3IZVHR.js +0 -2673
  401. package/chunks/chunk-P4J6S2WQ.js +0 -64
  402. package/chunks/chunk-PUQUSA6S.js +0 -12
  403. package/chunks/chunk-PYJKFOMV.js +0 -193
  404. package/chunks/chunk-QHEWBOQI.js +0 -19
  405. package/chunks/chunk-QXAJXTXV.js +0 -19
  406. package/chunks/chunk-R3AWQXMY.js +0 -20
  407. package/chunks/chunk-R66GH2MQ.js +0 -38
  408. package/chunks/chunk-RART44AF.js +0 -21
  409. package/chunks/chunk-REXSJULD.js +0 -28
  410. package/chunks/chunk-RJRNYRPM.js +0 -23
  411. package/chunks/chunk-RKX6KLPQ.js +0 -47
  412. package/chunks/chunk-RW7VAKJW.js +0 -15
  413. package/chunks/chunk-RZOR7ZC3.js +0 -35
  414. package/chunks/chunk-S2UZ3HZR.js +0 -31
  415. package/chunks/chunk-SYH5LYQC.js +0 -28
  416. package/chunks/chunk-TAXFCVFE.js +0 -30
  417. package/chunks/chunk-TNZGRXKJ.js +0 -24
  418. package/chunks/chunk-TRFZSKNB.js +0 -32
  419. package/chunks/chunk-U664BT44.js +0 -45
  420. package/chunks/chunk-U6SGKHHA.js +0 -32
  421. package/chunks/chunk-UTQNGKGQ.js +0 -60
  422. package/chunks/chunk-VPBZS3S4.js +0 -27
  423. package/chunks/chunk-W5A2TON3.js +0 -10
  424. package/chunks/chunk-W7PJ5NQQ.js +0 -23
  425. package/chunks/chunk-WGRQXVBK.js +0 -207
  426. package/chunks/chunk-WIFHP4X7.js +0 -56
  427. package/chunks/chunk-WL4WNJ2Y.js +0 -39
  428. package/chunks/chunk-WNDMYNDU.js +0 -8
  429. package/chunks/chunk-WSFCRVEQ.js +0 -9
  430. package/chunks/chunk-WZS4Q3G3.js +0 -36
  431. package/chunks/chunk-XA4HVHJ4.js +0 -18
  432. package/chunks/chunk-XEQ2PBT2.js +0 -20
  433. package/chunks/chunk-XFB4PUXO.js +0 -78
  434. package/chunks/chunk-XIIJYVJZ.js +0 -15
  435. package/chunks/chunk-XNF5MLCQ.js +0 -14
  436. package/chunks/chunk-XQUMWHCH.js +0 -25
  437. package/chunks/chunk-YA2YCZUF.js +0 -8
  438. package/chunks/chunk-YDIBNEGA.js +0 -9
  439. package/chunks/chunk-YHMR7IBA.js +0 -24
  440. package/chunks/chunk-YWSXCFYY.js +0 -61
  441. package/chunks/chunk-YY3TSU22.js +0 -48
  442. package/chunks/chunk-ZAP3ELDE.js +0 -40
  443. package/chunks/chunk-ZJNQRKEJ.js +0 -105
  444. package/chunks/chunk-ZJR5ASR3.js +0 -26
  445. package/chunks/index.d.ts +0 -1
  446. package/chunks/index.js +0 -1
@@ -1,14 +1,841 @@
1
- import {
2
- rotate
3
- } from "../../../chunks/chunk-YY3TSU22.js";
4
- import "../../../chunks/chunk-WGRQXVBK.js";
5
- import "../../../chunks/chunk-CVMYA5XK.js";
6
- import "../../../chunks/chunk-OBSTP7YR.js";
7
- import "../../../chunks/chunk-HQLRJ7XW.js";
8
- import "../../../chunks/chunk-DNIOWD7K.js";
9
- import "../../../chunks/chunk-PUQUSA6S.js";
10
- import "../../../chunks/chunk-OSAXBA7G.js";
11
- import "../../../chunks/chunk-WSFCRVEQ.js";
1
+ // src/agnostic/numbers/absolute-modulo/index.ts
2
+ function absoluteModulo(nbr, modulo) {
3
+ return (nbr % modulo + modulo) % modulo;
4
+ }
5
+
6
+ // src/agnostic/numbers/clamp/index.ts
7
+ function clamp(num, bound1, bound2) {
8
+ const min = Math.min(bound1, bound2);
9
+ const max = Math.max(bound1, bound2);
10
+ return Math.min(Math.max(num, min), max);
11
+ }
12
+
13
+ // src/agnostic/objects/is-object/index.ts
14
+ function isObject(unk) {
15
+ return typeof unk === "object";
16
+ }
17
+ function isNonNullObject(unk) {
18
+ return unk !== null && isObject(unk);
19
+ }
20
+
21
+ // src/agnostic/colors/cssColorsMap.ts
22
+ var cssColors = {
23
+ aliceblue: { r: 240, g: 248, b: 255 },
24
+ antiquewhite: { r: 250, g: 235, b: 215 },
25
+ aqua: { r: 0, g: 255, b: 255 },
26
+ aquamarine: { r: 127, g: 255, b: 212 },
27
+ azure: { r: 240, g: 255, b: 255 },
28
+ beige: { r: 245, g: 245, b: 220 },
29
+ bisque: { r: 255, g: 228, b: 196 },
30
+ black: { r: 0, g: 0, b: 0 },
31
+ blanchedalmond: { r: 255, g: 235, b: 205 },
32
+ blue: { r: 0, g: 0, b: 255 },
33
+ blueviolet: { r: 138, g: 43, b: 226 },
34
+ brown: { r: 165, g: 42, b: 42 },
35
+ burlywood: { r: 222, g: 184, b: 135 },
36
+ cadetblue: { r: 95, g: 158, b: 160 },
37
+ chartreuse: { r: 127, g: 255, b: 0 },
38
+ chocolate: { r: 210, g: 105, b: 30 },
39
+ coral: { r: 255, g: 127, b: 80 },
40
+ cornflowerblue: { r: 100, g: 149, b: 237 },
41
+ cornsilk: { r: 255, g: 248, b: 220 },
42
+ crimson: { r: 220, g: 20, b: 60 },
43
+ cyan: { r: 0, g: 255, b: 255 },
44
+ darkblue: { r: 0, g: 0, b: 139 },
45
+ darkcyan: { r: 0, g: 139, b: 139 },
46
+ darkgoldenrod: { r: 184, g: 134, b: 11 },
47
+ darkgray: { r: 169, g: 169, b: 169 },
48
+ darkgreen: { r: 0, g: 100, b: 0 },
49
+ darkgrey: { r: 169, g: 169, b: 169 },
50
+ darkkhaki: { r: 189, g: 183, b: 107 },
51
+ darkmagenta: { r: 139, g: 0, b: 139 },
52
+ darkolivegreen: { r: 85, g: 107, b: 47 },
53
+ darkorange: { r: 255, g: 140, b: 0 },
54
+ darkorchid: { r: 153, g: 50, b: 204 },
55
+ darkred: { r: 139, g: 0, b: 0 },
56
+ darksalmon: { r: 233, g: 150, b: 122 },
57
+ darkseagreen: { r: 143, g: 188, b: 143 },
58
+ darkslateblue: { r: 72, g: 61, b: 139 },
59
+ darkslategray: { r: 47, g: 79, b: 79 },
60
+ darkslategrey: { r: 47, g: 79, b: 79 },
61
+ darkturquoise: { r: 0, g: 206, b: 209 },
62
+ darkviolet: { r: 148, g: 0, b: 211 },
63
+ deeppink: { r: 255, g: 20, b: 147 },
64
+ deepskyblue: { r: 0, g: 191, b: 255 },
65
+ dimgray: { r: 105, g: 105, b: 105 },
66
+ dimgrey: { r: 105, g: 105, b: 105 },
67
+ dodgerblue: { r: 30, g: 144, b: 255 },
68
+ firebrick: { r: 178, g: 34, b: 34 },
69
+ floralwhite: { r: 255, g: 250, b: 240 },
70
+ forestgreen: { r: 34, g: 139, b: 34 },
71
+ fuchsia: { r: 255, g: 0, b: 255 },
72
+ gainsboro: { r: 220, g: 220, b: 220 },
73
+ ghostwhite: { r: 248, g: 248, b: 255 },
74
+ gold: { r: 255, g: 215, b: 0 },
75
+ goldenrod: { r: 218, g: 165, b: 32 },
76
+ gray: { r: 128, g: 128, b: 128 },
77
+ green: { r: 0, g: 128, b: 0 },
78
+ greenyellow: { r: 173, g: 255, b: 47 },
79
+ grey: { r: 128, g: 128, b: 128 },
80
+ honeydew: { r: 240, g: 255, b: 240 },
81
+ hotpink: { r: 255, g: 105, b: 180 },
82
+ indianred: { r: 205, g: 92, b: 92 },
83
+ indigo: { r: 75, g: 0, b: 130 },
84
+ ivory: { r: 255, g: 255, b: 240 },
85
+ khaki: { r: 240, g: 230, b: 140 },
86
+ lavender: { r: 230, g: 230, b: 250 },
87
+ lavenderblush: { r: 255, g: 240, b: 245 },
88
+ lawngreen: { r: 124, g: 252, b: 0 },
89
+ lemonchiffon: { r: 255, g: 250, b: 205 },
90
+ lightblue: { r: 173, g: 216, b: 230 },
91
+ lightcoral: { r: 240, g: 128, b: 128 },
92
+ lightcyan: { r: 224, g: 255, b: 255 },
93
+ lightgoldenrodyellow: { r: 250, g: 250, b: 210 },
94
+ lightgray: { r: 211, g: 211, b: 211 },
95
+ lightgreen: { r: 144, g: 238, b: 144 },
96
+ lightgrey: { r: 211, g: 211, b: 211 },
97
+ lightpink: { r: 255, g: 182, b: 193 },
98
+ lightsalmon: { r: 255, g: 160, b: 122 },
99
+ lightseagreen: { r: 32, g: 178, b: 170 },
100
+ lightskyblue: { r: 135, g: 206, b: 250 },
101
+ lightslategray: { r: 119, g: 136, b: 153 },
102
+ lightslategrey: { r: 119, g: 136, b: 153 },
103
+ lightsteelblue: { r: 176, g: 196, b: 222 },
104
+ lightyellow: { r: 255, g: 255, b: 224 },
105
+ lime: { r: 0, g: 255, b: 0 },
106
+ limegreen: { r: 50, g: 205, b: 50 },
107
+ linen: { r: 250, g: 240, b: 230 },
108
+ magenta: { r: 255, g: 0, b: 255 },
109
+ maroon: { r: 128, g: 0, b: 0 },
110
+ mediumaquamarine: { r: 102, g: 205, b: 170 },
111
+ mediumblue: { r: 0, g: 0, b: 205 },
112
+ mediumorchid: { r: 186, g: 85, b: 211 },
113
+ mediumpurple: { r: 147, g: 112, b: 219 },
114
+ mediumseagreen: { r: 60, g: 179, b: 113 },
115
+ mediumslateblue: { r: 123, g: 104, b: 238 },
116
+ mediumspringgreen: { r: 0, g: 250, b: 154 },
117
+ mediumturquoise: { r: 72, g: 209, b: 204 },
118
+ mediumvioletred: { r: 199, g: 21, b: 133 },
119
+ midnightblue: { r: 25, g: 25, b: 112 },
120
+ mintcream: { r: 245, g: 255, b: 250 },
121
+ mistyrose: { r: 255, g: 228, b: 225 },
122
+ moccasin: { r: 255, g: 228, b: 181 },
123
+ navajowhite: { r: 255, g: 222, b: 173 },
124
+ navy: { r: 0, g: 0, b: 128 },
125
+ oldlace: { r: 253, g: 245, b: 230 },
126
+ olive: { r: 128, g: 128, b: 0 },
127
+ olivedrab: { r: 107, g: 142, b: 35 },
128
+ orange: { r: 255, g: 165, b: 0 },
129
+ orangered: { r: 255, g: 69, b: 0 },
130
+ orchid: { r: 218, g: 112, b: 214 },
131
+ palegoldenrod: { r: 238, g: 232, b: 170 },
132
+ palegreen: { r: 152, g: 251, b: 152 },
133
+ paleturquoise: { r: 175, g: 238, b: 238 },
134
+ palevioletred: { r: 219, g: 112, b: 147 },
135
+ papayawhip: { r: 255, g: 239, b: 213 },
136
+ peachpuff: { r: 255, g: 218, b: 185 },
137
+ peru: { r: 205, g: 133, b: 63 },
138
+ pink: { r: 255, g: 192, b: 203 },
139
+ plum: { r: 221, g: 160, b: 221 },
140
+ powderblue: { r: 176, g: 224, b: 230 },
141
+ purple: { r: 128, g: 0, b: 128 },
142
+ rebeccapurple: { r: 102, g: 51, b: 153 },
143
+ red: { r: 255, g: 0, b: 0 },
144
+ rosybrown: { r: 188, g: 143, b: 143 },
145
+ royalblue: { r: 65, g: 105, b: 225 },
146
+ saddlebrown: { r: 139, g: 69, b: 19 },
147
+ salmon: { r: 250, g: 128, b: 114 },
148
+ sandybrown: { r: 244, g: 164, b: 96 },
149
+ seagreen: { r: 46, g: 139, b: 87 },
150
+ seashell: { r: 255, g: 245, b: 238 },
151
+ sienna: { r: 160, g: 82, b: 45 },
152
+ silver: { r: 192, g: 192, b: 192 },
153
+ skyblue: { r: 135, g: 206, b: 235 },
154
+ slateblue: { r: 106, g: 90, b: 205 },
155
+ slategray: { r: 112, g: 128, b: 144 },
156
+ slategrey: { r: 112, g: 128, b: 144 },
157
+ snow: { r: 255, g: 250, b: 250 },
158
+ springgreen: { r: 0, g: 255, b: 127 },
159
+ steelblue: { r: 70, g: 130, b: 180 },
160
+ tan: { r: 210, g: 180, b: 140 },
161
+ teal: { r: 0, g: 128, b: 128 },
162
+ thistle: { r: 216, g: 191, b: 216 },
163
+ tomato: { r: 255, g: 99, b: 71 },
164
+ turquoise: { r: 64, g: 224, b: 208 },
165
+ violet: { r: 238, g: 130, b: 238 },
166
+ wheat: { r: 245, g: 222, b: 179 },
167
+ white: { r: 255, g: 255, b: 255 },
168
+ whitesmoke: { r: 245, g: 245, b: 245 },
169
+ yellow: { r: 255, g: 255, b: 0 },
170
+ yellowgreen: { r: 154, g: 205, b: 50 }
171
+ };
172
+
173
+ // src/agnostic/colors/typechecks/index.ts
174
+ var isHex = (color) => {
175
+ if (typeof color !== "string") return false;
176
+ if (!color.startsWith("#")) return false;
177
+ const withoutHash = color.slice(1);
178
+ const withoutHashLength = withoutHash.length;
179
+ const allowedLengths = [3, 4, 6, 8];
180
+ if (!allowedLengths.includes(withoutHashLength)) return false;
181
+ return /^[0-9a-f]+$/igm.test(withoutHash);
182
+ };
183
+ var isRgb = (color) => {
184
+ if (!isNonNullObject(color)) return false;
185
+ const { r, g, b, a } = color;
186
+ if (typeof r !== "number") return false;
187
+ if (typeof g !== "number") return false;
188
+ if (typeof b !== "number") return false;
189
+ if (a !== void 0 && typeof a !== "number") return false;
190
+ return true;
191
+ };
192
+ var isHsl = (color) => {
193
+ if (!isNonNullObject(color)) return false;
194
+ const { h, s, l, a } = color;
195
+ if (typeof h !== "number") return false;
196
+ if (typeof s !== "number") return false;
197
+ if (typeof l !== "number") return false;
198
+ if (a !== void 0 && typeof a !== "number") return false;
199
+ return true;
200
+ };
201
+ var isHsb = (color) => {
202
+ if (!isNonNullObject(color)) return false;
203
+ const { h, s, b, a } = color;
204
+ if (typeof h !== "number") return false;
205
+ if (typeof s !== "number") return false;
206
+ if (typeof b !== "number") return false;
207
+ if (a !== void 0 && typeof a !== "number") return false;
208
+ return true;
209
+ };
210
+ var isLab = (color) => {
211
+ if (!isNonNullObject(color)) return false;
212
+ const { l, a, b, al } = color;
213
+ if (typeof l !== "number") return false;
214
+ if (typeof a !== "number") return false;
215
+ if (typeof b !== "number") return false;
216
+ if (al !== void 0 && typeof al !== "number") return false;
217
+ return true;
218
+ };
219
+ var isLch = (color) => {
220
+ if (!isNonNullObject(color)) return false;
221
+ const { l, c, h, a } = color;
222
+ if (typeof l !== "number") return false;
223
+ if (typeof c !== "number") return false;
224
+ if (typeof h !== "number") return false;
225
+ if (a !== void 0 && typeof a !== "number") return false;
226
+ return true;
227
+ };
228
+ var isCmyk = (color) => {
229
+ if (!isNonNullObject(color)) return false;
230
+ const { c, m, y, k, a } = color;
231
+ if (typeof c !== "number") return false;
232
+ if (typeof m !== "number") return false;
233
+ if (typeof y !== "number") return false;
234
+ if (typeof k !== "number") return false;
235
+ if (a !== void 0 && typeof a !== "number") return false;
236
+ return true;
237
+ };
238
+ var isXyz = (color) => {
239
+ if (!isNonNullObject(color)) return false;
240
+ const { x, y, z, a } = color;
241
+ if (typeof x !== "number") return false;
242
+ if (typeof y !== "number") return false;
243
+ if (typeof z !== "number") return false;
244
+ if (a !== void 0 && typeof a !== "number") return false;
245
+ return true;
246
+ };
247
+ var isCssColor = (color) => typeof color === "string" && cssColors[color] !== void 0;
248
+
249
+ // src/agnostic/errors/unknown-to-string/index.ts
250
+ function unknownToString(unk, encoding) {
251
+ if (unk instanceof Error) return unk.message;
252
+ if (unk instanceof Buffer) return unk.toString(encoding ?? "utf-8");
253
+ if (typeof unk === "string") return unk;
254
+ if (typeof unk === "object" && unk !== null) return JSON.stringify(unk);
255
+ return `${unk}`;
256
+ }
257
+
258
+ // src/agnostic/colors/convert/index.ts
259
+ function _hex2rgb(hex) {
260
+ if (!isHex(hex)) throw new Error(`invalid hex color ${unknownToString(hex)}`);
261
+ let hexString = hex;
262
+ const inputHex = hexString;
263
+ const startsWithHash = hexString.startsWith("#");
264
+ if (!startsWithHash) throw new Error(`invalid hex color ${inputHex}`);
265
+ hexString = hexString.slice(1);
266
+ if (hexString.length === 3) {
267
+ hexString = hexString.split("").map((c) => c + c).join("") + "ff";
268
+ } else if (hexString.length === 4) {
269
+ hexString = hexString.split("").map((c) => c + c).join("");
270
+ } else if (hexString.length === 6) {
271
+ hexString = hexString + "ff";
272
+ } else if (hexString.length !== 8) throw new Error(`invalid hex color ${inputHex}`);
273
+ const r = parseInt(hexString.slice(0, 2), 16);
274
+ const g = parseInt(hexString.slice(2, 4), 16);
275
+ const b = parseInt(hexString.slice(4, 6), 16);
276
+ const a = parseInt(hexString.slice(6, 8), 16) / 255;
277
+ return { r, g, b, a };
278
+ }
279
+ function _rgb2hex(rgb) {
280
+ const { r, g, b, a = 1 } = rgb;
281
+ const rHex = Math.round(r).toString(16).padStart(2, "0");
282
+ const gHex = Math.round(g).toString(16).padStart(2, "0");
283
+ const bHex = Math.round(b).toString(16).padStart(2, "0");
284
+ const aHex = Math.round(a * 255).toString(16).padStart(2, "0");
285
+ const returned = `#${rHex}${gHex}${bHex}${aHex}`;
286
+ if (!isHex(returned)) {
287
+ throw new Error(`invalid hex color output ${unknownToString(returned)}`);
288
+ }
289
+ return returned;
290
+ }
291
+ function _css2rgb(color) {
292
+ if (color in cssColors) return cssColors[color];
293
+ return void 0;
294
+ }
295
+ var cssColorsWithHex = Object.entries(cssColors).map(([cssColor, rgba]) => ({
296
+ name: cssColor,
297
+ hex: _rgb2hex(rgba),
298
+ rgba
299
+ }));
300
+ function _hsl2rgb(hsl) {
301
+ const { h, s, l, a = 1 } = hsl;
302
+ const H = absoluteModulo(h, 360) / 360;
303
+ const S = Math.max(0, Math.min(1, s / 100));
304
+ const L = Math.max(0, Math.min(1, l / 100));
305
+ const A = Math.max(0, Math.min(1, a));
306
+ const hue2rgb = (p, q, t) => {
307
+ if (t < 0) t += 1;
308
+ if (t > 1) t -= 1;
309
+ if (t < 1 / 6) return p + (q - p) * 6 * t;
310
+ if (t < 1 / 2) return q;
311
+ if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
312
+ return p;
313
+ };
314
+ let r;
315
+ let g;
316
+ let b;
317
+ if (S === 0) {
318
+ r = g = b = L;
319
+ } else {
320
+ const q = L < 0.5 ? L * (1 + S) : L + S - L * S;
321
+ const p = 2 * L - q;
322
+ r = hue2rgb(p, q, H + 1 / 3);
323
+ g = hue2rgb(p, q, H);
324
+ b = hue2rgb(p, q, H - 1 / 3);
325
+ }
326
+ return {
327
+ r: Math.round(r * 255),
328
+ g: Math.round(g * 255),
329
+ b: Math.round(b * 255),
330
+ a: A
331
+ };
332
+ }
333
+ function _rgb2hsl(rgb) {
334
+ const { r, g, b, a = 1 } = rgb;
335
+ const R = r / 255;
336
+ const G = g / 255;
337
+ const B = b / 255;
338
+ const max = Math.max(R, G, B);
339
+ const min = Math.min(R, G, B);
340
+ const delta = max - min;
341
+ let h = 0;
342
+ let s = 0;
343
+ const l = (max + min) / 2;
344
+ if (delta !== 0) {
345
+ s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);
346
+ if (max === R) {
347
+ h = ((G - B) / delta + (G < B ? 6 : 0)) / 6;
348
+ } else if (max === G) {
349
+ h = ((B - R) / delta + 2) / 6;
350
+ } else {
351
+ h = ((R - G) / delta + 4) / 6;
352
+ }
353
+ }
354
+ return {
355
+ h: Math.round(h * 360),
356
+ s: Math.round(s * 100),
357
+ l: Math.round(l * 100),
358
+ a
359
+ };
360
+ }
361
+ function _hsb2rgb(hsb) {
362
+ const { h, s, b, a = 1 } = hsb;
363
+ const H = absoluteModulo(h, 360) / 360;
364
+ const S = Math.max(0, Math.min(1, s / 100));
365
+ const B = Math.max(0, Math.min(1, b / 100));
366
+ const A = Math.max(0, Math.min(1, a));
367
+ const i = Math.floor(H * 6);
368
+ const f = H * 6 - i;
369
+ const p = B * (1 - S);
370
+ const q = B * (1 - f * S);
371
+ const t = B * (1 - (1 - f) * S);
372
+ let r;
373
+ let g;
374
+ let blue;
375
+ switch (absoluteModulo(i, 6)) {
376
+ case 0:
377
+ r = B;
378
+ g = t;
379
+ blue = p;
380
+ break;
381
+ case 1:
382
+ r = q;
383
+ g = B;
384
+ blue = p;
385
+ break;
386
+ case 2:
387
+ r = p;
388
+ g = B;
389
+ blue = t;
390
+ break;
391
+ case 3:
392
+ r = p;
393
+ g = q;
394
+ blue = B;
395
+ break;
396
+ case 4:
397
+ r = t;
398
+ g = p;
399
+ blue = B;
400
+ break;
401
+ case 5:
402
+ r = B;
403
+ g = p;
404
+ blue = q;
405
+ break;
406
+ default:
407
+ r = g = blue = 0;
408
+ }
409
+ return {
410
+ r: Math.round(r * 255),
411
+ g: Math.round(g * 255),
412
+ b: Math.round(blue * 255),
413
+ a: A
414
+ };
415
+ }
416
+ function _rgb2hsb(rgb) {
417
+ const { r, g, b, a = 1 } = rgb;
418
+ const R = r / 255;
419
+ const G = g / 255;
420
+ const B = b / 255;
421
+ const max = Math.max(R, G, B);
422
+ const min = Math.min(R, G, B);
423
+ const delta = max - min;
424
+ let h = 0;
425
+ let s = 0;
426
+ const brightness = max;
427
+ if (max !== 0) {
428
+ s = delta / max;
429
+ }
430
+ if (delta !== 0) {
431
+ if (max === R) {
432
+ h = ((G - B) / delta + (G < B ? 6 : 0)) / 6;
433
+ } else if (max === G) {
434
+ h = ((B - R) / delta + 2) / 6;
435
+ } else {
436
+ h = ((R - G) / delta + 4) / 6;
437
+ }
438
+ }
439
+ return {
440
+ h: Math.round(h * 360),
441
+ s: Math.round(s * 100),
442
+ b: Math.round(brightness * 100),
443
+ a
444
+ };
445
+ }
446
+ function _cmyk2rgb(cmyka) {
447
+ const { c, m, y, k, a = 1 } = cmyka;
448
+ const C = Math.max(0, Math.min(100, c)) / 100;
449
+ const M = Math.max(0, Math.min(100, m)) / 100;
450
+ const Y = Math.max(0, Math.min(100, y)) / 100;
451
+ const K = Math.max(0, Math.min(100, k)) / 100;
452
+ const A = Math.max(0, Math.min(1, a));
453
+ const R = 1 - Math.min(1, C * (1 - K) + K);
454
+ const G = 1 - Math.min(1, M * (1 - K) + K);
455
+ const B = 1 - Math.min(1, Y * (1 - K) + K);
456
+ return {
457
+ r: Math.round(R * 255),
458
+ g: Math.round(G * 255),
459
+ b: Math.round(B * 255),
460
+ a: A
461
+ };
462
+ }
463
+ function _rgb2cmyk(rgb) {
464
+ const { r, g, b, a = 1 } = rgb;
465
+ const R = Math.max(0, Math.min(1, r / 255));
466
+ const G = Math.max(0, Math.min(1, g / 255));
467
+ const B = Math.max(0, Math.min(1, b / 255));
468
+ const A = Math.max(0, Math.min(1, a));
469
+ const K = 1 - Math.max(R, G, B);
470
+ const denom = 1 - K || 1;
471
+ const C = (1 - R - K) / denom;
472
+ const M = (1 - G - K) / denom;
473
+ const Y = (1 - B - K) / denom;
474
+ return {
475
+ c: Math.round(C * 100),
476
+ m: Math.round(M * 100),
477
+ y: Math.round(Y * 100),
478
+ k: Math.round(K * 100),
479
+ a: A
480
+ };
481
+ }
482
+ function _xyz2rgb(xyza) {
483
+ const { x, y, z, a = 1 } = xyza;
484
+ const X = x / 100;
485
+ const Y = y / 100;
486
+ const Z = z / 100;
487
+ const A = Math.max(0, Math.min(1, a));
488
+ let R = X * 3.2404542 + Y * -1.5371385 + Z * -0.4985314;
489
+ let G = X * -0.969266 + Y * 1.8760108 + Z * 0.041556;
490
+ let B = X * 0.0556434 + Y * -0.2040259 + Z * 1.0572252;
491
+ const GAMMA_THRESHOLD = 31308e-7;
492
+ const GAMMA_EXPONENT = 1 / 2.4;
493
+ const GAMMA_MULT = 1.055;
494
+ const GAMMA_OFFSET = 0.055;
495
+ const LINEAR_DIVISOR = 12.92;
496
+ const gammaCorrect = (c) => c <= GAMMA_THRESHOLD ? c * LINEAR_DIVISOR : GAMMA_MULT * Math.pow(c, GAMMA_EXPONENT) - GAMMA_OFFSET;
497
+ R = gammaCorrect(R);
498
+ G = gammaCorrect(G);
499
+ B = gammaCorrect(B);
500
+ return {
501
+ r: Math.round(Math.max(0, Math.min(1, R)) * 255),
502
+ g: Math.round(Math.max(0, Math.min(1, G)) * 255),
503
+ b: Math.round(Math.max(0, Math.min(1, B)) * 255),
504
+ a: A
505
+ };
506
+ }
507
+ function _rgb2xyz(rgb) {
508
+ const { r, g, b, a = 1 } = rgb;
509
+ let R = Math.max(0, Math.min(1, r / 255));
510
+ let G = Math.max(0, Math.min(1, g / 255));
511
+ let B = Math.max(0, Math.min(1, b / 255));
512
+ const A = Math.max(0, Math.min(1, a));
513
+ const SRGB_THRESHOLD = 0.04045;
514
+ const SRGB_OFFSET = 0.055;
515
+ const SRGB_DIVISOR = 1.055;
516
+ const SRGB_EXPONENT = 2.4;
517
+ const SRGB_LINEAR_DIVISOR = 12.92;
518
+ const linearize = (c) => c > SRGB_THRESHOLD ? Math.pow((c + SRGB_OFFSET) / SRGB_DIVISOR, SRGB_EXPONENT) : c / SRGB_LINEAR_DIVISOR;
519
+ R = linearize(R);
520
+ G = linearize(G);
521
+ B = linearize(B);
522
+ const X = R * 0.4124564 + G * 0.3575761 + B * 0.1804375;
523
+ const Y = R * 0.2126729 + G * 0.7151522 + B * 0.072175;
524
+ const Z = R * 0.0193339 + G * 0.119192 + B * 0.9503041;
525
+ return {
526
+ x: X * 100,
527
+ y: Y * 100,
528
+ z: Z * 100,
529
+ a: A
530
+ };
531
+ }
532
+ function _lab2xyz(lab) {
533
+ const { l, a: A = 0, b: B = 0, al: alpha = 1 } = lab;
534
+ const REF_X = 95.047;
535
+ const REF_Y = 100;
536
+ const REF_Z = 108.883;
537
+ const fy = (l + 16) / 116;
538
+ const fx = fy + A / 500;
539
+ const fz = fy - B / 200;
540
+ const fx3 = Math.pow(fx, 3);
541
+ const fz3 = Math.pow(fz, 3);
542
+ const fy3 = Math.pow(fy, 3);
543
+ const epsilon = 8856e-6;
544
+ const kappa = 903.3;
545
+ const X = fx3 > epsilon ? fx3 : (116 * fx - 16) / kappa;
546
+ const Y = l > kappa * epsilon ? fy3 : l / kappa;
547
+ const Z = fz3 > epsilon ? fz3 : (116 * fz - 16) / kappa;
548
+ return {
549
+ x: X * REF_X,
550
+ y: Y * REF_Y,
551
+ z: Z * REF_Z,
552
+ a: Math.max(0, Math.min(1, alpha))
553
+ };
554
+ }
555
+ function _xyz2lab(xyza) {
556
+ const { x, y, z, a: alpha = 1 } = xyza;
557
+ const REF_X = 95.047;
558
+ const REF_Y = 100;
559
+ const REF_Z = 108.883;
560
+ const X = x / REF_X;
561
+ const Y = y / REF_Y;
562
+ const Z = z / REF_Z;
563
+ const epsilon = 8856e-6;
564
+ const kappa = 903.3;
565
+ const fx = X > epsilon ? Math.cbrt(X) : (kappa * X + 16) / 116;
566
+ const fy = Y > epsilon ? Math.cbrt(Y) : (kappa * Y + 16) / 116;
567
+ const fz = Z > epsilon ? Math.cbrt(Z) : (kappa * Z + 16) / 116;
568
+ const L = 116 * fy - 16;
569
+ const A = 500 * (fx - fy);
570
+ const B = 200 * (fy - fz);
571
+ return {
572
+ l: L,
573
+ a: A,
574
+ b: B,
575
+ al: Math.max(0, Math.min(1, alpha))
576
+ };
577
+ }
578
+ function _lab2lch(lab) {
579
+ const { l, a, b, al = 1 } = lab;
580
+ const c = Math.sqrt(a * a + b * b);
581
+ let h = Math.atan2(b, a) * (180 / Math.PI);
582
+ if (h < 0) h += 360;
583
+ return { l, c, h, a: al };
584
+ }
585
+ function _lch2lab(lch) {
586
+ const { l, c, h, a = 1 } = lch;
587
+ const hRad = h * Math.PI / 180;
588
+ const A = c * Math.cos(hRad);
589
+ const B = c * Math.sin(hRad);
590
+ return { l, a: A, b: B, al: a };
591
+ }
592
+ function toRgb(color) {
593
+ if (isRgb(color)) return color;
594
+ if (isHsl(color)) return _hsl2rgb(color);
595
+ if (isHsb(color)) return _hsb2rgb(color);
596
+ if (isCmyk(color)) return _cmyk2rgb(color);
597
+ if (isCssColor(color)) return _css2rgb(color);
598
+ if (isHex(color)) return _hex2rgb(color);
599
+ if (isXyz(color)) return _xyz2rgb(color);
600
+ if (isLab(color)) return _xyz2rgb(_lab2xyz(color));
601
+ if (isLch(color)) return _xyz2rgb(_lab2xyz(_lch2lab(color)));
602
+ throw new Error(`Invalid color input: ${unknownToString(color)}`);
603
+ }
604
+ function toXyz(color) {
605
+ if (isXyz(color)) return color;
606
+ if (isLab(color)) return _lab2xyz(color);
607
+ if (isLch(color)) return _lab2xyz(_lch2lab(color));
608
+ if (isRgb(color)) return _rgb2xyz(color);
609
+ if (isHsl(color)) return _rgb2xyz(_hsl2rgb(color));
610
+ if (isHsb(color)) return _rgb2xyz(_hsb2rgb(color));
611
+ if (isCmyk(color)) return _rgb2xyz(_cmyk2rgb(color));
612
+ if (isCssColor(color)) return _rgb2xyz(_css2rgb(color));
613
+ if (isHex(color)) return _rgb2xyz(_hex2rgb(color));
614
+ throw new Error(`Invalid color input: ${unknownToString(color)}`);
615
+ }
616
+ function toLab(color) {
617
+ if (isLab(color)) return color;
618
+ if (isLch(color)) return _lch2lab(color);
619
+ const xyzColor = toXyz(color);
620
+ return _xyz2lab(xyzColor);
621
+ }
622
+ function toLch(color) {
623
+ if (isLch(color)) return color;
624
+ const labColor = toLab(color);
625
+ return _lab2lch(labColor);
626
+ }
627
+ function toHsl(color) {
628
+ if (isHsl(color)) return color;
629
+ const rgbColor = toRgb(color);
630
+ return _rgb2hsl(rgbColor);
631
+ }
632
+ function toHsb(color) {
633
+ if (isHsb(color)) return color;
634
+ const rgbColor = toRgb(color);
635
+ return _rgb2hsb(rgbColor);
636
+ }
637
+ function toCmyk(color) {
638
+ if (isCmyk(color)) return color;
639
+ const rgbColor = toRgb(color);
640
+ return _rgb2cmyk(rgbColor);
641
+ }
642
+ function toHex(color) {
643
+ if (isHex(color)) return color;
644
+ const rgbColor = toRgb(color);
645
+ return _rgb2hex(rgbColor);
646
+ }
647
+ function viaRgb(color, transformer) {
648
+ const _color = color;
649
+ const rgb = toRgb(_color);
650
+ const transformedRgb = transformer(rgb);
651
+ if (isRgb(_color)) return transformedRgb;
652
+ if (isHsl(_color)) return toHsl(transformedRgb);
653
+ if (isHsb(_color)) return toHsb(transformedRgb);
654
+ if (isCmyk(_color)) return toCmyk(transformedRgb);
655
+ if (isXyz(_color)) return toXyz(transformedRgb);
656
+ if (isLab(_color)) return toLab(transformedRgb);
657
+ if (isLch(_color)) return toLch(transformedRgb);
658
+ if (isHex(_color)) return toRgb(transformedRgb);
659
+ if (isCssColor(_color)) return transformedRgb;
660
+ const _typecheck = true;
661
+ throw new Error(`Invalid color input: ${unknownToString(_color)}`);
662
+ }
663
+ function viaHsl(color, transformer) {
664
+ const _color = color;
665
+ const hsl = toHsl(_color);
666
+ const transformedHsl = transformer(hsl);
667
+ if (isHsl(_color)) return transformedHsl;
668
+ if (isRgb(_color)) return toRgb(transformedHsl);
669
+ if (isHsb(_color)) return toHsb(transformedHsl);
670
+ if (isCmyk(_color)) return toCmyk(transformedHsl);
671
+ if (isXyz(_color)) return toXyz(transformedHsl);
672
+ if (isLab(_color)) return toLab(transformedHsl);
673
+ if (isLch(_color)) return toLch(transformedHsl);
674
+ if (isHex(_color)) return toHex(transformedHsl);
675
+ if (isCssColor(_color)) return transformedHsl;
676
+ const _typecheck = true;
677
+ throw new Error(`Invalid color input: ${unknownToString(_color)}`);
678
+ }
679
+ function viaHsb(color, transformer) {
680
+ const _color = color;
681
+ const hsb = toHsb(_color);
682
+ const transformedHsb = transformer(hsb);
683
+ if (isHsb(_color)) return transformedHsb;
684
+ if (isRgb(_color)) return toRgb(transformedHsb);
685
+ if (isHsl(_color)) return toHsl(transformedHsb);
686
+ if (isCmyk(_color)) return toCmyk(transformedHsb);
687
+ if (isXyz(_color)) return toXyz(transformedHsb);
688
+ if (isLab(_color)) return toLab(transformedHsb);
689
+ if (isLch(_color)) return toLch(transformedHsb);
690
+ if (isHex(_color)) return toHex(transformedHsb);
691
+ if (isCssColor(_color)) return transformedHsb;
692
+ const _typecheck = true;
693
+ throw new Error(`Invalid color input: ${unknownToString(_color)}`);
694
+ }
695
+ function viaCmyk(color, transformer) {
696
+ const _color = color;
697
+ const cmyk = toCmyk(_color);
698
+ const transformedCmyk = transformer(cmyk);
699
+ if (isHsb(_color)) return transformedCmyk;
700
+ if (isRgb(_color)) return toRgb(transformedCmyk);
701
+ if (isHsl(_color)) return toHsl(transformedCmyk);
702
+ if (isCmyk(_color)) return toCmyk(transformedCmyk);
703
+ if (isXyz(_color)) return toXyz(transformedCmyk);
704
+ if (isLab(_color)) return toLab(transformedCmyk);
705
+ if (isLch(_color)) return toLch(transformedCmyk);
706
+ if (isHex(_color)) return toHex(transformedCmyk);
707
+ if (isCssColor(_color)) return transformedCmyk;
708
+ const _typecheck = true;
709
+ throw new Error(`Invalid color input: ${unknownToString(_color)}`);
710
+ }
711
+ function viaXyz(color, transformer) {
712
+ const _color = color;
713
+ const xyz = toXyz(_color);
714
+ const transformedXyz = transformer(xyz);
715
+ if (isHsb(_color)) return transformedXyz;
716
+ if (isRgb(_color)) return toRgb(transformedXyz);
717
+ if (isHsl(_color)) return toHsl(transformedXyz);
718
+ if (isCmyk(_color)) return toCmyk(transformedXyz);
719
+ if (isXyz(_color)) return toXyz(transformedXyz);
720
+ if (isLab(_color)) return toLab(transformedXyz);
721
+ if (isLch(_color)) return toLch(transformedXyz);
722
+ if (isHex(_color)) return toHex(transformedXyz);
723
+ if (isCssColor(_color)) return transformedXyz;
724
+ const _typecheck = true;
725
+ throw new Error(`Invalid color input: ${unknownToString(_color)}`);
726
+ }
727
+ function viaLab(color, transformer) {
728
+ const _color = color;
729
+ const lab = toLab(_color);
730
+ const transformedLab = transformer(lab);
731
+ if (isHsb(_color)) return transformedLab;
732
+ if (isRgb(_color)) return toRgb(transformedLab);
733
+ if (isHsl(_color)) return toHsl(transformedLab);
734
+ if (isCmyk(_color)) return toCmyk(transformedLab);
735
+ if (isXyz(_color)) return toXyz(transformedLab);
736
+ if (isLab(_color)) return toLab(transformedLab);
737
+ if (isLch(_color)) return toLch(transformedLab);
738
+ if (isHex(_color)) return toHex(transformedLab);
739
+ if (isCssColor(_color)) return transformedLab;
740
+ const _typecheck = true;
741
+ throw new Error(`Invalid color input: ${unknownToString(_color)}`);
742
+ }
743
+ function viaLch(color, transformer) {
744
+ const _color = color;
745
+ const lch = toLch(_color);
746
+ const transformedLch = transformer(lch);
747
+ if (isHsb(_color)) return transformedLch;
748
+ if (isRgb(_color)) return toRgb(transformedLch);
749
+ if (isHsl(_color)) return toHsl(transformedLch);
750
+ if (isCmyk(_color)) return toCmyk(transformedLch);
751
+ if (isXyz(_color)) return toXyz(transformedLch);
752
+ if (isLab(_color)) return toLab(transformedLch);
753
+ if (isLch(_color)) return toLch(transformedLch);
754
+ if (isHex(_color)) return toHex(transformedLch);
755
+ if (isCssColor(_color)) return transformedLch;
756
+ const _typecheck = true;
757
+ throw new Error(`Invalid color input: ${unknownToString(_color)}`);
758
+ }
759
+
760
+ // src/agnostic/colors/channels/index.ts
761
+ function addChannel(color, channel, amount) {
762
+ switch (channel) {
763
+ case "red":
764
+ return viaRgb(color, (rgb) => ({ ...rgb, r: clamp(rgb.r + amount, 0, 255) }));
765
+ case "green":
766
+ return viaRgb(color, (rgb) => ({ ...rgb, g: clamp(rgb.g + amount, 0, 255) }));
767
+ case "blue":
768
+ return viaRgb(color, (rgb) => ({ ...rgb, b: clamp(rgb.b + amount, 0, 255) }));
769
+ case "hue":
770
+ return viaHsl(color, (hsl) => ({ ...hsl, h: absoluteModulo(hsl.h + amount, 360) }));
771
+ case "saturation":
772
+ return viaHsl(color, (hsl) => ({ ...hsl, s: clamp(hsl.s + amount, 0, 100) }));
773
+ case "lightness":
774
+ return viaHsl(color, (hsl) => ({ ...hsl, l: clamp(hsl.l + amount, 0, 100) }));
775
+ case "brightness":
776
+ return viaHsb(color, (hsb) => ({ ...hsb, b: clamp(hsb.b + amount, 0, 100) }));
777
+ case "alpha":
778
+ return viaRgb(color, (rgb) => ({ ...rgb, a: clamp(rgb.a ?? 1 + amount, 0, 1) }));
779
+ case "cyan":
780
+ return viaCmyk(color, (cmyk) => ({ ...cmyk, c: clamp(cmyk.c + amount, 0, 100) }));
781
+ case "magenta":
782
+ return viaCmyk(color, (cmyk) => ({ ...cmyk, m: clamp(cmyk.m + amount, 0, 100) }));
783
+ case "yellow":
784
+ return viaCmyk(color, (cmyk) => ({ ...cmyk, y: clamp(cmyk.y + amount, 0, 100) }));
785
+ case "black":
786
+ return viaCmyk(color, (cmyk) => ({ ...cmyk, k: clamp(cmyk.k + amount, 0, 100) }));
787
+ case "x":
788
+ return viaXyz(color, (xyz) => ({ ...xyz, x: xyz.x + amount }));
789
+ case "y":
790
+ return viaXyz(color, (xyz) => ({ ...xyz, y: xyz.y + amount }));
791
+ case "z":
792
+ return viaXyz(color, (xyz) => ({ ...xyz, z: xyz.z + amount }));
793
+ case "lightnessLab":
794
+ return viaLab(color, (lab) => ({ ...lab, l: clamp(lab.l + amount, 0, 100) }));
795
+ case "aLab":
796
+ return viaLab(color, (lab) => ({ ...lab, a: lab.a + amount }));
797
+ case "bLab":
798
+ return viaLab(color, (lab) => ({ ...lab, b: lab.b + amount }));
799
+ case "chroma":
800
+ return viaLch(color, (lch) => ({ ...lch, c: Math.max(0, lch.c + amount) }));
801
+ case "hueLch":
802
+ return viaLch(color, (lch) => ({ ...lch, h: clamp(lch.h + amount, 0, 360) }));
803
+ }
804
+ }
805
+
806
+ // src/agnostic/colors/rotate/index.ts
807
+ function rotateHsl(color, degrees) {
808
+ return addChannel(color, "hue", degrees);
809
+ }
810
+ function rotateLab(color, degrees) {
811
+ return viaLab(color, (lab) => {
812
+ const hue = Math.atan2(lab.b, lab.a) * (180 / Math.PI);
813
+ const chroma = Math.sqrt(lab.a ** 2 + lab.b ** 2);
814
+ const newHue = absoluteModulo(hue + degrees, 360);
815
+ const rad = newHue * (Math.PI / 180);
816
+ return {
817
+ ...lab,
818
+ a: chroma * Math.cos(rad),
819
+ b: chroma * Math.sin(rad)
820
+ };
821
+ });
822
+ }
823
+ function rotateLch(color, degrees) {
824
+ return viaLch(color, (lch) => ({
825
+ ...lch,
826
+ h: absoluteModulo(lch.h + degrees, 360)
827
+ }));
828
+ }
829
+ function rotate(color, degrees, method = "hsl") {
830
+ switch (method) {
831
+ case "hsl":
832
+ return rotateHsl(color, degrees);
833
+ case "lab":
834
+ return rotateLab(color, degrees);
835
+ case "lch":
836
+ return rotateLch(color, degrees);
837
+ }
838
+ }
12
839
 
13
840
  // src/agnostic/colors/palette/index.ts
14
841
  function complementaryHsl(color) {