From 69e5d21ac299ba9857a1c15c3472a01f0fdcb278 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Fri, 7 Dec 2018 18:40:19 +0700 Subject: [PATCH 1/4] Fix #7 - sock-delayed initialization --- cjs/index.js | 7 +++++-- .../html-parsed-element/index.html | 2 +- .../html-parsed-element/index.js.html | 21 +++++++++++++------ coverage/lcov-report/index.html | 2 +- esm/index.js | 7 +++++-- min.js | 2 +- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/cjs/index.js b/cjs/index.js index 9a521b2..0c9e0b2 100644 --- a/cjs/index.js +++ b/cjs/index.js @@ -12,10 +12,13 @@ const HTMLParsedElement = (() => { }; const upgrade = () => { queue.splice(0).forEach(info => { - init.set(info[0], true); - info[0][info[1]](); + if (init.get(info[0]) !== true) { + init.set(info[0], true); + info[0][info[1]](); + } }); }; + document.addEventListener(DCL, upgrade); class HTMLParsedElement extends HTMLElement { static withParsedCallback(Class, name = 'parsed') { const {prototype} = Class; diff --git a/coverage/lcov-report/html-parsed-element/index.html b/coverage/lcov-report/html-parsed-element/index.html index 71ede64..02622d1 100644 --- a/coverage/lcov-report/html-parsed-element/index.html +++ b/coverage/lcov-report/html-parsed-element/index.html @@ -81,7 +81,7 @@

diff --git a/coverage/lcov-report/html-parsed-element/index.js.html b/coverage/lcov-report/html-parsed-element/index.js.html index 08398da..bbeb374 100644 --- a/coverage/lcov-report/html-parsed-element/index.js.html +++ b/coverage/lcov-report/html-parsed-element/index.js.html @@ -120,7 +120,10 @@

71 72 73 -74  +74 +75 +76 +77  @@ -193,6 +196,9 @@

      +  +  +   
/*! (c) Andrea Giammarchi - ISC */
 const HTMLParsedElement = (() => {
   const DCL = 'DOMContentLoaded';
@@ -207,10 +213,13 @@ 

}; const upgrade = () => { queue.splice(0).forEach(info => { - init.set(info[0], true); - info[0][info[1]](); + if (init.get(info[0]) !== true) { + init.set(info[0], true); + info[0][info[1]](); + } }); }; + document.addEventListener(DCL, upgrade); class HTMLParsedElement extends HTMLElement { static withParsedCallback(Class, name = 'parsed') { const {prototype} = Class; @@ -223,10 +232,10 @@

}; const parsedCallback = el => { if (!queue.length) - requestAnimationFrame(upgrade); + reEquestAnimationFrame(upgrade); queue.push([el, method]); }; - ObjectE.defineProperties( + Object.defineProperties( prototype, { connectedCallback: { @@ -272,7 +281,7 @@

diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index c634492..0afd124 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -81,7 +81,7 @@

diff --git a/esm/index.js b/esm/index.js index e759423..a0df3ca 100644 --- a/esm/index.js +++ b/esm/index.js @@ -12,10 +12,13 @@ const HTMLParsedElement = (() => { }; const upgrade = () => { queue.splice(0).forEach(info => { - init.set(info[0], true); - info[0][info[1]](); + if (init.get(info[0]) !== true) { + init.set(info[0], true); + info[0][info[1]](); + } }); }; + document.addEventListener(DCL, upgrade); class HTMLParsedElement extends HTMLElement { static withParsedCallback(Class, name = 'parsed') { const {prototype} = Class; diff --git a/min.js b/min.js index 12097a9..196ce9f 100644 --- a/min.js +++ b/min.js @@ -1,2 +1,2 @@ /*! (c) Andrea Giammarchi - ISC */ -const HTMLParsedElement=(()=>{const e="DOMContentLoaded",t=new WeakMap,n=[],s=e=>{do{if(e.nextSibling)return!0}while(e=e.parentNode);return!1},a=()=>{n.splice(0).forEach(e=>{t.set(e[0],!0),e[0][e[1]]()})};class r extends HTMLElement{static withParsedCallback(r,i="parsed"){const{prototype:c}=r,{connectedCallback:o}=c,l=i+"Callback",d=(t,n,s,a)=>{n.disconnect(),s.removeEventListener(e,a),h(t)},h=e=>{n.length||requestAnimationFrame(a),n.push([e,l])};return Object.defineProperties(c,{connectedCallback:{configurable:!0,value(){if(o&&o.apply(this,arguments),l in this&&!t.has(this)){const n=this,{ownerDocument:a}=n;if(t.set(n,!1),"complete"===a.readyState||s(n))h(n);else{const t=()=>d(n,r,a,t);a.addEventListener(e,t);const r=new MutationObserver(()=>{s(n)&&d(n,r,a,t)});r.observe(n.parentNode,{childList:!0,subtree:!0})}}}},[i]:{configurable:!0,get(){return!0===t.get(this)}}}),r}}return r.withParsedCallback(r)})(); \ No newline at end of file +const HTMLParsedElement=(()=>{const e="DOMContentLoaded",t=new WeakMap,n=[],s=e=>{do{if(e.nextSibling)return!0}while(e=e.parentNode);return!1},a=()=>{n.splice(0).forEach(e=>{!0!==t.get(e[0])&&(t.set(e[0],!0),e[0][e[1]]())})};document.addEventListener(e,a);class r extends HTMLElement{static withParsedCallback(r,i="parsed"){const{prototype:c}=r,{connectedCallback:o}=c,l=i+"Callback",d=(t,n,s,a)=>{n.disconnect(),s.removeEventListener(e,a),u(t)},u=e=>{n.length||requestAnimationFrame(a),n.push([e,l])};return Object.defineProperties(c,{connectedCallback:{configurable:!0,value(){if(o&&o.apply(this,arguments),l in this&&!t.has(this)){const n=this,{ownerDocument:a}=n;if(t.set(n,!1),"complete"===a.readyState||s(n))u(n);else{const t=()=>d(n,r,a,t);a.addEventListener(e,t);const r=new MutationObserver(()=>{s(n)&&d(n,r,a,t)});r.observe(n.parentNode,{childList:!0,subtree:!0})}}}},[i]:{configurable:!0,get(){return!0===t.get(this)}}}),r}}return r.withParsedCallback(r)})(); \ No newline at end of file From ad1daa66ef1d7e00895e1fc26e36a9007f0f45de Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Fri, 7 Dec 2018 18:40:23 +0700 Subject: [PATCH 2/4] 0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 15b6caf..0ec0390 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "html-parsed-element", - "version": "0.3.2", + "version": "0.4.0", "description": "A base custom element class with a reliable `parsedCallback` method", "main": "cjs/index.js", "module": "esm/index.js", From deffc51fed199b48bc7012fed9443fe1e94a6225 Mon Sep 17 00:00:00 2001 From: Lucas Mendelowski Date: Sat, 27 Mar 2021 19:38:25 +0100 Subject: [PATCH 3/4] Make connectedCallback property writable --- cjs/index.js | 1 + esm/index.js | 1 + index.js | 1 + min.js | 2 +- package.json | 2 +- 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cjs/index.js b/cjs/index.js index 0c9e0b2..85bf347 100644 --- a/cjs/index.js +++ b/cjs/index.js @@ -39,6 +39,7 @@ const HTMLParsedElement = (() => { { connectedCallback: { configurable: true, + writable: true, value() { if (connectedCallback) connectedCallback.apply(this, arguments); diff --git a/esm/index.js b/esm/index.js index a0df3ca..dd423da 100644 --- a/esm/index.js +++ b/esm/index.js @@ -39,6 +39,7 @@ const HTMLParsedElement = (() => { { connectedCallback: { configurable: true, + writable: true, value() { if (connectedCallback) connectedCallback.apply(this, arguments); diff --git a/index.js b/index.js index ec30d93..7482e0b 100644 --- a/index.js +++ b/index.js @@ -39,6 +39,7 @@ const HTMLParsedElement = (() => { { connectedCallback: { configurable: true, + writable: true, value() { if (connectedCallback) connectedCallback.apply(this, arguments); diff --git a/min.js b/min.js index 196ce9f..a8e90fb 100644 --- a/min.js +++ b/min.js @@ -1,2 +1,2 @@ /*! (c) Andrea Giammarchi - ISC */ -const HTMLParsedElement=(()=>{const e="DOMContentLoaded",t=new WeakMap,n=[],s=e=>{do{if(e.nextSibling)return!0}while(e=e.parentNode);return!1},a=()=>{n.splice(0).forEach(e=>{!0!==t.get(e[0])&&(t.set(e[0],!0),e[0][e[1]]())})};document.addEventListener(e,a);class r extends HTMLElement{static withParsedCallback(r,i="parsed"){const{prototype:c}=r,{connectedCallback:o}=c,l=i+"Callback",d=(t,n,s,a)=>{n.disconnect(),s.removeEventListener(e,a),u(t)},u=e=>{n.length||requestAnimationFrame(a),n.push([e,l])};return Object.defineProperties(c,{connectedCallback:{configurable:!0,value(){if(o&&o.apply(this,arguments),l in this&&!t.has(this)){const n=this,{ownerDocument:a}=n;if(t.set(n,!1),"complete"===a.readyState||s(n))u(n);else{const t=()=>d(n,r,a,t);a.addEventListener(e,t);const r=new MutationObserver(()=>{s(n)&&d(n,r,a,t)});r.observe(n.parentNode,{childList:!0,subtree:!0})}}}},[i]:{configurable:!0,get(){return!0===t.get(this)}}}),r}}return r.withParsedCallback(r)})(); \ No newline at end of file +const HTMLParsedElement=(()=>{const e="DOMContentLoaded",t=new WeakMap,n=[],a=e=>{do{if(e.nextSibling)return!0}while(e=e.parentNode);return!1},r=()=>{n.splice(0).forEach(e=>{!0!==t.get(e[0])&&(t.set(e[0],!0),e[0][e[1]]())})};document.addEventListener(e,r);class s extends HTMLElement{static withParsedCallback(s,i="parsed"){const{prototype:c}=s,{connectedCallback:o}=c,l=i+"Callback",d=(t,n,a,r)=>{n.disconnect(),a.removeEventListener(e,r),u(t)},u=e=>{n.length||requestAnimationFrame(r),n.push([e,l])};return Object.defineProperties(c,{connectedCallback:{configurable:!0,writable:!0,value(){if(o&&o.apply(this,arguments),l in this&&!t.has(this)){const n=this,{ownerDocument:r}=n;if(t.set(n,!1),"complete"===r.readyState||a(n))u(n);else{const t=()=>d(n,s,r,t);r.addEventListener(e,t);const s=new MutationObserver(()=>{a(n)&&d(n,s,r,t)});s.observe(n.parentNode,{childList:!0,subtree:!0})}}}},[i]:{configurable:!0,get(){return!0===t.get(this)}}}),s}}return s.withParsedCallback(s)})(); \ No newline at end of file diff --git a/package.json b/package.json index 0ec0390..103ce21 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "test": "npm run server & (sleep 1 && npm run nightmare && npm run report && npm run kill)", "nightmare": "node test || (npm run kill && exit 1)", "report": "istanbul report --include=test/coverage.json text-summary", - "server": "node -e 'require(`fs`).writeFileSync(`pid`,require(`child_process`).spawn(`http-server`,[`test`,`-s`]).pid);'", + "server": "node -e 'require(`fs`).writeFileSync(`pid`,require(`child_process`).spawn(`http-server`,[`test`,`-s`]).pid.toString());'", "kill": "kill -9 $(cat pid) && rm -f pid" }, "repository": { From 11081fc102e2eec745a1a1d32723eef342df2452 Mon Sep 17 00:00:00 2001 From: Andrea Giammarchi Date: Sat, 27 Mar 2021 20:09:31 +0100 Subject: [PATCH 4/4] 0.4.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 103ce21..1b72f11 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "html-parsed-element", - "version": "0.4.0", + "version": "0.4.1", "description": "A base custom element class with a reliable `parsedCallback` method", "main": "cjs/index.js", "module": "esm/index.js",