1use super::{HtmlTag, H};
2use wasm_bindgen::intern;
3use web_sys::{
4 AnimationEvent, DragEvent, Event, FocusEvent, KeyboardEvent, MouseEvent,
5 PointerEvent, TransitionEvent, UiEvent, WheelEvent,
6};
7
8use crate::Callback;
9
10macro_rules! impl_event {
11 { $( $on_event:ident, $on_event_str:literal => $E:ty; )* } => {
12 $(
13 #[allow(missing_docs)]
14 pub fn $on_event(self, f: &Callback<$E>) -> Self {
15 self.attr_callback(intern($on_event_str), f)
16 }
17 )*
18 };
19}
20
21impl H<HtmlTag<'_>> {
23 impl_event! {
24 on_focus, "onFocus" => FocusEvent;
25 on_focus_capture, "onFocusCapture" => FocusEvent;
26 on_blur, "onBlur" => FocusEvent;
27 on_blur_capture, "onBlurCapture" => FocusEvent;
28
29 on_change, "onChange" => Event;
30 on_change_capture, "onChangeCapture" => Event;
31 on_beforeinput, "onBeforeInput" => Event;
32 on_beforeinput_capture, "onBeforeInputCapture" => Event;
33 on_input, "onInput" => Event;
34 on_input_capture, "onInputCapture" => Event;
35 on_reset, "onReset" => Event;
36 on_reset_capture, "onResetCapture" => Event;
37 on_submit, "onSubmit" => Event;
38 on_submit_capture, "onSubmitCapture" => Event;
39 on_invalid, "onInvalid" => Event;
40 on_invalid_capture, "onInvalidCapture" => Event;
41 on_select, "onSelect" => UiEvent;
42 on_select_capture, "onSelectCapture" => UiEvent;
43
44 on_load, "onLoad" => Event;
45 on_load_capture, "onLoadCapture" => Event;
46
47 on_keydown, "onKeyDown" => KeyboardEvent;
48 on_keydown_capture, "onKeyDownCapture" => KeyboardEvent;
49 on_keypress, "onKeyPress" => KeyboardEvent;
50 on_keypress_capture, "onKeyPressCapture" => KeyboardEvent;
51 on_keyup, "onKeyUp" => KeyboardEvent;
52 on_keyup_capture, "onKeyUpCapture" => KeyboardEvent;
53
54 on_abort, "onAbort" => Event;
55 on_abort_capture, "onAbortCapture" => Event;
56 on_canplay, "onCanPlay" => Event;
57 on_canplay_capture, "onCanPlayCapture" => Event;
58 on_canplay_through, "onCanPlayThrough" => Event;
59 on_canplay_through_capture, "onCanPlayThroughCapture" => Event;
60 on_duration_change, "onDurationChange" => Event;
61 on_duration_change_capture, "onDurationChangeCapture" => Event;
62 on_emptied, "onEmptied" => Event;
63 on_emptied_capture, "onEmptiedCapture" => Event;
64 on_encrypted, "onEncrypted" => Event;
65 on_encrypted_capture, "onEncryptedCapture" => Event;
66 on_ended, "onEnded" => Event;
67 on_ended_capture, "onEndedCapture" => Event;
68 on_loadeddata, "onLoadedData" => Event;
69 on_loadeddata_capture, "onLoadedDataCapture" => Event;
70 on_loadedmetadata, "onLoadedMetadata" => Event;
71 on_loadedmetadata_capture, "onLoadedMetadataCapture" => Event;
72 on_loadstart, "onLoadStart" => Event;
73 on_loadstart_capture, "onLoadStartCapture" => Event;
74 on_pause, "onPause" => Event;
75 on_pause_capture, "onPauseCapture" => Event;
76 on_play, "onPlay" => Event;
77 on_play_capture, "onPlayCapture" => Event;
78 on_playing, "onPlaying" => Event;
79 on_playing_capture, "onPlayingCapture" => Event;
80 on_progress, "onProgress" => Event;
81 on_progress_capture, "onProgressCapture" => Event;
82 on_ratechange, "onRateChange" => Event;
83 on_ratechange_capture, "onRateChangeCapture" => Event;
84 on_seeked, "onSeeked" => Event;
85 on_seeked_capture, "onSeekedCapture" => Event;
86 on_seeking, "onSeeking" => Event;
87 on_seeking_capture, "onSeekingCapture" => Event;
88 on_stalled, "onStalled" => Event;
89 on_stalled_capture, "onStalledCapture" => Event;
90 on_suspend, "onSuspend" => Event;
91 on_suspend_capture, "onSuspendCapture" => Event;
92 on_timeupdate, "onTimeUpdate" => Event;
93 on_timeupdate_capture, "onTimeUpdateCapture" => Event;
94 on_volumechange, "onVolumeChange" => Event;
95 on_volumechange_capture, "onVolumeChangeCapture" => Event;
96 on_waiting, "onWaiting" => Event;
97 on_waiting_capture, "onWaitingCapture" => Event;
98
99 on_auxclick, "onAuxClick" => MouseEvent;
100 on_auxclick_capture, "onAuxClickCapture" => MouseEvent;
101 on_click, "onClick" => MouseEvent;
102 on_click_capture, "onClickCapture" => MouseEvent;
103 on_context_menu, "onContextMenu" => MouseEvent;
104 on_context_menu_capture, "onContextMenuCapture" => MouseEvent;
105 on_doubleclick, "onDoubleClick" => MouseEvent;
106 on_doubleclick_capture, "onDoubleClickCapture" => MouseEvent;
107 on_mousedown, "onMouseDown" => MouseEvent;
108 on_mousedown_capture, "onMouseDownCapture" => MouseEvent;
109 on_mouseenter, "onMouseEnter" => MouseEvent;
110 on_mouseleave, "onMouseLeave" => MouseEvent;
111 on_mousemove, "onMouseMove" => MouseEvent;
112 on_mousemove_capture, "onMouseMoveCapture" => MouseEvent;
113 on_mouseout, "onMouseOut" => MouseEvent;
114 on_mouseout_capture, "onMouseOutCapture" => MouseEvent;
115 on_mouseover, "onMouseOver" => MouseEvent;
116 on_mouseover_capture, "onMouseOverCapture" => MouseEvent;
117 on_mouseup, "onMouseUp" => MouseEvent;
118 on_mouseup_capture, "onMouseUpCapture" => MouseEvent;
119
120 on_pointerdown, "onPointerDown" => PointerEvent;
121 on_pointerdown_capture, "onPointerDownCapture" => PointerEvent;
122 on_pointermove, "onPointerMove" => PointerEvent;
123 on_pointermove_capture, "onPointerMoveCapture" => PointerEvent;
124 on_pointerup, "onPointerUp" => PointerEvent;
125 on_pointerup_capture, "onPointerUpCapture" => PointerEvent;
126 on_pointercancel, "onPointerCancel" => PointerEvent;
127 on_pointercancel_capture, "onPointerCancelCapture" => PointerEvent;
128 on_pointerenter, "onPointerEnter" => PointerEvent;
129 on_pointerenter_capture, "onPointerEnterCapture" => PointerEvent;
130 on_pointerleave, "onPointerLeave" => PointerEvent;
131 on_pointerleave_capture, "onPointerLeaveCapture" => PointerEvent;
132 on_pointerover, "onPointerOver" => PointerEvent;
133 on_pointerover_capture, "onPointerOverCapture" => PointerEvent;
134 on_pointerout, "onPointerOut" => PointerEvent;
135 on_pointerout_capture, "onPointerOutCapture" => PointerEvent;
136 on_gotpointer_capture, "onGotPointerCapture" => PointerEvent;
137 on_gotpointer_capture_capture, "onGotPointerCaptureCapture" => PointerEvent;
138 on_lostpointer_capture, "onLostPointerCapture" => PointerEvent;
139 on_lostpointer_capture_capture, "onLostPointerCaptureCapture" => PointerEvent;
140
141 on_drag, "onDrag" => DragEvent;
142 on_dragcapture, "onDragCapture" => DragEvent;
143 on_dragend, "onDragEnd" => DragEvent;
144 on_dragend_capture, "onDragEndCapture" => DragEvent;
145 on_dragenter, "onDragEnter" => DragEvent;
146 on_dragenter_capture, "onDragEnterCapture" => DragEvent;
147 on_dragexit, "onDragExit" => DragEvent;
148 on_dragexit_capture, "onDragExitCapture" => DragEvent;
149 on_dragleave, "onDragLeave" => DragEvent;
150 on_dragleave_capture, "onDragLeaveCapture" => DragEvent;
151 on_dragover, "onDragOver" => DragEvent;
152 on_dragover_capture, "onDragOverCapture" => DragEvent;
153 on_dragstart, "onDragStart" => DragEvent;
154 on_dragstart_capture, "onDragStartCapture" => DragEvent;
155 on_drop, "onDrop" => DragEvent;
156 on_drop_capture, "onDropCapture" => DragEvent;
157
158 on_scroll, "onScroll" => UiEvent;
159 on_scroll_capture, "onScrollCapture" => UiEvent;
160 on_wheel, "onWheel" => WheelEvent;
161 on_wheel_capture, "onWheelCapture" => WheelEvent;
162
163 on_animationstart, "onAnimationStart" => AnimationEvent;
164 on_animationstart_capture, "onAnimationStartCapture" => AnimationEvent;
165 on_animationend, "onAnimationEnd" => AnimationEvent;
166 on_animationend_capture, "onAnimationEndCapture" => AnimationEvent;
167 on_animationiteration, "onAnimationIteration" => AnimationEvent;
168 on_animationiteration_capture, "onAnimationIterationCapture" => AnimationEvent;
169 on_transition_end, "onTransitionEnd" => TransitionEvent;
170 on_transition_end_capture, "onTransitionEndCapture" => TransitionEvent;
171 }
172}