                                   :orig-shape shape
                                   :dest-shape dest-shape
                                   :selected selected
-                                  :selected? false}])))
+                                  :selected? false
+                                  :zoom zoom}])))
 
       (if (and draw-interaction-to first-selected)
         [:& interaction-path {:key "interactive"
                               :orig-shape first-selected
                               :dest-point draw-interaction-to
-                              :selected? true}]
+                              :selected? true
+                              :zoom zoom}]
 
         (for [shape selected-shapes]
           (let [interaction (get-click-interaction shape)

                                    :orig-shape shape
                                    :dest-shape dest-shape
                                    :selected selected
                                    :selected? true}]
              (when (not (#{:move :rotate} current-transform))
                [:& interaction-handle {:key (:id shape)
                                        :shape shape
                                        :selected selected}])))))]))


    [orig-pos orig-x orig-y dest-pos dest-x dest-y]))


(mf/defc interaction-marker
  [{:keys [x y arrow-dir zoom] :as props}]
  (let [arrow-pdata (case arrow-dir
                      :right "M -5 0 l 8 0 l -4 -4 m 4 4 l -4 4"
                      :left "M 5 0 l -8 0 l 4 -4 m -4 4 l 4 4"
                      [])
        inv-zoom (/ 1 zoom)]
    [:*
      [:circle {:cx 0
                :cy 0
                :r 8
                :stroke "#31EFB8"
                :stroke-width 2
                :fill "#FFFFFF"
                :transform (str
                             "scale(" inv-zoom ", " inv-zoom ") "
                             "translate(" (* zoom x) ", " (* zoom y) ")")}]
      (when arrow-dir
        [:path {:stroke "#31EFB8"
                :fill "transparent"
                :stroke-width 2
                :d arrow-pdata
                :transform (str
                             "scale(" inv-zoom ", " inv-zoom ") "
                             "translate(" (* zoom x) ", " (* zoom y) ")")}])]))


(mf/defc interaction-path
  [{:keys [orig-shape dest-shape dest-point selected selected? zoom] :as props}]
  (let [[orig-pos orig-x orig-y dest-pos dest-x dest-y]
        (if dest-shape
          (connect-to-shape orig-shape dest-shape)
