-
Notifications
You must be signed in to change notification settings - Fork 0
/
event.cljc
60 lines (37 loc) · 1 KB
/
event.cljc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
(ns mayu.frp.event
(:require [mayu.frp.impl.event :as e]
[mayu.frp.signal :as s]))
(defn Push [val src count]
(e/->Push val src count))
(def never e/never)
(def never? e/never?)
(defn Event
([] (e/Event))
([on-req]
(e/Event (fn [send-self!]
(on-req #(send-self! (e/->Push %1 ::e/self :next)))))))
(def on! e/on!)
(def off! e/off!)
(def push! e/push!)
(def consume! e/consume!)
(def shadow e/shadow)
(def map e/map)
(def reduce e/reduce)
(def filter e/filter)
(def join e/join)
(def join-skip-siblings e/join-skip-siblings)
(def flat-map e/flat-map)
(def flatten e/flatten)
(def preempt e/preempt)
(def defer-off e/defer-off)
(def throttle e/throttle)
(def defer e/defer)
(def timer e/timer)
(defn tag-with [f e s]
(->> e
(map #(-> [true %1]))
(join-skip-siblings (->> (s/changed s)
(map #(-> [false %1]))))
(filter #(nth %1 0))
(map #(f (s/inst! s) (nth %1 1)))))
(def tag (partial tag-with (fn [v _] v)))