mirror of
https://github.com/penpot/penpot.git
synced 2026-04-25 19:28:12 +00:00
🐛 Fix bad selection after variant duplicate
This commit is contained in:
parent
9f11a2cb32
commit
c5bd183f73
@ -296,48 +296,52 @@
|
||||
|
||||
(defn add-new-variant
|
||||
"Create a new variant and add it to the variant-container"
|
||||
[shape-id]
|
||||
(ptk/reify ::add-new-variant
|
||||
ptk/WatchEvent
|
||||
(watch [it state _]
|
||||
(let [page-id (:current-page-id state)
|
||||
data (dsh/lookup-file-data state)
|
||||
objects (-> (dsh/get-page data page-id)
|
||||
(get :objects))
|
||||
shape (get objects shape-id)
|
||||
shape (if (ctc/is-variant-container? shape)
|
||||
(get objects (last (:shapes shape)))
|
||||
shape)
|
||||
component-id (:component-id shape)
|
||||
component (ctkl/get-component data component-id)
|
||||
([shape-id]
|
||||
(add-new-variant shape-id false))
|
||||
([shape-id multiselect?]
|
||||
(ptk/reify ::add-new-variant
|
||||
ptk/WatchEvent
|
||||
(watch [it state _]
|
||||
(let [page-id (:current-page-id state)
|
||||
data (dsh/lookup-file-data state)
|
||||
objects (-> (dsh/get-page data page-id)
|
||||
(get :objects))
|
||||
shape (get objects shape-id)
|
||||
shape (if (ctc/is-variant-container? shape)
|
||||
(get objects (last (:shapes shape)))
|
||||
shape)
|
||||
component-id (:component-id shape)
|
||||
component (ctkl/get-component data component-id)
|
||||
|
||||
container-id (:parent-id shape)
|
||||
variant-container (get objects container-id)
|
||||
has-layout? (ctsl/any-layout? variant-container)
|
||||
container-id (:parent-id shape)
|
||||
variant-container (get objects container-id)
|
||||
has-layout? (ctsl/any-layout? variant-container)
|
||||
|
||||
new-component-id (uuid/next)
|
||||
new-shape-id (uuid/next)
|
||||
new-component-id (uuid/next)
|
||||
new-shape-id (uuid/next)
|
||||
|
||||
prop-num (dec (count (:variant-properties component)))
|
||||
prop-num (dec (count (:variant-properties component)))
|
||||
|
||||
changes (-> (pcb/empty-changes it page-id)
|
||||
(pcb/with-library-data data)
|
||||
(pcb/with-objects objects)
|
||||
(pcb/with-page-id page-id)
|
||||
(clv/generate-add-new-variant shape (:variant-id component) new-component-id new-shape-id prop-num))
|
||||
changes (-> (pcb/empty-changes it page-id)
|
||||
(pcb/with-library-data data)
|
||||
(pcb/with-objects objects)
|
||||
(pcb/with-page-id page-id)
|
||||
(clv/generate-add-new-variant shape (:variant-id component) new-component-id new-shape-id prop-num))
|
||||
|
||||
undo-id (js/Symbol)]
|
||||
(rx/concat
|
||||
(rx/of
|
||||
(dwu/start-undo-transaction undo-id)
|
||||
(dch/commit-changes changes)
|
||||
(when-not has-layout?
|
||||
(resposition-and-resize-variant new-shape-id))
|
||||
(dwu/commit-undo-transaction undo-id)
|
||||
(ptk/data-event :layout/update {:ids [(:parent-id shape)]})
|
||||
(dws/select-shape new-shape-id))
|
||||
(->> (rx/of (focus-property new-shape-id prop-num))
|
||||
(rx/delay 250)))))))
|
||||
undo-id (js/Symbol)]
|
||||
(rx/concat
|
||||
(rx/of
|
||||
(dwu/start-undo-transaction undo-id)
|
||||
(dch/commit-changes changes)
|
||||
(when-not has-layout?
|
||||
(resposition-and-resize-variant new-shape-id))
|
||||
(dwu/commit-undo-transaction undo-id)
|
||||
(ptk/data-event :layout/update {:ids [(:parent-id shape)]})
|
||||
(if multiselect?
|
||||
(dws/shift-select-shapes new-shape-id)
|
||||
(dws/select-shape new-shape-id)))
|
||||
(->> (rx/of (focus-property new-shape-id prop-num))
|
||||
(rx/delay 250))))))))
|
||||
|
||||
(defn transform-in-variant
|
||||
"Given the id of a main shape of a component, creates a variant structure for
|
||||
@ -491,8 +495,9 @@
|
||||
(rx/concat
|
||||
(rx/of
|
||||
(ptk/event ::ev/event {::ev/name "add-new-variant" :trigger "shortcut-duplicate"})
|
||||
(dwu/start-undo-transaction undo-id))
|
||||
(rx/from (map add-new-variant selected-ids))
|
||||
(dwu/start-undo-transaction undo-id)
|
||||
(add-new-variant (first selected-ids) false))
|
||||
(rx/from (map #(add-new-variant % true) (rest selected-ids)))
|
||||
(rx/of (dwu/commit-undo-transaction undo-id)))
|
||||
(rx/of (dws/duplicate-selected true)))))))
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user