From a0726d3a36a29f61bf63b93e2949b6ab8260c90f Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 6 Apr 2016 20:33:36 +0300 Subject: [PATCH] Refactor shapes resize related code. --- src/uxbox/ui/workspace/canvas.cljs | 23 ++++---- src/uxbox/ui/workspace/canvas/resize.cljs | 44 --------------- src/uxbox/ui/workspace/resize.cljs | 68 +++++++++++++++++++++++ 3 files changed, 81 insertions(+), 54 deletions(-) delete mode 100644 src/uxbox/ui/workspace/canvas/resize.cljs create mode 100644 src/uxbox/ui/workspace/resize.cljs diff --git a/src/uxbox/ui/workspace/canvas.cljs b/src/uxbox/ui/workspace/canvas.cljs index 407b0564e..fffbb7086 100644 --- a/src/uxbox/ui/workspace/canvas.cljs +++ b/src/uxbox/ui/workspace/canvas.cljs @@ -25,7 +25,7 @@ [uxbox.ui.workspace.base :as uuwb] [uxbox.ui.workspace.drawarea :refer (draw-area)] [uxbox.ui.workspace.movement :as cmov] - [uxbox.ui.workspace.canvas.resize] + [uxbox.ui.workspace.resize :as cres] [uxbox.ui.workspace.canvas.ruler :refer (ruler)] [uxbox.ui.workspace.canvas.selection :refer (shapes-selection)] [uxbox.ui.workspace.canvas.selrect :refer (selrect)] @@ -156,27 +156,30 @@ (let [key1 (events/listen js/document EventType.MOUSEMOVE on-mousemove) key2 (events/listen js/document EventType.KEYDOWN on-key-down) key3 (events/listen js/document EventType.KEYUP on-key-up) - sub1 (cmov/watch-move-actions)] + sub1 (cmov/watch-move-actions) + sub2 (cres/watch-resize-actions)] (assoc own ::sub1 sub1 + ::sub2 sub2 ::key1 key1 ::key2 key2 ::key3 key3)))) +(defn- viewport-transfer-state + [old-own own] + (->> [::key1 ::key2 ::key3 + ::sub1 ::sub2] + (select-keys old-own) + (merge own))) + (defn- viewport-will-unmount [own] (events/unlistenByKey (::key1 own)) (events/unlistenByKey (::key2 own)) (events/unlistenByKey (::key3 own)) (.close (::sub1 own)) - (dissoc own ::key1 ::key2 ::key3 ::sub1)) - -(defn- viewport-transfer-state - [old-own own] - (->> [::key1 ::key2 ::key3 - ::sub1] - (select-keys old-own) - (merge own))) + (.close (::sub2 own)) + (dissoc own ::key1 ::key2 ::key3 ::sub1 ::sub2)) (def viewport (mx/component diff --git a/src/uxbox/ui/workspace/canvas/resize.cljs b/src/uxbox/ui/workspace/canvas/resize.cljs deleted file mode 100644 index 9c03853c8..000000000 --- a/src/uxbox/ui/workspace/canvas/resize.cljs +++ /dev/null @@ -1,44 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; Copyright (c) 2015-2016 Andrey Antukh -;; Copyright (c) 2015-2016 Juan de la Cruz - -(ns uxbox.ui.workspace.canvas.resize - (:require-macros [uxbox.util.syntax :refer [define-once]]) - (:require [sablono.core :as html :refer-macros [html]] - [rum.core :as rum] - [beicon.core :as rx] - [lentes.core :as l] - [uxbox.rstore :as rs] - [uxbox.shapes :as ush] - [uxbox.data.workspace :as udw] - [uxbox.data.shapes :as uds] - [uxbox.ui.core :as uuc] - [uxbox.ui.shapes.core :as uusc] - [uxbox.ui.workspace.base :as uuwb] - [uxbox.ui.mixins :as mx] - [uxbox.util.geom.point :as gpt] - [uxbox.util.dom :as dom])) - -(define-once :resize-subscriptions - (letfn [(init [event] - (let [payload (:payload event) - stoper (->> uuc/actions-s - (rx/map :type) - (rx/filter #(empty? %)) - (rx/take 1))] - (as-> uuwb/mouse-delta-s $ - (rx/take-until stoper $) - (rx/with-latest-from vector uuwb/mouse-ctrl-s $) - (rx/subscribe $ #(on-value payload %))))) - - (on-value [{:keys [vid shape]} [delta ctrl?]] - (let [params {:vid vid :delta (assoc delta :lock ctrl?)}] - (rs/emit! (uds/update-vertex-position shape params))))] - - (as-> uuc/actions-s $ - (rx/dedupe $) - (rx/filter #(= (:type %) "ui.shape.resize") $) - (rx/on-value $ init)))) diff --git a/src/uxbox/ui/workspace/resize.cljs b/src/uxbox/ui/workspace/resize.cljs new file mode 100644 index 000000000..2d93abb9c --- /dev/null +++ b/src/uxbox/ui/workspace/resize.cljs @@ -0,0 +1,68 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) 2015-2016 Andrey Antukh +;; Copyright (c) 2015-2016 Juan de la Cruz + +(ns uxbox.ui.workspace.resize + (:require [beicon.core :as rx] + [uxbox.rstore :as rs] + [uxbox.shapes :as ush] + [uxbox.data.shapes :as uds] + [uxbox.ui.core :as uuc] + [uxbox.ui.workspace.base :as uuwb] + [uxbox.util.geom.point :as gpt])) + +(declare initialize) +(declare handle-resize) + +;; --- Public Api + +(defn watch-resize-actions + [] + (as-> uuc/actions-s $ + (rx/dedupe $) + (rx/filter #(= (:type %) "ui.shape.resize") $) + (rx/on-value $ initialize))) + +;; --- Implementation + +(defn- initialize + [event] + (let [payload (:payload event) + stoper (->> uuc/actions-s + (rx/map :type) + (rx/filter #(empty? %)) + (rx/take 1))] + (as-> uuwb/mouse-delta-s $ + (rx/take-until stoper $) + (rx/with-latest-from vector uuwb/mouse-ctrl-s $) + (rx/subscribe $ #(handle-resize payload %))))) + +(defn- handle-resize + [{:keys [vid shape]} [delta ctrl?]] + (let [params {:vid vid :delta (assoc delta :lock ctrl?)}] + (rs/emit! (uds/update-vertex-position shape params)))) + + +;; (define-once :resize-subscriptions +;; (letfn [(init [event] +;; (let [payload (:payload event) +;; stoper (->> uuc/actions-s +;; (rx/map :type) +;; (rx/filter #(empty? %)) +;; (rx/take 1))] +;; (as-> uuwb/mouse-delta-s $ +;; (rx/take-until stoper $) +;; (rx/with-latest-from vector uuwb/mouse-ctrl-s $) +;; (rx/subscribe $ #(on-value payload %))))) + +;; (on-value [{:keys [vid shape]} [delta ctrl?]] +;; (let [params {:vid vid :delta (assoc delta :lock ctrl?)}] +;; (rs/emit! (uds/update-vertex-position shape params))))] + +;; (as-> uuc/actions-s $ +;; (rx/dedupe $) +;; (rx/filter #(= (:type %) "ui.shape.resize") $) +;; (rx/on-value $ init))))