                           :stroke-opacity "1"}}]]))
 
 (mx/defc single-not-editable-selection-handlers
-  [{:keys [id] :as shape}]
+  [{:keys [id] :as shape} zoom]
   (let [{:keys [width height x y]} (geom/outer-rect shape)]
     [:g.controls
      [:rect.main {:x x :y y
                   :width width
                   :height height
-                  :stroke-dasharray "5,5"
+                  :stroke-dasharray (str (/ 5.0 zoom) "," (/ 5.0 zoom))
                   :style {:stroke "#333"
                           :fill "transparent"
                           :stroke-opacity "1"}}]]))
 
 (mx/defc single-selection-handlers
-  [{:keys [id] :as shape}]
+  [{:keys [id] :as shape} zoom]
   (letfn [(on-mouse-down [vid event]
             (dom/stop-propagation event)
             (start-resize vid id))]

      nil

      (> shapes-num 1)
      (multiple-selection-handlers shapes)

      :else
      (cond
        (= :path (:type shape))
        (if (= @edition-ref (:id shape))
          (path-edition-selection-handlers shape)
          (single-not-editable-selection-handlers shape))

        (= :text (:type shape))
        (if (= @edition-ref (:id shape))
          (single-not-editable-selection-handlers shape)
          (single-selection-handlers (first shapes)))

        (= :group (:type shape))
        (single-not-editable-selection-handlers shape)

        :else
        (single-selection-handlers (first shapes))))))

       [:rect.main {:x x :y y
                    :width width
                    :height height
                    :stroke-dasharray (str (/ 5.0 zoom) "," (/ 5.0 zoom))
                    :style {:stroke "#333"
                            :fill "transparent"
                            :stroke-opacity "1"}}]
       [:circle.top
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :top %)
                :r (/ 6.0 zoom)
                :cx (+ x (/ width 2))
                :cy (- y 2)})]
       [:circle.right
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :right %)
                :r (/ 6.0 zoom)
                :cy (+ y (/ height 2))
                :cx (+ x width 1)})]
       [:circle.bottom
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :bottom %)
                :r (/ 6.0 zoom)
                :cx (+ x (/ width 2))
                :cy (+ y height 2)})]
       [:circle.left
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :left %)
                :r (/ 6.0 zoom)
                :cy (+ y (/ height 2))
                :cx (- x 3)})]
       [:circle.top-left
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :top-left %)
                :r (/ 6.0 zoom)
                :cx x
                :cy y})]
       [:circle.top-right
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :top-right %)
                :r (/ 6.0 zoom)
                :cx (+ x width)
                :cy y})]
       [:circle.bottom-left
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :bottom-left %)
                :r (/ 6.0 zoom)
                :cx x
                :cy (+ y height)})]
       [:circle.bottom-right
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :bottom-right %)
                :r (/ 6.0 zoom)
                :cx (+ x width)
                :cy (+ y height)})]])))

