diff --git a/src/Base/BaseCSSFontLoading.res b/src/Base/BaseCSSFontLoading.res index f5c6eabf..4a17fe35 100644 --- a/src/Base/BaseCSSFontLoading.res +++ b/src/Base/BaseCSSFontLoading.res @@ -13,7 +13,6 @@ type fontFaceSetLoadStatus = */ @editor.completeFrom(BaseCSSFontLoading.FontFaceSet) type rec fontFaceSet = private { - ...BaseEvent.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/FontFaceSet/ready) */ diff --git a/src/Base/BaseEncryptedMediaExtensions.res b/src/Base/BaseEncryptedMediaExtensions.res index 7ba05fa4..43dc1f3a 100644 --- a/src/Base/BaseEncryptedMediaExtensions.res +++ b/src/Base/BaseEncryptedMediaExtensions.res @@ -61,7 +61,7 @@ This WebApiEncryptedMediaExtensions API interface represents a context for mess */ @editor.completeFrom(BaseEncryptedMediaExtensions.MediaKeySession) type mediaKeySession = private { - ...BaseEvent.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaKeySession/sessionId) */ diff --git a/src/Base/BaseEvent.res b/src/Base/BaseEvent.res deleted file mode 100644 index 8b811ed5..00000000 --- a/src/Base/BaseEvent.res +++ /dev/null @@ -1,6 +0,0 @@ -/** -EventTarget is a WebApiDOM interface implemented by objects that can receive events and may have listeners for them. -[See EventTarget on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget) -*/ -@editor.completeFrom(BaseEvent.EventTarget) -type eventTarget = private {} diff --git a/src/Base/DOM.res b/src/Base/DOM.res index 23f5e80f..a2f85763 100644 --- a/src/Base/DOM.res +++ b/src/Base/DOM.res @@ -344,12 +344,135 @@ type barProp = { visible: bool, } +/** +EventTarget is a WebApiDOM interface implemented by objects that can receive events and may have listeners for them. +[See EventTarget on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget) +*/ +@editor.completeFrom(EventTarget) +type eventTarget = private {} + +/** +An event which takes place in the DOM. +[See WebApiEvent on MDN](https://developer.mozilla.org/docs/Web/API/Event) +*/ +@editor.completeFrom(Event) +type event = private { + /** +Returns the type of event, e.g. "click", "hashchange", or "submit". +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/type) +*/ + @as("type") + type_: EventType.t, + /** +Returns the object to which event is dispatched (its target). +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/target) +*/ + target: Null.t, + /** +Returns the object whose event listener's callback is currently being invoked. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/currentTarget) +*/ + currentTarget: Null.t, + /** +Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/eventPhase) +*/ + eventPhase: int, + /** +Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/bubbles) +*/ + bubbles: bool, + /** +Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/cancelable) +*/ + cancelable: bool, + /** +Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented) +*/ + defaultPrevented: bool, + /** +Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/composed) +*/ + composed: bool, + /** +Returns true if event was dispatched by the user agent, and false otherwise. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/isTrusted) +*/ + isTrusted: bool, + /** +Returns the event's timestamp as the number of milliseconds measured relative to the time origin. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/timeStamp) +*/ + timeStamp: float, +} + +type eventInit = { + mutable bubbles?: bool, + mutable cancelable?: bool, + mutable composed?: bool, +} + +/** +The ExtendableEvent interface extends the lifetime of the install and activate events dispatched on the global scope as part of the service worker lifecycle. +[See ExtendableEvent on MDN](https://developer.mozilla.org/docs/Web/API/ExtendableEvent) +*/ +@editor.completeFrom(ExtendableEvent) +type extendableEvent = private { + ...event, +} + +/** +A controller object that allows you to abort one or more WebApiDOM requests as and when desired. +[See AbortController on MDN](https://developer.mozilla.org/docs/Web/API/AbortController) +*/ +@editor.completeFrom(AbortController) +type rec abortController = private { + /** +Returns the AbortSignal object associated with this object. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortController/signal) +*/ + signal: abortSignal, +} +/** +A signal object that allows you to communicate with a WebApiDOM request (such as a WebApiFetch) and abort it if required via an AbortController object. +[See AbortSignal on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal) +*/ +@editor.completeFrom(AbortSignal) and abortSignal = private { + ...eventTarget, + /** +Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted) +*/ + aborted: bool, + /** +[Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/reason) +*/ + reason: JSON.t, +} + +module EventListener = { + type t<'event> = 'event => unit + + type options = {mutable capture?: bool} + + type addEventListenerOptions = { + ...options, + mutable passive?: bool, + mutable once?: bool, + mutable signal?: abortSignal, + } +} + /** [See ScreenOrientation on MDN](https://developer.mozilla.org/docs/Web/API/ScreenOrientation) */ @editor.completeFrom(ScreenOrientation) type screenOrientation = private { - ...BaseEvent.eventTarget, + ...eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/ScreenOrientation/type) */ @@ -2310,7 +2433,7 @@ TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(Node) type rec node = { - ...BaseEvent.eventTarget, + ...eventTarget, /** Returns the type of node. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/nodeType) @@ -6972,7 +7095,7 @@ Stores information on a media query applied to a document, and handles sending n */ @editor.completeFrom(MediaQueryList) type mediaQueryList = private { - ...BaseEvent.eventTarget, + ...eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaQueryList/media) */ @@ -7045,7 +7168,7 @@ type timeRanges = private { */ @editor.completeFrom(TextTrackList) type textTrackList = private { - ...BaseEvent.eventTarget, + ...eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/TextTrackList/length) */ diff --git a/src/Canvas/CanvasTypes.res b/src/Canvas/CanvasTypes.res index 22f5d77e..532085e1 100644 --- a/src/Canvas/CanvasTypes.res +++ b/src/Canvas/CanvasTypes.res @@ -122,7 +122,7 @@ TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(OffscreenCanvas) type offscreenCanvas = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** These attributes return the dimensions of the OffscreenCanvas object's bitmap. diff --git a/src/ChannelMessaging/ChannelMessagingTypes.res b/src/ChannelMessaging/ChannelMessagingTypes.res index 1e3b5eeb..d6e05525 100644 --- a/src/ChannelMessaging/ChannelMessagingTypes.res +++ b/src/ChannelMessaging/ChannelMessagingTypes.res @@ -6,7 +6,7 @@ This Channel Messaging API interface represents one of the two ports of a Messag */ @editor.completeFrom(MessagePort) type messagePort = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, } type structuredSerializeOptions = {mutable transfer?: array>} diff --git a/src/Clipboard/ClipboardTypes.res b/src/Clipboard/ClipboardTypes.res index bc20a0a7..ccc74792 100644 --- a/src/Clipboard/ClipboardTypes.res +++ b/src/Clipboard/ClipboardTypes.res @@ -25,7 +25,7 @@ type clipboardItem = private { */ @editor.completeFrom(WebApiClipboard) type clipboard = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, } type clipboardItemOptions = {mutable presentationStyle?: presentationStyle} diff --git a/src/CredentialManagement/CredentialManagementTypes.res b/src/CredentialManagement/CredentialManagementTypes.res index 5fa16f2c..f83244c8 100644 --- a/src/CredentialManagement/CredentialManagementTypes.res +++ b/src/CredentialManagement/CredentialManagementTypes.res @@ -91,7 +91,7 @@ type publicKeyCredentialRequestOptions = { type credentialRequestOptions = { mutable mediation?: credentialMediationRequirement, - mutable signal?: EventTypes.abortSignal, + mutable signal?: DOM.abortSignal, mutable publicKey?: publicKeyCredentialRequestOptions, } @@ -133,6 +133,6 @@ type publicKeyCredentialCreationOptions = { } type credentialCreationOptions = { - mutable signal?: EventTypes.abortSignal, + mutable signal?: DOM.abortSignal, mutable publicKey?: publicKeyCredentialCreationOptions, } diff --git a/src/DOM/Document.res b/src/DOM/Document.res index abe9d20a..36e91159 100644 --- a/src/DOM/Document.res +++ b/src/DOM/Document.res @@ -301,7 +301,7 @@ external createAttributeNS: ( [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Document/createEvent) */ @send -external createEvent: (DomTypes.document, string) => EventTypes.event = "createEvent" +external createEvent: (DomTypes.document, string) => DOM.event = "createEvent" /** Returns an empty range object that has both of its boundary points positioned at the beginning of the document. diff --git a/src/DOM/DomGlobal.res b/src/DOM/DomGlobal.res index 7a1c4c2a..ff508451 100644 --- a/src/DOM/DomGlobal.res +++ b/src/DOM/DomGlobal.res @@ -294,76 +294,6 @@ external requestAnimationFrame: (float => unit) => int = "requestAnimationFrame" */ external cancelAnimationFrame: int => unit = "cancelAnimationFrame" -/** -Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. - -The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. - -When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. - -When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. - -When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. - -If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. - -The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture. -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener) -*/ -external addEventListener: ( - EventType.t, - EventTypes.eventListener<'event>, - ~options: EventTypes.addEventListenerOptions=?, -) => unit = "addEventListener" - -/** -Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. - -The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture. - -When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET. - -When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners. - -When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed. - -If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted. - -The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture. -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener) -*/ -external addEventListenerWithCapture: ( - EventType.t, - EventTypes.eventListener<'event>, - @as(json`true`) _, -) => unit = "addEventListener" - -/** -Removes the event listener in target's event listener list with the same type, callback, and options. -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener) -*/ -external removeEventListener: ( - EventType.t, - EventTypes.eventListener<'event>, - ~options: EventTypes.eventListenerOptions=?, -) => unit = "removeEventListener" - -/** -Removes the event listener in target's event listener list with the same type, callback, and options. -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener) -*/ -external removeEventListenerUseCapture: ( - EventType.t, - EventTypes.eventListener<'event>, - @as(json`true`) _, -) => unit = "removeEventListener" - -/** -Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise. -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) -*/ -external dispatchEvent: EventTypes.event => bool = "dispatchEvent" - /** Closes the window. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/close) diff --git a/src/DOM/DomTypes.res b/src/DOM/DomTypes.res index 6fcb00bb..51afe864 100644 --- a/src/DOM/DomTypes.res +++ b/src/DOM/DomTypes.res @@ -1,8 +1,6 @@ @@warning("-30") type domStringList = DOM.domStringList -type eventTarget = EventTypes.eventTarget -type eventType = EventType.t type file = FileTypes.file type blob = FileTypes.blob type fileSystemEntry = FileAndDirectoryEntriesTypes.fileSystemEntry @@ -336,7 +334,7 @@ type barProp = { */ @editor.completeFrom(ScreenOrientation) type screenOrientation = private { - ...eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/ScreenOrientation/type) */ @@ -1806,7 +1804,7 @@ The CanvasRenderingContext2D interface, part of the WebApiCanvas API, provides t type canvasRenderingContext2D type rec animation = { - ...eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Animation/id) */ diff --git a/src/Event/AbortController.res b/src/Event/AbortController.res index b02abe30..ef8737b1 100644 --- a/src/Event/AbortController.res +++ b/src/Event/AbortController.res @@ -1,12 +1,9 @@ -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortController) -*/ @new -external make: unit => EventTypes.abortController = "AbortController" +external make: unit => DOM.abortController = "AbortController" /** Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortController/abort) */ @send -external abort: (EventTypes.abortController, ~reason: JSON.t=?) => unit = "abort" +external abort: (DOM.abortController, ~reason: JSON.t=?) => unit = "abort" diff --git a/src/Event/AbortSignal.res b/src/Event/AbortSignal.res index 00b170b9..398f8694 100644 --- a/src/Event/AbortSignal.res +++ b/src/Event/AbortSignal.res @@ -1,25 +1,25 @@ -include EventTarget.Impl({type t = EventTypes.abortSignal}) +include EventTarget.Impl({type t = DOM.abortSignal}) /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static) */ @scope("AbortSignal") -external abort: (~reason: JSON.t=?) => EventTypes.abortSignal = "abort" +external abort: (~reason: JSON.t=?) => DOM.abortSignal = "abort" /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static) */ @scope("AbortSignal") -external timeout: int => EventTypes.abortSignal = "timeout" +external timeout: int => DOM.abortSignal = "timeout" /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/any_static) */ @scope("AbortSignal") -external any: array => EventTypes.abortSignal = "any" +external any: array => DOM.abortSignal = "any" /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted) */ @send -external throwIfAborted: EventTypes.abortSignal => unit = "throwIfAborted" +external throwIfAborted: DOM.abortSignal => unit = "throwIfAborted" diff --git a/src/Event/Event.res b/src/Event/Event.res index 3be950e6..55734b50 100644 --- a/src/Event/Event.res +++ b/src/Event/Event.res @@ -1,23 +1,53 @@ -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event) -*/ +type eventInit = DOM.eventInit = { + mutable bubbles?: bool, + mutable cancelable?: bool, + mutable composed?: bool, +} + @new -external make: (~type_: string, ~eventInitDict: EventTypes.eventInit=?) => EventTypes.event = - "Event" +external make: (~type_: string, ~eventInitDict: eventInit=?) => DOM.event = "Event" + +@get +external type_: DOM.event => EventType.t = "type" + +@get +external target: DOM.event => Null.t = "target" + +@get +external currentTarget: DOM.event => Null.t = "currentTarget" + +@get +external eventPhase: DOM.event => int = "eventPhase" + +@get +external bubbles: DOM.event => bool = "bubbles" + +@get +external cancelable: DOM.event => bool = "cancelable" + +@get +external defaultPrevented: DOM.event => bool = "defaultPrevented" + +@get +external composed: DOM.event => bool = "composed" + +@get +external isTrusted: DOM.event => bool = "isTrusted" + +@get +external timeStamp: DOM.event => float = "timeStamp" module Impl = ( T: { type t }, ) => { - external asEvent: T.t => EventTypes.event = "%identity" - /** Returns the invocation target objects of event's path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root's mode is "closed" that are not reachable from event's currentTarget. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/composedPath) */ @send - external composedPath: T.t => array = "composedPath" + external composedPath: T.t => array = "composedPath" /** If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled. @@ -41,4 +71,4 @@ When dispatched in a tree, invoking this method prevents event from reaching any external stopPropagation: T.t => unit = "stopPropagation" } -include Impl({type t = EventTypes.event}) +include Impl({type t = DOM.event}) diff --git a/src/Event/EventTarget.res b/src/Event/EventTarget.res index cfe05f89..b54a51bf 100644 --- a/src/Event/EventTarget.res +++ b/src/Event/EventTarget.res @@ -1,15 +1,12 @@ -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget) -*/ @new -external make: unit => EventTypes.eventTarget = "EventTarget" +external make: unit => DOM.eventTarget = "EventTarget" module Impl = ( T: { type t }, ) => { - external asEventTarget: T.t => EventTypes.eventTarget = "%identity" + external asEventTarget: T.t => DOM.eventTarget = "%identity" /** Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched. @@ -31,8 +28,8 @@ The event listener is appended to target's event listener list and is not append external addEventListener: ( T.t, EventType.t, - EventTypes.eventListener<'event>, - ~options: EventTypes.addEventListenerOptions=?, + DOM.EventListener.t<'event>, + ~options: DOM.EventListener.addEventListenerOptions=?, ) => unit = "addEventListener" /** @@ -55,7 +52,7 @@ The event listener is appended to target's event listener list and is not append external addEventListenerWithCapture: ( T.t, EventType.t, - EventTypes.eventListener<'event>, + DOM.EventListener.t<'event>, @as(json`true`) _, ) => unit = "addEventListener" @@ -67,8 +64,8 @@ Removes the event listener in target's event listener list with the same type, c external removeEventListener: ( T.t, EventType.t, - EventTypes.eventListener<'event>, - ~options: EventTypes.eventListenerOptions=?, + DOM.EventListener.t<'event>, + ~options: DOM.EventListener.options=?, ) => unit = "removeEventListener" /** @@ -79,7 +76,7 @@ Removes the event listener in target's event listener list with the same type, c external removeEventListenerUseCapture: ( T.t, EventType.t, - EventTypes.eventListener<'event>, + DOM.EventListener.t<'event>, @as(json`true`) _, ) => unit = "removeEventListener" @@ -88,7 +85,7 @@ Dispatches a synthetic event event to target and returns true if either event's [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent) */ @send - external dispatchEvent: (T.t, EventTypes.event) => bool = "dispatchEvent" + external dispatchEvent: (T.t, DOM.event) => bool = "dispatchEvent" } -include Impl({type t = EventTypes.eventTarget}) +include Impl({type t = DOM.eventTarget}) diff --git a/src/Event/EventTypes.res b/src/Event/EventTypes.res deleted file mode 100644 index 79615012..00000000 --- a/src/Event/EventTypes.res +++ /dev/null @@ -1,125 +0,0 @@ -@@warning("-30") - -type eventType = EventType.t - -type eventListener<'event> = 'event => unit - -/** -EventTarget is a WebApiDOM interface implemented by objects that can receive events and may have listeners for them. -[See EventTarget on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget) -*/ -@editor.completeFrom(EventTarget) -type eventTarget = BaseEvent.eventTarget = private {...BaseEvent.eventTarget} - -/** -An event which takes place in the DOM. -[See WebApiEvent on MDN](https://developer.mozilla.org/docs/Web/API/Event) -*/ -@editor.completeFrom(WebApiEvent) -type event = private { - /** - Returns the type of event, e.g. "click", "hashchange", or "submit". - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/type) - */ - @as("type") - type_: eventType, - /** - Returns the object to which event is dispatched (its target). - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/target) - */ - target: Null.t, - /** - Returns the object whose event listener's callback is currently being invoked. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/currentTarget) - */ - currentTarget: Null.t, - /** - Returns the event's phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/eventPhase) - */ - eventPhase: int, - /** - Returns true or false depending on how event was initialized. True if event goes through its target's ancestors in reverse tree order, and false otherwise. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/bubbles) - */ - bubbles: bool, - /** - Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/cancelable) - */ - cancelable: bool, - /** - Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented) - */ - defaultPrevented: bool, - /** - Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/composed) - */ - composed: bool, - /** - Returns true if event was dispatched by the user agent, and false otherwise. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/isTrusted) - */ - isTrusted: bool, - /** - Returns the event's timestamp as the number of milliseconds measured relative to the time origin. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event/timeStamp) - */ - timeStamp: float, -} - -/** -A controller object that allows you to abort one or more WebApiDOM requests as and when desired. -[See AbortController on MDN](https://developer.mozilla.org/docs/Web/API/AbortController) -*/ -@editor.completeFrom(AbortController) -type rec abortController = private { - /** - Returns the AbortSignal object associated with this object. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortController/signal) - */ - signal: abortSignal, -} - -/** -A signal object that allows you to communicate with a WebApiDOM request (such as a WebApiFetch) and abort it if required via an AbortController object. -[See AbortSignal on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal) -*/ -@editor.completeFrom(AbortSignal) and abortSignal = private { - ...eventTarget, - /** - Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise. - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted) - */ - aborted: bool, - /** - [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortSignal/reason) - */ - reason: JSON.t, -} - -type eventListenerOptions = {mutable capture?: bool} - -type addEventListenerOptions = { - ...eventListenerOptions, - mutable passive?: bool, - mutable once?: bool, - mutable signal?: abortSignal, -} - -type eventInit = { - mutable bubbles?: bool, - mutable cancelable?: bool, - mutable composed?: bool, -} - -/** -The ExtendableEvent interface extends the lifetime of the install and activate events dispatched on the global scope as part of the service worker lifecycle. -[See ExtendableEvent on MDN](https://developer.mozilla.org/docs/Web/API/ExtendableEvent) - */ -@editor.completeFrom(ExtendableEvent) -type extendableEvent = private { - ...event, -} diff --git a/src/Event/ExtendableEvent.res b/src/Event/ExtendableEvent.res index b9321c29..62d8f963 100644 --- a/src/Event/ExtendableEvent.res +++ b/src/Event/ExtendableEvent.res @@ -3,12 +3,10 @@ module Impl = ( type t }, ) => { - external asExtendableEvent: T.t => EventTypes.extendableEvent = "%identity" - include Event.Impl({type t = T.t}) @send external waitUntil: (T.t, promise<'a>) => unit = "waitUntil" } -include Impl({type t = EventTypes.extendableEvent}) +include Impl({type t = DOM.extendableEvent}) diff --git a/src/Fetch/FetchTypes.res b/src/Fetch/FetchTypes.res index 45a499ff..b5c0e63e 100644 --- a/src/Fetch/FetchTypes.res +++ b/src/Fetch/FetchTypes.res @@ -145,7 +145,7 @@ type request = private { Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Request/signal) */ - signal: EventTypes.abortSignal, + signal: DOM.abortSignal, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Request/body) */ @@ -267,7 +267,7 @@ type requestInit = { /** An AbortSignal to set request's signal. */ - mutable signal?: Null.t, + mutable signal?: Null.t, mutable priority?: requestPriority, /** Can only be null. Used to disassociate request from any Window. diff --git a/src/File/FileTypes.res b/src/File/FileTypes.res index c8635d3b..17f8d09e 100644 --- a/src/File/FileTypes.res +++ b/src/File/FileTypes.res @@ -63,7 +63,7 @@ type writableStreamDefaultController = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/signal) */ - signal: EventTypes.abortSignal, + signal: DOM.abortSignal, } /** @@ -200,7 +200,7 @@ The signal option can be set to an AbortSignal to allow aborting an ongoing pipe mutable preventClose?: bool, mutable preventAbort?: bool, mutable preventCancel?: bool, - mutable signal?: EventTypes.abortSignal, + mutable signal?: DOM.abortSignal, } type filePropertyBag = { diff --git a/src/IndexedDB/IndexedDbTypes.res b/src/IndexedDB/IndexedDbTypes.res index 6aeca46f..62045d01 100644 --- a/src/IndexedDB/IndexedDbTypes.res +++ b/src/IndexedDB/IndexedDbTypes.res @@ -33,7 +33,7 @@ This WebApiIndexedDB API interface provides a connection to a database; you can */ @editor.completeFrom(IDBDatabase) type idbDatabase = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** Returns the name of the database. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/IDBDatabase/name) @@ -56,7 +56,7 @@ type idbDatabase = private { */ @editor.completeFrom(IDBTransaction) type idbTransaction = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** Returns a list of the names of object stores in the transaction's scope. For an upgrade transaction this is all object stores in the database. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/IDBTransaction/objectStoreNames) @@ -88,7 +88,7 @@ The request object does not initially contain any information about the result o [See IDBRequest on MDN](https://developer.mozilla.org/docs/Web/API/IDBRequest) */ type idbRequest<'t> = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** When a request is completed, returns the result, or undefined if the request failed. Throws a "InvalidStateError" DOMException if the request is still pending. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/IDBRequest/result) diff --git a/src/MediaCaptureAndStreams/MediaCaptureAndStreamsTypes.res b/src/MediaCaptureAndStreams/MediaCaptureAndStreamsTypes.res index fc98e8d0..2fd4269a 100644 --- a/src/MediaCaptureAndStreams/MediaCaptureAndStreamsTypes.res +++ b/src/MediaCaptureAndStreams/MediaCaptureAndStreamsTypes.res @@ -15,7 +15,7 @@ Provides access to connected media input devices like cameras and microphones, a */ @editor.completeFrom(MediaDevices) type mediaDevices = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, } /** @@ -48,7 +48,7 @@ A stream of media content. A stream consists of several tracks such as video or */ @editor.completeFrom(MediaStream) type mediaStream = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream/id) */ @@ -66,7 +66,7 @@ TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(MediaStreamTrack) type mediaStreamTrack = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/kind) */ diff --git a/src/Notification/NotificationTypes.res b/src/Notification/NotificationTypes.res index 3f63104a..8e5c32a1 100644 --- a/src/Notification/NotificationTypes.res +++ b/src/Notification/NotificationTypes.res @@ -16,7 +16,7 @@ This Notifications API interface is used to configure and display desktop notifi */ @editor.completeFrom(WebApiNotification) type notification = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Notification/permission_static) */ @@ -64,7 +64,7 @@ type notification = private { } /** - An array of actions to display in the notification, for which the default is an empty array. + An array of actions to display in the notification, for which the default is an empty array. [Read more on MDN](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification#actions) */ type notificationAction = { @@ -95,7 +95,7 @@ type getNotificationOptions = {mutable tag?: string} type notificationPermissionCallback = notificationPermission => unit type notificationEvent = { - ...EventTypes.extendableEvent, + ...DOM.extendableEvent, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/NotificationEvent/action) */ diff --git a/src/Performance/PerformanceTypes.res b/src/Performance/PerformanceTypes.res index f47cf514..405d7f2a 100644 --- a/src/Performance/PerformanceTypes.res +++ b/src/Performance/PerformanceTypes.res @@ -11,7 +11,7 @@ Provides access to performance-related information for the current page. It's pa */ @editor.completeFrom(WebApiPerformance) type performance = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Performance/timeOrigin) */ diff --git a/src/Permissions/PermissionsTypes.res b/src/Permissions/PermissionsTypes.res index 84c3c4a3..fe50f244 100644 --- a/src/Permissions/PermissionsTypes.res +++ b/src/Permissions/PermissionsTypes.res @@ -24,7 +24,7 @@ type permissions = private {} [See PermissionStatus on MDN](https://developer.mozilla.org/docs/Web/API/PermissionStatus) */ type permissionStatus = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/PermissionStatus/state) */ diff --git a/src/PictureInPicture/PictureInPictureTypes.res b/src/PictureInPicture/PictureInPictureTypes.res index ff556ae9..3b3138da 100644 --- a/src/PictureInPicture/PictureInPictureTypes.res +++ b/src/PictureInPicture/PictureInPictureTypes.res @@ -4,7 +4,7 @@ [See PictureInPictureWindow on MDN](https://developer.mozilla.org/docs/Web/API/PictureInPictureWindow) */ type pictureInPictureWindow = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/PictureInPictureWindow/width) */ diff --git a/src/Push/PushTypes.res b/src/Push/PushTypes.res index 33b1228d..290e8b8f 100644 --- a/src/Push/PushTypes.res +++ b/src/Push/PushTypes.res @@ -80,7 +80,7 @@ type pushMessageData @editor.completeFrom(PushEvent) type pushEvent = private { - ...EventTypes.extendableEvent, + ...DOM.extendableEvent, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/PushEvent/data) */ diff --git a/src/RemotePlayback/RemotePlaybackTypes.res b/src/RemotePlayback/RemotePlaybackTypes.res index 975cc56d..c850d3d8 100644 --- a/src/RemotePlayback/RemotePlaybackTypes.res +++ b/src/RemotePlayback/RemotePlaybackTypes.res @@ -10,7 +10,7 @@ type remotePlaybackState = */ @editor.completeFrom(WebApiRemotePlayback) type remotePlayback = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/RemotePlayback/state) */ diff --git a/src/ScreenWakeLock/ScreenWakeLockTypes.res b/src/ScreenWakeLock/ScreenWakeLockTypes.res index 5d23df6c..db1d781c 100644 --- a/src/ScreenWakeLock/ScreenWakeLockTypes.res +++ b/src/ScreenWakeLock/ScreenWakeLockTypes.res @@ -13,7 +13,7 @@ type wakeLock = private {} */ @editor.completeFrom(WakeLockSentinel) type wakeLockSentinel = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/WakeLockSentinel/released) */ diff --git a/src/ServiceWorker/ServiceWorkerTypes.res b/src/ServiceWorker/ServiceWorkerTypes.res index d7415b57..24561355 100644 --- a/src/ServiceWorker/ServiceWorkerTypes.res +++ b/src/ServiceWorker/ServiceWorkerTypes.res @@ -23,7 +23,7 @@ This WebApiServiceWorker API interface provides a reference to a service worker. */ @editor.completeFrom(WebApiServiceWorker) type serviceWorker = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/ServiceWorker/scriptURL) */ @@ -46,7 +46,7 @@ This WebApiServiceWorker API interface represents the service worker registratio */ @editor.completeFrom(ServiceWorkerRegistration) type serviceWorkerRegistration = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/installing) */ @@ -83,7 +83,7 @@ The ServiceWorkerContainer interface of the WebApiServiceWorker API provides */ @editor.completeFrom(ServiceWorkerContainer) type serviceWorkerContainer = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/controller) */ diff --git a/src/UIEvents/UiEventsTypes.res b/src/UIEvents/UiEventsTypes.res index 44347325..325cf351 100644 --- a/src/UIEvents/UiEventsTypes.res +++ b/src/UIEvents/UiEventsTypes.res @@ -10,7 +10,7 @@ Simple user interface events. */ @editor.completeFrom(UIEvent) type uiEvent = private { - ...EventTypes.event, + ...DOM.event, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/UIEvent/view) */ @@ -44,7 +44,7 @@ type focusEvent = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/FocusEvent/relatedTarget) */ - relatedTarget: Null.t, + relatedTarget: Null.t, } /** @@ -248,7 +248,7 @@ type mouseEvent = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MouseEvent/relatedTarget) */ - relatedTarget: Null.t, + relatedTarget: Null.t, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MouseEvent/pageX) */ @@ -321,7 +321,7 @@ type touch = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Touch/target) */ - target: EventTypes.eventTarget, + target: DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Touch/screenX) */ @@ -471,7 +471,7 @@ type pointerEvent = private { } type uiEventInit = { - ...EventTypes.eventInit, + ...Event.eventInit, mutable view?: Null.t, mutable detail?: int, mutable which?: int, @@ -503,14 +503,14 @@ type mouseEventInit = { mutable clientY?: int, mutable button?: int, mutable buttons?: int, - mutable relatedTarget?: Null.t, + mutable relatedTarget?: Null.t, mutable movementX?: float, mutable movementY?: float, } type focusEventInit = { ...uiEventInit, - mutable relatedTarget?: Null.t, + mutable relatedTarget?: Null.t, } type compositionEventInit = { @@ -548,7 +548,7 @@ type inputEventInit = { type touchInit = { mutable identifier: int, - mutable target: EventTypes.eventTarget, + mutable target: DOM.eventTarget, mutable clientX?: float, mutable clientY?: float, mutable screenX?: float, diff --git a/src/VisualViewport/VisualViewportTypes.res b/src/VisualViewport/VisualViewportTypes.res index dd1df336..24e00867 100644 --- a/src/VisualViewport/VisualViewportTypes.res +++ b/src/VisualViewport/VisualViewportTypes.res @@ -4,7 +4,7 @@ [See WebApiVisualViewport on MDN](https://developer.mozilla.org/docs/Web/API/VisualViewport) */ type visualViewport = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/VisualViewport/offsetLeft) */ diff --git a/src/WebAudio/WebAudioTypes.res b/src/WebAudio/WebAudioTypes.res index c65d1be1..0ebc622a 100644 --- a/src/WebAudio/WebAudioTypes.res +++ b/src/WebAudio/WebAudioTypes.res @@ -80,7 +80,7 @@ The Web Audio API events that occur when a ScriptProcessorNode input buffer is r */ @editor.completeFrom(AudioProcessingEvent) type audioProcessingEvent = private { - ...EventTypes.event, + ...DOM.event, } /** @@ -89,7 +89,7 @@ The Web Audio API OfflineAudioCompletionEvent interface represents events that o */ @editor.completeFrom(OfflineAudioCompletionEvent) type offlineAudioCompletionEvent = private { - ...EventTypes.event, + ...DOM.event, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/OfflineAudioCompletionEvent/renderedBuffer) */ @@ -109,7 +109,7 @@ TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(AudioNode) type rec audioNode = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AudioNode/context) */ @@ -178,7 +178,7 @@ and audioDestinationNode = { [See BaseAudioContext on MDN](https://developer.mozilla.org/docs/Web/API/BaseAudioContext) */ @editor.completeFrom(BaseAudioContext) and baseAudioContext = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/destination) */ @@ -1136,14 +1136,14 @@ type audioBufferOptions = { } type audioProcessingEventInit = { - ...EventTypes.eventInit, + ...Event.eventInit, mutable playbackTime: float, mutable inputBuffer: audioBuffer, mutable outputBuffer: audioBuffer, } type offlineAudioCompletionEventInit = { - ...EventTypes.eventInit, + ...Event.eventInit, mutable renderedBuffer: audioBuffer, } diff --git a/src/WebLocks/WebLocksTypes.res b/src/WebLocks/WebLocksTypes.res index 266a4910..2815c01f 100644 --- a/src/WebLocks/WebLocksTypes.res +++ b/src/WebLocks/WebLocksTypes.res @@ -39,7 +39,7 @@ type lockOptions = { mutable mode?: lockMode, mutable ifAvailable?: bool, mutable steal?: bool, - mutable signal?: EventTypes.abortSignal, + mutable signal?: DOM.abortSignal, } type lockGrantedCallback = lock => promise diff --git a/src/WebMIDI/WebMidiTypes.res b/src/WebMIDI/WebMidiTypes.res index 0ccb3c06..fa4af480 100644 --- a/src/WebMIDI/WebMidiTypes.res +++ b/src/WebMIDI/WebMidiTypes.res @@ -14,7 +14,7 @@ type midiOutputMap = {} [See MIDIAccess on MDN](https://developer.mozilla.org/docs/Web/API/MIDIAccess) */ type midiAccess = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MIDIAccess/inputs) */ diff --git a/src/WebSockets/MessageEvent.res b/src/WebSockets/MessageEvent.res index 480b3b93..53d5eacb 100644 --- a/src/WebSockets/MessageEvent.res +++ b/src/WebSockets/MessageEvent.res @@ -1,5 +1,5 @@ -type event = EventTypes.event -type eventTarget = EventTypes.eventTarget +type event = DOM.event +type eventTarget = DOM.eventTarget type messageEventSource = WebSocketsTypes.messageEventSource type messageEvent<'t> = WebSocketsTypes.messageEvent<'t> diff --git a/src/WebSockets/WebSocketsTypes.res b/src/WebSockets/WebSocketsTypes.res index f3574108..bfac3975 100644 --- a/src/WebSockets/WebSocketsTypes.res +++ b/src/WebSockets/WebSocketsTypes.res @@ -13,7 +13,7 @@ TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(WebSocket) type webSocket = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** Returns the WebApiURL that was used to establish the WebSocket connection. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/WebSocket/url) @@ -56,7 +56,7 @@ A CloseEvent is sent to clients using WebApiWebSockets when the connection is cl */ @editor.completeFrom(CloseEvent) type closeEvent = private { - ...EventTypes.event, + ...DOM.event, /** Returns true if the connection closed cleanly; false otherwise. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean) @@ -79,7 +79,7 @@ A message received by a target object. [See MessageEvent on MDN](https://developer.mozilla.org/docs/Web/API/MessageEvent) */ type messageEvent<'t> = { - ...EventTypes.event, + ...DOM.event, /** Returns the data of the message. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MessageEvent/data) @@ -108,14 +108,14 @@ type messageEvent<'t> = { } type closeEventInit = { - ...EventTypes.eventInit, + ...Event.eventInit, mutable wasClean?: bool, mutable code?: int, mutable reason?: string, } type messageEventInit<'t> = { - ...EventTypes.eventInit, + ...Event.eventInit, mutable data?: 't, mutable origin?: string, mutable lastEventId?: string, diff --git a/src/WebSpeech/WebSpeechTypes.res b/src/WebSpeech/WebSpeechTypes.res index d4028d8a..f1b8534c 100644 --- a/src/WebSpeech/WebSpeechTypes.res +++ b/src/WebSpeech/WebSpeechTypes.res @@ -6,7 +6,7 @@ This Web Speech API interface is the controller interface for the speech service */ @editor.completeFrom(SpeechSynthesis) type speechSynthesis = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/pending) */ @@ -55,7 +55,7 @@ TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(SpeechSynthesisUtterance) type speechSynthesisUtterance = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/text) */ diff --git a/src/WebStorage/WebStorageTypes.res b/src/WebStorage/WebStorageTypes.res index 1b210cf2..4f779c83 100644 --- a/src/WebStorage/WebStorageTypes.res +++ b/src/WebStorage/WebStorageTypes.res @@ -19,7 +19,7 @@ A StorageEvent is sent to a window when a storage area it has access to is chang */ @editor.completeFrom(StorageEvent) type storageEvent = private { - ...EventTypes.event, + ...DOM.event, /** Returns the key of the storage item being changed. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/StorageEvent/key) @@ -48,7 +48,7 @@ type storageEvent = private { } type storageEventInit = { - ...EventTypes.eventInit, + ...Event.eventInit, mutable key?: Null.t, mutable oldValue?: Null.t, mutable newValue?: Null.t, diff --git a/src/WebVTT/WebVttTypes.res b/src/WebVTT/WebVttTypes.res index c0416343..831bb0d0 100644 --- a/src/WebVTT/WebVttTypes.res +++ b/src/WebVTT/WebVttTypes.res @@ -31,7 +31,7 @@ TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(TextTrack) type rec textTrackCue = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** Returns the TextTrack object to which this text track cue belongs, if any, or null otherwise. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/TextTrackCue/track) @@ -73,7 +73,7 @@ This interface also inherits properties from EventTarget. TODO: mark as private once mutating fields of private records is allowed */ @editor.completeFrom(TextTrack) and textTrack = { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** Returns the text track kind string. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/TextTrack/kind) diff --git a/src/WebWorkers/WebWorkersTypes.res b/src/WebWorkers/WebWorkersTypes.res index 78068fa7..daf78021 100644 --- a/src/WebWorkers/WebWorkersTypes.res +++ b/src/WebWorkers/WebWorkersTypes.res @@ -28,13 +28,13 @@ type sharedWorker /** The WorkerGlobalScope interface of the Web Workers API is an interface representing the scope of any worker. Workers have no browsing context; this scope contains the information usually conveyed by Window objects — -in this case event handlers, the console or the associated WorkerNavigator object. +in this case event handlers, the console or the associated WorkerNavigator object. Each WorkerGlobalScope has its own event loop. [See WorkerGlobalScope on MDN](https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope) */ @editor.completeFrom(WorkerGlobalScope) type workerGlobalScope = private { - ...EventTypes.eventTarget, + ...DOM.eventTarget, /** [Read more on MDN](https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/caches) */ @@ -58,10 +58,10 @@ type workerOptions = { } /** -The `SharedWorkerGlobalScope` object (the `SharedWorker` global scope) is -accessible through the self keyword. Some additional global functions, -namespaces objects, and constructors, not typically associated with the worker -global scope, but available on it, are listed in the JavaScript Reference. See +The `SharedWorkerGlobalScope` object (the `SharedWorker` global scope) is +accessible through the self keyword. Some additional global functions, +namespaces objects, and constructors, not typically associated with the worker +global scope, but available on it, are listed in the JavaScript Reference. See the complete list of functions available to workers. */ @editor.completeFrom(SharedWorkerGlobalScope) diff --git a/tests/DOMAPI/EventTarget__test.res b/tests/DOMAPI/EventTarget__test.res new file mode 100644 index 00000000..ba5e6e50 --- /dev/null +++ b/tests/DOMAPI/EventTarget__test.res @@ -0,0 +1,15 @@ +let acceptsDOMEventTarget = (_target: DOM.eventTarget) => () +let acceptsEventTargetLeaf = (_target: DOM.eventTarget) => () + +let _ = (target: DOM.eventTarget) => { + acceptsEventTargetLeaf(target) +} + +let _ = (target: DOM.eventTarget) => { + acceptsDOMEventTarget(target) +} + +let el = switch Document.make()->Document.getElementById("foo") { +| Null => () +| Value(el) => el->Element.addEventListener(Click, () => ()) +} diff --git a/tests/DOMAPI/Event__test.res b/tests/DOMAPI/Event__test.res new file mode 100644 index 00000000..55fa8431 --- /dev/null +++ b/tests/DOMAPI/Event__test.res @@ -0,0 +1,28 @@ +let acceptsDOMEvent = (_event: DOM.event) => () +let acceptsEvent = (_event: DOM.event) => () + +let _ = (event: DOM.event) => { + acceptsEvent(event) +} + +let _ = (event: DOM.event) => { + acceptsDOMEvent(event) +} + +let handleClick = (event: DOM.event) => { + event->Event.preventDefault + switch event->Event.target { + | Value(target) => Console.log(target) + | Null => Console.log("No target found") + } +} + +let target: DOM.eventTarget = {} + +let fn = (target: DOM.eventTarget) => + target->EventTarget.addEventListener(Click, () => Console.log("Click 1")) + +let x = fn(target) + +// Testing out global event listeners +Window.current->Window.addEventListener(Click, () => Console.log("Click 2")) diff --git a/tests/Fetch__test.res b/tests/Fetch__test.res index b22354e6..5ee64b2d 100644 --- a/tests/Fetch__test.res +++ b/tests/Fetch__test.res @@ -26,7 +26,7 @@ let response3 = await Fetch.fetchWithRequest( }, ) -DomGlobal.removeEventListener( +Window.current->Window.removeEventListener( EventType.Mousedown, MouseEvent.preventDefault, ~options={capture: false},