mirror of
https://github.com/penpot/penpot.git
synced 2026-03-30 16:20:34 +02:00
🐛 Fix sync WASM viewport outlines with live modifiers
This commit is contained in:
committed by
Alonso Torres
parent
6264c0c217
commit
36c23faae0
@@ -64,14 +64,19 @@
|
||||
|
||||
;; --- Viewport
|
||||
|
||||
(defn- apply-modifiers-to-objects
|
||||
[objects modifiers]
|
||||
(->> modifiers
|
||||
(reduce
|
||||
(fn [objs [id t]]
|
||||
(if (contains? objs id)
|
||||
(update objs id gsh/apply-transform t)
|
||||
objs))
|
||||
objects)))
|
||||
|
||||
(defn apply-modifiers-to-selected
|
||||
[selected objects modifiers]
|
||||
(->> modifiers
|
||||
(filter #(contains? selected (first %)))
|
||||
(reduce
|
||||
(fn [objects [id transform]]
|
||||
(update objects id gsh/apply-transform transform))
|
||||
objects)))
|
||||
(apply-modifiers-to-objects objects (select-keys (into {} modifiers) selected)))
|
||||
|
||||
(mf/defc viewport*
|
||||
[{:keys [selected wglobal layout file page palete-size file-version-id]}]
|
||||
@@ -121,6 +126,11 @@
|
||||
selected-shapes (->> selected
|
||||
(into [] (keep (d/getf objects-modified)))
|
||||
(not-empty))
|
||||
|
||||
objects-for-outlines
|
||||
(mf/with-memo [base-objects wasm-modifiers]
|
||||
(apply-modifiers-to-objects base-objects wasm-modifiers))
|
||||
|
||||
;; STATE
|
||||
alt? (mf/use-state false)
|
||||
shift? (mf/use-state false)
|
||||
@@ -491,20 +501,20 @@
|
||||
outlined-frame (get objects outlined-frame-id)]
|
||||
[:*
|
||||
[:& outline/shape-outlines
|
||||
{:objects base-objects
|
||||
{:objects objects-for-outlines
|
||||
:hover #{outlined-frame-id}
|
||||
:zoom zoom}]
|
||||
|
||||
(when (ctl/any-layout? outlined-frame)
|
||||
[:g.ghost-outline.blurrable
|
||||
[:& outline/shape-outlines
|
||||
{:objects base-objects
|
||||
{:objects objects-for-outlines
|
||||
:selected selected
|
||||
:zoom zoom}]])]))
|
||||
|
||||
(when show-outlines?
|
||||
[:& outline/shape-outlines
|
||||
{:objects base-objects
|
||||
{:objects objects-for-outlines
|
||||
:selected selected
|
||||
:hover #{(:id @hover) @frame-hover}
|
||||
:highlighted highlighted
|
||||
|
||||
Reference in New Issue
Block a user