mirror of
https://github.com/penpot/penpot.git
synced 2025-07-23 18:17:19 +02:00
🐛 Fix positioning a component instance after drag&drop
This commit is contained in:
parent
d5e70e51ba
commit
c4ef2eaab3
3 changed files with 12 additions and 12 deletions
|
@ -203,7 +203,7 @@
|
||||||
(rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))))))
|
(rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))))))
|
||||||
|
|
||||||
(defn instantiate-component
|
(defn instantiate-component
|
||||||
[file-id component-id]
|
[file-id component-id position]
|
||||||
(us/assert (s/nilable ::us/uuid) file-id)
|
(us/assert (s/nilable ::us/uuid) file-id)
|
||||||
(us/assert ::us/uuid component-id)
|
(us/assert ::us/uuid component-id)
|
||||||
(ptk/reify ::instantiate-component
|
(ptk/reify ::instantiate-component
|
||||||
|
@ -215,12 +215,7 @@
|
||||||
component-shape (get-in component [:objects (:id component)])
|
component-shape (get-in component [:objects (:id component)])
|
||||||
|
|
||||||
orig-pos (gpt/point (:x component-shape) (:y component-shape))
|
orig-pos (gpt/point (:x component-shape) (:y component-shape))
|
||||||
mouse-pos @ms/mouse-position
|
delta (gpt/subtract position orig-pos)
|
||||||
delta (gpt/subtract mouse-pos orig-pos)
|
|
||||||
|
|
||||||
_ (js/console.log "orig-pos" (clj->js orig-pos))
|
|
||||||
_ (js/console.log "mouse-pos" (clj->js mouse-pos))
|
|
||||||
_ (js/console.log "delta" (clj->js delta))
|
|
||||||
|
|
||||||
page-id (:current-page-id state)
|
page-id (:current-page-id state)
|
||||||
objects (dwc/lookup-page-objects state page-id)
|
objects (dwc/lookup-page-objects state page-id)
|
||||||
|
|
|
@ -69,9 +69,9 @@
|
||||||
|
|
||||||
on-drag-start
|
on-drag-start
|
||||||
(mf/use-callback
|
(mf/use-callback
|
||||||
(fn [component-id event]
|
(fn [component event]
|
||||||
(dnd/set-data! event "app/component" {:file-id (if local? nil file-id)
|
(dnd/set-data! event "app/component" {:file-id (if local? nil file-id)
|
||||||
:component-id component-id})
|
:component component})
|
||||||
(dnd/set-allowed-effect! event "move")))]
|
(dnd/set-allowed-effect! event "move")))]
|
||||||
|
|
||||||
[:div.asset-group
|
[:div.asset-group
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
[:div.grid-cell {:key (:id component)
|
[:div.grid-cell {:key (:id component)
|
||||||
:draggable true
|
:draggable true
|
||||||
:on-context-menu (on-context-menu (:id component))
|
:on-context-menu (on-context-menu (:id component))
|
||||||
:on-drag-start (partial on-drag-start (:id component))}
|
:on-drag-start (partial on-drag-start component)}
|
||||||
[:& exports/component-svg {:group (get-in component [:objects (:id component)])
|
[:& exports/component-svg {:group (get-in component [:objects (:id component)])
|
||||||
:objects (:objects component)}]
|
:objects (:objects component)}]
|
||||||
[:div.cell-name (:name component)]])
|
[:div.cell-name (:name component)]])
|
||||||
|
|
|
@ -505,8 +505,13 @@
|
||||||
(assoc :y final-y)))))
|
(assoc :y final-y)))))
|
||||||
|
|
||||||
(dnd/has-type? event "app/component")
|
(dnd/has-type? event "app/component")
|
||||||
(let [{:keys [component-id file-id]} (dnd/get-data event "app/component")]
|
(let [{:keys [component file-id]} (dnd/get-data event "app/component")
|
||||||
(st/emit! (dwl/instantiate-component file-id component-id)))
|
shape (get-in component [:objects (:id component)])
|
||||||
|
final-x (- (:x viewport-coord) (/ (:width shape) 2))
|
||||||
|
final-y (- (:y viewport-coord) (/ (:height shape) 2))]
|
||||||
|
(st/emit! (dwl/instantiate-component file-id
|
||||||
|
(:id component)
|
||||||
|
(gpt/point final-x final-y))))
|
||||||
|
|
||||||
(dnd/has-type? event "text/uri-list")
|
(dnd/has-type? event "text/uri-list")
|
||||||
(let [data (dnd/get-data event "text/uri-list")
|
(let [data (dnd/get-data event "text/uri-list")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue