0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-13 08:11:30 -05:00

Initial work on state management logic for clipboard.

This commit is contained in:
Andrey Antukh 2016-02-28 11:13:33 +02:00
parent e26de8ce3b
commit 296da1df0b
2 changed files with 16 additions and 15 deletions

View file

@ -0,0 +1,16 @@
(ns uxbox.state.clipboard)
(defonce ^:private ^:const +max-items+ 5)
(defn conj-item
[state item]
(if-let [project (get-in state [:workspace :project])]
(let [queue (get-in state [:clipboard project] #queue [])
queue (conj queue item)]
(assoc-in state [:clipboard project]
(if (> (count queue) +max-items+)
(pop queue)
queue)))
(do
(js/console.warn "no active project for manage clipboard.")
state)))

View file

@ -3,21 +3,6 @@
[uxbox.ui.mixins :as mx] [uxbox.ui.mixins :as mx]
[uxbox.ui.lightbox :as lightbox])) [uxbox.ui.lightbox :as lightbox]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; State
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defonce ^:private state (atom #queue []))
(defonce ^:private ^:const +max-items+ 5)
(defn add
[item]
(swap! state (fn [v]
(let [v (conj v item)]
(if (> (count v) +max-items+)
(pop v)
v)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Component ;; Component
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;