mirror of
https://github.com/penpot/penpot.git
synced 2025-01-24 23:49:45 -05:00
✨ Enable line caps in component sync and svg upload
This commit is contained in:
parent
eb40297a35
commit
3dffb9c8a0
4 changed files with 22 additions and 7 deletions
|
@ -37,6 +37,8 @@
|
|||
:stroke-style :stroke-group
|
||||
:stroke-width :stroke-group
|
||||
:stroke-alignment :stroke-group
|
||||
:stroke-cap-start :stroke-group
|
||||
:stroke-cap-end :stroke-group
|
||||
:rx :radius-group
|
||||
:ry :radius-group
|
||||
:r1 :radius-group
|
||||
|
|
|
@ -95,7 +95,11 @@
|
|||
(d/parse-double))))))
|
||||
|
||||
(defn setup-stroke [shape]
|
||||
(let [shape
|
||||
(let [stroke-linecap (-> (or (get-in shape [:svg-attrs :stroke-linecap])
|
||||
(get-in shape [:svg-attrs :style :stroke-linecap]))
|
||||
((d/nilf str/trim))
|
||||
((d/nilf keyword)))
|
||||
shape
|
||||
(cond-> shape
|
||||
(uc/color? (get-in shape [:svg-attrs :stroke]))
|
||||
(-> (update :svg-attrs dissoc :stroke)
|
||||
|
@ -113,8 +117,16 @@
|
|||
(get-in shape [:svg-attrs :style :stroke-width])
|
||||
(-> (update-in [:svg-attrs :style] dissoc :stroke-width)
|
||||
(assoc :stroke-width (-> (get-in shape [:svg-attrs :style :stroke-width])
|
||||
(d/parse-double)))))]
|
||||
(if (d/any-key? shape :stroke-color :stroke-opacity :stroke-width)
|
||||
(d/parse-double))))
|
||||
|
||||
(and stroke-linecap (= (:type shape) :path))
|
||||
(-> (update-in [:svg-attrs :style] dissoc :stroke-linecap)
|
||||
(cond->
|
||||
(#{:round :square} stroke-linecap)
|
||||
(assoc :stroke-cap-start stroke-linecap
|
||||
:stroke-cap-end stroke-linecap))))]
|
||||
|
||||
(if (d/any-key? shape :stroke-color :stroke-opacity :stroke-width :stroke-cap-start :stroke-cap-end)
|
||||
(merge {:stroke-style :svg} shape)
|
||||
shape)))
|
||||
|
||||
|
|
|
@ -125,20 +125,20 @@
|
|||
;; for inner or outer strokes.
|
||||
(and (spec/stroke-caps-line (:stroke-cap-start shape))
|
||||
(= (:stroke-cap-start shape) (:stroke-cap-end shape))
|
||||
(= (:stroke-alignment shape) :center))
|
||||
(not (#{:inner :outer} (:stroke-alignment shape))))
|
||||
(assoc :strokeLinecap (:stroke-cap-start shape))
|
||||
|
||||
;; For other cap types we use markers.
|
||||
(and (or (spec/stroke-caps-marker (:stroke-cap-start shape))
|
||||
(and (spec/stroke-caps-line (:stroke-cap-start shape))
|
||||
(not= (:stroke-cap-start shape) (:stroke-cap-end shape))))
|
||||
(= (:stroke-alignment shape) :center))
|
||||
(not (#{:inner :outer} (:stroke-alignment shape))))
|
||||
(assoc :markerStart (str "url(#marker-" render-id "-" (name (:stroke-cap-start shape))))
|
||||
|
||||
(and (or (spec/stroke-caps-marker (:stroke-cap-end shape))
|
||||
(and (spec/stroke-caps-line (:stroke-cap-end shape))
|
||||
(not= (:stroke-cap-start shape) (:stroke-cap-end shape))))
|
||||
(= (:stroke-alignment shape) :center))
|
||||
(not (#{:inner :outer} (:stroke-alignment shape))))
|
||||
(assoc :markerEnd (str "url(#marker-" render-id "-" (name (:stroke-cap-end shape)))))]
|
||||
|
||||
(obj/merge! attrs (clj->js stroke-attrs)))
|
||||
|
|
|
@ -74,7 +74,8 @@
|
|||
(tr "workspace.options.stroke"))
|
||||
|
||||
show-options (not= (:stroke-style values :none) :none)
|
||||
show-caps (and show-caps (= (:stroke-alignment values) :center))
|
||||
show-caps (and show-caps
|
||||
(not (#{:inner :outer} (:stroke-alignment values))))
|
||||
|
||||
start-caps-state (mf/use-state {:open? false
|
||||
:top 0
|
||||
|
|
Loading…
Add table
Reference in a new issue