From 296da1df0bd7d1ae75e684e63b2ddb68b8d1fa21 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Sun, 28 Feb 2016 11:13:33 +0200 Subject: [PATCH] Initial work on state management logic for clipboard. --- src/uxbox/state/clipboard.cljs | 16 ++++++++++++++++ src/uxbox/ui/workspace/clipboard.cljs | 15 --------------- 2 files changed, 16 insertions(+), 15 deletions(-) create mode 100644 src/uxbox/state/clipboard.cljs diff --git a/src/uxbox/state/clipboard.cljs b/src/uxbox/state/clipboard.cljs new file mode 100644 index 000000000..8784acab7 --- /dev/null +++ b/src/uxbox/state/clipboard.cljs @@ -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))) diff --git a/src/uxbox/ui/workspace/clipboard.cljs b/src/uxbox/ui/workspace/clipboard.cljs index 6ea6f90c1..7284a113c 100644 --- a/src/uxbox/ui/workspace/clipboard.cljs +++ b/src/uxbox/ui/workspace/clipboard.cljs @@ -3,21 +3,6 @@ [uxbox.ui.mixins :as mx] [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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;