From a8fae53564600c0a4004f4d4288595570f1d0509 Mon Sep 17 00:00:00 2001 From: AzazelN28 Date: Wed, 24 Apr 2024 16:07:47 +0200 Subject: [PATCH] :bug: color palette sorting --- common/src/app/common/colors.cljc | 23 +++++++++++++++++++ .../ui/workspace/colorpicker/libraries.cljs | 8 +------ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/common/src/app/common/colors.cljc b/common/src/app/common/colors.cljc index 69de60bd5..1f34903a4 100644 --- a/common/src/app/common/colors.cljc +++ b/common/src/app/common/colors.cljc @@ -274,6 +274,13 @@ (catch #?(:clj Throwable :cljs :default) _cause [0 0 0]))) +(defn hex->lum + [color] + (let [[r g b] (hex->rgb color)] + (mth/sqrt (+ (* 0.241 r) + (* 0.691 g) + (* 0.068 b))))) + (defn- int->hex "Convert integer to hex string" [v] @@ -455,3 +462,19 @@ :else [r g (inc b)])) + +(defn reduce-range + [value range] + (/ (mth/floor (* value range)) range)) + +(defn sort-colors + [a b] + (let [[ah _ av] (hex->hsv (:color a)) + [bh _ bv] (hex->hsv (:color b)) + ah (reduce-range (/ ah 60) 8) + bh (reduce-range (/ bh 60) 8) + av (/ av 255) + bv (/ bv 255) + a (+ (* ah 100) (* av 10)) + b (+ (* bh 100) (* bv 10))] + (compare a b))) diff --git a/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs b/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs index 9bb4f067e..1c3ef0ed8 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs +++ b/frontend/src/app/main/ui/workspace/colorpicker/libraries.cljs @@ -54,13 +54,7 @@ get-sorted-colors (mf/use-fn (fn [colors] - (sort (fn [a b] - (let [[ah _ al] (c/hex->hsl (:color a)) - [bh _ bl] (c/hex->hsl (:color b)) - a (+ (* ah 100) (* al 99)) - b (+ (* bh 100) (* bl 99))] - (compare a b))) - (into [] (filter check-valid-color?) colors)))) + (sort c/sort-colors (into [] (filter check-valid-color?) colors)))) toggle-palette (mf/use-fn