From ce9ed165939d52b421bc6313c0e949c768194c47 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 12 Mar 2024 13:20:31 -0700 Subject: [PATCH 1/4] commit dom.dart --- lib/src/dom/dom.dart | 1830 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 1671 insertions(+), 159 deletions(-) diff --git a/lib/src/dom/dom.dart b/lib/src/dom/dom.dart index 40a25a71..53e5f4dd 100644 --- a/lib/src/dom/dom.dart +++ b/lib/src/dom/dom.dart @@ -153,20 +153,138 @@ extension type Event._(JSObject _) implements JSObject { bool bubbles, bool cancelable, ]); + + /// The **`type`** read-only property of the [Event] + /// interface returns a string containing the event's type. It is set when the + /// event is + /// constructed and is the name commonly used to refer to the specific event, + /// such as + /// `click`, `load`, or `error`. external String get type; + + /// The read-only **`target`** property of the + /// [Event] interface is a reference to the object onto which the event was + /// dispatched. It is different from [Event.currentTarget] when the event + /// handler is called during the bubbling or capturing phase of the event. external EventTarget? get target; + + /// The deprecated **`Event.srcElement`** is an alias for the [Event.target] + /// property. Use [Event.target] instead. external EventTarget? get srcElement; + + /// The **`currentTarget`** read-only property of the [Event] interface + /// identifies the element to which the event handler has been attached. + /// + /// This will not always be the same as the element on which the event was + /// fired, because the event may have fired on a descendant of the element + /// with the handler, and then + /// [bubbled](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#event_bubbling) + /// up to the element with the handler. The element on which the event was + /// fired is given by [Event.target]. external EventTarget? get currentTarget; + + /// The **`eventPhase`** read-only property of the + /// [Event] interface indicates which phase of the event flow is currently + /// being evaluated. external int get eventPhase; - external set cancelBubble(bool value); + + /// The **`cancelBubble`** property of the [Event] + /// interface is deprecated. Use [Event.stopPropagation] instead. + /// Setting its value to `true` before returning from an event handler + /// prevents propagation + /// of the event. In later implementations, setting this to `false` does + /// nothing. + /// See [Browser compatibility](#browser_compatibility) for details. external bool get cancelBubble; + external set cancelBubble(bool value); + + /// The **`bubbles`** read-only property of the [Event] interface indicates + /// whether the event bubbles up through the DOM tree or not. + /// + /// > **Note:** See + /// > [Event bubbling and capture](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#event_bubbling) + /// > for more information on bubbling. external bool get bubbles; + + /// The **`cancelable`** read-only property of the [Event] interface indicates + /// whether the event + /// can be canceled, and therefore prevented as if the event never happened. + /// + /// If the event is _not_ cancelable, then its `cancelable` property will be + /// `false` and the event listener cannot stop the event from occurring. + /// + /// Most browser-native events that can be canceled are the ones that result + /// from the user + /// interacting with the page. Canceling the [Element.click_event], + /// [Element.wheel_event], or + /// [Window.beforeunload_event] events would prevent the user + /// from clicking on something, scrolling the page with the mouse wheel, or + /// navigating away from the page, respectively. + /// + /// [Synthetic events](https://developer.mozilla.org/en-US/docs/Web/API/Event/Event) + /// created by other JavaScript + /// code define if they can be canceled when they are created. + /// + /// To cancel an event, call the [event.preventDefault] + /// method on the event. This keeps the implementation from executing the + /// default action + /// that is associated with the event. + /// + /// Event listeners that handle multiple kinds of events may want to check + /// `cancelable` before invoking their [event.preventDefault] methods. external bool get cancelable; - external set returnValue(bool value); + + /// The [Event] property + /// **`returnValue`** indicates whether the default action for + /// this event has been prevented or not. + /// + /// It is set to `true` by + /// default, allowing the default action to occur. Setting this property to + /// `false` prevents the default action. + /// + /// > **Note:** While `returnValue` has been adopted into the DOM + /// > standard, it is present primarily to support existing code. Use + /// > [Event.preventDefault], and + /// > [Event.defaultPrevented] instead of this historical + /// > property. external bool get returnValue; + external set returnValue(bool value); + + /// The **`defaultPrevented`** read-only property of the [Event] interface + /// returns a boolean value indicating whether or not the call to + /// [Event.preventDefault] canceled the event. external bool get defaultPrevented; + + /// The read-only **`composed`** property of the + /// [Event] interface returns a boolean value which indicates whether + /// or not the event will propagate across the shadow DOM boundary into the + /// standard DOM. + /// + /// All UA-dispatched UI events are composed + /// (click/touch/mouseover/copy/paste, etc.). Most + /// other types of events are not composed, and so will return `false`. For + /// example, this includes synthetic events that are created without their + /// `composed` option set to `true`. + /// + /// Propagation only occurs if the [Event.bubbles] property is also + /// `true`. However, capturing only composed events are also handled at host + /// as + /// if they were in `AT_TARGET` phase. You can determine the path the event + /// will + /// follow through the shadow root to the DOM root by calling + /// [Event.composedPath]. external bool get composed; + + /// The **`isTrusted`** read-only property of the + /// [Event] interface is a boolean value that is `true` + /// when the event was generated by a user action, and `false` when the event + /// was + /// created or modified by a script or dispatched via + /// [EventTarget.dispatchEvent]. external bool get isTrusted; + + /// The **`timeStamp`** read-only property of the [Event] interface returns + /// the time (in milliseconds) at which the event was created. external DOMHighResTimeStamp get timeStamp; } extension type EventInit._(JSObject _) implements JSObject { @@ -176,12 +294,12 @@ extension type EventInit._(JSObject _) implements JSObject { bool composed, }); - external set bubbles(bool value); external bool get bubbles; - external set cancelable(bool value); + external set bubbles(bool value); external bool get cancelable; - external set composed(bool value); + external set cancelable(bool value); external bool get composed; + external set composed(bool value); } /// The **`CustomEvent`** interface represents events initialized by an @@ -227,6 +345,9 @@ extension type CustomEvent._(JSObject _) implements Event, JSObject { bool cancelable, JSAny? detail, ]); + + /// The read-only **`detail`** property of the [CustomEvent] interface + /// returns any data passed when initializing the event. external JSAny? get detail; } extension type CustomEventInit._(JSObject _) implements EventInit, JSObject { @@ -237,8 +358,8 @@ extension type CustomEventInit._(JSObject _) implements EventInit, JSObject { JSAny? detail, }); - external set detail(JSAny? value); external JSAny? get detail; + external set detail(JSAny? value); } /// The **`EventTarget`** interface is implemented by objects that can receive @@ -379,8 +500,8 @@ extension type EventTarget._(JSObject _) implements JSObject { extension type EventListenerOptions._(JSObject _) implements JSObject { external factory EventListenerOptions({bool capture}); - external set capture(bool value); external bool get capture; + external set capture(bool value); } extension type AddEventListenerOptions._(JSObject _) implements EventListenerOptions, JSObject { @@ -391,12 +512,12 @@ extension type AddEventListenerOptions._(JSObject _) AbortSignal signal, }); - external set passive(bool value); external bool get passive; - external set once(bool value); + external set passive(bool value); external bool get once; - external set signal(AbortSignal value); + external set once(bool value); external AbortSignal get signal; + external set signal(AbortSignal value); } /// The **`AbortController`** interface represents a controller object that @@ -419,6 +540,10 @@ extension type AbortController._(JSObject _) implements JSObject { /// [fetch requests](https://developer.mozilla.org/en-US/docs/Web/API/fetch), /// the consumption of any response bodies, or streams. external void abort([JSAny? reason]); + + /// The **`signal`** read-only property of the [AbortController] interface + /// returns an [AbortSignal] object instance, which can be used to communicate + /// with/abort an asynchronous operation as desired. external AbortSignal get signal; } @@ -447,10 +572,23 @@ extension type AbortSignal._(JSObject _) implements EventTarget, JSObject { /// This method can also be used to abort operations at particular points in /// code, rather than passing to functions that take a signal. external void throwIfAborted(); + + /// The **`aborted`** read-only property returns a value that indicates + /// whether the asynchronous operations the signal is communicating with are + /// aborted (`true`) or not (`false`). external bool get aborted; + + /// The **`reason`** read-only property returns a JavaScript value that + /// indicates the abort reason. + /// + /// The property is `undefined` when the signal has not been aborted. + /// It can be set to a specific value when the signal is aborted, using + /// [AbortController.abort] or [AbortSignal.abort_static]. + /// If not explicitly set in those methods, it defaults to "AbortError" + /// [DOMException]. external JSAny? get reason; - external set onabort(EventHandler value); external EventHandler get onabort; + external set onabort(EventHandler value); } /// **`NodeList`** objects are collections of @@ -476,6 +614,9 @@ extension type NodeList._(JSObject _) implements JSObject { /// no /// argument is provided. external Node? item(int index); + + /// The **`NodeList.length`** property returns the number of items + /// in a [NodeList]. external int get length; } @@ -523,6 +664,9 @@ extension type HTMLCollection._(JSObject _) implements JSObject { /// In JavaScript, using the array bracket syntax with a `String`, like /// `collection["value"]` is equivalent to `collection.namedItem("value")`. external Element? namedItem(String name); + + /// The **`HTMLCollection.length`** property returns the number of + /// items in a [HTMLCollection]. external int get length; } @@ -588,20 +732,20 @@ extension type MutationObserverInit._(JSObject _) implements JSObject { JSArray attributeFilter, }); - external set childList(bool value); external bool get childList; - external set attributes(bool value); + external set childList(bool value); external bool get attributes; - external set characterData(bool value); + external set attributes(bool value); external bool get characterData; - external set subtree(bool value); + external set characterData(bool value); external bool get subtree; - external set attributeOldValue(bool value); + external set subtree(bool value); external bool get attributeOldValue; - external set characterDataOldValue(bool value); + external set attributeOldValue(bool value); external bool get characterDataOldValue; - external set attributeFilter(JSArray value); + external set characterDataOldValue(bool value); external JSArray get attributeFilter; + external set attributeFilter(JSArray value); } /// The [MutationRecord] is a read-only interface that represents an individual @@ -613,14 +757,50 @@ extension type MutationObserverInit._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord). extension type MutationRecord._(JSObject _) implements JSObject { + /// The [MutationRecord] read-only property **`type`** is the type of the + /// [MutationRecord] observed by a [MutationObserver]. external String get type; + + /// The [MutationRecord] read-only property **`target`** is the target (i.e. + /// the mutated/changed node) of a mutation observed with a + /// [MutationObserver]. external Node get target; + + /// The [MutationRecord] read-only property **`addedNodes`** is a [NodeList] + /// of nodes added to a target node by a mutation observed with a + /// [MutationObserver]. external NodeList get addedNodes; + + /// The [MutationRecord] read-only property **`removedNodes`** is a [NodeList] + /// of nodes removed from a target node by a mutation observed with a + /// [MutationObserver]. external NodeList get removedNodes; + + /// The [MutationRecord] read-only property **`previousSibling`** is the + /// previous sibling of an added or removed child node of the + /// [`target`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord/target) + /// of a [MutationObserver]. external Node? get previousSibling; + + /// The [MutationRecord] read-only property **`nextSibling`** is the next + /// sibling of an added or removed child node of the + /// [`target`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord/target) + /// of a [MutationObserver]. external Node? get nextSibling; + + /// The [MutationRecord] read-only property **`attributeName`** contains the + /// name of a changed attribute belonging to a node that is observed by a + /// [MutationObserver]. external String? get attributeName; + + /// The [MutationRecord] read-only property **`attributeNamespace`** is the + /// namespace of the mutated attribute in the [MutationRecord] observed by a + /// [MutationObserver]. external String? get attributeNamespace; + + /// The [MutationRecord] read-only property **`oldValue`** contains the + /// character data or attribute value of an observed node before it was + /// changed. external String? get oldValue; } @@ -843,28 +1023,200 @@ extension type Node._(JSObject _) implements EventTarget, JSObject { /// Unlike [Node.cloneNode] the return value preserves the `EventListener` /// objects associated with it. external Node removeChild(Node child); + + /// The read-only **`nodeType`** property of a [Node] interface is an integer + /// that identifies what the node is. It distinguishes different kind of nodes + /// from each other, + /// such as [Element], [Text] and [Comment]. external int get nodeType; + + /// The read-only **`nodeName`** property of [Node] returns the name of the + /// current node as a string. external String get nodeName; + + /// The read-only **`baseURI`** property of the [Node] interface + /// returns the absolute base URL of the document containing the node. + /// + /// The base URL is used to resolve relative URLs when the browser needs to + /// obtain an absolute URL, for example when processing the HTML `img` + /// element's `src` attribute or the `xlink:href` or `href` attributes in + /// SVG. + /// + /// Although this property is read-only, its value is determined by an + /// algorithm each time + /// the property is accessed, and may change if the conditions changed. + /// + /// The base URL is determined as follows: + /// + /// 1. By default, the base URL is the location of the document (as determined + /// by [window.location]). + /// 2. If it is an HTML Document and there is a `Base` element in the + /// document, + /// the `href` value of the _first_ `Base` element with such an attribute is + /// used instead. external String get baseURI; + + /// The read-only **`isConnected`** property of the [Node] interface + /// returns a boolean indicating whether the node is connected + /// (directly or indirectly) to a [Document] object. external bool get isConnected; + + /// The read-only **`ownerDocument`** property of the [Node] interface + /// returns the top-level document object of the node. external Document? get ownerDocument; + + /// The read-only **`parentNode`** property of the [Node] interface + /// returns the parent of the specified node in the DOM tree. + /// + /// `Document` and `DocumentFragment` + /// [nodes](https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType) + /// can never have a parent, so + /// `parentNode` will always return `null`. + /// It also returns `null` if the node has just been created + /// and is not yet attached to the tree. external Node? get parentNode; + + /// The read-only **`parentElement`** property of [Node] interface + /// returns the DOM node's parent [Element], or `null` if the node either has + /// no + /// parent, or its parent isn't a DOM [Element]. external Element? get parentElement; + + /// The read-only **`childNodes`** property of the [Node] interface returns a + /// live + /// [NodeList] of child [Node] of the given element where + /// the first child node is assigned index `0`. Child nodes include elements, + /// text and + /// comments. + /// + /// > **Note:** The [NodeList] being live means that its content is changed + /// > each time + /// > new children are added or removed. + /// > + /// > Browsers insert text nodes into a document to represent whitespace in + /// > the source markup. + /// > Therefore a node obtained, for example, using `Node.childNodes[0]` + /// > may refer to a whitespace text node rather than the actual element the + /// > author intended to get. + /// > + /// > See + /// > [Whitespace in the DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace) + /// > for more information. + /// + /// The items in the collection of nodes are objects, not strings. To get data + /// from node + /// objects, use their properties. For example, to get the name of the first + /// childNode, you can use `elementNodeReference.childNodes[0].nodeName`. + /// + /// The [document] object itself has two children: the Doctype declaration and + /// the + /// root element, typically referred to as `documentElement`. In HTML + /// documents the latter is the `html` element. + /// + /// It is important to keep in mind that `childNodes` includes _all_ child + /// nodes, + /// including non-element nodes like text and comment. + /// To get a collection containing only elements, use [Element.children] + /// instead. external NodeList get childNodes; + + /// The read-only **`firstChild`** property of the [Node] interface + /// returns the node's first child in the tree, + /// or `null` if the node has no children. + /// + /// If the node is a [Document], + /// this property returns the first node in the list of its direct children. + /// + /// > **Note:** This property returns any type of node that is the first child + /// > of this one. + /// > It may be a [Text] or a [Comment] node. + /// > If you want to get the first [Element] that is a child of another + /// > element, + /// > consider using [Element.firstElementChild]. external Node? get firstChild; + + /// The read-only **`lastChild`** property of the [Node] interface + /// returns the last child of the node, or `null` if there are no child nodes. + /// + /// > **Note:** This property returns any type of node that is the last child + /// > of this one. + /// > It may be a [Text] or a [Comment] node. + /// > If you want to get the last [Element] that is a child of another + /// > element, + /// > consider using [Element.lastElementChild]. external Node? get lastChild; + + /// The read-only **`previousSibling`** property of the [Node] interface + /// returns the node immediately preceding the specified one in its parent's + /// [Node.childNodes] list, + /// or `null` if the specified node is the first in that list. + /// + /// > **Note:** Browsers insert text nodes into a document to represent + /// > whitespace in the source markup. + /// > Therefore a node obtained, for example, using + /// > [`Node.firstChild`](https://developer.mozilla.org/en-US/docs/Web/API/Node/firstChild) + /// > or `Node.previousSibling` + /// > may refer to a whitespace text node rather than the actual element the + /// > author intended to get. + /// > + /// > See + /// > [Whitespace in the DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace) + /// > for more information. + /// > + /// > You can use + /// > [`previousElementSibling`](https://developer.mozilla.org/en-US/docs/Web/API/Element/previousElementSibling) + /// > to get the previous element node (skipping text nodes and any other + /// > non-element nodes). + /// > + /// > To navigate the opposite way through the child nodes list use + /// > [Node.nextSibling](https://developer.mozilla.org/en-US/docs/Web/API/Node/nextSibling). external Node? get previousSibling; + + /// The read-only **`nextSibling`** property of the [Node] interface + /// returns the node immediately following the specified one in their + /// parent's [Node.childNodes], or returns `null` + /// if the specified node is the last child in the parent element. + /// + /// > **Note:** Browsers insert [Text] nodes into a document to represent + /// > whitespace in the source markup. + /// > Therefore a node obtained, for example, using + /// > [`Node.firstChild`](https://developer.mozilla.org/en-US/docs/Web/API/Node/firstChild) + /// > or + /// > [`Node.previousSibling`](https://developer.mozilla.org/en-US/docs/Web/API/Node/previousSibling) + /// > may refer to a whitespace text node rather than the actual element the + /// > author + /// > intended to get. + /// > + /// > The article + /// > [Whitespace in the DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace) + /// > contains more information about this behavior. + /// > + /// > You can use [Element.nextElementSibling] to obtain the next element + /// > skipping any whitespace nodes, other between-element text, or comments. + /// > + /// > To navigate the opposite way through the child nodes list use + /// > [Node.previousSibling](https://developer.mozilla.org/en-US/docs/Web/API/Node/previousSibling). external Node? get nextSibling; - external set nodeValue(String? value); + + /// The **`nodeValue`** property of the [Node] interface returns or sets the + /// value of the current node. external String? get nodeValue; - external set textContent(String? value); + external set nodeValue(String? value); + + /// The **`textContent`** property of the [Node] + /// interface represents the text content of the node and its descendants. + /// + /// > **Note:** `textContent` and [HTMLElement.innerText] are easily confused, + /// > but the two properties are + /// > [different in important ways](#differences_from_innertext). external String? get textContent; + external set textContent(String? value); } extension type GetRootNodeOptions._(JSObject _) implements JSObject { external factory GetRootNodeOptions({bool composed}); - external set composed(bool value); external bool get composed; + external set composed(bool value); } @JS() external Document get document; @@ -1372,272 +1724,652 @@ extension type Document._(JSObject _) implements Node, JSObject { int type, XPathResult? result, ]); + + /// **`Document.rootElement`** returns the [Element] + /// that is the root element of the [document] if it is an + /// element, otherwise `null`. It is deprecated in favor of + /// [Document.documentElement], which returns the root element for all + /// documents. external SVGSVGElement? get rootElement; + + /// The **`scrollingElement`** read-only property of the + /// [Document] interface returns a reference to the [Element] that + /// scrolls the document. In standards mode, this is the root element of the + /// document, [document.documentElement]. + /// + /// When in quirks mode, the `scrollingElement` attribute returns the HTML + /// `body` element if it exists and is + /// [potentially scrollable](https://drafts.csswg.org/cssom-view/#potentially-scrollable), + /// otherwise it returns null. external Element? get scrollingElement; + + /// The **`Document.implementation`** property returns a + /// [DOMImplementation] object associated with the current document. external DOMImplementation get implementation; + + /// The **`URL`** read-only property of the [Document] + /// interface returns the document location as a string. external String get URL; + + /// The **`documentURI`** read-only property of the + /// [Document] interface returns the document location as a string. external String get documentURI; + + /// The **`Document.compatMode`** read-only property indicates + /// whether the document is rendered in + /// [Quirks mode](https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode) + /// or + /// Standards mode. external String get compatMode; + + /// The **`Document.characterSet`** + /// read-only property returns the + /// [character encoding](https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding) + /// of the + /// document that it's currently rendered with. + /// + /// > **Note:** A "character set" and a "character encoding" are related, but + /// > different. Despite the + /// > name of this property, it returns the _encoding_. + /// + /// Users can override the developer-specified encoding inside the + /// [Content-Type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type) + /// header or inline + /// like ``, such as with Firefox's View → Text + /// Encoding menu. This override is provided to fix incorrect + /// developer-specified + /// encodings that result in + /// [garbled text](https://en.wikipedia.org/wiki/Mojibake). + /// + /// > **Note:** The properties `document.charset` and `document.inputEncoding` + /// > are legacy aliases for `document.characterSet`. Do not use them any + /// > more. external String get characterSet; external String get charset; external String get inputEncoding; + + /// The **`Document.contentType`** read-only property returns the + /// MIME type that the document is being rendered as. This may come from HTTP + /// headers or + /// other sources of MIME information, and might be affected by automatic type + /// conversions + /// performed by either the browser or extensions. + /// + /// > **Note:** This property is unaffected by `meta` + /// > elements. external String get contentType; + + /// Returns the Document Type Declaration (DTD) associated with current + /// document. The + /// returned object implements the [DocumentType] interface. Use + /// [DOMImplementation.createDocumentType] to create a + /// `DocumentType`. + /// + /// - `doctype` is a read-only property. external DocumentType? get doctype; + + /// **`Document.documentElement`** returns the + /// [Element] that is the root element of the [document] (for + /// example, the `html` element for HTML documents). external Element? get documentElement; + + /// The **`Document.location`** read-only property returns a + /// [Location] object, which contains information about the URL of the + /// document + /// and provides methods for changing that URL and loading another URL. + /// + /// Though `Document.location` is a _read-only_ `Location` + /// object, you can also assign a string to it. This means that you can + /// work with document.location as if it were a string in most cases: + /// `document.location = 'http://www.example.com'` is a synonym of + /// `document.location.href = 'http://www.example.com'`. If you assign another + /// string to it, browser will load the website you assigned. + /// + /// To retrieve just the URL as a string, the read-only [document.URL] + /// property can also be used. + /// + /// If the current document is not in a browsing context, the returned value + /// is + /// `null`. external Location? get location; - external set domain(String value); + + /// The **`domain`** property of the [Document] + /// interface gets/sets the domain portion of the of the current + /// document, as used by the + /// [same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy). external String get domain; + external set domain(String value); + + /// The **`Document.referrer`** property returns the + /// [URI](https://www.w3.org/Addressing/#background) of the page that linked + /// to + /// this page. external String get referrer; - external set cookie(String value); + + /// The [Document] property `cookie` lets you read and write + /// [cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies) + /// associated with the document. + /// It serves as a getter and setter for the actual values of the cookies. external String get cookie; + external set cookie(String value); + + /// The **`lastModified`** property of the [Document] + /// interface returns a string containing the date and local time on which the + /// current document + /// was last modified. external String get lastModified; + + /// The **`Document.readyState`** property describes the loading state of the + /// [document]. + /// When the value of this property changes, a + /// [Document.readystatechange_event] event fires on the [document] object. external DocumentReadyState get readyState; - external set title(String value); + + /// The **`document.title`** property gets or sets the current title of the + /// document. + /// When present, it defaults to the value of the + /// [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title). external String get title; - external set dir(String value); + external set title(String value); + + /// The **`Document.dir`** property is a string + /// representing the directionality of the text of the document, whether left + /// to right + /// (default) or right to left. Possible values are `'rtl'`, right to left, + /// and + /// `'ltr'`, left to right. external String get dir; - external set body(HTMLElement? value); + external set dir(String value); + + /// The **`Document.body`** property represents the + /// `body` or `frameset` node of the current document, or + /// `null` if no such element exists. external HTMLElement? get body; + external set body(HTMLElement? value); + + /// The **`head`** read-only property of + /// the [Document] interface returns the `head` element of + /// the current document. external HTMLHeadElement? get head; + + /// The **`images`** read-only property of + /// the [Document] interface returns a + /// [collection](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection) + /// of the + /// [images](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/Image) + /// in the current HTML document. external HTMLCollection get images; + + /// The **`embeds`** read-only property of the + /// [Document] interface returns a list of the embedded + /// `embed` elements within the current document. external HTMLCollection get embeds; + + /// The **`plugins`** read-only property of the + /// [Document] interface returns an [HTMLCollection] object + /// containing one or more [HTMLEmbedElement]s representing the + /// `embed` elements in the current document. + /// + /// > **Note:** For a list of installed plugins, use + /// > [Navigator.plugins](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/plugins) + /// > instead. external HTMLCollection get plugins; + + /// The **`links`** read-only property of the [Document] interface returns a + /// collection of all `area` elements and `a` elements in a document with a + /// value for the + /// [href](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#href) + /// attribute. external HTMLCollection get links; + + /// The **`forms`** read-only property of + /// the [Document] interface returns an [HTMLCollection] listing + /// all the `form` elements contained in the document. + /// + /// > **Note:** Similarly, you can access a list of a form's component user + /// > input elements using the [HTMLFormElement.elements] property. external HTMLCollection get forms; + + /// The **`scripts`** property of the [Document] + /// interface returns a list of the `script` + /// elements in the document. The returned object is an + /// [HTMLCollection]. external HTMLCollection get scripts; + + /// The **`Document.currentScript`** property returns the `script` element + /// whose script is currently being processed and [isn't a JavaScript + /// module](https://github.com/whatwg/html/issues/997). (For modules use + /// [`import.meta`](/en-US/docs/Web/JavaScript/Reference/Operators/import.meta) + /// instead.) + /// + /// It's important to note that this will not reference the `script` + /// element if the code in the script is being called as a callback or event + /// handler; it + /// will only reference the element while it's initially being processed. external HTMLOrSVGScriptElement? get currentScript; + + /// In browsers, **`document.defaultView`** returns the + /// [Window] object associated with , or `null` if none is available. + /// + /// This property is read-only. external Window? get defaultView; - external set designMode(String value); + + /// **`document.designMode`** controls whether the entire document + /// is editable. Valid values are `"on"` and `"off"`. According to the + /// specification, this property is meant to default to `"off"`. Firefox + /// follows + /// this standard. The earlier versions of Chrome and IE default to + /// `"inherit"`. + /// Starting in Chrome 43, the default is `"off"` and `"inherit"` is + /// no longer supported. In IE6-10, the value is capitalized. external String get designMode; + external set designMode(String value); + + /// The **`Document.hidden`** read-only property returns a Boolean + /// value indicating if the page is considered hidden or not. + /// + /// The [Document.visibilityState] property provides an alternative way to + /// determine whether the page is hidden. external bool get hidden; + + /// The **`Document.visibilityState`** + /// read-only property returns the visibility of the document. It can be used + /// to check whether the document is in the background or in a minimized + /// window, or is otherwise not visible to the user. + /// + /// When the value of this property changes, the + /// [Document.visibilitychange_event] event is sent to the [Document]. + /// + /// The [Document.hidden] property provides an alternative way to determine + /// whether the page is hidden. external DocumentVisibilityState get visibilityState; - external set onreadystatechange(EventHandler value); external EventHandler get onreadystatechange; - external set onvisibilitychange(EventHandler value); + external set onreadystatechange(EventHandler value); external EventHandler get onvisibilitychange; - external set fgColor(String value); + external set onvisibilitychange(EventHandler value); + + /// **`fgColor`** gets/sets the foreground color, or text color, of + /// the current document. external String get fgColor; - external set linkColor(String value); + external set fgColor(String value); + + /// The **`Document.linkColor`** property gets/sets the color of + /// links within the document. + /// + /// This property is deprecated. As an alternative, you can set the CSS + /// `color` property on either HTML anchor links (`a`) or on + /// pseudo-classes. Another alternative is + /// `document.body.link`, although this is [deprecated in HTML + /// 4.01](https://www.w3.org/TR/html401/struct/global.html#adef-link). external String get linkColor; - external set vlinkColor(String value); + external set linkColor(String value); + + /// The **`Document.vlinkColor`** property gets/sets the color of + /// links that the user has visited in the document. external String get vlinkColor; - external set alinkColor(String value); + external set vlinkColor(String value); + + /// Returns or sets the color of an active link in the document body. A link + /// is active + /// during the time between `mousedown` and `mouseup` events. external String get alinkColor; - external set bgColor(String value); + external set alinkColor(String value); + + /// The deprecated `bgColor` property gets or sets the background color of the + /// current document. external String get bgColor; + external set bgColor(String value); + + /// The **`anchors`** read-only property of the + /// [Document] interface returns a list of all of the anchors in the document. external HTMLCollection get anchors; + + /// The **`applets`** property of the [Document] returns an empty + /// [HTMLCollection]. This property is kept only for compatibility reasons; in + /// older versions of browsers, it returned a list of the applets within a + /// document. + /// + /// > **Note:** Support for the `<applet>` element has been removed by all + /// > browsers. Therefore, calling `document.applets` always + /// > returns an empty collection. external HTMLCollection get applets; + + /// The [Document] interface's read-only **`all`** property returns an + /// [HTMLAllCollection] rooted at the document node. + /// + /// Rather than using `document.all` to return an [HTMLAllCollection] of all + /// the document's elements in document order, you can use + /// [Document.querySelectorAll] to return a [NodeList] of all the document's + /// elements in document order: + /// + /// ```js + /// const allElements = document.querySelectorAll("*"); + /// ``` external HTMLAllCollection get all; + + /// The `timeline` readonly property of the [Document] interface represents + /// the default timeline of the current document. This timeline is a special + /// instance of [DocumentTimeline]. + /// + /// This timeline is unique to each `document` and persists for the lifetime + /// of the `document` including calls to [Document.open]. + /// + /// This timeline expresses the time in milliseconds since + /// [Performance.timeOrigin]. + /// Prior to the time origin, the timeline is inactive, and its + /// [AnimationTimeline.currentTime] is `null`. + /// + /// > **Note:** A document timeline that is associated with a non-active + /// > document (a [Document] not associated with a [Window], `iframe`, or + /// > `frame`) is also considered to be inactive. external DocumentTimeline get timeline; + + /// The **`fonts`** property of the [Document] interface returns the + /// [FontFaceSet] interface of the document. + /// + /// This feature is part of the + /// [CSS Font Loading API](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Font_Loading_API). external FontFaceSet get fonts; + + /// The **`styleSheets`** read-only property of the [Document] interface + /// returns a [StyleSheetList] of [CSSStyleSheet] objects, for stylesheets + /// explicitly linked into or embedded in a document. external StyleSheetList get styleSheets; - external set adoptedStyleSheets(JSArray<CSSStyleSheet> value); + + /// The **`adoptedStyleSheets`** property of the [Document] interface is used + /// for setting an array of constructed stylesheets to be used by the + /// document. + /// + /// > **Note:** A constructed stylesheet is a stylesheet created + /// > programmatically using the [`CSSStyleSheet()` + /// > constructor](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/CSSStyleSheet) + /// > (as compared to one created by a user-agent when importing a stylesheet + /// > from a script, imported using `style` and , or linked to via `link`). + /// + /// The same constructed stylesheets can also be shared with one or more + /// [ShadowRoot] instances using the + /// [`ShadowRoot.adoptedStyleSheets`](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/adoptedStyleSheets) + /// property. + /// Changing an adopted stylesheet will affect all the objects that adopt it. + /// + /// Stylesheets in the property are evaluated along with the document's other + /// stylesheets using the + /// [CSS cascade algorithm](https://developer.mozilla.org/en-US/docs/Web/CSS/Cascade). + /// Where the resolution of rules considers stylesheet order, + /// `adoptedStyleSheets` are assumed to be ordered after those in + /// [`Document.styleSheets`](https://developer.mozilla.org/en-US/docs/Web/API/Document/styleSheets). + /// + /// Only stylesheets created using the [`CSSStyleSheet()` + /// constructor](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/CSSStyleSheet) + /// within the context of the current [Document] may be adopted. external JSArray<CSSStyleSheet> get adoptedStyleSheets; + external set adoptedStyleSheets(JSArray<CSSStyleSheet> value); + + /// The **`activeElement`** read-only property + /// of the [Document] interface returns the [Element] within the DOM that + /// currently has focus. + /// + /// Often `activeElement` will return a [HTMLInputElement] or + /// [HTMLTextAreaElement] object if it has the text selection at the time. If + /// so, you can get more detail by using the object's `selectionStart` and + /// `selectionEnd` properties. + /// Other times the focused element might be a `select` element (menu) or + /// an `input` element. + /// + /// Typically a user can press the tab key to move the focus around the page + /// among + /// focusable elements, and use the space bar to activate one (that is, to + /// press a button or + /// toggle a radio button). Which elements are focusable varies depending on + /// the platform + /// and the browser's current configuration. For example, on macOS systems, + /// elements that + /// aren't text input elements are not typically focusable by default. + /// + /// > **Note:** Focus (which element is receiving user input events) is not + /// > the same thing as selection (the currently highlighted part of the + /// > document). You can + /// > get the current selection using [window.getSelection]. external Element? get activeElement; + + /// The read-only **`children`** property returns a live [HTMLCollection] + /// which contains all of the child [Element] of the document upon which it + /// was called. + /// + /// For HTML documents, this is usually only the root `<html>` element. + /// + /// See [Element.children] for child elements of specific HTML elements within + /// the document. external HTMLCollection get children; + + /// The **`Document.firstElementChild`** read-only property + /// returns the document's first child [Element], or `null` if there + /// are no child elements. + /// + /// For HTML documents, this is usually the only child, the root `<html>` + /// element. + /// + /// See [Element.firstElementChild] for the first child element of specific + /// elements within a document. external Element? get firstElementChild; + + /// The **`Document.lastElementChild`** read-only property + /// returns the document's last child [Element], or `null` if there + /// are no child elements. + /// + /// For HTML documents, this is usually the only child, the root `<html>` + /// element. + /// + /// See [Element.lastElementChild] for the last child element of specific + /// elements within a document. external Element? get lastElementChild; + + /// The **`Document.childElementCount`** read-only property + /// returns the number of child elements of the document. + /// + /// To get the number of children of a specific element, see + /// [Element.childElementCount]. external int get childElementCount; - external set onanimationstart(EventHandler value); external EventHandler get onanimationstart; - external set onanimationiteration(EventHandler value); + external set onanimationstart(EventHandler value); external EventHandler get onanimationiteration; - external set onanimationend(EventHandler value); + external set onanimationiteration(EventHandler value); external EventHandler get onanimationend; - external set onanimationcancel(EventHandler value); + external set onanimationend(EventHandler value); external EventHandler get onanimationcancel; - external set ontransitionrun(EventHandler value); + external set onanimationcancel(EventHandler value); external EventHandler get ontransitionrun; - external set ontransitionstart(EventHandler value); + external set ontransitionrun(EventHandler value); external EventHandler get ontransitionstart; - external set ontransitionend(EventHandler value); + external set ontransitionstart(EventHandler value); external EventHandler get ontransitionend; - external set ontransitioncancel(EventHandler value); + external set ontransitionend(EventHandler value); external EventHandler get ontransitioncancel; - external set onabort(EventHandler value); + external set ontransitioncancel(EventHandler value); external EventHandler get onabort; - external set onauxclick(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onauxclick; - external set onbeforeinput(EventHandler value); + external set onauxclick(EventHandler value); external EventHandler get onbeforeinput; - external set onbeforematch(EventHandler value); + external set onbeforeinput(EventHandler value); external EventHandler get onbeforematch; - external set onbeforetoggle(EventHandler value); + external set onbeforematch(EventHandler value); external EventHandler get onbeforetoggle; - external set onblur(EventHandler value); + external set onbeforetoggle(EventHandler value); external EventHandler get onblur; - external set oncancel(EventHandler value); + external set onblur(EventHandler value); external EventHandler get oncancel; - external set oncanplay(EventHandler value); + external set oncancel(EventHandler value); external EventHandler get oncanplay; - external set oncanplaythrough(EventHandler value); + external set oncanplay(EventHandler value); external EventHandler get oncanplaythrough; - external set onchange(EventHandler value); + external set oncanplaythrough(EventHandler value); external EventHandler get onchange; - external set onclick(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onclick; - external set onclose(EventHandler value); + external set onclick(EventHandler value); external EventHandler get onclose; - external set oncontextlost(EventHandler value); + external set onclose(EventHandler value); external EventHandler get oncontextlost; - external set oncontextmenu(EventHandler value); + external set oncontextlost(EventHandler value); external EventHandler get oncontextmenu; - external set oncontextrestored(EventHandler value); + external set oncontextmenu(EventHandler value); external EventHandler get oncontextrestored; - external set oncopy(EventHandler value); + external set oncontextrestored(EventHandler value); external EventHandler get oncopy; - external set oncuechange(EventHandler value); + external set oncopy(EventHandler value); external EventHandler get oncuechange; - external set oncut(EventHandler value); + external set oncuechange(EventHandler value); external EventHandler get oncut; - external set ondblclick(EventHandler value); + external set oncut(EventHandler value); external EventHandler get ondblclick; - external set ondrag(EventHandler value); + external set ondblclick(EventHandler value); external EventHandler get ondrag; - external set ondragend(EventHandler value); + external set ondrag(EventHandler value); external EventHandler get ondragend; - external set ondragenter(EventHandler value); + external set ondragend(EventHandler value); external EventHandler get ondragenter; - external set ondragleave(EventHandler value); + external set ondragenter(EventHandler value); external EventHandler get ondragleave; - external set ondragover(EventHandler value); + external set ondragleave(EventHandler value); external EventHandler get ondragover; - external set ondragstart(EventHandler value); + external set ondragover(EventHandler value); external EventHandler get ondragstart; - external set ondrop(EventHandler value); + external set ondragstart(EventHandler value); external EventHandler get ondrop; - external set ondurationchange(EventHandler value); + external set ondrop(EventHandler value); external EventHandler get ondurationchange; - external set onemptied(EventHandler value); + external set ondurationchange(EventHandler value); external EventHandler get onemptied; - external set onended(EventHandler value); + external set onemptied(EventHandler value); external EventHandler get onended; - external set onerror(OnErrorEventHandler value); + external set onended(EventHandler value); external OnErrorEventHandler get onerror; - external set onfocus(EventHandler value); + external set onerror(OnErrorEventHandler value); external EventHandler get onfocus; - external set onformdata(EventHandler value); + external set onfocus(EventHandler value); external EventHandler get onformdata; - external set oninput(EventHandler value); + external set onformdata(EventHandler value); external EventHandler get oninput; - external set oninvalid(EventHandler value); + external set oninput(EventHandler value); external EventHandler get oninvalid; - external set onkeydown(EventHandler value); + external set oninvalid(EventHandler value); external EventHandler get onkeydown; - external set onkeypress(EventHandler value); + external set onkeydown(EventHandler value); external EventHandler get onkeypress; - external set onkeyup(EventHandler value); + external set onkeypress(EventHandler value); external EventHandler get onkeyup; - external set onload(EventHandler value); + external set onkeyup(EventHandler value); external EventHandler get onload; - external set onloadeddata(EventHandler value); + external set onload(EventHandler value); external EventHandler get onloadeddata; - external set onloadedmetadata(EventHandler value); + external set onloadeddata(EventHandler value); external EventHandler get onloadedmetadata; - external set onloadstart(EventHandler value); + external set onloadedmetadata(EventHandler value); external EventHandler get onloadstart; - external set onmousedown(EventHandler value); + external set onloadstart(EventHandler value); external EventHandler get onmousedown; - external set onmouseenter(EventHandler value); + external set onmousedown(EventHandler value); external EventHandler get onmouseenter; - external set onmouseleave(EventHandler value); + external set onmouseenter(EventHandler value); external EventHandler get onmouseleave; - external set onmousemove(EventHandler value); + external set onmouseleave(EventHandler value); external EventHandler get onmousemove; - external set onmouseout(EventHandler value); + external set onmousemove(EventHandler value); external EventHandler get onmouseout; - external set onmouseover(EventHandler value); + external set onmouseout(EventHandler value); external EventHandler get onmouseover; - external set onmouseup(EventHandler value); + external set onmouseover(EventHandler value); external EventHandler get onmouseup; - external set onpaste(EventHandler value); + external set onmouseup(EventHandler value); external EventHandler get onpaste; - external set onpause(EventHandler value); + external set onpaste(EventHandler value); external EventHandler get onpause; - external set onplay(EventHandler value); + external set onpause(EventHandler value); external EventHandler get onplay; - external set onplaying(EventHandler value); + external set onplay(EventHandler value); external EventHandler get onplaying; - external set onprogress(EventHandler value); + external set onplaying(EventHandler value); external EventHandler get onprogress; - external set onratechange(EventHandler value); + external set onprogress(EventHandler value); external EventHandler get onratechange; - external set onreset(EventHandler value); + external set onratechange(EventHandler value); external EventHandler get onreset; - external set onresize(EventHandler value); + external set onreset(EventHandler value); external EventHandler get onresize; - external set onscroll(EventHandler value); + external set onresize(EventHandler value); external EventHandler get onscroll; - external set onscrollend(EventHandler value); + external set onscroll(EventHandler value); external EventHandler get onscrollend; - external set onsecuritypolicyviolation(EventHandler value); + external set onscrollend(EventHandler value); external EventHandler get onsecuritypolicyviolation; - external set onseeked(EventHandler value); + external set onsecuritypolicyviolation(EventHandler value); external EventHandler get onseeked; - external set onseeking(EventHandler value); + external set onseeked(EventHandler value); external EventHandler get onseeking; - external set onselect(EventHandler value); + external set onseeking(EventHandler value); external EventHandler get onselect; - external set onslotchange(EventHandler value); + external set onselect(EventHandler value); external EventHandler get onslotchange; - external set onstalled(EventHandler value); + external set onslotchange(EventHandler value); external EventHandler get onstalled; - external set onsubmit(EventHandler value); + external set onstalled(EventHandler value); external EventHandler get onsubmit; - external set onsuspend(EventHandler value); + external set onsubmit(EventHandler value); external EventHandler get onsuspend; - external set ontimeupdate(EventHandler value); + external set onsuspend(EventHandler value); external EventHandler get ontimeupdate; - external set ontoggle(EventHandler value); + external set ontimeupdate(EventHandler value); external EventHandler get ontoggle; - external set onvolumechange(EventHandler value); + external set ontoggle(EventHandler value); external EventHandler get onvolumechange; - external set onwaiting(EventHandler value); + external set onvolumechange(EventHandler value); external EventHandler get onwaiting; - external set onwebkitanimationend(EventHandler value); + external set onwaiting(EventHandler value); external EventHandler get onwebkitanimationend; - external set onwebkitanimationiteration(EventHandler value); + external set onwebkitanimationend(EventHandler value); external EventHandler get onwebkitanimationiteration; - external set onwebkitanimationstart(EventHandler value); + external set onwebkitanimationiteration(EventHandler value); external EventHandler get onwebkitanimationstart; - external set onwebkittransitionend(EventHandler value); + external set onwebkitanimationstart(EventHandler value); external EventHandler get onwebkittransitionend; - external set onwheel(EventHandler value); + external set onwebkittransitionend(EventHandler value); external EventHandler get onwheel; - external set onpointerover(EventHandler value); + external set onwheel(EventHandler value); external EventHandler get onpointerover; - external set onpointerenter(EventHandler value); + external set onpointerover(EventHandler value); external EventHandler get onpointerenter; - external set onpointerdown(EventHandler value); + external set onpointerenter(EventHandler value); external EventHandler get onpointerdown; - external set onpointermove(EventHandler value); + external set onpointerdown(EventHandler value); external EventHandler get onpointermove; - external set onpointerrawupdate(EventHandler value); + external set onpointermove(EventHandler value); external EventHandler get onpointerrawupdate; - external set onpointerup(EventHandler value); + external set onpointerrawupdate(EventHandler value); external EventHandler get onpointerup; - external set onpointercancel(EventHandler value); + external set onpointerup(EventHandler value); external EventHandler get onpointercancel; - external set onpointerout(EventHandler value); + external set onpointercancel(EventHandler value); external EventHandler get onpointerout; - external set onpointerleave(EventHandler value); + external set onpointerout(EventHandler value); external EventHandler get onpointerleave; - external set ongotpointercapture(EventHandler value); + external set onpointerleave(EventHandler value); external EventHandler get ongotpointercapture; - external set onlostpointercapture(EventHandler value); + external set ongotpointercapture(EventHandler value); external EventHandler get onlostpointercapture; - external set onselectstart(EventHandler value); + external set onlostpointercapture(EventHandler value); external EventHandler get onselectstart; - external set onselectionchange(EventHandler value); + external set onselectstart(EventHandler value); external EventHandler get onselectionchange; - external set ontouchstart(EventHandler value); + external set onselectionchange(EventHandler value); external EventHandler get ontouchstart; - external set ontouchend(EventHandler value); + external set ontouchstart(EventHandler value); external EventHandler get ontouchend; - external set ontouchmove(EventHandler value); + external set ontouchend(EventHandler value); external EventHandler get ontouchmove; - external set ontouchcancel(EventHandler value); + external set ontouchmove(EventHandler value); external EventHandler get ontouchcancel; + external set ontouchcancel(EventHandler value); } /// The **XMLDocument** interface represents an XML document. It inherits from @@ -1653,10 +2385,10 @@ extension type XMLDocument._(JSObject _) implements Document, JSObject {} extension type ElementCreationOptions._(JSObject _) implements JSObject { external factory ElementCreationOptions({String is_}); - @JS('is') - external set is_(String value); @JS('is') external String get is_; + @JS('is') + external set is_(String value); } /// The **`DOMImplementation`** interface represents an object providing methods @@ -1730,8 +2462,37 @@ extension type DocumentType._(JSObject _) implements Node, JSObject { /// The **`DocumentType.remove()`** method removes a document's `doctype`. external void remove(); + + /// The read-only **`name`** property of the [DocumentType] returns the type + /// of the document. + /// + /// For synthetic `DocumentType`, this property reflects the value given in + /// parameter to [DOMImplementation.createDocumentType]. + /// + /// For HTML documents, browsers always set it up to `html`, whatever the + /// actual `DOCTYPE` in the source code is. external String get name; + + /// The read-only **`publicId`** property of the [DocumentType] returns a + /// formal identifier of the document. + /// + /// For synthetic `DocumentType`, this property reflects the value given in + /// parameter to [DOMImplementation.createDocumentType]. + /// + /// For HTML documents, browsers always set it up to `html`, whatever the + /// actual `DOCTYPE` in the source code is. For SVG documents, for example, it + /// can be `"-//W3C//DTD SVG 1.1//EN"`. external String get publicId; + + /// The read-only **`systemId`** property of the [DocumentType] returns the + /// URL of the associated DTD. + /// + /// For synthetic `DocumentType`, this property reflects the value given in + /// parameter to [DOMImplementation.createDocumentType]. + /// + /// For HTML documents, browsers always set it up to `html`, whatever the + /// actual `DOCTYPE` in the source code is. For SVG documents, for example, it + /// can be `"http://www.w3.org/2000/svg"`. external String get systemId; } @@ -1811,9 +2572,27 @@ extension type DocumentFragment._(JSObject _) implements Node, JSObject { /// If the selectors specified in parameter are invalid a [DOMException] with /// a `SYNTAX_ERR` value is raised. external NodeList querySelectorAll(String selectors); + + /// The read-only **`children`** property returns a live [HTMLCollection] + /// which contains all of the child [Element] of the document fragment upon + /// which it was called. external HTMLCollection get children; + + /// The **`DocumentFragment.firstElementChild`** read-only property + /// returns the document fragment's first child [Element], or `null` if there + /// are no child elements. external Element? get firstElementChild; + + /// The **`DocumentFragment.lastElementChild`** read-only property + /// returns the document fragment's last child [Element], or `null` if there + /// are no child elements. external Element? get lastElementChild; + + /// The **`DocumentFragment.childElementCount`** read-only property + /// returns the number of child elements of a `DocumentFragment`. + /// + /// To get the number of children of a specific element, see + /// [Element.childElementCount]. external int get childElementCount; } @@ -1839,18 +2618,105 @@ extension type ShadowRoot._(JSObject _) implements DocumentFragment, JSObject { /// and /// [Web Animations](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). external JSArray<Animation> getAnimations(); + + /// The **`mode`** read-only property of the [ShadowRoot] + /// specifies its mode — either `open` or `closed`. This defines + /// whether or not the shadow root's internal features are accessible from + /// JavaScript. + /// + /// When the `mode` of a shadow root is "`closed`", the shadow root's + /// implementation internals are inaccessible and unchangeable from + /// JavaScript—in the same + /// way the implementation internals of, for example, the `video` element + /// are inaccessible and unchangeable from JavaScript. external ShadowRootMode get mode; + + /// The **`delegatesFocus`** read-only property of the [ShadowRoot] interface + /// returns `true` if the shadow root delegates focus, and `false` otherwise. + /// + /// If `true`, when a non-focusable part of the shadow DOM is clicked, or + /// `.focus()` is called on the host element, the first focusable part is + /// given focus, and the shadow host is given any available `:focus` styling. + /// + /// Focus is of particular importance for keyboard users (including those + /// using screen readers). `delegatesFocus` default behavior is to focus the + /// first focusable element — which may be undesirable if that element is not + /// meant to be part of the tabbing order (for example, an element with + /// `tabindex="-1"`), or if a more 'important' focusable element should + /// receive initial focus (for instance, the first text field rather than the + /// 'close' button which precedes it). In such cases, the `autofocus` + /// attribute can be specified on the element which should receive initial + /// focus. Use the `autofocus` attribute with caution as it can introduce + /// accessibility issues, such as bypassing important content which may go + /// unnoticed due to focus being set to an element later in the DOM order. + /// + /// The property value is set using the `delegatesFocus` property of the + /// object passed to [Element.attachShadow]). external bool get delegatesFocus; + + /// The read-only **`slotAssignment`** property of the [ShadowRoot] interface + /// returns the _slot assignment mode_ for the shadow DOM tree. Nodes are + /// either automatically assigned (`named`) or manually assigned (`manual`). + /// The value of this property defined using the `slotAssignment` option when + /// calling [Element.attachShadow]. external SlotAssignmentMode get slotAssignment; + + /// The **`clonable`** read-only property of the [ShadowRoot] interface + /// returns `true` if the shadow root is clonable, and `false` otherwise. It + /// always returns `true` for shadow roots created via declarative shadow DOM. + /// It can be set to `true` using the `clonable` option of the + /// [Element.attachShadow] method. external bool get clonable; + + /// The **`host`** read-only property of + /// the [ShadowRoot] returns a reference to the DOM element the + /// `ShadowRoot` is attached to. external Element get host; - external set onslotchange(EventHandler value); external EventHandler get onslotchange; - external set innerHTML(String value); + external set onslotchange(EventHandler value); + + /// The **`innerHTML`** property of the [ShadowRoot] + /// interface sets or returns a reference to the DOM tree inside the + /// `ShadowRoot`. external String get innerHTML; + external set innerHTML(String value); + + /// The **`styleSheets`** read-only property of the [ShadowRoot] interface + /// returns a [StyleSheetList] of [CSSStyleSheet] objects, for stylesheets + /// explicitly linked into or embedded in a shadow tree. external StyleSheetList get styleSheets; - external set adoptedStyleSheets(JSArray<CSSStyleSheet> value); + + /// The **`adoptedStyleSheets`** property of the [ShadowRoot] interface sets + /// an array of constructed stylesheets to be used by the shadow DOM subtree. + /// + /// > **Note:** A constructed stylesheet is a stylesheet created + /// > programmatically using the [`CSSStyleSheet()` + /// > constructor](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/CSSStyleSheet) + /// > (as compared to one created by a user-agent when importing a stylesheet + /// > from a script, imported using `style` and , or linked to via `link`). + /// + /// The same constructed stylesheet can be adopted by multiple [ShadowRoot] + /// instances, and by the parent document (using the + /// [Document.adoptedStyleSheets] property). + /// Changing an adopted stylesheet will affect all the adopting objects. + /// + /// Stylesheets in the `adoptedStyleSheets` property are considered along with + /// the shadow DOM's other stylesheets. + /// For the purpose of determining the final computed CSS of any element, they + /// are considered to have been added _after_ the other stylesheets in the + /// shadow DOM + /// ([`ShadowRoot.styleSheets`](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/styleSheets)). + /// + /// Only stylesheets created using the [`CSSStyleSheet()` + /// constructor](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/CSSStyleSheet), + /// and from within the same parent [Document] as the shadow root, may be + /// adopted. external JSArray<CSSStyleSheet> get adoptedStyleSheets; + external set adoptedStyleSheets(JSArray<CSSStyleSheet> value); + + /// The **`activeElement`** read-only property of the + /// [ShadowRoot] interface returns the element within the shadow tree that has + /// focus. external Element? get activeElement; } @@ -2360,39 +3226,340 @@ extension type Element._(JSObject _) implements Node, JSObject { /// > and /// > [Web Animations](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API). external JSArray<Animation> getAnimations([GetAnimationsOptions options]); - external set outerHTML(String value); + + /// The **`outerHTML`** attribute of the [Element] + /// DOM interface gets the serialized HTML fragment describing the element + /// including its + /// descendants. It can also be set to replace the element with nodes parsed + /// from the given + /// string. + /// + /// To only obtain the HTML representation of the contents of an element, or + /// to replace the + /// contents of an element, use the [Element.innerHTML] property + /// instead. external String get outerHTML; - external set scrollTop(num value); + external set outerHTML(String value); + + /// The **`Element.scrollTop`** property gets or sets the number of pixels + /// that an element's content is scrolled vertically. + /// + /// An element's `scrollTop` value is a measurement of the distance from the + /// element's top to its topmost _visible_ content. When an element's content + /// does not generate a vertical scrollbar, then its `scrollTop` value is `0`. + /// + /// `scrollTop` can be set to any integer value, with certain caveats: + /// + /// - If the element can't be scrolled (e.g. it has no overflow or if the + /// element has a property of "**non-scrollable**"), `scrollTop` is `0`. + /// - `scrollTop` doesn't respond to negative values; instead, it sets itself + /// back to `0`. + /// - If set to a value greater than the maximum available for the element, + /// `scrollTop` settles itself to the maximum value. + /// + /// When `scrollTop` is used on the root element (the `<html>` element), the + /// `scrollY` of the window is returned. + /// [This is a special case of `scrollTop`](https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#dom-element-scrolltop). + /// + /// > **Warning:** On systems using display scaling, `scrollTop` may give you + /// > a decimal value. external num get scrollTop; - external set scrollLeft(num value); + external set scrollTop(num value); + + /// The **`Element.scrollLeft`** property gets or sets the number + /// of pixels that an element's content is scrolled from its left edge. + /// + /// If the element's `direction` is `rtl` (right-to-left), then + /// `scrollLeft` is `0` when the scrollbar is at its rightmost + /// position (at the start of the scrolled content), and then increasingly + /// negative as you + /// scroll towards the end of the content. + /// + /// It can be specified as any integer value. However: + /// + /// - If the element can't be scrolled (e.g., it has no overflow), + /// `scrollLeft` + /// is set to `0`. + /// - If specified as a value less than `0` (greater than `0` for + /// right-to-left elements), `scrollLeft` is set to `0`. + /// - If specified as a value greater than the maximum that the content can be + /// scrolled, + /// `scrollLeft` is set to the maximum. + /// + /// > **Warning:** On systems using display scaling, `scrollLeft` may give you + /// > a decimal + /// > value. external num get scrollLeft; + external set scrollLeft(num value); + + /// The **`Element.scrollWidth`** read-only property is a + /// measurement of the width of an element's content, including content not + /// visible on the + /// screen due to overflow. + /// + /// The `scrollWidth` value is equal to the minimum width the element would + /// require in order to fit all the content in the viewport without using a + /// horizontal + /// scrollbar. The width is measured in the same way as [Element.clientWidth]: + /// it includes the element's padding, but not its border, margin or + /// vertical scrollbar (if present). It can also include the width of + /// pseudo-elements such + /// as or . If the element's content can fit + /// without a need for horizontal scrollbar, its `scrollWidth` is equal to + /// [Element.clientWidth] + /// + /// > **Note:** This property will round the value to an integer. If you need + /// > a fractional value, + /// > use [element.getBoundingClientRect]. external int get scrollWidth; + + /// The **`Element.scrollHeight`** read-only property is a + /// measurement of the height of an element's content, including content not + /// visible on the + /// screen due to overflow. + /// + /// ![The user's viewport is an element with four regions labeled padding-top, + /// border-top, border-bottom, padding-bottom. The scroll height goes from the + /// container's padding top to the end of the padding bottom, well beyond the + /// top and bottom of the viewport.](scrollheight.png) + /// + /// The `scrollHeight` value is equal to the minimum height the element would + /// require in order to fit all the content in the viewport without using a + /// vertical + /// scrollbar. The height is measured in the same way as + /// [Element.clientHeight]: + /// it includes the element's padding, but not its border, margin or + /// horizontal scrollbar (if present). It can also include the height of + /// pseudo-elements + /// such as or . If the element's content can + /// fit without a need for vertical scrollbar, its `scrollHeight` is equal to + /// [Element.clientHeight] + /// + /// > **Note:** This property will round the value to an integer. If you need + /// > a fractional value, use + /// > [Element.getBoundingClientRect]. external int get scrollHeight; + + /// The width of the top border of an element in pixels. It is a read-only, + /// integer + /// property of element. + /// + /// As it happens, all that lies between the two locations (`offsetTop` and + /// client area top) is the element's border. This is because the `offsetTop` + /// indicates the location of the top of the border (not the margin) while the + /// client area + /// starts immediately below the border, (client area includes padding.) + /// Therefore, the + /// **clientTop** value will always equal the integer portion of the + /// `.getComputedStyle()` value for "border-top-width". (Actually might be + /// Math.round(parseFloat()).) For example, if the computed "border-top-width" + /// is zero, + /// then **`clientTop`** is also zero. + /// + /// > **Note:** This property will round the value to an integer. If you + /// > need a fractional value, use [element.getBoundingClientRect]. external int get clientTop; + + /// The width of the left border of an element in pixels. It includes the + /// width of the + /// vertical scrollbar if the text direction of the element is right-to-left + /// and if there + /// is an overflow causing a left vertical scrollbar to be rendered. + /// `clientLeft` does not include the left margin or the left padding. + /// `clientLeft` is read-only. + /// + /// > **Note:** This property will round the value to an integer. If you + /// > need a fractional value, use [element.getBoundingClientRect]. + /// + /// > **Note:** When an element has + /// > `display: inline`, `clientLeft` returns `0` + /// > regardless of the element's border. external int get clientLeft; + + /// The **`Element.clientWidth`** property is zero for inline + /// elements and elements with no CSS; otherwise, it's the inner width of an + /// element in + /// pixels. It includes padding but excludes borders, margins, and vertical + /// scrollbars (if + /// present). + /// + /// When `clientWidth` is used on the root element (the + /// `<html>` element), (or on `<body>` if the document is + /// in quirks mode), the viewport's width (excluding any scrollbar) is + /// returned. + /// [This is a special case of `clientWidth`](https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#dom-element-clientwidth). + /// + /// > **Note:** This property will round the value to an integer. If you need + /// > a fractional value, use [element.getBoundingClientRect]. external int get clientWidth; + + /// The **`Element.clientHeight`** read-only property is zero for + /// elements with no CSS or inline layout boxes; otherwise, it's the inner + /// height of an + /// element in pixels. It includes padding but excludes borders, margins, and + /// horizontal + /// scrollbars (if present). + /// + /// `clientHeight` can be calculated as: CSS `height` + CSS + /// `padding` - height of horizontal scrollbar (if present). + /// + /// When `clientHeight` is used on the root element (the + /// `<html>` element), (or on `<body>` if the document is + /// in quirks mode), the viewport's height (excluding any scrollbar) is + /// returned. + /// [This is a special case of `clientHeight`](https://www.w3.org/TR/2016/WD-cssom-view-1-20160317/#dom-element-clientheight). + /// + /// > **Note:** This property will round the value to an integer. If you need + /// > a fractional value, use [element.getBoundingClientRect]. external int get clientHeight; + + /// The **`Element.namespaceURI`** read-only property returns the namespace + /// URI of the element, or `null` if the element is not in a namespace. external String? get namespaceURI; + + /// The **`Element.prefix`** read-only property returns the + /// namespace prefix of the specified element, or `null` if no prefix is + /// specified. external String? get prefix; + + /// The **`Element.localName`** read-only property returns the + /// local part of the qualified name of an element. external String get localName; + + /// The **`tagName`** read-only property + /// of the [Element] interface returns the tag name of the element on which + /// it's called. + /// + /// For example, if the element is an `img`, its + /// `tagName` property is `IMG` (for HTML documents; it may be cased + /// differently for XML/XHTML documents). Note: You can use the + /// [Element.localName] property + /// to access the Element's local name — which for the case in the example is + /// `img` (lowercase) . external String get tagName; - external set id(String value); + + /// The **`id`** property of the [Element] interface + /// represents the element's identifier, reflecting the + /// [**`id`**](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) + /// global attribute. + /// + /// If the `id` value is not the empty string, it must be unique in a + /// document. + /// + /// The `id` is often used with [Document.getElementById] to retrieve a + /// particular element. + /// Another common case is to use an element's + /// [ID as a selector](https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors) + /// when styling the document with + /// [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS). + /// + /// > **Note:** Identifiers are case-sensitive, but you should avoid creating + /// > IDs that differ only in the capitalization. external String get id; - external set className(String value); + external set id(String value); + + /// The **`className`** property of the + /// [Element] interface gets and sets the value of the + /// [`class` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class) + /// of the specified element. external String get className; + external set className(String value); + + /// The **`Element.classList`** is a read-only property that + /// returns a live [DOMTokenList] collection of the `class` + /// attributes of the element. This can then be used to manipulate the class + /// list. + /// + /// Using `classList` is a convenient alternative to accessing an element's + /// list + /// of classes as a space-delimited string via [element.className]. external DOMTokenList get classList; - external set slot(String value); + + /// The **`slot`** property of the [Element] interface + /// returns the name of the shadow DOM slot the element is inserted in. + /// + /// A slot is a placeholder inside a + /// [web component](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) + /// that users can fill with their own markup (see + /// [Using templates and slots](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots) + /// for more information). external String get slot; + external set slot(String value); + + /// The **`Element.attributes`** property returns a live collection + /// of all attribute nodes registered to the specified node. It is a + /// [NamedNodeMap], not an `Array`, so it has no `Array` + /// methods and the [Attr] nodes' indexes may differ among browsers. To be + /// more + /// specific, `attributes` is a key/value pair of strings that represents any + /// information regarding that attribute. external NamedNodeMap get attributes; + + /// The `Element.shadowRoot` read-only property + /// represents the shadow root hosted by the element. + /// + /// Use [Element.attachShadow] to add a shadow root to an existing element. external ShadowRoot? get shadowRoot; - external set innerHTML(String value); + + /// The [Element] property + /// **`innerHTML`** gets or sets the HTML or XML markup contained + /// within the element. + /// + /// To insert the HTML into the document rather than replace the contents of + /// an element, + /// use the method [Element.insertAdjacentHTML]. external String get innerHTML; + external set innerHTML(String value); + + /// The read-only **`children`** property returns a live [HTMLCollection] + /// which contains all of the child [Element] of the element upon which it was + /// called. + /// + /// `Element.children` includes only element nodes. To get all child nodes, + /// including non-element nodes like text and comment nodes, use + /// [Node.childNodes]. external HTMLCollection get children; + + /// The **`Element.firstElementChild`** read-only property + /// returns an element's first child [Element], or `null` if there + /// are no child elements. + /// + /// `Element.firstElementChild` includes only element nodes. + /// To get all child nodes, including non-element nodes like text and comment + /// nodes, use [Node.firstChild]. external Element? get firstElementChild; + + /// The **`Element.lastElementChild`** read-only property + /// returns an element's last child [Element], or `null` if there + /// are no child elements. + /// + /// `Element.lastElementChild` includes only element nodes. + /// To get all child nodes, including non-element nodes like text and comment + /// nodes, use [Node.lastChild]. external Element? get lastElementChild; + + /// The **`Element.childElementCount`** read-only property + /// returns the number of child elements of this element. external int get childElementCount; + + /// The **`Element.previousElementSibling`** + /// read-only property returns the [Element] immediately prior to the + /// specified + /// one in its parent's children list, or `null` if the specified element is + /// the first one in the list. external Element? get previousElementSibling; + + /// The **`Element.nextElementSibling`** read-only + /// property returns the element immediately following the specified one in + /// its parent's + /// children list, or `null` if the specified element is the last one in the + /// list. external Element? get nextElementSibling; + + /// The **`assignedSlot`** read-only + /// property of the [Element] interface returns an + /// [HTMLSlotElement] representing the `slot` element the + /// node is inserted in. external HTMLSlotElement? get assignedSlot; } extension type ShadowRootInit._(JSObject _) implements JSObject { @@ -2403,14 +3570,14 @@ extension type ShadowRootInit._(JSObject _) implements JSObject { bool clonable, }); - external set mode(ShadowRootMode value); external ShadowRootMode get mode; - external set delegatesFocus(bool value); + external set mode(ShadowRootMode value); external bool get delegatesFocus; - external set slotAssignment(SlotAssignmentMode value); + external set delegatesFocus(bool value); external SlotAssignmentMode get slotAssignment; - external set clonable(bool value); + external set slotAssignment(SlotAssignmentMode value); external bool get clonable; + external set clonable(bool value); } /// The **`NamedNodeMap`** interface represents a collection of [Attr] objects. @@ -2481,6 +3648,9 @@ extension type NamedNodeMap._(JSObject _) implements JSObject { String? namespace, String localName, ); + + /// The read-only **`length`** property of the [NamedNodeMap] interface + /// is the number of objects stored in the map. external int get length; } @@ -2518,13 +3688,82 @@ extension type NamedNodeMap._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Attr). extension type Attr._(JSObject _) implements Node, JSObject { + /// The read-only **`namespaceURI`** property of the [Attr] interface returns + /// the namespace URI of the attribute, + /// or `null` if the element is not in a namespace. + /// + /// The namespace URI is set at the [Attr] creation and cannot be changed. + /// An attribute with a namespace can be created using + /// [Element.setAttributeNS]. + /// + /// > **Note:** an attribute does not inherit its namespace from the element + /// > it is attached to. + /// > If an attribute is not explicitly given a namespace, it has no + /// > namespace. + /// + /// The browser does not handle or enforce namespace validation per se. It is + /// up to the JavaScript + /// application to do any necessary validation. Note, too, that the namespace + /// prefix, once it + /// is associated with a particular attribute node, cannot be changed. external String? get namespaceURI; + + /// The read-only **`prefix`** property of the [Attr] returns the namespace + /// prefix of the attribute, or `null` if no prefix is specified. + /// + /// The prefix is always in lower case, whatever case is used at the attribute + /// creation. + /// + /// > **Note:** Only XML supports namespaces. HTML does not. That means that + /// > the prefix of an attribute of an HTML element will always be `null`. + /// + /// Also, only the `xml` (for the `xml:lang` attribute), `xlink` (for the + /// `xlink:href`, `xlink:show`, `xlink:target` and `xlink:title` attributes) + /// and `xpath` namespaces are supported, and only on SVG and MathML elements. external String? get prefix; + + /// The read-only **`localName`** property of the [Attr] interface returns the + /// _local part_ of the _qualified name_ of an attribute, that is the name of + /// the attribute, stripped from any namespace in front of it. For example, if + /// the qualified name is `xml:lang`, the returned local name is `lang`, if + /// the element supports that namespace. + /// + /// The local name is always in lower case, whatever case at the attribute + /// creation. + /// + /// > **Note:** HTML only supports a fixed set of namespaces on SVG and MathML + /// > elements. These are `xml` (for the `xml:lang` attribute), `xlink` (for + /// > the `xlink:href`, `xlink:show`, `xlink:target` and `xlink:title` + /// > attributes) and `xpath`. + /// > + /// > That means that the local name of an attribute of an HTML element is + /// > always be equal to its qualified name: Colons are treated as regular + /// > characters. In XML, like in SVG or MathML, the colon denotes the end of + /// > the prefix and what is before is the namespace; the local name may be + /// > different from the qualified name. external String get localName; + + /// The read-only **`name`** property of the [Attr] interface returns the + /// _qualified name_ of an attribute, that is the name of the attribute, with + /// the namespace prefix, if any, in front of it. For example, if the local + /// name is `lang` and the namespace prefix is `xml`, the returned qualified + /// name is `xml:lang`. + /// + /// The qualified name is always in lower case, whatever case at the attribute + /// creation. external String get name; - external set value(String value); + + /// The **`value`** property of the [Attr] interface contains the value of the + /// attribute. external String get value; + external set value(String value); + + /// The read-only **`ownerElement`** property of the [Attr] interface returns + /// the [Element] the attribute belongs to. external Element? get ownerElement; + + /// The read-only **`specified`** property of the [Attr] interface always + /// returns `true`. external bool get specified; } @@ -2605,10 +3844,30 @@ extension type CharacterData._(JSObject _) implements Node, JSObject { /// The **`remove()`** method of the [CharacterData] removes the text /// contained in the node. external void remove(); - external set data(String value); + + /// The **`data`** property of the [CharacterData] interface represent the + /// value of the current object's data. external String get data; + external set data(String value); + + /// The read-only **`CharacterData.length`** property + /// returns the number of characters in the contained data, as a positive + /// integer. external int get length; + + /// The read-only **`previousElementSibling`** of the [CharacterData] + /// interface + /// returns the first [Element] before the current node in its parent's + /// children list, + /// or `null` if there is none. external Element? get previousElementSibling; + + /// The read-only **`nextElementSibling`** property of the [CharacterData] + /// interface + /// returns the first [Element] node following the specified one in its + /// parent's + /// children list, or `null` if the specified element is the last one in the + /// list. external Element? get nextElementSibling; } @@ -2678,7 +3937,20 @@ extension type Text._(JSObject _) implements CharacterData, JSObject { GeometryNode from, [ ConvertCoordinateOptions options, ]); + + /// The read-only **`wholeText`** property of the [Text] interface + /// returns the full text of all [Text] nodes logically adjacent to the node. + /// The text is concatenated in document order. + /// This allows specifying any text node and obtaining all adjacent text as a + /// single string. + /// + /// > **Note:** This is similar to call [Node.normalize] followed by reading + /// > the text value, + /// > but without modifying the tree. external String get wholeText; + + /// The read-only **`assignedSlot`** property of the [Text] interface + /// returns the [HTMLSlotElement] object associated with the element. external HTMLSlotElement? get assignedSlot; } @@ -2747,7 +4019,26 @@ extension type CDATASection._(JSObject _) implements Text, JSObject {} /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction). extension type ProcessingInstruction._(JSObject _) implements CharacterData, JSObject { + /// The read-only **`target`** property of the [ProcessingInstruction] + /// interface + /// represent the application to which the `ProcessingInstruction` is + /// targeted. + /// + /// For example: + /// + /// ```html + /// <?xml version="1.0"?> + /// ``` + /// + /// is a processing instruction whose `target` is `xml`. external String get target; + + /// The read-only **`sheet`** property of the [ProcessingInstruction] + /// interface + /// contains the stylesheet associated to the `ProcessingInstruction`. + /// + /// The `xml-stylesheet` processing instruction is used to associate a + /// stylesheet in an XML file. external CSSStyleSheet? get sheet; } @@ -2782,10 +4073,25 @@ extension type Comment._(JSObject _) implements CharacterData, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AbstractRange). extension type AbstractRange._(JSObject _) implements JSObject { + /// The read-only **`startContainer`** property of the [AbstractRange] + /// interface returns the start [Node] for the range. external Node get startContainer; + + /// The read-only **`startOffset`** property of the [AbstractRange] interface + /// returns the offset into the start node of the range's start position. external int get startOffset; + + /// The read-only **`endContainer`** property of the [AbstractRange] interface + /// returns the [Node] in which the end of the range is located. external Node get endContainer; + + /// The **`endOffset`** property of the [AbstractRange] interface returns the + /// offset into the end node of the range's end position. external int get endOffset; + + /// The read-only **`collapsed`** property of the [AbstractRange] interface + /// returns `true` if the range's start position and end position are the + /// same. external bool get collapsed; } extension type StaticRangeInit._(JSObject _) implements JSObject { @@ -2796,14 +4102,14 @@ extension type StaticRangeInit._(JSObject _) implements JSObject { required int endOffset, }); - external set startContainer(Node value); external Node get startContainer; - external set startOffset(int value); + external set startContainer(Node value); external int get startOffset; - external set endContainer(Node value); + external set startOffset(int value); external Node get endContainer; - external set endOffset(int value); + external set endContainer(Node value); external int get endOffset; + external set endOffset(int value); } /// The @@ -3073,6 +4379,25 @@ extension type Range._(JSObject _) implements AbstractRange, JSObject { /// The **`Range.intersectsNode()`** method returns a boolean /// indicating whether the given [Node] intersects the [Range]. external bool intersectsNode(Node node); + + /// The **`Range.commonAncestorContainer`** read-only property + /// returns the deepest — or furthest down the document tree — [Node] that + /// contains both + /// [boundary points](https://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position-h3) + /// of the [Range]. This means that if + /// [Range.startContainer] and [Range.endContainer] both refer to + /// the same node, this node is the **common ancestor container**. + /// + /// Since a `Range` need not be continuous, and may also partially select + /// nodes, + /// this is a convenient way to find a `Node` which encloses a + /// `Range`. + /// + /// This property is read-only. To change the ancestor container of a `Node`, + /// consider using the various methods available to set the start and end + /// positions of the + /// `Range`, such as [Range.setStart] and + /// [Range.setEnd]. external Node get commonAncestorContainer; } @@ -3121,10 +4446,42 @@ extension type NodeIterator._(JSObject _) implements JSObject { /// `INVALID`. Once this method had been called, calls to other methods on /// `NodeIterator` would raise the `INVALID_STATE_ERR` exception. external void detach(); + + /// The **`NodeIterator.root`** read-only property represents the + /// [Node] that is the root of what the [NodeIterator] + /// traverses. external Node get root; + + /// The **`NodeIterator.referenceNode`** read-only property returns the + /// [Node] to which the iterator is anchored; as new nodes are inserted, the + /// iterator remains anchored to the reference node as specified by this + /// property. external Node get referenceNode; + + /// The **`NodeIterator.pointerBeforeReferenceNode`** read-only + /// property returns a boolean flag that indicates whether the + /// `NodeFilter` is anchored before (if this value is `true`) or + /// after (if this value is `false`) the anchor node indicated by the + /// [NodeIterator.referenceNode] property. external bool get pointerBeforeReferenceNode; + + /// The **`NodeIterator.whatToShow`** read-only property represents + /// an `unsigned integer` representing a bitmask signifying what types of + /// nodes + /// should be returned by the [NodeIterator]. external int get whatToShow; + + /// The **`NodeIterator.filter`** read-only property returns a + /// `NodeFilter` object, that is an object which implements an + /// `acceptNode(node)` method, used to screen nodes. + /// + /// When creating the [NodeIterator], the filter object is passed in as the + /// third parameter, and the object method `acceptNode(node)` is + /// called on every single node to determine whether or not to accept it. This + /// function + /// should return the constant `NodeFilter.FILTER_ACCEPT` for cases when the + /// node should be accepted and `NodeFilter.FILTER_REJECT` for cases when the + /// node should be rejected. external NodeFilter? get filter; } @@ -3181,11 +4538,126 @@ extension type TreeWalker._(JSObject _) implements JSObject { /// the found node. If no such node exists, it returns `null` and the current /// node is not changed. external Node? nextNode(); + + /// The **`TreeWalker.root`** read-only property returns the node + /// that is the root of what the TreeWalker traverses. external Node get root; + + /// The **`TreeWalker.whatToShow`** read-only property returns a + /// bitmask that indicates the types of + /// [nodes](https://developer.mozilla.org/en-US/docs/Web/API/Node) to show. + /// Non-matching nodes are skipped, but their + /// children may be included, if relevant. The possible values are: + /// + /// <table class="no-markdown"> + /// <thead> + /// <tr> + /// <th>Constant</th> + /// <th>Numerical value</th> + /// <th>Description</th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td><code>NodeFilter.SHOW_ALL</code></td> + /// <td> + /// <code>4294967295</code> (that is the max value of <code>unsigned long</code>) + /// </td> + /// <td>Shows all nodes.</td> + /// </tr> + /// <tr> + /// <td> + /// <code>NodeFilter.SHOW_ATTRIBUTE</code> + /// </td> + /// <td><code>2</code></td> + /// <td> + /// Shows attribute [Attr] nodes. This is meaningful + /// only when creating a [TreeWalker] with an + /// [Attr] node as its root; in this case, it means + /// that the attribute node will appear in the first position of the + /// iteration or traversal. Since attributes are never children of other + /// nodes, they do not appear when traversing over the document tree. + /// </td> + /// </tr> + /// <tr> + /// <td> + /// <code>NodeFilter.SHOW_CDATA_SECTION</code> + /// </td> + /// <td><code>8</code></td> + /// <td>Shows [CDATASection] nodes.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_COMMENT</code></td> + /// <td><code>128</code></td> + /// <td>Shows [Comment] nodes.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_DOCUMENT</code></td> + /// <td><code>256</code></td> + /// <td>Shows [Document] nodes.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_DOCUMENT_FRAGMENT</code></td> + /// <td><code>1024</code></td> + /// <td>Shows [DocumentFragment] nodes.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_DOCUMENT_TYPE</code></td> + /// <td><code>512</code></td> + /// <td>Shows [DocumentType] nodes.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_ELEMENT</code></td> + /// <td><code>1</code></td> + /// <td>Shows [Element] nodes.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_ENTITY</code> </td> + /// <td><code>32</code></td> + /// <td>Legacy, no more used.</td> + /// </tr> + /// <tr> + /// <td> + /// <code>NodeFilter.SHOW_ENTITY_REFERENCE</code> + /// </td> + /// <td><code>16</code></td> + /// <td>Legacy, no more used.</td> + /// </tr> + /// <tr> + /// <td> + /// <code>NodeFilter.SHOW_NOTATION</code> + /// </td> + /// <td><code>2048</code></td> + /// <td>Legacy, no more used.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_PROCESSING_INSTRUCTION</code></td> + /// <td><code>64</code></td> + /// <td>Shows [ProcessingInstruction] nodes.</td> + /// </tr> + /// <tr> + /// <td><code>NodeFilter.SHOW_TEXT</code></td> + /// <td><code>4</code></td> + /// <td>Shows [Text] nodes.</td> + /// </tr> + /// </tbody> + /// </table> external int get whatToShow; + + /// The **`TreeWalker.filter`** read-only property returns a + /// `NodeFilter` that is the filtering object associated with the + /// [TreeWalker]. + /// + /// When creating the `TreeWalker`, the filter object is passed in as the + /// third + /// parameter, and its method `acceptNode()` is called on every + /// single node to determine whether or not to accept it. external NodeFilter? get filter; - external set currentNode(Node value); + + /// The **`TreeWalker.currentNode`** property represents the + /// [Node] which the [TreeWalker] is currently pointing at. external Node get currentNode; + external set currentNode(Node value); } /// The **`DOMTokenList`** interface represents a set of space-separated tokens. @@ -3245,9 +4717,17 @@ extension type DOMTokenList._(JSObject _) implements JSObject { /// supported tokens. /// This method is intended to support feature detection. external bool supports(String token); + + /// The read-only **`length`** property of the [DOMTokenList] interface is an + /// `integer` representing the number + /// of objects stored in the object. external int get length; - external set value(String value); + + /// The **`value`** property of the [DOMTokenList] + /// interface is a that returns the value of the list serialized as a + /// string, or clears and sets the list to the given value. external String get value; + external set value(String value); } /// The **`XPathResult`** interface represents the results generated by @@ -3285,12 +4765,44 @@ extension type XPathResult._(JSObject _) implements JSObject { /// correspond to the /// current document if it is mutated. external Node? snapshotItem(int index); + + /// The read-only **`resultType`** property of the + /// [XPathResult] interface represents the type of the result, as defined by + /// the type constants. external int get resultType; + + /// The read-only **`numberValue`** property of the + /// [XPathResult] interface returns the numeric value of a result with + /// [XPathResult.resultType] being `NUMBER_TYPE`. external num get numberValue; + + /// The read-only **`stringValue`** property of the + /// [XPathResult] interface returns the string value of a result with + /// [XPathResult.resultType] being `STRING_TYPE`. external String get stringValue; + + /// The read-only **`booleanValue`** property of the + /// [XPathResult] interface returns the boolean value of a result with + /// [XPathResult.resultType] being `BOOLEAN_TYPE`. external bool get booleanValue; + + /// The read-only **`singleNodeValue`** property of the + /// [XPathResult] interface returns a [Node] value or + /// `null` in case no node was matched of a result with + /// [XPathResult.resultType] being `ANY_UNORDERED_NODE_TYPE` or + /// `FIRST_ORDERED_NODE_TYPE`. external Node? get singleNodeValue; + + /// The read-only **`invalidIteratorState`** property of the + /// [XPathResult] interface signifies that the iterator has become invalid. It + /// is `true` if [XPathResult.resultType] is + /// `UNORDERED_NODE_ITERATOR_TYPE` or `ORDERED_NODE_ITERATOR_TYPE` and + /// the document has been modified since this result was returned. external bool get invalidIteratorState; + + /// The read-only **`snapshotLength`** property of the + /// [XPathResult] interface represents the number of nodes in the result + /// snapshot. external int get snapshotLength; } From 4d2bb646a1e3344b00ed3a0723080ddd8a6af736 Mon Sep 17 00:00:00 2001 From: Devon Carew <devoncarew@google.com> Date: Tue, 12 Mar 2024 14:05:52 -0700 Subject: [PATCH 2/4] generate docs for getters --- tool/generator/translator.dart | 200 ++++++++++++++++++++------------- 1 file changed, 121 insertions(+), 79 deletions(-) diff --git a/tool/generator/translator.dart b/tool/generator/translator.dart index 78f1d9b1..c143c490 100644 --- a/tool/generator/translator.dart +++ b/tool/generator/translator.dart @@ -526,7 +526,9 @@ class Translator { _interfacelikes[name]!.update(interfacelike); } else { _interfacelikes[name] = _PartialInterfacelike( - interfacelike, docProvider.interfaceFor(name)); + interfacelike, + docProvider.interfaceFor(name), + ); } } for (final interfacelike in [ @@ -775,72 +777,102 @@ class Translator { ); } - List<code.Method> _getterSetter( - {required String fieldName, - required code.Reference Function() getType, - required bool isStatic, - required bool readOnly}) { + List<code.Method> _getterSetter({ + required String fieldName, + required code.Reference Function() getType, + required bool isStatic, + required bool readOnly, + required MdnInterface? mdnInterface, + }) { final memberName = _MemberName(fieldName); final name = memberName.name; + final docs = mdnInterface?.propertyFor(name)?.formattedDocs ?? []; + return [ - if (!readOnly) - code.Method((b) => b + code.Method( + (b) => b ..annotations.addAll(_jsOverride(memberName.jsOverride)) ..external = true ..static = isStatic - ..type = code.MethodType.setter + ..returns = getType() + ..type = code.MethodType.getter ..name = name - ..requiredParameters.add(code.Parameter((b) => b - ..type = getType() - ..name = 'value'))), - code.Method((b) => b - ..annotations.addAll(_jsOverride(memberName.jsOverride)) + ..docs.addAll(docs), + ), + if (!readOnly) + code.Method( + (b) => b + ..annotations.addAll(_jsOverride(memberName.jsOverride)) + ..external = true + ..static = isStatic + ..type = code.MethodType.setter + ..name = name + ..requiredParameters.add( + code.Parameter( + (b) => b + ..type = getType() + ..name = 'value', + ), + ), + ), + ]; + } + + List<code.Method> _getterSetterWithIDLType({ + required String fieldName, + required idl.IDLType type, + required bool isStatic, + required bool readOnly, + required MdnInterface? mdnInterface, + }) { + return _getterSetter( + fieldName: fieldName, + getType: () => _idlTypeToTypeReference(type), + isStatic: isStatic, + readOnly: readOnly, + mdnInterface: mdnInterface, + ); + } + + List<code.Method> _attribute( + idl.Attribute attribute, MdnInterface? mdnInterface) { + return _getterSetterWithIDLType( + fieldName: attribute.name, + type: attribute.idlType, + readOnly: attribute.readonly, + isStatic: attribute.special == 'static', + mdnInterface: mdnInterface, + ); + } + + code.Method _constant(idl.Constant constant) { + return code.Method( + (b) => b ..external = true - ..static = isStatic - ..returns = getType() + ..static = true + ..returns = _idlTypeToTypeReference(constant.idlType) ..type = code.MethodType.getter - ..name = name) - ]; + ..name = constant.name, + ); } - List<code.Method> _getterSetterWithIDLType( - {required String fieldName, - required idl.IDLType type, - required bool isStatic, - required bool readOnly}) => - _getterSetter( - fieldName: fieldName, - getType: () => _idlTypeToTypeReference(type), - isStatic: isStatic, - readOnly: readOnly); - - List<code.Method> _attribute(idl.Attribute attribute) => - _getterSetterWithIDLType( - fieldName: attribute.name, - type: attribute.idlType, - readOnly: attribute.readonly, - isStatic: attribute.special == 'static'); - - code.Method _constant(idl.Constant constant) => code.Method((b) => b - ..external = true - ..static = true - ..returns = _idlTypeToTypeReference(constant.idlType) - ..type = code.MethodType.getter - ..name = constant.name); - - List<code.Method> _field(idl.Field field) => _getterSetterWithIDLType( + List<code.Method> _field(idl.Field field, MdnInterface? mdnInterface) { + return _getterSetterWithIDLType( fieldName: field.name, type: field.idlType, readOnly: false, - isStatic: false); + isStatic: false, + mdnInterface: mdnInterface, + ); + } - List<code.Method> _member(idl.Member member) { + List<code.Method> _member(idl.Member member, MdnInterface? mdnInterface) { final type = member.type; return switch (type) { 'operation' => throw Exception('Should be handled explicitly.'), - 'attribute' => _attribute(member as idl.Attribute), + 'attribute' => _attribute(member as idl.Attribute, mdnInterface), 'const' => [_constant(member as idl.Constant)], - 'field' => _field(member as idl.Field), + 'field' => _field(member as idl.Field, mdnInterface), 'iterable' || 'maplike' || 'setlike' => @@ -850,20 +882,28 @@ class Translator { }; } - List<code.Method> _members(List<idl.Member> members) => - [for (final member in members) ..._member(member)]; + List<code.Method> _members( + List<idl.Member> members, MdnInterface? mdnInterface) { + return [ + for (final member in members) ..._member(member, mdnInterface), + ]; + } List<code.Method> _operations(List<_OverridableOperation> operations) => [for (final operation in operations) _operation(operation)]; - List<code.Method> _cssStyleDeclarationProperties() => [ - for (final style in _cssStyleDeclarations) - ..._getterSetter( - fieldName: style, - getType: () => code.TypeReference((b) => b..symbol = 'String'), - isStatic: false, - readOnly: false), - ]; + List<code.Method> _cssStyleDeclarationProperties() { + return [ + for (final style in _cssStyleDeclarations) + ..._getterSetter( + fieldName: style, + getType: () => code.TypeReference((b) => b..symbol = 'String'), + isStatic: false, + readOnly: false, + mdnInterface: null, + ), + ]; + } // If [jsName] is an element type, creates a constructor for each tag that the // element interface corresponds to using either `createElement` or @@ -911,13 +951,17 @@ class Translator { return elementConstructors; } - code.Extension _extension( - {required _RawType type, - required List<idl.Member> extensionMembers}) => - code.Extension((b) => b + code.Extension _extension({ + required _RawType type, + required List<idl.Member> extensionMembers, + }) { + return code.Extension( + (b) => b ..name = '${type.type.snakeToPascal}Extension' ..on = _typeReference(type) - ..methods.addAll(_members(extensionMembers))); + ..methods.addAll(_members(extensionMembers, null)), + ); + } code.ExtensionType _extensionType({ required String jsName, @@ -956,9 +1000,9 @@ class Translator { .followedBy(_elementConstructors( jsName, dartClassName, representationFieldName))) ..methods.addAll(_operations(staticOperations) - .followedBy(_members(staticMembers)) + .followedBy(_members(staticMembers, mdnInterface)) .followedBy(_operations(operations)) - .followedBy(_members(members)) + .followedBy(_members(members, mdnInterface)) .followedBy(dartClassName == 'CSSStyleDeclaration' ? _cssStyleDeclarationProperties() : []))); @@ -996,17 +1040,18 @@ class Translator { return [ if (getterName != null) _topLevelGetter(rawType, getterName), _extensionType( - jsName: jsName, - dartClassName: dartClassName, - mdnInterface: mdnInterface, - interfaceStatus: interfaceStatus, - implements: implements, - constructor: interfacelike.constructor, - operations: operations, - staticOperations: staticOperations, - members: members, - staticMembers: interfacelike.staticMembers, - isObjectLiteral: isDictionary), + jsName: jsName, + dartClassName: dartClassName, + mdnInterface: mdnInterface, + interfaceStatus: interfaceStatus, + implements: implements, + constructor: interfacelike.constructor, + operations: operations, + staticOperations: staticOperations, + members: members, + staticMembers: interfacelike.staticMembers, + isObjectLiteral: isDictionary, + ), if (extensionMembers.isNotEmpty) _extension(type: rawType, extensionMembers: extensionMembers) ]; @@ -1069,9 +1114,6 @@ class Translator { bool _shouldGenerate(String name, _Library library) { // These libraries wouldn't normally qualify for generation but have types // that are referenced from generated code. - // TODO(devoncarew): We should either remove the members that reference the - // types or decide the library should be generated irrespective of the BCD - // info. const allowList = { 'css-typed-om', 'css-view-transitions', From 9d716c468fbee5a4f9a85298ec364d9db5a0c0e3 Mon Sep 17 00:00:00 2001 From: Devon Carew <devoncarew@google.com> Date: Tue, 12 Mar 2024 14:06:15 -0700 Subject: [PATCH 3/4] re-generate the dom libraries --- analysis_options.yaml | 1 - lib/src/dom/clipboard_apis.dart | 28 +- lib/src/dom/compression.dart | 10 + lib/src/dom/credential_management.dart | 77 +- lib/src/dom/csp.dart | 77 +- lib/src/dom/css_animations.dart | 44 +- lib/src/dom/css_animations_2.dart | 5 + lib/src/dom/css_cascade.dart | 5 + lib/src/dom/css_conditional.dart | 6 + lib/src/dom/css_contain_3.dart | 28 + lib/src/dom/css_counter_styles.dart | 64 +- lib/src/dom/css_font_loading.dart | 151 +- lib/src/dom/css_fonts.dart | 24 +- lib/src/dom/css_highlight_api.dart | 36 +- lib/src/dom/css_masking.dart | 60 + lib/src/dom/css_properties_values_api.dart | 26 +- lib/src/dom/css_transitions.dart | 23 +- lib/src/dom/css_transitions_2.dart | 4 + lib/src/dom/css_typed_om.dart | 266 +- lib/src/dom/css_view_transitions.dart | 31 + lib/src/dom/cssom.dart | 1504 +++-- lib/src/dom/cssom_view.dart | 124 +- lib/src/dom/encoding.dart | 78 +- lib/src/dom/encrypted_media.dart | 82 +- lib/src/dom/entries_api.dart | 66 +- lib/src/dom/fetch.dart | 189 +- lib/src/dom/fileapi.dart | 84 +- lib/src/dom/fs.dart | 29 +- lib/src/dom/gamepad.dart | 129 +- lib/src/dom/geolocation.dart | 101 +- lib/src/dom/geometry.dart | 226 +- lib/src/dom/hr_time.dart | 45 +- lib/src/dom/html.dart | 6409 +++++++++++++++++--- lib/src/dom/indexeddb.dart | 237 +- lib/src/dom/intersection_observer.dart | 103 +- lib/src/dom/mathml_core.dart | 246 +- lib/src/dom/media_capabilities.dart | 72 +- lib/src/dom/media_playback_quality.dart | 20 + lib/src/dom/media_source.dart | 168 +- lib/src/dom/mediacapture_streams.dart | 756 ++- lib/src/dom/mediasession.dart | 68 +- lib/src/dom/mediastream_recording.dart | 83 +- lib/src/dom/navigation_timing.dart | 450 ++ lib/src/dom/notifications.dart | 185 +- lib/src/dom/orientation_event.dart | 148 +- lib/src/dom/payment_request.dart | 94 +- lib/src/dom/performance_timeline.dart | 27 +- lib/src/dom/permissions.dart | 15 +- lib/src/dom/pointerevents.dart | 163 +- lib/src/dom/push_api.dart | 51 +- lib/src/dom/reporting.dart | 19 +- lib/src/dom/resize_observer.dart | 46 +- lib/src/dom/resource_timing.dart | 172 + lib/src/dom/screen_orientation.dart | 12 +- lib/src/dom/screen_wake_lock.dart | 16 +- lib/src/dom/selection_api.dart | 76 + lib/src/dom/server_timing.dart | 10 + lib/src/dom/service_workers.dart | 287 +- lib/src/dom/speech_api.dart | 312 +- lib/src/dom/storage.dart | 4 +- lib/src/dom/streams.dart | 184 +- lib/src/dom/svg.dart | 517 +- lib/src/dom/svg_animations.dart | 12 +- lib/src/dom/touch_events.dart | 173 +- lib/src/dom/trusted_types.dart | 31 +- lib/src/dom/uievents.dart | 658 +- lib/src/dom/url.dart | 127 +- lib/src/dom/user_timing.dart | 17 +- lib/src/dom/web_animations.dart | 217 +- lib/src/dom/web_animations_2.dart | 18 +- lib/src/dom/web_locks.dart | 35 +- lib/src/dom/webaudio.dart | 1117 +++- lib/src/dom/webauthn.dart | 337 +- lib/src/dom/webcryptoapi.dart | 154 +- lib/src/dom/webgl1.dart | 111 +- lib/src/dom/webgl2.dart | 4 +- lib/src/dom/webidl.dart | 18 + lib/src/dom/webrtc.dart | 1010 ++- lib/src/dom/webrtc_encoded_transform.dart | 103 +- lib/src/dom/webrtc_stats.dart | 786 ++- lib/src/dom/websockets.dart | 60 +- lib/src/dom/webvtt.dart | 67 +- lib/src/dom/xhr.dart | 259 +- 83 files changed, 16519 insertions(+), 3368 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 15660257..a4687c44 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -35,7 +35,6 @@ linter: - no_runtimeType_toString - package_api_docs - prefer_const_declarations - - prefer_expression_function_bodies - prefer_final_locals - unnecessary_await_in_return - use_string_buffers diff --git a/lib/src/dom/clipboard_apis.dart b/lib/src/dom/clipboard_apis.dart index 876a1e61..ddf3668e 100644 --- a/lib/src/dom/clipboard_apis.dart +++ b/lib/src/dom/clipboard_apis.dart @@ -29,8 +29,8 @@ extension type ClipboardEventInit._(JSObject _) implements EventInit, JSObject { DataTransfer? clipboardData, }); - external set clipboardData(DataTransfer? value); external DataTransfer? get clipboardData; + external set clipboardData(DataTransfer? value); } /// The **`ClipboardEvent`** interface of the @@ -49,6 +49,17 @@ extension type ClipboardEvent._(JSObject _) implements Event, JSObject { ClipboardEventInit eventInitDict, ]); + /// The **`clipboardData`** property of the [ClipboardEvent] interface holds a + /// [DataTransfer] object, which can be used to: + /// + /// - specify what data should be put into the clipboard from the + /// [Element.cut_event] and [Element.copy_event] event handlers, typically + /// with a [DataTransfer.setData] call; + /// - obtain the data to be pasted from the [Element.paste_event] event + /// handler, typically with a [DataTransfer.getData] call. + /// + /// See the [Element.cut_event], [Element.copy_event], and + /// [Element.paste_event] events documentation for more information. external DataTransfer? get clipboardData; } @@ -80,14 +91,23 @@ extension type ClipboardItem._(JSObject _) implements JSObject { /// `Promise` that resolves with a [Blob] of the requested or an error if the /// MIME type is not found. external JSPromise<Blob> getType(String type); + + /// The read-only **`presentationStyle`** property of the [ClipboardItem] + /// interface returns a string indicating how an item should be presented. + /// + /// For example, in some contexts an image might be displayed inline, while in + /// others it might be represented as an attachment. external PresentationStyle get presentationStyle; + + /// The read-only **`types`** property of the [ClipboardItem] interface + /// returns an `Array` of available within the [ClipboardItem] external JSArray<JSString> get types; } extension type ClipboardItemOptions._(JSObject _) implements JSObject { external factory ClipboardItemOptions({PresentationStyle presentationStyle}); - external set presentationStyle(PresentationStyle value); external PresentationStyle get presentationStyle; + external set presentationStyle(PresentationStyle value); } /// The **`Clipboard`** interface of the @@ -151,8 +171,8 @@ extension type Clipboard._(JSObject _) implements EventTarget, JSObject { extension type ClipboardUnsanitizedFormats._(JSObject _) implements JSObject { external factory ClipboardUnsanitizedFormats({JSArray<JSString> unsanitized}); - external set unsanitized(JSArray<JSString> value); external JSArray<JSString> get unsanitized; + external set unsanitized(JSArray<JSString> value); } extension type ClipboardPermissionDescriptor._(JSObject _) implements PermissionDescriptor, JSObject { @@ -161,6 +181,6 @@ extension type ClipboardPermissionDescriptor._(JSObject _) bool allowWithoutGesture, }); - external set allowWithoutGesture(bool value); external bool get allowWithoutGesture; + external set allowWithoutGesture(bool value); } diff --git a/lib/src/dom/compression.dart b/lib/src/dom/compression.dart index 45e3d711..3dc3df7e 100644 --- a/lib/src/dom/compression.dart +++ b/lib/src/dom/compression.dart @@ -27,7 +27,12 @@ typedef CompressionFormat = String; extension type CompressionStream._(JSObject _) implements JSObject { external factory CompressionStream(CompressionFormat format); + /// The **`readable`** read-only property of the [CompressionStream] interface + /// returns a [ReadableStream]. external ReadableStream get readable; + + /// The **`writable`** read-only property of the [CompressionStream] interface + /// returns a [WritableStream]. external WritableStream get writable; } @@ -41,6 +46,11 @@ extension type CompressionStream._(JSObject _) implements JSObject { extension type DecompressionStream._(JSObject _) implements JSObject { external factory DecompressionStream(CompressionFormat format); + /// The **`readable`** read-only property of the [DecompressionStream] + /// interface returns a [ReadableStream]. external ReadableStream get readable; + + /// The **`writable`** read-only property of the [DecompressionStream] + /// interface returns a [WritableStream]. external WritableStream get writable; } diff --git a/lib/src/dom/credential_management.dart b/lib/src/dom/credential_management.dart index add175b3..b016bdfa 100644 --- a/lib/src/dom/credential_management.dart +++ b/lib/src/dom/credential_management.dart @@ -38,7 +38,16 @@ typedef CredentialMediationRequirement = String; /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Credential). extension type Credential._(JSObject _) implements JSObject { external static JSPromise<JSBoolean> isConditionalMediationAvailable(); + + /// The **`id`** read-only property of the [Credential] interface returns a + /// string containing the credential's identifier. This might be a GUID, + /// username, or email address, or some other value, depending on the type of + /// credential. external String get id; + + /// The **`type`** read-only property of the [Credential] interface returns a + /// string containing the credential's type. Valid values are `password`, + /// `federated`, `public-key`, `identity` and `otp`. external String get type; } @@ -138,8 +147,8 @@ extension type CredentialsContainer._(JSObject _) implements JSObject { extension type CredentialData._(JSObject _) implements JSObject { external factory CredentialData({required String id}); - external set id(String value); external String get id; + external set id(String value); } extension type CredentialRequestOptions._(JSObject _) implements JSObject { external factory CredentialRequestOptions({ @@ -150,16 +159,16 @@ extension type CredentialRequestOptions._(JSObject _) implements JSObject { PublicKeyCredentialRequestOptions publicKey, }); - external set mediation(CredentialMediationRequirement value); external CredentialMediationRequirement get mediation; - external set signal(AbortSignal value); + external set mediation(CredentialMediationRequirement value); external AbortSignal get signal; - external set password(bool value); + external set signal(AbortSignal value); external bool get password; - external set federated(FederatedCredentialRequestOptions value); + external set password(bool value); external FederatedCredentialRequestOptions get federated; - external set publicKey(PublicKeyCredentialRequestOptions value); + external set federated(FederatedCredentialRequestOptions value); external PublicKeyCredentialRequestOptions get publicKey; + external set publicKey(PublicKeyCredentialRequestOptions value); } extension type CredentialCreationOptions._(JSObject _) implements JSObject { external factory CredentialCreationOptions({ @@ -169,14 +178,14 @@ extension type CredentialCreationOptions._(JSObject _) implements JSObject { PublicKeyCredentialCreationOptions publicKey, }); - external set signal(AbortSignal value); external AbortSignal get signal; - external set password(PasswordCredentialInit value); + external set signal(AbortSignal value); external PasswordCredentialInit get password; - external set federated(FederatedCredentialInit value); + external set password(PasswordCredentialInit value); external FederatedCredentialInit get federated; - external set publicKey(PublicKeyCredentialCreationOptions value); + external set federated(FederatedCredentialInit value); external PublicKeyCredentialCreationOptions get publicKey; + external set publicKey(PublicKeyCredentialCreationOptions value); } /// The **`PasswordCredential`** interface of the @@ -196,8 +205,23 @@ extension type PasswordCredential._(JSObject _) implements Credential, JSObject { external factory PasswordCredential(JSObject dataOrForm); + /// The **`password`** read-only property + /// of the [PasswordCredential] interface returns a string + /// containing the password of the credential. external String get password; + + /// The **`name`** read-only property of + /// the [PasswordCredential] interface returns a string + /// containing a human-readable public name for display in a credential + /// chooser. external String get name; + + /// The **`iconURL`** read-only property + /// of the [PasswordCredential] interface returns a string + /// containing a URL pointing to an image for an icon. This image is intended + /// for display + /// in a credential chooser. The URL must be accessible without + /// authentication. external String get iconURL; } extension type PasswordCredentialData._(JSObject _) @@ -210,14 +234,14 @@ extension type PasswordCredentialData._(JSObject _) required String password, }); - external set name(String value); external String get name; - external set iconURL(String value); + external set name(String value); external String get iconURL; - external set origin(String value); + external set iconURL(String value); external String get origin; - external set password(String value); + external set origin(String value); external String get password; + external set password(String value); } /// The **`FederatedCredential`** interface of the @@ -244,7 +268,18 @@ extension type FederatedCredential._(JSObject _) implements Credential, JSObject { external factory FederatedCredential(FederatedCredentialInit data); + /// The **`provider`** property of the + /// [FederatedCredential] interface returns a string + /// containing a credential's federated identity provider. external String get provider; + + /// The **`protocol`** property of the + /// [FederatedCredential] interface returns a read-only + /// string containing a credential's federated identity protocol. If this + /// property is + /// [`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/null), + /// the protocol may be inferred from the + /// [FederatedCredential.provider] property. external String? get protocol; external String get name; external String get iconURL; @@ -256,10 +291,10 @@ extension type FederatedCredentialRequestOptions._(JSObject _) JSArray<JSString> protocols, }); - external set providers(JSArray<JSString> value); external JSArray<JSString> get providers; - external set protocols(JSArray<JSString> value); + external set providers(JSArray<JSString> value); external JSArray<JSString> get protocols; + external set protocols(JSArray<JSString> value); } extension type FederatedCredentialInit._(JSObject _) implements CredentialData, JSObject { @@ -272,14 +307,14 @@ extension type FederatedCredentialInit._(JSObject _) String protocol, }); - external set name(String value); external String get name; - external set iconURL(String value); + external set name(String value); external String get iconURL; - external set origin(String value); + external set iconURL(String value); external String get origin; - external set provider(String value); + external set origin(String value); external String get provider; - external set protocol(String value); + external set provider(String value); external String get protocol; + external set protocol(String value); } diff --git a/lib/src/dom/csp.dart b/lib/src/dom/csp.dart index 2c96cdb3..b7a6240a 100644 --- a/lib/src/dom/csp.dart +++ b/lib/src/dom/csp.dart @@ -66,17 +66,70 @@ extension type SecurityPolicyViolationEvent._(JSObject _) SecurityPolicyViolationEventInit eventInitDict, ]); + /// The **`documentURI`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// representing the URI of the document or worker in which the violation was + /// found. external String get documentURI; + + /// The **`referrer`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// representing the referrer of the resources whose policy was violated. This + /// will be a URL + /// or `null`. external String get referrer; + + /// The **`blockedURI`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// representing the URI of the resource that was blocked because it violates + /// a policy. external String get blockedURI; + + /// The **`effectiveDirective`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// representing the directive whose enforcement uncovered the violation. external String get effectiveDirective; + + /// The **`violatedDirective`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// representing the directive whose enforcement uncovered the violation. external String get violatedDirective; + + /// The **`originalPolicy`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// containing the policy whose enforcement uncovered the violation. external String get originalPolicy; + + /// The **`sourceFile`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// representing the URI of the document or worker in which the violation was + /// found. external String get sourceFile; + + /// The **`sample`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a string + /// representing a sample of the resource that caused the violation. external String get sample; + + /// The **`disposition`** read-only property of the + /// [SecurityPolicyViolationEvent] interface indicates how the violated policy + /// is configured to be treated by the user agent. external SecurityPolicyViolationEventDisposition get disposition; + + /// The **`statusCode`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is a number representing the HTTP + /// status code of the document or worker in which the violation occurred. external int get statusCode; + + /// The **`lineNumber`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is the line number in the + /// document + /// or worker at which the violation occurred. external int get lineNumber; + + /// The **`columnNumber`** read-only property of the + /// [SecurityPolicyViolationEvent] interface is the column number in the + /// document or worker at which the violation occurred. external int get columnNumber; } extension type SecurityPolicyViolationEventInit._(JSObject _) @@ -99,28 +152,28 @@ extension type SecurityPolicyViolationEventInit._(JSObject _) int columnNumber, }); - external set documentURI(String value); external String get documentURI; - external set referrer(String value); + external set documentURI(String value); external String get referrer; - external set blockedURI(String value); + external set referrer(String value); external String get blockedURI; - external set violatedDirective(String value); + external set blockedURI(String value); external String get violatedDirective; - external set effectiveDirective(String value); + external set violatedDirective(String value); external String get effectiveDirective; - external set originalPolicy(String value); + external set effectiveDirective(String value); external String get originalPolicy; - external set sourceFile(String value); + external set originalPolicy(String value); external String get sourceFile; - external set sample(String value); + external set sourceFile(String value); external String get sample; - external set disposition(SecurityPolicyViolationEventDisposition value); + external set sample(String value); external SecurityPolicyViolationEventDisposition get disposition; - external set statusCode(int value); + external set disposition(SecurityPolicyViolationEventDisposition value); external int get statusCode; - external set lineNumber(int value); + external set statusCode(int value); external int get lineNumber; - external set columnNumber(int value); + external set lineNumber(int value); external int get columnNumber; + external set columnNumber(int value); } diff --git a/lib/src/dom/css_animations.dart b/lib/src/dom/css_animations.dart index 9ba9debc..f99cdbd2 100644 --- a/lib/src/dom/css_animations.dart +++ b/lib/src/dom/css_animations.dart @@ -30,8 +30,27 @@ extension type AnimationEvent._(JSObject _) implements Event, JSObject { AnimationEventInit animationEventInitDict, ]); + /// The **`AnimationEvent.animationName`** read-only property is a + /// string containing the value of the CSS + /// property associated with the transition. external String get animationName; + + /// The **`AnimationEvent.elapsedTime`** read-only property is a + /// `float` giving the amount of time the animation has been running, in + /// seconds, + /// when this event fired, excluding any time the animation was paused. For an + /// [Element.animationstart_event] event, + /// `elapsedTime` is `0.0` unless there was a negative value for + /// , in which case the event will be fired with + /// `elapsedTime` containing `(-1 * delay)`. external num get elapsedTime; + + /// The **`AnimationEvent.pseudoElement`** read-only property is a + /// string, starting with `'::'`, containing the name of the + /// [pseudo-element](https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements) + /// the animation runs on. + /// If the animation doesn't run on a pseudo-element but on the element, an + /// empty string: `''`. external String get pseudoElement; } extension type AnimationEventInit._(JSObject _) implements EventInit, JSObject { @@ -44,12 +63,12 @@ extension type AnimationEventInit._(JSObject _) implements EventInit, JSObject { String pseudoElement, }); - external set animationName(String value); external String get animationName; - external set elapsedTime(num value); + external set animationName(String value); external num get elapsedTime; - external set pseudoElement(String value); + external set elapsedTime(num value); external String get pseudoElement; + external set pseudoElement(String value); } /// The **`CSSKeyframeRule`** interface describes an object representing a set @@ -62,8 +81,16 @@ extension type AnimationEventInit._(JSObject _) implements EventInit, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule). extension type CSSKeyframeRule._(JSObject _) implements CSSRule, JSObject { - external set keyText(String value); + /// The **`keyText`** property of the [CSSKeyframeRule] interface represents + /// the keyframe selector as a comma-separated list of percentage values. The + /// from and to keywords map to 0% and 100%, respectively. external String get keyText; + external set keyText(String value); + + /// The read-only **`CSSKeyframeRule.style`** property is the + /// [CSSStyleDeclaration] interface for the + /// [declaration block](https://www.w3.org/TR/1998/REC-CSS2-19980512/syndata.html#block) + /// of the [CSSKeyframeRule]. external CSSStyleDeclaration get style; } @@ -88,8 +115,15 @@ extension type CSSKeyframesRule._(JSObject _) implements CSSRule, JSObject { /// The **`findRule()`** method of the [CSSKeyframeRule] interface finds the /// [CSSKeyFrameRule] that matches the specified keyframe selector. external CSSKeyframeRule? findRule(String select); - external set name(String value); + + /// The **`name`** property of the [CSSKeyframeRule] interface gets and sets + /// the name of the animation as used by the property. external String get name; + external set name(String value); + + /// The read-only **`cssRules`** property of the [CSSKeyframeRule] interface + /// returns a [CSSRuleList] containing the rules in the keyframes + /// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule). external CSSRuleList get cssRules; external int get length; } diff --git a/lib/src/dom/css_animations_2.dart b/lib/src/dom/css_animations_2.dart index 58e03954..949c29fe 100644 --- a/lib/src/dom/css_animations_2.dart +++ b/lib/src/dom/css_animations_2.dart @@ -23,5 +23,10 @@ import 'web_animations.dart'; /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSAnimation). extension type CSSAnimation._(JSObject _) implements Animation, JSObject { + /// The **`animationName`** property of the + /// [CSSAnimation] interface returns the . This + /// specifies one or more keyframe at-rules which describe the animation + /// applied to the + /// element. external String get animationName; } diff --git a/lib/src/dom/css_cascade.dart b/lib/src/dom/css_cascade.dart index b2dd9fbf..6c1c1014 100644 --- a/lib/src/dom/css_cascade.dart +++ b/lib/src/dom/css_cascade.dart @@ -25,6 +25,8 @@ import 'cssom.dart'; /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSLayerBlockRule). extension type CSSLayerBlockRule._(JSObject _) implements CSSGroupingRule, JSObject { + /// The read-only **`name`** property of the [CSSLayerBlockRule] interface + /// represents the name of the associated cascade layer. external String get name; } @@ -45,5 +47,8 @@ extension type CSSLayerBlockRule._(JSObject _) /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSLayerStatementRule). extension type CSSLayerStatementRule._(JSObject _) implements CSSRule, JSObject { + /// The read-only **`nameList`** property of the [CSSLayerStatementRule] + /// interface return the list of associated cascade layer names. The names + /// can't be modified. external JSArray<JSString> get nameList; } diff --git a/lib/src/dom/css_conditional.dart b/lib/src/dom/css_conditional.dart index cb2ffc58..062fe593 100644 --- a/lib/src/dom/css_conditional.dart +++ b/lib/src/dom/css_conditional.dart @@ -29,6 +29,9 @@ import 'cssom.dart'; /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSConditionRule). extension type CSSConditionRule._(JSObject _) implements CSSGroupingRule, JSObject { + /// The **`conditionText`** property of + /// the [CSSConditionRule] interface returns or sets the text of the CSS + /// rule. external String get conditionText; } @@ -40,6 +43,9 @@ extension type CSSConditionRule._(JSObject _) /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule). extension type CSSMediaRule._(JSObject _) implements CSSConditionRule, JSObject { + /// The read-only **`media`** property of the + /// [CSSMediaRule] interface [MediaList] represents the intended + /// destination medium for style information. external MediaList get media; } diff --git a/lib/src/dom/css_contain_3.dart b/lib/src/dom/css_contain_3.dart index 66083dc8..2fe1f7e3 100644 --- a/lib/src/dom/css_contain_3.dart +++ b/lib/src/dom/css_contain_3.dart @@ -28,6 +28,34 @@ import 'css_conditional.dart'; /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSContainerRule). extension type CSSContainerRule._(JSObject _) implements CSSConditionRule, JSObject { + /// The read-only **`containerName`** property of the [CSSContainerRule] + /// interface represents the container name of the associated CSS at-rule. + /// + /// For example, the value of `containerName` for the below is `sidebar`: + /// + /// ```css + /// @container sidebar (min-width: 700px) { + /// .card { + /// font-size: 2em; + /// } + /// } + /// ``` external String get containerName; + + /// The read-only **`containerQuery`** property of the [CSSContainerRule] + /// interface returns a string representing the container conditions that are + /// evaluated when the container changes size in order to determine if the + /// styles in the associated are applied. + /// + /// For example, the value of `containerQuery` for the below is `(min-width: + /// 700px)`: + /// + /// ```css + /// @container sidebar (min-width: 700px) { + /// .card { + /// font-size: 2em; + /// } + /// } + /// ``` external String get containerQuery; } diff --git a/lib/src/dom/css_counter_styles.dart b/lib/src/dom/css_counter_styles.dart index 120481c5..e1ac9a0d 100644 --- a/lib/src/dom/css_counter_styles.dart +++ b/lib/src/dom/css_counter_styles.dart @@ -23,26 +23,68 @@ import 'cssom.dart'; /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSCounterStyleRule). extension type CSSCounterStyleRule._(JSObject _) implements CSSRule, JSObject { - external set name(String value); + /// The **`name`** property of the [CSSCounterStyleRule] interface gets and + /// sets the defined as the `name` for the associated rule. external String get name; - external set system(String value); + external set name(String value); + + /// The **`system`** property of the [CSSCounterStyleRule] interface gets and + /// sets the value of the descriptor. If the descriptor does not have a value + /// set, this attribute returns an empty string. external String get system; - external set symbols(String value); + external set system(String value); + + /// The **`symbols`** property of the [CSSCounterStyleRule] interface gets and + /// sets the value of the descriptor. If the descriptor does not have a value + /// set, this attribute returns an empty string. external String get symbols; - external set additiveSymbols(String value); + external set symbols(String value); + + /// The **`additiveSymbols`** property of the [CSSCounterStyleRule] interface + /// gets and sets the value of the descriptor. If the descriptor does not + /// have a value set, this attribute returns an empty string. external String get additiveSymbols; - external set negative(String value); + external set additiveSymbols(String value); + + /// The **`negative`** property of the [CSSCounterStyleRule] interface gets + /// and sets the value of the descriptor. If the descriptor does not have a + /// value set, this attribute returns an empty string. external String get negative; - external set prefix(String value); + external set negative(String value); + + /// The **`prefix`** property of the [CSSCounterStyleRule] interface gets and + /// sets the value of the descriptor. If the descriptor does not have a value + /// set, this attribute returns an empty string. external String get prefix; - external set suffix(String value); + external set prefix(String value); + + /// The **`suffix`** property of the [CSSCounterStyleRule] interface gets and + /// sets the value of the descriptor. If the descriptor does not have a value + /// set, this attribute returns an empty string. external String get suffix; - external set range(String value); + external set suffix(String value); + + /// The **`range`** property of the [CSSCounterStyleRule] interface gets and + /// sets the value of the descriptor. If the descriptor does not have a value + /// set, this attribute returns an empty string. external String get range; - external set pad(String value); + external set range(String value); + + /// The **`pad`** property of the [CSSCounterStyleRule] interface gets and + /// sets the value of the descriptor. If the descriptor does not have a value + /// set, this attribute returns an empty string. external String get pad; - external set speakAs(String value); + external set pad(String value); + + /// The **`speakAs`** property of the [CSSCounterStyleRule] interface gets and + /// sets the value of the descriptor. If the descriptor does not have a value + /// set, this attribute returns an empty string. external String get speakAs; - external set fallback(String value); + external set speakAs(String value); + + /// The **`fallback`** property of the [CSSCounterStyleRule] interface gets + /// and sets the value of the descriptor. If the descriptor does not have a + /// value set, this attribute returns an empty string. external String get fallback; + external set fallback(String value); } diff --git a/lib/src/dom/css_font_loading.dart b/lib/src/dom/css_font_loading.dart index df27fc9f..b00000e7 100644 --- a/lib/src/dom/css_font_loading.dart +++ b/lib/src/dom/css_font_loading.dart @@ -33,26 +33,26 @@ extension type FontFaceDescriptors._(JSObject _) implements JSObject { String lineGapOverride, }); - external set style(String value); external String get style; - external set weight(String value); + external set style(String value); external String get weight; - external set stretch(String value); + external set weight(String value); external String get stretch; - external set unicodeRange(String value); + external set stretch(String value); external String get unicodeRange; - external set featureSettings(String value); + external set unicodeRange(String value); external String get featureSettings; - external set variationSettings(String value); + external set featureSettings(String value); external String get variationSettings; - external set display(String value); + external set variationSettings(String value); external String get display; - external set ascentOverride(String value); + external set display(String value); external String get ascentOverride; - external set descentOverride(String value); + external set ascentOverride(String value); external String get descentOverride; - external set lineGapOverride(String value); + external set descentOverride(String value); external String get lineGapOverride; + external set lineGapOverride(String value); } /// The **`FontFace`** interface of the @@ -84,29 +84,117 @@ extension type FontFace._(JSObject _) implements JSObject { /// font [FontFace.status] property of the font face is anything other than /// `unloaded`, then this method does nothing. external JSPromise<FontFace> load(); - external set family(String value); + + /// The **`FontFace.family`** property allows the author to get or set the + /// font family of a [FontFace] object. + /// + /// The value is used for name matching against a particular font face when + /// styling elements using the + /// [`font-family`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family) + /// property. + /// Any name may be used, and this overrides any name specified in the + /// underlying font data. + /// + /// This property is equivalent to the descriptor of . external String get family; - external set style(String value); + external set family(String value); + + /// The **`style`** property of the [FontFace] interface retrieves or sets the + /// font's style. + /// + /// This property is equivalent to the descriptor. external String get style; - external set weight(String value); + external set style(String value); + + /// The **`weight`** property of the [FontFace] interface retrieves or sets + /// the weight of the font. + /// + /// This property is equivalent to the descriptor. external String get weight; - external set stretch(String value); + external set weight(String value); + + /// The **`stretch`** property of the [FontFace] interface retrieves or sets + /// how the font stretches. + /// + /// This property is equivalent to the descriptor. external String get stretch; - external set unicodeRange(String value); + external set stretch(String value); + + /// The **`unicodeRange`** property of the [FontFace] interface retrieves or + /// sets the range of unicode code points encompassing the font. + /// + /// This property is equivalent to the descriptor. external String get unicodeRange; - external set featureSettings(String value); + external set unicodeRange(String value); + + /// The **`featureSettings`** property of the [FontFace] interface retrieves + /// or sets infrequently used font features that are not available from a + /// font's variant properties. + /// + /// This property is equivalent to the descriptor. external String get featureSettings; - external set variationSettings(String value); + external set featureSettings(String value); + + /// The **`variationSettings`** property of the [FontFace] interface retrieves + /// or sets low-level OpenType or TrueType font variations. + /// + /// This property is equivalent to the descriptor. external String get variationSettings; - external set display(String value); + external set variationSettings(String value); + + /// The **`display`** property of the [FontFace] interface determines how a + /// font face is displayed based on whether and when it is downloaded and + /// ready to use. + /// This property is equivalent to the CSS `font-display` descriptor. + /// + /// When this property is used, font loading has a timeline with three + /// periods. + /// The lengths of the first two periods depend on the value of the property + /// and the user agent. + /// (See below.) + /// + /// - block period + /// - : The browser invisibly prepares a fallback font. If the font face loads during this time, it's used to display the text and display is complete. + /// - swap period + /// - : If the font face is still not loaded, the fallback font will be shown. + /// When the font face loads, the fallback will be swapped for the downloaded + /// font. + /// - failure period + /// - : If the font face still is not loaded, the fallback font will be shown and no swap will occur. external String get display; - external set ascentOverride(String value); + external set display(String value); + + /// The **`ascentOverride`** property of the [FontFace] interface returns and + /// sets the ascent metric for the font, the height above the baseline that + /// CSS uses to lay out line boxes in an inline formatting context. + /// + /// This property is equivalent to the descriptor of . external String get ascentOverride; - external set descentOverride(String value); + external set ascentOverride(String value); + + /// The **`descentOverride`** property of the [FontFace] interface returns and + /// sets the value of the descriptor. + /// The possible values are `normal`, indicating that the metric used should + /// be obtained from the font file, or a percentage. external String get descentOverride; - external set lineGapOverride(String value); + external set descentOverride(String value); + + /// The **`lineGapOverride`** property of the [FontFace] interface returns and + /// sets the value of the descriptor. + /// The possible values are `normal`, indicating that the metric used should + /// be obtained from the font file, or a percentage. external String get lineGapOverride; + external set lineGapOverride(String value); + + /// The **`status`** read-only property of the [FontFace] interface returns an + /// enumerated value indicating the status of the font, one of `"unloaded"`, + /// `"loading"`, `"loaded"`, or `"error"`. external FontFaceLoadStatus get status; + + /// The **`loaded`** read-only property of the [FontFace] interface returns a + /// `Promise` that resolves with the current `FontFace` object when the font + /// specified in the object's constructor is done loading or rejects with a + /// `SyntaxError`. external JSPromise<FontFace> get loaded; external FontFaceFeatures get features; external FontFaceVariations get variations; @@ -138,8 +226,8 @@ extension type FontFaceSetLoadEventInit._(JSObject _) JSArray<FontFace> fontfaces, }); - external set fontfaces(JSArray<FontFace> value); external JSArray<FontFace> get fontfaces; + external set fontfaces(JSArray<FontFace> value); } /// The **`FontFaceSetLoadEvent`** interface of the @@ -164,6 +252,9 @@ extension type FontFaceSetLoadEvent._(JSObject _) implements Event, JSObject { FontFaceSetLoadEventInit eventInitDict, ]); + /// The **`fontfaces`** read-only property of the + /// [FontFaceSetLoadEvent] interface returns an array of + /// [FontFace] instances, each of which represents a single usable font. external JSArray<FontFace> get fontfaces; } @@ -216,12 +307,22 @@ extension type FontFaceSet._(JSObject _) implements EventTarget, JSObject { String font, [ String text, ]); - external set onloading(EventHandler value); external EventHandler get onloading; - external set onloadingdone(EventHandler value); + external set onloading(EventHandler value); external EventHandler get onloadingdone; - external set onloadingerror(EventHandler value); + external set onloadingdone(EventHandler value); external EventHandler get onloadingerror; + external set onloadingerror(EventHandler value); + + /// The `ready` read-only property of the [FontFaceSet] interface returns a + /// `Promise` that resolves to the given [FontFaceSet]. + /// + /// The promise will only resolve once the document has completed loading + /// fonts, layout operations are completed, and no further font loads are + /// needed. external JSPromise<FontFaceSet> get ready; + + /// The **`status`** read-only property of the [FontFaceSet] interface returns + /// the loading state of the fonts in the set. external FontFaceSetLoadStatus get status; } diff --git a/lib/src/dom/css_fonts.dart b/lib/src/dom/css_fonts.dart index a889df27..833204e2 100644 --- a/lib/src/dom/css_fonts.dart +++ b/lib/src/dom/css_fonts.dart @@ -23,6 +23,10 @@ import 'cssom.dart'; /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule). extension type CSSFontFaceRule._(JSObject _) implements CSSRule, JSObject { + /// The read-only **`style`** property of the [CSSFontFaceRule] interface + /// returns the style information from the + /// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule). This + /// will be in the form of a [CSSStyleDeclaration] object. external CSSStyleDeclaration get style; } @@ -37,8 +41,10 @@ extension type CSSFontFaceRule._(JSObject _) implements CSSRule, JSObject { /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFeatureValuesRule). extension type CSSFontFeatureValuesRule._(JSObject _) implements CSSRule, JSObject { - external set fontFamily(String value); + /// The **`fontFamily`** property of the [CSSConditionRule] interface + /// represents the name of the font family it applies to. external String get fontFamily; + external set fontFamily(String value); external CSSFontFeatureValuesMap get annotation; external CSSFontFeatureValuesMap get ornaments; external CSSFontFeatureValuesMap get stylistic; @@ -62,8 +68,24 @@ extension type CSSFontFeatureValuesMap._(JSObject _) implements JSObject { /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSFontPaletteValuesRule). extension type CSSFontPaletteValuesRule._(JSObject _) implements CSSRule, JSObject { + /// The read-only **`name`** property of the [CSSFontPaletteValuesRule] + /// interface represents the name identifying the associated at-rule. A valid + /// name always starts with two dashes, such as `--Alternate`. external String get name; + + /// The read-only **`fontFamily`** property of the [CSSFontPaletteValuesRule] + /// interface lists the font families the rule can be applied to. The font + /// families must be _named_ families; _generic_ families like `courier` are + /// not valid. external String get fontFamily; + + /// The read-only **`basePalette`** property of the [CSSFontPaletteValuesRule] + /// interface indicates the base palette associated with the rule. external String get basePalette; + + /// The read-only **`overrideColors`** property of the + /// [CSSFontPaletteValuesRule] interface is a string containing a list of + /// color index and color pair that are to be used instead. It is specified in + /// the same format as the corresponding descriptor. external String get overrideColors; } diff --git a/lib/src/dom/css_highlight_api.dart b/lib/src/dom/css_highlight_api.dart index 26e0534f..4c04da8b 100644 --- a/lib/src/dom/css_highlight_api.dart +++ b/lib/src/dom/css_highlight_api.dart @@ -37,10 +37,42 @@ typedef HighlightType = String; extension type Highlight._(JSObject _) implements JSObject { external factory Highlight(AbstractRange initialRanges); - external set priority(int value); + /// It is possible to create [Range] objects that overlap in a document. + /// + /// When overlapping ranges are used by multiple different [Highlight] + /// objects, and when those highlights are styled using pseudo-elements, this + /// may lead to conflicting styles. + /// + /// If two text ranges overlap and are both highlighted using the + /// [css_custom_highlight_api], and if they're both styled using the `color` + /// CSS property, the browser needs to decide which color should be used for + /// styling the text in the overlapping part. + /// + /// By default, all highlights have the same priority and the browser chooses + /// the most recently registered highlight to style the overlapping parts. + /// + /// The `priority` property of the [Highlight] interface is a `Number` used to + /// change this default behavior and determine which highlight's styles should + /// be used to resolve style conflicts in overlapping parts. + /// + /// Note that all the styles of a highlight are applied and the browser only + /// needs to resolve conflicts when the same CSS properties are used by + /// multiple overlapping highlights. The highlight style conflict resolution + /// also does not depend on the order in which the pseudo-elements rules + /// appear in the source, or whether or not CSS properties are marked as + /// `!important`. external int get priority; - external set type(HighlightType value); + external set priority(int value); + + /// The `type` property of the [Highlight] interface is an enumerated `String` + /// used to specify the meaning of the highlight. This allows assistive + /// technologies, such as screen readers, to include this meaning when + /// exposing the highlight to users. + /// + /// By default, a highlight object will have its type set to `highlight`, but + /// you can change it to `spelling-error` or `grammar-error`. external HighlightType get type; + external set type(HighlightType value); } /// The **`HighlightRegistry`** interface of the diff --git a/lib/src/dom/css_masking.dart b/lib/src/dom/css_masking.dart index 3a21e6fb..bf829eb9 100644 --- a/lib/src/dom/css_masking.dart +++ b/lib/src/dom/css_masking.dart @@ -32,7 +32,18 @@ extension type SVGClipPathElement._(JSObject _) 'clipPath', ); + /// The read-only **`clipPathUnits`** property of the [SVGClipPathElement] + /// interface reflects the `clipPathUnits` attribute of a element which + /// defines the coordinate system to use for the content of the element. + /// + /// > **Note:** Although this property is read-only, it is merely a container + /// > for two values you can modify, [SVGAnimatedEnumeration.baseVal] and + /// > [SVGAnimatedEnumeration.animVal]. external SVGAnimatedEnumeration get clipPathUnits; + + /// The read-only **`transform`** property of the [SVGClipPathElement] + /// interface reflects the `transform` attribute of a element, that is a list + /// of transformations applied to the element. external SVGAnimatedTransformList get transform; } @@ -51,10 +62,59 @@ extension type SVGMaskElement._(JSObject _) implements SVGElement, JSObject { 'mask', ); + /// The read-only **`maskUnits`** property of the [SVGMaskElement] interface + /// reflects the `maskUnits` attribute of a element which defines the + /// coordinate system to use for the mask of the element. + /// + /// > **Note:** Although this property is read-only, it is merely a container + /// > for two values you can modify, [SVGAnimatedEnumeration.baseVal] and + /// > [SVGAnimatedEnumeration.animVal]. external SVGAnimatedEnumeration get maskUnits; + + /// The read-only **`maskContentUnits`** property of the [SVGMaskElement] + /// interface reflects the `maskContentUnits` attribute. It indicates which + /// coordinate system to use for the contents of the element. + /// + /// > **Note:** Although this property is read-only, it is merely a container + /// > for two values you can modify, [SVGAnimatedEnumeration.baseVal] and + /// > [SVGAnimatedEnumeration.animVal]. external SVGAnimatedEnumeration get maskContentUnits; + + /// The read-only **`x`** property of the [SVGMaskElement] interface returns + /// an [SVGAnimatedLength] object containing the value of the `x` attribute of + /// the . It represents the x-axis coordinate of the _top-left_ corner of the + /// masking area. + /// + /// > **Note:** Although this property is read-only, it is merely a container + /// > for two values you can modify, [SVGAnimatedLength.baseVal] and + /// > [SVGAnimatedLength.animVal]. external SVGAnimatedLength get x; + + /// The read-only **`y`** property of the [SVGMaskElement] interface returns + /// an [SVGAnimatedLength] object containing the value of the `y` attribute of + /// the . It represents the y-axis coordinate of the _top-left_ corner of the + /// masking area. + /// + /// > **Note:** Although this property is read-only, it is merely a container + /// > for two values you can modify, [SVGAnimatedLength.baseVal] and + /// > [SVGAnimatedLength.animVal]. external SVGAnimatedLength get y; + + /// The read-only **`width`** property of the [SVGMaskElement] interface + /// returns an [SVGAnimatedLength] object containing the value of the `width` + /// attribute of the . + /// + /// > **Note:** Although this property is read-only, it is merely a container + /// > for two values you can modify, [SVGAnimatedLength.baseVal] and + /// > [SVGAnimatedLength.animVal]. external SVGAnimatedLength get width; + + /// The read-only **`height`** property of the [SVGMaskElement] interface + /// returns an [SVGAnimatedLength] object containing the value of the `height` + /// attribute of the . + /// + /// > **Note:** Although this property is read-only, it is merely a container + /// > for two values you can modify, [SVGAnimatedLength.baseVal] and + /// > [SVGAnimatedLength.animVal]. external SVGAnimatedLength get height; } diff --git a/lib/src/dom/css_properties_values_api.dart b/lib/src/dom/css_properties_values_api.dart index 7936413f..27d84142 100644 --- a/lib/src/dom/css_properties_values_api.dart +++ b/lib/src/dom/css_properties_values_api.dart @@ -23,14 +23,14 @@ extension type PropertyDefinition._(JSObject _) implements JSObject { String initialValue, }); - external set name(String value); external String get name; - external set syntax(String value); + external set name(String value); external String get syntax; - external set inherits(bool value); + external set syntax(String value); external bool get inherits; - external set initialValue(String value); + external set inherits(bool value); external String get initialValue; + external set initialValue(String value); } /// The **`CSSPropertyRule`** interface of the @@ -42,8 +42,26 @@ extension type PropertyDefinition._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSPropertyRule). extension type CSSPropertyRule._(JSObject _) implements CSSRule, JSObject { + /// The read-only **`name`** property of the [CSSPropertyRule] interface + /// represents the property name, this being the serialization of the name + /// given to the custom property in the rule's prelude. external String get name; + + /// The read-only **`syntax`** property of the [CSSPropertyRule] interface + /// returns the literal syntax of the custom property registration represented + /// by the rule, controlling how the property's value is parsed at + /// computed-value time. external String get syntax; + + /// The read-only **`inherits`** property of the [CSSPropertyRule] interface + /// returns the inherit flag of the custom property registration represented + /// by the rule, a boolean describing whether or not the property inherits by + /// default. external bool get inherits; + + /// The read-only **`initialValue`** nullable property of the + /// [CSSPropertyRule] interface returns the initial value of the custom + /// property registration represented by the rule, controlling the property's + /// initial value. external String? get initialValue; } diff --git a/lib/src/dom/css_transitions.dart b/lib/src/dom/css_transitions.dart index b7554554..dca7a3bb 100644 --- a/lib/src/dom/css_transitions.dart +++ b/lib/src/dom/css_transitions.dart @@ -29,8 +29,25 @@ extension type TransitionEvent._(JSObject _) implements Event, JSObject { TransitionEventInit transitionEventInitDict, ]); + /// The **`propertyName`** read-only property of [TransitionEvent] objects is + /// a string containing the name of the CSS property associated with the + /// transition. external String get propertyName; + + /// The **`TransitionEvent.elapsedTime`** read-only property is a + /// `float` giving the amount of time the animation has been running, in + /// seconds, + /// when this event fired. This value is not affected by the + /// property. external num get elapsedTime; + + /// The **`TransitionEvent.pseudoElement`** read-only property is a + /// string, starting with `'::'`, containing the name of the + /// [pseudo-element](https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements) + /// the animation runs on. + /// If the transition doesn't run on a pseudo-element but on the element, an + /// empty string: + /// `''``.` external String get pseudoElement; } extension type TransitionEventInit._(JSObject _) @@ -44,10 +61,10 @@ extension type TransitionEventInit._(JSObject _) String pseudoElement, }); - external set propertyName(String value); external String get propertyName; - external set elapsedTime(num value); + external set propertyName(String value); external num get elapsedTime; - external set pseudoElement(String value); + external set elapsedTime(num value); external String get pseudoElement; + external set pseudoElement(String value); } diff --git a/lib/src/dom/css_transitions_2.dart b/lib/src/dom/css_transitions_2.dart index 0e5e479a..43abb4d2 100644 --- a/lib/src/dom/css_transitions_2.dart +++ b/lib/src/dom/css_transitions_2.dart @@ -36,5 +36,9 @@ extension type CSSStartingStyleRule._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSTransition). extension type CSSTransition._(JSObject _) implements Animation, JSObject { + /// The **`transitionProperty`** property of the + /// [CSSTransition] interface returns the **expanded transition property + /// name** of the transition. This is the longhand CSS property for which the + /// transition was generated. external String get transitionProperty; } diff --git a/lib/src/dom/css_typed_om.dart b/lib/src/dom/css_typed_om.dart index cbe4db3c..61e6ac20 100644 --- a/lib/src/dom/css_typed_om.dart +++ b/lib/src/dom/css_typed_om.dart @@ -71,6 +71,10 @@ extension type StylePropertyMapReadOnly._(JSObject _) implements JSObject { /// [StylePropertyMapReadOnly] interface indicates whether the specified /// property is in the `StylePropertyMapReadOnly` object. external bool has(String property); + + /// The **`size`** read-only property of the + /// [StylePropertyMapReadOnly] interface returns an unsigned long integer + /// containing the size of the `StylePropertyMapReadOnly` object. external int get size; } @@ -126,6 +130,8 @@ extension type CSSUnparsedValue._(JSObject _) implements CSSStyleValue, JSObject { external factory CSSUnparsedValue(JSArray<CSSUnparsedSegment> members); + /// The **`length`** read-only property of the + /// [CSSUnparsedValue] interface returns the number of items in the object. external int get length; } @@ -144,8 +150,18 @@ extension type CSSVariableReferenceValue._(JSObject _) implements JSObject { CSSUnparsedValue? fallback, ]); - external set variable(String value); + /// The **`variable`** property of the + /// [CSSVariableReferenceValue] interface returns the + /// [custom property name](https://developer.mozilla.org/en-US/docs/Web/CSS/--*) + /// of the + /// [CSSVariableReferenceValue]. external String get variable; + external set variable(String value); + + /// The **`fallback`** read-only property of the + /// [CSSVariableReferenceValue] interface returns the + /// [custom property fallback value](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties#custom_property_fallback_values) + /// of the [CSSVariableReferenceValue]. external CSSUnparsedValue? get fallback; } @@ -164,8 +180,11 @@ extension type CSSKeywordValue._(JSObject _) implements CSSStyleValue, JSObject { external factory CSSKeywordValue(String value); - external set value(String value); + /// The **`value`** property of the + /// [CSSKeywordValue] interface returns or sets the value of the + /// `CSSKeywordValue`. external String get value; + external set value(String value); } extension type CSSNumericType._(JSObject _) implements JSObject { external factory CSSNumericType({ @@ -179,22 +198,22 @@ extension type CSSNumericType._(JSObject _) implements JSObject { CSSNumericBaseType percentHint, }); - external set length(int value); external int get length; - external set angle(int value); + external set length(int value); external int get angle; - external set time(int value); + external set angle(int value); external int get time; - external set frequency(int value); + external set time(int value); external int get frequency; - external set resolution(int value); + external set frequency(int value); external int get resolution; - external set flex(int value); + external set resolution(int value); external int get flex; - external set percent(int value); + external set flex(int value); external int get percent; - external set percentHint(CSSNumericBaseType value); + external set percent(int value); external CSSNumericBaseType get percentHint; + external set percentHint(CSSNumericBaseType value); } /// The **`CSSNumericValue`** interface of the @@ -282,8 +301,14 @@ extension type CSSUnitValue._(JSObject _) implements CSSNumericValue, JSObject { String unit, ); - external set value(num value); + /// The **`CSSUnitValue.value`** property of the + /// [CSSUnitValue] interface returns a double indicating the number of units. external num get value; + external set value(num value); + + /// The **`CSSUnitValue.unit`** read-only property + /// of the [CSSUnitValue] interface returns a string + /// indicating the type of unit. external String get unit; } @@ -295,6 +320,11 @@ extension type CSSUnitValue._(JSObject _) implements CSSNumericValue, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSMathValue). extension type CSSMathValue._(JSObject _) implements CSSNumericValue, JSObject { + /// The **`CSSMathValue.operator`** read-only + /// property of the [CSSMathValue] interface indicates the operator that the + /// current subtype represents. For example, if the current `CSSMathValue` + /// subtype is `CSSMathSum`, this property will return the string + /// `"sum"`. external CSSMathOperator get operator; } @@ -314,6 +344,9 @@ extension type CSSMathValue._(JSObject _) implements CSSNumericValue, JSObject { extension type CSSMathSum._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathSum(CSSNumberish args); + /// The **`CSSMathSum.values`** read-only property + /// of the [CSSMathSum] interface returns a [CSSNumericArray] + /// object which contains one or more [CSSNumericValue] objects. external CSSNumericArray get values; } @@ -329,6 +362,10 @@ extension type CSSMathSum._(JSObject _) implements CSSMathValue, JSObject { extension type CSSMathProduct._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathProduct(CSSNumberish args); + /// The **`CSSMathProduct.values`** read-only + /// property of the [CSSMathProduct] interface returns a + /// [CSSNumericArray] object which contains one or more + /// [CSSNumericValue] objects. external CSSNumericArray get values; } @@ -342,6 +379,8 @@ extension type CSSMathProduct._(JSObject _) implements CSSMathValue, JSObject { extension type CSSMathNegate._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathNegate(CSSNumberish arg); + /// The CSSMathNegate.value read-only property of the + /// [CSSMathNegate] interface returns a [CSSNumericValue] object. external CSSNumericValue get value; } @@ -356,6 +395,8 @@ extension type CSSMathNegate._(JSObject _) implements CSSMathValue, JSObject { extension type CSSMathInvert._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathInvert(CSSNumberish arg); + /// The CSSMathInvert.value read-only property of the + /// [CSSMathInvert] interface returns a [CSSNumericValue] object. external CSSNumericValue get value; } @@ -369,6 +410,9 @@ extension type CSSMathInvert._(JSObject _) implements CSSMathValue, JSObject { extension type CSSMathMin._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathMin(CSSNumberish args); + /// The CSSMathMin.values read-only property of the + /// [CSSMathMin] interface returns a [CSSNumericArray] object + /// which contains one or more [CSSNumericValue] objects. external CSSNumericArray get values; } @@ -382,6 +426,9 @@ extension type CSSMathMin._(JSObject _) implements CSSMathValue, JSObject { extension type CSSMathMax._(JSObject _) implements CSSMathValue, JSObject { external factory CSSMathMax(CSSNumberish args); + /// The CSSMathMax.values read-only property of the + /// [CSSMathMax] interface returns a [CSSNumericArray] object + /// which contains one or more [CSSNumericValue] objects. external CSSNumericArray get values; } extension type CSSMathClamp._(JSObject _) implements CSSMathValue, JSObject { @@ -404,6 +451,9 @@ extension type CSSMathClamp._(JSObject _) implements CSSMathValue, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSNumericArray). extension type CSSNumericArray._(JSObject _) implements JSObject { + /// The read-only **`length`** property of the + /// [CSSNumericArray] interface returns the number of + /// [CSSNumericValue] objects in the list. external int get length; } @@ -421,7 +471,20 @@ extension type CSSTransformValue._(JSObject _) /// The **`toMatrix()`** method of the /// [CSSTransformValue] interface returns a [DOMMatrix] object. external DOMMatrix toMatrix(); + + /// The read-only **`length`** property of the + /// [CSSTransformValue] interface returns the number of transform components + /// in + /// the list. external int get length; + + /// The read-only **`is2D`** property of the + /// [CSSTransformValue] interface returns whether the transform is 2D or 3D. + /// + /// In the case of the `CSSTransformValue` this property returns + /// true unless any of the individual functions return false for `Is2D`, in + /// which + /// case it returns false. external bool get is2D; } @@ -447,8 +510,11 @@ extension type CSSTransformComponent._(JSObject _) implements JSObject { /// > found in /// > [Using CSS transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_transforms/Using_CSS_transforms). external DOMMatrix toMatrix(); - external set is2D(bool value); + + /// The **`is2D`** read-only property of the [CSSTransformComponent] interface + /// indicates where the transform is 2D or 3D. external bool get is2D; + external set is2D(bool value); } /// The **`CSSTranslate`** interface of the represents the @@ -468,12 +534,29 @@ extension type CSSTranslate._(JSObject _) CSSNumericValue z, ]); - external set x(CSSNumericValue value); + /// The **`x`** property of the + /// [CSSTranslate] interface gets and sets the abscissa or x-axis of the + /// translating vector. external CSSNumericValue get x; - external set y(CSSNumericValue value); + external set x(CSSNumericValue value); + + /// The **`y`** property of the + /// [CSSTranslate] interface gets and sets the ordinate or y-axis of the + /// translating vector. external CSSNumericValue get y; - external set z(CSSNumericValue value); + external set y(CSSNumericValue value); + + /// The **`z`** property of the + /// [CSSTranslate] interface representing the z-component of the translating + /// vector. A positive value moves the element towards the viewer, and a + /// negative value + /// farther away. + /// + /// If this value is present then the transform is a 3D transform and the + /// `is2D` + /// property will be set to false. external CSSNumericValue get z; + external set z(CSSNumericValue value); } /// The **`CSSRotate`** interface of the represents the rotate value of the @@ -493,14 +576,32 @@ extension type CSSRotate._(JSObject _) CSSNumericValue angle, ]); - external set x(CSSNumberish value); + /// The **`x`** property of the + /// [CSSRotate] interface gets and sets the abscissa or x-axis of the + /// translating vector. external CSSNumberish get x; - external set y(CSSNumberish value); + external set x(CSSNumberish value); + + /// The **`y`** property of the + /// [CSSRotate] interface gets and sets the ordinate or y-axis of the + /// translating vector. external CSSNumberish get y; - external set z(CSSNumberish value); + external set y(CSSNumberish value); + + /// The **`z`** property of the + /// [CSSRotate] interface representing the z-component of the translating + /// vector. A positive value moves the element towards the viewer, and a + /// negative value + /// farther away. external CSSNumberish get z; - external set angle(CSSNumericValue value); + external set z(CSSNumberish value); + + /// The **`angle`** property of the + /// [CSSRotate] interface gets and sets the angle of rotation. A positive + /// angle + /// denotes a clockwise rotation, a negative angle a counter-clockwise one. external CSSNumericValue get angle; + external set angle(CSSNumericValue value); } /// The **`CSSScale`** interface of the represents the @@ -522,12 +623,29 @@ extension type CSSScale._(JSObject _) CSSNumberish z, ]); - external set x(CSSNumberish value); + /// The **`x`** property of the + /// [CSSScale] interface gets and sets the abscissa or x-axis of the + /// translating vector. external CSSNumberish get x; - external set y(CSSNumberish value); + external set x(CSSNumberish value); + + /// The **`y`** property of the + /// [CSSScale] interface gets and sets the ordinate or y-axis of the + /// translating vector. external CSSNumberish get y; - external set z(CSSNumberish value); + external set y(CSSNumberish value); + + /// The **`z`** property of the + /// [CSSScale] interface representing the z-component of the translating + /// vector. A positive value moves the element towards the viewer, and a + /// negative value + /// farther away. + /// + /// If this value is present then the transform is a 3D transform and the + /// `is2D` + /// property will be set to false. external CSSNumberish get z; + external set z(CSSNumberish value); } /// The **`CSSSkew`** interface of the is part of the [CSSTransformValue] @@ -546,10 +664,17 @@ extension type CSSSkew._(JSObject _) CSSNumericValue ay, ); - external set ax(CSSNumericValue value); + /// The **`ax`** property of the + /// [CSSSkew] interface gets and sets the angle used to distort the element + /// along the x-axis (or abscissa). external CSSNumericValue get ax; - external set ay(CSSNumericValue value); + external set ax(CSSNumericValue value); + + /// The **`ay`** property of the + /// [CSSSkew] interface gets and sets the angle used to distort the element + /// along the y-axis (or ordinate). external CSSNumericValue get ay; + external set ay(CSSNumericValue value); } /// The **`CSSSkewX`** interface of the represents the @@ -565,8 +690,11 @@ extension type CSSSkewX._(JSObject _) implements CSSTransformComponent, JSObject { external factory CSSSkewX(CSSNumericValue ax); - external set ax(CSSNumericValue value); + /// The **`ax`** property of the + /// [CSSSkewX] interface gets and sets the angle used to distort the element + /// along the x-axis (or abscissa). external CSSNumericValue get ax; + external set ax(CSSNumericValue value); } /// The **`CSSSkewY`** interface of the represents the @@ -582,8 +710,11 @@ extension type CSSSkewY._(JSObject _) implements CSSTransformComponent, JSObject { external factory CSSSkewY(CSSNumericValue ay); - external set ay(CSSNumericValue value); + /// The **`ay`** property of the + /// [CSSSkewY] interface gets and sets the angle used to distort the element + /// along the y-axis (or ordinate). external CSSNumericValue get ay; + external set ay(CSSNumericValue value); } /// The **`CSSPerspective`** interface of the represents the @@ -599,8 +730,14 @@ extension type CSSPerspective._(JSObject _) implements CSSTransformComponent, JSObject { external factory CSSPerspective(CSSPerspectiveValue length); - external set length(CSSPerspectiveValue value); + /// The **`length`** property of the + /// [CSSPerspective] interface sets the distance from z=0. + /// + /// It is used to apply a perspective transform to the element and its + /// content. If the + /// value is 0 or a negative number, no perspective transform is applied. external CSSPerspectiveValue get length; + external set length(CSSPerspectiveValue value); } /// The **`CSSMatrixComponent`** interface of the represents the @@ -621,14 +758,23 @@ extension type CSSMatrixComponent._(JSObject _) CSSMatrixComponentOptions options, ]); - external set matrix(DOMMatrix value); + /// The **`matrix`** property of the + /// [CSSMatrixComponent] interface gets and sets a 2d or 3d matrix. + /// + /// See the + /// [matrix()](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix) + /// and + /// [matrix3d()](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix3d) + /// pages for + /// examples. external DOMMatrix get matrix; + external set matrix(DOMMatrix value); } extension type CSSMatrixComponentOptions._(JSObject _) implements JSObject { external factory CSSMatrixComponentOptions({bool is2D}); - external set is2D(bool value); external bool get is2D; + external set is2D(bool value); } /// The **`CSSImageValue`** interface of the @@ -659,14 +805,14 @@ extension type CSSRGB._(JSObject _) implements CSSColorValue, JSObject { CSSColorPercent alpha, ]); - external set r(CSSColorRGBComp value); external CSSColorRGBComp get r; - external set g(CSSColorRGBComp value); + external set r(CSSColorRGBComp value); external CSSColorRGBComp get g; - external set b(CSSColorRGBComp value); + external set g(CSSColorRGBComp value); external CSSColorRGBComp get b; - external set alpha(CSSColorPercent value); + external set b(CSSColorRGBComp value); external CSSColorPercent get alpha; + external set alpha(CSSColorPercent value); } extension type CSSHSL._(JSObject _) implements CSSColorValue, JSObject { external factory CSSHSL( @@ -676,14 +822,14 @@ extension type CSSHSL._(JSObject _) implements CSSColorValue, JSObject { CSSColorPercent alpha, ]); - external set h(CSSColorAngle value); external CSSColorAngle get h; - external set s(CSSColorPercent value); + external set h(CSSColorAngle value); external CSSColorPercent get s; - external set l(CSSColorPercent value); + external set s(CSSColorPercent value); external CSSColorPercent get l; - external set alpha(CSSColorPercent value); + external set l(CSSColorPercent value); external CSSColorPercent get alpha; + external set alpha(CSSColorPercent value); } extension type CSSHWB._(JSObject _) implements CSSColorValue, JSObject { external factory CSSHWB( @@ -693,14 +839,14 @@ extension type CSSHWB._(JSObject _) implements CSSColorValue, JSObject { CSSNumberish alpha, ]); - external set h(CSSNumericValue value); external CSSNumericValue get h; - external set w(CSSNumberish value); + external set h(CSSNumericValue value); external CSSNumberish get w; - external set b(CSSNumberish value); + external set w(CSSNumberish value); external CSSNumberish get b; - external set alpha(CSSNumberish value); + external set b(CSSNumberish value); external CSSNumberish get alpha; + external set alpha(CSSNumberish value); } extension type CSSLab._(JSObject _) implements CSSColorValue, JSObject { external factory CSSLab( @@ -710,14 +856,14 @@ extension type CSSLab._(JSObject _) implements CSSColorValue, JSObject { CSSColorPercent alpha, ]); - external set l(CSSColorPercent value); external CSSColorPercent get l; - external set a(CSSColorNumber value); + external set l(CSSColorPercent value); external CSSColorNumber get a; - external set b(CSSColorNumber value); + external set a(CSSColorNumber value); external CSSColorNumber get b; - external set alpha(CSSColorPercent value); + external set b(CSSColorNumber value); external CSSColorPercent get alpha; + external set alpha(CSSColorPercent value); } extension type CSSLCH._(JSObject _) implements CSSColorValue, JSObject { external factory CSSLCH( @@ -727,14 +873,14 @@ extension type CSSLCH._(JSObject _) implements CSSColorValue, JSObject { CSSColorPercent alpha, ]); - external set l(CSSColorPercent value); external CSSColorPercent get l; - external set c(CSSColorPercent value); + external set l(CSSColorPercent value); external CSSColorPercent get c; - external set h(CSSColorAngle value); + external set c(CSSColorPercent value); external CSSColorAngle get h; - external set alpha(CSSColorPercent value); + external set h(CSSColorAngle value); external CSSColorPercent get alpha; + external set alpha(CSSColorPercent value); } extension type CSSOKLab._(JSObject _) implements CSSColorValue, JSObject { external factory CSSOKLab( @@ -744,14 +890,14 @@ extension type CSSOKLab._(JSObject _) implements CSSColorValue, JSObject { CSSColorPercent alpha, ]); - external set l(CSSColorPercent value); external CSSColorPercent get l; - external set a(CSSColorNumber value); + external set l(CSSColorPercent value); external CSSColorNumber get a; - external set b(CSSColorNumber value); + external set a(CSSColorNumber value); external CSSColorNumber get b; - external set alpha(CSSColorPercent value); + external set b(CSSColorNumber value); external CSSColorPercent get alpha; + external set alpha(CSSColorPercent value); } extension type CSSOKLCH._(JSObject _) implements CSSColorValue, JSObject { external factory CSSOKLCH( @@ -761,14 +907,14 @@ extension type CSSOKLCH._(JSObject _) implements CSSColorValue, JSObject { CSSColorPercent alpha, ]); - external set l(CSSColorPercent value); external CSSColorPercent get l; - external set c(CSSColorPercent value); + external set l(CSSColorPercent value); external CSSColorPercent get c; - external set h(CSSColorAngle value); + external set c(CSSColorPercent value); external CSSColorAngle get h; - external set alpha(CSSColorPercent value); + external set h(CSSColorAngle value); external CSSColorPercent get alpha; + external set alpha(CSSColorPercent value); } extension type CSSColor._(JSObject _) implements CSSColorValue, JSObject { external factory CSSColor( @@ -777,10 +923,10 @@ extension type CSSColor._(JSObject _) implements CSSColorValue, JSObject { CSSNumberish alpha, ]); - external set colorSpace(CSSKeywordish value); external CSSKeywordish get colorSpace; - external set channels(JSArray<CSSColorPercent> value); + external set colorSpace(CSSKeywordish value); external JSArray<CSSColorPercent> get channels; - external set alpha(CSSNumberish value); + external set channels(JSArray<CSSColorPercent> value); external CSSNumberish get alpha; + external set alpha(CSSNumberish value); } diff --git a/lib/src/dom/css_view_transitions.dart b/lib/src/dom/css_view_transitions.dart index 0f37ffbf..19ffa14d 100644 --- a/lib/src/dom/css_view_transitions.dart +++ b/lib/src/dom/css_view_transitions.dart @@ -36,7 +36,38 @@ extension type ViewTransition._(JSObject _) implements JSObject { /// transition, but doesn't skip running the [Document.startViewTransition] /// callback that updates the DOM. external void skipTransition(); + + /// The **`updateCallbackDone`** read-only property of the + /// [ViewTransition] interface is a `Promise` that fulfills when the promise + /// returned by the [Document.startViewTransition]'s callback fulfills, or + /// rejects when it rejects. + /// + /// `updateCallbackDone` is useful when you don't care about the + /// success/failure of the transition animation, and just want to know if and + /// when the DOM is updated. external JSPromise<JSAny?> get updateCallbackDone; + + /// The **`ready`** read-only property of the + /// [ViewTransition] interface is a `Promise` that fulfills once the + /// pseudo-element tree is created and the transition animation is about to + /// start. + /// + /// `ready` will reject if the transition cannot begin. This can be due to + /// misconfiguration, for example duplicate s, or if the callback passed to + /// [Document.startViewTransition] throws or returns a promise that rejects. external JSPromise<JSAny?> get ready; + + /// The **`finished`** read-only property of the + /// [ViewTransition] interface is a `Promise` that fulfills once the + /// transition animation is finished, and the new page view is visible and + /// interactive to the user. + /// + /// `finished` only rejects if the callback passed to + /// [Document.startViewTransition]throws or returns a promise that rejects, + /// which indicates that the new state of the page wasn't created. + /// + /// If a transition animation fails to start, or is skipped during the + /// animation using [ViewTransition.skipTransition], the end state is still + /// reached therefore `finished` still fulfills. external JSPromise<JSAny?> get finished; } diff --git a/lib/src/dom/cssom.dart b/lib/src/dom/cssom.dart index bc9f7af2..00be0949 100644 --- a/lib/src/dom/cssom.dart +++ b/lib/src/dom/cssom.dart @@ -42,8 +42,15 @@ extension type MediaList._(JSObject _) implements JSObject { /// The `deleteMedium()` method of the [MediaList] interface removes from this /// `MediaList` the given media query. external void deleteMedium(String medium); - external set mediaText(String value); + + /// The **`mediaText`** property of the [MediaList] + /// interface is a that returns a string representing the + /// `MediaList` as text, and also allows you to set a new `MediaList`. external String get mediaText; + external set mediaText(String value); + + /// The read-only **`length`** property of the [MediaList] interface returns + /// the number of media queries in the list. external int get length; } @@ -56,14 +63,60 @@ extension type MediaList._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet). extension type StyleSheet._(JSObject _) implements JSObject { + /// The **`type`** property of the [StyleSheet] + /// interface specifies the style sheet language for the given style sheet. external String get type; + + /// The **`href`** property of the [StyleSheet] + /// interface returns the location of the style sheet. + /// + /// This property is read-only. external String? get href; + + /// The **`ownerNode`** property of the + /// [StyleSheet] interface returns the node that associates this style sheet + /// with the document. + /// + /// This is usually an HTML + /// [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) + /// or + /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style) + /// element, but + /// can also return a + /// [processing instruction node](https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction) + /// in the case of `<?xml-stylesheet ?>`. external JSObject? get ownerNode; + + /// The **`parentStyleSheet`** property of the + /// [StyleSheet] interface returns the style sheet, if any, that is including + /// the given style sheet. external CSSStyleSheet? get parentStyleSheet; + + /// The **`title`** property of the [StyleSheet] interface returns the + /// advisory title of the current style sheet. + /// + /// The title is often specified in the [StyleSheet.OwnerNode]. external String? get title; + + /// The **`media`** property of the [StyleSheet] interface specifies the + /// intended destination media for style information. It is a read-only, + /// array-like `MediaList` object and can be removed with `deleteMedium()` and + /// added with `appendMedium()`. external MediaList get media; - external set disabled(bool value); + + /// The **`disabled`** property of the + /// [StyleSheet] interface determines whether the style sheet is prevented + /// from + /// applying to the document. + /// + /// A style sheet may be disabled by manually setting this property to `true` + /// or + /// if it's an inactive + /// [alternative style sheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets). + /// Note that `disabled === false` does not guarantee the style + /// sheet is applied (it could be removed from the document, for instance). external bool get disabled; + external set disabled(bool value); } /// The **`CSSStyleSheet`** interface represents a single @@ -160,8 +213,33 @@ extension type CSSStyleSheet._(JSObject _) implements StyleSheet, JSObject { /// > the standard method [CSSStyleSheet.deleteRule]. You /// > should use that instead. external void removeRule([int index]); + + /// The read-only [CSSStyleSheet] property + /// **`ownerRule`** returns the [CSSImportRule] + /// corresponding to the at-rule which imported the stylesheet into + /// the document. If the stylesheet wasn't imported into the document using + /// `@import`, the returned value is `null`. external CSSRule? get ownerRule; + + /// The read-only [CSSStyleSheet] property + /// **`cssRules`** returns a live [CSSRuleList] which + /// provides a real-time, up-to-date list of every CSS rule which comprises + /// the + /// stylesheet. Each item in the list is a [CSSRule] defining a single + /// rule. external CSSRuleList get cssRules; + + /// **`rules`** is a _deprecated_ + /// _legacy property_ of the [CSSStyleSheet] interface. Functionally + /// identical to the preferred [CSSStyleSheet.cssRules] property, + /// it provides access to a live-updating list of the CSS rules comprising the + /// stylesheet. + /// + /// > **Note:** As a legacy property, you should not use `rules` and + /// > should instead use the preferred [CSSStyleSheet.cssRules]. + /// > While `rules` is unlikely to be removed soon, its availability is not as + /// > widespread and using it will result in compatibility problems for your + /// > site or app. external CSSRuleList get rules; } extension type CSSStyleSheetInit._(JSObject _) implements JSObject { @@ -171,12 +249,12 @@ extension type CSSStyleSheetInit._(JSObject _) implements JSObject { bool disabled, }); - external set baseURL(String value); external String get baseURL; - external set media(JSAny value); + external set baseURL(String value); external JSAny get media; - external set disabled(bool value); + external set media(JSAny value); external bool get disabled; + external set disabled(bool value); } /// The `StyleSheetList` interface represents a list of [CSSStyleSheet] objects. @@ -202,6 +280,9 @@ extension type StyleSheetList._(JSObject _) implements JSObject { /// The **`item()`** method of the [StyleSheetList] interface returns a single /// [CSSStyleSheet] object. external CSSStyleSheet? item(int index); + + /// The **`length`** read-only property of the [StyleSheetList] interface + /// returns the number of [CSSStyleSheet] objects in the collection. external int get length; } @@ -236,6 +317,9 @@ extension type CSSRuleList._(JSObject _) implements JSObject { /// [CSSRule] object at the specified `index` or `null` if the specified /// `index` doesn't exist. external CSSRule? item(int index); + + /// The **`length`** property of the [CSSRuleList] interface returns the + /// number of [CSSRule] objects in the list. external int get length; } @@ -277,10 +361,56 @@ extension type CSSRule._(JSObject _) implements JSObject { external static int get PAGE_RULE; external static int get MARGIN_RULE; external static int get NAMESPACE_RULE; - external set cssText(String value); + + /// The **`cssText`** property of the [CSSRule] + /// interface returns the actual text of a [CSSStyleSheet] style-rule. + /// + /// > **Note:** Do not confuse this property with element-style + /// > [CSSStyleDeclaration.cssText]. + /// + /// Be aware that this property can no longer be set directly, as it is + /// [now specified](https://www.w3.org/TR/cssom-1/#changes-from-5-december-2013) + /// to be _functionally_ modify-only, and silently so. In other words, + /// attempting to + /// set it _does absolutely nothing_, and doesn't even omit a warning or + /// error. + /// Furthermore, it has no settable sub-properties. Therefore, to modify it, + /// use the + /// stylesheet's [CSSRuleList]`[index]` properties + /// [CSSStyleRule.selectorText] and + /// [CSSStyleRule.style] (or its sub-properties). See + /// [Using dynamic styling information](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/Using_dynamic_styling_information) + /// for details. external String get cssText; + external set cssText(String value); + + /// The **`parentRule`** property of the [CSSRule] + /// interface returns the containing rule of the current rule if this exists, + /// or otherwise + /// returns null. external CSSRule? get parentRule; + + /// The **`parentStyleSheet`** property of the + /// [CSSRule] interface returns the [StyleSheet] object in which + /// the current rule is defined. external CSSStyleSheet? get parentStyleSheet; + + /// The read-only **`type`** property of the + /// [CSSRule] interface is a deprecated property that returns an integer + /// indicating which type of rule the [CSSRule] represents. + /// + /// If you need to distinguish different types of CSS rule, a good alternative + /// is to use + /// [`constructor.name`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name): + /// + /// ```js + /// const sheets = Array.from(document.styleSheets); + /// const rules = sheets.map((sheet) => Array.from(sheet.cssRules)).flat(); + /// + /// for (const rule of rules) { + /// console.log(rule.constructor.name); + /// } + /// ``` external int get type; } @@ -291,9 +421,20 @@ extension type CSSRule._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule). extension type CSSStyleRule._(JSObject _) implements CSSGroupingRule, JSObject { + /// The **`styleMap`** read-only property of the + /// [CSSStyleRule] interface returns a [StylePropertyMap] object + /// which provides access to the rule's property-value pairs. external StylePropertyMap get styleMap; - external set selectorText(String value); + + /// The **`selectorText`** property of the [CSSStyleRule] interface gets and + /// sets the selectors associated with the `CSSStyleRule`. external String get selectorText; + external set selectorText(String value); + + /// The read-only **`style`** property is the [CSSStyleDeclaration] interface + /// for the + /// [declaration block](https://www.w3.org/TR/1998/REC-CSS2-19980512/syndata.html#block) + /// of the [CSSStyleRule]. external CSSStyleDeclaration get style; } @@ -305,10 +446,45 @@ extension type CSSStyleRule._(JSObject _) implements CSSGroupingRule, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule). extension type CSSImportRule._(JSObject _) implements CSSRule, JSObject { + /// The read-only **`href`** property of the + /// [CSSImportRule] interface returns the URL specified by the + /// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule). + /// + /// The resolved URL will be the + /// [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#href) + /// attribute of the + /// associated stylesheet. external String get href; + + /// The read-only **`media`** property of the + /// [CSSImportRule] interface returns a [MediaList] object, + /// containing the value of the `media` attribute of the associated + /// stylesheet. external MediaList get media; + + /// The read-only **`styleSheet`** property of the + /// [CSSImportRule] interface returns the CSS Stylesheet specified by the + /// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule). This + /// will be + /// in the form of a [CSSStyleSheet] object. + /// + /// An [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule) + /// always has + /// an associated stylesheet. external CSSStyleSheet? get styleSheet; + + /// The read-only **`layerName`** property of the [CSSImportRule] interface + /// returns the name of the cascade layer created by the + /// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule). + /// + /// If the created layer is anonymous, the string is empty (`""`), if no layer + /// has been + /// created, it is the `null` object. external String? get layerName; + + /// The read-only **`supportsText`** property of the [CSSImportRule] interface + /// returns the supports condition specified by the + /// [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule). external String? get supportsText; } @@ -334,6 +510,10 @@ extension type CSSGroupingRule._(JSObject _) implements CSSRule, JSObject { /// [CSSGroupingRule] interface removes a CSS rule from a list of child CSS /// rules. external void deleteRule(int index); + + /// The **`cssRules`** property of the + /// [CSSGroupingRule] interface returns a [CSSRuleList] containing + /// a collection of [CSSRule] objects. external CSSRuleList get cssRules; } @@ -344,8 +524,16 @@ extension type CSSGroupingRule._(JSObject _) implements CSSRule, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule). extension type CSSPageRule._(JSObject _) implements CSSGroupingRule, JSObject { - external set selectorText(String value); + /// The **`selectorText`** property of the [CSSPageRule] interface gets and + /// sets the selectors associated with the `CSSPageRule`. external String get selectorText; + external set selectorText(String value); + + /// The **`style`** read-only property of the [CSSPageRule] interface returns + /// a [CSSStyleDeclaration] object. This represents an object that is a + /// [CSS declaration block](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/CSS_Declaration_Block), + /// and exposes style information and various style-related methods and + /// properties. external CSSStyleDeclaration get style; } extension type CSSMarginRule._(JSObject _) implements CSSRule, JSObject { @@ -362,7 +550,13 @@ extension type CSSMarginRule._(JSObject _) implements CSSRule, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule). extension type CSSNamespaceRule._(JSObject _) implements CSSRule, JSObject { + /// The read-only **`namespaceURI`** property of the [CSSNamespaceRule] + /// returns a string containing the text of the URI of the given namespace. external String get namespaceURI; + + /// The read-only **`prefix`** property of the [CSSNamespaceRule] returns a + /// string with the name of the prefix associated to this namespace. If there + /// is no such prefix, it returns an empty string. external String get prefix; } @@ -416,1278 +610,1302 @@ extension type CSSStyleDeclaration._(JSObject _) implements JSObject { /// The **`CSSStyleDeclaration.removeProperty()`** method interface /// removes a property from a CSS style declaration object. external String removeProperty(String property); - external set cssText(String value); + + /// The **`cssText`** property of the [CSSStyleDeclaration] interface returns + /// or sets the text of the element's **inline** style declaration only. + /// + /// To be able to set a **stylesheet** rule dynamically, see + /// [Using dynamic styling information](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/Using_dynamic_styling_information). + /// + /// Not to be confused with stylesheet style-rule [CSSRule.cssText]. external String get cssText; + external set cssText(String value); + + /// The read-only property returns an integer that represents the + /// number of style declarations in this CSS declaration block. external int get length; + + /// The **CSSStyleDeclaration.parentRule** read-only + /// property returns a [CSSRule] that is the parent of this style + /// block, e.g. a [CSSStyleRule] representing the style for a CSS + /// selector. external CSSRule? get parentRule; - external set cssFloat(String value); + + /// The **`cssFloat`** property of the [CSSStyleDeclaration] interface returns + /// the result of invoking [CSSStyleDeclaration.getPropertyValue] with `float` + /// as an argument. + /// + /// When setting, it invokes [CSSStyleDeclaration.setProperty] with `float` as + /// the first argument, and the given value as the second argument. The given + /// value must be a valid value for the `float` property. external String get cssFloat; - external set accentColor(String value); + external set cssFloat(String value); external String get accentColor; - external set alignContent(String value); + external set accentColor(String value); external String get alignContent; - external set alignItems(String value); + external set alignContent(String value); external String get alignItems; - external set alignSelf(String value); + external set alignItems(String value); external String get alignSelf; - external set alignmentBaseline(String value); + external set alignSelf(String value); external String get alignmentBaseline; - external set all(String value); + external set alignmentBaseline(String value); external String get all; - external set anchorDefault(String value); + external set all(String value); external String get anchorDefault; - external set anchorName(String value); + external set anchorDefault(String value); external String get anchorName; - external set animation(String value); + external set anchorName(String value); external String get animation; - external set animationComposition(String value); + external set animation(String value); external String get animationComposition; - external set animationDelay(String value); + external set animationComposition(String value); external String get animationDelay; - external set animationDirection(String value); + external set animationDelay(String value); external String get animationDirection; - external set animationDuration(String value); + external set animationDirection(String value); external String get animationDuration; - external set animationFillMode(String value); + external set animationDuration(String value); external String get animationFillMode; - external set animationIterationCount(String value); + external set animationFillMode(String value); external String get animationIterationCount; - external set animationName(String value); + external set animationIterationCount(String value); external String get animationName; - external set animationPlayState(String value); + external set animationName(String value); external String get animationPlayState; - external set animationRange(String value); + external set animationPlayState(String value); external String get animationRange; - external set animationRangeEnd(String value); + external set animationRange(String value); external String get animationRangeEnd; - external set animationRangeStart(String value); + external set animationRangeEnd(String value); external String get animationRangeStart; - external set animationTimeline(String value); + external set animationRangeStart(String value); external String get animationTimeline; - external set animationTimingFunction(String value); + external set animationTimeline(String value); external String get animationTimingFunction; - external set appearance(String value); + external set animationTimingFunction(String value); external String get appearance; - external set aspectRatio(String value); + external set appearance(String value); external String get aspectRatio; - external set backdropFilter(String value); + external set aspectRatio(String value); external String get backdropFilter; - external set backfaceVisibility(String value); + external set backdropFilter(String value); external String get backfaceVisibility; - external set background(String value); + external set backfaceVisibility(String value); external String get background; - external set backgroundAttachment(String value); + external set background(String value); external String get backgroundAttachment; - external set backgroundBlendMode(String value); + external set backgroundAttachment(String value); external String get backgroundBlendMode; - external set backgroundClip(String value); + external set backgroundBlendMode(String value); external String get backgroundClip; - external set backgroundColor(String value); + external set backgroundClip(String value); external String get backgroundColor; - external set backgroundImage(String value); + external set backgroundColor(String value); external String get backgroundImage; - external set backgroundOrigin(String value); + external set backgroundImage(String value); external String get backgroundOrigin; - external set backgroundPosition(String value); + external set backgroundOrigin(String value); external String get backgroundPosition; - external set backgroundPositionBlock(String value); + external set backgroundPosition(String value); external String get backgroundPositionBlock; - external set backgroundPositionInline(String value); + external set backgroundPositionBlock(String value); external String get backgroundPositionInline; - external set backgroundPositionX(String value); + external set backgroundPositionInline(String value); external String get backgroundPositionX; - external set backgroundPositionY(String value); + external set backgroundPositionX(String value); external String get backgroundPositionY; - external set backgroundRepeat(String value); + external set backgroundPositionY(String value); external String get backgroundRepeat; - external set backgroundSize(String value); + external set backgroundRepeat(String value); external String get backgroundSize; - external set backgroundTbd(String value); + external set backgroundSize(String value); external String get backgroundTbd; - external set baselineShift(String value); + external set backgroundTbd(String value); external String get baselineShift; - external set baselineSource(String value); + external set baselineShift(String value); external String get baselineSource; - external set blockEllipsis(String value); + external set baselineSource(String value); external String get blockEllipsis; - external set blockSize(String value); + external set blockEllipsis(String value); external String get blockSize; - external set blockStep(String value); + external set blockSize(String value); external String get blockStep; - external set blockStepAlign(String value); + external set blockStep(String value); external String get blockStepAlign; - external set blockStepInsert(String value); + external set blockStepAlign(String value); external String get blockStepInsert; - external set blockStepRound(String value); + external set blockStepInsert(String value); external String get blockStepRound; - external set blockStepSize(String value); + external set blockStepRound(String value); external String get blockStepSize; - external set bookmarkLabel(String value); + external set blockStepSize(String value); external String get bookmarkLabel; - external set bookmarkLevel(String value); + external set bookmarkLabel(String value); external String get bookmarkLevel; - external set bookmarkState(String value); + external set bookmarkLevel(String value); external String get bookmarkState; - external set border(String value); + external set bookmarkState(String value); external String get border; - external set borderBlock(String value); + external set border(String value); external String get borderBlock; - external set borderBlockColor(String value); + external set borderBlock(String value); external String get borderBlockColor; - external set borderBlockEnd(String value); + external set borderBlockColor(String value); external String get borderBlockEnd; - external set borderBlockEndColor(String value); + external set borderBlockEnd(String value); external String get borderBlockEndColor; - external set borderBlockEndRadius(String value); + external set borderBlockEndColor(String value); external String get borderBlockEndRadius; - external set borderBlockEndStyle(String value); + external set borderBlockEndRadius(String value); external String get borderBlockEndStyle; - external set borderBlockEndWidth(String value); + external set borderBlockEndStyle(String value); external String get borderBlockEndWidth; - external set borderBlockStart(String value); + external set borderBlockEndWidth(String value); external String get borderBlockStart; - external set borderBlockStartColor(String value); + external set borderBlockStart(String value); external String get borderBlockStartColor; - external set borderBlockStartRadius(String value); + external set borderBlockStartColor(String value); external String get borderBlockStartRadius; - external set borderBlockStartStyle(String value); + external set borderBlockStartRadius(String value); external String get borderBlockStartStyle; - external set borderBlockStartWidth(String value); + external set borderBlockStartStyle(String value); external String get borderBlockStartWidth; - external set borderBlockStyle(String value); + external set borderBlockStartWidth(String value); external String get borderBlockStyle; - external set borderBlockWidth(String value); + external set borderBlockStyle(String value); external String get borderBlockWidth; - external set borderBottom(String value); + external set borderBlockWidth(String value); external String get borderBottom; - external set borderBottomColor(String value); + external set borderBottom(String value); external String get borderBottomColor; - external set borderBottomLeftRadius(String value); + external set borderBottomColor(String value); external String get borderBottomLeftRadius; - external set borderBottomRadius(String value); + external set borderBottomLeftRadius(String value); external String get borderBottomRadius; - external set borderBottomRightRadius(String value); + external set borderBottomRadius(String value); external String get borderBottomRightRadius; - external set borderBottomStyle(String value); + external set borderBottomRightRadius(String value); external String get borderBottomStyle; - external set borderBottomWidth(String value); + external set borderBottomStyle(String value); external String get borderBottomWidth; - external set borderBoundary(String value); + external set borderBottomWidth(String value); external String get borderBoundary; - external set borderClip(String value); + external set borderBoundary(String value); external String get borderClip; - external set borderClipBottom(String value); + external set borderClip(String value); external String get borderClipBottom; - external set borderClipLeft(String value); + external set borderClipBottom(String value); external String get borderClipLeft; - external set borderClipRight(String value); + external set borderClipLeft(String value); external String get borderClipRight; - external set borderClipTop(String value); + external set borderClipRight(String value); external String get borderClipTop; - external set borderCollapse(String value); + external set borderClipTop(String value); external String get borderCollapse; - external set borderColor(String value); + external set borderCollapse(String value); external String get borderColor; - external set borderEndEndRadius(String value); + external set borderColor(String value); external String get borderEndEndRadius; - external set borderEndStartRadius(String value); + external set borderEndEndRadius(String value); external String get borderEndStartRadius; - external set borderImage(String value); + external set borderEndStartRadius(String value); external String get borderImage; - external set borderImageOutset(String value); + external set borderImage(String value); external String get borderImageOutset; - external set borderImageRepeat(String value); + external set borderImageOutset(String value); external String get borderImageRepeat; - external set borderImageSlice(String value); + external set borderImageRepeat(String value); external String get borderImageSlice; - external set borderImageSource(String value); + external set borderImageSlice(String value); external String get borderImageSource; - external set borderImageWidth(String value); + external set borderImageSource(String value); external String get borderImageWidth; - external set borderInline(String value); + external set borderImageWidth(String value); external String get borderInline; - external set borderInlineColor(String value); + external set borderInline(String value); external String get borderInlineColor; - external set borderInlineEnd(String value); + external set borderInlineColor(String value); external String get borderInlineEnd; - external set borderInlineEndColor(String value); + external set borderInlineEnd(String value); external String get borderInlineEndColor; - external set borderInlineEndRadius(String value); + external set borderInlineEndColor(String value); external String get borderInlineEndRadius; - external set borderInlineEndStyle(String value); + external set borderInlineEndRadius(String value); external String get borderInlineEndStyle; - external set borderInlineEndWidth(String value); + external set borderInlineEndStyle(String value); external String get borderInlineEndWidth; - external set borderInlineStart(String value); + external set borderInlineEndWidth(String value); external String get borderInlineStart; - external set borderInlineStartColor(String value); + external set borderInlineStart(String value); external String get borderInlineStartColor; - external set borderInlineStartRadius(String value); + external set borderInlineStartColor(String value); external String get borderInlineStartRadius; - external set borderInlineStartStyle(String value); + external set borderInlineStartRadius(String value); external String get borderInlineStartStyle; - external set borderInlineStartWidth(String value); + external set borderInlineStartStyle(String value); external String get borderInlineStartWidth; - external set borderInlineStyle(String value); + external set borderInlineStartWidth(String value); external String get borderInlineStyle; - external set borderInlineWidth(String value); + external set borderInlineStyle(String value); external String get borderInlineWidth; - external set borderLeft(String value); + external set borderInlineWidth(String value); external String get borderLeft; - external set borderLeftColor(String value); + external set borderLeft(String value); external String get borderLeftColor; - external set borderLeftRadius(String value); + external set borderLeftColor(String value); external String get borderLeftRadius; - external set borderLeftStyle(String value); + external set borderLeftRadius(String value); external String get borderLeftStyle; - external set borderLeftWidth(String value); + external set borderLeftStyle(String value); external String get borderLeftWidth; - external set borderLimit(String value); + external set borderLeftWidth(String value); external String get borderLimit; - external set borderRadius(String value); + external set borderLimit(String value); external String get borderRadius; - external set borderRight(String value); + external set borderRadius(String value); external String get borderRight; - external set borderRightColor(String value); + external set borderRight(String value); external String get borderRightColor; - external set borderRightRadius(String value); + external set borderRightColor(String value); external String get borderRightRadius; - external set borderRightStyle(String value); + external set borderRightRadius(String value); external String get borderRightStyle; - external set borderRightWidth(String value); + external set borderRightStyle(String value); external String get borderRightWidth; - external set borderSpacing(String value); + external set borderRightWidth(String value); external String get borderSpacing; - external set borderStartEndRadius(String value); + external set borderSpacing(String value); external String get borderStartEndRadius; - external set borderStartStartRadius(String value); + external set borderStartEndRadius(String value); external String get borderStartStartRadius; - external set borderStyle(String value); + external set borderStartStartRadius(String value); external String get borderStyle; - external set borderTop(String value); + external set borderStyle(String value); external String get borderTop; - external set borderTopColor(String value); + external set borderTop(String value); external String get borderTopColor; - external set borderTopLeftRadius(String value); + external set borderTopColor(String value); external String get borderTopLeftRadius; - external set borderTopRadius(String value); + external set borderTopLeftRadius(String value); external String get borderTopRadius; - external set borderTopRightRadius(String value); + external set borderTopRadius(String value); external String get borderTopRightRadius; - external set borderTopStyle(String value); + external set borderTopRightRadius(String value); external String get borderTopStyle; - external set borderTopWidth(String value); + external set borderTopStyle(String value); external String get borderTopWidth; - external set borderWidth(String value); + external set borderTopWidth(String value); external String get borderWidth; - external set bottom(String value); + external set borderWidth(String value); external String get bottom; - external set boxDecorationBreak(String value); + external set bottom(String value); external String get boxDecorationBreak; - external set boxShadow(String value); + external set boxDecorationBreak(String value); external String get boxShadow; - external set boxShadowBlur(String value); + external set boxShadow(String value); external String get boxShadowBlur; - external set boxShadowColor(String value); + external set boxShadowBlur(String value); external String get boxShadowColor; - external set boxShadowOffset(String value); + external set boxShadowColor(String value); external String get boxShadowOffset; - external set boxShadowPosition(String value); + external set boxShadowOffset(String value); external String get boxShadowPosition; - external set boxShadowSpread(String value); + external set boxShadowPosition(String value); external String get boxShadowSpread; - external set boxSizing(String value); + external set boxShadowSpread(String value); external String get boxSizing; - external set boxSnap(String value); + external set boxSizing(String value); external String get boxSnap; - external set breakAfter(String value); + external set boxSnap(String value); external String get breakAfter; - external set breakBefore(String value); + external set breakAfter(String value); external String get breakBefore; - external set breakInside(String value); + external set breakBefore(String value); external String get breakInside; - external set captionSide(String value); + external set breakInside(String value); external String get captionSide; - external set caret(String value); + external set captionSide(String value); external String get caret; - external set caretColor(String value); + external set caret(String value); external String get caretColor; - external set caretShape(String value); + external set caretColor(String value); external String get caretShape; - external set clear(String value); + external set caretShape(String value); external String get clear; - external set clip(String value); + external set clear(String value); external String get clip; - external set clipPath(String value); + external set clip(String value); external String get clipPath; - external set clipRule(String value); + external set clipPath(String value); external String get clipRule; - external set color(String value); + external set clipRule(String value); external String get color; - external set colorAdjust(String value); + external set color(String value); external String get colorAdjust; - external set colorInterpolation(String value); + external set colorAdjust(String value); external String get colorInterpolation; - external set colorInterpolationFilters(String value); + external set colorInterpolation(String value); external String get colorInterpolationFilters; - external set colorScheme(String value); + external set colorInterpolationFilters(String value); external String get colorScheme; - external set columnCount(String value); + external set colorScheme(String value); external String get columnCount; - external set columnFill(String value); + external set columnCount(String value); external String get columnFill; - external set columnGap(String value); + external set columnFill(String value); external String get columnGap; - external set columnRule(String value); + external set columnGap(String value); external String get columnRule; - external set columnRuleColor(String value); + external set columnRule(String value); external String get columnRuleColor; - external set columnRuleStyle(String value); + external set columnRuleColor(String value); external String get columnRuleStyle; - external set columnRuleWidth(String value); + external set columnRuleStyle(String value); external String get columnRuleWidth; - external set columnSpan(String value); + external set columnRuleWidth(String value); external String get columnSpan; - external set columnWidth(String value); + external set columnSpan(String value); external String get columnWidth; - external set columns(String value); + external set columnWidth(String value); external String get columns; - external set contain(String value); + external set columns(String value); external String get contain; - external set containIntrinsicBlockSize(String value); + external set contain(String value); external String get containIntrinsicBlockSize; - external set containIntrinsicHeight(String value); + external set containIntrinsicBlockSize(String value); external String get containIntrinsicHeight; - external set containIntrinsicInlineSize(String value); + external set containIntrinsicHeight(String value); external String get containIntrinsicInlineSize; - external set containIntrinsicSize(String value); + external set containIntrinsicInlineSize(String value); external String get containIntrinsicSize; - external set containIntrinsicWidth(String value); + external set containIntrinsicSize(String value); external String get containIntrinsicWidth; - external set container(String value); + external set containIntrinsicWidth(String value); external String get container; - external set containerName(String value); + external set container(String value); external String get containerName; - external set containerType(String value); + external set containerName(String value); external String get containerType; - external set content(String value); + external set containerType(String value); external String get content; - external set contentVisibility(String value); + external set content(String value); external String get contentVisibility; - @JS('continue') - external set continue_(String value); + external set contentVisibility(String value); @JS('continue') external String get continue_; - external set copyInto(String value); + @JS('continue') + external set continue_(String value); external String get copyInto; - external set cornerShape(String value); + external set copyInto(String value); external String get cornerShape; - external set corners(String value); + external set cornerShape(String value); external String get corners; - external set counterIncrement(String value); + external set corners(String value); external String get counterIncrement; - external set counterReset(String value); + external set counterIncrement(String value); external String get counterReset; - external set counterSet(String value); + external set counterReset(String value); external String get counterSet; - external set cue(String value); + external set counterSet(String value); external String get cue; - external set cueAfter(String value); + external set cue(String value); external String get cueAfter; - external set cueBefore(String value); + external set cueAfter(String value); external String get cueBefore; - external set cursor(String value); + external set cueBefore(String value); external String get cursor; - external set cx(String value); + external set cursor(String value); external String get cx; - external set cy(String value); + external set cx(String value); external String get cy; - external set d(String value); + external set cy(String value); external String get d; - external set direction(String value); + external set d(String value); external String get direction; - external set display(String value); + external set direction(String value); external String get display; - external set dominantBaseline(String value); + external set display(String value); external String get dominantBaseline; - external set emptyCells(String value); + external set dominantBaseline(String value); external String get emptyCells; - external set fieldSizing(String value); + external set emptyCells(String value); external String get fieldSizing; - external set fill(String value); + external set fieldSizing(String value); external String get fill; - external set fillBreak(String value); + external set fill(String value); external String get fillBreak; - external set fillColor(String value); + external set fillBreak(String value); external String get fillColor; - external set fillImage(String value); + external set fillColor(String value); external String get fillImage; - external set fillOpacity(String value); + external set fillImage(String value); external String get fillOpacity; - external set fillOrigin(String value); + external set fillOpacity(String value); external String get fillOrigin; - external set fillPosition(String value); + external set fillOrigin(String value); external String get fillPosition; - external set fillRepeat(String value); + external set fillPosition(String value); external String get fillRepeat; - external set fillRule(String value); + external set fillRepeat(String value); external String get fillRule; - external set fillSize(String value); + external set fillRule(String value); external String get fillSize; - external set filter(String value); + external set fillSize(String value); external String get filter; - external set flex(String value); + external set filter(String value); external String get flex; - external set flexBasis(String value); + external set flex(String value); external String get flexBasis; - external set flexDirection(String value); + external set flexBasis(String value); external String get flexDirection; - external set flexFlow(String value); + external set flexDirection(String value); external String get flexFlow; - external set flexGrow(String value); + external set flexFlow(String value); external String get flexGrow; - external set flexShrink(String value); + external set flexGrow(String value); external String get flexShrink; - external set flexWrap(String value); + external set flexShrink(String value); external String get flexWrap; - external set float(String value); + external set flexWrap(String value); external String get float; - external set floatDefer(String value); + external set float(String value); external String get floatDefer; - external set floatOffset(String value); + external set floatDefer(String value); external String get floatOffset; - external set floatReference(String value); + external set floatOffset(String value); external String get floatReference; - external set floodColor(String value); + external set floatReference(String value); external String get floodColor; - external set floodOpacity(String value); + external set floodColor(String value); external String get floodOpacity; - external set flowFrom(String value); + external set floodOpacity(String value); external String get flowFrom; - external set flowInto(String value); + external set flowFrom(String value); external String get flowInto; - external set font(String value); + external set flowInto(String value); external String get font; - external set fontFamily(String value); + external set font(String value); external String get fontFamily; - external set fontFeatureSettings(String value); + external set fontFamily(String value); external String get fontFeatureSettings; - external set fontKerning(String value); + external set fontFeatureSettings(String value); external String get fontKerning; - external set fontLanguageOverride(String value); + external set fontKerning(String value); external String get fontLanguageOverride; - external set fontOpticalSizing(String value); + external set fontLanguageOverride(String value); external String get fontOpticalSizing; - external set fontPalette(String value); + external set fontOpticalSizing(String value); external String get fontPalette; - external set fontSize(String value); + external set fontPalette(String value); external String get fontSize; - external set fontSizeAdjust(String value); + external set fontSize(String value); external String get fontSizeAdjust; - external set fontStretch(String value); + external set fontSizeAdjust(String value); external String get fontStretch; - external set fontStyle(String value); + external set fontStretch(String value); external String get fontStyle; - external set fontSynthesis(String value); + external set fontStyle(String value); external String get fontSynthesis; - external set fontSynthesisPosition(String value); + external set fontSynthesis(String value); external String get fontSynthesisPosition; - external set fontSynthesisSmallCaps(String value); + external set fontSynthesisPosition(String value); external String get fontSynthesisSmallCaps; - external set fontSynthesisStyle(String value); + external set fontSynthesisSmallCaps(String value); external String get fontSynthesisStyle; - external set fontSynthesisWeight(String value); + external set fontSynthesisStyle(String value); external String get fontSynthesisWeight; - external set fontVariant(String value); + external set fontSynthesisWeight(String value); external String get fontVariant; - external set fontVariantAlternates(String value); + external set fontVariant(String value); external String get fontVariantAlternates; - external set fontVariantCaps(String value); + external set fontVariantAlternates(String value); external String get fontVariantCaps; - external set fontVariantEastAsian(String value); + external set fontVariantCaps(String value); external String get fontVariantEastAsian; - external set fontVariantEmoji(String value); + external set fontVariantEastAsian(String value); external String get fontVariantEmoji; - external set fontVariantLigatures(String value); + external set fontVariantEmoji(String value); external String get fontVariantLigatures; - external set fontVariantNumeric(String value); + external set fontVariantLigatures(String value); external String get fontVariantNumeric; - external set fontVariantPosition(String value); + external set fontVariantNumeric(String value); external String get fontVariantPosition; - external set fontVariationSettings(String value); + external set fontVariantPosition(String value); external String get fontVariationSettings; - external set fontWeight(String value); + external set fontVariationSettings(String value); external String get fontWeight; - external set fontWidth(String value); + external set fontWeight(String value); external String get fontWidth; - external set footnoteDisplay(String value); + external set fontWidth(String value); external String get footnoteDisplay; - external set footnotePolicy(String value); + external set footnoteDisplay(String value); external String get footnotePolicy; - external set forcedColorAdjust(String value); + external set footnotePolicy(String value); external String get forcedColorAdjust; - external set gap(String value); + external set forcedColorAdjust(String value); external String get gap; - external set glyphOrientationVertical(String value); + external set gap(String value); external String get glyphOrientationVertical; - external set grid(String value); + external set glyphOrientationVertical(String value); external String get grid; - external set gridArea(String value); + external set grid(String value); external String get gridArea; - external set gridAutoColumns(String value); + external set gridArea(String value); external String get gridAutoColumns; - external set gridAutoFlow(String value); + external set gridAutoColumns(String value); external String get gridAutoFlow; - external set gridAutoRows(String value); + external set gridAutoFlow(String value); external String get gridAutoRows; - external set gridColumn(String value); + external set gridAutoRows(String value); external String get gridColumn; - external set gridColumnEnd(String value); + external set gridColumn(String value); external String get gridColumnEnd; - external set gridColumnGap(String value); + external set gridColumnEnd(String value); external String get gridColumnGap; - external set gridColumnStart(String value); + external set gridColumnGap(String value); external String get gridColumnStart; - external set gridGap(String value); + external set gridColumnStart(String value); external String get gridGap; - external set gridRow(String value); + external set gridGap(String value); external String get gridRow; - external set gridRowEnd(String value); + external set gridRow(String value); external String get gridRowEnd; - external set gridRowGap(String value); + external set gridRowEnd(String value); external String get gridRowGap; - external set gridRowStart(String value); + external set gridRowGap(String value); external String get gridRowStart; - external set gridTemplate(String value); + external set gridRowStart(String value); external String get gridTemplate; - external set gridTemplateAreas(String value); + external set gridTemplate(String value); external String get gridTemplateAreas; - external set gridTemplateColumns(String value); + external set gridTemplateAreas(String value); external String get gridTemplateColumns; - external set gridTemplateRows(String value); + external set gridTemplateColumns(String value); external String get gridTemplateRows; - external set hangingPunctuation(String value); + external set gridTemplateRows(String value); external String get hangingPunctuation; - external set height(String value); + external set hangingPunctuation(String value); external String get height; - external set hyphenateCharacter(String value); + external set height(String value); external String get hyphenateCharacter; - external set hyphenateLimitChars(String value); + external set hyphenateCharacter(String value); external String get hyphenateLimitChars; - external set hyphenateLimitLast(String value); + external set hyphenateLimitChars(String value); external String get hyphenateLimitLast; - external set hyphenateLimitLines(String value); + external set hyphenateLimitLast(String value); external String get hyphenateLimitLines; - external set hyphenateLimitZone(String value); + external set hyphenateLimitLines(String value); external String get hyphenateLimitZone; - external set hyphens(String value); + external set hyphenateLimitZone(String value); external String get hyphens; - external set imageOrientation(String value); + external set hyphens(String value); external String get imageOrientation; - external set imageRendering(String value); + external set imageOrientation(String value); external String get imageRendering; - external set imageResolution(String value); + external set imageRendering(String value); external String get imageResolution; - external set initialLetter(String value); + external set imageResolution(String value); external String get initialLetter; - external set initialLetterAlign(String value); + external set initialLetter(String value); external String get initialLetterAlign; - external set initialLetterWrap(String value); + external set initialLetterAlign(String value); external String get initialLetterWrap; - external set inlineSize(String value); + external set initialLetterWrap(String value); external String get inlineSize; - external set inlineSizing(String value); + external set inlineSize(String value); external String get inlineSizing; - external set inputSecurity(String value); + external set inlineSizing(String value); external String get inputSecurity; - external set inset(String value); + external set inputSecurity(String value); external String get inset; - external set insetArea(String value); + external set inset(String value); external String get insetArea; - external set insetBlock(String value); + external set insetArea(String value); external String get insetBlock; - external set insetBlockEnd(String value); + external set insetBlock(String value); external String get insetBlockEnd; - external set insetBlockStart(String value); + external set insetBlockEnd(String value); external String get insetBlockStart; - external set insetInline(String value); + external set insetBlockStart(String value); external String get insetInline; - external set insetInlineEnd(String value); + external set insetInline(String value); external String get insetInlineEnd; - external set insetInlineStart(String value); + external set insetInlineEnd(String value); external String get insetInlineStart; - external set isolation(String value); + external set insetInlineStart(String value); external String get isolation; - external set justifyContent(String value); + external set isolation(String value); external String get justifyContent; - external set justifyItems(String value); + external set justifyContent(String value); external String get justifyItems; - external set justifySelf(String value); + external set justifyItems(String value); external String get justifySelf; - external set layoutOrder(String value); + external set justifySelf(String value); external String get layoutOrder; - external set left(String value); + external set layoutOrder(String value); external String get left; - external set letterSpacing(String value); + external set left(String value); external String get letterSpacing; - external set lightingColor(String value); + external set letterSpacing(String value); external String get lightingColor; - external set lineBreak(String value); + external set lightingColor(String value); external String get lineBreak; - external set lineClamp(String value); + external set lineBreak(String value); external String get lineClamp; - external set lineGrid(String value); + external set lineClamp(String value); external String get lineGrid; - external set lineHeight(String value); + external set lineGrid(String value); external String get lineHeight; - external set lineHeightStep(String value); + external set lineHeight(String value); external String get lineHeightStep; - external set linePadding(String value); + external set lineHeightStep(String value); external String get linePadding; - external set lineSnap(String value); + external set linePadding(String value); external String get lineSnap; - external set linkParameters(String value); + external set lineSnap(String value); external String get linkParameters; - external set listStyle(String value); + external set linkParameters(String value); external String get listStyle; - external set listStyleImage(String value); + external set listStyle(String value); external String get listStyleImage; - external set listStylePosition(String value); + external set listStyleImage(String value); external String get listStylePosition; - external set listStyleType(String value); + external set listStylePosition(String value); external String get listStyleType; - external set margin(String value); + external set listStyleType(String value); external String get margin; - external set marginBlock(String value); + external set margin(String value); external String get marginBlock; - external set marginBlockEnd(String value); + external set marginBlock(String value); external String get marginBlockEnd; - external set marginBlockStart(String value); + external set marginBlockEnd(String value); external String get marginBlockStart; - external set marginBottom(String value); + external set marginBlockStart(String value); external String get marginBottom; - external set marginBreak(String value); + external set marginBottom(String value); external String get marginBreak; - external set marginInline(String value); + external set marginBreak(String value); external String get marginInline; - external set marginInlineEnd(String value); + external set marginInline(String value); external String get marginInlineEnd; - external set marginInlineStart(String value); + external set marginInlineEnd(String value); external String get marginInlineStart; - external set marginLeft(String value); + external set marginInlineStart(String value); external String get marginLeft; - external set marginRight(String value); + external set marginLeft(String value); external String get marginRight; - external set marginTop(String value); + external set marginRight(String value); external String get marginTop; - external set marginTrim(String value); + external set marginTop(String value); external String get marginTrim; - external set marker(String value); + external set marginTrim(String value); external String get marker; - external set markerEnd(String value); + external set marker(String value); external String get markerEnd; - external set markerMid(String value); + external set markerEnd(String value); external String get markerMid; - external set markerSide(String value); + external set markerMid(String value); external String get markerSide; - external set markerStart(String value); + external set markerSide(String value); external String get markerStart; - external set mask(String value); + external set markerStart(String value); external String get mask; - external set maskBorder(String value); + external set mask(String value); external String get maskBorder; - external set maskBorderMode(String value); + external set maskBorder(String value); external String get maskBorderMode; - external set maskBorderOutset(String value); + external set maskBorderMode(String value); external String get maskBorderOutset; - external set maskBorderRepeat(String value); + external set maskBorderOutset(String value); external String get maskBorderRepeat; - external set maskBorderSlice(String value); + external set maskBorderRepeat(String value); external String get maskBorderSlice; - external set maskBorderSource(String value); + external set maskBorderSlice(String value); external String get maskBorderSource; - external set maskBorderWidth(String value); + external set maskBorderSource(String value); external String get maskBorderWidth; - external set maskClip(String value); + external set maskBorderWidth(String value); external String get maskClip; - external set maskComposite(String value); + external set maskClip(String value); external String get maskComposite; - external set maskImage(String value); + external set maskComposite(String value); external String get maskImage; - external set maskMode(String value); + external set maskImage(String value); external String get maskMode; - external set maskOrigin(String value); + external set maskMode(String value); external String get maskOrigin; - external set maskPosition(String value); + external set maskOrigin(String value); external String get maskPosition; - external set maskRepeat(String value); + external set maskPosition(String value); external String get maskRepeat; - external set maskSize(String value); + external set maskRepeat(String value); external String get maskSize; - external set maskType(String value); + external set maskSize(String value); external String get maskType; - external set masonryAutoFlow(String value); + external set maskType(String value); external String get masonryAutoFlow; - external set mathDepth(String value); + external set masonryAutoFlow(String value); external String get mathDepth; - external set mathShift(String value); + external set mathDepth(String value); external String get mathShift; - external set mathStyle(String value); + external set mathShift(String value); external String get mathStyle; - external set maxBlockSize(String value); + external set mathStyle(String value); external String get maxBlockSize; - external set maxHeight(String value); + external set maxBlockSize(String value); external String get maxHeight; - external set maxInlineSize(String value); + external set maxHeight(String value); external String get maxInlineSize; - external set maxLines(String value); + external set maxInlineSize(String value); external String get maxLines; - external set maxWidth(String value); + external set maxLines(String value); external String get maxWidth; - external set minBlockSize(String value); + external set maxWidth(String value); external String get minBlockSize; - external set minHeight(String value); + external set minBlockSize(String value); external String get minHeight; - external set minInlineSize(String value); + external set minHeight(String value); external String get minInlineSize; - external set minIntrinsicSizing(String value); + external set minInlineSize(String value); external String get minIntrinsicSizing; - external set minWidth(String value); + external set minIntrinsicSizing(String value); external String get minWidth; - external set mixBlendMode(String value); + external set minWidth(String value); external String get mixBlendMode; - external set navDown(String value); + external set mixBlendMode(String value); external String get navDown; - external set navLeft(String value); + external set navDown(String value); external String get navLeft; - external set navRight(String value); + external set navLeft(String value); external String get navRight; - external set navUp(String value); + external set navRight(String value); external String get navUp; - external set objectFit(String value); + external set navUp(String value); external String get objectFit; - external set objectPosition(String value); + external set objectFit(String value); external String get objectPosition; - external set objectViewBox(String value); + external set objectPosition(String value); external String get objectViewBox; - external set offset(String value); + external set objectViewBox(String value); external String get offset; - external set offsetAnchor(String value); + external set offset(String value); external String get offsetAnchor; - external set offsetDistance(String value); + external set offsetAnchor(String value); external String get offsetDistance; - external set offsetPath(String value); + external set offsetDistance(String value); external String get offsetPath; - external set offsetPosition(String value); + external set offsetPath(String value); external String get offsetPosition; - external set offsetRotate(String value); + external set offsetPosition(String value); external String get offsetRotate; - external set opacity(String value); + external set offsetRotate(String value); external String get opacity; - external set order(String value); + external set opacity(String value); external String get order; - external set orphans(String value); + external set order(String value); external String get orphans; - external set outline(String value); + external set orphans(String value); external String get outline; - external set outlineColor(String value); + external set outline(String value); external String get outlineColor; - external set outlineOffset(String value); + external set outlineColor(String value); external String get outlineOffset; - external set outlineStyle(String value); + external set outlineOffset(String value); external String get outlineStyle; - external set outlineWidth(String value); + external set outlineStyle(String value); external String get outlineWidth; - external set overflow(String value); + external set outlineWidth(String value); external String get overflow; - external set overflowAnchor(String value); + external set overflow(String value); external String get overflowAnchor; - external set overflowBlock(String value); + external set overflowAnchor(String value); external String get overflowBlock; - external set overflowClipMargin(String value); + external set overflowBlock(String value); external String get overflowClipMargin; - external set overflowClipMarginBlock(String value); + external set overflowClipMargin(String value); external String get overflowClipMarginBlock; - external set overflowClipMarginBlockEnd(String value); + external set overflowClipMarginBlock(String value); external String get overflowClipMarginBlockEnd; - external set overflowClipMarginBlockStart(String value); + external set overflowClipMarginBlockEnd(String value); external String get overflowClipMarginBlockStart; - external set overflowClipMarginBottom(String value); + external set overflowClipMarginBlockStart(String value); external String get overflowClipMarginBottom; - external set overflowClipMarginInline(String value); + external set overflowClipMarginBottom(String value); external String get overflowClipMarginInline; - external set overflowClipMarginInlineEnd(String value); + external set overflowClipMarginInline(String value); external String get overflowClipMarginInlineEnd; - external set overflowClipMarginInlineStart(String value); + external set overflowClipMarginInlineEnd(String value); external String get overflowClipMarginInlineStart; - external set overflowClipMarginLeft(String value); + external set overflowClipMarginInlineStart(String value); external String get overflowClipMarginLeft; - external set overflowClipMarginRight(String value); + external set overflowClipMarginLeft(String value); external String get overflowClipMarginRight; - external set overflowClipMarginTop(String value); + external set overflowClipMarginRight(String value); external String get overflowClipMarginTop; - external set overflowInline(String value); + external set overflowClipMarginTop(String value); external String get overflowInline; - external set overflowWrap(String value); + external set overflowInline(String value); external String get overflowWrap; - external set overflowX(String value); + external set overflowWrap(String value); external String get overflowX; - external set overflowY(String value); + external set overflowX(String value); external String get overflowY; - external set overlay(String value); + external set overflowY(String value); external String get overlay; - external set overscrollBehavior(String value); + external set overlay(String value); external String get overscrollBehavior; - external set overscrollBehaviorBlock(String value); + external set overscrollBehavior(String value); external String get overscrollBehaviorBlock; - external set overscrollBehaviorInline(String value); + external set overscrollBehaviorBlock(String value); external String get overscrollBehaviorInline; - external set overscrollBehaviorX(String value); + external set overscrollBehaviorInline(String value); external String get overscrollBehaviorX; - external set overscrollBehaviorY(String value); + external set overscrollBehaviorX(String value); external String get overscrollBehaviorY; - external set padding(String value); + external set overscrollBehaviorY(String value); external String get padding; - external set paddingBlock(String value); + external set padding(String value); external String get paddingBlock; - external set paddingBlockEnd(String value); + external set paddingBlock(String value); external String get paddingBlockEnd; - external set paddingBlockStart(String value); + external set paddingBlockEnd(String value); external String get paddingBlockStart; - external set paddingBottom(String value); + external set paddingBlockStart(String value); external String get paddingBottom; - external set paddingInline(String value); + external set paddingBottom(String value); external String get paddingInline; - external set paddingInlineEnd(String value); + external set paddingInline(String value); external String get paddingInlineEnd; - external set paddingInlineStart(String value); + external set paddingInlineEnd(String value); external String get paddingInlineStart; - external set paddingLeft(String value); + external set paddingInlineStart(String value); external String get paddingLeft; - external set paddingRight(String value); + external set paddingLeft(String value); external String get paddingRight; - external set paddingTop(String value); + external set paddingRight(String value); external String get paddingTop; - external set page(String value); + external set paddingTop(String value); external String get page; - external set pageBreakAfter(String value); + external set page(String value); external String get pageBreakAfter; - external set pageBreakBefore(String value); + external set pageBreakAfter(String value); external String get pageBreakBefore; - external set pageBreakInside(String value); + external set pageBreakBefore(String value); external String get pageBreakInside; - external set paintOrder(String value); + external set pageBreakInside(String value); external String get paintOrder; - external set pause(String value); + external set paintOrder(String value); external String get pause; - external set pauseAfter(String value); + external set pause(String value); external String get pauseAfter; - external set pauseBefore(String value); + external set pauseAfter(String value); external String get pauseBefore; - external set perspective(String value); + external set pauseBefore(String value); external String get perspective; - external set perspectiveOrigin(String value); + external set perspective(String value); external String get perspectiveOrigin; - external set placeContent(String value); + external set perspectiveOrigin(String value); external String get placeContent; - external set placeItems(String value); + external set placeContent(String value); external String get placeItems; - external set placeSelf(String value); + external set placeItems(String value); external String get placeSelf; - external set pointerEvents(String value); + external set placeSelf(String value); external String get pointerEvents; - external set position(String value); + external set pointerEvents(String value); external String get position; - external set positionFallbackBounds(String value); + external set position(String value); external String get positionFallbackBounds; - external set positionTryFinal(String value); + external set positionFallbackBounds(String value); external String get positionTryFinal; - external set positionTryOptions(String value); + external set positionTryFinal(String value); external String get positionTryOptions; - external set positionTryOrder(String value); + external set positionTryOptions(String value); external String get positionTryOrder; - external set printColorAdjust(String value); + external set positionTryOrder(String value); external String get printColorAdjust; - external set quotes(String value); + external set printColorAdjust(String value); external String get quotes; - external set r(String value); + external set quotes(String value); external String get r; - external set readingOrder(String value); + external set r(String value); external String get readingOrder; - external set regionFragment(String value); + external set readingOrder(String value); external String get regionFragment; - external set resize(String value); + external set regionFragment(String value); external String get resize; - external set rest(String value); + external set resize(String value); external String get rest; - external set restAfter(String value); + external set rest(String value); external String get restAfter; - external set restBefore(String value); + external set restAfter(String value); external String get restBefore; - external set right(String value); + external set restBefore(String value); external String get right; - external set rotate(String value); + external set right(String value); external String get rotate; - external set rowGap(String value); + external set rotate(String value); external String get rowGap; - external set rubyAlign(String value); + external set rowGap(String value); external String get rubyAlign; - external set rubyMerge(String value); + external set rubyAlign(String value); external String get rubyMerge; - external set rubyOverhang(String value); + external set rubyMerge(String value); external String get rubyOverhang; - external set rubyPosition(String value); + external set rubyOverhang(String value); external String get rubyPosition; - external set rx(String value); + external set rubyPosition(String value); external String get rx; - external set ry(String value); + external set rx(String value); external String get ry; - external set scale(String value); + external set ry(String value); external String get scale; - external set scrollBehavior(String value); + external set scale(String value); external String get scrollBehavior; - external set scrollMargin(String value); + external set scrollBehavior(String value); external String get scrollMargin; - external set scrollMarginBlock(String value); + external set scrollMargin(String value); external String get scrollMarginBlock; - external set scrollMarginBlockEnd(String value); + external set scrollMarginBlock(String value); external String get scrollMarginBlockEnd; - external set scrollMarginBlockStart(String value); + external set scrollMarginBlockEnd(String value); external String get scrollMarginBlockStart; - external set scrollMarginBottom(String value); + external set scrollMarginBlockStart(String value); external String get scrollMarginBottom; - external set scrollMarginInline(String value); + external set scrollMarginBottom(String value); external String get scrollMarginInline; - external set scrollMarginInlineEnd(String value); + external set scrollMarginInline(String value); external String get scrollMarginInlineEnd; - external set scrollMarginInlineStart(String value); + external set scrollMarginInlineEnd(String value); external String get scrollMarginInlineStart; - external set scrollMarginLeft(String value); + external set scrollMarginInlineStart(String value); external String get scrollMarginLeft; - external set scrollMarginRight(String value); + external set scrollMarginLeft(String value); external String get scrollMarginRight; - external set scrollMarginTop(String value); + external set scrollMarginRight(String value); external String get scrollMarginTop; - external set scrollPadding(String value); + external set scrollMarginTop(String value); external String get scrollPadding; - external set scrollPaddingBlock(String value); + external set scrollPadding(String value); external String get scrollPaddingBlock; - external set scrollPaddingBlockEnd(String value); + external set scrollPaddingBlock(String value); external String get scrollPaddingBlockEnd; - external set scrollPaddingBlockStart(String value); + external set scrollPaddingBlockEnd(String value); external String get scrollPaddingBlockStart; - external set scrollPaddingBottom(String value); + external set scrollPaddingBlockStart(String value); external String get scrollPaddingBottom; - external set scrollPaddingInline(String value); + external set scrollPaddingBottom(String value); external String get scrollPaddingInline; - external set scrollPaddingInlineEnd(String value); + external set scrollPaddingInline(String value); external String get scrollPaddingInlineEnd; - external set scrollPaddingInlineStart(String value); + external set scrollPaddingInlineEnd(String value); external String get scrollPaddingInlineStart; - external set scrollPaddingLeft(String value); + external set scrollPaddingInlineStart(String value); external String get scrollPaddingLeft; - external set scrollPaddingRight(String value); + external set scrollPaddingLeft(String value); external String get scrollPaddingRight; - external set scrollPaddingTop(String value); + external set scrollPaddingRight(String value); external String get scrollPaddingTop; - external set scrollSnapAlign(String value); + external set scrollPaddingTop(String value); external String get scrollSnapAlign; - external set scrollSnapStop(String value); + external set scrollSnapAlign(String value); external String get scrollSnapStop; - external set scrollSnapType(String value); + external set scrollSnapStop(String value); external String get scrollSnapType; - external set scrollStart(String value); + external set scrollSnapType(String value); external String get scrollStart; - external set scrollStartBlock(String value); + external set scrollStart(String value); external String get scrollStartBlock; - external set scrollStartInline(String value); + external set scrollStartBlock(String value); external String get scrollStartInline; - external set scrollStartTarget(String value); + external set scrollStartInline(String value); external String get scrollStartTarget; - external set scrollStartTargetBlock(String value); + external set scrollStartTarget(String value); external String get scrollStartTargetBlock; - external set scrollStartTargetInline(String value); + external set scrollStartTargetBlock(String value); external String get scrollStartTargetInline; - external set scrollStartTargetX(String value); + external set scrollStartTargetInline(String value); external String get scrollStartTargetX; - external set scrollStartTargetY(String value); + external set scrollStartTargetX(String value); external String get scrollStartTargetY; - external set scrollStartX(String value); + external set scrollStartTargetY(String value); external String get scrollStartX; - external set scrollStartY(String value); + external set scrollStartX(String value); external String get scrollStartY; - external set scrollTimeline(String value); + external set scrollStartY(String value); external String get scrollTimeline; - external set scrollTimelineAxis(String value); + external set scrollTimeline(String value); external String get scrollTimelineAxis; - external set scrollTimelineName(String value); + external set scrollTimelineAxis(String value); external String get scrollTimelineName; - external set scrollbarColor(String value); + external set scrollTimelineName(String value); external String get scrollbarColor; - external set scrollbarGutter(String value); + external set scrollbarColor(String value); external String get scrollbarGutter; - external set scrollbarWidth(String value); + external set scrollbarGutter(String value); external String get scrollbarWidth; - external set shapeImageThreshold(String value); + external set scrollbarWidth(String value); external String get shapeImageThreshold; - external set shapeInside(String value); + external set shapeImageThreshold(String value); external String get shapeInside; - external set shapeMargin(String value); + external set shapeInside(String value); external String get shapeMargin; - external set shapeOutside(String value); + external set shapeMargin(String value); external String get shapeOutside; - external set shapePadding(String value); + external set shapeOutside(String value); external String get shapePadding; - external set shapeRendering(String value); + external set shapePadding(String value); external String get shapeRendering; - external set shapeSubtract(String value); + external set shapeRendering(String value); external String get shapeSubtract; - external set spatialNavigationAction(String value); + external set shapeSubtract(String value); external String get spatialNavigationAction; - external set spatialNavigationContain(String value); + external set spatialNavigationAction(String value); external String get spatialNavigationContain; - external set spatialNavigationFunction(String value); + external set spatialNavigationContain(String value); external String get spatialNavigationFunction; - external set speak(String value); + external set spatialNavigationFunction(String value); external String get speak; - external set speakAs(String value); + external set speak(String value); external String get speakAs; - external set stopColor(String value); + external set speakAs(String value); external String get stopColor; - external set stopOpacity(String value); + external set stopColor(String value); external String get stopOpacity; - external set stringSet(String value); + external set stopOpacity(String value); external String get stringSet; - external set stroke(String value); + external set stringSet(String value); external String get stroke; - external set strokeAlign(String value); + external set stroke(String value); external String get strokeAlign; - external set strokeAlignment(String value); + external set strokeAlign(String value); external String get strokeAlignment; - external set strokeBreak(String value); + external set strokeAlignment(String value); external String get strokeBreak; - external set strokeColor(String value); + external set strokeBreak(String value); external String get strokeColor; - external set strokeDashCorner(String value); + external set strokeColor(String value); external String get strokeDashCorner; - external set strokeDashJustify(String value); + external set strokeDashCorner(String value); external String get strokeDashJustify; - external set strokeDashadjust(String value); + external set strokeDashJustify(String value); external String get strokeDashadjust; - external set strokeDasharray(String value); + external set strokeDashadjust(String value); external String get strokeDasharray; - external set strokeDashcorner(String value); + external set strokeDasharray(String value); external String get strokeDashcorner; - external set strokeDashoffset(String value); + external set strokeDashcorner(String value); external String get strokeDashoffset; - external set strokeImage(String value); + external set strokeDashoffset(String value); external String get strokeImage; - external set strokeLinecap(String value); + external set strokeImage(String value); external String get strokeLinecap; - external set strokeLinejoin(String value); + external set strokeLinecap(String value); external String get strokeLinejoin; - external set strokeMiterlimit(String value); + external set strokeLinejoin(String value); external String get strokeMiterlimit; - external set strokeOpacity(String value); + external set strokeMiterlimit(String value); external String get strokeOpacity; - external set strokeOrigin(String value); + external set strokeOpacity(String value); external String get strokeOrigin; - external set strokePosition(String value); + external set strokeOrigin(String value); external String get strokePosition; - external set strokeRepeat(String value); + external set strokePosition(String value); external String get strokeRepeat; - external set strokeSize(String value); + external set strokeRepeat(String value); external String get strokeSize; - external set strokeWidth(String value); + external set strokeSize(String value); external String get strokeWidth; - external set tabSize(String value); + external set strokeWidth(String value); external String get tabSize; - external set tableLayout(String value); + external set tabSize(String value); external String get tableLayout; - external set textAlign(String value); + external set tableLayout(String value); external String get textAlign; - external set textAlignAll(String value); + external set textAlign(String value); external String get textAlignAll; - external set textAlignLast(String value); + external set textAlignAll(String value); external String get textAlignLast; - external set textAnchor(String value); + external set textAlignLast(String value); external String get textAnchor; - external set textAutospace(String value); + external set textAnchor(String value); external String get textAutospace; - external set textBoxEdge(String value); + external set textAutospace(String value); external String get textBoxEdge; - external set textBoxTrim(String value); + external set textBoxEdge(String value); external String get textBoxTrim; - external set textCombineUpright(String value); + external set textBoxTrim(String value); external String get textCombineUpright; - external set textDecoration(String value); + external set textCombineUpright(String value); external String get textDecoration; - external set textDecorationColor(String value); + external set textDecoration(String value); external String get textDecorationColor; - external set textDecorationLine(String value); + external set textDecorationColor(String value); external String get textDecorationLine; - external set textDecorationSkip(String value); + external set textDecorationLine(String value); external String get textDecorationSkip; - external set textDecorationSkipBox(String value); + external set textDecorationSkip(String value); external String get textDecorationSkipBox; - external set textDecorationSkipInk(String value); + external set textDecorationSkipBox(String value); external String get textDecorationSkipInk; - external set textDecorationSkipSelf(String value); + external set textDecorationSkipInk(String value); external String get textDecorationSkipSelf; - external set textDecorationSkipSpaces(String value); + external set textDecorationSkipSelf(String value); external String get textDecorationSkipSpaces; - external set textDecorationStyle(String value); + external set textDecorationSkipSpaces(String value); external String get textDecorationStyle; - external set textDecorationThickness(String value); + external set textDecorationStyle(String value); external String get textDecorationThickness; - external set textDecorationTrim(String value); + external set textDecorationThickness(String value); external String get textDecorationTrim; - external set textEmphasis(String value); + external set textDecorationTrim(String value); external String get textEmphasis; - external set textEmphasisColor(String value); + external set textEmphasis(String value); external String get textEmphasisColor; - external set textEmphasisPosition(String value); + external set textEmphasisColor(String value); external String get textEmphasisPosition; - external set textEmphasisSkip(String value); + external set textEmphasisPosition(String value); external String get textEmphasisSkip; - external set textEmphasisStyle(String value); + external set textEmphasisSkip(String value); external String get textEmphasisStyle; - external set textGroupAlign(String value); + external set textEmphasisStyle(String value); external String get textGroupAlign; - external set textIndent(String value); + external set textGroupAlign(String value); external String get textIndent; - external set textJustify(String value); + external set textIndent(String value); external String get textJustify; - external set textOrientation(String value); + external set textJustify(String value); external String get textOrientation; - external set textOverflow(String value); + external set textOrientation(String value); external String get textOverflow; - external set textRendering(String value); + external set textOverflow(String value); external String get textRendering; - external set textShadow(String value); + external set textRendering(String value); external String get textShadow; - external set textSizeAdjust(String value); + external set textShadow(String value); external String get textSizeAdjust; - external set textSpacing(String value); + external set textSizeAdjust(String value); external String get textSpacing; - external set textSpacingTrim(String value); + external set textSpacing(String value); external String get textSpacingTrim; - external set textTransform(String value); + external set textSpacingTrim(String value); external String get textTransform; - external set textUnderlineOffset(String value); + external set textTransform(String value); external String get textUnderlineOffset; - external set textUnderlinePosition(String value); + external set textUnderlineOffset(String value); external String get textUnderlinePosition; - external set textWrap(String value); + external set textUnderlinePosition(String value); external String get textWrap; - external set textWrapMode(String value); + external set textWrap(String value); external String get textWrapMode; - external set textWrapStyle(String value); + external set textWrapMode(String value); external String get textWrapStyle; - external set timelineScope(String value); + external set textWrapStyle(String value); external String get timelineScope; - external set top(String value); + external set timelineScope(String value); external String get top; - external set touchAction(String value); + external set top(String value); external String get touchAction; - external set transform(String value); + external set touchAction(String value); external String get transform; - external set transformBox(String value); + external set transform(String value); external String get transformBox; - external set transformOrigin(String value); + external set transformBox(String value); external String get transformOrigin; - external set transformStyle(String value); + external set transformOrigin(String value); external String get transformStyle; - external set transition(String value); + external set transformStyle(String value); external String get transition; - external set transitionBehavior(String value); + external set transition(String value); external String get transitionBehavior; - external set transitionDelay(String value); + external set transitionBehavior(String value); external String get transitionDelay; - external set transitionDuration(String value); + external set transitionDelay(String value); external String get transitionDuration; - external set transitionProperty(String value); + external set transitionDuration(String value); external String get transitionProperty; - external set transitionTimingFunction(String value); + external set transitionProperty(String value); external String get transitionTimingFunction; - external set translate(String value); + external set transitionTimingFunction(String value); external String get translate; - external set unicodeBidi(String value); + external set translate(String value); external String get unicodeBidi; - external set userSelect(String value); + external set unicodeBidi(String value); external String get userSelect; - external set vectorEffect(String value); + external set userSelect(String value); external String get vectorEffect; - external set verticalAlign(String value); + external set vectorEffect(String value); external String get verticalAlign; - external set viewTimeline(String value); + external set verticalAlign(String value); external String get viewTimeline; - external set viewTimelineAxis(String value); + external set viewTimeline(String value); external String get viewTimelineAxis; - external set viewTimelineInset(String value); + external set viewTimelineAxis(String value); external String get viewTimelineInset; - external set viewTimelineName(String value); + external set viewTimelineInset(String value); external String get viewTimelineName; - external set viewTransitionName(String value); + external set viewTimelineName(String value); external String get viewTransitionName; - external set visibility(String value); + external set viewTransitionName(String value); external String get visibility; - external set voiceBalance(String value); + external set visibility(String value); external String get voiceBalance; - external set voiceDuration(String value); + external set voiceBalance(String value); external String get voiceDuration; - external set voiceFamily(String value); + external set voiceDuration(String value); external String get voiceFamily; - external set voicePitch(String value); + external set voiceFamily(String value); external String get voicePitch; - external set voiceRange(String value); + external set voicePitch(String value); external String get voiceRange; - external set voiceRate(String value); + external set voiceRange(String value); external String get voiceRate; - external set voiceStress(String value); + external set voiceRate(String value); external String get voiceStress; - external set voiceVolume(String value); + external set voiceStress(String value); external String get voiceVolume; - external set whiteSpace(String value); + external set voiceVolume(String value); external String get whiteSpace; - external set whiteSpaceCollapse(String value); + external set whiteSpace(String value); external String get whiteSpaceCollapse; - external set whiteSpaceTrim(String value); + external set whiteSpaceCollapse(String value); external String get whiteSpaceTrim; - external set widows(String value); + external set whiteSpaceTrim(String value); external String get widows; - external set width(String value); + external set widows(String value); external String get width; - external set willChange(String value); + external set width(String value); external String get willChange; - external set wordBreak(String value); + external set willChange(String value); external String get wordBreak; - external set wordSpaceTransform(String value); + external set wordBreak(String value); external String get wordSpaceTransform; - external set wordSpacing(String value); + external set wordSpaceTransform(String value); external String get wordSpacing; - external set wordWrap(String value); + external set wordSpacing(String value); external String get wordWrap; - external set wrapAfter(String value); + external set wordWrap(String value); external String get wrapAfter; - external set wrapBefore(String value); + external set wrapAfter(String value); external String get wrapBefore; - external set wrapFlow(String value); + external set wrapBefore(String value); external String get wrapFlow; - external set wrapInside(String value); + external set wrapFlow(String value); external String get wrapInside; - external set wrapThrough(String value); + external set wrapInside(String value); external String get wrapThrough; - external set writingMode(String value); + external set wrapThrough(String value); external String get writingMode; - external set x(String value); + external set writingMode(String value); external String get x; - external set y(String value); + external set x(String value); external String get y; - external set zIndex(String value); + external set y(String value); external String get zIndex; - external set zoom(String value); + external set zIndex(String value); external String get zoom; + external set zoom(String value); } @JS() external $CSS get CSS; diff --git a/lib/src/dom/cssom_view.dart b/lib/src/dom/cssom_view.dart index c7815153..0ec575fb 100644 --- a/lib/src/dom/cssom_view.dart +++ b/lib/src/dom/cssom_view.dart @@ -25,8 +25,8 @@ typedef CSSBoxType = String; extension type ScrollOptions._(JSObject _) implements JSObject { external factory ScrollOptions({ScrollBehavior behavior}); - external set behavior(ScrollBehavior value); external ScrollBehavior get behavior; + external set behavior(ScrollBehavior value); } extension type ScrollToOptions._(JSObject _) implements ScrollOptions, JSObject { @@ -36,10 +36,10 @@ extension type ScrollToOptions._(JSObject _) num top, }); - external set left(num value); external num get left; - external set top(num value); + external set left(num value); external num get top; + external set top(num value); } /// A **`MediaQueryList`** object stores information on a @@ -84,10 +84,24 @@ extension type MediaQueryList._(JSObject _) implements EventTarget, JSObject { /// Use `removeEventListener()` instead of `removeListener()` if it is /// available in the browsers you need to support. external void removeListener(EventListener? callback); + + /// The **`media`** read-only property of the + /// [MediaQueryList] interface is a string representing a + /// serialized media query. external String get media; + + /// The **`matches`** read-only property of the + /// [MediaQueryList] interface is a boolean value that returns + /// `true` if the [document] currently matches the media query list, + /// or `false` if not. + /// + /// You can be notified when the value of `matches` changes by watching for + /// the + /// [MediaQueryList.change_event] event to be fired at the + /// `MediaQueryList`. external bool get matches; - external set onchange(EventHandler value); external EventHandler get onchange; + external set onchange(EventHandler value); } /// The `MediaQueryListEvent` object stores information on the changes that have @@ -104,7 +118,15 @@ extension type MediaQueryListEvent._(JSObject _) implements Event, JSObject { MediaQueryListEventInit eventInitDict, ]); + /// The **`media`** read-only property of the + /// [MediaQueryListEvent] interface is a string representing + /// a serialized media query. external String get media; + + /// The **`matches`** read-only property of the + /// [MediaQueryListEvent] interface is a boolean value that is + /// `true` if the [document] currently matches the media query list, + /// or `false` if not. external bool get matches; } extension type MediaQueryListEventInit._(JSObject _) @@ -117,10 +139,10 @@ extension type MediaQueryListEventInit._(JSObject _) bool matches, }); - external set media(String value); external String get media; - external set matches(bool value); + external set media(String value); external bool get matches; + external set matches(bool value); } /// The `Screen` interface represents a screen, usually the one on which the @@ -134,12 +156,42 @@ extension type MediaQueryListEventInit._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Screen). extension type Screen._(JSObject _) implements JSObject { + /// The **`Screen.availWidth`** property returns the amount of + /// horizontal space (in pixels) available to the window. external int get availWidth; + + /// The read-only [Screen] interface's + /// **`availHeight`** property returns the height, in CSS pixels, of + /// the space available for Web content on the screen. Since [Screen] is + /// exposed on the [Window] interface's [Window.screen] + /// property, you access `availHeight` using `window.screen.availHeight`. + /// + /// You can similarly use [Screen.availWidth] to get the number of pixels + /// which are horizontally available to the browser for its use. external int get availHeight; + + /// The **`Screen.width`** read-only property returns the width of + /// the screen in CSS pixels. external int get width; + + /// The **`Screen.height`** read-only property returns the height + /// of the screen in pixels. external int get height; + + /// The **`Screen.colorDepth`** read-only property returns the + /// color depth of the screen. Per the CSSOM, some implementations return `24` + /// for compatibility reasons. See the browser compatibility section for those + /// that don't. external int get colorDepth; + + /// Returns the bit depth of the screen. Per the CSSOM, some implementations + /// return `24` for compatibility reasons. See the + /// [browser compatibility](#browser_compatibility) section for those that + /// don't. external int get pixelDepth; + + /// The **`orientation`** read-only property of the + /// [Screen] interface returns the current orientation of the screen. external ScreenOrientation get orientation; } @@ -164,10 +216,10 @@ extension type ScrollIntoViewOptions._(JSObject _) ScrollLogicalPosition inline, }); - external set block(ScrollLogicalPosition value); external ScrollLogicalPosition get block; - external set inline(ScrollLogicalPosition value); + external set block(ScrollLogicalPosition value); external ScrollLogicalPosition get inline; + external set inline(ScrollLogicalPosition value); } extension type CheckVisibilityOptions._(JSObject _) implements JSObject { external factory CheckVisibilityOptions({ @@ -178,16 +230,16 @@ extension type CheckVisibilityOptions._(JSObject _) implements JSObject { bool visibilityProperty, }); - external set checkOpacity(bool value); external bool get checkOpacity; - external set checkVisibilityCSS(bool value); + external set checkOpacity(bool value); external bool get checkVisibilityCSS; - external set contentVisibilityAuto(bool value); + external set checkVisibilityCSS(bool value); external bool get contentVisibilityAuto; - external set opacityProperty(bool value); + external set contentVisibilityAuto(bool value); external bool get opacityProperty; - external set visibilityProperty(bool value); + external set opacityProperty(bool value); external bool get visibilityProperty; + external set visibilityProperty(bool value); } extension type BoxQuadOptions._(JSObject _) implements JSObject { external factory BoxQuadOptions({ @@ -195,10 +247,10 @@ extension type BoxQuadOptions._(JSObject _) implements JSObject { GeometryNode relativeTo, }); - external set box(CSSBoxType value); external CSSBoxType get box; - external set relativeTo(GeometryNode value); + external set box(CSSBoxType value); external GeometryNode get relativeTo; + external set relativeTo(GeometryNode value); } extension type ConvertCoordinateOptions._(JSObject _) implements JSObject { external factory ConvertCoordinateOptions({ @@ -206,10 +258,10 @@ extension type ConvertCoordinateOptions._(JSObject _) implements JSObject { CSSBoxType toBox, }); - external set fromBox(CSSBoxType value); external CSSBoxType get fromBox; - external set toBox(CSSBoxType value); + external set fromBox(CSSBoxType value); external CSSBoxType get toBox; + external set toBox(CSSBoxType value); } /// The **`VisualViewport`** interface of the [Visual Viewport API] represents @@ -231,17 +283,49 @@ extension type ConvertCoordinateOptions._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport). extension type VisualViewport._(JSObject _) implements EventTarget, JSObject { + /// The **`offsetLeft`** read-only property of the [VisualViewport] interface + /// returns the offset of the left edge of the visual viewport from the left + /// edge of the layout viewport in CSS pixels, or `0` if current document is + /// not fully active. external num get offsetLeft; + + /// The **`offsetTop`** read-only property of the [VisualViewport] interface + /// returns the offset of the top edge of the visual viewport from the top + /// edge of the layout viewport in CSS pixels, or `0` if current document is + /// not fully active. external num get offsetTop; + + /// The **`pageLeft`** read-only property of the [VisualViewport] interface + /// returns the x coordinate of the left edge of the visual viewport relative + /// to the initial containing block origin, in CSS pixels, or `0` if current + /// document is not fully active. external num get pageLeft; + + /// The **`pageTop`** read-only property of the [VisualViewport] interface + /// returns the y coordinate of the top edge of the visual viewport relative + /// to the initial containing block origin, in CSS pixels, or `0` if current + /// document is not fully active. external num get pageTop; + + /// The **`width`** read-only property of the [VisualViewport] interface + /// returns the width of the visual viewport, in CSS pixels, or `0` if current + /// document is not fully active. external num get width; + + /// The **`height`** read-only property of the [VisualViewport] interface + /// returns the height of the visual viewport, in CSS pixels, or `0` if + /// current document is not fully active. external num get height; + + /// The **`scale`** read-only property of the [VisualViewport] interface + /// returns the pinch-zoom scaling factor applied to the visual viewport, or + /// `0` if current document is not fully active, or `1` if there is no output + /// device. external num get scale; - external set onresize(EventHandler value); external EventHandler get onresize; - external set onscroll(EventHandler value); + external set onresize(EventHandler value); external EventHandler get onscroll; - external set onscrollend(EventHandler value); + external set onscroll(EventHandler value); external EventHandler get onscrollend; + external set onscrollend(EventHandler value); } diff --git a/lib/src/dom/encoding.dart b/lib/src/dom/encoding.dart index 53e425f2..37637d50 100644 --- a/lib/src/dom/encoding.dart +++ b/lib/src/dom/encoding.dart @@ -22,16 +22,16 @@ extension type TextDecoderOptions._(JSObject _) implements JSObject { bool ignoreBOM, }); - external set fatal(bool value); external bool get fatal; - external set ignoreBOM(bool value); + external set fatal(bool value); external bool get ignoreBOM; + external set ignoreBOM(bool value); } extension type TextDecodeOptions._(JSObject _) implements JSObject { external factory TextDecodeOptions({bool stream}); - external set stream(bool value); external bool get stream; + external set stream(bool value); } /// The **`TextDecoder`** interface represents a decoder for a specific text @@ -58,8 +58,31 @@ extension type TextDecoder._(JSObject _) implements JSObject { AllowSharedBufferSource input, TextDecodeOptions options, ]); + + /// The **`TextDecoder.encoding`** read-only property returns a string + /// containing the name of the decoding algorithm used by the specific decoder + /// object. + /// + /// The encoding is set by the + /// [constructor](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/TextDecoder) + /// `label` parameter, and defaults to `utf-8`. external String get encoding; + + /// The **`fatal`** read-only property of the [TextDecoder] interface is a + /// `Boolean` indicating whether the error mode is fatal. + /// + /// If the property is `true`, then a decoder will throw a `TypeError` if it + /// encounters malformed data while decoding. + /// If `false`, the decoder will substitute the invalid data with the + /// replacement character `U+FFFD` (�). + /// The value of the property is set in the [`TextDecoder()` + /// constructor](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/TextDecoder). external bool get fatal; + + /// The **`ignoreBOM`** read-only property of the [TextDecoder] interface is a + /// `Boolean` indicating whether the + /// [byte order mark](https://www.w3.org/International/questions/qa-byte-order-mark) + /// will be included in the output or skipped over. external bool get ignoreBOM; } extension type TextEncoderEncodeIntoResult._(JSObject _) implements JSObject { @@ -68,10 +91,10 @@ extension type TextEncoderEncodeIntoResult._(JSObject _) implements JSObject { int written, }); - external set read(int value); external int get read; - external set written(int value); + external set read(int value); external int get written; + external set written(int value); } /// The **`TextEncoder`** interface takes a stream of code points as input and @@ -99,6 +122,12 @@ extension type TextEncoder._(JSObject _) implements JSObject { String source, JSUint8Array destination, ); + + /// The **`TextEncoder.encoding`** read-only property returns a string + /// containing the name of the encoding algorithm used by the specific + /// encoder. + /// + /// It can only have the following value `utf-8`. external String get encoding; } @@ -117,10 +146,39 @@ extension type TextDecoderStream._(JSObject _) implements JSObject { TextDecoderOptions options, ]); + /// The **`encoding`** read-only property of the [TextDecoderStream] interface + /// returns a string containing the name of the encoding algorithm used by the + /// specific decoder. + /// + /// The encoding is set by the + /// [constructor](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoderStream/TextDecoderStream) + /// `label` parameter, and defaults to `utf-8`. external String get encoding; + + /// The **`fatal`** read-only property of the [TextDecoderStream] interface is + /// a `boolean` indicating if the error mode of the `TextDecoderStream` object + /// is set to `fatal`. + /// + /// If the property is `true` then a decoder will throw a `TypeError` if it + /// encounters malformed data while decoding. + /// If `false` the decoder will substitute the invalid data with the + /// replacement character `U+FFFD` (�). + /// The value of the property is set in the [`TextDecoderStream()` + /// constructor](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoderStream/TextDecoderStream). external bool get fatal; + + /// The **`ignoreBOM`** read-only property of the [TextDecoderStream] + /// interface is a `Boolean` indicating whether the + /// [byte order mark](https://www.w3.org/International/questions/qa-byte-order-mark) + /// will be included in the output or skipped over. external bool get ignoreBOM; + + /// The **`readable`** read-only property of the [TextDecoderStream] interface + /// returns a [ReadableStream]. external ReadableStream get readable; + + /// The **`writable`** read-only property of the [TextDecoderStream] interface + /// returns a [WritableStream]. external WritableStream get writable; } @@ -135,7 +193,17 @@ extension type TextDecoderStream._(JSObject _) implements JSObject { extension type TextEncoderStream._(JSObject _) implements JSObject { external factory TextEncoderStream(); + /// The **`encoding`** read-only property of the [TextEncoderStream] interface + /// returns a + /// string containing the name of the encoding algorithm used by the current + /// `TextEncoderStream` object. external String get encoding; + + /// The **`readable`** read-only property of the [TextEncoderStream] interface + /// returns a [ReadableStream]. external ReadableStream get readable; + + /// The **`writable`** read-only property of the [TextEncoderStream] interface + /// returns a [WritableStream]. external WritableStream get writable; } diff --git a/lib/src/dom/encrypted_media.dart b/lib/src/dom/encrypted_media.dart index 261aed7a..a8f68cde 100644 --- a/lib/src/dom/encrypted_media.dart +++ b/lib/src/dom/encrypted_media.dart @@ -34,20 +34,20 @@ extension type MediaKeySystemConfiguration._(JSObject _) implements JSObject { JSArray<JSString> sessionTypes, }); - external set label(String value); external String get label; - external set initDataTypes(JSArray<JSString> value); + external set label(String value); external JSArray<JSString> get initDataTypes; - external set audioCapabilities(JSArray<MediaKeySystemMediaCapability> value); + external set initDataTypes(JSArray<JSString> value); external JSArray<MediaKeySystemMediaCapability> get audioCapabilities; - external set videoCapabilities(JSArray<MediaKeySystemMediaCapability> value); + external set audioCapabilities(JSArray<MediaKeySystemMediaCapability> value); external JSArray<MediaKeySystemMediaCapability> get videoCapabilities; - external set distinctiveIdentifier(MediaKeysRequirement value); + external set videoCapabilities(JSArray<MediaKeySystemMediaCapability> value); external MediaKeysRequirement get distinctiveIdentifier; - external set persistentState(MediaKeysRequirement value); + external set distinctiveIdentifier(MediaKeysRequirement value); external MediaKeysRequirement get persistentState; - external set sessionTypes(JSArray<JSString> value); + external set persistentState(MediaKeysRequirement value); external JSArray<JSString> get sessionTypes; + external set sessionTypes(JSArray<JSString> value); } extension type MediaKeySystemMediaCapability._(JSObject _) implements JSObject { external factory MediaKeySystemMediaCapability({ @@ -56,12 +56,12 @@ extension type MediaKeySystemMediaCapability._(JSObject _) implements JSObject { String robustness, }); - external set contentType(String value); external String get contentType; - external set encryptionScheme(String? value); + external set contentType(String value); external String? get encryptionScheme; - external set robustness(String value); + external set encryptionScheme(String? value); external String get robustness; + external set robustness(String value); } /// The **`MediaKeySystemAccess`** interface of the @@ -94,6 +94,9 @@ extension type MediaKeySystemAccess._(JSObject _) implements JSObject { /// The `MediaKeySystemAccess.createMediaKeys()` method returns a /// `Promise` that resolves to a new [MediaKeys] object. external JSPromise<MediaKeys> createMediaKeys(); + + /// The `MediaKeySystemAccess.keySystem` read-only property returns a + /// string identifying the key system being used. external String get keySystem; } @@ -121,8 +124,8 @@ extension type MediaKeys._(JSObject _) implements JSObject { extension type MediaKeysPolicy._(JSObject _) implements JSObject { external factory MediaKeysPolicy({HDCPVersion minHdcpVersion}); - external set minHdcpVersion(HDCPVersion value); external HDCPVersion get minHdcpVersion; + external set minHdcpVersion(HDCPVersion value); } /// The **`MediaKeySession`** interface of the @@ -161,14 +164,39 @@ extension type MediaKeySession._(JSObject _) implements EventTarget, JSObject { /// The `MediaKeySession.remove()` method returns a `Promise` after removing /// any session data associated with the current object. external JSPromise<JSAny?> remove(); + + /// The **`MediaKeySession.sessionId`** is a read-only property + /// that contains a unique string generated by the content decryption module + /// (CDM) for the + /// current media object and its associated keys or licenses. external String get sessionId; + + /// The **`MediaKeySession.expiration`** read-only property returns + /// the time after which the keys in the current session can no longer be used + /// to decrypt + /// media data, or NaN if no such time exists. This value is determined by the + /// CDM and + /// measured in milliseconds since January 1, 1970, UTC. This value may change + /// during a + /// session lifetime, such as when an action triggers the start of a window. external num get expiration; + + /// The `MediaKeySession.closed` read-only property returns a + /// `Promise` signaling when a [MediaKeySession] closes. This + /// promise can only be fulfilled and is never rejected. Closing a session + /// means that + /// licenses and keys associated with it are no longer valid for decrypting + /// media data. external JSPromise<JSString> get closed; + + /// The **`MediaKeySession.keyStatuses`** read-only property + /// returns a reference to a read-only [MediaKeyStatusMap] of the current + /// session's keys and their statuses. external MediaKeyStatusMap get keyStatuses; - external set onkeystatuseschange(EventHandler value); external EventHandler get onkeystatuseschange; - external set onmessage(EventHandler value); + external set onkeystatuseschange(EventHandler value); external EventHandler get onmessage; + external set onmessage(EventHandler value); } /// The **`MediaKeyStatusMap`** interface of the @@ -189,6 +217,10 @@ extension type MediaKeyStatusMap._(JSObject _) implements JSObject { /// [MediaKeyStatusMap] interface returns the value associated with the given /// key, or `undefined` if there is none. external MediaKeyStatus? get(BufferSource keyId); + + /// The **`size`** read-only property of + /// the [MediaKeyStatusMap] interface returns the number of key/value paIrs + /// in the status map. external int get size; } @@ -207,7 +239,17 @@ extension type MediaKeyMessageEvent._(JSObject _) implements Event, JSObject { MediaKeyMessageEventInit eventInitDict, ); + /// The **`MediaKeyMessageEvent.messageType`** read-only property indicates + /// the + /// type of message. It may be one of `license-request`, + /// `license-renewal`, `license-release`, or + /// `individualization-request`. external MediaKeyMessageType get messageType; + + /// The **`MediaKeyMessageEvent.message`** read-only property + /// returns an `ArrayBuffer` with a message from the content decryption + /// module. + /// Messages vary by key system. external JSArrayBuffer get message; } extension type MediaKeyMessageEventInit._(JSObject _) @@ -220,10 +262,10 @@ extension type MediaKeyMessageEventInit._(JSObject _) required JSArrayBuffer message, }); - external set messageType(MediaKeyMessageType value); external MediaKeyMessageType get messageType; - external set message(JSArrayBuffer value); + external set messageType(MediaKeyMessageType value); external JSArrayBuffer get message; + external set message(JSArrayBuffer value); } /// The **`MediaEncryptedEvent`** interface of the @@ -242,7 +284,13 @@ extension type MediaEncryptedEvent._(JSObject _) implements Event, JSObject { MediaEncryptedEventInit eventInitDict, ]); + /// The read-only **`initDataType`** property of the [MediaKeyMessageEvent] + /// returns a case-sensitive string describing the type of the initialization + /// data associated with this event. external String get initDataType; + + /// The read-only **`initData`** property of the [MediaKeyMessageEvent] + /// returns the initialization data contained in this event, if any. external JSArrayBuffer? get initData; } extension type MediaEncryptedEventInit._(JSObject _) @@ -255,8 +303,8 @@ extension type MediaEncryptedEventInit._(JSObject _) JSArrayBuffer? initData, }); - external set initDataType(String value); external String get initDataType; - external set initData(JSArrayBuffer? value); + external set initDataType(String value); external JSArrayBuffer? get initData; + external set initData(JSArrayBuffer? value); } diff --git a/lib/src/dom/entries_api.dart b/lib/src/dom/entries_api.dart index 07d03d6a..900e6f46 100644 --- a/lib/src/dom/entries_api.dart +++ b/lib/src/dom/entries_api.dart @@ -37,10 +37,62 @@ extension type FileSystemEntry._(JSObject _) implements JSObject { FileSystemEntryCallback successCallback, ErrorCallback errorCallback, ]); + + /// The read-only **`isFile`** property of + /// the [FileSystemEntry] interface is `true` if the entry + /// represents a file (meaning it's a [FileSystemFileEntry]) and + /// `false` if it's not. + /// + /// You can also use [FileSystemEntry.isDirectory] to determine + /// if the entry is a directory. + /// + /// > **Warning:** You should not assume that any entry which isn't a file is + /// > a directory or vice versa. + /// > There are other types of file descriptors on many operating systems. Be + /// > sure to use + /// > both `isDirectory` and `isFile` as needed to ensure that the + /// > entry is something you know how to work with. external bool get isFile; + + /// The read-only **`isDirectory`** + /// property of the [FileSystemEntry] interface is `true` if the + /// entry represents a directory (meaning it's a [FileSystemDirectoryEntry]) + /// and `false` if it's not. + /// + /// You can also use [FileSystemEntry.isFile] to determine if the + /// entry is a file. + /// + /// > **Warning:** You should not assume that any entry which isn't a + /// > directory is a file or vice versa. + /// > There are other types of file descriptors on many operating systems. Be + /// > sure to use + /// > both `isDirectory` and `isFile` as needed to ensure that the + /// > entry is something you know how to work with. external bool get isDirectory; + + /// The read-only **`name`** property of + /// the [FileSystemEntry] interface returns a string + /// specifying the entry's name; this is the entry within its parent directory + /// (the last + /// component of the path as indicated by the [FileSystemEntry.fullPath] + /// property). external String get name; + + /// The read-only **`fullPath`** property + /// of the [FileSystemEntry] interface returns a string + /// specifying the full, absolute path from the file system's root to the file + /// represented + /// by the entry. + /// + /// This can also be thought of as a path which is relative to the root + /// directory, with a + /// "/" prepended to it to make it absolute. external String get fullPath; + + /// The read-only **`filesystem`** + /// property of the [FileSystemEntry] interface contains a + /// [FileSystem] object that represents the file system on which the entry + /// resides. external FileSystem get filesystem; } @@ -92,10 +144,10 @@ extension type FileSystemFlags._(JSObject _) implements JSObject { bool exclusive, }); - external set create(bool value); external bool get create; - external set exclusive(bool value); + external set create(bool value); external bool get exclusive; + external set exclusive(bool value); } /// The `FileSystemDirectoryReader` interface of the @@ -164,6 +216,16 @@ extension type FileSystemFileEntry._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/FileSystem). extension type FileSystem._(JSObject _) implements JSObject { + /// The read-only **`name`** property of the + /// [FileSystem] interface indicates the file system's name. This + /// string is unique among all file systems currently exposed by the + /// [File and Directory Entries API](https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API). external String get name; + + /// The read-only **`root`** property of the + /// [FileSystem] interface specifies a [FileSystemDirectoryEntry] + /// object representing the root directory of the file system, for use with + /// the + /// [File and Directory Entries API](https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API). external FileSystemDirectoryEntry get root; } diff --git a/lib/src/dom/fetch.dart b/lib/src/dom/fetch.dart index 1228f16a..3d1a4298 100644 --- a/lib/src/dom/fetch.dart +++ b/lib/src/dom/fetch.dart @@ -225,23 +225,111 @@ extension type Request._(JSObject _) implements JSObject { /// `String`. /// The response is _always_ decoded using UTF-8. external JSPromise<JSString> text(); + + /// The **`method`** read-only property of the + /// [Request] interface contains the request's method (`GET`, + /// `POST`, etc.) external String get method; + + /// The **`url`** read-only property of the [Request] + /// interface contains the URL of the request. external String get url; + + /// The **`headers`** read-only property of the + /// [Request] interface contains the [Headers] object associated + /// with the request. external Headers get headers; + + /// The **`destination`** read-only + /// property of the **[Request]** interface returns a string + /// describing the type of content being requested. + /// + /// The string must be one of the `audio`, `audioworklet`, + /// `document`, `embed`, `fencedframe`, `font`, `frame`, + /// `iframe`, `image`, `manifest`, `object`, + /// `paintworklet`, `report`, `script`, `sharedworker`, + /// `style`, `track`, `video`, `worker` + /// or `xslt` strings, or the empty string, which is the default value. + /// + /// The `destination` is used by the to, for example, + /// help determine which set of rules to follow for CORS purposes, or how to + /// navigate any + /// complicated code paths that affect how specific types of request get + /// handled. + /// + /// These destinations vary substantially in how they operate. Some are data + /// receptacles, + /// where the received data is stored for processing later. Others are + /// script-based, in + /// which case the received data is delivered to a script by calling it and + /// passing the data + /// along. Script-based destinations include `script` elements, as well as + /// any of the [Worklet]-based destinations + /// (including subclasses like [AudioWorklet]), and the + /// [Worker]-based destinations, including [ServiceWorker] + /// and [SharedWorker]. external RequestDestination get destination; + + /// The **`referrer`** read-only property of the + /// [Request] interface is set by the user agent to be the referrer of the + /// Request. (e.g., `client`, `no-referrer`, or a URL.) + /// + /// > **Note:** If `referrer`'s value is `no-referrer`, + /// > it returns an empty string. external String get referrer; + + /// The **`referrerPolicy`** read-only property of the + /// [Request] interface returns the referrer policy, which governs what + /// referrer information, sent in the `Referer` header, should be included + /// with the request. external ReferrerPolicy get referrerPolicy; + + /// The **`mode`** read-only property of the [Request] + /// interface contains the mode of the request (e.g., `cors`, + /// `no-cors`, `same-origin`, `navigate` or `websocket`.) This is used + /// to determine if cross-origin requests lead to valid responses, and which + /// properties of the response are readable. external RequestMode get mode; + + /// The **`credentials`** read-only property of the [Request] interface + /// indicates whether the user agent should send or receive cookies from the + /// other domain in the case of cross-origin requests. external RequestCredentials get credentials; + + /// The **`cache`** read-only property of the [Request] interface contains the + /// cache mode of the request. It controls how the request will interact with + /// the browser's + /// [HTTP cache](https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching). external RequestCache get cache; + + /// The **`redirect`** read-only property of the [Request] interface contains + /// the mode for how redirects are handled. external RequestRedirect get redirect; + + /// The **`integrity`** read-only property of the [Request] interface contains + /// the + /// [subresource integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) + /// value of the request. external String get integrity; external bool get keepalive; external bool get isReloadNavigation; external bool get isHistoryNavigation; + + /// The read-only **`signal`** property of the [Request] interface returns the + /// [AbortSignal] associated with the request. external AbortSignal get signal; external RequestDuplex get duplex; + + /// The read-only **`body`** property of the [Request] + /// interface contains a [ReadableStream] with the body contents + /// that have been added to the request. Note that a request using the + /// `GET` or `HEAD` method cannot have a body + /// and `null` is returned in these cases. external ReadableStream? get body; + + /// The read-only **`bodyUsed`** property of the + /// [Request] interface is a boolean value that indicates + /// whether the request body has been read yet. external bool get bodyUsed; } extension type RequestInit._(JSObject _) implements JSObject { @@ -263,36 +351,36 @@ extension type RequestInit._(JSObject _) implements JSObject { JSAny? window, }); - external set method(String value); external String get method; - external set headers(HeadersInit value); + external set method(String value); external HeadersInit get headers; - external set body(BodyInit? value); + external set headers(HeadersInit value); external BodyInit? get body; - external set referrer(String value); + external set body(BodyInit? value); external String get referrer; - external set referrerPolicy(ReferrerPolicy value); + external set referrer(String value); external ReferrerPolicy get referrerPolicy; - external set mode(RequestMode value); + external set referrerPolicy(ReferrerPolicy value); external RequestMode get mode; - external set credentials(RequestCredentials value); + external set mode(RequestMode value); external RequestCredentials get credentials; - external set cache(RequestCache value); + external set credentials(RequestCredentials value); external RequestCache get cache; - external set redirect(RequestRedirect value); + external set cache(RequestCache value); external RequestRedirect get redirect; - external set integrity(String value); + external set redirect(RequestRedirect value); external String get integrity; - external set keepalive(bool value); + external set integrity(String value); external bool get keepalive; - external set signal(AbortSignal? value); + external set keepalive(bool value); external AbortSignal? get signal; - external set duplex(RequestDuplex value); + external set signal(AbortSignal? value); external RequestDuplex get duplex; - external set priority(RequestPriority value); + external set duplex(RequestDuplex value); external RequestPriority get priority; - external set window(JSAny? value); + external set priority(RequestPriority value); external JSAny? get window; + external set window(JSAny? value); } /// The **`Response`** interface of the @@ -398,14 +486,79 @@ extension type Response._(JSObject _) implements JSObject { /// It returns a promise that resolves with a `String`. /// The response is _always_ decoded using UTF-8. external JSPromise<JSString> text(); + + /// The **`type`** read-only property of the [Response] interface contains the + /// type of the response. + /// It can be one of the following: + /// + /// - `basic`: Normal, same origin response, with all headers exposed except + /// "Set-Cookie". + /// - `cors`: Response was received from a valid cross-origin request. + /// [Certain headers and the body](https://fetch.spec.whatwg.org/#concept-filtered-response-cors) + /// may be accessed. + /// - `error`: Network error. + /// No useful information describing the error is available. + /// The Response's status is 0, headers are empty and immutable. + /// This is the type for a Response obtained from `Response.error()`. + /// - `opaque`: Response for "no-cors" request to cross-origin resource. + /// [Severely restricted](https://fetch.spec.whatwg.org/#concept-filtered-response-opaque). + /// - `opaqueredirect`: The fetch request was made with `redirect: "manual"`. + /// The Response's status is 0, headers are empty, body is null and trailer is + /// empty. + /// + /// > **Note:** An "error" Response never really gets exposed to script: such + /// > a response to a [fetch] would reject the promise. external ResponseType get type; + + /// The **`url`** read-only property of the [Response] interface contains the + /// URL of the response. + /// The value of the `url` property will be the final URL obtained after any + /// redirects. external String get url; + + /// The read-only **`redirected`** property of the [Response] interface + /// indicates whether or not the response is the result of a request you made + /// which was redirected. + /// + /// > **Note:** Relying on redirected to filter out redirects makes it easy + /// > for a forged redirect to prevent your content from working as expected. + /// > Instead, you should do the filtering when you call [fetch]. + /// > See the example [Disallowing redirects](#disallowing_redirects), which + /// > shows this being done. external bool get redirected; + + /// The **`status`** read-only property of the [Response] interface contains + /// the + /// [HTTP status codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) + /// of the response. + /// + /// For example, `200` for success, `404` if the resource could not be found. external int get status; + + /// The **`ok`** read-only property of the [Response] interface contains a + /// Boolean stating whether the response was successful (status in the range + /// 200-299) or not. external bool get ok; + + /// The **`statusText`** read-only property of the [Response] interface + /// contains the status message corresponding to the HTTP status code in + /// [Response.status]. + /// + /// For example, this would be `OK` for a status code `200`, `Continue` for + /// `100`, `Not Found` for `404`. external String get statusText; + + /// The **`headers`** read-only property of the + /// [Response] interface contains the [Headers] object associated + /// with the response. external Headers get headers; + + /// The **`body`** read-only property of the [Response] interface is a + /// [ReadableStream] of the body contents. external ReadableStream? get body; + + /// The **`bodyUsed`** read-only property of the [Response] interface is a + /// boolean value that indicates whether the body has been read yet. external bool get bodyUsed; } extension type ResponseInit._(JSObject _) implements JSObject { @@ -415,10 +568,10 @@ extension type ResponseInit._(JSObject _) implements JSObject { HeadersInit headers, }); - external set status(int value); external int get status; - external set statusText(String value); + external set status(int value); external String get statusText; - external set headers(HeadersInit value); + external set statusText(String value); external HeadersInit get headers; + external set headers(HeadersInit value); } diff --git a/lib/src/dom/fileapi.dart b/lib/src/dom/fileapi.dart index c5ae35a1..26e82d64 100644 --- a/lib/src/dom/fileapi.dart +++ b/lib/src/dom/fileapi.dart @@ -64,7 +64,24 @@ extension type Blob._(JSObject _) implements JSObject { /// as /// binary data contained in an `ArrayBuffer`. external JSPromise<JSArrayBuffer> arrayBuffer(); + + /// The **`size`** read-only property of the [Blob] interface returns + /// the size of the [Blob] or [File] in bytes. external int get size; + + /// The **`type`** read-only property of the [Blob] interface returns the of + /// the file. + /// + /// > **Note:** Based on the current implementation, browsers won't actually + /// > read the bytestream of a file to determine its media type. + /// > It is assumed based on the file extension; a PNG image file renamed to + /// > .txt would give "_text/plain_" and not "_image/png_". Moreover, + /// > `blob.type` is generally reliable only for common file types like + /// > images, HTML documents, audio and video. + /// > Uncommon file extensions would return an empty string. + /// > Client configuration (for instance, the Windows Registry) may result in + /// > unexpected values even for common types. **Developers are advised not to + /// > rely on this property as a sole validation scheme.** external String get type; } extension type BlobPropertyBag._(JSObject _) implements JSObject { @@ -73,10 +90,10 @@ extension type BlobPropertyBag._(JSObject _) implements JSObject { EndingType endings, }); - external set type(String value); external String get type; - external set endings(EndingType value); + external set type(String value); external EndingType get endings; + external set endings(EndingType value); } /// The **`File`** interface provides information about files and allows @@ -107,8 +124,25 @@ extension type File._(JSObject _) implements Blob, JSObject { FilePropertyBag options, ]); + /// The **`name`** read-only property of the [File] interface returns the name + /// of the file represented by a [File] object. For security + /// reasons, the path is excluded from this property. external String get name; + + /// The **`lastModified`** read-only property of the [File] interface provides + /// the + /// last modified date of the file as the number of milliseconds since the + /// Unix + /// epoch (January 1, 1970 at midnight). Files without a known last modified + /// date return the + /// current date. external int get lastModified; + + /// The **`webkitRelativePath`** read-only property of the [File] interface + /// contains a string which specifies the file's path relative to the + /// directory selected by the user in an `input` element with its + /// [`webkitdirectory`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#webkitdirectory) + /// attribute set. external String get webkitRelativePath; } extension type FilePropertyBag._(JSObject _) @@ -119,8 +153,8 @@ extension type FilePropertyBag._(JSObject _) int lastModified, }); - external set lastModified(int value); external int get lastModified; + external set lastModified(int value); } /// The **`FileList`** interface represents an object of this type returned by @@ -160,6 +194,9 @@ extension type FileList._(JSObject _) implements JSObject { /// The **`item()`** method of the [FileList] interface returns a [File] /// object representing the file at the specified index in the file list. external File? item(int index); + + /// The **`length`** read-only property of the [FileList] interface returns + /// the number of files in the `FileList`. external int get length; } @@ -264,21 +301,50 @@ extension type FileReader._(JSObject _) implements EventTarget, JSObject { /// operation. Upon return, /// the [FileReader.readyState] will be `DONE`. external void abort(); + + /// The **`readyState`** read-only property of the [FileReader] interface + /// provides the current state of the reading operation a `FileReader` is in. + /// A `FileReader` exists in one of the following states: + /// + /// | Value | State | Description | + /// | ----- | --------- | ------------------------------------------------------------- | + /// | `0` | `EMPTY` | Reader has been created. None of the read methods called yet. | + /// | `1` | `LOADING` | A read method has been called. | + /// | `2` | `DONE` | The operation is complete. | + /// + /// - `EMPTY` + /// - : The `FileReader` has been created, but no readAs method was called yet. + /// - `LOADING` + /// - : A readAs method was invoked. A [File] or [Blob] is being read, and no error has occurred yet. + /// - `DONE` + /// - : The read operation is complete. This could mean that: the entire [File] or [Blob] has been read into memory, a file read error occurred, or [FileReader.abort] was called and the read was cancelled. external int get readyState; + + /// The **`result`** read-only property of the [FileReader] interface returns + /// the + /// file's contents. This property is only valid after the read operation is + /// complete, and + /// the format of the data depends on which of the methods was used to + /// initiate the read + /// operation. external JSAny? get result; + + /// The **`error`** read-only property of the [FileReader] interface returns + /// the + /// error that occurred while reading the file. external DOMException? get error; - external set onloadstart(EventHandler value); external EventHandler get onloadstart; - external set onprogress(EventHandler value); + external set onloadstart(EventHandler value); external EventHandler get onprogress; - external set onload(EventHandler value); + external set onprogress(EventHandler value); external EventHandler get onload; - external set onabort(EventHandler value); + external set onload(EventHandler value); external EventHandler get onabort; - external set onerror(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onerror; - external set onloadend(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onloadend; + external set onloadend(EventHandler value); } /// The **`FileReaderSync`** interface allows to read [File] or [Blob] objects diff --git a/lib/src/dom/fs.dart b/lib/src/dom/fs.dart index 7c1ff0a5..3e61d935 100644 --- a/lib/src/dom/fs.dart +++ b/lib/src/dom/fs.dart @@ -36,15 +36,26 @@ extension type FileSystemHandle._(JSObject _) implements JSObject { /// [FileSystemHandle] interface compares two [FileSystemHandle] to see if the /// associated entries (either a file or directory) match. external JSPromise<JSBoolean> isSameEntry(FileSystemHandle other); + + /// The **`kind`** read-only property of the + /// [FileSystemHandle] interface returns the type of entry. This is + /// `'file'` if the associated entry is a file or `'directory'`. It is + /// used to distinguish files from directories when iterating over the + /// contents of a + /// directory. external FileSystemHandleKind get kind; + + /// The **`name`** read-only property of the + /// [FileSystemHandle] interface returns the name of the entry represented by + /// handle. external String get name; } extension type FileSystemCreateWritableOptions._(JSObject _) implements JSObject { external factory FileSystemCreateWritableOptions({bool keepExistingData}); - external set keepExistingData(bool value); external bool get keepExistingData; + external set keepExistingData(bool value); } /// The **`FileSystemFileHandle`** interface of the [File System API] represents @@ -105,20 +116,20 @@ extension type FileSystemFileHandle._(JSObject _) extension type FileSystemGetFileOptions._(JSObject _) implements JSObject { external factory FileSystemGetFileOptions({bool create}); - external set create(bool value); external bool get create; + external set create(bool value); } extension type FileSystemGetDirectoryOptions._(JSObject _) implements JSObject { external factory FileSystemGetDirectoryOptions({bool create}); - external set create(bool value); external bool get create; + external set create(bool value); } extension type FileSystemRemoveOptions._(JSObject _) implements JSObject { external factory FileSystemRemoveOptions({bool recursive}); - external set recursive(bool value); external bool get recursive; + external set recursive(bool value); } /// The **`FileSystemDirectoryHandle`** interface of the [File System API] @@ -176,14 +187,14 @@ extension type WriteParams._(JSObject _) implements JSObject { JSAny? data, }); - external set type(WriteCommandType value); external WriteCommandType get type; - external set size(int? value); + external set type(WriteCommandType value); external int? get size; - external set position(int? value); + external set size(int? value); external int? get position; - external set data(JSAny? value); + external set position(int? value); external JSAny? get data; + external set data(JSAny? value); } /// The **`FileSystemWritableFileStream`** interface of the [File System API] is @@ -233,8 +244,8 @@ extension type FileSystemWritableFileStream._(JSObject _) extension type FileSystemReadWriteOptions._(JSObject _) implements JSObject { external factory FileSystemReadWriteOptions({int at}); - external set at(int value); external int get at; + external set at(int value); } /// The **`FileSystemSyncAccessHandle`** interface of the [File System API] diff --git a/lib/src/dom/gamepad.dart b/lib/src/dom/gamepad.dart index 73d472bf..497e539a 100644 --- a/lib/src/dom/gamepad.dart +++ b/lib/src/dom/gamepad.dart @@ -35,13 +35,104 @@ typedef GamepadHapticEffectType = String; /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Gamepad). extension type Gamepad._(JSObject _) implements JSObject { + /// The **`Gamepad.id`** property of the [Gamepad] + /// interface returns a string containing some information about the + /// controller. + /// + /// The exact syntax is not strictly specified, but in Firefox it will contain + /// three pieces + /// of information separated by dashes (`-`): + /// + /// - Two 4-digit hexadecimal strings containing the USB vendor and product id + /// of the + /// controller + /// - The name of the controller as provided by the driver. + /// + /// For example, a PS2 controller returned **810-3-USB Gamepad**. + /// + /// This information is intended to allow you to find a mapping for the + /// controls on the + /// device as well as display useful feedback to the user. external String get id; + + /// The **`Gamepad.index`** property of the [Gamepad] + /// interface returns an integer that is auto-incremented to be unique for + /// each device + /// currently connected to the system. + /// + /// This can be used to distinguish multiple controllers; a gamepad that is + /// disconnected + /// and reconnected will retain the same index. external int get index; + + /// The **`Gamepad.connected`** property of the + /// [Gamepad] interface returns a boolean indicating whether the gamepad is + /// still connected to the system. + /// + /// If the gamepad is connected, the value is `true`; if not, it is + /// `false`. external bool get connected; + + /// The **`Gamepad.timestamp`** property of the + /// [Gamepad] interface returns a [DOMHighResTimeStamp] + /// representing the last time the data for this gamepad was updated. + /// + /// The idea behind this is to allow developers to determine if the `axes` and + /// `button` data have been updated from the hardware. The value must be + /// relative to the `navigationStart` attribute of the + /// [PerformanceTiming] interface. Values are monotonically + /// increasing, meaning that they can be compared to determine the ordering of + /// updates, as + /// newer values will always be greater than or equal to older values. + /// + /// > **Note:** This property is not currently supported anywhere. external DOMHighResTimeStamp get timestamp; + + /// The **`Gamepad.mapping`** property of the + /// [Gamepad] interface returns a string indicating whether the browser has + /// remapped the controls on the device to a known layout. + /// + /// The currently supported known layouts are: + /// + /// - "standard" for the + /// [standard gamepad](https://w3c.github.io/gamepad/#remapping). + /// - "xr-standard for the + /// [standard XR gamepad](https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-heading). + /// See also [XRInputSource.gamepad]. external GamepadMappingType get mapping; + + /// The **`Gamepad.axes`** property of the [Gamepad] + /// interface returns an array representing the controls with axes present on + /// the device + /// (e.g. analog thumb sticks). + /// + /// Each entry in the array is a floating point value in the range -1.0 – 1.0, + /// representing + /// the axis position from the lowest value (-1.0) to the highest value (1.0). external JSArray<JSNumber> get axes; + + /// The **`Gamepad.buttons`** property of the [Gamepad] interface returns an + /// array of [gamepadButton] objects representing the + /// buttons present on the device. + /// + /// Each entry in the array is 0 if the button is not pressed, and non-zero + /// (typically 1.0) + /// if the button is pressed. Each [gamepadButton] object has two properties: + /// `pressed` and `value`: + /// + /// - The `pressed` property is a boolean indicating whether the button is + /// currently pressed (`true`) or unpressed (`false`). + /// - The `value` property is a floating point value used to enable + /// representing analog buttons, such as the triggers on many modern gamepads. + /// The values + /// are normalized to the range 0.0 – 1.0, with 0.0 representing a button that + /// is not + /// pressed, and 1.0 representing a button that is fully pressed. external JSArray<GamepadButton> get buttons; + + /// The **`vibrationActuator`** read-only property of the [Gamepad] interface + /// returns a [GamepadHapticActuator] object, which represents haptic feedback + /// hardware available on the controller. external GamepadHapticActuator get vibrationActuator; } @@ -57,8 +148,31 @@ extension type Gamepad._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton). extension type GamepadButton._(JSObject _) implements JSObject { + /// The **`GamepadButton.pressed`** property of the + /// [GamepadButton] interface returns a `boolean` indicating whether + /// the button is currently pressed (`true`) or unpressed (`false`). external bool get pressed; + + /// The **`touched`** property of the + /// [GamepadButton] interface returns a `boolean` indicating whether + /// a button capable of detecting touch is currently touched (`true`) or not + /// touched (`false`). + /// + /// If the button is not capable of detecting touch but can return an analog + /// value, the property will be `true` if the value is greater than `0`, and + /// `false` otherwise. If the button is not capable of detecting touch and can + /// only report a digital value, then it should mirror the + /// [GamepadButton.pressed] property. external bool get touched; + + /// The **`GamepadButton.value`** property of the + /// [GamepadButton] interface returns a double value used to represent the + /// current state of analog buttons on many modern gamepads, such as the + /// triggers. + /// + /// The values are normalized to the range `0.0` — `1.0`, with + /// `0.0` representing a button that is not pressed, and 1.0 representing a + /// button that is fully pressed. external num get value; } @@ -91,14 +205,14 @@ extension type GamepadEffectParameters._(JSObject _) implements JSObject { num weakMagnitude, }); - external set duration(int value); external int get duration; - external set startDelay(int value); + external set duration(int value); external int get startDelay; - external set strongMagnitude(num value); + external set startDelay(int value); external num get strongMagnitude; - external set weakMagnitude(num value); + external set strongMagnitude(num value); external num get weakMagnitude; + external set weakMagnitude(num value); } /// The GamepadEvent interface of the Gamepad API contains references to @@ -116,6 +230,11 @@ extension type GamepadEvent._(JSObject _) implements Event, JSObject { GamepadEventInit eventInitDict, ); + /// The **`GamepadEvent.gamepad`** property of the + /// **[GamepadEvent] interface** returns a [Gamepad] + /// object, providing access to the associated gamepad data for fired + /// [Window.gamepadconnected_event] and [Window.gamepaddisconnected_event] + /// events. external Gamepad get gamepad; } extension type GamepadEventInit._(JSObject _) implements EventInit, JSObject { @@ -126,6 +245,6 @@ extension type GamepadEventInit._(JSObject _) implements EventInit, JSObject { required Gamepad gamepad, }); - external set gamepad(Gamepad value); external Gamepad get gamepad; + external set gamepad(Gamepad value); } diff --git a/lib/src/dom/geolocation.dart b/lib/src/dom/geolocation.dart index b46a5216..c363d974 100644 --- a/lib/src/dom/geolocation.dart +++ b/lib/src/dom/geolocation.dart @@ -66,12 +66,12 @@ extension type PositionOptions._(JSObject _) implements JSObject { int maximumAge, }); - external set enableHighAccuracy(bool value); external bool get enableHighAccuracy; - external set timeout(int value); + external set enableHighAccuracy(bool value); external int get timeout; - external set maximumAge(int value); + external set timeout(int value); external int get maximumAge; + external set maximumAge(int value); } /// The **`GeolocationPosition`** interface represents the position of the @@ -84,7 +84,17 @@ extension type PositionOptions._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPosition). extension type GeolocationPosition._(JSObject _) implements JSObject { + /// The **`coords`** read-only property of the [GeolocationPosition] interface + /// returns a [GeolocationCoordinates] object representing a geographic + /// position. It contains the location, that is longitude and latitude on the + /// Earth, the altitude, and the speed of the object concerned, regrouped + /// inside the returned value. It also contains accuracy information about + /// these values. external GeolocationCoordinates get coords; + + /// The **`timestamp`** read-only property of the [GeolocationPosition] + /// interface represents the date and time that the position was acquired by + /// the device. external EpochTimeStamp get timestamp; } @@ -99,12 +109,55 @@ extension type GeolocationPosition._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationCoordinates). extension type GeolocationCoordinates._(JSObject _) implements JSObject { + /// The **`accuracy`** read-only property of the [GeolocationCoordinates] + /// interface is a strictly positive `double` representing the accuracy, with + /// a 95% confidence level, of the [GeolocationCoordinates.latitude] and + /// [GeolocationCoordinates.longitude] properties expressed in meters. external num get accuracy; + + /// The **`latitude`** read-only property of the [GeolocationCoordinates] + /// interface is a `double` representing the latitude of the position in + /// decimal degrees. external num get latitude; + + /// The **`longitude`** read-only property of the [GeolocationCoordinates] + /// interface is a number which represents the longitude of a geographical + /// position, specified in decimal degrees. + /// Together with a timestamp, given as in milliseconds, indicating a time of + /// measurement, the `GeolocationCoordinates` object is part of the + /// [GeolocationPosition] interface, which is the object type returned by + /// Geolocation API functions that obtain and return a geographical position. external num get longitude; + + /// The **`altitude`** read-only property of the [GeolocationCoordinates] + /// interface is a `double` representing the altitude of the position in + /// meters above the + /// [WGS84](https://gis-lab.info/docs/nima-tr8350.2-wgs84fin.pdf) ellipsoid + /// (which defines the nominal sea level surface). This value is `null` if the + /// implementation cannot provide this data. external num? get altitude; + + /// The **`altitudeAccuracy`** read-only property of the + /// [GeolocationCoordinates] interface is a strictly positive `double` + /// representing the accuracy, with a 95% confidence level, of the `altitude` + /// expressed in meters. This value is `null` if the implementation doesn't + /// support measuring altitude. external num? get altitudeAccuracy; + + /// The **`heading`** read-only property of the [GeolocationCoordinates] + /// interface is a `double` representing the direction in which the device is + /// traveling. This value, specified in degrees, indicates how far off from + /// heading due north the device is. `0` degrees represents true north, and + /// the direction is determined clockwise (which means that east is `90` + /// degrees and west is `270` degrees). If [GeolocationCoordinates.speed] is + /// `0`, `heading` is `NaN`. If the device is not able to provide heading + /// information, this value is `null`. external num? get heading; + + /// The **`speed`** read-only property of the [GeolocationCoordinates] + /// interface is a `double` representing the velocity of the device in meters + /// per second. This value is `null` if the implementation is not able to + /// measure it. external num? get speed; } @@ -119,6 +172,48 @@ extension type GeolocationPositionError._(JSObject _) implements JSObject { external static int get PERMISSION_DENIED; external static int get POSITION_UNAVAILABLE; external static int get TIMEOUT; + + /// The **`code`** read-only property of the [GeolocationPositionError] + /// interface is an `unsigned short` representing the error code. + /// + /// The following values are possible: + /// + /// <table class="no-markdown"> + /// <thead> + /// <tr> + /// <th scope="col">Value</th> + /// <th scope="col">Associated constant</th> + /// <th scope="col">Description</th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td><code>1</code></td> + /// <td><code>PERMISSION_DENIED</code></td> + /// <td> + /// The acquisition of the geolocation information failed because the page + /// didn't have the permission to do it. + /// </td> + /// </tr> + /// <tr> + /// <td><code>2</code></td> + /// <td><code>POSITION_UNAVAILABLE</code></td> + /// <td> + /// The acquisition of the geolocation failed because one or several internal + /// sources of position returned an internal error. + /// </td> + /// </tr> + /// <tr> + /// <td><code>3</code></td> + /// <td><code>TIMEOUT</code></td> + /// <td>Geolocation information was not obtained in the allowed time.</td> + /// </tr> + /// </tbody> + /// </table> external int get code; + + /// The **`message`** read-only property of the [GeolocationPositionError] + /// interface returns a human-readable string describing the details of the + /// error. external String get message; } diff --git a/lib/src/dom/geometry.dart b/lib/src/dom/geometry.dart index 6f5f12bd..99e13e81 100644 --- a/lib/src/dom/geometry.dart +++ b/lib/src/dom/geometry.dart @@ -58,9 +58,48 @@ extension type DOMPointReadOnly._(JSObject _) implements JSObject { /// `toJSON()` returns an object giving the /// form of the point object. external JSObject toJSON(); + + /// The **`DOMPointReadOnly`** interface's + /// **`x`** property holds the horizontal coordinate, x, for a + /// read-only point in space. This property cannot be changed by JavaScript + /// code in this + /// read-only version of the `DOMPoint` object. + /// + /// In general, positive values `x` mean to the right, and negative values of + /// `x` means to the left, assuming no transforms have resulted in a reversal. external num get x; + + /// The **`DOMPointReadOnly`** interface's + /// **`y`** property holds the vertical coordinate, y, for a + /// read-only point in space. + /// + /// If your script needs to be able to change the value + /// of this property, you should instead use the [DOMPoint] object. + /// + /// In general, positive values of `y` mean downward, and negative values of + /// `y` mean upward, assuming no transforms have resulted in a reversal. external num get y; + + /// The **`DOMPointReadOnly`** interface's + /// **`z`** property holds the depth coordinate, z, for a + /// read-only point in space. + /// + /// If your script needs to be able to change the value + /// of this property, you should instead use the [DOMPoint] object. + /// + /// In general, positive values of `z` mean toward the user (out from the + /// screen), and negative values of `z` mean away from the user (into the + /// screen), assuming no transforms have resulted in a reversal. external num get z; + + /// The **`DOMPointReadOnly`** interface's + /// **`w`** property holds the point's perspective value, + /// `w`, for a read-only point in space. + /// + /// If your script needs to be able + /// to change the value of this property, you should instead use the + /// [DOMPoint] + /// object. external num get w; } @@ -87,14 +126,43 @@ extension type DOMPoint._(JSObject _) implements DOMPointReadOnly, JSObject { ]); external static DOMPoint fromPoint([DOMPointInit other]); - external set x(num value); + + /// The **`DOMPoint`** interface's + /// **`x`** property holds the horizontal coordinate, x, for a + /// point in space. + /// + /// In general, positive values `x` mean to the right, + /// and negative values of `x` means to the left, barring any transforms that + /// may + /// have altered the orientation of the axes. external num get x; - external set y(num value); + external set x(num value); + + /// The **`DOMPoint`** interface's + /// **`y`** property holds the vertical coordinate, _y_, + /// for a point in space. + /// + /// Unless transforms have been applied to alter the + /// orientation, the value of `y` increases downward and decreases upward. external num get y; - external set z(num value); + external set y(num value); + + /// The **`DOMPoint`** interface's + /// **`z`** property specifies the depth coordinate of a point in + /// space. + /// + /// Unless transforms have changed the orientation, a `z` of 0 is + /// the plane of the screen, with positive values extending outward toward the + /// user from the + /// screen, and negative values receding into the distance behind the screen. external num get z; - external set w(num value); + external set z(num value); + + /// The **`DOMPoint`** interface's + /// **`w`** property holds the point's perspective value, w, for a + /// point in space. external num get w; + external set w(num value); } extension type DOMPointInit._(JSObject _) implements JSObject { external factory DOMPointInit({ @@ -104,14 +172,14 @@ extension type DOMPointInit._(JSObject _) implements JSObject { num w, }); - external set x(num value); external num get x; - external set y(num value); + external set x(num value); external num get y; - external set z(num value); + external set y(num value); external num get z; - external set w(num value); + external set z(num value); external num get w; + external set w(num value); } /// The **`DOMRectReadOnly`** interface specifies the standard properties (also @@ -131,13 +199,41 @@ extension type DOMRectReadOnly._(JSObject _) implements JSObject { external static DOMRectReadOnly fromRect([DOMRectInit other]); external JSObject toJSON(); + + /// The **`x`** read-only property of the **`DOMRectReadOnly`** interface + /// represents the x coordinate of the `DOMRect`'s origin. external num get x; + + /// The **`y`** read-only property of the **`DOMRectReadOnly`** interface + /// represents the y coordinate of the `DOMRect`'s origin. external num get y; + + /// The **`width`** read-only property of the **`DOMRectReadOnly`** interface + /// represents the width of the `DOMRect`. external num get width; + + /// The **`height`** read-only property of the **`DOMRectReadOnly`** interface + /// represents the height of the `DOMRect`. external num get height; + + /// The **`top`** read-only property of the **`DOMRectReadOnly`** interface + /// returns the top coordinate value of the `DOMRect`. (Has the same value as + /// `y`, or `y + height` if `height` is negative.) external num get top; + + /// The **`right`** read-only property of the **`DOMRectReadOnly`** interface + /// returns the right coordinate value of the `DOMRect`. (Has the same value + /// as `x + width`, or `x` if `width` is negative.) external num get right; + + /// The **`bottom`** read-only property of the **`DOMRectReadOnly`** interface + /// returns the bottom coordinate value of the `DOMRect`. (Has the same value + /// as `y + height`, or `y` if `height` is negative.) external num get bottom; + + /// The **`left`** read-only property of the **`DOMRectReadOnly`** interface + /// returns the left coordinate value of the `DOMRect`. (Has the same value as + /// `x`, or `x + width` if `width` is negative.) external num get left; } @@ -163,14 +259,14 @@ extension type DOMRect._(JSObject _) implements DOMRectReadOnly, JSObject { ]); external static DOMRect fromRect([DOMRectInit other]); - external set x(num value); external num get x; - external set y(num value); + external set x(num value); external num get y; - external set width(num value); + external set y(num value); external num get width; - external set height(num value); + external set width(num value); external num get height; + external set height(num value); } extension type DOMRectInit._(JSObject _) implements JSObject { external factory DOMRectInit({ @@ -180,14 +276,14 @@ extension type DOMRectInit._(JSObject _) implements JSObject { num height, }); - external set x(num value); external num get x; - external set y(num value); + external set x(num value); external num get y; - external set width(num value); + external set y(num value); external num get width; - external set height(num value); + external set width(num value); external num get height; + external set height(num value); } extension type DOMRectList._(JSObject _) implements JSObject { external DOMRect? item(int index); @@ -229,14 +325,14 @@ extension type DOMQuadInit._(JSObject _) implements JSObject { DOMPointInit p4, }); - external set p1(DOMPointInit value); external DOMPointInit get p1; - external set p2(DOMPointInit value); + external set p1(DOMPointInit value); external DOMPointInit get p2; - external set p3(DOMPointInit value); + external set p2(DOMPointInit value); external DOMPointInit get p3; - external set p4(DOMPointInit value); + external set p3(DOMPointInit value); external DOMPointInit get p4; + external set p4(DOMPointInit value); } /// The **`DOMMatrixReadOnly`** interface represents a read-only 4×4 matrix, @@ -404,50 +500,50 @@ extension type DOMMatrix._(JSObject _) implements DOMMatrixReadOnly, JSObject { external DOMMatrix skewYSelf([num sy]); external DOMMatrix invertSelf(); external DOMMatrix setMatrixValue(String transformList); - external set a(num value); external num get a; - external set b(num value); + external set a(num value); external num get b; - external set c(num value); + external set b(num value); external num get c; - external set d(num value); + external set c(num value); external num get d; - external set e(num value); + external set d(num value); external num get e; - external set f(num value); + external set e(num value); external num get f; - external set m11(num value); + external set f(num value); external num get m11; - external set m12(num value); + external set m11(num value); external num get m12; - external set m13(num value); + external set m12(num value); external num get m13; - external set m14(num value); + external set m13(num value); external num get m14; - external set m21(num value); + external set m14(num value); external num get m21; - external set m22(num value); + external set m21(num value); external num get m22; - external set m23(num value); + external set m22(num value); external num get m23; - external set m24(num value); + external set m23(num value); external num get m24; - external set m31(num value); + external set m24(num value); external num get m31; - external set m32(num value); + external set m31(num value); external num get m32; - external set m33(num value); + external set m32(num value); external num get m33; - external set m34(num value); + external set m33(num value); external num get m34; - external set m41(num value); + external set m34(num value); external num get m41; - external set m42(num value); + external set m41(num value); external num get m42; - external set m43(num value); + external set m42(num value); external num get m43; - external set m44(num value); + external set m43(num value); external num get m44; + external set m44(num value); } extension type DOMMatrix2DInit._(JSObject _) implements JSObject { external factory DOMMatrix2DInit({ @@ -465,30 +561,30 @@ extension type DOMMatrix2DInit._(JSObject _) implements JSObject { num m42, }); - external set a(num value); external num get a; - external set b(num value); + external set a(num value); external num get b; - external set c(num value); + external set b(num value); external num get c; - external set d(num value); + external set c(num value); external num get d; - external set e(num value); + external set d(num value); external num get e; - external set f(num value); + external set e(num value); external num get f; - external set m11(num value); + external set f(num value); external num get m11; - external set m12(num value); + external set m11(num value); external num get m12; - external set m21(num value); + external set m12(num value); external num get m21; - external set m22(num value); + external set m21(num value); external num get m22; - external set m41(num value); + external set m22(num value); external num get m41; - external set m42(num value); + external set m41(num value); external num get m42; + external set m42(num value); } extension type DOMMatrixInit._(JSObject _) implements DOMMatrix2DInit, JSObject { @@ -518,26 +614,26 @@ extension type DOMMatrixInit._(JSObject _) bool is2D, }); - external set m13(num value); external num get m13; - external set m14(num value); + external set m13(num value); external num get m14; - external set m23(num value); + external set m14(num value); external num get m23; - external set m24(num value); + external set m23(num value); external num get m24; - external set m31(num value); + external set m24(num value); external num get m31; - external set m32(num value); + external set m31(num value); external num get m32; - external set m33(num value); + external set m32(num value); external num get m33; - external set m34(num value); + external set m33(num value); external num get m34; - external set m43(num value); + external set m34(num value); external num get m43; - external set m44(num value); + external set m43(num value); external num get m44; - external set is2D(bool value); + external set m44(num value); external bool get is2D; + external set is2D(bool value); } diff --git a/lib/src/dom/hr_time.dart b/lib/src/dom/hr_time.dart index a3e4db7a..0ce632f2 100644 --- a/lib/src/dom/hr_time.dart +++ b/lib/src/dom/hr_time.dart @@ -184,9 +184,52 @@ extension type Performance._(JSObject _) implements EventTarget, JSObject { /// The **`clearMeasures()`** method removes all or specific /// [PerformanceMeasure] objects from the browser's performance timeline. external void clearMeasures([String measureName]); + + /// The **`timeOrigin`** read-only property of the [Performance] interface + /// returns the high resolution timestamp that is used as the baseline for + /// performance-related timestamps. + /// + /// In Window contexts, this value represents the time when navigation has + /// started. In [Worker] and [ServiceWorker] contexts, this value represents + /// the time when the worker is run. You can use this property to synchronize + /// the time origins between the contexts (see example below). + /// + /// > **Note:** The value of `performance.timeOrigin` may differ from the + /// > value returned by `Date.now()` executed at the time origin, because + /// > `Date.now()` may have been impacted by system and user clock + /// > adjustments, clock skew, etc. The `timeOrigin` property is a + /// > [monotonic clock](https://w3c.github.io/hr-time/#dfn-monotonic-clock) + /// > which current time never decreases and which isn't subject to these + /// > adjustments. external DOMHighResTimeStamp get timeOrigin; + + /// The legacy + /// **`Performance.timing`** read-only + /// property returns a [PerformanceTiming] object containing latency-related + /// performance information. + /// + /// This property is not available in workers. + /// + /// > **Warning:** This property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. external PerformanceTiming get timing; + + /// The legacy + /// **`Performance.navigation`** + /// read-only property returns a [PerformanceNavigation] object representing + /// the type of navigation that occurs in the given browsing context, such as + /// the number of + /// redirections needed to fetch the resource. + /// + /// This property is not available in workers. + /// + /// > **Warning:** This property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the + /// > [PerformanceNavigationTiming] interface instead. external PerformanceNavigation get navigation; - external set onresourcetimingbufferfull(EventHandler value); external EventHandler get onresourcetimingbufferfull; + external set onresourcetimingbufferfull(EventHandler value); } diff --git a/lib/src/dom/html.dart b/lib/src/dom/html.dart index 4288e03e..358cc43e 100644 --- a/lib/src/dom/html.dart +++ b/lib/src/dom/html.dart @@ -126,6 +126,9 @@ extension type HTMLAllCollection._(JSObject _) implements JSObject { /// element located at the specified offset into the collection, or the /// element with the specified value for its `id` or `name` attribute. external JSObject? item([String nameOrIndex]); + + /// The **`HTMLAllCollection.length`** property returns the number of items in + /// this [HTMLAllCollection]. external int get length; } @@ -163,8 +166,19 @@ extension type HTMLFormControlsCollection._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList). extension type RadioNodeList._(JSObject _) implements NodeList, JSObject { - external set value(String value); + /// If the underlying element collection contains radio buttons, the + /// **`RadioNodeList.value`** property represents the checked radio + /// button. On retrieving the `value` property, the `value` of the + /// currently `checked` radio button is returned as a string. If the + /// collection + /// does not contain any radio buttons or none of the radio buttons in the + /// collection is in + /// `checked` state, the empty string is returned. On setting the + /// `value` property, the first radio button input element whose + /// `value` property is equal to the new value will be set to + /// `checked`. external String get value; + external set value(String value); } /// The **`HTMLOptionsCollection`** interface represents a collection of @@ -185,10 +199,10 @@ extension type HTMLOptionsCollection._(JSObject _) JSAny? before, ]); external void remove(int index); - external set length(int value); external int get length; - external set selectedIndex(int value); + external set length(int value); external int get selectedIndex; + external set selectedIndex(int value); } /// The **`DOMStringList`** interface is a legacy type returned by some APIs and @@ -216,6 +230,9 @@ extension type DOMStringList._(JSObject _) implements JSObject { /// The **`contains()`** method returns a boolean indicating whether the given /// string is in the list. external bool contains(String string); + + /// The read-only **`length`** property indicates the number of strings in the + /// [DOMStringList]. external int get length; } @@ -461,254 +478,708 @@ extension type HTMLElement._(JSObject _) implements Element, JSObject { /// The **`HTMLElement.blur()`** method removes keyboard focus from the /// current element. external void blur(); + + /// The **`HTMLElement.offsetParent`** read-only property returns a + /// reference to the element which is the closest (nearest in the containment + /// hierarchy) + /// positioned ancestor element. + /// + /// A positioned ancestor is either: + /// + /// - an element with a non-static position, or + /// - `td`, `th`, `table` in case the element itself is static positioned. + /// + /// If there is no positioned ancestor element, the `body` is returned. + /// + /// > **Note:** `offsetParent` returns `null` in the following + /// > situations: + /// > + /// > - The element or any ancestor has the `display` property set to + /// > `none`. + /// > - The element has the `position` property set to `fixed` + /// > (Firefox returns `<body>`). + /// > - The element is `<body>` or `<html>`. + /// + /// `offsetParent` is useful because + /// [HTMLElement.offsetTop] and + /// [HTMLElement.offsetLeft] are relative to its padding edge. external Element? get offsetParent; + + /// The **`HTMLElement.offsetTop`** read-only property returns the + /// distance from the outer border of the current element (including its + /// margin) to the top padding edge of the [HTMLelement.offsetParent], the + /// _closest positioned_ + /// ancestor element. external int get offsetTop; + + /// The **`HTMLElement.offsetLeft`** read-only property returns the number of + /// pixels that the _upper left corner_ of the current element is offset to + /// the left within the [HTMLElement.offsetParent] node. + /// + /// For block-level elements, `offsetTop`, `offsetLeft`, `offsetWidth`, and + /// `offsetHeight` describe the border box of an element relative to the + /// `offsetParent`. + /// + /// However, for inline-level elements (such as **span**) that can wrap from + /// one line to the next, `offsetTop` and `offsetLeft` describe the positions + /// of the _first_ border box (use [Element.getClientRects] to get its width + /// and height), while `offsetWidth` and `offsetHeight` describe the + /// dimensions of the _bounding_ border box (use + /// [Element.getBoundingClientRect] to get its position). Therefore, a box + /// with the left, top, width and height of `offsetLeft`, `offsetTop`, + /// `offsetWidth` and `offsetHeight` will not be a bounding box for a span + /// with wrapped text. external int get offsetLeft; + + /// The **`HTMLElement.offsetWidth`** read-only property returns + /// the layout width of an element as an integer. + /// + /// Typically, `offsetWidth` is a measurement in pixels of the element's CSS + /// width, including any borders, padding, and vertical scrollbars (if + /// rendered). It does + /// not include the width of pseudo-elements such as `::before` or + /// `::after`. + /// + /// If the element is hidden (for example, by setting `style.display` on the + /// element or one of its ancestors to `"none"`), then `0` is + /// returned. external int get offsetWidth; + + /// The **`HTMLElement.offsetHeight`** read-only property returns + /// the height of an element, including vertical padding and borders, as an + /// integer. + /// + /// Typically, `offsetHeight` is a measurement in pixels of the element's CSS + /// height, including any borders, padding, and horizontal scrollbars (if + /// rendered). It does + /// not include the height of pseudo-elements such as `::before` or + /// `::after`. For the document body object, the measurement includes total + /// linear content height instead of the element's CSS height. Floated + /// elements extending + /// below other linear content are ignored. + /// + /// If the element is hidden (for example, by setting `style.display` on the + /// element or one of its ancestors to `"none"`), then `0` is + /// returned. + /// + /// > **Note:** This property will round the value to an integer. If you need + /// > a fractional value, use + /// > [element.getBoundingClientRect]. external int get offsetHeight; - external set title(String value); + + /// The **`HTMLElement.title`** property + /// represents the title of the element: the text usually displayed in a + /// 'tooltip' popup + /// when the mouse is over the node. external String get title; - external set lang(String value); + external set title(String value); + + /// The **`HTMLElement.lang`** property gets or sets the base + /// language of an element's attribute values and text content. + /// + /// The language code returned by this property is defined in `5646, "Tags for + /// Identifying Languages (also known as BCP 47)"`. + /// Common examples include "en" for English, "ja" for + /// Japanese, "es" for Spanish and so on. The default value of this attribute + /// is + /// `unknown`. Note that this attribute, though valid at the individual + /// element + /// level described here, is most often specified for the root element of the + /// document. + /// + /// This also only works with the `lang` attribute and not with + /// `xml:lang`. external String get lang; - external set translate(bool value); + external set lang(String value); + + /// The **`translate`** property of the [HTMLElement] interface indicates + /// whether an element's attribute values and the values of its [Text] node + /// children are to be translated when the page is localized, or whether to + /// leave them unchanged. + /// + /// It reflects the value of the + /// [`translate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/translate) + /// HTML global attribute. external bool get translate; - external set dir(String value); + external set translate(bool value); + + /// The **`HTMLElement.dir`** property gets or sets the text + /// writing directionality of the content of the current element. + /// + /// The text writing directionality of an element is which direction that text + /// goes (for + /// support of different language systems). Arabic languages and Hebrew are + /// typical + /// languages using the RTL directionality. + /// + /// An image can have its `dir` property set to "`rtl`" in which case + /// the HTML attributes `title` and `alt` will be formatted and + /// defined as "`rtl`". + /// + /// When a table has its `dir` set to "`rtl`", the column order is + /// arranged from right to left. + /// + /// When an element has its dir set to "`auto`", the direction of the element + /// is + /// determined based on its first strong directionality character, or default + /// to the + /// directionality of its parent element. + /// + /// > **Note:** Browsers might allow users to change the directionality of + /// > `input` + /// > and `textarea`s in order to assist with authoring content. Chrome + /// > and Safari provide a directionality option in the contextual menu of + /// > input fields + /// > while pre-Chromium Edge uses the key combinations <kbd>Ctrl</kbd> + + /// > <kbd>Left Shift</kbd> and <kbd>Ctrl</kbd> + <kbd>Right Shift</kbd>. + /// > Firefox uses <kbd>Ctrl</kbd>/<kbd>Cmd</kbd> + <kbd>Shift</kbd> + + /// > <kbd>X</kbd> but does NOT update + /// > the **`dir`** attribute value. external String get dir; - external set hidden(JSAny? value); + external set dir(String value); + + /// The [HTMLElement] property **`hidden`** reflects the value of the + /// element's + /// [`hidden`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden) + /// attribute. external JSAny? get hidden; - external set inert(bool value); + external set hidden(JSAny? value); + + /// The [HTMLElement] property **`inert`** reflects the value of the element's + /// [`inert`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inert) + /// attribute. It is a boolean value that, when present, makes the browser + /// "ignore" user input events for the element, including focus events and + /// events from assistive technologies. The browser may also ignore page + /// search and text selection in the element. This can be useful when building + /// UIs such as modals where you would want to "trap" the focus inside the + /// modal when it's visible. + /// + /// > **Note:** Do not nest interactive elements or important content within + /// > elements with the `inert` attribute as inert content and their + /// > descendants are neither focusable nor perceivable by all users. external bool get inert; - external set accessKey(String value); + external set inert(bool value); + + /// The **`HTMLElement.accessKey`** property sets the keystroke which a user + /// can press to jump to a given element. + /// + /// > **Note:** The `HTMLElement.accessKey` property is seldom used because of + /// > its multiple conflicts with already present key bindings in browsers. To + /// > work around this, browsers implement accesskey behavior if the keys are + /// > pressed with other "qualifying" keys (such as <kbd>Alt</kbd> + + /// > accesskey). external String get accessKey; + external set accessKey(String value); + + /// The **`HTMLElement.accessKeyLabel`** + /// read-only property returns a string containing the element's + /// browser-assigned access key (if any); otherwise it returns an empty + /// string. external String get accessKeyLabel; - external set draggable(bool value); + + /// The **`draggable`** property of the [HTMLElement] interface gets and sets + /// a `Boolean` primitive indicating if the element is draggable. + /// + /// It reflects the value of the + /// [`draggable`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable) + /// HTML global attribute. external bool get draggable; - external set spellcheck(bool value); + external set draggable(bool value); + + /// The **`spellcheck`** property of the [HTMLElement] interface represents a + /// boolean value that controls the + /// [spell-checking](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/spellcheck) + /// hint. It is available on all HTML elements, though it doesn't affect all + /// of them. + /// + /// It reflects the value of the + /// [`spellcheck`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/spellcheck) + /// HTML global attribute. external bool get spellcheck; - external set autocapitalize(String value); + external set spellcheck(bool value); external String get autocapitalize; - external set innerText(String value); + external set autocapitalize(String value); + + /// The **`innerText`** property of the [HTMLElement] interface represents the + /// rendered text content of a node and its descendants. + /// + /// As a getter, it approximates the text the user would get if they + /// highlighted the contents of the element with the cursor and then copied it + /// to the clipboard. + /// As a setter this will replace the element's children with the given value, + /// converting any line breaks into `br` elements. + /// + /// > **Note:** `innerText` is easily confused with [Node.textContent], but + /// > there are important differences between the two. + /// > Basically, `innerText` is aware of the rendered appearance of text, + /// > while `textContent` is not. external String get innerText; - external set outerText(String value); + external set innerText(String value); + + /// The **`outerText`** property of the [HTMLElement] interface returns the + /// same value as [HTMLElement.innerText]. + /// When used as a setter it replaces the whole current node with the given + /// text (this differs from `innerText`, which replaces the content _inside_ + /// the current node). + /// + /// See [HTMLElement.innerText] for more information and examples showing how + /// both properties are used as getters. external String get outerText; - external set popover(String? value); + external set outerText(String value); + + /// The **`popover`** property of the [HTMLElement] interface gets and sets an + /// element's popover state via JavaScript (`"auto"` or `"manual"`), and can + /// be used for feature detection. + /// + /// It reflects the value of the + /// [`popover`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/popover) + /// global HTML attribute. external String? get popover; + external set popover(String? value); external StylePropertyMap get attributeStyleMap; + + /// The read-only **`style`** property of the [HTMLElement] returns the + /// _inline_ style of an element in the form of a live [CSSStyleDeclaration] + /// object that contains a list of all styles properties for that element with + /// values assigned only for the attributes that are defined in the element's + /// inline + /// [`style`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/style) + /// attribute. + /// + /// Shorthand properties are expanded. If you set `style="border-top: 1px + /// solid black"`, the longhand properties (, , and ) are set instead. + /// + /// This property is read-only, meaning it is not possible to assign a + /// [CSSStyleDeclaration] object to it. Nevertheless, it is possible to set an + /// inline style by assigning a _string_ directly to the `style` property. In + /// this case the string is forwarded to [CSSStyleDeclaration.cssText]. Using + /// `style` in this manner will completely overwrite all inline styles on the + /// element. + /// + /// Therefore, to add specific styles to an element without altering other + /// style values, it is generally preferable to set individual properties on + /// the [CSSStyleDeclaration] object. For example, you can write + /// `element.style.backgroundColor = "red"`. + /// + /// A style declaration is reset by setting it to `null` or an empty string, + /// e.g., `elt.style.color = null`. + /// + /// > **Note:** CSS property names are converted to JavaScript identifier with + /// > these rules: + /// > + /// > - If the property is made of one word, it remains as it is: `height` + /// > stays as is (in lowercase). As `float` is a reserved keyword in + /// > JavaScript, this property name was historically converted to `cssFloat`. + /// > All modern browsers now support the direct use of `float` in JavaScript + /// > to access the `float` CSS property, but `cssFloat` is used in older + /// > browsers and is still supported as an alias in modern browsers. + /// > - If the property is made of several words, separated by dashes, the + /// > dashes are removed and it is converted to : `background-attachment` + /// > becomes `backgroundAttachment`. + /// > + /// > The `style` property has the same priority in the CSS cascade as an + /// > inline style declaration set via the `style` attribute. external CSSStyleDeclaration get style; - external set onanimationstart(EventHandler value); external EventHandler get onanimationstart; - external set onanimationiteration(EventHandler value); + external set onanimationstart(EventHandler value); external EventHandler get onanimationiteration; - external set onanimationend(EventHandler value); + external set onanimationiteration(EventHandler value); external EventHandler get onanimationend; - external set onanimationcancel(EventHandler value); + external set onanimationend(EventHandler value); external EventHandler get onanimationcancel; - external set ontransitionrun(EventHandler value); + external set onanimationcancel(EventHandler value); external EventHandler get ontransitionrun; - external set ontransitionstart(EventHandler value); + external set ontransitionrun(EventHandler value); external EventHandler get ontransitionstart; - external set ontransitionend(EventHandler value); + external set ontransitionstart(EventHandler value); external EventHandler get ontransitionend; - external set ontransitioncancel(EventHandler value); + external set ontransitionend(EventHandler value); external EventHandler get ontransitioncancel; - external set onabort(EventHandler value); + external set ontransitioncancel(EventHandler value); external EventHandler get onabort; - external set onauxclick(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onauxclick; - external set onbeforeinput(EventHandler value); + external set onauxclick(EventHandler value); external EventHandler get onbeforeinput; - external set onbeforematch(EventHandler value); + external set onbeforeinput(EventHandler value); external EventHandler get onbeforematch; - external set onbeforetoggle(EventHandler value); + external set onbeforematch(EventHandler value); external EventHandler get onbeforetoggle; - external set onblur(EventHandler value); + external set onbeforetoggle(EventHandler value); external EventHandler get onblur; - external set oncancel(EventHandler value); + external set onblur(EventHandler value); external EventHandler get oncancel; - external set oncanplay(EventHandler value); + external set oncancel(EventHandler value); external EventHandler get oncanplay; - external set oncanplaythrough(EventHandler value); + external set oncanplay(EventHandler value); external EventHandler get oncanplaythrough; - external set onchange(EventHandler value); + external set oncanplaythrough(EventHandler value); external EventHandler get onchange; - external set onclick(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onclick; - external set onclose(EventHandler value); + external set onclick(EventHandler value); external EventHandler get onclose; - external set oncontextlost(EventHandler value); + external set onclose(EventHandler value); external EventHandler get oncontextlost; - external set oncontextmenu(EventHandler value); + external set oncontextlost(EventHandler value); external EventHandler get oncontextmenu; - external set oncontextrestored(EventHandler value); + external set oncontextmenu(EventHandler value); external EventHandler get oncontextrestored; - external set oncopy(EventHandler value); + external set oncontextrestored(EventHandler value); external EventHandler get oncopy; - external set oncuechange(EventHandler value); + external set oncopy(EventHandler value); external EventHandler get oncuechange; - external set oncut(EventHandler value); + external set oncuechange(EventHandler value); external EventHandler get oncut; - external set ondblclick(EventHandler value); + external set oncut(EventHandler value); external EventHandler get ondblclick; - external set ondrag(EventHandler value); + external set ondblclick(EventHandler value); external EventHandler get ondrag; - external set ondragend(EventHandler value); + external set ondrag(EventHandler value); external EventHandler get ondragend; - external set ondragenter(EventHandler value); + external set ondragend(EventHandler value); external EventHandler get ondragenter; - external set ondragleave(EventHandler value); + external set ondragenter(EventHandler value); external EventHandler get ondragleave; - external set ondragover(EventHandler value); + external set ondragleave(EventHandler value); external EventHandler get ondragover; - external set ondragstart(EventHandler value); + external set ondragover(EventHandler value); external EventHandler get ondragstart; - external set ondrop(EventHandler value); + external set ondragstart(EventHandler value); external EventHandler get ondrop; - external set ondurationchange(EventHandler value); + external set ondrop(EventHandler value); external EventHandler get ondurationchange; - external set onemptied(EventHandler value); + external set ondurationchange(EventHandler value); external EventHandler get onemptied; - external set onended(EventHandler value); + external set onemptied(EventHandler value); external EventHandler get onended; - external set onerror(OnErrorEventHandler value); + external set onended(EventHandler value); external OnErrorEventHandler get onerror; - external set onfocus(EventHandler value); + external set onerror(OnErrorEventHandler value); external EventHandler get onfocus; - external set onformdata(EventHandler value); + external set onfocus(EventHandler value); external EventHandler get onformdata; - external set oninput(EventHandler value); + external set onformdata(EventHandler value); external EventHandler get oninput; - external set oninvalid(EventHandler value); + external set oninput(EventHandler value); external EventHandler get oninvalid; - external set onkeydown(EventHandler value); + external set oninvalid(EventHandler value); external EventHandler get onkeydown; - external set onkeypress(EventHandler value); + external set onkeydown(EventHandler value); external EventHandler get onkeypress; - external set onkeyup(EventHandler value); + external set onkeypress(EventHandler value); external EventHandler get onkeyup; - external set onload(EventHandler value); + external set onkeyup(EventHandler value); external EventHandler get onload; - external set onloadeddata(EventHandler value); + external set onload(EventHandler value); external EventHandler get onloadeddata; - external set onloadedmetadata(EventHandler value); + external set onloadeddata(EventHandler value); external EventHandler get onloadedmetadata; - external set onloadstart(EventHandler value); + external set onloadedmetadata(EventHandler value); external EventHandler get onloadstart; - external set onmousedown(EventHandler value); + external set onloadstart(EventHandler value); external EventHandler get onmousedown; - external set onmouseenter(EventHandler value); + external set onmousedown(EventHandler value); external EventHandler get onmouseenter; - external set onmouseleave(EventHandler value); + external set onmouseenter(EventHandler value); external EventHandler get onmouseleave; - external set onmousemove(EventHandler value); + external set onmouseleave(EventHandler value); external EventHandler get onmousemove; - external set onmouseout(EventHandler value); + external set onmousemove(EventHandler value); external EventHandler get onmouseout; - external set onmouseover(EventHandler value); + external set onmouseout(EventHandler value); external EventHandler get onmouseover; - external set onmouseup(EventHandler value); + external set onmouseover(EventHandler value); external EventHandler get onmouseup; - external set onpaste(EventHandler value); + external set onmouseup(EventHandler value); external EventHandler get onpaste; - external set onpause(EventHandler value); + external set onpaste(EventHandler value); external EventHandler get onpause; - external set onplay(EventHandler value); + external set onpause(EventHandler value); external EventHandler get onplay; - external set onplaying(EventHandler value); + external set onplay(EventHandler value); external EventHandler get onplaying; - external set onprogress(EventHandler value); + external set onplaying(EventHandler value); external EventHandler get onprogress; - external set onratechange(EventHandler value); + external set onprogress(EventHandler value); external EventHandler get onratechange; - external set onreset(EventHandler value); + external set onratechange(EventHandler value); external EventHandler get onreset; - external set onresize(EventHandler value); + external set onreset(EventHandler value); external EventHandler get onresize; - external set onscroll(EventHandler value); + external set onresize(EventHandler value); external EventHandler get onscroll; - external set onscrollend(EventHandler value); + external set onscroll(EventHandler value); external EventHandler get onscrollend; - external set onsecuritypolicyviolation(EventHandler value); + external set onscrollend(EventHandler value); external EventHandler get onsecuritypolicyviolation; - external set onseeked(EventHandler value); + external set onsecuritypolicyviolation(EventHandler value); external EventHandler get onseeked; - external set onseeking(EventHandler value); + external set onseeked(EventHandler value); external EventHandler get onseeking; - external set onselect(EventHandler value); + external set onseeking(EventHandler value); external EventHandler get onselect; - external set onslotchange(EventHandler value); + external set onselect(EventHandler value); external EventHandler get onslotchange; - external set onstalled(EventHandler value); + external set onslotchange(EventHandler value); external EventHandler get onstalled; - external set onsubmit(EventHandler value); + external set onstalled(EventHandler value); external EventHandler get onsubmit; - external set onsuspend(EventHandler value); + external set onsubmit(EventHandler value); external EventHandler get onsuspend; - external set ontimeupdate(EventHandler value); + external set onsuspend(EventHandler value); external EventHandler get ontimeupdate; - external set ontoggle(EventHandler value); + external set ontimeupdate(EventHandler value); external EventHandler get ontoggle; - external set onvolumechange(EventHandler value); + external set ontoggle(EventHandler value); external EventHandler get onvolumechange; - external set onwaiting(EventHandler value); + external set onvolumechange(EventHandler value); external EventHandler get onwaiting; - external set onwebkitanimationend(EventHandler value); + external set onwaiting(EventHandler value); external EventHandler get onwebkitanimationend; - external set onwebkitanimationiteration(EventHandler value); + external set onwebkitanimationend(EventHandler value); external EventHandler get onwebkitanimationiteration; - external set onwebkitanimationstart(EventHandler value); + external set onwebkitanimationiteration(EventHandler value); external EventHandler get onwebkitanimationstart; - external set onwebkittransitionend(EventHandler value); + external set onwebkitanimationstart(EventHandler value); external EventHandler get onwebkittransitionend; - external set onwheel(EventHandler value); + external set onwebkittransitionend(EventHandler value); external EventHandler get onwheel; - external set onpointerover(EventHandler value); + external set onwheel(EventHandler value); external EventHandler get onpointerover; - external set onpointerenter(EventHandler value); + external set onpointerover(EventHandler value); external EventHandler get onpointerenter; - external set onpointerdown(EventHandler value); + external set onpointerenter(EventHandler value); external EventHandler get onpointerdown; - external set onpointermove(EventHandler value); + external set onpointerdown(EventHandler value); external EventHandler get onpointermove; - external set onpointerrawupdate(EventHandler value); + external set onpointermove(EventHandler value); external EventHandler get onpointerrawupdate; - external set onpointerup(EventHandler value); + external set onpointerrawupdate(EventHandler value); external EventHandler get onpointerup; - external set onpointercancel(EventHandler value); + external set onpointerup(EventHandler value); external EventHandler get onpointercancel; - external set onpointerout(EventHandler value); + external set onpointercancel(EventHandler value); external EventHandler get onpointerout; - external set onpointerleave(EventHandler value); + external set onpointerout(EventHandler value); external EventHandler get onpointerleave; - external set ongotpointercapture(EventHandler value); + external set onpointerleave(EventHandler value); external EventHandler get ongotpointercapture; - external set onlostpointercapture(EventHandler value); + external set ongotpointercapture(EventHandler value); external EventHandler get onlostpointercapture; - external set onselectstart(EventHandler value); + external set onlostpointercapture(EventHandler value); external EventHandler get onselectstart; - external set onselectionchange(EventHandler value); + external set onselectstart(EventHandler value); external EventHandler get onselectionchange; - external set ontouchstart(EventHandler value); + external set onselectionchange(EventHandler value); external EventHandler get ontouchstart; - external set ontouchend(EventHandler value); + external set ontouchstart(EventHandler value); external EventHandler get ontouchend; - external set ontouchmove(EventHandler value); + external set ontouchend(EventHandler value); external EventHandler get ontouchmove; - external set ontouchcancel(EventHandler value); + external set ontouchmove(EventHandler value); external EventHandler get ontouchcancel; - external set contentEditable(String value); + external set ontouchcancel(EventHandler value); + + /// The **`contentEditable`** property of + /// the [HTMLElement] interface specifies whether or not the element is + /// editable. + /// + /// This enumerated attribute can have the following values: + /// + /// - '`true`' indicates that the element is `contenteditable`. + /// - '`false`' indicates that the element cannot be edited. + /// - '`plaintext-only`' indicates that the element's raw text is editable, + /// but rich text formatting is disabled. + /// + /// You can use the [HTMLElement.isContentEditable] property to test the + /// computed boolean value of this property. + /// + /// If the attribute is missing or its value is invalid, its value is + /// inherited from its parent element: so the element + /// is editable (or not) based on the parent element. external String get contentEditable; - external set enterKeyHint(String value); + external set contentEditable(String value); + + /// The **`enterKeyHint`** property is an enumerated property defining + /// what action label (or icon) to present for the enter key on virtual + /// keyboards. + /// It reflects the + /// [`enterkeyhint`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/enterkeyhint) + /// HTML global attribute and is an enumerated property, only accepting the + /// following values + /// as a string: + /// + /// - `'enter'` typically indicating inserting a new line. + /// - `'done'` typically meaning there is nothing more to input and the input + /// method editor (IME) will be closed. + /// - `'go'` typically meaning to take the user to the target of the text they + /// typed. + /// - `'next'` typically taking the user to the next field that will accept + /// text. + /// - `'previous'` typically taking the user to the previous field that will + /// accept text. + /// - `'search'` typically taking the user to the results of searching for the + /// text they have typed. + /// - `'send'` typically delivering the text to its target. + /// + /// If no `enterKeyHint` value has been specified or if it was set to a + /// different value than the allowed ones, it will return an empty string. external String get enterKeyHint; + external set enterKeyHint(String value); + + /// The **`HTMLElement.isContentEditable`** read-only property + /// returns a boolean value that is `true` if the contents of the element + /// are editable; otherwise it returns `false`. external bool get isContentEditable; - external set inputMode(String value); + + /// The [HTMLElement] property **`inputMode`** reflects the value of the + /// element's + /// [`inputmode`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode) + /// attribute. + /// + /// It provides a hint about the type of data that might be entered by the + /// user while editing the element or its contents. This allows the browser to + /// display an appropriate virtual keyboard. + /// + /// It is used primarily on `input` elements, but is usable on any element in + /// [`contenteditable`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#contenteditable) + /// mode. external String get inputMode; + external set inputMode(String value); + + /// The **`dataset`** read-only property + /// of the [HTMLElement] interface provides read/write access to + /// [custom data attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/data-*) + /// (`data-*`) on elements. It exposes a map of strings + /// ([DOMStringMap]) with an entry for each `data-*` attribute. + /// + /// > **Note:** The `dataset` property itself can be read, but not directly + /// > written. + /// > Instead, all writes must be to the individual properties within the + /// > `dataset`, which in turn represent the data attributes. + /// + /// An HTML `data-*` attribute and its corresponding DOM + /// `dataset.property` modify their shared name according to where + /// they are read or written: + /// + /// - In HTML + /// - : The attribute name begins with `data-`. It can contain only letters, + /// numbers, dashes (`-`), periods (`.`), colons (`:`), + /// and underscores (`_`). Any capital letters (`A` to + /// `Z`) are converted to lowercase. + /// - In JavaScript + /// - : The property name of a custom data attribute is the same as the HTML attribute + /// without the `data-` prefix, and removes single dashes (`-`) for + /// when to capitalize the property's "" name. + /// + /// In addition to the information below, you'll find a how-to guide for using + /// HTML data + /// attributes in our article + /// [_Using data attributes_](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes). + /// + /// ### Name conversion + /// + /// - `dash-style` to `camelCase` conversion + /// + /// - : A custom data attribute name is transformed to a key for the + /// [DOMStringMap] entry by the following: + /// + /// 1. Lowercase all ASCII capital letters (`A` to + /// `Z`); + /// 2. Remove the prefix `data-` (including the dash); + /// 3. For any dash (`U+002D`) followed by an ASCII lowercase letter + /// `a` to `z`, remove the dash and uppercase the letter; + /// 4. Other characters (including other dashes) are left unchanged. + /// + /// - `camelCase` to `dash-style` conversion + /// + /// - : The opposite transformation, which maps a key to an attribute name, uses the + /// following: + /// + /// 1. **Restriction:** Before transformation, a dash _must not_ be + /// immediately followed by an ASCII lowercase letter `a` to + /// `z`; + /// 2. Add the `data-` prefix; + /// 3. Add a dash before any ASCII uppercase letter `A` to `Z`, + /// then lowercase the letter; + /// 4. Other characters are left unchanged. + /// + /// For example, a `data-abc-def` attribute corresponds to + /// `dataset.abcDef`. + /// + /// ### Accessing values + /// + /// - Attributes can be set and read by the camelCase name/key as an object + /// property of + /// the dataset: `element.dataset.keyname`. + /// - Attributes can also be set and read using bracket syntax: + /// `element.dataset['keyname']`. + /// - The + /// [`in` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in) + /// can check if a given attribute exists: + /// `'keyname' in element.dataset`. + /// + /// ### Setting values + /// + /// - When the attribute is set, its value is always converted to a string. + /// For example: `element.dataset.example = null` is + /// converted into `data-example="null"`. + /// + /// - To remove an attribute, you can use the + /// [`delete` operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete): + /// `delete element.dataset.keyname`. external DOMStringMap get dataset; - external set nonce(String value); + + /// The **`nonce`** property of the [HTMLElement] interface returns the + /// cryptographic number used once that is used by + /// [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) + /// to determine whether a given fetch will be allowed to proceed. + /// + /// In later implementations, elements only expose their `nonce` attribute to + /// scripts (and not to side-channels like CSS attribute selectors). external String get nonce; - external set autofocus(bool value); + external set nonce(String value); + + /// The **`autofocus`** property of the [HTMLElement] interface represents a + /// boolean value reflecting the + /// [`autofocus`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#autofocus) + /// HTML global attribute, which indicates whether the control should be + /// focused when the page loads, or when dialog or popover become shown if + /// specified in an element inside `dialog` elements or elements whose popover + /// attribute is set. + /// + /// Only one form-associated element inside a document, or a `dialog` element, + /// or an element whose `popover` attribute is set, can have this attribute + /// specified. If there are several, the first element with the attribute set + /// inserted, usually the first such element on the page, get the initial + /// focus. + /// + /// > **Note:** Setting this property doesn't set the focus to the associated + /// > element: it merely tells the browser to focus to it when _the element is + /// > inserted_ in the document. Setting it after the insertion, that is most + /// > of the time after the document load, has no visible effect. external bool get autofocus; - external set tabIndex(int value); + external set autofocus(bool value); + + /// The **`tabIndex`** property of the + /// [HTMLElement] interface represents the tab order of the current element. + /// + /// Tab order is as follows: + /// + /// 1. Elements with a positive `tabIndex`. Elements that have identical + /// `tabIndex` values should be navigated in the order they appear. Navigation + /// proceeds from the lowest `tabIndex` to the highest `tabIndex`. + /// 2. Elements that do not support the `tabIndex` attribute or support it and + /// assign `tabIndex` to `0`, in the order they appear. + /// + /// Elements that are disabled do not participate in the tabbing order. + /// + /// Values don't need to be sequential, nor must they begin with any + /// particular value. They + /// may even be negative, though each browser trims very large values. external int get tabIndex; + external set tabIndex(int value); } /// The **`HTMLUnknownElement`** interface represents an invalid HTML element @@ -770,8 +1241,15 @@ extension type HTMLHtmlElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLHtmlElement] using the tag 'html'. HTMLHtmlElement() : _ = document.createElement('html'); - external set version(String value); + /// > **Note:** This property has been declared as deprecated by the W3C + /// > technical recommendation for HTML 4.01 in favor of use of the DTD for + /// > obtaining version information for a document. + /// + /// Returns version information about the document type definition (DTD) of a + /// document. While this property is recognized by Mozilla, the return value + /// for this property is always an empty string. external String get version; + external set version(String value); } /// The **`HTMLHeadElement`** interface contains the descriptive information, or @@ -799,8 +1277,11 @@ extension type HTMLTitleElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLTitleElement] using the tag 'title'. HTMLTitleElement() : _ = document.createElement('title'); - external set text(String value); + /// The **`text`** property of the [HTMLTitleElement] interface represents the + /// text of the document's title. Only the text part is included; tags within + /// the element and their content are stripped and ignored. external String get text; + external set text(String value); } /// The **`HTMLBaseElement`** interface contains the base URI for a document. @@ -815,10 +1296,18 @@ extension type HTMLBaseElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLBaseElement] using the tag 'base'. HTMLBaseElement() : _ = document.createElement('base'); - external set href(String value); external String get href; - external set target(String value); + external set href(String value); + + /// The `target` property of the [HTMLBaseElement] interface is a string that + /// represents the default target tab to show the resulting output for + /// hyperlinks and form elements. + /// + /// It reflects the + /// [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base#target) + /// attribute of the `base` element. external String get target; + external set target(String value); } /// The **`HTMLLinkElement`** interface represents reference information for @@ -840,41 +1329,114 @@ extension type HTMLLinkElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLLinkElement] using the tag 'link'. HTMLLinkElement() : _ = document.createElement('link'); - external set href(String value); external String get href; - external set crossOrigin(String? value); + external set href(String value); + + /// The **`crossOrigin`** property of the [HTMLLinkElement] interface + /// specifies the Cross-Origin Resource Sharing () setting to use when + /// retrieving the resource. external String? get crossOrigin; - external set rel(String value); + external set crossOrigin(String? value); + + /// The **`HTMLLinkElement.rel`** property reflects the + /// [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) + /// attribute. It is a string containing a space-separated list of link types + /// indicating the relationship between the resource represented by the `link` + /// element and the current document. + /// + /// The most common use of this attribute is to specify a link to an external + /// style sheet: + /// the property is set to `stylesheet`, and the + /// [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#href) + /// attribute is set to the URL of an external style sheet to format the page. external String get rel; - external set as(String value); + external set rel(String value); + + /// The **`as`** property of the [HTMLLinkElement] interface returns a string + /// representing the type of content to be preloaded by a link element. + /// + /// The `as` property must have a value for link elements when + /// [`rel="preload"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload), + /// or the resource will not be fetched. + /// It may also be applied to link elements where + /// [`rel="modulepreload"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload), + /// but if omitted, will default to `script`. + /// The property should not be set for other types of link elements, such as + /// `rel="prefetch"`. + /// + /// This property reflects the value of the + /// [`as` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#as) + /// of the + /// [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) + /// HTML element. external String get as; + external set as(String value); + + /// The **`HTMLLinkElement.relList`** read-only property reflects the + /// [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) + /// attribute. It is a live [DOMTokenList] containing the set of link types + /// indicating the relationship between the resource represented by the `link` + /// element and the current document. + /// + /// The property itself is read-only, meaning you can not substitute the + /// [DOMTokenList] by another one, but the content of the returned list can be + /// changed. external DOMTokenList get relList; - external set media(String value); external String get media; - external set integrity(String value); + external set media(String value); external String get integrity; - external set hreflang(String value); + external set integrity(String value); + + /// The **`hreflang`** property of the [HTMLLinkElement] is used to indicate + /// the language and the geographical targeting of a page. This hint can be + /// used by browsers to select the more appropriate page or to improve . + /// + /// It reflects the `hreflang` attribute of the `link` element and is the + /// empty string (`""`) if there is no `hreflang` attribute. external String get hreflang; - external set type(String value); + external set hreflang(String value); external String get type; + external set type(String value); external DOMTokenList get sizes; - external set imageSrcset(String value); external String get imageSrcset; - external set imageSizes(String value); + external set imageSrcset(String value); external String get imageSizes; - external set referrerPolicy(String value); + external set imageSizes(String value); + + /// The + /// **`HTMLLinkElement.referrerPolicy`** + /// property reflects the HTML + /// [`referrerpolicy`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#referrerpolicy) + /// attribute of the + /// `link` element defining which referrer is sent when fetching the + /// resource. + /// + /// See the HTTP header for details. external String get referrerPolicy; + external set referrerPolicy(String value); external DOMTokenList get blocking; - external set disabled(bool value); external bool get disabled; - external set fetchPriority(String value); + external set disabled(bool value); + + /// The **`fetchPriority`** property of the + /// [HTMLLinkElement] interface represents a hint given to the browser + /// on how it should prioritize the preload of the given resource relative to + /// other + /// resources of the same type. external String get fetchPriority; - external set charset(String value); + external set fetchPriority(String value); external String get charset; - external set rev(String value); + external set charset(String value); external String get rev; - external set target(String value); + external set rev(String value); external String get target; + external set target(String value); + + /// The read-only **`sheet`** property of the [HTMLLinkElement] interface + /// contains the stylesheet associated with that element. + /// + /// A stylesheet is associated to an `HTMLLinkElement` if `rel="stylesheet"` + /// is used with `<link>`. external CSSStyleSheet? get sheet; } @@ -893,16 +1455,57 @@ extension type HTMLMetaElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLMetaElement] using the tag 'meta'. HTMLMetaElement() : _ = document.createElement('meta'); - external set name(String value); + /// The **`HTMLMetaElement.name`** property is used in combination with + /// [HTMLMetaElement.content] to define the name-value pairs for the metadata + /// of a document. + /// The `name` attribute defines the metadata name and the `content` attribute + /// defines the value. external String get name; - external set httpEquiv(String value); + external set name(String value); + + /// The **`HTMLMetaElement.httpEquiv`** property gets or sets the pragma + /// directive or an HTTP response header name for the + /// [HTMLMetaElement.content] attribute. + /// For more details on the possible values, see the + /// [http-equiv](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#http-equiv) + /// attribute. external String get httpEquiv; - external set content(String value); + external set httpEquiv(String value); + + /// The **`HTMLMetaElement.content`** property gets or sets the `content` + /// attribute of pragma directives and named `meta` data in conjunction with + /// [HTMLMetaElement.name] or [HTMLMetaElement.httpEquiv]. + /// For more information, see the + /// [content](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#content) + /// attribute. external String get content; - external set media(String value); + external set content(String value); + + /// The **`HTMLMetaElement.media`** property enables specifying the media for + /// `theme-color` metadata. + /// + /// The `theme-color` property enables setting the color of the browser's + /// toolbar or UI in browsers and operating systems that support this + /// property. + /// The `media` property enables setting different theme colors for different + /// `media` values. external String get media; - external set scheme(String value); + external set media(String value); + + /// The **`HTMLMetaElement.scheme`** property defines the scheme of the value + /// in the [HTMLMetaElement.content] attribute. + /// The `scheme` property was created to enable providing additional + /// information to be used to interpret the value of the `content` property. + /// The `scheme` property takes as its value a scheme format (i.e. + /// `YYYY-MM-DD`) or scheme format name (i.e. `ISBN`), or a URI providing more + /// information regarding the scheme format. The scheme defines the format of + /// the value of the `content` attribute. + /// The `scheme` content is interpreted as an extension of the element's + /// [HTMLMetaElement.name] if a browser or user agent recognizes the scheme. + /// + /// This property is deprecated and should not be used on new web pages. external String get scheme; + external set scheme(String value); } /// The **`HTMLStyleElement`** interface represents a `style` element. It @@ -922,13 +1525,35 @@ extension type HTMLStyleElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLStyleElement] using the tag 'style'. HTMLStyleElement() : _ = document.createElement('style'); - external set disabled(bool value); + /// The **`HTMLStyleElement.disabled`** property can be used to get and set + /// whether the stylesheet is disabled (`true`) or not (`false`). + /// + /// Note that there is no corresponding `disabled` attribute on the [HTML + /// `<style>` + /// element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style). external bool get disabled; - external set media(String value); + external set disabled(bool value); + + /// The **`HTMLStyleElement.media`** property specifies the + /// intended destination medium for style information. external String get media; + external set media(String value); external DOMTokenList get blocking; - external set type(String value); + + /// The **`HTMLStyleElement.type`** property returns the type of the current + /// style. + /// The value mirrors the [HTML `<style>` element's `type` + /// attribute](/en-US/docs/Web/HTML/Element/style#type). + /// + /// Authors should not use this property or rely on the value. external String get type; + external set type(String value); + + /// The read-only **`sheet`** property of the [HTMLStyleElement] interface + /// contains the stylesheet associated with that element. + /// + /// An [StyleSheet] is always associated with a [HTMLStyleElement], unless its + /// `type` attribute is not `text/css`. external CSSStyleSheet? get sheet; } @@ -944,56 +1569,56 @@ extension type HTMLBodyElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLBodyElement] using the tag 'body'. HTMLBodyElement() : _ = document.createElement('body'); - external set text(String value); external String get text; - external set link(String value); + external set text(String value); external String get link; - external set vLink(String value); + external set link(String value); external String get vLink; - external set aLink(String value); + external set vLink(String value); external String get aLink; - external set bgColor(String value); + external set aLink(String value); external String get bgColor; - external set background(String value); + external set bgColor(String value); external String get background; - external set ongamepadconnected(EventHandler value); + external set background(String value); external EventHandler get ongamepadconnected; - external set ongamepaddisconnected(EventHandler value); + external set ongamepadconnected(EventHandler value); external EventHandler get ongamepaddisconnected; - external set onafterprint(EventHandler value); + external set ongamepaddisconnected(EventHandler value); external EventHandler get onafterprint; - external set onbeforeprint(EventHandler value); + external set onafterprint(EventHandler value); external EventHandler get onbeforeprint; - external set onbeforeunload(OnBeforeUnloadEventHandler value); + external set onbeforeprint(EventHandler value); external OnBeforeUnloadEventHandler get onbeforeunload; - external set onhashchange(EventHandler value); + external set onbeforeunload(OnBeforeUnloadEventHandler value); external EventHandler get onhashchange; - external set onlanguagechange(EventHandler value); + external set onhashchange(EventHandler value); external EventHandler get onlanguagechange; - external set onmessage(EventHandler value); + external set onlanguagechange(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; - external set onoffline(EventHandler value); + external set onmessageerror(EventHandler value); external EventHandler get onoffline; - external set ononline(EventHandler value); + external set onoffline(EventHandler value); external EventHandler get ononline; - external set onpagehide(EventHandler value); + external set ononline(EventHandler value); external EventHandler get onpagehide; - external set onpagereveal(EventHandler value); + external set onpagehide(EventHandler value); external EventHandler get onpagereveal; - external set onpageshow(EventHandler value); + external set onpagereveal(EventHandler value); external EventHandler get onpageshow; - external set onpopstate(EventHandler value); + external set onpageshow(EventHandler value); external EventHandler get onpopstate; - external set onrejectionhandled(EventHandler value); + external set onpopstate(EventHandler value); external EventHandler get onrejectionhandled; - external set onstorage(EventHandler value); + external set onrejectionhandled(EventHandler value); external EventHandler get onstorage; - external set onunhandledrejection(EventHandler value); + external set onstorage(EventHandler value); external EventHandler get onunhandledrejection; - external set onunload(EventHandler value); + external set onunhandledrejection(EventHandler value); external EventHandler get onunload; + external set onunload(EventHandler value); } /// The **`HTMLHeadingElement`** interface represents the different heading @@ -1025,8 +1650,8 @@ extension type HTMLHeadingElement._(JSObject _) /// Creates an [HTMLHeadingElement] using the tag 'h6'. HTMLHeadingElement.h6() : _ = document.createElement('h6'); - external set align(String value); external String get align; + external set align(String value); } /// The **`HTMLParagraphElement`** interface provides special properties (beyond @@ -1042,8 +1667,8 @@ extension type HTMLParagraphElement._(JSObject _) /// Creates an [HTMLParagraphElement] using the tag 'p'. HTMLParagraphElement() : _ = document.createElement('p'); - external set align(String value); external String get align; + external set align(String value); } /// The **`HTMLHRElement`** interface provides special properties (beyond those @@ -1058,16 +1683,16 @@ extension type HTMLHRElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLHRElement] using the tag 'hr'. HTMLHRElement() : _ = document.createElement('hr'); - external set align(String value); external String get align; - external set color(String value); + external set align(String value); external String get color; - external set noShade(bool value); + external set color(String value); external bool get noShade; - external set size(String value); + external set noShade(bool value); external String get size; - external set width(String value); + external set size(String value); external String get width; + external set width(String value); } /// The **`HTMLPreElement`** interface exposes specific properties and methods @@ -1088,8 +1713,8 @@ extension type HTMLPreElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLPreElement] using the tag 'xmp'. HTMLPreElement.xmp() : _ = document.createElement('xmp'); - external set width(int value); external int get width; + external set width(int value); } /// The **`HTMLQuoteElement`** interface provides special properties and methods @@ -1108,8 +1733,8 @@ extension type HTMLQuoteElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLQuoteElement] using the tag 'q'. HTMLQuoteElement.q() : _ = document.createElement('q'); - external set cite(String value); external String get cite; + external set cite(String value); } /// The **`HTMLOListElement`** interface provides special properties (beyond @@ -1124,14 +1749,41 @@ extension type HTMLOListElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLOListElement] using the tag 'ol'. HTMLOListElement() : _ = document.createElement('ol'); - external set reversed(bool value); + /// The **`reversed`** property of the [HTMLOListElement] interface indicates + /// order of a list. + /// + /// It reflects the + /// [`reversed`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol#reversed) + /// attribute of the `ol` element. external bool get reversed; - external set start(int value); + external set reversed(bool value); + + /// The **`start`** property of the [HTMLOListElement] interface indicates + /// starting value of the ordered list, with default value of 1. + /// + /// It reflects the + /// [`start`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol#start) + /// attribute of the `ol` element. + /// + /// > **Note:** The `start` property value is independent of the + /// > [HTMLOListElement.type] property; it is always numeric, even when type + /// > is letters or Roman numerals. external int get start; - external set type(String value); + external set start(int value); + + /// The **`type`** property of the [HTMLOListElement] interface indicates the + /// kind of marker to be used to display ordered list. + /// + /// It reflects the + /// [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol#type) + /// attribute of the `ol` element. + /// + /// > **Note:** The `type` can be defined in CSS with the property. The + /// > `list-style-type` property provides many more values. external String get type; - external set compact(bool value); + external set type(String value); external bool get compact; + external set compact(bool value); } /// The **`HTMLUListElement`** interface provides special properties (beyond @@ -1146,10 +1798,10 @@ extension type HTMLUListElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLUListElement] using the tag 'ul'. HTMLUListElement() : _ = document.createElement('ul'); - external set compact(bool value); external bool get compact; - external set type(String value); + external set compact(bool value); external String get type; + external set type(String value); } /// The **`HTMLMenuElement`** interface provides additional properties (beyond @@ -1165,8 +1817,8 @@ extension type HTMLMenuElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLMenuElement] using the tag 'menu'. HTMLMenuElement() : _ = document.createElement('menu'); - external set compact(bool value); external bool get compact; + external set compact(bool value); } /// The **`HTMLLIElement`** interface exposes specific properties and methods @@ -1181,10 +1833,10 @@ extension type HTMLLIElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLLIElement] using the tag 'li'. HTMLLIElement() : _ = document.createElement('li'); - external set value(int value); external int get value; - external set type(String value); + external set value(int value); external String get type; + external set type(String value); } /// The **`HTMLDListElement`** interface provides special properties (beyond @@ -1199,8 +1851,8 @@ extension type HTMLDListElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLDListElement] using the tag 'dl'. HTMLDListElement() : _ = document.createElement('dl'); - external set compact(bool value); external bool get compact; + external set compact(bool value); } /// The **`HTMLDivElement`** interface provides special properties (beyond the @@ -1215,8 +1867,8 @@ extension type HTMLDivElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLDivElement] using the tag 'div'. HTMLDivElement() : _ = document.createElement('div'); - external set align(String value); external String get align; + external set align(String value); } /// The **`HTMLAnchorElement`** interface represents hyperlink elements and @@ -1238,54 +1890,200 @@ extension type HTMLAnchorElement._(JSObject _) /// Creates an [HTMLAnchorElement] using the tag 'a'. HTMLAnchorElement() : _ = document.createElement('a'); - external set target(String value); + /// The **`target`** property of the [HTMLAnchorElement] interface is a string + /// that indicates where to display the linked resource. + /// + /// It reflects the + /// [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target) + /// attribute of the `a` element. external String get target; - external set download(String value); + external set target(String value); + + /// The **`HTMLAnchorElement.download`** property is a + /// string indicating that the linked resource is intended to be + /// downloaded rather than displayed in the browser. The value, if any, + /// specifies the + /// default file name for use in labeling the resource in a local file system. + /// If the name + /// is not a valid file name in the underlying OS, the browser will adjust it. + /// + /// > **Note:** This value might not be used for download. This value cannot + /// > be used to determine whether the download will occur. external String get download; - external set ping(String value); + external set download(String value); + + /// The **`ping`** property of the [HTMLAnchorElement] interface is a + /// space-separated list of URLs. When the link is followed, the browser will + /// send `POST` requests with the body PING to the URLs. + /// + /// It reflects the `ping` attribute of the `a` element. + /// + /// > **Note:** This property is not effective in Firefox and its usage may be + /// > limited due to privacy and security concerns. external String get ping; - external set rel(String value); + external set ping(String value); + + /// The **`HTMLAnchorElement.rel`** property reflects the + /// [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) + /// attribute. It is a string containing a space-separated list of link types + /// indicating the relationship between the resource represented by the `a` + /// element and the current document. external String get rel; + external set rel(String value); + + /// The **`HTMLAnchorElement.relList`** read-only property reflects the + /// [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) + /// attribute. It is a live [DOMTokenList] containing the set of link types + /// indicating the relationship between the resource represented by the `a` + /// element and the current document. + /// + /// The property itself is read-only, meaning you can't substitute the + /// [DOMTokenList] with another one, but its contents can still be changed. external DOMTokenList get relList; - external set hreflang(String value); + + /// The **`hreflang`** property of the [HTMLAnchorElement] interface is a + /// string that is the language of the linked resource. + /// + /// It reflects the `hreflang` attribute of the `a` element and is the empty + /// string (`""`) if there is no `hreflang` element. + /// + /// Web browsers and search engines may use this information to understand the + /// language of the linked content better, but they are not required to follow + /// it. The value provided for the `hreflang` attribute adheres to the format + /// defined in `5646, "Tags for Identifying Languages (also known as BCP + /// 47)"`. If not, it is ignored. + /// + /// Web browsers do not rely solely on the `hreflang` attribute after fetching + /// the linked resource. Instead, they use language information directly + /// associated with the resource (e.g., through HTTP headers) to determine its + /// language. external String get hreflang; - external set type(String value); + external set hreflang(String value); + + /// The **`type`** property of the [HTMLAnchorElement] interface is a string + /// that indicates the MIME type of the linked resource. + /// + /// It reflects the `type` attribute of the `a` element. external String get type; - external set text(String value); + external set type(String value); + + /// The **`text`** property of the [HTMLAnchorElement] represents the text + /// inside the the element. + /// This property represents the same information as [Node.textContent]. external String get text; - external set referrerPolicy(String value); + external set text(String value); + + /// The + /// **`HTMLAnchorElement.referrerPolicy`** + /// property reflect the HTML + /// [`referrerpolicy`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#referrerpolicy) + /// attribute of the + /// `a` element defining which referrer is sent when fetching the resource. external String get referrerPolicy; - external set coords(String value); + external set referrerPolicy(String value); external String get coords; - external set charset(String value); + external set coords(String value); external String get charset; - external set name(String value); + external set charset(String value); external String get name; - external set rev(String value); + external set name(String value); external String get rev; - external set shape(String value); + external set rev(String value); external String get shape; - external set href(String value); + external set shape(String value); + + /// The **`HTMLAnchorElement.href`** property is a + /// that returns a string containing the whole URL, and allows + /// the href to be updated. external String get href; + external set href(String value); + + /// The + /// **`HTMLAnchorElement.origin`** read-only property is a + /// string containing the Unicode serialization of the origin of the + /// represented URL. + /// + /// That is: + /// + /// - for URL using the `http` or `https`, the scheme followed by + /// `'://'`, followed by the domain, followed by `':'`, followed by + /// the port (the default port, `80` and `443` respectively, if + /// explicitly specified); + /// - for URL using `file:` scheme, the value is browser dependent; + /// - for URL using the `blob:` scheme, the origin of the URL following + /// `blob:`. E.g `"blob:https://mozilla.org"` will have + /// `"https://mozilla.org".` external String get origin; - external set protocol(String value); + + /// The + /// **`HTMLAnchorElement.protocol`** + /// property is a string representing the protocol scheme of the URL, + /// including the final `':'`. external String get protocol; - external set username(String value); + external set protocol(String value); + + /// The **`HTMLAnchorElement.username`** property is a + /// string containing the username specified before the domain name. external String get username; - external set password(String value); + external set username(String value); + + /// The **`HTMLAnchorElement.password`** property is a + /// string containing the password specified before the domain name. + /// + /// If it is set without first setting the + /// [`username`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement/username) + /// property, it silently fails. external String get password; - external set host(String value); + external set password(String value); + + /// The **`HTMLAnchorElement.host`** property is a + /// string containing the host, that is the _hostname_, and then, + /// if the _port_ of the URL is nonempty, a `':'`, and the _port_ + /// of the URL. external String get host; - external set hostname(String value); + external set host(String value); + + /// The **`HTMLAnchorElement.hostname`** property is a + /// string containing the domain of the URL. external String get hostname; - external set port(String value); + external set hostname(String value); + + /// The **`HTMLAnchorElement.port`** property is a + /// string containing the port number of the URL. If the URL does not + /// contain an explicit port number, it will be set to `''`. external String get port; - external set pathname(String value); + external set port(String value); + + /// The **`HTMLAnchorElement.pathname`** property is a + /// string containing an initial `'/'` followed by the path of + /// the URL not including the query string or fragment (or the empty string if + /// there is no + /// path). external String get pathname; - external set search(String value); + external set pathname(String value); + + /// The **`HTMLAnchorElement.search`** property is a search + /// string, also called a _query string_, that is a string containing + /// a `'?'` followed by the parameters of the URL. + /// + /// Modern browsers provide + /// [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/get#examples) + /// and + /// [`URL.searchParams`](/en-US/docs/Web/API/URL/searchParams#examples) + /// to make it easy to parse out the parameters from the querystring. external String get search; - external set hash(String value); + external set search(String value); + + /// The + /// **`HTMLAnchorElement.hash`** property returns a + /// string containing a `'#'` followed by the fragment + /// identifier of the URL. + /// + /// The fragment is [URL encoded](https://en.wikipedia.org/wiki/URL_encoding). + /// If the URL does not + /// have a fragment identifier, this property contains an empty string, `""`. external String get hash; + external set hash(String value); } /// The **`HTMLDataElement`** interface provides special properties (beyond the @@ -1300,8 +2098,12 @@ extension type HTMLDataElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLDataElement] using the tag 'data'. HTMLDataElement() : _ = document.createElement('data'); - external set value(String value); + /// The **`value`** property of the [HTMLDataElement] + /// interface returns a string reflecting the + /// [`value`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data#value) + /// HTML attribute. external String get value; + external set value(String value); } /// The **`HTMLTimeElement`** interface provides special properties (beyond the @@ -1316,8 +2118,154 @@ extension type HTMLTimeElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLTimeElement] using the tag 'time'. HTMLTimeElement() : _ = document.createElement('time'); - external set dateTime(String value); + /// The + /// **`HTMLTimeElement.dateTime`** + /// property is a string that reflects the + /// [`datetime`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time#datetime) + /// HTML attribute, containing a machine-readable form of the element's date + /// and + /// time value. + /// + /// The format of the string must follow one of the following HTML + /// microsyntaxes: + /// + /// <table class="no-markdown"> + /// <thead> + /// <tr> + /// <th scope="col">Microsyntax</th> + /// <th scope="col">Description</th> + /// <th scope="col">Examples</th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td>Valid month string</td> + /// <td><em>YYYY</em><code>-</code><em>MM</em></td> + /// <td><code>2011-11</code>, <code>2013-05</code></td> + /// </tr> + /// <tr> + /// <td>Valid date string</td> + /// <td><em>YYYY</em><code>-</code><em>MM</em><code>-</code><em>DD</em></td> + /// <td><code>1887-12-01</code></td> + /// </tr> + /// <tr> + /// <td>Valid yearless date string</td> + /// <td><em>MM</em><code>-</code><em>DD</em></td> + /// <td><code>11-12</code></td> + /// </tr> + /// <tr> + /// <td>Valid time string</td> + /// <td> + /// <em>HH</em><code>:</code><em>MM</em><br /><em>HH</em><code>:</code + /// ><em>MM</em><code>:</code><em>SS</em><br /><em>HH</em><code>:</code + /// ><em>MM</em><code>:</code><em>SS</em><code>.</code><em>mmm</em> + /// </td> + /// <td> + /// <code>23:59</code><br /><code>12:15:47</code><br /><code + /// >12:15:52.998</code + /// > + /// </td> + /// </tr> + /// <tr> + /// <td>Valid local date and time string</td> + /// <td> + /// <em>YYYY</em><code>-</code><em>MM</em><code>-</code><em>DD</em> + /// <em>HH</em><code>:</code><em>MM</em><br /><em>YYYY</em><code>-</code + /// ><em>MM</em><code>-</code><em>DD</em> <em>HH</em><code>:</code + /// ><em>MM</em><code>:</code><em>SS</em><br /><em>YYYY</em><code>-</code + /// ><em>MM</em><code>-</code><em>DD</em> <em>HH</em><code>:</code + /// ><em>MM</em><code>:</code><em>SS</em><code>.</code><em>mmm</em><br /><em + /// >YYYY</em + /// ><code>-</code><em>MM</em><code>-</code><em>DD</em><code>T</code + /// ><em>HH</em><code>:</code><em>MM</em><br /><em>YYYY</em><code>-</code + /// ><em>MM</em><code>-</code><em>DD</em><code>T</code><em>HH</em + /// ><code>:</code><em>MM</em><code>:</code><em>SS</em><br /><em>YYYY</em + /// ><code>-</code><em>MM</em><code>-</code><em>DD</em><code>T</code + /// ><em>HH</em><code>:</code><em>MM</em><code>:</code><em>SS</em + /// ><code>.</code><em>mmm</em> + /// </td> + /// <td> + /// <code + /// >2013-12-25 11:12<br />1972-07-25 13:43:07<br />1941-03-15 + /// 07:06:23.678<br />2013-12-25T11:12<br />1972-07-25T13:43:07<br + /// />1941-03-15T07:06:23.678</code + /// > + /// </td> + /// </tr> + /// <tr> + /// <td>Valid time-zone offset string</td> + /// <td> + /// <code>Z</code><br /><code>+</code><em>HHMM</em><br /><code>+</code + /// ><em>HH</em><code>:</code><em>MM</em><br /><code>-</code><em>HHMM</em + /// ><br /><code>-</code><em>HH</em><code>:</code><em>MM</em> + /// </td> + /// <td> + /// <code>Z<br />+0200<br />+04:30<br />-0300<br />-08:00</code> + /// </td> + /// </tr> + /// <tr> + /// <td>Valid global date and time string</td> + /// <td> + /// <em + /// >Any combination of a valid local date and time string followed by a + /// valid time-zone offset string</em + /// > + /// </td> + /// <td> + /// <code + /// >2013-12-25 11:12+0200<br />1972-07-25 13:43:07+04:30<br />1941-03-15 + /// 07:06:23.678Z<br />2013-12-25T11:12-08:00</code + /// > + /// </td> + /// </tr> + /// <tr> + /// <td>Valid week string</td> + /// <td><em>YYYY</em><code>-W</code><em>WW</em></td> + /// <td><code>2013-W46</code></td> + /// </tr> + /// <tr> + /// <td>Four or more ASCII digits</td> + /// <td><em>YYYY</em></td> + /// <td><code>2013</code>, <code>0001</code></td> + /// </tr> + /// <tr> + /// <td>Valid duration string</td> + /// <td> + /// <code>P</code><em>d</em><code>D</code><code>T</code><em>h</em + /// ><code>H</code><em>m</em><code>M</code><em>s</em><code>S</code + /// ><br /><code>P</code><em>d</em><code>D</code><code>T</code><em>h</em + /// ><code>H</code><em>m</em><code>M</code><em>s</em><code>.</code>X<code + /// >S</code + /// ><br /><code>P</code><em>d</em><code>D</code><code>T</code><em>h</em + /// ><code>H</code><em>m</em><code>M</code><em>s</em><code>.</code>XX<code + /// >S</code + /// ><br /><code>P</code><em>d</em><code>D</code><code>T</code><em>h</em + /// ><code>H</code><em>m</em><code>M</code><em>s</em><code>.</code>XXX<code + /// >S</code + /// ><br /><code>P</code><code>T</code><em>h</em><code>H</code><em>m</em + /// ><code>M</code><em>s</em><code>S</code><br /><code>P</code><code>T</code + /// ><em>h</em><code>H</code><em>m</em><code>M</code><em>s</em + /// ><code>.</code>X<code>S</code><br /><code>P</code><code>T</code + /// ><em>h</em><code>H</code><em>m</em><code>M</code><em>s</em + /// ><code>.</code>XX<code>S</code><br /><code>P</code><code>T</code + /// ><em>h</em><code>H</code><em>m</em><code>M</code><em>s</em + /// ><code>.</code>XXX<code>S</code><br /><em>w</em><code>w </code><em>d</em + /// ><code>d </code><em>h</em><code>h </code><em>m</em><code>m </code + /// ><em>s</em><code>s</code> + /// </td> + /// <td> + /// <code + /// >P12DT7H12M13S<br />P12DT7H12M13.3S<br />P12DT7H12M13.45S<br + /// />P12DT7H12M13.455S<br />PT7H12M13S<br />PT7H12M13.2S<br + /// />PT7H12M13.56S<br />PT7H12M13.999S<br />7d + /// 5h 24m 13s</code + /// > + /// </td> + /// </tr> + /// </tbody> + /// </table> external String get dateTime; + external set dateTime(String value); } /// The **`HTMLSpanElement`** interface represents a `span` element and derives @@ -1344,8 +2292,8 @@ extension type HTMLBRElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLBRElement] using the tag 'br'. HTMLBRElement() : _ = document.createElement('br'); - external set clear(String value); external String get clear; + external set clear(String value); } /// The **`HTMLModElement`** interface provides special properties (beyond the @@ -1364,10 +2312,10 @@ extension type HTMLModElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLModElement] using the tag 'del'. HTMLModElement.del() : _ = document.createElement('del'); - external set cite(String value); external String get cite; - external set dateTime(String value); + external set cite(String value); external String get dateTime; + external set dateTime(String value); } /// The **`HTMLPictureElement`** interface represents a `picture` HTML element. @@ -1396,20 +2344,38 @@ extension type HTMLSourceElement._(JSObject _) /// Creates an [HTMLSourceElement] using the tag 'source'. HTMLSourceElement() : _ = document.createElement('source'); - external set src(String value); external String get src; - external set type(String value); + external set src(String value); external String get type; - external set srcset(String value); + external set type(String value); external String get srcset; - external set sizes(String value); + external set srcset(String value); external String get sizes; - external set media(String value); + external set sizes(String value); external String get media; - external set width(int value); + external set media(String value); + + /// The **`width`** property of the [HTMLSourceElement] interface is a + /// non-negative number indicating the width of the image resource in CSS + /// pixels. + /// + /// The property has an effect only if the parent of the current `source` + /// element is a `picture` element. + /// + /// It reflects the `width` attribute of the `source` element. external int get width; - external set height(int value); + external set width(int value); + + /// The **`height`** property of the [HTMLSourceElement] interface is a + /// non-negative number indicating the height of the image resource in CSS + /// pixels. + /// + /// The property has an effect only if the parent of the current `source` + /// element is a `picture` element. + /// + /// It reflects the `height` attribute of the `source` element. external int get height; + external set height(int value); } /// The **`HTMLImageElement`** interface represents an HTML `img` element, @@ -1437,52 +2403,322 @@ extension type HTMLImageElement._(JSObject _) implements HTMLElement, JSObject { /// from causing /// a delay while the image loads. external JSPromise<JSAny?> decode(); + + /// The read-only [HTMLImageElement] property + /// **`x`** indicates the x-coordinate of the + /// `img` element's left border edge relative to the root element's + /// origin. + /// + /// The `x` and [HTMLImageElement.y] properties are only valid + /// for an image if its `display` property has the computed value + /// `table-column` or `table-column-group`. In other words: it has + /// either of those values set explicitly on it, or it has inherited it from a + /// containing + /// element, or by being located within a column described by either `col` + /// or `colgroup`. external int get x; + + /// The read-only [HTMLImageElement] property + /// **`y`** indicates the y-coordinate of the + /// `img` element's top border edge relative to the root element's + /// origin. + /// + /// The [HTMLImageElement.x] and `y` properties are only valid + /// for an image if its `display` property has the computed value + /// `table-column` or `table-column-group`. In other words: it has + /// either of those values set explicitly on it, or it has inherited it from a + /// containing + /// element, or by being located within a column described by either + /// `col` or `colgroup`. external int get y; - external set alt(String value); + + /// The [HTMLImageElement] property **`alt`** provides fallback (alternate) + /// text to display when the image specified by the `img` element is not + /// loaded. + /// + /// This may be the case because of an error, because the user has disabled + /// the loading of images, or because the image hasn't finished loading yet. + /// + /// Perhaps the most important reason to use the `alt` property is to support + /// [accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility), + /// as the `alt` text may be used by screen readers and other assistive + /// technologies to help people with a disability make full use of your + /// content. + /// It will be read aloud or sent to a braille output device, for example, to + /// support blind or visually impaired users. + /// + /// > **Think of it like this:** When choosing `alt` strings for your images, + /// > imagine what you would say when reading the page to someone over the + /// > phone without mentioning that there's an image on the page. + /// + /// The alternate text is displayed in the space the image would occupy and + /// should be able to take the place of the image _without altering the + /// meaning of the page_. external String get alt; - external set src(String value); + external set alt(String value); + + /// The [HTMLImageElement] property + /// **`src`**, which reflects the HTML + /// [`src`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#src) + /// attribute, specifies the image to display in the `img` + /// element. external String get src; - external set srcset(String value); + external set src(String value); + + /// The [HTMLImageElement] property + /// **`srcset`** is a string which identifies one or more + /// **image candidate strings**, separated using commas (`,`) each + /// specifying image resources to use under given circumstances. + /// + /// Each image + /// candidate string contains an image URL and an optional width or pixel + /// density descriptor + /// that indicates the conditions under which that candidate should be used + /// instead of the + /// image specified by the [HTMLImageElement.src] property. + /// + /// The `srcset` property, along with the [HTMLImageElement.sizes] + /// property, are a crucial component in designing responsive websites, as + /// they + /// can be used together to make pages that use appropriate images for the + /// rendering + /// situation. + /// + /// > **Note:** If the + /// > [`srcset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#srcset) + /// > attribute uses width descriptors, the `sizes` attribute must also be + /// > present, or the `srcset` itself will be ignored. external String get srcset; - external set sizes(String value); + external set srcset(String value); + + /// The [HTMLImageElement] property + /// **`sizes`** allows you to specify the layout width of the + /// [image](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) for + /// each of a list of media conditions. This provides the ability to + /// automatically select among different images—even images of different + /// orientations or + /// aspect ratios—as the document state changes to match different media + /// conditions. + /// + /// Each condition is specified using the same conditional format used + /// by + /// [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries). external String get sizes; - external set crossOrigin(String? value); + external set sizes(String value); + + /// The [HTMLImageElement] + /// interface's **`crossOrigin`** attribute is a string which + /// specifies the Cross-Origin Resource Sharing () setting to use when + /// retrieving the image. external String? get crossOrigin; - external set useMap(String value); + external set crossOrigin(String? value); + + /// The **`useMap`** property on the + /// [HTMLImageElement] interface reflects the value of the + /// [`usemap`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#usemap) + /// attribute, which is a string + /// providing the name of the client-side image map to apply to the image. external String get useMap; - external set isMap(bool value); + external set useMap(String value); + + /// The [HTMLImageElement] property **`isMap`** is a + /// Boolean value which indicates that the image is to be used by a + /// server-side image map. + /// This may only be used on images located within an `a` element. + /// + /// > **Note:** For accessibility reasons, you should generally avoid using + /// > server-side image maps, as they require the use of a mouse. Use a + /// > [client-side image map](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Add_a_hit_map_on_top_of_an_image) + /// > instead. external bool get isMap; - external set width(int value); + external set isMap(bool value); + + /// The **`width`** property of the + /// [HTMLImageElement] interface indicates the width at which an image is + /// drawn in if it's being drawn or rendered to + /// any visual medium such as a screen or printer. Otherwise, it's the + /// natural, pixel + /// density-corrected width of the image. external int get width; - external set height(int value); + external set width(int value); + + /// The **`height`** property of the + /// [HTMLImageElement] interface indicates the height at which the image is + /// drawn, in if the image is being drawn or rendered to any + /// visual medium such as the screen or a printer; otherwise, it's the + /// natural, pixel + /// density corrected height of the image. external int get height; + external set height(int value); + + /// The [HTMLImageElement] interface's read-only + /// **`naturalWidth`** property returns the intrinsic (natural), + /// density-corrected width of the image in . + /// + /// This is the width the image is if drawn with nothing constraining + /// its width; if you neither specify a width for the image nor place the + /// image inside a + /// container that limits or expressly specifies the image width, this is the + /// number of CSS + /// pixels wide the image will be. + /// + /// The corresponding [HTMLImageElement.naturalHeight] method + /// returns the natural height of the image. + /// + /// > **Note:** Most of the time the natural width is the actual width of the + /// > image sent by the server. + /// > Nevertheless, browsers can modify an image before pushing it to the + /// > renderer. For example, Chrome + /// > [degrades the resolution of images on low-end devices](https://crbug.com/1187043#c7). + /// > In such cases, `naturalWidth` will consider the width of the image + /// > modified + /// > by such browser interventions as the natural width, and returns this + /// > value. external int get naturalWidth; + + /// The [HTMLImageElement] interface's + /// **`naturalHeight`** property is a read-only value which + /// returns the intrinsic (natural), density-corrected height of the image in + /// . + /// + /// This is the height the image is if + /// drawn with nothing constraining its height; if you don't specify a height + /// for the image, + /// or place the image inside a container that either limits or expressly + /// specifies the + /// image height, it will be rendered this tall. + /// + /// > **Note:** Most of the time the natural height is the actual height of + /// > the image sent by the server. + /// > Nevertheless, browsers can modify an image before pushing it to the + /// > renderer. For example, Chrome + /// > [degrades the resolution of images on low-end devices](https://crbug.com/1187043#c7). + /// > In such cases, `naturalHeight` will consider the height of the image + /// > modified + /// > by such browser interventions as the natural height, and returns this + /// > value. external int get naturalHeight; + + /// The read-only [HTMLImageElement] interface's + /// **`complete`** attribute is a Boolean value which indicates + /// whether or not the image has completely loaded. external bool get complete; + + /// The read-only [HTMLImageElement] property + /// **`currentSrc`** indicates the URL of the image which is + /// currently presented in the `img` element it represents. external String get currentSrc; - external set referrerPolicy(String value); + + /// The + /// **`HTMLImageElement.referrerPolicy`** + /// property reflects the HTML + /// [`referrerpolicy`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#referrerpolicy) + /// attribute of the + /// `img` element defining which referrer is sent when fetching the + /// resource. external String get referrerPolicy; - external set decoding(String value); + external set referrerPolicy(String value); + + /// The **`decoding`** property of the [HTMLImageElement] interface provides a + /// hint to the browser as to how it should decode the image. More + /// specifically, whether it should wait for the image to be decoded before + /// presenting other content updates or not. external String get decoding; - external set loading(String value); + external set decoding(String value); + + /// The [HTMLImageElement] property **`loading`** is a string whose value + /// provides a hint to the on how to handle the loading of the image which is + /// currently outside the window's . + /// + /// This helps to optimize the loading of the document's contents by + /// postponing loading the image until it's expected to be needed, rather than + /// immediately during the initial page load. external String get loading; - external set fetchPriority(String value); + external set loading(String value); + + /// The **`fetchPriority`** property of the + /// [HTMLImageElement] interface represents a hint given to the browser on how + /// it should prioritize the fetch of the image relative to other images. external String get fetchPriority; - external set name(String value); + external set fetchPriority(String value); + + /// The [HTMLImageElement] + /// interface's _deprecated_ **`name`** property specifies + /// a name for the element. This has been replaced by the [Element.id] + /// property available on all elements. external String get name; - external set lowsrc(String value); + external set name(String value); external String get lowsrc; - external set align(String value); + external set lowsrc(String value); + + /// The _obsolete_ **`align`** + /// property of the [HTMLImageElement] interface is a string which indicates + /// how to position the image relative to its container. + /// + /// You should instead use the + /// CSS property , which does in fact also work on images + /// despite its name. You can also use the `float` property to float the image + /// to the left or right margin. + /// + /// The `align` property reflects the HTML + /// [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#align) + /// content attribute. external String get align; - external set hspace(int value); + external set align(String value); + + /// The + /// _obsolete_ **`hspace`** property of the + /// [HTMLImageElement] interface specifies the number of pixels of empty + /// space to leave empty on the left and right sides of the `img` element + /// when laying out the page. + /// + /// This property reflects the + /// [`hspace`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#hspace) + /// attribute. external int get hspace; - external set vspace(int value); + external set hspace(int value); + + /// The _obsolete_ **`vspace`** property of the + /// [HTMLImageElement] interface specifies the number of pixels of empty space + /// to leave empty on the top and bottom of the `img` element when laying + /// out the page. external int get vspace; - external set longDesc(String value); + external set vspace(int value); + + /// The _deprecated_ property **`longDesc`** on + /// the [HTMLImageElement] interface specifies the URL of a text or HTML file + /// which contains a long-form description of the image. This can be used to + /// provide optional added details beyond the short description provided in + /// the + /// [`title`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#title) + /// attribute. external String get longDesc; - external set border(String value); + external set longDesc(String value); + + /// The obsolete [HTMLImageElement] + /// property **`border`** specifies the number of pixels thick the + /// border surrounding the image should be. A value of 0, the default, + /// indicates that no + /// border should be drawn. + /// + /// You should _not_ use this property! Instead, you should use CSS to style + /// the + /// border. The `border` property or its longhand properties to not only set + /// the thickness of the border but to potentially apply a wide variety of + /// other styling + /// options to it. + /// + /// The width, specifically, is controlled using the writing-mode aware + /// , , + /// , and + /// properties. + /// + /// For compatibility (or perhaps other) reasons, you can use the older + /// properties instead + /// (or in addition): , , + /// , and . external String get border; + external set border(String value); } /// The **`HTMLIFrameElement`** interface provides special properties and @@ -1500,39 +2736,104 @@ extension type HTMLIFrameElement._(JSObject _) HTMLIFrameElement() : _ = document.createElement('iframe'); external Document? getSVGDocument(); - external set src(String value); + + /// The **`HTMLIFrameElement.src`** + /// A string that reflects the + /// [`src`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#src) + /// HTML attribute, containing the address of the content to be embedded. + /// + /// Note that programmatically removing an `<iframe>`'s src attribute (e.g. + /// via [Element.removeAttribute]) causes `about:blank` to be loaded in the + /// frame. external String get src; - external set srcdoc(String value); + external set src(String value); + + /// The **`srcdoc`** property of the [HTMLIFrameElement] specifies the content + /// of the page. external String get srcdoc; - external set name(String value); + external set srcdoc(String value); + + /// The **`name`** property of the [HTMLIFrameElement] interface is a string + /// value that reflects the `name` attribute of the `iframe` element, + /// indicating the specific name of the `<iframe>` element. external String get name; + external set name(String value); external DOMTokenList get sandbox; - external set allow(String value); external String get allow; - external set allowFullscreen(bool value); + external set allow(String value); + + /// The **`allowFullscreen`** property of the [HTMLIFrameElement] interface is + /// a boolean value that reflects the `allowfullscreen` attribute of the + /// `iframe` element, indicating whether to allow the iframe's contents to use + /// [Element.requestFullscreen]. + /// + /// > **Note:** This property is considered a legacy property. Use + /// > `allow="fullscreen"` and [HTMLIFrameElement.allow] instead. external bool get allowFullscreen; - external set width(String value); - external String get width; - external set height(String value); + external set allowFullscreen(bool value); + + /// The **`width`** property of the [HTMLIFrameElement] interface returns a + /// string that reflects the `width` attribute of the `iframe` element, + /// indicating the width of the frame in CSS pixels. + external String get width; + external set width(String value); + + /// The **`height`** property of the [HTMLIFrameElement] interface returns a + /// string that reflects the `height` attribute of the `iframe` element, + /// indicating the height of the frame in CSS pixels. external String get height; - external set referrerPolicy(String value); + external set height(String value); + + /// The + /// **`HTMLIFrameElement.referrerPolicy`** + /// property reflects the HTML + /// [`referrerpolicy`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#referrerpolicy) + /// attribute of the + /// `iframe` element defining which referrer is sent when fetching the + /// resource. external String get referrerPolicy; - external set loading(String value); + external set referrerPolicy(String value); + + /// The **`loading`** property of the [HTMLIFrameElement] interface is a + /// string that provides a hint to the indicating whether the + /// [iframe](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) + /// should be loaded immediately on page load, or only when it is needed. + /// + /// This can be used to optimize the loading of the document's contents. + /// Iframes that are visible when the page loads can be downloaded immediately + /// (eagerly), while iframes that are likely to be offscreen on initial page + /// load can be downloaded lazily — just before they will appear in the + /// window's . external String get loading; + external set loading(String value); + + /// If the iframe and the iframe's parent document are + /// [Same Origin](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy), + /// returns a + /// [`Document`](https://developer.mozilla.org/en-US/docs/Web/API/Document) + /// (that is, the active document in the inline frame's nested browsing + /// context), else returns `null`. external Document? get contentDocument; + + /// The **`contentWindow`** property returns the + /// [Window](https://developer.mozilla.org/en-US/docs/Web/API/Window) object + /// of an + /// [HTMLIFrameElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement). + /// + /// This attribute is read-only. external Window? get contentWindow; - external set align(String value); external String get align; - external set scrolling(String value); + external set align(String value); external String get scrolling; - external set frameBorder(String value); + external set scrolling(String value); external String get frameBorder; - external set longDesc(String value); + external set frameBorder(String value); external String get longDesc; - external set marginHeight(String value); + external set longDesc(String value); external String get marginHeight; - external set marginWidth(String value); + external set marginHeight(String value); external String get marginWidth; + external set marginWidth(String value); } /// The **`HTMLEmbedElement`** interface provides special properties (beyond the @@ -1552,18 +2853,26 @@ extension type HTMLEmbedElement._(JSObject _) implements HTMLElement, JSObject { HTMLEmbedElement() : _ = document.createElement('embed'); external Document? getSVGDocument(); - external set src(String value); external String get src; - external set type(String value); + external set src(String value); external String get type; - external set width(String value); + external set type(String value); + + /// The **`width`** property of the [HTMLEmbedElement] interface returns a + /// string that reflects the `width` attribute of the `embed` element, + /// indicating the displayed width of the resource in CSS pixels. external String get width; - external set height(String value); + external set width(String value); + + /// The **`height`** property of the [HTMLEmbedElement] interface returns a + /// string that reflects the `height` attribute of the `embed` element, + /// indicating the displayed height of the resource in CSS pixels. external String get height; - external set align(String value); + external set height(String value); external String get align; - external set name(String value); + external set align(String value); external String get name; + external set name(String value); } /// The **`HTMLObjectElement`** interface provides special properties and @@ -1593,44 +2902,122 @@ extension type HTMLObjectElement._(JSObject _) /// [HTMLObjectElement] interface sets a custom validity message for the /// element. external void setCustomValidity(String error); - external set data(String value); + + /// The **`data`** property of the + /// [HTMLObjectElement] interface returns a string that + /// reflects the + /// [`data`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object#data) + /// HTML attribute, specifying the address + /// of a resource's data. external String get data; - external set type(String value); + external set data(String value); + + /// The **`type`** property of the + /// [HTMLObjectElement] interface returns a string that + /// reflects the + /// [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object#type) + /// HTML attribute, specifying the MIME type + /// of the resource. external String get type; - external set name(String value); + external set type(String value); + + /// The **`name`** property of the + /// [HTMLObjectElement] interface returns a string that + /// reflects the + /// [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object#name) + /// HTML attribute, specifying the name of + /// the browsing context. external String get name; + external set name(String value); + + /// The **`form`** read-only property of the + /// [HTMLObjectElement] interface returns a [HTMLFormElement] + /// representing the object element's form owner, or null if there isn't one. external HTMLFormElement? get form; - external set width(String value); + + /// The **`width`** property of the + /// [HTMLObjectElement] interface returns a string that + /// reflects the + /// [`width`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object#width) + /// HTML attribute, specifying the + /// displayed width of the resource in CSS pixels. external String get width; - external set height(String value); + external set width(String value); + + /// The **`height`** property of the + /// [HTMLObjectElement] interface Returns a string that + /// reflects the + /// [`height`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object#height) + /// HTML attribute, specifying the + /// displayed height of the resource in CSS pixels. external String get height; + external set height(String value); + + /// The **`contentDocument`** read-only property of + /// the [HTMLObjectElement] interface Returns a [Document] + /// representing the active document of the object element's nested browsing + /// context, if + /// any; otherwise null. external Document? get contentDocument; + + /// The **`contentWindow`** read-only property of + /// the [HTMLObjectElement] interface returns a + /// representing the window proxy of the object element's nested browsing + /// context, if any; + /// otherwise null. external Window? get contentWindow; + + /// The **`willValidate`** read-only property of + /// the [HTMLObjectElement] interface returns a boolean value that + /// indicates whether the element is a candidate for constraint validation. + /// Always false for + /// HTMLObjectElement objects. external bool get willValidate; + + /// The **`validity`** read-only property of the + /// [HTMLObjectElement] interface returns a [ValidityState] with + /// the validity states that this element is in. external ValidityState get validity; + + /// The **`validationMessage`** read-only property + /// of the [HTMLObjectElement] interface returns a string + /// representing a localized message that describes the validation constraints + /// that the + /// control does not satisfy (if any). This is the empty string if the control + /// is not a + /// candidate for constraint validation (willValidate is false), or it + /// satisfies its + /// constraints. external String get validationMessage; - external set align(String value); external String get align; - external set archive(String value); + external set align(String value); external String get archive; - external set code(String value); + external set archive(String value); external String get code; - external set declare(bool value); + external set code(String value); external bool get declare; - external set hspace(int value); + external set declare(bool value); external int get hspace; - external set standby(String value); + external set hspace(int value); external String get standby; - external set vspace(int value); + external set standby(String value); external int get vspace; - external set codeBase(String value); + external set vspace(int value); external String get codeBase; - external set codeType(String value); + external set codeBase(String value); external String get codeType; - external set useMap(String value); + external set codeType(String value); + + /// The **`useMap`** property of the + /// [HTMLObjectElement] interface returns a string that + /// reflects the + /// [`usemap`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object#usemap) + /// HTML attribute, specifying a + /// `map` element to use. external String get useMap; - external set border(String value); + external set useMap(String value); external String get border; + external set border(String value); } /// Implemented by the `video` element, the **`HTMLVideoElement`** interface @@ -1661,16 +3048,46 @@ extension type HTMLVideoElement._(JSObject _) /// /// The data returned can be used to evaluate the quality of the video stream. external VideoPlaybackQuality getVideoPlaybackQuality(); - external set width(int value); + + /// The **`width`** property of the [HTMLVideoElement] interface returns an + /// integer that that reflects the `width` attribute of the `video` element, + /// specifying the displayed width of the resource in CSS pixels. external int get width; - external set height(int value); + external set width(int value); + + /// The **`height`** property of the [HTMLVideoElement] interface returns an + /// integer that reflects the `height` attribute of the `video` element, + /// specifying the displayed height of the resource in CSS pixels. external int get height; + external set height(int value); + + /// The [HTMLVideoElement] interface's read-only **`videoWidth`** property + /// indicates the + /// [intrinsic width](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement/videoHeight#about_intrinsic_width_and_height) + /// of the video, expressed in CSS pixels. + /// In simple terms, this is the width of the media in its natural size. + /// + /// See [`HTMLVideoElement.videoHeight` > About intrinsic width and + /// height](/en-US/docs/Web/API/HTMLVideoElement/videoHeight#about_intrinsic_width_and_height) + /// for more details. external int get videoWidth; + + /// The [HTMLVideoElement] interface's read-only **`videoHeight`** property + /// indicates the [intrinsic height](#about_intrinsic_width_and_height) of the + /// video, expressed in CSS pixels. + /// In simple terms, this is the height of the media in its natural size. external int get videoHeight; - external set poster(String value); + + /// The **`poster`** property of the [HTMLVideoElement] interface is a string + /// that reflects the URL for an image to be shown while no video data is + /// available. If the property does not represent a valid URL, no poster frame + /// will be shown. + /// + /// It reflects the `poster` attribute of the `video` element. external String get poster; - external set playsInline(bool value); + external set poster(String value); external bool get playsInline; + external set playsInline(bool value); } /// The **`HTMLAudioElement`** interface provides access to the properties of @@ -1706,18 +3123,24 @@ extension type HTMLTrackElement._(JSObject _) implements HTMLElement, JSObject { external static int get LOADING; external static int get LOADED; external static int get ERROR; - external set kind(String value); external String get kind; - external set src(String value); + external set kind(String value); + + /// The **`HTMLTrackElement.src`** property reflects the value of + /// the `track` element's + /// [`src`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track#src) + /// attribute, which + /// indicates the URL of the text track's data. external String get src; - external set srclang(String value); + external set src(String value); external String get srclang; - external set label(String value); + external set srclang(String value); external String get label; - @JS('default') - external set default_(bool value); + external set label(String value); @JS('default') external bool get default_; + @JS('default') + external set default_(bool value); external int get readyState; external TextTrack get track; } @@ -1802,52 +3225,278 @@ extension type HTMLMediaElement._(JSObject _) implements HTMLElement, JSObject { String label, String language, ]); + + /// The read-only **`HTMLMediaElement.mediaKeys`** property returns a + /// [MediaKeys] object, that is a set of keys that the element can use for + /// decryption of media data during playback. external MediaKeys? get mediaKeys; - external set onencrypted(EventHandler value); external EventHandler get onencrypted; - external set onwaitingforkey(EventHandler value); + external set onencrypted(EventHandler value); external EventHandler get onwaitingforkey; + external set onwaitingforkey(EventHandler value); + + /// The **`HTMLMediaElement.error`** property is the + /// [MediaError] object for the most recent error, or `null` if + /// there has not been an error. When an [HTMLMediaElement.error_event] event + /// is received by the + /// element, you can determine details about what happened by examining this + /// object. external MediaError? get error; - external set src(String value); + + /// The **`HTMLMediaElement.src`** property reflects the value of + /// the HTML media element's `src` attribute, which indicates the URL of a + /// media + /// resource to use in the element. + /// + /// > **Note:** The best way to know the URL of the media resource currently + /// > in active use in this element is to look at the value of the + /// > [HTMLMediaElement.currentSrc] attribute, which also takes + /// > into account selection of a best or preferred media resource from a list + /// > provided in + /// > an [HTMLSourceElement] (which represents a `source` + /// > element). external String get src; - external set srcObject(MediaProvider? value); + external set src(String value); + + /// The **`srcObject`** property of the + /// [HTMLMediaElement] interface sets or returns the object which serves as + /// the source of the media associated with the [HTMLMediaElement]. + /// + /// The object can be a [MediaStream], a [MediaSource], a + /// [Blob], or a [File] (which inherits from `Blob`). + /// + /// > **Note:** As of March 2020, only Safari has full support for + /// > `srcObject`, i.e. using `MediaSource`, `MediaStream`, `Blob`, and `File` + /// > objects as values. Other browsers support `MediaStream` objects; until + /// > they catch up, consider falling back to creating a URL with + /// > [URL.createObjectURL_static] and assigning it to [HTMLMediaElement.src] + /// > (see below for an example). In addition, as of version 108 Chromium + /// > supports attaching a dedicated worker `MediaSource` object by assigning + /// > that object's [MediaSourceHandle] instance (transferred from the worker) + /// > to `srcObject`. external MediaProvider? get srcObject; + external set srcObject(MediaProvider? value); + + /// The **`HTMLMediaElement.currentSrc`** property contains the + /// absolute URL of the chosen media resource. This could happen, for example, + /// if the web + /// server selects a media file based on the resolution of the user's display. + /// The value + /// is an empty string if the `networkState` property is `EMPTY`. external String get currentSrc; - external set crossOrigin(String? value); + + /// The **`HTMLMediaElement.crossOrigin`** property is the CORS setting for + /// this media element. See + /// [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) + /// for details. external String? get crossOrigin; + external set crossOrigin(String? value); + + /// The + /// **`HTMLMediaElement.networkState`** property indicates the + /// current state of the fetching of media over the network. external int get networkState; - external set preload(String value); external String get preload; + external set preload(String value); + + /// The **`buffered`** read-only property of [HTMLMediaElement] objects + /// returns a new static + /// [normalized `TimeRanges` object](https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges#normalized_timeranges_objects) + /// that represents the ranges of the media resource, if any, that the user + /// agent has buffered at the moment the `buffered` property is accessed. external TimeRanges get buffered; + + /// The **`HTMLMediaElement.readyState`** property indicates the + /// readiness state of the media. external int get readyState; external bool get seeking; - external set currentTime(num value); + + /// The [HTMLMediaElement] interface's + /// **`currentTime`** property specifies the current playback time + /// in seconds. + /// + /// Changing the value of `currentTime` seeks the media to + /// the new time. external num get currentTime; + external set currentTime(num value); + + /// The _read-only_ [HTMLMediaElement] + /// property **`duration`** indicates the length of the element's + /// media in seconds. external num get duration; + + /// The read-only **`HTMLMediaElement.paused`** property + /// tells whether the media element is paused. external bool get paused; - external set defaultPlaybackRate(num value); + + /// The **`HTMLMediaElement.defaultPlaybackRate`** property indicates the + /// default playback rate for the media. external num get defaultPlaybackRate; - external set playbackRate(num value); + external set defaultPlaybackRate(num value); + + /// The **`HTMLMediaElement.playbackRate`** property sets the rate at which + /// the media is being played back. This is used to implement user controls + /// for fast forward, slow motion, and so forth. The normal playback rate is + /// multiplied by this value to obtain the current rate, so a value of 1.0 + /// indicates normal speed. + /// + /// If `playbackRate` is negative, the media is played backwards. + /// + /// The audio is muted when the fast forward or slow motion is outside a + /// useful range (for example, Gecko mutes the sound outside the range `0.25` + /// to `4.0`). + /// + /// The pitch of the audio is corrected by default. You can disable pitch + /// correction using the [HTMLMediaElement.preservesPitch] property. external num get playbackRate; - external set preservesPitch(bool value); + external set playbackRate(num value); + + /// The **`HTMLMediaElement.preservesPitch`** property determines whether or + /// not the browser should adjust the pitch of the audio to compensate for + /// changes to the playback rate made by setting + /// [HTMLMediaElement.playbackRate]. external bool get preservesPitch; + external set preservesPitch(bool value); external TimeRanges get played; + + /// The **`seekable`** read-only property of [HTMLMediaElement] objects + /// returns a new static + /// [normalized `TimeRanges` object](https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges#normalized_timeranges_objects) + /// that represents the ranges of the media resource, if any, that the user + /// agent is able to seek to at the time `seekable` property is accessed. external TimeRanges get seekable; + + /// The **`HTMLMediaElement.ended`** property indicates whether the media + /// element has ended playback. external bool get ended; - external set autoplay(bool value); + + /// The **`HTMLMediaElement.autoplay`** + /// property reflects the + /// [`autoplay`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#autoplay) + /// HTML attribute, indicating + /// whether playback should automatically begin as soon as enough media is + /// available to do + /// so without interruption. + /// + /// A media element whose source is a [MediaStream] and whose + /// `autoplay` property is `true` will begin playback when it becomes + /// active (that is, when [MediaStream.active] becomes `true`). + /// + /// > **Note:** Sites which automatically play audio (or videos with an audio + /// > track) can be an unpleasant experience for users, so it should be + /// > avoided when + /// > possible. If you must offer autoplay functionality, you should make it + /// > opt-in + /// > (requiring a user to specifically enable it). However, autoplay can be + /// > useful when + /// > creating media elements whose source will be set at a later time, under + /// > user control. + /// + /// For a much more in-depth look at autoplay, autoplay blocking, and how to + /// respond when + /// autoplay is blocked by the user's browser, see our article + /// [Autoplay guide for media and Web Audio APIs](https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide). external bool get autoplay; - external set loop(bool value); + external set autoplay(bool value); + + /// The **`HTMLMediaElement.loop`** property reflects the + /// [`loop`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#loop) + /// HTML attribute, which controls whether the media element should start over + /// when it reaches the end. external bool get loop; - external set controls(bool value); + external set loop(bool value); + + /// The **`HTMLMediaElement.controls`** property reflects the + /// [`controls`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#controls) + /// HTML attribute, which controls whether user + /// interface controls for playing the media item will be displayed. external bool get controls; - external set volume(num value); + external set controls(bool value); + + /// The **`HTMLMediaElement.volume`** property sets the volume at + /// which the media will be played. external num get volume; - external set muted(bool value); + external set volume(num value); + + /// The **`HTMLMediaElement.muted`** property indicates whether the media + /// element is muted. external bool get muted; - external set defaultMuted(bool value); + external set muted(bool value); + + /// The **`HTMLMediaElement.defaultMuted`** property reflects the + /// [`muted`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#muted) + /// HTML attribute, which indicates whether the media element's audio output + /// should be muted by default. This property has no dynamic effect. To mute + /// and unmute the audio output, use the [HTMLMediaElement.muted] property. external bool get defaultMuted; + external set defaultMuted(bool value); + + /// The read-only **`audioTracks`** + /// property on [HTMLMediaElement] objects returns + /// an [AudioTrackList] object listing all of the [AudioTrack] + /// objects representing the media element's audio tracks. + /// + /// The media element may be + /// either an `audio` element or a `video` element. + /// + /// The returned list is _live_; that is, as tracks are added to and removed + /// from + /// the media element, the list's contents change dynamically. Once you have a + /// reference to + /// the list, you can monitor it for changes to detect when new audio tracks + /// are added or + /// existing ones removed. See + /// [AudioTrackList events](https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList#events) + /// to learn more about watching for changes to a media element's track list. external AudioTrackList get audioTracks; + + /// The read-only **`videoTracks`** + /// property on [HTMLMediaElement] objects returns a + /// [VideoTrackList] object listing all of the [VideoTrack] + /// objects representing the media element's video tracks. + /// + /// The returned list is _live_; that is, as tracks are added to and removed + /// from + /// the media element, the list's contents change dynamically. Once you have a + /// reference to + /// the list, you can monitor it for changes to detect when new video tracks + /// are added or + /// existing ones removed. See + /// [VideoTrackList events](https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList#events) + /// to learn more about watching for changes to a media element's track list. external VideoTrackList get videoTracks; + + /// The read-only **`textTracks`** + /// property on [HTMLMediaElement] objects returns a + /// [TextTrackList] object listing all of the [TextTrack] + /// objects representing the media element's text tracks, in the same order as + /// in + /// the list of text tracks. + /// + /// You can detect when tracks are added to and removed from an + /// [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio) + /// or + /// [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video) + /// element + /// using the `addtrack` and `removetrack` events. However, these + /// events aren't sent directly to the media element itself. Instead, they're + /// sent to the + /// track list object of the + /// [`HTMLMediaElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement) + /// that corresponds to the type of track that was added to the element + /// + /// The returned list is _live_; that is, as tracks are added to and removed + /// from + /// the media element, the list's contents change dynamically. Once you have a + /// reference to + /// the list, you can monitor it for changes to detect when new text tracks + /// are added or + /// existing ones removed. + /// + /// See + /// [TextTrackList events](https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList#events) + /// to learn + /// more about watching for changes to a media element's track list. external TextTrackList get textTracks; } @@ -1868,7 +3517,20 @@ extension type MediaError._(JSObject _) implements JSObject { external static int get MEDIA_ERR_NETWORK; external static int get MEDIA_ERR_DECODE; external static int get MEDIA_ERR_SRC_NOT_SUPPORTED; + + /// The read-only property **`MediaError.code`** returns a numeric + /// value which represents the kind of error that occurred on a media element. + /// To get a text + /// string with specific diagnostic information, see [MediaError.message]. external int get code; + + /// The read-only property **`MediaError.message`** returns a + /// human-readable string offering specific + /// diagnostic details related to the error described by the `MediaError` + /// object, + /// or an empty string (`""`) if no diagnostic information can be determined + /// or + /// provided. external String get message; } @@ -1889,13 +3551,20 @@ extension type AudioTrackList._(JSObject _) implements EventTarget, JSObject { /// specified string. /// This lets you find a specified track if you know its ID string. external AudioTrack? getTrackById(String id); + + /// The read-only **[AudioTrackList]** + /// property **`length`** returns the number of entries in the + /// `AudioTrackList`, each of which is an [AudioTrack] + /// representing one audio track in the media element. A value of 0 indicates + /// that + /// there are no audio tracks in the media. external int get length; - external set onchange(EventHandler value); external EventHandler get onchange; - external set onaddtrack(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onaddtrack; - external set onremovetrack(EventHandler value); + external set onaddtrack(EventHandler value); external EventHandler get onremovetrack; + external set onremovetrack(EventHandler value); } /// The **`AudioTrack`** interface represents a single audio track from one of @@ -1909,12 +3578,59 @@ extension type AudioTrackList._(JSObject _) implements EventTarget, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack). extension type AudioTrack._(JSObject _) implements JSObject { + /// The **`id`** property contains a + /// string which uniquely identifies the track represented by the + /// **[AudioTrack]**. + /// + /// This ID can be used with the + /// [AudioTrackList.getTrackById] method to locate a specific track within + /// the media associated with a media element. The track ID can also be used + /// as the fragment of a URL that loads the specific track + /// (if the media supports media fragments). external String get id; + + /// The **`kind`** property contains a + /// string indicating the category of audio contained in the + /// **[AudioTrack]**. + /// + /// The `kind` can be used + /// to determine the scenarios in which specific tracks should be enabled or + /// disabled. See + /// [Audio track kind strings](#audio_track_kind_strings) for a list of the + /// kinds available for audio tracks. external String get kind; + + /// The read-only **[AudioTrack]** + /// property **`label`** returns a string specifying the audio + /// track's human-readable label, if one is available; otherwise, it returns + /// an empty + /// string. external String get label; + + /// The read-only **[AudioTrack]** + /// property **`language`** returns a string identifying the + /// language used in the audio track. + /// + /// For tracks that include multiple languages + /// (such as a movie in English in which a few lines are spoken in other + /// languages), this + /// should be the video's primary language. external String get language; - external set enabled(bool value); + + /// The **[AudioTrack]** property + /// **`enabled`** specifies whether or not the described audio + /// track is currently enabled for use. If the track is disabled by setting + /// `enabled` to `false`, the track is muted and does not produce + /// audio. external bool get enabled; + external set enabled(bool value); + + /// The read-only **[AudioTrack]** + /// property **`sourceBuffer`** returns the + /// [SourceBuffer] that created the track, or null if the track was not + /// created by a [SourceBuffer] or the [SourceBuffer] has been + /// removed from the [MediaSource.sourceBuffers] attribute of its parent + /// media source. external SourceBuffer? get sourceBuffer; } @@ -1939,14 +3655,26 @@ extension type VideoTrackList._(JSObject _) implements EventTarget, JSObject { /// This lets you find a specified track if /// you know its ID string. external VideoTrack? getTrackById(String id); + + /// The read-only **[VideoTrackList]** + /// property **`length`** returns the number of entries in the + /// `VideoTrackList`, each of which is a [VideoTrack] representing + /// one video track in the media element. + /// + /// A value of 0 indicates that there are no + /// video tracks in the media. external int get length; + + /// The read-only **[VideoTrackList]** + /// property **`selectedIndex`** returns the index of the + /// currently selected track, if any, or `-1` otherwise. external int get selectedIndex; - external set onchange(EventHandler value); external EventHandler get onchange; - external set onaddtrack(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onaddtrack; - external set onremovetrack(EventHandler value); + external set onaddtrack(EventHandler value); external EventHandler get onremovetrack; + external set onremovetrack(EventHandler value); } /// The [VideoTrack] interface represents a single video track from a `video` @@ -1961,12 +3689,59 @@ extension type VideoTrackList._(JSObject _) implements EventTarget, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack). extension type VideoTrack._(JSObject _) implements JSObject { + /// The **`id`** property contains a + /// string which uniquely identifies the track represented by the + /// **[VideoTrack]**. + /// + /// This ID can be used with the + /// [VideoTrackList.getTrackById] method to locate a specific track within + /// the media associated with a media element. + /// + /// The track ID can also be used as the fragment of a URL that loads the + /// specific track + /// (if the media supports media fragments). external String get id; + + /// The **`kind`** property contains a + /// string indicating the category of video contained in the + /// **[VideoTrack]**. + /// + /// The `kind` can be used + /// to determine the scenarios in which specific tracks should be enabled or + /// disabled. See + /// [Video track kind strings](#video_track_kind_strings) for a list of the + /// kinds available for video tracks. external String get kind; + + /// The read-only **[VideoTrack]** + /// property **`label`** returns a string specifying the video + /// track's human-readable label, if one is available; otherwise, it returns + /// an empty + /// string. external String get label; + + /// The read-only **[VideoTrack]** + /// property **`language`** returns a string identifying the + /// language used in the video track. + /// + /// For tracks that include multiple languages + /// (such as a movie in English in which a few lines are spoken in other + /// languages), this + /// should be the video's primary language. external String get language; - external set selected(bool value); + + /// The **[VideoTrack]** property + /// **`selected`** controls whether or not a particular video + /// track is active. external bool get selected; + external set selected(bool value); + + /// The read-only **[VideoTrack]** + /// property **`sourceBuffer`** returns the + /// [SourceBuffer] that created the track, or null if the track was not + /// created by a [SourceBuffer] or the [SourceBuffer] has been + /// removed from the [MediaSource.sourceBuffers] attribute of its parent + /// media source. external SourceBuffer? get sourceBuffer; } @@ -2000,13 +3775,21 @@ extension type TextTrackList._(JSObject _) implements EventTarget, JSObject { /// specified string. This lets you find a specified track if you know its ID /// string. external TextTrack? getTrackById(String id); + + /// The read-only **[TextTrackList]** + /// property **`length`** returns the number of entries in the + /// `TextTrackList`, each of which is a [TextTrack] representing + /// one track in the media element. + /// + /// A value of 0 indicates that there are no text + /// tracks in the media. external int get length; - external set onchange(EventHandler value); external EventHandler get onchange; - external set onaddtrack(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onaddtrack; - external set onremovetrack(EventHandler value); + external set onaddtrack(EventHandler value); external EventHandler get onremovetrack; + external set onremovetrack(EventHandler value); } /// The `TextTrack` interface—part of the API for handling WebVTT (text tracks @@ -2025,17 +3808,98 @@ extension type TextTrack._(JSObject _) implements EventTarget, JSObject { /// The **`removeCue()`** method of the [TextTrack] interface removes a cue /// from the list of cues. external void removeCue(TextTrackCue cue); + + /// The **`kind`** read-only property of the [TextTrack] interface returns the + /// kind of text track this object represents. This decides how the track will + /// be handled by a user agent. external TextTrackKind get kind; + + /// The **`label`** read-only property of the [TextTrack] interface returns a + /// human-readable label for the text track, if it is available. external String get label; + + /// The **`language`** read-only property of the [TextTrack] interface returns + /// the language of the text track. + /// + /// This uses the same values as the HTML + /// [`lang`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#lang) + /// attribute. These values are documented in `5646, "Tags for Identifying + /// Languages (also known as BCP 47)"`. external String get language; + + /// The **`id`** read-only property of the [TextTrack] interface returns the + /// ID of the track if it has one. external String get id; + + /// The **`inBandMetadataTrackDispatchType`** read-only property of the + /// [TextTrack] interface returns the text track's in-band metadata dispatch + /// type of the text track represented by the [TextTrack] object. + /// + /// An in-band metadata dispatch type is a string extracted from a media + /// resource specifically for in-band metadata tracks. An example of a media + /// resource that might have such tracks is a TV station streaming a broadcast + /// on the web. Text Tracks may be used to include metadata for ad targeting, + /// additional information such as recipe data during a cooking show, or + /// trivia game data during a game show. + /// + /// The value of this attribute could be used to attach these tracks to + /// dedicated script modules as they are loaded. external String get inBandMetadataTrackDispatchType; - external set mode(TextTrackMode value); + + /// The [TextTrack] interface's + /// **`mode`** property is a string specifying and controlling the + /// text track's mode: `disabled`, `hidden`, or + /// `showing`. You can read this value to determine the current mode, + /// and you can change this value to switch modes. + /// + /// Safari additionally requires the **`default`** + /// boolean attribute to be set to true when implementing your own video + /// player controls in + /// order for the subtitles cues to be shown. + /// + /// ### Value + /// + /// A string which indicates the track's current mode. One of: + /// + /// - `disabled` + /// - : The text track is currently disabled. While the track's presence is exposed in the + /// DOM, the user agent is otherwise ignoring it. No cues are active, no + /// events are being + /// fired, and the user agent won't attempt to obtain the track's cues. This + /// is the + /// default value, unless the text track has the + /// [`default`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track#default) + /// Boolean attribute is specified, in which case the default is `showing`. + /// - `hidden` + /// - : The text track is currently active but the cues aren't being displayed. If the user + /// agent hasn't tried to obtain the track's cues yet, it will do so soon + /// (thereby + /// populating the track's [TextTrack.cues] property). The user agent is + /// keeping a list of the active cues (in the track's [TextTrack.activeCues] + /// property) and events are being fired at the corresponding times, even + /// though the text isn't being displayed. + /// - `showing` + /// - : The text track is currently enabled and is visible. If the track's cues list hasn't + /// been obtained yet, it will be soon. The [TextTrack.activeCues] + /// list is being maintained and events are firing at the appropriate + /// times; the track's text is also being drawn appropriately based on the + /// styling and the + /// track's [TextTrack.kind]. This is the default value if the text + /// track's + /// [`default`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track#default) + /// Boolean attribute is specified. external TextTrackMode get mode; + external set mode(TextTrackMode value); + + /// The **`cues`** read-only property of the [TextTrack] interface returns a + /// [TextTrackCueList] object containing all of the track's cues. external TextTrackCueList? get cues; + + /// The **`activeCues`** read-only property of the [TextTrack] interface + /// returns a [TextTrackCueList] object listing the currently active cues. external TextTrackCueList? get activeCues; - external set oncuechange(EventHandler value); external EventHandler get oncuechange; + external set oncuechange(EventHandler value); external SourceBuffer? get sourceBuffer; } @@ -2054,6 +3918,9 @@ extension type TextTrackCueList._(JSObject _) implements JSObject { /// the first [VTTCue] in the list represented by the `TextTrackCueList` /// object whose identifier matches the value of `id`. external TextTrackCue? getCueById(String id); + + /// The **`length`** read-only property of the [TextTrackCueList] interface + /// returns the number of cues in the list. external int get length; } @@ -2070,19 +3937,34 @@ extension type TextTrackCueList._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue). extension type TextTrackCue._(JSObject _) implements EventTarget, JSObject { + /// The **`track`** read-only property of the [TextTrackCue] interface returns + /// the [TextTrack] object that this cue belongs to. external TextTrack? get track; - external set id(String value); + + /// The **`id`** property of the [TextTrackCue] interface returns and sets the + /// identifier for this cue. external String get id; - external set startTime(num value); + external set id(String value); + + /// The **`startTime`** property of the [TextTrackCue] interface returns and + /// sets the start time of the cue. external num get startTime; - external set endTime(num value); + external set startTime(num value); + + /// The **`endTime`** property of the [TextTrackCue] interface returns and + /// sets the end time of the cue. external num get endTime; - external set pauseOnExit(bool value); + external set endTime(num value); + + /// The **`pauseOnExit`** property of the [TextTrackCue] interface returns or + /// sets the flag indicating whether playback of the media should pause when + /// the end of the range to which this cue applies is reached. external bool get pauseOnExit; - external set onenter(EventHandler value); + external set pauseOnExit(bool value); external EventHandler get onenter; - external set onexit(EventHandler value); + external set onenter(EventHandler value); external EventHandler get onexit; + external set onexit(EventHandler value); } /// When loading a media resource for use by an `audio` or `video` element, the @@ -2107,6 +3989,9 @@ extension type TimeRanges._(JSObject _) implements JSObject { /// The **`end()`** method of the [TimeRanges] interface returns the time /// offset at which a specified time range ends. external num end(int index); + + /// The **`TimeRanges.length`** read-only property returns the + /// number of ranges in the object. external int get length; } @@ -2138,6 +4023,12 @@ extension type TrackEvent._(JSObject _) implements Event, JSObject { TrackEventInit eventInitDict, ]); + /// The read-only **`track`** property of + /// the [TrackEvent] interface specifies the media track object to which the + /// event applies. + /// + /// The media track will be an [AudioTrack], + /// [VideoTrack], or [TextTrack] object. external JSObject? get track; } extension type TrackEventInit._(JSObject _) implements EventInit, JSObject { @@ -2148,8 +4039,8 @@ extension type TrackEventInit._(JSObject _) implements EventInit, JSObject { JSObject? track, }); - external set track(JSObject? value); external JSObject? get track; + external set track(JSObject? value); } /// The **`HTMLMapElement`** interface provides special properties and methods @@ -2165,8 +4056,15 @@ extension type HTMLMapElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLMapElement] using the tag 'map'. HTMLMapElement() : _ = document.createElement('map'); - external set name(String value); + /// The **`name`** property of the [HTMLMapElement] represents the unique name + /// `<map>` element. + /// Its value can be used with the `useMap` attribute of the `img` element to + /// reference a `<map>` element. + /// + /// If an `id` attribute is set on the `map` element, then this `name` + /// property should be the same as this `id`. external String get name; + external set name(String value); external HTMLCollection get areas; } @@ -2183,46 +4081,159 @@ extension type HTMLAreaElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLAreaElement] using the tag 'area'. HTMLAreaElement() : _ = document.createElement('area'); - external set alt(String value); external String get alt; - external set coords(String value); + external set alt(String value); external String get coords; - external set shape(String value); + external set coords(String value); external String get shape; - external set target(String value); + external set shape(String value); + + /// The **`target`** property of the [HTMLAreaElement] interface is a string + /// that indicates where to display the linked resource. + /// + /// It reflects the + /// [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area#target) + /// attribute of the `area` element. external String get target; - external set download(String value); + external set target(String value); external String get download; - external set ping(String value); + external set download(String value); + + /// The **`ping`** property of the [HTMLAreaElement] interface is a + /// space-separated list of URLs. When the link is followed, the browser will + /// send `POST` requests with the body PING to the URLs. + /// + /// It reflects the `ping` attribute of the `area` element. + /// + /// > **Note:** This property is not effective in Firefox and its usage may be + /// > limited due to privacy and security concerns. external String get ping; - external set rel(String value); + external set ping(String value); + + /// The **`HTMLAreaElement.rel`** property reflects the + /// [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) + /// attribute. It is a string containing a space-separated list of link types + /// indicating the relationship between the resource represented by the `area` + /// element and the current document. external String get rel; + external set rel(String value); + + /// The **`HTMLAreaElement.relList`** read-only property reflects the + /// [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel) + /// attribute. It is a live [DOMTokenList] containing the set of link types + /// indicating the relationship between the resource represented by the `area` + /// element and the current document. + /// + /// The property itself is read-only, meaning you can't substitute the + /// [DOMTokenList] by another one, but the content of the returned list can be + /// changed. external DOMTokenList get relList; - external set referrerPolicy(String value); + + /// The + /// **`HTMLAreaElement.referrerPolicy`** + /// property reflect the HTML + /// [`referrerpolicy`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area#referrerpolicy) + /// attribute of the + /// `area` element defining which referrer is sent when fetching the + /// resource. external String get referrerPolicy; - external set noHref(bool value); + external set referrerPolicy(String value); external bool get noHref; - external set href(String value); + external set noHref(bool value); + + /// The **`HTMLAreaElement.href`** property is a + /// that returns a string containing the whole URL, and allows + /// the href to be updated. external String get href; + external set href(String value); + + /// The + /// **`HTMLAreaElement.origin`** read-only property is a + /// string containing the Unicode serialization of the origin of the + /// represented URL. + /// + /// That is: + /// + /// - for URL using the `http` or `https`, the scheme followed by + /// `'://'`, followed by the domain, followed by `':'`, followed by + /// the port (the default port, `80` and `443` respectively, if + /// explicitly specified); + /// - for URL using `file:` scheme, the value is browser dependent; + /// - for URL using the `blob:` scheme, the origin of the URL following + /// `blob:`. E.g `"blob:https://mozilla.org"` will have + /// `"https://mozilla.org".` external String get origin; - external set protocol(String value); + + /// The + /// **`HTMLAreaElement.protocol`** + /// property is a string representing the protocol scheme of the URL, + /// including the final `':'`. external String get protocol; - external set username(String value); + external set protocol(String value); + + /// The **`HTMLAreaElement.username`** property is a + /// string containing the username specified before the domain name. external String get username; - external set password(String value); + external set username(String value); + + /// The **`HTMLAreaElement.password`** property is a + /// string containing the password specified before the domain name. + /// + /// If it is set without first setting the + /// [`username`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement/username) + /// property, it silently fails. external String get password; - external set host(String value); + external set password(String value); + + /// The **`HTMLAreaElement.host`** property is a + /// string containing the host, that is the _hostname_, and then, + /// if the _port_ of the URL is nonempty, a `':'`, and the _port_ + /// of the URL. external String get host; - external set hostname(String value); + external set host(String value); + + /// The **`HTMLAreaElement.hostname`** property is a string containing the + /// domain of the URL. external String get hostname; - external set port(String value); + external set hostname(String value); + + /// The **`HTMLAreaElement.port`** property is a + /// string containing the port number of the URL. If the URL does not + /// contain an explicit port number, it will be set to `''`. external String get port; - external set pathname(String value); + external set port(String value); + + /// The **`HTMLAreaElement.pathname`** property is a + /// string containing an initial `'/'` followed by the path of + /// the URL not including the query string or fragment (or the empty string if + /// there is no + /// path). external String get pathname; - external set search(String value); + external set pathname(String value); + + /// The **`HTMLAreaElement.search`** property is a search + /// string, also called a _query string_, that is a string containing + /// a `'?'` followed by the parameters of the URL. + /// + /// Modern browsers provide + /// [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/get#examples) + /// and + /// [`URL.searchParams`](/en-US/docs/Web/API/URL/searchParams#examples) + /// to make it easy to parse out the parameters from the querystring. external String get search; - external set hash(String value); + external set search(String value); + + /// The + /// **`HTMLAreaElement.hash`** property returns a + /// string containing a `'#'` followed by the fragment + /// identifier of the URL. + /// + /// The fragment is not + /// [URL decoded](https://en.wikipedia.org/wiki/URL_encoding). If the URL does + /// not + /// have a fragment identifier, this property contains an empty string, `""`. external String get hash; + external set hash(String value); } /// The **`HTMLTableElement`** interface provides special properties and methods @@ -2323,32 +4334,115 @@ extension type HTMLTableElement._(JSObject _) implements HTMLElement, JSObject { /// The **`HTMLTableElement.deleteRow()`** method removes a /// specific row (`tr`) from a given `table`. external void deleteRow(int index); - external set caption(HTMLTableCaptionElement? value); + + /// The **`HTMLTableElement.caption`** property represents the + /// table caption. If no caption element is associated with the table, this + /// property is + /// `null`. external HTMLTableCaptionElement? get caption; - external set tHead(HTMLTableSectionElement? value); + external set caption(HTMLTableCaptionElement? value); + + /// The **`HTMLTableElement.tHead`** represents the + /// `thead` element of a `table`. Its value will be + /// `null` if there is no such element. external HTMLTableSectionElement? get tHead; - external set tFoot(HTMLTableSectionElement? value); + external set tHead(HTMLTableSectionElement? value); + + /// The **`HTMLTableElement.tFoot`** property represents the + /// `tfoot` element of a `table`. Its value will be + /// `null` if there is no such element. external HTMLTableSectionElement? get tFoot; + external set tFoot(HTMLTableSectionElement? value); + + /// The **`HTMLTableElement.tBodies`** read-only property returns a + /// live [HTMLCollection] of the bodies in a `table`. + /// + /// Although the property is read-only, the returned object is live and allows + /// the + /// modification of its content. + /// + /// The collection returned includes implicit `tbody` elements. For + /// example: + /// + /// ```html + /// <table> + /// <tr> + /// <td>cell one</td> + /// </tr> + /// </table> + /// ``` + /// + /// The HTML DOM generated from the above HTML will have a `tbody` element + /// even though the tags are not included in the source HTML. external HTMLCollection get tBodies; + + /// The read-only [HTMLTableElement] + /// property **`rows`** returns a live + /// [HTMLCollection] of all the rows in the table, including the rows + /// contained within any `thead`, `tfoot`, and + /// `tbody` elements. + /// + /// Although the property itself is read-only, the returned object is live and + /// allows the + /// modification of its content. external HTMLCollection get rows; - external set align(String value); + + /// The **`HTMLTableElement.align`** property represents the + /// alignment of the table. external String get align; - external set border(String value); + external set align(String value); + + /// The **`HTMLTableElement.border`** property represents the + /// border width of the `table` element. external String get border; - external set frame(String value); + external set border(String value); + + /// The [HTMLTableElement] interface's **`frame`** + /// property is a string that indicates which of the table's exterior borders + /// should be + /// drawn. external String get frame; - external set rules(String value); + external set frame(String value); + + /// The **`HTMLTableElement.rules`** property indicates which cell + /// borders to render in the table. external String get rules; - external set summary(String value); + external set rules(String value); + + /// The **`HTMLTableElement.summary`** property represents the + /// table description. external String get summary; - external set width(String value); + external set summary(String value); + + /// The **`HTMLTableElement.width`** property represents the + /// desired width of the table. external String get width; - external set bgColor(String value); + external set width(String value); + + /// The **`bgcolor`** property of the [HTMLTableElement] represents the + /// background color of the table. + /// + /// > **Note:** Do not use this attribute anymore. Instead, use the CSS + /// > property by modifying the element's + /// > [`style`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) + /// > attribute or using a style rule. external String get bgColor; - external set cellPadding(String value); + external set bgColor(String value); + + /// The **`HTMLTableElement.cellPadding`** property represents the + /// padding around the individual cells of the table. external String get cellPadding; - external set cellSpacing(String value); + external set cellPadding(String value); + + /// While you should instead use the CSS + /// property, the obsolete [HTMLTableElement] + /// interface's **`cellSpacing`** property represents the spacing + /// around the individual `th` and `td` elements + /// representing a table's cells. Any two cells are separated by the sum of + /// the + /// `cellSpacing` of each of the two cells. external String get cellSpacing; + external set cellSpacing(String value); } /// The **`HTMLTableCaptionElement`** interface provides special properties @@ -2364,8 +4458,8 @@ extension type HTMLTableCaptionElement._(JSObject _) /// Creates an [HTMLTableCaptionElement] using the tag 'caption'. HTMLTableCaptionElement() : _ = document.createElement('caption'); - external set align(String value); external String get align; + external set align(String value); } /// The **`HTMLTableColElement`** interface provides properties for manipulating @@ -2383,18 +4477,18 @@ extension type HTMLTableColElement._(JSObject _) /// Creates an [HTMLTableColElement] using the tag 'col'. HTMLTableColElement.col() : _ = document.createElement('col'); - external set span(int value); external int get span; - external set align(String value); + external set span(int value); external String get align; - external set ch(String value); + external set align(String value); external String get ch; - external set chOff(String value); + external set ch(String value); external String get chOff; - external set vAlign(String value); + external set chOff(String value); external String get vAlign; - external set width(String value); + external set vAlign(String value); external String get width; + external set width(String value); } /// The **`HTMLTableSectionElement`** interface provides special properties and @@ -2421,14 +4515,14 @@ extension type HTMLTableSectionElement._(JSObject _) external HTMLTableRowElement insertRow([int index]); external void deleteRow(int index); external HTMLCollection get rows; - external set align(String value); external String get align; - external set ch(String value); + external set align(String value); external String get ch; - external set chOff(String value); + external set ch(String value); external String get chOff; - external set vAlign(String value); + external set chOff(String value); external String get vAlign; + external set vAlign(String value); } /// The **`HTMLTableRowElement`** interface provides special properties and @@ -2459,19 +4553,28 @@ extension type HTMLTableRowElement._(JSObject _) /// > element though. external HTMLTableCellElement insertCell([int index]); external void deleteCell(int index); + + /// The **`HTMLTableRowElement.rowIndex`** read-only property + /// represents the position of a row in relation to the whole `table`. + /// + /// Even when the `thead`, `tbody`, and + /// `tfoot` elements are out of order in the HTML, browsers render the + /// table in the right order. Therefore the rows count from `<thead>` to + /// `<tbody>`, from `<tbody>` to + /// `<tfoot>`. external int get rowIndex; external int get sectionRowIndex; external HTMLCollection get cells; - external set align(String value); external String get align; - external set ch(String value); + external set align(String value); external String get ch; - external set chOff(String value); + external set ch(String value); external String get chOff; - external set vAlign(String value); + external set chOff(String value); external String get vAlign; - external set bgColor(String value); + external set vAlign(String value); external String get bgColor; + external set bgColor(String value); } /// The **`HTMLTableCellElement`** interface provides special properties and @@ -2492,35 +4595,35 @@ extension type HTMLTableCellElement._(JSObject _) /// Creates an [HTMLTableCellElement] using the tag 'th'. HTMLTableCellElement.th() : _ = document.createElement('th'); - external set colSpan(int value); external int get colSpan; - external set rowSpan(int value); + external set colSpan(int value); external int get rowSpan; - external set headers(String value); + external set rowSpan(int value); external String get headers; + external set headers(String value); external int get cellIndex; - external set scope(String value); external String get scope; - external set abbr(String value); + external set scope(String value); external String get abbr; - external set align(String value); + external set abbr(String value); external String get align; - external set axis(String value); + external set align(String value); external String get axis; - external set height(String value); + external set axis(String value); external String get height; - external set width(String value); + external set height(String value); external String get width; - external set ch(String value); + external set width(String value); external String get ch; - external set chOff(String value); + external set ch(String value); external String get chOff; - external set noWrap(bool value); + external set chOff(String value); external bool get noWrap; - external set vAlign(String value); + external set noWrap(bool value); external String get vAlign; - external set bgColor(String value); + external set vAlign(String value); external String get bgColor; + external set bgColor(String value); } /// The **`HTMLFormElement`** interface represents a `form` element in the DOM. @@ -2592,28 +4695,113 @@ extension type HTMLFormElement._(JSObject _) implements HTMLElement, JSObject { /// events are fired for /// each invalid child and validation problems are reported to the user. external bool reportValidity(); - external set acceptCharset(String value); + + /// The **`HTMLFormElement.acceptCharset`** property represents a + /// list of the supported + /// [character encodings](https://developer.mozilla.org/en-US/docs/Glossary/Character_encoding) + /// for the given `form` element. This list can be + /// comma-separated or space-separated. external String get acceptCharset; - external set action(String value); + external set acceptCharset(String value); + + /// The **`HTMLFormElement.action`** property represents the action + /// of the `form` element. + /// + /// The action of a form is the program that is executed on the server when + /// the form is + /// submitted. This property can be retrieved or set. external String get action; - external set autocomplete(String value); + external set action(String value); external String get autocomplete; - external set enctype(String value); + external set autocomplete(String value); + + /// The **`HTMLFormElement.enctype`** property is the + /// [MIME type](https://en.wikipedia.org/wiki/Mime_type) of content that is + /// used + /// to submit the form to the server. Possible values are: + /// + /// - `application/x-www-form-urlencoded`: The initial default type. + /// - `multipart/form-data`: The type that allows file `input` + /// element(s) to upload file data. + /// - `text/plain`: Ambiguous format, human-readable content not reliably + /// interpretable by computer. + /// + /// This value can be overridden by a + /// [`formenctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#formenctype) + /// attribute + /// on a `button` or `input` element. external String get enctype; - external set encoding(String value); + external set enctype(String value); + + /// The **`HTMLFormElement.encoding`** property is an alternative name for the + /// [HTMLFormElement.enctype] element on the DOM [HTMLFormElement] object. external String get encoding; - external set method(String value); + external set encoding(String value); + + /// The **`HTMLFormElement.method`** property represents the + /// method used to submit the `form`. + /// + /// Unless explicitly specified, the default method is 'get'. external String get method; - external set name(String value); + external set method(String value); + + /// The **`HTMLFormElement.name`** property represents the name of + /// the current `form` element as a string. + /// + /// If your `Form` element contains an element named _name_ then + /// that element overrides the `form.name` property, so that you can't access + /// it. external String get name; - external set noValidate(bool value); + external set name(String value); external bool get noValidate; - external set target(String value); + external set noValidate(bool value); + + /// The **`target`** property of the [HTMLFormElement] + /// interface represents the target of the form's action (i.e., the frame in + /// which to render + /// its output). external String get target; - external set rel(String value); + external set target(String value); external String get rel; + external set rel(String value); external DOMTokenList get relList; + + /// The [HTMLFormElement] property + /// **`elements`** returns an + /// [HTMLFormControlsCollection] listing all the form controls contained in + /// the `form` element. + /// + /// Independently, you can obtain just the + /// number of form controls using the [HTMLFormElement.length] + /// property. + /// + /// You can access a particular form control in the returned collection by + /// using either an + /// index or the element's `name` or `id` attributes. + /// + /// Prior to HTML 5, the returned object was an [HTMLCollection], on which + /// `HTMLFormControlsCollection` is based. + /// + /// > **Note:** Similarly, you can get a list of all of the forms contained + /// > within a given document using the document's [Document.forms] property. external HTMLFormControlsCollection get elements; + + /// The **`HTMLFormElement.length`** + /// read-only property returns the number of controls in the `form` + /// element. + /// + /// You can access the list of the form's controls using the + /// [HTMLFormElement.elements] property. + /// + /// This includes both elements that are descendants of the `<form>` + /// element as well as elements that are made members of the form using their + /// `form` property. + /// + /// Elements that are considered for this property are: `button`, + /// `fieldset`, `input` (with the exception + /// that any whose type is "image" are omitted for historical reasons), + /// `object`, `output`, `select`, + /// and `textarea`. external int get length; } @@ -2629,9 +4817,30 @@ extension type HTMLLabelElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLLabelElement] using the tag 'label'. HTMLLabelElement() : _ = document.createElement('label'); + /// The read-only **`HTMLLabelElement.form`** property returns an + /// [HTMLFormElement] object which represents the form of which the label's + /// associated control is a part, or null if there is either no associated + /// control, or if + /// that control isn't in a form. + /// + /// This property is just a shortcut for `HTMLLabelElement.control.form`. external HTMLFormElement? get form; - external set htmlFor(String value); + + /// The **`HTMLLabelElement.htmlFor`** property reflects the value + /// of the + /// [`for`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label#for) + /// content property. That means that this + /// script-accessible property is used to set and read the value of the + /// content property + /// `for`, which is the ID of the label's associated control element. external String get htmlFor; + external set htmlFor(String value); + + /// The read-only **`HTMLLabelElement.control`** property returns a + /// reference to the control (in the form of an object of type [HTMLElement] + /// or + /// one of its derivatives) with which the `label` element is associated, + /// or `null` if the label isn't associated with a control. external HTMLElement? get control; } @@ -2960,97 +5169,213 @@ extension type HTMLInputElement._(JSObject _) implements HTMLElement, JSObject { /// More generally, this method should ideally display the picker for any /// input element on the platform that has a picker. external void showPicker(); - external set webkitdirectory(bool value); + + /// The **`HTMLInputElement.webkitdirectory`** is a property + /// that reflects the + /// [`webkitdirectory`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#webkitdirectory) + /// HTML attribute + /// and indicates that the `input` element should let the user select + /// directories instead of files. + /// When a directory is selected, the directory and its entire hierarchy of + /// contents are included in the set of selected items. + /// The selected file system entries can be obtained using the + /// [HTMLInputElement.webkitEntries] property. + /// + /// > **Note:** This property is called `webkitEntries` in the specification + /// > due to its + /// > origins as a Google Chrome-specific API. It's likely to be renamed + /// > someday. external bool get webkitdirectory; + external set webkitdirectory(bool value); + + /// The read-only **`webkitEntries`** + /// property of the [HTMLInputElement] interface contains an array of file + /// system entries (as objects based on [FileSystemEntry]) representing files + /// and/or directories selected by the user using an `input` element of + /// type `file`, but only if that selection was made using drag-and-drop: + /// selecting a file in the dialog will leave the property empty. + /// + /// The array can only contain directories if the + /// [HTMLInputElement.webkitdirectory] property is + /// `true`. This means the `<input>` element was configured to + /// let the user choose directories. + /// + /// > **Note:** This property is called `webkitEntries` in the specification + /// > due to its + /// > origins as a Google Chrome-specific API. It's likely to be renamed + /// > someday. external JSArray<FileSystemEntry> get webkitEntries; - external set accept(String value); external String get accept; - external set alt(String value); + external set accept(String value); external String get alt; - external set autocomplete(String value); + external set alt(String value); external String get autocomplete; - external set defaultChecked(bool value); + external set autocomplete(String value); external bool get defaultChecked; - external set checked(bool value); + external set defaultChecked(bool value); external bool get checked; - external set dirName(String value); + external set checked(bool value); external String get dirName; - external set disabled(bool value); + external set dirName(String value); + + /// The **`HTMLInputElement.disabled`** property is a boolean value that + /// reflects the + /// [`disabled`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#disabled) + /// HTML attribute, which indicates whether the control is disabled. If it is + /// disabled, it does not accept clicks. A disabled element is unusable and + /// un-clickable. external bool get disabled; + external set disabled(bool value); external HTMLFormElement? get form; - external set files(FileList? value); - external FileList? get files; - external set formAction(String value); + + /// The **`HTMLInputElement.files`** property allows you to access the + /// [FileList] selected with the [`<input + /// type="file">`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file) + /// element. + external FileList? get files; + external set files(FileList? value); external String get formAction; - external set formEnctype(String value); + external set formAction(String value); external String get formEnctype; - external set formMethod(String value); + external set formEnctype(String value); external String get formMethod; - external set formNoValidate(bool value); + external set formMethod(String value); external bool get formNoValidate; - external set formTarget(String value); + external set formNoValidate(bool value); external String get formTarget; - external set height(int value); + external set formTarget(String value); external int get height; - external set indeterminate(bool value); + external set height(int value); external bool get indeterminate; + external set indeterminate(bool value); external HTMLDataListElement? get list; - external set max(String value); external String get max; - external set maxLength(int value); + external set max(String value); external int get maxLength; - external set min(String value); + external set maxLength(int value); external String get min; - external set minLength(int value); + external set min(String value); external int get minLength; - external set multiple(bool value); + external set minLength(int value); + + /// The **`HTMLInputElement.multiple`** property indicates if an input can + /// have more than one value. Firefox currently only supports `multiple` for + /// `<input type="file">`. external bool get multiple; - external set name(String value); + external set multiple(bool value); external String get name; - external set pattern(String value); + external set name(String value); external String get pattern; - external set placeholder(String value); + external set pattern(String value); external String get placeholder; - external set readOnly(bool value); + external set placeholder(String value); external bool get readOnly; - external set required(bool value); + external set readOnly(bool value); external bool get required; - external set size(int value); + external set required(bool value); external int get size; - external set src(String value); + external set size(int value); external String get src; - external set step(String value); + external set src(String value); external String get step; - external set type(String value); + external set step(String value); + + /// The **`type`** property of the [HTMLInputElement] interface indicates the + /// kind of data allowed in the `input` element, or example a number, a date, + /// or an email. Browsers will select the appropriate widget and behavior to + /// help users to enter a valid value. + /// + /// It reflects the + /// [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#type) + /// attribute of the `input` element. external String get type; - external set defaultValue(String value); + external set type(String value); external String get defaultValue; - external set value(String value); + external set defaultValue(String value); external String get value; - external set valueAsDate(JSObject? value); + external set value(String value); external JSObject? get valueAsDate; - external set valueAsNumber(num value); + external set valueAsDate(JSObject? value); external num get valueAsNumber; - external set width(int value); + external set valueAsNumber(num value); external int get width; + external set width(int value); external bool get willValidate; external ValidityState get validity; external String get validationMessage; + + /// The **`HTMLInputElement.labels`** read-only property returns a + /// [NodeList] of the `label` elements associated with the + /// `input` element, if the element is not hidden. If the element has the + /// type `hidden`, the property returns `null`. external NodeList? get labels; - external set selectionStart(int? value); + + /// The **`selectionStart`** property of the [HTMLInputElement] interface is a + /// number that represents the beginning index of the selected text. When + /// nothing is selected, then returns the position of the text input cursor + /// (caret) inside of the `<input>` element. + /// + /// > **Note:** According to the + /// > [WHATWG forms spec](https://html.spec.whatwg.org/multipage/forms.html#concept-input-apply) + /// > `selectionStart` property applies only to inputs of types text, search, + /// > URL, tel, and password. In modern browsers, throws an exception while + /// > setting `selectionStart` property on the rest of input types. + /// > Additionally, this property returns `null` while accessing + /// > `selectionStart` property on non-text input elements. + /// + /// If `selectionStart` is greater than `selectionEnd`, then both are + /// treated as the value of `selectionEnd`. external int? get selectionStart; - external set selectionEnd(int? value); + external set selectionStart(int? value); + + /// The **`selectionEnd`** property of the [HTMLInputElement] interface is a + /// number that represents the end index of the selected text. When there is + /// no selection, this returns the offset of the character immediately + /// following the current text input cursor position. + /// + /// > **Note:** According to the + /// > [WHATWG forms spec](https://html.spec.whatwg.org/multipage/forms.html#concept-input-apply) + /// > `selectionEnd` property applies only to inputs of types text, search, + /// > URL, tel, and password. In modern browsers, throws an exception while + /// > setting `selectionEnd` property on the rest of input types. + /// > Additionally, this property returns `null` while accessing + /// > `selectionEnd` property on non-text input elements. + /// + /// If `selectionEnd` is less than `selectionStart`, then both are + /// treated as the value of `selectionEnd`. external int? get selectionEnd; - external set selectionDirection(String? value); + external set selectionEnd(int? value); + + /// The **`selectionDirection`** property of the [HTMLInputElement] interface + /// is a string that indicates the direction in which the user is selecting + /// the text. external String? get selectionDirection; - external set align(String value); + external set selectionDirection(String? value); external String get align; - external set useMap(String value); + external set align(String value); external String get useMap; - external set popoverTargetElement(Element? value); + external set useMap(String value); + + /// The **`popoverTargetElement`** property of the [HTMLInputElement] + /// interface gets and sets the popover element to control via an `input` + /// element of `type="button"`. + /// + /// It is the JavaScript equivalent of the + /// [`popovertarget`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#popovertarget) + /// HTML attribute. external Element? get popoverTargetElement; - external set popoverTargetAction(String value); + external set popoverTargetElement(Element? value); + + /// The **`popoverTargetAction`** property of the [HTMLInputElement] interface + /// gets and sets the action to be performed (`"hide"`, `"show"`, or + /// `"toggle"`) on a popover element being controlled by an `input` element of + /// `type="button"`. + /// + /// It reflects the value of the + /// [`popovertargetaction`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#popovertargetaction) + /// HTML attribute. external String get popoverTargetAction; + external set popoverTargetAction(String value); } /// The **`HTMLButtonElement`** interface provides properties and methods @@ -3069,33 +5394,62 @@ extension type HTMLButtonElement._(JSObject _) external bool checkValidity(); external bool reportValidity(); external void setCustomValidity(String error); - external set disabled(bool value); + + /// The **`HTMLButtonElement.disabled`** property indicates whether the + /// control is disabled, meaning that it does not accept any clicks. external bool get disabled; + external set disabled(bool value); external HTMLFormElement? get form; - external set formAction(String value); external String get formAction; - external set formEnctype(String value); + external set formAction(String value); external String get formEnctype; - external set formMethod(String value); + external set formEnctype(String value); external String get formMethod; - external set formNoValidate(bool value); + external set formMethod(String value); external bool get formNoValidate; - external set formTarget(String value); + external set formNoValidate(bool value); external String get formTarget; - external set name(String value); + external set formTarget(String value); external String get name; - external set type(String value); + external set name(String value); + + /// The **`type`** property of the [HTMLButtonElement] interface is a string + /// that indicates the behavior type of the `button` element. + /// + /// It reflects the + /// [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#type) + /// attribute of the `button` element. external String get type; - external set value(String value); + external set type(String value); external String get value; + external set value(String value); external bool get willValidate; external ValidityState get validity; external String get validationMessage; + + /// The **`HTMLButtonElement.labels`** read-only property returns a + /// [NodeList] of the `label` elements associated with the + /// `button` element. external NodeList get labels; - external set popoverTargetElement(Element? value); + + /// The **`popoverTargetElement`** property of the [HTMLButtonElement] + /// interface gets and sets the popover element to control via a button. + /// + /// It is the JavaScript equivalent of the + /// [`popovertarget`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#popovertarget) + /// HTML attribute. external Element? get popoverTargetElement; - external set popoverTargetAction(String value); + external set popoverTargetElement(Element? value); + + /// The **`popoverTargetAction`** property of the [HTMLButtonElement] + /// interface gets and sets the action to be performed (`"hide"`, `"show"`, or + /// `"toggle"`) on a popover element being controlled by a button. + /// + /// It reflects the value of the + /// [`popovertargetaction`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#popovertargetaction) + /// HTML attribute. external String get popoverTargetAction; + external set popoverTargetAction(String value); } /// The **`HTMLSelectElement`** interface represents a `select` HTML Element. @@ -3168,31 +5522,68 @@ extension type HTMLSelectElement._(JSObject _) /// is selected, but can be triggered from a button press or other user /// interaction. external void showPicker(); - external set autocomplete(String value); external String get autocomplete; - external set disabled(bool value); + external set autocomplete(String value); + + /// The **`HTMLSelectElement.disabled`** property is a boolean value that + /// reflects the + /// [`disabled`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#disabled) + /// HTML attribute, which indicates whether the control is disabled. If it is + /// disabled, it + /// does not accept clicks. A disabled element is unusable and un-clickable. external bool get disabled; + external set disabled(bool value); + + /// The **`HTMLSelectElement.form`** read-only property returns a + /// [HTMLFormElement] representing the form that this element is associated + /// with. If the element is not associated with a `form` element, then + /// it returns `null`. external HTMLFormElement? get form; - external set multiple(bool value); external bool get multiple; - external set name(String value); + external set multiple(bool value); external String get name; - external set required(bool value); + external set name(String value); external bool get required; - external set size(int value); + external set required(bool value); external int get size; + external set size(int value); + + /// The **`HTMLSelectElement.type`** + /// read-only property returns the form control's `type`. external String get type; + + /// The **`HTMLSelectElement.options`** read-only property returns + /// a [HTMLOptionsCollection] of the `option` elements + /// contained by the `select` element. external HTMLOptionsCollection get options; - external set length(int value); external int get length; + external set length(int value); + + /// The **read-only** [HTMLSelectElement] property + /// **`selectedOptions`** contains a list of the + /// `option` elements contained within the `select` + /// element that are currently selected. The list of selected options is an + /// [HTMLCollection] object with one entry per currently selected option. + /// + /// An option is considered selected if it has an [HTMLOptionElement.selected] + /// attribute. external HTMLCollection get selectedOptions; - external set selectedIndex(int value); + + /// The **`HTMLSelectElement.selectedIndex`** property is a + /// `long` that reflects the index of the first or last selected + /// `option` element, depending on the value of `multiple`. The + /// value `-1` indicates that no element is selected. external int get selectedIndex; - external set value(String value); + external set selectedIndex(int value); external String get value; + external set value(String value); external bool get willValidate; external ValidityState get validity; external String get validationMessage; + + /// The **`HTMLSelectElement.labels`** read-only property returns a + /// [NodeList] of the `label` elements associated with the + /// `select` element. external NodeList get labels; } @@ -3226,10 +5617,10 @@ extension type HTMLOptGroupElement._(JSObject _) /// Creates an [HTMLOptGroupElement] using the tag 'optgroup'. HTMLOptGroupElement() : _ = document.createElement('optgroup'); - external set disabled(bool value); external bool get disabled; - external set label(String value); + external set disabled(bool value); external String get label; + external set label(String value); } /// The **`HTMLOptionElement`** interface represents `option` elements and @@ -3244,19 +5635,19 @@ extension type HTMLOptionElement._(JSObject _) /// Creates an [HTMLOptionElement] using the tag 'option'. HTMLOptionElement() : _ = document.createElement('option'); - external set disabled(bool value); external bool get disabled; + external set disabled(bool value); external HTMLFormElement? get form; - external set label(String value); external String get label; - external set defaultSelected(bool value); + external set label(String value); external bool get defaultSelected; - external set selected(bool value); + external set defaultSelected(bool value); external bool get selected; - external set value(String value); + external set selected(bool value); external String get value; - external set text(String value); + external set value(String value); external String get text; + external set text(String value); external int get index; } @@ -3287,47 +5678,54 @@ extension type HTMLTextAreaElement._(JSObject _) int end, [ String direction, ]); - external set autocomplete(String value); external String get autocomplete; - external set cols(int value); + external set autocomplete(String value); external int get cols; - external set dirName(String value); + external set cols(int value); external String get dirName; - external set disabled(bool value); + external set dirName(String value); external bool get disabled; + external set disabled(bool value); external HTMLFormElement? get form; - external set maxLength(int value); external int get maxLength; - external set minLength(int value); + external set maxLength(int value); external int get minLength; - external set name(String value); + external set minLength(int value); external String get name; - external set placeholder(String value); + external set name(String value); external String get placeholder; - external set readOnly(bool value); + external set placeholder(String value); external bool get readOnly; - external set required(bool value); + external set readOnly(bool value); external bool get required; - external set rows(int value); + external set required(bool value); external int get rows; - external set wrap(String value); + external set rows(int value); external String get wrap; + external set wrap(String value); + + /// The read-only **`type`** property of the [HTMLTextAreaElement] always + /// returns `textarea`. external String get type; - external set defaultValue(String value); external String get defaultValue; - external set value(String value); + external set defaultValue(String value); external String get value; + external set value(String value); external int get textLength; external bool get willValidate; external ValidityState get validity; external String get validationMessage; + + /// The **`HTMLTextAreaElement.labels`** read-only property returns + /// a [NodeList] of the `label` elements associated with the + /// `textArea` element. external NodeList get labels; - external set selectionStart(int value); external int get selectionStart; - external set selectionEnd(int value); + external set selectionStart(int value); external int get selectionEnd; - external set selectionDirection(String value); + external set selectionEnd(int value); external String get selectionDirection; + external set selectionDirection(String value); } /// The **`HTMLOutputElement`** interface provides properties and methods @@ -3348,16 +5746,20 @@ extension type HTMLOutputElement._(JSObject _) external void setCustomValidity(String error); external DOMTokenList get htmlFor; external HTMLFormElement? get form; - external set name(String value); external String get name; + external set name(String value); external String get type; - external set defaultValue(String value); external String get defaultValue; - external set value(String value); + external set defaultValue(String value); external String get value; + external set value(String value); external bool get willValidate; external ValidityState get validity; external String get validationMessage; + + /// The **`HTMLOutputElement.labels`** read-only property returns a + /// [NodeList] of the `label` elements associated with the + /// `output` element. external NodeList get labels; } @@ -3375,11 +5777,23 @@ extension type HTMLProgressElement._(JSObject _) /// Creates an [HTMLProgressElement] using the tag 'progress'. HTMLProgressElement() : _ = document.createElement('progress'); - external set value(num value); + /// The **`value`** property of the [HTMLProgressElement] interface represents + /// the current progress of the `progress` element. external num get value; - external set max(num value); + external set value(num value); + + /// The **`max`** property of the [HTMLProgressElement] interface represents + /// the upper bound of the `progress` element's range. external num get max; + external set max(num value); + + /// The **`position`** read-only property of the [HTMLProgressElement] + /// interface returns current progress of the `progress` element. external num get position; + + /// The **`HTMLProgressElement.labels`** read-only property returns + /// a [NodeList] of the `label` elements associated with the + /// `progress` element. external NodeList get labels; } @@ -3396,18 +5810,22 @@ extension type HTMLMeterElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLMeterElement] using the tag 'meter'. HTMLMeterElement() : _ = document.createElement('meter'); - external set value(num value); external num get value; - external set min(num value); + external set value(num value); external num get min; - external set max(num value); + external set min(num value); external num get max; - external set low(num value); + external set max(num value); external num get low; - external set high(num value); + external set low(num value); external num get high; - external set optimum(num value); + external set high(num value); external num get optimum; + external set optimum(num value); + + /// The **`HTMLMeterElement.labels`** read-only property returns a + /// [NodeList] of the `label` elements associated with the + /// `meter` element. external NodeList get labels; } @@ -3428,11 +5846,11 @@ extension type HTMLFieldSetElement._(JSObject _) external bool checkValidity(); external bool reportValidity(); external void setCustomValidity(String error); - external set disabled(bool value); external bool get disabled; + external set disabled(bool value); external HTMLFormElement? get form; - external set name(String value); external String get name; + external set name(String value); external String get type; external HTMLCollection get elements; external bool get willValidate; @@ -3454,8 +5872,8 @@ extension type HTMLLegendElement._(JSObject _) HTMLLegendElement() : _ = document.createElement('legend'); external HTMLFormElement? get form; - external set align(String value); external String get align; + external set align(String value); } /// The **`ValidityState`** interface represents the _validity states_ that an @@ -3467,25 +5885,187 @@ extension type HTMLLegendElement._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState). extension type ValidityState._(JSObject _) implements JSObject { + /// The read-only **`valueMissing`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if a + /// [`required`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/required) + /// control, such as an `input`, `select`, or `textarea`, has an empty value. + /// + /// If the `required` attribute is set, and no `option` is selected or a + /// `<textarea>` or user-editable `<input>` is empty, the `valueMissing` + /// property will be `true`. The property is only `true` if the field is + /// required and has no value; if the field is not required, or if the field + /// is required and has a value, the value is `false`. external bool get valueMissing; + + /// The read-only **`typeMismatch`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if the value of an `input`, after having been edited by + /// the user, does not conform to the constraints set by the element's + /// [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types) + /// attribute. + /// + /// If the `type` attribute expects specific strings, such as the `email` and + /// `url` types and the value doesn't conform to the constraints set by the + /// type, the `typeMismatch` property will be true. + /// + /// The `email` input type expects one or more valid email addresses, + /// depending on whether the + /// [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/multiple) + /// attribute is present. A valid email address includes an email prefix and a + /// domain, with or without a top level domain. If the value of the email + /// input is not an empty string, a single valid email address, or one or more + /// comma separated email address if the + /// [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/multiple) + /// attribute is present, there is a `typeMismatch`. + /// + /// The `url` input type expects one or more valid URLs, depending on whether + /// the + /// [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/multiple) + /// attribute is present. A valid URL includes a protocol, optionally with an + /// IP address, or an optional subdomain, domain, and top level domain + /// combination. If the value of the URL input is not an empty string, a + /// single valid URL, or one or more comma separated URLS if the + /// [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/multiple) + /// attribute is present, there is a `typeMismatch`. + /// + /// | Input type | Value | Expected value | + /// | --------------------------------------- | ----------------- | -------------------------------------------------------------- | + /// | `email` | `x@y` or `x@y.z` | email address, with or without [TLD](https://developer.mozilla.org/en-US/docs/Glossary/TLD) | + /// | `url` | `x:` or `x://y.z` | protocol or full URL with protocol | external bool get typeMismatch; + + /// The read-only **`patternMismatch`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if the value of an `input`, after having been edited by + /// the user, does not conform to the constraints set by the element's + /// [`pattern`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern) + /// attribute. + /// + /// The `patternMismatch` property will be true if and only if the following + /// conditions are all true: + /// + /// - the field supports the + /// [`pattern`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern) + /// attribute — which means the `input` is of `type` `text`, `tel`, `email`, + /// `url`, `password`, or `search` + /// - the + /// [`pattern`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern) + /// attribute contains a valid regular expression + /// - the `input` value doesn't conform to the constraints set by the + /// [`pattern`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern) + /// value. external bool get patternMismatch; + + /// The read-only **`tooLong`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if the value of an `input` or `textarea`, after having + /// been edited by the user, exceeds the maximum code-unit length established + /// by the element's + /// [`maxlength`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/maxlength) + /// attribute. external bool get tooLong; + + /// The read-only **`tooShort`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if the value of an `input`, `button`, `select`, `output`, + /// `fieldset` or `textarea`, after having been edited by the user, is less + /// than the minimum code-unit length established by the element's `minlength` + /// attribute. external bool get tooShort; + + /// The read-only **`rangeUnderflow`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if the value of an `input`, after having been edited by + /// the user, does not conform to the constraints set by the element's + /// [`min`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/min) + /// attribute. + /// + /// If the field is numeric in nature, including the `date`, `month`, `week`, + /// `time`, , `number` and `range` types and a `min` value is set, if the + /// value doesn't conform to the constraints set by the + /// [`min`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/step) + /// value, the `rangeUnderflow` property will be true. + /// + /// Given the following: + /// + /// ```html + /// <input type="number" min="20" max="40" step="2" /> + /// ``` + /// + /// if `value < 20`, `rangeUnderflow` will be true. When `true`, the element + /// matches the and CSS pseudo-classes. external bool get rangeUnderflow; - external bool get rangeOverflow; - external bool get stepMismatch; - external bool get badInput; - external bool get customError; - external bool get valid; -} -/// The **`SubmitEvent`** interface defines the object used to represent an -/// form's [HTMLFormElement.submit_event] event. This event is fired at the -/// `form` when the form's submit action is invoked. -/// -/// --- -/// + /// The read-only **`rangeOverflow`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if the value of an `input`, after having been edited by + /// the user, does not conform to the constraints set by the element's + /// [`max`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/max) + /// attribute. + /// + /// If the field is numeric in nature, including the `date`, `month`, `week`, + /// `time`, , `number` and `range` types and a `max` value is set, if the + /// value doesn't conform to the constraints set by the + /// [`max`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/step) + /// value, the `rangeOverflow` property will be true. + /// + /// Given the following: + /// + /// ```html + /// <input type="number" min="20" max="40" step="2" /> + /// ``` + /// + /// if `value > 40`, `rangeOverflow` will be true. When `true`, the element + /// matches the and CSS pseudo-classes. + external bool get rangeOverflow; + + /// The read-only **`stepMismatch`** property of a + /// **[`ValidityState`](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState)** + /// object indicates if the value of an `input`, after having been edited by + /// the user, does not conform to the constraints set by the element's `step` + /// attribute. + /// + /// If the field is numeric in nature, including the `date`, `month`, `week`, + /// `time`, , `number` and `range` types and the step value is not `any`, if + /// the value don't doesn't conform to the constraints set by the + /// [`step`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/step) + /// and + /// [`min`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/min) + /// values, then `stepMismatch` will be true. If the remainder of the form + /// control's value less the + /// [`min`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/min) + /// value, divided by the + /// [`step`](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/step) + /// value (which defaults to 1 if omitted) is not zero, there is a mismatch. + /// + /// Given the following: + /// + /// ```html + /// <input type="number" min="20" max="40" step="2" /> + /// ``` + /// + /// if `(value - min) % 2 !== 0`, `stepMismatch` will be true. + /// + /// If true, the element matches the and CSS pseudo-classes. + external bool get stepMismatch; + + /// The read-only **`badInput`** property of a + /// [ValidityState](https://developer.mozilla.org/en-US/docs/Web/API/ValidityState) + /// object indicates if the user has provided input that the browser is unable + /// to convert. For example, if you have a number input element whose content + /// is a string. + external bool get badInput; + external bool get customError; + external bool get valid; +} + +/// The **`SubmitEvent`** interface defines the object used to represent an +/// form's [HTMLFormElement.submit_event] event. This event is fired at the +/// `form` when the form's submit action is invoked. +/// +/// --- +/// /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SubmitEvent). extension type SubmitEvent._(JSObject _) implements Event, JSObject { @@ -3494,6 +6074,9 @@ extension type SubmitEvent._(JSObject _) implements Event, JSObject { SubmitEventInit eventInitDict, ]); + /// The read-only **`submitter`** property found on + /// the [SubmitEvent] interface specifies the submit button or other element + /// that was invoked to cause the form to be submitted. external HTMLElement? get submitter; } extension type SubmitEventInit._(JSObject _) implements EventInit, JSObject { @@ -3504,8 +6087,8 @@ extension type SubmitEventInit._(JSObject _) implements EventInit, JSObject { HTMLElement? submitter, }); - external set submitter(HTMLElement? value); external HTMLElement? get submitter; + external set submitter(HTMLElement? value); } /// The **`FormDataEvent`** interface represents a @@ -3530,6 +6113,10 @@ extension type FormDataEvent._(JSObject _) implements Event, JSObject { FormDataEventInit eventInitDict, ); + /// The `formData` read-only property of the [FormDataEvent] + /// interface contains the [FormData] object representing the data contained + /// in + /// the form when the event was fired. external FormData get formData; } extension type FormDataEventInit._(JSObject _) implements EventInit, JSObject { @@ -3540,8 +6127,8 @@ extension type FormDataEventInit._(JSObject _) implements EventInit, JSObject { required FormData formData, }); - external set formData(FormData value); external FormData get formData; + external set formData(FormData value); } /// The **`HTMLDetailsElement`** interface provides special properties (beyond @@ -3557,10 +6144,16 @@ extension type HTMLDetailsElement._(JSObject _) /// Creates an [HTMLDetailsElement] using the tag 'details'. HTMLDetailsElement() : _ = document.createElement('details'); - external set name(String value); external String get name; - external set open(bool value); + external set name(String value); + + /// The **`open`** property of the + /// [HTMLDetailsElement] interface is a boolean value reflecting the + /// [`open`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details#open) + /// HTML attribute, indicating whether the `details`'s contents (not counting + /// the `summary`) is to be shown to the user. external bool get open; + external set open(bool value); } /// The **`HTMLDialogElement`** interface provides methods to manipulate @@ -3595,10 +6188,20 @@ extension type HTMLDialogElement._(JSObject _) /// An optional string may be passed as an argument, updating the /// `returnValue` of the dialog. external void close([String returnValue]); - external set open(bool value); + + /// The **`open`** property of the + /// [HTMLDialogElement] interface is a boolean value reflecting the + /// [`open`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog#open) + /// HTML attribute, indicating whether the `dialog` is + /// available for interaction. external bool get open; - external set returnValue(String value); + external set open(bool value); + + /// The **`returnValue`** property of the [HTMLDialogElement] interface gets + /// or sets the return value for the `dialog`, usually to indicate which + /// button the user pressed to close it. external String get returnValue; + external set returnValue(String value); } /// HTML `script` elements expose the **`HTMLScriptElement`** interface, which @@ -3624,33 +6227,47 @@ extension type HTMLScriptElement._(JSObject _) HTMLScriptElement() : _ = document.createElement('script'); external static bool supports(String type); - external set src(String value); external String get src; - external set type(String value); + external set src(String value); external String get type; - external set noModule(bool value); + external set type(String value); external bool get noModule; - external set async(bool value); + external set noModule(bool value); external bool get async; - external set defer(bool value); + external set async(bool value); external bool get defer; - external set crossOrigin(String? value); + external set defer(bool value); + + /// The **`crossOrigin`** property of the [HTMLScriptElement] interface + /// reflects the settings for the script element. For classic scripts from + /// other [origins](https://developer.mozilla.org/en-US/docs/Glossary/Origin), + /// this controls if full error information will be exposed. For module + /// scripts, it controls the script itself and any script it imports. See + /// [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) + /// for details. external String? get crossOrigin; - external set text(String value); + external set crossOrigin(String? value); external String get text; - external set integrity(String value); + external set text(String value); external String get integrity; - external set referrerPolicy(String value); + external set integrity(String value); + + /// The **`referrerPolicy`** property of the + /// [HTMLScriptElement] interface reflects the HTML + /// [`referrerpolicy`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#referrerpolicy) + /// of the `script` element, which defines how the referrer is set when + /// fetching the script and any scripts it imports. external String get referrerPolicy; + external set referrerPolicy(String value); external DOMTokenList get blocking; - external set fetchPriority(String value); external String get fetchPriority; - external set charset(String value); + external set fetchPriority(String value); external String get charset; - external set event(String value); + external set charset(String value); external String get event; - external set htmlFor(String value); + external set event(String value); external String get htmlFor; + external set htmlFor(String value); } /// The **`HTMLTemplateElement`** interface enables access to the contents of an @@ -3665,11 +6282,14 @@ extension type HTMLTemplateElement._(JSObject _) /// Creates an [HTMLTemplateElement] using the tag 'template'. HTMLTemplateElement() : _ = document.createElement('template'); + /// The **`HTMLTemplateElement.content`** property returns a + /// `<template>` element's template contents (a + /// [DocumentFragment]). external DocumentFragment get content; - external set shadowRootMode(String value); external String get shadowRootMode; - external set shadowRootDelegatesFocus(bool value); + external set shadowRootMode(String value); external bool get shadowRootDelegatesFocus; + external set shadowRootDelegatesFocus(bool value); } /// The **`HTMLSlotElement`** interface of the @@ -3714,14 +6334,19 @@ extension type HTMLSlotElement._(JSObject _) implements HTMLElement, JSObject { /// > [created](https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow) /// > with the `slotAssignment: "manual"` option. external void assign(JSObject nodes); - external set name(String value); + + /// The **`name`** property of the [HTMLSlotElement] + /// interface returns or sets the slot name. A slot is a placeholder inside a + /// web component + /// that users can fill with their own markup. external String get name; + external set name(String value); } extension type AssignedNodesOptions._(JSObject _) implements JSObject { external factory AssignedNodesOptions({bool flatten}); - external set flatten(bool value); external bool get flatten; + external set flatten(bool value); } /// The **`HTMLCanvasElement`** interface provides properties and methods for @@ -3800,10 +6425,34 @@ extension type HTMLCanvasElement._(JSObject _) /// control to an [OffscreenCanvas] object, either on the main thread or on a /// worker. external OffscreenCanvas transferControlToOffscreen(); - external set width(int value); + + /// The **`HTMLCanvasElement.width`** property is a + /// positive `integer` reflecting the + /// [`width`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#width) + /// HTML + /// attribute of the `canvas` element interpreted in CSS pixels. When the + /// attribute is not specified, or if it is set to an invalid value, like a + /// negative, the + /// default value of `300` is used. + /// + /// This is one of the two properties, the other being + /// [HTMLCanvasElement.height], that controls the size of the canvas. external int get width; - external set height(int value); + external set width(int value); + + /// The **`HTMLCanvasElement.height`** property is a + /// positive `integer` reflecting the + /// [`height`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#height) + /// HTML + /// attribute of the `canvas` element interpreted in CSS pixels. When the + /// attribute is not specified, or if it is set to an invalid value, like a + /// negative, the + /// default value of `150` is used. + /// + /// This is one of the two properties, the other being + /// [HTMLCanvasElement.width], that controls the size of the canvas. external int get height; + external set height(int value); } extension type CanvasRenderingContext2DSettings._(JSObject _) implements JSObject { @@ -3814,14 +6463,14 @@ extension type CanvasRenderingContext2DSettings._(JSObject _) bool willReadFrequently, }); - external set alpha(bool value); external bool get alpha; - external set desynchronized(bool value); + external set alpha(bool value); external bool get desynchronized; - external set colorSpace(PredefinedColorSpace value); + external set desynchronized(bool value); external PredefinedColorSpace get colorSpace; - external set willReadFrequently(bool value); + external set colorSpace(PredefinedColorSpace value); external bool get willReadFrequently; + external set willReadFrequently(bool value); } /// The **`CanvasRenderingContext2D`** interface, part of the @@ -4588,59 +7237,344 @@ extension type CanvasRenderingContext2D._(JSObject _) implements JSObject { num endAngle, [ bool counterclockwise, ]); + + /// The **`CanvasRenderingContext2D.canvas`** property, part of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API), + /// is a read-only reference to the + /// [HTMLCanvasElement] object that is associated with a given context. It + /// might be + /// [`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/null) + /// if there is no associated `canvas` element. external HTMLCanvasElement get canvas; - external set globalAlpha(num value); + + /// The + /// **`CanvasRenderingContext2D.globalAlpha`** + /// property of the Canvas 2D API specifies the alpha (transparency) value + /// that is applied + /// to shapes and images before they are drawn onto the canvas. + /// + /// > **Note:** See also the chapter + /// > [Applying styles and color](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors) + /// > in the + /// > [Canvas Tutorial](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial). external num get globalAlpha; - external set globalCompositeOperation(String value); + external set globalAlpha(num value); + + /// The + /// **`CanvasRenderingContext2D.globalCompositeOperation`** + /// property of the Canvas 2D API sets the type of compositing operation to + /// apply when + /// drawing new shapes. + /// + /// See also + /// [Compositing and clipping](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Compositing) + /// in the + /// [Canvas Tutorial](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial). external String get globalCompositeOperation; - external set imageSmoothingEnabled(bool value); + external set globalCompositeOperation(String value); + + /// The **`imageSmoothingEnabled`** property of the + /// [CanvasRenderingContext2D] interface, part of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API), + /// determines whether scaled images + /// are smoothed (`true`, default) or not (`false`). On getting the + /// `imageSmoothingEnabled` property, the last value it was set to is + /// returned. + /// + /// This property is useful for games and other apps that use pixel art. When + /// enlarging + /// images, the default resizing algorithm will blur the pixels. Set this + /// property to + /// `false` to retain the pixels' sharpness. + /// + /// > **Note:** You can adjust the smoothing quality with the + /// > [CanvasRenderingContext2D.imageSmoothingQuality] + /// > property. external bool get imageSmoothingEnabled; - external set imageSmoothingQuality(ImageSmoothingQuality value); + external set imageSmoothingEnabled(bool value); + + /// The **`imageSmoothingQuality`** property of the + /// [CanvasRenderingContext2D] interface, part of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API), + /// lets you set the quality of + /// image smoothing. + /// + /// > **Note:** For this property to have an effect, + /// > [CanvasRenderingContext2D.imageSmoothingEnabled] + /// > must be `true`. external ImageSmoothingQuality get imageSmoothingQuality; - external set strokeStyle(JSAny value); + external set imageSmoothingQuality(ImageSmoothingQuality value); + + /// The **`CanvasRenderingContext2D.strokeStyle`** property of the + /// Canvas 2D API specifies the color, gradient, or pattern to use for the + /// strokes + /// (outlines) around shapes. The default is `#000` (black). + /// + /// > **Note:** For more examples of stroke and fill styles, see + /// > [Applying styles and color](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors) + /// > in the + /// > [Canvas tutorial](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial). external JSAny get strokeStyle; - external set fillStyle(JSAny value); + external set strokeStyle(JSAny value); + + /// The + /// **`CanvasRenderingContext2D.fillStyle`** + /// property of the + /// [Canvas 2D API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) + /// specifies the + /// color, gradient, or pattern to use inside shapes. The default style is + /// `#000` + /// (black). + /// + /// > **Note:** For more examples of fill and stroke styles, see + /// > [Applying styles and color](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors) + /// > in the + /// > [Canvas tutorial](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial). external JSAny get fillStyle; - external set shadowOffsetX(num value); + external set fillStyle(JSAny value); + + /// The + /// **`CanvasRenderingContext2D.shadowOffsetX`** + /// property of the Canvas 2D API specifies the distance that shadows will be + /// offset + /// horizontally. + /// + /// > **Note:** Shadows are only drawn if the + /// > [CanvasRenderingContext2D.shadowColor] property is set to + /// > a non-transparent value. One of the + /// > [CanvasRenderingContext2D.shadowBlur], `shadowOffsetX`, or + /// > [CanvasRenderingContext2D.shadowOffsetY] properties must + /// > be non-zero, as well. external num get shadowOffsetX; - external set shadowOffsetY(num value); + external set shadowOffsetX(num value); + + /// The + /// **`CanvasRenderingContext2D.shadowOffsetY`** + /// property of the Canvas 2D API specifies the distance that shadows will be + /// offset + /// vertically. + /// + /// > **Note:** Shadows are only drawn if the + /// > [CanvasRenderingContext2D.shadowColor] property is set to + /// > a non-transparent value. One of the + /// > [CanvasRenderingContext2D.shadowBlur], + /// > [CanvasRenderingContext2D.shadowOffsetX], or `shadowOffsetY` properties + /// > must be non-zero, as + /// > well. external num get shadowOffsetY; - external set shadowBlur(num value); + external set shadowOffsetY(num value); + + /// The + /// **`CanvasRenderingContext2D.shadowBlur`** + /// property of the Canvas 2D API specifies the amount of blur applied to + /// shadows. The + /// default is `0` (no blur). + /// + /// > **Note:** Shadows are only drawn if the + /// > [CanvasRenderingContext2D.shadowColor] property is set to + /// > a non-transparent value. One of the `shadowBlur`, + /// > [CanvasRenderingContext2D.shadowOffsetX], or + /// > [CanvasRenderingContext2D.shadowOffsetY] properties must + /// > be non-zero, as well. external num get shadowBlur; - external set shadowColor(String value); + external set shadowBlur(num value); + + /// The + /// **`CanvasRenderingContext2D.shadowColor`** + /// property of the Canvas 2D API specifies the color of shadows. + /// + /// Be aware that the shadow's rendered opacity will be affected by the + /// opacity of the + /// [CanvasRenderingContext2D.fillStyle] color when filling, and + /// of the [CanvasRenderingContext2D.strokeStyle] color when + /// stroking. + /// + /// > **Note:** Shadows are only drawn if the `shadowColor` + /// > property is set to a non-transparent value. One of the + /// > [CanvasRenderingContext2D.shadowBlur], + /// > [CanvasRenderingContext2D.shadowOffsetX], or + /// > [CanvasRenderingContext2D.shadowOffsetY] properties must + /// > be non-zero, as well. external String get shadowColor; - external set filter(String value); + external set shadowColor(String value); + + /// The + /// **`CanvasRenderingContext2D.filter`** + /// property of the Canvas 2D API provides filter effects such as blurring and + /// grayscaling. + /// It is similar to the CSS `filter` property and accepts the same values. external String get filter; - external set lineWidth(num value); + external set filter(String value); + + /// The + /// **`CanvasRenderingContext2D.lineWidth`** + /// property of the Canvas 2D API sets the thickness of lines. + /// + /// > **Note:** Lines can be drawn with the + /// > [CanvasRenderingContext2D.stroke], + /// > [CanvasRenderingContext2D.strokeRect], + /// > and [CanvasRenderingContext2D.strokeText] methods. external num get lineWidth; - external set lineCap(CanvasLineCap value); + external set lineWidth(num value); + + /// The + /// **`CanvasRenderingContext2D.lineCap`** + /// property of the Canvas 2D API determines the shape used to draw the end + /// points of lines. + /// + /// > **Note:** Lines can be drawn with the + /// > [CanvasRenderingContext2D.stroke], + /// > [CanvasRenderingContext2D.strokeRect], + /// > and [CanvasRenderingContext2D.strokeText] methods. external CanvasLineCap get lineCap; - external set lineJoin(CanvasLineJoin value); + external set lineCap(CanvasLineCap value); + + /// The + /// **`CanvasRenderingContext2D.lineJoin`** + /// property of the Canvas 2D API determines the shape used to join two line + /// segments where + /// they meet. + /// + /// This property has no effect wherever two connected segments have the same + /// direction, + /// because no joining area will be added in this case. Degenerate segments + /// with a length of + /// zero (i.e., with all endpoints and control points at the exact same + /// position) are also + /// ignored. + /// + /// > **Note:** Lines can be drawn with the + /// > [CanvasRenderingContext2D.stroke], + /// > [CanvasRenderingContext2D.strokeRect], + /// > and [CanvasRenderingContext2D.strokeText] methods. external CanvasLineJoin get lineJoin; - external set miterLimit(num value); + external set lineJoin(CanvasLineJoin value); + + /// The **`CanvasRenderingContext2D.miterLimit`** property of the + /// Canvas 2D API sets the miter limit ratio. + /// + /// > **Note:** For more info about miters, see + /// > [Applying styles and color](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors) + /// > in the + /// > [Canvas tutorial](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial). external num get miterLimit; - external set lineDashOffset(num value); + external set miterLimit(num value); + + /// The + /// **`CanvasRenderingContext2D.lineDashOffset`** + /// property of the Canvas 2D API sets the line dash offset, or "phase." + /// + /// > **Note:** Lines are drawn by calling the + /// > [CanvasRenderingContext2D.stroke] method. external num get lineDashOffset; - external set font(String value); + external set lineDashOffset(num value); + + /// The **`CanvasRenderingContext2D.font`** property of the Canvas 2D API + /// specifies the current text style to use when drawing text. + /// This string uses the same syntax as the + /// [CSS font](https://developer.mozilla.org/en-US/docs/Web/CSS/font) + /// specifier. external String get font; - external set textAlign(CanvasTextAlign value); + external set font(String value); + + /// The + /// **`CanvasRenderingContext2D.textAlign`** + /// property of the Canvas 2D API specifies the current text alignment used + /// when drawing + /// text. + /// + /// The alignment is relative to the `x` value of the + /// [CanvasRenderingContext2D.fillText] method. For example, if + /// `textAlign` is `"center"`, then the text's left edge will be at + /// `x - (textWidth / 2)`. external CanvasTextAlign get textAlign; - external set textBaseline(CanvasTextBaseline value); + external set textAlign(CanvasTextAlign value); + + /// The + /// **`CanvasRenderingContext2D.textBaseline`** + /// property of the Canvas 2D API specifies the current text baseline used + /// when drawing + /// text. external CanvasTextBaseline get textBaseline; - external set direction(CanvasDirection value); + external set textBaseline(CanvasTextBaseline value); + + /// The + /// **`CanvasRenderingContext2D.direction`** + /// property of the Canvas 2D API specifies the current text direction used to + /// draw text. external CanvasDirection get direction; - external set letterSpacing(String value); + external set direction(CanvasDirection value); + + /// The **`CanvasRenderingContext2D.letterSpacing`** property of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) + /// specifies the spacing between letters when drawing text. + /// + /// This corresponds to the CSS + /// [`letter-spacing`](https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing) + /// property. external String get letterSpacing; - external set fontKerning(CanvasFontKerning value); + external set letterSpacing(String value); + + /// The **`CanvasRenderingContext2D.fontKerning`** property of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) + /// specifies how font kerning information is used. + /// + /// Kerning adjusts how adjacent letters are spaced in a proportional font, + /// allowing them to edge into each other's visual area if there is space + /// available. + /// For example, in well-kerned fonts, the characters `AV`, `Ta` and `We` nest + /// together and make character spacing more uniform and pleasant to read than + /// the equivalent text without kerning. + /// + /// The property corresponds to the + /// [`font-kerning`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-kerning) + /// CSS property. external CanvasFontKerning get fontKerning; - external set fontStretch(CanvasFontStretch value); + external set fontKerning(CanvasFontKerning value); + + /// The **`CanvasRenderingContext2D.fontStretch`** property of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) + /// specifies how the font may be expanded or condensed when drawing text. + /// + /// The property corresponds to the + /// [`font-stretch`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-stretch) + /// CSS property when used with keywords (percentage values are not + /// supported). external CanvasFontStretch get fontStretch; - external set fontVariantCaps(CanvasFontVariantCaps value); + external set fontStretch(CanvasFontStretch value); + + /// The **`CanvasRenderingContext2D.fontVariantCaps`** property of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) + /// specifies an alternative capitalization of the rendered text. + /// + /// This corresponds to the CSS + /// [`font-variant-caps`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant-caps) + /// property. external CanvasFontVariantCaps get fontVariantCaps; - external set textRendering(CanvasTextRendering value); + external set fontVariantCaps(CanvasFontVariantCaps value); + + /// The **`CanvasRenderingContext2D.textRendering`** property of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) + /// provides information to the rendering engine about what to optimize for + /// when rendering text. + /// + /// The values correspond to the SVG + /// [`text-rendering`](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/text-rendering) + /// attribute (and CSS + /// [`text-rendering`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-rendering) + /// property). external CanvasTextRendering get textRendering; - external set wordSpacing(String value); + external set textRendering(CanvasTextRendering value); + + /// The **`CanvasRenderingContext2D.wordSpacing`** property of the + /// [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) + /// specifies the spacing between words when drawing text. + /// + /// This corresponds to the CSS + /// [`word-spacing`](https://developer.mozilla.org/en-US/docs/Web/CSS/word-spacing) + /// property. external String get wordSpacing; + external set wordSpacing(String value); } /// The **`CanvasGradient`** interface represents an @@ -4693,24 +7627,86 @@ extension type CanvasPattern._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics). extension type TextMetrics._(JSObject _) implements JSObject { + /// The read-only **`width`** property of the [TextMetrics] interface contains + /// the text's advance width (the width of that inline box) in CSS pixels. external num get width; + + /// The read-only `actualBoundingBoxLeft` property of the [TextMetrics] + /// interface is a `double` giving the distance parallel to the baseline from + /// the alignment point given by the [CanvasRenderingContext2D.textAlign] + /// property to the left side of the bounding rectangle of the given text, in + /// CSS pixels; positive numbers indicating a distance going left from the + /// given alignment point. external num get actualBoundingBoxLeft; + + /// The read-only `actualBoundingBoxRight` property of the [TextMetrics] + /// interface is a `double` giving the distance parallel to the baseline from + /// the alignment point given by the [CanvasRenderingContext2D.textAlign] + /// property to the right side of the bounding rectangle of the given text, in + /// CSS pixels. external num get actualBoundingBoxRight; + + /// The read-only `fontBoundingBoxAscent` property of the [TextMetrics] + /// interface returns the distance from the horizontal line indicated by the + /// [CanvasRenderingContext2D.textBaseline] attribute, to the top of the + /// highest bounding rectangle of all the fonts used to render the text, in + /// CSS pixels. external num get fontBoundingBoxAscent; + + /// The read-only `fontBoundingBoxDescent` property of the [TextMetrics] + /// interface returns the distance from the horizontal line indicated by the + /// [CanvasRenderingContext2D.textBaseline] attribute to the bottom of the + /// bounding rectangle of all the fonts used to render the text, in CSS + /// pixels. external num get fontBoundingBoxDescent; + + /// The read-only **`actualBoundingBoxAscent`** property of the [TextMetrics] + /// interface is a `double` giving the distance from the horizontal line + /// indicated by the [CanvasRenderingContext2D.textBaseline] attribute to the + /// top of the bounding rectangle used to render the text, in CSS pixels. external num get actualBoundingBoxAscent; + + /// The read-only `actualBoundingBoxDescent` property of the [TextMetrics] + /// interface is a `double` giving the distance from the horizontal line + /// indicated by the [CanvasRenderingContext2D.textBaseline] attribute to the + /// bottom of the bounding rectangle used to render the text, in CSS pixels. external num get actualBoundingBoxDescent; + + /// The read-only `emHeightAscent` property of the [TextMetrics] interface + /// returns the distance from the horizontal line indicated by the + /// [CanvasRenderingContext2D.textBaseline] property to the top of the _em_ + /// square in the line box, in CSS pixels. external num get emHeightAscent; + + /// The read-only `emHeightDescent` property of the [TextMetrics] interface + /// returns the distance from the horizontal line indicated by the + /// [CanvasRenderingContext2D.textBaseline] property to the bottom of the _em_ + /// square in the line box, in CSS pixels. external num get emHeightDescent; + + /// The read-only `hangingBaseline` property of the [TextMetrics] interface is + /// a `double` giving the distance from the horizontal line indicated by the + /// [CanvasRenderingContext2D.textBaseline] property to the hanging baseline + /// of the line box, in CSS pixels. external num get hangingBaseline; + + /// The read-only `alphabeticBaseline` property of the [TextMetrics] interface + /// is a `double` giving the distance from the horizontal line indicated by + /// the [CanvasRenderingContext2D.textBaseline] property to the alphabetic + /// baseline of the line box, in CSS pixels. external num get alphabeticBaseline; + + /// The read-only `ideographicBaseline` property of the [TextMetrics] + /// interface is a `double` giving the distance from the horizontal line + /// indicated by the [CanvasRenderingContext2D.textBaseline] property to the + /// ideographic baseline of the line box, in CSS pixels. external num get ideographicBaseline; } extension type ImageDataSettings._(JSObject _) implements JSObject { external factory ImageDataSettings({PredefinedColorSpace colorSpace}); - external set colorSpace(PredefinedColorSpace value); external PredefinedColorSpace get colorSpace; + external set colorSpace(PredefinedColorSpace value); } /// The **`ImageData`** interface represents the underlying pixel data of an @@ -4734,9 +7730,30 @@ extension type ImageData._(JSObject _) implements JSObject { ImageDataSettings settings, ]); + /// The readonly **`ImageData.width`** property returns the number + /// of pixels per row in the [ImageData] object. external int get width; + + /// The readonly **`ImageData.height`** property returns the number + /// of rows in the [ImageData] object. external int get height; + + /// The readonly **`ImageData.data`** property returns a + /// `Uint8ClampedArray` that contains the [ImageData] object's + /// pixel data. Data is stored as a one-dimensional array in the RGBA order, + /// with integer + /// values between `0` and `255` (inclusive). external JSUint8ClampedArray get data; + + /// The read-only **`ImageData.colorSpace`** property is a string indicating + /// the color space of the image data. + /// + /// The color space can be set during `ImageData` initialization using either + /// the + /// [`ImageData()`](https://developer.mozilla.org/en-US/docs/Web/API/ImageData/ImageData) + /// constructor or the + /// [`createImageData()`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/createImageData) + /// method. external PredefinedColorSpace get colorSpace; } @@ -4856,8 +7873,8 @@ extension type ImageBitmapRenderingContextSettings._(JSObject _) implements JSObject { external factory ImageBitmapRenderingContextSettings({bool alpha}); - external set alpha(bool value); external bool get alpha; + external set alpha(bool value); } extension type ImageEncodeOptions._(JSObject _) implements JSObject { external factory ImageEncodeOptions({ @@ -4865,10 +7882,10 @@ extension type ImageEncodeOptions._(JSObject _) implements JSObject { num quality, }); - external set type(String value); external String get type; - external set quality(num value); + external set type(String value); external num get quality; + external set quality(num value); } /// When using the `canvas` element or the @@ -4926,14 +7943,20 @@ extension type OffscreenCanvas._(JSObject _) implements EventTarget, JSObject { /// The created image will have a resolution of 96dpi for file formats that /// support encoding resolution metadata. external JSPromise<Blob> convertToBlob([ImageEncodeOptions options]); - external set width(int value); + + /// The **`width`** property returns and sets the width of an + /// [OffscreenCanvas] object. external int get width; - external set height(int value); + external set width(int value); + + /// The **`height`** property returns and sets the height of an + /// [OffscreenCanvas] object. external int get height; - external set oncontextlost(EventHandler value); + external set height(int value); external EventHandler get oncontextlost; - external set oncontextrestored(EventHandler value); + external set oncontextlost(EventHandler value); external EventHandler get oncontextrestored; + external set oncontextrestored(EventHandler value); } /// The **`OffscreenCanvasRenderingContext2D`** interface is a @@ -5167,58 +8190,58 @@ extension type OffscreenCanvasRenderingContext2D._(JSObject _) bool counterclockwise, ]); external OffscreenCanvas get canvas; - external set globalAlpha(num value); external num get globalAlpha; - external set globalCompositeOperation(String value); + external set globalAlpha(num value); external String get globalCompositeOperation; - external set imageSmoothingEnabled(bool value); + external set globalCompositeOperation(String value); external bool get imageSmoothingEnabled; - external set imageSmoothingQuality(ImageSmoothingQuality value); + external set imageSmoothingEnabled(bool value); external ImageSmoothingQuality get imageSmoothingQuality; - external set strokeStyle(JSAny value); + external set imageSmoothingQuality(ImageSmoothingQuality value); external JSAny get strokeStyle; - external set fillStyle(JSAny value); + external set strokeStyle(JSAny value); external JSAny get fillStyle; - external set shadowOffsetX(num value); + external set fillStyle(JSAny value); external num get shadowOffsetX; - external set shadowOffsetY(num value); + external set shadowOffsetX(num value); external num get shadowOffsetY; - external set shadowBlur(num value); + external set shadowOffsetY(num value); external num get shadowBlur; - external set shadowColor(String value); + external set shadowBlur(num value); external String get shadowColor; - external set filter(String value); + external set shadowColor(String value); external String get filter; - external set lineWidth(num value); + external set filter(String value); external num get lineWidth; - external set lineCap(CanvasLineCap value); + external set lineWidth(num value); external CanvasLineCap get lineCap; - external set lineJoin(CanvasLineJoin value); + external set lineCap(CanvasLineCap value); external CanvasLineJoin get lineJoin; - external set miterLimit(num value); + external set lineJoin(CanvasLineJoin value); external num get miterLimit; - external set lineDashOffset(num value); + external set miterLimit(num value); external num get lineDashOffset; - external set font(String value); + external set lineDashOffset(num value); external String get font; - external set textAlign(CanvasTextAlign value); + external set font(String value); external CanvasTextAlign get textAlign; - external set textBaseline(CanvasTextBaseline value); + external set textAlign(CanvasTextAlign value); external CanvasTextBaseline get textBaseline; - external set direction(CanvasDirection value); + external set textBaseline(CanvasTextBaseline value); external CanvasDirection get direction; - external set letterSpacing(String value); + external set direction(CanvasDirection value); external String get letterSpacing; - external set fontKerning(CanvasFontKerning value); + external set letterSpacing(String value); external CanvasFontKerning get fontKerning; - external set fontStretch(CanvasFontStretch value); + external set fontKerning(CanvasFontKerning value); external CanvasFontStretch get fontStretch; - external set fontVariantCaps(CanvasFontVariantCaps value); + external set fontStretch(CanvasFontStretch value); external CanvasFontVariantCaps get fontVariantCaps; - external set textRendering(CanvasTextRendering value); + external set fontVariantCaps(CanvasFontVariantCaps value); external CanvasTextRendering get textRendering; - external set wordSpacing(String value); + external set textRendering(CanvasTextRendering value); external String get wordSpacing; + external set wordSpacing(String value); } /// The **`CustomElementRegistry`** interface provides methods for registering @@ -5263,10 +8286,10 @@ extension type CustomElementRegistry._(JSObject _) implements JSObject { extension type ElementDefinitionOptions._(JSObject _) implements JSObject { external factory ElementDefinitionOptions({String extends_}); - @JS('extends') - external set extends_(String value); @JS('extends') external String get extends_; + @JS('extends') + external set extends_(String value); } /// The **`ElementInternals`** interface of the @@ -5322,12 +8345,43 @@ extension type ElementInternals._(JSObject _) implements JSObject { /// however it additionally sends the value of /// [ElementInternals.validationMessage] to the user agent for display. external bool reportValidity(); + + /// The **`shadowRoot`** read-only property of the [ElementInternals] + /// interface returns the [ShadowRoot] for this element. external ShadowRoot? get shadowRoot; + + /// The **`form`** read-only property of the [ElementInternals] interface + /// returns the [HTMLFormElement] associated with this element. external HTMLFormElement? get form; + + /// The **`willValidate`** read-only property of the [ElementInternals] + /// interface returns `true` if the element is a submittable element that is a + /// candidate for + /// [constraint validation](https://developer.mozilla.org/en-US/docs/Web/HTML/Constraint_validation). + /// + /// Elements that are barred from being candidates for constraint validation + /// include those that have the attributes: `disabled`, `hidden` or + /// `readonly`, input elements of `type=button` or `type=reset`, or any + /// element that is a `datalist` element or has a `<datalist>` element + /// ancestor. external bool get willValidate; + + /// The **`validity`** read-only property of the [ElementInternals] interface + /// returns a [ValidityState] object which represents the different validity + /// states the element can be in, with respect to constraint validation. external ValidityState get validity; + + /// The **`validationMessage`** read-only property of the [ElementInternals] + /// interface returns the validation message for the element. external String get validationMessage; + + /// The **`labels`** read-only property of the [ElementInternals] interface + /// returns the labels associated with the element. external NodeList get labels; + + /// The **`states`** read-only property of the [ElementInternals] interface + /// returns a [CustomStateSet] representing the possible states of the custom + /// element. external CustomStateSet get states; } extension type ValidityStateFlags._(JSObject _) implements JSObject { @@ -5344,26 +8398,26 @@ extension type ValidityStateFlags._(JSObject _) implements JSObject { bool customError, }); - external set valueMissing(bool value); external bool get valueMissing; - external set typeMismatch(bool value); + external set valueMissing(bool value); external bool get typeMismatch; - external set patternMismatch(bool value); + external set typeMismatch(bool value); external bool get patternMismatch; - external set tooLong(bool value); + external set patternMismatch(bool value); external bool get tooLong; - external set tooShort(bool value); + external set tooLong(bool value); external bool get tooShort; - external set rangeUnderflow(bool value); + external set tooShort(bool value); external bool get rangeUnderflow; - external set rangeOverflow(bool value); + external set rangeUnderflow(bool value); external bool get rangeOverflow; - external set stepMismatch(bool value); + external set rangeOverflow(bool value); external bool get stepMismatch; - external set badInput(bool value); + external set stepMismatch(bool value); external bool get badInput; - external set customError(bool value); + external set badInput(bool value); external bool get customError; + external set customError(bool value); } /// The **`CustomStateSet`** interface of the @@ -5426,7 +8480,12 @@ extension type VisibilityStateEntry._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/UserActivation). extension type UserActivation._(JSObject _) implements JSObject { + /// The read-only **`hasBeenActive`** property of the [UserActivation] + /// interface indicates whether the current window has . external bool get hasBeenActive; + + /// The read-only **`isActive`** property of the [UserActivation] interface + /// indicates whether the current window has . external bool get isActive; } @@ -5455,7 +8514,12 @@ extension type ToggleEvent._(JSObject _) implements Event, JSObject { ToggleEventInit eventInitDict, ]); + /// The **`oldState`** read-only property of the [ToggleEvent] interface is a + /// string representing the state the element is transitioning from. external String get oldState; + + /// The **`newState`** read-only property of the [ToggleEvent] interface is a + /// string representing the state the element is transitioning to. external String get newState; } extension type ToggleEventInit._(JSObject _) implements EventInit, JSObject { @@ -5467,10 +8531,10 @@ extension type ToggleEventInit._(JSObject _) implements EventInit, JSObject { String newState, }); - external set oldState(String value); external String get oldState; - external set newState(String value); + external set oldState(String value); external String get newState; + external set newState(String value); } extension type FocusOptions._(JSObject _) implements JSObject { external factory FocusOptions({ @@ -5478,10 +8542,10 @@ extension type FocusOptions._(JSObject _) implements JSObject { bool focusVisible, }); - external set preventScroll(bool value); external bool get preventScroll; - external set focusVisible(bool value); + external set preventScroll(bool value); external bool get focusVisible; + external set focusVisible(bool value); } extension type CloseWatcher._(JSObject _) implements EventTarget, JSObject { external factory CloseWatcher([CloseWatcherOptions options]); @@ -5489,16 +8553,16 @@ extension type CloseWatcher._(JSObject _) implements EventTarget, JSObject { external void requestClose(); external void close(); external void destroy(); - external set oncancel(EventHandler value); external EventHandler get oncancel; - external set onclose(EventHandler value); + external set oncancel(EventHandler value); external EventHandler get onclose; + external set onclose(EventHandler value); } extension type CloseWatcherOptions._(JSObject _) implements JSObject { external factory CloseWatcherOptions({AbortSignal signal}); - external set signal(AbortSignal value); external AbortSignal get signal; + external set signal(AbortSignal value); } /// The **`DataTransfer`** object is used to hold the data that is being dragged @@ -5586,12 +8650,102 @@ extension type DataTransfer._(JSObject _) implements JSObject { /// > because that's the only time the drag operation's data store is /// > writable. external void clearData([String format]); - external set dropEffect(String value); + + /// The **`DataTransfer.dropEffect`** property controls the + /// feedback (typically visual) the user is given during a drag and drop + /// operation. It will + /// affect which cursor is displayed while dragging. For example, when the + /// user hovers over + /// a target drop element, the browser's cursor may indicate which type of + /// operation will + /// occur. + /// + /// When the [DataTransfer] object is created, `dropEffect` is set + /// to a string value. On getting, it returns its current value. On setting, + /// if the new + /// value is one of the values listed below, then the property's current value + /// will be set + /// to the new value and other values will be ignored. + /// + /// For the [HTMLElement.dragenter_event] and [HTMLElement.dragover_event] + /// events, + /// `dropEffect` will be initialized based on what action the user is + /// requesting. + /// How this is determined is platform specific, but typically the user can + /// press modifier + /// keys such as the alt key to adjust the desired action. Within event + /// handlers for + /// [HTMLElement.dragenter_event] and [HTMLElement.dragover_event] events, + /// `dropEffect` should + /// be modified if a different action is desired than the action that the user + /// is + /// requesting. + /// + /// For the [HTMLElement.drop_event] and [HTMLElement.dragend_event] events, + /// `dropEffect` will + /// be set to the action that was desired, which will be the value + /// `dropEffect` + /// had after the last [HTMLElement.dragenter_event] or + /// [HTMLElement.dragover_event] event. In a + /// [HTMLElement.dragend_event] event, for instance, if the desired dropEffect + /// is "move", then the + /// data being dragged should be removed from the source. external String get dropEffect; - external set effectAllowed(String value); + external set dropEffect(String value); + + /// The **`DataTransfer.effectAllowed`** property specifies the + /// effect that is allowed for a drag operation. The _copy_ operation is used + /// to + /// indicate that the data being dragged will be copied from its present + /// location to the + /// drop location. The _move_ operation is used to indicate that the data + /// being + /// dragged will be moved, and the _link_ operation is used to indicate that + /// some + /// form of relationship or connection will be created between the source and + /// drop + /// locations. + /// + /// This property should be set in the [HTMLElement.dragstart_event] event to + /// set the desired drag + /// effect for the drag source. Within the [HTMLElement.dragenter_event] and + /// [HTMLElement.dragover_event] + /// event handlers, this property will be set to whatever value was assigned + /// during the + /// [HTMLElement.dragstart_event] event, thus `effectAllowed` may be used to + /// determine + /// which effect is permitted. + /// + /// Assigning a value to `effectAllowed` in events other than + /// [HTMLElement.dragstart_event] has no effect. external String get effectAllowed; + external set effectAllowed(String value); + + /// The read-only [DataTransfer] property `items` property is a + /// [DataTransferItemList] of the [DataTransferItem] in a drag operation. The + /// list includes one item for each item in the operation and if the operation + /// had no items, the list is empty. external DataTransferItemList get items; + + /// The **`DataTransfer.types`** read-only property returns the available + /// types + /// that exist in the [DataTransfer.items]. external JSArray<JSString> get types; + + /// The **`files`** read-only property of + /// [`DataTransfer`](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) + /// objects is a [FileList] in the drag operation. If the operation includes + /// no files, the list is empty. + /// + /// This feature can be used to drag files from a user's desktop to the + /// browser. + /// + /// > **Note:** The `files` property of + /// > [`DataTransfer`](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) + /// > objects can only be accessed from within the `drop` event. For all other + /// > events, the `files` property will be empty — because its underlying data + /// > store will be in a + /// > [protected mode](https://html.spec.whatwg.org/multipage/dnd.html#the-drag-data-store). external FileList get files; } @@ -5640,6 +8794,10 @@ extension type DataTransferItemList._(JSObject _) implements JSObject { /// in read-only mode, and this method silently does nothing. No exception is /// thrown. external void clear(); + + /// The read-only **`length`** property of the + /// [DataTransferItemList] interface returns the number of items currently in + /// the drag item list. external int get length; } @@ -5676,7 +8834,18 @@ extension type DataTransferItem._(JSObject _) implements JSObject { /// returns the drag data item's [File] object. /// If the item is not a file, this method returns `null`. external File? getAsFile(); + + /// The read-only **`DataTransferItem.kind`** property returns the kind–a + /// string or a file–of the [DataTransferItem] object representing the _drag + /// data item_. external String get kind; + + /// The read-only **`DataTransferItem.type`** property returns the type + /// (format) of the [DataTransferItem] object representing the drag data item. + /// The `type` is a Unicode string generally given by a MIME type, although a + /// MIME type is not required. + /// + /// Some example types are: `text/plain` and `text/html`. external String get type; } @@ -5698,6 +8867,8 @@ extension type DragEvent._(JSObject _) implements MouseEvent, JSObject { DragEventInit eventInitDict, ]); + /// The **`DragEvent.dataTransfer`** read-only property holds the drag + /// operation's data (as a [DataTransfer] object). external DataTransfer? get dataTransfer; } extension type DragEventInit._(JSObject _) implements MouseEventInit, JSObject { @@ -5732,8 +8903,8 @@ extension type DragEventInit._(JSObject _) implements MouseEventInit, JSObject { DataTransfer? dataTransfer, }); - external set dataTransfer(DataTransfer? value); external DataTransfer? get dataTransfer; + external set dataTransfer(DataTransfer? value); } @JS() external Window get window; @@ -6049,296 +9220,673 @@ extension type Window._(JSObject _) implements EventTarget, JSObject { /// animation frame request previously scheduled through a call to /// [window.requestAnimationFrame]. external void cancelAnimationFrame(int handle); + + /// The [Window] property **`screen`** returns a + /// reference to the screen object associated with the window. The `screen` + /// object, implementing the [Screen] interface, is a special object for + /// inspecting properties of the screen on which the current window is being + /// rendered. external Screen get screen; + + /// The **`visualViewport`** read-only property of the [Window] interface + /// returns a [VisualViewport] object representing the visual viewport for a + /// given window, or `null` if current document is not fully active. external VisualViewport? get visualViewport; + + /// The read-only [Window] property **`innerWidth`** returns the interior + /// width of the window in pixels (that is, the width of the window's ). That + /// includes the width of the vertical scroll bar, if one is present. + /// + /// Similarly, the interior height of the window (that is, the height of the + /// layout viewport) can be obtained using the [Window.innerHeight] property. + /// That measurement also accounts for the height of the horizontal scroll + /// bar, if it is visible. external int get innerWidth; + + /// The read-only **`innerHeight`** property of the + /// [Window] interface returns the interior height of the window in pixels, + /// including the height of the horizontal scroll bar, if present. + /// + /// The value of `innerHeight` is taken from the height of the window's + /// . The width can be obtained using the + /// [Window.innerWidth] property. external int get innerHeight; + + /// The read-only **`scrollX`** property of the + /// [Window] interface returns the number of pixels that the document is + /// currently scrolled horizontally. This value is subpixel precise in modern + /// browsers, + /// meaning that it isn't necessarily a whole number. You can get the number + /// of pixels the + /// document is scrolled vertically from the [Window.scrollY] + /// property. external num get scrollX; external num get pageXOffset; + + /// The read-only **`scrollY`** property + /// of the [Window] interface returns the number of pixels that the document + /// is currently scrolled vertically. + /// + /// This value is subpixel precise in modern + /// browsers, meaning that it isn't necessarily a whole number. You can get + /// the number of + /// pixels the document is scrolled horizontally from the [Window.scrollX] + /// property. external num get scrollY; external num get pageYOffset; + + /// The **`Window.screenX`** read-only property returns the + /// horizontal distance, in CSS pixels, of the left border of the user's + /// browser viewport to + /// the left side of the screen. + /// + /// > **Note:** An alias of `screenX` was implemented across modern + /// > browsers in more recent times — [Window.screenLeft]. This was originally + /// > supported only in IE but was introduced everywhere due to popularity. external int get screenX; + + /// The **`Window.screenLeft`** read-only property returns the + /// horizontal distance, in CSS pixels, from the left border of the user's + /// browser viewport + /// to the left side of the screen. + /// + /// > **Note:** `screenLeft` is an alias of the older + /// > [Window.screenX] property. `screenLeft` was originally + /// > supported only in IE but was introduced everywhere due to popularity. external int get screenLeft; + + /// The **`Window.screenY`** read-only property returns the vertical distance, + /// in CSS pixels, of the top border of the user's browser viewport to the top + /// edge of the screen. + /// + /// > **Note:** An alias of `screenY` was implemented across modern browsers + /// > in more recent times — [Window.screenTop]. This was originally supported + /// > only in IE but was introduced everywhere due to popularity. external int get screenY; + + /// The **`Window.screenTop`** read-only property returns the + /// vertical distance, in CSS pixels, from the top border of the user's + /// browser viewport to + /// the top side of the screen. + /// + /// > **Note:** `screenTop` is an alias of the older + /// > [Window.screenY] property. `screenTop` was originally + /// > supported only in IE but was introduced everywhere due to popularity. external int get screenTop; + + /// **`Window.outerWidth`** read-only property returns the width of the + /// outside of the browser window. It represents the width of the whole + /// browser window including sidebar (if expanded), window chrome and window + /// resizing borders/handles. external int get outerWidth; + + /// The **`Window.outerHeight`** read-only property returns the height in + /// pixels of the whole browser window, including any sidebar, window chrome, + /// and window-resizing borders/handles. external int get outerHeight; + + /// The **`devicePixelRatio`** of + /// [Window] interface returns the ratio of the resolution in _physical + /// pixels_ to the resolution in _CSS pixels_ for the current display + /// device. + /// + /// This value could also be interpreted as the ratio of pixel sizes: the + /// size of one _CSS pixel_ to the size of one _physical pixel_. In simpler + /// terms, this tells the browser how many of the screen's actual pixels + /// should be used to + /// draw a single CSS pixel. + /// + /// This is useful when dealing with the difference between rendering on a + /// standard display + /// versus a HiDPI or Retina display, which use more screen pixels to draw the + /// same objects, + /// resulting in a sharper image. + /// + /// You can use [Window.matchMedia] to check if the + /// value of `devicePixelRatio` changes (which can happen, for example, if the + /// user drags the window to a display with a different pixel density). See + /// [the example below](#monitoring_screen_resolution_or_zoom_level_changes). external num get devicePixelRatio; + + /// The read-only [Window] property **`event`** returns the [Event] which is + /// currently being handled by the site's code. Outside the context of an + /// event handler, the value is always `undefined`. + /// + /// You _should_ avoid using this property in new code, and should instead use + /// the [Event] passed into the event handler function. This property is not + /// universally supported and even when supported introduces potential + /// fragility to your code. + /// + /// > **Note:** This property can be fragile, in that there may be situations + /// > in which the returned `Event` is not the expected value. In addition, + /// > `Window.event` is not accurate for events dispatched within . external Event? get event; + + /// The **`window`** property of a [Window] object points to the window object + /// itself. + /// + /// Thus, the following expressions all return the same window object: + /// + /// ```js + /// window.window; + /// window.window.window; + /// window.window.window.window; + /// // … + /// ``` + /// + /// In web pages, the window object is also a _global object_. This means: + /// + /// 1. Global variables of your script are, in fact, properties of `window`: + /// + /// ```js + /// var global = { data: 0 }; + /// alert(global === window.global); // displays "true" + /// ``` + /// + /// 2. You can access the built-in properties of the window object without + /// having to prefix them with `window.`: + /// + /// ```js + /// setTimeout("alert('Hi!')", 50); // equivalent to using + /// window.setTimeout(). + /// alert(window === window.window); // displays "true" + /// ``` + /// + /// The point of having the `window` property refer to the object itself, was + /// likely to make it easy to refer to the global object. Otherwise, you'd + /// have to do a manual `let window = this;` assignment at the top of your + /// script. + /// + /// Another reason, is that without this property you wouldn't be able to + /// write, for example, "". You'd have to use `open('https://google.com/')` + /// instead. + /// + /// Yet another reason to use this property, is for libraries which wish to + /// offer OOP-versions, and non-OOP versions (especially JavaScript modules). + /// For example, if we refer to "this.window\.location.href", a + /// [JavaScript module](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) + /// could define a property called "window" inside of a class it defined + /// (since no global "window" variable exists for it by default) which could + /// be created after passing in a window object to the module class' + /// constructor. Thus, "this.window" inside of its functions would refer to + /// that window object. In the non-namespaced version, "this.window" would + /// refer back to "window", and also be able to readily get the document + /// location. Another advantage, is that the objects of such a class (even if + /// the class were defined outside of a module) could change their reference + /// to the window at will, they would not be able to do this if they had + /// hard-coded a reference to "window". The default in the class could still + /// be set as the current window object. external Window get window; + + /// The **`Window.self`** read-only property returns the window itself, as a . + /// It can be used with dot notation on a `window` object (that is, + /// `window.self`) or standalone (`self`). The advantage of the standalone + /// notation is that a similar notation exists for non-window contexts, such + /// as in [Worker]. By using `self`, you can refer to the global scope in a + /// way that will work not only in a window context (`self` will resolve to + /// `window.self`) but also in a worker context (`self` will then resolve to + /// [WorkerGlobalScope.self]). external Window get self; + + /// **`window.document`** returns a reference to the + /// [document](https://developer.mozilla.org/en-US/docs/Web/API/Document) + /// contained in the window. external Document get document; - external set name(String value); + + /// The `Window.name` property + /// gets/sets the name of the window's browsing context. external String get name; + external set name(String value); + + /// The **`Window.location`** read-only property returns a [Location] object + /// with information about the current location of the document. + /// + /// Though `Window.location` is a _read-only_ `Location` object, you can also + /// assign a string to it. + /// This means that you can work with `location` as if it were a string in + /// most cases: + /// `location = 'http://www.example.com'` is a synonym of `location.href = + /// 'http://www.example.com'`. + /// + /// See [Location] for all available properties. external Location get location; + + /// The `Window.history` read-only property returns a reference to the + /// [History] object, which provides an interface for manipulating the browser + /// _session history_ (pages visited in the tab or frame that the current page + /// is loaded in). + /// + /// See + /// [Manipulating the browser history](https://developer.mozilla.org/en-US/docs/Web/API/History_API) + /// for examples and details. In particular, that article explains security + /// features of the [History.pushState] and [History.replaceState] methods + /// that you should be aware of before using them. external History get history; + + /// The **`navigation`** read-only property of the [Window] interface returns + /// the current `window`'s associated [Navigation] object. + /// + /// This is the entry point for the [Navigation API]. external Navigation get navigation; + + /// The **`customElements`** read-only property of the [Window] interface + /// returns a reference to the [CustomElementRegistry] object, which can be + /// used to register new + /// [custom elements](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements) + /// and get information about previously registered custom elements. external CustomElementRegistry get customElements; + + /// Returns the `locationbar` object. + /// + /// This is one of a group of `Window` properties that contain a boolean + /// `visible` property, that used to represent whether or not a particular + /// part of a web browser's user interface was visible. + /// + /// For privacy and interoperability reasons, the value of the `visible` + /// property is now `false` if this `Window` is a popup, and `true` otherwise. external BarProp get locationbar; + + /// Returns the `menubar` object. + /// + /// This is one of a group of `Window` properties that contain a boolean + /// `visible` property, that used to represent whether or not a particular + /// part of a web browser's user interface was visible. + /// + /// For privacy and interoperability reasons, the value of the `visible` + /// property is now `false` if this `Window` is a popup, and `true` otherwise. external BarProp get menubar; + + /// Returns the `personalbar` object. + /// + /// This is one of a group of `Window` properties that contain a boolean + /// `visible` property, that used to represent whether or not a particular + /// part of a web browser's user interface was visible. + /// + /// For privacy and interoperability reasons, the value of the `visible` + /// property is now `false` if this `Window` is a popup, and `true` otherwise. external BarProp get personalbar; + + /// Returns the `scrollbars` object. + /// + /// This is one of a group of `Window` properties that contain a boolean + /// `visible` property, that used to represent whether or not a particular + /// part of a web browser's user interface was visible. + /// + /// For privacy and interoperability reasons, the value of the `visible` + /// property is now `false` if this `Window` is a popup, and `true` otherwise. external BarProp get scrollbars; + + /// Returns the `statusbar` object. + /// + /// This is one of a group of `Window` properties that contain a boolean + /// `visible` property, that used to represent whether or not a particular + /// part of a web browser's user interface was visible. + /// + /// For privacy and interoperability reasons, the value of the `visible` + /// property is now `false` if this `Window` is a popup, and `true` otherwise. external BarProp get statusbar; + + /// Returns the `toolbar` object. + /// + /// This is one of a group of `Window` properties that contain a boolean + /// `visible` property, that used to represent whether or not a particular + /// part of a web browser's user interface was visible. + /// + /// For privacy and interoperability reasons, the value of the `visible` + /// property is now `false` if this `Window` is a popup, and `true` otherwise. external BarProp get toolbar; - external set status(String value); + + /// The **`status`** property of the + /// [Window] interface was originally intended to set the text in the status + /// bar at the bottom of the browser window. However, the HTML standard now + /// requires + /// setting `window.status` to have no effect on the text displayed in the + /// status bar. external String get status; + external set status(String value); + + /// The **`Window.closed`** read-only property indicates whether + /// the referenced window is closed or not. external bool get closed; + + /// Returns the window itself, which is an array-like object, listing the + /// direct sub-frames + /// of the current window. external Window get frames; + + /// Returns the number of frames (either `frame` or + /// `iframe` elements) in the window. external int get length; + + /// Returns a reference to the topmost window in the window hierarchy. external Window? get top; - external set opener(JSAny? value); + + /// The [Window] interface's + /// **`opener`** property returns a reference to the window that + /// opened the window, either with [Window.open], or by navigating + /// a link with a + /// [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target) + /// attribute. + /// + /// In other words, if window `A` opens window `B`, + /// `B.opener` returns `A`. external JSAny? get opener; + external set opener(JSAny? value); + + /// The **`Window.parent`** property is a reference to the parent + /// of the current window or subframe. + /// + /// If a window does not have a parent, its `parent` property is a reference + /// to + /// itself. + /// + /// When a window is loaded in an `iframe`, `object`, or + /// `frame`, its parent is the window with the element embedding the + /// window. external Window? get parent; + + /// The **`Window.frameElement`** property + /// returns the element (such as `iframe` or `object`) + /// in which the window is embedded. + /// + /// > **Note:** Despite this property's name, it works for documents embedded + /// > within any embedding point, including `object`, + /// > `iframe`, or `embed`. external Element? get frameElement; + + /// The **`Window.navigator`** read-only property returns a + /// reference to the [Navigator] object, which has methods and properties + /// about + /// the application running the script. external Navigator get navigator; external Navigator get clientInformation; + + /// The **`originAgentCluster`** read-only property of the [Window] interface + /// returns `true` if this window belongs to an _origin-keyed + /// [agent cluster](https://tc39.es/ecma262/#sec-agent-clusters)_: this means + /// that the operating system has provided dedicated resources (for example an + /// operating system process) to this window's origin that are not shared with + /// windows from other origins. + /// + /// Otherwise this property returns `false`. + /// + /// Windows that are part of an origin-keyed agent cluster are subjects to + /// some additional restrictions, compared with windows that are not. In + /// particular, they cannot: + /// + /// - Set [Document.domain], which is a legacy feature that normally allows + /// same-site cross-origin pages to synchronously access each other's DOM. + /// - Send + /// [`WebAssembly.Module`](https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Module) + /// objects to other same-site cross-origin pages via [Window.postMessage]. + /// - Send `SharedArrayBuffer` or + /// [`WebAssembly.Memory`](https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Memory) + /// objects to other same-site cross-origin pages. + /// + /// To request that the browser assign this window to an origin-keyed agent + /// cluster, the server must send the response header. + /// + /// Note that the origin-keyed agent cluster feature is only supported in . If + /// a site is not a secure context, the `window.originAgentCluster` will + /// always return `false`. external bool get originAgentCluster; + + /// The `external` property of the [Window] API returns an instance of the + /// `External` interface, which was intended to contain functions related to + /// adding external search providers to the browser. However, this is now + /// deprecated, and the contained methods are now dummy functions that do + /// nothing as per spec. external External get external; - external set ondeviceorientation(EventHandler value); external EventHandler get ondeviceorientation; - external set ondeviceorientationabsolute(EventHandler value); + external set ondeviceorientation(EventHandler value); external EventHandler get ondeviceorientationabsolute; - external set ondevicemotion(EventHandler value); + external set ondeviceorientationabsolute(EventHandler value); external EventHandler get ondevicemotion; + external set ondevicemotion(EventHandler value); + + /// The `speechSynthesis` read-only property of the Window object returns a + /// [SpeechSynthesis] object, which is the entry point into using + /// [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) + /// speech synthesis functionality. external SpeechSynthesis get speechSynthesis; - external set onanimationstart(EventHandler value); external EventHandler get onanimationstart; - external set onanimationiteration(EventHandler value); + external set onanimationstart(EventHandler value); external EventHandler get onanimationiteration; - external set onanimationend(EventHandler value); + external set onanimationiteration(EventHandler value); external EventHandler get onanimationend; - external set onanimationcancel(EventHandler value); + external set onanimationend(EventHandler value); external EventHandler get onanimationcancel; - external set ontransitionrun(EventHandler value); + external set onanimationcancel(EventHandler value); external EventHandler get ontransitionrun; - external set ontransitionstart(EventHandler value); + external set ontransitionrun(EventHandler value); external EventHandler get ontransitionstart; - external set ontransitionend(EventHandler value); + external set ontransitionstart(EventHandler value); external EventHandler get ontransitionend; - external set ontransitioncancel(EventHandler value); + external set ontransitionend(EventHandler value); external EventHandler get ontransitioncancel; - external set onabort(EventHandler value); + external set ontransitioncancel(EventHandler value); external EventHandler get onabort; - external set onauxclick(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onauxclick; - external set onbeforeinput(EventHandler value); + external set onauxclick(EventHandler value); external EventHandler get onbeforeinput; - external set onbeforematch(EventHandler value); + external set onbeforeinput(EventHandler value); external EventHandler get onbeforematch; - external set onbeforetoggle(EventHandler value); + external set onbeforematch(EventHandler value); external EventHandler get onbeforetoggle; - external set onblur(EventHandler value); + external set onbeforetoggle(EventHandler value); external EventHandler get onblur; - external set oncancel(EventHandler value); + external set onblur(EventHandler value); external EventHandler get oncancel; - external set oncanplay(EventHandler value); + external set oncancel(EventHandler value); external EventHandler get oncanplay; - external set oncanplaythrough(EventHandler value); + external set oncanplay(EventHandler value); external EventHandler get oncanplaythrough; - external set onchange(EventHandler value); + external set oncanplaythrough(EventHandler value); external EventHandler get onchange; - external set onclick(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onclick; - external set onclose(EventHandler value); + external set onclick(EventHandler value); external EventHandler get onclose; - external set oncontextlost(EventHandler value); + external set onclose(EventHandler value); external EventHandler get oncontextlost; - external set oncontextmenu(EventHandler value); + external set oncontextlost(EventHandler value); external EventHandler get oncontextmenu; - external set oncontextrestored(EventHandler value); + external set oncontextmenu(EventHandler value); external EventHandler get oncontextrestored; - external set oncopy(EventHandler value); + external set oncontextrestored(EventHandler value); external EventHandler get oncopy; - external set oncuechange(EventHandler value); + external set oncopy(EventHandler value); external EventHandler get oncuechange; - external set oncut(EventHandler value); + external set oncuechange(EventHandler value); external EventHandler get oncut; - external set ondblclick(EventHandler value); + external set oncut(EventHandler value); external EventHandler get ondblclick; - external set ondrag(EventHandler value); + external set ondblclick(EventHandler value); external EventHandler get ondrag; - external set ondragend(EventHandler value); + external set ondrag(EventHandler value); external EventHandler get ondragend; - external set ondragenter(EventHandler value); + external set ondragend(EventHandler value); external EventHandler get ondragenter; - external set ondragleave(EventHandler value); + external set ondragenter(EventHandler value); external EventHandler get ondragleave; - external set ondragover(EventHandler value); + external set ondragleave(EventHandler value); external EventHandler get ondragover; - external set ondragstart(EventHandler value); + external set ondragover(EventHandler value); external EventHandler get ondragstart; - external set ondrop(EventHandler value); + external set ondragstart(EventHandler value); external EventHandler get ondrop; - external set ondurationchange(EventHandler value); + external set ondrop(EventHandler value); external EventHandler get ondurationchange; - external set onemptied(EventHandler value); + external set ondurationchange(EventHandler value); external EventHandler get onemptied; - external set onended(EventHandler value); + external set onemptied(EventHandler value); external EventHandler get onended; - external set onerror(OnErrorEventHandler value); + external set onended(EventHandler value); external OnErrorEventHandler get onerror; - external set onfocus(EventHandler value); + external set onerror(OnErrorEventHandler value); external EventHandler get onfocus; - external set onformdata(EventHandler value); + external set onfocus(EventHandler value); external EventHandler get onformdata; - external set oninput(EventHandler value); + external set onformdata(EventHandler value); external EventHandler get oninput; - external set oninvalid(EventHandler value); + external set oninput(EventHandler value); external EventHandler get oninvalid; - external set onkeydown(EventHandler value); + external set oninvalid(EventHandler value); external EventHandler get onkeydown; - external set onkeypress(EventHandler value); + external set onkeydown(EventHandler value); external EventHandler get onkeypress; - external set onkeyup(EventHandler value); + external set onkeypress(EventHandler value); external EventHandler get onkeyup; - external set onload(EventHandler value); + external set onkeyup(EventHandler value); external EventHandler get onload; - external set onloadeddata(EventHandler value); + external set onload(EventHandler value); external EventHandler get onloadeddata; - external set onloadedmetadata(EventHandler value); + external set onloadeddata(EventHandler value); external EventHandler get onloadedmetadata; - external set onloadstart(EventHandler value); + external set onloadedmetadata(EventHandler value); external EventHandler get onloadstart; - external set onmousedown(EventHandler value); + external set onloadstart(EventHandler value); external EventHandler get onmousedown; - external set onmouseenter(EventHandler value); + external set onmousedown(EventHandler value); external EventHandler get onmouseenter; - external set onmouseleave(EventHandler value); + external set onmouseenter(EventHandler value); external EventHandler get onmouseleave; - external set onmousemove(EventHandler value); + external set onmouseleave(EventHandler value); external EventHandler get onmousemove; - external set onmouseout(EventHandler value); + external set onmousemove(EventHandler value); external EventHandler get onmouseout; - external set onmouseover(EventHandler value); + external set onmouseout(EventHandler value); external EventHandler get onmouseover; - external set onmouseup(EventHandler value); + external set onmouseover(EventHandler value); external EventHandler get onmouseup; - external set onpaste(EventHandler value); + external set onmouseup(EventHandler value); external EventHandler get onpaste; - external set onpause(EventHandler value); + external set onpaste(EventHandler value); external EventHandler get onpause; - external set onplay(EventHandler value); + external set onpause(EventHandler value); external EventHandler get onplay; - external set onplaying(EventHandler value); + external set onplay(EventHandler value); external EventHandler get onplaying; - external set onprogress(EventHandler value); + external set onplaying(EventHandler value); external EventHandler get onprogress; - external set onratechange(EventHandler value); + external set onprogress(EventHandler value); external EventHandler get onratechange; - external set onreset(EventHandler value); + external set onratechange(EventHandler value); external EventHandler get onreset; - external set onresize(EventHandler value); + external set onreset(EventHandler value); external EventHandler get onresize; - external set onscroll(EventHandler value); + external set onresize(EventHandler value); external EventHandler get onscroll; - external set onscrollend(EventHandler value); + external set onscroll(EventHandler value); external EventHandler get onscrollend; - external set onsecuritypolicyviolation(EventHandler value); + external set onscrollend(EventHandler value); external EventHandler get onsecuritypolicyviolation; - external set onseeked(EventHandler value); + external set onsecuritypolicyviolation(EventHandler value); external EventHandler get onseeked; - external set onseeking(EventHandler value); + external set onseeked(EventHandler value); external EventHandler get onseeking; - external set onselect(EventHandler value); + external set onseeking(EventHandler value); external EventHandler get onselect; - external set onslotchange(EventHandler value); + external set onselect(EventHandler value); external EventHandler get onslotchange; - external set onstalled(EventHandler value); + external set onslotchange(EventHandler value); external EventHandler get onstalled; - external set onsubmit(EventHandler value); + external set onstalled(EventHandler value); external EventHandler get onsubmit; - external set onsuspend(EventHandler value); + external set onsubmit(EventHandler value); external EventHandler get onsuspend; - external set ontimeupdate(EventHandler value); + external set onsuspend(EventHandler value); external EventHandler get ontimeupdate; - external set ontoggle(EventHandler value); + external set ontimeupdate(EventHandler value); external EventHandler get ontoggle; - external set onvolumechange(EventHandler value); + external set ontoggle(EventHandler value); external EventHandler get onvolumechange; - external set onwaiting(EventHandler value); + external set onvolumechange(EventHandler value); external EventHandler get onwaiting; - external set onwebkitanimationend(EventHandler value); + external set onwaiting(EventHandler value); external EventHandler get onwebkitanimationend; - external set onwebkitanimationiteration(EventHandler value); + external set onwebkitanimationend(EventHandler value); external EventHandler get onwebkitanimationiteration; - external set onwebkitanimationstart(EventHandler value); + external set onwebkitanimationiteration(EventHandler value); external EventHandler get onwebkitanimationstart; - external set onwebkittransitionend(EventHandler value); + external set onwebkitanimationstart(EventHandler value); external EventHandler get onwebkittransitionend; - external set onwheel(EventHandler value); + external set onwebkittransitionend(EventHandler value); external EventHandler get onwheel; - external set onpointerover(EventHandler value); + external set onwheel(EventHandler value); external EventHandler get onpointerover; - external set onpointerenter(EventHandler value); + external set onpointerover(EventHandler value); external EventHandler get onpointerenter; - external set onpointerdown(EventHandler value); + external set onpointerenter(EventHandler value); external EventHandler get onpointerdown; - external set onpointermove(EventHandler value); + external set onpointerdown(EventHandler value); external EventHandler get onpointermove; - external set onpointerrawupdate(EventHandler value); + external set onpointermove(EventHandler value); external EventHandler get onpointerrawupdate; - external set onpointerup(EventHandler value); + external set onpointerrawupdate(EventHandler value); external EventHandler get onpointerup; - external set onpointercancel(EventHandler value); + external set onpointerup(EventHandler value); external EventHandler get onpointercancel; - external set onpointerout(EventHandler value); + external set onpointercancel(EventHandler value); external EventHandler get onpointerout; - external set onpointerleave(EventHandler value); + external set onpointerout(EventHandler value); external EventHandler get onpointerleave; - external set ongotpointercapture(EventHandler value); + external set onpointerleave(EventHandler value); external EventHandler get ongotpointercapture; - external set onlostpointercapture(EventHandler value); + external set ongotpointercapture(EventHandler value); external EventHandler get onlostpointercapture; - external set onselectstart(EventHandler value); + external set onlostpointercapture(EventHandler value); external EventHandler get onselectstart; - external set onselectionchange(EventHandler value); + external set onselectstart(EventHandler value); external EventHandler get onselectionchange; - external set ontouchstart(EventHandler value); + external set onselectionchange(EventHandler value); external EventHandler get ontouchstart; - external set ontouchend(EventHandler value); + external set ontouchstart(EventHandler value); external EventHandler get ontouchend; - external set ontouchmove(EventHandler value); + external set ontouchend(EventHandler value); external EventHandler get ontouchmove; - external set ontouchcancel(EventHandler value); + external set ontouchmove(EventHandler value); external EventHandler get ontouchcancel; - external set ongamepadconnected(EventHandler value); + external set ontouchcancel(EventHandler value); external EventHandler get ongamepadconnected; - external set ongamepaddisconnected(EventHandler value); + external set ongamepadconnected(EventHandler value); external EventHandler get ongamepaddisconnected; - external set onafterprint(EventHandler value); + external set ongamepaddisconnected(EventHandler value); external EventHandler get onafterprint; - external set onbeforeprint(EventHandler value); + external set onafterprint(EventHandler value); external EventHandler get onbeforeprint; - external set onbeforeunload(OnBeforeUnloadEventHandler value); + external set onbeforeprint(EventHandler value); external OnBeforeUnloadEventHandler get onbeforeunload; - external set onhashchange(EventHandler value); + external set onbeforeunload(OnBeforeUnloadEventHandler value); external EventHandler get onhashchange; - external set onlanguagechange(EventHandler value); + external set onhashchange(EventHandler value); external EventHandler get onlanguagechange; - external set onmessage(EventHandler value); + external set onlanguagechange(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; - external set onoffline(EventHandler value); + external set onmessageerror(EventHandler value); external EventHandler get onoffline; - external set ononline(EventHandler value); + external set onoffline(EventHandler value); external EventHandler get ononline; - external set onpagehide(EventHandler value); + external set ononline(EventHandler value); external EventHandler get onpagehide; - external set onpagereveal(EventHandler value); + external set onpagehide(EventHandler value); external EventHandler get onpagereveal; - external set onpageshow(EventHandler value); + external set onpagereveal(EventHandler value); external EventHandler get onpageshow; - external set onpopstate(EventHandler value); + external set onpageshow(EventHandler value); external EventHandler get onpopstate; - external set onrejectionhandled(EventHandler value); + external set onpopstate(EventHandler value); external EventHandler get onrejectionhandled; - external set onstorage(EventHandler value); + external set onrejectionhandled(EventHandler value); external EventHandler get onstorage; - external set onunhandledrejection(EventHandler value); + external set onstorage(EventHandler value); external EventHandler get onunhandledrejection; - external set onunload(EventHandler value); + external set onunhandledrejection(EventHandler value); external EventHandler get onunload; + external set onunload(EventHandler value); external IDBFactory get indexedDB; external Crypto get crypto; external Performance get performance; @@ -6347,7 +9895,56 @@ extension type Window._(JSObject _) implements EventTarget, JSObject { external bool get crossOriginIsolated; external CacheStorage get caches; external TrustedTypePolicyFactory get trustedTypes; + + /// The read-only **`sessionStorage`** + /// property accesses a session [Storage] object for the current + /// . `sessionStorage` is similar to + /// [Window.localStorage]; the difference is that while data + /// in `localStorage` doesn't expire, data in `sessionStorage` is + /// cleared when the _page session_ ends. + /// + /// - Whenever a document is loaded in a particular tab in the browser, a + /// unique page + /// session gets created and assigned to that particular tab. That page + /// session is valid + /// only for that particular tab. + /// - A page session lasts as long as the tab or the browser is open, and + /// survives over + /// page reloads and restores. + /// - **Opening a page in a new tab or window creates a new session with the + /// value + /// of the top-level browsing context, which differs from how session cookies + /// work.** + /// - Opening multiple tabs/windows with the same URL creates `sessionStorage` + /// for each tab/window. + /// - Duplicating a tab copies the tab's `sessionStorage` into the new + /// tab. + /// - Closing a tab/window ends the session and clears objects in + /// `sessionStorage`. + /// + /// Data stored in `sessionStorage` **is specific to the protocol of the + /// page**. In particular, data stored by a script on a site accessed with + /// HTTP + /// (e.g., [http://example.com](https://example.com)) is + /// put in a different `sessionStorage` object from the same site accessed + /// with + /// HTTPS (e.g., <https://example.com>). + /// + /// The keys and the values are _always_ in the UTF-16 string + /// format, which uses two bytes per character. As with objects, integer keys + /// are + /// automatically converted to strings. external Storage get sessionStorage; + + /// The **`localStorage`** read-only property of the [window] interface allows + /// you to access a [Storage] object for the [Document]'s ; the stored data is + /// saved across browser sessions. + /// + /// `localStorage` is similar to [Window.sessionStorage], except that while + /// `localStorage` data has no expiration time, `sessionStorage` data gets + /// cleared when the page session ends — that is, when the page is closed. + /// (`localStorage` data for a document loaded in a "private browsing" or + /// "incognito" session is cleared when the last "private" tab is closed.) external Storage get localStorage; } extension type WindowPostMessageOptions._(JSObject _) @@ -6357,8 +9954,8 @@ extension type WindowPostMessageOptions._(JSObject _) String targetOrigin, }); - external set targetOrigin(String value); external String get targetOrigin; + external set targetOrigin(String value); } /// The **`BarProp`** interface of the [Document Object Model] represents the @@ -6387,6 +9984,8 @@ extension type WindowPostMessageOptions._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/BarProp). extension type BarProp._(JSObject _) implements JSObject { + /// The **`visible`** read-only property of the [BarProp] interface returns + /// `true` if the user interface element it represents is visible. external bool get visible; } @@ -6419,23 +10018,106 @@ extension type Location._(JSObject _) implements JSObject { /// The **`reload()`** method of the [Location] interface reloads the current /// URL, like the Refresh button. external void reload(); - external set href(String value); + + /// The **`href`** property of the [Location] + /// interface is a that returns a string containing the whole + /// URL, and allows the href to be updated. + /// + /// Setting the value of `href` _navigates_ to the provided URL. If you + /// want _redirection_, use [Location.replace]. The difference from setting + /// the `href` property value is that when using the `location.replace()` + /// method, after navigating to the given URL, the current page will not be + /// saved in session + /// [history](https://developer.mozilla.org/en-US/docs/Web/API/History_API) — + /// meaning the user won't be able to use the back button to navigate to it. external String get href; + external set href(String value); + + /// The **`origin`** read-only property of + /// the [Location] interface is a string containing the + /// Unicode serialization of the origin of the represented URL. + /// + /// That is: + /// + /// - for URL using the `http` or `https`, the scheme followed by + /// `'://'`, followed by the domain, followed by `':'`, followed by + /// the port (the default port, `80` and `443` respectively, if + /// explicitly specified); + /// - for URL using `file:` scheme, the value is browser dependent; + /// - for URL using the `blob:` scheme, the origin of the URL following + /// `blob:`. E.g `"blob:https://mozilla.org"` will have + /// `"https://mozilla.org".` external String get origin; - external set protocol(String value); + + /// The **`protocol`** property of the [Location] + /// interface is a string representing the protocol scheme of the URL, + /// including the final `':'`. external String get protocol; - external set host(String value); + external set protocol(String value); + + /// The **`host`** property of the [Location] + /// interface is a string containing the host, that is the + /// _hostname_, and then, if the _port_ of the URL is nonempty, a + /// `':'`, and the _port_ of the URL. external String get host; - external set hostname(String value); + external set host(String value); + + /// The **`hostname`** property of the [Location] + /// interface is a string containing the domain of the URL. external String get hostname; - external set port(String value); + external set hostname(String value); + + /// The **`port`** property of the [Location] + /// interface is a string containing the port number of the URL. If the + /// URL does not contain an explicit port number, it will be set to `''`. external String get port; - external set pathname(String value); + external set port(String value); + + /// The **`pathname`** property of the [Location] + /// interface is a string containing the path of the URL for the location. If + /// there is no path, `pathname` will be empty: otherwise, `pathname` contains + /// an initial '/' followed by the path of the URL, not including the query + /// string or fragment. external String get pathname; - external set search(String value); + external set pathname(String value); + + /// The **`search`** property of the [Location] + /// interface is a search string, also called a _query string_; that is, a + /// string containing a `'?'` followed by the parameters of the + /// URL. + /// + /// Modern browsers provide + /// [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/get#examples) + /// and + /// [`URL.searchParams`](/en-US/docs/Web/API/URL/searchParams#examples) + /// to make it easy to parse out the parameters from the querystring. external String get search; - external set hash(String value); + external set search(String value); + + /// The **`hash`** property of the + /// [Location] interface returns a string containing a + /// `'#'` followed by the fragment identifier of the URL — the ID on the page + /// that the URL is trying to target. + /// + /// The fragment is not + /// [URL decoded](https://en.wikipedia.org/wiki/URL_encoding). If the URL does + /// not + /// have a fragment identifier, this property contains an empty string, `""`. external String get hash; + external set hash(String value); + + /// The **`ancestorOrigins`** read-only + /// property of the [Location] interface is a static + /// [DOMStringList] containing, in reverse order, the origins of all ancestor + /// browsing contexts of the document associated with the given [Location] + /// object. + /// + /// You can use `location.ancestorOrigins` in the script for a document to + /// determine, for example, whenever the document is being framed by a site + /// which you don't + /// expect it to be framed by. You can also use it to vary the behavior of the + /// document + /// based on what site or list of sites is framing it. external DOMStringList get ancestorOrigins; } @@ -6507,9 +10189,26 @@ extension type History._(JSObject _) implements JSObject { String unused, [ String? url, ]); + + /// The **`length`** read-only property of the [History] interface + /// returns an integer representing the number of elements in the session + /// history, including the currently loaded page. + /// + /// For example, for a page loaded in a new tab this property returns `1`. external int get length; - external set scrollRestoration(ScrollRestoration value); + + /// The **`scrollRestoration`** property of the [History] + /// interface allows web applications to explicitly set default scroll + /// restoration behavior + /// on history navigation. external ScrollRestoration get scrollRestoration; + external set scrollRestoration(ScrollRestoration value); + + /// The **`state`** read-only property of the [History] interface + /// returns a value representing the state at the top of the history stack. + /// This is + /// a way to look at the state without having to wait for a + /// [Window.popstate_event] event. external JSAny? get state; } @@ -6572,32 +10271,54 @@ extension type Navigation._(JSObject _) implements EventTarget, JSObject { /// [Navigation] interface navigates forwards by one entry in the navigation /// history. external NavigationResult forward([NavigationOptions options]); + + /// The **`currentEntry`** read-only property of the + /// [Navigation] interface returns a [NavigationHistoryEntry] object + /// representing the location the user is currently navigated to right now. external NavigationHistoryEntry? get currentEntry; + + /// The **`transition`** read-only property of the [Navigation] interface + /// returns a [NavigationTransition] object representing the status of an + /// in-progress navigation, which can be used to track it. external NavigationTransition? get transition; external NavigationActivation? get activation; + + /// The **`canGoBack`** read-only property of the + /// [Navigation] interface returns `true` + /// if it is possible to navigate backwards in the navigation history + /// (i.e. the [Navigation.currentEntry] is + /// not the first one in the history entry list), + /// and `false` if it is not. external bool get canGoBack; + + /// The **`canGoForward`** read-only property of the + /// [Navigation] interface returns `true` if it is possible to navigate + /// forwards in the navigation history + /// (i.e. the [Navigation.currentEntry] is not the last one in the history + /// entry list), + /// and `false` if it is not. external bool get canGoForward; - external set onnavigate(EventHandler value); external EventHandler get onnavigate; - external set onnavigatesuccess(EventHandler value); + external set onnavigate(EventHandler value); external EventHandler get onnavigatesuccess; - external set onnavigateerror(EventHandler value); + external set onnavigatesuccess(EventHandler value); external EventHandler get onnavigateerror; - external set oncurrententrychange(EventHandler value); + external set onnavigateerror(EventHandler value); external EventHandler get oncurrententrychange; + external set oncurrententrychange(EventHandler value); } extension type NavigationUpdateCurrentEntryOptions._(JSObject _) implements JSObject { external factory NavigationUpdateCurrentEntryOptions({required JSAny? state}); - external set state(JSAny? value); external JSAny? get state; + external set state(JSAny? value); } extension type NavigationOptions._(JSObject _) implements JSObject { external factory NavigationOptions({JSAny? info}); - external set info(JSAny? value); external JSAny? get info; + external set info(JSAny? value); } extension type NavigationNavigateOptions._(JSObject _) implements NavigationOptions, JSObject { @@ -6607,10 +10328,10 @@ extension type NavigationNavigateOptions._(JSObject _) NavigationHistoryBehavior history, }); - external set state(JSAny? value); external JSAny? get state; - external set history(NavigationHistoryBehavior value); + external set state(JSAny? value); external NavigationHistoryBehavior get history; + external set history(NavigationHistoryBehavior value); } extension type NavigationReloadOptions._(JSObject _) implements NavigationOptions, JSObject { @@ -6619,8 +10340,8 @@ extension type NavigationReloadOptions._(JSObject _) JSAny? state, }); - external set state(JSAny? value); external JSAny? get state; + external set state(JSAny? value); } extension type NavigationResult._(JSObject _) implements JSObject { external factory NavigationResult({ @@ -6628,10 +10349,10 @@ extension type NavigationResult._(JSObject _) implements JSObject { JSPromise<NavigationHistoryEntry> finished, }); - external set committed(JSPromise<NavigationHistoryEntry> value); external JSPromise<NavigationHistoryEntry> get committed; - external set finished(JSPromise<NavigationHistoryEntry> value); + external set committed(JSPromise<NavigationHistoryEntry> value); external JSPromise<NavigationHistoryEntry> get finished; + external set finished(JSPromise<NavigationHistoryEntry> value); } /// The **`NavigationHistoryEntry`** interface of the [Navigation API] @@ -6657,13 +10378,57 @@ extension type NavigationHistoryEntry._(JSObject _) /// returns a clone of the developer-supplied state associated with this /// history entry. external JSAny? getState(); + + /// The **`url`** read-only property of the [NavigationHistoryEntry] interface + /// returns the absolute URL of this history entry. If the entry corresponds + /// to a different Document than the current one (like `sameDocument` property + /// is `false`), and that Document was fetched with a header set to + /// `no-referrer` or `origin`, the property returns `null`. If current + /// document is not fully active, it returns an empty string. external String? get url; + + /// The **`key`** read-only property of the [NavigationHistoryEntry] interface + /// returns the `key` of the history entry, or an empty string if current + /// document is not fully active. This is a unique, UA-generated value that + /// represents the history entry's slot in the entries list. It is used to + /// navigate that particular slot via [Navigation.traverseTo]. The `key` will + /// be reused by other entries that replace the entry in the list (that is, if + /// the [NavigateEvent.navigationType] is `replace`). + /// + /// This differs from the [NavigationHistoryEntry.id] of a history entry. The + /// `id` is a unique, UA-generated value that always represents a specific + /// history entry rather than its slot in the entries list. This is useful to + /// correlate it with an external resource such as a storage cache. external String get key; + + /// The **`id`** read-only property of the [NavigationHistoryEntry] interface + /// returns the `id` of the history entry, or an empty string if current + /// document is not fully active. This is a unique, UA-generated value that + /// always represents a specific history entry, useful to correlate it with an + /// external resource such as a storage cache. + /// + /// This differs from the [NavigationHistoryEntry.key] of a history entry. The + /// `key` is a unique, UA-generated value that represents the history entry's + /// slot in the entries list rather than the entry itself. It is used to + /// navigate that particular slot via [Navigation.traverseTo]. The `key` will + /// be reused by other entries that replace the entry in the list (that is, if + /// the [NavigateEvent.navigationType] is `replace`). external String get id; + + /// The **`index`** read-only property of the [NavigationHistoryEntry] + /// interface returns the index of the history entry in the history entries + /// list (that is, the list returned by [Navigation.entries]), or `-1` if the + /// entry does not appear in the list or if current document is not fully + /// active. external int get index; + + /// The **`sameDocument`** read-only property of the [NavigationHistoryEntry] + /// interface returns `true` if this history entry is for the same `document` + /// as the current [Document] value and current document is fully active, or + /// `false` otherwise. external bool get sameDocument; - external set ondispose(EventHandler value); external EventHandler get ondispose; + external set ondispose(EventHandler value); } /// The **`NavigationTransition`** interface of the [Navigation API] represents @@ -6678,8 +10443,20 @@ extension type NavigationHistoryEntry._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/NavigationTransition). extension type NavigationTransition._(JSObject _) implements JSObject { + /// The **`navigationType`** read-only property of the + /// [NavigationTransition] interface returns the type of the ongoing + /// navigation. external NavigationType get navigationType; + + /// The **`from`** read-only property of the + /// [NavigationTransition] interface returns the [NavigationHistoryEntry] that + /// the transition is coming from. external NavigationHistoryEntry get from; + + /// The **`finished`** read-only property of the + /// [NavigationTransition] interface returns a `Promise` that fulfills at the + /// same time the [Navigation.navigatesuccess_event] event fires, or rejects + /// at the same time the [Navigation.navigateerror_event] event fires. external JSPromise<JSAny?> get finished; } extension type NavigationActivation._(JSObject _) implements JSObject { @@ -6717,14 +10494,77 @@ extension type NavigateEvent._(JSObject _) implements Event, JSObject { /// navigation, if you want it to happen before the navigation handling has /// completed. external void scroll(); + + /// The **`navigationType`** read-only property of the + /// [NavigateEvent] interface returns the type of the navigation — `push`, + /// `reload`, `replace`, or `traverse`. external NavigationType get navigationType; + + /// The **`destination`** read-only property of the + /// [NavigateEvent] interface returns a [NavigationDestination] object + /// representing the destination being navigated to. external NavigationDestination get destination; + + /// The **`canIntercept`** read-only property of the + /// [NavigateEvent] interface returns `true` if the navigation can be + /// intercepted and have its URL rewritten, or `false` otherwise + /// + /// There are several rules around when a navigation can be intercepted. For + /// example: + /// + /// - You can't intercept cross-origin navigations. + /// - You can intercept `http` or `https` URLs if only the `path`, `query`, + /// and `fragment` portions of the new URL differ from the current URL. + /// - You can intercept `file` URLs if only the `query` and `fragment` + /// portions of the new URL differ. + /// - For other URL types you can intercept the navigation if only the + /// `fragment` portion differs. + /// + /// See the spec for more explanation on + /// [when a Document can have its URL rewritten](https://html.spec.whatwg.org/multipage/nav-history-apis.html#can-have-its-url-rewritten), + /// including a table of examples. external bool get canIntercept; + + /// The **`userInitiated`** read-only property of the + /// [NavigateEvent] interface returns `true` if the navigation was initiated + /// by the user (e.g. by clicking a link, submitting a form, or pressing the + /// browser's "Back"/"Forward" buttons), or `false` otherwise. + /// + /// > **Note:** The table found at [Appendix: types of + /// > navigations](https://github.com/WICG/navigation-api#appendix-types-of-navigations) + /// > shows which navigation types are user-initiated. external bool get userInitiated; + + /// The **`hashChange`** read-only property of the + /// [NavigateEvent] interface returns `true` if the navigation is a fragment + /// navigation (i.e. to a fragment identifier in the same document), or + /// `false` otherwise. external bool get hashChange; + + /// The **`signal`** read-only property of the + /// [NavigateEvent] interface returns an [AbortSignal], which will become + /// aborted if the navigation is cancelled (e.g. by the user pressing the + /// browser's "Stop" button, or another navigation starting and thus + /// cancelling the ongoing one). external AbortSignal get signal; + + /// The **`formData`** read-only property of the + /// [NavigateEvent] interface returns the [FormData] object representing the + /// submitted data in the case of a + /// [`POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) + /// form submission, or `null` otherwise. external FormData? get formData; + + /// The **`downloadRequest`** read-only property of the + /// [NavigateEvent] interface returns the filename of the file requested for + /// download, in the case of a download navigation (e.g. an `a` or `area` + /// element with a `download` attribute), or `null` otherwise. external String? get downloadRequest; + + /// The **`info`** read-only property of the + /// [NavigateEvent] interface returns the `info` data value passed by the + /// initiating navigation operation (e.g. [Navigation.back], or + /// [Navigation.navigate]), or `undefined` if no `info` data was passed. external JSAny? get info; external bool get hasUAVisualTransition; } @@ -6745,26 +10585,26 @@ extension type NavigateEventInit._(JSObject _) implements EventInit, JSObject { bool hasUAVisualTransition, }); - external set navigationType(NavigationType value); external NavigationType get navigationType; - external set destination(NavigationDestination value); + external set navigationType(NavigationType value); external NavigationDestination get destination; - external set canIntercept(bool value); + external set destination(NavigationDestination value); external bool get canIntercept; - external set userInitiated(bool value); + external set canIntercept(bool value); external bool get userInitiated; - external set hashChange(bool value); + external set userInitiated(bool value); external bool get hashChange; - external set signal(AbortSignal value); + external set hashChange(bool value); external AbortSignal get signal; - external set formData(FormData? value); + external set signal(AbortSignal value); external FormData? get formData; - external set downloadRequest(String? value); + external set formData(FormData? value); external String? get downloadRequest; - external set info(JSAny? value); + external set downloadRequest(String? value); external JSAny? get info; - external set hasUAVisualTransition(bool value); + external set info(JSAny? value); external bool get hasUAVisualTransition; + external set hasUAVisualTransition(bool value); } extension type NavigationInterceptOptions._(JSObject _) implements JSObject { external factory NavigationInterceptOptions({ @@ -6773,12 +10613,12 @@ extension type NavigationInterceptOptions._(JSObject _) implements JSObject { NavigationScrollBehavior scroll, }); - external set handler(NavigationInterceptHandler value); external NavigationInterceptHandler get handler; - external set focusReset(NavigationFocusReset value); + external set handler(NavigationInterceptHandler value); external NavigationFocusReset get focusReset; - external set scroll(NavigationScrollBehavior value); + external set focusReset(NavigationFocusReset value); external NavigationScrollBehavior get scroll; + external set scroll(NavigationScrollBehavior value); } /// The **`NavigationDestination`** interface of the [Navigation API] represents @@ -6797,10 +10637,48 @@ extension type NavigationDestination._(JSObject _) implements JSObject { /// [NavigationHistoryEntry], or navigation operation (e.g. /// [Navigation.navigate]) as appropriate. external JSAny? getState(); + + /// The **`url`** read-only property of the + /// [NavigationDestination] interface returns the URL being navigated to. external String get url; + + /// The **`key`** read-only property of the + /// [NavigationDestination] interface returns the [NavigationHistoryEntry.key] + /// value of the destination [NavigationHistoryEntry] if the + /// [NavigateEvent.navigationType] is `traverse`, or an empty string + /// otherwise. + /// + /// The `key` is a unique, UA-generated value that represents the history + /// entry's slot in the history entries list, used to navigate to this place + /// in the history via [Navigation.traverseTo]. It will be reused by other + /// entries that replace the entry in the list (i.e. if the + /// [NavigateEvent.navigationType] is `replace`). external String get key; + + /// The **`id`** read-only property of the + /// [NavigationDestination] interface returns the [NavigationHistoryEntry.id] + /// value of the destination [NavigationHistoryEntry] if the + /// [NavigateEvent.navigationType] is `traverse`, or an empty string + /// otherwise. + /// + /// The `id` is a unique, UA-generated value that always represents the + /// history entry, useful to correlate a history entry with an external + /// resource such as a storage cache. external String get id; + + /// The **`index`** read-only property of the + /// [NavigationDestination] interface returns the + /// [NavigationHistoryEntry.index] value of the destination + /// [NavigationHistoryEntry] if the [NavigateEvent.navigationType] is + /// `traverse`, or `-1` otherwise. external int get index; + + /// The **`sameDocument`** read-only property of the + /// [NavigationDestination] interface returns `true` if the navigation is to + /// the same `document` as the current [Document] value, or `false` otherwise. + /// + /// This is useful for checking whether the navigation will be same-document + /// or cross-document. external bool get sameDocument; } @@ -6831,7 +10709,15 @@ extension type NavigationCurrentEntryChangeEvent._(JSObject _) NavigationCurrentEntryChangeEventInit eventInitDict, ); + /// The **`navigationType`** read-only property of the + /// [NavigationCurrentEntryChangeEvent] interface returns the type of the + /// navigation that resulted in the change. The property may be `null` if the + /// change occurs due to [Navigation.updateCurrentEntry]. external NavigationType? get navigationType; + + /// The **`from`** read-only property of the + /// [NavigationCurrentEntryChangeEvent] interface returns the + /// [NavigationHistoryEntry] that was navigated from. external NavigationHistoryEntry get from; } extension type NavigationCurrentEntryChangeEventInit._(JSObject _) @@ -6844,10 +10730,10 @@ extension type NavigationCurrentEntryChangeEventInit._(JSObject _) required NavigationHistoryEntry from, }); - external set navigationType(NavigationType? value); external NavigationType? get navigationType; - external set from(NavigationHistoryEntry value); + external set navigationType(NavigationType? value); external NavigationHistoryEntry get from; + external set from(NavigationHistoryEntry value); } /// **`PopStateEvent`** is an interface for the @@ -6872,6 +10758,11 @@ extension type PopStateEvent._(JSObject _) implements Event, JSObject { PopStateEventInit eventInitDict, ]); + /// The **`state`** read-only property of the [PopStateEvent] interface + /// represents the state stored when the event was created. + /// + /// Practically it is a value provided by the call to [history.pushState] or + /// [history.replaceState] external JSAny? get state; external bool get hasUAVisualTransition; } @@ -6884,10 +10775,10 @@ extension type PopStateEventInit._(JSObject _) implements EventInit, JSObject { bool hasUAVisualTransition, }); - external set state(JSAny? value); external JSAny? get state; - external set hasUAVisualTransition(bool value); + external set state(JSAny? value); external bool get hasUAVisualTransition; + external set hasUAVisualTransition(bool value); } /// The **`HashChangeEvent`** interface represents events that fire when the @@ -6906,7 +10797,14 @@ extension type HashChangeEvent._(JSObject _) implements Event, JSObject { HashChangeEventInit eventInitDict, ]); + /// The **`oldURL`** read-only property of the + /// [HashChangeEvent] interface returns the previous URL from which the window + /// was navigated. external String get oldURL; + + /// The **`newURL`** read-only property of the + /// [HashChangeEvent] interface returns the new URL to which the window is + /// navigating. external String get newURL; } extension type HashChangeEventInit._(JSObject _) @@ -6919,10 +10817,10 @@ extension type HashChangeEventInit._(JSObject _) String newURL, }); - external set oldURL(String value); external String get oldURL; - external set newURL(String value); + external set oldURL(String value); external String get newURL; + external set newURL(String value); } extension type PageRevealEvent._(JSObject _) implements Event, JSObject { external factory PageRevealEvent( @@ -6941,8 +10839,8 @@ extension type PageRevealEventInit._(JSObject _) ViewTransition? viewTransition, }); - external set viewTransition(ViewTransition? value); external ViewTransition? get viewTransition; + external set viewTransition(ViewTransition? value); } /// The **`PageTransitionEvent`** event object is available inside handler @@ -6962,6 +10860,8 @@ extension type PageTransitionEvent._(JSObject _) implements Event, JSObject { PageTransitionEventInit eventInitDict, ]); + /// The **`persisted`** read-only property indicates if a webpage is loading + /// from a cache. external bool get persisted; } extension type PageTransitionEventInit._(JSObject _) @@ -6973,8 +10873,8 @@ extension type PageTransitionEventInit._(JSObject _) bool persisted, }); - external set persisted(bool value); external bool get persisted; + external set persisted(bool value); } /// The **`BeforeUnloadEvent`** interface represents the event object for the @@ -6989,8 +10889,20 @@ extension type PageTransitionEventInit._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent). extension type BeforeUnloadEvent._(JSObject _) implements Event, JSObject { - external set returnValue(String value); + /// The **`returnValue`** property of the + /// [BeforeUnloadEvent] interface, when set to a truthy value, triggers a + /// browser-generated confirmation dialog asking users to confirm if they + /// _really_ want to leave the page when they try to close or reload it, or + /// navigate somewhere else. This is intended to help prevent loss of unsaved + /// data. + /// + /// > **Note:** `returnValue` is a legacy feature, and best practice is to + /// > trigger the dialog by invoking [Event.preventDefault] on the + /// > `BeforeUnloadEvent` object, while also setting `returnValue` to support + /// > legacy cases. See the [Window.beforeunload_event] event reference for + /// > detailed up-to-date guidance. external String get returnValue; + external set returnValue(String value); } /// The **`ErrorEvent`** interface represents events providing information @@ -7024,16 +10936,16 @@ extension type ErrorEventInit._(JSObject _) implements EventInit, JSObject { JSAny? error, }); - external set message(String value); external String get message; - external set filename(String value); + external set message(String value); external String get filename; - external set lineno(int value); + external set filename(String value); external int get lineno; - external set colno(int value); + external set lineno(int value); external int get colno; - external set error(JSAny? value); + external set colno(int value); external JSAny? get error; + external set error(JSAny? value); } /// The **`PromiseRejectionEvent`** interface represents events which are sent @@ -7053,7 +10965,17 @@ extension type PromiseRejectionEvent._(JSObject _) implements Event, JSObject { PromiseRejectionEventInit eventInitDict, ); + /// The [PromiseRejectionEvent] interface's + /// **`promise`** read-only property indicates the JavaScript + /// `Promise` which was rejected. You can examine the event's + /// [PromiseRejectionEvent.reason] property to learn why the promise was + /// rejected. external JSObject get promise; + + /// The [PromiseRejectionEvent] **`reason`** read-only + /// property is any JavaScript value or `Object` which provides the reason + /// passed into `Promise.reject()`. This in theory provides information about + /// why the promise was rejected. external JSAny? get reason; } extension type PromiseRejectionEventInit._(JSObject _) @@ -7066,10 +10988,10 @@ extension type PromiseRejectionEventInit._(JSObject _) JSAny? reason, }); - external set promise(JSObject value); external JSObject get promise; - external set reason(JSAny? value); + external set promise(JSObject value); external JSAny? get reason; + external set reason(JSAny? value); } /// The **`DOMParser`** interface provides @@ -7224,36 +11146,353 @@ extension type Navigator._(JSObject _) implements JSObject { /// This method always returns false. external bool javaEnabled(); + + /// The **`clipboard`** read-only property of the [Navigator] interface + /// returns a [Clipboard] object used to read and write the clipboard's + /// contents. + /// + /// This is the entry point to the + /// [Clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API), + /// which can be used to implement cut, copy, and paste features within a web + /// application. external Clipboard get clipboard; + + /// The **`credentials`** read-only property of the [Navigator] interface + /// returns the [CredentialsContainer] object associated with the current + /// document, which exposes methods to request credentials. The + /// [CredentialsContainer] interface also notifies the user agent when an + /// interesting event occurs, such as a successful sign-in or sign-out. This + /// interface can be used for feature detection. external CredentialsContainer get credentials; + + /// The **`Navigator.geolocation`** read-only property returns a + /// [Geolocation] object that gives Web content access to the location of the + /// device. This allows a website or app to offer customized results based on + /// the user's + /// location. + /// + /// > **Note:** For security reasons, when a web page tries to access location + /// > information, the user is notified and asked to grant permission. Be + /// > aware that each + /// > browser has its own policies and methods for requesting this permission. external Geolocation get geolocation; + + /// The read-only **`userActivation`** property of the [Navigator] interface + /// returns a [UserActivation] object which contains information about the + /// current window's user activation state. external UserActivation get userActivation; + + /// The **`Navigator.mediaCapabilities`** read-only property + /// returns a [MediaCapabilities] object that can expose information about the + /// decoding and encoding capabilities for a given format and output + /// capabilities as defined + /// by the + /// [Media Capabilities API](https://developer.mozilla.org/en-US/docs/Web/API/Media_Capabilities_API). external MediaCapabilities get mediaCapabilities; + + /// The **`mediaDevices`** read-only property of the [Navigator] interface + /// returns a [MediaDevices] object, which provides access to connected media + /// input devices like cameras and microphones, as well as screen sharing. external MediaDevices get mediaDevices; + + /// The **`mediaSession`** read-only property of the [Navigator] + /// interface returns a [MediaSession] + /// object that can be used to share with the browser metadata and other + /// information about + /// the current playback state of media being handled by a document. + /// + /// This + /// information may, in turn, be shared with the device and/or operating + /// system in order to + /// a device's standard media control user experience to describe and control + /// the playback + /// of the media. + /// + /// In addition, the `MediaSession` interface provides the + /// [MediaSession.setActionHandler] method, which lets + /// you receive events when the user engages device controls such as either + /// onscreen or + /// physical play, pause, seek, and other similar controls. An internet radio + /// app, for + /// example, can use `setActionHandler()` to let the media controls on a + /// keyboard + /// or elsewhere on the user's device be used to control the app's media + /// playback. external MediaSession get mediaSession; + + /// The **`Navigator.permissions`** read-only property returns a + /// [Permissions] object that can be used to query and update permission + /// status of APIs covered by the + /// [Permissions API](https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API). external Permissions get permissions; + + /// The **`maxTouchPoints`** read-only property of the + /// [Navigator] interface returns the maximum number of simultaneous touch + /// contact points are supported by the current device. external int get maxTouchPoints; + + /// The **`wakeLock`** read-only property of the [Navigator] interface returns + /// a [WakeLock] interface that allows a document to acquire a screen wake + /// lock. + /// While a screen wake lock is active, the user agent will try to prevent the + /// device from dimming the screen, turning it off completely, or showing a + /// screensaver. external WakeLock get wakeLock; + + /// The **`serviceWorker`** read-only property of the [Navigator] interface + /// returns the [ServiceWorkerContainer] object for the + /// [associated document](https://html.spec.whatwg.org/multipage/browsers.html#concept-document-window), + /// which provides access to registration, removal, upgrade, and communication + /// with the [ServiceWorker]. + /// + /// The feature may not be available in private mode. external ServiceWorkerContainer get serviceWorker; + + /// The value of the **`Navigator.appCodeName`** property is + /// always "`Mozilla`", in any browser. This property is kept only for + /// compatibility purposes. + /// + /// > **Note:** Do not rely on this property to return a real + /// > product name. All browsers return "`Mozilla`" as the value of this + /// > property. external String get appCodeName; + + /// The value of the **`Navigator.appName`** property is always + /// "`Netscape`", in any browser. This property is kept only for compatibility + /// purposes. + /// + /// > **Note:** Do not rely on this property to return a real browser name. + /// > All browsers return "`Netscape`" as the value of this property. external String get appName; + + /// Returns either "`4.0`" or a string representing version information about + /// the browser. + /// + /// > **Note:** Do not rely on this property to return the correct browser + /// > version. external String get appVersion; + + /// The **`platform`** property read-only property of the [Navigator] + /// interface returns a string identifying the platform on which the user's + /// browser is running. + /// + /// > **Note:** In general, you should whenever possible avoid writing code + /// > that uses methods or properties like this one to try to find out + /// > information about the user's environment, and instead write code that + /// > does + /// > [feature detection](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Feature_detection). external String get platform; + + /// The value of the **`Navigator.product`** property is always + /// "`Gecko`", in any browser. This property is kept only for compatibility + /// purposes. + /// + /// > **Note:** Do not rely on this property to return a real product name. + /// > All browsers return "`Gecko`" as the value of this property. external String get product; + + /// The **`Navigator.productSub`** read-only property returns the + /// build number of the current browser. external String get productSub; + + /// The **`Navigator.userAgent`** read-only property returns the + /// user agent string for the current browser. + /// + /// > **Note:** The specification asks browsers to provide as little + /// > information via this field as + /// > possible. Never assume that the value of this property will stay the + /// > same in future + /// > versions of the same browser. Try not to use it at all, or only for + /// > current and past + /// > versions of a browser. New browsers may start using the same UA, or part + /// > of it, as an + /// > older browser: you really have no guarantee that the browser agent is + /// > indeed the one + /// > advertised by this property. + /// > + /// > Also keep in mind that users of a browser can change the value of this + /// > field if they + /// > want (UA spoofing). + /// + /// Browser identification based on detecting the user agent string is + /// **unreliable** and **is not recommended**, as the user agent + /// string is user configurable. For example: + /// + /// - In Firefox, you can change the preference `general.useragent.override` + /// in + /// `about:config`. Some Firefox extensions do that; however, this only + /// changes + /// the HTTP header that gets sent and that is returned by + /// `navigator.userAgent`. + /// There might be other methods that utilize JavaScript code to identify the + /// browser. + /// - Opera 6+ allows users to set the browser identification string via a + /// menu. external String get userAgent; + + /// The value of the [Navigator] **`vendor`** property is always either + /// "`Google Inc.`", "`Apple Computer, Inc.`", or (in Firefox) the empty + /// string. external String get vendor; + + /// The value of the **`Navigator.vendorSub`** property is always + /// the empty string, in any browser. external String get vendorSub; + + /// The **`Navigator.oscpu`** property returns a string that identifies the + /// current operating system. external String get oscpu; + + /// The **`Navigator.language`** read-only property returns a string + /// representing the preferred language of the user, usually the language of + /// the browser UI. external String get language; + + /// The **`Navigator.languages`** read-only property + /// returns an array of strings representing the user's preferred + /// languages. The language is described using language tags according to + /// `5646, "Tags for Identifying Languages (also known as BCP 47)"`. In the + /// returned + /// array they are ordered by preference with the most preferred language + /// first. + /// + /// The value of [Navigator.language] is the + /// first element of the returned array. + /// + /// When its value changes, as the user's preferred languages are changed a + /// [Window.languagechange_event] event is fired on the [Window] object. + /// + /// The `Accept-Language` HTTP header in every HTTP request from the user's + /// browser uses the same value for the `navigator.languages` property except + /// for + /// the extra `qvalues` (quality values) field (e.g. `en-US;q=0.8`). external JSArray<JSString> get languages; + + /// Returns the online status of the browser. The property returns a boolean + /// value, with + /// `true` meaning online and `false` meaning offline. The property + /// sends updates whenever the browser's ability to connect to the network + /// changes. The + /// update occurs when the user follows links or when a script requests a + /// remote page. For + /// example, the property should return `false` when users click links soon + /// after + /// they lose internet connection. + /// + /// Browsers implement this property differently. + /// + /// In Chrome and Safari, if the browser is not able to connect to a local + /// area network + /// (LAN) or a router, it is offline; all other conditions return `true`. So + /// while you can assume that the browser is offline when it returns a `false` + /// value, you cannot assume that a true value necessarily means that the + /// browser can access + /// the internet. You could be getting false positives, such as in cases where + /// the computer + /// is running a virtualization software that has virtual ethernet adapters + /// that are always + /// "connected." Therefore, if you really want to determine the online status + /// of the + /// browser, you should develop additional means for checking. + /// + /// In Firefox, switching the browser to offline mode sends a `false` value. + /// Until Firefox + /// 41, all other conditions returned a `true` value; testing actual behavior + /// on Nightly 68 on + /// Windows shows that it only looks for LAN connection like Chrome and Safari + /// giving false + /// positives. + /// + /// You can see changes in the network state by listening to the + /// [`online`](https://developer.mozilla.org/en-US/docs/Web/API/Window/online_event) + /// and + /// [`offline`](https://developer.mozilla.org/en-US/docs/Web/API/Window/offline_event) + /// events. external bool get onLine; + + /// `navigator.cookieEnabled` returns a Boolean value that indicates whether + /// cookies are enabled or not. + /// + /// The property is read-only. external bool get cookieEnabled; + + /// Returns a [PluginArray] object, listing the [Plugin] objects describing + /// the plugins installed in the application. + /// Named properties of the returned object are not enumerable (except in very + /// old browser versions). + /// + /// Recent versions of the specification hard-code the returned list. + /// If inline viewing of PDF files is supported the property lists five + /// standard plugins. + /// If inline PDF viewing is not supported then an empty list is returned. + /// + /// > **Note:** Use [Navigator.pdfViewerEnabled] to determine if inline + /// > viewing of PDF files is supported. Do not infer it from this property. + /// > + /// > The "five standard plugins" are those that developers have most commonly + /// > used to feature detect inline PDF viewing. + /// > Returning these ensures that legacy code can more reliably determine + /// > whether inline viewing is supported. + /// > However this approach is not recommended for new code because this + /// > property may eventually be removed. + /// + /// Legacy browser versions also list plugins for Adobe Flash and PDF viewer + /// extensions. external PluginArray get plugins; + + /// Returns a [MimeTypeArray] object, which contains a list of [MimeType] + /// objects representing the MIME types recognized and supported by the + /// browser. + /// The array can be queried for information about the enabled plugin that is + /// used to handle a file of the specified type. + /// Named properties of the returned object are not enumerable (except in very + /// old browser versions). + /// + /// Recent versions of the specification hard-code the returned set of MIME + /// types. + /// If PDF files can be displayed inline then `application/pdf` and `text/pdf` + /// are listed. + /// Otherwise an empty list is returned. + /// + /// > **Note:** Use [Navigator.pdfViewerEnabled] to determine if inline + /// > viewing of PDF files is supported. Do not infer it from this property. + /// + /// Legacy browser versions do not hard-code the list returned by the + /// property, and might return other MIME types. external MimeTypeArray get mimeTypes; + + /// The **`pdfViewerEnabled`** read-only property of the [Navigator] interface + /// indicates whether the browser supports inline display of PDF files when + /// navigating to them. + /// + /// If inline viewing is not supported the PDF is downloaded and may then be + /// handled by some external application. + /// + /// > **Note:** This method replaces a number of legacy methods of inferring + /// > support for inline viewing of PDF files. external bool get pdfViewerEnabled; + + /// The **`navigator.hardwareConcurrency`** read-only property + /// returns the number of logical processors available to run threads on the + /// user's + /// computer. external int get hardwareConcurrency; + + /// The **`Navigator.storage`** + /// read-only property returns the singleton [StorageManager] object used to + /// access the overall storage capabilities of the browser for the current + /// site or app. + /// The returned object lets you examine and configure persistence of data + /// stores and + /// learn approximately how much more space your browser has available for + /// local storage + /// use. external StorageManager get storage; + + /// The **`locks`** read-only property of + /// the [Navigator] interface returns a [LockManager] object + /// which provides methods for requesting a new [Lock] object and querying + /// for an existing `Lock` object. external LockManager get locks; } @@ -7352,7 +11591,13 @@ extension type ImageBitmap._(JSObject _) implements JSObject { /// method disposes of all graphical resources associated with an /// `ImageBitmap`. external void close(); + + /// The read-only **`ImageBitmap.width`** property returns the [ImageBitmap] + /// object's width in CSS pixels. external int get width; + + /// The read-only **`ImageBitmap.height`** property returns the [ImageBitmap] + /// object's height in CSS pixels. external int get height; } extension type ImageBitmapOptions._(JSObject _) implements JSObject { @@ -7365,18 +11610,18 @@ extension type ImageBitmapOptions._(JSObject _) implements JSObject { ResizeQuality resizeQuality, }); - external set imageOrientation(ImageOrientation value); external ImageOrientation get imageOrientation; - external set premultiplyAlpha(PremultiplyAlpha value); + external set imageOrientation(ImageOrientation value); external PremultiplyAlpha get premultiplyAlpha; - external set colorSpaceConversion(ColorSpaceConversion value); + external set premultiplyAlpha(PremultiplyAlpha value); external ColorSpaceConversion get colorSpaceConversion; - external set resizeWidth(int value); + external set colorSpaceConversion(ColorSpaceConversion value); external int get resizeWidth; - external set resizeHeight(int value); + external set resizeWidth(int value); external int get resizeHeight; - external set resizeQuality(ResizeQuality value); + external set resizeHeight(int value); external ResizeQuality get resizeQuality; + external set resizeQuality(ResizeQuality value); } /// The **`MessageEvent`** interface represents a message received by a target @@ -7426,10 +11671,34 @@ extension type MessageEvent._(JSObject _) implements Event, JSObject { MessageEventSource? source, JSArray<MessagePort> ports, ]); + + /// The **`data`** read-only property of the + /// [MessageEvent] interface represents the data sent by the message emitter. external JSAny? get data; + + /// The **`origin`** read-only property of the + /// [MessageEvent] interface is a string representing the + /// origin of the message emitter. external String get origin; + + /// The **`lastEventId`** read-only property of the + /// [MessageEvent] interface is a string representing a + /// unique ID for the event. external String get lastEventId; + + /// The **`source`** read-only property of the + /// [MessageEvent] interface is a `MessageEventSource` (which can be + /// a , [MessagePort], or + /// [ServiceWorker] object) representing the message emitter. external MessageEventSource? get source; + + /// The **`ports`** read-only property of the + /// [MessageEvent] interface is an array of [MessagePort] objects + /// representing the ports associated with the channel the message is being + /// sent through + /// (where appropriate, e.g. in channel messaging or when sending a message to + /// a shared + /// worker). external JSArray<MessagePort> get ports; } extension type MessageEventInit._(JSObject _) implements EventInit, JSObject { @@ -7444,16 +11713,16 @@ extension type MessageEventInit._(JSObject _) implements EventInit, JSObject { JSArray<MessagePort> ports, }); - external set data(JSAny? value); external JSAny? get data; - external set origin(String value); + external set data(JSAny? value); external String get origin; - external set lastEventId(String value); + external set origin(String value); external String get lastEventId; - external set source(MessageEventSource? value); + external set lastEventId(String value); external MessageEventSource? get source; - external set ports(JSArray<MessagePort> value); + external set source(MessageEventSource? value); external JSArray<MessagePort> get ports; + external set ports(JSArray<MessagePort> value); } /// The **`EventSource`** interface is web content's interface to @@ -7519,21 +11788,33 @@ extension type EventSource._(JSObject _) implements EventTarget, JSObject { /// /// > **Note:** If the connection is already closed, the method does nothing. external void close(); + + /// The **`url`** read-only property of the + /// [EventSource] interface returns a string representing the + /// URL of the source. external String get url; + + /// The **`withCredentials`** read-only property of the + /// [EventSource] interface returns a boolean value indicating whether + /// the `EventSource` object was instantiated with CORS credentials set. external bool get withCredentials; + + /// The **`readyState`** read-only property of the + /// [EventSource] interface returns a number representing the state of the + /// connection. external int get readyState; - external set onopen(EventHandler value); external EventHandler get onopen; - external set onmessage(EventHandler value); + external set onopen(EventHandler value); external EventHandler get onmessage; - external set onerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); } extension type EventSourceInit._(JSObject _) implements JSObject { external factory EventSourceInit({bool withCredentials}); - external set withCredentials(bool value); external bool get withCredentials; + external set withCredentials(bool value); } /// The **`MessageChannel`** interface of the @@ -7548,7 +11829,17 @@ extension type EventSourceInit._(JSObject _) implements JSObject { extension type MessageChannel._(JSObject _) implements JSObject { external factory MessageChannel(); + /// The **`port1`** read-only property of the + /// [MessageChannel] interface returns the first port of the message channel — + /// the port attached to the context that originated the channel. external MessagePort get port1; + + /// The **`port2`** read-only property of the + /// [MessageChannel] interface returns the second port of the message channel + /// — + /// the port attached to the context at the other end of the channel, which + /// the message is + /// initially sent to. external MessagePort get port2; } @@ -7585,18 +11876,18 @@ extension type MessagePort._(JSObject _) implements EventTarget, JSObject { /// flow of /// messages to that port. external void close(); - external set onmessage(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; - external set onclose(EventHandler value); + external set onmessageerror(EventHandler value); external EventHandler get onclose; + external set onclose(EventHandler value); } extension type StructuredSerializeOptions._(JSObject _) implements JSObject { external factory StructuredSerializeOptions({JSArray<JSObject> transfer}); - external set transfer(JSArray<JSObject> value); external JSArray<JSObject> get transfer; + external set transfer(JSArray<JSObject> value); } /// The **`BroadcastChannel`** interface represents a named channel that any of @@ -7628,11 +11919,16 @@ extension type BroadcastChannel._(JSObject _) implements EventTarget, JSObject { /// as there is no other way for a browser to know /// that this channel is not needed anymore. external void close(); + + /// The read-only **`BroadcastChannel.name`** property returns a string, which + /// uniquely identifies the given channel with its name. This name is passed + /// to the [BroadcastChannel.BroadCastChannel] constructor at creation time + /// and is therefore read-only. external String get name; - external set onmessage(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; + external set onmessageerror(EventHandler value); } /// The **`WorkerGlobalScope`** interface of the @@ -7691,21 +11987,42 @@ extension type WorkerGlobalScope._(JSObject _) JSAny? value, [ StructuredSerializeOptions options, ]); + + /// The **`self`** read-only property of the [WorkerGlobalScope] interface + /// returns a reference to the `WorkerGlobalScope` itself. Most of the time it + /// is a specific scope like [DedicatedWorkerGlobalScope], + /// [SharedWorkerGlobalScope], or [ServiceWorkerGlobalScope]. external WorkerGlobalScope get self; + + /// The **`location`** read-only property of the [WorkerGlobalScope] interface + /// returns the [WorkerLocation] associated with the worker. It is a specific + /// location object, mostly a subset of the [Location] for browsing scopes, + /// but adapted to workers. external WorkerLocation get location; + + /// The **`navigator`** read-only property of the [WorkerGlobalScope] + /// interface returns the [WorkerNavigator] associated with the worker. It is + /// a specific navigator object, mostly a subset of the [Navigator] for + /// browsing scopes, but adapted to workers. external WorkerNavigator get navigator; - external set onerror(OnErrorEventHandler value); external OnErrorEventHandler get onerror; - external set onlanguagechange(EventHandler value); + external set onerror(OnErrorEventHandler value); external EventHandler get onlanguagechange; - external set onoffline(EventHandler value); + external set onlanguagechange(EventHandler value); external EventHandler get onoffline; - external set ononline(EventHandler value); + external set onoffline(EventHandler value); external EventHandler get ononline; - external set onrejectionhandled(EventHandler value); + external set ononline(EventHandler value); external EventHandler get onrejectionhandled; - external set onunhandledrejection(EventHandler value); + external set onrejectionhandled(EventHandler value); external EventHandler get onunhandledrejection; + external set onunhandledrejection(EventHandler value); + + /// The **`fonts`** property of the [WorkerGlobalScope] interface returns the + /// [FontFaceSet] interface of the worker. + /// + /// This property is part of the + /// [CSS Font Loading API](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Font_Loading_API). external FontFaceSet get fonts; external IDBFactory get indexedDB; external Crypto get crypto; @@ -7799,13 +12116,19 @@ extension type DedicatedWorkerGlobalScope._(JSObject _) /// be created by [Window] or by a dedicated worker that also has an /// associated owner [Window]. external void cancelAnimationFrame(int handle); + + /// The **`name`** read-only property of the + /// [DedicatedWorkerGlobalScope] interface returns the name that the + /// [Worker] was (optionally) given when it was created. This is the name that + /// the [Worker.Worker] constructor can pass to get a reference to + /// the [DedicatedWorkerGlobalScope]. external String get name; - external set onmessage(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; - external set onrtctransform(EventHandler value); + external set onmessageerror(EventHandler value); external EventHandler get onrtctransform; + external set onrtctransform(EventHandler value); } /// The **`SharedWorkerGlobalScope`** object (the [SharedWorker] global scope) @@ -7826,9 +12149,16 @@ extension type SharedWorkerGlobalScope._(JSObject _) /// discards any tasks queued in the `SharedWorkerGlobalScope`'s event loop, /// effectively closing this particular scope. external void close(); + + /// The **`name`** read-only property of the + /// [SharedWorkerGlobalScope] interface returns the name that the + /// [SharedWorker] was (optionally) given when it was created. This is the + /// name + /// that the [SharedWorker.SharedWorker] constructor can pass + /// to get a reference to the [SharedWorkerGlobalScope]. external String get name; - external set onconnect(EventHandler value); external EventHandler get onconnect; + external set onconnect(EventHandler value); } /// The **`Worker`** interface of the @@ -7878,12 +12208,12 @@ extension type Worker._(JSObject _) implements EventTarget, JSObject { JSAny? message, [ JSObject optionsOrTransfer, ]); - external set onmessage(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; - external set onerror(EventHandler value); + external set onmessageerror(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); } extension type WorkerOptions._(JSObject _) implements JSObject { external factory WorkerOptions({ @@ -7892,12 +12222,12 @@ extension type WorkerOptions._(JSObject _) implements JSObject { String name, }); - external set type(WorkerType value); external WorkerType get type; - external set credentials(RequestCredentials value); + external set type(WorkerType value); external RequestCredentials get credentials; - external set name(String value); + external set credentials(RequestCredentials value); external String get name; + external set name(String value); } /// The **`SharedWorker`** interface represents a specific kind of worker that @@ -7920,9 +12250,12 @@ extension type SharedWorker._(JSObject _) implements EventTarget, JSObject { JSAny options, ]); + /// The **`port`** property of the [SharedWorker] + /// interface returns a [MessagePort] object used to communicate and control + /// the shared worker. external MessagePort get port; - external set onerror(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); } /// The **`WorkerNavigator`** interface represents a subset of the [Navigator] @@ -7936,24 +12269,181 @@ extension type SharedWorker._(JSObject _) implements EventTarget, JSObject { /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator). extension type WorkerNavigator._(JSObject _) implements JSObject { external bool taintEnabled(); + + /// The read-only **`WorkerNavigator.mediaCapabilities`** property + /// returns a [MediaCapabilities] object that can expose information about the + /// decoding and encoding capabilities for a given format and output + /// capabilities as defined + /// by the + /// [Media Capabilities API](https://developer.mozilla.org/en-US/docs/Web/API/Media_Capabilities_API). external MediaCapabilities get mediaCapabilities; + + /// The **`WorkerNavigator.permissions`** read-only property + /// returns a [Permissions] object that can be used to query and update + /// permission status of APIs covered by the + /// [Permissions API](https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API). external Permissions get permissions; + + /// The **`serviceWorker`** read-only property of the [WorkerNavigator] + /// interface returns the [ServiceWorkerContainer] object for the + /// [associated document](https://html.spec.whatwg.org/multipage/browsers.html#concept-document-window), + /// which provides access to registration, removal, upgrade, and communication + /// with the [ServiceWorker]. + /// + /// The feature may not be available in private mode. external ServiceWorkerContainer get serviceWorker; + + /// The value of the **`WorkerNavigator.appCodeName`** property is + /// always "`Mozilla`", in any browser. This property is kept only for + /// compatibility purposes. + /// + /// > **Note:** Do not rely on this property to return a real + /// > product name. All browsers return "`Mozilla`" as the value of this + /// > property. external String get appCodeName; + + /// The value of the **`WorkerNavigator.appName`** property is always + /// "`Netscape`", in any browser. This property is kept only for compatibility + /// purposes. + /// + /// > **Note:** Do not rely on this property to return a real browser name. + /// > All browsers return "`Netscape`" as the value of this property. external String get appName; + + /// Returns either "`4.0`" or a string representing version information about + /// the browser. + /// + /// > **Note:** Do not rely on this property to return the correct browser + /// > version. external String get appVersion; + + /// Returns a string representing the platform of the browser. The + /// specification allows + /// browsers to always return the empty string, so don't rely on this property + /// to get a + /// reliable answer. external String get platform; + + /// The value of the **`WorkerNavigator.product`** property is always + /// "`Gecko`", in any browser. This property is kept only for compatibility + /// purposes. + /// + /// > **Note:** Do not rely on this property to return a real product name. + /// > All browsers return "`Gecko`" as the value of this property. external String get product; external String get productSub; + + /// The **`WorkerNavigator.userAgent`** read-only property returns the + /// user agent string for the current browser. + /// + /// > **Note:** The specification asks browsers to provide as little + /// > information via this field as + /// > possible. Never assume that the value of this property will stay the + /// > same in future + /// > versions of the same browser. Try not to use it at all, or only for + /// > current and past + /// > versions of a browser. New browsers may start using the same UA, or part + /// > of it, as an + /// > older browser: you really have no guarantee that the browser agent is + /// > indeed the one + /// > advertised by this property. + /// > + /// > Also keep in mind that users of a browser can change the value of this + /// > field if they + /// > want (UA spoofing). + /// + /// Browser identification based on detecting the user agent string is + /// **unreliable** and **is not recommended**, as the user agent + /// string is user configurable. For example: + /// + /// - In Firefox, you can change the preference `general.useragent.override` + /// in + /// `about:config`. Some Firefox extensions do that; however, this only + /// changes + /// the HTTP header that gets sent, and doesn't affect browser detection + /// performed by + /// JavaScript code. + /// - Opera 6+ allows users to set the browser identification string via a + /// menu. external String get userAgent; external String get vendor; external String get vendorSub; external String get oscpu; + + /// The **`WorkerNavigator.language`** read-only property returns + /// a string representing the preferred language of the user, usually the + /// language of the + /// browser UI. external String get language; + + /// The **`WorkerNavigator.languages`** read-only property + /// returns an array of strings representing the user's preferred + /// languages. The language is described using language tags according to + /// `5646, "Tags for Identifying Languages (also known as BCP 47)"`. In the + /// returned + /// array they are ordered by preference with the most preferred language + /// first. + /// + /// The value of [WorkerNavigator.language] is the + /// first element of the returned array. + /// + /// When its value changes, as the user's preferred languages are changed a + /// [Window.languagechange_event] event is fired on the [WorkerGlobalScope] + /// object. + /// + /// The `Accept-Language` HTTP header in every HTTP request from the user's + /// browser uses the same value for the `navigator.languages` property except + /// for + /// the extra `qvalues` (quality values) field (e.g. `en-US;q=0.8`). external JSArray<JSString> get languages; + + /// Returns the online status of the browser. The property returns a boolean + /// value, with `true` meaning online and `false` meaning offline. The + /// property sends updates whenever the browser's ability to connect to the + /// network changes. The update occurs when the user follows links or when a + /// script requests a remote page. + /// + /// For example, the property should return `false` when users click links + /// soon after they lose internet connection. + /// + /// Browsers implement this property differently. + /// + /// In Chrome and Safari, if the browser is not able to connect to a local + /// area network (LAN) or a router, it is offline; all other conditions return + /// `true`. So while you can assume that the browser is offline when it + /// returns a `false` value, you cannot assume that a true value necessarily + /// means that the browser can access the internet. You could be getting false + /// positives, such as in cases where the computer is running a virtualization + /// software that has virtual ethernet adapters that are always + /// "connected." Therefore, if you really want to determine the online status + /// of the browser, you should develop additional means for checking. To learn + /// more, see the 2011 article, + /// [Working Off the Grid](https://developer.chrome.com/docs/workbox/service-worker-overview/). + /// + /// In Firefox, switching the browser to offline mode sends a `false` value. external bool get onLine; + + /// The **`navigator.hardwareConcurrency`** read-only property + /// returns the number of logical processors available to run threads on the + /// user's + /// computer. external int get hardwareConcurrency; + + /// The **`storage`** read-only property of the [WorkerNavigator] interface + /// returns the singleton [StorageManager] object used to + /// access the overall storage capabilities of the browser for the current + /// site or app. + /// The returned object lets you examine and configure persistence of data + /// stores and + /// learn approximately how much more space your browser has available for + /// local storage + /// use. external StorageManager get storage; + + /// The **`locks`** read-only property of + /// the [WorkerNavigator] interface returns a [LockManager] + /// object which provides methods for requesting a new [Lock] object and + /// querying for an existing `Lock` object. external LockManager get locks; } @@ -7970,14 +12460,40 @@ extension type WorkerNavigator._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation). extension type WorkerLocation._(JSObject _) implements JSObject { + /// The **`href`** property of a [WorkerLocation] object returns a string + /// containing the serialized [URL] for the worker's location. external String get href; + + /// The **`origin`** property of a [WorkerLocation] object returns the + /// worker's [URL.origin]. external String get origin; + + /// The **`protocol`** property of a [WorkerLocation] object returns the + /// [URL.protocol] part of the worker's location. external String get protocol; + + /// The **`host`** property of a [WorkerLocation] object returns the + /// [URL.host] part of the worker's location. external String get host; + + /// The **`hostname`** property of a [WorkerLocation] object returns the + /// [URL.hostname] part of the worker's location. external String get hostname; + + /// The **`port`** property of a [WorkerLocation] object returns the + /// [URL.port] part of the worker's location. external String get port; + + /// The **`pathname`** property of a [WorkerLocation] object returns the + /// [URL.pathname] part of the worker's location. external String get pathname; + + /// The **`search`** property of a [WorkerLocation] object returns the + /// [URL.search] part of the worker's location. external String get search; + + /// The **`hash`** property of a [WorkerLocation] object returns the + /// [URL.hash] part of the worker's location. external String get hash; } @@ -8028,8 +12544,8 @@ extension type Worklet._(JSObject _) implements JSObject { extension type WorkletOptions._(JSObject _) implements JSObject { external factory WorkletOptions({RequestCredentials credentials}); - external set credentials(RequestCredentials value); external RequestCredentials get credentials; + external set credentials(RequestCredentials value); } /// The **`Storage`** interface of the @@ -8084,6 +12600,10 @@ extension type Storage._(JSObject _) implements JSObject { /// The **`clear()`** method of the [Storage] /// interface clears all keys stored in a given `Storage` object. external void clear(); + + /// The **`length`** read-only property of the + /// [Storage] interface returns the number of data items stored in a given + /// `Storage` object. external int get length; } @@ -8115,10 +12635,25 @@ extension type StorageEvent._(JSObject _) implements Event, JSObject { String url, Storage? storageArea, ]); + + /// The **`key`** property of the [StorageEvent] interface returns the key for + /// the storage item that was changed. external String? get key; + + /// The **`oldValue`** property of the [StorageEvent] interface returns the + /// original value of the storage item whose value changed. external String? get oldValue; + + /// The **`newValue`** property of the [StorageEvent] interface returns the + /// new value of the storage item whose value was changed. external String? get newValue; + + /// The **`url`** property of the [StorageEvent] interface returns the URL of + /// the document whose storage changed. external String get url; + + /// The **`storageArea`** property of the [StorageEvent] interface returns the + /// storage object that was affected. external Storage? get storageArea; } extension type StorageEventInit._(JSObject _) implements EventInit, JSObject { @@ -8133,16 +12668,16 @@ extension type StorageEventInit._(JSObject _) implements EventInit, JSObject { Storage? storageArea, }); - external set key(String? value); external String? get key; - external set oldValue(String? value); + external set key(String? value); external String? get oldValue; - external set newValue(String? value); + external set oldValue(String? value); external String? get newValue; - external set url(String value); + external set newValue(String? value); external String get url; - external set storageArea(Storage? value); + external set url(String value); external Storage? get storageArea; + external set storageArea(Storage? value); } /// The **`HTMLMarqueeElement`** interface provides methods to manipulate @@ -8161,28 +12696,28 @@ extension type HTMLMarqueeElement._(JSObject _) external void start(); external void stop(); - external set behavior(String value); external String get behavior; - external set bgColor(String value); + external set behavior(String value); external String get bgColor; - external set direction(String value); + external set bgColor(String value); external String get direction; - external set height(String value); + external set direction(String value); external String get height; - external set hspace(int value); + external set height(String value); external int get hspace; - external set loop(int value); + external set hspace(int value); external int get loop; - external set scrollAmount(int value); + external set loop(int value); external int get scrollAmount; - external set scrollDelay(int value); + external set scrollAmount(int value); external int get scrollDelay; - external set trueSpeed(bool value); + external set scrollDelay(int value); external bool get trueSpeed; - external set vspace(int value); + external set trueSpeed(bool value); external int get vspace; - external set width(String value); + external set vspace(int value); external String get width; + external set width(String value); } /// The **`HTMLFrameSetElement`** interface provides special properties (beyond @@ -8198,79 +12733,79 @@ extension type HTMLFrameSetElement._(JSObject _) /// Creates an [HTMLFrameSetElement] using the tag 'frameset'. HTMLFrameSetElement() : _ = document.createElement('frameset'); - external set cols(String value); external String get cols; - external set rows(String value); + external set cols(String value); external String get rows; - external set ongamepadconnected(EventHandler value); + external set rows(String value); external EventHandler get ongamepadconnected; - external set ongamepaddisconnected(EventHandler value); + external set ongamepadconnected(EventHandler value); external EventHandler get ongamepaddisconnected; - external set onafterprint(EventHandler value); + external set ongamepaddisconnected(EventHandler value); external EventHandler get onafterprint; - external set onbeforeprint(EventHandler value); + external set onafterprint(EventHandler value); external EventHandler get onbeforeprint; - external set onbeforeunload(OnBeforeUnloadEventHandler value); + external set onbeforeprint(EventHandler value); external OnBeforeUnloadEventHandler get onbeforeunload; - external set onhashchange(EventHandler value); + external set onbeforeunload(OnBeforeUnloadEventHandler value); external EventHandler get onhashchange; - external set onlanguagechange(EventHandler value); + external set onhashchange(EventHandler value); external EventHandler get onlanguagechange; - external set onmessage(EventHandler value); + external set onlanguagechange(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; - external set onoffline(EventHandler value); + external set onmessageerror(EventHandler value); external EventHandler get onoffline; - external set ononline(EventHandler value); + external set onoffline(EventHandler value); external EventHandler get ononline; - external set onpagehide(EventHandler value); + external set ononline(EventHandler value); external EventHandler get onpagehide; - external set onpagereveal(EventHandler value); + external set onpagehide(EventHandler value); external EventHandler get onpagereveal; - external set onpageshow(EventHandler value); + external set onpagereveal(EventHandler value); external EventHandler get onpageshow; - external set onpopstate(EventHandler value); + external set onpageshow(EventHandler value); external EventHandler get onpopstate; - external set onrejectionhandled(EventHandler value); + external set onpopstate(EventHandler value); external EventHandler get onrejectionhandled; - external set onstorage(EventHandler value); + external set onrejectionhandled(EventHandler value); external EventHandler get onstorage; - external set onunhandledrejection(EventHandler value); + external set onstorage(EventHandler value); external EventHandler get onunhandledrejection; - external set onunload(EventHandler value); + external set onunhandledrejection(EventHandler value); external EventHandler get onunload; + external set onunload(EventHandler value); } extension type HTMLFrameElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLFrameElement] using the tag 'frame'. HTMLFrameElement() : _ = document.createElement('frame'); - external set name(String value); external String get name; - external set scrolling(String value); + external set name(String value); external String get scrolling; - external set src(String value); + external set scrolling(String value); external String get src; - external set frameBorder(String value); + external set src(String value); external String get frameBorder; - external set longDesc(String value); + external set frameBorder(String value); external String get longDesc; - external set noResize(bool value); + external set longDesc(String value); external bool get noResize; + external set noResize(bool value); external Document? get contentDocument; external Window? get contentWindow; - external set marginHeight(String value); external String get marginHeight; - external set marginWidth(String value); + external set marginHeight(String value); external String get marginWidth; + external set marginWidth(String value); } extension type HTMLDirectoryElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLDirectoryElement] using the tag 'dir'. HTMLDirectoryElement() : _ = document.createElement('dir'); - external set compact(bool value); external bool get compact; + external set compact(bool value); } /// Implements the document object model (DOM) representation of the font @@ -8285,12 +12820,86 @@ extension type HTMLFontElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLFontElement] using the tag 'font'. HTMLFontElement() : _ = document.createElement('font'); - external set color(String value); + /// The obsolete + /// **`HTMLFontElement.color`** + /// property is a string that reflects the + /// [`color`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/font#color) + /// HTML attribute, containing either a named color or a color specified in + /// the + /// hexadecimal #RRGGBB format. + /// + /// The format of the string must follow one of the following HTML + /// microsyntaxes: + /// + /// | Microsyntax | Description | Examples | + /// | ------------------------ | ---------------------------------------------------------------- | ------------------------- | + /// | Valid name color string | _nameOfColor (case insensitive)_ | `Green`, `green`, `GREEN` | + /// | Valid hex color string | _in_ _: #RRGGBB_ | `#008000` | + /// | RGB using decimal values | _rgb(x,x,x) (x in 0-255 range)_ | `rgb(0 128 0)` | external String get color; - external set face(String value); + external set color(String value); + + /// The obsolete + /// **`HTMLFontElement.face`** + /// property is a string that reflects the + /// [`face`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/font#face) + /// HTML attribute, containing a comma-separated list of one or more font + /// names. + /// + /// The document text, in the default style, is rendered as the first font + /// face that the + /// client's browser supports. If no font listed is installed on the local + /// system, the + /// browser typically defaults to the proportional or fixed-width font for + /// that system. + /// + /// The format of the string must follow one of the following HTML + /// microsyntax: + /// + /// | Microsyntax | Description | Examples | + /// | ------------------------------------------- | ------------------------------------------------------------------- | ----------------- | + /// | List of one or more valid font family names | _A list of font names, that have to be present on the local system_ | `courier,verdana` | external String get face; - external set size(String value); + external set face(String value); + + /// The obsolete + /// **`HTMLFontElement.size`** property is a + /// string that reflects the + /// [`size`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/font#size) + /// HTML + /// attribute. It contains either a font size ranging from 1 to 7 or a + /// number relative to the default value 3, for example -2 or +1. + /// + /// The format of the string must follow one of the following HTML + /// microsyntaxes: + /// + /// <table class="no-markdown"> + /// <thead> + /// <tr> + /// <th scope="col">Microsyntax</th> + /// <th scope="col">Description</th> + /// <th scope="col">Examples</th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td>Valid size number string</td> + /// <td><em>integer number in the range of 1-7</em></td> + /// <td><code>6</code></td> + /// </tr> + /// <tr> + /// <td>Relative size string</td> + /// <td> + /// <em>+x or -x, where x is a number relative to 3 (the result should be in the range of 1-7)</em> + /// </td> + /// <td> + /// <code>+2<br />-1</code> + /// </td> + /// </tr> + /// </tbody> + /// </table> external String get size; + external set size(String value); } /// The **`HTMLParamElement`** interface provides special properties (beyond @@ -8306,14 +12915,14 @@ extension type HTMLParamElement._(JSObject _) implements HTMLElement, JSObject { /// Creates an [HTMLParamElement] using the tag 'param'. HTMLParamElement() : _ = document.createElement('param'); - external set name(String value); external String get name; - external set value(String value); + external set name(String value); external String get value; - external set type(String value); + external set value(String value); external String get type; - external set valueType(String value); + external set type(String value); external String get valueType; + external set valueType(String value); } extension type External._(JSObject _) implements JSObject { external void AddSearchProvider(); diff --git a/lib/src/dom/indexeddb.dart b/lib/src/dom/indexeddb.dart index cfbffedf..50c8e5a1 100644 --- a/lib/src/dom/indexeddb.dart +++ b/lib/src/dom/indexeddb.dart @@ -54,15 +54,53 @@ typedef IDBTransactionMode = String; /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest). extension type IDBRequest._(JSObject _) implements EventTarget, JSObject { + /// The **`result`** read-only property of the + /// [IDBRequest] interface returns the result of the request. If the request + /// is not completed, the result is not available and an `InvalidStateError` + /// exception is + /// thrown. external JSAny? get result; + + /// The **`error`** read-only property of the + /// [IDBRequest] interface returns the error in the event of an unsuccessful + /// request. external DOMException? get error; + + /// The **`source`** read-only property of the + /// [IDBRequest] interface returns the source of the request, such as an + /// Index or an object store. If no source exists (such as when calling + /// [IDBFactory.open]), it returns null. external JSObject? get source; + + /// The **`transaction`** read-only property of the IDBRequest + /// interface returns the transaction for the request, that is, the + /// transaction the + /// request is being made inside. + /// + /// This property can be `null` for requests not made within transactions, + /// such as for requests returned from [IDBFactory.open] — in this case + /// you're just connecting to a database, so there is no transaction to + /// return. If a + /// version upgrade is needed when opening a database then during the + /// [IDBOpenDBRequest.upgradeneeded_event] event handler the + /// **`transaction`** property will be an + /// [IDBTransaction] with [IDBTransaction.mode] equal + /// to `"versionchange"`, and can be used to access existing object stores and + /// indexes, or abort the upgrade. Following the upgrade, the + /// **`transaction`** property will again be `null`. external IDBTransaction? get transaction; + + /// The **`readyState`** read-only property of the + /// [IDBRequest] interface returns the state of the request. + /// + /// Every request starts in the `pending` state. The state changes to + /// `done` when the request completes successfully or when an error + /// occurs. external IDBRequestReadyState get readyState; - external set onsuccess(EventHandler value); external EventHandler get onsuccess; - external set onerror(EventHandler value); + external set onsuccess(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); } /// The **`IDBOpenDBRequest`** interface of the IndexedDB API provides access to @@ -75,10 +113,10 @@ extension type IDBRequest._(JSObject _) implements EventTarget, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest). extension type IDBOpenDBRequest._(JSObject _) implements IDBRequest, JSObject { - external set onblocked(EventHandler value); external EventHandler get onblocked; - external set onupgradeneeded(EventHandler value); + external set onblocked(EventHandler value); external EventHandler get onupgradeneeded; + external set onupgradeneeded(EventHandler value); } /// The **`IDBVersionChangeEvent`** interface of the @@ -96,7 +134,17 @@ extension type IDBVersionChangeEvent._(JSObject _) implements Event, JSObject { IDBVersionChangeEventInit eventInitDict, ]); + /// The **`oldVersion`** read-only property of the + /// [IDBVersionChangeEvent] interface returns the old version number of the + /// database. + /// + /// When the opened database doesn't exist yet, the value of `oldVersion` is + /// 0. external int get oldVersion; + + /// The **`newVersion`** read-only property of the + /// [IDBVersionChangeEvent] interface returns the new version number of the + /// database. external int? get newVersion; } extension type IDBVersionChangeEventInit._(JSObject _) @@ -109,10 +157,10 @@ extension type IDBVersionChangeEventInit._(JSObject _) int? newVersion, }); - external set oldVersion(int value); external int get oldVersion; - external set newVersion(int? value); + external set oldVersion(int value); external int? get newVersion; + external set newVersion(int? value); } /// The **`IDBFactory`** interface of the @@ -196,10 +244,10 @@ extension type IDBDatabaseInfo._(JSObject _) implements JSObject { int version, }); - external set name(String value); external String get name; - external set version(int value); + external set name(String value); external int get version; + external set version(int value); } /// The **`IDBDatabase`** interface of the IndexedDB API provides a @@ -274,23 +322,39 @@ extension type IDBDatabase._(JSObject _) implements EventTarget, JSObject { /// [`versionchange`](https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction#version_change) /// transaction. external void deleteObjectStore(String name); + + /// The **`name`** read-only property of the + /// `IDBDatabase` interface is a string that contains the + /// name of the connected database. external String get name; + + /// The **`version`** property of the [IDBDatabase] + /// interface is a + /// [64-bit integer](https://developer.mozilla.org/en-US/docs/NSPR_API_Reference/Long_Long_%2864-bit%29_Integers) + /// that contains the version of the connected database. + /// When a database is first created, this attribute is an empty string. external int get version; + + /// The **`objectStoreNames`** read-only property of the + /// [IDBDatabase] interface is a [DOMStringList] containing a + /// list of the names of the + /// [object stores](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Basic_Terminology#object_store) + /// currently in the connected database. external DOMStringList get objectStoreNames; - external set onabort(EventHandler value); external EventHandler get onabort; - external set onclose(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onclose; - external set onerror(EventHandler value); + external set onclose(EventHandler value); external EventHandler get onerror; - external set onversionchange(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onversionchange; + external set onversionchange(EventHandler value); } extension type IDBTransactionOptions._(JSObject _) implements JSObject { external factory IDBTransactionOptions({IDBTransactionDurability durability}); - external set durability(IDBTransactionDurability value); external IDBTransactionDurability get durability; + external set durability(IDBTransactionDurability value); } extension type IDBObjectStoreParameters._(JSObject _) implements JSObject { external factory IDBObjectStoreParameters({ @@ -298,10 +362,10 @@ extension type IDBObjectStoreParameters._(JSObject _) implements JSObject { bool autoIncrement, }); - external set keyPath(JSAny? value); external JSAny? get keyPath; - external set autoIncrement(bool value); + external set keyPath(JSAny? value); external bool get autoIncrement; + external set autoIncrement(bool value); } /// The **`IDBObjectStore`** interface of the @@ -547,11 +611,39 @@ extension type IDBObjectStore._(JSObject _) implements JSObject { /// mode callback. Note that this method synchronously modifies the /// [IDBObjectStore.indexNames] property. external void deleteIndex(String name); - external set name(String value); + + /// The **`name`** property of the [IDBObjectStore] + /// interface indicates the name of this object store. external String get name; + external set name(String value); + + /// The **`keyPath`** read-only property of the + /// [IDBObjectStore] interface returns the + /// [key path](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Basic_Terminology#key_path) + /// of this object store. + /// + /// If this property is null, the application must provide a key for each + /// modification + /// operation. external JSAny? get keyPath; + + /// The **`indexNames`** read-only property of the + /// [IDBObjectStore] interface returns a list of the names of + /// [indexes](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Basic_Terminology#index) + /// on objects + /// in this object store. external DOMStringList get indexNames; + + /// The **`transaction`** read-only property of the + /// [IDBObjectStore] interface returns the transaction object to which this + /// object store belongs. external IDBTransaction get transaction; + + /// The **`autoIncrement`** read-only property of the + /// [IDBObjectStore] interface returns the value of the auto increment flag + /// for this object store. + /// + /// Note that every object store has its own separate auto increment counter. external bool get autoIncrement; } extension type IDBIndexParameters._(JSObject _) implements JSObject { @@ -560,10 +652,10 @@ extension type IDBIndexParameters._(JSObject _) implements JSObject { bool multiEntry, }); - external set unique(bool value); external bool get unique; - external set multiEntry(bool value); + external set unique(bool value); external bool get multiEntry; + external set multiEntry(bool value); } /// `IDBIndex` interface of the @@ -694,11 +786,39 @@ extension type IDBIndex._(JSObject _) implements JSObject { JSAny? query, IDBCursorDirection direction, ]); - external set name(String value); + + /// The **`name`** property of the [IDBIndex] + /// interface contains a string which names the index. external String get name; + external set name(String value); + + /// The **`objectStore`** property of the [IDBIndex] + /// interface returns the object store referenced by the current index. external IDBObjectStore get objectStore; + + /// The **`keyPath`** property of the [IDBIndex] + /// interface returns the + /// [key path](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Basic_Terminology#key_path) + /// of the current index. If null, this index is not auto-populated. external JSAny? get keyPath; + + /// The **`multiEntry`** read-only property of the + /// [IDBIndex] interface returns a boolean value that affects how the index + /// behaves when the result of evaluating the index's key path yields an + /// array. + /// + /// This is decided when the index is created, using the + /// [IDBObjectStore.createIndex] method. This method takes an optional + /// `options` parameter whose `multiEntry` property is set to `true`/`false`. external bool get multiEntry; + + /// The **`unique`** read-only property returns a boolean that + /// states whether the index allows duplicate keys. + /// + /// This is decided when the index is created, using the + /// [IDBObjectStore.createIndex] method. This method takes an optional + /// parameter, `unique`, which if set to `true` means that the index + /// will not be able to accept duplicate entries. external bool get unique; } @@ -769,9 +889,23 @@ extension type IDBKeyRange._(JSObject _) implements JSObject { /// the key /// range. external bool includes(JSAny? key); + + /// The **`lower`** read-only property of the + /// [IDBKeyRange] interface returns the lower bound of the key range. external JSAny? get lower; + + /// The **`upper`** read-only property of the + /// [IDBKeyRange] interface returns the upper bound of the key range. external JSAny? get upper; + + /// The **`lowerOpen`** read-only property of the + /// [IDBKeyRange] interface returns a boolean indicating whether the + /// lower-bound value is included in the key range. external bool get lowerOpen; + + /// The **`upperOpen`** read-only property of the + /// [IDBKeyRange] interface returns a boolean indicating whether the + /// upper-bound value is included in the key range. external bool get upperOpen; } @@ -863,10 +997,38 @@ extension type IDBCursor._(JSObject _) implements JSObject { /// [IDBIndex.openKeyCursor]. For such needs, you have to use /// [IDBIndex.openCursor] instead. external IDBRequest delete(); + + /// The **`source`** read-only property of the + /// [IDBCursor] interface returns the [IDBObjectStore] or + /// [IDBIndex] that the cursor is iterating over. This function never returns + /// null or throws an exception, even if the cursor is currently being + /// iterated, has + /// iterated past its end, or its transaction is not active. external JSObject get source; + + /// The **`direction`** read-only property of the + /// [IDBCursor] interface is a string that returns the + /// direction of traversal of the cursor (set using + /// [IDBObjectStore.openCursor] for example). See the [Values](#values) + /// section below for possible values. external IDBCursorDirection get direction; + + /// The **`key`** read-only property of the + /// [IDBCursor] interface returns the key for the record at the cursor's + /// position. If the cursor is outside its range, this is set to undefined. + /// The cursor's + /// key can be any data type. external JSAny? get key; + + /// The **`primaryKey`** read-only property of the + /// [IDBCursor] interface returns the cursor's current effective key. If the + /// cursor is currently being iterated or has iterated outside its range, this + /// is set to + /// undefined. The cursor's primary key can be any data type. external JSAny? get primaryKey; + + /// The **`request`** read-only property of the [IDBCursor] interface returns + /// the [IDBRequest] used to obtain the cursor. external IDBRequest get request; } @@ -892,6 +1054,9 @@ extension type IDBCursor._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue). extension type IDBCursorWithValue._(JSObject _) implements IDBCursor, JSObject { + /// The **`value`** read-only property of the + /// [IDBCursorWithValue] interface returns the value of the current cursor, + /// whatever that is. external JSAny? get value; } @@ -956,15 +1121,43 @@ extension type IDBTransaction._(JSObject _) implements EventTarget, JSObject { /// All pending [IDBRequest] objects created during this transaction have /// their [IDBRequest.error] attribute set to an `AbortError` [DOMException]. external void abort(); + + /// The **`objectStoreNames`** read-only property of the + /// [IDBTransaction] interface returns a [DOMStringList] of names + /// of [IDBObjectStore] objects. external DOMStringList get objectStoreNames; + + /// The **`mode`** read-only property of the + /// [IDBTransaction] interface returns the current mode for accessing the + /// data in the object stores in the scope of the transaction (i.e. is the + /// mode to be + /// read-only, or do you want to write to the object stores?) The default + /// value is + /// `readonly`. external IDBTransactionMode get mode; + + /// The **`durability`** read-only property of the + /// [IDBTransaction] interface returns the durability hint the transaction was + /// created with. This is a hint to the user agent of whether to prioritize + /// performance or + /// durability when committing the transaction. + /// + /// The value of this property is defined in the `options` parameter when + /// creating a transaction using [IDBDatabase.transaction]. external IDBTransactionDurability get durability; + + /// The **`db`** read-only property of the [IDBTransaction] interface returns + /// the database connection + /// with which this transaction is associated. external IDBDatabase get db; + + /// The **`IDBTransaction.error`** property of the [IDBTransaction] interface + /// returns the type of error when there is an unsuccessful transaction. external DOMException? get error; - external set onabort(EventHandler value); external EventHandler get onabort; - external set oncomplete(EventHandler value); + external set onabort(EventHandler value); external EventHandler get oncomplete; - external set onerror(EventHandler value); + external set oncomplete(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); } diff --git a/lib/src/dom/intersection_observer.dart b/lib/src/dom/intersection_observer.dart index 962e20dc..126d526f 100644 --- a/lib/src/dom/intersection_observer.dart +++ b/lib/src/dom/intersection_observer.dart @@ -104,9 +104,48 @@ extension type IntersectionObserver._(JSObject _) implements JSObject { /// > intersection list, so /// > the callback will not be run. external JSArray<IntersectionObserverEntry> takeRecords(); + + /// The [IntersectionObserver] interface's read-only + /// **`root`** property identifies the [Element] or + /// [Document] whose bounds are treated as the + /// of the for the element which is the observer's target. + /// + /// If the `root` is `null`, then the bounds of the actual document + /// viewport are used. external JSObject? get root; + + /// The [IntersectionObserver] interface's read-only + /// **`rootMargin`** property is a string with syntax similar to + /// that of the CSS `margin` property. Each side of the rectangle represented + /// by `rootMargin` is added to the corresponding side in the + /// [IntersectionObserver.root] element's + /// before the intersection test is performed. This lets you, for example, + /// adjust the bounds + /// outward so that the target element is considered 100% visible even if a + /// certain number + /// of pixels worth of width or height is clipped away, or treat the target as + /// partially + /// hidden if an edge is too close to the edge of the root's bounding box. + /// + /// See + /// [how intersections are calculated](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#how_intersection_is_calculated) + /// for a more in-depth look at the root margin and how it works with + /// the root's bounding box. external String get rootMargin; external String get scrollMargin; + + /// The [IntersectionObserver] interface's read-only + /// **`thresholds`** property returns the list of intersection + /// thresholds that was specified when the observer was instantiated with + /// [IntersectionObserver.IntersectionObserver]. If + /// only one threshold ratio was provided when instantiating the object, this + /// will be an + /// array containing that single value. + /// + /// See the + /// [Intersection Observer](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#thresholds) + /// page to + /// learn how thresholds work. external JSArray<JSNumber> get thresholds; } @@ -127,12 +166,54 @@ extension type IntersectionObserverEntry._(JSObject _) implements JSObject { external factory IntersectionObserverEntry( IntersectionObserverEntryInit intersectionObserverEntryInit); + /// The [IntersectionObserverEntry] interface's + /// read-only **`time`** property is a + /// [DOMHighResTimeStamp] that indicates the time at which the intersection + /// change occurred relative to the time at which the document was created. external DOMHighResTimeStamp get time; + + /// The [IntersectionObserverEntry] interface's + /// read-only **`rootBounds`** property is a + /// [DOMRectReadOnly] corresponding to the + /// [IntersectionObserverEntry.target]'s root intersection + /// rectangle, offset by the [IntersectionObserver.rootMargin] if one is + /// specified. external DOMRectReadOnly? get rootBounds; + + /// The [IntersectionObserverEntry] interface's read-only + /// **`boundingClientRect`** property returns a + /// [DOMRectReadOnly] which in essence describes a rectangle describing the + /// smallest rectangle that contains the entire target element. external DOMRectReadOnly get boundingClientRect; + + /// The [IntersectionObserverEntry] interface's + /// read-only **`intersectionRect`** property is a + /// [DOMRectReadOnly] object which describes the smallest rectangle that + /// contains the entire portion of the target element which is currently + /// visible within + /// the intersection root. external DOMRectReadOnly get intersectionRect; + + /// The [IntersectionObserverEntry] interface's + /// read-only **`isIntersecting`** property is a Boolean value + /// which is `true` if the target element intersects with the intersection + /// observer's root. If this is `true`, then, the + /// `IntersectionObserverEntry` describes a transition into a state of + /// intersection; if it's `false`, then you know the transition is from + /// intersecting to not-intersecting. external bool get isIntersecting; + + /// The [IntersectionObserverEntry] interface's + /// read-only **`intersectionRatio`** property tells you how much + /// of the target element is currently visible within the root's intersection + /// ratio, as a + /// value between 0.0 and 1.0. external num get intersectionRatio; + + /// The [IntersectionObserverEntry] interface's + /// read-only **`target`** property indicates which targeted + /// [Element] has changed its amount of intersection with the intersection + /// root. external Element get target; } extension type IntersectionObserverEntryInit._(JSObject _) implements JSObject { @@ -146,20 +227,20 @@ extension type IntersectionObserverEntryInit._(JSObject _) implements JSObject { required Element target, }); - external set time(DOMHighResTimeStamp value); external DOMHighResTimeStamp get time; - external set rootBounds(DOMRectInit? value); + external set time(DOMHighResTimeStamp value); external DOMRectInit? get rootBounds; - external set boundingClientRect(DOMRectInit value); + external set rootBounds(DOMRectInit? value); external DOMRectInit get boundingClientRect; - external set intersectionRect(DOMRectInit value); + external set boundingClientRect(DOMRectInit value); external DOMRectInit get intersectionRect; - external set isIntersecting(bool value); + external set intersectionRect(DOMRectInit value); external bool get isIntersecting; - external set intersectionRatio(num value); + external set isIntersecting(bool value); external num get intersectionRatio; - external set target(Element value); + external set intersectionRatio(num value); external Element get target; + external set target(Element value); } extension type IntersectionObserverInit._(JSObject _) implements JSObject { external factory IntersectionObserverInit({ @@ -169,12 +250,12 @@ extension type IntersectionObserverInit._(JSObject _) implements JSObject { JSAny threshold, }); - external set root(JSObject? value); external JSObject? get root; - external set rootMargin(String value); + external set root(JSObject? value); external String get rootMargin; - external set scrollMargin(String value); + external set rootMargin(String value); external String get scrollMargin; - external set threshold(JSAny value); + external set scrollMargin(String value); external JSAny get threshold; + external set threshold(JSAny value); } diff --git a/lib/src/dom/mathml_core.dart b/lib/src/dom/mathml_core.dart index 5e57deb8..9db12244 100644 --- a/lib/src/dom/mathml_core.dart +++ b/lib/src/dom/mathml_core.dart @@ -239,212 +239,252 @@ extension type MathMLElement._(JSObject _) implements Element, JSObject { external void focus([FocusOptions options]); external void blur(); external StylePropertyMap get attributeStyleMap; + + /// The read-only **`style`** property of the [MathMLElement] returns the + /// _inline_ style of an element in the form of a live [CSSStyleDeclaration] + /// object that contains a list of all styles properties for that element with + /// values assigned only for the attributes that are defined in the element's + /// inline + /// [`style`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/style) + /// attribute. + /// + /// Shorthand properties are expanded. If you set `style="border-top: 1px + /// solid black"`, the longhand properties (, , and ) are set instead. + /// + /// This property is read-only, meaning it is not possible to assign a + /// [CSSStyleDeclaration] object to it. Nevertheless, it is possible to set an + /// inline style by assigning a _string_ directly to the `style` property. In + /// this case the string is forwarded to [CSSStyleDeclaration.cssText]. Using + /// `style` in this manner will completely overwrite all inline styles on the + /// element. + /// + /// Therefore, to add specific styles to an element without altering other + /// style values, it is generally preferable to set individual properties on + /// the [CSSStyleDeclaration] object. For example, you can write + /// `element.style.backgroundColor = "red"`. + /// + /// A style declaration is reset by setting it to `null` or an empty string, + /// e.g., `elt.style.color = null`. + /// + /// > **Note:** CSS property names are converted to JavaScript identifier with + /// > these rules: + /// > + /// > - If the property is made of one word, it remains as it is: `height` + /// > stays as is (in lowercase). + /// > - If the property is made of several words, separated by dashes, the + /// > dashes are removed and it is converted to : `background-attachment` + /// > becomes `backgroundAttachment`. + /// > - The property `float`, being a reserved JavaScript keyword, is + /// > converted to `cssFloat`. + /// > + /// > The `style` property has the same priority in the CSS cascade as an + /// > inline style declaration set via the `style` attribute. external CSSStyleDeclaration get style; - external set onanimationstart(EventHandler value); external EventHandler get onanimationstart; - external set onanimationiteration(EventHandler value); + external set onanimationstart(EventHandler value); external EventHandler get onanimationiteration; - external set onanimationend(EventHandler value); + external set onanimationiteration(EventHandler value); external EventHandler get onanimationend; - external set onanimationcancel(EventHandler value); + external set onanimationend(EventHandler value); external EventHandler get onanimationcancel; - external set ontransitionrun(EventHandler value); + external set onanimationcancel(EventHandler value); external EventHandler get ontransitionrun; - external set ontransitionstart(EventHandler value); + external set ontransitionrun(EventHandler value); external EventHandler get ontransitionstart; - external set ontransitionend(EventHandler value); + external set ontransitionstart(EventHandler value); external EventHandler get ontransitionend; - external set ontransitioncancel(EventHandler value); + external set ontransitionend(EventHandler value); external EventHandler get ontransitioncancel; - external set onabort(EventHandler value); + external set ontransitioncancel(EventHandler value); external EventHandler get onabort; - external set onauxclick(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onauxclick; - external set onbeforeinput(EventHandler value); + external set onauxclick(EventHandler value); external EventHandler get onbeforeinput; - external set onbeforematch(EventHandler value); + external set onbeforeinput(EventHandler value); external EventHandler get onbeforematch; - external set onbeforetoggle(EventHandler value); + external set onbeforematch(EventHandler value); external EventHandler get onbeforetoggle; - external set onblur(EventHandler value); + external set onbeforetoggle(EventHandler value); external EventHandler get onblur; - external set oncancel(EventHandler value); + external set onblur(EventHandler value); external EventHandler get oncancel; - external set oncanplay(EventHandler value); + external set oncancel(EventHandler value); external EventHandler get oncanplay; - external set oncanplaythrough(EventHandler value); + external set oncanplay(EventHandler value); external EventHandler get oncanplaythrough; - external set onchange(EventHandler value); + external set oncanplaythrough(EventHandler value); external EventHandler get onchange; - external set onclick(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onclick; - external set onclose(EventHandler value); + external set onclick(EventHandler value); external EventHandler get onclose; - external set oncontextlost(EventHandler value); + external set onclose(EventHandler value); external EventHandler get oncontextlost; - external set oncontextmenu(EventHandler value); + external set oncontextlost(EventHandler value); external EventHandler get oncontextmenu; - external set oncontextrestored(EventHandler value); + external set oncontextmenu(EventHandler value); external EventHandler get oncontextrestored; - external set oncopy(EventHandler value); + external set oncontextrestored(EventHandler value); external EventHandler get oncopy; - external set oncuechange(EventHandler value); + external set oncopy(EventHandler value); external EventHandler get oncuechange; - external set oncut(EventHandler value); + external set oncuechange(EventHandler value); external EventHandler get oncut; - external set ondblclick(EventHandler value); + external set oncut(EventHandler value); external EventHandler get ondblclick; - external set ondrag(EventHandler value); + external set ondblclick(EventHandler value); external EventHandler get ondrag; - external set ondragend(EventHandler value); + external set ondrag(EventHandler value); external EventHandler get ondragend; - external set ondragenter(EventHandler value); + external set ondragend(EventHandler value); external EventHandler get ondragenter; - external set ondragleave(EventHandler value); + external set ondragenter(EventHandler value); external EventHandler get ondragleave; - external set ondragover(EventHandler value); + external set ondragleave(EventHandler value); external EventHandler get ondragover; - external set ondragstart(EventHandler value); + external set ondragover(EventHandler value); external EventHandler get ondragstart; - external set ondrop(EventHandler value); + external set ondragstart(EventHandler value); external EventHandler get ondrop; - external set ondurationchange(EventHandler value); + external set ondrop(EventHandler value); external EventHandler get ondurationchange; - external set onemptied(EventHandler value); + external set ondurationchange(EventHandler value); external EventHandler get onemptied; - external set onended(EventHandler value); + external set onemptied(EventHandler value); external EventHandler get onended; - external set onerror(OnErrorEventHandler value); + external set onended(EventHandler value); external OnErrorEventHandler get onerror; - external set onfocus(EventHandler value); + external set onerror(OnErrorEventHandler value); external EventHandler get onfocus; - external set onformdata(EventHandler value); + external set onfocus(EventHandler value); external EventHandler get onformdata; - external set oninput(EventHandler value); + external set onformdata(EventHandler value); external EventHandler get oninput; - external set oninvalid(EventHandler value); + external set oninput(EventHandler value); external EventHandler get oninvalid; - external set onkeydown(EventHandler value); + external set oninvalid(EventHandler value); external EventHandler get onkeydown; - external set onkeypress(EventHandler value); + external set onkeydown(EventHandler value); external EventHandler get onkeypress; - external set onkeyup(EventHandler value); + external set onkeypress(EventHandler value); external EventHandler get onkeyup; - external set onload(EventHandler value); + external set onkeyup(EventHandler value); external EventHandler get onload; - external set onloadeddata(EventHandler value); + external set onload(EventHandler value); external EventHandler get onloadeddata; - external set onloadedmetadata(EventHandler value); + external set onloadeddata(EventHandler value); external EventHandler get onloadedmetadata; - external set onloadstart(EventHandler value); + external set onloadedmetadata(EventHandler value); external EventHandler get onloadstart; - external set onmousedown(EventHandler value); + external set onloadstart(EventHandler value); external EventHandler get onmousedown; - external set onmouseenter(EventHandler value); + external set onmousedown(EventHandler value); external EventHandler get onmouseenter; - external set onmouseleave(EventHandler value); + external set onmouseenter(EventHandler value); external EventHandler get onmouseleave; - external set onmousemove(EventHandler value); + external set onmouseleave(EventHandler value); external EventHandler get onmousemove; - external set onmouseout(EventHandler value); + external set onmousemove(EventHandler value); external EventHandler get onmouseout; - external set onmouseover(EventHandler value); + external set onmouseout(EventHandler value); external EventHandler get onmouseover; - external set onmouseup(EventHandler value); + external set onmouseover(EventHandler value); external EventHandler get onmouseup; - external set onpaste(EventHandler value); + external set onmouseup(EventHandler value); external EventHandler get onpaste; - external set onpause(EventHandler value); + external set onpaste(EventHandler value); external EventHandler get onpause; - external set onplay(EventHandler value); + external set onpause(EventHandler value); external EventHandler get onplay; - external set onplaying(EventHandler value); + external set onplay(EventHandler value); external EventHandler get onplaying; - external set onprogress(EventHandler value); + external set onplaying(EventHandler value); external EventHandler get onprogress; - external set onratechange(EventHandler value); + external set onprogress(EventHandler value); external EventHandler get onratechange; - external set onreset(EventHandler value); + external set onratechange(EventHandler value); external EventHandler get onreset; - external set onresize(EventHandler value); + external set onreset(EventHandler value); external EventHandler get onresize; - external set onscroll(EventHandler value); + external set onresize(EventHandler value); external EventHandler get onscroll; - external set onscrollend(EventHandler value); + external set onscroll(EventHandler value); external EventHandler get onscrollend; - external set onsecuritypolicyviolation(EventHandler value); + external set onscrollend(EventHandler value); external EventHandler get onsecuritypolicyviolation; - external set onseeked(EventHandler value); + external set onsecuritypolicyviolation(EventHandler value); external EventHandler get onseeked; - external set onseeking(EventHandler value); + external set onseeked(EventHandler value); external EventHandler get onseeking; - external set onselect(EventHandler value); + external set onseeking(EventHandler value); external EventHandler get onselect; - external set onslotchange(EventHandler value); + external set onselect(EventHandler value); external EventHandler get onslotchange; - external set onstalled(EventHandler value); + external set onslotchange(EventHandler value); external EventHandler get onstalled; - external set onsubmit(EventHandler value); + external set onstalled(EventHandler value); external EventHandler get onsubmit; - external set onsuspend(EventHandler value); + external set onsubmit(EventHandler value); external EventHandler get onsuspend; - external set ontimeupdate(EventHandler value); + external set onsuspend(EventHandler value); external EventHandler get ontimeupdate; - external set ontoggle(EventHandler value); + external set ontimeupdate(EventHandler value); external EventHandler get ontoggle; - external set onvolumechange(EventHandler value); + external set ontoggle(EventHandler value); external EventHandler get onvolumechange; - external set onwaiting(EventHandler value); + external set onvolumechange(EventHandler value); external EventHandler get onwaiting; - external set onwebkitanimationend(EventHandler value); + external set onwaiting(EventHandler value); external EventHandler get onwebkitanimationend; - external set onwebkitanimationiteration(EventHandler value); + external set onwebkitanimationend(EventHandler value); external EventHandler get onwebkitanimationiteration; - external set onwebkitanimationstart(EventHandler value); + external set onwebkitanimationiteration(EventHandler value); external EventHandler get onwebkitanimationstart; - external set onwebkittransitionend(EventHandler value); + external set onwebkitanimationstart(EventHandler value); external EventHandler get onwebkittransitionend; - external set onwheel(EventHandler value); + external set onwebkittransitionend(EventHandler value); external EventHandler get onwheel; - external set onpointerover(EventHandler value); + external set onwheel(EventHandler value); external EventHandler get onpointerover; - external set onpointerenter(EventHandler value); + external set onpointerover(EventHandler value); external EventHandler get onpointerenter; - external set onpointerdown(EventHandler value); + external set onpointerenter(EventHandler value); external EventHandler get onpointerdown; - external set onpointermove(EventHandler value); + external set onpointerdown(EventHandler value); external EventHandler get onpointermove; - external set onpointerrawupdate(EventHandler value); + external set onpointermove(EventHandler value); external EventHandler get onpointerrawupdate; - external set onpointerup(EventHandler value); + external set onpointerrawupdate(EventHandler value); external EventHandler get onpointerup; - external set onpointercancel(EventHandler value); + external set onpointerup(EventHandler value); external EventHandler get onpointercancel; - external set onpointerout(EventHandler value); + external set onpointercancel(EventHandler value); external EventHandler get onpointerout; - external set onpointerleave(EventHandler value); + external set onpointerout(EventHandler value); external EventHandler get onpointerleave; - external set ongotpointercapture(EventHandler value); + external set onpointerleave(EventHandler value); external EventHandler get ongotpointercapture; - external set onlostpointercapture(EventHandler value); + external set ongotpointercapture(EventHandler value); external EventHandler get onlostpointercapture; - external set onselectstart(EventHandler value); + external set onlostpointercapture(EventHandler value); external EventHandler get onselectstart; - external set onselectionchange(EventHandler value); + external set onselectstart(EventHandler value); external EventHandler get onselectionchange; - external set ontouchstart(EventHandler value); + external set onselectionchange(EventHandler value); external EventHandler get ontouchstart; - external set ontouchend(EventHandler value); + external set ontouchstart(EventHandler value); external EventHandler get ontouchend; - external set ontouchmove(EventHandler value); + external set ontouchend(EventHandler value); external EventHandler get ontouchmove; - external set ontouchcancel(EventHandler value); + external set ontouchmove(EventHandler value); external EventHandler get ontouchcancel; + external set ontouchcancel(EventHandler value); external DOMStringMap get dataset; - external set nonce(String value); external String get nonce; - external set autofocus(bool value); + external set nonce(String value); external bool get autofocus; - external set tabIndex(int value); + external set autofocus(bool value); external int get tabIndex; + external set tabIndex(int value); } diff --git a/lib/src/dom/media_capabilities.dart b/lib/src/dom/media_capabilities.dart index e2b8505f..5a7adf18 100644 --- a/lib/src/dom/media_capabilities.dart +++ b/lib/src/dom/media_capabilities.dart @@ -26,10 +26,10 @@ extension type MediaConfiguration._(JSObject _) implements JSObject { AudioConfiguration audio, }); - external set video(VideoConfiguration value); external VideoConfiguration get video; - external set audio(AudioConfiguration value); + external set video(VideoConfiguration value); external AudioConfiguration get audio; + external set audio(AudioConfiguration value); } extension type MediaDecodingConfiguration._(JSObject _) implements MediaConfiguration, JSObject { @@ -40,11 +40,11 @@ extension type MediaDecodingConfiguration._(JSObject _) MediaCapabilitiesKeySystemConfiguration keySystemConfiguration, }); - external set type(MediaDecodingType value); external MediaDecodingType get type; + external set type(MediaDecodingType value); + external MediaCapabilitiesKeySystemConfiguration get keySystemConfiguration; external set keySystemConfiguration( MediaCapabilitiesKeySystemConfiguration value); - external MediaCapabilitiesKeySystemConfiguration get keySystemConfiguration; } extension type MediaEncodingConfiguration._(JSObject _) implements MediaConfiguration, JSObject { @@ -54,8 +54,8 @@ extension type MediaEncodingConfiguration._(JSObject _) required MediaEncodingType type, }); - external set type(MediaEncodingType value); external MediaEncodingType get type; + external set type(MediaEncodingType value); } extension type VideoConfiguration._(JSObject _) implements JSObject { external factory VideoConfiguration({ @@ -72,28 +72,28 @@ extension type VideoConfiguration._(JSObject _) implements JSObject { bool spatialScalability, }); - external set contentType(String value); external String get contentType; - external set width(int value); + external set contentType(String value); external int get width; - external set height(int value); + external set width(int value); external int get height; - external set bitrate(int value); + external set height(int value); external int get bitrate; - external set framerate(num value); + external set bitrate(int value); external num get framerate; - external set hasAlphaChannel(bool value); + external set framerate(num value); external bool get hasAlphaChannel; - external set hdrMetadataType(HdrMetadataType value); + external set hasAlphaChannel(bool value); external HdrMetadataType get hdrMetadataType; - external set colorGamut(ColorGamut value); + external set hdrMetadataType(HdrMetadataType value); external ColorGamut get colorGamut; - external set transferFunction(TransferFunction value); + external set colorGamut(ColorGamut value); external TransferFunction get transferFunction; - external set scalabilityMode(String value); + external set transferFunction(TransferFunction value); external String get scalabilityMode; - external set spatialScalability(bool value); + external set scalabilityMode(String value); external bool get spatialScalability; + external set spatialScalability(bool value); } extension type AudioConfiguration._(JSObject _) implements JSObject { external factory AudioConfiguration({ @@ -104,16 +104,16 @@ extension type AudioConfiguration._(JSObject _) implements JSObject { bool spatialRendering, }); - external set contentType(String value); external String get contentType; - external set channels(String value); + external set contentType(String value); external String get channels; - external set bitrate(int value); + external set channels(String value); external int get bitrate; - external set samplerate(int value); + external set bitrate(int value); external int get samplerate; - external set spatialRendering(bool value); + external set samplerate(int value); external bool get spatialRendering; + external set spatialRendering(bool value); } extension type MediaCapabilitiesKeySystemConfiguration._(JSObject _) implements JSObject { @@ -127,20 +127,20 @@ extension type MediaCapabilitiesKeySystemConfiguration._(JSObject _) KeySystemTrackConfiguration video, }); - external set keySystem(String value); external String get keySystem; - external set initDataType(String value); + external set keySystem(String value); external String get initDataType; - external set distinctiveIdentifier(MediaKeysRequirement value); + external set initDataType(String value); external MediaKeysRequirement get distinctiveIdentifier; - external set persistentState(MediaKeysRequirement value); + external set distinctiveIdentifier(MediaKeysRequirement value); external MediaKeysRequirement get persistentState; - external set sessionTypes(JSArray<JSString> value); + external set persistentState(MediaKeysRequirement value); external JSArray<JSString> get sessionTypes; - external set audio(KeySystemTrackConfiguration value); + external set sessionTypes(JSArray<JSString> value); external KeySystemTrackConfiguration get audio; - external set video(KeySystemTrackConfiguration value); + external set audio(KeySystemTrackConfiguration value); external KeySystemTrackConfiguration get video; + external set video(KeySystemTrackConfiguration value); } extension type KeySystemTrackConfiguration._(JSObject _) implements JSObject { external factory KeySystemTrackConfiguration({ @@ -148,10 +148,10 @@ extension type KeySystemTrackConfiguration._(JSObject _) implements JSObject { String? encryptionScheme, }); - external set robustness(String value); external String get robustness; - external set encryptionScheme(String? value); + external set robustness(String value); external String? get encryptionScheme; + external set encryptionScheme(String? value); } extension type MediaCapabilitiesInfo._(JSObject _) implements JSObject { external factory MediaCapabilitiesInfo({ @@ -160,12 +160,12 @@ extension type MediaCapabilitiesInfo._(JSObject _) implements JSObject { required bool powerEfficient, }); - external set supported(bool value); external bool get supported; - external set smooth(bool value); + external set supported(bool value); external bool get smooth; - external set powerEfficient(bool value); + external set smooth(bool value); external bool get powerEfficient; + external set powerEfficient(bool value); } extension type MediaCapabilitiesDecodingInfo._(JSObject _) implements MediaCapabilitiesInfo, JSObject { @@ -177,10 +177,10 @@ extension type MediaCapabilitiesDecodingInfo._(JSObject _) MediaDecodingConfiguration configuration, }); - external set keySystemAccess(MediaKeySystemAccess value); external MediaKeySystemAccess get keySystemAccess; - external set configuration(MediaDecodingConfiguration value); + external set keySystemAccess(MediaKeySystemAccess value); external MediaDecodingConfiguration get configuration; + external set configuration(MediaDecodingConfiguration value); } extension type MediaCapabilitiesEncodingInfo._(JSObject _) implements MediaCapabilitiesInfo, JSObject { @@ -191,8 +191,8 @@ extension type MediaCapabilitiesEncodingInfo._(JSObject _) MediaEncodingConfiguration configuration, }); - external set configuration(MediaEncodingConfiguration value); external MediaEncodingConfiguration get configuration; + external set configuration(MediaEncodingConfiguration value); } /// The **`MediaCapabilities`** interface of the diff --git a/lib/src/dom/media_playback_quality.dart b/lib/src/dom/media_playback_quality.dart index 00145744..3bd8c8a7 100644 --- a/lib/src/dom/media_playback_quality.dart +++ b/lib/src/dom/media_playback_quality.dart @@ -24,8 +24,28 @@ import 'hr_time.dart'; /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality). extension type VideoPlaybackQuality._(JSObject _) implements JSObject { + /// The read-only **`creationTime`** property on the + /// [VideoPlaybackQuality] interface reports the number of milliseconds since + /// the browsing context was created this quality sample was recorded. external DOMHighResTimeStamp get creationTime; + + /// The read-only **`droppedVideoFrames`** + /// property of the [VideoPlaybackQuality] interface returns the number of + /// video frames which have been dropped rather than being displayed since the + /// last time + /// the media was loaded into the [HTMLVideoElement]. external int get droppedVideoFrames; + + /// The [VideoPlaybackQuality] interface's + /// **`totalVideoFrames`** read-only property returns the total + /// number of video frames that have been displayed or dropped since the media + /// was + /// loaded. external int get totalVideoFrames; + + /// The [VideoPlaybackQuality] interface's read-only + /// **`corruptedVideoFrames`** property the number of corrupted + /// video frames that have been received since the `video` element was + /// last loaded or reloaded. external int get corruptedVideoFrames; } diff --git a/lib/src/dom/media_source.dart b/lib/src/dom/media_source.dart index c2b7ebd1..ed7bc40b 100644 --- a/lib/src/dom/media_source.dart +++ b/lib/src/dom/media_source.dart @@ -64,18 +64,59 @@ extension type MediaSource._(JSObject _) implements EventTarget, JSObject { /// [MediaSource] interface clears a seekable range previously set with a call /// to [MediaSource.setLiveSeekableRange]. external void clearLiveSeekableRange(); + + /// The **`handle`** read-only property of the [MediaSource] interface returns + /// a [MediaSourceHandle] object, a proxy for the `MediaSource` that can be + /// transferred from a dedicated worker back to the main thread and attached + /// to a media element via its [HTMLMediaElement.srcObject] property. + /// + /// > **Note:** `handle` is only visible on [MediaSource] instances inside + /// > dedicated workers. + /// + /// Each `MediaSource` object created inside a dedicated worker has its own + /// distinct `MediaSourceHandle`. The `handle` getter will always return the + /// `MediaSourceHandle` instance specific to the associated dedicated worker + /// `MediaSource` instance. If the handle has already been transferred to the + /// main thread using [DedicatedWorkerGlobalScope.postMessage], the handle + /// instance in the worker is technically detached and can't be transferred + /// again. external MediaSourceHandle get handle; + + /// The **`sourceBuffers`** read-only property of the + /// [MediaSource] interface returns a [SourceBufferList] object + /// containing the list of [SourceBuffer] objects associated with this + /// `MediaSource`. external SourceBufferList get sourceBuffers; + + /// The **`activeSourceBuffers`** read-only property of the + /// [MediaSource] interface returns a [SourceBufferList] object + /// containing a subset of the [SourceBuffer] objects contained within + /// [MediaSource.sourceBuffers] — the list of objects + /// providing the selected video track, enabled audio tracks, and shown/hidden + /// text tracks. external SourceBufferList get activeSourceBuffers; + + /// The **`readyState`** read-only property of the + /// [MediaSource] interface returns an enum representing the state of the + /// current `MediaSource`. The three possible values are: + /// + /// - `closed`: The source is not currently attached to a media element. + /// - `open`: The source is attached to a media element and ready to receive + /// [SourceBuffer] objects. + /// - `ended`: The source is attached to a media element but the stream has + /// been ended via a call to [MediaSource.endOfStream]. external ReadyState get readyState; - external set duration(num value); + + /// The **`duration`** property of the [MediaSource] + /// interface gets and sets the duration of the current media being presented. external num get duration; - external set onsourceopen(EventHandler value); + external set duration(num value); external EventHandler get onsourceopen; - external set onsourceended(EventHandler value); + external set onsourceopen(EventHandler value); external EventHandler get onsourceended; - external set onsourceclose(EventHandler value); + external set onsourceended(EventHandler value); external EventHandler get onsourceclose; + external set onsourceclose(EventHandler value); } /// The **`MediaSourceHandle`** interface of the [Media Source Extensions API] @@ -144,29 +185,113 @@ extension type SourceBuffer._(JSObject _) implements EventTarget, JSObject { num start, num end, ); - external set mode(AppendMode value); + + /// The **`mode`** property of the [SourceBuffer] + /// interface controls whether media segments can be appended to the + /// `SourceBuffer` in any order, or in a strict sequence. + /// + /// The two available values are: + /// + /// - `segments`: The media segment timestamps determine the order in which + /// the + /// segments are played. The segments can be appended to the `SourceBuffer` in + /// any order. + /// - `sequence`: The order in which the segments are appended to the + /// `SourceBuffer` determines the order in which they are played. Segment + /// timestamps are generated automatically for the segments that observe this + /// order. + /// + /// The mode value is initially set when the `SourceBuffer` is created using + /// `MediaSource.addSourceBuffer()`. If timestamps already exist for the media + /// segments, then the value will be set to `segments`; if they don't, then + /// the + /// value will be set to `sequence`. + /// + /// If you try to set the `mode` property value to `segments` when + /// the initial value is `sequence`, an exception will be thrown. The existing + /// segment order must be maintained in `sequence` mode. You can, however, + /// change + /// the value from `segments` to `sequence`. It just means the play + /// order will be fixed, and new timestamps generated to reflect this. + /// + /// This property cannot be changed during while the `SourceBuffer` is + /// processing either an [SourceBuffer.appendBuffer] or + /// [SourceBuffer.remove] call. external AppendMode get mode; + external set mode(AppendMode value); + + /// The **`updating`** read-only property of the + /// [SourceBuffer] interface indicates whether the `SourceBuffer` is + /// currently being updated — i.e. whether an [SourceBuffer.appendBuffer] or + /// [SourceBuffer.remove] + /// operation is currently in progress. external bool get updating; + + /// The **`buffered`** read-only property of the + /// [SourceBuffer] interface returns the time ranges that are currently + /// buffered in the `SourceBuffer` as a normalized [TimeRanges] + /// object. external TimeRanges get buffered; - external set timestampOffset(num value); + + /// The **`timestampOffset`** property of the + /// [SourceBuffer] interface controls the offset applied to timestamps inside + /// media segments that are appended to the `SourceBuffer`. + /// + /// The initial value of `timestampOffset` is 0. external num get timestampOffset; + external set timestampOffset(num value); + + /// The **`audioTracks`** read-only property of the + /// [SourceBuffer] interface returns a list of the audio tracks currently + /// contained inside the `SourceBuffer`. external AudioTrackList get audioTracks; + + /// The **`videoTracks`** read-only property of the + /// [SourceBuffer] interface returns a list of the video tracks currently + /// contained inside the `SourceBuffer`. external VideoTrackList get videoTracks; + + /// The **`textTracks`** read-only property of the + /// [SourceBuffer] interface returns a list of the text tracks currently + /// contained inside the `SourceBuffer`. external TextTrackList get textTracks; - external set appendWindowStart(num value); + + /// The **`appendWindowStart`** property of the + /// [SourceBuffer] interface controls the timestamp for the start of the + /// [append window](https://w3c.github.io/media-source/#append-window), a + /// timestamp range that can be used to filter what media data is appended to + /// the + /// `SourceBuffer`. Coded media frames with timestamps within this range will + /// be + /// appended, whereas those outside the range will be filtered out. + /// + /// The default value of `appendWindowStart` is the presentation start time, + /// which is the beginning time of the playable media. external num get appendWindowStart; - external set appendWindowEnd(num value); + external set appendWindowStart(num value); + + /// The **`appendWindowEnd`** property of the + /// [SourceBuffer] interface controls the timestamp for the end of the + /// [append window](https://w3c.github.io/media-source/#append-window), a + /// timestamp range that can be used to filter what media data is appended to + /// the + /// `SourceBuffer`. Coded media frames with timestamps within this range will + /// be + /// appended, whereas those outside the range will be filtered out. + /// + /// The default value of `appendWindowEnd` is positive infinity. external num get appendWindowEnd; - external set onupdatestart(EventHandler value); + external set appendWindowEnd(num value); external EventHandler get onupdatestart; - external set onupdate(EventHandler value); + external set onupdatestart(EventHandler value); external EventHandler get onupdate; - external set onupdateend(EventHandler value); + external set onupdate(EventHandler value); external EventHandler get onupdateend; - external set onerror(EventHandler value); + external set onupdateend(EventHandler value); external EventHandler get onerror; - external set onabort(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onabort; + external set onabort(EventHandler value); } /// The **`SourceBufferList`** interface represents a simple container list for @@ -185,21 +310,24 @@ extension type SourceBuffer._(JSObject _) implements EventTarget, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList). extension type SourceBufferList._(JSObject _) implements EventTarget, JSObject { + /// The **`length`** read-only property of the + /// [SourceBufferList] interface returns the number of + /// [SourceBuffer] objects in the list. external int get length; - external set onaddsourcebuffer(EventHandler value); external EventHandler get onaddsourcebuffer; - external set onremovesourcebuffer(EventHandler value); + external set onaddsourcebuffer(EventHandler value); external EventHandler get onremovesourcebuffer; + external set onremovesourcebuffer(EventHandler value); } extension type ManagedMediaSource._(JSObject _) implements MediaSource, JSObject { external factory ManagedMediaSource(); external bool get streaming; - external set onstartstreaming(EventHandler value); external EventHandler get onstartstreaming; - external set onendstreaming(EventHandler value); + external set onstartstreaming(EventHandler value); external EventHandler get onendstreaming; + external set onendstreaming(EventHandler value); } extension type BufferedChangeEvent._(JSObject _) implements Event, JSObject { external factory BufferedChangeEvent( @@ -220,13 +348,13 @@ extension type BufferedChangeEventInit._(JSObject _) TimeRanges removedRanges, }); - external set addedRanges(TimeRanges value); external TimeRanges get addedRanges; - external set removedRanges(TimeRanges value); + external set addedRanges(TimeRanges value); external TimeRanges get removedRanges; + external set removedRanges(TimeRanges value); } extension type ManagedSourceBuffer._(JSObject _) implements SourceBuffer, JSObject { - external set onbufferedchange(EventHandler value); external EventHandler get onbufferedchange; + external set onbufferedchange(EventHandler value); } diff --git a/lib/src/dom/mediacapture_streams.dart b/lib/src/dom/mediacapture_streams.dart index cfe74a96..4fad4972 100644 --- a/lib/src/dom/mediacapture_streams.dart +++ b/lib/src/dom/mediacapture_streams.dart @@ -94,12 +94,26 @@ extension type MediaStream._(JSObject _) implements EventTarget, JSObject { /// contains clones of every [MediaStreamTrack] contained by the /// `MediaStream` on which `clone()` was called. external MediaStream clone(); + + /// The **`id`** read-only property of the [MediaStream] interface is a + /// string containing 36 characters denoting a unique identifier (GUID) + /// for the object. external String get id; + + /// The **`active`** read-only property of the + /// [MediaStream] interface returns a Boolean value which is + /// `true` if the stream is currently active; otherwise, it returns + /// `false`. A stream is considered **active** if at least one of + /// its [MediaStreamTrack]s does not have its property + /// [MediaStreamTrack.readyState] + /// set to `ended`. Once every track has ended, the stream's `active` property + /// becomes + /// `false`. external bool get active; - external set onaddtrack(EventHandler value); external EventHandler get onaddtrack; - external set onremovetrack(EventHandler value); + external set onaddtrack(EventHandler value); external EventHandler get onremovetrack; + external set onremovetrack(EventHandler value); } /// The **`MediaStreamTrack`** interface of the [Media Capture and Streams API] @@ -190,19 +204,78 @@ extension type MediaStreamTrack._(JSObject _) implements EventTarget, JSObject { /// for more information on how to apply your preferred constraints. external JSPromise<JSAny?> applyConstraints( [MediaTrackConstraints constraints]); + + /// The **`kind`** read-only property of the [MediaStreamTrack] interface + /// returns a string set to `"audio"` if the track is an audio track and to + /// `"video"` if it is a video track. + /// It doesn't change if the track is disassociated from its source. external String get kind; + + /// The **`id`** read-only property of the [MediaStreamTrack] interface + /// returns a + /// string containing a unique identifier (GUID) for the track, which is + /// generated by the . external String get id; + + /// The **`label`** read-only property of the [MediaStreamTrack] interface + /// returns a string containing a -assigned label that identifies the track + /// source, as in `"internal microphone"`. + /// + /// The string may be left empty and is empty as long as no source has been + /// connected. + /// When the track is disassociated from its source, the label is not changed. external String get label; - external set enabled(bool value); + + /// The **`enabled`** property of the + /// [MediaStreamTrack] interface is a Boolean value which is + /// `true` if the track is allowed to render the source stream or + /// `false` if it is not. This can be used to intentionally mute a + /// track. + /// + /// When enabled, a track's data is output from the source to the + /// destination; otherwise, empty frames are output. + /// + /// In the case of audio, a disabled track generates frames of silence (that + /// is, frames in + /// which every sample's value is 0). For video tracks, every frame is filled + /// entirely with + /// black pixels. + /// + /// The value of `enabled`, in essence, represents what a typical user would + /// consider the muting state for a track, whereas the + /// [MediaStreamTrack.muted] + /// property indicates a state in which the track is temporarily unable to + /// output + /// data, such as a scenario in which frames have been lost in transit. + /// + /// > **Note:** If the track has been disconnected, the value of this property + /// > can be changed, but has no effect. external bool get enabled; + external set enabled(bool value); + + /// The **`muted`** read-only property of the + /// [MediaStreamTrack] interface returns a boolean value + /// indicating whether or not the track is currently unable to provide media + /// output. + /// + /// > **Note:** To implement a way for users to mute and unmute a track, use + /// > the + /// > [MediaStreamTrack.enabled] property. When a track is disabled + /// > by setting `enabled` to `false`, it generates only empty frames + /// > (audio frames in which every sample is 0, or video frames in which every + /// > pixel is + /// > black). external bool get muted; - external set onmute(EventHandler value); external EventHandler get onmute; - external set onunmute(EventHandler value); + external set onmute(EventHandler value); external EventHandler get onunmute; + external set onunmute(EventHandler value); + + /// The **`readyState`** read-only property of the [MediaStreamTrack] + /// interface returns an enumerated value giving the status of the track. external MediaStreamTrackState get readyState; - external set onended(EventHandler value); external EventHandler get onended; + external set onended(EventHandler value); } /// The **`MediaTrackSupportedConstraints`** dictionary establishes the list of @@ -250,36 +323,215 @@ extension type MediaTrackSupportedConstraints._(JSObject _) bool groupId, }); - external set width(bool value); + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`width`** property is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `width` constraint. If the constraint + /// isn't supported, it's not included in the list, so this value will never + /// be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get width; - external set height(bool value); + external set width(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`height`** property is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `height` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get height; - external set aspectRatio(bool value); + external set height(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's **`aspectRatio`** + /// property is a read-only Boolean value which is present (and set to `true`) + /// in the object returned by [MediaDevices.getSupportedConstraints] if and + /// only if the + /// supports the `aspectRatio` constraint. + /// If the constraint isn't supported, it's not included in the list, so this + /// value will never be `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get aspectRatio; - external set frameRate(bool value); + external set aspectRatio(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's **`frameRate`** property + /// is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the supports the + /// [MediaTrackConstraints.frameRate] constraint. + /// + /// If the constraint isn't supported, it's not included in the list, so this + /// value will never be `false`. + /// + /// The `frameRate` constraint can be used to establish acceptable upper and + /// lower bounds on the video frame rate for a new video track, or to specify + /// an exact frame rate that must be provided for the request to succeed. + /// Checking the value of this property lets you determine if the user agent + /// allows constraining the video track configuration by frame rate. See the + /// [example](#examples) to see how this can be used. external bool get frameRate; - external set facingMode(bool value); + external set frameRate(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`facingMode`** property is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `facingMode` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get facingMode; - external set resizeMode(bool value); + external set facingMode(bool value); external bool get resizeMode; - external set sampleRate(bool value); + external set resizeMode(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`sampleRate`** property is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `sampleRate` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get sampleRate; - external set sampleSize(bool value); + external set sampleRate(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`sampleSize`** property is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `sampleSize` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get sampleSize; - external set echoCancellation(bool value); + external set sampleSize(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`echoCancellation`** property is a read-only Boolean value + /// which is present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `echoCancellation` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get echoCancellation; - external set autoGainControl(bool value); + external set echoCancellation(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's **`autoGainControl`** + /// property is a read-only Boolean value which is present (and set to `true`) + /// in the object returned by [MediaDevices.getSupportedConstraints] if and + /// only if the supports the **`autoGainControl`** constraint. + /// If the constraint isn't supported, it's not included in the list, so this + /// value will never be `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. + /// + /// The `autoGainControl` constraint indicates whether or not the browser + /// offers the ability to automatically control the gain (volume) on media + /// tracks; this obviously is contingent on whether or not the individual + /// device supports automatic gain control as well; it's typically a feature + /// provided by microphones. external bool get autoGainControl; - external set noiseSuppression(bool value); + external set autoGainControl(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`noiseSuppression`** property is a read-only Boolean value + /// which is present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the **`noiseSuppression`** + /// constraint. If the constraint isn't supported, it's not included in the + /// list, so this + /// value will never be `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. + /// + /// The `noiseSuppression` constraint indicates whether or not the browser + /// offers the ability to automatically control the gain (volume) on media + /// tracks; this + /// obviously is contingent on whether or not the individual device supports + /// automatic gain + /// control as well. external bool get noiseSuppression; - external set latency(bool value); + external set noiseSuppression(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's **`latency`** property + /// is a read-only Boolean value which is present (and set to `true`) in the + /// object returned by [MediaDevices.getSupportedConstraints] if and only if + /// the supports the `latency` constraint. + /// If the constraint isn't supported, it's not included in the list, so this + /// value will never be `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get latency; - external set channelCount(bool value); + external set latency(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`channelCount`** property is a read-only Boolean value which + /// is present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `channelCount` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get channelCount; - external set deviceId(bool value); + external set channelCount(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`deviceId`** property is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `deviceId` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get deviceId; - external set groupId(bool value); + external set deviceId(bool value); + + /// The [MediaTrackSupportedConstraints] dictionary's + /// **`groupId`** property is a read-only Boolean value which is + /// present (and set to `true`) in the object returned by + /// [MediaDevices.getSupportedConstraints] if and only if the + /// supports the `groupId` constraint. If the + /// constraint isn't supported, it's not included in the list, so this value + /// will never be + /// `false`. + /// + /// You can access the supported constraints dictionary by calling + /// `navigator.mediaDevices.getSupportedConstraints()`. external bool get groupId; + external set groupId(bool value); } extension type MediaTrackCapabilities._(JSObject _) implements JSObject { external factory MediaTrackCapabilities({ @@ -300,36 +552,36 @@ extension type MediaTrackCapabilities._(JSObject _) implements JSObject { String groupId, }); - external set width(ULongRange value); external ULongRange get width; - external set height(ULongRange value); + external set width(ULongRange value); external ULongRange get height; - external set aspectRatio(DoubleRange value); + external set height(ULongRange value); external DoubleRange get aspectRatio; - external set frameRate(DoubleRange value); + external set aspectRatio(DoubleRange value); external DoubleRange get frameRate; - external set facingMode(JSArray<JSString> value); + external set frameRate(DoubleRange value); external JSArray<JSString> get facingMode; - external set resizeMode(JSArray<JSString> value); + external set facingMode(JSArray<JSString> value); external JSArray<JSString> get resizeMode; - external set sampleRate(ULongRange value); + external set resizeMode(JSArray<JSString> value); external ULongRange get sampleRate; - external set sampleSize(ULongRange value); + external set sampleRate(ULongRange value); external ULongRange get sampleSize; - external set echoCancellation(JSArray<JSBoolean> value); + external set sampleSize(ULongRange value); external JSArray<JSBoolean> get echoCancellation; - external set autoGainControl(JSArray<JSBoolean> value); + external set echoCancellation(JSArray<JSBoolean> value); external JSArray<JSBoolean> get autoGainControl; - external set noiseSuppression(JSArray<JSBoolean> value); + external set autoGainControl(JSArray<JSBoolean> value); external JSArray<JSBoolean> get noiseSuppression; - external set latency(DoubleRange value); + external set noiseSuppression(JSArray<JSBoolean> value); external DoubleRange get latency; - external set channelCount(ULongRange value); + external set latency(DoubleRange value); external ULongRange get channelCount; - external set deviceId(String value); + external set channelCount(ULongRange value); external String get deviceId; - external set groupId(String value); + external set deviceId(String value); external String get groupId; + external set groupId(String value); } /// The **`MediaTrackConstraints`** dictionary is used to describe a set of @@ -365,8 +617,8 @@ extension type MediaTrackConstraints._(JSObject _) JSArray<MediaTrackConstraintSet> advanced, }); - external set advanced(JSArray<MediaTrackConstraintSet> value); external JSArray<MediaTrackConstraintSet> get advanced; + external set advanced(JSArray<MediaTrackConstraintSet> value); } extension type MediaTrackConstraintSet._(JSObject _) implements JSObject { external factory MediaTrackConstraintSet({ @@ -387,36 +639,36 @@ extension type MediaTrackConstraintSet._(JSObject _) implements JSObject { ConstrainDOMString groupId, }); - external set width(ConstrainULong value); external ConstrainULong get width; - external set height(ConstrainULong value); + external set width(ConstrainULong value); external ConstrainULong get height; - external set aspectRatio(ConstrainDouble value); + external set height(ConstrainULong value); external ConstrainDouble get aspectRatio; - external set frameRate(ConstrainDouble value); + external set aspectRatio(ConstrainDouble value); external ConstrainDouble get frameRate; - external set facingMode(ConstrainDOMString value); + external set frameRate(ConstrainDouble value); external ConstrainDOMString get facingMode; - external set resizeMode(ConstrainDOMString value); + external set facingMode(ConstrainDOMString value); external ConstrainDOMString get resizeMode; - external set sampleRate(ConstrainULong value); + external set resizeMode(ConstrainDOMString value); external ConstrainULong get sampleRate; - external set sampleSize(ConstrainULong value); + external set sampleRate(ConstrainULong value); external ConstrainULong get sampleSize; - external set echoCancellation(ConstrainBoolean value); + external set sampleSize(ConstrainULong value); external ConstrainBoolean get echoCancellation; - external set autoGainControl(ConstrainBoolean value); + external set echoCancellation(ConstrainBoolean value); external ConstrainBoolean get autoGainControl; - external set noiseSuppression(ConstrainBoolean value); + external set autoGainControl(ConstrainBoolean value); external ConstrainBoolean get noiseSuppression; - external set latency(ConstrainDouble value); + external set noiseSuppression(ConstrainBoolean value); external ConstrainDouble get latency; - external set channelCount(ConstrainULong value); + external set latency(ConstrainDouble value); external ConstrainULong get channelCount; - external set deviceId(ConstrainDOMString value); + external set channelCount(ConstrainULong value); external ConstrainDOMString get deviceId; - external set groupId(ConstrainDOMString value); + external set deviceId(ConstrainDOMString value); external ConstrainDOMString get groupId; + external set groupId(ConstrainDOMString value); } /// The **`MediaTrackSettings`** dictionary is used to return the current values @@ -454,36 +706,336 @@ extension type MediaTrackSettings._(JSObject _) implements JSObject { String groupId, }); - external set width(int value); + /// The [MediaTrackSettings] dictionary's **`width`** + /// property is an integer indicating the number of pixels wide + /// [MediaStreamTrack] is currently configured to be. This lets you determine + /// what value was selected to comply with your specified constraints for this + /// property's + /// value as described in the [MediaTrackConstraints.width] property you + /// provided when calling either [MediaDevices.getUserMedia] + /// or [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.width] as returned by a call + /// to [MediaDevices.getSupportedConstraints]. However, typically this is + /// unnecessary since browsers will ignore any constraints they're unfamiliar + /// with. external int get width; - external set height(int value); + external set width(int value); + + /// The [MediaTrackSettings] dictionary's **`height`** + /// property is an integer indicating the number of pixels tall + /// [MediaStreamTrack] is currently configured to be. This lets you determine + /// what value was selected to comply with your specified constraints for this + /// property's + /// value as described in the [MediaTrackConstraints.height] property you + /// provided when calling either [MediaDevices.getUserMedia] + /// or [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.height] as returned by a call + /// to [MediaDevices.getSupportedConstraints]. However, typically this is + /// unnecessary since browsers will ignore any constraints they're unfamiliar + /// with. external int get height; - external set aspectRatio(num value); + external set height(int value); + + /// The [MediaTrackSettings] dictionary's **`aspectRatio`** property is a + /// double-precision floating-point number indicating the aspect ratio of the + /// [MediaStreamTrack] as currently configured. + /// This lets you determine what value was selected to comply with your + /// specified constraints for this property's value as described in the + /// [MediaTrackConstraints.aspectRatio] property you provided when calling + /// either [MediaDevices.getUserMedia] or [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.aspectRatio] as returned by a + /// call to [MediaDevices.getSupportedConstraints]. However, typically this + /// is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. external num get aspectRatio; - external set frameRate(num value); + external set aspectRatio(num value); + + /// The [MediaTrackSettings] dictionary's + /// **`frameRate`** property is a double-precision floating-point + /// number indicating the frame rate, in frames per second, of the + /// [MediaStreamTrack] as currently configured. This lets you determine what + /// value was selected to comply with your specified constraints for this + /// property's value + /// as described in the [MediaTrackConstraints.frameRate] property you + /// provided + /// when calling either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.frameRate] as returned by a + /// call to [MediaDevices.getSupportedConstraints]. However, typically this + /// is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. external num get frameRate; - external set facingMode(String value); + external set frameRate(num value); + + /// The [MediaTrackSettings] dictionary's + /// **`facingMode`** property is a string + /// indicating the direction in which the camera producing the video track + /// represented by + /// the [MediaStreamTrack] is currently facing. This lets you determine what + /// value was selected to comply with your specified constraints for this + /// property's value + /// as described in the [MediaTrackConstraints.facingMode] property you + /// provided when calling either [MediaDevices.getUserMedia] + /// or [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.facingMode] as returned by a + /// call to [MediaDevices.getSupportedConstraints]. However, typically this + /// is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. + /// + /// Because doesn't include this information, tracks associated with a + /// [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) + /// [RTCPeerConnection] + /// will never include this property. external String get facingMode; - external set resizeMode(String value); + external set facingMode(String value); external String get resizeMode; - external set sampleRate(int value); + external set resizeMode(String value); + + /// The [MediaTrackSettings] dictionary's + /// **`sampleRate`** property is an integer indicating how many + /// audio samples per second the [MediaStreamTrack] is currently configured + /// for. This lets you determine what value was selected to comply with your + /// specified + /// constraints for this property's value as described in the + /// [MediaTrackConstraints.sampleRate] property you provided when calling + /// either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.sampleRate] as returned by a + /// call to [MediaDevices.getSupportedConstraints]. However, typically this + /// is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. external int get sampleRate; - external set sampleSize(int value); + external set sampleRate(int value); + + /// The [MediaTrackSettings] dictionary's + /// **`sampleSize`** property is an integer indicating the linear + /// sample size (in bits per sample) the [MediaStreamTrack] is currently + /// configured for. This lets you determine what value was selected to comply + /// with your + /// specified constraints for this property's value as described in the + /// [MediaTrackConstraints.sampleSize] property you provided when calling + /// either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.sampleSize] as returned by a + /// call to [MediaDevices.getSupportedConstraints]. However, typically this + /// is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. external int get sampleSize; - external set echoCancellation(bool value); + external set sampleSize(int value); + + /// The [MediaTrackSettings] dictionary's + /// **`echoCancellation`** property is a Boolean value whose value + /// indicates whether or not echo cancellation is enabled on an audio track. + /// This lets you + /// determine what value was selected to comply with your specified + /// constraints for this + /// property's value as described in the + /// [MediaTrackConstraints.echoCancellation] property you provided when + /// calling + /// either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// Echo cancellation is a feature which attempts to prevent echo effects on a + /// two-way + /// audio connection by attempting to reduce or eliminate crosstalk between + /// the user's + /// output device and their input device. For example, it might apply a filter + /// that negates + /// the sound being produced on the speakers from being included in the input + /// track + /// generated from the microphone. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.echoCancellation] as returned + /// by a call to [MediaDevices.getSupportedConstraints]. However, typically + /// this is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. + /// + /// Because doesn't include this information, tracks associated with a + /// [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) + /// [RTCPeerConnection] + /// will never include this property. external bool get echoCancellation; - external set autoGainControl(bool value); + external set echoCancellation(bool value); + + /// The [MediaTrackSettings] dictionary's + /// **`autoGainControl`** property is a Boolean value whose value + /// indicates whether or not automatic gain control (AGC) is enabled on an + /// audio track. This + /// lets you determine what value was selected to comply with your specified + /// constraints for + /// this property's value as described in the + /// [MediaTrackConstraints.autoGainControl] property you provided when calling + /// either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// Automatic gain control is a feature in which a sound source automatically + /// manages + /// changes in the volume of its source media to maintain a steady overall + /// volume level. + /// This feature is typically used on microphones, although it can be provided + /// by other + /// input sources as well. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.autoGainControl] as returned + /// by a call to [MediaDevices.getSupportedConstraints]. However, typically + /// this is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. external bool get autoGainControl; - external set noiseSuppression(bool value); + external set autoGainControl(bool value); + + /// The [MediaTrackSettings] dictionary's + /// **`noiseSuppression`** property is a Boolean value whose value + /// indicates whether or not noise suppression technology is enabled on an + /// audio track. This + /// lets you determine what value was selected to comply with your specified + /// constraints for + /// this property's value as described in the + /// [MediaTrackConstraints.noiseSuppression] property you provided when + /// calling + /// either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// Noise suppression automatically filters the audio to remove background + /// noise, hum + /// caused by equipment, and the like from the sound before delivering it to + /// your code. This + /// feature is typically used on microphones, although it is technically + /// possible it could + /// be provided by other input sources as well. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.noiseSuppression] as returned + /// by a call to [MediaDevices.getSupportedConstraints]. However, typically + /// this is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. external bool get noiseSuppression; - external set latency(num value); + external set noiseSuppression(bool value); + + /// The [MediaTrackSettings] dictionary's + /// **`latency`** property is a double-precision floating-point + /// number indicating the estimated latency (specified in seconds) of the + /// [MediaStreamTrack] as currently configured. This lets you determine what + /// value was selected to comply with your specified constraints for this + /// property's value + /// as described in the [MediaTrackConstraints.latency] property you provided + /// when calling either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// This is, of course, an approximation, since latency can vary for many + /// reasons including + /// CPU, transmission, and storage overhead. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.latency] as returned by a + /// call + /// to [MediaDevices.getSupportedConstraints]. However, typically this is + /// unnecessary since browsers will ignore any constraints they're unfamiliar + /// with. + /// + /// Because doesn't include this information, tracks associated with a + /// [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) + /// [RTCPeerConnection] + /// will never include this property. external num get latency; - external set channelCount(int value); + external set latency(num value); + + /// The [MediaTrackSettings] dictionary's + /// **`channelCount`** property is an integer indicating how many + /// audio channels the [MediaStreamTrack] is currently configured to have. + /// This + /// lets you determine what value was selected to comply with your specified + /// constraints for + /// this property's value as described in the + /// [MediaTrackConstraints.channelCount] property you provided when calling + /// either [MediaDevices.getUserMedia] or + /// [MediaStreamTrack.applyConstraints]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.channelCount] as returned by + /// a + /// call to [MediaDevices.getSupportedConstraints]. However, typically this + /// is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. external int get channelCount; - external set deviceId(String value); + external set channelCount(int value); + + /// The [MediaTrackSettings] dictionary's + /// **`deviceId`** property is a string which + /// uniquely identifies the source for the corresponding [MediaStreamTrack] + /// for + /// the origin corresponding to the browsing session. This lets you determine + /// what value was + /// selected to comply with your specified constraints for this property's + /// value as + /// described in the [MediaTrackConstraints.deviceId] property you provided + /// when calling either [MediaDevices.getUserMedia]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.deviceId] as returned by a + /// call to [MediaDevices.getSupportedConstraints]. However, typically this + /// is unnecessary since browsers will ignore any constraints they're + /// unfamiliar with. + /// + /// Because doesn't include this information, tracks associated with a + /// [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) + /// [RTCPeerConnection] + /// will never include this property. external String get deviceId; - external set groupId(String value); + external set deviceId(String value); + + /// The [MediaTrackSettings] dictionary's + /// **`groupId`** property is a browsing-session unique + /// string which identifies the group of devices which includes the source + /// for the [MediaStreamTrack]. This lets you determine what value was + /// selected + /// to comply with your specified constraints for this property's value as + /// described in the + /// [MediaTrackConstraints.groupId] property you provided when calling either + /// [MediaDevices.getUserMedia]. + /// + /// If needed, you can determine whether or not this constraint is supported + /// by checking + /// the value of [MediaTrackSupportedConstraints.groupId] as returned by a + /// call + /// to [MediaDevices.getSupportedConstraints]. However, typically this is + /// unnecessary since browsers will ignore any constraints they're unfamiliar + /// with. + /// + /// Because doesn't include this information, tracks associated with a + /// [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) + /// [RTCPeerConnection] + /// will never include this property. external String get groupId; + external set groupId(String value); } /// The **`MediaStreamTrackEvent`** interface of the @@ -506,6 +1058,8 @@ extension type MediaStreamTrackEvent._(JSObject _) implements Event, JSObject { MediaStreamTrackEventInit eventInitDict, ); + /// The **`track`** read-only property of the [MediaStreamTrackEvent] + /// interface returns the [MediaStreamTrack] associated with this event. external MediaStreamTrack get track; } extension type MediaStreamTrackEventInit._(JSObject _) @@ -517,8 +1071,8 @@ extension type MediaStreamTrackEventInit._(JSObject _) required MediaStreamTrack track, }); - external set track(MediaStreamTrack value); external MediaStreamTrack get track; + external set track(MediaStreamTrack value); } /// The **`OverconstrainedError`** interface of the @@ -539,6 +1093,9 @@ extension type OverconstrainedError._(JSObject _) String message, ]); + /// The **`constraint`** read-only property of the + /// [OverconstrainedError] interface returns the constraint that was supplied + /// in the constructor, meaning the constraint that was not satisfied. external String get constraint; } @@ -596,8 +1153,8 @@ extension type MediaDevices._(JSObject _) implements EventTarget, JSObject { /// > ignore the request. external JSPromise<MediaStream> getUserMedia( [MediaStreamConstraints constraints]); - external set ondevicechange(EventHandler value); external EventHandler get ondevicechange; + external set ondevicechange(EventHandler value); } /// The **`MediaDeviceInfo`** interface of the [Media Capture and Streams API] @@ -614,9 +1171,40 @@ extension type MediaDeviceInfo._(JSObject _) implements JSObject { /// The **`toJSON()`** method of the [MediaDeviceInfo] interface is a ; it /// returns a JSON representation of the [MediaDeviceInfo] object. external JSObject toJSON(); + + /// The **`deviceId`** read-only property + /// of the [MediaDeviceInfo] interface returns a string + /// that is an identifier for the represented device and is persisted across + /// sessions. + /// + /// It is un-guessable by other applications, and unique to the origin of + /// the calling application. It is reset when the user clears cookies. For + /// private browsing, + /// a different identifier is used that is not persisted across sessions. external String get deviceId; + + /// The **`kind`** read-only property of + /// the [MediaDeviceInfo] interface returns an enumerated value, that is + /// either `"videoinput"`, `"audioinput"` or `"audiooutput"`. external MediaDeviceKind get kind; + + /// The **`label`** read-only + /// property of the [MediaDeviceInfo] interface returns a + /// string describing this device (for example + /// "External USB Webcam"). + /// + /// Only available during active `MediaStream` + /// use, or when persistent permissions have been granted. external String get label; + + /// The **`groupId`** read-only property of + /// the [MediaDeviceInfo] interface returns a string that + /// is a group identifier. + /// + /// Two devices have the same group identifier if they + /// belong to the same physical device; for example, a monitor with both a + /// built-in camera + /// and microphone. external String get groupId; } @@ -643,10 +1231,10 @@ extension type MediaStreamConstraints._(JSObject _) implements JSObject { JSAny audio, }); - external set video(JSAny value); external JSAny get video; - external set audio(JSAny value); + external set video(JSAny value); external JSAny get audio; + external set audio(JSAny value); } extension type DoubleRange._(JSObject _) implements JSObject { external factory DoubleRange({ @@ -654,10 +1242,10 @@ extension type DoubleRange._(JSObject _) implements JSObject { num min, }); - external set max(num value); external num get max; - external set min(num value); + external set max(num value); external num get min; + external set min(num value); } extension type ConstrainDoubleRange._(JSObject _) implements DoubleRange, JSObject { @@ -668,10 +1256,10 @@ extension type ConstrainDoubleRange._(JSObject _) num ideal, }); - external set exact(num value); external num get exact; - external set ideal(num value); + external set exact(num value); external num get ideal; + external set ideal(num value); } extension type ULongRange._(JSObject _) implements JSObject { external factory ULongRange({ @@ -679,10 +1267,10 @@ extension type ULongRange._(JSObject _) implements JSObject { int min, }); - external set max(int value); external int get max; - external set min(int value); + external set max(int value); external int get min; + external set min(int value); } extension type ConstrainULongRange._(JSObject _) implements ULongRange, JSObject { @@ -693,10 +1281,10 @@ extension type ConstrainULongRange._(JSObject _) int ideal, }); - external set exact(int value); external int get exact; - external set ideal(int value); + external set exact(int value); external int get ideal; + external set ideal(int value); } extension type ConstrainBooleanParameters._(JSObject _) implements JSObject { external factory ConstrainBooleanParameters({ @@ -704,10 +1292,10 @@ extension type ConstrainBooleanParameters._(JSObject _) implements JSObject { bool ideal, }); - external set exact(bool value); external bool get exact; - external set ideal(bool value); + external set exact(bool value); external bool get ideal; + external set ideal(bool value); } extension type ConstrainDOMStringParameters._(JSObject _) implements JSObject { external factory ConstrainDOMStringParameters({ @@ -715,10 +1303,10 @@ extension type ConstrainDOMStringParameters._(JSObject _) implements JSObject { JSAny ideal, }); - external set exact(JSAny value); external JSAny get exact; - external set ideal(JSAny value); + external set exact(JSAny value); external JSAny get ideal; + external set ideal(JSAny value); } extension type CameraDevicePermissionDescriptor._(JSObject _) implements PermissionDescriptor, JSObject { @@ -727,6 +1315,6 @@ extension type CameraDevicePermissionDescriptor._(JSObject _) bool panTiltZoom, }); - external set panTiltZoom(bool value); external bool get panTiltZoom; + external set panTiltZoom(bool value); } diff --git a/lib/src/dom/mediasession.dart b/lib/src/dom/mediasession.dart index 5b52f6e3..59e8d1ed 100644 --- a/lib/src/dom/mediasession.dart +++ b/lib/src/dom/mediasession.dart @@ -76,10 +76,22 @@ extension type MediaSession._(JSObject _) implements JSObject { /// Note that the status of the camera is not tracked in the [MediaSession] /// itself, but must be tracked separately. external void setCameraActive(bool active); - external set metadata(MediaMetadata? value); + + /// The **`metadata`** property of the [MediaSession] + /// interface contains a [MediaMetadata] object providing descriptive + /// information about the currently playing media, or `null` if the metadata + /// has + /// not been set. This metadata is provided by the browser to the device for + /// presentation in + /// any standard media control user interface the device might offer. external MediaMetadata? get metadata; - external set playbackState(MediaSessionPlaybackState value); + external set metadata(MediaMetadata? value); + + /// The **`playbackState`** property of the + /// [MediaSession] interface indicates whether the current media session is + /// playing or paused. external MediaSessionPlaybackState get playbackState; + external set playbackState(MediaSessionPlaybackState value); } /// The **`MediaMetadata`** interface of the [Media Session API] allows a web @@ -92,14 +104,30 @@ extension type MediaSession._(JSObject _) implements JSObject { extension type MediaMetadata._(JSObject _) implements JSObject { external factory MediaMetadata([MediaMetadataInit init]); - external set title(String value); + /// The **`title`** property of the + /// [MediaMetaData] interface returns or sets the title of the media to be + /// played. external String get title; - external set artist(String value); + external set title(String value); + + /// The **`artist`** property of the + /// [MediaMetaData] interface returns or sets the name of the artist, group, + /// creator, etc., of the media to be played. external String get artist; - external set album(String value); + external set artist(String value); + + /// The **`album`** property of the + /// [MediaMetaData] interface returns or sets the name of the album or + /// collection containing the media to be played. external String get album; - external set artwork(JSArray<MediaImage> value); + external set album(String value); + + /// The **`artwork`** property of the + /// [MediaMetaData] interface returns or sets an array of + /// objects representing images associated with playing + /// media. external JSArray<MediaImage> get artwork; + external set artwork(JSArray<MediaImage> value); } extension type MediaMetadataInit._(JSObject _) implements JSObject { external factory MediaMetadataInit({ @@ -109,14 +137,14 @@ extension type MediaMetadataInit._(JSObject _) implements JSObject { JSArray<MediaImage> artwork, }); - external set title(String value); external String get title; - external set artist(String value); + external set title(String value); external String get artist; - external set album(String value); + external set artist(String value); external String get album; - external set artwork(JSArray<MediaImage> value); + external set album(String value); external JSArray<MediaImage> get artwork; + external set artwork(JSArray<MediaImage> value); } extension type MediaImage._(JSObject _) implements JSObject { external factory MediaImage({ @@ -125,12 +153,12 @@ extension type MediaImage._(JSObject _) implements JSObject { String type, }); - external set src(String value); external String get src; - external set sizes(String value); + external set src(String value); external String get sizes; - external set type(String value); + external set sizes(String value); external String get type; + external set type(String value); } extension type MediaPositionState._(JSObject _) implements JSObject { external factory MediaPositionState({ @@ -139,12 +167,12 @@ extension type MediaPositionState._(JSObject _) implements JSObject { num position, }); - external set duration(num value); external num get duration; - external set playbackRate(num value); + external set duration(num value); external num get playbackRate; - external set position(num value); + external set playbackRate(num value); external num get position; + external set position(num value); } extension type MediaSessionActionDetails._(JSObject _) implements JSObject { external factory MediaSessionActionDetails({ @@ -154,12 +182,12 @@ extension type MediaSessionActionDetails._(JSObject _) implements JSObject { bool fastSeek, }); - external set action(MediaSessionAction value); external MediaSessionAction get action; - external set seekOffset(num value); + external set action(MediaSessionAction value); external num get seekOffset; - external set seekTime(num value); + external set seekOffset(num value); external num get seekTime; - external set fastSeek(bool value); + external set seekTime(num value); external bool get fastSeek; + external set fastSeek(bool value); } diff --git a/lib/src/dom/mediastream_recording.dart b/lib/src/dom/mediastream_recording.dart index def70685..77c24aac 100644 --- a/lib/src/dom/mediastream_recording.dart +++ b/lib/src/dom/mediastream_recording.dart @@ -141,23 +141,66 @@ extension type MediaRecorder._(JSObject _) implements EventTarget, JSObject { /// attribute.) /// 3. Create a new Blob and place subsequently captured data into it. external void requestData(); + + /// The **`stream`** read-only property of the [MediaRecorder] interface + /// returns the stream that was passed into the [MediaRecorder.MediaRecorder] + /// constructor when the `MediaRecorder` was created. external MediaStream get stream; + + /// The **`mimeType`** read-only property of the [MediaRecorder] interface + /// returns the media type that was specified when creating the + /// [MediaRecorder] object, or, if none was specified, which was chosen by the + /// browser. + /// This is the file format of the file that would result from writing all of + /// the recorded data to disk. + /// + /// Keep in mind that not all codecs are supported by a given container; if + /// you write media using a codec that is not supported by a given media + /// container, the resulting file may not work reliably if at all when you try + /// to play it back. + /// See our + /// [media type and format guide](https://developer.mozilla.org/en-US/docs/Web/Media/Formats) + /// for information about container and codec support across browsers. + /// + /// > **Note:** The term "MIME type" is officially considered to be + /// > historical; these strings are now officially known as **media types**. + /// > MDN Web Docs content uses the terms interchangeably. external String get mimeType; + + /// The **`state`** read-only property of the [MediaRecorder] interface + /// returns the current state of the current `MediaRecorder` object. external RecordingState get state; - external set onstart(EventHandler value); external EventHandler get onstart; - external set onstop(EventHandler value); + external set onstart(EventHandler value); external EventHandler get onstop; - external set ondataavailable(EventHandler value); + external set onstop(EventHandler value); external EventHandler get ondataavailable; - external set onpause(EventHandler value); + external set ondataavailable(EventHandler value); external EventHandler get onpause; - external set onresume(EventHandler value); + external set onpause(EventHandler value); external EventHandler get onresume; - external set onerror(EventHandler value); + external set onresume(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); + + /// The **`videoBitsPerSecond`** read-only + /// property of the [MediaRecorder] interface returns the video encoding + /// bit rate in use. + /// + /// This may differ from the bit rate specified in the + /// constructor, if it was provided. external int get videoBitsPerSecond; + + /// The **`audioBitsPerSecond`** read-only + /// property of the [MediaRecorder] interface returns the audio encoding bit + /// rate in use. + /// + /// This may differ from the bit rate specified in the constructor (if + /// it was provided). external int get audioBitsPerSecond; + + /// The **`audioBitrateMode`** read-only property of the [MediaRecorder] + /// interface returns the bitrate mode used to encode audio tracks. external BitrateMode get audioBitrateMode; } extension type MediaRecorderOptions._(JSObject _) implements JSObject { @@ -171,20 +214,20 @@ extension type MediaRecorderOptions._(JSObject _) implements JSObject { int videoKeyFrameIntervalCount, }); - external set mimeType(String value); external String get mimeType; - external set audioBitsPerSecond(int value); + external set mimeType(String value); external int get audioBitsPerSecond; - external set videoBitsPerSecond(int value); + external set audioBitsPerSecond(int value); external int get videoBitsPerSecond; - external set bitsPerSecond(int value); + external set videoBitsPerSecond(int value); external int get bitsPerSecond; - external set audioBitrateMode(BitrateMode value); + external set bitsPerSecond(int value); external BitrateMode get audioBitrateMode; - external set videoKeyFrameIntervalDuration(DOMHighResTimeStamp value); + external set audioBitrateMode(BitrateMode value); external DOMHighResTimeStamp get videoKeyFrameIntervalDuration; - external set videoKeyFrameIntervalCount(int value); + external set videoKeyFrameIntervalDuration(DOMHighResTimeStamp value); external int get videoKeyFrameIntervalCount; + external set videoKeyFrameIntervalCount(int value); } /// The **`BlobEvent`** interface of the @@ -202,7 +245,17 @@ extension type BlobEvent._(JSObject _) implements Event, JSObject { BlobEventInit eventInitDict, ); + /// The **`data`** read-only property of the [BlobEvent] interface represents + /// a [Blob] associated with the event. external Blob get data; + + /// The **`timecode`** read-only property of the [BlobEvent] interface + /// indicates the difference between the timestamp of the first chunk of data, + /// and the timestamp of the first chunk in the first `BlobEvent` produced by + /// this recorder. + /// + /// Note that the `timecode` in the first produced `BlobEvent` does not need + /// to be zero. external DOMHighResTimeStamp get timecode; } extension type BlobEventInit._(JSObject _) implements JSObject { @@ -211,8 +264,8 @@ extension type BlobEventInit._(JSObject _) implements JSObject { DOMHighResTimeStamp timecode, }); - external set data(Blob value); external Blob get data; - external set timecode(DOMHighResTimeStamp value); + external set data(Blob value); external DOMHighResTimeStamp get timecode; + external set timecode(DOMHighResTimeStamp value); } diff --git a/lib/src/dom/navigation_timing.dart b/lib/src/dom/navigation_timing.dart index 205d055b..61b97f02 100644 --- a/lib/src/dom/navigation_timing.dart +++ b/lib/src/dom/navigation_timing.dart @@ -43,15 +43,123 @@ extension type PerformanceNavigationTiming._(JSObject _) /// is a ; it returns a JSON representation of the /// [PerformanceNavigationTiming] object. external JSObject toJSON(); + + /// The **`unloadEventStart`** read-only property returns a + /// [DOMHighResTimeStamp] representing the time immediately before the current + /// document's + /// [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event) + /// event handler starts. external DOMHighResTimeStamp get unloadEventStart; + + /// The **`unloadEventEnd`** read-only property returns a + /// [DOMHighResTimeStamp] representing the time immediately after the current + /// document's + /// [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event) + /// event handler completes. external DOMHighResTimeStamp get unloadEventEnd; + + /// The **`domInteractive`** read-only property returns a + /// [DOMHighResTimeStamp] representing the time immediately before the user + /// agent sets the document's + /// [`readyState`](https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState) + /// to `"interactive"`. + /// + /// > **Note:** This property is **not** (TTI). This property refers to the + /// > time when DOM construction is finished and interaction to it from + /// > JavaScript is possible. See also the `interactive` state of + /// > [Document.readyState] which corresponds to this property. + /// + /// Measuring DOM processing time may not be consequential unless your site + /// has a very large HTML source to a construct a Document Object Model from. + /// + /// If there is no parser-blocking JavaScript then the + /// [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event) + /// event (see + /// [`domContentLoadedEventStart`](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/domContentLoadedEventStart) + /// for the timestamp) will fire immediately after `domInteractive`. external DOMHighResTimeStamp get domInteractive; + + /// The **`domContentLoadedEventStart`** read-only property returns a + /// [DOMHighResTimeStamp] representing the time immediately before the current + /// document's + /// [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event) + /// event handler starts. + /// + /// Typically frameworks and libraries wait for the `DOMContentLoaded` event + /// before starting to run their code. We can use the + /// `domContentLoadedEventStart` and the + /// [`domContentLoadedEventEnd`](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/domContentLoadedEventEnd) + /// properties to calculate how long this takes to run. external DOMHighResTimeStamp get domContentLoadedEventStart; + + /// The **`domContentLoadedEventEnd`** read-only property returns a + /// [DOMHighResTimeStamp] representing the time immediately after the current + /// document's + /// [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event) + /// event handler completes. + /// + /// Typically frameworks and libraries wait for the `DOMContentLoaded` event + /// before starting to run their code. We can use the + /// `domContentLoadedEventEnd` and the + /// [`domContentLoadedEventStart`](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/domContentLoadedEventStart) + /// properties to calculate how long this takes to run. external DOMHighResTimeStamp get domContentLoadedEventEnd; + + /// The **`domComplete`** read-only property returns a [DOMHighResTimeStamp] + /// representing the time immediately before the user agent sets the + /// document's + /// [`readyState`](https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState) + /// to `"complete"`. + /// + /// See also the `complete` state of [Document.readyState] which corresponds + /// to this property and refers to the state in which the document and all + /// sub-resources have finished loading. The state also indicates that the + /// [Window.load_event] event is about to fire. external DOMHighResTimeStamp get domComplete; + + /// The **`loadEventStart`** read-only property returns a + /// [DOMHighResTimeStamp] representing the time immediately before the current + /// document's + /// [`load`](https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event) + /// event handler starts. external DOMHighResTimeStamp get loadEventStart; + + /// The **`loadEventEnd`** read-only property returns a [DOMHighResTimeStamp] + /// representing the time immediately after the current document's + /// [`load`](https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event) + /// event handler completes. external DOMHighResTimeStamp get loadEventEnd; + + /// The **`type`** read-only property returns the type of navigation. + /// + /// You can use this property to categorize your navigation timing data as + /// each of these types will have different performance characteristics. Users + /// going back and forth might experience a faster site than users performing + /// navigation for the first time or submitting forms, etc. + /// + /// For example, if your site provides new content frequently, you might want + /// to refresh that content using + /// [Fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or + /// similar and avoid users having to hit reload for the entire page all the + /// time. The `"reload"` type can help you find pages that are reloaded + /// frequently. external NavigationTimingType get type; + + /// The **`redirectCount`** read-only property returns a number representing + /// the number of redirects since the last non-redirect navigation in the + /// current browsing context. + /// + /// The higher the number of redirects on a page, the longer the page load + /// time. To improve the performance of your web page, avoid multiple + /// redirects. + /// + /// The [PerformanceResourceTiming.redirectStart] and + /// [PerformanceResourceTiming.redirectEnd] properties can be used to measure + /// redirection time. Note that they will return `0` for cross-origin + /// redirects. + /// + /// Note that client side redirects, such as `<meta http-equiv="refresh" + /// content="0; url=https://example.com/">` are not considered here. external int get redirectCount; external DOMHighResTimeStamp get criticalCHRestart; } @@ -79,26 +187,350 @@ extension type PerformanceTiming._(JSObject _) implements JSObject { /// The legacy **`toJSON()`** method of the [PerformanceTiming] interface is a /// ; it returns a JSON representation of the [PerformanceTiming] object. external JSObject toJSON(); + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] interface instead. + /// + /// The legacy + /// **`PerformanceTiming.navigationStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, right after the prompt for unload + /// terminates on + /// the previous document in the same browsing context. If there is no + /// previous document, + /// this value will be the same as [PerformanceTiming.fetchStart]. external int get navigationStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.unloadEventStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, the [Window.unload_event] event has + /// been thrown. If + /// there is no previous document, or if the previous document, or one of the + /// needed + /// redirects, is not of the same origin, the value returned is `0`. external int get unloadEventStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.unloadEventEnd`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, the [Window.unload_event] event + /// handler finishes. If + /// there is no previous document, or if the previous document, or one of the + /// needed + /// redirects, is not of the same origin, the value returned is `0`. external int get unloadEventEnd; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.redirectStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, the first HTTP redirect starts. If + /// there is no + /// redirect, or if one of the redirect is not of the same origin, the value + /// returned is + /// `0`. external int get redirectStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.redirectEnd`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, the last HTTP redirect is completed, + /// that is when + /// the last byte of the HTTP response has been received. If there is no + /// redirect, or if one + /// of the redirect is not of the same origin, the value returned is `0`. external int get redirectEnd; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.fetchStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, the browser is ready to fetch the + /// document using + /// an HTTP request. This moment is _before_ the check to any application + /// cache. external int get fetchStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.domainLookupStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, where the domain lookup starts. If a + /// persistent + /// connection is used, or the information is stored in a cache or a local + /// resource, the + /// value will be the same as [PerformanceTiming.fetchStart]. external int get domainLookupStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.domainLookupEnd`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, where the domain lookup is finished. + /// If a + /// persistent connection is used, or the information is stored in a cache or + /// a local + /// resource, the value will be the same as [PerformanceTiming.fetchStart]. external int get domainLookupEnd; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.connectStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, where the request to open a + /// connection is sent to + /// the network. If the transport layer reports an error and the connection + /// establishment is + /// started again, the last connection establishment start time is given. If a + /// persistent + /// connection is used, the value will be the same as + /// [PerformanceTiming.fetchStart]. external int get connectStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.connectEnd`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, where the connection is opened + /// network. If the + /// transport layer reports an error and the connection establishment is + /// started again, the + /// last connection establishment end time is given. If a persistent + /// connection is used, the + /// value will be the same as [PerformanceTiming.fetchStart]. A connection is + /// considered as opened when all secure connection handshake, or SOCKS + /// authentication, is + /// terminated. external int get connectEnd; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] interface instead. + /// + /// The legacy + /// **`PerformanceTiming.secureConnectionStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, where the secure connection + /// handshake starts. If + /// no such connection is requested, it returns `0`. external int get secureConnectionStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.requestStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, when the browser sent the request to + /// obtain the + /// actual document, from the server or from a cache. If the transport layer + /// fails after the + /// start of the request and the connection is reopened, this property will be + /// set to the + /// time corresponding to the new request. external int get requestStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.responseStart`** + /// read-only property returns an `unsigned long long` representing the moment + /// in + /// time (in milliseconds since the UNIX epoch) when the browser received the + /// first byte of + /// the response from the server, cache, or local resource. external int get responseStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.responseEnd`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, when the browser received the last + /// byte of the + /// response, or when the connection is closed if this happened first, from + /// the server from + /// a cache or from a local resource. external int get responseEnd; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.domLoading`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, when the parser started its work, + /// that is when its + /// [Document.readyState] changes to `'loading'` and the + /// corresponding [Document.readystatechange_event] event is thrown. external int get domLoading; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.domInteractive`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, when the parser finished its work on + /// the main + /// document, that is when its [Document.readyState] changes to + /// `'interactive'` and the corresponding [Document.readystatechange_event] + /// event is + /// thrown. + /// + /// This property can be used to measure the speed of loading websites that + /// users + /// _feels_. Nevertheless there are a few caveats that happens if scripts are + /// blocking rendering and not loaded asynchronously or with custom Web fonts. + /// [Check if you are in one of these cases](https://www.stevesouders.com/blog/2015/08/07/dominteractive-is-it-really/) + /// before using this property as a proxy for the + /// user experience of a website's speed of loading. external int get domInteractive; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.domContentLoadedEventStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, right before the parser sent the + /// [Document.DOMContentLoaded_event] event, that is right after all the + /// scripts that need to be + /// executed right after parsing has been executed. external int get domContentLoadedEventStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.domContentLoadedEventEnd`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, right after all the scripts that + /// need to be + /// executed as soon as possible, in order or not, has been executed. external int get domContentLoadedEventEnd; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface instead. + /// + /// The legacy + /// **`PerformanceTiming.domComplete`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, when the parser finished its work on + /// the main + /// document, that is when its [Document.readyState] changes to + /// `'complete'` and the corresponding [Document.readystatechange_event] event + /// is + /// thrown. external int get domComplete; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface's [PerformanceNavigationTiming.loadEventStart] read-only + /// > property instead. + /// + /// The legacy + /// **`PerformanceTiming.loadEventStart`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, when the [Window.load_event] event + /// was sent for the + /// current document. If this event has not yet been sent, it returns `0.` external int get loadEventStart; + + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] + /// > interface's [PerformanceNavigationTiming.loadEventEnd] read-only + /// > property instead. + /// + /// The legacy + /// **`PerformanceTiming.loadEventEnd`** + /// read-only property returns an `unsigned long long` representing the + /// moment, + /// in milliseconds since the UNIX epoch, when the [Window.load_event] event + /// handler + /// terminated, that is when the load event is completed. If this event has + /// not yet been + /// sent, or is not yet completed, it returns `0.` external int get loadEventEnd; } @@ -130,6 +562,24 @@ extension type PerformanceNavigation._(JSObject _) implements JSObject { /// The **`toJSON()`** method of the [PerformanceNavigation] interface is a ; /// it returns a JSON representation of the [PerformanceNavigation] object. external JSObject toJSON(); + + /// The legacy + /// **`PerformanceNavigation.type`** + /// read-only property returns an `unsigned short` containing a constant + /// describing how the navigation to this page was done. + /// + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] interface instead. external int get type; + + /// The legacy + /// **`PerformanceNavigation.redirectCount`** + /// read-only property returns an `unsigned short` representing the number of + /// REDIRECTs done before reaching the page. + /// + /// > **Warning:** This interface of this property is deprecated in the + /// > [Navigation Timing Level 2 specification](https://w3c.github.io/navigation-timing/#obsolete). + /// > Please use the [PerformanceNavigationTiming] interface instead. external int get redirectCount; } diff --git a/lib/src/dom/notifications.dart b/lib/src/dom/notifications.dart index 3b664da6..4cf5552e 100644 --- a/lib/src/dom/notifications.dart +++ b/lib/src/dom/notifications.dart @@ -61,28 +61,151 @@ extension type Notification._(JSObject _) implements EventTarget, JSObject { /// > already playing /// > in a music app). external void close(); - external set onclick(EventHandler value); external EventHandler get onclick; - external set onshow(EventHandler value); + external set onclick(EventHandler value); external EventHandler get onshow; - external set onerror(EventHandler value); + external set onshow(EventHandler value); external EventHandler get onerror; - external set onclose(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onclose; + external set onclose(EventHandler value); + + /// The **`title`** read-only property of the + /// [Notification] interface indicates the title of the notification, as + /// specified in the `title` parameter of the + /// [Notification.Notification] constructor. external String get title; + + /// The **`dir`** read-only property of the [Notification] interface indicates + /// the text direction of the notification, as specified in the `dir` option + /// of the [Notification.Notification] constructor. external NotificationDirection get dir; + + /// The **`lang`** read-only property of the + /// [Notification] interface indicates the language used in the notification, + /// as specified in the `lang` option of the + /// [Notification.Notification] constructor. + /// + /// The language itself is specified using a string representing a language + /// tag according to `5646, "Tags for Identifying Languages (also known as BCP + /// 47)"`. + /// See the Sitepoint + /// [ISO 2 letter language codes](https://www.sitepoint.com/iso-2-letter-language-codes/) + /// page for a simple reference. external String get lang; + + /// The **`body`** read-only property of the + /// [Notification] interface indicates the body string of the notification, as + /// specified in the `body` option of the + /// [Notification.Notification] constructor. external String get body; + + /// The **`tag`** read-only property of the + /// [Notification] interface signifies an identifying tag for the + /// notification, + /// as specified in the `tag` option of the + /// [Notification.Notification] constructor. + /// + /// The idea of notification tags is that more than one notification can share + /// the same + /// tag, linking them together. One notification can then be programmatically + /// replaced with + /// another to avoid the users' screen being filled up with a huge number of + /// similar + /// notifications. external String get tag; + + /// The **`image`** read-only property of the + /// [Notification] interface contains the URL of an image to be displayed as + /// part of the notification, as specified in the `image` option of the + /// [Notification.Notification] constructor. external String get image; + + /// The **`icon`** read-only property of the + /// [Notification] interface contains the URL of an icon to be displayed as + /// part of the notification, as specified in the `icon` option of the + /// [Notification.Notification] constructor. external String get icon; + + /// The **`badge`** read-only property of the [Notification] interface returns + /// a string containing the URL of an image to represent the notification when + /// there is not enough space to display the notification itself such as for + /// example, the Android Notification Bar. On Android devices, the badge + /// should accommodate devices up to 4x resolution, about 96 by 96 px, and the + /// image will be automatically masked. external String get badge; + + /// The **`vibrate`** read-only property of the [Notification] + /// interface specifies a + /// [vibration pattern](https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API#vibration_patterns) + /// for the device's vibration hardware to emit when the notification fires. + /// This is + /// specified in the `vibrate` option of the + /// [Notification.Notification] constructor. external JSArray<JSNumber> get vibrate; + + /// The **`timestamp`** read-only property of the + /// [Notification] interface returns a number, as + /// specified in the `timestamp` option of the + /// [Notification.Notification] constructor. + /// + /// The notification's timestamp can represent the time, in milliseconds since + /// 00:00:00 UTC + /// on 1 January 1970, of the event for which the notification was created, or + /// it can be an + /// arbitrary timestamp that you want associated with the notification. For + /// example, a + /// timestamp for an upcoming meeting could be set in the future, whereas a + /// timestamp for a + /// missed message could be set in the past. external EpochTimeStamp get timestamp; + + /// The **`renotify`** read-only property of the + /// [Notification] interface specifies whether the user should be notified + /// after a new notification replaces an old one, as specified in the + /// `renotify` + /// option of the [Notification.Notification] constructor. external bool get renotify; + + /// The **`silent`** read-only property of the + /// [Notification] interface specifies whether the notification should be + /// silent, i.e., no sounds or vibrations should be issued, regardless of the + /// device + /// settings. This is specified in the `silent` option of the + /// [Notification.Notification] constructor. external bool? get silent; + + /// The **`requireInteraction`** read-only property of the [Notification] + /// interface returns a boolean value indicating that a notification should + /// remain active until the user clicks or dismisses it, rather than closing + /// automatically. + /// + /// > **Note:** This can be set when the notification is first created by + /// > setting the `requireInteraction` option to `true` in the options object + /// > of the [Notification.Notification] constructor. external bool get requireInteraction; + + /// The **`data`** read-only property of the + /// [Notification] interface returns a structured clone of the notification's + /// data, as specified in the `data` option of the + /// [Notification.Notification] constructor. + /// + /// The notification's data can be any arbitrary data that you want associated + /// with the + /// notification. external JSAny? get data; + + /// The **`actions`** read-only property of the [Notification] interface + /// provides the actions available for users to choose from for interacting + /// with the notification. + /// + /// The actions are set using the `actions` option of the second argument for + /// the [ServiceWorkerRegistration.showNotification] method and + /// [Notification.Notification] constructor. + /// + /// > **Note:** Browsers typically limit the maximum number of actions they + /// > will display for a particular notification. Check the static + /// > [Notification.maxActions_static] property to determine the limit. external JSArray<NotificationAction> get actions; } extension type NotificationOptions._(JSObject _) implements JSObject { @@ -103,34 +226,34 @@ extension type NotificationOptions._(JSObject _) implements JSObject { JSArray<NotificationAction> actions, }); - external set dir(NotificationDirection value); external NotificationDirection get dir; - external set lang(String value); + external set dir(NotificationDirection value); external String get lang; - external set body(String value); + external set lang(String value); external String get body; - external set tag(String value); + external set body(String value); external String get tag; - external set image(String value); + external set tag(String value); external String get image; - external set icon(String value); + external set image(String value); external String get icon; - external set badge(String value); + external set icon(String value); external String get badge; - external set vibrate(VibratePattern value); + external set badge(String value); external VibratePattern get vibrate; - external set timestamp(EpochTimeStamp value); + external set vibrate(VibratePattern value); external EpochTimeStamp get timestamp; - external set renotify(bool value); + external set timestamp(EpochTimeStamp value); external bool get renotify; - external set silent(bool? value); + external set renotify(bool value); external bool? get silent; - external set requireInteraction(bool value); + external set silent(bool? value); external bool get requireInteraction; - external set data(JSAny? value); + external set requireInteraction(bool value); external JSAny? get data; - external set actions(JSArray<NotificationAction> value); + external set data(JSAny? value); external JSArray<NotificationAction> get actions; + external set actions(JSArray<NotificationAction> value); } extension type NotificationAction._(JSObject _) implements JSObject { external factory NotificationAction({ @@ -139,18 +262,18 @@ extension type NotificationAction._(JSObject _) implements JSObject { String icon, }); - external set action(String value); external String get action; - external set title(String value); + external set action(String value); external String get title; - external set icon(String value); + external set title(String value); external String get icon; + external set icon(String value); } extension type GetNotificationOptions._(JSObject _) implements JSObject { external factory GetNotificationOptions({String tag}); - external set tag(String value); external String get tag; + external set tag(String value); } /// The **`NotificationEvent`** interface of the [Notifications API] represents @@ -175,7 +298,21 @@ extension type NotificationEvent._(JSObject _) NotificationEventInit eventInitDict, ); + /// The **`notification`** read-only property of the [NotificationEvent] + /// interface returns the instance of the [Notification] that was clicked to + /// fire the event. The [Notification] provides read-only access to many + /// properties that were set at the instantiation time of the Notification + /// such as `tag` and `data` attributes that allow you to store information + /// for deferred use in the `notificationclick` event. external Notification get notification; + + /// The **`action`** read-only property of the [NotificationEvent] interface + /// returns the string ID of the notification button the user clicked. This + /// value returns an empty string if the user clicked the notification + /// somewhere other than an action button, or the notification does not have a + /// button. The notification id is set during the creation of the Notification + /// via the actions array attribute and can't be modified unless the + /// notification is replaced. external String get action; } extension type NotificationEventInit._(JSObject _) @@ -188,8 +325,8 @@ extension type NotificationEventInit._(JSObject _) String action, }); - external set notification(Notification value); external Notification get notification; - external set action(String value); + external set notification(Notification value); external String get action; + external set action(String value); } diff --git a/lib/src/dom/orientation_event.dart b/lib/src/dom/orientation_event.dart index fb939e10..0cdb9b32 100644 --- a/lib/src/dom/orientation_event.dart +++ b/lib/src/dom/orientation_event.dart @@ -30,9 +30,45 @@ extension type DeviceOrientationEvent._(JSObject _) implements Event, JSObject { ]); external static JSPromise<JSString> requestPermission([bool absolute]); + + /// The **`alpha`** read-only property of the [DeviceOrientationEvent] + /// interface returns the rotation of the device around the Z axis; that is, + /// the number of degrees by + /// which the device is being twisted around the center of the screen. + /// See + /// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained) + /// for details. external num? get alpha; + + /// The **`beta`** read-only property of the [DeviceOrientationEvent] + /// interface returns the rotation of the device around the X axis; that is, + /// the number of degrees, + /// ranged between -180 and 180, by which the device is tipped forward or + /// backward. + /// See + /// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained) + /// for details. external num? get beta; + + /// The **`gamma`** read-only property of the [DeviceOrientationEvent] + /// interface returns the rotation of the device around the Y axis; that is, + /// the number of degrees, + /// ranged between `-90` and `90`, by which the device is tilted left + /// or right. + /// See + /// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained) + /// for details. external num? get gamma; + + /// The **`absolute`** read-only property of the [DeviceOrientationEvent] + /// interface indicates whether or not the device is providing orientation + /// data absolutely (that is, + /// in reference to the Earth's coordinate frame) or using some arbitrary + /// frame determined + /// by the device. + /// See + /// [Orientation and motion data explained](https://developer.mozilla.org/en-US/docs/Web/API/Device_orientation_events/Orientation_and_motion_data_explained) + /// for details. external bool get absolute; } extension type DeviceOrientationEventInit._(JSObject _) @@ -47,14 +83,14 @@ extension type DeviceOrientationEventInit._(JSObject _) bool absolute, }); - external set alpha(num? value); external num? get alpha; - external set beta(num? value); + external set alpha(num? value); external num? get beta; - external set gamma(num? value); + external set beta(num? value); external num? get gamma; - external set absolute(bool value); + external set gamma(num? value); external bool get absolute; + external set absolute(bool value); } /// The **`DeviceMotionEventAcceleration`** interface of the @@ -66,8 +102,25 @@ extension type DeviceOrientationEventInit._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration). extension type DeviceMotionEventAcceleration._(JSObject _) implements JSObject { + /// The **`x`** read-only property of the [DeviceMotionEventAcceleration] + /// interface indicates the amount of acceleration that occurred along the X + /// axis in a + /// [`DeviceMotionEventAcceleration`](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration) + /// object. external num? get x; + + /// The **`y`** read-only property of the [DeviceMotionEventAcceleration] + /// interface indicates the amount of acceleration that occurred along the Y + /// axis in a + /// [`DeviceMotionEventAcceleration`](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration) + /// object. external num? get y; + + /// The **`z`** read-only property of the [DeviceMotionEventAcceleration] + /// interface indicates the amount of acceleration that occurred along the Z + /// axis in a + /// [`DeviceMotionEventAcceleration`](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventAcceleration) + /// object. external num? get z; } @@ -80,8 +133,19 @@ extension type DeviceMotionEventAcceleration._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEventRotationRate). extension type DeviceMotionEventRotationRate._(JSObject _) implements JSObject { + /// The **`alpha`** read-only property of the [DeviceMotionEventRotationRate] + /// interface indicates the rate of rotation around the Z axis, in degrees per + /// second. external num? get alpha; + + /// The **`beta`** read-only property of the [DeviceMotionEventRotationRate] + /// interface indicates the rate of rotation around the X axis, in degrees per + /// second. external num? get beta; + + /// The **`gamma`** read-only property of the [DeviceMotionEventRotationRate] + /// interface indicates the rate of rotation around the Y axis, in degrees per + /// second. external num? get gamma; } @@ -103,9 +167,65 @@ extension type DeviceMotionEvent._(JSObject _) implements Event, JSObject { ]); external static JSPromise<JSString> requestPermission(); + + /// The **`acceleration`** read-only property of the [DeviceMotionEvent] + /// interface returns the amount of acceleration recorded by + /// the device, in [meters per second squared + /// (m/s²)](https://en.wikipedia.org/wiki/Meter_per_second_squared). + /// The acceleration value does not include the effect of + /// the gravity force, in contrast to + /// [DeviceMotionEvent.accelerationIncludingGravity]. + /// + /// > **Note:** If the hardware doesn't know how to remove gravity from the + /// > acceleration data, this value may not be present in the + /// > [DeviceMotionEvent]. In this situation, you'll need to use + /// > [DeviceMotionEvent.accelerationIncludingGravity] instead. external DeviceMotionEventAcceleration? get acceleration; + + /// The **`accelerationIncludingGravity`** read-only property of the + /// [DeviceMotionEvent] interface returns the + /// amount of acceleration recorded by the device, in [meters per second + /// squared (m/s²)](https://en.wikipedia.org/wiki/Meter_per_second_squared). + /// Unlike [DeviceMotionEvent.acceleration] + /// which compensates for the influence of gravity, its value is the sum of + /// the acceleration + /// of the device as induced by the user and an acceleration equal and + /// opposite to that + /// caused by gravity. In other words, it measures the + /// [g-force](https://en.wikipedia.org/wiki/G-Force). In practice, this value + /// represents + /// the raw data measured by an + /// [accelerometer](https://en.wikipedia.org/wiki/Accelerometer). + /// + /// This value is not typically as useful as [DeviceMotionEvent.acceleration], + /// but may be the only value available on devices that aren't able to remove + /// gravity from + /// the acceleration data, such as on devices that don't have a gyroscope. + /// + /// > **Note:** `accelerationIncludingGravity`'s name can be misleading. This + /// > property represents acceleration including _the effects of_ gravity. For + /// > example, if a device is lying flat on a horizontal surface with the + /// > screen pointing up, gravity would be -9.8 along the Z axis, while + /// > `acceleration.z` would be 0 and `accelerationIncludingGravity.z` would + /// > be 9.8. Similarly, if a device is in free fall with its screen + /// > horizontal and pointing up, gravity would be -9.8 along the Z axis, + /// > while `acceleration.z` would be -9.8 and + /// > `accelerationIncludingGravity.z` would be 0. external DeviceMotionEventAcceleration? get accelerationIncludingGravity; + + /// The **`rotationRate`** read-only property of the [DeviceMotionEvent] + /// interface returns the rate at which the device is rotating around each of + /// its axes in degrees per + /// second. + /// + /// > **Note:** If the hardware isn't capable of providing this + /// > information, this property returns `null`. external DeviceMotionEventRotationRate? get rotationRate; + + /// The **`interval`** read-only property of the [DeviceMotionEvent] interface + /// returns the interval, in milliseconds, at which data is obtained from the + /// underlying + /// hardware. You can use this to determine the granularity of motion events. external num get interval; } extension type DeviceMotionEventAccelerationInit._(JSObject _) @@ -116,12 +236,12 @@ extension type DeviceMotionEventAccelerationInit._(JSObject _) num? z, }); - external set x(num? value); external num? get x; - external set y(num? value); + external set x(num? value); external num? get y; - external set z(num? value); + external set y(num? value); external num? get z; + external set z(num? value); } extension type DeviceMotionEventRotationRateInit._(JSObject _) implements JSObject { @@ -131,12 +251,12 @@ extension type DeviceMotionEventRotationRateInit._(JSObject _) num? gamma, }); - external set alpha(num? value); external num? get alpha; - external set beta(num? value); + external set alpha(num? value); external num? get beta; - external set gamma(num? value); + external set beta(num? value); external num? get gamma; + external set gamma(num? value); } extension type DeviceMotionEventInit._(JSObject _) implements EventInit, JSObject { @@ -150,13 +270,13 @@ extension type DeviceMotionEventInit._(JSObject _) num interval, }); - external set acceleration(DeviceMotionEventAccelerationInit value); external DeviceMotionEventAccelerationInit get acceleration; + external set acceleration(DeviceMotionEventAccelerationInit value); + external DeviceMotionEventAccelerationInit get accelerationIncludingGravity; external set accelerationIncludingGravity( DeviceMotionEventAccelerationInit value); - external DeviceMotionEventAccelerationInit get accelerationIncludingGravity; - external set rotationRate(DeviceMotionEventRotationRateInit value); external DeviceMotionEventRotationRateInit get rotationRate; - external set interval(num value); + external set rotationRate(DeviceMotionEventRotationRateInit value); external num get interval; + external set interval(num value); } diff --git a/lib/src/dom/payment_request.dart b/lib/src/dom/payment_request.dart index d48976bf..a255ac12 100644 --- a/lib/src/dom/payment_request.dart +++ b/lib/src/dom/payment_request.dart @@ -100,9 +100,17 @@ extension type PaymentRequest._(JSObject _) implements EventTarget, JSObject { /// Payment /// Request API (or even provide instructions for paying by mail or by phone). external JSPromise<JSBoolean> canMakePayment(); + + /// The **`id`** read-only attribute of the + /// [PaymentRequest] interface returns a unique identifier for a particular + /// [PaymentRequest] instance. + /// + /// When constructing an instance of the [PaymentRequest], you are able to + /// supply an custom id. If none is provided, the browser automatically sets + /// the id value to a UUID. external String get id; - external set onpaymentmethodchange(EventHandler value); external EventHandler get onpaymentmethodchange; + external set onpaymentmethodchange(EventHandler value); } extension type PaymentMethodData._(JSObject _) implements JSObject { external factory PaymentMethodData({ @@ -110,10 +118,10 @@ extension type PaymentMethodData._(JSObject _) implements JSObject { JSObject data, }); - external set supportedMethods(String value); external String get supportedMethods; - external set data(JSObject value); + external set supportedMethods(String value); external JSObject get data; + external set data(JSObject value); } extension type PaymentCurrencyAmount._(JSObject _) implements JSObject { external factory PaymentCurrencyAmount({ @@ -121,10 +129,10 @@ extension type PaymentCurrencyAmount._(JSObject _) implements JSObject { required String value, }); - external set currency(String value); external String get currency; - external set value(String value); + external set currency(String value); external String get value; + external set value(String value); } extension type PaymentDetailsBase._(JSObject _) implements JSObject { external factory PaymentDetailsBase({ @@ -132,10 +140,10 @@ extension type PaymentDetailsBase._(JSObject _) implements JSObject { JSArray<PaymentDetailsModifier> modifiers, }); - external set displayItems(JSArray<PaymentItem> value); external JSArray<PaymentItem> get displayItems; - external set modifiers(JSArray<PaymentDetailsModifier> value); + external set displayItems(JSArray<PaymentItem> value); external JSArray<PaymentDetailsModifier> get modifiers; + external set modifiers(JSArray<PaymentDetailsModifier> value); } extension type PaymentDetailsInit._(JSObject _) implements PaymentDetailsBase, JSObject { @@ -146,10 +154,10 @@ extension type PaymentDetailsInit._(JSObject _) required PaymentItem total, }); - external set id(String value); external String get id; - external set total(PaymentItem value); + external set id(String value); external PaymentItem get total; + external set total(PaymentItem value); } extension type PaymentDetailsUpdate._(JSObject _) implements PaymentDetailsBase, JSObject { @@ -160,10 +168,10 @@ extension type PaymentDetailsUpdate._(JSObject _) JSObject paymentMethodErrors, }); - external set total(PaymentItem value); external PaymentItem get total; - external set paymentMethodErrors(JSObject value); + external set total(PaymentItem value); external JSObject get paymentMethodErrors; + external set paymentMethodErrors(JSObject value); } extension type PaymentDetailsModifier._(JSObject _) implements JSObject { external factory PaymentDetailsModifier({ @@ -173,14 +181,14 @@ extension type PaymentDetailsModifier._(JSObject _) implements JSObject { JSObject data, }); - external set supportedMethods(String value); external String get supportedMethods; - external set total(PaymentItem value); + external set supportedMethods(String value); external PaymentItem get total; - external set additionalDisplayItems(JSArray<PaymentItem> value); + external set total(PaymentItem value); external JSArray<PaymentItem> get additionalDisplayItems; - external set data(JSObject value); + external set additionalDisplayItems(JSArray<PaymentItem> value); external JSObject get data; + external set data(JSObject value); } extension type PaymentItem._(JSObject _) implements JSObject { external factory PaymentItem({ @@ -189,18 +197,18 @@ extension type PaymentItem._(JSObject _) implements JSObject { bool pending, }); - external set label(String value); external String get label; - external set amount(PaymentCurrencyAmount value); + external set label(String value); external PaymentCurrencyAmount get amount; - external set pending(bool value); + external set amount(PaymentCurrencyAmount value); external bool get pending; + external set pending(bool value); } extension type PaymentCompleteDetails._(JSObject _) implements JSObject { external factory PaymentCompleteDetails({JSObject? data}); - external set data(JSObject? value); external JSObject? get data; + external set data(JSObject? value); } /// The **`PaymentResponse`** interface of the @@ -241,8 +249,31 @@ extension type PaymentResponse._(JSObject _) implements EventTarget, JSObject { /// declined credit /// cards. external JSPromise<JSAny?> retry([PaymentValidationErrors errorFields]); + + /// The **`requestId`** read-only property of the + /// [PaymentResponse] interface returns the free-form identifier supplied by + /// the `PaymentResponse()` constructor by details.id. external String get requestId; + + /// The **`methodName`** read-only + /// property of the [PaymentResponse] interface returns a string uniquely + /// identifying the payment handler selected by the user. + /// + /// This string may be either + /// one of the standardized payment method identifiers or a URL used by the + /// payment handler + /// to process payments. external String get methodName; + + /// The **`details`** read-only property of the + /// [PaymentResponse] interface returns a JSON-serializable object that + /// provides a payment method specific message used by the merchant to process + /// the + /// transaction and determine a successful funds transfer. + /// + /// This data is returned by the payment app that satisfies the payment + /// request. Developers need to consult whomever controls the URL for the + /// expected shape of the details object. external JSObject get details; } extension type PaymentValidationErrors._(JSObject _) implements JSObject { @@ -251,10 +282,10 @@ extension type PaymentValidationErrors._(JSObject _) implements JSObject { JSObject paymentMethod, }); - external set error(String value); external String get error; - external set paymentMethod(JSObject value); + external set error(String value); external JSObject get paymentMethod; + external set paymentMethod(JSObject value); } /// The **`PaymentMethodChangeEvent`** interface of the @@ -275,7 +306,24 @@ extension type PaymentMethodChangeEvent._(JSObject _) PaymentMethodChangeEventInit eventInitDict, ]); + /// The read-only **`methodName`** property of the [PaymentMethodChangeEvent] + /// interface is a string which + /// uniquely identifies the payment handler currently selected by the user. + /// The + /// payment handler may be a payment technology, such as Apple Pay or Android + /// Pay, and each + /// payment handler may support multiple payment methods; changes to the + /// payment method + /// within the payment handler are described by the + /// `PaymentMethodChangeEvent`. external String get methodName; + + /// The read-only **`methodDetails`** property of the + /// [PaymentMethodChangeEvent] interface is an object + /// containing any data the payment handler may provide to describe the change + /// the user + /// has made to their payment method. The value is `null` if no details + /// are available. external JSObject? get methodDetails; } extension type PaymentMethodChangeEventInit._(JSObject _) @@ -288,10 +336,10 @@ extension type PaymentMethodChangeEventInit._(JSObject _) JSObject? methodDetails, }); - external set methodName(String value); external String get methodName; - external set methodDetails(JSObject? value); + external set methodName(String value); external JSObject? get methodDetails; + external set methodDetails(JSObject? value); } /// The **`PaymentRequestUpdateEvent`** interface is used for events sent to a diff --git a/lib/src/dom/performance_timeline.dart b/lib/src/dom/performance_timeline.dart index 6112fb4c..9a7f2129 100644 --- a/lib/src/dom/performance_timeline.dart +++ b/lib/src/dom/performance_timeline.dart @@ -54,9 +54,28 @@ extension type PerformanceEntry._(JSObject _) implements JSObject { /// [PerformanceEntry] object. external JSObject toJSON(); external int get id; + + /// The read-only **`name`** property of the [PerformanceEntry] interface is a + /// string representing the name for a performance entry. It acts as an + /// identifier, but it does not have to be unique. The value depends on the + /// subclass. external String get name; + + /// The read-only **`entryType`** property returns a string representing the + /// type of performance metric that this entry represents. + /// + /// All supported `entryTypes` are available using the static property + /// [PerformanceObserver.supportedEntryTypes_static]. external String get entryType; + + /// The read-only **`startTime`** property returns the first recorded for + /// this . The meaning of this property depends on the value of this entry's + /// [PerformanceEntry.entryType]. external DOMHighResTimeStamp get startTime; + + /// The read-only **`duration`** property returns a that is the duration of + /// the . The meaning of this property depends on the value of this entry's + /// [PerformanceEntry.entryType]. external DOMHighResTimeStamp get duration; external int get navigationId; } @@ -100,8 +119,8 @@ extension type PerformanceObserverCallbackOptions._(JSObject _) external factory PerformanceObserverCallbackOptions( {int droppedEntriesCount}); - external set droppedEntriesCount(int value); external int get droppedEntriesCount; + external set droppedEntriesCount(int value); } extension type PerformanceObserverInit._(JSObject _) implements JSObject { external factory PerformanceObserverInit({ @@ -110,12 +129,12 @@ extension type PerformanceObserverInit._(JSObject _) implements JSObject { bool buffered, }); - external set entryTypes(JSArray<JSString> value); external JSArray<JSString> get entryTypes; - external set type(String value); + external set entryTypes(JSArray<JSString> value); external String get type; - external set buffered(bool value); + external set type(String value); external bool get buffered; + external set buffered(bool value); } /// The **`PerformanceObserverEntryList`** interface is a list of diff --git a/lib/src/dom/permissions.dart b/lib/src/dom/permissions.dart index e03378ba..8ba2b585 100644 --- a/lib/src/dom/permissions.dart +++ b/lib/src/dom/permissions.dart @@ -35,8 +35,8 @@ extension type Permissions._(JSObject _) implements JSObject { extension type PermissionDescriptor._(JSObject _) implements JSObject { external factory PermissionDescriptor({required String name}); - external set name(String value); external String get name; + external set name(String value); } /// The **`PermissionStatus`** interface of the @@ -49,10 +49,17 @@ extension type PermissionDescriptor._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/PermissionStatus). extension type PermissionStatus._(JSObject _) implements EventTarget, JSObject { + /// The **`state`** read-only property of the + /// [PermissionStatus] interface returns the state of a requested permission. + /// This property returns one of `'granted'`, `'denied'`, or + /// `'prompt'`. external PermissionState get state; + + /// The **`name`** read-only property of the [PermissionStatus] interface + /// returns the name of a requested permission. external String get name; - external set onchange(EventHandler value); external EventHandler get onchange; + external set onchange(EventHandler value); } extension type PermissionSetParameters._(JSObject _) implements JSObject { external factory PermissionSetParameters({ @@ -60,8 +67,8 @@ extension type PermissionSetParameters._(JSObject _) implements JSObject { required PermissionState state, }); - external set descriptor(PermissionDescriptor value); external PermissionDescriptor get descriptor; - external set state(PermissionState value); + external set descriptor(PermissionDescriptor value); external PermissionState get state; + external set state(PermissionState value); } diff --git a/lib/src/dom/pointerevents.dart b/lib/src/dom/pointerevents.dart index 51685df0..46e289fe 100644 --- a/lib/src/dom/pointerevents.dart +++ b/lib/src/dom/pointerevents.dart @@ -63,34 +63,34 @@ extension type PointerEventInit._(JSObject _) JSArray<PointerEvent> predictedEvents, }); - external set pointerId(int value); external int get pointerId; - external set width(num value); + external set pointerId(int value); external num get width; - external set height(num value); + external set width(num value); external num get height; - external set pressure(num value); + external set height(num value); external num get pressure; - external set tangentialPressure(num value); + external set pressure(num value); external num get tangentialPressure; - external set tiltX(int value); + external set tangentialPressure(num value); external int get tiltX; - external set tiltY(int value); + external set tiltX(int value); external int get tiltY; - external set twist(int value); + external set tiltY(int value); external int get twist; - external set altitudeAngle(num value); + external set twist(int value); external num get altitudeAngle; - external set azimuthAngle(num value); + external set altitudeAngle(num value); external num get azimuthAngle; - external set pointerType(String value); + external set azimuthAngle(num value); external String get pointerType; - external set isPrimary(bool value); + external set pointerType(String value); external bool get isPrimary; - external set coalescedEvents(JSArray<PointerEvent> value); + external set isPrimary(bool value); external JSArray<PointerEvent> get coalescedEvents; - external set predictedEvents(JSArray<PointerEvent> value); + external set coalescedEvents(JSArray<PointerEvent> value); external JSArray<PointerEvent> get predictedEvents; + external set predictedEvents(JSArray<PointerEvent> value); } /// The **`PointerEvent`** interface represents the state of a DOM event @@ -152,16 +152,151 @@ extension type PointerEvent._(JSObject _) implements MouseEvent, JSObject { /// For an illustration of predicted events, see /// [Figure 8 in the specification](https://w3c.github.io/pointerevents/#figure_predicted). external JSArray<PointerEvent> getPredictedEvents(); + + /// The **`pointerId`** read-only property of the + /// [PointerEvent] interface is an identifier assigned to a given pointer + /// event. The identifier is unique, being different from the identifiers of + /// all other + /// active pointer events. Since the value may be randomly generated, it is + /// not guaranteed + /// to convey any particular meaning. external int get pointerId; + + /// The **`width`** read-only property of the + /// [PointerEvent] interface represents the width of the pointer's contact + /// geometry along the x-axis, measured in CSS pixels. Depending on the source + /// of the + /// pointer device (such as a finger), for a given pointer, each event may + /// produce a + /// different value. + /// + /// If the input hardware cannot report the contact geometry to the browser, + /// the width + /// defaults to `1`. external num get width; + + /// The **`height`** read-only property of the + /// [PointerEvent] interface represents the height of the pointer's contact + /// geometry, along the y-axis (in CSS pixels). Depending on the source of the + /// pointer + /// device (for example a finger), for a given pointer, each event may produce + /// a different + /// value. + /// + /// If the input hardware cannot report the contact geometry to the browser, + /// the height + /// defaults to `1`. external num get height; + + /// The **`pressure`** read-only property of the + /// [PointerEvent] interface indicates the normalized pressure of the pointer + /// input. external num get pressure; + + /// The **`tangentialPressure`** read-only property of the + /// [PointerEvent] interface represents the normalized tangential pressure of + /// the pointer input (also known as barrel pressure or + /// [cylinder stress](https://en.wikipedia.org/wiki/Cylinder_stress)). external num get tangentialPressure; + + /// The **`tiltX`** read-only property of the + /// [PointerEvent] interface is the angle (in degrees) between the _Y-Z + /// plane_ of the pointer and the screen. This property is typically only + /// useful for a + /// pen/stylus pointer type. + /// + /// For an illustration of this property see + /// [Figure 2 in the specification](https://w3c.github.io/pointerevents/#dom-pointerevent-tiltx). external int get tiltX; + + /// The **`tiltY`** read-only property of the + /// [PointerEvent] interface is the angle (in degrees) between the _X-Z + /// plane_ of the pointer and the screen. This property is typically only + /// useful for a + /// pen/stylus pointer type. + /// + /// For an illustration of this property, see + /// [Figure 3 in the specification](https://w3c.github.io/pointerevents/#dom-pointerevent-tilty). external int get tiltY; + + /// The **`twist`** read-only property of the + /// [PointerEvent] interface represents the clockwise rotation of the pointer + /// (e.g., pen stylus) around its major axis, in degrees. external int get twist; + + /// The **`altitudeAngle`** read-only property of the [PointerEvent] interface + /// represents the angle between a transducer (a pointer or stylus) axis and + /// the X-Y plane of a device screen. + /// The altitude angle describes whether the transducer is perpendicular to + /// the screen, parallel, or at some angle in between. + /// + /// Depending on the specific hardware and platform, user agents will likely + /// only receive one set of values for the transducer orientation relative to + /// the screen plane — either [PointerEvent.tiltx] and [PointerEvent.tilty] or + /// `altitudeAngle` and [PointerEvent.azimuthAngle]. + /// + /// ![The azimuth angle of a pointer compared to the altitude angle](./azimuth_altitude_angles.svg) + /// + /// For an additional illustration of this property, see + /// [Figure 4 in the specification](https://w3c.github.io/pointerevents/#figure_altitudeAngle). external num get altitudeAngle; + + /// The **`azimuthAngle`** read-only property of the [PointerEvent] interface + /// represents the angle between the Y-Z plane and the plane containing both + /// the transducer (pointer or stylus) axis and the Y axis. + /// + /// Depending on the specific hardware and platform, user agents will likely + /// only receive one set of values for the transducer orientation relative to + /// the screen plane — either [PointerEvent.tiltx] and [PointerEvent.tilty] or + /// [PointerEvent.altitudeAngle] and `azimuthAngle`. + /// + /// ![The azimuth angle of a pointer compared to the altitude angle](azimuth_altitude_angles.svg) + /// + /// For an additional illustration of this property, see + /// [Figure 5 in the specification](https://w3c.github.io/pointerevents/#figure_azimuthAngle). external num get azimuthAngle; + + /// The **`pointerType`** read-only property of the + /// [PointerEvent] interface indicates the device type (mouse, pen, or touch) + /// that caused a given pointer event. external String get pointerType; + + /// The **`isPrimary`** read-only property of the + /// [PointerEvent] interface indicates whether or not the pointer device that + /// created the event is the _primary_ pointer. It returns `true` if the + /// pointer that caused the event to be fired is the primary one and returns + /// `false` otherwise. + /// + /// In a multi-pointer scenario (such as a touch screen that supports more + /// than one touch + /// point), this property is used to identify a _master pointer_ among the set + /// of + /// active pointers for each pointer type. Only a primary pointer will produce + /// _compatibility mouse events_. Authors who desire only single-pointer + /// interaction + /// can achieve that by ignoring non-primary pointers. + /// + /// A pointer is considered primary if the pointer represents a mouse device. + /// A pointer + /// representing pen input is considered the primary pen input if its + /// [Element.pointerdown_event] event was dispatched when no other active + /// pointers representing + /// pen input existed. A pointer representing touch input is considered the + /// primary touch + /// input if its [Element.pointerdown_event] event was dispatched when no + /// other active pointers + /// representing touch input existed. + /// + /// When two or more pointer device types are being used concurrently, + /// multiple pointers + /// (one for each [PointerEvent.pointerType]) are considered + /// primary. For example, a touch contact and a mouse cursor moved + /// simultaneously will + /// produce pointers that are both considered primary. If there are multiple + /// primary + /// pointers, these pointers will all produce _compatibility mouse events_ + /// (see + /// [Pointer_events] for more information about pointer, mouse and touch + /// interaction). external bool get isPrimary; } diff --git a/lib/src/dom/push_api.dart b/lib/src/dom/push_api.dart index d925b7ea..7ad43ad8 100644 --- a/lib/src/dom/push_api.dart +++ b/lib/src/dom/push_api.dart @@ -27,8 +27,8 @@ extension type PushPermissionDescriptor._(JSObject _) bool userVisibleOnly, }); - external set userVisibleOnly(bool value); external bool get userVisibleOnly; + external set userVisibleOnly(bool value); } /// The **`PushManager`** interface of the @@ -90,7 +90,15 @@ extension type PushManager._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscriptionOptions). extension type PushSubscriptionOptions._(JSObject _) implements JSObject { + /// The **`userVisibleOnly`** read-only property of the + /// [PushSubscriptionOptions] interface indicates if the returned push + /// subscription will only be used for messages whose effect is made visible + /// to the user. external bool get userVisibleOnly; + + /// The **`applicationServerKey`** read-only property of the + /// [PushSubscriptionOptions] interface contains the public key used by the + /// push server. external JSArrayBuffer? get applicationServerKey; } extension type PushSubscriptionOptionsInit._(JSObject _) implements JSObject { @@ -99,10 +107,10 @@ extension type PushSubscriptionOptionsInit._(JSObject _) implements JSObject { JSAny? applicationServerKey, }); - external set userVisibleOnly(bool value); external bool get userVisibleOnly; - external set applicationServerKey(JSAny? value); + external set userVisibleOnly(bool value); external JSAny? get applicationServerKey; + external set applicationServerKey(JSAny? value); } /// The `PushSubscription` interface of the @@ -132,8 +140,30 @@ extension type PushSubscription._(JSObject _) implements JSObject { /// properties, /// providing a useful shortcut. external PushSubscriptionJSON toJSON(); + + /// The **`endpoint`** read-only property of the + /// [PushSubscription] interface returns a string containing + /// the endpoint associated with the push subscription. + /// + /// The endpoint takes the form of a custom URL pointing to a push server, + /// which can be + /// used to send a push message to the particular service worker instance that + /// subscribed to + /// the push service. For this reason, it is a good idea to keep your endpoint + /// a secret, so + /// others do not hijack it and abuse the push functionality. external String get endpoint; + + /// The **`expirationTime`** read-only property of the + /// [PushSubscription] interface returns a [DOMHighResTimeStamp] + /// of the subscription expiration time associated with the push subscription, + /// if there is + /// one, or `null` otherwise. external EpochTimeStamp? get expirationTime; + + /// The **`options`** read-only property + /// of the [PushSubscription] interface is an object containing the options + /// used to create the subscription. external PushSubscriptionOptions get options; } extension type PushSubscriptionJSON._(JSObject _) implements JSObject { @@ -143,12 +173,12 @@ extension type PushSubscriptionJSON._(JSObject _) implements JSObject { JSObject keys, }); - external set endpoint(String value); external String get endpoint; - external set expirationTime(EpochTimeStamp? value); + external set endpoint(String value); external EpochTimeStamp? get expirationTime; - external set keys(JSObject value); + external set expirationTime(EpochTimeStamp? value); external JSObject get keys; + external set keys(JSObject value); } /// The **`PushMessageData`** interface of the @@ -206,6 +236,9 @@ extension type PushEvent._(JSObject _) implements ExtendableEvent, JSObject { PushEventInit eventInitDict, ]); + /// The `data` read-only property of the **`PushEvent`** interface returns a + /// reference to a [PushMessageData] object containing data sent to the + /// [PushSubscription]. external PushMessageData? get data; } extension type PushEventInit._(JSObject _) @@ -217,8 +250,8 @@ extension type PushEventInit._(JSObject _) PushMessageDataInit data, }); - external set data(PushMessageDataInit value); external PushMessageDataInit get data; + external set data(PushMessageDataInit value); } extension type PushSubscriptionChangeEvent._(JSObject _) implements ExtendableEvent, JSObject { @@ -240,8 +273,8 @@ extension type PushSubscriptionChangeEventInit._(JSObject _) PushSubscription oldSubscription, }); - external set newSubscription(PushSubscription value); external PushSubscription get newSubscription; - external set oldSubscription(PushSubscription value); + external set newSubscription(PushSubscription value); external PushSubscription get oldSubscription; + external set oldSubscription(PushSubscription value); } diff --git a/lib/src/dom/reporting.dart b/lib/src/dom/reporting.dart index d1b3d7b3..db59bd38 100644 --- a/lib/src/dom/reporting.dart +++ b/lib/src/dom/reporting.dart @@ -59,8 +59,19 @@ extension type ReportBody._(JSObject _) implements JSObject { /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Report). extension type Report._(JSObject _) implements JSObject { external JSObject toJSON(); + + /// The **`type`** read-only property of the [Report] + /// interface returns the type of report generated, e.g. `deprecation` or + /// `intervention`. external String get type; + + /// The **`url`** read-only property of the [Report] + /// interface returns the URL of the document that generated the report. external String get url; + + /// The **`body`** read-only property of the [Report] + /// interface returns the body of the report, which is a `ReportBody` object + /// containing the detailed report information. external ReportBody? get body; } @@ -107,10 +118,10 @@ extension type ReportingObserverOptions._(JSObject _) implements JSObject { bool buffered, }); - external set types(JSArray<JSString> value); external JSArray<JSString> get types; - external set buffered(bool value); + external set types(JSArray<JSString> value); external bool get buffered; + external set buffered(bool value); } extension type GenerateTestReportParameters._(JSObject _) implements JSObject { external factory GenerateTestReportParameters({ @@ -118,8 +129,8 @@ extension type GenerateTestReportParameters._(JSObject _) implements JSObject { String group, }); - external set message(String value); external String get message; - external set group(String value); + external set message(String value); external String get group; + external set group(String value); } diff --git a/lib/src/dom/resize_observer.dart b/lib/src/dom/resize_observer.dart index f09d8a93..a90a5e63 100644 --- a/lib/src/dom/resize_observer.dart +++ b/lib/src/dom/resize_observer.dart @@ -21,8 +21,8 @@ typedef ResizeObserverBoxOptions = String; extension type ResizeObserverOptions._(JSObject _) implements JSObject { external factory ResizeObserverOptions({ResizeObserverBoxOptions box}); - external set box(ResizeObserverBoxOptions value); external ResizeObserverBoxOptions get box; + external set box(ResizeObserverBoxOptions value); } /// The **`ResizeObserver`** interface reports changes to the dimensions of an @@ -70,10 +70,35 @@ extension type ResizeObserver._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry). extension type ResizeObserverEntry._(JSObject _) implements JSObject { + /// The **`target`** read-only property of the + /// [ResizeObserverEntry] interface returns a reference to the + /// [Element] or [SVGElement] that is being observed. external Element get target; + + /// The `contentRect` read-only property of the + /// [ResizeObserverEntry] interface returns a [DOMRectReadOnly] + /// object containing the new size of the observed element when the callback + /// is run. Note + /// that this is better supported than [ResizeObserverEntry.borderBoxSize] or + /// [ResizeObserverEntry.contentBoxSize], but it is left over from an earlier + /// implementation of the Resize Observer API, is still included in the spec + /// for web compat + /// reasons, and may be deprecated in future versions. external DOMRectReadOnly get contentRect; + + /// The **`borderBoxSize`** read-only property of + /// the [ResizeObserverEntry] interface returns an array containing the new + /// border box size of the observed element when the callback is run. external JSArray<ResizeObserverSize> get borderBoxSize; + + /// The **`contentBoxSize`** read-only property of + /// the [ResizeObserverEntry] interface returns an array containing the new + /// content box size of the observed element when the callback is run. external JSArray<ResizeObserverSize> get contentBoxSize; + + /// The **`devicePixelContentBoxSize`** read-only property of + /// the [ResizeObserverEntry] interface returns an array containing the size + /// in device pixels of the observed element when the callback is run. external JSArray<ResizeObserverSize> get devicePixelContentBoxSize; } @@ -91,6 +116,25 @@ extension type ResizeObserverEntry._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverSize). extension type ResizeObserverSize._(JSObject _) implements JSObject { + /// The **`inlineSize`** read-only property of the [ResizeObserverSize] + /// interface returns the length of the observed element's border box in the + /// inline dimension. For boxes with a horizontal , this is the horizontal + /// dimension, or width; if the writing-mode is vertical, this is the vertical + /// dimension, or height. + /// + /// > **Note:** For more explanation of writing modes and block and inline + /// > dimensions, read + /// > [Handling different text directions](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Handling_different_text_directions). external num get inlineSize; + + /// The **`blockSize`** read-only property of the [ResizeObserverSize] + /// interface returns the length of the observed element's border box in the + /// block dimension. For boxes with a horizontal , this is the vertical + /// dimension, or height; if the writing-mode is vertical, this is the + /// horizontal dimension, or width. + /// + /// > **Note:** For more explanation of writing modes and block and inline + /// > dimensions, read + /// > [Handling different text directions](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Handling_different_text_directions). external num get blockSize; } diff --git a/lib/src/dom/resource_timing.dart b/lib/src/dom/resource_timing.dart index 0517fd8a..31194b8f 100644 --- a/lib/src/dom/resource_timing.dart +++ b/lib/src/dom/resource_timing.dart @@ -35,27 +35,199 @@ extension type PerformanceResourceTiming._(JSObject _) /// a ; it returns a JSON representation of the [PerformanceResourceTiming] /// object. external JSObject toJSON(); + + /// The **`initiatorType`** read-only property is a string representing web + /// platform feature that initiated the resource load. + /// + /// > **Note:** This property does not represent the type of content fetched. + /// > A `.css` file can be fetched using a `link` element leading to an + /// > `initiatorType` of `link`. When loading images using `background: url()` + /// > in a CSS file, the `initiatorType` will be `css` and not `img`. external String get initiatorType; + + /// The **`deliveryType`** read-only property is a string indicating how the + /// resource was delivered — for example from the cache or from a navigational + /// prefetch. external String get deliveryType; + + /// The **`nextHopProtocol`** read-only property is a string representing the + /// network protocol used to fetch the resource, as identified by the [ALPN + /// Protocol ID + /// (RFC7301)](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids). + /// + /// When a proxy is used, if a tunnel connection is established, this property + /// returns the ALPN Protocol ID of the tunneled protocol. Otherwise, this + /// property returns the ALPN Protocol ID of the first hop to the proxy. external String get nextHopProtocol; + + /// The **`workerStart`** read-only property of the + /// [PerformanceResourceTiming] interface returns a + /// [DOMHighResTimeStamp] immediately before dispatching the [FetchEvent] if a + /// Service Worker thread is already running, or immediately before starting + /// the Service Worker thread if it is not already running. If the resource is + /// not intercepted by a Service Worker the property will always return 0. external DOMHighResTimeStamp get workerStart; + + /// The **`redirectStart`** read-only property returns a [DOMHighResTimeStamp] + /// representing the start time of the fetch which that initiates the + /// redirect. + /// + /// If there are HTTP redirects when fetching the resource and if any of the + /// redirects are not from the same origin as the current document, but the + /// timing allow check algorithm passes for each redirected resource, this + /// property returns the starting time of the fetch that initiates the + /// redirect; otherwise, zero is returned. + /// + /// To get the amount of redirects, see also + /// [PerformanceNavigationTiming.redirectCount]. external DOMHighResTimeStamp get redirectStart; + + /// The **`redirectEnd`** read-only property returns a [DOMHighResTimeStamp] + /// immediately after receiving the last byte of the response of the last + /// redirect. + /// + /// When fetching a resource, if there are multiple HTTP redirects, and any of + /// the redirects have an origin that is different from the current document, + /// and the timing allow check algorithm passes for each redirected resource, + /// this property returns the time immediately after receiving the last byte + /// of the response of the last redirect; otherwise, zero is returned. + /// + /// To get the amount of redirects, see also + /// [PerformanceNavigationTiming.redirectCount]. external DOMHighResTimeStamp get redirectEnd; + + /// The **`fetchStart`** read-only property represents a [DOMHighResTimeStamp] + /// immediately before the browser starts to fetch the resource. + /// + /// If there are HTTP redirects, the property returns the time immediately + /// before the user agent starts to fetch the final resource in the + /// redirection. + /// + /// Unlike many other `PerformanceResourceTiming` properties, the `fetchStart` + /// property is available for cross-origin requests without the need of the + /// HTTP response header. external DOMHighResTimeStamp get fetchStart; + + /// The **`domainLookupStart`** read-only property returns the + /// [DOMHighResTimeStamp] immediately before the browser starts the domain + /// name lookup for the resource. external DOMHighResTimeStamp get domainLookupStart; + + /// The **`domainLookupEnd`** read-only property returns the + /// [DOMHighResTimeStamp] immediately after the browser finishes the + /// domain-name lookup for the resource. + /// + /// If the user agent has the domain information in cache, + /// [PerformanceResourceTiming.domainLookupStart] and + /// [PerformanceResourceTiming.domainLookupEnd] represent the times when the + /// user agent starts and ends the domain data retrieval from the cache. external DOMHighResTimeStamp get domainLookupEnd; + + /// The **`connectStart`** read-only property returns the + /// [DOMHighResTimeStamp] immediately before the user agent starts + /// establishing the connection to the server to retrieve the resource. external DOMHighResTimeStamp get connectStart; + + /// The **`connectEnd`** read-only property returns the [DOMHighResTimeStamp] + /// immediately after the browser finishes establishing the connection to the + /// server to retrieve the resource. The timestamp value includes the time + /// interval to establish the transport connection, as well as other time + /// intervals such as TLS handshake and + /// [SOCKS](https://en.wikipedia.org/wiki/SOCKS) authentication. external DOMHighResTimeStamp get connectEnd; + + /// The **`secureConnectionStart`** read-only property returns a + /// [DOMHighResTimeStamp] immediately before the browser starts the handshake + /// process to secure the current connection. If a secure connection is not + /// used, the property returns zero. external DOMHighResTimeStamp get secureConnectionStart; + + /// The **`requestStart`** read-only property returns a [DOMHighResTimeStamp] + /// of the time immediately before the browser starts requesting the resource + /// from the server, cache, or local resource. If the transport connection + /// fails and the browser retires the request, the value returned will be the + /// start of the retry request. + /// + /// There is no _end_ property for `requestStart`. To measure the request + /// time, calculate [PerformanceResourceTiming.responseStart] - `requestStart` + /// (see the example below). external DOMHighResTimeStamp get requestStart; + + /// The **`firstInterimResponseStart`** read-only property returns a + /// [DOMHighResTimeStamp] immediately after the browser receives the first + /// byte of the interim 1xx response (for example, 100 Continue or 103 Early + /// Hints) from the server. + /// + /// There is no _end_ property for `firstInterimResponseStart`. external DOMHighResTimeStamp get firstInterimResponseStart; + + /// The **`responseStart`** read-only property returns a [DOMHighResTimeStamp] + /// immediately after the browser receives the first byte of the response from + /// the server, cache, or local resource. external DOMHighResTimeStamp get responseStart; + + /// The **`responseEnd`** read-only property returns a [DOMHighResTimeStamp] + /// immediately after the browser receives the last byte of the resource or + /// immediately before the transport connection is closed, whichever comes + /// first. + /// + /// Unlike many other `PerformanceResourceTiming` properties, the + /// `responseEnd` property is available for cross-origin requests without the + /// need of the HTTP response header. external DOMHighResTimeStamp get responseEnd; + + /// The **`transferSize`** read-only property represents the size (in octets) + /// of the fetched resource. The size includes the response header fields plus + /// the response payload body (as defined by + /// [RFC7230](https://httpwg.org/specs/rfc7230.html#message.body)). + /// + /// If the resource is fetched from a local cache, or if it is a cross-origin + /// resource, this property returns zero. external int get transferSize; + + /// The **`encodedBodySize`** read-only property represents the size (in + /// octets) received from the fetch (HTTP or cache) of the payload body before + /// removing any applied content encodings (like gzip or Brotli). If the + /// resource is retrieved from an application cache or a local resource, it + /// must + /// return the size of the payload body before removing any applied content + /// encoding. external int get encodedBodySize; + + /// The **`decodedBodySize`** read-only property returns the size (in octets) + /// received from the fetch (HTTP or cache) of the message body after removing + /// any applied content encoding (like gzip or Brotli). If the resource is + /// retrieved from an application cache or local resources, it returns the + /// size of the payload after removing any applied content encoding. external int get decodedBodySize; + + /// The **`responseStatus`** read-only property represents the HTTP response + /// status code returned when fetching the resource. + /// + /// This property maps to [Response.status] from the + /// [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). external int get responseStatus; + + /// The **`renderBlockingStatus`** read-only property returns the + /// render-blocking status of the resource. + /// + /// It is useful to determine resources that: + /// + /// - weren't render-blocking and therefore could be delayed, or + /// - were render-blocking and therefore could be preloaded. external RenderBlockingStatusType get renderBlockingStatus; external String get contentType; + + /// The **`serverTiming`** read-only property returns an array of + /// [PerformanceServerTiming] entries containing server timing metrics. + /// + /// Server timing metrics require the server to send the header. For example: + /// + /// ```http + /// Server-Timing: cache;desc="Cache Read";dur=23.2 + /// ``` + /// + /// The `serverTiming` entries can live on `navigation` and `resource` + /// entries. external JSArray<PerformanceServerTiming> get serverTiming; } diff --git a/lib/src/dom/screen_orientation.dart b/lib/src/dom/screen_orientation.dart index 3e6383e5..e5a0e016 100644 --- a/lib/src/dom/screen_orientation.dart +++ b/lib/src/dom/screen_orientation.dart @@ -45,8 +45,18 @@ extension type ScreenOrientation._(JSObject _) /// [ScreenOrientation] interface unlocks the orientation of the containing /// document from its default orientation. external void unlock(); + + /// The **`type`** read-only property of the + /// [ScreenOrientation] interface returns the document's current orientation + /// type, one of `portrait-primary`, `portrait-secondary`, + /// `landscape-primary`, or + /// `landscape-secondary`. external OrientationType get type; + + /// The **`angle`** read-only property of the + /// [ScreenOrientation] interface returns the document's current orientation + /// angle. external int get angle; - external set onchange(EventHandler value); external EventHandler get onchange; + external set onchange(EventHandler value); } diff --git a/lib/src/dom/screen_wake_lock.dart b/lib/src/dom/screen_wake_lock.dart index 150d41eb..3a0d0a17 100644 --- a/lib/src/dom/screen_wake_lock.dart +++ b/lib/src/dom/screen_wake_lock.dart @@ -75,8 +75,22 @@ extension type WakeLockSentinel._(JSObject _) implements EventTarget, JSObject { /// the [WakeLockSentinel], returning a `Promise` that is resolved once the /// sentinel has been successfully released. external JSPromise<JSAny?> release(); + + /// The **`released`** read-only property of the [WakeLockSentinel] interface + /// returns a boolean that indicates whether a [WakeLockSentinel] has been + /// released. + /// + /// The `WakeLockSentinel` is released when the associated platform screen + /// wake lock is revoked; afterwards `released` will always return `true`. + /// If a subsequent screen wake lock is required, the application will need to + /// request a new screen wake lock (the current `WakeLockSentinel` cannot be + /// reused). external bool get released; + + /// The **`type`** read-only property of the [WakeLockSentinel] interface + /// returns a string representation of the currently acquired + /// [WakeLockSentinel] type. external WakeLockType get type; - external set onrelease(EventHandler value); external EventHandler get onrelease; + external set onrelease(EventHandler value); } diff --git a/lib/src/dom/selection_api.dart b/lib/src/dom/selection_api.dart index 83115b2d..a877597d 100644 --- a/lib/src/dom/selection_api.dart +++ b/lib/src/dom/selection_api.dart @@ -140,12 +140,88 @@ extension type Selection._(JSObject _) implements JSObject { Node node, [ bool allowPartialContainment, ]); + + /// The **`Selection.anchorNode`** read-only property returns the + /// [Node] in which the selection begins. + /// + /// A user may make a selection from left to right (in document order) or + /// right to left + /// (reverse of document order). The anchor is where the user began the + /// selection. This can + /// be visualized by holding the Shift key and pressing the arrow keys on your + /// keyboard. The + /// selection's anchor does not move, but the selection's focus, the other end + /// of the + /// selection, does move. external Node? get anchorNode; + + /// The **`Selection.anchorOffset`** read-only property returns the + /// number of characters that the selection's anchor is offset within the + /// [Selection.anchorNode]. + /// + /// This number is zero-based. If the selection begins with the first + /// character in the + /// [Selection.anchorNode], `0` is returned. external int get anchorOffset; + + /// The **`Selection.focusNode`** read-only property returns the + /// [Node] in which the selection ends. + /// + /// A user may make a selection from left to right (in document order) or + /// right to left + /// (reverse of document order). The focus is where the user ended the + /// selection. This can + /// be visualized by holding the <kbd>Shift</kbd> key and pressing the arrow + /// keys on your + /// keyboard to modify the current selection. The selection's focus moves, but + /// the + /// selection's anchor, the other end of the selection, does not move. external Node? get focusNode; + + /// The **`Selection.focusOffset`** read-only property returns the + /// number of characters that the selection's focus is offset within the + /// [Selection.focusNode]. + /// + /// This number is zero-based. If the selection ends with the first character + /// in the + /// [Selection.focusNode], `0` is returned. external int get focusOffset; + + /// The **`Selection.isCollapsed`** read-only property returns a + /// boolean value which indicates whether or not there is currently any text + /// selected. No text is selected when the selection's start and end points + /// are at the same + /// position in the content. + /// + /// Keep in mind that a collapsed selection may still have one (or more, in + /// Gecko) + /// [Range]s, so [Selection.rangeCount] may not be zero. In that + /// scenario, calling a [Selection] object's [Selection.getRangeAt] + /// method may return a `Range` object which is collapsed. external bool get isCollapsed; + + /// The **`Selection.rangeCount`** read-only property returns the + /// number of ranges in the selection. + /// + /// Before the user has clicked a freshly loaded page, the `rangeCount` is + /// `0`. After the user clicks on the page, `rangeCount` is + /// `1`, even if no selection is visible. + /// + /// A user can normally only select one range at a time, so the `rangeCount` + /// will usually be `1`. Scripting can be used to make the selection contain + /// more + /// than one range. + /// + /// Gecko browsers allow multiple selections across table cells. Firefox + /// allows to select + /// multiple ranges in the document by using Ctrl+click (unless the click + /// occurs within an + /// element that has the `display: table-cell` CSS property assigned). external int get rangeCount; + + /// The **`type`** read-only property of the + /// [Selection] interface returns a string describing the + /// type of the current selection. external String get type; external String get direction; } diff --git a/lib/src/dom/server_timing.dart b/lib/src/dom/server_timing.dart index 7b897ac5..7361e795 100644 --- a/lib/src/dom/server_timing.dart +++ b/lib/src/dom/server_timing.dart @@ -32,7 +32,17 @@ extension type PerformanceServerTiming._(JSObject _) implements JSObject { /// ; it returns a JSON representation of the [PerformanceServerTiming] /// object. external JSObject toJSON(); + + /// The **`name`** read-only property returns a + /// string value of the server-specified metric name. external String get name; + + /// The **`duration`** read-only property returns a double that contains the + /// server-specified metric duration, or the value `0.0`. external DOMHighResTimeStamp get duration; + + /// The **`description`** read-only property returns a + /// string value of the server-specified metric description, or an empty + /// string. external String get description; } diff --git a/lib/src/dom/service_workers.dart b/lib/src/dom/service_workers.dart index 0bbac20e..83b64176 100644 --- a/lib/src/dom/service_workers.dart +++ b/lib/src/dom/service_workers.dart @@ -72,12 +72,24 @@ extension type ServiceWorker._(JSObject _) implements EventTarget, JSObject { JSAny? message, [ JSObject optionsOrTransfer, ]); + + /// Returns the `ServiceWorker` serialized script URL defined as part of + /// [`ServiceWorkerRegistration`](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration). + /// Must be on the same origin as the document that registers the + /// `ServiceWorker`. external String get scriptURL; + + /// The **`state`** read-only property of the + /// [ServiceWorker] interface returns a string representing the current state + /// of the service worker. It can be one of the following values: `parsed`, + /// `installing`, + /// `installed`, `activating`, `activated`, or + /// `redundant`. external ServiceWorkerState get state; - external set onstatechange(EventHandler value); external EventHandler get onstatechange; - external set onerror(EventHandler value); + external set onstatechange(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); } /// The **`ServiceWorkerRegistration`** interface of the @@ -137,15 +149,67 @@ extension type ServiceWorkerRegistration._(JSObject _) /// operations before it is /// unregistered. external JSPromise<JSBoolean> unregister(); + + /// The **`pushManager`** read-only property of the + /// [ServiceWorkerRegistration] interface returns a reference to the + /// [PushManager] interface for managing push subscriptions; this includes + /// support for subscribing, getting an active subscription, and accessing + /// push permission + /// status. external PushManager get pushManager; + + /// The **`installing`** read-only property of the + /// [ServiceWorkerRegistration] interface returns a service worker whose + /// [ServiceWorker.state] is `installing`. This property is + /// initially set to `null`. external ServiceWorker? get installing; + + /// The **`waiting`** read-only property of the + /// [ServiceWorkerRegistration] interface returns a service worker whose + /// [ServiceWorker.state] is `installed`. This property is initially + /// set to `null`. external ServiceWorker? get waiting; + + /// The **`active`** read-only property of the + /// [ServiceWorkerRegistration] interface returns a service worker whose + /// [ServiceWorker.state] is `activating` or `activated`. + /// This property is initially set to `null`. + /// + /// An active worker controls a [Client] if the client's URL + /// falls within the scope of the registration (the `scope` option set when + /// [ServiceWorkerContainer.register] is first called.) + /// + /// > **Note:** Once an active worker is `activating`, neither a + /// > runtime script error nor a force termination of the active worker + /// > prevents the active + /// > worker from getting `activated`. external ServiceWorker? get active; + + /// The **`navigationPreload`** read-only property of the + /// [ServiceWorkerRegistration] interface returns the + /// [NavigationPreloadManager] associated with the current service worker + /// registration. + /// + /// The returned object allows resources managed by a service worker to be + /// preemptively downloaded in parallel with service worker boot up. external NavigationPreloadManager get navigationPreload; + + /// The **`scope`** read-only property of the + /// [ServiceWorkerRegistration] interface returns a unique identifier for a + /// service worker registration. The service worker must be on the same origin + /// as the + /// document that registers the [ServiceWorker]. external String get scope; + + /// The **`updateViaCache`** read-only property of the + /// [ServiceWorkerRegistration] interface updates the cache using + /// the mode specified in the call to [ServiceWorkerContainer.register]. + /// Requests for `importScripts` still go via the HTTP cache. `updateViaCache` + /// offers + /// control over this behavior. external ServiceWorkerUpdateViaCache get updateViaCache; - external set onupdatefound(EventHandler value); external EventHandler get onupdatefound; + external set onupdatefound(EventHandler value); } /// The **`ServiceWorkerContainer`** interface of the @@ -211,14 +275,31 @@ extension type ServiceWorkerContainer._(JSObject _) /// via [Client.postMessage]). This can be used to react to sent messages /// earlier, even before that page's content has finished loading. external void startMessages(); + + /// The **`controller`** read-only + /// property of the [ServiceWorkerContainer] interface returns a + /// [ServiceWorker] object if its state is `activating` or + /// `activated` (the same object returned by + /// [ServiceWorkerRegistration.active]). This property returns + /// `null` if the request is a force refresh (_Shift_ + refresh) or if + /// there is no active worker. external ServiceWorker? get controller; + + /// The **`ready`** read-only property of + /// the [ServiceWorkerContainer] interface provides a way of delaying code + /// execution until a service worker is active. It returns a `Promise` that + /// will never reject, and which waits indefinitely until + /// the [ServiceWorkerRegistration] associated with the current page has + /// an [ServiceWorkerRegistration.active] worker. Once that + /// condition is met, it resolves with + /// the [ServiceWorkerRegistration]. external JSPromise<ServiceWorkerRegistration> get ready; - external set oncontrollerchange(EventHandler value); external EventHandler get oncontrollerchange; - external set onmessage(EventHandler value); + external set oncontrollerchange(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; + external set onmessageerror(EventHandler value); } extension type RegistrationOptions._(JSObject _) implements JSObject { external factory RegistrationOptions({ @@ -227,12 +308,12 @@ extension type RegistrationOptions._(JSObject _) implements JSObject { ServiceWorkerUpdateViaCache updateViaCache, }); - external set scope(String value); external String get scope; - external set type(WorkerType value); + external set scope(String value); external WorkerType get type; - external set updateViaCache(ServiceWorkerUpdateViaCache value); + external set type(WorkerType value); external ServiceWorkerUpdateViaCache get updateViaCache; + external set updateViaCache(ServiceWorkerUpdateViaCache value); } /// The **`NavigationPreloadManager`** interface of the @@ -297,10 +378,10 @@ extension type NavigationPreloadState._(JSObject _) implements JSObject { String headerValue, }); - external set enabled(bool value); external bool get enabled; - external set headerValue(String value); + external set enabled(bool value); external String get headerValue; + external set headerValue(String value); } /// The **`ServiceWorkerGlobalScope`** interface of the @@ -338,27 +419,41 @@ extension type ServiceWorkerGlobalScope._(JSObject _) /// underlying service worker take effect immediately for both the current /// client and all other active clients. external JSPromise<JSAny?> skipWaiting(); - external set onnotificationclick(EventHandler value); external EventHandler get onnotificationclick; - external set onnotificationclose(EventHandler value); + external set onnotificationclick(EventHandler value); external EventHandler get onnotificationclose; - external set onpush(EventHandler value); + external set onnotificationclose(EventHandler value); external EventHandler get onpush; - external set onpushsubscriptionchange(EventHandler value); + external set onpush(EventHandler value); external EventHandler get onpushsubscriptionchange; + external set onpushsubscriptionchange(EventHandler value); + + /// The **`clients`** read-only property of the + /// [ServiceWorkerGlobalScope] interface returns the + /// [`Clients`](https://developer.mozilla.org/en-US/docs/Web/API/Clients) + /// object associated with the service worker. external Clients get clients; + + /// The **`registration`** read-only property of the + /// [ServiceWorkerGlobalScope] interface returns a reference to the + /// [ServiceWorkerRegistration] object, which represents the service worker's + /// registration. external ServiceWorkerRegistration get registration; + + /// The **`serviceWorker`** read-only property of the + /// [ServiceWorkerGlobalScope] interface returns a reference to the + /// [ServiceWorker] object, which represents the service worker. external ServiceWorker get serviceWorker; - external set oninstall(EventHandler value); external EventHandler get oninstall; - external set onactivate(EventHandler value); + external set oninstall(EventHandler value); external EventHandler get onactivate; - external set onfetch(EventHandler value); + external set onactivate(EventHandler value); external EventHandler get onfetch; - external set onmessage(EventHandler value); + external set onfetch(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; + external set onmessageerror(EventHandler value); } /// The `Client` interface represents an executable context such as a [Worker], @@ -380,9 +475,22 @@ extension type Client._(JSObject _) implements JSObject { JSAny? message, [ JSObject optionsOrTransfer, ]); + + /// The **`url`** read-only property of the [Client] + /// interface returns the URL of the current service worker client. external String get url; + + /// The **`frameType`** read-only property of the [Client] interface indicates + /// the type of browsing context of the current [Client]. This value can be + /// one of `"auxiliary"`, `"top-level"`, `"nested"`, or `"none"`. external FrameType get frameType; + + /// The **`id`** read-only property of the [Client] interface returns the + /// universally unique identifier of the [Client] object. external String get id; + + /// The **`type`** read-only property of the [Client] + /// interface indicates the type of client the service worker is controlling. external ClientType get type; } @@ -409,8 +517,26 @@ extension type WindowClient._(JSObject _) implements Client, JSObject { /// a /// `Promise` that resolves to the existing [WindowClient]. external JSPromise<WindowClient?> navigate(String url); + + /// The **`visibilityState`** read-only property of the + /// [WindowClient] interface indicates the visibility of the current client. + /// This value can be one of `"hidden"`, `"visible"`, or + /// `"prerender"`. external DocumentVisibilityState get visibilityState; + + /// The **`focused`** read-only property of the + /// [WindowClient] interface is a boolean value that indicates whether + /// the current client has focus. external bool get focused; + + /// The **`ancestorOrigins`** read-only property of the [WindowClient] + /// interface is an array of strings listing the origins of all ancestors of + /// the browsing context represented by this `WindowClient` in reverse order. + /// + /// The first element in the array is the origin of this window's parent, and + /// the last element is the origin of the top-level browsing context. If this + /// window is itself a top-level browsing context, then `ancestorOrigins` is + /// an empty array. external JSArray<JSString> get ancestorOrigins; } @@ -480,10 +606,10 @@ extension type ClientQueryOptions._(JSObject _) implements JSObject { ClientType type, }); - external set includeUncontrolled(bool value); external bool get includeUncontrolled; - external set type(ClientType value); + external set includeUncontrolled(bool value); external ClientType get type; + external set type(ClientType value); } /// The **`ExtendableEvent`** interface extends the lifetime of the @@ -642,11 +768,77 @@ extension type FetchEvent._(JSObject _) implements ExtendableEvent, JSObject { /// "alternate" view of a web page when offline without changing the /// user-visible URL. external void respondWith(JSPromise<Response> r); + + /// The **`request`** read-only property of the + /// [FetchEvent] interface returns the [Request] that triggered + /// the event handler. + /// + /// This property is non-nullable (since version 46, in the case of Firefox.) + /// If a request + /// is not provided by some other means, the constructor `options` object must + /// contain a request (see [FetchEvent.FetchEvent].) external Request get request; + + /// The **`preloadResponse`** read-only property of the [FetchEvent] interface + /// returns a `Promise` that resolves to the navigation preload [Response] if + /// [navigation preload](https://developer.mozilla.org/en-US/docs/Web/API/NavigationPreloadManager) + /// was triggered, or `undefined` otherwise. + /// + /// Navigation preload is triggered if + /// [navigation preload is enabled](https://developer.mozilla.org/en-US/docs/Web/API/NavigationPreloadManager/enable), + /// the request is a `GET` request, and the request is a navigation request + /// (generated by the browser when loading pages and iframes). + /// + /// A service worker can wait on this promise in its fetch event handler in + /// order to track completion of a fetch request made during service-worker + /// boot. external JSPromise<JSAny?> get preloadResponse; + + /// The **`clientId`** read-only property of the + /// [FetchEvent] interface returns the id of the [Client] that the + /// current service worker is controlling. + /// + /// The [Clients.get] method could then be passed this ID to retrieve the + /// associated client. external String get clientId; + + /// The **`resultingClientId`** read-only property of the + /// [FetchEvent] interface is the [Client.id] of the + /// [Client] that replaces the previous client during a page + /// navigation. + /// + /// For example, when navigating from page A to page B `resultingClientId` is + /// the ID of the client associated with page B. + /// + /// If the fetch request is a subresource request or the request's + /// [`destination`](https://developer.mozilla.org/en-US/docs/Web/API/Request/destination) + /// is + /// `report`, `resultingClientId` will be an empty string. external String get resultingClientId; + + /// The **`replacesClientId`** read-only property of the + /// [FetchEvent] interface is the [Client.id] of the + /// [Client] that is being replaced during a page navigation. + /// + /// For example, when navigating from page A to page B `replacesClientId` is + /// the + /// ID of the client associated with page A. It can be an empty string when + /// navigating from + /// `about:blank` to another page, as `about:blank`'s client will be + /// reused, rather than be replaced. + /// + /// Additionally, if the fetch isn't a navigation, `replacesClientId` will be + /// an + /// empty string. This could be used to access/communicate with a client that + /// will + /// imminently be replaced, right before a navigation. external String get replacesClientId; + + /// The **`handled`** property of the [FetchEvent] interface returns a promise + /// indicating if the event has been handled by the fetch algorithm or not. + /// This property allows executing code after the browser has consumed a + /// response, and is usually used together with the + /// [ExtendableEvent.waitUntil] method. external JSPromise<JSAny?> get handled; } extension type FetchEventInit._(JSObject _) @@ -663,18 +855,18 @@ extension type FetchEventInit._(JSObject _) JSPromise<JSAny?> handled, }); - external set request(Request value); external Request get request; - external set preloadResponse(JSPromise<JSAny?> value); + external set request(Request value); external JSPromise<JSAny?> get preloadResponse; - external set clientId(String value); + external set preloadResponse(JSPromise<JSAny?> value); external String get clientId; - external set resultingClientId(String value); + external set clientId(String value); external String get resultingClientId; - external set replacesClientId(String value); + external set resultingClientId(String value); external String get replacesClientId; - external set handled(JSPromise<JSAny?> value); + external set replacesClientId(String value); external JSPromise<JSAny?> get handled; + external set handled(JSPromise<JSAny?> value); } /// The **`ExtendableMessageEvent`** interface of the @@ -697,10 +889,31 @@ extension type ExtendableMessageEvent._(JSObject _) ExtendableMessageEventInit eventInitDict, ]); + /// The **`data`** read-only property of the + /// [ExtendableMessageEvent] interface returns the event's data. It can be any + /// data type. external JSAny? get data; + + /// The **`origin`** read-only property of the + /// [ExtendableMessageEvent] interface returns the origin of the + /// [Client] that sent the message. external String get origin; + + /// The **`lastEventID`** read-only property of the + /// [ExtendableMessageEvent] interface represents, in + /// [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events), + /// the last event ID of the event source. This is an empty string. external String get lastEventId; + + /// The **`source`** read-only property of the + /// [ExtendableMessageEvent] interface returns a reference to the + /// [Client] object from which the message was sent. external JSObject? get source; + + /// The **`ports`** read-only property of the + /// [ExtendableMessageEvent] interface returns the array containing the + /// [MessagePort] objects representing the ports of the associated message + /// channel (the channel the message is being sent through.) external JSArray<MessagePort> get ports; } extension type ExtendableMessageEventInit._(JSObject _) @@ -716,16 +929,16 @@ extension type ExtendableMessageEventInit._(JSObject _) JSArray<MessagePort> ports, }); - external set data(JSAny? value); external JSAny? get data; - external set origin(String value); + external set data(JSAny? value); external String get origin; - external set lastEventId(String value); + external set origin(String value); external String get lastEventId; - external set source(JSObject? value); + external set lastEventId(String value); external JSObject? get source; - external set ports(JSArray<MessagePort> value); + external set source(JSObject? value); external JSArray<MessagePort> get ports; + external set ports(JSArray<MessagePort> value); } /// The **`Cache`** interface provides a persistent storage mechanism for @@ -878,12 +1091,12 @@ extension type CacheQueryOptions._(JSObject _) implements JSObject { bool ignoreVary, }); - external set ignoreSearch(bool value); external bool get ignoreSearch; - external set ignoreMethod(bool value); + external set ignoreSearch(bool value); external bool get ignoreMethod; - external set ignoreVary(bool value); + external set ignoreMethod(bool value); external bool get ignoreVary; + external set ignoreVary(bool value); } /// The **`CacheStorage`** interface represents the storage for [Cache] objects. @@ -983,6 +1196,6 @@ extension type MultiCacheQueryOptions._(JSObject _) String cacheName, }); - external set cacheName(String value); external String get cacheName; + external set cacheName(String value); } diff --git a/lib/src/dom/speech_api.dart b/lib/src/dom/speech_api.dart index 3e9dd96b..4a44e751 100644 --- a/lib/src/dom/speech_api.dart +++ b/lib/src/dom/speech_api.dart @@ -59,38 +59,74 @@ extension type SpeechRecognition._(JSObject _) /// to return a /// [SpeechRecognitionResult]. external void abort(); - external set grammars(SpeechGrammarList value); + + /// The **`grammars`** property of the + /// [SpeechRecognition] interface returns and sets a collection of + /// [SpeechGrammar] objects that represent the grammars that will be + /// understood + /// by the current `SpeechRecognition`. external SpeechGrammarList get grammars; - external set lang(String value); + external set grammars(SpeechGrammarList value); + + /// The **`lang`** property of the [SpeechRecognition] + /// interface returns and sets the language of the current + /// `SpeechRecognition`. + /// If not specified, this defaults to the HTML + /// [`lang`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html#lang) + /// attribute + /// value, or the user agent's language setting if that isn't set either. external String get lang; - external set continuous(bool value); + external set lang(String value); + + /// The **`continuous`** property of the + /// [SpeechRecognition] interface controls whether continuous results are + /// returned for each recognition, or only a single result. + /// + /// It defaults to single results (`false`.) external bool get continuous; - external set interimResults(bool value); + external set continuous(bool value); + + /// The **`interimResults`** property of the + /// [SpeechRecognition] interface controls whether interim results should be + /// returned (`true`) or not (`false`.) Interim results are results + /// that are not yet final (e.g. the [SpeechRecognitionResult.isFinal] + /// property + /// is `false`.) + /// + /// The default value for **`interimResults`** is `false`. external bool get interimResults; - external set maxAlternatives(int value); + external set interimResults(bool value); + + /// The **`maxAlternatives`** property of the + /// [SpeechRecognition] interface sets the maximum number of + /// [SpeechRecognitionAlternative]s provided per + /// [SpeechRecognitionResult]. + /// + /// The default value is 1. external int get maxAlternatives; - external set onaudiostart(EventHandler value); + external set maxAlternatives(int value); external EventHandler get onaudiostart; - external set onsoundstart(EventHandler value); + external set onaudiostart(EventHandler value); external EventHandler get onsoundstart; - external set onspeechstart(EventHandler value); + external set onsoundstart(EventHandler value); external EventHandler get onspeechstart; - external set onspeechend(EventHandler value); + external set onspeechstart(EventHandler value); external EventHandler get onspeechend; - external set onsoundend(EventHandler value); + external set onspeechend(EventHandler value); external EventHandler get onsoundend; - external set onaudioend(EventHandler value); + external set onsoundend(EventHandler value); external EventHandler get onaudioend; - external set onresult(EventHandler value); + external set onaudioend(EventHandler value); external EventHandler get onresult; - external set onnomatch(EventHandler value); + external set onresult(EventHandler value); external EventHandler get onnomatch; - external set onerror(EventHandler value); + external set onnomatch(EventHandler value); external EventHandler get onerror; - external set onstart(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onstart; - external set onend(EventHandler value); + external set onstart(EventHandler value); external EventHandler get onend; + external set onend(EventHandler value); } /// The **`SpeechRecognitionErrorEvent`** interface of the @@ -108,7 +144,13 @@ extension type SpeechRecognitionErrorEvent._(JSObject _) SpeechRecognitionErrorEventInit eventInitDict, ); + /// The **`error`** read-only property of the + /// [SpeechRecognitionErrorEvent] interface returns the type of error raised. external SpeechRecognitionErrorCode get error; + + /// The **`message`** read-only property of the + /// [SpeechRecognitionErrorEvent] interface returns a message describing the + /// error in more detail. external String get message; } extension type SpeechRecognitionErrorEventInit._(JSObject _) @@ -121,10 +163,10 @@ extension type SpeechRecognitionErrorEventInit._(JSObject _) String message, }); - external set error(SpeechRecognitionErrorCode value); external SpeechRecognitionErrorCode get error; - external set message(String value); + external set error(SpeechRecognitionErrorCode value); external String get message; + external set message(String value); } /// The **`SpeechRecognitionAlternative`** interface of the @@ -137,7 +179,23 @@ extension type SpeechRecognitionErrorEventInit._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative). extension type SpeechRecognitionAlternative._(JSObject _) implements JSObject { + /// The **`transcript`** read-only property of the + /// [SpeechRecognitionResult] interface returns a string containing the + /// transcript of the recognized word(s). + /// + /// For continuous recognition, leading or trailing whitespace will be + /// included where + /// necessary so that concatenation of consecutive [SpeechRecognitionResult]s + /// produces a proper transcript of the session. external String get transcript; + + /// The **`confidence`** read-only property of the + /// [SpeechRecognitionResult] interface returns a numeric estimate of how + /// confident the speech recognition system is that the recognition is + /// correct. + /// + /// > **Note:** Mozilla's implementation of `confidence` is still + /// > being worked on — at the moment, it always seems to return 1. external num get confidence; } @@ -157,7 +215,23 @@ extension type SpeechRecognitionResult._(JSObject _) implements JSObject { /// via /// array syntax. external SpeechRecognitionAlternative item(int index); + + /// The **`length`** read-only property of the + /// [SpeechRecognitionResult] interface returns the length of the "array" + /// — the number of [SpeechRecognitionAlternative] objects contained + /// in the result (also referred to as "n-best alternatives".) + /// + /// The number of alternatives contained in the result depends on what the + /// [SpeechRecognition.maxAlternatives] property was set to when the speech + /// recognition was first initiated. external int get length; + + /// The **`isFinal`** read-only property of the + /// [SpeechRecognitionResult] interface is a boolean value that states + /// whether this result is final (`true`) or not (`false`) — if so, + /// then this is the final time this result will be returned; if not, then + /// this result is an + /// interim result, and may be updated later on. external bool get isFinal; } @@ -176,6 +250,11 @@ extension type SpeechRecognitionResultList._(JSObject _) implements JSObject { /// [SpeechRecognitionResult] objects in the list to be accessed via array /// syntax. external SpeechRecognitionResult item(int index); + + /// The **`length`** read-only property of the + /// [SpeechRecognitionResultList] interface returns the length of the + /// "array" — the number of [SpeechRecognitionResult] objects in the + /// list. external int get length; } @@ -195,7 +274,31 @@ extension type SpeechRecognitionEvent._(JSObject _) implements Event, JSObject { SpeechRecognitionEventInit eventInitDict, ); + /// The **`resultIndex`** read-only property of the + /// [SpeechRecognitionEvent] interface returns the lowest index value result + /// in + /// the [SpeechRecognitionResultList] "array" that has actually changed. + /// + /// The [SpeechRecognitionResultList] object is not an array, but it has a + /// getter that allows it to be accessed by array syntax. external int get resultIndex; + + /// The **`results`** read-only property of the + /// [SpeechRecognitionEvent] interface returns a + /// [SpeechRecognitionResultList] object representing all the speech + /// recognition results for the current session. + /// + /// Specifically this object will contain all final results that have been + /// returned, + /// followed by the current best hypothesis for all interim results. When + /// subsequent + /// [SpeechRecognition.result_event] events are fired, interim results may be + /// overwritten by a newer + /// interim result or by a final result — they may even be removed, if they + /// are at the end + /// of the "results" array and the array length decreases. Final results on + /// the other hand + /// will not be overwritten or removed. external SpeechRecognitionResultList get results; } extension type SpeechRecognitionEventInit._(JSObject _) @@ -208,10 +311,10 @@ extension type SpeechRecognitionEventInit._(JSObject _) required SpeechRecognitionResultList results, }); - external set resultIndex(int value); external int get resultIndex; - external set results(SpeechRecognitionResultList value); + external set resultIndex(int value); external SpeechRecognitionResultList get results; + external set results(SpeechRecognitionResultList value); } /// The **`SpeechGrammar`** interface of the @@ -228,10 +331,18 @@ extension type SpeechRecognitionEventInit._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar). extension type SpeechGrammar._(JSObject _) implements JSObject { - external set src(String value); + /// The **`src`** property of the [SpeechGrammar] + /// interface sets and returns a string containing the grammar from within in + /// the + /// `SpeechGrammar` object. external String get src; - external set weight(num value); + external set src(String value); + + /// The optional **`weight`** property of the + /// [SpeechGrammar] interface sets and returns the weight of the + /// `SpeechGrammar` object. external num get weight; + external set weight(num value); } /// The **`SpeechGrammarList`** interface of the @@ -277,6 +388,10 @@ extension type SpeechGrammarList._(JSObject _) implements JSObject { String string, [ num weight, ]); + + /// The **`length`** read-only property of the + /// [SpeechGrammarList] interface returns the number of + /// [SpeechGrammar] objects contained in the [SpeechGrammarList]. external int get length; } @@ -318,11 +433,32 @@ extension type SpeechSynthesis._(JSObject _) implements EventTarget, JSObject { /// the /// current device. external JSArray<SpeechSynthesisVoice> getVoices(); + + /// The **`pending`** read-only property of the + /// [SpeechSynthesis] interface is a boolean value that returns + /// `true` if the utterance queue contains as-yet-unspoken utterances. external bool get pending; + + /// The **`speaking`** read-only property of the + /// [SpeechSynthesis] interface is a boolean value that returns + /// `true` if an utterance is currently in the process of being spoken — even + /// if `SpeechSynthesis` is in a + /// [SpeechSynthesis.pause] state. external bool get speaking; + + /// The **`paused`** read-only property of the + /// [SpeechSynthesis] interface is a boolean value that returns + /// `true` if the `SpeechSynthesis` object is in a paused state, or `false` if + /// not. + /// + /// It can be set to [SpeechSynthesis.pause] even if nothing is + /// currently being spoken through it. If + /// [SpeechSynthesisUtterance] are then added to the utterance + /// queue, they will not be spoken until the `SpeechSynthesis` object is + /// unpaused, using [SpeechSynthesis.resume]. external bool get paused; - external set onvoiceschanged(EventHandler value); external EventHandler get onvoiceschanged; + external set onvoiceschanged(EventHandler value); } /// The **`SpeechSynthesisUtterance`** interface of the @@ -339,32 +475,70 @@ extension type SpeechSynthesisUtterance._(JSObject _) implements EventTarget, JSObject { external factory SpeechSynthesisUtterance([String text]); - external set text(String value); + /// The **`text`** property of the + /// [SpeechSynthesisUtterance] interface gets and sets the text that will be + /// synthesized when the utterance is spoken. + /// + /// The text may be provided as plain text, or a well-formed + /// [SSML](https://www.w3.org/TR/speech-synthesis/) document. + /// The SSML tags will be stripped away by devices that don't support SSML. external String get text; - external set lang(String value); + external set text(String value); + + /// The **`lang`** property of the [SpeechSynthesisUtterance] interface gets + /// and sets the language of the utterance. + /// + /// If unset, the app's (i.e. the `html` + /// [`lang`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html#lang) + /// value) lang will be used, or the user-agent default if that is unset too. external String get lang; - external set voice(SpeechSynthesisVoice? value); + external set lang(String value); + + /// The **`voice`** property of the [SpeechSynthesisUtterance] interface gets + /// and sets the voice that will be used to speak the utterance. + /// + /// This should be set to one of the [SpeechSynthesisVoice] objects returned + /// by [SpeechSynthesis.getVoices]. + /// If not set by the time the utterance is spoken, the voice used will be the + /// most suitable default voice available for the utterance's + /// [SpeechSynthesisUtterance.lang] setting. external SpeechSynthesisVoice? get voice; - external set volume(num value); + external set voice(SpeechSynthesisVoice? value); + + /// The **`volume`** property of the [SpeechSynthesisUtterance] interface gets + /// and sets the volume that the utterance will be spoken at. + /// + /// If not set, the default value 1 will be used. external num get volume; - external set rate(num value); + external set volume(num value); + + /// The **`rate`** property of the [SpeechSynthesisUtterance] interface gets + /// and sets the speed at which the utterance will be spoken at. + /// + /// If unset, a default value of 1 will be used. external num get rate; - external set pitch(num value); + external set rate(num value); + + /// The **`pitch`** property of the [SpeechSynthesisUtterance] interface gets + /// and sets the pitch at which the utterance will be spoken at. + /// + /// If unset, a default value of 1 will be used. external num get pitch; - external set onstart(EventHandler value); + external set pitch(num value); external EventHandler get onstart; - external set onend(EventHandler value); + external set onstart(EventHandler value); external EventHandler get onend; - external set onerror(EventHandler value); + external set onend(EventHandler value); external EventHandler get onerror; - external set onpause(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onpause; - external set onresume(EventHandler value); + external set onpause(EventHandler value); external EventHandler get onresume; - external set onmark(EventHandler value); + external set onresume(EventHandler value); external EventHandler get onmark; - external set onboundary(EventHandler value); + external set onmark(EventHandler value); external EventHandler get onboundary; + external set onboundary(EventHandler value); } /// The **`SpeechSynthesisEvent`** interface of the @@ -382,10 +556,38 @@ extension type SpeechSynthesisEvent._(JSObject _) implements Event, JSObject { SpeechSynthesisEventInit eventInitDict, ); + /// The **`utterance`** read-only property of the [SpeechSynthesisUtterance] + /// interface returns the [SpeechSynthesisUtterance] instance that the event + /// was triggered on. external SpeechSynthesisUtterance get utterance; + + /// The **`charIndex`** read-only property of the [SpeechSynthesisUtterance] + /// interface returns the index position of the character in + /// [SpeechSynthesisUtterance.text] that was being spoken when the event was + /// triggered. external int get charIndex; + + /// The read-only **`charLength`** property of the [SpeechSynthesisEvent] + /// interface returns the number of characters left to be spoken after the + /// character at the [SpeechSynthesisEvent.charIndex] position. + /// + /// If the speech engine can't determine it, it returns 0. external int get charLength; + + /// The **`elapsedTime`** read-only property of the [SpeechSynthesisEvent] + /// returns the elapsed time in seconds, after the + /// [SpeechSynthesisUtterance.text] started being spoken, at which the + /// [event](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance#events) + /// was triggered. external num get elapsedTime; + + /// The **`name`** read-only property of the [SpeechSynthesisUtterance] + /// interface returns the name associated with certain types of events + /// occurring as the [SpeechSynthesisUtterance.text] is being spoken: + /// the name of the [SSML](https://www.w3.org/TR/speech-synthesis/#S3.3.2) + /// marker reached in the case of a [SpeechSynthesisUtterance.mark_event] + /// event, or the type of boundary reached in the case of a + /// [SpeechSynthesisUtterance.boundary_event] event. external String get name; } extension type SpeechSynthesisEventInit._(JSObject _) @@ -401,16 +603,16 @@ extension type SpeechSynthesisEventInit._(JSObject _) String name, }); - external set utterance(SpeechSynthesisUtterance value); external SpeechSynthesisUtterance get utterance; - external set charIndex(int value); + external set utterance(SpeechSynthesisUtterance value); external int get charIndex; - external set charLength(int value); + external set charIndex(int value); external int get charLength; - external set elapsedTime(num value); + external set charLength(int value); external num get elapsedTime; - external set name(String value); + external set elapsedTime(num value); external String get name; + external set name(String value); } /// The **`SpeechSynthesisErrorEvent`** interface of the @@ -429,6 +631,9 @@ extension type SpeechSynthesisErrorEvent._(JSObject _) SpeechSynthesisErrorEventInit eventInitDict, ); + /// The **`error`** property of the + /// [SpeechSynthesisErrorEvent] interface returns an error code indicating + /// what has gone wrong with a speech synthesis attempt. external SpeechSynthesisErrorCode get error; } extension type SpeechSynthesisErrorEventInit._(JSObject _) @@ -445,8 +650,8 @@ extension type SpeechSynthesisErrorEventInit._(JSObject _) required SpeechSynthesisErrorCode error, }); - external set error(SpeechSynthesisErrorCode value); external SpeechSynthesisErrorCode get error; + external set error(SpeechSynthesisErrorCode value); } /// The **`SpeechSynthesisVoice`** interface of the @@ -460,9 +665,32 @@ extension type SpeechSynthesisErrorEventInit._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice). extension type SpeechSynthesisVoice._(JSObject _) implements JSObject { + /// The **`voiceURI`** read-only property of the + /// [SpeechSynthesisVoice] interface returns the type of URI and location of + /// the speech synthesis service for this voice. external String get voiceURI; + + /// The **`name`** read-only property of the + /// [SpeechSynthesisVoice] interface returns a human-readable name that + /// represents the voice. external String get name; + + /// The **`lang`** read-only property of the [SpeechSynthesisVoice] interface + /// returns a BCP 47 language tag indicating the language of the voice. external String get lang; + + /// The **`localService`** read-only property of the + /// [SpeechSynthesisVoice] interface returns a boolean value + /// indicating whether the voice is supplied by a local speech synthesizer + /// service + /// (`true`), or a remote speech synthesizer service (`false`.) + /// + /// This property is provided to allow differentiation in the case that some + /// voice options + /// are provided by a remote service; it is possible that remote voices might + /// have extra + /// latency, bandwidth or cost associated with them, so such distinction may + /// be useful. external bool get localService; @JS('default') external bool get default_; diff --git a/lib/src/dom/storage.dart b/lib/src/dom/storage.dart index e411f496..336dc33c 100644 --- a/lib/src/dom/storage.dart +++ b/lib/src/dom/storage.dart @@ -64,8 +64,8 @@ extension type StorageEstimate._(JSObject _) implements JSObject { int quota, }); - external set usage(int value); external int get usage; - external set quota(int value); + external set usage(int value); external int get quota; + external set quota(int value); } diff --git a/lib/src/dom/streams.dart b/lib/src/dom/streams.dart index a91b4969..d276754b 100644 --- a/lib/src/dom/streams.dart +++ b/lib/src/dom/streams.dart @@ -142,6 +142,15 @@ extension type ReadableStream._(JSObject _) implements JSObject { /// will generally lock it for the duration, preventing other readers from /// locking it. external JSArray<ReadableStream> tee(); + + /// The **`locked`** read-only property of the [ReadableStream] interface + /// returns whether or not the readable stream is locked to a reader. + /// + /// A readable stream can have at most one active reader at a time, and is + /// locked to that reader until it is released. + /// A reader might be obtained using + /// [`ReadableStream.getReader()`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/getReader) + /// and released using the reader's `releaseLock()` method. external bool get locked; } extension type ReadableStreamGetReaderOptions._(JSObject _) @@ -149,14 +158,14 @@ extension type ReadableStreamGetReaderOptions._(JSObject _) external factory ReadableStreamGetReaderOptions( {ReadableStreamReaderMode mode}); - external set mode(ReadableStreamReaderMode value); external ReadableStreamReaderMode get mode; + external set mode(ReadableStreamReaderMode value); } extension type ReadableStreamIteratorOptions._(JSObject _) implements JSObject { external factory ReadableStreamIteratorOptions({bool preventCancel}); - external set preventCancel(bool value); external bool get preventCancel; + external set preventCancel(bool value); } extension type ReadableWritablePair._(JSObject _) implements JSObject { external factory ReadableWritablePair({ @@ -164,10 +173,10 @@ extension type ReadableWritablePair._(JSObject _) implements JSObject { required WritableStream writable, }); - external set readable(ReadableStream value); external ReadableStream get readable; - external set writable(WritableStream value); + external set readable(ReadableStream value); external WritableStream get writable; + external set writable(WritableStream value); } extension type StreamPipeOptions._(JSObject _) implements JSObject { external factory StreamPipeOptions({ @@ -177,14 +186,14 @@ extension type StreamPipeOptions._(JSObject _) implements JSObject { AbortSignal signal, }); - external set preventClose(bool value); external bool get preventClose; - external set preventAbort(bool value); + external set preventClose(bool value); external bool get preventAbort; - external set preventCancel(bool value); + external set preventAbort(bool value); external bool get preventCancel; - external set signal(AbortSignal value); + external set preventCancel(bool value); external AbortSignal get signal; + external set signal(AbortSignal value); } extension type UnderlyingSource._(JSObject _) implements JSObject { external factory UnderlyingSource({ @@ -195,16 +204,16 @@ extension type UnderlyingSource._(JSObject _) implements JSObject { int autoAllocateChunkSize, }); - external set start(UnderlyingSourceStartCallback value); external UnderlyingSourceStartCallback get start; - external set pull(UnderlyingSourcePullCallback value); + external set start(UnderlyingSourceStartCallback value); external UnderlyingSourcePullCallback get pull; - external set cancel(UnderlyingSourceCancelCallback value); + external set pull(UnderlyingSourcePullCallback value); external UnderlyingSourceCancelCallback get cancel; - external set type(ReadableStreamType value); + external set cancel(UnderlyingSourceCancelCallback value); external ReadableStreamType get type; - external set autoAllocateChunkSize(int value); + external set type(ReadableStreamType value); external int get autoAllocateChunkSize; + external set autoAllocateChunkSize(int value); } /// The **`ReadableStreamDefaultReader`** interface of the @@ -272,6 +281,13 @@ extension type ReadableStreamDefaultReader._(JSObject _) implements JSObject { /// > `cancel()` method behaves the same as that for the associated stream /// > ([ReadableStream.cancel]). external JSPromise<JSAny?> cancel([JSAny? reason]); + + /// The **`closed`** read-only property of the + /// [ReadableStreamDefaultReader] interface returns a + /// `Promise` that fulfills when the stream closes, or rejects if the + /// stream throws an error or the reader's lock is released. This property + /// enables you + /// to write code that responds to an end to the streaming process. external JSPromise<JSAny?> get closed; } extension type ReadableStreamReadResult._(JSObject _) implements JSObject { @@ -280,10 +296,10 @@ extension type ReadableStreamReadResult._(JSObject _) implements JSObject { bool done, }); - external set value(JSAny? value); external JSAny? get value; - external set done(bool value); + external set value(JSAny? value); external bool get done; + external set done(bool value); } /// The `ReadableStreamBYOBReader` interface of the @@ -379,14 +395,21 @@ extension type ReadableStreamBYOBReader._(JSObject _) implements JSObject { /// > **Note:** If the reader is active, the `cancel()` method behaves the /// > same as that for the associated stream ([ReadableStream.cancel]). external JSPromise<JSAny?> cancel([JSAny? reason]); + + /// The **`closed`** read-only property of the [ReadableStreamBYOBReader] + /// interface returns a `Promise` that fulfills when the stream closes, or + /// rejects if the stream throws an error or the reader's lock is released. + /// + /// This property enables you to write code that responds to an end to the + /// streaming process. external JSPromise<JSAny?> get closed; } extension type ReadableStreamBYOBReaderReadOptions._(JSObject _) implements JSObject { external factory ReadableStreamBYOBReaderReadOptions({int min}); - external set min(int value); external int get min; + external set min(int value); } /// The **`ReadableStreamDefaultController`** interface of the @@ -425,6 +448,10 @@ extension type ReadableStreamDefaultController._(JSObject _) /// > **Note:** The `error()` method can be called /// > more than once, and can be called when the stream is not readable. external void error([JSAny? e]); + + /// The **`desiredSize`** read-only property of the + /// [ReadableStreamDefaultController] interface returns the desired size + /// required to fill the stream's internal queue. external num? get desiredSize; } @@ -523,7 +550,31 @@ extension type ReadableByteStreamController._(JSObject _) implements JSObject { /// It can also be called from elsewhere to trigger a stream error, for /// example if another part of the system that the stream relies on fails. external void error([JSAny? e]); + + /// The **`byobRequest`** read-only property of the + /// [ReadableByteStreamController] interface returns the current BYOB request, + /// or `null` if there are no pending requests. + /// + /// An underlying byte source should check this property, and use it to write + /// data to the stream if it exists (rather than using + /// [ReadableByteStreamController.enqueue]). + /// This will result in an efficient zero-byte transfer of the data to the + /// consumer. external ReadableStreamBYOBRequest? get byobRequest; + + /// The **`desiredSize`** read-only property of the + /// [ReadableByteStreamController] interface returns the number of bytes + /// required to fill the stream's internal queue to its "desired size". + /// + /// The value is used by the stream to indicate a preferred flow rate to the + /// underlying source. + /// Sources that support throttling or pausing their inflow of data (not all + /// do!) should control the inflow such that `desiredSize` of the stream + /// buffer is kept positive and as close to zero as possible. + /// + /// The `desiredSize` is used to apply + /// [backpressure](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Concepts#backpressure) + /// from downstream consumers. external num? get desiredSize; } @@ -603,6 +654,9 @@ extension type ReadableStreamBYOBRequest._(JSObject _) implements JSObject { /// thread, and wait for the worker to transfer it back once it has been /// filled. external void respondWithNewView(ArrayBufferView view); + + /// The **`view`** getter property of the [ReadableStreamBYOBRequest] + /// interface returns the current view. external ArrayBufferView? get view; } @@ -646,6 +700,10 @@ extension type WritableStream._(JSObject _) implements JSObject { /// While the stream is locked, no other writer can be acquired until this one /// is released. external WritableStreamDefaultWriter getWriter(); + + /// The **`locked`** read-only property of the [WritableStream] interface + /// returns a boolean indicating whether the `WritableStream` is locked to a + /// writer. external bool get locked; } extension type UnderlyingSink._(JSObject _) implements JSObject { @@ -657,16 +715,16 @@ extension type UnderlyingSink._(JSObject _) implements JSObject { JSAny? type, }); - external set start(UnderlyingSinkStartCallback value); external UnderlyingSinkStartCallback get start; - external set write(UnderlyingSinkWriteCallback value); + external set start(UnderlyingSinkStartCallback value); external UnderlyingSinkWriteCallback get write; - external set close(UnderlyingSinkCloseCallback value); + external set write(UnderlyingSinkWriteCallback value); external UnderlyingSinkCloseCallback get close; - external set abort(UnderlyingSinkAbortCallback value); + external set close(UnderlyingSinkCloseCallback value); external UnderlyingSinkAbortCallback get abort; - external set type(JSAny? value); + external set abort(UnderlyingSinkAbortCallback value); external JSAny? get type; + external set type(JSAny? value); } /// The **`WritableStreamDefaultWriter`** interface of the @@ -725,8 +783,24 @@ extension type WritableStreamDefaultWriter._(JSObject _) implements JSObject { /// its ultimate /// destination. external JSPromise<JSAny?> write([JSAny? chunk]); + + /// The **`closed`** read-only property of the + /// [WritableStreamDefaultWriter] interface returns a + /// `Promise` that fulfills if the stream becomes closed, or rejects if + /// the stream errors or the writer's lock is released. external JSPromise<JSAny?> get closed; + + /// The **`desiredSize`** read-only property of the + /// [WritableStreamDefaultWriter] interface returns the desired size required + /// to fill the stream's internal queue. external num? get desiredSize; + + /// The **`ready`** read-only property of the + /// [WritableStreamDefaultWriter] interface returns a `Promise` + /// that resolves when the desired size of the stream's internal queue + /// transitions from + /// non-positive to positive, signaling that it is no longer applying + /// backpressure. external JSPromise<JSAny?> get ready; } @@ -754,6 +828,10 @@ extension type WritableStreamDefaultController._(JSObject _) /// interactions with /// the underlying sink. external void error([JSAny? e]); + + /// The read-only **`signal`** property of the + /// [WritableStreamDefaultController] interface returns the [AbortSignal] + /// associated with the controller. external AbortSignal get signal; } @@ -786,7 +864,14 @@ extension type TransformStream._(JSObject _) implements JSObject { QueuingStrategy readableStrategy, ]); + /// The **`readable`** read-only property of the [TransformStream] interface + /// returns the [ReadableStream] instance controlled by this + /// `TransformStream`. external ReadableStream get readable; + + /// The **`writable`** read-only property of the [TransformStream] interface + /// returns the [WritableStream] instance controlled by this + /// `TransformStream`. external WritableStream get writable; } extension type Transformer._(JSObject _) implements JSObject { @@ -799,18 +884,18 @@ extension type Transformer._(JSObject _) implements JSObject { JSAny? writableType, }); - external set start(TransformerStartCallback value); external TransformerStartCallback get start; - external set transform(TransformerTransformCallback value); + external set start(TransformerStartCallback value); external TransformerTransformCallback get transform; - external set flush(TransformerFlushCallback value); + external set transform(TransformerTransformCallback value); external TransformerFlushCallback get flush; - external set cancel(TransformerCancelCallback value); + external set flush(TransformerFlushCallback value); external TransformerCancelCallback get cancel; - external set readableType(JSAny? value); + external set cancel(TransformerCancelCallback value); external JSAny? get readableType; - external set writableType(JSAny? value); + external set readableType(JSAny? value); external JSAny? get writableType; + external set writableType(JSAny? value); } /// The **`TransformStreamDefaultController`** interface of the @@ -847,6 +932,20 @@ extension type TransformStreamDefaultController._(JSObject _) /// interface closes the readable side and errors the writable side of the /// stream. external void terminate(); + + /// The **`desiredSize`** read-only property of the + /// [TransformStreamDefaultController] interface returns the desired size to + /// fill the queue of the associated [ReadableStream]. + /// + /// The internal queue of a `ReadableStream` contains chunks that have been + /// enqueued, but not yet read. The browser determines the **desired size** to + /// fill the stream, and it is this value returned by the `desiredSize` + /// property. + /// + /// If the `desiredSize` is `0` then the queue is full. Therefore you can use + /// this information to + /// [manually apply backpressure](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Concepts#backpressure) + /// to manage the queue. external num? get desiredSize; } extension type QueuingStrategy._(JSObject _) implements JSObject { @@ -855,16 +954,16 @@ extension type QueuingStrategy._(JSObject _) implements JSObject { QueuingStrategySize size, }); - external set highWaterMark(num value); external num get highWaterMark; - external set size(QueuingStrategySize value); + external set highWaterMark(num value); external QueuingStrategySize get size; + external set size(QueuingStrategySize value); } extension type QueuingStrategyInit._(JSObject _) implements JSObject { external factory QueuingStrategyInit({required num highWaterMark}); - external set highWaterMark(num value); external num get highWaterMark; + external set highWaterMark(num value); } /// The **`ByteLengthQueuingStrategy`** interface of the @@ -879,7 +978,25 @@ extension type QueuingStrategyInit._(JSObject _) implements JSObject { extension type ByteLengthQueuingStrategy._(JSObject _) implements JSObject { external factory ByteLengthQueuingStrategy(QueuingStrategyInit init); + /// The read-only **`ByteLengthQueuingStrategy.highWaterMark`** property + /// returns the total number of bytes that can be contained in the internal + /// queue before + /// [backpressure](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Concepts#backpressure) + /// is applied. + /// + /// > **Note:** Unlike + /// > [`CountQueuingStrategy()`](https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy/CountQueuingStrategy) + /// > where the `highWaterMark` property specifies a simple count of the + /// > number of chunks, with `ByteLengthQueuingStrategy()`, the + /// > `highWaterMark` parameter specifies a number of _bytes_ — specifically, + /// > given a stream of chunks, how many bytes worth of those chunks (rather + /// > than a count of how many of those chunks) can be contained in the + /// > internal queue before backpressure is applied. external num get highWaterMark; + + /// The **`size()`** method of the + /// [ByteLengthQueuingStrategy] interface returns the given chunk's + /// `byteLength` property. external JSFunction get size; } @@ -895,6 +1012,13 @@ extension type ByteLengthQueuingStrategy._(JSObject _) implements JSObject { extension type CountQueuingStrategy._(JSObject _) implements JSObject { external factory CountQueuingStrategy(QueuingStrategyInit init); + /// The read-only **`CountQueuingStrategy.highWaterMark`** property returns + /// the total number of chunks that can be contained in the internal queue + /// before backpressure is applied. external num get highWaterMark; + + /// The **`size()`** method of the + /// [CountQueuingStrategy] interface always returns `1`, so that the + /// total queue size is a count of the number of chunks in the queue. external JSFunction get size; } diff --git a/lib/src/dom/svg.dart b/lib/src/dom/svg.dart index 6927685e..4d4d4409 100644 --- a/lib/src/dom/svg.dart +++ b/lib/src/dom/svg.dart @@ -32,216 +32,256 @@ extension type SVGElement._(JSObject _) implements Element, JSObject { external void blur(); external SVGSVGElement? get ownerSVGElement; external SVGElement? get viewportElement; - external set onanimationstart(EventHandler value); external EventHandler get onanimationstart; - external set onanimationiteration(EventHandler value); + external set onanimationstart(EventHandler value); external EventHandler get onanimationiteration; - external set onanimationend(EventHandler value); + external set onanimationiteration(EventHandler value); external EventHandler get onanimationend; - external set onanimationcancel(EventHandler value); + external set onanimationend(EventHandler value); external EventHandler get onanimationcancel; - external set ontransitionrun(EventHandler value); + external set onanimationcancel(EventHandler value); external EventHandler get ontransitionrun; - external set ontransitionstart(EventHandler value); + external set ontransitionrun(EventHandler value); external EventHandler get ontransitionstart; - external set ontransitionend(EventHandler value); + external set ontransitionstart(EventHandler value); external EventHandler get ontransitionend; - external set ontransitioncancel(EventHandler value); + external set ontransitionend(EventHandler value); external EventHandler get ontransitioncancel; - external set onabort(EventHandler value); + external set ontransitioncancel(EventHandler value); external EventHandler get onabort; - external set onauxclick(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onauxclick; - external set onbeforeinput(EventHandler value); + external set onauxclick(EventHandler value); external EventHandler get onbeforeinput; - external set onbeforematch(EventHandler value); + external set onbeforeinput(EventHandler value); external EventHandler get onbeforematch; - external set onbeforetoggle(EventHandler value); + external set onbeforematch(EventHandler value); external EventHandler get onbeforetoggle; - external set onblur(EventHandler value); + external set onbeforetoggle(EventHandler value); external EventHandler get onblur; - external set oncancel(EventHandler value); + external set onblur(EventHandler value); external EventHandler get oncancel; - external set oncanplay(EventHandler value); + external set oncancel(EventHandler value); external EventHandler get oncanplay; - external set oncanplaythrough(EventHandler value); + external set oncanplay(EventHandler value); external EventHandler get oncanplaythrough; - external set onchange(EventHandler value); + external set oncanplaythrough(EventHandler value); external EventHandler get onchange; - external set onclick(EventHandler value); + external set onchange(EventHandler value); external EventHandler get onclick; - external set onclose(EventHandler value); + external set onclick(EventHandler value); external EventHandler get onclose; - external set oncontextlost(EventHandler value); + external set onclose(EventHandler value); external EventHandler get oncontextlost; - external set oncontextmenu(EventHandler value); + external set oncontextlost(EventHandler value); external EventHandler get oncontextmenu; - external set oncontextrestored(EventHandler value); + external set oncontextmenu(EventHandler value); external EventHandler get oncontextrestored; - external set oncopy(EventHandler value); + external set oncontextrestored(EventHandler value); external EventHandler get oncopy; - external set oncuechange(EventHandler value); + external set oncopy(EventHandler value); external EventHandler get oncuechange; - external set oncut(EventHandler value); + external set oncuechange(EventHandler value); external EventHandler get oncut; - external set ondblclick(EventHandler value); + external set oncut(EventHandler value); external EventHandler get ondblclick; - external set ondrag(EventHandler value); + external set ondblclick(EventHandler value); external EventHandler get ondrag; - external set ondragend(EventHandler value); + external set ondrag(EventHandler value); external EventHandler get ondragend; - external set ondragenter(EventHandler value); + external set ondragend(EventHandler value); external EventHandler get ondragenter; - external set ondragleave(EventHandler value); + external set ondragenter(EventHandler value); external EventHandler get ondragleave; - external set ondragover(EventHandler value); + external set ondragleave(EventHandler value); external EventHandler get ondragover; - external set ondragstart(EventHandler value); + external set ondragover(EventHandler value); external EventHandler get ondragstart; - external set ondrop(EventHandler value); + external set ondragstart(EventHandler value); external EventHandler get ondrop; - external set ondurationchange(EventHandler value); + external set ondrop(EventHandler value); external EventHandler get ondurationchange; - external set onemptied(EventHandler value); + external set ondurationchange(EventHandler value); external EventHandler get onemptied; - external set onended(EventHandler value); + external set onemptied(EventHandler value); external EventHandler get onended; - external set onerror(OnErrorEventHandler value); + external set onended(EventHandler value); external OnErrorEventHandler get onerror; - external set onfocus(EventHandler value); + external set onerror(OnErrorEventHandler value); external EventHandler get onfocus; - external set onformdata(EventHandler value); + external set onfocus(EventHandler value); external EventHandler get onformdata; - external set oninput(EventHandler value); + external set onformdata(EventHandler value); external EventHandler get oninput; - external set oninvalid(EventHandler value); + external set oninput(EventHandler value); external EventHandler get oninvalid; - external set onkeydown(EventHandler value); + external set oninvalid(EventHandler value); external EventHandler get onkeydown; - external set onkeypress(EventHandler value); + external set onkeydown(EventHandler value); external EventHandler get onkeypress; - external set onkeyup(EventHandler value); + external set onkeypress(EventHandler value); external EventHandler get onkeyup; - external set onload(EventHandler value); + external set onkeyup(EventHandler value); external EventHandler get onload; - external set onloadeddata(EventHandler value); + external set onload(EventHandler value); external EventHandler get onloadeddata; - external set onloadedmetadata(EventHandler value); + external set onloadeddata(EventHandler value); external EventHandler get onloadedmetadata; - external set onloadstart(EventHandler value); + external set onloadedmetadata(EventHandler value); external EventHandler get onloadstart; - external set onmousedown(EventHandler value); + external set onloadstart(EventHandler value); external EventHandler get onmousedown; - external set onmouseenter(EventHandler value); + external set onmousedown(EventHandler value); external EventHandler get onmouseenter; - external set onmouseleave(EventHandler value); + external set onmouseenter(EventHandler value); external EventHandler get onmouseleave; - external set onmousemove(EventHandler value); + external set onmouseleave(EventHandler value); external EventHandler get onmousemove; - external set onmouseout(EventHandler value); + external set onmousemove(EventHandler value); external EventHandler get onmouseout; - external set onmouseover(EventHandler value); + external set onmouseout(EventHandler value); external EventHandler get onmouseover; - external set onmouseup(EventHandler value); + external set onmouseover(EventHandler value); external EventHandler get onmouseup; - external set onpaste(EventHandler value); + external set onmouseup(EventHandler value); external EventHandler get onpaste; - external set onpause(EventHandler value); + external set onpaste(EventHandler value); external EventHandler get onpause; - external set onplay(EventHandler value); + external set onpause(EventHandler value); external EventHandler get onplay; - external set onplaying(EventHandler value); + external set onplay(EventHandler value); external EventHandler get onplaying; - external set onprogress(EventHandler value); + external set onplaying(EventHandler value); external EventHandler get onprogress; - external set onratechange(EventHandler value); + external set onprogress(EventHandler value); external EventHandler get onratechange; - external set onreset(EventHandler value); + external set onratechange(EventHandler value); external EventHandler get onreset; - external set onresize(EventHandler value); + external set onreset(EventHandler value); external EventHandler get onresize; - external set onscroll(EventHandler value); + external set onresize(EventHandler value); external EventHandler get onscroll; - external set onscrollend(EventHandler value); + external set onscroll(EventHandler value); external EventHandler get onscrollend; - external set onsecuritypolicyviolation(EventHandler value); + external set onscrollend(EventHandler value); external EventHandler get onsecuritypolicyviolation; - external set onseeked(EventHandler value); + external set onsecuritypolicyviolation(EventHandler value); external EventHandler get onseeked; - external set onseeking(EventHandler value); + external set onseeked(EventHandler value); external EventHandler get onseeking; - external set onselect(EventHandler value); + external set onseeking(EventHandler value); external EventHandler get onselect; - external set onslotchange(EventHandler value); + external set onselect(EventHandler value); external EventHandler get onslotchange; - external set onstalled(EventHandler value); + external set onslotchange(EventHandler value); external EventHandler get onstalled; - external set onsubmit(EventHandler value); + external set onstalled(EventHandler value); external EventHandler get onsubmit; - external set onsuspend(EventHandler value); + external set onsubmit(EventHandler value); external EventHandler get onsuspend; - external set ontimeupdate(EventHandler value); + external set onsuspend(EventHandler value); external EventHandler get ontimeupdate; - external set ontoggle(EventHandler value); + external set ontimeupdate(EventHandler value); external EventHandler get ontoggle; - external set onvolumechange(EventHandler value); + external set ontoggle(EventHandler value); external EventHandler get onvolumechange; - external set onwaiting(EventHandler value); + external set onvolumechange(EventHandler value); external EventHandler get onwaiting; - external set onwebkitanimationend(EventHandler value); + external set onwaiting(EventHandler value); external EventHandler get onwebkitanimationend; - external set onwebkitanimationiteration(EventHandler value); + external set onwebkitanimationend(EventHandler value); external EventHandler get onwebkitanimationiteration; - external set onwebkitanimationstart(EventHandler value); + external set onwebkitanimationiteration(EventHandler value); external EventHandler get onwebkitanimationstart; - external set onwebkittransitionend(EventHandler value); + external set onwebkitanimationstart(EventHandler value); external EventHandler get onwebkittransitionend; - external set onwheel(EventHandler value); + external set onwebkittransitionend(EventHandler value); external EventHandler get onwheel; - external set onpointerover(EventHandler value); + external set onwheel(EventHandler value); external EventHandler get onpointerover; - external set onpointerenter(EventHandler value); + external set onpointerover(EventHandler value); external EventHandler get onpointerenter; - external set onpointerdown(EventHandler value); + external set onpointerenter(EventHandler value); external EventHandler get onpointerdown; - external set onpointermove(EventHandler value); + external set onpointerdown(EventHandler value); external EventHandler get onpointermove; - external set onpointerrawupdate(EventHandler value); + external set onpointermove(EventHandler value); external EventHandler get onpointerrawupdate; - external set onpointerup(EventHandler value); + external set onpointerrawupdate(EventHandler value); external EventHandler get onpointerup; - external set onpointercancel(EventHandler value); + external set onpointerup(EventHandler value); external EventHandler get onpointercancel; - external set onpointerout(EventHandler value); + external set onpointercancel(EventHandler value); external EventHandler get onpointerout; - external set onpointerleave(EventHandler value); + external set onpointerout(EventHandler value); external EventHandler get onpointerleave; - external set ongotpointercapture(EventHandler value); + external set onpointerleave(EventHandler value); external EventHandler get ongotpointercapture; - external set onlostpointercapture(EventHandler value); + external set ongotpointercapture(EventHandler value); external EventHandler get onlostpointercapture; - external set onselectstart(EventHandler value); + external set onlostpointercapture(EventHandler value); external EventHandler get onselectstart; - external set onselectionchange(EventHandler value); + external set onselectstart(EventHandler value); external EventHandler get onselectionchange; - external set ontouchstart(EventHandler value); + external set onselectionchange(EventHandler value); external EventHandler get ontouchstart; - external set ontouchend(EventHandler value); + external set ontouchstart(EventHandler value); external EventHandler get ontouchend; - external set ontouchmove(EventHandler value); + external set ontouchend(EventHandler value); external EventHandler get ontouchmove; - external set ontouchcancel(EventHandler value); + external set ontouchmove(EventHandler value); external EventHandler get ontouchcancel; + external set ontouchcancel(EventHandler value); external SVGElement? get correspondingElement; external SVGUseElement? get correspondingUseElement; external DOMStringMap get dataset; - external set nonce(String value); external String get nonce; - external set autofocus(bool value); + external set nonce(String value); external bool get autofocus; - external set tabIndex(int value); + external set autofocus(bool value); external int get tabIndex; + external set tabIndex(int value); external StylePropertyMap get attributeStyleMap; + + /// The read-only **`style`** property of the [SVGElement] returns the + /// _inline_ style of an element in the form of a live [CSSStyleDeclaration] + /// object that contains a list of all styles properties for that element with + /// values assigned only for the attributes that are defined in the element's + /// inline + /// [`style`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/style) + /// attribute. + /// + /// Shorthand properties are expanded. If you set `style="border-top: 1px + /// solid black"`, the longhand properties (, , and ) are set instead. + /// + /// This property is read-only, meaning it is not possible to assign a + /// [CSSStyleDeclaration] object to it. Nevertheless, it is possible to set an + /// inline style by assigning a _string_ directly to the `style` property. In + /// this case the string is forwarded to [CSSStyleDeclaration.cssText]. Using + /// `style` in this manner will completely overwrite all inline styles on the + /// element. + /// + /// Therefore, to add specific styles to an element without altering other + /// style values, it is generally preferable to set individual properties on + /// the [CSSStyleDeclaration] object. For example, you can write + /// `element.style.backgroundColor = "red"`. + /// + /// A style declaration is reset by setting it to `null` or an empty string, + /// e.g., `elt.style.color = null`. + /// + /// > **Note:** CSS property names are converted to JavaScript identifier with + /// > these rules: + /// > + /// > - If the property is made of one word, it remains as it is: `height` + /// > stays as is (in lowercase). + /// > - If the property is made of several words, separated by dashes, the + /// > dashes are removed and it is converted to : `background-attachment` + /// > becomes `backgroundAttachment`. + /// > - The property `float`, being a reserved JavaScript keyword, is + /// > converted to `cssFloat`. + /// > + /// > The `style` property has the same priority in the CSS cascade as an + /// > inline style declaration set via the `style` attribute. external CSSStyleDeclaration get style; } @@ -257,14 +297,14 @@ extension type SVGBoundingBoxOptions._(JSObject _) implements JSObject { bool clipped, }); - external set fill(bool value); external bool get fill; - external set stroke(bool value); + external set fill(bool value); external bool get stroke; - external set markers(bool value); + external set stroke(bool value); external bool get markers; - external set clipped(bool value); + external set markers(bool value); external bool get clipped; + external set clipped(bool value); } /// The **`SVGGraphicsElement`** interface represents SVG elements whose primary @@ -339,6 +379,10 @@ extension type SVGGeometryElement._(JSObject _) /// **`SVGGeometryElement.getPointAtLength()`** method returns the /// point at a given distance along the path. external DOMPoint getPointAtLength(num distance); + + /// The **`SVGGeometryElement.pathLength`** property reflects the + /// `pathLength` attribute and returns the total length of the path, in user + /// units. external SVGAnimatedNumber get pathLength; } @@ -352,8 +396,8 @@ extension type SVGGeometryElement._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber). extension type SVGNumber._(JSObject _) implements JSObject { - external set value(num value); external num get value; + external set value(num value); } /// @@ -380,12 +424,12 @@ extension type SVGLength._(JSObject _) implements JSObject { ); external void convertToSpecifiedUnits(int unitType); external int get unitType; - external set value(num value); external num get value; - external set valueInSpecifiedUnits(num value); + external set value(num value); external num get valueInSpecifiedUnits; - external set valueAsString(String value); + external set valueInSpecifiedUnits(num value); external String get valueAsString; + external set valueAsString(String value); } /// The `SVGAngle` interface is used to represent a value that can be an or @@ -423,12 +467,12 @@ extension type SVGAngle._(JSObject _) implements JSObject { ); external void convertToSpecifiedUnits(int unitType); external int get unitType; - external set value(num value); external num get value; - external set valueInSpecifiedUnits(num value); + external set value(num value); external num get valueInSpecifiedUnits; - external set valueAsString(String value); + external set valueInSpecifiedUnits(num value); external String get valueAsString; + external set valueAsString(String value); } /// @@ -510,8 +554,8 @@ extension type SVGStringList._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean). extension type SVGAnimatedBoolean._(JSObject _) implements JSObject { - external set baseVal(bool value); external bool get baseVal; + external set baseVal(bool value); external bool get animVal; } @@ -523,8 +567,14 @@ extension type SVGAnimatedBoolean._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration). extension type SVGAnimatedEnumeration._(JSObject _) implements JSObject { - external set baseVal(int value); + /// The **`baseVal`** property of the [SVGAnimatedEnumeration] interface + /// contains the initial value of an SVG enumeration. external int get baseVal; + external set baseVal(int value); + + /// The **`animVal`** property of the [SVGAnimatedEnumeration] interface + /// contains the current value of an SVG enumeration. If there is no + /// animation, it is the same value as the [SVGAnimatedEnumeration.baseVal]. external int get animVal; } @@ -535,8 +585,8 @@ extension type SVGAnimatedEnumeration._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger). extension type SVGAnimatedInteger._(JSObject _) implements JSObject { - external set baseVal(int value); external int get baseVal; + external set baseVal(int value); external int get animVal; } @@ -547,8 +597,8 @@ extension type SVGAnimatedInteger._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber). extension type SVGAnimatedNumber._(JSObject _) implements JSObject { - external set baseVal(num value); external num get baseVal; + external set baseVal(num value); external num get animVal; } @@ -560,7 +610,13 @@ extension type SVGAnimatedNumber._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength). extension type SVGAnimatedLength._(JSObject _) implements JSObject { + /// The **`baseVal`** property of the [SVGAnimatedLength] interface contains + /// the initial value of an SVG enumeration. external SVGLength get baseVal; + + /// The **`animVal`** property of the [SVGAnimatedLength] interface contains + /// the current value of an SVG enumeration. If there is no animation, it is + /// the same value as the [SVGAnimatedLength.baseVal]. external SVGLength get animVal; } @@ -584,8 +640,19 @@ extension type SVGAnimatedAngle._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString). extension type SVGAnimatedString._(JSObject _) implements JSObject { - external set baseVal(String value); + /// BaseVal gets or sets the base value of the given attribute before any + /// animations are applied. The base value of the given attribute before + /// applying any animations. Setter throws DOMException. external String get baseVal; + external set baseVal(String value); + + /// AnimVal attribute or animVal property contains the same value as the + /// [SVGAnimatedString.baseVal] property. If the given attribute or property + /// is being animated, contains the current animated value of the attribute or + /// property. If the given attribute or property is not currently being + /// animated, then it contains the same value as baseVal + /// + /// > **Note:** The **animVal** property is a read only property. external String get animVal; } @@ -732,49 +799,49 @@ extension type SVGSVGElement._(JSObject _) external SVGAnimatedLength get y; external SVGAnimatedLength get width; external SVGAnimatedLength get height; - external set currentScale(num value); external num get currentScale; + external set currentScale(num value); external DOMPointReadOnly get currentTranslate; external SVGAnimatedRect get viewBox; external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; - external set ongamepadconnected(EventHandler value); external EventHandler get ongamepadconnected; - external set ongamepaddisconnected(EventHandler value); + external set ongamepadconnected(EventHandler value); external EventHandler get ongamepaddisconnected; - external set onafterprint(EventHandler value); + external set ongamepaddisconnected(EventHandler value); external EventHandler get onafterprint; - external set onbeforeprint(EventHandler value); + external set onafterprint(EventHandler value); external EventHandler get onbeforeprint; - external set onbeforeunload(OnBeforeUnloadEventHandler value); + external set onbeforeprint(EventHandler value); external OnBeforeUnloadEventHandler get onbeforeunload; - external set onhashchange(EventHandler value); + external set onbeforeunload(OnBeforeUnloadEventHandler value); external EventHandler get onhashchange; - external set onlanguagechange(EventHandler value); + external set onhashchange(EventHandler value); external EventHandler get onlanguagechange; - external set onmessage(EventHandler value); + external set onlanguagechange(EventHandler value); external EventHandler get onmessage; - external set onmessageerror(EventHandler value); + external set onmessage(EventHandler value); external EventHandler get onmessageerror; - external set onoffline(EventHandler value); + external set onmessageerror(EventHandler value); external EventHandler get onoffline; - external set ononline(EventHandler value); + external set onoffline(EventHandler value); external EventHandler get ononline; - external set onpagehide(EventHandler value); + external set ononline(EventHandler value); external EventHandler get onpagehide; - external set onpagereveal(EventHandler value); + external set onpagehide(EventHandler value); external EventHandler get onpagereveal; - external set onpageshow(EventHandler value); + external set onpagereveal(EventHandler value); external EventHandler get onpageshow; - external set onpopstate(EventHandler value); + external set onpageshow(EventHandler value); external EventHandler get onpopstate; - external set onrejectionhandled(EventHandler value); + external set onpopstate(EventHandler value); external EventHandler get onrejectionhandled; - external set onstorage(EventHandler value); + external set onrejectionhandled(EventHandler value); external EventHandler get onstorage; - external set onunhandledrejection(EventHandler value); + external set onstorage(EventHandler value); external EventHandler get onunhandledrejection; - external set onunload(EventHandler value); + external set onunhandledrejection(EventHandler value); external EventHandler get onunload; + external set onunload(EventHandler value); } /// The **`SVGGElement`** interface corresponds to the element. @@ -938,12 +1005,36 @@ extension type SVGStyleElement._(JSObject _) implements SVGElement, JSObject { 'style', ); - external set type(String value); + /// The **`SVGStyleElement.type`** property returns the type of the current + /// style. + /// The value reflects the associated SVG `<style>` element's + /// [`type`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/style#type) + /// attribute. + /// + /// Authors should not use this property or rely on the value. external String get type; - external set media(String value); + external set type(String value); + + /// The **`SVGStyleElement.media`** property is a media query string + /// corresponding to the + /// [`media`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/style#media) + /// attribute of the given SVG style element. + /// + /// The query must be matched for the style to apply. external String get media; - external set title(String value); + external set media(String value); + + /// The **`SVGStyleElement.title`** property is a string corresponding to the + /// [`title`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/style#title) + /// attribute of the given SVG style element. + /// It may be used to select between + /// [alternate style sheets](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets). external String get title; + external set title(String value); + + /// The **`SVGStyleElement.sheet`** read-only property returns the + /// [CSSStyleSheet] corresponding to the given SVG style element, or `null` if + /// there is none. external CSSStyleSheet? get sheet; } @@ -1040,10 +1131,10 @@ extension type SVGPreserveAspectRatio._(JSObject _) implements JSObject { external static int get SVG_MEETORSLICE_UNKNOWN; external static int get SVG_MEETORSLICE_MEET; external static int get SVG_MEETORSLICE_SLICE; - external set align(int value); external int get align; - external set meetOrSlice(int value); + external set align(int value); external int get meetOrSlice; + external set meetOrSlice(int value); } /// @@ -1118,8 +1209,25 @@ extension type SVGCircleElement._(JSObject _) 'circle', ); + /// The **`cx`** read-only property of the [SVGCircleElement] interface + /// reflects the `cx` attribute of a element and by that defines the + /// x-coordinate of the circle's center.< + /// + /// If unspecified, the effect is as if the value is set to `0`. external SVGAnimatedLength get cx; + + /// The **`cy`** read-only property of the [SVGCircleElement] interface + /// reflects the `cy` attribute of a element and by that defines the + /// y-coordinate of the circle's center. + /// + /// If unspecified, the effect is as if the value is set to `0`. external SVGAnimatedLength get cy; + + /// The **`r`** read-only property of the [SVGCircleElement] interface + /// reflects the `r` attribute of a element and by that defines the radius of + /// the circle. + /// + /// If unspecified, the effect is as if the value is set to `0`. external SVGAnimatedLength get r; } @@ -1210,7 +1318,13 @@ extension type SVGPointList._(JSObject _) implements JSObject { /// The **`appendItem()`** method of the [SVGPointList] interface adds a /// [SVGPoint] to the end of the list. external DOMPoint appendItem(DOMPoint newItem); + + /// The **`length`** read-only property of the [SVGPointList] interface + /// returns the number of items in the list. external int get length; + + /// The **`numberOfItems`** read-only property of the [SVGPointList] interface + /// returns the number of items in the list. external int get numberOfItems; } @@ -1378,13 +1492,38 @@ extension type SVGImageElement._(JSObject _) 'image', ); + /// The **`x`** read-only property of the + /// [SVGImageElement] interface returns an [SVGAnimatedLength] + /// corresponding to the `x` attribute of the given + /// element. external SVGAnimatedLength get x; + + /// The **`y`** read-only property of the + /// [SVGImageElement] interface returns an [SVGAnimatedLength] + /// corresponding to the `y` attribute of the given + /// element. external SVGAnimatedLength get y; + + /// The **`width`** read-only property of the + /// [SVGImageElement] interface returns an [SVGAnimatedLength] + /// corresponding to the `width` attribute of the given + /// element. external SVGAnimatedLength get width; + + /// The **`height`** read-only property of the + /// [SVGImageElement] interface returns an [SVGAnimatedLength] + /// corresponding to the `height` attribute of the given + /// element. external SVGAnimatedLength get height; + + /// The **`preserveAspectRatio`** read-only + /// property of the [SVGImageElement] interface returns an + /// [SVGAnimatedPreserveAspectRatio] corresponding to the + /// `preserveAspectRatio` attribute of the given + /// element. external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; - external set crossOrigin(String? value); external String? get crossOrigin; + external set crossOrigin(String? value); external SVGAnimatedString get href; } @@ -1444,16 +1583,58 @@ extension type SVGMarkerElement._(JSObject _) implements SVGElement, JSObject { /// sets the value of the `orient` attribute to the value in the [SVGAngle] /// passed in. external void setOrientToAngle(SVGAngle angle); + + /// The **`refX`** read-only property of the [SVGMarkerElement] interface + /// returns an [SVGAnimatedLength] object containing the value of the `refX` + /// attribute of the . external SVGAnimatedLength get refX; + + /// The **`refY`** read-only property of the [SVGMarkerElement] interface + /// returns an [SVGAnimatedLength] object containing the value of the `refY` + /// attribute of the . external SVGAnimatedLength get refY; + + /// The **`markerUnits`** read-only property of the [SVGMarkerElement] + /// interface returns an [SVGAnimatedEnumeration] object. This object returns + /// an integer which represents the keyword values that the `markerUnits` + /// attribute accepts. external SVGAnimatedEnumeration get markerUnits; + + /// The **`markerWidth`** read-only property of the [SVGMarkerElement] + /// interface returns an [SVGAnimatedLength] object containing the width of + /// the viewport as defined by the `markerWidth` attribute. external SVGAnimatedLength get markerWidth; + + /// The **`markerHeight`** read-only property of the [SVGMarkerElement] + /// interface returns an [SVGAnimatedLength] object containing the height of + /// the viewport as defined by the `markerHeight` attribute. external SVGAnimatedLength get markerHeight; + + /// The **`orientType`** read-only property of the [SVGMarkerElement] + /// interface returns an [SVGAnimatedEnumeration] object indicating whether + /// the `orient` attribute is `auto`, an angle value, or something else. + /// + /// This _something else_ is most likely to be the keyword + /// `auto-start-reverse` however the spec leaves it open for this to be other + /// values. Unsupported values will generally be thrown away by the parser, + /// leaving the value the default of `auto`. external SVGAnimatedEnumeration get orientType; + + /// The **`orientAngle`** read-only property of the [SVGMarkerElement] + /// interface returns an [SVGAnimatedAngle] object containing the angle of the + /// `orient` attribute. external SVGAnimatedAngle get orientAngle; - external set orient(String value); external String get orient; + external set orient(String value); + + /// The **`viewBox`** read-only property of the [SVGMarkerElement] interface + /// returns an [SVGAnimatedRect] object which contains the values set by the + /// `viewBox` attribute on the . external SVGAnimatedRect get viewBox; + + /// The **`preserveAspectRatio`** read-only property of the [SVGMarkerElement] + /// interface returns an [SVGAnimatedPreserveAspectRatio] object containing + /// the value of the `preserveAspectRatio` attribute of the . external SVGAnimatedPreserveAspectRatio get preserveAspectRatio; } @@ -1577,10 +1758,10 @@ extension type SVGScriptElement._(JSObject _) implements SVGElement, JSObject { 'script', ); - external set type(String value); external String get type; - external set crossOrigin(String? value); + external set type(String value); external String? get crossOrigin; + external set crossOrigin(String? value); external SVGAnimatedString get href; } @@ -1600,41 +1781,49 @@ extension type SVGAElement._(JSObject _) 'a', ); + /// The **`SVGAElement.target`** read-only property of [SVGAElement] returns + /// an [SVGAnimatedString] object that specifies the portion of a target + /// window, frame, pane into which a document is to be opened when a link is + /// activated. + /// + /// This property is used when there are multiple possible targets for the + /// ending resource, like when the parent document is a multi-frame HTML or + /// XHTML document. external SVGAnimatedString get target; - external set download(String value); external String get download; - external set ping(String value); + external set download(String value); external String get ping; - external set rel(String value); + external set ping(String value); external String get rel; + external set rel(String value); external DOMTokenList get relList; - external set hreflang(String value); external String get hreflang; - external set type(String value); + external set hreflang(String value); external String get type; - external set text(String value); + external set type(String value); external String get text; - external set referrerPolicy(String value); + external set text(String value); external String get referrerPolicy; + external set referrerPolicy(String value); external String get origin; - external set protocol(String value); external String get protocol; - external set username(String value); + external set protocol(String value); external String get username; - external set password(String value); + external set username(String value); external String get password; - external set host(String value); + external set password(String value); external String get host; - external set hostname(String value); + external set host(String value); external String get hostname; - external set port(String value); + external set hostname(String value); external String get port; - external set pathname(String value); + external set port(String value); external String get pathname; - external set search(String value); + external set pathname(String value); external String get search; - external set hash(String value); + external set search(String value); external String get hash; + external set hash(String value); external SVGAnimatedString get href; } diff --git a/lib/src/dom/svg_animations.dart b/lib/src/dom/svg_animations.dart index 378990af..d01d372e 100644 --- a/lib/src/dom/svg_animations.dart +++ b/lib/src/dom/svg_animations.dart @@ -54,13 +54,19 @@ extension type SVGAnimationElement._(JSObject _) external void beginElementAt(num offset); external void endElement(); external void endElementAt(num offset); + + /// The **`SVGAnimationElement.targetElement`** property refers to + /// the element which is being animated. If no target element is being + /// animated (for + /// example, because the `href` attribute specifies an unknown element), the + /// value returned is `null`. external SVGElement? get targetElement; - external set onbegin(EventHandler value); external EventHandler get onbegin; - external set onend(EventHandler value); + external set onbegin(EventHandler value); external EventHandler get onend; - external set onrepeat(EventHandler value); + external set onend(EventHandler value); external EventHandler get onrepeat; + external set onrepeat(EventHandler value); external SVGStringList get requiredExtensions; external SVGStringList get systemLanguage; } diff --git a/lib/src/dom/touch_events.dart b/lib/src/dom/touch_events.dart index 87b2f90d..1f8fde1b 100644 --- a/lib/src/dom/touch_events.dart +++ b/lib/src/dom/touch_events.dart @@ -37,36 +37,36 @@ extension type TouchInit._(JSObject _) implements JSObject { TouchType touchType, }); - external set identifier(int value); external int get identifier; - external set target(EventTarget value); + external set identifier(int value); external EventTarget get target; - external set clientX(num value); + external set target(EventTarget value); external num get clientX; - external set clientY(num value); + external set clientX(num value); external num get clientY; - external set screenX(num value); + external set clientY(num value); external num get screenX; - external set screenY(num value); + external set screenX(num value); external num get screenY; - external set pageX(num value); + external set screenY(num value); external num get pageX; - external set pageY(num value); + external set pageX(num value); external num get pageY; - external set radiusX(num value); + external set pageY(num value); external num get radiusX; - external set radiusY(num value); + external set radiusX(num value); external num get radiusY; - external set rotationAngle(num value); + external set radiusY(num value); external num get rotationAngle; - external set force(num value); + external set rotationAngle(num value); external num get force; - external set altitudeAngle(num value); + external set force(num value); external num get altitudeAngle; - external set azimuthAngle(num value); + external set altitudeAngle(num value); external num get azimuthAngle; - external set touchType(TouchType value); + external set azimuthAngle(num value); external TouchType get touchType; + external set touchType(TouchType value); } /// The **`Touch`** interface represents a single contact point on a @@ -92,17 +92,90 @@ extension type TouchInit._(JSObject _) implements JSObject { extension type Touch._(JSObject _) implements JSObject { external factory Touch(TouchInit touchInitDict); + /// The **`Touch.identifier`** returns a value uniquely identifying + /// this point of contact with the touch surface. This value remains + /// consistent for every + /// event involving this finger's (or stylus's) movement on the surface until + /// it is lifted + /// off the surface. external int get identifier; + + /// The read-only **`target`** property of the `Touch` interface returns the + /// ([EventTarget]) on which the touch contact started when it was first + /// placed on the surface, even if the touch point has since moved outside the + /// interactive area of that element or even been removed from the document. + /// Note that if the target element is removed from the document, events will + /// still be targeted at it, and hence won't necessarily bubble up to the + /// window or document anymore. If there is any risk of an element being + /// removed while it is being touched, the best practice is to attach the + /// touch listeners directly to the target. external EventTarget get target; + + /// Returns the X coordinate of the touch point relative to the screen, not + /// including any scroll offset. external num get screenX; + + /// Returns the Y coordinate of the touch point relative to the screen, not + /// including any scroll offset. external num get screenY; + + /// The `Touch.clientX` read-only property returns the X coordinate of the + /// touch + /// point relative to the viewport, not including any scroll offset. external num get clientX; + + /// The **`Touch.clientY`** read-only property returns the Y + /// coordinate of the touch point relative to the browser's viewport, not + /// including any + /// scroll offset. external num get clientY; + + /// The **`Touch.pageX`** read-only property returns the X + /// coordinate of the touch point relative to the viewport, including any + /// scroll offset. external num get pageX; + + /// The **`Touch.pageY`** read-only property returns the Y + /// coordinate of the touch point relative to the viewport, including any + /// scroll offset. external num get pageY; + + /// The **`radiusX`** read-only property of the [Touch] interface returns the + /// X radius of the ellipse that most closely circumscribes the area of + /// contact with the touch surface. The value is in CSS pixels of the same + /// scale as [Touch.screenX]. + /// + /// This value, in combination with [Touch.radiusY] and [Touch.rotationAngle] + /// constructs an ellipse that approximates the size and shape of the area of + /// contact between the user and the screen. This may be a relatively large + /// ellipse representing the contact between a fingertip and the screen or a + /// small area representing the tip of a stylus, for example. external num get radiusX; + + /// The **`radiusY`** read-only property of the [Touch] interface returns the + /// Y radius of the ellipse that most closely circumscribes the area of + /// contact with the touch surface. The value is in CSS pixels of the same + /// scale as [Touch.screenX]. + /// + /// This value, in combination with [Touch.radiusX] and [Touch.rotationAngle] + /// constructs an ellipse that approximates the size and shape of the area of + /// contact between the user and the screen. This may be a large ellipse + /// representing the contact between a fingertip and the screen or a small one + /// representing the tip of a stylus, for example. external num get radiusY; + + /// The **`rotationAngle`** read-only property of the [Touch] interface + /// returns the rotation angle, in degrees, of the contact area ellipse + /// defined by [Touch.radiusX] and [Touch.radiusY]. The value may be between 0 + /// and 90. Together, these three values describe an ellipse that approximates + /// the size and shape of the area of contact between the user and the screen. + /// This may be a relatively large ellipse representing the contact between a + /// fingertip and the screen or a small area representing the tip of a stylus, + /// for example. external num get rotationAngle; + + /// The **`Touch.force`** read-only property returns the amount of + /// pressure the user is applying to the touch surface for a [Touch] point. external num get force; external num get altitudeAngle; external num get azimuthAngle; @@ -130,6 +203,9 @@ extension type TouchList._(JSObject _) implements JSObject { /// The **`item()`** method returns the [Touch] /// object at the specified index in the [TouchList]. external Touch? item(int index); + + /// The **`length`** read-only property indicates the number of + /// items (touch points) in a given [TouchList]. external int get length; } extension type TouchEventInit._(JSObject _) @@ -160,12 +236,12 @@ extension type TouchEventInit._(JSObject _) JSArray<Touch> changedTouches, }); - external set touches(JSArray<Touch> value); external JSArray<Touch> get touches; - external set targetTouches(JSArray<Touch> value); + external set touches(JSArray<Touch> value); external JSArray<Touch> get targetTouches; - external set changedTouches(JSArray<Touch> value); + external set targetTouches(JSArray<Touch> value); external JSArray<Touch> get changedTouches; + external set changedTouches(JSArray<Touch> value); } /// The **`TouchEvent`** interface represents an [UIEvent] which is sent when @@ -189,11 +265,72 @@ extension type TouchEvent._(JSObject _) implements UIEvent, JSObject { ]); external bool getModifierState(String keyArg); + + /// **`touches`** is a read-only [TouchList] listing + /// all the [Touch] objects for touch points that are currently in contact + /// with the touch surface, regardless of whether or not they've changed or + /// what their + /// target element was at [Element.touchstart_event] time. + /// + /// You can think of it as how many separate fingers are able to be identified + /// as touching + /// the screen. + /// + /// > **Note:** Touches inside the array are not necessarily ordered by order + /// > of occurrences (the + /// > i-th element in the array being the i-th touch that happened). You + /// > cannot assume a specific order. To determine the order of occurrences of + /// > the touches, use the `touch` object IDs. external TouchList get touches; + + /// The **`targetTouches`** read-only property is a [TouchList] listing all + /// the [Touch] objects for touch points that are still in contact with the + /// touch surface **and** whose [Element.touchstart_event] event occurred + /// inside the same target [element] as the current target element. external TouchList get targetTouches; + + /// The **`changedTouches`** read-only property is a [TouchList] whose touch + /// points ([Touch] objects) varies depending on the event type, as follows: + /// + /// - For the [Element.touchstart_event] event, it is a list of the touch + /// points that became active with the current event. + /// - For the [Element.touchmove_event] event, it is a list of the touch + /// points that have changed since the last event. + /// - For the [Element.touchend_event] event, it is a list of the touch points + /// that have been removed from the surface (that is, the set of touch + /// points corresponding to fingers no longer touching the surface). external TouchList get changedTouches; + + /// The read-only **`altKey`** property of the [TouchEvent] interface returns + /// a boolean value indicating whether or not the <kbd>alt</kbd> (Alternate) + /// key is enabled when the touch event is created. If the <kbd>alt</kbd> key + /// is enabled, the attribute's value is `true`. Otherwise, it is `false`. + /// + /// This property is . external bool get altKey; + + /// The read-only **`metaKey`** property of the [TouchEvent] interface returns + /// a boolean value indicating whether or not the <kbd>Meta</kbd> key is + /// enabled when the touch event is created. If this key is enabled, the + /// attribute's value is `true`. Otherwise, it is `false`. + /// + /// This property is . + /// + /// > **Note:** On Macintosh keyboards, this is the <kbd>⌘ Command</kbd> key. + /// > On Windows keyboards, this is the Windows key (<kbd>⊞</kbd>). external bool get metaKey; + + /// The read-only **`ctrlKey`** property of the [TouchEvent] interface returns + /// a boolean value indicating whether the <kbd>control</kbd> (Control) key is + /// enabled when the touch event is created. If this key is enabled, the + /// attribute's value is `true`. Otherwise, it is `false`. + /// + /// This property is . external bool get ctrlKey; + + /// The read-only **`shiftKey`** property of the `TouchEvent` interface + /// returns a boolean value indicating whether or not the <kbd>shift</kbd> key + /// is enabled when the touch event is created. If this key is enabled, the + /// attribute's value is `true`. Otherwise, it is `false`. external bool get shiftKey; } diff --git a/lib/src/dom/trusted_types.dart b/lib/src/dom/trusted_types.dart index 6360c1fb..6b460ac0 100644 --- a/lib/src/dom/trusted_types.dart +++ b/lib/src/dom/trusted_types.dart @@ -160,8 +160,30 @@ extension type TrustedTypePolicyFactory._(JSObject _) implements JSObject { String property, [ String elementNs, ]); + + /// The **`emptyHTML`** read-only property of the [TrustedTypePolicyFactory] + /// interface returns a [TrustedHTML] object containing an empty string. + /// + /// This object can be used when the application requires an empty string to + /// be inserted into an injection sink. external TrustedHTML get emptyHTML; + + /// The **`emptyScript`** read-only property of the [TrustedTypePolicyFactory] + /// interface returns a [TrustedScript] object containing an empty string. + /// + /// This object can be used when the application requires an empty string to + /// be inserted into an injection sink which is expecting a `TrustedScript` + /// object. external TrustedScript get emptyScript; + + /// The **`defaultPolicy`** read-only property of the + /// [TrustedTypePolicyFactory] interface returns the default + /// [TrustedTypePolicy] or null if this is empty. + /// + /// > **Note:** Information about the creation and use of default policies can + /// > be found in the + /// > [`createPolicy()`](/en-US/docs/Web/API/TrustedTypePolicyFactory/createPolicy#default_policy) + /// > documentation. external TrustedTypePolicy? get defaultPolicy; } @@ -200,6 +222,9 @@ extension type TrustedTypePolicy._(JSObject _) implements JSObject { String input, JSAny? arguments, ); + + /// The **`name`** read-only property of the [TrustedTypePolicy] interface + /// returns the name of the policy. external String get name; } extension type TrustedTypePolicyOptions._(JSObject _) implements JSObject { @@ -209,10 +234,10 @@ extension type TrustedTypePolicyOptions._(JSObject _) implements JSObject { CreateScriptURLCallback createScriptURL, }); - external set createHTML(CreateHTMLCallback value); external CreateHTMLCallback get createHTML; - external set createScript(CreateScriptCallback value); + external set createHTML(CreateHTMLCallback value); external CreateScriptCallback get createScript; - external set createScriptURL(CreateScriptURLCallback value); + external set createScript(CreateScriptCallback value); external CreateScriptURLCallback get createScriptURL; + external set createScriptURL(CreateScriptURLCallback value); } diff --git a/lib/src/dom/uievents.dart b/lib/src/dom/uievents.dart index 906de255..33bebbdb 100644 --- a/lib/src/dom/uievents.dart +++ b/lib/src/dom/uievents.dart @@ -57,8 +57,28 @@ extension type UIEvent._(JSObject _) implements Event, JSObject { Window? viewArg, int detailArg, ]); + + /// The **`UIEvent.view`** read-only property returns the + /// object from which the event was generated. In browsers, this + /// is the [Window] object the event happened in. external Window? get view; + + /// The **`UIEvent.detail`** read-only property, when non-zero, provides the + /// current (or next, depending on the event) click count. + /// + /// For [Element.click_event] or [Element.dblclick_event] events, + /// `UIEvent.detail` is the current click count. + /// + /// For [Element.mousedown_event] or [Element.mouseup_event] events, + /// `UIEvent.detail` is _1 plus_ the current click count. + /// + /// For all other [UIEvent] objects, `UIEvent.detail` is always zero. external int get detail; + + /// The **`UIEvent.which`** read-only property of the [UIEvent] interface + /// returns a number that indicates which button was pressed on the mouse, or + /// the numeric `keyCode` or the character code (`charCode`) of the key + /// pressed on the keyboard. external int get which; } extension type UIEventInit._(JSObject _) implements EventInit, JSObject { @@ -71,12 +91,12 @@ extension type UIEventInit._(JSObject _) implements EventInit, JSObject { int which, }); - external set view(Window? value); external Window? get view; - external set detail(int value); + external set view(Window? value); external int get detail; - external set which(int value); + external set detail(int value); external int get which; + external set which(int value); } /// The **`FocusEvent`** interface represents focus-related events, including @@ -93,6 +113,50 @@ extension type FocusEvent._(JSObject _) implements UIEvent, JSObject { FocusEventInit eventInitDict, ]); + /// The **`FocusEvent.relatedTarget`** read-only property is the + /// secondary target, depending on the type of event: + /// + /// <table class="no-markdown"> + /// <thead> + /// <tr> + /// <th scope="col">Event name</th> + /// <th scope="col"><code>target</code></th> + /// <th scope="col"><code>relatedTarget</code></th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td>[Element.blur_event]</td> + /// <td>The [EventTarget] losing focus</td> + /// <td> + /// The [EventTarget] receiving focus (if any). + /// </td> + /// </tr> + /// <tr> + /// <td>[Element.focus_event]</td> + /// <td>The [EventTarget] receiving focus</td> + /// <td>The [EventTarget] losing focus (if any)</td> + /// </tr> + /// <tr> + /// <td>[Element.focusin_event]</td> + /// <td>The [EventTarget] receiving focus</td> + /// <td>The [EventTarget] losing focus (if any)</td> + /// </tr> + /// <tr> + /// <td>[Element.focusout_event]</td> + /// <td>The [EventTarget] losing focus</td> + /// <td>The [EventTarget] receiving focus (if any)</td> + /// </tr> + /// </tbody> + /// </table> + /// + /// Note that [many elements can't have + /// focus](https://stackoverflow.com/questions/42764494/blur-event-relatedtarget-returns-null/42764495), + /// which is a common reason for `relatedTarget` to be + /// `null`. `relatedTarget` may also be set to `null` for + /// security reasons, like when tabbing in or out of a page. + /// + /// [MouseEvent.relatedTarget] is a similar property for mouse events. external EventTarget? get relatedTarget; } extension type FocusEventInit._(JSObject _) implements UIEventInit, JSObject { @@ -106,8 +170,8 @@ extension type FocusEventInit._(JSObject _) implements UIEventInit, JSObject { EventTarget? relatedTarget, }); - external set relatedTarget(EventTarget? value); external EventTarget? get relatedTarget; + external set relatedTarget(EventTarget? value); } /// The **`MouseEvent`** interface represents events that occur due to the user @@ -173,24 +237,264 @@ extension type MouseEvent._(JSObject _) implements UIEvent, JSObject { int buttonArg, EventTarget? relatedTargetArg, ]); + + /// The **`pageX`** read-only property of the [MouseEvent] interface returns + /// the X (horizontal) coordinate (in pixels) at which the mouse was clicked, + /// relative to the left edge of the entire document. + /// This includes any portion of the document not currently visible. + /// + /// Being based on the edge of the document as it is, this property takes into + /// account any horizontal scrolling of the page. + /// For example, if the page is scrolled such that 200 pixels of the left side + /// of the document are scrolled out of view, and the mouse is clicked 100 + /// pixels inward from the left edge of the view, the value returned by + /// `pageX` will be 300. + /// + /// Originally, this property was defined as a `long` integer. The + /// [CSSOM View Module](https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_view) + /// redefined it as a + /// `double` float. See the [Browser compatibility](#browser_compatibility) + /// section for + /// details. + /// + /// See + /// [Coordinate systems](https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_view/Coordinate_systems#page) + /// for additional information about coordinates specified in this fashion. external num get pageX; + + /// The **`pageY`** read-only property of the [MouseEvent] interface returns + /// the Y (vertical) coordinate in pixels of the event relative to the whole + /// document. + /// This property takes into account any vertical scrolling of the page. external num get pageY; + + /// The **`MouseEvent.x`** property is an alias for the [MouseEvent.clientX] + /// property. external num get x; + + /// The **`MouseEvent.y`** property is an alias for the [MouseEvent.clientY] + /// property. external num get y; + + /// The **`offsetX`** read-only property of the [MouseEvent] interface + /// provides the offset in the X coordinate of the mouse pointer between that + /// event and the padding edge of the target node. external num get offsetX; + + /// The **`offsetY`** read-only property of the [MouseEvent] interface + /// provides the offset in the Y coordinate of the mouse pointer between that + /// event and the padding edge of the target node. external num get offsetY; + + /// The **`screenX`** read-only property of the [MouseEvent] interface + /// provides the horizontal coordinate (offset) of the mouse pointer in + /// [screen coordinates](https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_view/Coordinate_systems#screen). + /// + /// > **Note:** In a multiscreen environment, screens aligned horizontally + /// > will be treated as a single device, and so the range of the `screenX` + /// > value will increase to the combined width of the screens. external int get screenX; + + /// The **`screenY`** read-only property of the [MouseEvent] interface + /// provides the vertical coordinate (offset) of the mouse pointer in + /// [screen coordinates](https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_view/Coordinate_systems#screen). external int get screenY; + + /// The **`clientX`** read-only property of the [MouseEvent] interface + /// provides the horizontal coordinate within the application's at which the + /// event occurred (as opposed to the coordinate within the page). + /// + /// For example, clicking on the left edge of the viewport will always result + /// in a mouse event with a `clientX` value of `0`, regardless of whether the + /// page is scrolled horizontally. external int get clientX; + + /// The **`clientY`** read-only property of the [MouseEvent] interface + /// provides the vertical coordinate within the application's at which the + /// event occurred (as opposed to the coordinate within the page). + /// + /// For example, clicking on the top edge of the viewport will always result + /// in a mouse event with a `clientY` value of `0`, regardless of whether the + /// page is scrolled vertically. external int get clientY; + + /// The **`MouseEvent.layerX`** read-only property returns the + /// horizontal coordinate of the event relative to the current layer. + /// + /// This property takes scrolling of the page into account and returns a value + /// relative to + /// the whole of the document unless the event occurs inside a positioned + /// element, where the + /// returned value is relative to the top left of the positioned element. external int get layerX; + + /// The **`MouseEvent.layerY`** read-only property returns the + /// vertical coordinate of the event relative to the current layer. + /// + /// This property takes scrolling of the page into account, and returns a + /// value relative to + /// the whole of the document, unless the event occurs inside a positioned + /// element, where + /// the returned value is relative to the top left of the positioned element. external int get layerY; + + /// The **`MouseEvent.ctrlKey`** read-only property is a boolean value that + /// indicates whether the <kbd>ctrl</kbd> key was pressed or not when a given + /// mouse event occurs. + /// + /// On Macintosh keyboards, this key is labeled the <kbd>control</kbd> key. + /// Also, note that on a Mac, a click combined with the <kbd>control</kbd> key + /// is intercepted by the operating system and used to open a context menu, so + /// `ctrlKey` is not detectable on click events. external bool get ctrlKey; + + /// The **`MouseEvent.shiftKey`** read-only property is a boolean value that + /// indicates whether the <kbd>shift</kbd> key was pressed or not when a given + /// mouse event occurs. external bool get shiftKey; + + /// The **`MouseEvent.altKey`** read-only property is a boolean value that + /// indicates whether the <kbd>alt</kbd> key was pressed or not when a given + /// mouse event occurs. + /// + /// Be aware that the browser can't always detect the <kbd>alt</kbd> key on + /// some operating systems. + /// On some Linux variants, for example, a left mouse click combined with the + /// <kbd>alt</kbd> key is used to move or resize windows. + /// + /// > **Note:** On Macintosh keyboards, this key is also known as the + /// > <kbd>option</kbd> key. external bool get altKey; + + /// The **`MouseEvent.metaKey`** read-only property is a boolean value that + /// indicates whether the <kbd>meta</kbd> key was pressed or not when a given + /// mouse event occurs. + /// + /// Be aware that many operating systems bind special functionality to the + /// <kbd>meta</kbd> key, so this property may be `false` even when the key is + /// actually pressed. + /// On Windows, for example, this key may open the Start menu. + /// + /// > **Note:** On Macintosh keyboards, this key is the <kbd>command</kbd> key + /// > (<kbd>⌘</kbd>). + /// > On Windows keyboards, this key is the Windows key (<kbd>⊞</kbd>). external bool get metaKey; + + /// The **`MouseEvent.button`** read-only property indicates which button was + /// pressed on the mouse to trigger the event. + /// + /// This property only guarantees to indicate which buttons are pressed during + /// events caused by pressing or releasing one or multiple buttons. + /// As such, it is not reliable for events such as [Element.mouseenter_event], + /// [Element.mouseleave_event], [Element.mouseover_event], + /// [Element.mouseout_event], or [Element.mousemove_event]. + /// + /// Users may change the configuration of buttons on their pointing device so + /// that if an event's button property is zero, it may not have been caused by + /// the button that is physically left–most on the pointing device; however, + /// it should behave as if the left button was clicked in the standard button + /// layout. + /// + /// > **Note:** Do not confuse this property with the [MouseEvent.buttons] + /// > property, which indicates which buttons are pressed for all mouse events + /// > types. external int get button; + + /// The **`MouseEvent.buttons`** read-only property indicates which buttons + /// are pressed on the mouse (or other input device) when a mouse event is + /// triggered. + /// + /// Each button that can be pressed is represented by a given number (see + /// below). + /// If more than one button is pressed, the button values are added together + /// to produce a new number. + /// For example, if the secondary (`2`) and auxiliary (`4`) buttons are + /// pressed simultaneously, the value is `6` (i.e., `2 + 4`). + /// + /// > **Note:** Do not confuse this property with the [MouseEvent.button] + /// > property. + /// > The [MouseEvent.buttons] property indicates the state of buttons pressed + /// > during any kind of mouse event, + /// > while the [MouseEvent.button] property only guarantees the correct value + /// > for mouse events caused by pressing or releasing one or multiple + /// > buttons. external int get buttons; + + /// The **`MouseEvent.relatedTarget`** read-only property is the secondary + /// target for the mouse event, if there is one. + /// + /// That is: + /// + /// <table class="no-markdown"> + /// <thead> + /// <tr> + /// <th>Event name</th> + /// <th><code>target</code></th> + /// <th><code>relatedTarget</code></th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td>[Element.mouseenter_event]</td> + /// <td> + /// The [EventTarget] the pointing device entered to + /// </td> + /// <td> + /// The [EventTarget] the pointing device exited from + /// </td> + /// </tr> + /// <tr> + /// <td>[Element.mouseleave_event]</td> + /// <td> + /// The [EventTarget] the pointing device exited from + /// </td> + /// <td> + /// The [EventTarget] the pointing device entered to + /// </td> + /// </tr> + /// <tr> + /// <td>[Element.mouseout_event]</td> + /// <td> + /// The [EventTarget] the pointing device exited from + /// </td> + /// <td> + /// The [EventTarget] the pointing device entered to + /// </td> + /// </tr> + /// <tr> + /// <td>[Element.mouseover_event]</td> + /// <td> + /// The [EventTarget] the pointing device entered to + /// </td> + /// <td> + /// The [EventTarget] the pointing device exited from + /// </td> + /// </tr> + /// <tr> + /// <td>[HTMLElement.dragenter_event]</td> + /// <td> + /// The [EventTarget] the pointing device entered to + /// </td> + /// <td> + /// The [EventTarget] the pointing device exited from + /// </td> + /// </tr> + /// <tr> + /// <td>[HTMLElement.dragleave_event]</td> + /// <td> + /// The [EventTarget] the pointing device exited from + /// </td> + /// <td> + /// The [EventTarget] the pointing device entered to + /// </td> + /// </tr> + /// </tbody> + /// </table> + /// + /// For events with no secondary target, `relatedTarget` returns + /// `null`. + /// + /// [FocusEvent.relatedTarget] is a similar property for focus events. external EventTarget? get relatedTarget; } extension type MouseEventInit._(JSObject _) @@ -225,20 +529,20 @@ extension type MouseEventInit._(JSObject _) EventTarget? relatedTarget, }); - external set screenX(int value); external int get screenX; - external set screenY(int value); + external set screenX(int value); external int get screenY; - external set clientX(int value); + external set screenY(int value); external int get clientX; - external set clientY(int value); + external set clientX(int value); external int get clientY; - external set button(int value); + external set clientY(int value); external int get button; - external set buttons(int value); + external set button(int value); external int get buttons; - external set relatedTarget(EventTarget? value); + external set buttons(int value); external EventTarget? get relatedTarget; + external set relatedTarget(EventTarget? value); } extension type EventModifierInit._(JSObject _) implements UIEventInit, JSObject { @@ -265,34 +569,34 @@ extension type EventModifierInit._(JSObject _) bool modifierSymbolLock, }); - external set ctrlKey(bool value); external bool get ctrlKey; - external set shiftKey(bool value); + external set ctrlKey(bool value); external bool get shiftKey; - external set altKey(bool value); + external set shiftKey(bool value); external bool get altKey; - external set metaKey(bool value); + external set altKey(bool value); external bool get metaKey; - external set modifierAltGraph(bool value); + external set metaKey(bool value); external bool get modifierAltGraph; - external set modifierCapsLock(bool value); + external set modifierAltGraph(bool value); external bool get modifierCapsLock; - external set modifierFn(bool value); + external set modifierCapsLock(bool value); external bool get modifierFn; - external set modifierFnLock(bool value); + external set modifierFn(bool value); external bool get modifierFnLock; - external set modifierHyper(bool value); + external set modifierFnLock(bool value); external bool get modifierHyper; - external set modifierNumLock(bool value); + external set modifierHyper(bool value); external bool get modifierNumLock; - external set modifierScrollLock(bool value); + external set modifierNumLock(bool value); external bool get modifierScrollLock; - external set modifierSuper(bool value); + external set modifierScrollLock(bool value); external bool get modifierSuper; - external set modifierSymbol(bool value); + external set modifierSuper(bool value); external bool get modifierSymbol; - external set modifierSymbolLock(bool value); + external set modifierSymbol(bool value); external bool get modifierSymbolLock; + external set modifierSymbolLock(bool value); } /// The **`WheelEvent`** interface represents events that occur due to the user @@ -326,9 +630,31 @@ extension type WheelEvent._(JSObject _) implements MouseEvent, JSObject { external static int get DOM_DELTA_PIXEL; external static int get DOM_DELTA_LINE; external static int get DOM_DELTA_PAGE; + + /// The **`WheelEvent.deltaX`** read-only property is a + /// `double` representing the horizontal scroll amount in the + /// [WheelEvent.deltaMode] unit. external num get deltaX; + + /// The **`WheelEvent.deltaY`** read-only property is a + /// `double` representing the vertical scroll amount in the + /// [WheelEvent.deltaMode] unit. external num get deltaY; + + /// The **`WheelEvent.deltaZ`** read-only property is a + /// `double` representing the scroll amount along the z-axis, in the + /// [WheelEvent.deltaMode] unit. external num get deltaZ; + + /// The **`WheelEvent.deltaMode`** read-only property returns an + /// `unsigned long` representing the unit of the delta values scroll amount. + /// Permitted values are: + /// + /// | Constant | Value | Description | + /// | ----------------- | ------ | ----------------------------------------- | + /// | `DOM_DELTA_PIXEL` | `0x00` | The delta values are specified in pixels. | + /// | `DOM_DELTA_LINE` | `0x01` | The delta values are specified in lines. | + /// | `DOM_DELTA_PAGE` | `0x02` | The delta values are specified in pages. | external int get deltaMode; } extension type WheelEventInit._(JSObject _) @@ -367,14 +693,14 @@ extension type WheelEventInit._(JSObject _) int deltaMode, }); - external set deltaX(num value); external num get deltaX; - external set deltaY(num value); + external set deltaX(num value); external num get deltaY; - external set deltaZ(num value); + external set deltaY(num value); external num get deltaZ; - external set deltaMode(int value); + external set deltaZ(num value); external int get deltaMode; + external set deltaMode(int value); } /// The **`InputEvent`** interface represents an event notifying the user of @@ -390,8 +716,24 @@ extension type InputEvent._(JSObject _) implements UIEvent, JSObject { InputEventInit eventInitDict, ]); + /// The **`data`** read-only property of the + /// [InputEvent] interface returns a string with inserted + /// characters. This may be an empty string if the change doesn't insert text, + /// such as when + /// characters are deleted. external String? get data; + + /// The **`InputEvent.isComposing`** read-only property returns a + /// boolean value indicating if the event is fired after + /// [Element.compositionstart_event] and before + /// [Element.compositionend_event]. external bool get isComposing; + + /// The **`inputType`** read-only property of the + /// [InputEvent] interface returns the type of change made to editable + /// content. + /// Possible changes include for example inserting, deleting, and formatting + /// text. external String get inputType; } extension type InputEventInit._(JSObject _) implements UIEventInit, JSObject { @@ -407,12 +749,12 @@ extension type InputEventInit._(JSObject _) implements UIEventInit, JSObject { String inputType, }); - external set data(String? value); external String? get data; - external set isComposing(bool value); + external set data(String? value); external bool get isComposing; - external set inputType(String value); + external set isComposing(bool value); external String get inputType; + external set inputType(String value); } /// **`KeyboardEvent`** objects describe a user interaction with the keyboard; @@ -469,16 +811,219 @@ extension type KeyboardEvent._(JSObject _) implements UIEvent, JSObject { bool shiftKey, bool metaKey, ]); + + /// The [KeyboardEvent] interface's **`key`** read-only property returns the + /// value of the key pressed by the user, taking into consideration the state + /// of modifier keys such as <kbd>Shift</kbd> as well as the keyboard locale + /// and layout. external String get key; + + /// The `KeyboardEvent.code` property represents a physical key on the + /// keyboard (as opposed to the character generated by pressing the key). In + /// other words, this property returns a value that isn't altered by keyboard + /// layout or the state of the modifier keys. + /// + /// If the input device isn't a physical keyboard, but is instead a virtual + /// keyboard or accessibility device, the returned value will be set by the + /// browser to match as closely as possible to what would happen with a + /// physical keyboard, to maximize compatibility between physical and virtual + /// input devices. + /// + /// This property is useful when you want to handle keys based on their + /// physical positions on the input device rather than the characters + /// associated with those keys; this is especially common when writing code to + /// handle input for games that simulate a gamepad-like environment using keys + /// on the keyboard. Be aware, however, that you can't use the value reported + /// by `KeyboardEvent.code` to determine the character generated by the + /// keystroke, because the keycode's name may not match the actual character + /// that's printed on the key or that's generated by the computer when the key + /// is pressed. + /// + /// For example, the `code` returned is "`KeyQ`" for the <kbd>Q</kbd> key on a + /// QWERTY layout keyboard, but the same `code` value also represents the + /// <kbd>'</kbd> key on Dvorak keyboards and the <kbd>A</kbd> key on AZERTY + /// keyboards. That makes it impossible to use the value of `code` to + /// determine what the name of the key is to users if they're not using an + /// anticipated keyboard layout. + /// + /// To determine what character corresponds with the key event, use the + /// [KeyboardEvent.key] property instead. external String get code; + + /// The **`KeyboardEvent.location`** read-only property returns an + /// `unsigned long` representing the location of the key on the keyboard or + /// other + /// input device. + /// + /// Possible values are: + /// + /// <table class="standard-table"> + /// <thead> + /// <tr> + /// <th>Constant</th> + /// <th>Value</th> + /// <th>Description</th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td><code>DOM_KEY_LOCATION_STANDARD</code></td> + /// <td>0</td> + /// <td> + /// The key has only one version, or can't be distinguished between the left + /// and right versions of the key, and was not pressed on the numeric keypad + /// or a key that is considered to be part of the keypad. + /// </td> + /// </tr> + /// <tr> + /// <td><code>DOM_KEY_LOCATION_LEFT</code></td> + /// <td>1</td> + /// <td> + /// The key was the left-hand version of the key; for example, the left-hand + /// <kbd>Control</kbd> key was pressed on a standard 101 key US keyboard. + /// This value is only used for keys that have more than one possible + /// location on the keyboard. + /// </td> + /// </tr> + /// <tr> + /// <td><code>DOM_KEY_LOCATION_RIGHT</code></td> + /// <td>2</td> + /// <td> + /// The key was the right-hand version of the key; for example, the + /// right-hand <kbd>Control</kbd> key is pressed on a standard 101 key US + /// keyboard. This value is only used for keys that have more than one + /// possible location on the keyboard. + /// </td> + /// </tr> + /// <tr> + /// <td><code>DOM_KEY_LOCATION_NUMPAD</code></td> + /// <td>3</td> + /// <td> + /// <p> + /// The key was on the numeric keypad, or has a virtual key code that + /// corresponds to the numeric keypad. + /// </p> + /// <div class="note"> + /// <p> + /// <strong>Note:</strong> When <kbd>NumLock</kbd> is locked, Firefox + /// always returns <code>DOM_KEY_LOCATION_NUMPAD</code> for the keys on + /// the numeric pad. Otherwise, when <kbd>NumLock</kbd> is unlocked and + /// the keyboard actually has a numeric keypad, Firefox always returns + /// <code>DOM_KEY_LOCATION_NUMPAD</code> too. On the other hand, if the + /// keyboard doesn't have a keypad, such as on a notebook computer, some + /// keys become Numpad only when NumLock is locked. When such keys fires + /// key events, the location attribute value depends on the key. That + /// is, it must not be <code>DOM_KEY_LOCATION_NUMPAD</code>. + /// </p> + /// </div> + /// <div class="note"> + /// <p> + /// <strong>Note:</strong> <kbd>NumLock</kbd> key's key events indicate + /// <code>DOM_KEY_LOCATION_STANDARD</code> both on Firefox and Internet + /// Explorer. + /// </p> + /// </div> + /// </td> + /// </tr> + /// <tr> + /// <td> + /// <code>DOM_KEY_LOCATION_MOBILE</code> + /// </td> + /// <td>4</td> + /// <td> + /// <p> + /// The key was on a mobile device; this can be on either a physical + /// keypad or a virtual keyboard. + /// </p> + /// </td> + /// </tr> + /// <tr> + /// <td> + /// <code>DOM_KEY_LOCATION_JOYSTICK</code> + /// </td> + /// <td>5</td> + /// <td> + /// <p> + /// The key was a button on a game controller or a joystick on a mobile + /// device. + /// </p> + /// </td> + /// </tr> + /// </tbody> + /// </table> external int get location; + + /// The **`KeyboardEvent.ctrlKey`** read-only property returns a + /// boolean value that indicates if the <kbd>control</kbd> key was pressed + /// (`true`) or not (`false`) when the event occurred. external bool get ctrlKey; + + /// The **`KeyboardEvent.shiftKey`** read-only property is a + /// boolean value that indicates if the <kbd>shift</kbd> key was pressed + /// (`true`) or not (`false`) when the event occurred. external bool get shiftKey; + + /// The **`KeyboardEvent.altKey`** read-only property is a + /// boolean value that indicates if the <kbd>alt</kbd> key (<kbd>Option</kbd> + /// or <kbd>⌥</kbd> on macOS) was pressed (`true`) or not (`false`) when + /// the event occurred. external bool get altKey; + + /// The **`KeyboardEvent.metaKey`** read-only property returning a + /// boolean value that indicates if the <kbd>Meta</kbd> key was pressed + /// (`true`) or not (`false`) when the event occurred. Some operating + /// systems may intercept the key so it is never detected. + /// + /// > **Note:** On Macintosh keyboards, this is the <kbd>⌘ Command</kbd> key. + /// + /// > **Note:** Before Firefox 118, the <kbd>⊞ Windows</kbd> key was handled + /// > as an "OS" key rather than the "Meta" key. `KeyboardEvent.metaKey` was + /// > `false` when the <kbd>⊞ Windows</kbd> key was pressed. external bool get metaKey; + + /// The **`repeat`** read-only property of the + /// [KeyboardEvent] interface returns a boolean value that is + /// `true` if the given key is being held down such that it is automatically + /// repeating. external bool get repeat; + + /// The **`KeyboardEvent.isComposing`** read-only property returns + /// a boolean value indicating if the event is fired within a composition + /// session, i.e. after [Element.compositionstart_event] + /// and before [Element.compositionend_event]. external bool get isComposing; + + /// The **`charCode`** read-only property of the + /// [KeyboardEvent] interface returns the Unicode value of a character key + /// pressed during a [Element.keypress_event] event. + /// + /// > **Warning:** Do not use this property, as it is deprecated. Instead, get + /// > the + /// > Unicode value of the character using the [KeyboardEvent.key] + /// > property. external int get charCode; + + /// The deprecated **`KeyboardEvent.keyCode`** read-only property represents a + /// system and implementation dependent numerical code identifying the + /// unmodified value of the pressed key. + /// + /// This is usually the decimal ASCII (`20`) or Windows 1252 code + /// corresponding to the key. If the key can't be identified, this value is + /// `0`. + /// + /// You should avoid using this if possible; it's been deprecated for some + /// time. Instead, you should use [KeyboardEvent.code], if it's implemented. + /// Unfortunately, some browsers still don't have it, so you'll have to be + /// careful to make sure you use one which is supported on all target + /// browsers. + /// + /// > **Note:** Web developers shouldn't use the `keyCode` attribute for + /// > printable characters when handling `keydown` and `keyup` events. As + /// > described above, the `keyCode` attribute is not useful for printable + /// > characters, especially those input with the <kbd>Shift</kbd> or + /// > <kbd>Alt</kbd> key pressed. When implementing a shortcut key handler, + /// > the [Element.keypress_event] event is usually better (at least when + /// > Gecko is the runtime in use). external int get keyCode; } extension type KeyboardEventInit._(JSObject _) @@ -513,20 +1058,20 @@ extension type KeyboardEventInit._(JSObject _) int keyCode, }); - external set key(String value); external String get key; - external set code(String value); + external set key(String value); external String get code; - external set location(int value); + external set code(String value); external int get location; - external set repeat(bool value); + external set location(int value); external bool get repeat; - external set isComposing(bool value); + external set repeat(bool value); external bool get isComposing; - external set charCode(int value); + external set isComposing(bool value); external int get charCode; - external set keyCode(int value); + external set charCode(int value); external int get keyCode; + external set keyCode(int value); } /// The DOM **`CompositionEvent`** represents events that occur due to the user @@ -555,6 +1100,12 @@ extension type CompositionEvent._(JSObject _) implements UIEvent, JSObject { Window? viewArg, String dataArg, ]); + + /// The **`data`** read-only property of the + /// [CompositionEvent] interface returns the characters generated by the input + /// method that raised the event; its exact nature varies depending on the + /// type of event + /// that generated the `CompositionEvent` object. external String get data; } extension type CompositionEventInit._(JSObject _) @@ -569,8 +1120,8 @@ extension type CompositionEventInit._(JSObject _) String data, }); - external set data(String value); external String get data; + external set data(String value); } /// The **`MutationEvent`** interface provides event properties that are @@ -623,9 +1174,36 @@ extension type MutationEvent._(JSObject _) implements Event, JSObject { String attrNameArg, int attrChangeArg, ]); + + /// The **`relatedNode`** read-only property of the [MutationEvent] interface + /// returns a string indicating the node related to the event, like the + /// changed node inside the subtree for `DOMSubtreeModified`. external Node? get relatedNode; + + /// The **`prevValue`** read-only property of the [MutationEvent] interface + /// returns a string. In `DOMAttrModified` events, it represents the previous + /// value of the [Attr] node. In `DOMCharacterDataModified` events, it + /// contains the previous value of the [CharacterData] node. In all other + /// cases, returns the empty string (`""`). external String get prevValue; + + /// The **`newValue`** read-only property of the [MutationEvent] interface + /// returns a string. In `DOMAttrModified` events, it represents the new value + /// of the [Attr] node. In `DOMCharacterDataModified` events, it contains the + /// new value of the [CharacterData] node. In all other cases, returns the + /// empty string (`""`). external String get newValue; + + /// The **`attrName`** read-only property of the [MutationEvent] interface + /// returns a string with the name of the node affected by the + /// `DOMAttrModified` event. It has no meaning for other events and is then + /// set to the empty string (`""`). external String get attrName; + + /// The **`attrChange`** read-only property of the [MutationEvent] interface + /// returns a number indicating what kind of change triggered the + /// `DOMAttrModified` event. The three possible values are `MODIFICATION` + /// (`1`), `ADDITION` (`2`) or `REMOVAL` (`3`). It has no meaning for other + /// events and is then set to `0`. external int get attrChange; } diff --git a/lib/src/dom/url.dart b/lib/src/dom/url.dart index f05341b7..4e0ca290 100644 --- a/lib/src/dom/url.dart +++ b/lib/src/dom/url.dart @@ -48,28 +48,132 @@ extension type URL._(JSObject _) implements JSObject { /// although in practice it seems to have the same effect as /// [URL.toString]. external String toJSON(); - external set href(String value); + + /// The **`href`** property of the [URL] interface is + /// a string containing the whole URL. external String get href; + external set href(String value); + + /// The **`origin`** read-only property of + /// the [URL] interface returns a string containing the + /// Unicode serialization of the origin of the represented URL. + /// + /// The exact structure + /// varies depending on the type of URL: + /// + /// - For `http` or `https` URLs, the scheme followed by + /// `'://'`, followed by the domain, followed by `':'`, followed by + /// the port (if explicitly specified, unless it is the default port - `80` + /// and `443` respectively). + /// - For `file:` URLs, the value is browser dependent. + /// - for `blob:` URLs, the origin of the URL following `blob:` will + /// be used. For example, `"blob:https://mozilla.org"` will be returned as + /// `"https://mozilla.org".` external String get origin; - external set protocol(String value); + + /// The **`protocol`** property of the [URL] interface + /// is a string representing the protocol scheme of the URL, including the + /// final `':'`. external String get protocol; - external set username(String value); + external set protocol(String value); + + /// The **`username`** property of the [URL] interface + /// is a string containing the username specified before the domain name. external String get username; - external set password(String value); + external set username(String value); + + /// The **`password`** property of the [URL] interface + /// is a string containing the password specified before the domain name. + /// + /// If it is set without first setting the [URL.username] + /// property, it silently fails. external String get password; - external set host(String value); + external set password(String value); + + /// The **`host`** property of the [URL] interface is + /// a string containing the host, that is the [URL.hostname], and then, if the + /// of the URL is nonempty, a + /// `':'`, followed by the [URL.port] of the URL. external String get host; - external set hostname(String value); + external set host(String value); + + /// The **`hostname`** property of the [URL] interface + /// is a string containing the of the URL. external String get hostname; - external set port(String value); + external set hostname(String value); + + /// The **`port`** property of the [URL] interface is + /// a string containing the port number of the URL. + /// + /// > **Note:** If an input string passed to the + /// > [`URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) + /// > constructor doesn't contain an explicit port number (e.g., + /// > `https://localhost`) or contains a port number that's the default port + /// > number corresponding to the protocol part of the input string (e.g., + /// > `https://localhost:443`), then in the + /// > [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL) object the + /// > constructor returns, the value of the port property will be the empty + /// > string: `''`. external String get port; - external set pathname(String value); + external set port(String value); + + /// The **`pathname`** property of the [URL] interface represents a location + /// in a hierarchical structure. It is a string constructed from a list of + /// path segments, each of which is prefixed by a `/` character. If the URL + /// has no path segments, the value of its `pathname` property will be the + /// empty string. + /// + /// URLs such as `https` and `http` URLs that have + /// [hierarchical schemes](https://www.rfc-editor.org/rfc/rfc3986#section-1.2.3) + /// (which the URL standard calls + /// "[special schemes](https://url.spec.whatwg.org/#special-scheme)") always + /// have at least one (invisible) path segment: the empty string. Thus the + /// `pathname` value for such "special scheme" URLs can never be the empty + /// string, but will instead always have a least one `/` character. + /// + /// For example, the URL `https://developer.mozilla.org` has just one path + /// segment: the empty string, so its `pathname` value is constructed by + /// prefixing a `/` character to the empty string. + /// + /// Some systems define the term _slug_ to mean the final segment of a + /// non-empty path if it identifies a page in human-readable keywords. For + /// example, the URL + /// `https://example.org/articles/this-that-other-outre-collection` has + /// `this-that-other-outre-collection` as its slug. + /// + /// Some systems use the `;` and `=` characters to delimit parameters and + /// parameter values applicable to a path segment. For example, with the URL + /// `https://example.org/users;id=42/tasks;state=open?sort=modified`, a system + /// might extract and use the path segment parameters `id=42` and `state=open` + /// from the path segments `users;id=42` and `tasks;state=open`. external String get pathname; - external set search(String value); + external set pathname(String value); + + /// The **`search`** property of the [URL] interface + /// is a search string, also called a _query string_, that is a + /// string containing a `'?'` followed by the parameters of the + /// URL. + /// + /// Modern browsers provide the [URL.searchParams] property to make it easy to + /// parse out the parameters from the query string. external String get search; + external set search(String value); + + /// The **`searchParams`** read-only property of the + /// [URL] interface returns a [URLSearchParams] object allowing + /// access to the `GET` decoded query arguments contained in the URL. external URLSearchParams get searchParams; - external set hash(String value); + + /// The **`hash`** property of the + /// [URL] interface is a string containing a + /// `'#'` followed by the fragment identifier of the URL. + /// + /// The fragment is not + /// [URL decoded](https://en.wikipedia.org/wiki/URL_encoding). If the URL does + /// not + /// have a fragment identifier, this property contains an empty string — `""`. external String get hash; + external set hash(String value); } /// The **`URLSearchParams`** interface defines utility methods to work with the @@ -163,5 +267,8 @@ extension type URLSearchParams._(JSObject _) implements JSObject { /// will be /// preserved). external void sort(); + + /// The **`size`** read-only property of the [URLSearchParams] interface + /// indicates the total number of search parameter entries. external int get size; } diff --git a/lib/src/dom/user_timing.dart b/lib/src/dom/user_timing.dart index b2630193..15bdf7ab 100644 --- a/lib/src/dom/user_timing.dart +++ b/lib/src/dom/user_timing.dart @@ -22,10 +22,10 @@ extension type PerformanceMarkOptions._(JSObject _) implements JSObject { DOMHighResTimeStamp startTime, }); - external set detail(JSAny? value); external JSAny? get detail; - external set startTime(DOMHighResTimeStamp value); + external set detail(JSAny? value); external DOMHighResTimeStamp get startTime; + external set startTime(DOMHighResTimeStamp value); } extension type PerformanceMeasureOptions._(JSObject _) implements JSObject { external factory PerformanceMeasureOptions({ @@ -35,14 +35,14 @@ extension type PerformanceMeasureOptions._(JSObject _) implements JSObject { JSAny end, }); - external set detail(JSAny? value); external JSAny? get detail; - external set start(JSAny value); + external set detail(JSAny? value); external JSAny get start; - external set duration(DOMHighResTimeStamp value); + external set start(JSAny value); external DOMHighResTimeStamp get duration; - external set end(JSAny value); + external set duration(DOMHighResTimeStamp value); external JSAny get end; + external set end(JSAny value); } /// **`PerformanceMark`** is an interface for [PerformanceEntry] objects with an @@ -64,6 +64,9 @@ extension type PerformanceMark._(JSObject _) PerformanceMarkOptions markOptions, ]); + /// The read-only **`detail`** property returns arbitrary metadata that was + /// included in the mark upon construction (either when using + /// [Performance.mark] or the [PerformanceMark.PerformanceMark] constructor). external JSAny? get detail; } @@ -79,5 +82,7 @@ extension type PerformanceMark._(JSObject _) /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMeasure). extension type PerformanceMeasure._(JSObject _) implements PerformanceEntry, JSObject { + /// The read-only **`detail`** property returns arbitrary metadata that was + /// included in the mark upon construction (when using [Performance.measure]. external JSAny? get detail; } diff --git a/lib/src/dom/web_animations.dart b/lib/src/dom/web_animations.dart index 206a692d..79de859a 100644 --- a/lib/src/dom/web_animations.dart +++ b/lib/src/dom/web_animations.dart @@ -41,14 +41,19 @@ typedef CompositeOperationOrAuto = String; /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AnimationTimeline). extension type AnimationTimeline._(JSObject _) implements JSObject { external Animation play([AnimationEffect? effect]); + + /// The **`currentTime`** read-only property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API)'s + /// [AnimationTimeline] interface returns the timeline's current time in + /// milliseconds, or `null` if the timeline is inactive. external CSSNumberish? get currentTime; external CSSNumberish? get duration; } extension type DocumentTimelineOptions._(JSObject _) implements JSObject { external factory DocumentTimelineOptions({DOMHighResTimeStamp originTime}); - external set originTime(DOMHighResTimeStamp value); external DOMHighResTimeStamp get originTime; + external set originTime(DOMHighResTimeStamp value); } /// The **`DocumentTimeline`** interface of the @@ -173,29 +178,107 @@ extension type Animation._(JSObject _) implements EventTarget, JSObject { /// [`style`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#style) /// attribute, where they can be modified and replaced as normal. external void commitStyles(); - external set startTime(CSSNumberish? value); + + /// The **`Animation.startTime`** property of the [Animation] interface is a + /// double-precision floating-point value which indicates the scheduled time + /// when an animation's playback should begin. + /// + /// An animation's **start time** is the time value of its [DocumentTimeline] + /// when its target [KeyframeEffect] is scheduled to begin playback. An + /// animation's **start time** is initially unresolved (meaning that it's + /// `null` because it has no value). external CSSNumberish? get startTime; - external set currentTime(CSSNumberish? value); + external set startTime(CSSNumberish? value); + + /// The **`Animation.currentTime`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// returns and sets the current time value of the animation in milliseconds, + /// whether running or paused. + /// + /// If the animation lacks a [AnimationTimeline], is inactive, or hasn't been + /// played yet, `currentTime`'s return value is `null`. external CSSNumberish? get currentTime; - external set id(String value); + external set currentTime(CSSNumberish? value); + + /// The **`Animation.id`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// returns or sets a string used to identify the animation. external String get id; - external set effect(AnimationEffect? value); + external set id(String value); + + /// The **`Animation.effect`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// gets and sets the target effect of an animation. The target effect may be + /// either an effect object of a type based on [AnimationEffect], such as + /// [KeyframeEffect], or `null`. external AnimationEffect? get effect; - external set timeline(AnimationTimeline? value); + external set effect(AnimationEffect? value); + + /// The **`Animation.timeline`** property of the [Animation] interface returns + /// or sets the [AnimationTimeline] associated with this animation. A timeline + /// is a source of time values for synchronization purposes, and is an + /// [AnimationTimeline]-based object. By default, the animation's timeline and + /// the [Document]'s timeline are the same. external AnimationTimeline? get timeline; - external set playbackRate(num value); + external set timeline(AnimationTimeline? value); + + /// The **`Animation.playbackRate`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// returns or sets the playback rate of the animation. + /// + /// Animations have a **playback rate** that provides a scaling factor from + /// the rate of change of the animation's [DocumentTimeline] time values to + /// the animation's current time. The playback rate is initially `1`. external num get playbackRate; + external set playbackRate(num value); + + /// The read-only **`Animation.playState`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// returns an enumerated value describing the playback state of an animation. external AnimationPlayState get playState; + + /// The read-only **`Animation.replaceState`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// indicates whether the animation has been + /// [removed by the browser automatically](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Using_the_Web_Animations_API#automatically_removing_filling_animations) + /// after being replaced by another animation. external AnimationReplaceState get replaceState; + + /// The read-only **`Animation.pending`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// indicates whether the animation is currently waiting for an asynchronous + /// operation such as initiating playback or pausing a running animation. external bool get pending; + + /// The read-only **`Animation.ready`** property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// returns a `Promise` which resolves when the animation is ready to play. A + /// new promise is created every time the animation enters the `"pending"` + /// [play state](https://developer.mozilla.org/en-US/docs/Web/API/Animation/playState) + /// as well as when the animation is canceled, since in both of those + /// scenarios, the animation is ready to be started again. + /// + /// > **Note:** Since the same `Promise` is used for both pending `play` and + /// > pending `pause` requests, authors are advised to check the state of the + /// > animation when the promise is resolved. external JSPromise<Animation> get ready; + + /// The **`Animation.finished`** read-only property of the + /// [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API) + /// returns a `Promise` which resolves once the animation has finished + /// playing. + /// + /// > **Note:** Every time the animation leaves the `finished` play state + /// > (that is, when it starts playing again), a new `Promise` is created for + /// > this property. The new `Promise` will resolve once the new animation + /// > sequence has completed. external JSPromise<Animation> get finished; - external set onfinish(EventHandler value); external EventHandler get onfinish; - external set oncancel(EventHandler value); + external set onfinish(EventHandler value); external EventHandler get oncancel; - external set onremove(EventHandler value); + external set oncancel(EventHandler value); external EventHandler get onremove; + external set onremove(EventHandler value); } /// The `AnimationEffect` interface of the @@ -261,24 +344,24 @@ extension type EffectTiming._(JSObject _) implements JSObject { String easing, }); - external set delay(num value); external num get delay; - external set endDelay(num value); + external set delay(num value); external num get endDelay; - external set playbackRate(num value); + external set endDelay(num value); external num get playbackRate; - external set duration(JSAny value); + external set playbackRate(num value); external JSAny get duration; - external set fill(FillMode value); + external set duration(JSAny value); external FillMode get fill; - external set iterationStart(num value); + external set fill(FillMode value); external num get iterationStart; - external set iterations(num value); + external set iterationStart(num value); external num get iterations; - external set direction(PlaybackDirection value); + external set iterations(num value); external PlaybackDirection get direction; - external set easing(String value); + external set direction(PlaybackDirection value); external String get easing; + external set easing(String value); } extension type OptionalEffectTiming._(JSObject _) implements JSObject { external factory OptionalEffectTiming({ @@ -293,24 +376,24 @@ extension type OptionalEffectTiming._(JSObject _) implements JSObject { String easing, }); - external set playbackRate(num value); external num get playbackRate; - external set delay(num value); + external set playbackRate(num value); external num get delay; - external set endDelay(num value); + external set delay(num value); external num get endDelay; - external set fill(FillMode value); + external set endDelay(num value); external FillMode get fill; - external set iterationStart(num value); + external set fill(FillMode value); external num get iterationStart; - external set iterations(num value); + external set iterationStart(num value); external num get iterations; - external set duration(JSAny value); + external set iterations(num value); external JSAny get duration; - external set direction(PlaybackDirection value); + external set duration(JSAny value); external PlaybackDirection get direction; - external set easing(String value); + external set direction(PlaybackDirection value); external String get easing; + external set easing(String value); } extension type ComputedEffectTiming._(JSObject _) implements EffectTiming, JSObject { @@ -332,18 +415,18 @@ extension type ComputedEffectTiming._(JSObject _) num? currentIteration, }); - external set startTime(CSSNumberish value); external CSSNumberish get startTime; - external set endTime(CSSNumberish value); + external set startTime(CSSNumberish value); external CSSNumberish get endTime; - external set activeDuration(CSSNumberish value); + external set endTime(CSSNumberish value); external CSSNumberish get activeDuration; - external set localTime(CSSNumberish? value); + external set activeDuration(CSSNumberish value); external CSSNumberish? get localTime; - external set progress(num? value); + external set localTime(CSSNumberish? value); external num? get progress; - external set currentIteration(num? value); + external set progress(num? value); external num? get currentIteration; + external set currentIteration(num? value); } /// The **`KeyframeEffect`** interface of the @@ -373,14 +456,36 @@ extension type KeyframeEffect._(JSObject _) /// the keyframes that make up the affected `KeyframeEffect` with a new set of /// keyframes. external void setKeyframes(JSObject? keyframes); - external set iterationComposite(IterationCompositeOperation value); + + /// The **`iterationComposite`** property of a [KeyframeEffect] resolves how + /// the animation's property value changes accumulate or override each other + /// upon each of the animation's iterations. external IterationCompositeOperation get iterationComposite; - external set target(Element? value); + external set iterationComposite(IterationCompositeOperation value); + + /// The **`target`** property of a [KeyframeEffect] interface represents the + /// element or pseudo-element being animated. It may be `null` for animations + /// that do not target a specific element. It performs as both a getter and a + /// setter, except with animations and transitions generated by CSS. external Element? get target; - external set pseudoElement(String? value); + external set target(Element? value); + + /// The **`pseudoElement`** property of a [KeyframeEffect] interface is a + /// string representing the pseudo-element being animated. It may be `null` + /// for animations that do not target a pseudo-element. It performs as both a + /// getter and a setter, except with animations and transitions generated by + /// CSS. + /// + /// > **Note:** If set to the legacy single-colon syntax of , , , or , the + /// > string is transformed into its double-colon modern version (, , , and , + /// > respectively). external String? get pseudoElement; - external set composite(CompositeOperation value); + external set pseudoElement(String? value); + + /// The **`composite`** property of a [KeyframeEffect] resolves how an + /// element's animation impacts its underlying property values. external CompositeOperation get composite; + external set composite(CompositeOperation value); } extension type BaseComputedKeyframe._(JSObject _) implements JSObject { external factory BaseComputedKeyframe({ @@ -390,14 +495,14 @@ extension type BaseComputedKeyframe._(JSObject _) implements JSObject { CompositeOperationOrAuto composite, }); - external set offset(num? value); external num? get offset; - external set computedOffset(num value); + external set offset(num? value); external num get computedOffset; - external set easing(String value); + external set computedOffset(num value); external String get easing; - external set composite(CompositeOperationOrAuto value); + external set easing(String value); external CompositeOperationOrAuto get composite; + external set composite(CompositeOperationOrAuto value); } extension type BasePropertyIndexedKeyframe._(JSObject _) implements JSObject { external factory BasePropertyIndexedKeyframe({ @@ -406,12 +511,12 @@ extension type BasePropertyIndexedKeyframe._(JSObject _) implements JSObject { JSAny composite, }); - external set offset(JSAny? value); external JSAny? get offset; - external set easing(JSAny value); + external set offset(JSAny? value); external JSAny get easing; - external set composite(JSAny value); + external set easing(JSAny value); external JSAny get composite; + external set composite(JSAny value); } extension type BaseKeyframe._(JSObject _) implements JSObject { external factory BaseKeyframe({ @@ -420,12 +525,12 @@ extension type BaseKeyframe._(JSObject _) implements JSObject { CompositeOperationOrAuto composite, }); - external set offset(num? value); external num? get offset; - external set easing(String value); + external set offset(num? value); external String get easing; - external set composite(CompositeOperationOrAuto value); + external set easing(String value); external CompositeOperationOrAuto get composite; + external set composite(CompositeOperationOrAuto value); } extension type KeyframeEffectOptions._(JSObject _) implements EffectTiming, JSObject { @@ -444,12 +549,12 @@ extension type KeyframeEffectOptions._(JSObject _) String? pseudoElement, }); - external set iterationComposite(IterationCompositeOperation value); external IterationCompositeOperation get iterationComposite; - external set composite(CompositeOperation value); + external set iterationComposite(IterationCompositeOperation value); external CompositeOperation get composite; - external set pseudoElement(String? value); + external set composite(CompositeOperation value); external String? get pseudoElement; + external set pseudoElement(String? value); } extension type KeyframeAnimationOptions._(JSObject _) implements KeyframeEffectOptions, JSObject { @@ -472,18 +577,18 @@ extension type KeyframeAnimationOptions._(JSObject _) AnimationTimeline? timeline, }); - external set rangeStart(JSAny value); external JSAny get rangeStart; - external set rangeEnd(JSAny value); + external set rangeStart(JSAny value); external JSAny get rangeEnd; - external set id(String value); + external set rangeEnd(JSAny value); external String get id; - external set timeline(AnimationTimeline? value); + external set id(String value); external AnimationTimeline? get timeline; + external set timeline(AnimationTimeline? value); } extension type GetAnimationsOptions._(JSObject _) implements JSObject { external factory GetAnimationsOptions({bool subtree}); - external set subtree(bool value); external bool get subtree; + external set subtree(bool value); } diff --git a/lib/src/dom/web_animations_2.dart b/lib/src/dom/web_animations_2.dart index 541b14af..317ab355 100644 --- a/lib/src/dom/web_animations_2.dart +++ b/lib/src/dom/web_animations_2.dart @@ -50,10 +50,10 @@ extension type TimelineRangeOffset._(JSObject _) implements JSObject { CSSNumericValue offset, }); - external set rangeName(String? value); external String? get rangeName; - external set offset(CSSNumericValue value); + external set rangeName(String? value); external CSSNumericValue get offset; + external set offset(CSSNumericValue value); } /// The AnimationPlaybackEvent interface of the @@ -73,7 +73,17 @@ extension type AnimationPlaybackEvent._(JSObject _) implements Event, JSObject { AnimationPlaybackEventInit eventInitDict, ]); + /// The **`currentTime`** read-only property of the [AnimationPlaybackEvent] + /// interface represents the current time of the animation that generated the + /// event at the moment the event is queued. This will be unresolved if the + /// animation was `idle` at the time the event was generated. external CSSNumberish? get currentTime; + + /// The **`timelineTime`** read-only property of the [AnimationPlaybackEvent] + /// interface represents the time value of the animation's [AnimationTimeline] + /// at the moment the event is queued. This will be unresolved if the + /// animation was not associated with a timeline at the time the event was + /// generated or if the associated timeline was inactive. external CSSNumberish? get timelineTime; } extension type AnimationPlaybackEventInit._(JSObject _) @@ -86,8 +96,8 @@ extension type AnimationPlaybackEventInit._(JSObject _) CSSNumberish? timelineTime, }); - external set currentTime(CSSNumberish? value); external CSSNumberish? get currentTime; - external set timelineTime(CSSNumberish? value); + external set currentTime(CSSNumberish? value); external CSSNumberish? get timelineTime; + external set timelineTime(CSSNumberish? value); } diff --git a/lib/src/dom/web_locks.dart b/lib/src/dom/web_locks.dart index 432fd1cb..6da61e78 100644 --- a/lib/src/dom/web_locks.dart +++ b/lib/src/dom/web_locks.dart @@ -79,14 +79,14 @@ extension type LockOptions._(JSObject _) implements JSObject { AbortSignal signal, }); - external set mode(LockMode value); external LockMode get mode; - external set ifAvailable(bool value); + external set mode(LockMode value); external bool get ifAvailable; - external set steal(bool value); + external set ifAvailable(bool value); external bool get steal; - external set signal(AbortSignal value); + external set steal(bool value); external AbortSignal get signal; + external set signal(AbortSignal value); } extension type LockManagerSnapshot._(JSObject _) implements JSObject { external factory LockManagerSnapshot({ @@ -94,10 +94,10 @@ extension type LockManagerSnapshot._(JSObject _) implements JSObject { JSArray<LockInfo> pending, }); - external set held(JSArray<LockInfo> value); external JSArray<LockInfo> get held; - external set pending(JSArray<LockInfo> value); + external set held(JSArray<LockInfo> value); external JSArray<LockInfo> get pending; + external set pending(JSArray<LockInfo> value); } extension type LockInfo._(JSObject _) implements JSObject { external factory LockInfo({ @@ -106,12 +106,12 @@ extension type LockInfo._(JSObject _) implements JSObject { String clientId, }); - external set name(String value); external String get name; - external set mode(LockMode value); + external set name(String value); external LockMode get mode; - external set clientId(String value); + external set mode(LockMode value); external String get clientId; + external set clientId(String value); } /// The **`Lock`** interface of the @@ -126,6 +126,23 @@ extension type LockInfo._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Lock). extension type Lock._(JSObject _) implements JSObject { + /// The **`name`** read-only property of + /// the [Lock] interface returns the _name_ passed to + /// [LockManager.request] selected when the lock was requested. + /// + /// The name of a lock is passed by script when the lock is requested. The + /// name is selected + /// by the developer to represent an abstract resource for which use is being + /// coordinated + /// across multiple tabs, workers, or other code within the origin. For + /// example, if only one + /// tab of a web application should be synchronizing network resources with an + /// offline + /// database, it could use a lock name such as `"net_db_sync"`. external String get name; + + /// The **`mode`** read-only property of the [Lock] interface returns the + /// access mode passed to [LockManager.request] when the lock was requested. + /// The mode is either `"exclusive"` (the default) or `"shared"`. external LockMode get mode; } diff --git a/lib/src/dom/webaudio.dart b/lib/src/dom/webaudio.dart index 0caeb2df..93e1496b 100644 --- a/lib/src/dom/webaudio.dart +++ b/lib/src/dom/webaudio.dart @@ -295,15 +295,45 @@ extension type BaseAudioContext._(JSObject _) implements EventTarget, JSObject { DecodeSuccessCallback? successCallback, DecodeErrorCallback? errorCallback, ]); + + /// The `destination` property of the [BaseAudioContext] + /// interface returns an [AudioDestinationNode] representing the final + /// destination of all audio in the context. It often represents an actual + /// audio-rendering + /// device such as your device's speakers. external AudioDestinationNode get destination; + + /// The `sampleRate` property of the [BaseAudioContext] interface returns a + /// floating point number representing the sample rate, in samples per second, + /// used by all nodes in this audio context. + /// This limitation means that sample-rate converters are not supported. external num get sampleRate; + + /// The `currentTime` read-only property of the [BaseAudioContext] + /// interface returns a double representing an ever-increasing hardware + /// timestamp in seconds that + /// can be used for scheduling audio playback, visualizing timelines, etc. It + /// starts at 0. external num get currentTime; + + /// The `listener` property of the [BaseAudioContext] interface + /// returns an [AudioListener] object that can then be used for + /// implementing 3D audio spatialization. external AudioListener get listener; + + /// The `state` read-only property of the [BaseAudioContext] + /// interface returns the current state of the `AudioContext`. external AudioContextState get state; external int get renderQuantumSize; + + /// The `audioWorklet` read-only property of the + /// [BaseAudioContext] interface returns an instance of + /// [AudioWorklet] that can be used for adding + /// [AudioWorkletProcessor]-derived classes which implement custom audio + /// processing. external AudioWorklet get audioWorklet; - external set onstatechange(EventHandler value); external EventHandler get onstatechange; + external set onstatechange(EventHandler value); } /// The `AudioContext` interface represents an audio-processing graph built from @@ -439,12 +469,40 @@ extension type AudioContext._(JSObject _) /// For more details about media stream destination nodes, check out the /// [MediaStreamAudioDestinationNode] reference page. external MediaStreamAudioDestinationNode createMediaStreamDestination(); + + /// The **`baseLatency`** read-only property of the + /// [AudioContext] interface returns a double that represents the number of + /// seconds of processing latency incurred by the `AudioContext` passing an + /// audio + /// buffer from the [AudioDestinationNode] — i.e. the end of the audio graph — + /// into the host system's audio subsystem ready for playing. + /// + /// > **Note:** You can request a certain latency during + /// > [AudioContext.AudioContext] with the + /// > `latencyHint` option, but the browser may ignore the option. external num get baseLatency; + + /// The **`outputLatency`** read-only property of + /// the [AudioContext] Interface provides an estimation of the output latency + /// of the current audio context. + /// + /// This is the time, in seconds, between the browser passing an audio buffer + /// out of an + /// audio graph over to the host system's audio subsystem to play, and the + /// time at which the + /// first sample in the buffer is actually processed by the audio output + /// device. + /// + /// It varies depending on the platform and the available hardware. external num get outputLatency; + + /// The **`sinkId`** read-only property of the + /// [AudioContext] interface returns the sink ID of the current output audio + /// device. external JSAny get sinkId; external AudioRenderCapacity get renderCapacity; - external set onsinkchange(EventHandler value); external EventHandler get onsinkchange; + external set onsinkchange(EventHandler value); } extension type AudioContextOptions._(JSObject _) implements JSObject { external factory AudioContextOptions({ @@ -454,20 +512,20 @@ extension type AudioContextOptions._(JSObject _) implements JSObject { JSAny renderSizeHint, }); - external set latencyHint(JSAny value); external JSAny get latencyHint; - external set sampleRate(num value); + external set latencyHint(JSAny value); external num get sampleRate; - external set sinkId(JSAny value); + external set sampleRate(num value); external JSAny get sinkId; - external set renderSizeHint(JSAny value); + external set sinkId(JSAny value); external JSAny get renderSizeHint; + external set renderSizeHint(JSAny value); } extension type AudioSinkOptions._(JSObject _) implements JSObject { external factory AudioSinkOptions({required AudioSinkType type}); - external set type(AudioSinkType value); external AudioSinkType get type; + external set type(AudioSinkType value); } /// The **`AudioSinkInfo`** interface of the [Web Audio API] represents @@ -479,6 +537,8 @@ extension type AudioSinkOptions._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AudioSinkInfo). extension type AudioSinkInfo._(JSObject _) implements JSObject { + /// The **`type`** read-only property of the [AudioSinkInfo] interface returns + /// the type of the audio output device. external AudioSinkType get type; } extension type AudioTimestamp._(JSObject _) implements JSObject { @@ -487,23 +547,23 @@ extension type AudioTimestamp._(JSObject _) implements JSObject { DOMHighResTimeStamp performanceTime, }); - external set contextTime(num value); external num get contextTime; - external set performanceTime(DOMHighResTimeStamp value); + external set contextTime(num value); external DOMHighResTimeStamp get performanceTime; + external set performanceTime(DOMHighResTimeStamp value); } extension type AudioRenderCapacity._(JSObject _) implements EventTarget, JSObject { external void start([AudioRenderCapacityOptions options]); external void stop(); - external set onupdate(EventHandler value); external EventHandler get onupdate; + external set onupdate(EventHandler value); } extension type AudioRenderCapacityOptions._(JSObject _) implements JSObject { external factory AudioRenderCapacityOptions({num updateInterval}); - external set updateInterval(num value); external num get updateInterval; + external set updateInterval(num value); } extension type AudioRenderCapacityEvent._(JSObject _) implements Event, JSObject { @@ -529,14 +589,14 @@ extension type AudioRenderCapacityEventInit._(JSObject _) num underrunRatio, }); - external set timestamp(num value); external num get timestamp; - external set averageLoad(num value); + external set timestamp(num value); external num get averageLoad; - external set peakLoad(num value); + external set averageLoad(num value); external num get peakLoad; - external set underrunRatio(num value); + external set peakLoad(num value); external num get underrunRatio; + external set underrunRatio(num value); } /// The `OfflineAudioContext` interface is an [AudioContext] interface @@ -598,9 +658,14 @@ extension type OfflineAudioContext._(JSObject _) /// ensure the /// precise suspension. external JSPromise<JSAny?> suspend(num suspendTime); + + /// The **`length`** property of the + /// [OfflineAudioContext] interface returns an integer representing the size + /// of + /// the buffer in sample-frames. external int get length; - external set oncomplete(EventHandler value); external EventHandler get oncomplete; + external set oncomplete(EventHandler value); } extension type OfflineAudioContextOptions._(JSObject _) implements JSObject { external factory OfflineAudioContextOptions({ @@ -610,14 +675,14 @@ extension type OfflineAudioContextOptions._(JSObject _) implements JSObject { JSAny renderSizeHint, }); - external set numberOfChannels(int value); external int get numberOfChannels; - external set length(int value); + external set numberOfChannels(int value); external int get length; - external set sampleRate(num value); + external set length(int value); external num get sampleRate; - external set renderSizeHint(JSAny value); + external set sampleRate(num value); external JSAny get renderSizeHint; + external set renderSizeHint(JSAny value); } /// The @@ -642,6 +707,9 @@ extension type OfflineAudioCompletionEvent._(JSObject _) OfflineAudioCompletionEventInit eventInitDict, ); + /// The **`renderedBuffer`** read-only property of the + /// [OfflineAudioCompletionEvent] interface is an [AudioBuffer] + /// containing the result of processing an [OfflineAudioContext]. external AudioBuffer get renderedBuffer; } extension type OfflineAudioCompletionEventInit._(JSObject _) @@ -653,8 +721,8 @@ extension type OfflineAudioCompletionEventInit._(JSObject _) required AudioBuffer renderedBuffer, }); - external set renderedBuffer(AudioBuffer value); external AudioBuffer get renderedBuffer; + external set renderedBuffer(AudioBuffer value); } /// The **`AudioBuffer`** interface represents a short audio asset residing in @@ -703,9 +771,27 @@ extension type AudioBuffer._(JSObject _) implements JSObject { int channelNumber, [ int bufferOffset, ]); + + /// The **`sampleRate`** property of the [AudioBuffer] interface returns a + /// float representing the sample rate, in samples per second, of the PCM data + /// stored in the buffer. external num get sampleRate; + + /// The **`length`** property of the [AudioBuffer] + /// interface returns an integer representing the length, in sample-frames, of + /// the PCM data + /// stored in the buffer. external int get length; + + /// The **`duration`** property of the [AudioBuffer] interface returns a + /// double representing the duration, in seconds, of the PCM data stored in + /// the buffer. external num get duration; + + /// The `numberOfChannels` property of the [AudioBuffer] + /// interface returns an integer representing the number of discrete audio + /// channels + /// described by the PCM data stored in the buffer. external int get numberOfChannels; } extension type AudioBufferOptions._(JSObject _) implements JSObject { @@ -715,12 +801,12 @@ extension type AudioBufferOptions._(JSObject _) implements JSObject { required num sampleRate, }); - external set numberOfChannels(int value); external int get numberOfChannels; - external set length(int value); + external set numberOfChannels(int value); external int get length; - external set sampleRate(num value); + external set length(int value); external num get sampleRate; + external set sampleRate(num value); } /// The **`AudioNode`** interface is a generic interface for representing an @@ -762,15 +848,59 @@ extension type AudioNode._(JSObject _) implements EventTarget, JSObject { int output, int input, ]); + + /// The read-only `context` property of the + /// [AudioNode] interface returns the associated + /// [BaseAudioContext], that is the object representing the processing graph + /// the node is participating in. external BaseAudioContext get context; + + /// The `numberOfInputs` property of + /// the [AudioNode] interface returns the number of inputs feeding the + /// node. Source nodes are defined as nodes having a `numberOfInputs` + /// property with a value of 0. external int get numberOfInputs; + + /// The `numberOfOutputs` property of + /// the [AudioNode] interface returns the number of outputs coming out of + /// the node. Destination nodes — like [AudioDestinationNode] — have + /// a value of 0 for this attribute. external int get numberOfOutputs; - external set channelCount(int value); + + /// The **`channelCount`** property of the [AudioNode] interface represents an + /// integer used to determine how many channels are used when + /// [up-mixing and down-mixing](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Basic_concepts_behind_Web_Audio_API#up-mixing_and_down-mixing) + /// connections to any inputs to the node. + /// + /// `channelCount`'s usage and precise definition depend on the value of + /// [AudioNode.channelCountMode]: + /// + /// - It is ignored if the `channelCountMode` value is `max`. + /// - It is used as a maximum value if the `channelCountMode` value is + /// `clamped-max`. + /// - It is used as the exact value if the `channelCountMode` value is + /// `explicit`. external int get channelCount; - external set channelCountMode(ChannelCountMode value); + external set channelCount(int value); + + /// The `channelCountMode` property of the [AudioNode] interface represents an + /// enumerated value describing the way channels must be matched between the + /// node's inputs and outputs. external ChannelCountMode get channelCountMode; - external set channelInterpretation(ChannelInterpretation value); + external set channelCountMode(ChannelCountMode value); + + /// The **`channelInterpretation`** property of the [AudioNode] interface + /// represents an enumerated value describing how input channels are mapped to + /// output channels when the number of inputs/outputs is different. For + /// example, this setting defines how a mono input will be up-mixed to a + /// stereo or 5.1 channel output, or how a quad channel input will be + /// down-mixed to a stereo or mono output. + /// + /// The property has two options: `speakers` and `discrete`. These are + /// documented in [Basic concepts behind Web Audio API > up-mixing and + /// down-mixing](/en-US/docs/Web/API/Web_Audio_API/Basic_concepts_behind_Web_Audio_API#up-mixing_and_down-mixing). external ChannelInterpretation get channelInterpretation; + external set channelInterpretation(ChannelInterpretation value); } extension type AudioNodeOptions._(JSObject _) implements JSObject { external factory AudioNodeOptions({ @@ -779,12 +909,12 @@ extension type AudioNodeOptions._(JSObject _) implements JSObject { ChannelInterpretation channelInterpretation, }); - external set channelCount(int value); external int get channelCount; - external set channelCountMode(ChannelCountMode value); + external set channelCount(int value); external ChannelCountMode get channelCountMode; - external set channelInterpretation(ChannelInterpretation value); + external set channelCountMode(ChannelCountMode value); external ChannelInterpretation get channelInterpretation; + external set channelInterpretation(ChannelInterpretation value); } /// The Web Audio API's `AudioParam` interface represents an audio-related @@ -878,12 +1008,36 @@ extension type AudioParam._(JSObject _) implements JSObject { /// `AudioParam` but holds its value at a given time until further changes are /// made using other methods. external AudioParam cancelAndHoldAtTime(num cancelTime); - external set value(num value); + + /// The [Web Audio + /// API's](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API) + /// [AudioParam] interface property **`value`** gets + /// or sets the value of this [AudioParam] at the current time. Initially, the + /// value is set to [AudioParam.defaultValue]. + /// + /// Setting `value` has the same effect as + /// calling [AudioParam.setValueAtTime] with the time returned by the + /// `AudioContext`'s [BaseAudioContext.currentTime] + /// property. external num get value; - external set automationRate(AutomationRate value); + external set value(num value); external AutomationRate get automationRate; + external set automationRate(AutomationRate value); + + /// The **`defaultValue`** + /// read-only property of the [AudioParam] interface represents the initial + /// value of the attributes as defined by the specific [AudioNode] creating + /// the `AudioParam`. external num get defaultValue; + + /// The **`minValue`** + /// read-only property of the [AudioParam] interface represents the minimum + /// possible value for the parameter's nominal (effective) range. external num get minValue; + + /// The **`maxValue`** + /// read-only property of the [AudioParam] interface represents the maximum + /// possible value for the parameter's nominal (effective) range. external num get maxValue; } @@ -927,8 +1081,8 @@ extension type AudioScheduledSourceNode._(JSObject _) /// > **Note:** If a scheduled stop time occurs before the node's scheduled /// > start time, the node never starts to play. external void stop([num when]); - external set onended(EventHandler value); external EventHandler get onended; + external set onended(EventHandler value); } /// The **`AnalyserNode`** interface represents a node able to provide real-time @@ -1022,15 +1176,46 @@ extension type AnalyserNode._(JSObject _) implements AudioNode, JSObject { /// elements are dropped. If it has more elements than needed, excess elements /// are ignored. external void getByteTimeDomainData(JSUint8Array array); - external set fftSize(int value); + + /// The **`fftSize`** property of the [AnalyserNode] interface is an unsigned + /// long value and represents the window size in samples that is used when + /// performing a + /// [Fast Fourier Transform](https://en.wikipedia.org/wiki/Fast_Fourier_transform) + /// (FFT) to get frequency domain data. external int get fftSize; + external set fftSize(int value); + + /// The **`frequencyBinCount`** read-only property of the [AnalyserNode] + /// interface contains the total number of data points available to + /// [AudioContext] [BaseAudioContext.sampleRate]. This is half of the `value` + /// of the [AnalyserNode.fftSize]. The two methods' indices have a linear + /// relationship with the frequencies they represent, between 0 and the + /// [Nyquist frequency](https://en.wikipedia.org/wiki/Nyquist_frequency). external int get frequencyBinCount; - external set minDecibels(num value); + + /// The **`minDecibels`** property of the [AnalyserNode] interface is a double + /// value representing the minimum power value in the scaling range for the + /// FFT analysis data, for conversion to unsigned byte values — basically, + /// this specifies the minimum value for the range of results when using + /// `getByteFrequencyData()`. external num get minDecibels; - external set maxDecibels(num value); + external set minDecibels(num value); + + /// The **`maxDecibels`** property of the [AnalyserNode] interface is a double + /// value representing the maximum power value in the scaling range for the + /// FFT analysis data, for conversion to unsigned byte values — basically, + /// this specifies the maximum value for the range of results when using + /// `getByteFrequencyData()`. external num get maxDecibels; - external set smoothingTimeConstant(num value); + external set maxDecibels(num value); + + /// The **`smoothingTimeConstant`** property of the [AnalyserNode] interface + /// is a double value representing the averaging constant with the last + /// analysis frame. It's basically an average between the current buffer and + /// the last buffer the `AnalyserNode` processed, and results in a much + /// smoother set of value changes over time. external num get smoothingTimeConstant; + external set smoothingTimeConstant(num value); } extension type AnalyserOptions._(JSObject _) implements AudioNodeOptions, JSObject { @@ -1044,14 +1229,14 @@ extension type AnalyserOptions._(JSObject _) num smoothingTimeConstant, }); - external set fftSize(int value); external int get fftSize; - external set maxDecibels(num value); + external set fftSize(int value); external num get maxDecibels; - external set minDecibels(num value); + external set maxDecibels(num value); external num get minDecibels; - external set smoothingTimeConstant(num value); + external set minDecibels(num value); external num get smoothingTimeConstant; + external set smoothingTimeConstant(num value); } /// The **`AudioBufferSourceNode`** interface is an [AudioScheduledSourceNode] @@ -1124,16 +1309,71 @@ extension type AudioBufferSourceNode._(JSObject _) num offset, num duration, ]); - external set buffer(AudioBuffer? value); + + /// The **`buffer`** property of the [AudioBufferSourceNode] interface + /// provides the ability to play back audio using an [AudioBuffer] as the + /// source of the sound data. + /// + /// If the `buffer` property is set to the value `null`, the node + /// generates a single channel containing silence (that is, every sample is + /// 0). external AudioBuffer? get buffer; + external set buffer(AudioBuffer? value); + + /// The **`playbackRate`** property of + /// the [AudioBufferSourceNode] interface Is a + /// [k-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#k-rate) + /// [AudioParam] that + /// defines the speed at which the audio asset will be played. + /// + /// A value of 1.0 indicates it should play at the same speed as its sampling + /// rate, + /// values less than 1.0 cause the sound to play more slowly, while values + /// greater than + /// 1.0 result in audio playing faster than normal. The default value is + /// `1.0`. + /// When set to another value, the `AudioBufferSourceNode` resamples the audio + /// before sending it to the output. external AudioParam get playbackRate; + + /// The **`detune`** property of the + /// [AudioBufferSourceNode] interface is a + /// [k-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#k-rate) + /// [AudioParam] + /// representing detuning of oscillation in + /// [cents](https://en.wikipedia.org/wiki/Cent_%28music%29). + /// + /// For example, values of +100 and -100 detune the source up or down by one + /// semitone, + /// while +1200 and -1200 detune it up or down by one octave. external AudioParam get detune; - external set loop(bool value); + + /// The `loop` property of the [AudioBufferSourceNode] + /// interface is a Boolean indicating if the audio asset must be replayed when + /// the end of + /// the [AudioBuffer] is reached. + /// + /// The `loop` property's default value is `false`. external bool get loop; - external set loopStart(num value); + external set loop(bool value); + + /// The **`loopStart`** property of the [AudioBufferSourceNode] interface is a + /// floating-point value indicating, in seconds, where in the [AudioBuffer] + /// the restart of the play must happen. + /// + /// The `loopStart` property's default value is `0`. external num get loopStart; - external set loopEnd(num value); + external set loopStart(num value); + + /// The `loopEnd` property of the [AudioBufferSourceNode] + /// interface specifies is a floating point number specifying, in seconds, at + /// what offset + /// into playing the [AudioBuffer] playback should loop back to the time + /// indicated by the [AudioBufferSourceNode.loopStart] property. + /// This is only used if the [AudioBufferSourceNode.loop] property is + /// `true`. external num get loopEnd; + external set loopEnd(num value); } extension type AudioBufferSourceOptions._(JSObject _) implements JSObject { external factory AudioBufferSourceOptions({ @@ -1145,18 +1385,18 @@ extension type AudioBufferSourceOptions._(JSObject _) implements JSObject { num playbackRate, }); - external set buffer(AudioBuffer? value); external AudioBuffer? get buffer; - external set detune(num value); + external set buffer(AudioBuffer? value); external num get detune; - external set loop(bool value); + external set detune(num value); external bool get loop; - external set loopEnd(num value); + external set loop(bool value); external num get loopEnd; - external set loopStart(num value); + external set loopEnd(num value); external num get loopStart; - external set playbackRate(num value); + external set loopStart(num value); external num get playbackRate; + external set playbackRate(num value); } /// The `AudioDestinationNode` interface represents the end destination of an @@ -1203,6 +1443,13 @@ extension type AudioBufferSourceOptions._(JSObject _) implements JSObject { /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode). extension type AudioDestinationNode._(JSObject _) implements AudioNode, JSObject { + /// The `maxchannelCount` property of the [AudioDestinationNode] interface is + /// an `unsigned long` defining the maximum amount of channels that the + /// physical device can handle. + /// + /// The [AudioNode.channelCount] property can be set between 0 and this value + /// (both included). If `maxChannelCount` is `0`, like in + /// [OfflineAudioContext], the channel count cannot be changed. external int get maxChannelCount; } @@ -1265,14 +1512,77 @@ extension type AudioListener._(JSObject _) implements JSObject { num yUp, num zUp, ); + + /// The `positionX` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the x position of the listener in 3D cartesian + /// space. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get positionX; + + /// The `positionY` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the y position of the listener in 3D cartesian + /// space. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get positionY; + + /// The `positionZ` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the z position of the listener in 3D cartesian + /// space. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get positionZ; + + /// The `forwardX` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the x value of the direction vector defining the + /// forward direction the listener is pointing in. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get forwardX; + + /// The `forwardY` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the y value of the direction vector defining the + /// forward direction the listener is pointing in. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get forwardY; + + /// The `forwardZ` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the z value of the direction vector defining the + /// forward direction the listener is pointing in. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get forwardZ; + + /// The `upX` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the x value of the direction vector defining the + /// up direction the listener is pointing in. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get upX; + + /// The `upY` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the y value of the direction vector defining the + /// up direction the listener is pointing in. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get upY; + + /// The `upZ` read-only property of the [AudioListener] interface is an + /// [AudioParam] representing the z value of the direction vector defining the + /// up direction the listener is pointing in. + /// + /// > **Note:** The parameter is _a-rate_ when used with a [PannerNode] whose + /// > [PannerNode.panningModel] is set to equalpower, or _k-rate_ otherwise. external AudioParam get upZ; } @@ -1299,8 +1609,31 @@ extension type AudioProcessingEvent._(JSObject _) implements Event, JSObject { AudioProcessingEventInit eventInitDict, ); + /// The **`playbackTime`** read-only property of the [AudioProcessingEvent] + /// interface represents the time when the audio will be played. It is in the + /// same coordinate system as the time used by the [AudioContext]. external num get playbackTime; + + /// The **`inputBuffer`** read-only property of the [AudioProcessingEvent] + /// interface represents the input buffer of an audio processing event. + /// + /// The input buffer is represented by an [AudioBuffer] object, which contains + /// a collection of audio channels, each of which is an array of + /// floating-point values representing the audio signal waveform encoded as a + /// series of amplitudes. The number of channels and the length of each + /// channel are determined by the channel count and buffer size properties of + /// the `AudioBuffer`. external AudioBuffer get inputBuffer; + + /// The **`outputBuffer`** read-only property of the [AudioProcessingEvent] + /// interface represents the output buffer of an audio processing event. + /// + /// The output buffer is represented by an [AudioBuffer] object, which + /// contains a collection of audio channels, each of which is an array of + /// floating-point values representing the audio signal waveform encoded as a + /// series of amplitudes. The number of channels and the length of each + /// channel are determined by the channel count and buffer size properties of + /// the `AudioBuffer`. external AudioBuffer get outputBuffer; } extension type AudioProcessingEventInit._(JSObject _) @@ -1314,12 +1647,12 @@ extension type AudioProcessingEventInit._(JSObject _) required AudioBuffer outputBuffer, }); - external set playbackTime(num value); external num get playbackTime; - external set inputBuffer(AudioBuffer value); + external set playbackTime(num value); external AudioBuffer get inputBuffer; - external set outputBuffer(AudioBuffer value); + external set inputBuffer(AudioBuffer value); external AudioBuffer get outputBuffer; + external set outputBuffer(AudioBuffer value); } /// The `BiquadFilterNode` interface represents a simple low-order filter, and @@ -1377,11 +1710,48 @@ extension type BiquadFilterNode._(JSObject _) implements AudioNode, JSObject { JSFloat32Array magResponse, JSFloat32Array phaseResponse, ); - external set type(BiquadFilterType value); + + /// The `type` property of the [BiquadFilterNode] interface is a string (enum) + /// value defining the kind of filtering algorithm the node is implementing. external BiquadFilterType get type; + external set type(BiquadFilterType value); + + /// The `frequency` property of the [BiquadFilterNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] — a double representing a frequency in the current filtering + /// algorithm measured in hertz (Hz). + /// + /// Its default value is `350`, with a nominal range of `10` to the + /// [Nyquist frequency](https://en.wikipedia.org/wiki/Nyquist_frequency) — + /// that is, half of the sample rate. external AudioParam get frequency; + + /// The `detune` property of the [BiquadFilterNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] representing detuning of the frequency in + /// [cents](https://en.wikipedia.org/wiki/Cent_%28music%29). external AudioParam get detune; + + /// The `Q` property of the [BiquadFilterNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam], a double representing a + /// [Q factor](https://en.wikipedia.org/wiki/Q_factor), or _quality factor_. + /// + /// It is a dimensionless value with a default value of `1` and a nominal + /// range of `0.0001` to `1000`. external AudioParam get Q; + + /// The `gain` property of the [BiquadFilterNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] — a double representing the + /// [gain](https://en.wikipedia.org/wiki/Gain) used in the current filtering + /// algorithm. + /// + /// When its value is positive, it represents a real gain; when negative, it + /// represents an attenuation. + /// + /// It is expressed in dB, has a default value of `0`, and can take a value in + /// a nominal range of `-40` to `40`. external AudioParam get gain; } extension type BiquadFilterOptions._(JSObject _) @@ -1397,16 +1767,16 @@ extension type BiquadFilterOptions._(JSObject _) num gain, }); - external set type(BiquadFilterType value); external BiquadFilterType get type; - external set Q(num value); + external set type(BiquadFilterType value); external num get Q; - external set detune(num value); + external set Q(num value); external num get detune; - external set frequency(num value); + external set detune(num value); external num get frequency; - external set gain(num value); + external set frequency(num value); external num get gain; + external set gain(num value); } /// The `ChannelMergerNode` interface, often used in conjunction with its @@ -1472,8 +1842,8 @@ extension type ChannelMergerOptions._(JSObject _) int numberOfInputs, }); - external set numberOfInputs(int value); external int get numberOfInputs; + external set numberOfInputs(int value); } /// The `ChannelSplitterNode` interface, often used in conjunction with its @@ -1543,8 +1913,8 @@ extension type ChannelSplitterOptions._(JSObject _) int numberOfOutputs, }); - external set numberOfOutputs(int value); external int get numberOfOutputs; + external set numberOfOutputs(int value); } /// The `ConstantSourceNode` interface—part of the Web Audio API—represents an @@ -1583,13 +1953,27 @@ extension type ConstantSourceNode._(JSObject _) ConstantSourceOptions options, ]); + /// The read-only `offset` property of the [ConstantSourceNode] + /// interface returns a [AudioParam] object indicating the numeric + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// value which is always returned + /// by the source when asked for the next sample. + /// + /// > **Note:** While the `AudioParam` named `offset` is read-only, the + /// > `value` property within is not. So you can change the value of + /// > `offset` by setting the value of + /// > `ConstantSourceNode.offset.value`: + /// > + /// > ```js + /// > myConstantSourceNode.offset.value = newValue; + /// > ``` external AudioParam get offset; } extension type ConstantSourceOptions._(JSObject _) implements JSObject { external factory ConstantSourceOptions({num offset}); - external set offset(num value); external num get offset; + external set offset(num value); } /// The `ConvolverNode` interface is an [AudioNode] that performs a Linear @@ -1635,10 +2019,40 @@ extension type ConvolverNode._(JSObject _) implements AudioNode, JSObject { ConvolverOptions options, ]); - external set buffer(AudioBuffer? value); + /// The **`buffer`** property of the [ConvolverNode] interface represents a + /// mono, stereo, or 4-channel [AudioBuffer] containing the (possibly + /// multichannel) impulse response used by the `ConvolverNode` to create the + /// reverb effect. + /// + /// This is normally a simple recording of as-close-to-an-impulse as can be + /// found in the space you want to model. For example, if you want to model + /// the reverb in your bathroom, you might set up a microphone near the door + /// to record the sound of a balloon pop or synthesized impulse from the sink. + /// That audio recording could then be used as the buffer. + /// + /// This audio buffer must have the same sample-rate as the `AudioContext` or + /// an exception will be thrown. At the time when this attribute is set, the + /// buffer and the state of the attribute will be used to configure the + /// `ConvolverNode` with this impulse response having the given normalization. + /// The initial value of this attribute is `null`. external AudioBuffer? get buffer; - external set normalize(bool value); + external set buffer(AudioBuffer? value); + + /// The `normalize` property of the [ConvolverNode] interface + /// is a boolean that controls whether the impulse response from the buffer + /// will be + /// scaled by an equal-power normalization when the `buffer` attribute is set, + /// or not. + /// + /// Its default value is `true` in order to achieve a more uniform output + /// level from the convolver, when loaded with diverse impulse responses. If + /// normalize is + /// set to `false`, then the convolution will be rendered with no + /// pre-processing/scaling of the impulse response. Changes to this value do + /// not take + /// effect until the next time the `buffer` attribute is set. external bool get normalize; + external set normalize(bool value); } extension type ConvolverOptions._(JSObject _) implements AudioNodeOptions, JSObject { @@ -1650,10 +2064,10 @@ extension type ConvolverOptions._(JSObject _) bool disableNormalization, }); - external set buffer(AudioBuffer? value); external AudioBuffer? get buffer; - external set disableNormalization(bool value); + external set buffer(AudioBuffer? value); external bool get disableNormalization; + external set disableNormalization(bool value); } /// The **`DelayNode`** interface represents a @@ -1706,6 +2120,16 @@ extension type DelayNode._(JSObject _) implements AudioNode, JSObject { DelayOptions options, ]); + /// The `delayTime` property of the [DelayNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] representing the amount of delay to apply. + /// + /// `delayTime` is expressed in seconds, its minimal value is `0`, and its + /// maximum value is defined by the `maxDelayTime` argument of the + /// [BaseAudioContext.createDelay] method that created it. + /// + /// > **Note:** Though the [AudioParam] returned is read-only, the value it + /// > represents is not. external AudioParam get delayTime; } extension type DelayOptions._(JSObject _) @@ -1718,10 +2142,10 @@ extension type DelayOptions._(JSObject _) num delayTime, }); - external set maxDelayTime(num value); external num get maxDelayTime; - external set delayTime(num value); + external set maxDelayTime(num value); external num get delayTime; + external set delayTime(num value); } /// The `DynamicsCompressorNode` interface provides a compression effect, which @@ -1767,11 +2191,69 @@ extension type DynamicsCompressorNode._(JSObject _) DynamicsCompressorOptions options, ]); + /// The `threshold` property of the [DynamicsCompressorNode] interface is a + /// [k-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#k-rate) + /// [AudioParam] representing the decibel value above which the compression + /// will start taking effect. + /// + /// The `threshold` property's default value is `-24` and it can be set + /// between `-100` and `0`. + /// + /// ![The threshold attribute has no effect on signals lowers than its value, + /// but induce volume reduction on signal stronger than its + /// value.](webaudiothreshold.png) external AudioParam get threshold; + + /// The `knee` property of the [DynamicsCompressorNode] interface is a + /// [k-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#k-rate) + /// [AudioParam] containing a decibel value representing the range above the + /// threshold where the curve smoothly transitions to the compressed portion. + /// + /// The `knee` property's default value is `30` and it can be set between `0` + /// and `40`. + /// + /// ![Describes the effect of a knee, showing two curves one for a hard knee, + /// the other for a soft knee.](webaudioknee.png) external AudioParam get knee; + + /// The `ratio` property of the [DynamicsCompressorNode] interface Is a + /// [k-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#k-rate) + /// [AudioParam] representing the amount of change, in dB, needed in the input + /// for a 1 dB change in the output. + /// + /// The `ratio` property's default value is `12` and it can be set between `1` + /// and `20`. + /// + /// ![Describes the effect of different ratio on the output signal](webaudioratio.png) external AudioParam get ratio; + + /// The **`reduction`** read-only property of the [DynamicsCompressorNode] + /// interface is a float representing the amount of gain reduction currently + /// applied by the compressor to the signal. + /// + /// Intended for metering purposes, it returns a value in dB, or `0` (no gain + /// reduction) if no signal is fed into the `DynamicsCompressorNode`. The + /// range of this value is between `-20` and `0` (in dB). external num get reduction; + + /// The `attack` property of the [DynamicsCompressorNode] interface is a + /// [k-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#k-rate) + /// [AudioParam] representing the amount of time, in seconds, required to + /// reduce the gain by 10 dB. It defines how quickly the signal is adapted + /// when its volume is increased. + /// + /// The `attack` property's default value is `0.003` and it can be set between + /// `0` and `1`. external AudioParam get attack; + + /// The `release` property of the [DynamicsCompressorNode] interface Is a + /// [k-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#k-rate) + /// [AudioParam] representing the amount of time, in seconds, required to + /// increase the gain by 10 dB. It defines how quick the signal is adapted + /// when its volume is reduced. + /// + /// The `release` property's default value is `0.25` and it can be set between + /// `0` and `1`. external AudioParam get release; } extension type DynamicsCompressorOptions._(JSObject _) @@ -1787,16 +2269,16 @@ extension type DynamicsCompressorOptions._(JSObject _) num threshold, }); - external set attack(num value); external num get attack; - external set knee(num value); + external set attack(num value); external num get knee; - external set ratio(num value); + external set knee(num value); external num get ratio; - external set release(num value); + external set ratio(num value); external num get release; - external set threshold(num value); + external set release(num value); external num get threshold; + external set threshold(num value); } /// The `GainNode` interface represents a change in volume. It is an [AudioNode] @@ -1847,6 +2329,9 @@ extension type GainNode._(JSObject _) implements AudioNode, JSObject { GainOptions options, ]); + /// The `gain` property of the [GainNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] representing the amount of gain to apply. external AudioParam get gain; } extension type GainOptions._(JSObject _) implements AudioNodeOptions, JSObject { @@ -1857,8 +2342,8 @@ extension type GainOptions._(JSObject _) implements AudioNodeOptions, JSObject { num gain, }); - external set gain(num value); external num get gain; + external set gain(num value); } /// The **`IIRFilterNode`** interface of the @@ -1950,10 +2435,10 @@ extension type IIRFilterOptions._(JSObject _) required JSArray<JSNumber> feedback, }); - external set feedforward(JSArray<JSNumber> value); external JSArray<JSNumber> get feedforward; - external set feedback(JSArray<JSNumber> value); + external set feedforward(JSArray<JSNumber> value); external JSArray<JSNumber> get feedback; + external set feedback(JSArray<JSNumber> value); } /// The `MediaElementAudioSourceNode` interface represents an audio source @@ -1998,6 +2483,14 @@ extension type MediaElementAudioSourceNode._(JSObject _) MediaElementAudioSourceOptions options, ); + /// The [MediaElementAudioSourceNode] interface's + /// read-only **`mediaElement`** property indicates the + /// [HTMLMediaElement] that contains the audio track from which the node is + /// receiving audio. + /// + /// This stream was specified when the node was first created, + /// either using the [MediaElementAudioSourceNode.MediaElementAudioSourceNode] + /// constructor or the [AudioContext.createMediaElementSource] method. external HTMLMediaElement get mediaElement; } extension type MediaElementAudioSourceOptions._(JSObject _) @@ -2005,8 +2498,8 @@ extension type MediaElementAudioSourceOptions._(JSObject _) external factory MediaElementAudioSourceOptions( {required HTMLMediaElement mediaElement}); - external set mediaElement(HTMLMediaElement value); external HTMLMediaElement get mediaElement; + external set mediaElement(HTMLMediaElement value); } /// The `MediaStreamAudioDestinationNode` interface represents an audio @@ -2054,6 +2547,13 @@ extension type MediaStreamAudioDestinationNode._(JSObject _) AudioNodeOptions options, ]); + /// The `stream` property of the [AudioContext] interface represents a + /// [MediaStream] containing a single audio [MediaStreamTrack] with the same + /// number of channels as the node itself. + /// + /// You can use this property to get a stream out of the audio graph and feed + /// it into another construct, such as a + /// [Media Recorder](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream_Recording_API). external MediaStream get stream; } @@ -2108,14 +2608,22 @@ extension type MediaStreamAudioSourceNode._(JSObject _) MediaStreamAudioSourceOptions options, ); + /// The [MediaStreamAudioSourceNode] interface's + /// read-only **`mediaStream`** property indicates the + /// [MediaStream] that contains the audio track from which the node is + /// receiving audio. + /// + /// This stream was specified when the node was first created, + /// either using the [MediaStreamAudioSourceNode.MediaStreamAudioSourceNode] + /// constructor or the [AudioContext.createMediaStreamSource] method. external MediaStream get mediaStream; } extension type MediaStreamAudioSourceOptions._(JSObject _) implements JSObject { external factory MediaStreamAudioSourceOptions( {required MediaStream mediaStream}); - external set mediaStream(MediaStream value); external MediaStream get mediaStream; + external set mediaStream(MediaStream value); } /// The **`MediaStreamTrackAudioSourceNode`** interface is a type of [AudioNode] @@ -2173,8 +2681,8 @@ extension type MediaStreamTrackAudioSourceOptions._(JSObject _) external factory MediaStreamTrackAudioSourceOptions( {required MediaStreamTrack mediaStreamTrack}); - external set mediaStreamTrack(MediaStreamTrack value); external MediaStreamTrack get mediaStreamTrack; + external set mediaStreamTrack(MediaStreamTrack value); } /// The **`OscillatorNode`** interface represents a periodic waveform, such as a @@ -2224,9 +2732,32 @@ extension type OscillatorNode._(JSObject _) /// output, when /// [OscillatorNode.type] is `custom`. external void setPeriodicWave(PeriodicWave periodicWave); - external set type(OscillatorType value); + + /// The **`type`** property of the [OscillatorNode] interface specifies what + /// shape of [waveform](https://en.wikipedia.org/wiki/Waveform) the + /// oscillator will output. There are several common waveforms available, as + /// well as an + /// option to specify a custom waveform shape. The shape of the waveform will + /// affect the + /// tone that is produced. external OscillatorType get type; + external set type(OscillatorType value); + + /// The **`frequency`** property of the [OscillatorNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] representing the frequency of oscillation in hertz. + /// + /// > **Note:** though the `AudioParam` returned is read-only, the value it + /// > represents is not. external AudioParam get frequency; + + /// The `detune` property of the [OscillatorNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] representing detuning of oscillation in + /// [cents](https://en.wikipedia.org/wiki/Cent_%28music%29). + /// + /// > **Note:** though the `AudioParam` returned is read-only, the value it + /// > represents is not. external AudioParam get detune; } extension type OscillatorOptions._(JSObject _) @@ -2241,14 +2772,14 @@ extension type OscillatorOptions._(JSObject _) PeriodicWave periodicWave, }); - external set type(OscillatorType value); external OscillatorType get type; - external set frequency(num value); + external set type(OscillatorType value); external num get frequency; - external set detune(num value); + external set frequency(num value); external num get detune; - external set periodicWave(PeriodicWave value); + external set detune(num value); external PeriodicWave get periodicWave; + external set periodicWave(PeriodicWave value); } /// The `PannerNode` interface defines an audio-processing object that @@ -2346,28 +2877,279 @@ extension type PannerNode._(JSObject _) implements AudioNode, JSObject { num y, num z, ); - external set panningModel(PanningModelType value); + + /// The `panningModel` property of the [PannerNode] interface is an enumerated + /// value determining which spatialization algorithm to use to position the + /// audio in 3D space. + /// + /// The possible values are: + /// + /// - `equalpower`: Represents the equal-power panning algorithm, generally + /// regarded as simple and efficient. `equalpower` is the default value. + /// - `HRTF`: Renders a stereo output of higher quality than `equalpower` — it + /// uses a convolution with measured impulse responses from human subjects. external PanningModelType get panningModel; + external set panningModel(PanningModelType value); + + /// The **`positionX`** property of the [PannerNode] interface specifies the X + /// coordinate of the audio source's position in 3D Cartesian + /// coordinates, corresponding to the _horizontal_ axis (left-right). + /// + /// The complete vector is defined by the position of the audio source, given + /// as + /// ([PannerNode.positionX], [PannerNode.positionY], + /// [PannerNode.positionZ]), and the orientation + /// of the audio source (that is, the direction in which it's facing), given + /// as + /// ([PannerNode.orientationX], + /// [PannerNode.orientationY], + /// [PannerNode.orientationZ]). + /// + /// Depending on the directionality of the sound (as specified using the + /// attributes + /// [PannerNode.coneInnerAngle], + /// [PannerNode.coneOuterAngle], and + /// [PannerNode.coneOuterGain]), the orientation of the + /// sound may alter the perceived volume of the sound as it's being played. If + /// the sound + /// is pointing toward the listener, it will be louder than if the sound is + /// pointed away + /// from the listener. + /// + /// The [AudioParam] contained by this property is read only; however, you + /// can still change the value of the parameter by assigning a new value to + /// its + /// [AudioParam.value] property. external AudioParam get positionX; + + /// The **`positionY`** property of the [PannerNode] interface specifies the Y + /// coordinate of the audio source's position in 3D Cartesian + /// coordinates, corresponding to the _vertical_ axis (top-bottom). The + /// complete + /// vector is defined by the position of the audio source, given as + /// ([PannerNode.positionX], [PannerNode.positionY], [PannerNode.positionZ]), + /// and the orientation + /// of the audio source (that is, the direction in which it's facing), given + /// as + /// ([PannerNode.orientationX], + /// [PannerNode.orientationY], + /// [PannerNode.orientationZ]). + /// + /// Depending on the directionality of the sound (as specified using the + /// attributes + /// [PannerNode.coneInnerAngle], + /// [PannerNode.coneOuterAngle], and + /// [PannerNode.coneOuterGain]), the orientation of the + /// sound may alter the perceived volume of the sound as it's being played. If + /// the sound + /// is pointing toward the listener, it will be louder than if the sound is + /// pointed away + /// from the listener. + /// + /// The [AudioParam] contained by this property is read only; however, you + /// can still change the value of the parameter by assigning a new value to + /// its + /// [AudioParam.value] property. external AudioParam get positionY; + + /// The **`positionZ`** property of the [PannerNode] interface specifies the Z + /// coordinate of the audio source's position in 3D Cartesian + /// coordinates, corresponding to the _depth_ axis (behind-in front of the + /// listener). The complete vector is defined by the position of the audio + /// source, given + /// as ([PannerNode.positionX], + /// [PannerNode.positionY], + /// [PannerNode.positionZ]), + /// and the orientation of the audio source (that is, the direction in + /// which it's facing), given as ([PannerNode.orientationX], + /// [PannerNode.orientationY], + /// [PannerNode.orientationZ]). + /// + /// Depending on the directionality of the sound (as specified using the + /// attributes + /// [PannerNode.coneInnerAngle], + /// [PannerNode.coneOuterAngle], and + /// [PannerNode.coneOuterGain]), the orientation of the + /// sound may alter the perceived volume of the sound as it's being played. If + /// the sound + /// is pointing toward the listener, it will be louder than if the sound is + /// pointed away + /// from the listener. + /// + /// The [AudioParam] contained by this property is read only; however, you + /// can still change the value of the parameter by assigning a new value to + /// its + /// [AudioParam.value] property. external AudioParam get positionZ; + + /// The **`orientationX`** property of the [PannerNode] interface indicates + /// the X (horizontal) component of the + /// direction in which the audio source is facing, in a 3D Cartesian + /// coordinate space. + /// + /// The complete vector is defined by the position of the audio source, given + /// as + /// ([PannerNode.positionX], [PannerNode.positionY], + /// [PannerNode.positionZ]), and the orientation + /// of the audio source (that is, the direction in which it's facing), given + /// as + /// ([PannerNode.orientationX], + /// [PannerNode.orientationY], + /// [PannerNode.orientationZ]). + /// + /// Depending on the directionality of the sound (as specified using the + /// attributes + /// [PannerNode.coneInnerAngle], + /// [PannerNode.coneOuterAngle], and + /// [PannerNode.coneOuterGain]), the orientation of the + /// sound may alter the perceived volume of the sound as it's being played. If + /// the sound + /// is pointing toward the listener, it will be louder than if the sound is + /// pointed away + /// from the listener. + /// + /// The [AudioParam] contained by this property is read only; however, you + /// can still change the value of the parameter by assigning a new value to + /// its + /// [AudioParam.value] property. external AudioParam get orientationX; + + /// The **`orientationY`** property of the [PannerNode] interface + /// indicates the Y (vertical) component of the direction the audio source is + /// facing, in 3D Cartesian coordinate space. + /// + /// The complete vector is defined by the position of the audio source, given + /// as + /// ([PannerNode.positionX], [PannerNode.positionY], + /// [PannerNode.positionZ]), and the orientation + /// of the audio source (that is, the direction in which it's facing), given + /// as + /// ([PannerNode.orientationX], + /// [PannerNode.orientationY], + /// [PannerNode.orientationZ]). + /// + /// Depending on the directionality of the sound (as specified using the + /// attributes + /// [PannerNode.coneInnerAngle], + /// [PannerNode.coneOuterAngle], and + /// [PannerNode.coneOuterGain]), the orientation of the + /// sound may alter the perceived volume of the sound as it's being played. If + /// the sound + /// is pointing toward the listener, it will be louder than if the sound is + /// pointed away + /// from the listener. + /// + /// The [AudioParam] contained by this property is read only; however, you + /// can still change the value of the parameter by assigning a new value to + /// its + /// [AudioParam.value] property. external AudioParam get orientationY; + + /// The **`orientationZ`** property of the [PannerNode] interface + /// indicates the Z (depth) component of the direction the audio source is + /// facing, in 3D Cartesian coordinate space. + /// + /// The complete vector is defined by the position of the audio source, given + /// as + /// ([PannerNode.positionX], [PannerNode.positionY], + /// [PannerNode.positionZ]), and the orientation + /// of the audio source (that is, the direction in which it's facing), given + /// as + /// ([PannerNode.orientationX], + /// [PannerNode.orientationY], + /// [PannerNode.orientationZ]). + /// + /// Depending on the directionality of the sound (as specified using the + /// attributes + /// [PannerNode.coneInnerAngle], + /// [PannerNode.coneOuterAngle], and + /// [PannerNode.coneOuterGain]), the orientation of the + /// sound may alter the perceived volume of the sound as it's being played. If + /// the sound + /// is pointing toward the listener, it will be louder than if the sound is + /// pointed away + /// from the listener. + /// + /// The [AudioParam] contained by this property is read only; however, you + /// can still change the value of the parameter by assigning a new value to + /// its + /// [AudioParam.value] property. external AudioParam get orientationZ; - external set distanceModel(DistanceModelType value); + + /// The `distanceModel` property of the [PannerNode] interface is an + /// enumerated value determining which algorithm to use to reduce the volume + /// of the audio source as it moves away from the listener. + /// + /// The possible values are: + /// + /// - `linear`: A _linear distance model_ calculating the gain induced by the + /// distance according to: + /// `1 - rolloffFactor * (distance - refDistance) / (maxDistance - + /// refDistance)` + /// - `inverse`: An _inverse distance model_ calculating the gain induced by + /// the distance according to: + /// `refDistance / (refDistance + rolloffFactor * (Math.max(distance, + /// refDistance) - refDistance))` + /// - `exponential`: An _exponential distance model_ calculating the gain + /// induced by the distance according to: + /// `pow((Math.max(distance, refDistance) / refDistance, -rolloffFactor)`. + /// + /// `inverse` is the default value of `distanceModel`. external DistanceModelType get distanceModel; - external set refDistance(num value); + external set distanceModel(DistanceModelType value); + + /// The `refDistance` property of the [PannerNode] interface is a double value + /// representing the reference distance for reducing volume as the audio + /// source moves further from the listener – i.e. the distance at which the + /// volume reduction starts taking effect. This value is used by all distance + /// models. + /// + /// The `refDistance` property's default value is `1`. external num get refDistance; - external set maxDistance(num value); + external set refDistance(num value); + + /// The `maxDistance` property of the [PannerNode] interface is a double value + /// representing the maximum distance between the audio source and the + /// listener, after which the volume is not reduced any further. This value is + /// used only by the `linear` distance model. + /// + /// The `maxDistance` property's default value is `10000`. external num get maxDistance; - external set rolloffFactor(num value); + external set maxDistance(num value); + + /// The `rolloffFactor` property of the [PannerNode] interface is a double + /// value describing how quickly the volume is reduced as the source moves + /// away from the listener. This value is used by all distance models. The + /// `rolloffFactor` property's default value is `1`. external num get rolloffFactor; - external set coneInnerAngle(num value); + external set rolloffFactor(num value); + + /// The `coneInnerAngle` property of the [PannerNode] interface is a double + /// value describing the angle, in degrees, of a cone inside of which there + /// will be no volume reduction. + /// + /// The `coneInnerAngle` property's default value is `360`, suitable for a + /// non-directional source. external num get coneInnerAngle; - external set coneOuterAngle(num value); + external set coneInnerAngle(num value); + + /// The `coneOuterAngle` property of the [PannerNode] interface is a double + /// value describing the angle, in degrees, of a cone outside of which the + /// volume will be reduced by a constant value, defined by the + /// [PannerNode.coneOuterGain] property. + /// + /// The `coneOuterAngle` property's default value is `0`. external num get coneOuterAngle; - external set coneOuterGain(num value); + external set coneOuterAngle(num value); + + /// The `coneOuterGain` property of the [PannerNode] interface is a double + /// value, describing the amount of volume reduction outside the cone, defined + /// by the [PannerNode.coneOuterAngle] attribute. + /// + /// The `coneOuterGain` property's default value is `0`, meaning that no sound + /// can be heard outside the cone. external num get coneOuterGain; + external set coneOuterGain(num value); } extension type PannerOptions._(JSObject _) implements AudioNodeOptions, JSObject { @@ -2391,34 +3173,34 @@ extension type PannerOptions._(JSObject _) num coneOuterGain, }); - external set panningModel(PanningModelType value); external PanningModelType get panningModel; - external set distanceModel(DistanceModelType value); + external set panningModel(PanningModelType value); external DistanceModelType get distanceModel; - external set positionX(num value); + external set distanceModel(DistanceModelType value); external num get positionX; - external set positionY(num value); + external set positionX(num value); external num get positionY; - external set positionZ(num value); + external set positionY(num value); external num get positionZ; - external set orientationX(num value); + external set positionZ(num value); external num get orientationX; - external set orientationY(num value); + external set orientationX(num value); external num get orientationY; - external set orientationZ(num value); + external set orientationY(num value); external num get orientationZ; - external set refDistance(num value); + external set orientationZ(num value); external num get refDistance; - external set maxDistance(num value); + external set refDistance(num value); external num get maxDistance; - external set rolloffFactor(num value); + external set maxDistance(num value); external num get rolloffFactor; - external set coneInnerAngle(num value); + external set rolloffFactor(num value); external num get coneInnerAngle; - external set coneOuterAngle(num value); + external set coneInnerAngle(num value); external num get coneOuterAngle; - external set coneOuterGain(num value); + external set coneOuterAngle(num value); external num get coneOuterGain; + external set coneOuterGain(num value); } /// The **`PeriodicWave`** interface defines a periodic waveform that can be @@ -2442,8 +3224,8 @@ extension type PeriodicWave._(JSObject _) implements JSObject { extension type PeriodicWaveConstraints._(JSObject _) implements JSObject { external factory PeriodicWaveConstraints({bool disableNormalization}); - external set disableNormalization(bool value); external bool get disableNormalization; + external set disableNormalization(bool value); } extension type PeriodicWaveOptions._(JSObject _) implements PeriodicWaveConstraints, JSObject { @@ -2453,10 +3235,10 @@ extension type PeriodicWaveOptions._(JSObject _) JSArray<JSNumber> imag, }); - external set real(JSArray<JSNumber> value); external JSArray<JSNumber> get real; - external set imag(JSArray<JSNumber> value); + external set real(JSArray<JSNumber> value); external JSArray<JSNumber> get imag; + external set imag(JSArray<JSNumber> value); } /// The `ScriptProcessorNode` interface allows the generation, processing, or @@ -2520,8 +3302,17 @@ extension type PeriodicWaveOptions._(JSObject _) /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode). extension type ScriptProcessorNode._(JSObject _) implements AudioNode, JSObject { - external set onaudioprocess(EventHandler value); external EventHandler get onaudioprocess; + external set onaudioprocess(EventHandler value); + + /// The `bufferSize` property of the [ScriptProcessorNode] interface returns + /// an integer representing both the input and output buffer size, in + /// sample-frames. Its value can be a power of 2 value in the range `256` – + /// `16384`. + /// + /// > **Note:** This feature was replaced by + /// > [AudioWorklets](https://developer.mozilla.org/en-US/docs/Web/API/AudioWorklet) + /// > and the [AudioWorkletNode] interface. external int get bufferSize; } @@ -2576,6 +3367,10 @@ extension type StereoPannerNode._(JSObject _) implements AudioNode, JSObject { StereoPannerOptions options, ]); + /// The `pan` property of the [StereoPannerNode] interface is an + /// [a-rate](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam#a-rate) + /// [AudioParam] representing the amount of panning to apply. The value can + /// range between `-1` (full left pan) and `1` (full right pan). external AudioParam get pan; } extension type StereoPannerOptions._(JSObject _) @@ -2587,8 +3382,8 @@ extension type StereoPannerOptions._(JSObject _) num pan, }); - external set pan(num value); external num get pan; + external set pan(num value); } /// The **`WaveShaperNode`** interface represents a non-linear distorter. @@ -2634,10 +3429,40 @@ extension type WaveShaperNode._(JSObject _) implements AudioNode, JSObject { WaveShaperOptions options, ]); - external set curve(JSFloat32Array? value); + /// The `curve` property of the [WaveShaperNode] interface is a `Float32Array` + /// of numbers describing the distortion to apply. + /// + /// The mid-element of the array is applied to any signal value of `0`, the + /// first one to signal values of `-1`, and the last to signal values of `1`; + /// values lower than `-1` or greater than `1` are treated like `-1` or `1` + /// respectively. + /// + /// If necessary, intermediate values of the distortion curve are linearly + /// interpolated. + /// + /// > **Note:** The array can be a `null` value: in that case, no distortion + /// > is applied to the input signal. external JSFloat32Array? get curve; - external set oversample(OverSampleType value); + external set curve(JSFloat32Array? value); + + /// The `oversample` property of the [WaveShaperNode] interface is an + /// enumerated value indicating if oversampling must be used. Oversampling is + /// a technique for creating more samples (up-sampling) before applying a + /// distortion effect to the audio signal. + /// + /// Once applied, the number of samples is reduced to its initial numbers. + /// This leads to better results by avoiding some aliasing, but comes at the + /// expense of a lower precision shaping curve. + /// + /// The possible `oversample` values are: + /// + /// | Value | Effect | + /// | -------- | ---------------------------------------------------------------------- | + /// | `'none'` | Do not perform any oversampling. | + /// | `'2x'` | Double the amount of samples before applying the shaping curve. | + /// | `'4x'` | Multiply by 4 the amount of samples before applying the shaping curve. | external OverSampleType get oversample; + external set oversample(OverSampleType value); } extension type WaveShaperOptions._(JSObject _) implements AudioNodeOptions, JSObject { @@ -2649,10 +3474,10 @@ extension type WaveShaperOptions._(JSObject _) OverSampleType oversample, }); - external set curve(JSArray<JSNumber> value); external JSArray<JSNumber> get curve; - external set oversample(OverSampleType value); + external set curve(JSArray<JSNumber> value); external OverSampleType get oversample; + external set oversample(OverSampleType value); } /// The **`AudioWorklet`** interface of the @@ -2702,8 +3527,23 @@ extension type AudioWorkletGlobalScope._(JSObject _) String name, AudioWorkletProcessorConstructor processorCtor, ); + + /// The read-only **`currentFrame`** property of the [AudioWorkletGlobalScope] + /// interface returns an integer that represents the ever-increasing current + /// sample-frame of the audio block being processed. It is incremented by 128 + /// (the size of a render quantum) after the processing of each audio block. external int get currentFrame; + + /// The read-only **`currentTime`** property of the [AudioWorkletGlobalScope] + /// interface returns a double that represents the ever-increasing context + /// time of the audio block being processed. It is equal to the + /// [BaseAudioContext.currentTime] property of the [BaseAudioContext] the + /// worklet belongs to. external num get currentTime; + + /// The read-only **`sampleRate`** property of the [AudioWorkletGlobalScope] + /// interface returns a float that represents the sample rate of the + /// associated [BaseAudioContext] the worklet belongs to. external num get sampleRate; external int get renderQuantumSize; external MessagePort get port; @@ -2747,10 +3587,26 @@ extension type AudioWorkletNode._(JSObject _) implements AudioNode, JSObject { AudioWorkletNodeOptions options, ]); + /// The read-only **`parameters`** property of the + /// [AudioWorkletNode] interface returns the associated + /// [AudioParamMap] — that is, a `Map`-like collection of + /// [AudioParam] objects. They are instantiated during creation of the + /// underlying [AudioWorkletProcessor] according to its + /// [AudioWorkletProcessor.parameterDescriptors] static + /// getter. external AudioParamMap get parameters; + + /// The read-only **`port`** property of the + /// [AudioWorkletNode] interface returns the associated + /// [MessagePort]. It can be used to communicate between the node and its + /// associated [AudioWorkletProcessor]. + /// + /// > **Note:** The port at the other end of the channel is + /// > available under the [AudioWorkletProcessor.port] property of the + /// > processor. external MessagePort get port; - external set onprocessorerror(EventHandler value); external EventHandler get onprocessorerror; + external set onprocessorerror(EventHandler value); } extension type AudioWorkletNodeOptions._(JSObject _) implements AudioNodeOptions, JSObject { @@ -2765,16 +3621,16 @@ extension type AudioWorkletNodeOptions._(JSObject _) JSObject processorOptions, }); - external set numberOfInputs(int value); external int get numberOfInputs; - external set numberOfOutputs(int value); + external set numberOfInputs(int value); external int get numberOfOutputs; - external set outputChannelCount(JSArray<JSNumber> value); + external set numberOfOutputs(int value); external JSArray<JSNumber> get outputChannelCount; - external set parameterData(JSObject value); + external set outputChannelCount(JSArray<JSNumber> value); external JSObject get parameterData; - external set processorOptions(JSObject value); + external set parameterData(JSObject value); external JSObject get processorOptions; + external set processorOptions(JSObject value); } /// The **`AudioWorkletProcessor`** interface of the @@ -2790,6 +3646,13 @@ extension type AudioWorkletNodeOptions._(JSObject _) extension type AudioWorkletProcessor._(JSObject _) implements JSObject { external factory AudioWorkletProcessor(); + /// The read-only **`port`** property of the + /// [AudioWorkletProcessor] interface returns the associated + /// [MessagePort]. It can be used to communicate between the processor and the + /// [AudioWorkletNode] to which it belongs. + /// + /// > **Note:** The port at the other end of the channel is + /// > available under the [AudioWorkletNode.port] property of the node. external MessagePort get port; } @@ -2817,14 +3680,14 @@ extension type AudioParamDescriptor._(JSObject _) implements JSObject { AutomationRate automationRate, }); - external set name(String value); external String get name; - external set defaultValue(num value); + external set name(String value); external num get defaultValue; - external set minValue(num value); + external set defaultValue(num value); external num get minValue; - external set maxValue(num value); + external set minValue(num value); external num get maxValue; - external set automationRate(AutomationRate value); + external set maxValue(num value); external AutomationRate get automationRate; + external set automationRate(AutomationRate value); } diff --git a/lib/src/dom/webauthn.dart b/lib/src/dom/webauthn.dart index 7fc068dc..05a74fb1 100644 --- a/lib/src/dom/webauthn.dart +++ b/lib/src/dom/webauthn.dart @@ -131,8 +131,58 @@ extension type PublicKeyCredential._(JSObject _) /// party server when registering or authenticating a user. /// It not intended to be called directly in web app code. external PublicKeyCredentialJSON toJSON(); + + /// The **`rawId`** read-only property of the + /// [PublicKeyCredential] interface is an `ArrayBuffer` object + /// containing the identifier of the credentials. + /// + /// The [PublicKeyCredential.id] property is a + /// [base64url encoded](https://developer.mozilla.org/en-US/docs/Glossary/Base64) + /// version of this identifier. + /// + /// > **Note:** This property may only be used in top-level contexts and will + /// > not be available in an `iframe` for example. external JSArrayBuffer get rawId; + + /// The **`response`** read-only property of the + /// [PublicKeyCredential] interface is an [AuthenticatorResponse] + /// object which is sent from the authenticator to the user agent for the + /// creation/fetching + /// of credentials. The information contained in this response will be used by + /// the relying + /// party's server to verify the demand is legitimate. + /// + /// An `AuthenticatorResponse` is either: + /// + /// - an [AuthenticatorAttestationResponse] (when the + /// `PublicKeyCredential` is created via + /// [CredentialsContainer.create]) + /// - an [AuthenticatorAssertionResponse] (when the + /// `PublicKeyCredential` is obtained via + /// [CredentialsContainer.get]). + /// + /// In order to validate the _creation_ of credentials, a relying party's + /// server + /// needs both: + /// + /// - this response + /// - the extensions of the client (given by + /// [PublicKeyCredential.getClientExtensionResults]) to validate the + /// demand. + /// + /// > **Note:** When validating the fetching of existing credentials, the + /// > whole `PublicKeyCredential` object and the client extensions are + /// > necessary + /// > for the relying party's server. + /// + /// > **Note:** This property may only be used in top-level contexts and will + /// > not be available in an `iframe` for example. external AuthenticatorResponse get response; + + /// The **`authenticatorAttachment`** read-only property of the + /// [PublicKeyCredential] interface is a string that indicates the general + /// category of authenticator used during the associated + /// [CredentialsContainer.create] or [CredentialsContainer.get] call. external String? get authenticatorAttachment; } extension type RegistrationResponseJSON._(JSObject _) implements JSObject { @@ -145,19 +195,19 @@ extension type RegistrationResponseJSON._(JSObject _) implements JSObject { required String type, }); - external set id(Base64URLString value); external Base64URLString get id; - external set rawId(Base64URLString value); + external set id(Base64URLString value); external Base64URLString get rawId; - external set response(AuthenticatorAttestationResponseJSON value); + external set rawId(Base64URLString value); external AuthenticatorAttestationResponseJSON get response; - external set authenticatorAttachment(String value); + external set response(AuthenticatorAttestationResponseJSON value); external String get authenticatorAttachment; + external set authenticatorAttachment(String value); + external AuthenticationExtensionsClientOutputsJSON get clientExtensionResults; external set clientExtensionResults( AuthenticationExtensionsClientOutputsJSON value); - external AuthenticationExtensionsClientOutputsJSON get clientExtensionResults; - external set type(String value); external String get type; + external set type(String value); } extension type AuthenticatorAttestationResponseJSON._(JSObject _) implements JSObject { @@ -170,18 +220,18 @@ extension type AuthenticatorAttestationResponseJSON._(JSObject _) required Base64URLString attestationObject, }); - external set clientDataJSON(Base64URLString value); external Base64URLString get clientDataJSON; - external set authenticatorData(Base64URLString value); + external set clientDataJSON(Base64URLString value); external Base64URLString get authenticatorData; - external set transports(JSArray<JSString> value); + external set authenticatorData(Base64URLString value); external JSArray<JSString> get transports; - external set publicKey(Base64URLString value); + external set transports(JSArray<JSString> value); external Base64URLString get publicKey; - external set publicKeyAlgorithm(int value); + external set publicKey(Base64URLString value); external int get publicKeyAlgorithm; - external set attestationObject(Base64URLString value); + external set publicKeyAlgorithm(int value); external Base64URLString get attestationObject; + external set attestationObject(Base64URLString value); } extension type AuthenticationResponseJSON._(JSObject _) implements JSObject { external factory AuthenticationResponseJSON({ @@ -193,19 +243,19 @@ extension type AuthenticationResponseJSON._(JSObject _) implements JSObject { required String type, }); - external set id(Base64URLString value); external Base64URLString get id; - external set rawId(Base64URLString value); + external set id(Base64URLString value); external Base64URLString get rawId; - external set response(AuthenticatorAssertionResponseJSON value); + external set rawId(Base64URLString value); external AuthenticatorAssertionResponseJSON get response; - external set authenticatorAttachment(String value); + external set response(AuthenticatorAssertionResponseJSON value); external String get authenticatorAttachment; + external set authenticatorAttachment(String value); + external AuthenticationExtensionsClientOutputsJSON get clientExtensionResults; external set clientExtensionResults( AuthenticationExtensionsClientOutputsJSON value); - external AuthenticationExtensionsClientOutputsJSON get clientExtensionResults; - external set type(String value); external String get type; + external set type(String value); } extension type AuthenticatorAssertionResponseJSON._(JSObject _) implements JSObject { @@ -216,14 +266,14 @@ extension type AuthenticatorAssertionResponseJSON._(JSObject _) Base64URLString userHandle, }); - external set clientDataJSON(Base64URLString value); external Base64URLString get clientDataJSON; - external set authenticatorData(Base64URLString value); + external set clientDataJSON(Base64URLString value); external Base64URLString get authenticatorData; - external set signature(Base64URLString value); + external set authenticatorData(Base64URLString value); external Base64URLString get signature; - external set userHandle(Base64URLString value); + external set signature(Base64URLString value); external Base64URLString get userHandle; + external set userHandle(Base64URLString value); } extension type AuthenticationExtensionsClientOutputsJSON._(JSObject _) implements JSObject { @@ -245,29 +295,29 @@ extension type PublicKeyCredentialCreationOptionsJSON._(JSObject _) AuthenticationExtensionsClientInputsJSON extensions, }); - external set rp(PublicKeyCredentialRpEntity value); external PublicKeyCredentialRpEntity get rp; - external set user(PublicKeyCredentialUserEntityJSON value); + external set rp(PublicKeyCredentialRpEntity value); external PublicKeyCredentialUserEntityJSON get user; - external set challenge(Base64URLString value); + external set user(PublicKeyCredentialUserEntityJSON value); external Base64URLString get challenge; - external set pubKeyCredParams(JSArray<PublicKeyCredentialParameters> value); + external set challenge(Base64URLString value); external JSArray<PublicKeyCredentialParameters> get pubKeyCredParams; - external set timeout(int value); + external set pubKeyCredParams(JSArray<PublicKeyCredentialParameters> value); external int get timeout; + external set timeout(int value); + external JSArray<PublicKeyCredentialDescriptorJSON> get excludeCredentials; external set excludeCredentials( JSArray<PublicKeyCredentialDescriptorJSON> value); - external JSArray<PublicKeyCredentialDescriptorJSON> get excludeCredentials; - external set authenticatorSelection(AuthenticatorSelectionCriteria value); external AuthenticatorSelectionCriteria get authenticatorSelection; - external set hints(JSArray<JSString> value); + external set authenticatorSelection(AuthenticatorSelectionCriteria value); external JSArray<JSString> get hints; - external set attestation(String value); + external set hints(JSArray<JSString> value); external String get attestation; - external set attestationFormats(JSArray<JSString> value); + external set attestation(String value); external JSArray<JSString> get attestationFormats; - external set extensions(AuthenticationExtensionsClientInputsJSON value); + external set attestationFormats(JSArray<JSString> value); external AuthenticationExtensionsClientInputsJSON get extensions; + external set extensions(AuthenticationExtensionsClientInputsJSON value); } extension type PublicKeyCredentialUserEntityJSON._(JSObject _) implements JSObject { @@ -277,12 +327,12 @@ extension type PublicKeyCredentialUserEntityJSON._(JSObject _) required String displayName, }); - external set id(Base64URLString value); external Base64URLString get id; - external set name(String value); + external set id(Base64URLString value); external String get name; - external set displayName(String value); + external set name(String value); external String get displayName; + external set displayName(String value); } extension type PublicKeyCredentialDescriptorJSON._(JSObject _) implements JSObject { @@ -292,12 +342,12 @@ extension type PublicKeyCredentialDescriptorJSON._(JSObject _) JSArray<JSString> transports, }); - external set id(Base64URLString value); external Base64URLString get id; - external set type(String value); + external set id(Base64URLString value); external String get type; - external set transports(JSArray<JSString> value); + external set type(String value); external JSArray<JSString> get transports; + external set transports(JSArray<JSString> value); } extension type AuthenticationExtensionsClientInputsJSON._(JSObject _) implements JSObject { @@ -315,21 +365,21 @@ extension type PublicKeyCredentialRequestOptionsJSON._(JSObject _) AuthenticationExtensionsClientInputsJSON extensions, }); - external set challenge(Base64URLString value); external Base64URLString get challenge; - external set timeout(int value); + external set challenge(Base64URLString value); external int get timeout; - external set rpId(String value); + external set timeout(int value); external String get rpId; + external set rpId(String value); + external JSArray<PublicKeyCredentialDescriptorJSON> get allowCredentials; external set allowCredentials( JSArray<PublicKeyCredentialDescriptorJSON> value); - external JSArray<PublicKeyCredentialDescriptorJSON> get allowCredentials; - external set userVerification(String value); external String get userVerification; - external set hints(JSArray<JSString> value); + external set userVerification(String value); external JSArray<JSString> get hints; - external set extensions(AuthenticationExtensionsClientInputsJSON value); + external set hints(JSArray<JSString> value); external AuthenticationExtensionsClientInputsJSON get extensions; + external set extensions(AuthenticationExtensionsClientInputsJSON value); } /// The **`AuthenticatorResponse`** interface of the @@ -344,6 +394,15 @@ extension type PublicKeyCredentialRequestOptionsJSON._(JSObject _) /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorResponse). extension type AuthenticatorResponse._(JSObject _) implements JSObject { + /// The **`clientDataJSON`** property of the [AuthenticatorResponse] interface + /// stores a + /// [JSON](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON) + /// string in an + /// `ArrayBuffer`, representing the client data that was passed to + /// [CredentialsContainer.create] or [CredentialsContainer.get]. This property + /// is only accessed on one of the child objects of `AuthenticatorResponse`, + /// specifically [AuthenticatorAttestationResponse] or + /// [AuthenticatorAssertionResponse]. external JSArrayBuffer get clientDataJSON; } @@ -413,6 +472,21 @@ extension type AuthenticatorAttestationResponse._(JSObject _) /// algorithm type. This information will need to be stored in order to verify /// future authentication operations (i.e., using [CredentialsContainer.get]). external COSEAlgorithmIdentifier getPublicKeyAlgorithm(); + + /// The **`attestationObject`** property of the + /// [AuthenticatorAttestationResponse] interface returns an + /// `ArrayBuffer` containing the new public key, as well as signature over the + /// entire `attestationObject` with a private key that is stored in the + /// authenticator when it is manufactured. + /// + /// As part of the [CredentialsContainer.create] call, an authenticator will + /// create a new keypair as well as an `attestationObject` for that keypair. + /// The public key + /// that corresponds to the private key that has created the attestation + /// signature is well + /// known; however, there are various well known attestation public key chains + /// for different + /// ecosystems (for example, Android or TPM attestations). external JSArrayBuffer get attestationObject; } @@ -439,8 +513,35 @@ extension type AuthenticatorAttestationResponse._(JSObject _) /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse). extension type AuthenticatorAssertionResponse._(JSObject _) implements AuthenticatorResponse, JSObject { + /// The **`authenticatorData`** property of the + /// [AuthenticatorAssertionResponse] interface returns an `ArrayBuffer` + /// containing information from the authenticator such as the Relying Party ID + /// Hash (rpIdHash), a signature counter, test of user presence, user + /// verification flags, and any extensions processed by the authenticator. external JSArrayBuffer get authenticatorData; + + /// The **`signature`** read-only property of the + /// [AuthenticatorAssertionResponse] interface is an `ArrayBuffer` + /// object which is the signature of the authenticator for both + /// [AuthenticatorAssertionResponse.authenticatorData] and a SHA-256 hash of + /// the client data + /// ([AuthenticatorResponse.clientDataJSON]). + /// + /// This signature will be sent to the server for control, as part of the + /// response. It + /// provides the proof that an authenticator does possess the private key + /// which was used for + /// the credential's generation. external JSArrayBuffer get signature; + + /// The **`userHandle`** read-only property of the + /// [AuthenticatorAssertionResponse] interface is an `ArrayBuffer` object + /// providing an opaque identifier for the given user. Such an identifier can + /// be used by the relying party's server to link the user account with its + /// corresponding credentials and other data. + /// + /// This value is specified as `user.id` in the options passed to the + /// originating [CredentialsContainer.create] call. external JSArrayBuffer? get userHandle; } extension type PublicKeyCredentialParameters._(JSObject _) implements JSObject { @@ -449,10 +550,10 @@ extension type PublicKeyCredentialParameters._(JSObject _) implements JSObject { required COSEAlgorithmIdentifier alg, }); - external set type(String value); external String get type; - external set alg(COSEAlgorithmIdentifier value); + external set type(String value); external COSEAlgorithmIdentifier get alg; + external set alg(COSEAlgorithmIdentifier value); } extension type PublicKeyCredentialCreationOptions._(JSObject _) implements JSObject { @@ -470,34 +571,34 @@ extension type PublicKeyCredentialCreationOptions._(JSObject _) AuthenticationExtensionsClientInputs extensions, }); - external set rp(PublicKeyCredentialRpEntity value); external PublicKeyCredentialRpEntity get rp; - external set user(PublicKeyCredentialUserEntity value); + external set rp(PublicKeyCredentialRpEntity value); external PublicKeyCredentialUserEntity get user; - external set challenge(BufferSource value); + external set user(PublicKeyCredentialUserEntity value); external BufferSource get challenge; - external set pubKeyCredParams(JSArray<PublicKeyCredentialParameters> value); + external set challenge(BufferSource value); external JSArray<PublicKeyCredentialParameters> get pubKeyCredParams; - external set timeout(int value); + external set pubKeyCredParams(JSArray<PublicKeyCredentialParameters> value); external int get timeout; - external set excludeCredentials(JSArray<PublicKeyCredentialDescriptor> value); + external set timeout(int value); external JSArray<PublicKeyCredentialDescriptor> get excludeCredentials; - external set authenticatorSelection(AuthenticatorSelectionCriteria value); + external set excludeCredentials(JSArray<PublicKeyCredentialDescriptor> value); external AuthenticatorSelectionCriteria get authenticatorSelection; - external set hints(JSArray<JSString> value); + external set authenticatorSelection(AuthenticatorSelectionCriteria value); external JSArray<JSString> get hints; - external set attestation(String value); + external set hints(JSArray<JSString> value); external String get attestation; - external set attestationFormats(JSArray<JSString> value); + external set attestation(String value); external JSArray<JSString> get attestationFormats; - external set extensions(AuthenticationExtensionsClientInputs value); + external set attestationFormats(JSArray<JSString> value); external AuthenticationExtensionsClientInputs get extensions; + external set extensions(AuthenticationExtensionsClientInputs value); } extension type PublicKeyCredentialEntity._(JSObject _) implements JSObject { external factory PublicKeyCredentialEntity({required String name}); - external set name(String value); external String get name; + external set name(String value); } extension type PublicKeyCredentialRpEntity._(JSObject _) implements PublicKeyCredentialEntity, JSObject { @@ -506,8 +607,8 @@ extension type PublicKeyCredentialRpEntity._(JSObject _) String id, }); - external set id(String value); external String get id; + external set id(String value); } extension type PublicKeyCredentialUserEntity._(JSObject _) implements PublicKeyCredentialEntity, JSObject { @@ -517,10 +618,10 @@ extension type PublicKeyCredentialUserEntity._(JSObject _) required String displayName, }); - external set id(BufferSource value); external BufferSource get id; - external set displayName(String value); + external set id(BufferSource value); external String get displayName; + external set displayName(String value); } extension type AuthenticatorSelectionCriteria._(JSObject _) implements JSObject { @@ -531,14 +632,14 @@ extension type AuthenticatorSelectionCriteria._(JSObject _) String userVerification, }); - external set authenticatorAttachment(String value); external String get authenticatorAttachment; - external set residentKey(String value); + external set authenticatorAttachment(String value); external String get residentKey; - external set requireResidentKey(bool value); + external set residentKey(String value); external bool get requireResidentKey; - external set userVerification(String value); + external set requireResidentKey(bool value); external String get userVerification; + external set userVerification(String value); } extension type PublicKeyCredentialRequestOptions._(JSObject _) implements JSObject { @@ -552,20 +653,20 @@ extension type PublicKeyCredentialRequestOptions._(JSObject _) AuthenticationExtensionsClientInputs extensions, }); - external set challenge(BufferSource value); external BufferSource get challenge; - external set timeout(int value); + external set challenge(BufferSource value); external int get timeout; - external set rpId(String value); + external set timeout(int value); external String get rpId; - external set allowCredentials(JSArray<PublicKeyCredentialDescriptor> value); + external set rpId(String value); external JSArray<PublicKeyCredentialDescriptor> get allowCredentials; - external set userVerification(String value); + external set allowCredentials(JSArray<PublicKeyCredentialDescriptor> value); external String get userVerification; - external set hints(JSArray<JSString> value); + external set userVerification(String value); external JSArray<JSString> get hints; - external set extensions(AuthenticationExtensionsClientInputs value); + external set hints(JSArray<JSString> value); external AuthenticationExtensionsClientInputs get extensions; + external set extensions(AuthenticationExtensionsClientInputs value); } extension type AuthenticationExtensionsClientInputs._(JSObject _) implements JSObject { @@ -579,22 +680,22 @@ extension type AuthenticationExtensionsClientInputs._(JSObject _) AuthenticationExtensionsSupplementalPubKeysInputs supplementalPubKeys, }); - external set appid(String value); external String get appid; - external set appidExclude(String value); + external set appid(String value); external String get appidExclude; - external set credProps(bool value); + external set appidExclude(String value); external bool get credProps; - external set prf(AuthenticationExtensionsPRFInputs value); + external set credProps(bool value); external AuthenticationExtensionsPRFInputs get prf; - external set largeBlob(AuthenticationExtensionsLargeBlobInputs value); + external set prf(AuthenticationExtensionsPRFInputs value); external AuthenticationExtensionsLargeBlobInputs get largeBlob; - external set uvm(bool value); + external set largeBlob(AuthenticationExtensionsLargeBlobInputs value); external bool get uvm; - external set supplementalPubKeys( - AuthenticationExtensionsSupplementalPubKeysInputs value); + external set uvm(bool value); external AuthenticationExtensionsSupplementalPubKeysInputs get supplementalPubKeys; + external set supplementalPubKeys( + AuthenticationExtensionsSupplementalPubKeysInputs value); } extension type AuthenticationExtensionsClientOutputs._(JSObject _) implements JSObject { @@ -608,22 +709,22 @@ extension type AuthenticationExtensionsClientOutputs._(JSObject _) AuthenticationExtensionsSupplementalPubKeysOutputs supplementalPubKeys, }); - external set appid(bool value); external bool get appid; - external set appidExclude(bool value); + external set appid(bool value); external bool get appidExclude; - external set credProps(CredentialPropertiesOutput value); + external set appidExclude(bool value); external CredentialPropertiesOutput get credProps; - external set prf(AuthenticationExtensionsPRFOutputs value); + external set credProps(CredentialPropertiesOutput value); external AuthenticationExtensionsPRFOutputs get prf; - external set largeBlob(AuthenticationExtensionsLargeBlobOutputs value); + external set prf(AuthenticationExtensionsPRFOutputs value); external AuthenticationExtensionsLargeBlobOutputs get largeBlob; - external set uvm(UvmEntries value); + external set largeBlob(AuthenticationExtensionsLargeBlobOutputs value); external UvmEntries get uvm; - external set supplementalPubKeys( - AuthenticationExtensionsSupplementalPubKeysOutputs value); + external set uvm(UvmEntries value); external AuthenticationExtensionsSupplementalPubKeysOutputs get supplementalPubKeys; + external set supplementalPubKeys( + AuthenticationExtensionsSupplementalPubKeysOutputs value); } extension type CollectedClientData._(JSObject _) implements JSObject { external factory CollectedClientData({ @@ -634,16 +735,16 @@ extension type CollectedClientData._(JSObject _) implements JSObject { bool crossOrigin, }); - external set type(String value); external String get type; - external set challenge(String value); + external set type(String value); external String get challenge; - external set origin(String value); + external set challenge(String value); external String get origin; - external set topOrigin(String value); + external set origin(String value); external String get topOrigin; - external set crossOrigin(bool value); + external set topOrigin(String value); external bool get crossOrigin; + external set crossOrigin(bool value); } extension type TokenBinding._(JSObject _) implements JSObject { external factory TokenBinding({ @@ -651,10 +752,10 @@ extension type TokenBinding._(JSObject _) implements JSObject { String id, }); - external set status(String value); external String get status; - external set id(String value); + external set status(String value); external String get id; + external set id(String value); } extension type PublicKeyCredentialDescriptor._(JSObject _) implements JSObject { external factory PublicKeyCredentialDescriptor({ @@ -663,12 +764,12 @@ extension type PublicKeyCredentialDescriptor._(JSObject _) implements JSObject { JSArray<JSString> transports, }); - external set type(String value); external String get type; - external set id(BufferSource value); + external set type(String value); external BufferSource get id; - external set transports(JSArray<JSString> value); + external set id(BufferSource value); external JSArray<JSString> get transports; + external set transports(JSArray<JSString> value); } extension type CredentialPropertiesOutput._(JSObject _) implements JSObject { external factory CredentialPropertiesOutput({ @@ -676,10 +777,10 @@ extension type CredentialPropertiesOutput._(JSObject _) implements JSObject { String authenticatorDisplayName, }); - external set rk(bool value); external bool get rk; - external set authenticatorDisplayName(String value); + external set rk(bool value); external String get authenticatorDisplayName; + external set authenticatorDisplayName(String value); } extension type AuthenticationExtensionsPRFValues._(JSObject _) implements JSObject { @@ -688,10 +789,10 @@ extension type AuthenticationExtensionsPRFValues._(JSObject _) BufferSource second, }); - external set first(BufferSource value); external BufferSource get first; - external set second(BufferSource value); + external set first(BufferSource value); external BufferSource get second; + external set second(BufferSource value); } extension type AuthenticationExtensionsPRFInputs._(JSObject _) implements JSObject { @@ -700,10 +801,10 @@ extension type AuthenticationExtensionsPRFInputs._(JSObject _) JSObject evalByCredential, }); - external set eval(AuthenticationExtensionsPRFValues value); external AuthenticationExtensionsPRFValues get eval; - external set evalByCredential(JSObject value); + external set eval(AuthenticationExtensionsPRFValues value); external JSObject get evalByCredential; + external set evalByCredential(JSObject value); } extension type AuthenticationExtensionsPRFOutputs._(JSObject _) implements JSObject { @@ -712,10 +813,10 @@ extension type AuthenticationExtensionsPRFOutputs._(JSObject _) AuthenticationExtensionsPRFValues results, }); - external set enabled(bool value); external bool get enabled; - external set results(AuthenticationExtensionsPRFValues value); + external set enabled(bool value); external AuthenticationExtensionsPRFValues get results; + external set results(AuthenticationExtensionsPRFValues value); } extension type AuthenticationExtensionsLargeBlobInputs._(JSObject _) implements JSObject { @@ -725,12 +826,12 @@ extension type AuthenticationExtensionsLargeBlobInputs._(JSObject _) BufferSource write, }); - external set support(String value); external String get support; - external set read(bool value); + external set support(String value); external bool get read; - external set write(BufferSource value); + external set read(bool value); external BufferSource get write; + external set write(BufferSource value); } extension type AuthenticationExtensionsLargeBlobOutputs._(JSObject _) implements JSObject { @@ -740,12 +841,12 @@ extension type AuthenticationExtensionsLargeBlobOutputs._(JSObject _) bool written, }); - external set supported(bool value); external bool get supported; - external set blob(JSArrayBuffer value); + external set supported(bool value); external JSArrayBuffer get blob; - external set written(bool value); + external set blob(JSArrayBuffer value); external bool get written; + external set written(bool value); } extension type AuthenticationExtensionsSupplementalPubKeysInputs._(JSObject _) implements JSObject { @@ -755,18 +856,18 @@ extension type AuthenticationExtensionsSupplementalPubKeysInputs._(JSObject _) JSArray<JSString> attestationFormats, }); - external set scopes(JSArray<JSString> value); external JSArray<JSString> get scopes; - external set attestation(String value); + external set scopes(JSArray<JSString> value); external String get attestation; - external set attestationFormats(JSArray<JSString> value); + external set attestation(String value); external JSArray<JSString> get attestationFormats; + external set attestationFormats(JSArray<JSString> value); } extension type AuthenticationExtensionsSupplementalPubKeysOutputs._(JSObject _) implements JSObject { external factory AuthenticationExtensionsSupplementalPubKeysOutputs( {required JSArray<JSArrayBuffer> signatures}); - external set signatures(JSArray<JSArrayBuffer> value); external JSArray<JSArrayBuffer> get signatures; + external set signatures(JSArray<JSArrayBuffer> value); } diff --git a/lib/src/dom/webcryptoapi.dart b/lib/src/dom/webcryptoapi.dart index 1405de08..00055818 100644 --- a/lib/src/dom/webcryptoapi.dart +++ b/lib/src/dom/webcryptoapi.dart @@ -56,19 +56,23 @@ extension type Crypto._(JSObject _) implements JSObject { /// The **`randomUUID()`** method of the [Crypto] interface is used to /// generate a v4 using a cryptographically secure random number generator. external String randomUUID(); + + /// The **`Crypto.subtle`** read-only property returns a + /// [SubtleCrypto] which can then be used to perform low-level + /// cryptographic operations. external SubtleCrypto get subtle; } extension type Algorithm._(JSObject _) implements JSObject { external factory Algorithm({required String name}); - external set name(String value); external String get name; + external set name(String value); } extension type KeyAlgorithm._(JSObject _) implements JSObject { external factory KeyAlgorithm({required String name}); - external set name(String value); external String get name; + external set name(String value); } /// The **`CryptoKey`** interface of the @@ -85,9 +89,39 @@ extension type KeyAlgorithm._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey). extension type CryptoKey._(JSObject _) implements JSObject { + /// The read-only **`type`** property of the [CryptoKey] interface indicates + /// which kind of key is represented by the object. It can have the following + /// values: + /// + /// - `"secret"`: This key is a secret key for use with a . + /// - `"private"`: This key is the private half of an + /// [`CryptoKeyPair`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair). + /// - `"public"`: This key is the public half of an + /// [`CryptoKeyPair`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair). external KeyType get type; + + /// The read-only **`extractable`** property of the [CryptoKey] interface + /// indicates whether or not the key may be extracted using + /// [`SubtleCrypto.exportKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey) + /// or + /// [`SubtleCrypto.wrapKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/wrapKey). + /// + /// If the key cannot be exported, + /// [`exportKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey) + /// or + /// [`wrapKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/wrapKey) + /// will throw an exception if used to extract it. external bool get extractable; + + /// The read-only **`algorithm`** property of the [CryptoKey] interface + /// returns an object describing the algorithm for which this key can be used, + /// and any associated extra parameters. + /// + /// The object returned depends of the algorithm used to generate the key. external JSObject get algorithm; + + /// The read-only **`usages`** property of the [CryptoKey] interface indicates + /// what can be done with the key. external JSObject get usages; } @@ -359,12 +393,12 @@ extension type RsaOtherPrimesInfo._(JSObject _) implements JSObject { String t, }); - external set r(String value); external String get r; - external set d(String value); + external set r(String value); external String get d; - external set t(String value); + external set d(String value); external String get t; + external set t(String value); } extension type JsonWebKey._(JSObject _) implements JSObject { external factory JsonWebKey({ @@ -388,42 +422,42 @@ extension type JsonWebKey._(JSObject _) implements JSObject { String k, }); - external set kty(String value); external String get kty; - external set use(String value); + external set kty(String value); external String get use; - external set key_ops(JSArray<JSString> value); + external set use(String value); external JSArray<JSString> get key_ops; - external set alg(String value); + external set key_ops(JSArray<JSString> value); external String get alg; - external set ext(bool value); + external set alg(String value); external bool get ext; - external set crv(String value); + external set ext(bool value); external String get crv; - external set x(String value); + external set crv(String value); external String get x; - external set y(String value); + external set x(String value); external String get y; - external set d(String value); + external set y(String value); external String get d; - external set n(String value); + external set d(String value); external String get n; - external set e(String value); + external set n(String value); external String get e; - external set p(String value); + external set e(String value); external String get p; - external set q(String value); + external set p(String value); external String get q; - external set dp(String value); + external set q(String value); external String get dp; - external set dq(String value); + external set dp(String value); external String get dq; - external set qi(String value); + external set dq(String value); external String get qi; - external set oth(JSArray<RsaOtherPrimesInfo> value); + external set qi(String value); external JSArray<RsaOtherPrimesInfo> get oth; - external set k(String value); + external set oth(JSArray<RsaOtherPrimesInfo> value); external String get k; + external set k(String value); } /// The **`CryptoKeyPair`** dictionary of the @@ -450,10 +484,10 @@ extension type CryptoKeyPair._(JSObject _) implements JSObject { CryptoKey privateKey, }); - external set publicKey(CryptoKey value); external CryptoKey get publicKey; - external set privateKey(CryptoKey value); + external set publicKey(CryptoKey value); external CryptoKey get privateKey; + external set privateKey(CryptoKey value); } extension type RsaKeyGenParams._(JSObject _) implements Algorithm, JSObject { external factory RsaKeyGenParams({ @@ -462,10 +496,10 @@ extension type RsaKeyGenParams._(JSObject _) implements Algorithm, JSObject { required BigInteger publicExponent, }); - external set modulusLength(int value); external int get modulusLength; - external set publicExponent(BigInteger value); + external set modulusLength(int value); external BigInteger get publicExponent; + external set publicExponent(BigInteger value); } /// The **`RsaHashedKeyGenParams`** dictionary of the @@ -491,8 +525,8 @@ extension type RsaHashedKeyGenParams._(JSObject _) required HashAlgorithmIdentifier hash, }); - external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; + external set hash(HashAlgorithmIdentifier value); } extension type RsaKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { external factory RsaKeyAlgorithm({ @@ -501,10 +535,10 @@ extension type RsaKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { required BigInteger publicExponent, }); - external set modulusLength(int value); external int get modulusLength; - external set publicExponent(BigInteger value); + external set modulusLength(int value); external BigInteger get publicExponent; + external set publicExponent(BigInteger value); } extension type RsaHashedKeyAlgorithm._(JSObject _) implements RsaKeyAlgorithm, JSObject { @@ -515,8 +549,8 @@ extension type RsaHashedKeyAlgorithm._(JSObject _) required KeyAlgorithm hash, }); - external set hash(KeyAlgorithm value); external KeyAlgorithm get hash; + external set hash(KeyAlgorithm value); } /// The **`RsaHashedImportParams`** dictionary of the @@ -540,8 +574,8 @@ extension type RsaHashedImportParams._(JSObject _) required HashAlgorithmIdentifier hash, }); - external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; + external set hash(HashAlgorithmIdentifier value); } /// The **`RsaPssParams`** dictionary of the @@ -561,8 +595,8 @@ extension type RsaPssParams._(JSObject _) implements Algorithm, JSObject { required int saltLength, }); - external set saltLength(int value); external int get saltLength; + external set saltLength(int value); } /// The **`RsaOaepParams`** dictionary of the @@ -583,8 +617,8 @@ extension type RsaOaepParams._(JSObject _) implements Algorithm, JSObject { BufferSource label, }); - external set label(BufferSource value); external BufferSource get label; + external set label(BufferSource value); } /// The **`EcdsaParams`** dictionary of the @@ -604,8 +638,8 @@ extension type EcdsaParams._(JSObject _) implements Algorithm, JSObject { required HashAlgorithmIdentifier hash, }); - external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; + external set hash(HashAlgorithmIdentifier value); } /// The **`EcKeyGenParams`** dictionary of the @@ -627,8 +661,8 @@ extension type EcKeyGenParams._(JSObject _) implements Algorithm, JSObject { required NamedCurve namedCurve, }); - external set namedCurve(NamedCurve value); external NamedCurve get namedCurve; + external set namedCurve(NamedCurve value); } extension type EcKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { external factory EcKeyAlgorithm({ @@ -636,8 +670,8 @@ extension type EcKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { required NamedCurve namedCurve, }); - external set namedCurve(NamedCurve value); external NamedCurve get namedCurve; + external set namedCurve(NamedCurve value); } /// The **`EcKeyImportParams`** dictionary of the @@ -660,8 +694,8 @@ extension type EcKeyImportParams._(JSObject _) implements Algorithm, JSObject { required NamedCurve namedCurve, }); - external set namedCurve(NamedCurve value); external NamedCurve get namedCurve; + external set namedCurve(NamedCurve value); } /// The **`EcdhKeyDeriveParams`** dictionary of the @@ -691,8 +725,8 @@ extension type EcdhKeyDeriveParams._(JSObject _) required CryptoKey public, }); - external set public(CryptoKey value); external CryptoKey get public; + external set public(CryptoKey value); } /// The **`AesCtrParams`** dictionary of the @@ -746,10 +780,10 @@ extension type AesCtrParams._(JSObject _) implements Algorithm, JSObject { required int length, }); - external set counter(BufferSource value); external BufferSource get counter; - external set length(int value); + external set counter(BufferSource value); external int get length; + external set length(int value); } extension type AesKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { external factory AesKeyAlgorithm({ @@ -757,8 +791,8 @@ extension type AesKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { required int length, }); - external set length(int value); external int get length; + external set length(int value); } /// The **`AesKeyGenParams`** dictionary of the @@ -782,8 +816,8 @@ extension type AesKeyGenParams._(JSObject _) implements Algorithm, JSObject { required int length, }); - external set length(int value); external int get length; + external set length(int value); } extension type AesDerivedKeyParams._(JSObject _) implements Algorithm, JSObject { @@ -792,8 +826,8 @@ extension type AesDerivedKeyParams._(JSObject _) required int length, }); - external set length(int value); external int get length; + external set length(int value); } /// The **`AesCbcParams`** dictionary of the @@ -814,8 +848,8 @@ extension type AesCbcParams._(JSObject _) implements Algorithm, JSObject { required BufferSource iv, }); - external set iv(BufferSource value); external BufferSource get iv; + external set iv(BufferSource value); } /// The **`AesGcmParams`** dictionary of the @@ -843,12 +877,12 @@ extension type AesGcmParams._(JSObject _) implements Algorithm, JSObject { int tagLength, }); - external set iv(BufferSource value); external BufferSource get iv; - external set additionalData(BufferSource value); + external set iv(BufferSource value); external BufferSource get additionalData; - external set tagLength(int value); + external set additionalData(BufferSource value); external int get tagLength; + external set tagLength(int value); } /// The **`HmacImportParams`** dictionary of the @@ -870,10 +904,10 @@ extension type HmacImportParams._(JSObject _) implements Algorithm, JSObject { int length, }); - external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; - external set length(int value); + external set hash(HashAlgorithmIdentifier value); external int get length; + external set length(int value); } extension type HmacKeyAlgorithm._(JSObject _) implements KeyAlgorithm, JSObject { @@ -883,10 +917,10 @@ extension type HmacKeyAlgorithm._(JSObject _) required int length, }); - external set hash(KeyAlgorithm value); external KeyAlgorithm get hash; - external set length(int value); + external set hash(KeyAlgorithm value); external int get length; + external set length(int value); } /// The **`HmacKeyGenParams`** dictionary of the @@ -907,10 +941,10 @@ extension type HmacKeyGenParams._(JSObject _) implements Algorithm, JSObject { int length, }); - external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; - external set length(int value); + external set hash(HashAlgorithmIdentifier value); external int get length; + external set length(int value); } /// The **`HkdfParams`** dictionary of the @@ -932,12 +966,12 @@ extension type HkdfParams._(JSObject _) implements Algorithm, JSObject { required BufferSource info, }); - external set hash(HashAlgorithmIdentifier value); external HashAlgorithmIdentifier get hash; - external set salt(BufferSource value); + external set hash(HashAlgorithmIdentifier value); external BufferSource get salt; - external set info(BufferSource value); + external set salt(BufferSource value); external BufferSource get info; + external set info(BufferSource value); } /// The **`Pbkdf2Params`** dictionary of the @@ -959,10 +993,10 @@ extension type Pbkdf2Params._(JSObject _) implements Algorithm, JSObject { required HashAlgorithmIdentifier hash, }); - external set salt(BufferSource value); external BufferSource get salt; - external set iterations(int value); + external set salt(BufferSource value); external int get iterations; - external set hash(HashAlgorithmIdentifier value); + external set iterations(int value); external HashAlgorithmIdentifier get hash; + external set hash(HashAlgorithmIdentifier value); } diff --git a/lib/src/dom/webgl1.dart b/lib/src/dom/webgl1.dart index b8f34ba6..b0f6e194 100644 --- a/lib/src/dom/webgl1.dart +++ b/lib/src/dom/webgl1.dart @@ -48,24 +48,24 @@ extension type WebGLContextAttributes._(JSObject _) implements JSObject { bool desynchronized, }); - external set alpha(bool value); external bool get alpha; - external set depth(bool value); + external set alpha(bool value); external bool get depth; - external set stencil(bool value); + external set depth(bool value); external bool get stencil; - external set antialias(bool value); + external set stencil(bool value); external bool get antialias; - external set premultipliedAlpha(bool value); + external set antialias(bool value); external bool get premultipliedAlpha; - external set preserveDrawingBuffer(bool value); + external set premultipliedAlpha(bool value); external bool get preserveDrawingBuffer; - external set powerPreference(WebGLPowerPreference value); + external set preserveDrawingBuffer(bool value); external WebGLPowerPreference get powerPreference; - external set failIfMajorPerformanceCaveat(bool value); + external set powerPreference(WebGLPowerPreference value); external bool get failIfMajorPerformanceCaveat; - external set desynchronized(bool value); + external set failIfMajorPerformanceCaveat(bool value); external bool get desynchronized; + external set desynchronized(bool value); } /// The **`WebGLObject`** is part of the @@ -193,8 +193,22 @@ extension type WebGLUniformLocation._(JSObject _) implements JSObject {} /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo). extension type WebGLActiveInfo._(JSObject _) implements JSObject { + /// The read-only **`WebGLActiveInfo.size`** property is a `Number` + /// representing the size of the requested data returned by calling the + /// [WebGLRenderingContext.getActiveAttrib] or + /// [WebGLRenderingContext.getActiveUniform] methods. external GLint get size; + + /// The read-only **`WebGLActiveInfo.type`** property represents the type of + /// the requested data returned by calling the + /// [WebGLRenderingContext.getActiveAttrib] or + /// [WebGLRenderingContext.getActiveUniform] methods. external GLenum get type; + + /// The read-only **`WebGLActiveInfo.name`** property represents the name of + /// the requested data returned by calling the + /// [WebGLRenderingContext.getActiveAttrib] or + /// [WebGLRenderingContext.getActiveUniform] methods. external String get name; } @@ -208,8 +222,20 @@ extension type WebGLActiveInfo._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat). extension type WebGLShaderPrecisionFormat._(JSObject _) implements JSObject { + /// The read-only **`WebGLShaderPrecisionFormat.rangeMin`** property returns + /// the base 2 log of the absolute value of the minimum value that can be + /// represented. external GLint get rangeMin; + + /// The read-only **`WebGLShaderPrecisionFormat.rangeMax`** property returns + /// the base 2 log of the absolute value of the maximum value that can be + /// represented. external GLint get rangeMax; + + /// The read-only **`WebGLShaderPrecisionFormat.precision`** property returns + /// the number of bits of precision that can be represented. + /// + /// For integer formats this value is always 0. external GLint get precision; } @@ -1758,14 +1784,72 @@ extension type WebGLRenderingContext._(JSObject _) implements JSObject { GLboolean transpose, Float32List value, ); + + /// The **`WebGLRenderingContext.canvas`** property is a read-only + /// reference to the [HTMLCanvasElement] or [OffscreenCanvas] + /// object that is associated with the context. It might be + /// [`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/null) + /// if it is not + /// associated with a `canvas` element or an [OffscreenCanvas] + /// object. external JSObject get canvas; + + /// The read-only **`WebGLRenderingContext.drawingBufferWidth`** + /// property represents the actual width of the current drawing buffer. It + /// should match the + /// `width` attribute of the `canvas` element associated with + /// this context, but might differ if the implementation is not able to + /// provide the + /// requested width. external GLsizei get drawingBufferWidth; + + /// The read-only **`WebGLRenderingContext.drawingBufferHeight`** + /// property represents the actual height of the current drawing buffer. It + /// should match the + /// `height` attribute of the `canvas` element associated with + /// this context, but might differ if the implementation is not able to + /// provide the + /// requested height. external GLsizei get drawingBufferHeight; external GLenum get drawingBufferFormat; - external set drawingBufferColorSpace(PredefinedColorSpace value); + + /// The **`WebGLRenderingContext.drawingBufferColorSpace`** property specifies + /// the color space of the WebGL drawing buffer. Along with the default + /// (`srgb`), the `display-p3` color space can be used. + /// + /// See + /// [`WebGLRenderingContext.unpackColorSpace`](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/unpackColorSpace) + /// for specifying the color space for textures. external PredefinedColorSpace get drawingBufferColorSpace; - external set unpackColorSpace(PredefinedColorSpace value); + external set drawingBufferColorSpace(PredefinedColorSpace value); + + /// The **`WebGLRenderingContext.unpackColorSpace`** property specifies the + /// color space to convert to when importing textures. Along with the default + /// (`srgb`), the `display-p3` color space can be used. + /// + /// Texture image sources can be the following: + /// + /// - [`ImageBitmap`](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) + /// - [`ImageData`](https://developer.mozilla.org/en-US/docs/Web/API/ImageData) + /// - [`HTMLImageElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement) + /// - [`HTMLCanvasElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) + /// - [`HTMLVideoElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement) + /// - [`OffscreenCanvas`](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas) + /// - [`VideoFrame`](https://developer.mozilla.org/en-US/docs/Web/API/VideoFrame) + /// + /// Textures are imported using the + /// [`WebGLRenderingContext.texImage2D()`](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D) + /// and + /// [`WebGLRenderingContext.texSubImage2D()`](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D) + /// methods and conversion to the specified `unpackColorSpace` color space + /// happens during import. + /// + /// Note that this doesn't apply to + /// [`HTMLImageElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement) + /// when the `UNPACK_COLORSPACE_CONVERSION_WEBGL` pixel storage parameter is + /// set to `NONE`. external PredefinedColorSpace get unpackColorSpace; + external set unpackColorSpace(PredefinedColorSpace value); } /// The **WebContextEvent** interface is part of the @@ -1783,6 +1867,9 @@ extension type WebGLContextEvent._(JSObject _) implements Event, JSObject { WebGLContextEventInit eventInit, ]); + /// The read-only **`WebGLContextEvent.statusMessage`** property contains + /// additional event status information, or is an empty string if no + /// additional information is available. external String get statusMessage; } extension type WebGLContextEventInit._(JSObject _) @@ -1794,6 +1881,6 @@ extension type WebGLContextEventInit._(JSObject _) String statusMessage, }); - external set statusMessage(String value); external String get statusMessage; + external set statusMessage(String value); } diff --git a/lib/src/dom/webgl2.dart b/lib/src/dom/webgl2.dart index 1c3fbb10..c4b0bef7 100644 --- a/lib/src/dom/webgl2.dart +++ b/lib/src/dom/webgl2.dart @@ -2090,8 +2090,8 @@ extension type WebGL2RenderingContext._(JSObject _) implements JSObject { external GLsizei get drawingBufferWidth; external GLsizei get drawingBufferHeight; external GLenum get drawingBufferFormat; - external set drawingBufferColorSpace(PredefinedColorSpace value); external PredefinedColorSpace get drawingBufferColorSpace; - external set unpackColorSpace(PredefinedColorSpace value); + external set drawingBufferColorSpace(PredefinedColorSpace value); external PredefinedColorSpace get unpackColorSpace; + external set unpackColorSpace(PredefinedColorSpace value); } diff --git a/lib/src/dom/webidl.dart b/lib/src/dom/webidl.dart index f5497f09..3e5bc58c 100644 --- a/lib/src/dom/webidl.dart +++ b/lib/src/dom/webidl.dart @@ -65,7 +65,25 @@ extension type DOMException._(JSObject _) implements JSObject { external static int get TIMEOUT_ERR; external static int get INVALID_NODE_TYPE_ERR; external static int get DATA_CLONE_ERR; + + /// The **`name`** read-only property of the + /// [DOMException] interface returns a string that contains + /// one of the strings associated with an + /// [error name](https://developer.mozilla.org/en-US/docs/Web/API/DOMException#error_names). external String get name; + + /// The **`message`** read-only property of the + /// [DOMException] interface returns a string representing + /// a message or description associated with the given + /// [error name](https://developer.mozilla.org/en-US/docs/Web/API/DOMException#error_names). external String get message; + + /// The **`code`** read-only property of the [DOMException] interface returns + /// one of the legacy + /// [error code constants](https://developer.mozilla.org/en-US/docs/Web/API/DOMException#error_names), + /// or `0` if none match. + /// + /// This field is used for historical reasons. New DOM exceptions don't use + /// this anymore: they put this info in the [DOMException.name] attribute. external int get code; } diff --git a/lib/src/dom/webrtc.dart b/lib/src/dom/webrtc.dart index 71d94736..d1ed7639 100644 --- a/lib/src/dom/webrtc.dart +++ b/lib/src/dom/webrtc.dart @@ -56,18 +56,18 @@ extension type RTCConfiguration._(JSObject _) implements JSObject { int iceCandidatePoolSize, }); - external set iceServers(JSArray<RTCIceServer> value); external JSArray<RTCIceServer> get iceServers; - external set iceTransportPolicy(RTCIceTransportPolicy value); + external set iceServers(JSArray<RTCIceServer> value); external RTCIceTransportPolicy get iceTransportPolicy; - external set bundlePolicy(RTCBundlePolicy value); + external set iceTransportPolicy(RTCIceTransportPolicy value); external RTCBundlePolicy get bundlePolicy; - external set rtcpMuxPolicy(RTCRtcpMuxPolicy value); + external set bundlePolicy(RTCBundlePolicy value); external RTCRtcpMuxPolicy get rtcpMuxPolicy; - external set certificates(JSArray<RTCCertificate> value); + external set rtcpMuxPolicy(RTCRtcpMuxPolicy value); external JSArray<RTCCertificate> get certificates; - external set iceCandidatePoolSize(int value); + external set certificates(JSArray<RTCCertificate> value); external int get iceCandidatePoolSize; + external set iceCandidatePoolSize(int value); } extension type RTCIceServer._(JSObject _) implements JSObject { external factory RTCIceServer({ @@ -76,12 +76,12 @@ extension type RTCIceServer._(JSObject _) implements JSObject { String credential, }); - external set urls(JSAny value); external JSAny get urls; - external set username(String value); + external set urls(JSAny value); external String get username; - external set credential(String value); + external set username(String value); external String get credential; + external set credential(String value); } extension type RTCOfferAnswerOptions._(JSObject _) implements JSObject { RTCOfferAnswerOptions() : _ = JSObject(); @@ -94,12 +94,12 @@ extension type RTCOfferOptions._(JSObject _) bool offerToReceiveVideo, }); - external set iceRestart(bool value); external bool get iceRestart; - external set offerToReceiveAudio(bool value); + external set iceRestart(bool value); external bool get offerToReceiveAudio; - external set offerToReceiveVideo(bool value); + external set offerToReceiveAudio(bool value); external bool get offerToReceiveVideo; + external set offerToReceiveVideo(bool value); } extension type RTCAnswerOptions._(JSObject _) implements RTCOfferAnswerOptions, JSObject { @@ -415,36 +415,226 @@ extension type RTCPeerConnection._(JSObject _) /// specified /// [MediaStreamTrack]. external JSPromise<RTCStatsReport> getStats([MediaStreamTrack? selector]); + + /// The read-only property **`RTCPeerConnection.localDescription`** returns an + /// [RTCSessionDescription] describing the session for the local end of the + /// connection. + /// If it has not yet been set, this is `null`. external RTCSessionDescription? get localDescription; + + /// The read-only property + /// **`RTCPeerConnection.currentLocalDescription`** returns an + /// [RTCSessionDescription] object describing the local end of the connection + /// as it was most recently successfully negotiated since the last time the + /// [RTCPeerConnection] finished negotiating and connecting to a remote peer. + /// Also included is a list of any ICE candidates that may already have been + /// generated by + /// the ICE agent since the offer or answer represented by the description was + /// first + /// instantiated. + /// + /// To change the `currentLocalDescription`, call + /// [RTCPeerConnection.setLocalDescription], which triggers a series of + /// events which leads to this value being set. For details on what exactly + /// happens and why + /// the change isn't necessarily instantaneous, see + /// [Pending and current descriptions](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity#pending_and_current_descriptions) + /// in the WebRTC Connectivity page. + /// + /// > **Note:** Unlike [RTCPeerConnection.localDescription], this value + /// > represents the + /// > actual current state of the local end of the connection; + /// > `localDescription` + /// > may specify a description which the connection is currently in the + /// > process of + /// > switching over to. external RTCSessionDescription? get currentLocalDescription; + + /// The read-only property + /// **`RTCPeerConnection.pendingLocalDescription`** returns an + /// [RTCSessionDescription] object describing a pending configuration change + /// for the local end of the connection. This does not describe the connection + /// as it + /// currently stands, but as it may exist in the near future. Use + /// [RTCPeerConnection.currentLocalDescription] or + /// [RTCPeerConnection.localDescription] to get the current state of the + /// endpoint. For details on the difference, see + /// [Pending and current descriptions](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity#pending_and_current_descriptions) + /// in the WebRTC Connectivity page. external RTCSessionDescription? get pendingLocalDescription; + + /// The read-only property + /// **`RTCPeerConnection.remoteDescription`** returns a + /// [RTCSessionDescription] describing the session (which includes + /// configuration and media information) for the remote end of the connection. + /// If this + /// hasn't been set yet, this is `null`. + /// + /// The returned value typically reflects a remote description which has been + /// received over + /// the signaling server (as either an offer or an answer) and then put into + /// effect by your + /// code calling [RTCPeerConnection.setRemoteDescription] in response. external RTCSessionDescription? get remoteDescription; + + /// The read-only property + /// **`RTCPeerConnection.currentRemoteDescription`** returns an + /// [RTCSessionDescription] object describing the remote end of the connection + /// as it was most recently successfully negotiated since the last time the + /// [RTCPeerConnection] finished negotiating and connecting to a remote peer. + /// Also included is a list of any ICE candidates that may already have been + /// generated by + /// the ICE agent since the offer or answer represented by the description was + /// first + /// instantiated. + /// + /// To change the `currentRemoteDescription`, call + /// [RTCPeerConnection.setRemoteDescription], which triggers a series of + /// events which leads to this value being set. For details on what exactly + /// happens and why + /// the change isn't necessarily instantaneous, see + /// [Pending and current descriptions](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity#pending_and_current_descriptions) + /// in the WebRTC Connectivity page. + /// + /// > **Note:** Unlike [RTCPeerConnection.remoteDescription], this value + /// > represents the + /// > actual current state of the local end of the connection; + /// > `remoteDescription` may specify a description which the connection is + /// > currently in the process of switching over to. external RTCSessionDescription? get currentRemoteDescription; + + /// The read-only property + /// **`RTCPeerConnection.pendingRemoteDescription`** returns an + /// [RTCSessionDescription] object describing a pending configuration change + /// for the remote end of the connection. This does not describe the + /// connection as it + /// currently stands, but as it may exist in the near future. Use + /// [RTCPeerConnection.currentRemoteDescription] or + /// [RTCPeerConnection.remoteDescription] to get the current session + /// description for the remote endpoint. For details on the difference, see + /// [Pending and current descriptions](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity#pending_and_current_descriptions) + /// in the WebRTC Connectivity page. external RTCSessionDescription? get pendingRemoteDescription; + + /// The read-only **`signalingState`** property on the + /// [RTCPeerConnection] interface returns a string value + /// describing the state of the signaling process + /// on the local end of the connection + /// while connecting or reconnecting to another peer. + /// See + /// [Signaling](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Session_lifetime#signaling) + /// in our WebRTC session lifetime page. + /// + /// Because the signaling process is a state machine, being able to verify + /// that your code + /// is in the expected state when messages arrive can help avoid unexpected + /// and avoidable + /// failures. For example, if you receive an answer while the `signalingState` + /// isn't `"have-local-offer"`, you know that something is wrong, since you + /// should only receive answers after creating an offer but before an answer + /// has been + /// received and passed into [RTCPeerConnection.setLocalDescription]. Your + /// code will be more reliable if you watch for mismatched states like this + /// and handle them + /// gracefully. + /// + /// This value may also be useful during debugging, for example. + /// + /// In addition, when the value of this property changes, a + /// [RTCPeerConnection.signalingstatechange_event] event is sent to the + /// [RTCPeerConnection] + /// instance. external RTCSignalingState get signalingState; + + /// The read-only property **`RTCPeerConnection.iceGatheringState`** returns a + /// string + /// that describes the connection's ICE gathering state. + /// This lets you detect, for example, when collection of ICE candidates has + /// finished. + /// + /// You can detect when the value of this property changes by watching for an + /// event of type + /// [RTCPeerConnection.icegatheringstatechange_event]. external RTCIceGatheringState get iceGatheringState; + + /// The read-only property **`RTCPeerConnection.iceConnectionState`** returns + /// a string which state of the agent associated with the + /// [RTCPeerConnection]: + /// `new`, `checking`, `connected`, `completed`, + /// `failed`, `disconnected`, and `closed`. + /// + /// It describes the current state of the ICE agent + /// and its connection to the ICE server; + /// that is, the or server. + /// + /// You can detect when this value has changed by watching for the + /// [RTCPeerConnection.iceconnectionstatechange_event] event. external RTCIceConnectionState get iceConnectionState; + + /// The read-only **`connectionState`** property of the [RTCPeerConnection] + /// interface indicates the current state of the peer connection by returning + /// one of the following string values: `new`, `connecting`, `connected`, + /// `disconnected`, `failed`, or `closed`. + /// + /// This state essentially represents the aggregate state of all ICE + /// transports (which are of type [RTCIceTransport] or [RTCDtlsTransport]) + /// being used by the connection. + /// + /// When this property's value changes, a + /// [RTCPeerConnection.connectionstatechange_event] event is sent to the + /// [RTCPeerConnection] instance. external RTCPeerConnectionState get connectionState; + + /// The read-only **[RTCPeerConnection]** property + /// **`canTrickleIceCandidates`** + /// returns a boolean value which indicates whether or not the remote peer can + /// accept + /// [trickled ICE candidates](https://datatracker.ietf.org/doc/html/draft-ietf-mmusic-trickle-ice). + /// + /// **ICE trickling** is the process of continuing to send candidates after + /// the initial offer or answer has already been sent to the other peer. + /// + /// This property is only set after having called + /// [RTCPeerConnection.setRemoteDescription]. Ideally, your signaling + /// protocol provides a way to detect trickling support, so that you don't + /// need to rely on + /// this property. A WebRTC browser will always support trickle ICE. If + /// trickling isn't + /// supported, or you aren't able to tell, you can check for a falsy value for + /// this + /// property and then wait until the value of + /// [RTCPeerConnection.iceGatheringState] changes to + /// `"completed"` before creating and sending the initial offer. That way, the + /// offer contains all of the candidates. external bool? get canTrickleIceCandidates; - external set onnegotiationneeded(EventHandler value); external EventHandler get onnegotiationneeded; - external set onicecandidate(EventHandler value); + external set onnegotiationneeded(EventHandler value); external EventHandler get onicecandidate; - external set onicecandidateerror(EventHandler value); + external set onicecandidate(EventHandler value); external EventHandler get onicecandidateerror; - external set onsignalingstatechange(EventHandler value); + external set onicecandidateerror(EventHandler value); external EventHandler get onsignalingstatechange; - external set oniceconnectionstatechange(EventHandler value); + external set onsignalingstatechange(EventHandler value); external EventHandler get oniceconnectionstatechange; - external set onicegatheringstatechange(EventHandler value); + external set oniceconnectionstatechange(EventHandler value); external EventHandler get onicegatheringstatechange; - external set onconnectionstatechange(EventHandler value); + external set onicegatheringstatechange(EventHandler value); external EventHandler get onconnectionstatechange; - external set ontrack(EventHandler value); + external set onconnectionstatechange(EventHandler value); external EventHandler get ontrack; + external set ontrack(EventHandler value); + + /// The read-only **`sctp`** property on the [RTCPeerConnection] interface + /// returns an [RTCSctpTransport] describing the transport over which SCTP + /// data is being sent and + /// received. + /// If SCTP hasn't been negotiated, this value is `null`. + /// + /// The SCTP transport is used for transmitting and receiving data for any and + /// all [RTCDataChannel]s on the peer connection. external RTCSctpTransport? get sctp; - external set ondatachannel(EventHandler value); external EventHandler get ondatachannel; + external set ondatachannel(EventHandler value); } /// The **`RTCSessionDescription`** interface describes one end of a @@ -472,7 +662,13 @@ extension type RTCSessionDescription._(JSObject _) implements JSObject { /// [RTCSessionDescription.type] and /// [RTCSessionDescription.sdp], are contained in the generated JSON. external JSObject toJSON(); + + /// The property **`RTCSessionDescription.type`** is a read-only + /// string value which describes the description's type. external RTCSdpType get type; + + /// The property **`RTCSessionDescription.sdp`** is a read-only + /// string containing the which describes the session. external String get sdp; } extension type RTCSessionDescriptionInit._(JSObject _) implements JSObject { @@ -481,10 +677,10 @@ extension type RTCSessionDescriptionInit._(JSObject _) implements JSObject { String sdp, }); - external set type(RTCSdpType value); external RTCSdpType get type; - external set sdp(String value); + external set type(RTCSdpType value); external String get sdp; + external set sdp(String value); } extension type RTCLocalSessionDescriptionInit._(JSObject _) implements JSObject { @@ -493,10 +689,10 @@ extension type RTCLocalSessionDescriptionInit._(JSObject _) String sdp, }); - external set type(RTCSdpType value); external RTCSdpType get type; - external set sdp(String value); + external set type(RTCSdpType value); external String get sdp; + external set sdp(String value); } /// The **`RTCIceCandidate`** interface—part of the @@ -530,19 +726,193 @@ extension type RTCIceCandidate._(JSObject _) implements JSObject { /// A stringified version of the object can then be obtained by calling /// `stringify()` on the returned object. external RTCIceCandidateInit toJSON(); + + /// The read-only property **`candidate`** on the [RTCIceCandidate] interface + /// returns a string describing the candidate in detail. + /// Most of the other properties of `RTCIceCandidate` are actually extracted + /// from this string. + /// + /// This property can be configured using the `candidate` property of the + /// object passed into the [RTCIceCandidate.RTCIceCandidate] or + /// [RTCPeerConnection.addIceCandidate]. external String get candidate; + + /// The read-only property **`sdpMid`** on the [RTCIceCandidate] interface + /// returns a string + /// specifying the media stream identification tag of the media component with + /// which the candidate is associated. + /// This ID uniquely identifies a given stream for the component with which + /// the candidate is associated. + /// + /// This property can be configured by specifying the value of the `sdpMid` + /// property in the `candidateInfo` options object that is passed to the + /// [RTCIceCandidate.RTCIceCandidate] constructor. + /// If you call the constructor with an m-line string instead of the options + /// object, the value of `sdpMid` is extracted from the specified candidate + /// m-line string. external String? get sdpMid; + + /// The read-only **`sdpMLineIndex`** property on the [RTCIceCandidate] + /// interface + /// is a zero-based index of the m-line describing the media associated with + /// the candidate. + /// + /// This property can be configured by specifying the value of the + /// `sdpMLineIndex` property in the `candidateInfo` options object that is + /// passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// If you call the constructor with an m-line string instead of the options + /// object, the value of `sdpMLineIndex` is extracted from the specified + /// candidate m-line string. external int? get sdpMLineIndex; + + /// The **[RTCIceCandidate]** + /// interface's read-only **`foundation`** property is a string + /// which uniquely identifies the candidate across multiple transports. + /// + /// The `foundation` can therefore be used to correlate candidates that are + /// present on + /// multiple [RTCIceTransport] objects external String? get foundation; + + /// The read-only **`component`** property + /// on the [RTCIceCandidate] interface is a string which indicates whether + /// the candidate is an + /// [RTP](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Intro_to_RTP) + /// or + /// an RTCP candidate. + /// + /// If a candidate represents both RTP and RTCP multiplexed together, it is + /// reported as an + /// RTP candidate. external RTCIceComponent? get component; + + /// The **[RTCIceCandidate]** interface's read-only **`priority`** property + /// specifies the candidate's priority according to the remote peer; the + /// higher this value is, the better the remote peer considers the candidate + /// to be. + /// + /// The `priority` field's value is set from the `candidateInfo` options + /// object passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `priority` directly in the options object, + /// but its value is automatically extracted from the object's `candidate` + /// a-line, if it's formatted properly. external int? get priority; + + /// The **[RTCIceCandidate]** interface's read-only **`address`** property is + /// a string providing the IP address of the device which is the source of the + /// candidate. + /// The `address` is `null` by default if not otherwise specified. + /// + /// The `address` field's value is set from the `candidateInfo` options object + /// passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `address` directly in the options object, + /// but its value is automatically extracted from the object's `candidate` + /// a-line, if it's formatted properly. external String? get address; + + /// The **[RTCIceCandidate]** interface's read-only **`protocol`** property is + /// a string + /// which indicates whether the candidate uses or as its transport protocol. + /// + /// The `protocol` field's value is set from the `candidateInfo` options + /// object passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `protocol` directly in the options object, + /// but its value is automatically extracted from the object's `candidate` + /// a-line, if it's formatted properly. + /// + /// `protocol` is `null` by default if not specified properly in the SDP, but + /// this is an error condition and will result in a thrown exception when you + /// call [RTCPeerConnection.addIceCandidate]. external RTCIceProtocol? get protocol; + + /// The **[RTCIceCandidate]** interface's read-only **`port`** property + /// contains the port + /// number on the device at the address given by [RTCIceCandidate.address] at + /// which the candidate's peer can be reached. + /// + /// The `port` field's value is set from the `candidateInfo` options object + /// passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `port` directly in the options object, but + /// its value is automatically extracted from the object's `candidate` a-line, + /// if it's formatted properly. external int? get port; + + /// The **[RTCIceCandidate]** interface's read-only **`type`** specifies the + /// type of candidate the object represents. + /// + /// The `type` field's value is set from the `candidateInfo` options object + /// passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `type` directly in the options object, but + /// its value is automatically extracted from the object's `candidate` a-line + /// (the `cand-type` field), if it's formatted properly. external RTCIceCandidateType? get type; + + /// The **[RTCIceCandidate]** interface's read-only **`tcpType`** property is + /// included on TCP candidates to provide additional details about the + /// candidate type. + /// + /// The `tcpType` field's value is set from the `candidateInfo` options object + /// passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `tcpType` directly in the options object, + /// but its value is automatically extracted from the object's `candidate` + /// a-line, if it's formatted properly. external RTCIceTcpCandidateType? get tcpType; + + /// The **[RTCIceCandidate]** interface's read-only **`relatedAddress`** + /// property is a + /// string indicating the **related address** of a relay or reflexive + /// candidate. + /// + /// If the candidate is a host candidate (that is, its + /// [RTCIceCandidate.address] is in fact the real IP address of the remote + /// peer), `relatedAddress` is `null`. + /// + /// The `relatedAddress` field's value is set from the `candidateInfo` options + /// object passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `relatedAddress` directly in the options + /// object, but its value is automatically extracted from the object's + /// `candidate` a-line if it's formatted properly(the `rel-address` field). + /// + /// The related address and port ([RTCIceCandidate.relatedPort]) are not used + /// at all by itself; they are provided + /// for analysis and diagnostic purposes only, and their inclusion may be + /// blocked by security systems, so do not rely on them having non-`null` + /// values. external String? get relatedAddress; + + /// The **[RTCIceCandidate]** interface's read-only **`relatedPort`** property + /// indicates the port number of reflexive or relay candidates. + /// + /// If the candidate is a host candidate (that is, its + /// [RTCIceCandidate.address] is in fact the real IP address of the remote + /// peer), `relatedPort` is `null`. + /// + /// The `relatedPort` field's value is set from the `candidateInfo` options + /// object passed to the [RTCIceCandidate.RTCIceCandidate] constructor. + /// You can't specify the value of `relatedPort` directly in the options + /// object, but its value is automatically extracted from the object's + /// `candidate` a-line, if it's formatted properly (the `rel-port` field). + /// + /// The related address ([RTCIceCandidate.relatedAddress]) and port are not + /// used at all by itself; they are provided for + /// analysis and diagnostic purposes only, and their inclusion may be blocked + /// by security systems, so do not rely on them having non-`null` values. external int? get relatedPort; + + /// The read-only **`usernameFragment`** property on the [RTCIceCandidate] + /// interface is a string indicating the + /// username fragment ("ufrag") that uniquely identifies a single ICE + /// interaction session. + /// + /// This value is specified using the `usernameFragment` property in the + /// `candidateInfo` options object that is passed to the + /// [RTCIceCandidate.RTCIceCandidate] constructor. + /// If you call the constructor with an m-line string instead of the options + /// object, the value of `usernameFragment` is extracted from the specified + /// candidate m-line string. + /// + /// Note that 24 bits of the username fragment are required to be randomized + /// by the browser. See [Randomization](#randomization) below for details. external String? get usernameFragment; external RTCIceServerTransportProtocol? get relayProtocol; external String? get url; @@ -555,14 +925,14 @@ extension type RTCIceCandidateInit._(JSObject _) implements JSObject { String? usernameFragment, }); - external set candidate(String value); external String get candidate; - external set sdpMid(String? value); + external set candidate(String value); external String? get sdpMid; - external set sdpMLineIndex(int? value); + external set sdpMid(String? value); external int? get sdpMLineIndex; - external set usernameFragment(String? value); + external set sdpMLineIndex(int? value); external String? get usernameFragment; + external set usernameFragment(String? value); } /// The **`RTCPeerConnectionIceEvent`** interface represents events that occur @@ -581,6 +951,9 @@ extension type RTCPeerConnectionIceEvent._(JSObject _) RTCPeerConnectionIceEventInit eventInitDict, ]); + /// The read-only **`candidate`** property + /// of the [RTCPeerConnectionIceEvent] interface returns the + /// [RTCIceCandidate] associated with the event. external RTCIceCandidate? get candidate; external String? get url; } @@ -594,10 +967,10 @@ extension type RTCPeerConnectionIceEventInit._(JSObject _) String? url, }); - external set candidate(RTCIceCandidate? value); external RTCIceCandidate? get candidate; - external set url(String? value); + external set candidate(RTCIceCandidate? value); external String? get url; + external set url(String? value); } /// The **`RTCPeerConnectionIceErrorEvent`** interface—based upon the [Event] @@ -616,6 +989,10 @@ extension type RTCPeerConnectionIceErrorEvent._(JSObject _) RTCPeerConnectionIceErrorEventInit eventInitDict, ); + /// The [RTCPeerConnectionIceErrorEvent] property + /// **`address`** is a string which indicates the local IP address + /// being used to communicate with the or server + /// during negotiations. The error which occurred involved this address. external String? get address; external int? get port; external String get url; @@ -635,22 +1012,22 @@ extension type RTCPeerConnectionIceErrorEventInit._(JSObject _) String errorText, }); - external set address(String? value); external String? get address; - external set port(int? value); + external set address(String? value); external int? get port; - external set url(String value); + external set port(int? value); external String get url; - external set errorCode(int value); + external set url(String value); external int get errorCode; - external set errorText(String value); + external set errorCode(int value); external String get errorText; + external set errorText(String value); } extension type RTCCertificateExpiration._(JSObject _) implements JSObject { external factory RTCCertificateExpiration({int expires}); - external set expires(int value); external int get expires; + external set expires(int value); } /// The **`RTCCertificate`** interface of the @@ -676,6 +1053,15 @@ extension type RTCCertificate._(JSObject _) implements JSObject { /// fingerprint values for the set of algorithms supported by both client and /// server should match. external JSArray<RTCDtlsFingerprint> getFingerprints(); + + /// The read-only **`expires`** property of the [RTCCertificate] interface + /// returns the expiration date of the certificate. + /// + /// By default a new certificate is configured with `expires` set to a value + /// of 2592000000 milliseconds, or 30 days. + /// The expiration time cannot exceed 31536000000 milliseconds, or 365 days. + /// It's also useful to note that browsers may further restrict the expiration + /// time of certificates if they choose. external EpochTimeStamp get expires; } extension type RTCRtpTransceiverInit._(JSObject _) implements JSObject { @@ -685,12 +1071,12 @@ extension type RTCRtpTransceiverInit._(JSObject _) implements JSObject { JSArray<RTCRtpEncodingParameters> sendEncodings, }); - external set direction(RTCRtpTransceiverDirection value); external RTCRtpTransceiverDirection get direction; - external set streams(JSArray<MediaStream> value); + external set direction(RTCRtpTransceiverDirection value); external JSArray<MediaStream> get streams; - external set sendEncodings(JSArray<RTCRtpEncodingParameters> value); + external set streams(JSArray<MediaStream> value); external JSArray<RTCRtpEncodingParameters> get sendEncodings; + external set sendEncodings(JSArray<RTCRtpEncodingParameters> value); } /// The **`RTCRtpSender`** interface provides the ability to control and obtain @@ -757,10 +1143,49 @@ extension type RTCRtpSender._(JSObject _) implements JSObject { /// on the [RTCPeerConnection] which owns the sender, returning a `Promise` /// which is fulfilled when the results are available. external JSPromise<RTCStatsReport> getStats(); - external set transform(RTCRtpTransform? value); + + /// The **`transform`** property of the [RTCRtpSender] object is used to + /// insert a transform stream ([TransformStream]) running in a worker thread + /// into the sender pipeline. + /// This allows stream transforms to be applied to encoded video and audio + /// frames after they are output by a codec, and before they are sent. + /// + /// The transform that is to be added is defined using an + /// [RTCRtpScriptTransform] and its associated [Worker]. + /// If the transform is set synchronously immediately after creating the + /// `RTCRtpSender` it will receive the first full frame generated by the + /// sender's encoder. + /// + /// ### Value + /// + /// A [RTCRtpScriptTransform]<!-- or [SFrameTransform] -->, or `null` if the + /// sender has no associated transform stream. external RTCRtpTransform? get transform; + external set transform(RTCRtpTransform? value); + + /// The **`track`** read-only property of + /// the [RTCRtpSender] interface returns the [MediaStreamTrack] + /// which is being handled by the `RTCRtpSender`. external MediaStreamTrack? get track; + + /// The read-only **`transport`** property of an + /// [RTCRtpSender] object provides the [RTCDtlsTransport] object + /// used to interact with the underlying transport over which the sender is + /// exchanging + /// Real-time Transport Control Protocol () packets. + /// + /// This transport is responsible for receiving the data for the media on the + /// sender's + /// [RTCRtpReceiver.track]. external RTCDtlsTransport? get transport; + + /// The read-only **`dtmf`** property on the + /// **[RTCRtpSender]** interface returns a + /// [RTCDTMFSender] object which can be used to send tones + /// over the [RTCPeerConnection]. See + /// [Using DTMF](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Using_DTMF) + /// for details on how to + /// make use of the returned `RTCDTMFSender` object. external RTCDTMFSender? get dtmf; } extension type RTCRtpParameters._(JSObject _) implements JSObject { @@ -770,12 +1195,12 @@ extension type RTCRtpParameters._(JSObject _) implements JSObject { required JSArray<RTCRtpCodecParameters> codecs, }); - external set headerExtensions(JSArray<RTCRtpHeaderExtensionParameters> value); external JSArray<RTCRtpHeaderExtensionParameters> get headerExtensions; - external set rtcp(RTCRtcpParameters value); + external set headerExtensions(JSArray<RTCRtpHeaderExtensionParameters> value); external RTCRtcpParameters get rtcp; - external set codecs(JSArray<RTCRtpCodecParameters> value); + external set rtcp(RTCRtcpParameters value); external JSArray<RTCRtpCodecParameters> get codecs; + external set codecs(JSArray<RTCRtpCodecParameters> value); } extension type RTCRtpSendParameters._(JSObject _) implements RTCRtpParameters, JSObject { @@ -787,10 +1212,10 @@ extension type RTCRtpSendParameters._(JSObject _) required JSArray<RTCRtpEncodingParameters> encodings, }); - external set transactionId(String value); external String get transactionId; - external set encodings(JSArray<RTCRtpEncodingParameters> value); + external set transactionId(String value); external JSArray<RTCRtpEncodingParameters> get encodings; + external set encodings(JSArray<RTCRtpEncodingParameters> value); } extension type RTCRtpReceiveParameters._(JSObject _) implements RTCRtpParameters, JSObject { @@ -803,8 +1228,8 @@ extension type RTCRtpReceiveParameters._(JSObject _) extension type RTCRtpCodingParameters._(JSObject _) implements JSObject { external factory RTCRtpCodingParameters({String rid}); - external set rid(String value); external String get rid; + external set rid(String value); } extension type RTCRtpEncodingParameters._(JSObject _) implements RTCRtpCodingParameters, JSObject { @@ -816,14 +1241,14 @@ extension type RTCRtpEncodingParameters._(JSObject _) num scaleResolutionDownBy, }); - external set active(bool value); external bool get active; - external set maxBitrate(int value); + external set active(bool value); external int get maxBitrate; - external set maxFramerate(num value); + external set maxBitrate(int value); external num get maxFramerate; - external set scaleResolutionDownBy(num value); + external set maxFramerate(num value); external num get scaleResolutionDownBy; + external set scaleResolutionDownBy(num value); } extension type RTCRtcpParameters._(JSObject _) implements JSObject { external factory RTCRtcpParameters({ @@ -831,10 +1256,10 @@ extension type RTCRtcpParameters._(JSObject _) implements JSObject { bool reducedSize, }); - external set cname(String value); external String get cname; - external set reducedSize(bool value); + external set cname(String value); external bool get reducedSize; + external set reducedSize(bool value); } extension type RTCRtpHeaderExtensionParameters._(JSObject _) implements JSObject { @@ -844,12 +1269,12 @@ extension type RTCRtpHeaderExtensionParameters._(JSObject _) bool encrypted, }); - external set uri(String value); external String get uri; - external set id(int value); + external set uri(String value); external int get id; - external set encrypted(bool value); + external set id(int value); external bool get encrypted; + external set encrypted(bool value); } extension type RTCRtpCodec._(JSObject _) implements JSObject { external factory RTCRtpCodec({ @@ -859,14 +1284,14 @@ extension type RTCRtpCodec._(JSObject _) implements JSObject { String sdpFmtpLine, }); - external set mimeType(String value); external String get mimeType; - external set clockRate(int value); + external set mimeType(String value); external int get clockRate; - external set channels(int value); + external set clockRate(int value); external int get channels; - external set sdpFmtpLine(String value); + external set channels(int value); external String get sdpFmtpLine; + external set sdpFmtpLine(String value); } /// The [RTCRtpCodecParameters] dictionary, part of the WebRTC API, is used to @@ -897,8 +1322,8 @@ extension type RTCRtpCodecParameters._(JSObject _) required int payloadType, }); - external set payloadType(int value); external int get payloadType; + external set payloadType(int value); } extension type RTCRtpCapabilities._(JSObject _) implements JSObject { external factory RTCRtpCapabilities({ @@ -906,10 +1331,10 @@ extension type RTCRtpCapabilities._(JSObject _) implements JSObject { required JSArray<RTCRtpHeaderExtensionCapability> headerExtensions, }); - external set codecs(JSArray<RTCRtpCodecCapability> value); external JSArray<RTCRtpCodecCapability> get codecs; - external set headerExtensions(JSArray<RTCRtpHeaderExtensionCapability> value); + external set codecs(JSArray<RTCRtpCodecCapability> value); external JSArray<RTCRtpHeaderExtensionCapability> get headerExtensions; + external set headerExtensions(JSArray<RTCRtpHeaderExtensionCapability> value); } extension type RTCRtpCodecCapability._(JSObject _) implements RTCRtpCodec, JSObject { @@ -924,8 +1349,8 @@ extension type RTCRtpHeaderExtensionCapability._(JSObject _) implements JSObject { external factory RTCRtpHeaderExtensionCapability({required String uri}); - external set uri(String value); external String get uri; + external set uri(String value); } extension type RTCSetParameterOptions._(JSObject _) implements JSObject { RTCSetParameterOptions() : _ = JSObject(); @@ -965,9 +1390,42 @@ extension type RTCRtpReceiver._(JSObject _) implements JSObject { /// on the owning [RTCPeerConnection], returning a `Promise` whose fulfillment /// handler will be called once the results are available. external JSPromise<RTCStatsReport> getStats(); - external set transform(RTCRtpTransform? value); + + /// The **`transform`** property of the [RTCRtpReceiver] object is used to + /// insert a transform stream ([TransformStream]) running in a worker thread + /// into the receiver pipeline. + /// This allows stream transforms to be applied to encoded video and audio + /// frames as they arrive from the packetizer (before they are + /// played/rendered). + /// + /// The transform that is to be added is defined using an + /// [RTCRtpScriptTransform] and its associated [Worker]. + /// If the transform is set in the peer connection + /// [`track` event](https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/track_event) + /// handler, the transform stream will receive the first full incoming frame + /// for the track. + /// + /// ### Value + /// + /// A [RTCRtpScriptTransform]<!-- or [SFrameTransform] -->, or `null` if the + /// receiver has no associated transform stream. external RTCRtpTransform? get transform; + external set transform(RTCRtpTransform? value); + + /// The **`track`** read-only property of the + /// [RTCRtpReceiver] interface returns the [MediaStreamTrack] + /// associated with the current [RTCRtpReceiver] instance. external MediaStreamTrack get track; + + /// The read-only **`transport`** property of an + /// [RTCRtpReceiver] object provides the [RTCDtlsTransport] object + /// used to interact with the underlying transport over which the receiver is + /// exchanging + /// Real-time Transport Control Protocol () packets. + /// + /// This transport is responsible for receiving the data for the media on the + /// receiver's + /// [RTCRtpReceiver.track]. external RTCDtlsTransport? get transport; } extension type RTCRtpContributingSource._(JSObject _) implements JSObject { @@ -978,14 +1436,14 @@ extension type RTCRtpContributingSource._(JSObject _) implements JSObject { required int rtpTimestamp, }); - external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; - external set source(int value); + external set timestamp(DOMHighResTimeStamp value); external int get source; - external set audioLevel(num value); + external set source(int value); external num get audioLevel; - external set rtpTimestamp(int value); + external set audioLevel(num value); external int get rtpTimestamp; + external set rtpTimestamp(int value); } extension type RTCRtpSynchronizationSource._(JSObject _) implements RTCRtpContributingSource, JSObject { @@ -1039,11 +1497,49 @@ extension type RTCRtpTransceiver._(JSObject _) implements JSObject { /// negative characteristics—can be found in /// [Codecs used by WebRTC](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/WebRTC_codecs). external void setCodecPreferences(JSArray<RTCRtpCodecCapability> codecs); + + /// The read-only [RTCRtpTransceiver] interface's + /// **`mid`** property specifies the negotiated media ID + /// (`mid`) which the local and remote peers have agreed upon to uniquely + /// identify the stream's pairing of sender and receiver. external String? get mid; + + /// The read-only **`sender`** property + /// of WebRTC's [RTCRtpTransceiver] interface indicates the + /// [RTCRtpSender] responsible for encoding and sending outgoing media data + /// for the transceiver's stream. external RTCRtpSender get sender; + + /// The read-only **`receiver`** property + /// of WebRTC's [RTCRtpTransceiver] interface indicates the + /// [RTCRtpReceiver] responsible for receiving and decoding incoming media + /// data for the transceiver's stream. external RTCRtpReceiver get receiver; - external set direction(RTCRtpTransceiverDirection value); + + /// The [RTCRtpTransceiver] property **`direction`** is a string that + /// indicates the transceiver's _preferred_ directionality. + /// + /// The directionality indicates whether the transceiver will offer to send + /// and/or receive data, or whether it is inactive or stopped (terminated). + /// When setting the transceiver's direction, the value is not applied + /// immediately. + /// The _current_ direction is indicated by the + /// [RTCRtpTransceiver.currentDirection] property. external RTCRtpTransceiverDirection get direction; + external set direction(RTCRtpTransceiverDirection value); + + /// The read-only [RTCRtpTransceiver] property **`currentDirection`** is a + /// string which indicates the current negotiated directionality of the + /// transceiver. + /// + /// The directionality indicates whether the transceiver will offer to send + /// and/or receive data, or whether it is inactive or stopped and won't send + /// or receive data. + /// + /// The transceiver's preferred directionality can be set and read using the + /// [RTCRtpTransceiver.direction] property. + /// Changing the `direction` triggers a renegotiation, which may eventually + /// result in the `currentDirection` also changing. external RTCRtpTransceiverDirection? get currentDirection; } @@ -1067,12 +1563,20 @@ extension type RTCRtpTransceiver._(JSObject _) implements JSObject { /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/RTCDtlsTransport). extension type RTCDtlsTransport._(JSObject _) implements EventTarget, JSObject { external JSArray<JSArrayBuffer> getRemoteCertificates(); + + /// The read-only **[RTCDtlsTransport]** + /// property **`iceTransport`** contains a reference + /// to the underlying [RTCIceTransport]. external RTCIceTransport get iceTransport; + + /// The **`state`** read-only property of the + /// [RTCDtlsTransport] interface provides information which describes a + /// Datagram Transport Layer Security (****) transport state. external RTCDtlsTransportState get state; - external set onstatechange(EventHandler value); external EventHandler get onstatechange; - external set onerror(EventHandler value); + external set onstatechange(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); } extension type RTCDtlsFingerprint._(JSObject _) implements JSObject { external factory RTCDtlsFingerprint({ @@ -1080,10 +1584,10 @@ extension type RTCDtlsFingerprint._(JSObject _) implements JSObject { String value, }); - external set algorithm(String value); external String get algorithm; - external set value(String value); + external set algorithm(String value); external String get value; + external set value(String value); } /// The **`RTCIceTransport`** interface provides access to information about the @@ -1148,16 +1652,42 @@ extension type RTCIceTransport._(JSObject _) implements EventTarget, JSObject { /// transport when the client calls /// [RTCPeerConnection.setRemoteDescription]. external RTCIceParameters? getRemoteParameters(); + + /// The read-only **[RTCIceTransport]** + /// property **`role`** indicates which role + /// the transport is fulfilling: that of the controlling agent, or the agent + /// that is being + /// controlled. + /// + /// You can learn more about ICE roles in + /// [Choosing a candidate pair](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity#choosing_a_candidate_pair). external RTCIceRole get role; + + /// The read-only **[RTCIceTransport]** + /// property **`component`** specifies whether the object is + /// serving to transport or . external RTCIceComponent get component; + + /// The read-only **[RTCIceTransport]** + /// property **`state`** returns the current state of the ICE + /// transport, so you can determine the state of ICE gathering in which the + /// ICE agent + /// currently is operating. + /// + /// This differs from the [RTCIceTransport.gatheringState], + /// which only indicates whether or not ICE gathering is currently underway. external RTCIceTransportState get state; + + /// The read-only property **`gatheringState`** property of the + /// [RTCIceTransport] interface returns a string that indicates the current + /// gathering state of the ICE agent: `"new"`, `"gathering"`, or `"complete"`. external RTCIceGathererState get gatheringState; - external set onstatechange(EventHandler value); external EventHandler get onstatechange; - external set ongatheringstatechange(EventHandler value); + external set onstatechange(EventHandler value); external EventHandler get ongatheringstatechange; - external set onselectedcandidatepairchange(EventHandler value); + external set ongatheringstatechange(EventHandler value); external EventHandler get onselectedcandidatepairchange; + external set onselectedcandidatepairchange(EventHandler value); } /// The **`RTCIceParameters`** dictionary specifies the username fragment and @@ -1179,10 +1709,21 @@ extension type RTCIceParameters._(JSObject _) implements JSObject { String password, }); - external set usernameFragment(String value); + /// The **[RTCIceParameters]** dictionary's + /// **`usernameFragment`** property specifies the username fragment + /// ("ufrag") that uniquely identifies the corresponding ICE session for the + /// duration of the + /// current ICE session. external String get usernameFragment; - external set password(String value); + external set usernameFragment(String value); + + /// The **[RTCIceParameters]** + /// dictionary's **`password`** property specifies the ICE + /// password that, in tandem with the [RTCIceParameters.usernameFragment], + /// uniquely identifies an ICE session for its entire + /// duration. external String get password; + external set password(String value); } /// The **`RTCIceCandidatePair`** dictionary describes a pair of ICE candidates @@ -1201,10 +1742,19 @@ extension type RTCIceCandidatePair._(JSObject _) implements JSObject { RTCIceCandidate remote, }); - external set local(RTCIceCandidate value); + /// The **`local`** property of the + /// **[RTCIceCandidatePair]** dictionary specifies the + /// [RTCIceCandidate] which describes the configuration of the local end of a + /// viable WebRTC connection. external RTCIceCandidate get local; - external set remote(RTCIceCandidate value); + external set local(RTCIceCandidate value); + + /// The **`remote`** property of the + /// **[RTCIceCandidatePair]** dictionary specifies the + /// [RTCIceCandidate] describing the configuration of the remote end of a + /// viable WebRTC connection. external RTCIceCandidate get remote; + external set remote(RTCIceCandidate value); } /// The @@ -1229,9 +1779,34 @@ extension type RTCTrackEvent._(JSObject _) implements Event, JSObject { RTCTrackEventInit eventInitDict, ); + /// The read-only **`receiver`** property + /// of the [RTCTrackEvent] interface indicates the + /// [RTCRtpReceiver] which is used to receive data containing media for the + /// [RTCTrackEvent.track] to which the event refers. external RTCRtpReceiver get receiver; + + /// The + /// [WebRTC API](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) + /// interface [RTCTrackEvent]'s read-only **`track`** + /// property specifies the [MediaStreamTrack] that has been added to the + /// [RTCPeerConnection]. external MediaStreamTrack get track; + + /// The + /// [WebRTC API](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API) + /// interface [RTCTrackEvent]'s read-only + /// **`streams`** property specifies an array of + /// [MediaStream] objects, one for each of the streams that comprise the + /// track being added to the [RTCPeerConnection]. external JSArray<MediaStream> get streams; + + /// The WebRTC API interface [RTCTrackEvent]'s + /// read-only **`transceiver`** property indicates the + /// [RTCRtpTransceiver] affiliated with the event's + /// [RTCTrackEvent.track]. + /// + /// The transceiver pairs the track's + /// [RTCTrackEvent.receiver] with an [RTCRtpSender]. external RTCRtpTransceiver get transceiver; } extension type RTCTrackEventInit._(JSObject _) implements EventInit, JSObject { @@ -1245,14 +1820,14 @@ extension type RTCTrackEventInit._(JSObject _) implements EventInit, JSObject { required RTCRtpTransceiver transceiver, }); - external set receiver(RTCRtpReceiver value); external RTCRtpReceiver get receiver; - external set track(MediaStreamTrack value); + external set receiver(RTCRtpReceiver value); external MediaStreamTrack get track; - external set streams(JSArray<MediaStream> value); + external set track(MediaStreamTrack value); external JSArray<MediaStream> get streams; - external set transceiver(RTCRtpTransceiver value); + external set streams(JSArray<MediaStream> value); external RTCRtpTransceiver get transceiver; + external set transceiver(RTCRtpTransceiver value); } /// The **`RTCSctpTransport`** interface provides information which describes a @@ -1276,12 +1851,27 @@ extension type RTCTrackEventInit._(JSObject _) implements EventInit, JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/RTCSctpTransport). extension type RTCSctpTransport._(JSObject _) implements EventTarget, JSObject { + /// The **`transport`** read-only property of the [RTCSctpTransport] interface + /// returns a [RTCDtlsTransport] object representing the transport used for + /// the transmission and receipt of data packets. external RTCDtlsTransport get transport; + + /// The **`state`** read-only property of the [RTCSctpTransport] interface + /// provides information which describes a Stream Control Transmission + /// Protocol () transport state. external RTCSctpTransportState get state; + + /// The **`maxMessageSize`** read-only property of the [RTCSctpTransport] + /// interface indicates the maximum size of a message that can be sent using + /// the [RTCDataChannel.send] method. external num get maxMessageSize; + + /// The **`maxChannels`** read-only property of the [RTCSctpTransport] + /// interface indicates the maximum number of [RTCDataChannel] objects that + /// can be opened simultaneously. external int? get maxChannels; - external set onstatechange(EventHandler value); external EventHandler get onstatechange; + external set onstatechange(EventHandler value); } /// The **`RTCDataChannel`** interface represents a network channel which can be @@ -1357,31 +1947,186 @@ extension type RTCDataChannel._(JSObject _) implements EventTarget, JSObject { /// > questions, see /// > [Understanding message size limits](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Using_data_channels#understanding_message_size_limits). external void send(JSAny data); + + /// The read-only `RTCDataChannel` property **`label`** + /// returns a string containing a name describing the data channel. These + /// labels are not required to be unique. + /// + /// You may use the label as you wish; you could use it to identify all the + /// channels that + /// are being used for the same purpose, by giving them all the same name. Or + /// you could give + /// each channel a unique label for tracking purposes. It's entirely up to the + /// design + /// decisions made when building your site or app. + /// + /// A unique ID can be found in the [RTCDataChannel.id] property. + /// + /// > **Note:** A data channel's label is set when the channel is created by + /// > calling + /// > [RTCPeerConnection.createDataChannel]. It cannot be changed after that. external String get label; + + /// The read-only `RTCDataChannel` property **`ordered`** indicates + /// whether or not the data channel guarantees in-order delivery of messages; + /// the default is `true`, + /// which indicates that the data channel is indeed ordered. + /// This is set when the [RTCDataChannel] is created, + /// by setting the `ordered` property + /// on the object passed as [RTCPeerConnection.createDataChannel]'s `options` + /// parameter. external bool get ordered; + + /// The read-only `RTCDataChannel` property + /// **`maxPacketLifeTime`** returns the amount of time, in + /// milliseconds, the browser is allowed to take to attempt to transmit a + /// message, as set + /// when the data channel was created, or `null`. This limits how long + /// the browser can continue to attempt to transmit and retransmit the message + /// before giving + /// up. external int? get maxPacketLifeTime; + + /// The read-only `RTCDataChannel` property + /// **`maxRetransmits`** returns the maximum number of times the + /// browser should try to retransmit a message before giving up, as set when + /// the data + /// channel was created, or `null`, which indicates that there is no + /// maximum. This can only be set when the [RTCDataChannel] is created + /// by calling [RTCPeerConnection.createDataChannel], using the + /// `maxRetransmits` field in the specified `options`. external int? get maxRetransmits; + + /// The read-only `RTCDataChannel` property + /// **`protocol`** returns a string containing the + /// name of the subprotocol in use. If no protocol was specified when the data + /// channel was + /// created, then this property's value is the empty string (`""`). + /// + /// > **Note:** The permitted values of this property are defined by the + /// > website or app using the + /// > data channel. + /// + /// The ability for each channel to have a defined subprotocol lets your app, + /// for example, + /// use JSON objects as messages on one channel while another channel is + /// plaintext and + /// another is raw binary or even some other format. external String get protocol; + + /// The read-only `RTCDataChannel` property + /// **`negotiated`** indicates whether the + /// [RTCDataChannel]'s connection was negotiated by the Web app + /// (`true`) or by the WebRTC layer (`false`). **The + /// default is `false`.** + /// + /// See + /// [Creating a data channel](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Using_data_channels#creating_a_data_channel) + /// for further information about this property. external bool get negotiated; + + /// The read-only `RTCDataChannel` property + /// **`id`** returns an ID number (between 0 and 65,534) which + /// uniquely identifies the [RTCDataChannel]. This ID is set at the + /// time the data channel is created, either by the user agent (if + /// [RTCDataChannel.negotiated] is `false`) or by the site or app + /// script (if `negotiated` is `true`). + /// + /// Each [RTCPeerConnection] can therefore have up to a theoretical maximum of + /// 65,534 data channels on it, although the actual maximum may vary from + /// browser to + /// browser. external int? get id; + + /// The read-only `RTCDataChannel` property **`readyState`** returns a string + /// which indicates the state of the data channel's underlying data + /// connection. external RTCDataChannelState get readyState; + + /// The read-only `RTCDataChannel` property + /// **`bufferedAmount`** returns the number of bytes of data + /// currently queued to be sent over the data channel. The queue may build up + /// as a + /// result of calls to the [RTCDataChannel.send] method. This only + /// includes data buffered by the user agent itself; it doesn't include any + /// framing overhead + /// or buffering done by the operating system or network hardware. + /// + /// The user agent may implement the process of actually sending data in any + /// way it + /// chooses; this may be done periodically during the event loop or truly + /// asynchronously. As + /// messages are actually sent, this value is reduced accordingly. + /// + /// > **Note:** Closing the data channel doesn't reset this count, even though + /// > the user agent purges + /// > the queued messages. However, even after closing the channel, attempts + /// > to send + /// > messages continue to add to the `bufferedAmount` value, even though the + /// > messages are neither sent nor buffered. + /// + /// Whenever this value decreases to fall to or below the value specified in + /// the + /// [RTCDataChannel.bufferedAmountLowThreshold] + /// property, the user agent fires the + /// [RTCDataChannel.bufferedamountlow_event] event. This event may + /// be used, for example, to implement code which queues more messages to be + /// sent whenever + /// there's room to buffer them. external int get bufferedAmount; - external set bufferedAmountLowThreshold(int value); + + /// The `RTCDataChannel` property + /// **`bufferedAmountLowThreshold`** is used to specify the number + /// of bytes of buffered outgoing data that is considered "low." The default + /// value is + /// 0\. When the number of buffered outgoing bytes, as indicated by the + /// [RTCDataChannel.bufferedAmount] property, falls to or + /// below this value, a [RTCDataChannel.bufferedamountlow_event] event is + /// fired. This event may be + /// used, for example, to implement code which queues more messages to be sent + /// whenever + /// there's room to buffer them. Listeners may be added with + /// [RTCDataChannel.bufferedamountlow_event] or + /// [EventTarget.addEventListener]. + /// + /// The user agent may implement the process of actually sending data in any + /// way it + /// chooses; this may be done periodically during the event loop or truly + /// asynchronously. As + /// messages are actually sent, this value is reduced accordingly. + /// + /// > **Note:** `bufferedamountlow` events are not fired after the data + /// > channel is closed. external int get bufferedAmountLowThreshold; - external set onopen(EventHandler value); + external set bufferedAmountLowThreshold(int value); external EventHandler get onopen; - external set onbufferedamountlow(EventHandler value); + external set onopen(EventHandler value); external EventHandler get onbufferedamountlow; - external set onerror(EventHandler value); + external set onbufferedamountlow(EventHandler value); external EventHandler get onerror; - external set onclosing(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onclosing; - external set onclose(EventHandler value); + external set onclosing(EventHandler value); external EventHandler get onclose; - external set onmessage(EventHandler value); + external set onclose(EventHandler value); external EventHandler get onmessage; - external set binaryType(BinaryType value); + external set onmessage(EventHandler value); + + /// The property **`binaryType`** on the + /// [RTCDataChannel] interface is a string which specifies + /// the type of object which should be used to represent binary data received + /// on the [RTCDataChannel]. Values allowed by the + /// [WebSocket.binaryType] property are also permitted here: + /// `blob` if [Blob] objects are being used or + /// `arraybuffer` if `ArrayBuffer` objects are being used. The + /// default is `blob`. + /// + /// When a binary message is received on the data channel, the resulting + /// [RTCDataChannel.message_event] event's [MessageEvent.data] property is an + /// object of + /// the type specified by the `binaryType`. external BinaryType get binaryType; + external set binaryType(BinaryType value); } extension type RTCDataChannelInit._(JSObject _) implements JSObject { external factory RTCDataChannelInit({ @@ -1393,18 +2138,18 @@ extension type RTCDataChannelInit._(JSObject _) implements JSObject { int id, }); - external set ordered(bool value); external bool get ordered; - external set maxPacketLifeTime(int value); + external set ordered(bool value); external int get maxPacketLifeTime; - external set maxRetransmits(int value); + external set maxPacketLifeTime(int value); external int get maxRetransmits; - external set protocol(String value); + external set maxRetransmits(int value); external String get protocol; - external set negotiated(bool value); + external set protocol(String value); external bool get negotiated; - external set id(int value); + external set negotiated(bool value); external int get id; + external set id(int value); } /// The **`RTCDataChannelEvent`** interface @@ -1420,6 +2165,8 @@ extension type RTCDataChannelEvent._(JSObject _) implements Event, JSObject { RTCDataChannelEventInit eventInitDict, ); + /// The read-only property **`RTCDataChannelEvent.channel`** + /// returns the [RTCDataChannel] associated with the event. external RTCDataChannel get channel; } extension type RTCDataChannelEventInit._(JSObject _) @@ -1431,8 +2178,8 @@ extension type RTCDataChannelEventInit._(JSObject _) required RTCDataChannel channel, }); - external set channel(RTCDataChannel value); external RTCDataChannel get channel; + external set channel(RTCDataChannel value); } /// The **`RTCDTMFSender`** interface provides a mechanism for transmitting @@ -1480,9 +2227,17 @@ extension type RTCDTMFSender._(JSObject _) implements EventTarget, JSObject { int duration, int interToneGap, ]); - external set ontonechange(EventHandler value); external EventHandler get ontonechange; + external set ontonechange(EventHandler value); external bool get canInsertDTMF; + + /// The [RTCDTMFSender] interface's toneBuffer property returns a string + /// containing a list of the tones currently queued for sending to the + /// remote peer over the [RTCPeerConnection]. To place tones into the buffer, + /// call [RTCDTMFSender.insertDTMF]. + /// + /// Tones are removed from the string as they're played, so only upcoming + /// tones are listed. external String get toneBuffer; } @@ -1502,6 +2257,11 @@ extension type RTCDTMFToneChangeEvent._(JSObject _) implements Event, JSObject { RTCDTMFToneChangeEventInit eventInitDict, ]); + /// The read-only property **`RTCDTMFToneChangeEvent.tone`** + /// returns the DTMF character which has just begun to play, or an empty + /// string + /// (`""`). if all queued tones have finished playing (that is, + /// [RTCDTMFSender.toneBuffer] is empty). external String get tone; } extension type RTCDTMFToneChangeEventInit._(JSObject _) @@ -1513,8 +2273,8 @@ extension type RTCDTMFToneChangeEventInit._(JSObject _) String tone, }); - external set tone(String value); external String get tone; + external set tone(String value); } /// The **`RTCStatsReport`** interface of the @@ -1540,12 +2300,12 @@ extension type RTCStats._(JSObject _) implements JSObject { required String id, }); - external set timestamp(DOMHighResTimeStamp value); external DOMHighResTimeStamp get timestamp; - external set type(RTCStatsType value); + external set timestamp(DOMHighResTimeStamp value); external RTCStatsType get type; - external set id(String value); + external set type(RTCStatsType value); external String get id; + external set id(String value); } /// The **`RTCError`** interface describes an error which has occurred while @@ -1564,10 +2324,32 @@ extension type RTCError._(JSObject _) implements DOMException, JSObject { String message, ]); + /// The [RTCError] interface's read-only + /// **`errorDetail`** property is a string indicating the + /// [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API)-specific + /// error code that occurred. external RTCErrorDetailType get errorDetail; + + /// The [RTCError] interface's read-only property + /// **`sdpLineNumber`** specifies the line number within the + /// at which a syntax error occurred while parsing it. external int? get sdpLineNumber; + + /// The read-only **`sctpCauseCode`** property in an + /// [RTCError] object provides the cause code explaining + /// why the SCTP negotiation failed, if the `RTCError` represents an SCTP + /// error. external int? get sctpCauseCode; + + /// The [RTCError] read-only property + /// **`receivedAlert`** specifies the fatal + /// error which resulted in an alert being received from the remote peer. external int? get receivedAlert; + + /// The read-only **`sentAlert`** property in an + /// [RTCError] object specifies the alert number occurred + /// while sending data to the remote peer, if the error represents an outbound + /// DTLS error. external int? get sentAlert; } extension type RTCErrorInit._(JSObject _) implements JSObject { @@ -1579,16 +2361,16 @@ extension type RTCErrorInit._(JSObject _) implements JSObject { int sentAlert, }); - external set errorDetail(RTCErrorDetailType value); external RTCErrorDetailType get errorDetail; - external set sdpLineNumber(int value); + external set errorDetail(RTCErrorDetailType value); external int get sdpLineNumber; - external set sctpCauseCode(int value); + external set sdpLineNumber(int value); external int get sctpCauseCode; - external set receivedAlert(int value); + external set sctpCauseCode(int value); external int get receivedAlert; - external set sentAlert(int value); + external set receivedAlert(int value); external int get sentAlert; + external set sentAlert(int value); } /// The WebRTC API's **`RTCErrorEvent`** interface represents an error sent to a @@ -1605,6 +2387,10 @@ extension type RTCErrorEvent._(JSObject _) implements Event, JSObject { RTCErrorEventInit eventInitDict, ); + /// The read-only [RTCErrorEvent] property **`error`** + /// contains an [RTCError] object describing the details of the error which + /// the + /// event is announcing. external RTCError get error; } extension type RTCErrorEventInit._(JSObject _) implements EventInit, JSObject { @@ -1615,6 +2401,6 @@ extension type RTCErrorEventInit._(JSObject _) implements EventInit, JSObject { required RTCError error, }); - external set error(RTCError value); external RTCError get error; + external set error(RTCError value); } diff --git a/lib/src/dom/webrtc_encoded_transform.dart b/lib/src/dom/webrtc_encoded_transform.dart index 7db6d4fc..dc8200f5 100644 --- a/lib/src/dom/webrtc_encoded_transform.dart +++ b/lib/src/dom/webrtc_encoded_transform.dart @@ -27,8 +27,8 @@ typedef RTCEncodedVideoFrameType = String; extension type SFrameTransformOptions._(JSObject _) implements JSObject { external factory SFrameTransformOptions({SFrameTransformRole role}); - external set role(SFrameTransformRole value); external SFrameTransformRole get role; + external set role(SFrameTransformRole value); } extension type SFrameTransform._(JSObject _) implements EventTarget, JSObject { external factory SFrameTransform([SFrameTransformOptions options]); @@ -37,8 +37,8 @@ extension type SFrameTransform._(JSObject _) implements EventTarget, JSObject { CryptoKey key, [ CryptoKeyID keyID, ]); - external set onerror(EventHandler value); external EventHandler get onerror; + external set onerror(EventHandler value); external ReadableStream get readable; external WritableStream get writable; } @@ -64,12 +64,12 @@ extension type SFrameTransformErrorEventInit._(JSObject _) CryptoKeyID? keyID, }); - external set errorType(SFrameTransformErrorEventType value); external SFrameTransformErrorEventType get errorType; - external set frame(JSAny? value); + external set errorType(SFrameTransformErrorEventType value); external JSAny? get frame; - external set keyID(CryptoKeyID? value); + external set frame(JSAny? value); external CryptoKeyID? get keyID; + external set keyID(CryptoKeyID? value); } extension type RTCEncodedVideoFrameMetadata._(JSObject _) implements JSObject { external factory RTCEncodedVideoFrameMetadata({ @@ -87,30 +87,30 @@ extension type RTCEncodedVideoFrameMetadata._(JSObject _) implements JSObject { String mimeType, }); - external set frameId(int value); external int get frameId; - external set dependencies(JSArray<JSNumber> value); + external set frameId(int value); external JSArray<JSNumber> get dependencies; - external set width(int value); + external set dependencies(JSArray<JSNumber> value); external int get width; - external set height(int value); + external set width(int value); external int get height; - external set spatialIndex(int value); + external set height(int value); external int get spatialIndex; - external set temporalIndex(int value); + external set spatialIndex(int value); external int get temporalIndex; - external set synchronizationSource(int value); + external set temporalIndex(int value); external int get synchronizationSource; - external set payloadType(int value); + external set synchronizationSource(int value); external int get payloadType; - external set contributingSources(JSArray<JSNumber> value); + external set payloadType(int value); external JSArray<JSNumber> get contributingSources; - external set timestamp(int value); + external set contributingSources(JSArray<JSNumber> value); external int get timestamp; - external set rtpTimestamp(int value); + external set timestamp(int value); external int get rtpTimestamp; - external set mimeType(String value); + external set rtpTimestamp(int value); external String get mimeType; + external set mimeType(String value); } /// The **`RTCEncodedVideoFrame`** of the @@ -134,9 +134,15 @@ extension type RTCEncodedVideoFrame._(JSObject _) implements JSObject { /// encoding, other frames needed to construct a full image, timestamp, and /// other information. external RTCEncodedVideoFrameMetadata getMetadata(); + + /// The readonly **`type`** property of the [RTCEncodedVideoFrame] interface + /// indicates whether this frame is a key frame, delta frame, or empty frame. external RTCEncodedVideoFrameType get type; - external set data(JSArrayBuffer value); + + /// The **`data`** property of the [RTCEncodedVideoFrame] interface returns a + /// buffer containing the frame data. external JSArrayBuffer get data; + external set data(JSArrayBuffer value); } extension type RTCEncodedAudioFrameMetadata._(JSObject _) implements JSObject { external factory RTCEncodedAudioFrameMetadata({ @@ -148,18 +154,18 @@ extension type RTCEncodedAudioFrameMetadata._(JSObject _) implements JSObject { String mimeType, }); - external set synchronizationSource(int value); external int get synchronizationSource; - external set payloadType(int value); + external set synchronizationSource(int value); external int get payloadType; - external set contributingSources(JSArray<JSNumber> value); + external set payloadType(int value); external JSArray<JSNumber> get contributingSources; - external set sequenceNumber(int value); + external set contributingSources(JSArray<JSNumber> value); external int get sequenceNumber; - external set rtpTimestamp(int value); + external set sequenceNumber(int value); external int get rtpTimestamp; - external set mimeType(String value); + external set rtpTimestamp(int value); external String get mimeType; + external set mimeType(String value); } /// The **`RTCEncodedAudioFrame`** of the @@ -189,8 +195,11 @@ extension type RTCEncodedAudioFrame._(JSObject _) implements JSObject { /// used, the synchronization source and contributing sources, and the /// sequence number (for incoming frames). external RTCEncodedAudioFrameMetadata getMetadata(); - external set data(JSArrayBuffer value); + + /// The **`data`** property of the [RTCEncodedAudioFrame] interface returns a + /// buffer containing the data for an encoded frame. external JSArrayBuffer get data; + external set data(JSArrayBuffer value); } /// The **`RTCTransformEvent`** of the @@ -213,6 +222,13 @@ extension type RTCEncodedAudioFrame._(JSObject _) implements JSObject { /// API documentation sourced from /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/RTCTransformEvent). extension type RTCTransformEvent._(JSObject _) implements Event, JSObject { + /// The read-only **`transformer`** property of the [RTCTransformEvent] + /// interface returns the [RTCRtpScriptTransformer] associated with the event. + /// + /// The property exposes the WebRTC sender or receiver pipeline as a readable + /// and writable stream of encoded media frames, which a + /// [WebRTC Encoded Transform](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Using_Encoded_Transforms) + /// can insert itself into in order to modify frames. external RTCRtpScriptTransformer get transformer; } @@ -258,10 +274,45 @@ extension type RTCRtpScriptTransformer._(JSObject _) /// > [Triggering a key frame](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Using_Encoded_Transforms#triggering_a_key_frame) /// > in Using WebRTC Encoded Transforms. external JSPromise<JSAny?> sendKeyFrameRequest(); + + /// The **`readable`** read-only property of the [RTCRtpScriptTransformer] + /// interface returns a [ReadableStream] instance is a source for encoded + /// media frames. + /// + /// When the corresponding [RTCRtpScriptTransform] is inserted into the WebRTC + /// sender and receiver pipelines, this stream may be enqueued with outgoing + /// or incoming encoded media frames ([RTCEncodedVideoFrame] or + /// [RTCEncodedAudioFrame]). + /// A WebRTC encoded transform can read the frames, modify them as needed, and + /// then send them back into the WebRTC pipeline by writing them to + /// [RTCRtpScriptTransformer.writable]. + /// A common way to perform this operation is to pipe the frames through a + /// [TransformStream]. external ReadableStream get readable; + + /// The **`writable`** read-only property of the [RTCRtpScriptTransformer] + /// interface returns a [WritableStream] instance that can be used as a sink + /// for encoded media frames enqueued on the corresponding + /// [RTCRtpScriptTransformer.readable]. + /// + /// When the corresponding [RTCRtpScriptTransform] is inserted into the WebRTC + /// sender and receiver pipelines, encoded media frames + /// ([RTCEncodedVideoFrame] or [RTCEncodedAudioFrame]) may be enqueued on the + /// [RTCRtpScriptTransformer.readable]. + /// A WebRTC encoded transform can read the frames from `readable`, modify + /// them as needed, and then send them back into the WebRTC pipeline by + /// sending them to this `writable`. + /// A common way to perform this operation is to pipe the frames through a + /// [TransformStream]. external WritableStream get writable; - external set onkeyframerequest(EventHandler value); external EventHandler get onkeyframerequest; + external set onkeyframerequest(EventHandler value); + + /// The **`options`** read-only property of the [RTCRtpScriptTransformer] + /// interface returns the object that was (optionally) passed as the second + /// argument + /// [during construction](https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpScriptTransform/RTCRtpScriptTransform) + /// of the corresponding [RTCRtpScriptTransform]. external JSAny? get options; } diff --git a/lib/src/dom/webrtc_stats.dart b/lib/src/dom/webrtc_stats.dart index 1bdeb878..6631f0f4 100644 --- a/lib/src/dom/webrtc_stats.dart +++ b/lib/src/dom/webrtc_stats.dart @@ -53,14 +53,43 @@ extension type RTCRtpStreamStats._(JSObject _) implements RTCStats, JSObject { String codecId, }); - external set ssrc(int value); + /// The [RTCRtpStreamStats] dictionary's + /// **`ssrc`** property provides the Synchronization Source + /// (SSRC), an integer which uniquely identifies the source of the + /// packets whose statistics are covered by the [RTCStatsReport] that + /// includes this `RTCRtpStreamStats` dictionary. external int get ssrc; - external set kind(String value); + external set ssrc(int value); + + /// The **`kind`** property of the + /// [RTCRtpStreamStats] dictionary is a string indicating whether the + /// described stream contains audio or video media. + /// + /// Its value + /// is always either `"audio"` or `"video"`. + /// + /// This property was previously called `mediaType`. The name was changed in + /// the + /// specification in February, 2018. See + /// [Browser compatibility](#browser_compatibility) below to + /// determine how this affects the browsers you're targeting. external String get kind; - external set transportId(String value); + external set kind(String value); + + /// The [RTCRtpStreamStats] dictionary's + /// **`transportId`** property is a string which uniquely + /// identifies the object from which the statistics contained in the + /// [RTCTransportStats] properties in the + /// [RTCStatsReport]. external String get transportId; - external set codecId(String value); + external set transportId(String value); + + /// The [RTCRtpStreamStats] dictionary's + /// **`codecId`** property is a string which uniquely identifies + /// the object that was inspected to produce the data in the [RTCCodecStats] + /// for the stream. external String get codecId; + external set codecId(String value); } extension type RTCCodecStats._(JSObject _) implements RTCStats, JSObject { external factory RTCCodecStats({ @@ -75,18 +104,18 @@ extension type RTCCodecStats._(JSObject _) implements RTCStats, JSObject { String sdpFmtpLine, }); - external set payloadType(int value); external int get payloadType; - external set transportId(String value); + external set payloadType(int value); external String get transportId; - external set mimeType(String value); + external set transportId(String value); external String get mimeType; - external set clockRate(int value); + external set mimeType(String value); external int get clockRate; - external set channels(int value); + external set clockRate(int value); external int get channels; - external set sdpFmtpLine(String value); + external set channels(int value); external String get sdpFmtpLine; + external set sdpFmtpLine(String value); } extension type RTCReceivedRtpStreamStats._(JSObject _) implements RTCRtpStreamStats, JSObject { @@ -103,12 +132,12 @@ extension type RTCReceivedRtpStreamStats._(JSObject _) num jitter, }); - external set packetsReceived(int value); external int get packetsReceived; - external set packetsLost(int value); + external set packetsReceived(int value); external int get packetsLost; - external set jitter(num value); + external set packetsLost(int value); external num get jitter; + external set jitter(num value); } /// The **`RTCInboundRtpStreamStats`** dictionary of the @@ -192,112 +221,183 @@ extension type RTCInboundRtpStreamStats._(JSObject _) int fecSsrc, }); - external set trackIdentifier(String value); external String get trackIdentifier; - external set mid(String value); + external set trackIdentifier(String value); external String get mid; - external set remoteId(String value); + external set mid(String value); + + /// The **`remoteId`** property of the + /// [RTCInboundRtpStreamStats] dictionary specifies the + /// [RTCInboundRtpStreamStats.id] of the [RTCRemoteOutboundRtpStreamStats] + /// object representing the remote peer's [RTCRtpSender] which is sending the + /// media to the local peer. external String get remoteId; - external set framesDecoded(int value); + external set remoteId(String value); + + /// The **`framesDecoded`** property of + /// the [RTCInboundRtpStreamStats] dictionary indicates the total number of + /// frames which have been decoded successfully for this media source. external int get framesDecoded; - external set keyFramesDecoded(int value); + external set framesDecoded(int value); external int get keyFramesDecoded; - external set framesRendered(int value); + external set keyFramesDecoded(int value); external int get framesRendered; - external set framesDropped(int value); + external set framesRendered(int value); external int get framesDropped; - external set frameWidth(int value); + external set framesDropped(int value); external int get frameWidth; - external set frameHeight(int value); + external set frameWidth(int value); external int get frameHeight; - external set framesPerSecond(num value); + external set frameHeight(int value); external num get framesPerSecond; - external set qpSum(int value); + external set framesPerSecond(num value); + + /// The **`qpSum`** property of the + /// [RTCInboundRtpStreamStats] dictionary is a value generated by adding the + /// **Quantization Parameter** (**QP**) values for every frame + /// sent or received to date on the video track corresponding to this + /// `RTCInboundRtpStreamStats` object. + /// + /// In general, the higher this + /// number is, the more heavily compressed the video data is. external int get qpSum; - external set totalDecodeTime(num value); + external set qpSum(int value); external num get totalDecodeTime; - external set totalInterFrameDelay(num value); + external set totalDecodeTime(num value); external num get totalInterFrameDelay; - external set totalSquaredInterFrameDelay(num value); + external set totalInterFrameDelay(num value); external num get totalSquaredInterFrameDelay; - external set pauseCount(int value); + external set totalSquaredInterFrameDelay(num value); external int get pauseCount; - external set totalPausesDuration(num value); + external set pauseCount(int value); external num get totalPausesDuration; - external set freezeCount(int value); + external set totalPausesDuration(num value); external int get freezeCount; - external set totalFreezesDuration(num value); + external set freezeCount(int value); external num get totalFreezesDuration; - external set lastPacketReceivedTimestamp(DOMHighResTimeStamp value); + external set totalFreezesDuration(num value); + + /// The **`lastPacketReceivedTimestamp`** property of the + /// [RTCInboundRtpStreamStats] dictionary indicates the time at which the most + /// recently received packet arrived from this source. external DOMHighResTimeStamp get lastPacketReceivedTimestamp; - external set headerBytesReceived(int value); + external set lastPacketReceivedTimestamp(DOMHighResTimeStamp value); external int get headerBytesReceived; - external set packetsDiscarded(int value); + external set headerBytesReceived(int value); external int get packetsDiscarded; - external set fecBytesReceived(int value); + external set packetsDiscarded(int value); external int get fecBytesReceived; - external set fecPacketsReceived(int value); + external set fecBytesReceived(int value); + + /// The **`fecPacketsReceived`** property + /// of the [RTCInboundRtpStreamStats] dictionary indicates how many + /// Forward Error Correction (FEC) packets have been received by this RTP + /// receiver + /// from the remote peer. + /// + /// An FEC packet provides parity information which can + /// be used to attempt to reconstruct RTP data packets which have been + /// corrupted in + /// transit. external int get fecPacketsReceived; - external set fecPacketsDiscarded(int value); + external set fecPacketsReceived(int value); + + /// The **`fecPacketsDiscarded`** property + /// of the [RTCInboundRtpStreamStats] dictionary is a numeric value + /// indicating the number of Forward Error Correction (FEC) packets + /// that have been discarded. external int get fecPacketsDiscarded; - external set bytesReceived(int value); + external set fecPacketsDiscarded(int value); + + /// The [RTCInboundRtpStreamStats] dictionary's + /// **`bytesReceived`** property is an integer value which + /// indicates the total number of bytes received so far from this + /// synchronization source + /// (SSRC). external int get bytesReceived; - external set nackCount(int value); + external set bytesReceived(int value); + + /// The **`nackCount`** property of the + /// [RTCInboundRtpStreamStats] dictionary is a numeric value indicating the + /// number of times the receiver sent a **NACK** packet to the sender. + /// + /// A NACK (Negative ACKnowledgement, also called "Generic NACK") packet tells + /// the sender + /// that one or more of the packets it sent were lost in transport. external int get nackCount; - external set firCount(int value); + external set nackCount(int value); + + /// The **`firCount`** property of the + /// [RTCInboundRtpStreamStats] dictionary indicates the number of + /// **Full Intra Request** (**FIR**) packets have been sent by + /// the receiver to the sender. + /// + /// The receiver sends a FIR packet when the stream + /// falls behind and needs to skip frames in order to catch up. external int get firCount; - external set pliCount(int value); + external set firCount(int value); + + /// The **`pliCount`** property of the + /// [RTCInboundRtpStreamStats] dictionary states the number of times the + /// [RTCRtpReceiver] described by these statistics sent a **Picture + /// Loss Indication** (**PLI**) packet to the sender. + /// + /// A PLI + /// packet indicates that some amount of encoded video data has been lost for + /// one or more + /// frames. external int get pliCount; - external set totalProcessingDelay(num value); + external set pliCount(int value); external num get totalProcessingDelay; - external set estimatedPlayoutTimestamp(DOMHighResTimeStamp value); + external set totalProcessingDelay(num value); external DOMHighResTimeStamp get estimatedPlayoutTimestamp; - external set jitterBufferDelay(num value); + external set estimatedPlayoutTimestamp(DOMHighResTimeStamp value); external num get jitterBufferDelay; - external set jitterBufferTargetDelay(num value); + external set jitterBufferDelay(num value); external num get jitterBufferTargetDelay; - external set jitterBufferEmittedCount(int value); + external set jitterBufferTargetDelay(num value); external int get jitterBufferEmittedCount; - external set jitterBufferMinimumDelay(num value); + external set jitterBufferEmittedCount(int value); external num get jitterBufferMinimumDelay; - external set totalSamplesReceived(int value); + external set jitterBufferMinimumDelay(num value); external int get totalSamplesReceived; - external set concealedSamples(int value); + external set totalSamplesReceived(int value); external int get concealedSamples; - external set silentConcealedSamples(int value); + external set concealedSamples(int value); external int get silentConcealedSamples; - external set concealmentEvents(int value); + external set silentConcealedSamples(int value); external int get concealmentEvents; - external set insertedSamplesForDeceleration(int value); + external set concealmentEvents(int value); external int get insertedSamplesForDeceleration; - external set removedSamplesForAcceleration(int value); + external set insertedSamplesForDeceleration(int value); external int get removedSamplesForAcceleration; - external set audioLevel(num value); + external set removedSamplesForAcceleration(int value); external num get audioLevel; - external set totalAudioEnergy(num value); + external set audioLevel(num value); external num get totalAudioEnergy; - external set totalSamplesDuration(num value); + external set totalAudioEnergy(num value); external num get totalSamplesDuration; - external set framesReceived(int value); + external set totalSamplesDuration(num value); external int get framesReceived; - external set decoderImplementation(String value); + external set framesReceived(int value); external String get decoderImplementation; - external set playoutId(String value); + external set decoderImplementation(String value); external String get playoutId; - external set powerEfficientDecoder(bool value); + external set playoutId(String value); external bool get powerEfficientDecoder; - external set framesAssembledFromMultiplePackets(int value); + external set powerEfficientDecoder(bool value); external int get framesAssembledFromMultiplePackets; - external set totalAssemblyTime(num value); + external set framesAssembledFromMultiplePackets(int value); external num get totalAssemblyTime; - external set retransmittedPacketsReceived(int value); + external set totalAssemblyTime(num value); external int get retransmittedPacketsReceived; - external set retransmittedBytesReceived(int value); + external set retransmittedPacketsReceived(int value); external int get retransmittedBytesReceived; - external set rtxSsrc(int value); + external set retransmittedBytesReceived(int value); external int get rtxSsrc; - external set fecSsrc(int value); + external set rtxSsrc(int value); external int get fecSsrc; + external set fecSsrc(int value); } extension type RTCRemoteInboundRtpStreamStats._(JSObject _) implements RTCReceivedRtpStreamStats, JSObject { @@ -319,16 +419,16 @@ extension type RTCRemoteInboundRtpStreamStats._(JSObject _) int roundTripTimeMeasurements, }); - external set localId(String value); external String get localId; - external set roundTripTime(num value); + external set localId(String value); external num get roundTripTime; - external set totalRoundTripTime(num value); + external set roundTripTime(num value); external num get totalRoundTripTime; - external set fractionLost(num value); + external set totalRoundTripTime(num value); external num get fractionLost; - external set roundTripTimeMeasurements(int value); + external set fractionLost(num value); external int get roundTripTimeMeasurements; + external set roundTripTimeMeasurements(int value); } extension type RTCSentRtpStreamStats._(JSObject _) implements RTCRtpStreamStats, JSObject { @@ -344,10 +444,10 @@ extension type RTCSentRtpStreamStats._(JSObject _) int bytesSent, }); - external set packetsSent(int value); external int get packetsSent; - external set bytesSent(int value); + external set packetsSent(int value); external int get bytesSent; + external set bytesSent(int value); } /// The **`RTCOutboundRtpStreamStats`** dictionary of the @@ -407,66 +507,132 @@ extension type RTCOutboundRtpStreamStats._(JSObject _) String scalabilityMode, }); - external set mid(String value); external String get mid; - external set mediaSourceId(String value); + external set mid(String value); external String get mediaSourceId; - external set remoteId(String value); + external set mediaSourceId(String value); + + /// The **`remoteId`** property of the + /// [RTCOutboundRtpStreamStats] dictionary specifies the + /// [RTCOutboundRtpStreamStats.id] of the [RTCRemoteInboundRtpStreamStats] + /// object representing the remote peer's [RTCRtpReceiver] which is sending + /// the media to the local peer for this SSRC. external String get remoteId; - external set rid(String value); + external set remoteId(String value); external String get rid; - external set headerBytesSent(int value); + external set rid(String value); external int get headerBytesSent; - external set retransmittedPacketsSent(int value); + external set headerBytesSent(int value); external int get retransmittedPacketsSent; - external set retransmittedBytesSent(int value); + external set retransmittedPacketsSent(int value); external int get retransmittedBytesSent; - external set rtxSsrc(int value); + external set retransmittedBytesSent(int value); external int get rtxSsrc; - external set targetBitrate(num value); + external set rtxSsrc(int value); external num get targetBitrate; - external set totalEncodedBytesTarget(int value); + external set targetBitrate(num value); external int get totalEncodedBytesTarget; - external set frameWidth(int value); + external set totalEncodedBytesTarget(int value); external int get frameWidth; - external set frameHeight(int value); + external set frameWidth(int value); external int get frameHeight; - external set framesPerSecond(num value); + external set frameHeight(int value); external num get framesPerSecond; - external set framesSent(int value); + external set framesPerSecond(num value); external int get framesSent; - external set hugeFramesSent(int value); + external set framesSent(int value); external int get hugeFramesSent; - external set framesEncoded(int value); + external set hugeFramesSent(int value); + + /// The **`framesEncoded`** property of + /// the [RTCOutboundRtpStreamStats] dictionary indicates the total number of + /// frames that have been encoded by this [RTCRtpSender] for this media + /// source. external int get framesEncoded; - external set keyFramesEncoded(int value); + external set framesEncoded(int value); external int get keyFramesEncoded; - external set qpSum(int value); + external set keyFramesEncoded(int value); + + /// The **`qpSum`** property of the [RTCOutboundRtpStreamStats] dictionary is + /// a value generated by adding the **Quantization Parameter** (**QP**) values + /// for every frame this sender has produced to date on the video track + /// corresponding to this `RTCOutboundRtpStreamStats` object. + /// + /// In general, the higher this number is, the more heavily compressed the + /// video data is. external int get qpSum; - external set totalEncodeTime(num value); + external set qpSum(int value); external num get totalEncodeTime; - external set totalPacketSendDelay(num value); + external set totalEncodeTime(num value); external num get totalPacketSendDelay; - external set qualityLimitationReason(RTCQualityLimitationReason value); + external set totalPacketSendDelay(num value); + + /// The **`qualityLimitationReason`** + /// property of the [RTCOutboundRtpStreamStats] dictionary is a string + /// indicating the reason why the media quality in the stream is currently + /// being reduced + /// by the codec during encoding, or `none` if no quality reduction is being + /// performed. + /// + /// This quality reduction may include changes such as reduced frame + /// rate or resolution, or an increase in compression factor. + /// + /// The amount of time the encoded media has had its quality reduced in each + /// of the + /// potential ways that can be done can be found in + /// [RTCOutboundRtpStreamStats.qualityLimitationDurations]. external RTCQualityLimitationReason get qualityLimitationReason; - external set qualityLimitationDurations(JSObject value); + external set qualityLimitationReason(RTCQualityLimitationReason value); external JSObject get qualityLimitationDurations; - external set qualityLimitationResolutionChanges(int value); + external set qualityLimitationDurations(JSObject value); external int get qualityLimitationResolutionChanges; - external set nackCount(int value); + external set qualityLimitationResolutionChanges(int value); + + /// The **`nackCount`** property of the + /// [RTCOutboundRtpStreamStats] dictionary is a numeric value indicating the + /// number of times the [RTCRtpSender] described by this object received a + /// **NACK** packet from the remote receiver. + /// + /// A NACK (Negative + /// ACKnowledgement, also called "Generic NACK") packet is used by the + /// [RTCRtpReceiver] to inform the sender that one or more + /// packets it sent were lost in transport. external int get nackCount; - external set firCount(int value); + external set nackCount(int value); + + /// The **`firCount`** property of the + /// [RTCOutboundRtpStreamStats] dictionary indicates the number of + /// **Full Intra Request** (**FIR**) that the remote + /// [RTCRtpReceiver] has sent to this [RTCRtpSender]. + /// + /// A FIR packet is sent when the receiver finds that it has fallen behind and + /// needs to skip + /// frames in order to catch up; the sender should respond by sending a full + /// frame instead + /// of a delta frame. + /// + /// Available only on video media. external int get firCount; - external set pliCount(int value); + external set firCount(int value); + + /// The **`pliCount`** property of the + /// [RTCOutboundRtpStreamStats] dictionary states the number of times the + /// remote peer's [RTCRtpReceiver] sent a **Picture Loss + /// Indication** (**PLI**) packet to the [RTCRtpSender] + /// for which this object provides statistics. + /// + /// A PLI packet indicates that some + /// amount of encoded video data has been lost for one or more frames. external int get pliCount; - external set encoderImplementation(String value); + external set pliCount(int value); external String get encoderImplementation; - external set powerEfficientEncoder(bool value); + external set encoderImplementation(String value); external bool get powerEfficientEncoder; - external set active(bool value); + external set powerEfficientEncoder(bool value); external bool get active; - external set scalabilityMode(String value); + external set active(bool value); external String get scalabilityMode; + external set scalabilityMode(String value); } /// The **`RTCRemoteOutboundRtpStreamStats`** dictionary of the @@ -503,18 +669,30 @@ extension type RTCRemoteOutboundRtpStreamStats._(JSObject _) int roundTripTimeMeasurements, }); - external set localId(String value); + /// The [RTCRemoteOutboundRtpStreamStats] dictionary's **`localId`** property + /// is a string which can be used to identify the [RTCInboundRtpStreamStats] + /// object whose [RTCInboundRtpStreamStats.remoteId] matches this value. + /// + /// Together, these two objects provide statistics about the inbound and + /// outbound sides of the same synchronization source (SSRC). external String get localId; - external set remoteTimestamp(DOMHighResTimeStamp value); + external set localId(String value); + + /// The [RTCRemoteOutboundRtpStreamStats] property **`remoteTimestamp`** + /// indicates the timestamp on the remote peer at which these statistics were + /// sent. + /// This differs from `timestamp`, which indicates the time at which the + /// statistics were generated or received locally. external DOMHighResTimeStamp get remoteTimestamp; - external set reportsSent(int value); + external set remoteTimestamp(DOMHighResTimeStamp value); external int get reportsSent; - external set roundTripTime(num value); + external set reportsSent(int value); external num get roundTripTime; - external set totalRoundTripTime(num value); + external set roundTripTime(num value); external num get totalRoundTripTime; - external set roundTripTimeMeasurements(int value); + external set totalRoundTripTime(num value); external int get roundTripTimeMeasurements; + external set roundTripTimeMeasurements(int value); } extension type RTCMediaSourceStats._(JSObject _) implements RTCStats, JSObject { external factory RTCMediaSourceStats({ @@ -525,10 +703,10 @@ extension type RTCMediaSourceStats._(JSObject _) implements RTCStats, JSObject { required String kind, }); - external set trackIdentifier(String value); external String get trackIdentifier; - external set kind(String value); + external set trackIdentifier(String value); external String get kind; + external set kind(String value); } /// The @@ -563,16 +741,49 @@ extension type RTCAudioSourceStats._(JSObject _) num echoReturnLossEnhancement, }); - external set audioLevel(num value); + /// The [RTCAudioSourceStats] dictionary's **`audioLevel`** property + /// represents the audio level of the media source. + /// + /// The level is averaged over some small implementation-dependent interval. + /// Users can alternatively calculate the average audio level over some + /// arbitrary duration using the algorithm described in the + /// [`RTCAudioSourceStats` description](https://developer.mozilla.org/en-US/docs/Web/API/RTCAudioSourceStats#description). + /// + /// > **Note:** For audio levels of remotely sourced tracks, see + /// > [RTCInboundRtpStreamStats.audioLevel]. external num get audioLevel; - external set totalAudioEnergy(num value); + external set audioLevel(num value); + + /// The [RTCAudioSourceStats] dictionary's **`totalAudioEnergy`** property + /// represents the total audio energy of the media source over the lifetime of + /// this stats object. + /// + /// The total energy across a particular duration can be determined by + /// subtracting the value of this property returned by two different + /// `getStats()` calls. + /// + /// > **Note:** For audio energy of remotely sourced tracks, see + /// > [RTCInboundRtpStreamStats.totalAudioEnergy]. external num get totalAudioEnergy; - external set totalSamplesDuration(num value); + external set totalAudioEnergy(num value); + + /// The [RTCAudioSourceStats] dictionary's **`totalSamplesDuration`** property + /// represents the combined duration of all samples produced by the media + /// source over the lifetime of this stats object, in seconds. + /// It does not include samples dropped before reaching this media source. + /// <!-- Dropped samples in `droppedSamplesDuration`; not implemented --> + /// + /// This can be used with [RTCAudioSourceStats.totalAudioEnergy] to compute an + /// [average audio level over different intervals](https://developer.mozilla.org/en-US/docs/Web/API/RTCAudioSourceStats#description). + /// + /// > **Note:** For audio duration of remotely sourced tracks, see + /// > [RTCInboundRtpStreamStats.totalSamplesDuration]. external num get totalSamplesDuration; - external set echoReturnLoss(num value); + external set totalSamplesDuration(num value); external num get echoReturnLoss; - external set echoReturnLossEnhancement(num value); + external set echoReturnLoss(num value); external num get echoReturnLossEnhancement; + external set echoReturnLossEnhancement(num value); } extension type RTCVideoSourceStats._(JSObject _) implements RTCMediaSourceStats, JSObject { @@ -588,14 +799,14 @@ extension type RTCVideoSourceStats._(JSObject _) num framesPerSecond, }); - external set width(int value); external int get width; - external set height(int value); + external set width(int value); external int get height; - external set frames(int value); + external set height(int value); external int get frames; - external set framesPerSecond(num value); + external set frames(int value); external num get framesPerSecond; + external set framesPerSecond(num value); } extension type RTCAudioPlayoutStats._(JSObject _) implements RTCStats, JSObject { @@ -611,18 +822,18 @@ extension type RTCAudioPlayoutStats._(JSObject _) int totalSamplesCount, }); - external set kind(String value); external String get kind; - external set synthesizedSamplesDuration(num value); + external set kind(String value); external num get synthesizedSamplesDuration; - external set synthesizedSamplesEvents(int value); + external set synthesizedSamplesDuration(num value); external int get synthesizedSamplesEvents; - external set totalSamplesDuration(num value); + external set synthesizedSamplesEvents(int value); external num get totalSamplesDuration; - external set totalPlayoutDelay(num value); + external set totalSamplesDuration(num value); external num get totalPlayoutDelay; - external set totalSamplesCount(int value); + external set totalPlayoutDelay(num value); external int get totalSamplesCount; + external set totalSamplesCount(int value); } /// The **`RTCPeerConnectionStats`** dictionary of the @@ -652,10 +863,29 @@ extension type RTCPeerConnectionStats._(JSObject _) int dataChannelsClosed, }); - external set dataChannelsOpened(int value); + /// The **`dataChannelsOpened`** property of the [RTCPeerConnectionStats] + /// dictionary indicates the number of unique [RTCDataChannel] objects that + /// have entered the + /// [`open`](https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/readyState#open) + /// state during their lifetime. external int get dataChannelsOpened; - external set dataChannelsClosed(int value); + external set dataChannelsOpened(int value); + + /// The **`dataChannelsClosed`** property of the [RTCPeerConnectionStats] + /// dictionary indicates the number of unique [RTCDataChannel] objects that + /// have left the + /// [`open`](https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/readyState#open) + /// state during their lifetime. + /// + /// A channel will leave the `open` state if either end of the connection or + /// the underlying transport is closed. + /// Note that channels that transition to + /// [`closing`](https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/readyState#closing) + /// or + /// [`closed`](https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel/readyState#closed) + /// without ever being `open` are not counted in this number. external int get dataChannelsClosed; + external set dataChannelsClosed(int value); } extension type RTCDataChannelStats._(JSObject _) implements RTCStats, JSObject { external factory RTCDataChannelStats({ @@ -672,22 +902,22 @@ extension type RTCDataChannelStats._(JSObject _) implements RTCStats, JSObject { int bytesReceived, }); - external set label(String value); external String get label; - external set protocol(String value); + external set label(String value); external String get protocol; - external set dataChannelIdentifier(int value); + external set protocol(String value); external int get dataChannelIdentifier; - external set state(RTCDataChannelState value); + external set dataChannelIdentifier(int value); external RTCDataChannelState get state; - external set messagesSent(int value); + external set state(RTCDataChannelState value); external int get messagesSent; - external set bytesSent(int value); + external set messagesSent(int value); external int get bytesSent; - external set messagesReceived(int value); + external set bytesSent(int value); external int get messagesReceived; - external set bytesReceived(int value); + external set messagesReceived(int value); external int get bytesReceived; + external set bytesReceived(int value); } /// The **`RTCTransportStats`** dictionary of the @@ -738,38 +968,38 @@ extension type RTCTransportStats._(JSObject _) implements RTCStats, JSObject { int selectedCandidatePairChanges, }); - external set packetsSent(int value); external int get packetsSent; - external set packetsReceived(int value); + external set packetsSent(int value); external int get packetsReceived; - external set bytesSent(int value); + external set packetsReceived(int value); external int get bytesSent; - external set bytesReceived(int value); + external set bytesSent(int value); external int get bytesReceived; - external set iceRole(RTCIceRole value); + external set bytesReceived(int value); external RTCIceRole get iceRole; - external set iceLocalUsernameFragment(String value); + external set iceRole(RTCIceRole value); external String get iceLocalUsernameFragment; - external set dtlsState(RTCDtlsTransportState value); + external set iceLocalUsernameFragment(String value); external RTCDtlsTransportState get dtlsState; - external set iceState(RTCIceTransportState value); + external set dtlsState(RTCDtlsTransportState value); external RTCIceTransportState get iceState; - external set selectedCandidatePairId(String value); + external set iceState(RTCIceTransportState value); external String get selectedCandidatePairId; - external set localCertificateId(String value); + external set selectedCandidatePairId(String value); external String get localCertificateId; - external set remoteCertificateId(String value); + external set localCertificateId(String value); external String get remoteCertificateId; - external set tlsVersion(String value); + external set remoteCertificateId(String value); external String get tlsVersion; - external set dtlsCipher(String value); + external set tlsVersion(String value); external String get dtlsCipher; - external set dtlsRole(RTCDtlsRole value); + external set dtlsCipher(String value); external RTCDtlsRole get dtlsRole; - external set srtpCipher(String value); + external set dtlsRole(RTCDtlsRole value); external String get srtpCipher; - external set selectedCandidatePairChanges(int value); + external set srtpCipher(String value); external int get selectedCandidatePairChanges; + external set selectedCandidatePairChanges(int value); } /// The **`RTCIceCandidateStats`** dictionary of the @@ -805,32 +1035,81 @@ extension type RTCIceCandidateStats._(JSObject _) RTCIceTcpCandidateType tcpType, }); - external set transportId(String value); + /// The [RTCIceCandidateStats] dictionary's + /// **`transportId`** property is a string that uniquely + /// identifies the transport that produced the [RTCTransportStats] from which + /// information about this candidate was taken. external String get transportId; - external set address(String? value); + external set transportId(String value); + + /// The **`address`** property of the + /// [RTCIceCandidateStats] dictionary indicates the address of the + /// candidate. While it's preferred that the address be specified as + /// an IPv4 or IPv6 numeric address, a fully-qualified domain name can be used + /// as + /// well. + /// + /// When a domain name is specified, the first IP address selected for that + /// address is used, even if the domain name maps to multiple IP addresses. external String? get address; - external set port(int value); + external set address(String? value); + + /// The [RTCIceCandidateStats] dictionary's **`port`** + /// property specifies the network port used by the candidate. external int get port; - external set protocol(String value); + external set port(int value); + + /// The [RTCIceCandidateStats] dictionary's + /// **`protocol`** property specifies the protocol the specified + /// candidate would use for communication with the remote peer. external String get protocol; - external set candidateType(RTCIceCandidateType value); + external set protocol(String value); + + /// The [RTCIceCandidateStats] interface's + /// **`candidateType`** property is a string that indicates the + /// type of candidate the object represents. external RTCIceCandidateType get candidateType; - external set priority(int value); + external set candidateType(RTCIceCandidateType value); + + /// The [RTCIceCandidateStats] dictionary's + /// **`priority`** property is a positive integer value + /// indicating the priority (or desirability) of the described candidate. + /// + /// During negotiation while setting up a WebRTC peer connection, the + /// priority values reported to the remote peer by a are used + /// to determine which candidates are considered "more desirable". The higher + /// the value, + /// the more desirable the candidate is. external int get priority; - external set url(String value); + external set priority(int value); + + /// The [RTCIceCandidateStats] dictionary's + /// **`url`** property specifies the URL of the + /// server from which the described candidate was obtained. This + /// property is _only_ available for local candidates. external String get url; - external set relayProtocol(RTCIceServerTransportProtocol value); + external set url(String value); + + /// The [RTCIceCandidateStats] dictionary's + /// **`relayProtocol`** property specifies the protocol being used + /// by a local candidate to communicate with the + /// server. + /// + /// The ICE protocol being used by the candidate otherwise can be obtained + /// from the + /// [RTCIceCandidateStats.protocol] property. external RTCIceServerTransportProtocol get relayProtocol; - external set foundation(String value); + external set relayProtocol(RTCIceServerTransportProtocol value); external String get foundation; - external set relatedAddress(String value); + external set foundation(String value); external String get relatedAddress; - external set relatedPort(int value); + external set relatedAddress(String value); external int get relatedPort; - external set usernameFragment(String value); + external set relatedPort(int value); external String get usernameFragment; - external set tcpType(RTCIceTcpCandidateType value); + external set usernameFragment(String value); external RTCIceTcpCandidateType get tcpType; + external set tcpType(RTCIceTcpCandidateType value); } /// The **`RTCIceCandidatePairStats`** dictionary of the @@ -877,50 +1156,160 @@ extension type RTCIceCandidatePairStats._(JSObject _) int bytesDiscardedOnSend, }); - external set transportId(String value); + /// The **`transportId`** property + /// uniquely identifies the [RTCIceTransport] that was inspected to obtain + /// the transport-related statistics contained in the + /// [RTCIceCandidatePairStats] object. external String get transportId; - external set localCandidateId(String value); + external set transportId(String value); + + /// The [RTCIceCandidatePairStats] property + /// **`localCandidateId`** is a string that uniquely identifies + /// the local candidate which was analyzed to generate the + /// [RTCIceCandidateStats] used to compute the statistics for this pair of + /// candidates. external String get localCandidateId; - external set remoteCandidateId(String value); + external set localCandidateId(String value); + + /// The [RTCIceCandidatePairStats] property + /// **`remoteCandidateId`** is a string that uniquely identifies + /// the remote candidate which was analyzed to generate the + /// [RTCIceCandidateStats] used to compute the statistics for this pair of + /// candidates. external String get remoteCandidateId; - external set state(RTCStatsIceCandidatePairState value); + external set remoteCandidateId(String value); + + /// The **`state`** property is a string that indicates the state of the + /// checklist of which the candidate pair is a member. external RTCStatsIceCandidatePairState get state; - external set nominated(bool value); + external set state(RTCStatsIceCandidatePairState value); + + /// The [RTCIceCandidatePairStats] property + /// **`nominated`** specifies whether or not the candidate pair + /// described by the underlying `RTCIceCandidatePair` has been nominated to be + /// used as the configuration for the WebRTC connection. external bool get nominated; - external set packetsSent(int value); + external set nominated(bool value); external int get packetsSent; - external set packetsReceived(int value); + external set packetsSent(int value); external int get packetsReceived; - external set bytesSent(int value); + external set packetsReceived(int value); + + /// The [RTCIceCandidatePairStats] property + /// **`bytesSent`** indicates the total number of payload + /// bytes—that is, bytes which aren't overhead such as headers or padding—that + /// have been + /// sent so far on the connection described by the candidate pair. + /// + /// The [RTCIceCandidatePairStats.bytesReceived] property + /// reports the number of bytes received so far on the described connection. external int get bytesSent; - external set bytesReceived(int value); + external set bytesSent(int value); + + /// The [RTCIceCandidatePairStats] property + /// **`bytesReceived`** indicates the total number of payload + /// bytes—that is, bytes which aren't overhead such as headers or padding—that + /// have been + /// received to date on the connection described by the candidate pair. + /// + /// The [RTCIceCandidatePairStats.bytesSent] property reports the + /// number of bytes sent so far on the described connection. external int get bytesReceived; - external set lastPacketSentTimestamp(DOMHighResTimeStamp value); + external set bytesReceived(int value); + + /// The [RTCIceCandidatePairStats] property + /// **`lastPacketSentTimestamp`** indicates the time at which the + /// connection described by the candidate pair last sent a packet, not + /// including + /// packets. external DOMHighResTimeStamp get lastPacketSentTimestamp; - external set lastPacketReceivedTimestamp(DOMHighResTimeStamp value); + external set lastPacketSentTimestamp(DOMHighResTimeStamp value); + + /// The [RTCIceCandidatePairStats] property + /// **`lastPacketReceivedTimestamp`** indicates the time at which + /// the connection described by the candidate pair last received a packet. + /// packets are not included. external DOMHighResTimeStamp get lastPacketReceivedTimestamp; - external set totalRoundTripTime(num value); + external set lastPacketReceivedTimestamp(DOMHighResTimeStamp value); + + /// The [RTCIceCandidatePairStats] dictionary's + /// **`totalRoundTripTime`** property is the total time that has + /// elapsed between sending requests and receiving the responses, for + /// all such requests that have been made so far on the pair of candidates + /// described by + /// this `RTCIceCandidatePairStats` object. This value includes both + /// connectivity check and consent check requests. external num get totalRoundTripTime; - external set currentRoundTripTime(num value); + external set totalRoundTripTime(num value); + + /// The [RTCIceCandidatePairStats] property + /// **`currentRoundTripTime`** is a floating-point value + /// indicating the number of seconds it takes for data to be sent by this peer + /// to the + /// remote peer and back over the connection described by this pair of + /// candidates. external num get currentRoundTripTime; - external set availableOutgoingBitrate(num value); + external set currentRoundTripTime(num value); + + /// The [RTCIceCandidatePairStats] property + /// **`availableOutgoingBitrate`** returns a value indicative of + /// the available outbound capacity of the network connection represented by + /// the candidate + /// pair. The higher the value, the more bandwidth you can assume is available + /// for + /// outgoing data. + /// + /// You can get the incoming available bitrate from + /// [RTCIceCandidatePairStats.availableIncomingBitrate]. external num get availableOutgoingBitrate; - external set availableIncomingBitrate(num value); + external set availableOutgoingBitrate(num value); + + /// The [RTCIceCandidatePairStats] property + /// **`availableIncomingBitrate`** returns a value indicative of + /// the available inbound capacity of the network connection represented by + /// the candidate + /// pair. The higher the value, the more bandwidth you can assume is available + /// for + /// incoming data. + /// + /// You can get the outgoing available bitrate from + /// [RTCIceCandidatePairStats.availableoutgoingBitrate]. external num get availableIncomingBitrate; - external set requestsReceived(int value); + external set availableIncomingBitrate(num value); + + /// The [RTCIceCandidatePairStats] dictionary's + /// **`requestsReceived`** property indicates the total number of + /// connectivity check requests that have been received so far on the + /// connection described by this pairing of candidates. external int get requestsReceived; - external set requestsSent(int value); + external set requestsReceived(int value); + + /// The [RTCIceCandidatePairStats] dictionary's + /// **`requestsSent`** property indicates the total number of + /// connectivity check requests that have been sent so far on the + /// connection described by this pair of candidates. external int get requestsSent; - external set responsesReceived(int value); + external set requestsSent(int value); + + /// The **`responsesReceived`** property + /// in the [RTCIceCandidatePairStats] dictionary indicates the total number + /// of connectivity check responses that have been received on the + /// connection described by this pair of candidates. external int get responsesReceived; - external set responsesSent(int value); + external set responsesReceived(int value); + + /// The [RTCIceCandidatePairStats] dictionary's + /// **`responsesSent`** property indicates the total number of + /// connectivity check responses that have been sent so far on the + /// connection described by this pair of candidates. external int get responsesSent; - external set consentRequestsSent(int value); + external set responsesSent(int value); external int get consentRequestsSent; - external set packetsDiscardedOnSend(int value); + external set consentRequestsSent(int value); external int get packetsDiscardedOnSend; - external set bytesDiscardedOnSend(int value); + external set packetsDiscardedOnSend(int value); external int get bytesDiscardedOnSend; + external set bytesDiscardedOnSend(int value); } /// The **`RTCCertificateStats`** dictionary of the @@ -947,12 +1336,27 @@ extension type RTCCertificateStats._(JSObject _) implements RTCStats, JSObject { String issuerCertificateId, }); - external set fingerprint(String value); + /// The **`fingerprint`** property of the [RTCCertificateStats] dictionary is + /// a string containing the fingerprint value of the associated + /// [RTCCertificate]. external String get fingerprint; - external set fingerprintAlgorithm(String value); + external set fingerprint(String value); + + /// The **`fingerprintAlgorithm`** property of the [RTCCertificateStats] + /// dictionary is a string containing the name of the hash function used to + /// generate the [RTCCertificateStats.fingerprint] value in the associated + /// [RTCCertificate]. external String get fingerprintAlgorithm; - external set base64Certificate(String value); + external set fingerprintAlgorithm(String value); + + /// The **`base64Certificate`** property of the [RTCCertificateStats] + /// dictionary is a string containing the base-64 representation of the + /// DER-encoded certificate. + /// + /// This is essentially an encoding of the original certificate as a string + /// that can safely serialized and deserialized when sent over an IP network. external String get base64Certificate; - external set issuerCertificateId(String value); + external set base64Certificate(String value); external String get issuerCertificateId; + external set issuerCertificateId(String value); } diff --git a/lib/src/dom/websockets.dart b/lib/src/dom/websockets.dart index abec7698..c730309f 100644 --- a/lib/src/dom/websockets.dart +++ b/lib/src/dom/websockets.dart @@ -69,21 +69,53 @@ extension type WebSocket._(JSObject _) implements EventTarget, JSObject { /// connection is in the `CLOSING` or `CLOSED` states, the browser will /// silently discard the data. external void send(JSAny data); + + /// The **`WebSocket.url`** read-only property returns the absolute + /// URL of the [WebSocket] as resolved by the constructor. external String get url; + + /// The **`WebSocket.readyState`** read-only property returns the + /// current state of the [WebSocket] connection. external int get readyState; + + /// The **`WebSocket.bufferedAmount`** read-only property returns + /// the number of bytes of data that have been queued using calls to + /// [`send()`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send) + /// but + /// not yet transmitted to the network. This value resets to zero once all + /// queued data has + /// been sent. This value does not reset to zero when the connection is + /// closed; if you keep + /// calling + /// [`send()`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send), + /// this will continue to climb. external int get bufferedAmount; - external set onopen(EventHandler value); external EventHandler get onopen; - external set onerror(EventHandler value); + external set onopen(EventHandler value); external EventHandler get onerror; - external set onclose(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onclose; + external set onclose(EventHandler value); + + /// The **`WebSocket.extensions`** read-only property returns the + /// extensions selected by the server. This is currently only the empty string + /// or a list of + /// extensions as negotiated by the connection. external String get extensions; + + /// The **`WebSocket.protocol`** read-only property returns the + /// name of the sub-protocol the server selected; this will be one of the + /// strings specified + /// in the `protocols` parameter when creating the [WebSocket] + /// object, or the empty string if no connection is established. external String get protocol; - external set onmessage(EventHandler value); external EventHandler get onmessage; - external set binaryType(BinaryType value); + external set onmessage(EventHandler value); + + /// The **`WebSocket.binaryType`** property controls the type of + /// binary data being received over the WebSocket connection. external BinaryType get binaryType; + external set binaryType(BinaryType value); } /// A `CloseEvent` is sent to clients using when the connection is closed. This @@ -100,8 +132,20 @@ extension type CloseEvent._(JSObject _) implements Event, JSObject { CloseEventInit eventInitDict, ]); + /// The **`wasClean`** read-only property of the [CloseEvent] interface + /// returns `true` if the connection closed cleanly. external bool get wasClean; + + /// The **`code`** read-only property of the [CloseEvent] interface returns a + /// [WebSocket connection close code](https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.5) + /// indicating the reason the server gave for closing the connection. external int get code; + + /// The **`reason`** read-only property of the [CloseEvent] interface returns + /// the + /// [WebSocket connection close reason](https://www.rfc-editor.org/rfc/rfc6455.html#section-7.1.6) + /// the server gave for closing the connection; that is, a concise + /// human-readable prose explanation for the closure. external String get reason; } extension type CloseEventInit._(JSObject _) implements EventInit, JSObject { @@ -114,10 +158,10 @@ extension type CloseEventInit._(JSObject _) implements EventInit, JSObject { String reason, }); - external set wasClean(bool value); external bool get wasClean; - external set code(int value); + external set wasClean(bool value); external int get code; - external set reason(String value); + external set code(int value); external String get reason; + external set reason(String value); } diff --git a/lib/src/dom/webvtt.dart b/lib/src/dom/webvtt.dart index 0a1e569a..f0afeb78 100644 --- a/lib/src/dom/webvtt.dart +++ b/lib/src/dom/webvtt.dart @@ -42,26 +42,57 @@ extension type VTTCue._(JSObject _) implements TextTrackCue, JSObject { /// The **`getCueAsHTML()`** method of the [VTTCue] interface returns a /// [DocumentFragment] containing the cue content. external DocumentFragment getCueAsHTML(); - external set region(VTTRegion? value); + + /// The **`region`** property of the [VTTCue] interface returns and sets the + /// [VTTRegion] that this cue belongs to. external VTTRegion? get region; - external set vertical(DirectionSetting value); + external set region(VTTRegion? value); + + /// The **`vertical`** property of the [VTTCue] interface is a string + /// representing the cue's writing direction. external DirectionSetting get vertical; - external set snapToLines(bool value); + external set vertical(DirectionSetting value); + + /// The **`snapToLines`** property of the [VTTCue] interface is a `Boolean` + /// indicating if the [VTTCue.line] property is an integer number of lines, or + /// a percentage of the video size. external bool get snapToLines; - external set line(LineAndPositionSetting value); + external set snapToLines(bool value); + + /// The **`line`** property of the [VTTCue] interface represents the cue line + /// of this WebVTT cue. external LineAndPositionSetting get line; - external set lineAlign(LineAlignSetting value); + external set line(LineAndPositionSetting value); + + /// The **`lineAlign`** property of the [VTTCue] interface represents the + /// alignment of this VTT cue. external LineAlignSetting get lineAlign; - external set position(LineAndPositionSetting value); + external set lineAlign(LineAlignSetting value); + + /// The **`position`** property of the [VTTCue] interface represents the + /// indentation of the cue within the line. external LineAndPositionSetting get position; - external set positionAlign(PositionAlignSetting value); + external set position(LineAndPositionSetting value); + + /// The **`positionAlign`** property of the [VTTCue] interface is used to + /// determine what [VTTCue.position] is anchored to. external PositionAlignSetting get positionAlign; - external set size(num value); + external set positionAlign(PositionAlignSetting value); + + /// The **`size`** property of the [VTTCue] interface represents the size of + /// the cue as a percentage of the video size. external num get size; - external set align(AlignSetting value); + external set size(num value); + + /// The **`align`** property of the [VTTCue] interface represents the + /// alignment of all of the lines of text in the text box. external AlignSetting get align; - external set text(String value); + external set align(AlignSetting value); + + /// The **`text`** property of the [VTTCue] interface represents the text + /// contents of the cue. external String get text; + external set text(String value); } /// The `VTTRegion` interface—part of the API for handling WebVTT (text tracks @@ -75,20 +106,20 @@ extension type VTTCue._(JSObject _) implements TextTrackCue, JSObject { extension type VTTRegion._(JSObject _) implements JSObject { external factory VTTRegion(); - external set id(String value); external String get id; - external set width(num value); + external set id(String value); external num get width; - external set lines(int value); + external set width(num value); external int get lines; - external set regionAnchorX(num value); + external set lines(int value); external num get regionAnchorX; - external set regionAnchorY(num value); + external set regionAnchorX(num value); external num get regionAnchorY; - external set viewportAnchorX(num value); + external set regionAnchorY(num value); external num get viewportAnchorX; - external set viewportAnchorY(num value); + external set viewportAnchorX(num value); external num get viewportAnchorY; - external set scroll(ScrollSetting value); + external set viewportAnchorY(num value); external ScrollSetting get scroll; + external set scroll(ScrollSetting value); } diff --git a/lib/src/dom/xhr.dart b/lib/src/dom/xhr.dart index d2250692..2b25c137 100644 --- a/lib/src/dom/xhr.dart +++ b/lib/src/dom/xhr.dart @@ -31,20 +31,20 @@ typedef XMLHttpRequestResponseType = String; /// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget). extension type XMLHttpRequestEventTarget._(JSObject _) implements EventTarget, JSObject { - external set onloadstart(EventHandler value); external EventHandler get onloadstart; - external set onprogress(EventHandler value); + external set onloadstart(EventHandler value); external EventHandler get onprogress; - external set onabort(EventHandler value); + external set onprogress(EventHandler value); external EventHandler get onabort; - external set onerror(EventHandler value); + external set onabort(EventHandler value); external EventHandler get onerror; - external set onload(EventHandler value); + external set onerror(EventHandler value); external EventHandler get onload; - external set ontimeout(EventHandler value); + external set onload(EventHandler value); external EventHandler get ontimeout; - external set onloadend(EventHandler value); + external set ontimeout(EventHandler value); external EventHandler get onloadend; + external set onloadend(EventHandler value); } /// @AvailableInWorkers("notservice") @@ -211,21 +211,227 @@ extension type XMLHttpRequest._(JSObject _) /// it /// as such. This method must be called before calling [XMLHttpRequest.send]. external void overrideMimeType(String mime); - external set onreadystatechange(EventHandler value); external EventHandler get onreadystatechange; + external set onreadystatechange(EventHandler value); + + /// The **XMLHttpRequest.readyState** property returns the state an + /// XMLHttpRequest client is in. An XHR client exists in one of the following + /// states: + /// + /// | Value | State | Description | + /// | ----- | ------------------ | --------------------------------------------------------------- | + /// | `0` | `UNSENT` | Client has been created. `open()` not called yet. | + /// | `1` | `OPENED` | `open()` has been called. | + /// | `2` | `HEADERS_RECEIVED` | `send()` has been called, and headers and status are available. | + /// | `3` | `LOADING` | Downloading; `responseText` holds partial data. | + /// | `4` | `DONE` | The operation is complete. | + /// + /// - UNSENT + /// - : The XMLHttpRequest client has been created, but the open() method hasn't been called yet. + /// - OPENED + /// - : open() method has been invoked. During this state, the request headers can be set using the [setRequestHeader()](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader) method and the [send()](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send) method can be called which will initiate the fetch. + /// - HEADERS_RECEIVED + /// - : send() has been called, all redirects (if any) have been followed and the response headers have been received. + /// - LOADING + /// - : Response's body is being received. If [`responseType`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType) is "text" or empty string, [`responseText`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText) will have the partial text response as it loads. + /// - DONE + /// - : The fetch operation is complete. This could mean that either the data transfer has been completed successfully or failed. external int get readyState; - external set timeout(int value); + + /// The **`XMLHttpRequest.timeout`** property is an `unsigned long` + /// representing the number of milliseconds a request can take before + /// automatically being terminated. The default value is 0, which means there + /// is no timeout. Timeout shouldn't be used for synchronous XMLHttpRequests + /// requests used in a or it will throw an `InvalidAccessError` exception. + /// When a timeout happens, a + /// [timeout](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout_event) + /// event is fired. + /// + /// > **Note:** You may not use a timeout for synchronous requests with an + /// > owning window. + /// + /// [Using a timeout with an asynchronous request](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest_API/Synchronous_and_Asynchronous_Requests#example_using_a_timeout). external int get timeout; - external set withCredentials(bool value); + external set timeout(int value); + + /// The **`XMLHttpRequest.withCredentials`** property is a boolean value that + /// indicates whether or not cross-site `Access-Control` requests should be + /// made using credentials such as cookies, authorization headers or TLS + /// client certificates. Setting `withCredentials` has no effect on + /// same-origin requests. + /// + /// In addition, this flag is also used to indicate when cookies are to be + /// ignored in the response. The default is `false`. `XMLHttpRequest` + /// responses from a different domain cannot set cookie values for their own + /// domain unless `withCredentials` is set to `true` before making the + /// request. The third-party cookies obtained by setting `withCredentials` to + /// true will still honor same-origin policy and hence can not be accessed by + /// the requesting script through + /// [document.cookie](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie) + /// or from response headers. + /// + /// > **Note:** This never affects same-origin requests. + /// + /// > **Note:** `XMLHttpRequest` responses from a different domain _cannot_ + /// > set cookie values for their own domain unless `withCredentials` is set + /// > to `true` before making the request, regardless of `Access-Control-` + /// > header values. external bool get withCredentials; + external set withCredentials(bool value); + + /// The [XMLHttpRequest] `upload` property returns an [XMLHttpRequestUpload] + /// object that can be observed to monitor an upload's progress. + /// + /// It is an opaque object, but because it's also an + /// [XMLHttpRequestEventTarget], event listeners can be attached to track its + /// process. + /// + /// > **Note:** Attaching event listeners to this object prevents the request + /// > from being a "simple request" and will cause a preflight request to be + /// > issued if cross-origin; see + /// > [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS). Because + /// > of this, event listeners need to be registered before calling + /// > [XMLHttpRequest.send] or upload events won't be dispatched. + /// + /// > **Note:** The spec also seems to indicate that event listeners should be + /// > attached after [XMLHttpRequest.open]. However, browsers are buggy on + /// > this matter, and often need the listeners to be registered _before_ + /// > [XMLHttpRequest.open] to work. + /// + /// The following events can be triggered on an upload object and used to + /// monitor the upload: + /// + /// <table class="no-markdown"> + /// <thead> + /// <tr> + /// <th>Event</th> + /// <th>Description</th> + /// </tr> + /// </thead> + /// <tbody> + /// <tr> + /// <td>[XMLHttpRequestUpload.loadstart_event]</td> + /// <td>The upload has begun.</td> + /// </tr> + /// <tr> + /// <td>[XMLHttpRequestUpload.progress_event]</td> + /// <td> + /// Periodically delivered to indicate the amount of progress made so far. + /// </td> + /// </tr> + /// <tr> + /// <td>[XMLHttpRequestUpload.abort_event]</td> + /// <td>The upload operation was aborted.</td> + /// </tr> + /// <tr> + /// <td>[XMLHttpRequestUpload.error_event]</td> + /// <td>The upload failed due to an error.</td> + /// </tr> + /// <tr> + /// <td>[XMLHttpRequestUpload.load_event]</td> + /// <td>The upload completed successfully.</td> + /// </tr> + /// <tr> + /// <td>[XMLHttpRequestUpload.timeout_event]</td> + /// <td> + /// The upload timed out because a reply did not arrive within the time + /// interval specified by the + /// [XMLHttpRequest.timeout]. + /// </td> + /// </tr> + /// <tr> + /// <td>[XMLHttpRequestUpload.loadend_event]</td> + /// <td> + /// The upload finished. This event does not differentiate between success + /// or failure, and is sent at the end of the upload regardless of the + /// outcome. Prior to this event, one of <code>load</code>, + /// <code>error</code>, <code>abort</code>, or <code>timeout</code> will + /// already have been delivered to indicate why the upload ended. + /// </td> + /// </tr> + /// </tbody> + /// </table> external XMLHttpRequestUpload get upload; + + /// The read-only **`XMLHttpRequest.responseURL`** property returns the + /// serialized URL of the response or the empty string if the URL is `null`. + /// If the URL is returned, any URL fragment present in the URL will be + /// stripped away. The value of `responseURL` will be the final URL obtained + /// after any redirects. external String get responseURL; + + /// The read-only **`XMLHttpRequest.status`** property returns the numerical + /// HTTP + /// [status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) of + /// the `XMLHttpRequest`'s response. + /// + /// Before the request completes, the value of `status` is 0. Browsers also + /// report a status of 0 in case of `XMLHttpRequest` errors. external int get status; + + /// The read-only **`XMLHttpRequest.statusText`** property returns a string + /// containing the response's status message as returned by the HTTP server. + /// Unlike + /// [`XMLHTTPRequest.status`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status) + /// which indicates a numerical status code, this property contains the _text_ + /// of the response status, such as "OK" or "Not Found". If the request's + /// [`readyState`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState) + /// is in `UNSENT` or `OPENED` state, the value of `statusText` will be an + /// empty string. + /// + /// If the server response doesn't explicitly specify a status text, + /// `statusText` will assume the default value "OK". + /// + /// > **Note:** Responses over an HTTP/2 connection will always have an empty + /// > string as status message as HTTP/2 does not support them. external String get statusText; - external set responseType(XMLHttpRequestResponseType value); + + /// The [XMLHttpRequest] property + /// **`responseType`** is an enumerated string value specifying + /// the type of data contained in the response. + /// + /// It also lets the author change the + /// response type. If an empty string is set as the value of `responseType`, + /// the + /// default value of `text` is used. external XMLHttpRequestResponseType get responseType; + external set responseType(XMLHttpRequestResponseType value); + + /// The [XMLHttpRequest] + /// **`response`** property returns the response's body content as + /// an `ArrayBuffer`, a [Blob], a [Document], + /// a JavaScript `Object`, or a string, depending on the value + /// of the request's [XMLHttpRequest.responseType] + /// property. external JSAny? get response; + + /// The read-only [XMLHttpRequest] property + /// **`responseText`** returns the text received from a server + /// following a request being sent. external String get responseText; + + /// The **`XMLHttpRequest.responseXML`** read-only property returns + /// a [Document] containing the HTML or XML retrieved by the request; or + /// `null` if the request was unsuccessful, has not yet been sent, or if the + /// data + /// can't be parsed as XML or HTML. + /// + /// > **Note:** The name `responseXML` is an artifact of this + /// > property's history; it works for both HTML and XML. + /// + /// Usually, the response is parsed as "`text/xml`". If the + /// [XMLHttpRequest.responseType] is set to + /// "`document`" and the request was made asynchronously, instead the response + /// is + /// parsed as "`text/html`". `responseXML` is `null` for + /// any other types of data, as well as for [`data:` + /// URLs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs). + /// + /// If the server doesn't specify the as + /// "`text/xml`" or "`application/xml`", you can use + /// [XMLHttpRequest.overrideMimeType] to parse it as XML anyway. + /// + /// This property isn't available to workers. external Document? get responseXML; } @@ -316,8 +522,33 @@ extension type ProgressEvent._(JSObject _) implements Event, JSObject { ProgressEventInit eventInitDict, ]); + /// The + /// **`ProgressEvent.lengthComputable`** read-only property is a + /// boolean flag indicating if the resource concerned by the + /// [ProgressEvent] has a length that can be calculated. If not, the + /// [ProgressEvent.total] property has no significant value. external bool get lengthComputable; + + /// The **`ProgressEvent.loaded`** read-only property is an integer + /// representing the amount of work already performed by the underlying + /// process. The ratio + /// of work done can be calculated with the property and + /// `ProgressEvent.total`. + /// When downloading a resource using HTTP, this value is specified in bytes + /// (not bits), and only represents the part of the content + /// itself, not headers and other overhead. external int get loaded; + + /// The **`ProgressEvent.total`** read-only property is an unsigned + /// 64-bit integer value indicating the total size of the data being processed + /// or + /// transmitted. In the case of an HTTP transmission, this is the size of the + /// body of the + /// message (the `Content-Length`), and does not include headers and other + /// overhead. + /// + /// If the event's [ProgressEvent.lengthComputable] + /// property is `false`, this value is meaningless and should be ignored. external int get total; } extension type ProgressEventInit._(JSObject _) implements EventInit, JSObject { @@ -330,10 +561,10 @@ extension type ProgressEventInit._(JSObject _) implements EventInit, JSObject { int total, }); - external set lengthComputable(bool value); external bool get lengthComputable; - external set loaded(int value); + external set lengthComputable(bool value); external int get loaded; - external set total(int value); + external set loaded(int value); external int get total; + external set total(int value); } From 7e028abd0bebc1d4ab552ec3004fc28771d15b76 Mon Sep 17 00:00:00 2001 From: Devon Carew <devoncarew@google.com> Date: Tue, 12 Mar 2024 14:07:08 -0700 Subject: [PATCH 4/4] update the changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 046f2935..c950fcad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ allowed to contain those fields. - Empty dictionary constructors now create an empty object instead of being treated like non-object literal `external` constructors. +- Generate MDN API documentation for getters. - Update the docs for generated interface types to reference the MDN Web Docs project. - Address several broken links in API documentation.