diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index ea96bcd406..99309c5845 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -203,7 +203,7 @@ (rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true})))))) (defn instantiate-component - [file-id component-id] + [file-id component-id position] (us/assert (s/nilable ::us/uuid) file-id) (us/assert ::us/uuid component-id) (ptk/reify ::instantiate-component @@ -215,12 +215,7 @@ component-shape (get-in component [:objects (:id component)]) orig-pos (gpt/point (:x component-shape) (:y component-shape)) - mouse-pos @ms/mouse-position - 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)) + delta (gpt/subtract position orig-pos) page-id (:current-page-id state) objects (dwc/lookup-page-objects state page-id) diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index ea76d98706..cd6a468be1 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -69,9 +69,9 @@ on-drag-start (mf/use-callback - (fn [component-id event] + (fn [component event] (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")))] [:div.asset-group @@ -83,7 +83,7 @@ [:div.grid-cell {:key (:id component) :draggable true :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)]) :objects (:objects component)}] [:div.cell-name (:name component)]]) diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index 6316053234..7a3e8a4849 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -505,8 +505,13 @@ (assoc :y final-y))))) (dnd/has-type? event "app/component") - (let [{:keys [component-id file-id]} (dnd/get-data event "app/component")] - (st/emit! (dwl/instantiate-component file-id component-id))) + (let [{:keys [component file-id]} (dnd/get-data event "app/component") + 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") (let [data (dnd/get-data event "text/uri-list")