diff --git a/src/uxbox/ui/workspace.cljs b/src/uxbox/ui/workspace.cljs index f76dbba45..9231db94f 100644 --- a/src/uxbox/ui/workspace.cljs +++ b/src/uxbox/ui/workspace.cljs @@ -48,6 +48,14 @@ left (.-scrollLeft target)] (rx/push! wb/scroll-b (gpt/point left top)))) +(defn- on-key-down + [event] + (js/console.log event)) + +(defn- on-key-up + [event] + (js/console.log event)) + (defn- workspace-render [own projectid] (let [{:keys [flags] :as workspace} (rum/react wb/workspace-l) @@ -63,7 +71,10 @@ (when left-sidebar? (left-sidebar)) - [:section.workspace-content {:class classes :on-scroll on-scroll} + [:section.workspace-content {:class classes + :on-scroll on-scroll + :on-key-up on-key-up + :on-key-down on-key-down} ;; Pages management lightbox ;; (pagesmngr) @@ -109,8 +120,8 @@ ;; that horrible hack. (let [el1 (mx/get-ref-dom own "viewport-container") el2 (mx/get-ref-dom own "workspace-canvas")] - (set! (.-scrollLeft el1) 600) - (set! (.-scrollLeft el2) 600) + (set! (.-scrollLeft el1) wb/document-start-scroll-x) + (set! (.-scrollLeft el2) wb/document-start-scroll-x) own)) (defn- workspace-transfer-state diff --git a/src/uxbox/ui/workspace/base.cljs b/src/uxbox/ui/workspace/base.cljs index 5dca6841d..9c5fffe0d 100644 --- a/src/uxbox/ui/workspace/base.cljs +++ b/src/uxbox/ui/workspace/base.cljs @@ -57,6 +57,7 @@ (defonce scroll-s (as-> scroll-b $ (rx/merge $ (rx/of (gpt/point))) + (rx/pr-log "scroll: " $) (rx/dedupe $))) (defonce scroll-a @@ -121,8 +122,10 @@ ;; Constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(def viewport-width 4069) -(def viewport-height 2048) +(def ^:const viewport-width 4069) +(def ^:const viewport-height 2048) -(def document-start-x 630) -(def document-start-y 30) +(def ^:const document-start-x 600) +(def ^:const document-start-y 30) + +(def ^:const document-start-scroll-x 550) diff --git a/src/uxbox/ui/workspace/canvas.cljs b/src/uxbox/ui/workspace/canvas.cljs index c72c4a5bc..f846a1146 100644 --- a/src/uxbox/ui/workspace/canvas.cljs +++ b/src/uxbox/ui/workspace/canvas.cljs @@ -110,22 +110,28 @@ (defn- canvas-did-mount [own] - (letfn [(on-mousemove [event page offset-pt] + (letfn [(on-mousemove [event page] (let [wpt (gpt/point (.-clientX event) (.-clientY event)) - cpt (gpt/subtract wpt offset-pt) + canvas (mx/get-ref-dom own (str "canvas" (:id page))) + brect (.getBoundingClientRect canvas) + brect (gpt/point (.-left brect) (.-top brect)) + brect (gpt/add brect @wb/scroll-a) + + cpt (gpt/subtract wpt brect) event {:id (:id page) :ctrl (kbd/ctrl? event) :shift (kbd/shift? event) :window-coords wpt :canvas-coords cpt}] + + (println "brect:" brect) + (swap! wb/bounding-rect assoc (:id page) brect) (rx/push! wb/mouse-b event)))] + + ;; TODO: update properly the bounding rect. (let [[page] (:rum/props own) - canvas (mx/get-ref-dom own (str "canvas" (:id page))) - brect (.getBoundingClientRect canvas) - brect (gpt/point (.-left brect) (.-top brect)) key (events/listen js/document EventType.MOUSEMOVE - #(on-mousemove % page brect))] - (swap! wb/bounding-rect assoc (:id page) brect) + #(on-mousemove % page))] (assoc own ::eventkey key)))) (defn- canvas-will-unmount diff --git a/src/uxbox/ui/workspace/shortcuts.cljs b/src/uxbox/ui/workspace/shortcuts.cljs index 52d0c87c3..d0e799ee4 100644 --- a/src/uxbox/ui/workspace/shortcuts.cljs +++ b/src/uxbox/ui/workspace/shortcuts.cljs @@ -13,7 +13,7 @@ ;; Keyboard Shortcuts Handlers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defonce ^:static +shortcuts+ +(defonce ^:const +shortcuts+ {:ctrl+g #(rs/emit! (dw/toggle-flag :grid)) :ctrl+shift+f #(rs/emit! (dw/toggle-flag :drawtools)) :ctrl+shift+i #(rs/emit! (dw/toggle-flag :icons)) @@ -31,10 +31,10 @@ ;; Keyboard Shortcuts Watcher ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defonce ^:static ^:private +bus+ +(defonce ^:const ^:private +bus+ (rx/bus)) -(defonce ^:static +stream+ +(defonce ^:const +stream+ (rx/to-observable +bus+)) (defn- init-handler