mirror of
https://github.com/penpot/penpot.git
synced 2025-06-15 04:31:39 +02:00
🐛 Fix copy color information in several formats
This commit is contained in:
parent
959e069ea9
commit
9048c01308
4 changed files with 34 additions and 1 deletions
|
@ -90,6 +90,7 @@
|
||||||
- Fix export multiple images when only one of them has export settings [Taiga #5649](https://tree.taiga.io/project/penpot/issue/5649)
|
- Fix export multiple images when only one of them has export settings [Taiga #5649](https://tree.taiga.io/project/penpot/issue/5649)
|
||||||
- Fix error when a user different than the thread creator edits a comment [Taiga #5647](https://tree.taiga.io/project/penpot/issue/5647)
|
- Fix error when a user different than the thread creator edits a comment [Taiga #5647](https://tree.taiga.io/project/penpot/issue/5647)
|
||||||
- Fix unnecessary button [Taiga #3312](https://tree.taiga.io/project/penpot/issue/3312)
|
- Fix unnecessary button [Taiga #3312](https://tree.taiga.io/project/penpot/issue/3312)
|
||||||
|
- Fix copy color information in several formats [Taiga #4723](https://tree.taiga.io/project/penpot/issue/4723)
|
||||||
|
|
||||||
### :arrow_up: Deps updates
|
### :arrow_up: Deps updates
|
||||||
|
|
||||||
|
|
|
@ -752,6 +752,12 @@
|
||||||
[key (delay (generator-fn key))]))
|
[key (delay (generator-fn key))]))
|
||||||
keys))
|
keys))
|
||||||
|
|
||||||
|
(defn opacity-to-hex [opacity]
|
||||||
|
(let [opacity (* opacity 255)
|
||||||
|
value (mth/round opacity)]
|
||||||
|
(.. value
|
||||||
|
(toString 16)
|
||||||
|
(padStart 2 "0"))))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; String Functions
|
;; String Functions
|
||||||
|
|
|
@ -35,6 +35,13 @@
|
||||||
{:to-prop "background"
|
{:to-prop "background"
|
||||||
:format #(uc/color->background (shape->color shape))}))
|
:format #(uc/color->background (shape->color shape))}))
|
||||||
|
|
||||||
|
(defn copy-data-format [shape format]
|
||||||
|
(cg/generate-css-props
|
||||||
|
shape
|
||||||
|
fill-attributes
|
||||||
|
{:to-prop "background-color"
|
||||||
|
:format #(uc/color->format->background (shape->color shape) format)}))
|
||||||
|
|
||||||
(mf/defc fill-block [{:keys [shape]}]
|
(mf/defc fill-block [{:keys [shape]}]
|
||||||
(let [color-format (mf/use-state :hex)
|
(let [color-format (mf/use-state :hex)
|
||||||
color (shape->color shape)]
|
color (shape->color shape)]
|
||||||
|
@ -43,7 +50,7 @@
|
||||||
[:& color-row {:color color
|
[:& color-row {:color color
|
||||||
:format @color-format
|
:format @color-format
|
||||||
:on-change-format #(reset! color-format %)
|
:on-change-format #(reset! color-format %)
|
||||||
:copy-data (copy-data shape)}]]))
|
:copy-data (copy-data-format shape @color-format)}]]))
|
||||||
|
|
||||||
(mf/defc fill-panel
|
(mf/defc fill-panel
|
||||||
[{:keys [shapes]}]
|
[{:keys [shapes]}]
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
(ns app.util.color
|
(ns app.util.color
|
||||||
"Color conversion utils."
|
"Color conversion utils."
|
||||||
(:require
|
(:require
|
||||||
|
[app.common.data :as d]
|
||||||
[app.util.i18n :as i18n :refer [tr]]
|
[app.util.i18n :as i18n :refer [tr]]
|
||||||
[app.util.object :as obj]
|
[app.util.object :as obj]
|
||||||
[app.util.strings :as ust]
|
[app.util.strings :as ust]
|
||||||
|
@ -150,6 +151,24 @@
|
||||||
|
|
||||||
:else "transparent")))
|
:else "transparent")))
|
||||||
|
|
||||||
|
(defn color->format->background [{:keys [color opacity gradient]} format]
|
||||||
|
(let [opacity (or opacity 1)]
|
||||||
|
(cond
|
||||||
|
(and gradient (not= :multiple gradient))
|
||||||
|
(gradient->css gradient)
|
||||||
|
|
||||||
|
(not= color :multiple)
|
||||||
|
(case format
|
||||||
|
:rgba (let [[r g b] (hex->rgb color)]
|
||||||
|
(str/fmt "rgba(%s, %s, %s, %s)" r g b opacity))
|
||||||
|
|
||||||
|
:hsla (let [[h s l] (hex->hsl color)]
|
||||||
|
(str/fmt "hsla(%s, %s, %s, %s)" h (* 100 s) (* 100 l) opacity))
|
||||||
|
|
||||||
|
:hex (str color (str/upper (d/opacity-to-hex opacity))))
|
||||||
|
|
||||||
|
:else "transparent")))
|
||||||
|
|
||||||
(defn multiple? [{:keys [id file-id value color gradient]}]
|
(defn multiple? [{:keys [id file-id value color gradient]}]
|
||||||
(or (= value :multiple)
|
(or (= value :multiple)
|
||||||
(= color :multiple)
|
(= color :multiple)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue