diff --git a/source b/source index 2488e8f79bb..fa5be21b341 100644 --- a/source +++ b/source @@ -66390,6 +66390,8 @@ document.body.append(parent);
[Exposed=Window]
interface CustomElementRegistry {
+ constructor();
+
[CEReactions] undefined define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options = {});
(CustomElementConstructor or undefined) get(DOMString name);
Promise<CustomElementConstructor> whenDefined(DOMString name);
@@ -66428,7 +66430,6 @@ dictionary ElementDefinitionOptions {
Defines a new custom element, mapping the given name to the given constructor as
an autonomous custom element.
-
window . customElements
. define
(name, constructor,
{ extends: baseLocalName })
@@ -66464,8 +66465,38 @@ dictionary ElementDefinitionOptions {
connected.
+ New instances of CustomElementRegistry
can be defined and attached to a
+ ShadowRoot through the registry option from attachShadow()
. Those instances are independent of the
+ instance available at window.customElements
, as
+ the latter is attached to the
+ associated Document
.
+
+
+ - registry = new
CustomElementRegistry
()
+
+ - Defines a new Registry that can map an
+ independent set of custom elements, which is
+ not associated yet to any ShadowRoot.
+
+ - registry .
define
(name,
+ constructor)
+
+ - Defines a new custom element within the given
registry
,
+ mapping the given name to the given constructor as an autonomous custom element.
+
+
+
+ When the CustomElementRegistry()
+ constructor is invoked, the user agent must run the following steps:
+
+
+ Let registry be a new CustomElementRegistry
object.
+
Return registry.
+
+
Element definition is a process of adding a custom element definition
- to the CustomElementRegistry
. This is accomplished by the CustomElementRegistry
object. This is accomplished by the define()
method. When invoked,
the define(name,
constructor, options)
method must run these steps:
@@ -66479,11 +66510,11 @@ dictionary ElementDefinitionOptions {
If name is not a valid custom element name, then throw a
"SyntaxError
" DOMException
.
- If this CustomElementRegistry
contains an entry with If this CustomElementRegistry
object contains an entry with name name, then throw a
"NotSupportedError
" DOMException
.
- If this CustomElementRegistry
contains an entry with If this CustomElementRegistry
object contains an entry with constructor constructor,
then throw a "NotSupportedError
" DOMException
.
@@ -66508,11 +66539,12 @@ dictionary ElementDefinitionOptions {
- If this CustomElementRegistry
's element definition is running
- flag is set, then throw a "NotSupportedError
" DOMException
.
+ If this CustomElementRegistry
's element definition is
+ running flag is set, then throw a "NotSupportedError
"
+ DOMException
.
- Set this CustomElementRegistry
's element definition is running
- flag.
+ Set this CustomElementRegistry
's element definition is
+ running flag.
Let formAssociated be false.
@@ -66642,11 +66674,11 @@ dictionary ElementDefinitionOptions {
data-x="concept-custom-element-definition-disable-shadow">disable shadow
disableShadow.
- Add definition to this CustomElementRegistry
.
+ Add definition to this CustomElementRegistry
object.
- Let document be this CustomElementRegistry
's relevant global
- object's associated
- Document
.
+ Let document be this CustomElementRegistry
's relevant
+ global object's associated DocumentOrShadowRoot
.
Let upgrade candidates be all elements that are shadow-including descendants of document, whose namespace
@@ -66677,6 +66709,12 @@ dictionary ElementDefinitionOptions {
+ define
and the other
+ methods for CustomElementRegistry
will operate on the definitions set for the
+ respective object such as the customElements
or
+ other registries created with
+ new CustomElementRegistry()
.
+
When invoked, the get(name)
method must run these
steps:
@@ -125034,6 +125072,7 @@ INSERT INTERFACES HERE
Leif Halvard Silli,
Leif Kornstaedt,
Lenny Domnitser,
+ Leo Balter,
Leonard Rosenthol,
Leons Petrazickis,
Lobotom Dysmon,