mirror of
https://github.com/penpot/penpot.git
synced 2025-06-07 08:31:40 +02:00
Add color collections related events.
This commit is contained in:
parent
16249ccd63
commit
5e7d353627
1 changed files with 77 additions and 1 deletions
|
@ -86,9 +86,85 @@
|
||||||
(reify
|
(reify
|
||||||
rs/UpdateEvent
|
rs/UpdateEvent
|
||||||
(-apply-update [_ state]
|
(-apply-update [_ state]
|
||||||
(println "set-collection" id)
|
|
||||||
(assoc-in state [:dashboard :collection-id] id))
|
(assoc-in state [:dashboard :collection-id] id))
|
||||||
|
|
||||||
IPrintWithWriter
|
IPrintWithWriter
|
||||||
(-pr-writer [mv writer _]
|
(-pr-writer [mv writer _]
|
||||||
(-write writer "#<event:u.d.d/set-collection>"))))
|
(-write writer "#<event:u.d.d/set-collection>"))))
|
||||||
|
|
||||||
|
(defn mk-color-collection
|
||||||
|
[]
|
||||||
|
(reify
|
||||||
|
rs/UpdateEvent
|
||||||
|
(-apply-update [_ state]
|
||||||
|
(let [id (random-uuid)
|
||||||
|
coll {:name "Unnamed collection"
|
||||||
|
:id id :colors #{}}]
|
||||||
|
(-> state
|
||||||
|
(assoc-in [:colors-by-id id] coll)
|
||||||
|
(assoc-in [:dashboard :collection-id] id)
|
||||||
|
(assoc-in [:dashboard :collection-type] :own))))
|
||||||
|
|
||||||
|
IPrintWithWriter
|
||||||
|
(-pr-writer [mv writer _]
|
||||||
|
(-write writer "#<event:u.d.d/mk-color-collection>"))))
|
||||||
|
|
||||||
|
(defn rename-color-collection
|
||||||
|
[id name]
|
||||||
|
(reify
|
||||||
|
rs/UpdateEvent
|
||||||
|
(-apply-update [_ state]
|
||||||
|
(assoc-in state [:colors-by-id id :name] name))
|
||||||
|
|
||||||
|
IPrintWithWriter
|
||||||
|
(-pr-writer [mv writer _]
|
||||||
|
(-write writer "#<event:u.d.d/rename-color-collection>"))))
|
||||||
|
|
||||||
|
(defn delete-color-collection
|
||||||
|
[id]
|
||||||
|
(reify
|
||||||
|
rs/UpdateEvent
|
||||||
|
(-apply-update [_ state]
|
||||||
|
(let [state (update state :colors-by-id dissoc id)
|
||||||
|
colls (sort-by :id (vals (:colors-by-id state)))]
|
||||||
|
(assoc-in state [:dashboard :collection-id] (:id (first colls)))))
|
||||||
|
|
||||||
|
IPrintWithWriter
|
||||||
|
(-pr-writer [mv writer _]
|
||||||
|
(-write writer "#<event:u.d.d/rename-color-collection>"))))
|
||||||
|
|
||||||
|
(defn replace-color
|
||||||
|
"Add or replace color in a collection."
|
||||||
|
[{:keys [id from to] :as params}]
|
||||||
|
(sc/validate! +color-replace-schema+ params)
|
||||||
|
(reify
|
||||||
|
rs/UpdateEvent
|
||||||
|
(-apply-update [_ state]
|
||||||
|
(if-let [colors (get-in state [:colors-by-id id :colors])]
|
||||||
|
(as-> colors $
|
||||||
|
(disj $ from)
|
||||||
|
(conj $ to)
|
||||||
|
(assoc-in state [:colors-by-id id :colors] $))
|
||||||
|
state))
|
||||||
|
|
||||||
|
IPrintWithWriter
|
||||||
|
(-pr-writer [mv writer _]
|
||||||
|
(-write writer "#<event:u.d.d/replace-color>"))))
|
||||||
|
|
||||||
|
(defn remove-color
|
||||||
|
"Remove color in a collection."
|
||||||
|
[{:keys [id color] :as params}]
|
||||||
|
(sc/validate! +remove-color-schema+ params)
|
||||||
|
(reify
|
||||||
|
rs/UpdateEvent
|
||||||
|
(-apply-update [_ state]
|
||||||
|
(if-let [colors (get-in state [:colors-by-id id :colors])]
|
||||||
|
(as-> colors $
|
||||||
|
(disj $ color)
|
||||||
|
(assoc-in state [:colors-by-id id :colors] $))
|
||||||
|
state))
|
||||||
|
|
||||||
|
IPrintWithWriter
|
||||||
|
(-pr-writer [mv writer _]
|
||||||
|
(-write writer "#<event:u.d.d/remove-color>"))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue