Skip to content

Commit

Permalink
electric-dom3: add Mouse-over? and extract updown primitive
Browse files Browse the repository at this point in the history
  • Loading branch information
dustingetz committed Sep 13, 2024
1 parent 63ce3db commit 2987396
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions src/hyperfiddle/electric_dom3.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -475,23 +475,23 @@ input's value, use `EventListener`."
;; Extras ;;
;;;;;;;;;;;;

#?(:cljs
(defn focused?> [node]
(->> (mx/mix (m/observe (fn [!] (with-listener node "focus" (fn [_] (! true)))))
(m/observe (fn [!] (with-listener node "blur" (fn [_] (! false))))))
(m/reductions {} (= node (.-activeElement js/document)))
(m/relieve {}))))

(e/defn Focused? ([] ($ Focused? node)) ([node] (e/input (focused?> node))))

#?(:cljs
(defn mouse-down?> [node]
(->> (mx/mix (m/observe (fn [!] (with-listener node "mousedown" (fn [_] (! true)))))
(m/observe (fn [!] (with-listener node "mouseup" (fn [_] (! false))))))
(m/reductions {} false)
(m/relieve {}))))

(e/defn MouseDown? ([] ($ MouseDown? node)) ([node] (e/input (mouse-down?> node))))
#?(:cljs (defn updown [node enter-event leave-event init]
(->> (mx/mix
(m/observe (fn [!] (with-listener node enter-event (fn [_] (! true)))))
(m/observe (fn [!] (with-listener node leave-event (fn [_] (! false))))))
(m/reductions {} init) (m/relieve {}))))

(e/defn Mouse-over?
([] (Mouse-over? node))
([node] (e/client (e/input (updown node "mouseenter" "mouseleave" false)))))

(e/defn Focused?
([] (Focused? node))
([node] (e/client (e/input (updown node "focus" "blur" (= node (.-activeElement js/document)))))))

(e/defn Mouse-down?
([] (Mouse-down? node))
([node] (e/client (e/input (updown node "mouseup" "mousedown" false)))))

;;;;;;;;;;;
;; Sugar ;;
Expand Down

0 comments on commit 2987396

Please sign in to comment.