pulse-framework 0.1.62__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. pulse/__init__.py +1493 -0
  2. pulse/_examples.py +29 -0
  3. pulse/app.py +1086 -0
  4. pulse/channel.py +607 -0
  5. pulse/cli/__init__.py +0 -0
  6. pulse/cli/cmd.py +575 -0
  7. pulse/cli/dependencies.py +181 -0
  8. pulse/cli/folder_lock.py +134 -0
  9. pulse/cli/helpers.py +271 -0
  10. pulse/cli/logging.py +102 -0
  11. pulse/cli/models.py +35 -0
  12. pulse/cli/packages.py +262 -0
  13. pulse/cli/processes.py +292 -0
  14. pulse/cli/secrets.py +39 -0
  15. pulse/cli/uvicorn_log_config.py +87 -0
  16. pulse/code_analysis.py +38 -0
  17. pulse/codegen/__init__.py +0 -0
  18. pulse/codegen/codegen.py +359 -0
  19. pulse/codegen/templates/__init__.py +0 -0
  20. pulse/codegen/templates/layout.py +106 -0
  21. pulse/codegen/templates/route.py +345 -0
  22. pulse/codegen/templates/routes_ts.py +42 -0
  23. pulse/codegen/utils.py +20 -0
  24. pulse/component.py +237 -0
  25. pulse/components/__init__.py +0 -0
  26. pulse/components/for_.py +83 -0
  27. pulse/components/if_.py +86 -0
  28. pulse/components/react_router.py +94 -0
  29. pulse/context.py +108 -0
  30. pulse/cookies.py +322 -0
  31. pulse/decorators.py +344 -0
  32. pulse/dom/__init__.py +0 -0
  33. pulse/dom/elements.py +1024 -0
  34. pulse/dom/events.py +445 -0
  35. pulse/dom/props.py +1250 -0
  36. pulse/dom/svg.py +0 -0
  37. pulse/dom/tags.py +328 -0
  38. pulse/dom/tags.pyi +480 -0
  39. pulse/env.py +178 -0
  40. pulse/form.py +538 -0
  41. pulse/helpers.py +541 -0
  42. pulse/hooks/__init__.py +0 -0
  43. pulse/hooks/core.py +452 -0
  44. pulse/hooks/effects.py +88 -0
  45. pulse/hooks/init.py +668 -0
  46. pulse/hooks/runtime.py +464 -0
  47. pulse/hooks/setup.py +254 -0
  48. pulse/hooks/stable.py +138 -0
  49. pulse/hooks/state.py +192 -0
  50. pulse/js/__init__.py +125 -0
  51. pulse/js/__init__.pyi +115 -0
  52. pulse/js/_types.py +299 -0
  53. pulse/js/array.py +339 -0
  54. pulse/js/console.py +50 -0
  55. pulse/js/date.py +119 -0
  56. pulse/js/document.py +145 -0
  57. pulse/js/error.py +140 -0
  58. pulse/js/json.py +66 -0
  59. pulse/js/map.py +97 -0
  60. pulse/js/math.py +69 -0
  61. pulse/js/navigator.py +79 -0
  62. pulse/js/number.py +57 -0
  63. pulse/js/obj.py +81 -0
  64. pulse/js/object.py +172 -0
  65. pulse/js/promise.py +172 -0
  66. pulse/js/pulse.py +115 -0
  67. pulse/js/react.py +495 -0
  68. pulse/js/regexp.py +57 -0
  69. pulse/js/set.py +124 -0
  70. pulse/js/string.py +38 -0
  71. pulse/js/weakmap.py +53 -0
  72. pulse/js/weakset.py +48 -0
  73. pulse/js/window.py +205 -0
  74. pulse/messages.py +202 -0
  75. pulse/middleware.py +471 -0
  76. pulse/plugin.py +96 -0
  77. pulse/proxy.py +242 -0
  78. pulse/py.typed +0 -0
  79. pulse/queries/__init__.py +0 -0
  80. pulse/queries/client.py +609 -0
  81. pulse/queries/common.py +101 -0
  82. pulse/queries/effect.py +55 -0
  83. pulse/queries/infinite_query.py +1418 -0
  84. pulse/queries/mutation.py +295 -0
  85. pulse/queries/protocol.py +136 -0
  86. pulse/queries/query.py +1314 -0
  87. pulse/queries/store.py +120 -0
  88. pulse/react_component.py +88 -0
  89. pulse/reactive.py +1208 -0
  90. pulse/reactive_extensions.py +1172 -0
  91. pulse/render_session.py +768 -0
  92. pulse/renderer.py +584 -0
  93. pulse/request.py +205 -0
  94. pulse/routing.py +598 -0
  95. pulse/serializer.py +279 -0
  96. pulse/state.py +556 -0
  97. pulse/test_helpers.py +15 -0
  98. pulse/transpiler/__init__.py +111 -0
  99. pulse/transpiler/assets.py +81 -0
  100. pulse/transpiler/builtins.py +1029 -0
  101. pulse/transpiler/dynamic_import.py +130 -0
  102. pulse/transpiler/emit_context.py +49 -0
  103. pulse/transpiler/errors.py +96 -0
  104. pulse/transpiler/function.py +611 -0
  105. pulse/transpiler/id.py +18 -0
  106. pulse/transpiler/imports.py +341 -0
  107. pulse/transpiler/js_module.py +336 -0
  108. pulse/transpiler/modules/__init__.py +33 -0
  109. pulse/transpiler/modules/asyncio.py +57 -0
  110. pulse/transpiler/modules/json.py +24 -0
  111. pulse/transpiler/modules/math.py +265 -0
  112. pulse/transpiler/modules/pulse/__init__.py +5 -0
  113. pulse/transpiler/modules/pulse/tags.py +250 -0
  114. pulse/transpiler/modules/typing.py +63 -0
  115. pulse/transpiler/nodes.py +1987 -0
  116. pulse/transpiler/py_module.py +135 -0
  117. pulse/transpiler/transpiler.py +1100 -0
  118. pulse/transpiler/vdom.py +256 -0
  119. pulse/types/__init__.py +0 -0
  120. pulse/types/event_handler.py +50 -0
  121. pulse/user_session.py +386 -0
  122. pulse/version.py +69 -0
  123. pulse_framework-0.1.62.dist-info/METADATA +198 -0
  124. pulse_framework-0.1.62.dist-info/RECORD +126 -0
  125. pulse_framework-0.1.62.dist-info/WHEEL +4 -0
  126. pulse_framework-0.1.62.dist-info/entry_points.txt +3 -0
pulse/dom/events.py ADDED
@@ -0,0 +1,445 @@
1
+ """
2
+ Generic DOM event type definitions without framework/runtime dependencies.
3
+
4
+ This module defines the shape of browser events and a generic mapping of
5
+ DOM event handler names to their corresponding event payload types using
6
+ TypedDict. It intentionally does not include any runtime helpers.
7
+ """
8
+
9
+ from typing import (
10
+ Generic,
11
+ Literal,
12
+ TypedDict,
13
+ TypeVar,
14
+ )
15
+
16
+ from pulse.dom.elements import (
17
+ HTMLDialogElement,
18
+ HTMLElement,
19
+ HTMLInputElement,
20
+ HTMLSelectElement,
21
+ HTMLTextAreaElement,
22
+ )
23
+ from pulse.types.event_handler import EventHandler1
24
+
25
+ # Generic TypeVar for the element target
26
+ TElement = TypeVar("TElement", bound=HTMLElement)
27
+
28
+
29
+ class DataTransferItem(TypedDict):
30
+ kind: str
31
+ type: str
32
+
33
+
34
+ class DataTransfer(TypedDict):
35
+ dropEffect: Literal["none", "copy", "link", "move"]
36
+ effectAllowed: Literal[
37
+ "none",
38
+ "copy",
39
+ "copyLink",
40
+ "copyMove",
41
+ "link",
42
+ "linkMove",
43
+ "move",
44
+ "all",
45
+ "uninitialized",
46
+ ]
47
+ # files: Any # FileList equivalent
48
+ items: list[DataTransferItem] # DataTransferItemList
49
+ types: list[str]
50
+
51
+
52
+ class Touch(TypedDict):
53
+ target: HTMLElement
54
+ identifier: int
55
+ screenX: float
56
+ screenY: float
57
+ clientX: float
58
+ clientY: float
59
+ pageX: float
60
+ pageY: float
61
+
62
+
63
+ # Base SyntheticEvent using TypedDict and Generic
64
+ class SyntheticEvent(TypedDict, Generic[TElement]):
65
+ # nativeEvent: Any # Omitted
66
+ # current_target: TElement # element on which the event listener is registered
67
+ target: HTMLElement # target of the event (may be a child)
68
+ bubbles: bool
69
+ cancelable: bool
70
+ defaultPrevented: bool
71
+ eventPhase: int
72
+ isTrusted: bool
73
+ # preventDefault(): void;
74
+ # isDefaultPrevented(): boolean;
75
+ # stopPropagation(): void;
76
+ # isPropagationStopped(): boolean;
77
+ # persist(): void;
78
+ timestamp: int
79
+ type: str
80
+
81
+
82
+ class UIEvent(SyntheticEvent[TElement]):
83
+ detail: int
84
+ # view: Any # AbstractView - Omitted
85
+
86
+
87
+ class MouseEvent(UIEvent[TElement]):
88
+ altKey: bool
89
+ button: int
90
+ buttons: int
91
+ clientX: float
92
+ clientY: float
93
+ ctrlKey: bool
94
+ # getModifierState(key: ModifierKey): boolean
95
+ metaKey: bool
96
+ movementX: float
97
+ movementY: float
98
+ pageX: float
99
+ pageY: float
100
+ relatedTarget: HTMLElement | None
101
+ screenX: float
102
+ screenY: float
103
+ shiftKey: bool
104
+
105
+
106
+ class ClipboardEvent(SyntheticEvent[TElement]):
107
+ clipboardData: DataTransfer
108
+
109
+
110
+ class CompositionEvent(SyntheticEvent[TElement]):
111
+ data: str
112
+
113
+
114
+ class DragEvent(MouseEvent[TElement]):
115
+ dataTransfer: DataTransfer
116
+
117
+
118
+ class PointerEvent(MouseEvent[TElement]):
119
+ pointerId: int
120
+ pressure: float
121
+ tangentialPressure: float
122
+ tiltX: float
123
+ tiltY: float
124
+ twist: float
125
+ width: float
126
+ height: float
127
+ pointerType: Literal["mouse", "pen", "touch"]
128
+ isPrimary: bool
129
+
130
+
131
+ class FocusEvent(SyntheticEvent[TElement]):
132
+ target: TElement
133
+ relatedTarget: HTMLElement | None
134
+
135
+
136
+ class FormEvent(SyntheticEvent[TElement]):
137
+ # No specific fields added here
138
+ pass
139
+
140
+
141
+ class InvalidEvent(SyntheticEvent[TElement]):
142
+ target: TElement
143
+
144
+
145
+ class ChangeEvent(SyntheticEvent[TElement]):
146
+ target: TElement
147
+
148
+
149
+ ModifierKey = Literal[
150
+ "Alt",
151
+ "AltGraph",
152
+ "CapsLock",
153
+ "Control",
154
+ "Fn",
155
+ "FnLock",
156
+ "Hyper",
157
+ "Meta",
158
+ "NumLock",
159
+ "ScrollLock",
160
+ "Shift",
161
+ "Super",
162
+ "Symbol",
163
+ "SymbolLock",
164
+ ]
165
+
166
+
167
+ class KeyboardEvent(UIEvent[TElement]):
168
+ altKey: bool
169
+ # char_code: int # deprecated
170
+ ctrlKey: bool
171
+ code: str
172
+ # getModifierState(key: ModifierKey): boolean
173
+ key: str
174
+ # key_code: int # deprecated
175
+ locale: str
176
+ location: int
177
+ metaKey: bool
178
+ repeat: bool
179
+ shiftKey: bool
180
+ # which: int # deprecated
181
+
182
+
183
+ class TouchEvent(UIEvent[TElement]):
184
+ altKey: bool
185
+ changedTouches: list[Touch] # TouchList
186
+ ctrlKey: bool
187
+ # getModifierState(key: ModifierKey): boolean
188
+ metaKey: bool
189
+ shiftKey: bool
190
+ targetTouches: list[Touch] # TouchList
191
+ touches: list[Touch] # TouchList
192
+
193
+
194
+ class WheelEvent(MouseEvent[TElement]):
195
+ deltaMode: int
196
+ deltaX: float
197
+ deltaY: float
198
+ deltaZ: float
199
+
200
+
201
+ class AnimationEvent(SyntheticEvent[TElement]):
202
+ animationName: str
203
+ elapsedTime: float
204
+ pseudoElement: str
205
+
206
+
207
+ class ToggleEvent(SyntheticEvent[TElement]):
208
+ oldState: Literal["closed", "open"]
209
+ newState: Literal["closed", "open"]
210
+
211
+
212
+ class TransitionEvent(SyntheticEvent[TElement]):
213
+ elapsedTime: float
214
+ propertyName: str
215
+ pseudoElement: str
216
+
217
+
218
+ class DOMEvents(TypedDict, Generic[TElement], total=False):
219
+ # Clipboard Events
220
+ onCopy: EventHandler1[ClipboardEvent[TElement]]
221
+ onCopyCapture: EventHandler1[ClipboardEvent[TElement]]
222
+ onCut: EventHandler1[ClipboardEvent[TElement]]
223
+ onCutCapture: EventHandler1[ClipboardEvent[TElement]]
224
+ onPaste: EventHandler1[ClipboardEvent[TElement]]
225
+ onPasteCapture: EventHandler1[ClipboardEvent[TElement]]
226
+
227
+ # Composition Events
228
+ onCompositionEnd: EventHandler1[CompositionEvent[TElement]]
229
+ onCompositionEndCapture: EventHandler1[CompositionEvent[TElement]]
230
+ onCompositionStart: EventHandler1[CompositionEvent[TElement]]
231
+ onCompositionStartCapture: EventHandler1[CompositionEvent[TElement]]
232
+ onCompositionUpdate: EventHandler1[CompositionEvent[TElement]]
233
+ onCompositionUpdateCapture: EventHandler1[CompositionEvent[TElement]]
234
+
235
+ # Focus Events
236
+ onFocus: EventHandler1[FocusEvent[TElement]]
237
+ onFocusCapture: EventHandler1[FocusEvent[TElement]]
238
+ onBlur: EventHandler1[FocusEvent[TElement]]
239
+ onBlurCapture: EventHandler1[FocusEvent[TElement]]
240
+
241
+ # Form Events (default mapping)
242
+ onChange: EventHandler1[FormEvent[TElement]]
243
+ onChangeCapture: EventHandler1[FormEvent[TElement]]
244
+ onBeforeInput: EventHandler1[FormEvent[TElement]]
245
+ onBeforeInputCapture: EventHandler1[FormEvent[TElement]]
246
+ onInput: EventHandler1[FormEvent[TElement]]
247
+ onInputCapture: EventHandler1[FormEvent[TElement]]
248
+ onReset: EventHandler1[FormEvent[TElement]]
249
+ onResetCapture: EventHandler1[FormEvent[TElement]]
250
+ onSubmit: EventHandler1[FormEvent[TElement]]
251
+ onSubmitCapture: EventHandler1[FormEvent[TElement]]
252
+ onInvalid: EventHandler1[FormEvent[TElement]]
253
+ onInvalidCapture: EventHandler1[FormEvent[TElement]]
254
+
255
+ # Image/Media-ish Events (using SyntheticEvent by default)
256
+ onLoad: EventHandler1[SyntheticEvent[TElement]]
257
+ onLoadCapture: EventHandler1[SyntheticEvent[TElement]]
258
+ onError: EventHandler1[SyntheticEvent[TElement]]
259
+ onErrorCapture: EventHandler1[SyntheticEvent[TElement]]
260
+
261
+ # Keyboard Events
262
+ onKeyDown: EventHandler1[KeyboardEvent[TElement]]
263
+ onKeyDownCapture: EventHandler1[KeyboardEvent[TElement]]
264
+ onKeyPress: EventHandler1[KeyboardEvent[TElement]]
265
+ onKeyPressCapture: EventHandler1[KeyboardEvent[TElement]]
266
+ onKeyUp: EventHandler1[KeyboardEvent[TElement]]
267
+ onKeyUpCapture: EventHandler1[KeyboardEvent[TElement]]
268
+
269
+ # Media Events (default SyntheticEvent payloads)
270
+ onAbort: EventHandler1[SyntheticEvent[TElement]]
271
+ onAbortCapture: EventHandler1[SyntheticEvent[TElement]]
272
+ onCanPlay: EventHandler1[SyntheticEvent[TElement]]
273
+ onCanPlayCapture: EventHandler1[SyntheticEvent[TElement]]
274
+ onCanPlayThrough: EventHandler1[SyntheticEvent[TElement]]
275
+ onCanPlayThroughCapture: EventHandler1[SyntheticEvent[TElement]]
276
+ onDurationChange: EventHandler1[SyntheticEvent[TElement]]
277
+ onDurationChangeCapture: EventHandler1[SyntheticEvent[TElement]]
278
+ onEmptied: EventHandler1[SyntheticEvent[TElement]]
279
+ onEmptiedCapture: EventHandler1[SyntheticEvent[TElement]]
280
+ onEncrypted: EventHandler1[SyntheticEvent[TElement]]
281
+ onEncryptedCapture: EventHandler1[SyntheticEvent[TElement]]
282
+ onEnded: EventHandler1[SyntheticEvent[TElement]]
283
+ onEndedCapture: EventHandler1[SyntheticEvent[TElement]]
284
+ onLoadedData: EventHandler1[SyntheticEvent[TElement]]
285
+ onLoadedDataCapture: EventHandler1[SyntheticEvent[TElement]]
286
+ onLoadedMetadata: EventHandler1[SyntheticEvent[TElement]]
287
+ onLoadedMetadataCapture: EventHandler1[SyntheticEvent[TElement]]
288
+ onLoadStart: EventHandler1[SyntheticEvent[TElement]]
289
+ onLoadStartCapture: EventHandler1[SyntheticEvent[TElement]]
290
+ onPause: EventHandler1[SyntheticEvent[TElement]]
291
+ onPauseCapture: EventHandler1[SyntheticEvent[TElement]]
292
+ onPlay: EventHandler1[SyntheticEvent[TElement]]
293
+ onPlayCapture: EventHandler1[SyntheticEvent[TElement]]
294
+ onPlaying: EventHandler1[SyntheticEvent[TElement]]
295
+ onPlayingCapture: EventHandler1[SyntheticEvent[TElement]]
296
+ onProgress: EventHandler1[SyntheticEvent[TElement]]
297
+ onProgressCapture: EventHandler1[SyntheticEvent[TElement]]
298
+ onRateChange: EventHandler1[SyntheticEvent[TElement]]
299
+ onRateChangeCapture: EventHandler1[SyntheticEvent[TElement]]
300
+ onResize: EventHandler1[SyntheticEvent[TElement]]
301
+ onResizeCapture: EventHandler1[SyntheticEvent[TElement]]
302
+ onSeeked: EventHandler1[SyntheticEvent[TElement]]
303
+ onSeekedCapture: EventHandler1[SyntheticEvent[TElement]]
304
+ onSeeking: EventHandler1[SyntheticEvent[TElement]]
305
+ onSeekingCapture: EventHandler1[SyntheticEvent[TElement]]
306
+ onStalled: EventHandler1[SyntheticEvent[TElement]]
307
+ onStalledCapture: EventHandler1[SyntheticEvent[TElement]]
308
+ onSuspend: EventHandler1[SyntheticEvent[TElement]]
309
+ onSuspendCapture: EventHandler1[SyntheticEvent[TElement]]
310
+ onTimeUpdate: EventHandler1[SyntheticEvent[TElement]]
311
+ onTimeUpdateCapture: EventHandler1[SyntheticEvent[TElement]]
312
+ onVolumeChange: EventHandler1[SyntheticEvent[TElement]]
313
+ onVolumeChangeCapture: EventHandler1[SyntheticEvent[TElement]]
314
+ onWaiting: EventHandler1[SyntheticEvent[TElement]]
315
+ onWaitingCapture: EventHandler1[SyntheticEvent[TElement]]
316
+
317
+ # Mouse Events
318
+ onAuxClick: EventHandler1[MouseEvent[TElement]]
319
+ onAuxClickCapture: EventHandler1[MouseEvent[TElement]]
320
+ onClick: EventHandler1[MouseEvent[TElement]]
321
+ onClickCapture: EventHandler1[MouseEvent[TElement]]
322
+ onContextMenu: EventHandler1[MouseEvent[TElement]]
323
+ onContextMenuCapture: EventHandler1[MouseEvent[TElement]]
324
+ onDoubleClick: EventHandler1[MouseEvent[TElement]]
325
+ onDoubleClickCapture: EventHandler1[MouseEvent[TElement]]
326
+ onDrag: EventHandler1[DragEvent[TElement]]
327
+ onDragCapture: EventHandler1[DragEvent[TElement]]
328
+ onDragEnd: EventHandler1[DragEvent[TElement]]
329
+ onDragEndCapture: EventHandler1[DragEvent[TElement]]
330
+ onDragEnter: EventHandler1[DragEvent[TElement]]
331
+ onDragEnterCapture: EventHandler1[DragEvent[TElement]]
332
+ onDragExit: EventHandler1[DragEvent[TElement]]
333
+ onDragExitCapture: EventHandler1[DragEvent[TElement]]
334
+ onDragLeave: EventHandler1[DragEvent[TElement]]
335
+ onDragLeaveCapture: EventHandler1[DragEvent[TElement]]
336
+ onDragOver: EventHandler1[DragEvent[TElement]]
337
+ onDragOverCapture: EventHandler1[DragEvent[TElement]]
338
+ onDragStart: EventHandler1[DragEvent[TElement]]
339
+ onDragStartCapture: EventHandler1[DragEvent[TElement]]
340
+ onDrop: EventHandler1[DragEvent[TElement]]
341
+ onDropCapture: EventHandler1[DragEvent[TElement]]
342
+ onMouseDown: EventHandler1[MouseEvent[TElement]]
343
+ onMouseDownCapture: EventHandler1[MouseEvent[TElement]]
344
+ onMouseEnter: EventHandler1[MouseEvent[TElement]]
345
+ onMouseLeave: EventHandler1[MouseEvent[TElement]]
346
+ onMouseMove: EventHandler1[MouseEvent[TElement]]
347
+ onMouseMoveCapture: EventHandler1[MouseEvent[TElement]]
348
+ onMouseOut: EventHandler1[MouseEvent[TElement]]
349
+ onMouseOutCapture: EventHandler1[MouseEvent[TElement]]
350
+ onMouseOver: EventHandler1[MouseEvent[TElement]]
351
+ onMouseOverCapture: EventHandler1[MouseEvent[TElement]]
352
+ onMouseUp: EventHandler1[MouseEvent[TElement]]
353
+ onMouseUpCapture: EventHandler1[MouseEvent[TElement]]
354
+
355
+ # Selection Events
356
+ onSelect: EventHandler1[SyntheticEvent[TElement]]
357
+ onSelectCapture: EventHandler1[SyntheticEvent[TElement]]
358
+
359
+ # Touch Events
360
+ onTouchCancel: EventHandler1[TouchEvent[TElement]]
361
+ onTouchCancelCapture: EventHandler1[TouchEvent[TElement]]
362
+ onTouchEnd: EventHandler1[TouchEvent[TElement]]
363
+ onTouchEndCapture: EventHandler1[TouchEvent[TElement]]
364
+ onTouchMove: EventHandler1[TouchEvent[TElement]]
365
+ onTouchMoveCapture: EventHandler1[TouchEvent[TElement]]
366
+ onTouchStart: EventHandler1[TouchEvent[TElement]]
367
+ onTouchStartCapture: EventHandler1[TouchEvent[TElement]]
368
+
369
+ # Pointer Events
370
+ onPointerDown: EventHandler1[PointerEvent[TElement]]
371
+ onPointerDownCapture: EventHandler1[PointerEvent[TElement]]
372
+ onPointerMove: EventHandler1[PointerEvent[TElement]]
373
+ onPointerMoveCapture: EventHandler1[PointerEvent[TElement]]
374
+ onPointerUp: EventHandler1[PointerEvent[TElement]]
375
+ onPointerUpCapture: EventHandler1[PointerEvent[TElement]]
376
+ onPointerCancel: EventHandler1[PointerEvent[TElement]]
377
+ onPointerCancelCapture: EventHandler1[PointerEvent[TElement]]
378
+ onPointerEnter: EventHandler1[PointerEvent[TElement]]
379
+ onPointerLeave: EventHandler1[PointerEvent[TElement]]
380
+ onPointerOver: EventHandler1[PointerEvent[TElement]]
381
+ onPointerOverCapture: EventHandler1[PointerEvent[TElement]]
382
+ onPointerOut: EventHandler1[PointerEvent[TElement]]
383
+ onPointerOutCapture: EventHandler1[PointerEvent[TElement]]
384
+ onGotPointerCapture: EventHandler1[PointerEvent[TElement]]
385
+ onGotPointerCaptureCapture: EventHandler1[PointerEvent[TElement]]
386
+ onLostPointerCapture: EventHandler1[PointerEvent[TElement]]
387
+ onLostPointerCaptureCapture: EventHandler1[PointerEvent[TElement]]
388
+
389
+ # UI Events
390
+ onScroll: EventHandler1[UIEvent[TElement]]
391
+ onScrollCapture: EventHandler1[UIEvent[TElement]]
392
+ onScrollEnd: EventHandler1[UIEvent[TElement]]
393
+ onScrollEndCapture: EventHandler1[UIEvent[TElement]]
394
+
395
+ # Wheel Events
396
+ onWheel: EventHandler1[WheelEvent[TElement]]
397
+ onWheelCapture: EventHandler1[WheelEvent[TElement]]
398
+
399
+ # Animation Events
400
+ onAnimationStart: EventHandler1[AnimationEvent[TElement]]
401
+ onAnimationStartCapture: EventHandler1[AnimationEvent[TElement]]
402
+ onAnimationEnd: EventHandler1[AnimationEvent[TElement]]
403
+ onAnimationEndCapture: EventHandler1[AnimationEvent[TElement]]
404
+ onAnimationIteration: EventHandler1[AnimationEvent[TElement]]
405
+ onAnimationIterationCapture: EventHandler1[AnimationEvent[TElement]]
406
+
407
+ # Toggle Events
408
+ onToggle: EventHandler1[ToggleEvent[TElement]]
409
+ onBeforeToggle: EventHandler1[ToggleEvent[TElement]]
410
+
411
+ # Transition Events
412
+ onTransitionCancel: EventHandler1[TransitionEvent[TElement]]
413
+ onTransitionCancelCapture: EventHandler1[TransitionEvent[TElement]]
414
+ onTransitionEnd: EventHandler1[TransitionEvent[TElement]]
415
+ onTransitionEndCapture: EventHandler1[TransitionEvent[TElement]]
416
+ onTransitionRun: EventHandler1[TransitionEvent[TElement]]
417
+ onTransitionRunCapture: EventHandler1[TransitionEvent[TElement]]
418
+ onTransitionStart: EventHandler1[TransitionEvent[TElement]]
419
+ onTransitionStartCapture: EventHandler1[TransitionEvent[TElement]]
420
+
421
+
422
+ class FormControlDOMEvents(DOMEvents[TElement], total=False):
423
+ """Specialized DOMEvents where on_change is a ChangeEvent.
424
+
425
+ Use this for inputs, textareas, and selects.
426
+ """
427
+
428
+ onChange: EventHandler1[ChangeEvent[TElement]] # pyright: ignore[reportIncompatibleVariableOverride]
429
+
430
+
431
+ class InputDOMEvents(FormControlDOMEvents[HTMLInputElement], total=False):
432
+ pass
433
+
434
+
435
+ class TextAreaDOMEvents(FormControlDOMEvents[HTMLTextAreaElement], total=False):
436
+ pass
437
+
438
+
439
+ class SelectDOMEvents(FormControlDOMEvents[HTMLSelectElement], total=False):
440
+ pass
441
+
442
+
443
+ class DialogDOMEvents(DOMEvents[HTMLDialogElement], total=False):
444
+ onCancel: EventHandler1[SyntheticEvent[HTMLDialogElement]]
445
+ onClose: EventHandler1[SyntheticEvent[HTMLDialogElement]]