blob: 6a9666962fc08b3657a430d37b1ebbb26e2c133e [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import '../../dom.dart';
import 'providers.dart';
import 'streams.dart';
extension ElementEventGetters on Element {
ElementStream<Event> get onAbort =>
EventStreamProviders.abortEvent.forElement(this);
ElementStream<Event> get onBeforeCopy =>
EventStreamProviders.beforeCopyEvent.forElement(this);
ElementStream<Event> get onBeforeCut =>
EventStreamProviders.beforeCutEvent.forElement(this);
ElementStream<Event> get onBeforePaste =>
EventStreamProviders.beforePasteEvent.forElement(this);
ElementStream<Event> get onBlur =>
EventStreamProviders.blurEvent.forElement(this);
ElementStream<Event> get onCanPlay =>
EventStreamProviders.canPlayEvent.forElement(this);
ElementStream<Event> get onCanPlayThrough =>
EventStreamProviders.canPlayThroughEvent.forElement(this);
ElementStream<Event> get onChange =>
EventStreamProviders.changeEvent.forElement(this);
ElementStream<MouseEvent> get onClick =>
EventStreamProviders.clickEvent.forElement(this);
ElementStream<MouseEvent> get onContextMenu =>
EventStreamProviders.contextMenuEvent.forElement(this);
ElementStream<ClipboardEvent> get onCopy =>
EventStreamProviders.copyEvent.forElement(this);
ElementStream<ClipboardEvent> get onCut =>
EventStreamProviders.cutEvent.forElement(this);
ElementStream<Event> get onDoubleClick =>
EventStreamProviders.doubleClickElementEvent.forElement(this);
ElementStream<MouseEvent> get onDrag =>
EventStreamProviders.dragEvent.forElement(this);
ElementStream<MouseEvent> get onDragEnd =>
EventStreamProviders.dragEndEvent.forElement(this);
ElementStream<MouseEvent> get onDragEnter =>
EventStreamProviders.dragEnterEvent.forElement(this);
ElementStream<MouseEvent> get onDragLeave =>
EventStreamProviders.dragLeaveEvent.forElement(this);
ElementStream<MouseEvent> get onDragOver =>
EventStreamProviders.dragOverEvent.forElement(this);
ElementStream<MouseEvent> get onDragStart =>
EventStreamProviders.dragStartEvent.forElement(this);
ElementStream<MouseEvent> get onDrop =>
EventStreamProviders.dropEvent.forElement(this);
ElementStream<Event> get onDurationChange =>
EventStreamProviders.durationChangeEvent.forElement(this);
ElementStream<Event> get onEmptied =>
EventStreamProviders.emptiedEvent.forElement(this);
ElementStream<Event> get onEnded =>
EventStreamProviders.endedEvent.forElement(this);
ElementStream<Event> get onError =>
EventStreamProviders.errorElementEvent.forElement(this);
ElementStream<Event> get onFocus =>
EventStreamProviders.focusEvent.forElement(this);
ElementStream<Event> get onFullscreenChange =>
EventStreamProviders.fullscreenChangeEvent.forElement(this);
ElementStream<Event> get onFullscreenError =>
EventStreamProviders.fullscreenErrorEvent.forElement(this);
ElementStream<Event> get onInput =>
EventStreamProviders.inputEvent.forElement(this);
ElementStream<Event> get onInvalid =>
EventStreamProviders.invalidEvent.forElement(this);
ElementStream<KeyboardEvent> get onKeyDown =>
EventStreamProviders.keyDownEvent.forElement(this);
ElementStream<KeyboardEvent> get onKeyPress =>
EventStreamProviders.keyPressEvent.forElement(this);
ElementStream<KeyboardEvent> get onKeyUp =>
EventStreamProviders.keyUpEvent.forElement(this);
ElementStream<Event> get onLoad =>
EventStreamProviders.loadEvent.forElement(this);
ElementStream<Event> get onUnload =>
EventStreamProviders.unloadEvent.forElement(this);
ElementStream<Event> get onLoadedData =>
EventStreamProviders.loadedDataEvent.forElement(this);
ElementStream<Event> get onLoadedMetadata =>
EventStreamProviders.loadedMetadataEvent.forElement(this);
ElementStream<MouseEvent> get onMouseDown =>
EventStreamProviders.mouseDownEvent.forElement(this);
ElementStream<MouseEvent> get onMouseEnter =>
EventStreamProviders.mouseEnterEvent.forElement(this);
ElementStream<MouseEvent> get onMouseLeave =>
EventStreamProviders.mouseLeaveEvent.forElement(this);
ElementStream<MouseEvent> get onMouseMove =>
EventStreamProviders.mouseMoveEvent.forElement(this);
ElementStream<MouseEvent> get onMouseOut =>
EventStreamProviders.mouseOutEvent.forElement(this);
ElementStream<MouseEvent> get onMouseOver =>
EventStreamProviders.mouseOverEvent.forElement(this);
ElementStream<MouseEvent> get onMouseUp =>
EventStreamProviders.mouseUpEvent.forElement(this);
ElementStream<ClipboardEvent> get onPaste =>
EventStreamProviders.pasteEvent.forElement(this);
ElementStream<Event> get onPause =>
EventStreamProviders.pauseEvent.forElement(this);
ElementStream<Event> get onPlay =>
EventStreamProviders.playEvent.forElement(this);
ElementStream<Event> get onPlaying =>
EventStreamProviders.playingEvent.forElement(this);
ElementStream<Event> get onRateChange =>
EventStreamProviders.rateChangeEvent.forElement(this);
ElementStream<Event> get onReset =>
EventStreamProviders.resetEvent.forElement(this);
ElementStream<Event> get onResize =>
EventStreamProviders.resizeEvent.forElement(this);
ElementStream<Event> get onScroll =>
EventStreamProviders.scrollEvent.forElement(this);
ElementStream<Event> get onSearch =>
EventStreamProviders.searchEvent.forElement(this);
ElementStream<Event> get onSeeked =>
EventStreamProviders.seekedEvent.forElement(this);
ElementStream<Event> get onSeeking =>
EventStreamProviders.seekingEvent.forElement(this);
ElementStream<Event> get onSelect =>
EventStreamProviders.selectEvent.forElement(this);
ElementStream<Event> get onSelectStart =>
EventStreamProviders.selectStartEvent.forElement(this);
ElementStream<Event> get onStalled =>
EventStreamProviders.stalledEvent.forElement(this);
ElementStream<Event> get onSubmit =>
EventStreamProviders.submitEvent.forElement(this);
ElementStream<Event> get onSuspend =>
EventStreamProviders.suspendEvent.forElement(this);
ElementStream<Event> get onTimeUpdate =>
EventStreamProviders.timeUpdateEvent.forElement(this);
ElementStream<TouchEvent> get onTouchCancel =>
EventStreamProviders.touchCancelEvent.forElement(this);
ElementStream<TouchEvent> get onTouchEnd =>
EventStreamProviders.touchEndEvent.forElement(this);
ElementStream<TouchEvent> get onTouchEnter =>
EventStreamProviders.touchEnterEvent.forElement(this);
ElementStream<TouchEvent> get onTouchLeave =>
EventStreamProviders.touchLeaveEvent.forElement(this);
ElementStream<TouchEvent> get onTouchMove =>
EventStreamProviders.touchMoveEvent.forElement(this);
ElementStream<TouchEvent> get onTouchStart =>
EventStreamProviders.touchStartEvent.forElement(this);
ElementStream<Event> get onVolumeChange =>
EventStreamProviders.volumeChangeEvent.forElement(this);
ElementStream<Event> get onWaiting =>
EventStreamProviders.waitingEvent.forElement(this);
ElementStream<WebGLContextEvent> get onWebGlContextLost =>
EventStreamProviders.webGlContextLostEvent.forElement(this);
ElementStream<WebGLContextEvent> get onWebGlContextRestored =>
EventStreamProviders.webGlContextRestoredEvent.forElement(this);
ElementStream<WheelEvent> get onWheel =>
EventStreamProviders.wheelEvent.forElement(this);
}
extension XHRGetters on XMLHttpRequest {
Stream<ProgressEvent> get onLoad =>
EventStreamProviders.loadEvent.forTarget(this);
Stream<ProgressEvent> get onError =>
EventStreamProviders.errorEvent.forTarget(this);
Stream<ProgressEvent> get onProgress =>
EventStreamProviders.progressEvent.forTarget(this);
Stream<Event> get onReadyStateChange =>
EventStreamProviders.readyStateChangeEvent.forTarget(this);
}
extension EventSourceEventGetters on EventSource {
Stream<Event> get onError =>
EventStreamProviders.errorEventSourceEvent.forTarget(this);
Stream<MessageEvent> get onMessage =>
EventStreamProviders.messageEvent.forTarget(this);
Stream<Event> get onOpen => EventStreamProviders.openEvent.forTarget(this);
}
extension FileReaderEventGetters on FileReader {
Stream<ProgressEvent> get onAbort =>
EventStreamProviders.abortEvent.forTarget(this);
Stream<ProgressEvent> get onError =>
EventStreamProviders.errorEvent.forTarget(this);
Stream<ProgressEvent> get onLoad =>
EventStreamProviders.loadEvent.forTarget(this);
Stream<ProgressEvent> get onLoadEnd =>
EventStreamProviders.loadEndEvent.forTarget(this);
Stream<ProgressEvent> get onLoadStart =>
EventStreamProviders.loadStartEvent.forTarget(this);
Stream<ProgressEvent> get onProgress =>
EventStreamProviders.progressEvent.forTarget(this);
}
extension AutoElementEventGetters on AudioNode {
Stream<Event> get onEnded => EventStreamProviders.endedEvent.forTarget(this);
}
extension WindowEventGetters on Window {
Stream<KeyboardEvent> get onKeyDown =>
EventStreamProviders.keyDownEvent.forTarget(this);
Stream<KeyboardEvent> get onKeyPress =>
EventStreamProviders.keyPressEvent.forTarget(this);
Stream<Event> get onLoad => EventStreamProviders.loadEvent.forTarget(this);
Stream<MessageEvent> get onMessage =>
EventStreamProviders.messageEvent.forTarget(this);
Stream<PopStateEvent> get onPopState =>
EventStreamProviders.popStateEvent.forTarget(this);
Stream<TouchEvent> get onTouchMove =>
EventStreamProviders.touchMoveEvent.forTarget(this);
}
extension ElementCustomEvents on Element {
ElementStream<WheelEvent> get onMouseWheel =>
CustomEventProviders.mouseWheelEvent.forElement(this);
ElementStream<TransitionEvent> get onTransitionEnd =>
CustomEventProviders.transitionEndEvent.forElement(this);
}
extension DocumentCustomEvents on Document {
Stream<Event> get onLoad => EventStreamProviders.loadEvent.forTarget(this);
Stream<WheelEvent> get onMouseWheel =>
CustomEventProviders.mouseWheelEvent.forTarget(this);
Stream<Event> get onVisibilityChange =>
CustomEventProviders.visibilityChangeEvent.forTarget(this);
}
extension WindowCustomEvents on Window {
Stream<WheelEvent> get onMouseWheel =>
CustomEventProviders.mouseWheelEvent.forTarget(this);
Stream<TransitionEvent> get onTransitionEnd =>
CustomEventProviders.transitionEndEvent.forTarget(this);
}
extension WebSocketEvents on WebSocket {
Stream<Event> get onOpen => EventStreamProviders.openEvent.forTarget(this);
Stream<MessageEvent> get onMessage =>
EventStreamProviders.messageEvent.forTarget(this);
Stream<CloseEvent> get onClose =>
EventStreamProviders.closeEvent.forTarget(this);
Stream<Event> get onError =>
EventStreamProviders.errorEventSourceEvent.forTarget(this);
}