1
1
-- | Definition of react native events that can be fired from views
2
- module Flame.Native.Event ( EventName , ToEvent , ToRawEvent , ToMaybeEvent , ToSpecialEvent , createEvent , createEventMessage , createRawEvent , onBlur , onBlur' , onCheck , onClick , onClick' , onChange , onChange' , onContextmenu , onContextmenu' , onDblclick , onDblclick' , onDrag , onDrag' , onDragend , onDragend' , onDragenter , onDragenter' , onDragleave , onDragleave' , onDragover , onDragover' , onDragstart , onDragstart' , onDrop , onDrop' , onError , onError' , onFocus , onFocus' , onFocusin , onFocusin' , onFocusout , onFocusout' , onInput , onInput' , onKeydown , onKeydown' , onKeypress , onKeypress' , onKeyup , onKeyup' , onMousedown , onMousedown' , onMouseenter , onMouseenter' , onMouseleave , onMouseleave' , onMousemove , onMousemove' , onMouseout , onMouseout' , onLoad , onLoad' , onUnload , onUnload' , onMouseover , onMouseover' , onMouseup , onMouseup' , onReset , onReset' , onScroll , onScroll' , onSelect , onSelect' , onSubmit , onSubmit' , onWheel , onWheel' ) where
2
+ module Flame.Native.Event where
3
3
4
4
import Prelude
5
5
@@ -10,6 +10,7 @@ import Effect.Uncurried (EffectFn1)
10
10
import Effect.Uncurried as FU
11
11
import Flame.Types (NodeData , Key )
12
12
import Web.Event.Event (Event )
13
+ import Unsafe.Coerce as UC
13
14
14
15
type EventName = String
15
16
@@ -22,17 +23,13 @@ type ToMaybeEvent message = (Event → Maybe message) → NodeData message
22
23
type ToSpecialEvent message t = (t → message ) → NodeData message
23
24
24
25
-- this way we dont need to worry about every possible element type
25
- foreign import nodeValue_ ∷ EffectFn1 Event String
26
26
foreign import checkedValue_ ∷ EffectFn1 Event Boolean
27
27
foreign import preventDefault_ ∷ EffectFn1 Event Unit
28
28
foreign import key_ ∷ EffectFn1 Event Key
29
29
foreign import selection_ ∷ EffectFn1 Event String
30
30
foreign import createEvent_ ∷ ∀ message . EventName → message → (NodeData message )
31
31
foreign import createRawEvent_ ∷ ∀ message . EventName → (Event → Effect (Maybe message )) → (NodeData message )
32
32
33
- nodeValue ∷ Event → Effect String
34
- nodeValue = FU .runEffectFn1 nodeValue_
35
-
36
33
checkedValue ∷ Event → Effect Boolean
37
34
checkedValue = FU .runEffectFn1 checkedValue_
38
35
@@ -89,12 +86,9 @@ onChange' = createEventMessage "change"
89
86
90
87
-- | This event fires when the value of an input, select, textarea, contenteditable or designMode on elements changes
91
88
onInput ∷ ∀ message . ToSpecialEvent message String
92
- onInput constructor = createRawEvent " input " handler
89
+ onInput constructor = createEventMessage " onChangeText " handler
93
90
where
94
- handler event = Just <<< constructor <$> nodeValue event
95
-
96
- onInput' ∷ ∀ message . ToRawEvent message
97
- onInput' = createEventMessage " input"
91
+ handler = constructor <<< UC .unsafeCoerce
98
92
99
93
-- | Helper for `input` event of checkboxes and radios
100
94
onCheck ∷ ∀ message . ToSpecialEvent message Boolean
@@ -146,30 +140,9 @@ onReset = createEvent "reset"
146
140
onReset' ∷ ∀ message . ToRawEvent message
147
141
onReset' = createEventMessage " reset"
148
142
149
- onKeydown ∷ ∀ message . ToSpecialEvent message (Tuple Key String )
150
- onKeydown constructor = createRawEvent " keydown" (keyInput constructor)
151
-
152
- onKeydown' ∷ ∀ message . ToRawEvent message
153
- onKeydown' = createEventMessage " keydown"
154
-
155
- onKeypress ∷ ∀ message . ToSpecialEvent message (Tuple Key String )
156
- onKeypress constructor = createRawEvent " keypress" (keyInput constructor)
157
-
158
- onKeypress' ∷ ∀ message . ToRawEvent message
159
- onKeypress' = createEventMessage " keypress"
160
-
161
- onKeyup ∷ ∀ message . ToSpecialEvent message (Tuple Key String )
162
- onKeyup constructor = createRawEvent " keyup" (keyInput constructor)
163
-
164
143
onKeyup' ∷ ∀ message . ToRawEvent message
165
144
onKeyup' = createEventMessage " keyup"
166
145
167
- keyInput ∷ ∀ message . (Tuple Key String → message ) → Event → Effect (Maybe message )
168
- keyInput constructor event = do
169
- down ← key event
170
- value ← nodeValue event
171
- pure <<< Just <<< constructor $ Tuple down value
172
-
173
146
onContextmenu ∷ ∀ message . ToEvent message
174
147
onContextmenu = createEvent " contextmenu"
175
148
0 commit comments