0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-13 00:01:51 -05:00

Move common code on shape props checking to shapes/common ns

This commit is contained in:
Andrey Antukh 2023-09-06 14:48:10 +02:00
parent d9c496b131
commit d3c9bf1e76
3 changed files with 22 additions and 27 deletions

View file

@ -77,13 +77,8 @@
:thumbnail? (not (contains? active-frames (dm/get-prop shape :id)))}]
[:& shape-wrapper {:shape shape}])])]]]))
(defn- check-shape-wrapper-props
[np op]
(frame/check-shape (unchecked-get np "shape")
(unchecked-get op "shape")))
(mf/defc shape-wrapper
{::mf/wrap [#(mf/memo' % check-shape-wrapper-props)]
{::mf/wrap [#(mf/memo' % common/check-shape-props)]
::mf/wrap-props false}
[props]
(let [shape (unchecked-get props "shape")

View file

@ -6,13 +6,30 @@
(ns app.main.ui.workspace.shapes.common
(:require
[app.common.record :as cr]
[app.main.ui.shapes.shape :refer [shape-container]]
[rumext.v2 :as mf]))
(def ^:private excluded-attrs
#{:blocked
:hide-fill-on-export
:collapsed
:remote-synced
:exports})
(defn check-shape
[new-shape old-shape]
(cr/-equiv-with-exceptions old-shape new-shape excluded-attrs))
(defn check-shape-props
[np op]
(check-shape (unchecked-get np "shape")
(unchecked-get op "shape")))
(defn generic-wrapper-factory
[component]
(mf/fnc generic-wrapper
{::mf/wrap [#(mf/memo' % (mf/check-props ["shape"]))]
{::mf/wrap [#(mf/memo' % check-shape-props)]
::mf/wrap-props false}
[props]
(let [shape (unchecked-get props "shape")]

View file

@ -9,7 +9,6 @@
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.pages.helpers :as cph]
[app.common.record :as cr]
[app.main.data.workspace.state-helpers :as wsh]
[app.main.data.workspace.thumbnails :as dwt]
[app.main.refs :as refs]
@ -20,33 +19,18 @@
[app.main.ui.shapes.frame :as frame]
[app.main.ui.shapes.shape :refer [shape-container]]
[app.main.ui.shapes.text.fontfaces :as ff]
[app.main.ui.workspace.shapes.common :refer [check-shape-props]]
[app.main.ui.workspace.shapes.frame.dynamic-modifiers :as fdm]
[app.main.ui.workspace.shapes.frame.node-store :as fns]
[app.main.ui.workspace.shapes.frame.thumbnail-render :as ftr]
[beicon.core :as rx]
[rumext.v2 :as mf]))
(def ^:private excluded-attrs
#{:blocked
:hide-fill-on-export
:collapsed
:remote-synced
:exports})
(defn check-shape
[new-shape old-shape]
(cr/-equiv-with-exceptions old-shape new-shape excluded-attrs))
(defn check-frame-props
[np op]
(check-shape (unchecked-get np "shape")
(unchecked-get op "shape")))
(defn frame-shape-factory
[shape-wrapper]
(let [frame-shape (frame/frame-shape shape-wrapper)]
(mf/fnc frame-shape-inner
{::mf/wrap [#(mf/memo' % check-frame-props)]
{::mf/wrap [#(mf/memo' % check-shape-props)]
::mf/wrap-props false
::mf/forward-ref true}
[props ref]
@ -66,8 +50,7 @@
[new-props old-props]
(and (= (unchecked-get new-props "thumbnail?")
(unchecked-get old-props "thumbnail?"))
(check-shape (unchecked-get new-props "shape")
(unchecked-get old-props "shape"))))
(check-shape-props new-props old-props)))
(defn nested-frame-wrapper-factory
[shape-wrapper]