Skip to content

Instantly share code, notes, and snippets.

@BigTom
Created August 5, 2015 18:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BigTom/e4d96d7fd86a1caa6cce to your computer and use it in GitHub Desktop.
Save BigTom/e4d96d7fd86a1caa6cce to your computer and use it in GitHub Desktop.
reagent dragger not invoking .startDrag
(defn dragging [local-state canvas]
(fn [evt]
(let [x-constraint #(gmath/clamp % 0 (.-clientWidth canvas))
y-constraint #(gmath/clamp % 0 (.-clientHeight canvas))
dx (-> evt .-dragger .-deltaX)
dy (-> evt .-dragger .-deltaY)
x (x-constraint dx)
y (y-constraint dy)]
(log "x: " x " y: " y)
(emit :object-moved {:x x :y y}))))
(def draggable-component
(with-meta circle-component
{:component-did-mount
(fn [this]
(let [node (r/dom-node this)
canvas (-> node .-parentNode)]
;; get my component-local
(goog.events/listen
node
goog.events.EventType/MOUSEDOWN
(fn [e]
(let [dragger (fx/Dragger. node)
local-state (r/state this)]
;; Drag event handler
(.addEventListener dragger
goog.fx.Dragger.EventType/DRAG
(dragging local-state canvas))
;; Drag end
(.addEventListener dragger
goog.fx.Dragger.EventType/END
#(.dispose dragger))
;; Start Drag
(.startDrag dragger e)
(log "sx: " (.-deltaX dragger) " sy: " (.-deltaY dragger)))))))}))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment