summaryrefslogtreecommitdiff
path: root/packages/webapi/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/webapi/src')
-rw-r--r--packages/webapi/src/lib/CustomElementRegistry.ts5
-rw-r--r--packages/webapi/src/lib/Element.ts15
2 files changed, 20 insertions, 0 deletions
diff --git a/packages/webapi/src/lib/CustomElementRegistry.ts b/packages/webapi/src/lib/CustomElementRegistry.ts
index 3f7020087..3429e1e73 100644
--- a/packages/webapi/src/lib/CustomElementRegistry.ts
+++ b/packages/webapi/src/lib/CustomElementRegistry.ts
@@ -26,6 +26,11 @@ export class CustomElementRegistry {
if (!/-/.test(name))
throw new SyntaxError('Custom element name must contain a hyphen')
+ _.INTERNALS.set(constructor, {
+ attributes: {},
+ localName: name,
+ } as any)
+
internals.constructorByName.set(name, constructor)
internals.nameByConstructor.set(constructor, name)
diff --git a/packages/webapi/src/lib/Element.ts b/packages/webapi/src/lib/Element.ts
index 5827a0be0..1553f2863 100644
--- a/packages/webapi/src/lib/Element.ts
+++ b/packages/webapi/src/lib/Element.ts
@@ -1,6 +1,21 @@
import * as _ from './utils'
export class Element extends Node {
+ constructor() {
+ super();
+
+ if(_.INTERNALS.has(new.target)) {
+ const internals = _.internalsOf(new.target, 'Element', 'localName')
+ _.INTERNALS.set(this, {
+ attributes: {},
+ localName: internals.localName,
+ ownerDocument: this.ownerDocument,
+ shadowInit: null as unknown as ShadowRootInit,
+ shadowRoot: null as unknown as ShadowRoot,
+ } as ElementInternals)
+ }
+ }
+
hasAttribute(name: string): boolean {
void name