 
 ;; D3 magic
 
-(defn sync-graph! [state & {:keys [animation-signaller]}]
-  (let [{:keys [svg nodes links camera-pos view-size]} state
+(defn sync-graph! [state & {:keys [animate?]}]
+  (let [{:keys [svg
+                nodes
+                links
+                camera-pos
+                view-size
+                animation-signaller
+                node-tap-signaller
+                link-tap-signaller]} state
         {:keys [project-displacement
                 project-radius
                 project-opacity]} (projectors-for-state state)


(defn zoom-on-pinch! [manager
                      current-state
                      animation-observable
                      animation-signaller]
  (let [pinches (pinch-observable manager (:svg @current-state))
        pinch-ins (-> pinches (.filter #(< (:scale %) 0.8))
                      (suppress-while-animating animation-observable))

    (.subscribe
      pinch-ins
      #(if (= (:projection @current-state) :fisheye)
         (set-projection! current-state :zoom-out)))
    (.subscribe
      pinch-outs
      #(if (= (:projection @current-state) :zoom-out)
         (zoom-in-to-pos! current-state
                          (zoom-out->world-pos @current-state (:center %)))))))

;; Gestures - tap

