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