Skip to content

Instantly share code, notes, and snippets.

@saukap
Last active July 31, 2023 14:06
Show Gist options
  • Save saukap/7b5ed374f7aba148815acef4b7dd3feb to your computer and use it in GitHub Desktop.
Save saukap/7b5ed374f7aba148815acef4b7dd3feb to your computer and use it in GitHub Desktop.
Using PanResponder from clojurescript
(def pan-responder (.-PanResponder react-native))
(defn cirlce
[circle-radius]
(let [radius circle-radius
*pan (atom nil)]
(r/create-class
{:component-did-mount
#(debug "Component mounted..")
:component-will-mount
(fn []
(debug "Going to mount..")
(let [pr (.create pan-responder (clj->js {:onStartShouldSetPanResponder #(do (debug "onStartShouldSetPanResponder called") true)
:onMoveShouldSetPanResponder #(do (debug "onMoveShouldSetPanResponder called") true)
:onPanResponderGrant #(debug "onPanResponderGrant called..")
:onPanResponderMove #(debug "onPanResponderMove called..")
:onPanResponderRelease #(debug "onPanResponderRelease called..")
:onPanResponderTerminate #(debug "onPanResponderTerminate called..")}))]
(reset! *pan pr)))
:display-name "Call circle"
:reagent-render
(fn [circle-radius]
(debug "in RENDER: pan handlers: " (js->clj (.-panHandlers @*pan)))
[react/view
(merge (js->clj (.-panHandlers @*pan))
{:style {:width (* 2 circle-radius)
:height (* 2 circle-radius)
:position "absolute"
:left 0
:top 0
:background-color "green"
:border-width 1
:border-radius circle-radius}})])})))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment