🐛 Fix gradient handlers for flipped shapes

This commit is contained in:
alonso.torres 2024-01-15 11:31:49 +01:00
parent c4ce83bb07
commit 5b26e686f3

View file

@ -118,7 +118,7 @@
:on-pointer-up on-pointer-up}]]) :on-pointer-up on-pointer-up}]])
(mf/defc gradient-handler-transformed (mf/defc gradient-handler-transformed
[{:keys [from-p to-p width-p from-color to-color zoom editing [{:keys [from-p to-p width-p from-color to-color zoom editing transform
on-change-start on-change-finish on-change-width]}] on-change-start on-change-finish on-change-width]}]
(let [moving-point (mf/use-var nil) (let [moving-point (mf/use-var nil)
angle (+ 90 (gpt/angle from-p to-p)) angle (+ 90 (gpt/angle from-p to-p))
@ -151,7 +151,7 @@
(reset! moving-point nil))] (reset! moving-point nil))]
(mf/use-effect (mf/use-effect
(mf/deps @moving-point from-p to-p width-p) (mf/deps @moving-point from-p to-p width-p transform)
(fn [] (fn []
(let [subs (->> st/stream (let [subs (->> st/stream
(rx/filter mse/pointer-event?) (rx/filter mse/pointer-event?)
@ -159,6 +159,7 @@
(rx/map mse/get-pointer-position) (rx/map mse/get-pointer-position)
(rx/subs! (rx/subs!
(fn [pt] (fn [pt]
(let [pt (gpt/transform pt transform)]
(case @moving-point (case @moving-point
:from-p (when on-change-start (on-change-start pt)) :from-p (when on-change-start (on-change-start pt))
:to-p (when on-change-finish (on-change-finish pt)) :to-p (when on-change-finish (on-change-finish pt))
@ -169,7 +170,7 @@
from-p from-p
(gpt/multiply width-v (gpt/point distance)))] (gpt/multiply width-v (gpt/point distance)))]
(on-change-width new-width-p))) (on-change-width new-width-p)))
nil))))] nil)))))]
(fn [] (rx/dispose! subs))))) (fn [] (rx/dispose! subs)))))
[:g.gradient-handlers [:g.gradient-handlers
[:defs [:defs
@ -295,6 +296,7 @@
:width-p (when (= :radial (:type gradient)) width-p) :width-p (when (= :radial (:type gradient)) width-p)
:from-color {:value start-color :opacity start-opacity} :from-color {:value start-color :opacity start-opacity}
:to-color {:value end-color :opacity end-opacity} :to-color {:value end-color :opacity end-opacity}
:transform transform
:zoom zoom :zoom zoom
:on-change-start on-change-start :on-change-start on-change-start
:on-change-finish on-change-finish :on-change-finish on-change-finish