mirror of
https://github.com/penpot/penpot.git
synced 2025-05-23 21:26:13 +02:00
Merge remote-tracking branch 'origin/staging' into develop
This commit is contained in:
commit
eb168a6f9f
8 changed files with 75 additions and 17 deletions
|
@ -17,6 +17,7 @@
|
|||
(def current-page-id (mf/create-context nil))
|
||||
(def current-file-id (mf/create-context nil))
|
||||
(def current-vbox (mf/create-context nil))
|
||||
(def current-svg-root-id (mf/create-context nil))
|
||||
|
||||
(def active-frames (mf/create-context nil))
|
||||
(def render-thumbnails (mf/create-context nil))
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
(mf/fnc group-shape
|
||||
{::mf/wrap-props false}
|
||||
[props]
|
||||
|
||||
(let [shape (unchecked-get props "shape")
|
||||
childs (unchecked-get props "childs")
|
||||
render-id (mf/use-ctx muc/render-id)
|
||||
|
@ -36,21 +37,31 @@
|
|||
|
||||
mask-props (if ^boolean masked-group?
|
||||
#js {:mask (mask-url render-id mask)}
|
||||
#js {})]
|
||||
#js {})
|
||||
|
||||
current-svg-root-id (mf/use-ctx muc/current-svg-root-id)
|
||||
|
||||
;; We need to create a "scope" for svg classes. The root of the imported SVG (first group) will
|
||||
;; be stored in the context. When rendering the styles we add its id as prefix.
|
||||
[svg-wrapper svg-wrapper-props]
|
||||
(if (and (contains? shape :svg-attrs) (not current-svg-root-id))
|
||||
[(mf/provider muc/current-svg-root-id) #js {:value (:id shape)}]
|
||||
[mf/Fragment #js {}])]
|
||||
|
||||
;; We need to separate mask and clip into two because a bug in
|
||||
;; Firefox breaks when the group has clip+mask+foreignObject
|
||||
;; Clip and mask separated will work in every platform Firefox
|
||||
;; bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1734805
|
||||
[:> wrapper clip-props
|
||||
[:> wrapper mask-props
|
||||
(when ^boolean masked-group?
|
||||
[:& render-mask {:mask mask}])
|
||||
[:> svg-wrapper svg-wrapper-props
|
||||
[:> wrapper clip-props
|
||||
[:> wrapper mask-props
|
||||
(when ^boolean masked-group?
|
||||
[:& render-mask {:mask mask}])
|
||||
|
||||
(for [item childs]
|
||||
[:& shape-wrapper
|
||||
{:shape item
|
||||
:key (dm/str (dm/get-prop item :id))}])]]))))
|
||||
(for [item childs]
|
||||
[:& shape-wrapper
|
||||
{:shape item
|
||||
:key (dm/str (dm/get-prop item :id))}])]]]))))
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -104,9 +104,20 @@
|
|||
svg-root? (and (map? content) (= tag :svg))
|
||||
svg-tag? (map? content)
|
||||
svg-leaf? (string? content)
|
||||
valid-tag? (contains? csvg/svg-tags tag)]
|
||||
valid-tag? (contains? csvg/svg-tags tag)
|
||||
|
||||
current-svg-root-id (mf/use-ctx muc/current-svg-root-id)
|
||||
|
||||
;; We need to create a "scope" for svg classes. The root of the imported SVG (first group) will
|
||||
;; be stored in the context and with this we scoped the styles:
|
||||
style-content
|
||||
(when (= tag :style)
|
||||
(dm/str "#shape-" current-svg-root-id "{ " (->> shape :content :content (str/join "\n")) " }"))]
|
||||
|
||||
(cond
|
||||
(= tag :style)
|
||||
[:style style-content]
|
||||
|
||||
^boolean svg-root?
|
||||
[:& svg-root {:shape shape}
|
||||
(for [item childs]
|
||||
|
|
|
@ -54,13 +54,7 @@
|
|||
get-sorted-colors
|
||||
(mf/use-fn
|
||||
(fn [colors]
|
||||
(sort (fn [a b]
|
||||
(let [[ah _ al] (c/hex->hsl (:color a))
|
||||
[bh _ bl] (c/hex->hsl (:color b))
|
||||
a (+ (* ah 100) (* al 99))
|
||||
b (+ (* bh 100) (* bl 99))]
|
||||
(compare a b)))
|
||||
(into [] (filter check-valid-color?) colors))))
|
||||
(sort c/sort-colors (into [] (filter check-valid-color?) colors))))
|
||||
|
||||
toggle-palette
|
||||
(mf/use-fn
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue