@weftui/core 0.28.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # @weftui/core
2
2
 
3
- > Element builders and combinators for [Weft](https://weftui.dev) reactive UI, woven from [Effect](https://effect.website).
3
+ > Element builders and combinators for [Weft](https://weftui.dev): reactive UI, woven from [Effect](https://effect.website).
4
4
 
5
5
  The authoring layer of Weft. Build your component tree with `h`, compose it with `Boundary` and `List`, and let streams drive every update. Every node **is** an Effect: components return `Node<E, R>` (an alias for `Effect.Effect<ElementDescriptor, E, R>`), so error and requirement channels accumulate through the tree and every Effect combinator applies to nodes directly.
6
6
 
7
- This package is renderer-agnostic pair it with [`@weftui/dom`](https://weftui.dev/docs/reference/dom) to render to the browser and the server.
7
+ This package is renderer-agnostic. Pair it with [`@weftui/dom`](https://weftui.dev/docs/reference/dom) to render to the browser and the server.
8
8
 
9
9
  ## Installation
10
10
 
@@ -20,12 +20,12 @@ Weft tracks Effect 4's beta line. This release is built and tested against `effe
20
20
 
21
21
  | Export | What it is |
22
22
  | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
23
- | `h` | Proxy namespace of element builders `h.div`, `h.span`, `h.button`, … plus `h.fragment` for wrapper-less groups. |
24
- | `Component` | `Component.gen` / `Component.make` reusable components whose reactive prop channels propagate to the call site. |
23
+ | `h` | Proxy namespace of element builders: `h.div`, `h.span`, `h.button`, … plus `h.fragment` for wrapper-less groups. |
24
+ | `Component` | `Component.gen` / `Component.make`: reusable components whose reactive prop channels propagate to the call site. |
25
25
  | `Boundary` | Error boundaries (`catch`, `catchTag`, `catchTags`, `catchFilter`, `catchIf`, `catchCause`), plus `Boundary.suspend` (async fallbacks) and `Boundary.rpc` (server-data seam). |
26
- | `List` | `List.each` the keyed list combinator; renders once per key and reconciles across emissions. |
26
+ | `List` | `List.each`: the keyed list combinator; renders once per key and reconciles across emissions. |
27
27
  | `Source` | The reactive prop vocabulary (`A \| Effect \| Stream \| Subscribable`) + `Source.toSubscribable`. |
28
- | `Node<E,R>` | The core tree type an alias for `Effect.Effect<ElementDescriptor, E, R>`. |
28
+ | `Node<E,R>` | The core tree type: an alias for `Effect.Effect<ElementDescriptor, E, R>`. |
29
29
 
30
30
  ## Example
31
31
 
@@ -54,9 +54,9 @@ void Effect.runPromise(WeftApp.mount(app, Counter(), document.getElementById("ro
54
54
  - Full docs: **https://weftui.dev**
55
55
  - `@weftui/core` API reference: **https://weftui.dev/docs/reference/core**
56
56
  - The rendering model (why no virtual DOM): **https://weftui.dev/docs/explanation/rendering-model**
57
- - Bundled with this package: see the [`./docs`](./docs) directory in `node_modules/@weftui/core/docs` the complete tutorial, how-to, explanation, and reference tree ships on disk for offline and agent use.
57
+ - Bundled with this package: see the [`./docs`](./docs) directory in `node_modules/@weftui/core/docs`. The complete tutorial, how-to, explanation, and reference tree ships on disk for offline and agent use.
58
58
 
59
- **New to Effect?** Read the [Effect docs](https://effect.website/docs/getting-started/introduction) first Weft assumes the fundamentals.
59
+ **New to Effect?** Read the [Effect docs](https://effect.website/docs/getting-started/introduction) first, since Weft assumes the fundamentals.
60
60
 
61
61
  ## License
62
62
 
@@ -10513,7 +10513,7 @@ declare namespace Source {
10513
10513
  * contributes its value channel; a static value is itself.
10514
10514
  *
10515
10515
  * Checked in the same order as `OpenPropSource` (`combinator/types.ts`) so an
10516
- * `Effect` which is itself iterable for generators never reaches the static
10516
+ * `Effect`, which is itself iterable for generators, never reaches the static
10517
10517
  * fallback. The props-object analog is `PropsE`/`PropsR` in `combinator/types.ts`.
10518
10518
  */
10519
10519
  type Success<S> = S extends Stream.Stream<infer A, any, any> ? A : S extends Effect.Effect<infer A, any, any> ? A : S extends Subscribable<infer A, any, any> ? A : S;
@@ -10842,7 +10842,15 @@ type HTMLReferrerPolicy = "no-referrer" | "no-referrer-when-downgrade" | "origin
10842
10842
  type HTMLRole = "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "command" | "complementary" | "composite" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "input" | "insertion" | "landmark" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "meter" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "range" | "region" | "roletype" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "section" | "sectionhead" | "select" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "structure" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem" | "widget" | "window";
10843
10843
  interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {
10844
10844
  children?: HTMLAttributeSource<Renderable>;
10845
- ref?: SubscriptionRef.SubscriptionRef<Option.Option<T>>;
10845
+ /**
10846
+ * A ref to this element, or an array of refs that all receive it (fan-out,
10847
+ * typically from `Props.merge`). The array arm accepts refs of any element
10848
+ * type because `SubscriptionRef` is invariant: composing a behavior
10849
+ * primitive's `SubscriptionRef<Option<HTMLElement>>` with a caller's
10850
+ * `SubscriptionRef<Option<HTMLInputElement>>` is the point of fan-out, and an
10851
+ * exactly-typed array would reject it. The single-ref arm stays precise.
10852
+ */
10853
+ ref?: SubscriptionRef.SubscriptionRef<Option.Option<T>> | ReadonlyArray<SubscriptionRef.SubscriptionRef<Option.Option<any>>>;
10846
10854
  /**
10847
10855
  * Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout.
10848
10856
  */
@@ -10976,7 +10984,7 @@ interface AHTMLAttributes<T> extends HTMLAttributes<T> {
10976
10984
  */
10977
10985
  download?: HTMLAttributeSource<string>;
10978
10986
  /**
10979
- * The URL that the hyperlink points to. Links are not restricted to HTTP-based URLs they can use any URL scheme supported by browsers: Sections of a page with fragment URLs Pieces of media files with media fragments Telephone numbers with tel: URLs Email addresses with mailto: URLs While web browsers may not support other URL schemes, web sites can with registerProtocolHandler()
10987
+ * The URL that the hyperlink points to. Links are not restricted to HTTP-based URLs, and they can use any URL scheme supported by browsers: Sections of a page with fragment URLs Pieces of media files with media fragments Telephone numbers with tel: URLs Email addresses with mailto: URLs While web browsers may not support other URL schemes, web sites can with registerProtocolHandler()
10980
10988
  */
10981
10989
  href?: HTMLAttributeSource<string>;
10982
10990
  /**
@@ -11355,7 +11363,7 @@ interface ButtonHTMLAttributes<T> extends HTMLAttributes<T> {
11355
11363
  */
11356
11364
  formnovalidate?: HTMLAttributeSource<boolean>;
11357
11365
  /**
11358
- * If the button is a submit button, this attribute is a author-defined name or standardized, underscore-prefixed keyword indicating where to display the response from submitting the form. This is the name of, or keyword for, a browsing context (a tab, window, or `<iframe>`). If this attribute is specified, it overrides the target attribute of the button's form owner. The following keywords have special meanings: _self: Load the response into the same browsing context as the current one. This is the default if the attribute is not specified. _blank: Load the response into a new unnamed browsing context usually a new tab or window, depending on the user's browser settings. _parent: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as _self. _top: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as _self.
11366
+ * If the button is a submit button, this attribute is a author-defined name or standardized, underscore-prefixed keyword indicating where to display the response from submitting the form. This is the name of, or keyword for, a browsing context (a tab, window, or `<iframe>`). If this attribute is specified, it overrides the target attribute of the button's form owner. The following keywords have special meanings: _self: Load the response into the same browsing context as the current one. This is the default if the attribute is not specified. _blank: Load the response into a new unnamed browsing context, usually a new tab or window, depending on the user's browser settings. _parent: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as _self. _top: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as _self.
11359
11367
  */
11360
11368
  formtarget?: HTMLAttributeSource<string>;
11361
11369
  /**
@@ -11477,7 +11485,7 @@ interface DelHTMLAttributes<T> extends HTMLAttributes<T> {
11477
11485
  }
11478
11486
  interface DetailsHTMLAttributes<T> extends HTMLAttributes<T> {
11479
11487
  /**
11480
- * This Boolean attribute indicates whether or not the details that is, the contents of the `<details>` element are currently visible. The details are shown when this attribute exists, or hidden when this attribute is absent. By default this attribute is absent which means the details are not visible. Note: You have to remove this attribute entirely to make the details hidden. open="false" makes the details visible because this attribute is Boolean.
11488
+ * This Boolean attribute indicates whether or not the details (that is, the contents of the `<details>` element) are currently visible. The details are shown when this attribute exists, or hidden when this attribute is absent. By default this attribute is absent which means the details are not visible. Note: You have to remove this attribute entirely to make the details hidden. open="false" makes the details visible because this attribute is Boolean.
11481
11489
  */
11482
11490
  open?: HTMLAttributeSource<boolean>;
11483
11491
  }
@@ -11517,7 +11525,7 @@ interface FieldsetHTMLAttributes<T> extends HTMLAttributes<T> {
11517
11525
  */
11518
11526
  disabled?: HTMLAttributeSource<boolean>;
11519
11527
  /**
11520
- * This attribute takes the value of the id attribute of a `<form>` element you want the `<fieldset>` to be part of, even if it is not inside the form. Please note that usage of this is confusing if you want the `<input>` elements inside the `<fieldset>` to be associated with the form, you need to use the form attribute directly on those elements. You can check which elements are associated with a form via JavaScript, using HTMLFormElement.elements.
11528
+ * This attribute takes the value of the id attribute of a `<form>` element you want the `<fieldset>` to be part of, even if it is not inside the form. Please note that usage of this is confusing: if you want the `<input>` elements inside the `<fieldset>` to be associated with the form, you need to use the form attribute directly on those elements. You can check which elements are associated with a form via JavaScript, using HTMLFormElement.elements.
11521
11529
  */
11522
11530
  form?: HTMLAttributeSource<string>;
11523
11531
  /**
@@ -11721,7 +11729,7 @@ interface IframeHTMLAttributes<T> extends HTMLAttributes<T> {
11721
11729
  */
11722
11730
  referrerpolicy?: HTMLAttributeSource<HTMLReferrerPolicy>;
11723
11731
  /**
11724
- * Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions: allow-downloads-without-user-activation : Allows for downloads to occur without a gesture from the user. allow-downloads: Allows for downloads to occur with a gesture from the user. allow-forms: Allows the resource to submit forms. If this keyword is not used, form submission is blocked. allow-modals: Lets the resource open modal windows. allow-orientation-lock: Lets the resource lock the screen orientation. allow-pointer-lock: Lets the resource use the Pointer Lock API. allow-popups: Allows popups (such as window.open(), target="_blank", or showModalDialog()). If this keyword is not used, the popup will silently fail to open. allow-popups-to-escape-sandbox: Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can safely sandbox an advertisement without forcing the same restrictions upon the page the ad links to. allow-presentation: Lets the resource start a presentation session. allow-same-origin: If this token is not used, the resource is treated as being from a special origin that always fails the same-origin policy (potentially preventing access to data storage/cookies and some JavaScript APIs). allow-scripts: Lets the resource run scripts (but not create popup windows). allow-storage-access-by-user-activation : Lets the resource request access to the parent's storage capabilities with the Storage Access API. allow-top-navigation: Lets the resource navigate the top-level browsing context (the one named _top). allow-top-navigation-by-user-activation: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture. Notes about sandboxing: When the embedded document has the same origin as the embedding page, it is strongly discouraged to use both allow-scripts and allow-same-origin, as that lets the embedded document remove the sandbox attribute making it no more secure than not using the sandbox attribute at all. Sandboxing is useless if the attacker can display content outside a sandboxed iframe such as if the viewer opens the frame in a new tab. Such content should be also served from a separate origin to limit potential damage. The sandbox attribute is unsupported in Internet Explorer 9 and earlier.
11732
+ * Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions: allow-downloads-without-user-activation : Allows for downloads to occur without a gesture from the user. allow-downloads: Allows for downloads to occur with a gesture from the user. allow-forms: Allows the resource to submit forms. If this keyword is not used, form submission is blocked. allow-modals: Lets the resource open modal windows. allow-orientation-lock: Lets the resource lock the screen orientation. allow-pointer-lock: Lets the resource use the Pointer Lock API. allow-popups: Allows popups (such as window.open(), target="_blank", or showModalDialog()). If this keyword is not used, the popup will silently fail to open. allow-popups-to-escape-sandbox: Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can safely sandbox an advertisement without forcing the same restrictions upon the page the ad links to. allow-presentation: Lets the resource start a presentation session. allow-same-origin: If this token is not used, the resource is treated as being from a special origin that always fails the same-origin policy (potentially preventing access to data storage/cookies and some JavaScript APIs). allow-scripts: Lets the resource run scripts (but not create popup windows). allow-storage-access-by-user-activation : Lets the resource request access to the parent's storage capabilities with the Storage Access API. allow-top-navigation: Lets the resource navigate the top-level browsing context (the one named _top). allow-top-navigation-by-user-activation: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture. Notes about sandboxing: When the embedded document has the same origin as the embedding page, it is strongly discouraged to use both allow-scripts and allow-same-origin, as that lets the embedded document remove the sandbox attribute, making it no more secure than not using the sandbox attribute at all. Sandboxing is useless if the attacker can display content outside a sandboxed iframe, such as if the viewer opens the frame in a new tab. Such content should be also served from a separate origin to limit potential damage. The sandbox attribute is unsupported in Internet Explorer 9 and earlier.
11725
11733
  */
11726
11734
  sandbox?: HTMLAttributeSource<HTMLIframeSandbox>;
11727
11735
  /**
@@ -11837,7 +11845,7 @@ interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
11837
11845
  */
11838
11846
  autocorrect?: HTMLAttributeSource<string>;
11839
11847
  /**
11840
- * Introduced in the HTML Media Capture specification and valid for the file input type only, the capture attribute defines which mediamicrophone, video, or camerashould be used to capture a new file for upload with file upload control in supporting scenarios. See the file input type.
11848
+ * Introduced in the HTML Media Capture specification and valid for the file input type only, the capture attribute defines which media (microphone, video, or camera) should be used to capture a new file for upload with file upload control in supporting scenarios. See the file input type.
11841
11849
  */
11842
11850
  capture?: HTMLAttributeSource<string>;
11843
11851
  /**
@@ -11937,7 +11945,7 @@ interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
11937
11945
  */
11938
11946
  required?: HTMLAttributeSource<boolean>;
11939
11947
  /**
11940
- * The results attributesupported only by Safariis a numeric value that lets you override the maximum number of entries to be displayed in the `<input>` element's natively-provided drop-down menu of previous search queries.The value must be a non-negative decimal number. If not provided, or an invalid value is given, the browser's default maximum number of entries is used.
11948
+ * The results attribute (supported only by Safari) is a numeric value that lets you override the maximum number of entries to be displayed in the `<input>` element's natively-provided drop-down menu of previous search queries.The value must be a non-negative decimal number. If not provided, or an invalid value is given, the browser's default maximum number of entries is used.
11941
11949
  */
11942
11950
  results?: HTMLAttributeSource<string>;
11943
11951
  /**
@@ -11949,7 +11957,7 @@ interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
11949
11957
  */
11950
11958
  src?: HTMLAttributeSource<string>;
11951
11959
  /**
11952
- * Valid for the numeric input types, including number, date/time input types, and range, the step attribute is a number that specifies the granularity that the value must adhere to. If not explicitly included: step defaults to 1 for number and range. For the date/time input types, step is expressed in seconds, with the default step being 60 seconds. The step scale factor is 1000 (which converts the seconds to milliseconds, as used in other algorithms). The value must be a positive numberinteger or floator the special value any, which means no stepping is implied, and any value is allowed (barring other constraints, such as min and max). If any is not explicity set, valid values for the number, date/time input types, and range input types are equal to the basis for stepping the min value and increments of the step value, up to the max value, if specified. For example, if you have `<input type="number" min="10" step="2">`, then any even integer, 10 or greater, is valid. If omitted, `<input type="number">`, any integer is valid, but floats (like 4.2) are not valid, because step defaults to 1. For 4.2 to be valid, step would have had to be set to any, 0.1, 0.2, or any the min value would have had to be a number ending in .2, such as `<input type="number" min="-5.2">` Note: When the data entered by the user doesn't adhere to the stepping configuration, the value is considered invalid in contraint validation and will match the :invalid pseudoclass. See Client-side validation for more information.
11960
+ * Valid for the numeric input types, including number, date/time input types, and range, the step attribute is a number that specifies the granularity that the value must adhere to. If not explicitly included: step defaults to 1 for number and range. For the date/time input types, step is expressed in seconds, with the default step being 60 seconds. The step scale factor is 1000 (which converts the seconds to milliseconds, as used in other algorithms). The value must be a positive number (integer or float) or the special value any, which means no stepping is implied, and any value is allowed (barring other constraints, such as min and max). If any is not explicity set, valid values for the number, date/time input types, and range input types are equal to the basis for stepping: the min value and increments of the step value, up to the max value, if specified. For example, if you have `<input type="number" min="10" step="2">`, then any even integer, 10 or greater, is valid. If omitted, `<input type="number">`, any integer is valid, but floats (like 4.2) are not valid, because step defaults to 1. For 4.2 to be valid, step would have had to be set to any, 0.1, 0.2, or any the min value would have had to be a number ending in .2, such as `<input type="number" min="-5.2">` Note: When the data entered by the user doesn't adhere to the stepping configuration, the value is considered invalid in contraint validation and will match the :invalid pseudoclass. See Client-side validation for more information.
11953
11961
  */
11954
11962
  step?: HTMLAttributeSource<number | string>;
11955
11963
  /**
@@ -12003,7 +12011,7 @@ interface KeygenHTMLAttributes<T> extends HTMLAttributes<T> {
12003
12011
  }
12004
12012
  interface LabelHTMLAttributes<T> extends HTMLAttributes<T> {
12005
12013
  /**
12006
- * The value of the for attribute must be a single id for a labelable form-related element in the same document as the `<label>` element. So, any given label element can be associated with only one form control. The first element in the document with an id attribute matching the value of the for attribute is the labeled control for this label element if the element with that id is actually a labelable element. If it is not a labelable element, then the for attribute has no effect. If there are other elements that also match the id value, later in the document, they are not considered. Multiple label elements can be given the same value for their for attribute; doing so causes the associated form control (the form control that for value references) to have multiple labels. Note: A `<label>` element can have both a for attribute and a contained control element, as long as the for attribute points to the contained control element.
12014
+ * The value of the for attribute must be a single id for a labelable form-related element in the same document as the `<label>` element. So, any given label element can be associated with only one form control. The first element in the document with an id attribute matching the value of the for attribute is the labeled control for this label element. If the element with that id is actually a labelable element. If it is not a labelable element, then the for attribute has no effect. If there are other elements that also match the id value, later in the document, they are not considered. Multiple label elements can be given the same value for their for attribute; doing so causes the associated form control (the form control that for value references) to have multiple labels. Note: A `<label>` element can have both a for attribute and a contained control element, as long as the for attribute points to the contained control element.
12007
12015
  */
12008
12016
  for?: HTMLAttributeSource<string>;
12009
12017
  /** */
@@ -12055,11 +12063,11 @@ interface LinkHTMLAttributes<T> extends HTMLAttributes<T> {
12055
12063
  */
12056
12064
  imagesrcset?: HTMLAttributeSource<string>;
12057
12065
  /**
12058
- * Contains inline metadata a base64-encoded cryptographic hash of the resource (file) you're telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation. See Subresource Integrity.
12066
+ * Contains inline metadata: a base64-encoded cryptographic hash of the resource (file) you're telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation. See Subresource Integrity.
12059
12067
  */
12060
12068
  integrity?: HTMLAttributeSource<string>;
12061
12069
  /**
12062
- * This attribute specifies the media that the linked resource applies to. Its value must be a media type / media query. This attribute is mainly useful when linking to external stylesheets it allows the user agent to pick the best adapted one for the device it runs on. Notes: In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., media types and groups, where defined and allowed as values for this attribute, such as print, screen, aural, braille. HTML5 extended this to any kind of media queries, which are a superset of the allowed values of HTML 4. Browsers not supporting CSS3 Media Queries won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4.
12070
+ * This attribute specifies the media that the linked resource applies to. Its value must be a media type / media query. This attribute is mainly useful when linking to external stylesheets: it allows the user agent to pick the best adapted one for the device it runs on. Notes: In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., media types and groups, where defined and allowed as values for this attribute, such as print, screen, aural, braille. HTML5 extended this to any kind of media queries, which are a superset of the allowed values of HTML 4. Browsers not supporting CSS3 Media Queries won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4.
12063
12071
  */
12064
12072
  media?: HTMLAttributeSource<number | string | (number | string)[]>;
12065
12073
  /**
@@ -12191,7 +12199,7 @@ interface MetaHTMLAttributes<T> extends HTMLAttributes<T> {
12191
12199
  */
12192
12200
  content?: HTMLAttributeSource<string>;
12193
12201
  /**
12194
- * Defines a pragma directive. The attribute is named http-equiv(alent) because all the allowed values are names of particular HTTP headers: content-security-policy Allows page authors to define a content policy for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks. content-type Declares the MIME type and character encoding of the document. If specified, the content attribute must have the value "text/html; charset=utf-8". This is equivalent to a `<meta>` element with the charset attribute specified, and carries the same restriction on placement within the document. Note: Can only be used in documents served with a text/html not in documents served with an XML MIME type. default-style Sets the name of the default CSS style sheet set. x-ua-compatible If specified, the content attribute must have the value "IE=edge". User agents are required to ignore this pragma. refresh This instruction specifies: The number of seconds until the page should be reloaded - only if the content attribute contains a positive integer. The number of seconds until the page should redirect to another - only if the content attribute contains a positive integer followed by the string ';url=', and a valid URL. Accessibility concerns Pages set with a refresh value run the risk of having the time interval being too short. People navigating with the aid of assistive technology such as a screen reader may be unable to read through and understand the page's content before being automatically redirected. The abrupt, unannounced updating of the page content may also be disorienting for people experiencing low vision conditions. MDN Understanding WCAG, Guideline 2.1 explanations MDN Understanding WCAG, Guideline 3.1 explanations Understanding Success Criterion 2.2.1 | W3C Understanding WCAG 2.0 Understanding Success Criterion 2.2.4 | W3C Understanding WCAG 2.0 Understanding Success Criterion 3.2.5 | W3C Understanding WCAG 2.0
12202
+ * Defines a pragma directive. The attribute is named http-equiv(alent) because all the allowed values are names of particular HTTP headers: content-security-policy Allows page authors to define a content policy for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks. content-type Declares the MIME type and character encoding of the document. If specified, the content attribute must have the value "text/html; charset=utf-8". This is equivalent to a `<meta>` element with the charset attribute specified, and carries the same restriction on placement within the document. Note: Can only be used in documents served with a text/html, not in documents served with an XML MIME type. default-style Sets the name of the default CSS style sheet set. x-ua-compatible If specified, the content attribute must have the value "IE=edge". User agents are required to ignore this pragma. refresh This instruction specifies: The number of seconds until the page should be reloaded - only if the content attribute contains a positive integer. The number of seconds until the page should redirect to another - only if the content attribute contains a positive integer followed by the string ';url=', and a valid URL. Accessibility concerns Pages set with a refresh value run the risk of having the time interval being too short. People navigating with the aid of assistive technology such as a screen reader may be unable to read through and understand the page's content before being automatically redirected. The abrupt, unannounced updating of the page content may also be disorienting for people experiencing low vision conditions. MDN Understanding WCAG, Guideline 2.1 explanations MDN Understanding WCAG, Guideline 3.1 explanations Understanding Success Criterion 2.2.1 | W3C Understanding WCAG 2.0 Understanding Success Criterion 2.2.4 | W3C Understanding WCAG 2.0 Understanding Success Criterion 3.2.5 | W3C Understanding WCAG 2.0
12195
12203
  */
12196
12204
  "http-equiv"?: HTMLAttributeSource<"content-type" | "default-style" | "refresh" | "x-ua-compatible" | "content-security-policy">;
12197
12205
  /** */
@@ -12417,7 +12425,7 @@ interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {
12417
12425
  */
12418
12426
  crossorigin?: HTMLAttributeSource<HTMLCrossorigin>;
12419
12427
  /**
12420
- * This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing DOMContentLoaded. Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has loaded and finished evaluating. This attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this case it would have no effect. The defer attribute has no effect on module scripts they defer by default. Scripts with the defer attribute will execute in the order in which they appear in the document. This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and evaluate scripts before continuing to parse. async has a similar effect in this case.
12428
+ * This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing DOMContentLoaded. Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has loaded and finished evaluating. This attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this case it would have no effect. The defer attribute has no effect on module scripts: they defer by default. Scripts with the defer attribute will execute in the order in which they appear in the document. This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and evaluate scripts before continuing to parse. async has a similar effect in this case.
12421
12429
  */
12422
12430
  defer?: HTMLAttributeSource<boolean>;
12423
12431
  /**
@@ -12429,7 +12437,7 @@ interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {
12429
12437
  */
12430
12438
  language?: HTMLAttributeSource<string>;
12431
12439
  /**
12432
- * This Boolean attribute is set to indicate that the script should not be executed in browsers that support ES2015 modules in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.
12440
+ * This Boolean attribute is set to indicate that the script should not be executed in browsers that support ES2015 modules. In effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.
12433
12441
  */
12434
12442
  nomodule?: HTMLAttributeSource<boolean>;
12435
12443
  /**
@@ -12859,7 +12867,7 @@ interface TrackHTMLAttributes<T> extends HTMLAttributes<T> {
12859
12867
  */
12860
12868
  label?: HTMLAttributeSource<string>;
12861
12869
  /**
12862
- * Address of the track (.vtt file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document unless the `<audio>` or `<video>` parent element of the track element has a crossorigin attribute.
12870
+ * Address of the track (.vtt file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document, unless the `<audio>` or `<video>` parent element of the track element has a crossorigin attribute.
12863
12871
  */
12864
12872
  src?: HTMLAttributeSource<string>;
12865
12873
  /**
@@ -13316,7 +13324,7 @@ interface HTMLElements {
13316
13324
  */
13317
13325
  colgroup: ColgroupHTMLAttributes<HTMLTableColElement>;
13318
13326
  /**
13319
- * The `<content>` HTML elementan obsolete part of the Web Components suite of technologieswas used inside of Shadow DOM as an insertion point, and wasn't meant to be used in ordinary HTML. It has now been replaced by the `<slot>` element, which creates a point in the DOM at which a shadow DOM can be inserted.
13327
+ * The `<content>` HTML element (an obsolete part of the Web Components suite of technologies) was used inside of Shadow DOM as an insertion point, and wasn't meant to be used in ordinary HTML. It has now been replaced by the `<slot>` element, which creates a point in the DOM at which a shadow DOM can be inserted.
13320
13328
  *
13321
13329
  * **Content:** Flow content.
13322
13330
  *
@@ -13379,7 +13387,7 @@ interface HTMLElements {
13379
13387
  *
13380
13388
  * | Attribute | Type | Description
13381
13389
  * |--|--|--
13382
- * | `open` | _Boolean_ | This Boolean attribute indicates whether or not the details that is, the contents of the `<details>` element are currently visible.
13390
+ * | `open` | _Boolean_ | This Boolean attribute indicates whether or not the details (that is, the contents of the `<details>` element) are currently visible.
13383
13391
  * | `tabindex` | _Int_ | .
13384
13392
  *
13385
13393
  * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)
@@ -13731,7 +13739,7 @@ interface HTMLElements {
13731
13739
  * | `autocomplete` | _AutoComplete_ | (Not a Boolean attribute!) The autocomplete attribute takes as its value a space-separated string that describes what, if any, type of autocomplete functionality the input should provide.
13732
13740
  * | `autocorrect` | _String_ | A Safari extension, the autocorrect attribute is a string which indicates whether or not to activate automatic correction while the user is editing this field.
13733
13741
  * | `autofocus` | _String_ | A Boolean attribute which, if present, indicates that the input should automatically have focus when the page has finished loading (or when the `<dialog>` containing the element has been displayed).
13734
- * | `capture` | _String_ | Introduced in the HTML Media Capture specification and valid for the file input type only, the capture attribute defines which mediamicrophone, video, or camerashould be used to capture a new file for upload with file upload control in supporting scenarios.
13742
+ * | `capture` | _String_ | Introduced in the HTML Media Capture specification and valid for the file input type only, the capture attribute defines which media (microphone, video, or camera) should be used to capture a new file for upload with file upload control in supporting scenarios.
13735
13743
  * | `checked` | _Boolean_ | Valid for both radio and checkbox types, checked is a Boolean attribute.
13736
13744
  * | `dirname` | _String_ | Valid for text and search input types only, the dirname attribute enables the submission of the directionality of the element.
13737
13745
  * | `disabled` | _Boolean_ | A Boolean attribute which, if present, indicates that the user should not be able to interact with the input.
@@ -13758,7 +13766,7 @@ interface HTMLElements {
13758
13766
  * | `placeholder` | _String_ | The placeholder attribute is a string that provides a brief hint to the user as to what kind of information is expected in the field.
13759
13767
  * | `readonly` | _Boolean_ | A Boolean attribute which, if present, indicates that the user should not be able to edit the value of the input.
13760
13768
  * | `required` | _Boolean_ | required is a Boolean attribute which, if present, indicates that the user must specify a value for the input before the owning form can be submitted.
13761
- * | `results` | _String_ | The results attributesupported only by Safariis a numeric value that lets you override the maximum number of entries to be displayed in the `<input>` element's natively-provided drop-down menu of previous search queries.
13769
+ * | `results` | _String_ | The results attribute (supported only by Safari) is a numeric value that lets you override the maximum number of entries to be displayed in the `<input>` element's natively-provided drop-down menu of previous search queries.
13762
13770
  * | `size` | _NonZeroUint_ | Valid for email, password, tel, and text input types only.
13763
13771
  * | `src` | _URL_ | Valid for the image input button only, the src is string specifying the URL of the image file to display to represent the graphical submit button.
13764
13772
  * | `step` | _String_ | Valid for the numeric input types, including number, date/time input types, and range, the step attribute is a number that specifies the granularity that the value must adhere to.
@@ -13864,7 +13872,7 @@ interface HTMLElements {
13864
13872
  * | `hreflang` | _BCP47_ | This attribute indicates the language of the linked resource.
13865
13873
  * | `imagesizes` | _SourceSizeList_ | For rel="preload" and as="image" only, the imagesizes attribute is a sizes attribute that indicates to preload the appropriate resource used by an img element with corresponding values for its srcset and sizes attributes.
13866
13874
  * | `imagesrcset` | _SrcSet_ | For rel="preload" and as="image" only, the imagesrcset attribute is a sourceset attribute that indicates to preload the appropriate resource used by an img element with corresponding values for its srcset and sizes attributes.
13867
- * | `integrity` | _String_ | Contains inline metadata a base64-encoded cryptographic hash of the resource (file) you’re telling the browser to fetch.
13875
+ * | `integrity` | _String_ | Contains inline metadata: a base64-encoded cryptographic hash of the resource (file) you’re telling the browser to fetch.
13868
13876
  * | `media` | _MediaQueryList_ | This attribute specifies the media that the linked resource applies to.
13869
13877
  * | `methods` | _String_ | The value of this attribute provides information about the functions that might be performed on an object.
13870
13878
  * | `prefetch` | _String_ | Identifies a resource that might be required by the next navigation and that the user agent should retrieve it.
@@ -14065,7 +14073,7 @@ interface HTMLElements {
14065
14073
  */
14066
14074
  object: ObjectHTMLAttributes<HTMLObjectElement>;
14067
14075
  /**
14068
- * The `<ol>` HTML element represents an ordered list of items typically rendered as a numbered list.
14076
+ * The `<ol>` HTML element represents an ordered list of items, typically rendered as a numbered list.
14069
14077
  *
14070
14078
  * **Content:** Zero or more `<li>`, `<script>` and `<template>` elements.
14071
14079
  *
@@ -14276,7 +14284,7 @@ interface HTMLElements {
14276
14284
  * | `defer` | _Boolean_ | This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing DOMContentLoaded.
14277
14285
  * | `integrity` | _String_ | This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered free of unexpected manipulation.
14278
14286
  * | `language` | _String_ | Like the type attribute, this attribute identifies the scripting language in use.
14279
- * | `nomodule` | _Boolean_ | This Boolean attribute is set to indicate that the script should not be executed in browsers that support ES2015 modules in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.
14287
+ * | `nomodule` | _Boolean_ | This Boolean attribute is set to indicate that the script should not be executed in browsers that support ES2015 modules. In effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.
14280
14288
  * | `nonce` | _String_ | A cryptographic nonce (number used once) to allow scripts in a script-src Content-Security-Policy.
14281
14289
  * | `referrerpolicy` | _ReferrerPolicy_ | Indicates which referrer to send when fetching the script, or resources fetched by the script: no-referrer: The Referer header will not be sent.
14282
14290
  * | `src` | _URL_ | This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.
@@ -14313,7 +14321,7 @@ interface HTMLElements {
14313
14321
  */
14314
14322
  select: SelectHTMLAttributes<HTMLSelectElement>;
14315
14323
  /**
14316
- * The `<shadow>` HTML elementan obsolete part of the Web Components technology suitewas intended to be used as a shadow DOM insertion point. You might have used it if you have created multiple shadow roots under a shadow host. It is not useful in ordinary HTML.
14324
+ * The `<shadow>` HTML element (an obsolete part of the Web Components technology suite) was intended to be used as a shadow DOM insertion point. You might have used it if you have created multiple shadow roots under a shadow host. It is not useful in ordinary HTML.
14317
14325
  *
14318
14326
  * **Content:** Flow content
14319
14327
  *
@@ -14321,7 +14329,7 @@ interface HTMLElements {
14321
14329
  */
14322
14330
  shadow: HTMLAttributes<HTMLElement>;
14323
14331
  /**
14324
- * The `<slot>` HTML elementpart of the Web Components technology suiteis a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.
14332
+ * The `<slot>` HTML element (part of the Web Components technology suite) is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.
14325
14333
  *
14326
14334
  * **Content:** Transparent
14327
14335
  *
@@ -14431,7 +14439,7 @@ interface HTMLElements {
14431
14439
  */
14432
14440
  sup: HTMLAttributes<HTMLElement>;
14433
14441
  /**
14434
- * The `<table>` HTML element represents tabular data — that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.
14442
+ * The `<table>` HTML element represents tabular data: information presented in a two-dimensional table comprised of rows and columns of cells containing data.
14435
14443
  *
14436
14444
  * **Content:** In this order: an optional `<caption>` element, zero or more `<colgroup>` elements, an optional `<thead>` element, either one of the following: zero or more `<tbody>` elements one or more `<tr>` elements an optional `<tfoot>` element
14437
14445
  *
@@ -14624,7 +14632,7 @@ interface HTMLElements {
14624
14632
  */
14625
14633
  tr: TrHTMLAttributes<HTMLTableRowElement>;
14626
14634
  /**
14627
- * The `<track>` HTML element is used as a child of the media elements, `<audio>` and `<video>`. It lets you specify timed text tracks (or time-based data), for example to automatically handle subtitles. The tracks are formatted in WebVTT format (.vtt files) Web Video Text Tracks.
14635
+ * The `<track>` HTML element is used as a child of the media elements, `<audio>` and `<video>`. It lets you specify timed text tracks (or time-based data), for example to automatically handle subtitles. The tracks are formatted in WebVTT format (.vtt files): Web Video Text Tracks.
14628
14636
  *
14629
14637
  * | Attribute | Type | Description
14630
14638
  * |--|--|--
@@ -14701,7 +14709,7 @@ interface HTMLElements {
14701
14709
  */
14702
14710
  video: VideoHTMLAttributes<HTMLVideoElement>;
14703
14711
  /**
14704
- * The `<wbr>` HTML element represents a word break opportunitya position within text where the browser may optionally break a line, though its line-breaking rules would not otherwise create a break at that location.
14712
+ * The `<wbr>` HTML element represents a word break opportunity: a position within text where the browser may optionally break a line, though its line-breaking rules would not otherwise create a break at that location.
14705
14713
  *
14706
14714
  * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbr)
14707
14715
  */
@@ -14720,7 +14728,13 @@ type ImagePreserveAspectRatio = SVGPreserveAspectRatio | "defer none" | "defer x
14720
14728
  type SVGUnits = "userSpaceOnUse" | "objectBoundingBox";
14721
14729
  interface SVGAttributes<T> extends DOMAttributes<T> {
14722
14730
  children?: HTMLAttributeSource<Renderable>;
14723
- ref?: SubscriptionRef.SubscriptionRef<Option.Option<T>>;
14731
+ /**
14732
+ * A ref to this element, or an array of refs that all receive it (fan-out,
14733
+ * typically from `Props.merge`). The array arm accepts refs of any element
14734
+ * type because `SubscriptionRef` is invariant; see the note on
14735
+ * `HTMLAttributes.ref`.
14736
+ */
14737
+ ref?: SubscriptionRef.SubscriptionRef<Option.Option<T>> | ReadonlyArray<SubscriptionRef.SubscriptionRef<Option.Option<any>>>;
14724
14738
  id?: HTMLAttributeSource<string>;
14725
14739
  lang?: HTMLAttributeSource<string>;
14726
14740
  /**
@@ -15193,7 +15207,7 @@ type ElementType = symbol | string | ((props: Record<string, unknown>) => unknow
15193
15207
  /**
15194
15208
  * Virtual element descriptor produced by `h`, `h.fragment`, `Suspense`, and
15195
15209
  * components, and consumed by the renderers. This is the resolved value of a
15196
- * {@link Node} a plain object, not a browser DOM `Node`.
15210
+ * {@link Node}: a plain object, not a browser DOM `Node`.
15197
15211
  */
15198
15212
  interface ElementDescriptor {
15199
15213
  readonly type: ElementType;