From d284461e26cc11d4377d1415965f2b10dddcd2cc Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sat, 17 Feb 2024 19:49:11 -0500 Subject: [PATCH 1/5] refactor and use registry check for ecxisting custom elements --- src/dom-shim.js | 10 +++++++--- src/wcc.js | 4 +--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/dom-shim.js b/src/dom-shim.js index 6131aa4..b6689c3 100644 --- a/src/dom-shim.js +++ b/src/dom-shim.js @@ -123,15 +123,19 @@ class HTMLTemplateElement extends HTMLElement { // https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry class CustomElementsRegistry { constructor() { - this.customElementsRegistry = {}; + this.customElementsRegistry = new Map(); } define(tagName, BaseClass) { - this.customElementsRegistry[tagName] = BaseClass; + this.customElementsRegistry.set(tagName, BaseClass); } get(tagName) { - return this.customElementsRegistry[tagName]; + if(this.customElementsRegistry.get(tagName)) { + return this.customElementsRegistry.get(tagName) + } else { + // uh oh... + } } } diff --git a/src/wcc.js b/src/wcc.js index 887e0b6..9bad926 100644 --- a/src/wcc.js +++ b/src/wcc.js @@ -134,9 +134,7 @@ async function initializeCustomElement(elementURL, tagName, attrs = [], definiti // https://github.com/ProjectEvergreen/wcc/pull/67/files#r902061804 const { pathname } = elementURL; - const element = tagName - ? customElements.get(tagName) - : (await import(pathname)).default; + const element = customElements.get(tagName) ?? (await import(pathname)).default; const dataLoader = (await import(pathname)).getData; const data = props ? props From 2ff90e39e267c260c5bc3fea7c7b63b0ae39d0eb Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sat, 17 Feb 2024 19:49:33 -0500 Subject: [PATCH 2/5] track custom elements registry spec slignment TODO --- src/dom-shim.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dom-shim.js b/src/dom-shim.js index b6689c3..f9a2ec0 100644 --- a/src/dom-shim.js +++ b/src/dom-shim.js @@ -123,6 +123,8 @@ class HTMLTemplateElement extends HTMLElement { // https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry class CustomElementsRegistry { constructor() { + // TODO this should probably be a set or otherwise follow the spec? + // https://github.com/ProjectEvergreen/wcc/discussions/145 this.customElementsRegistry = new Map(); } From 836e04f7152a243799cecb4e0084ea60f7b34ff7 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sat, 17 Feb 2024 19:52:41 -0500 Subject: [PATCH 3/5] fix linting --- src/dom-shim.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dom-shim.js b/src/dom-shim.js index f9a2ec0..ceb8d1b 100644 --- a/src/dom-shim.js +++ b/src/dom-shim.js @@ -133,8 +133,8 @@ class CustomElementsRegistry { } get(tagName) { - if(this.customElementsRegistry.get(tagName)) { - return this.customElementsRegistry.get(tagName) + if (this.customElementsRegistry.get(tagName)) { + return this.customElementsRegistry.get(tagName); } else { // uh oh... } From 4279c8848ec7267bb5a834294bf2a35245c3dac1 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Mon, 19 Feb 2024 17:04:29 -0500 Subject: [PATCH 4/5] refactor and TODO comment for spec alignment --- src/dom-shim.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dom-shim.js b/src/dom-shim.js index ceb8d1b..473f448 100644 --- a/src/dom-shim.js +++ b/src/dom-shim.js @@ -129,15 +129,14 @@ class CustomElementsRegistry { } define(tagName, BaseClass) { + // TODO this should probably fail as per the spec... + // e.g. if(this.customElementsRegistry.set(tagName)) + // https://github.com/ProjectEvergreen/wcc/discussions/145 this.customElementsRegistry.set(tagName, BaseClass); } get(tagName) { - if (this.customElementsRegistry.get(tagName)) { - return this.customElementsRegistry.get(tagName); - } else { - // uh oh... - } + return this.customElementsRegistry.get(tagName); } } From 057acf3c102b4a370825e073f2c3cdb9b3108310 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sat, 9 Mar 2024 14:08:48 -0500 Subject: [PATCH 5/5] correct comment --- src/dom-shim.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dom-shim.js b/src/dom-shim.js index 473f448..ee621ea 100644 --- a/src/dom-shim.js +++ b/src/dom-shim.js @@ -130,7 +130,7 @@ class CustomElementsRegistry { define(tagName, BaseClass) { // TODO this should probably fail as per the spec... - // e.g. if(this.customElementsRegistry.set(tagName)) + // e.g. if(this.customElementsRegistry.get(tagName)) // https://github.com/ProjectEvergreen/wcc/discussions/145 this.customElementsRegistry.set(tagName, BaseClass); }