0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-15 11:38:24 -05:00

Add more memoization hooks.

This commit is contained in:
Andrey Antukh 2020-04-11 10:20:31 +02:00 committed by Alonso Torres
parent 162fe5219c
commit 032252469b
3 changed files with 84 additions and 72 deletions

View file

@ -25,8 +25,12 @@
[props] [props]
(let [shape (unchecked-get props "shape") (let [shape (unchecked-get props "shape")
frame (unchecked-get props "frame") frame (unchecked-get props "frame")
on-mouse-down #(common/on-mouse-down % shape) on-mouse-down (mf/use-callback
on-context-menu #(common/on-context-menu % shape)] (mf/deps shape)
#(common/on-mouse-down % shape))
on-context-menu (mf/use-callback
(mf/deps shape)
#(common/on-context-menu % shape))]
[:g.shape {:on-mouse-down on-mouse-down [:g.shape {:on-mouse-down on-mouse-down
:on-context-menu on-context-menu} :on-context-menu on-context-menu}
[:& rect-shape {:shape (geom/transform-shape frame shape) }]])) [:& rect-shape {:shape (geom/transform-shape frame shape) }]]))

View file

@ -148,6 +148,8 @@
zoom (or zoom 1) zoom (or zoom 1)
on-mouse-down on-mouse-down
(mf/use-callback
(mf/deps drawing-tool)
(fn [event] (fn [event]
(dom/stop-propagation event) (dom/stop-propagation event)
(let [ctrl? (kbd/ctrl? event) (let [ctrl? (kbd/ctrl? event)
@ -159,43 +161,48 @@
(= 1 (.-which (.-nativeEvent event)))) (= 1 (.-which (.-nativeEvent event))))
(if drawing-tool (if drawing-tool
(st/emit! (start-drawing drawing-tool)) (st/emit! (start-drawing drawing-tool))
(st/emit! dw/handle-selection))))) (st/emit! dw/handle-selection))))))
on-context-menu on-context-menu
(mf/use-callback
(fn [event] (fn [event]
(dom/prevent-default event) (dom/prevent-default event)
(dom/stop-propagation event) (dom/stop-propagation event)
(let [position (dom/get-client-position event)] (let [position (dom/get-client-position event)]
(st/emit! (dw/show-context-menu {:position position})))) (st/emit! (dw/show-context-menu {:position position})))))
on-mouse-up on-mouse-up
(mf/use-callback
(fn [event] (fn [event]
(dom/stop-propagation event) (dom/stop-propagation event)
(let [ctrl? (kbd/ctrl? event) (let [ctrl? (kbd/ctrl? event)
shift? (kbd/shift? event) shift? (kbd/shift? event)
opts {:shift? shift? opts {:shift? shift?
:ctrl? ctrl?}] :ctrl? ctrl?}]
(st/emit! (ms/->MouseEvent :up ctrl? shift?)))) (st/emit! (ms/->MouseEvent :up ctrl? shift?)))))
on-click on-click
(mf/use-callback
(fn [event] (fn [event]
(dom/stop-propagation event) (dom/stop-propagation event)
(let [ctrl? (kbd/ctrl? event) (let [ctrl? (kbd/ctrl? event)
shift? (kbd/shift? event) shift? (kbd/shift? event)
opts {:shift? shift? opts {:shift? shift?
:ctrl? ctrl?}] :ctrl? ctrl?}]
(st/emit! (ms/->MouseEvent :click ctrl? shift?)))) (st/emit! (ms/->MouseEvent :click ctrl? shift?)))))
on-double-click on-double-click
(mf/use-callback
(fn [event] (fn [event]
(dom/stop-propagation event) (dom/stop-propagation event)
(let [ctrl? (kbd/ctrl? event) (let [ctrl? (kbd/ctrl? event)
shift? (kbd/shift? event) shift? (kbd/shift? event)
opts {:shift? shift? opts {:shift? shift?
:ctrl? ctrl?}] :ctrl? ctrl?}]
(st/emit! (ms/->MouseEvent :double-click ctrl? shift?)))) (st/emit! (ms/->MouseEvent :double-click ctrl? shift?)))))
on-key-down on-key-down
(mf/use-callback
(fn [event] (fn [event]
(let [bevent (.getBrowserEvent event) (let [bevent (.getBrowserEvent event)
key (.-keyCode event) key (.-keyCode event)
@ -207,10 +214,10 @@
(when-not (.-repeat bevent) (when-not (.-repeat bevent)
(st/emit! (ms/->KeyboardEvent :down key ctrl? shift?)) (st/emit! (ms/->KeyboardEvent :down key ctrl? shift?))
(when (kbd/space? event) (when (kbd/space? event)
(st/emit! handle-viewport-positioning) (st/emit! handle-viewport-positioning))))))
#_(st/emit! (dw/start-viewport-positioning))))))
on-key-up on-key-up
(mf/use-callback
(fn [event] (fn [event]
(let [key (.-keyCode event) (let [key (.-keyCode event)
ctrl? (kbd/ctrl? event) ctrl? (kbd/ctrl? event)
@ -220,7 +227,7 @@
:ctrl? ctrl?}] :ctrl? ctrl?}]
(when (kbd/space? event) (when (kbd/space? event)
(st/emit! ::finish-positioning #_(dw/stop-viewport-positioning))) (st/emit! ::finish-positioning #_(dw/stop-viewport-positioning)))
(st/emit! (ms/->KeyboardEvent :up key ctrl? shift?)))) (st/emit! (ms/->KeyboardEvent :up key ctrl? shift?)))))
translate-point-to-viewport translate-point-to-viewport
(fn [pt] (fn [pt]
@ -239,6 +246,7 @@
(kbd/shift? event))))) (kbd/shift? event)))))
on-mouse-wheel on-mouse-wheel
(mf/use-callback
(fn [event] (fn [event]
(when (kbd/ctrl? event) (when (kbd/ctrl? event)
;; Disable browser zoom with ctrl+mouse wheel ;; Disable browser zoom with ctrl+mouse wheel
@ -246,7 +254,7 @@
(let [event (.getBrowserEvent event)] (let [event (.getBrowserEvent event)]
(if (pos? (.-deltaY event)) (if (pos? (.-deltaY event))
(st/emit! dw/decrease-zoom) (st/emit! dw/decrease-zoom)
(st/emit! dw/increase-zoom))))) (st/emit! dw/increase-zoom))))))
on-mount on-mount
(fn [] (fn []