@twobirds/microcomponents 0.0.25 → 0.0.27
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/dist/MC.d.ts +9 -9
- package/dist/MC.d.ts.map +1 -1
- package/dist/MC.min.js +91 -55
- package/dist/MC.ts +118 -72
- package/dist/customElements.min.js +1 -1
- package/dist/microcomponents.min.js +1 -1
- package/dist/test.ts +6 -11
- package/package.json +1 -1
- package/public/MC.js +91 -55
- package/public/MC.js.map +1 -1
- package/public/MC.min.js +91 -55
- package/public/assets/search.js +1 -1
- package/public/classes/DC.html +40 -54
- package/public/classes/MC.html +42 -23
- package/public/classes/McBase.html +7 -18
- package/public/classes/McEvent.html +13 -13
- package/public/customElements.min.js +1 -1
- package/public/functions/addListener.html +1 -1
- package/public/functions/removeListener.html +1 -1
- package/public/interfaces/HTMLMcElement.html +2 -2
- package/public/microcomponents.min.js +1 -1
- package/public/test.js +5 -9
- package/public/test.js.map +1 -1
- package/src/MC.ts +118 -72
- package/src/test.ts +6 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.microcomponents=t():e.microcomponents=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){return null!=e&&"object"==typeof e}function n(e){return e.split("-").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join("")}function s(e,t){let r;return()=>{clearTimeout(r),r=setTimeout((function(){e(...arguments)}),t)}}function a(e,t){const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(const s of n){const n=e[s],o=t[s],c=r(n)&&r(o);if(c&&!a(n,o)||!c&&n!==o)return!1}return!0}function o(e,t,n=null,s){let a=e.split(".");s||(s=t);let c=a.shift(),i=a.join(".");null!==n&&c.length&&void 0===t[c]&&(t[c]={});let l=t[c];return 0===i.length?null!==n?(t[c]=n,s):t[c]:r(t[c])?o(i,t[c],n,s):n?s:l[c]}function c(e,t){var n=Array.from(arguments);if(n.length){if(1===n.length)return n[1];if(n.length>2){for(;n.length>1;)n[0]=c(n[0],n[1]),n.splice(1,1);return n[0]}if("string"==typeof e){var s=e.match(/\{[^\{\}]*\}/g);s&&s.forEach((function(r){var n=o(r.substr(1,r.length-2),t);void 0!==n&&(e=e.replace(r,n))}))}else if(r(e))switch(e.constructor){case Object:Object.keys(e).forEach((function(r){e.hasOwnProperty(r)&&(e[r]=c(e[r],t))}));break;case Array:e.forEach((function(r,n,s){s[n]=c(e[n],t)}))}return e}console.error("no arguments give to parse")}function i(e){let t=document.createElement("template");return e=e.replace(/<([A-Za-z0-9\-]*)([^>\/]*)(\/>)/gi,"<$1$2></$1>"),t.innerHTML=e,t.content.normalize(),Array.from(t.content.childNodes)}e.r(t),e.d(t,{$d:()=>B,$t:()=>q,DC:()=>S,MC:()=>A,McBase:()=>w,McEvent:()=>h,addListener:()=>b,debounce:()=>s,deepEqual:()=>a,defineCE:()=>k,formValues:()=>F,getCE:()=>x,htmlToElements:()=>i,isObject:()=>r,kebabToPascal:()=>n,makeCO:()=>T,nameSpace:()=>o,parse:()=>c,removeListener:()=>g});var l=new Function("try {return this===window;}catch(e){ return false;}");let u=new Set;l()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>u.add(e)));class h{#e;#t=!1;#r=!1;constructor(e,t={},r="l"){this.#e=e,this.data=t,this.bubble=r}get type(){return this.#e}get stopped(){return this.#t}get immediateStopped(){return this.#r}stopPropagation(){this.#t=!0}stopImmediatePropagation(){this.stopPropagation(),this.#r=!0}}var f=new Function("try {return this===window;}catch(e){ return false;}");let d=new Set;function p(e,t){let r=[];return e.forEach((e=>{if(e&&e instanceof HTMLElement){const n=e?._mc;!t&&n?r=r.concat(Object.values(e._mc)):t&&n&&n[t]&&r.push(n[t])}})),r}function m(e,t,r=!0){let n=[];for(;e;){if(e._mc&&(t?t&&e._mc[t]&&n.push(e._mc[t]):n=n.concat(Object.values(e._mc)),r))return n;e=e.parentNode}return n}function y(e){return e&&e instanceof HTMLElement}function b(e,t,r,n=!1,s=!1){let a={once:!1};n&&(a.capture=n),s&&(a.once=s),e.addEventListener(t,r,a)}function g(e,t,r){e.removeEventListener(t,r)}function E(e,t,r={}){let n=e;if(!n._mc){let t=A?.debug;A.debug=!1,n._mc=new A(e),A.debug=t}const s=n._mc;return t.length&&!s[t]&&(s[t]=r,e instanceof HTMLElement&&e.setAttribute("_mc","")),r}function v(e,t){if(!t)return;const r=e?._mc||{};r&&r[t]&&delete r[t],!Object.keys(r).length&&e instanceof HTMLElement&&e.hasAttribute("_mc")&&e.removeAttribute("_mc")}function O(e,t,r={}){let n=e?._mc;n&&[...Object.values(n)].forEach((e=>{e?.trigger&&"function"==typeof e?.trigger&&e?.trigger(t,r)}))}f()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>d.add(e)));class w{#n;#s={};_mc={};constructor(e){this.#n=new WeakRef(e),this.constructor!==A&&this.constructor!==S&&Object.defineProperty(this,"_mc",{get(){return this.#s}})}get target(){return this.#n.deref()}}class A extends w{constructor(e){super(e);let t=this;t.constructor!==A&&t.constructor!==S&&setTimeout((()=>{t.trigger("init")}),0)}trigger(e,t={},r){let n=this;if(r=r||"l",n.constructor!==A&&n.constructor!==S){if(n instanceof A||n instanceof S){const n=this,s="string"!=typeof e?e:new h(e,t,r),a="on"+s.type[0].toUpperCase()+s.type.slice(1);if(s.bubble.indexOf("l")>-1&&(s.immediateStopped||"function"!=typeof n[a]||(n[a](s),n.hasOwnProperty(a)&&delete n[a])),s.stopped||"l"===s.bubble)return n;f()&&/[ud]/.test(s.bubble)&&n instanceof A&&setTimeout((()=>{-1===s.bubble.indexOf("l")&&(s.bubble+="l"),s.bubble.indexOf("u")>-1&&n.parent().forEach((e=>{e instanceof A&&e.trigger(s)})),s.bubble.indexOf("d")>-1&&n.children().forEach((e=>{e instanceof A&&e.trigger(s)}))}),0)}}else[...Object.getOwnPropertyNames(n)].forEach((s=>{n[s]?.trigger&&"function"==typeof n[s]?.trigger&&n[s]?.trigger(e,t,r)}))}}class S extends A{#s={};_mc={};constructor(e){super(e),this.constructor!==A&&this.constructor!==S&&Object.defineProperty(this,"_mc",{get(){return this.#s}})}static debug=!1;static add=E;static remove=v;static trigger=O;parent(e=""){let t=this.target;return y(t)?m(t.parentNode,e,!0):[]}ancestors(e=""){let t=this?.target;return y(t)?m(this.target.parentNode,e,!1):[]}children(e=""){let t=this?.target;if(!y(t))return[];const r=Math.random().toString().replace(".",""),n='[_mc]:not([temp_id="'+r+'"] [_mc] [_mc])';t.setAttribute("temp_id",r);const s=p([...t.querySelectorAll(n)],e);return t.removeAttribute("temp_id"),s}descendants(e=""){let t=this?.target;return y(t)?p([...t.querySelectorAll("*[_mc]")],e):[]}autoAttachListeners(){if(!f())return;const e=this.target;if(e instanceof HTMLElement){let t=this;Object.getOwnPropertyNames(t.constructor.prototype).filter((e=>/^on[A-Z]|one[A-Z]/.test(e)&&"function"==typeof t.constructor.prototype[e])).forEach((r=>{let n=/^one/.test(r),s=r.replace(/^on[e]{0,1}/,""),a=s.toLowerCase();n&&Object.defineProperty(this,"on"+s,{configurable:!0,enumerable:!1,writable:!0,value:e=>{t.constructor.prototype[r].bind(t)(e)}}),d.has("on"+a)&&b(e,a,(e=>{t.trigger(s,e)}),!1,n)}))}}}class j extends HTMLElement{constructor(){super()}connectedCallback(){S.trigger(this,"Connected")}disconnectedCallback(){S.trigger(this,"Disconnected")}adoptedCallback(){S.trigger(this,"Adopted")}attributeChangedCallback(e,t,r){S.trigger(this,"AttributeChanged",{name:e,oldValue:t,newValue:r})}}function k(e,t,r=[]){if(customElements.get(e))return void console.warn(`IGNORED: Custom element "${e}" is already defined!`);if(!e.includes("-"))throw new Error('createCustomElement: tagName must contain at least one hyphen ("-").');let s=n(e);customElements.define(e,function(e,t){return Object.defineProperty(t,"name",{value:e})}(s,class extends j{instance;constructor(e){super();let r=new t(this,e);S.add(this,s,r)}static get observedAttributes(){return r}}))}function x(e){return customElements.get(e)}const T=(e,t)=>{(t?[t]:[...Object.getOwnPropertyNames(e)]).forEach((t=>{if("_"===t[0]||void 0===e?.[t])return;let n,o=e[t];if(!o.prototype)switch(typeof o){case"string":n=String;break;case"number":n=Number;break;case"boolean":n=Boolean;break;case"object":n=o instanceof Array?Array:Object;break;default:return}let i=class extends n{constructor(e){super(e),this.constructor.callbacks=[],r(e)&&(this.constructor.bound=[],Object.getOwnPropertyNames(e).forEach((t=>{this[t]=e[t]})))}observe(e){return this.constructor.callbacks.push(e),this}bind(e){const t=this,n=r(t.valueOf()),s=t.constructor.bound;if(n){function a(e){if(e.nodeType&&3===e.nodeType){var r=Array.from(e.nodeValue&&e.nodeValue.match(/\{[^\{\}]*\}/g)||[]);if(r.length>0){var o=(i=e.nodeValue||"",function(t){var s,a=!1;return r&&(n?r.forEach((function(e){o.values[e]!==t[e]&&(o.values[e]=t[e],a=!0)})):(o.values=t,a=!0)),a&&(s=i,e.nodeValue=n?c(s,o.values):s.replace(/\{.*\}/g,o.values)),t});o.values=n?{}:void 0,r=Array.from(r).map((e=>e.replace(/[\{\}]/g,"").trim()));let t=n?{}:void 0;r.forEach((function(e){n&&(t[e]="")})),s.push(o)}Array.from(e.childNodes).forEach((function(e){a(e)})),t.notify()}var i;e.nodeType&&1===e.nodeType&&(Array.from(e.attributes).forEach((function(t){var r=Array.from(t.value&&t.value.match(/\{[^\{\}]*\}/g)||[]);if(r.length>0){var n=function(t){return function(s){var a,o=!1;return r&&r.forEach((function(e){n.values[e]!==s[e]&&(n.values[e]=s[e],o=!0)})),o&&(a=t,e.nodeValue=c(a,n.values)),s}}(t.value||"");n.values={},r=Array.from(r).map((e=>e.replace(/[\{\}]/g,"").trim()));let a={};r.forEach((function(e){a[e]=""})),s.push(n)}})),Array.from(e.childNodes).forEach((function(e){a(e)})),t.notify()),e.nodeType&&11===e.nodeType&&Array.from(e.childNodes).forEach((function(e){a(e)}))}a(e),s.length>0&&t.notify()}else console.warn("IGNORED - cannot bind a non-Object to the dom, IS:",typeof t.valueOf());return this}notify(){let e=this,t=r(e.valueOf())&&e.valueOf()instanceof Array==0?structuredClone(Object.assign({},e)):e.valueOf();return e.constructor.callbacks.forEach((e=>{e(t)})),r(e.valueOf())&&e.constructor.bound.forEach((e=>{e(t)})),this}},l=new i(o);Object.defineProperty(e,t,{enumerable:!0,get(){if(r(l.valueOf())){let e=structuredClone(Object.assign({},l));setTimeout(s((function(){a(structuredClone(Object.assign({},l)),e)||l.notify()}),0),0)}return l},set(e){if(typeof e==typeof l.valueOf())if(r(l.valueOf())&&l.valueOf()instanceof Array==0){let t=structuredClone(Object.assign({},l));e=structuredClone(Object.assign({},e));let r=l.constructor?.hasFormHandler??!1,n=l.constructor.callbacks,o=l.constructor.bound;l=new i(structuredClone(Object.assign({},e))),l.constructor.callbacks=r,l.constructor.callbacks=n,l.constructor.bound=o,setTimeout(s((function(){a(structuredClone(Object.assign({},l)),t)||l.notify()}),0),0)}else{let t=l.valueOf(),r=l.constructor.callbacks;l=new i(e),l.constructor.callbacks=r,e!==t&&l.notify()}else console.warn("IGNORED - cannot change observable types, IS:",typeof l.valueOf(),"- CANNOT BECOME:",typeof e)}}),e[t]=o}))},_=e=>{let t=new Set;return e.forEach((e=>{(e=e.trim()).split(" ").forEach((e=>{""!==e&&t.add(e)}))})),Array.from(t)},C=e=>{let t=B("input,select,textarea",e).array,r={};return t.forEach((t=>{const n=t.getAttribute("name")||"undefined";if(n){let s;switch((e=>e instanceof HTMLInputElement?"input":e instanceof HTMLSelectElement?"select":e instanceof HTMLTextAreaElement?"textarea":"")(t)){case"input":s=new L(t,e),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"select":s=new M(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"textarea":s=new P(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;default:console.warn("handler missing:",n,"for",t)}}})),r};class N{constructor(e){}}class L extends N{#a;#e;#o;constructor(e,t){super(e),this.#a=e,this.#e=e.type,this.#o=t}get val(){let e,t=this;switch(t.#e){case"radio":const r=B(`input[type="radio"][name="${this.#a.getAttribute("name")}"]`,this.#o).filter((e=>e.checked));return r.length?(e=r.array[0],e.value):"";case"checkbox":return t.#a.checked;default:return t.#a.value}return""}set val(e){let t=this;switch(t.#e){case"radio":const r=`input[type="radio"][name="${this.#a.getAttribute("name")}"]`,n=B(r,this.#o);if(!n.length)return;if(""===e)return void n.forEach((e=>{e.checked&&(e.checked=!1)}));const s=n.filter((t=>t.getAttribute("value")===e));if(!s.length)return;return void(s.array[0].checked=!0);case"checkbox":t.#a.checked=e;break;default:t.#a.value=e}}}class M extends N{#a;#c=!1;constructor(e){super(e),this.#a=e,this.#c="select-multiple"===e.type}get val(){const e=[];return B(this.#a.querySelectorAll("option")).filter((e=>e.selected)).forEach((t=>{t.selected&&e.push(t.value)})),this.#c?e:e.length?e[0]:""}set val(e){e="string"==typeof e?[e]:e,B(this.#a.querySelectorAll("option")).forEach((t=>{e.indexOf(t.value)>-1?(t.setAttribute("selected",!0),t.selected=!0):(t.removeAttribute("selected"),t.selected=!1)}))}}class P extends N{#a;constructor(e){super(e),this.#a=e}get val(){return this.#a.value}set val(e){this.#a.value=e}}class H{#i=new Set;get set(){return this.#i}get array(){return Array.from(this.#i)}set set(e){this.#i=e}get length(){return this.#i.size}constructor(e,t=document.body){if(new Set,!e)return this}$t(e){let t=new $;return this.#i.forEach((e=>{e._mc&&Object.values(e._mc).forEach((e=>{t.set.add(e)}))})),e&&t.filter((t=>t.nameSpace===e)),t}add(e,t){let r=this;return B(e,t).forEach((e=>{r.#i.add(e)})),r}addClass(...e){return e=_(e),this.forEach((t=>{t.classList.add(...e)})),this}after(e,t){let r=this,n=B(e,t);return n.length?(n.first().forEach((e=>{r.array.reverse().forEach((t=>{t.after(e)}))})),r):r}append(e,t){let r=this.array[0],n=B(e,t);return r&&n.forEach((e=>{r.append(e)})),this}appendTo(e,t){let r=B(e,t).array[0];return r&&this.forEach((e=>{r.append(e)})),this}attr(e,t){let r=this,n={};return r.length?arguments.length?"string"==typeof e?void 0===t?[...r.set][0].getAttribute(e):null===t?([...r.set].forEach((t=>{t.removeAttribute(e)})),r):("object"==typeof t&&(t=JSON.stringify(t)),[...r.set].forEach((r=>{r.setAttribute(e,t)})),r):"object"==typeof e?([...r.set].forEach((t=>{Object.keys(e).forEach((r=>{B(t).attr(r,e.key)}))})),r):r:(Array.from([...r.set][0].attributes).forEach((e=>{n[e.name]=e.value})),n):r}before(e,t){let r=this,n=B(e,t);return n.length?(n.first().forEach((e=>{r.forEach((t=>{t.before(e)}))})),r):r}children(e,t){let r=this,n=new Set;if(r.#i.forEach((e=>{Array.from(e.children).forEach((e=>{n.add(e)}))})),r=B([...n]),e){let n=B(e,t);r.filter((e=>n.has(e)))}return r}descendants(e,t){let r=this,n=new Set;if(r.#i.forEach((e=>{e.querySelectorAll("*").forEach((e=>{n.add(e)}))})),r=B([...n]),e){let n=B(e,t);r.filter((e=>n.has(e)))}return r}empty(){return this.filter((e=>!1))}first(e,t){let r=this,n=new Set,s=!1;return e&&(s=B(e,t)),r.#i.forEach((e=>{e.parentNode&&n.add(e.parentNode.children[0])})),r=B([...n]),e&&r.filter((e=>s.has(e))),r}has(e){return this.#i.has(e)}hasClass(...e){return e=_(e),this.every((e=>Array.from(e.classList).every((t=>e.contains(t)))))}html(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerHTML=e:(()=>{console.warn("Cannot access the .innerHTML of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerHTML}last(e,t){let r=this,n=new Set;if(r.#i.forEach((e=>{let t=e.parentNode?.children;t&&n.add(Array.from(t).at(-1))})),r=B([...n]),e){let n=B(e,t);r.filter((e=>n.has(e)))}return r}next(e,t){let r=this,n=new Set;if(r.#i.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),s=r.indexOf(e)+1;s<r.length&&n.add(r.at(s))}})),r=B([...n]),e){let n=B(e,t);r.filter((e=>n.has(e)))}return r}normalize(){return this.#i.forEach((e=>{e.normalize()})),this}off(e,t){let r=e.indexOf(" ")>-1?e.split(" "):[e];return this.array.forEach((e=>{r.forEach((function(r){g(e,r,t)}))})),this}on(e,t,r=!1,n=!1){let s=this,a=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function o(){o.cb.apply(s,Array.from(arguments))}return o.cb=t,s.forEach((e=>{a.forEach((function(t){b(e,t,o,r,n)}))})),o}one(e,t,r=!1){let n=this,s=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function a(){a.cb.apply(n,Array.from(arguments))}return a.cb=t,n.forEach((e=>{s.forEach((function(t){b(e,t,a,r,!0)}))})),a}parent(e,t){let r=this,n=new Set;if(r.#i.forEach((e=>{e.parentNode&&"HTML"!==e.parentNode.tagName&&n.add(e.parentNode)})),r=B([...n]),e){let n=B(e,t);r.filter((e=>n.has(e)))}return r}parents(e,t){let r=this,n=new Set;if(r.#i.forEach((e=>{let t=e;for(;t.parentNode&&"HTML"!==t.parentNode.tagName;)t=t.parentNode,n.add(t)})),r=B([...n]),e){let n=B(e,t);r.filter((e=>n.has(e)))}return r}prepend(e,t){let r=this.array[0],n=B(e,t);return r&&n.forEach((e=>{r.prepend(e)})),this}prev(e,t){let r=this,n=new Set;if(r.#i.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),s=r.indexOf(e)-1;s>-1&&n.add(r.at(s))}})),r=B([...n]),e){let n=B(e,t);r.filter((e=>n.has(e)))}return r}removeClass(...e){return e=_(e),this.forEach((t=>{t.classList.remove(...e)})),this}text(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerText=e:(()=>{console.warn("Cannot access the .textContent of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerText??""}toggleClass(...e){return e=_(e),this.forEach((t=>{t.classList.toggle(...e)})),this}trigger(e,t={},r=!1,n=!1,s=!1){let a,o={bubbles:r,cancelable:n,composed:s},c=e.indexOf(" ")>-1?e.split(" "):[e];return this.#i.forEach((e=>{c.forEach((function(r){a=new Event(r,o),a.data=t,e.dispatchEvent(a)}))})),this}val(e,t){if(!this.length)return this;const r=this;let n,s=C(r.array[0]);var a;return e?null!=(a=e)&&"object"==typeof a?(Object.assign(s,e),n=r):"string"==typeof e&&(void 0===t?n=s[e]:(s[e]=t,n=r)):n=Object.assign({},s),n}values(e){const t=this;let r={};if(!t.length)return console.warn("no dom selection to search inputs in"),{};let n=C(t.array[0]);return Object.keys(n).forEach((e=>{r[e]=n[e]})),0===Object.keys(r).length&&console.warn("no inputs in this dom selection",t.array[0],r),e&&Object.keys(e).forEach((t=>{n.hasOwnProperty(t)&&(console.log("key found",t),n[t]=e[t])})),structuredClone(Object.assign(n))}at(e){return B(this.array.at(e))}concat(e){let t=this;return(e instanceof H?e.array:e).forEach((e=>{t.#i.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return this.#i=new Set(this.array.filter(e,t)),this}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e,0)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){return this.array.pop()}push(...e){return e.forEach((e=>{this.#i.add(e)})),this}shift(){let e=this,t=e.#i.size?e.array[0]:void 0;return t&&e.#i.delete(t),t}slice(e,t){return B(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array;return n.splice(e,t,...r),B(n)}}class ${#i=new Set;get set(){return this.#i}get array(){return Array.from(this.#i)}set set(e){this.#i=e}get length(){return this.#i.size}set length(e){}constructor(e,t=document.body){if(!e)return this;B(e,t).forEach((e=>{q(e).forEach((e=>{this.#i.add(e)}))}))}$d(e,t=document.body){let r=new H,n=new Set,s=!!e||!1,a=new Set;return s&&(a=B(e,t).set),this.#i.forEach((e=>{s&&!a.has(e._tg)||n.add(e._tg)})),r.set=n,r}children(e){let t=this,r=new Set;return t.#i.forEach((t=>{t.children(e).forEach((e=>{r.add(e)}))})),t.#i=r,t}descendants(e){let t=this,r=new Set;return t.#i.forEach((t=>{t.descendants(e).forEach((e=>{r.add(e)}))})),t.#i=r,t}first(e){let t=this,r=new Set;return t.#i.forEach((e=>{e.parent().children().$d().first().$t().forEach((e=>{r.add(e)}))})),t.#i=r,e&&t.filter((t=>t.nameSpace=e)),t}has(e){return this.#i.has(e)}last(e){let t=this,r=new Set;return t.#i.forEach((e=>{e.parent().children().$d().last().$t().forEach((e=>{r.add(e)}))})),t.#i=r,e&&t.filter((t=>t.nameSpace=e)),t}next(e){let t=this,r=new Set;return t.#i.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.nextElementSibling;)t=t.nextElementSibling,n.add(t);q([...n]).$d().first().$t().forEach((e=>{r.add(e)}))})),t.#i=r,e&&t.filter((t=>t.nameSpace=e)),t}ns(e){return this.filter((t=>t.nameSpace===e))}off(e,t){let r=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];return this.$d().array.forEach((e=>{r.forEach((function(r){g(e,`[TB]${r}`,t)}))})),this}on(e,t,r=!1){let n=this,s=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function a(){a.cb.apply(n,Array.from(arguments))}return a.cb=t,n.forEach((e=>{s.forEach((function(t){b(e._tg,`[TB]${t}`,a,!1,r)}))})),a}one(e,t){let r=this,n=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function s(){s.cb.apply(r,Array.from(arguments))}return s.cb=t,r.forEach((e=>{n.forEach((function(t){b(e._tg,`[TB]${t}`,s,!1,!0)}))})),s}parent(e){let t=this,r=new Set;return t.#i.forEach((t=>{t.parent(e).forEach((e=>{r.add(e)}))})),t.#i=r,t}parents(e){let t=this,r=new Set;return t.#i.forEach((t=>{t.parents(e).forEach((e=>{r.add(e)}))})),t.#i=r,t}prev(e){let t=this,r=new Set;return t.#i.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.previousElementSibling;)t=t.previousElementSibling,n.add(t);q([...n]).$d().last().$t().forEach((e=>{r.add(e)}))})),t.#i=r,e&&t.filter((t=>t.nameSpace=e)),t}trigger(e,t={},r="l"){return this.forEach((n=>{n.trigger(e,t,r)})),this}at(e){return q(this.array.at(e))}concat(e){let t=this;return e.forEach((e=>{t.#i.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return q(this.array.filter(e,t))}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){let e=this.array,t=e.pop();return this.#i=new Set(e),t}push(e){return this.#i.add(e),this}shift(){let e=this.array.shift();return this.#i.delete(e),e}slice(e,t){return q(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array.splice(e,t,...r);return q(n)}}const B=(e,t=document)=>{let r=new Set;return e instanceof Array?(e.forEach((e=>{B(e,t).forEach((e=>{r.add(e)}))})),new H([...r])):new H(e,t)},q=(e,t=document)=>B(e,t).$t();class I{constructor(e){}}class V extends I{#a;#e;#o;constructor(e,t){super(e),this.#a=e,this.#e=e.type,this.#o=t}get val(){let e,t=this;switch(t.#e){case"radio":const r=[...(this.#o||document).querySelectorAll(`input[type="radio"][name="${this.#a.getAttribute("name")}"]`)].filter((e=>e.checked));return r.length?(e=r?.[0],e.value):"";case"checkbox":return t.#a.checked;default:return t.#a.value}return""}set val(e){let t=this;switch(t.#e){case"radio":const r=[...(this.#o||document).querySelectorAll(`input[type="radio"][name="${this.#a.getAttribute("name")}"]`)];if(!r.length)return;if(""===e)return void r.forEach((e=>{e.checked&&(e.checked=!1)}));const n=r.filter((t=>t.getAttribute("value")===e));if(!n.length)return;return void((n?.[0]).checked=!0);case"checkbox":t.#a.checked=e;break;default:t.#a.value=e}}}class z extends I{#a;#c=!1;constructor(e){super(e),this.#a=e,this.#c="select-multiple"===e.type}get val(){const e=[];return[...this.#a.querySelectorAll("option")].filter((e=>e.selected)).forEach((t=>{t.selected&&e.push(t.value)})),this.#c?e:e.length?e[0]:""}set val(e){e="string"==typeof e?[e]:e,[...this.#a.querySelectorAll("option")].forEach((t=>{e.indexOf(t.value)>-1?(t.setAttribute("selected","selected"),t.selected=!0):(t.removeAttribute("selected"),t.selected=!1)}))}}class D extends I{#a;constructor(e){super(e),this.#a=e}get val(){return this.#a.value}set val(e){this.#a.value=e}}const F=(e,t={},r,n)=>{let s=(e=>{let t=[...(e||document).querySelectorAll("input,select,textarea")],r={};return t.forEach((t=>{const n=t.getAttribute("name")||"undefined";if(n){let s;switch((e=>e instanceof HTMLInputElement?"input":e instanceof HTMLSelectElement?"select":e instanceof HTMLTextAreaElement?"textarea":"")(t)){case"input":s=new V(t,e),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"select":s=new z(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"textarea":s=new D(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;default:console.warn("handler missing:",n,"for",t)}}})),r})(e);function a(e){Object.keys(e).forEach((t=>{s.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(s[t]=e[t])}))}if(Object.keys(t).length>0&&a(t),void 0!==n){let t=r[n];t.constructor?.hasFormHandler||(t.constructor.hasFormHandler=!0,t.observe(a)),r[n].observe((()=>{})),[...e.querySelectorAll("input, textarea, select")].forEach((e=>{b(e,"keyup",(()=>{r[n]=structuredClone(Object.assign(s))})),b(e,"change",(()=>{r[n]=structuredClone(Object.assign(s))})),e instanceof HTMLSelectElement&&b(e,"select",(()=>{r[n]=structuredClone(Object.assign(s))}))}))}return n?r[n]:Object.assign({},s)};return t})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.microcomponents=t():e.microcomponents=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e){return null!=e&&"object"==typeof e}function n(e){return e.split("-").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join("")}function s(e,t){let r;return()=>{clearTimeout(r),r=setTimeout((function(){e(...arguments)}),t)}}function a(e,t){const n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(const s of n){const n=e[s],o=t[s],i=r(n)&&r(o);if(i&&!a(n,o)||!i&&n!==o)return!1}return!0}function o(e,t,n=null,s){let a=e.split(".");s||(s=t);let i=a.shift(),c=a.join(".");null!==n&&i.length&&void 0===t[i]&&(t[i]={});let l=t[i];return 0===c.length?null!==n?(t[i]=n,s):t[i]:r(t[i])?o(c,t[i],n,s):n?s:l[i]}function i(e,t){var n=Array.from(arguments);if(n.length){if(1===n.length)return n[1];if(n.length>2){for(;n.length>1;)n[0]=i(n[0],n[1]),n.splice(1,1);return n[0]}if("string"==typeof e){var s=e.match(/\{[^\{\}]*\}/g);s&&s.forEach((function(r){var n=o(r.substr(1,r.length-2),t);void 0!==n&&(e=e.replace(r,n))}))}else if(r(e))switch(e.constructor){case Object:Object.keys(e).forEach((function(r){e.hasOwnProperty(r)&&(e[r]=i(e[r],t))}));break;case Array:e.forEach((function(r,n,s){s[n]=i(e[n],t)}))}return e}console.error("no arguments give to parse")}function c(e){let t=document.createElement("template");return e=e.replace(/<([A-Za-z0-9\-]*)([^>\/]*)(\/>)/gi,"<$1$2></$1>"),t.innerHTML=e,t.content.normalize(),Array.from(t.content.childNodes)}e.r(t),e.d(t,{$d:()=>I,$t:()=>B,DC:()=>S,MC:()=>A,McBase:()=>w,McEvent:()=>h,addListener:()=>b,debounce:()=>s,deepEqual:()=>a,defineCE:()=>k,formValues:()=>F,getCE:()=>x,htmlToElements:()=>c,isObject:()=>r,kebabToPascal:()=>n,makeCO:()=>T,nameSpace:()=>o,parse:()=>i,removeListener:()=>g});var l=new Function("try {return this===window;}catch(e){ return false;}");let u=new Set;l()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>u.add(e)));class h{#e;#t=!1;#r=!1;constructor(e,t={},r="l"){this.#e=e,this.data=t,this.bubble=r}get type(){return this.#e}get stopped(){return this.#t}get immediateStopped(){return this.#r}stopPropagation(){this.#t=!0}stopImmediatePropagation(){this.stopPropagation(),this.#r=!0}}var f=new Function("try {return this===window;}catch(e){ return false;}");let d=new Set;function p(e,t){let r=[];return e.forEach((e=>{if(e&&e instanceof HTMLElement){const n=e?._mc;!t&&n?r=r.concat(Object.values(e._mc)):t&&n&&n[t]&&r.push(n[t])}})),r}function m(e,t,r=!0){let n=[];for(;e;){if(e._mc&&(t?t&&e._mc[t]&&n.push(e._mc[t]):n=n.concat(Object.values(e._mc)),r))return n;e=e.parentNode}return n}function y(e){return e&&e instanceof HTMLElement}function b(e,t,r,n=!1,s=!1){let a={once:!1};n&&(a.capture=n),s&&(a.once=s),e.addEventListener(t,r,a)}function g(e,t,r){e.removeEventListener(t,r)}function E(e,t,r={}){let n=e;if(!n._mc){let t=S?.debug;S.debug=!1,n._mc=new S(e),S.debug=t}const s=n._mc;return t.length&&!s[t]&&(s[t]=r,e instanceof HTMLElement&&e.setAttribute("_mc","")),r}function v(e,t){if(!t)return;const r=e?._mc||{};r&&r[t]&&delete r[t],!Object.keys(r).length&&e instanceof HTMLElement&&e.hasAttribute("_mc")&&e.removeAttribute("_mc")}function O(e,t,r={}){let n=e?._mc;n&&[...Object.values(n)].forEach((e=>{e?.trigger&&"function"==typeof e?.trigger&&e?.trigger(t,r)}))}f()&&Object.keys(HTMLElement.prototype).filter((e=>/^on/.test(e))).forEach((e=>d.add(e)));class w{#n;#s={};constructor(e){this.#n=new WeakRef(e),this.constructor!==S&&Object.defineProperty(this,"_mc",{get(){return this.#s}})}get target(){return this.#n.deref()}}class A extends w{constructor(e){super(e);let t=this;setTimeout((()=>{t.trigger("Init"),setTimeout((()=>{let e=Object.keys(t?._mc);e.length&&e?.forEach((e=>{let r=t?._mc?.[e];r?.oneInit&&"function"==typeof r?.oneInit&&r.oneInit(new h("Init"))}))}),0)}),0),this.autoAttachListeners()}static trigger=O;trigger(e,t={},r){let n=this;if(r=r||"l",n.constructor!==A&&n.constructor!==S){if(n instanceof A||n instanceof S){const n=this,s="string"!=typeof e?e:new h(e,t,r),a="on"+s.type[0].toUpperCase()+s.type.slice(1);if(s.bubble.indexOf("l")>-1&&(s.immediateStopped||"function"!=typeof n[a]||(n[a](s),n.hasOwnProperty(a)&&delete n[a])),s.stopped||"l"===s.bubble)return n;f()&&/[ud]/.test(s.bubble)&&n instanceof A&&setTimeout((()=>{-1===s.bubble.indexOf("l")&&(s.bubble+="l"),s.bubble.indexOf("u")>-1&&n.parent().forEach((e=>{e instanceof A&&e.trigger(s)})),s.bubble.indexOf("d")>-1&&n.children().forEach((e=>{e instanceof A&&e.trigger(s)}))}),0)}}else[...Object.getOwnPropertyNames(n)].forEach((s=>{n[s]?.trigger&&"function"==typeof n[s]?.trigger&&n[s]?.trigger(e,t,r)}))}autoAttachListeners(){if(!f())return;const e=this.target;if(e instanceof HTMLElement){let t=this;Object.getOwnPropertyNames(t.constructor.prototype).filter((e=>/^on[A-Z]|one[A-Z]/.test(e)&&"function"==typeof t.constructor.prototype[e])).forEach((r=>{let n=/^one/.test(r),s=r.replace(/^on[e]{0,1}/,""),a=s.toLowerCase();n&&Object.defineProperty(this,"on"+s,{configurable:!0,enumerable:!1,writable:!0,value:e=>{t.constructor.prototype[r].bind(t)(e)}}),d.has("on"+a)&&b(e,a,(e=>{t.trigger(s,e)}),!1,n)}))}}}class S extends w{constructor(e){super(e);let t=this,r=t.constructor===S;setTimeout((()=>{t.trigger("Init"),r||setTimeout((()=>{let e=Object.keys(t?._mc);e.length&&e?.forEach((e=>{let r=t?._mc?.[e];r?.oneInit&&"function"==typeof r?.oneInit&&r.oneInit(new h("Init"))}))}),0)}),0),this.autoAttachListeners()}static debug=!1;static add=E;static remove=v;static trigger=O;get _mc(){return this._mc}trigger(e,t={},r){A.prototype.trigger.call(this,e,t,r)}autoAttachListeners(){A.prototype.autoAttachListeners.call(this)}parent(e=""){let t=this.target;return y(t)?m(t.parentNode,e,!0):[]}ancestors(e=""){let t=this?.target;return y(t)?m(this.target.parentNode,e,!1):[]}children(e=""){let t=this?.target;if(!y(t))return[];const r=Math.random().toString().replace(".",""),n='[_mc]:not([temp_id="'+r+'"] [_mc] [_mc])';t.setAttribute("temp_id",r);const s=p([...t.querySelectorAll(n)],e);return t.removeAttribute("temp_id"),s}descendants(e=""){let t=this?.target;return y(t)?p([...t.querySelectorAll("*[_mc]")],e):[]}}class j extends HTMLElement{constructor(){super()}connectedCallback(){S.trigger(this,"Connected")}disconnectedCallback(){S.trigger(this,"Disconnected")}adoptedCallback(){S.trigger(this,"Adopted")}attributeChangedCallback(e,t,r){S.trigger(this,"AttributeChanged",{name:e,oldValue:t,newValue:r})}}function k(e,t,r=[]){if(customElements.get(e))return void console.warn(`IGNORED: Custom element "${e}" is already defined!`);if(!e.includes("-"))throw new Error('createCustomElement: tagName must contain at least one hyphen ("-").');let s=n(e);customElements.define(e,function(e,t){return Object.defineProperty(t,"name",{value:e})}(s,class extends j{instance;constructor(e){super();let r=new t(this,e);S.add(this,s,r)}static get observedAttributes(){return r}}))}function x(e){return customElements.get(e)}const T=(e,t)=>{(t?[t]:[...Object.getOwnPropertyNames(e)]).forEach((t=>{if("_"===t[0]||void 0===e?.[t])return;let n,o=e[t];if(!o.prototype)switch(typeof o){case"string":n=String;break;case"number":n=Number;break;case"boolean":n=Boolean;break;case"object":n=o instanceof Array?Array:Object;break;default:return}let c=class extends n{constructor(e){super(e),this.constructor.callbacks=[],r(e)&&(this.constructor.bound=[],Object.getOwnPropertyNames(e).forEach((t=>{this[t]=e[t]})))}observe(e){return this.constructor.callbacks.push(e),this}bind(e){const t=this,n=r(t.valueOf()),s=t.constructor.bound;if(n){function a(e){if(e.nodeType&&3===e.nodeType){var r=Array.from(e.nodeValue&&e.nodeValue.match(/\{[^\{\}]*\}/g)||[]);if(r.length>0){var o=(c=e.nodeValue||"",function(t){var s,a=!1;return r&&(n?r.forEach((function(e){o.values[e]!==t[e]&&(o.values[e]=t[e],a=!0)})):(o.values=t,a=!0)),a&&(s=c,e.nodeValue=n?i(s,o.values):s.replace(/\{.*\}/g,o.values)),t});o.values=n?{}:void 0,r=Array.from(r).map((e=>e.replace(/[\{\}]/g,"").trim()));let t=n?{}:void 0;r.forEach((function(e){n&&(t[e]="")})),s.push(o)}Array.from(e.childNodes).forEach((function(e){a(e)})),t.notify()}var c;e.nodeType&&1===e.nodeType&&(Array.from(e.attributes).forEach((function(t){var r=Array.from(t.value&&t.value.match(/\{[^\{\}]*\}/g)||[]);if(r.length>0){var n=function(t){return function(s){var a,o=!1;return r&&r.forEach((function(e){n.values[e]!==s[e]&&(n.values[e]=s[e],o=!0)})),o&&(a=t,e.nodeValue=i(a,n.values)),s}}(t.value||"");n.values={},r=Array.from(r).map((e=>e.replace(/[\{\}]/g,"").trim()));let a={};r.forEach((function(e){a[e]=""})),s.push(n)}})),Array.from(e.childNodes).forEach((function(e){a(e)})),t.notify()),e.nodeType&&11===e.nodeType&&Array.from(e.childNodes).forEach((function(e){a(e)}))}a(e),s.length>0&&t.notify()}else console.warn("IGNORED - cannot bind a non-Object to the dom, IS:",typeof t.valueOf());return this}notify(){let e=this,t=r(e.valueOf())&&e.valueOf()instanceof Array==0?structuredClone(Object.assign({},e)):e.valueOf();return e.constructor.callbacks.forEach((e=>{e(t)})),r(e.valueOf())&&e.constructor.bound.forEach((e=>{e(t)})),this}},l=new c(o);Object.defineProperty(e,t,{enumerable:!0,get(){if(r(l.valueOf())){let e=structuredClone(Object.assign({},l));setTimeout(s((function(){a(structuredClone(Object.assign({},l)),e)||l.notify()}),0),0)}return l},set(e){if(typeof e==typeof l.valueOf())if(r(l.valueOf())&&l.valueOf()instanceof Array==0){let t=structuredClone(Object.assign({},l));e=structuredClone(Object.assign({},e));let r=l.constructor?.hasFormHandler??!1,n=l.constructor.callbacks,o=l.constructor.bound;l=new c(structuredClone(Object.assign({},e))),l.constructor.callbacks=r,l.constructor.callbacks=n,l.constructor.bound=o,setTimeout(s((function(){a(structuredClone(Object.assign({},l)),t)||l.notify()}),0),0)}else{let t=l.valueOf(),r=l.constructor.callbacks;l=new c(e),l.constructor.callbacks=r,e!==t&&l.notify()}else console.warn("IGNORED - cannot change observable types, IS:",typeof l.valueOf(),"- CANNOT BECOME:",typeof e)}}),e[t]=o}))},_=e=>{let t=new Set;return e.forEach((e=>{(e=e.trim()).split(" ").forEach((e=>{""!==e&&t.add(e)}))})),Array.from(t)},C=e=>{let t=I("input,select,textarea",e).array,r={};return t.forEach((t=>{const n=t.getAttribute("name")||"undefined";if(n){let s;switch((e=>e instanceof HTMLInputElement?"input":e instanceof HTMLSelectElement?"select":e instanceof HTMLTextAreaElement?"textarea":"")(t)){case"input":s=new N(t,e),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"select":s=new M(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"textarea":s=new P(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;default:console.warn("handler missing:",n,"for",t)}}})),r};class L{constructor(e){}}class N extends L{#a;#e;#o;constructor(e,t){super(e),this.#a=e,this.#e=e.type,this.#o=t}get val(){let e,t=this;switch(t.#e){case"radio":const r=I(`input[type="radio"][name="${this.#a.getAttribute("name")}"]`,this.#o).filter((e=>e.checked));return r.length?(e=r.array[0],e.value):"";case"checkbox":return t.#a.checked;default:return t.#a.value}return""}set val(e){let t=this;switch(t.#e){case"radio":const r=`input[type="radio"][name="${this.#a.getAttribute("name")}"]`,n=I(r,this.#o);if(!n.length)return;if(""===e)return void n.forEach((e=>{e.checked&&(e.checked=!1)}));const s=n.filter((t=>t.getAttribute("value")===e));if(!s.length)return;return void(s.array[0].checked=!0);case"checkbox":t.#a.checked=e;break;default:t.#a.value=e}}}class M extends L{#a;#i=!1;constructor(e){super(e),this.#a=e,this.#i="select-multiple"===e.type}get val(){const e=[];return I(this.#a.querySelectorAll("option")).filter((e=>e.selected)).forEach((t=>{t.selected&&e.push(t.value)})),this.#i?e:e.length?e[0]:""}set val(e){e="string"==typeof e?[e]:e,I(this.#a.querySelectorAll("option")).forEach((t=>{e.indexOf(t.value)>-1?(t.setAttribute("selected",!0),t.selected=!0):(t.removeAttribute("selected"),t.selected=!1)}))}}class P extends L{#a;constructor(e){super(e),this.#a=e}get val(){return this.#a.value}set val(e){this.#a.value=e}}class H{#c=new Set;get set(){return this.#c}get array(){return Array.from(this.#c)}set set(e){this.#c=e}get length(){return this.#c.size}constructor(e,t=document.body){if(new Set,!e)return this}$t(e){let t=new $;return this.#c.forEach((e=>{e._mc&&Object.values(e._mc).forEach((e=>{t.set.add(e)}))})),e&&t.filter((t=>t.nameSpace===e)),t}add(e,t){let r=this;return I(e,t).forEach((e=>{r.#c.add(e)})),r}addClass(...e){return e=_(e),this.forEach((t=>{t.classList.add(...e)})),this}after(e,t){let r=this,n=I(e,t);return n.length?(n.first().forEach((e=>{r.array.reverse().forEach((t=>{t.after(e)}))})),r):r}append(e,t){let r=this.array[0],n=I(e,t);return r&&n.forEach((e=>{r.append(e)})),this}appendTo(e,t){let r=I(e,t).array[0];return r&&this.forEach((e=>{r.append(e)})),this}attr(e,t){let r=this,n={};return r.length?arguments.length?"string"==typeof e?void 0===t?[...r.set][0].getAttribute(e):null===t?([...r.set].forEach((t=>{t.removeAttribute(e)})),r):("object"==typeof t&&(t=JSON.stringify(t)),[...r.set].forEach((r=>{r.setAttribute(e,t)})),r):"object"==typeof e?([...r.set].forEach((t=>{Object.keys(e).forEach((r=>{I(t).attr(r,e.key)}))})),r):r:(Array.from([...r.set][0].attributes).forEach((e=>{n[e.name]=e.value})),n):r}before(e,t){let r=this,n=I(e,t);return n.length?(n.first().forEach((e=>{r.forEach((t=>{t.before(e)}))})),r):r}children(e,t){let r=this,n=new Set;if(r.#c.forEach((e=>{Array.from(e.children).forEach((e=>{n.add(e)}))})),r=I([...n]),e){let n=I(e,t);r.filter((e=>n.has(e)))}return r}descendants(e,t){let r=this,n=new Set;if(r.#c.forEach((e=>{e.querySelectorAll("*").forEach((e=>{n.add(e)}))})),r=I([...n]),e){let n=I(e,t);r.filter((e=>n.has(e)))}return r}empty(){return this.filter((e=>!1))}first(e,t){let r=this,n=new Set,s=!1;return e&&(s=I(e,t)),r.#c.forEach((e=>{e.parentNode&&n.add(e.parentNode.children[0])})),r=I([...n]),e&&r.filter((e=>s.has(e))),r}has(e){return this.#c.has(e)}hasClass(...e){return e=_(e),this.every((e=>Array.from(e.classList).every((t=>e.contains(t)))))}html(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerHTML=e:(()=>{console.warn("Cannot access the .innerHTML of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerHTML}last(e,t){let r=this,n=new Set;if(r.#c.forEach((e=>{let t=e.parentNode?.children;t&&n.add(Array.from(t).at(-1))})),r=I([...n]),e){let n=I(e,t);r.filter((e=>n.has(e)))}return r}next(e,t){let r=this,n=new Set;if(r.#c.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),s=r.indexOf(e)+1;s<r.length&&n.add(r.at(s))}})),r=I([...n]),e){let n=I(e,t);r.filter((e=>n.has(e)))}return r}normalize(){return this.#c.forEach((e=>{e.normalize()})),this}off(e,t){let r=e.indexOf(" ")>-1?e.split(" "):[e];return this.array.forEach((e=>{r.forEach((function(r){g(e,r,t)}))})),this}on(e,t,r=!1,n=!1){let s=this,a=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function o(){o.cb.apply(s,Array.from(arguments))}return o.cb=t,s.forEach((e=>{a.forEach((function(t){b(e,t,o,r,n)}))})),o}one(e,t,r=!1){let n=this,s=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function a(){a.cb.apply(n,Array.from(arguments))}return a.cb=t,n.forEach((e=>{s.forEach((function(t){b(e,t,a,r,!0)}))})),a}parent(e,t){let r=this,n=new Set;if(r.#c.forEach((e=>{e.parentNode&&"HTML"!==e.parentNode.tagName&&n.add(e.parentNode)})),r=I([...n]),e){let n=I(e,t);r.filter((e=>n.has(e)))}return r}parents(e,t){let r=this,n=new Set;if(r.#c.forEach((e=>{let t=e;for(;t.parentNode&&"HTML"!==t.parentNode.tagName;)t=t.parentNode,n.add(t)})),r=I([...n]),e){let n=I(e,t);r.filter((e=>n.has(e)))}return r}prepend(e,t){let r=this.array[0],n=I(e,t);return r&&n.forEach((e=>{r.prepend(e)})),this}prev(e,t){let r=this,n=new Set;if(r.#c.forEach((e=>{let t=e.parentNode?.children;if(t){let r=Array.from(t),s=r.indexOf(e)-1;s>-1&&n.add(r.at(s))}})),r=I([...n]),e){let n=I(e,t);r.filter((e=>n.has(e)))}return r}removeClass(...e){return e=_(e),this.forEach((t=>{t.classList.remove(...e)})),this}text(e){let t=this;return e?(t.forEach((t=>{t.parentNode?t.innerText=e:(()=>{console.warn("Cannot access the .textContent of a HTMLElement that hasnt been inserted yet",t),console.trace(t,this),console.info("If you called this from inside a Web Component constructor, consider using the %c[connected] event callback!","color: blue;")})()})),t):t.array[0].innerText??""}toggleClass(...e){return e=_(e),this.forEach((t=>{t.classList.toggle(...e)})),this}trigger(e,t={},r=!1,n=!1,s=!1){let a,o={bubbles:r,cancelable:n,composed:s},i=e.indexOf(" ")>-1?e.split(" "):[e];return this.#c.forEach((e=>{i.forEach((function(r){a=new Event(r,o),a.data=t,e.dispatchEvent(a)}))})),this}val(e,t){if(!this.length)return this;const r=this;let n,s=C(r.array[0]);var a;return e?null!=(a=e)&&"object"==typeof a?(Object.assign(s,e),n=r):"string"==typeof e&&(void 0===t?n=s[e]:(s[e]=t,n=r)):n=Object.assign({},s),n}values(e){const t=this;let r={};if(!t.length)return console.warn("no dom selection to search inputs in"),{};let n=C(t.array[0]);return Object.keys(n).forEach((e=>{r[e]=n[e]})),0===Object.keys(r).length&&console.warn("no inputs in this dom selection",t.array[0],r),e&&Object.keys(e).forEach((t=>{n.hasOwnProperty(t)&&(console.log("key found",t),n[t]=e[t])})),structuredClone(Object.assign(n))}at(e){return I(this.array.at(e))}concat(e){let t=this;return(e instanceof H?e.array:e).forEach((e=>{t.#c.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return this.#c=new Set(this.array.filter(e,t)),this}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e,0)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){return this.array.pop()}push(...e){return e.forEach((e=>{this.#c.add(e)})),this}shift(){let e=this,t=e.#c.size?e.array[0]:void 0;return t&&e.#c.delete(t),t}slice(e,t){return I(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array;return n.splice(e,t,...r),I(n)}}class ${#c=new Set;get set(){return this.#c}get array(){return Array.from(this.#c)}set set(e){this.#c=e}get length(){return this.#c.size}set length(e){}constructor(e,t=document.body){if(!e)return this;I(e,t).forEach((e=>{B(e).forEach((e=>{this.#c.add(e)}))}))}$d(e,t=document.body){let r=new H,n=new Set,s=!!e||!1,a=new Set;return s&&(a=I(e,t).set),this.#c.forEach((e=>{s&&!a.has(e._tg)||n.add(e._tg)})),r.set=n,r}children(e){let t=this,r=new Set;return t.#c.forEach((t=>{t.children(e).forEach((e=>{r.add(e)}))})),t.#c=r,t}descendants(e){let t=this,r=new Set;return t.#c.forEach((t=>{t.descendants(e).forEach((e=>{r.add(e)}))})),t.#c=r,t}first(e){let t=this,r=new Set;return t.#c.forEach((e=>{e.parent().children().$d().first().$t().forEach((e=>{r.add(e)}))})),t.#c=r,e&&t.filter((t=>t.nameSpace=e)),t}has(e){return this.#c.has(e)}last(e){let t=this,r=new Set;return t.#c.forEach((e=>{e.parent().children().$d().last().$t().forEach((e=>{r.add(e)}))})),t.#c=r,e&&t.filter((t=>t.nameSpace=e)),t}next(e){let t=this,r=new Set;return t.#c.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.nextElementSibling;)t=t.nextElementSibling,n.add(t);B([...n]).$d().first().$t().forEach((e=>{r.add(e)}))})),t.#c=r,e&&t.filter((t=>t.nameSpace=e)),t}ns(e){return this.filter((t=>t.nameSpace===e))}off(e,t){let r=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];return this.$d().array.forEach((e=>{r.forEach((function(r){g(e,`[TB]${r}`,t)}))})),this}on(e,t,r=!1){let n=this,s=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function a(){a.cb.apply(n,Array.from(arguments))}return a.cb=t,n.forEach((e=>{s.forEach((function(t){b(e._tg,`[TB]${t}`,a,!1,r)}))})),a}one(e,t){let r=this,n=e.indexOf(" ")>-1?e.split(" ").filter((e=>""!==e)):[e];function s(){s.cb.apply(r,Array.from(arguments))}return s.cb=t,r.forEach((e=>{n.forEach((function(t){b(e._tg,`[TB]${t}`,s,!1,!0)}))})),s}parent(e){let t=this,r=new Set;return t.#c.forEach((t=>{t.parent(e).forEach((e=>{r.add(e)}))})),t.#c=r,t}parents(e){let t=this,r=new Set;return t.#c.forEach((t=>{t.parents(e).forEach((e=>{r.add(e)}))})),t.#c=r,t}prev(e){let t=this,r=new Set;return t.#c.forEach((e=>{let t,n=new Set;for(t=e._tg;null!==t.previousElementSibling;)t=t.previousElementSibling,n.add(t);B([...n]).$d().last().$t().forEach((e=>{r.add(e)}))})),t.#c=r,e&&t.filter((t=>t.nameSpace=e)),t}trigger(e,t={},r="l"){return this.forEach((n=>{n.trigger(e,t,r)})),this}at(e){return B(this.array.at(e))}concat(e){let t=this;return e.forEach((e=>{t.#c.add(e)})),t}entries(){return this.array.entries()}every(e,t){return this.array.every(e,t)}filter(e,t){return B(this.array.filter(e,t))}forEach(e,t){return this.array.forEach(e,t),this}includes(e){return-1!==this.array.indexOf(e)}indexOf(e,t){return this.array.indexOf(e,t)}map(e,t){return this.array.map(e,t)}pop(){let e=this.array,t=e.pop();return this.#c=new Set(e),t}push(e){return this.#c.add(e),this}shift(){let e=this.array.shift();return this.#c.delete(e),e}slice(e,t){return B(this.array.slice(e,t))}some(e,t){return this.array.some(e,t)}splice(e,t,...r){let n=this.array.splice(e,t,...r);return B(n)}}const I=(e,t=document)=>{let r=new Set;return e instanceof Array?(e.forEach((e=>{I(e,t).forEach((e=>{r.add(e)}))})),new H([...r])):new H(e,t)},B=(e,t=document)=>I(e,t).$t();class q{constructor(e){}}class V extends q{#a;#e;#o;constructor(e,t){super(e),this.#a=e,this.#e=e.type,this.#o=t}get val(){let e,t=this;switch(t.#e){case"radio":const r=[...(this.#o||document).querySelectorAll(`input[type="radio"][name="${this.#a.getAttribute("name")}"]`)].filter((e=>e.checked));return r.length?(e=r?.[0],e.value):"";case"checkbox":return t.#a.checked;default:return t.#a.value}return""}set val(e){let t=this;switch(t.#e){case"radio":const r=[...(this.#o||document).querySelectorAll(`input[type="radio"][name="${this.#a.getAttribute("name")}"]`)];if(!r.length)return;if(""===e)return void r.forEach((e=>{e.checked&&(e.checked=!1)}));const n=r.filter((t=>t.getAttribute("value")===e));if(!n.length)return;return void((n?.[0]).checked=!0);case"checkbox":t.#a.checked=e;break;default:t.#a.value=e}}}class z extends q{#a;#i=!1;constructor(e){super(e),this.#a=e,this.#i="select-multiple"===e.type}get val(){const e=[];return[...this.#a.querySelectorAll("option")].filter((e=>e.selected)).forEach((t=>{t.selected&&e.push(t.value)})),this.#i?e:e.length?e[0]:""}set val(e){e="string"==typeof e?[e]:e,[...this.#a.querySelectorAll("option")].forEach((t=>{e.indexOf(t.value)>-1?(t.setAttribute("selected","selected"),t.selected=!0):(t.removeAttribute("selected"),t.selected=!1)}))}}class D extends q{#a;constructor(e){super(e),this.#a=e}get val(){return this.#a.value}set val(e){this.#a.value=e}}const F=(e,t={},r,n)=>{let s=(e=>{let t=[...(e||document).querySelectorAll("input,select,textarea")],r={};return t.forEach((t=>{const n=t.getAttribute("name")||"undefined";if(n){let s;switch((e=>e instanceof HTMLInputElement?"input":e instanceof HTMLSelectElement?"select":e instanceof HTMLTextAreaElement?"textarea":"")(t)){case"input":s=new V(t,e),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"select":s=new z(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;case"textarea":s=new D(t),Object.defineProperty(r,n,{enumerable:!0,configurable:!0,get:()=>s.val,set:e=>{s.val=e}});break;default:console.warn("handler missing:",n,"for",t)}}})),r})(e);function a(e){Object.keys(e).forEach((t=>{s.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(s[t]=e[t])}))}if(Object.keys(t).length>0&&a(t),void 0!==n){let t=r[n];t.constructor?.hasFormHandler||(t.constructor.hasFormHandler=!0,t.observe(a)),r[n].observe((()=>{})),[...e.querySelectorAll("input, textarea, select")].forEach((e=>{b(e,"keyup",(()=>{r[n]=structuredClone(Object.assign(s))})),b(e,"change",(()=>{r[n]=structuredClone(Object.assign(s))})),e instanceof HTMLSelectElement&&b(e,"select",(()=>{r[n]=structuredClone(Object.assign(s))}))}))}return n?r[n]:Object.assign({},s)};return t})()));
|
package/public/test.js
CHANGED
|
@@ -59,8 +59,6 @@ defineCE(
|
|
|
59
59
|
DC.add(target, "logger", new Logger(target, console, "[logger]"));
|
|
60
60
|
// render
|
|
61
61
|
target.innerHTML = "Click Me";
|
|
62
|
-
// automatically attach native DOM event handlers
|
|
63
|
-
that.autoAttachListeners();
|
|
64
62
|
}
|
|
65
63
|
/*
|
|
66
64
|
web component specific event handlers
|
|
@@ -78,7 +76,7 @@ defineCE(
|
|
|
78
76
|
oneClick(ev) {
|
|
79
77
|
let logger = this.target._mc?.logger;
|
|
80
78
|
logger.info("oneClick handler", ev);
|
|
81
|
-
this
|
|
79
|
+
this._mc.customEventTarget.trigger("customEvent");
|
|
82
80
|
this.target.setAttribute("my-attribute", "testValue");
|
|
83
81
|
}
|
|
84
82
|
onClick(ev) {
|
|
@@ -90,20 +88,18 @@ defineCE(
|
|
|
90
88
|
DC custom event handlers
|
|
91
89
|
*/
|
|
92
90
|
oneInit(ev) {
|
|
93
|
-
let that = this;
|
|
94
|
-
// add a public logger
|
|
95
|
-
//that.target._mc.logger = new Logger(that.target, console, "[Logger]");
|
|
91
|
+
let that = this, _mc = that._mc;
|
|
96
92
|
let logger = that.target._mc.logger;
|
|
97
93
|
logger.warn("oneInit handler", ev);
|
|
98
94
|
// add a private event target
|
|
99
|
-
|
|
95
|
+
_mc.customEventTarget = new EvTarget(that);
|
|
100
96
|
// add a private adder
|
|
101
|
-
|
|
97
|
+
_mc.Adder = new Adder();
|
|
102
98
|
// add callback for this.Counter changes
|
|
103
99
|
that.Counter.observe((value) => {
|
|
104
100
|
logger.log("Counter has changed to: " + value);
|
|
105
101
|
});
|
|
106
|
-
logger.log("add 1,2,3 =",
|
|
102
|
+
logger.log("add 1,2,3 =", _mc.Adder.sum(1, 2, 3));
|
|
107
103
|
}
|
|
108
104
|
onDoSomething(ev) {
|
|
109
105
|
let logger = this.target._mc?.logger;
|
package/public/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,EAAE,EAAE,EAAE,EAAW,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,kBAAkB;AAElB,MAAM,KAAK;IACV,gBAAe,CAAC;IAEhB,GAAG,CAAC,GAAG,OAAiB;QACvB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;CACD;AAED,MAAM,QAAS,SAAQ,EAAE;IACxB,YAAY,MAAW;QACtB,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,aAAa,CAAC,EAAW;QACxB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;QAC9C,MAAM,EAAE,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,EAAW;QAClB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;QAC9C,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;CACD;AAED,MAAM,MAAO,SAAQ,EAAE;IAEtB,MAAM,GAAW,EAAE,CAAC;IAEpB,MAAM,GAAmB,OAAO,CAAC;IAEjC,YAAY,MAAmB,EAAE,MAAsB,EAAE,MAAc;QACtE,8CAA8C;QAC9C,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;QAE7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,mDAAmD;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,GAAG;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;IAC3E,CAAC;CACD;AAED,QAAQ;AACP,kDAAkD;AAClD,QAAQ,EACR,MAAM,KAAM,SAAQ,EAAE;IAErB,EAAE,GAAW,EAAE,CAAC;IAEhB,OAAO,GAAW,CAAC,CAAC;IAEpB,YAAY,MAAmB,EAAE,IAAY;QAC5C,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,gBAAgB;QAEjC,qBAAqB;QACrB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAEjB,2DAA2D;QAC3D,MAAM,CAAC,IAAI,CAAC,CAAC;QAEb,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAElE,SAAS;QACT,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/src/MC.ts
CHANGED
|
@@ -87,11 +87,10 @@ function add( target: HTMLElement, key: string, element = {} ): any {
|
|
|
87
87
|
|
|
88
88
|
// create the _mc property if necessary
|
|
89
89
|
if (!node._mc) {
|
|
90
|
-
let
|
|
91
|
-
|
|
92
|
-
(
|
|
93
|
-
|
|
94
|
-
( MC as any ).debug = debug;
|
|
90
|
+
let debug = (DC as any)?.debug;
|
|
91
|
+
( DC as any ).debug = false;
|
|
92
|
+
node._mc = new ( DC as any )( target );
|
|
93
|
+
( DC as any ).debug = debug;
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
const _mc = node._mc;
|
|
@@ -129,7 +128,8 @@ function remove( target: HTMLMcElement, key: string) {
|
|
|
129
128
|
function trigger( target: unknown, ev: McEvent | string, data: any = {}) {
|
|
130
129
|
let _mc = (target as any)?._mc;
|
|
131
130
|
if ( !_mc ) return;
|
|
132
|
-
[ ...Object.values( _mc ) ].forEach( (mc) => {
|
|
131
|
+
[ ...Object.values( _mc ) ].forEach( (mc: any) => {
|
|
132
|
+
//console.log( 'mc [', mc.constructor.name, ']', mc.constructor.prototype?.oneInit );
|
|
133
133
|
if ( (mc as any)?.trigger && typeof (mc as any)?.trigger === 'function' ){
|
|
134
134
|
(mc as any)?.trigger( ev, data );
|
|
135
135
|
}
|
|
@@ -143,20 +143,16 @@ class McBase {
|
|
|
143
143
|
|
|
144
144
|
#_mc: { [key:string]: any } = {};
|
|
145
145
|
|
|
146
|
-
protected _mc: { [key:string]: any } = {};
|
|
147
|
-
|
|
148
146
|
constructor( target: { [key:string]: any } ) {
|
|
149
147
|
let that = this;
|
|
150
148
|
|
|
151
149
|
this.#target = new WeakRef( target );
|
|
152
150
|
|
|
153
|
-
if ( this.constructor !==
|
|
151
|
+
if ( this.constructor !== DC){
|
|
154
152
|
Object.defineProperty( this, "_mc", {
|
|
155
|
-
get(){
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
})
|
|
159
|
-
}
|
|
153
|
+
get(){ return this.#_mc }
|
|
154
|
+
});
|
|
155
|
+
};
|
|
160
156
|
}
|
|
161
157
|
|
|
162
158
|
get target(): any {
|
|
@@ -166,21 +162,43 @@ class McBase {
|
|
|
166
162
|
}
|
|
167
163
|
|
|
168
164
|
class MC extends McBase {
|
|
165
|
+
|
|
169
166
|
constructor(target: any) {
|
|
170
167
|
super(target);
|
|
171
168
|
let that = this;
|
|
172
|
-
|
|
169
|
+
|
|
173
170
|
setTimeout(
|
|
174
171
|
() => {
|
|
175
|
-
that.trigger('
|
|
172
|
+
that.trigger('Init');
|
|
173
|
+
setTimeout(
|
|
174
|
+
() => {
|
|
175
|
+
let keys = Object.keys( (that as any)?._mc );
|
|
176
|
+
if ( keys.length ){
|
|
177
|
+
//console.log( 'inner Inits on [', that.constructor.name, ']', keys );
|
|
178
|
+
keys?.forEach( (key: string) => {
|
|
179
|
+
let mc = (that as any)?._mc?.[key];
|
|
180
|
+
//console.log( key, typeof mc?.oneInit, mc );
|
|
181
|
+
if ( mc?.oneInit && typeof mc?.oneInit == 'function' ){
|
|
182
|
+
mc.oneInit( new McEvent('Init') );
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
, 0
|
|
188
|
+
);
|
|
176
189
|
}
|
|
177
190
|
,0
|
|
178
191
|
);
|
|
192
|
+
|
|
193
|
+
this.autoAttachListeners();
|
|
179
194
|
}
|
|
180
195
|
|
|
196
|
+
static trigger = trigger;
|
|
197
|
+
|
|
181
198
|
trigger( ev: McEvent | string, data: any = {}, bubble?: string ) {
|
|
182
199
|
let that = this;
|
|
183
200
|
|
|
201
|
+
//console.log( that, '.trigger(', ev, data, bubble, ')' );
|
|
184
202
|
bubble = bubble || 'l';
|
|
185
203
|
|
|
186
204
|
// run all triggers
|
|
@@ -258,24 +276,85 @@ class MC extends McBase {
|
|
|
258
276
|
|
|
259
277
|
}
|
|
260
278
|
|
|
261
|
-
|
|
279
|
+
autoAttachListeners(){
|
|
280
|
+
if ( !isBrowser() ) return;
|
|
262
281
|
|
|
263
|
-
|
|
282
|
+
const target = this.target;
|
|
264
283
|
|
|
265
|
-
|
|
284
|
+
if ( target instanceof HTMLElement ){
|
|
285
|
+
let that: LooseObject = this;
|
|
286
|
+
Object
|
|
287
|
+
.getOwnPropertyNames( that.constructor.prototype )
|
|
288
|
+
.filter( key => /^on[A-Z]|one[A-Z]/.test(key) && typeof that.constructor.prototype[key] === 'function' )
|
|
289
|
+
.forEach( key => {
|
|
290
|
+
let
|
|
291
|
+
once = /^one/.test(key),
|
|
292
|
+
withoutOnOne = key.replace( /^on[e]{0,1}/, '' ), // preserves upper/lowercase for non-native events
|
|
293
|
+
nativeEventName = withoutOnOne.toLowerCase(),
|
|
294
|
+
listener = ( ev: McEvent | Event | CustomEvent ) => { that.trigger( withoutOnOne, ev ); };
|
|
295
|
+
;
|
|
266
296
|
|
|
267
|
-
|
|
297
|
+
if ( once ){
|
|
298
|
+
// console.log( '...is only called once', that.constructor.prototype[key] );
|
|
299
|
+
Object.defineProperty(
|
|
300
|
+
this,
|
|
301
|
+
'on' + withoutOnOne,
|
|
302
|
+
{
|
|
303
|
+
configurable: true,
|
|
304
|
+
enumerable: false,
|
|
305
|
+
writable: true,
|
|
306
|
+
value: (ev: any) => {
|
|
307
|
+
// console.log( 'onceHandler execute:', that.constructor.prototype[key] );
|
|
308
|
+
( that.constructor.prototype[key] ).bind(that)(ev);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
if ( nativeEventNames.has( 'on' + nativeEventName ) ){ // native event defined in HTMLElement
|
|
315
|
+
// console.log('added as native listener', target, nativeEventName );
|
|
316
|
+
addListener( target, nativeEventName, listener, false, once );
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
268
321
|
|
|
269
|
-
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
class DC extends McBase {
|
|
325
|
+
|
|
326
|
+
constructor(target: HTMLElement ) {
|
|
270
327
|
super(target);
|
|
271
328
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
329
|
+
let that = this,
|
|
330
|
+
isDomMcInstance = that.constructor === DC;
|
|
331
|
+
|
|
332
|
+
setTimeout(
|
|
333
|
+
() => {
|
|
334
|
+
that.trigger('Init');
|
|
335
|
+
if ( !isDomMcInstance ) {
|
|
336
|
+
setTimeout(
|
|
337
|
+
() => {
|
|
338
|
+
let keys = Object.keys( (that as any)?._mc );
|
|
339
|
+
if ( keys.length ){
|
|
340
|
+
//console.log( 'inner Inits on [', that.constructor.name, ']', keys );
|
|
341
|
+
keys?.forEach( (key: string) => {
|
|
342
|
+
let mc = (that as any)?._mc?.[key];
|
|
343
|
+
//console.log( key, typeof mc?.oneInit, mc );
|
|
344
|
+
if ( mc?.oneInit && typeof mc?.oneInit == 'function' ){
|
|
345
|
+
mc.oneInit( new McEvent('Init') );
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
, 0
|
|
351
|
+
);
|
|
276
352
|
}
|
|
277
|
-
}
|
|
278
|
-
|
|
353
|
+
}
|
|
354
|
+
, 0
|
|
355
|
+
);
|
|
356
|
+
|
|
357
|
+
this.autoAttachListeners();
|
|
279
358
|
}
|
|
280
359
|
|
|
281
360
|
static debug: boolean = false;
|
|
@@ -284,6 +363,18 @@ class DC extends MC {
|
|
|
284
363
|
static remove: Function = remove;
|
|
285
364
|
static trigger: Function = trigger;
|
|
286
365
|
|
|
366
|
+
get _mc(): { [key:string]: any } {
|
|
367
|
+
return this._mc;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
trigger( ev: McEvent | string, data: any = {}, bubble?: string ) {
|
|
371
|
+
MC.prototype.trigger.call( this, ev, data, bubble );
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
autoAttachListeners() {
|
|
375
|
+
MC.prototype.autoAttachListeners.call( this );
|
|
376
|
+
};
|
|
377
|
+
|
|
287
378
|
parent(search: string = ''): any[] {
|
|
288
379
|
let target: HTMLElement = (this as any).target;
|
|
289
380
|
if (!isDOM(target)) return [];
|
|
@@ -315,51 +406,6 @@ class DC extends MC {
|
|
|
315
406
|
return getMicroComponents([...myDomElements], search);
|
|
316
407
|
}
|
|
317
408
|
|
|
318
|
-
autoAttachListeners(){
|
|
319
|
-
if ( !isBrowser() ) return;
|
|
320
|
-
|
|
321
|
-
const target = this.target;
|
|
322
|
-
|
|
323
|
-
if ( target instanceof HTMLElement ){
|
|
324
|
-
let that: LooseObject = this;
|
|
325
|
-
Object
|
|
326
|
-
.getOwnPropertyNames( that.constructor.prototype )
|
|
327
|
-
.filter( key => /^on[A-Z]|one[A-Z]/.test(key) && typeof that.constructor.prototype[key] === 'function' )
|
|
328
|
-
.forEach( key => {
|
|
329
|
-
let
|
|
330
|
-
once = /^one/.test(key),
|
|
331
|
-
withoutOnOne = key.replace( /^on[e]{0,1}/, '' ), // preserves upper/lowercase for non-native events
|
|
332
|
-
nativeEventName = withoutOnOne.toLowerCase(),
|
|
333
|
-
listener = ( ev: McEvent | Event | CustomEvent ) => { that.trigger( withoutOnOne, ev ); };
|
|
334
|
-
;
|
|
335
|
-
|
|
336
|
-
// console.log('autoAttach', nativeEventName, withoutOnOne, once, listener);
|
|
337
|
-
|
|
338
|
-
if ( once ){
|
|
339
|
-
// console.log( '...is only called once', that.constructor.prototype[key] );
|
|
340
|
-
Object.defineProperty(
|
|
341
|
-
this,
|
|
342
|
-
'on' + withoutOnOne,
|
|
343
|
-
{
|
|
344
|
-
configurable: true,
|
|
345
|
-
enumerable: false,
|
|
346
|
-
writable: true,
|
|
347
|
-
value: (ev: any) => {
|
|
348
|
-
// console.log( 'onceHandler execute:', that.constructor.prototype[key] );
|
|
349
|
-
( that.constructor.prototype[key] ).bind(that)(ev);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
if ( nativeEventNames.has( 'on' + nativeEventName ) ){ // native event defined in HTMLElement
|
|
356
|
-
// console.log('added as native listener', target, nativeEventName );
|
|
357
|
-
addListener( target, nativeEventName, listener, false, once );
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
409
|
};
|
|
364
410
|
|
|
365
411
|
export { addListener, removeListener, McBase, MC, DC, McEvent };
|
package/src/test.ts
CHANGED
|
@@ -85,9 +85,6 @@ defineCE(
|
|
|
85
85
|
|
|
86
86
|
// render
|
|
87
87
|
target.innerHTML = "Click Me";
|
|
88
|
-
|
|
89
|
-
// automatically attach native DOM event handlers
|
|
90
|
-
that.autoAttachListeners();
|
|
91
88
|
}
|
|
92
89
|
|
|
93
90
|
/*
|
|
@@ -111,7 +108,7 @@ defineCE(
|
|
|
111
108
|
|
|
112
109
|
logger.info("oneClick handler", ev);
|
|
113
110
|
|
|
114
|
-
this
|
|
111
|
+
this._mc.customEventTarget.trigger("customEvent");
|
|
115
112
|
|
|
116
113
|
this.target.setAttribute("my-attribute", "testValue");
|
|
117
114
|
}
|
|
@@ -128,27 +125,25 @@ defineCE(
|
|
|
128
125
|
DC custom event handlers
|
|
129
126
|
*/
|
|
130
127
|
oneInit(ev: McEvent) {
|
|
131
|
-
let that = this
|
|
132
|
-
|
|
133
|
-
// add a public logger
|
|
134
|
-
//that.target._mc.logger = new Logger(that.target, console, "[Logger]");
|
|
128
|
+
let that = this,
|
|
129
|
+
_mc = that._mc;
|
|
135
130
|
|
|
136
131
|
let logger = that.target._mc.logger;
|
|
137
132
|
|
|
138
133
|
logger.warn("oneInit handler", ev);
|
|
139
134
|
|
|
140
135
|
// add a private event target
|
|
141
|
-
|
|
136
|
+
_mc.customEventTarget = new EvTarget(that);
|
|
142
137
|
|
|
143
138
|
// add a private adder
|
|
144
|
-
|
|
139
|
+
_mc.Adder = new Adder();
|
|
145
140
|
|
|
146
141
|
// add callback for this.Counter changes
|
|
147
142
|
( that.Counter as any).observe((value: number) => {
|
|
148
143
|
logger.log("Counter has changed to: " + value);
|
|
149
144
|
});
|
|
150
145
|
|
|
151
|
-
logger.log("add 1,2,3 =",
|
|
146
|
+
logger.log("add 1,2,3 =", _mc.Adder.sum(1, 2, 3));
|
|
152
147
|
}
|
|
153
148
|
|
|
154
149
|
onDoSomething(ev: McEvent) {
|