-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
1 lines (1 loc) · 11.1 KB
/
index.js
1
var c=($)=>typeof $==="function";var v=($,K)=>Object.prototype.toString.call($)===`[object ${K}]`,Q4=($)=>(K)=>K instanceof $,S=Q4(Error),X4=Q4(Promise),E=($)=>S($)?$:new Error(String($));var O,i=new Set,a=0,e=new Map,n,Y4=()=>{n=void 0;let $=Array.from(e.values());e.clear();for(let K of $)K()},G4=()=>{if(n)cancelAnimationFrame(n);n=requestAnimationFrame(Y4)};queueMicrotask(Y4);var o=($)=>{if(O&&!$.includes(O))$.push(O)},h=($)=>{for(let K of $)if(a)i.add(K);else K()},$4=()=>{while(i.size){let $=Array.from(i);i.clear();for(let K of $)K()}},z4=($)=>{a++;try{$()}finally{$4(),a--}},k=($,K)=>{let Z=O;O=K;try{$()}finally{O=Z}},R=($,K)=>new Promise((Z,H)=>{let B=()=>{try{Z($())}catch(J){H(J)}};if(K)e.set(K,B);G4()});function U($,...K){let Z=!1,H=()=>k(()=>{if(Z)throw new Error("Circular dependency in effect detected");Z=!0;let B=u(K,$);if(S(B))console.error("Unhandled error in effect:",B);Z=!1},H);H()}var W4="Computed",U4=($,K)=>{if(!K)return!1;return $.name===K.name&&$.message===K.message},x=($,...K)=>{let Z=[],H=F,B,J=!0,Q=!1,z=!1,W=(V)=>{if(!Object.is(V,H))H=V,J=!1,B=void 0,Q=!1},I=()=>{Q=F===H,H=F,B=void 0},Y=(V)=>{let g=E(V);Q=U4(g,B),H=F,B=g},q=()=>{if(J=!0,!Q)h(Z)},w=()=>k(()=>{if(z)throw new Error("Circular dependency in computed detected");Q=!0,z=!0;let V=u(K,$);if(X4(V))I(),V.then((g)=>{W(g),h(Z)}).catch(Y);else if(V==null||F===V)I();else if(S(V))Y(V);else W(V);z=!1},q),f={[Symbol.toStringTag]:W4,get:()=>{if(o(Z),$4(),J)w();if(B)throw B;return H},map:(V)=>x(V,f),match:(V)=>{return U(V,f),f}};return f},T=($)=>v($,W4);var j4="State",s=($)=>{let K=[],Z=$,H={[Symbol.toStringTag]:j4,get:()=>{return o(K),Z},set:(B)=>{if(Object.is(Z,B))return;if(Z=B,h(K),F===Z)K.length=0},update:(B)=>{H.set(B(Z))},map:(B)=>x(B,H),match:(B)=>{return U(B,H),H}};return H},P=($)=>v($,j4);var F=Symbol(),_=($)=>P($)||T($),p=($)=>c($)&&!$.length||typeof $==="object"&&$!==null&&("ok"in $)&&c($.ok),b=($)=>_($)?$:p($)?x($):s($),u=($,K)=>{let{ok:Z,nil:H,err:B}=c(K)?{ok:K}:K,J=[],Q=[],z=!1;for(let I=0;I<$.length;I++){let Y=$[I];try{let q=Y.get();if(q===F)z=!0;J[I]=q}catch(q){Q.push(E(q))}}let W=void 0;try{if(z&&H)W=H();else if(Q.length)W=B?B(...Q):Q[0];else if(!z)W=Z(...J)}catch(I){if(W=E(I),B)W=B(W)}return W};var C=($)=>typeof $==="function",m=($)=>!!$&&typeof $==="object",D=($)=>typeof $==="string";var G=!1,I4="debug",L4="info",y="warn",A="error",w4=($)=>$?`#${$}`:"",x4=($)=>$.length?`.${Array.from($).join(".")}`:"",j=($)=>`<${$.localName}${w4($.id)}${x4($.classList)}>`,M=($)=>D($)?`"${$}"`:m($)?JSON.stringify($):String($),K4=($)=>{if($===null)return"null";if(typeof $!=="object")return typeof $;if(Array.isArray($))return"Array";if(Symbol.toStringTag in Object($))return $[Symbol.toStringTag];return $.constructor?.name||"Object"},X=($,K,Z=I4)=>{if(G||[A,y].includes(Z))console[Z](K,$);return $};var r=($,K=[$])=>{let Z={host:$,targets:K,on:(H,B)=>{return K.forEach((J,Q)=>{let z;if(C(B))z=B.length===2?B(J,Q):B;else if(m(B)&&C(B.handleEvent))z=B;else{X(B,`Invalid listener provided for ${H} event on element ${j(J)}`,A);return}J.addEventListener(H,z),$.cleanup.push(()=>J.removeEventListener(H,z))}),Z},emit:(H,B)=>{return K.forEach((J)=>{J.dispatchEvent(new CustomEvent(H,{detail:B,bubbles:!0}))}),Z},pass:(H)=>{return K.forEach(async(B,J)=>{if(await d.registry.whenDefined(B.localName),B instanceof d){let Q;if(C(H)&&H.length===2)Q=H(B,J);else if(m(H))Q=H;else{X(H,"Invalid passed signals provided",A);return}Object.entries(Q).forEach(([z,W])=>{if(D(W))if(W in $.signals)B.set(z,$.signals[W]);else X(W,`Invalid string key "${W}" for state ${M(z)}`,y);else try{B.set(z,b(W))}catch(I){X(I,`Invalid source for state ${M(z)}`,y)}})}else X(B,"Target is not a UIElement",A)}),Z},sync:(...H)=>{return K.forEach((B,J)=>H.forEach((Q)=>Q($,B,J))),Z}};return Z};var A4="context-request";class F4 extends Event{context;callback;subscribe;constructor($,K,Z=!1){super(A4,{bubbles:!0,composed:!0});this.context=$;this.callback=K;this.subscribe=Z}}var Z4=($)=>{let K=$.constructor,Z=K.consumedContexts||[];queueMicrotask(()=>{for(let B of Z)$.dispatchEvent(new F4(B,(J)=>$.set(String(B),J??L)))});let H=K.providedContexts||[];if(!H.length)return!1;return $.addEventListener(A4,(B)=>{let{context:J,callback:Q}=B;if(!H.includes(J)||!C(Q))return;B.stopPropagation(),Q($.signals[String(J)])}),!0};var L=Symbol(),V4=($)=>C($)&&!!$.length,q4=($)=>C($)&&!!$.length,H4=($)=>C($)?H4($()):_($)?H4($.get()):$,l=($,K,Z,H)=>{let B=$.init[K];return V4(B)?B(Z,$,H):Z??void 0};class d extends HTMLElement{static registry=customElements;static localName;static observedAttributes;static consumedContexts;static providedContexts;static define($=this.localName){try{if(this.registry.define($,this),G)X($,"Registered custom element")}catch(K){X(K,`Failed to register custom element ${$}`,A)}return this}init={};signals={};cleanup=[];self=r(this);get root(){return this.shadowRoot||this}debug=!1;attributeChangedCallback($,K,Z){if(Z===K||T(this.signals[$]))return;let H=l(this,$,Z,K);if(G&&this.debug)X(Z,`Attribute "${$}" of ${j(this)} changed from ${M(K)} to ${M(Z)}, parsed as <${K4(H)}> ${M(H)}`);this.set($,H??L)}connectedCallback(){if(G){if(this.debug=this.hasAttribute("debug"),this.debug)X(this,"Connected")}for(let[$,K]of Object.entries(this.init)){if(this.constructor.observedAttributes?.includes($))continue;let Z=V4(K)?K(this.getAttribute($),this):p(K)?x(K):K;this.set($,Z??L,!1)}Z4(this)}disconnectedCallback(){if(this.cleanup.forEach(($)=>$()),this.cleanup=[],G&&this.debug)X(this,"Disconnected")}adoptedCallback(){if(G&&this.debug)X(this,"Adopted")}has($){return $ in this.signals}get($){let K=H4(this.signals[$]);if(G&&this.debug)X(K,`Get current value of Signal ${M($)} in ${j(this)}`);return K}set($,K,Z=!0){if(K==null){X(K,`Attempt to set State ${M($)} to null or undefined in ${j(this)}`,A);return}let H,B=this.signals[$],J=B?.get();if(!($ in this.signals)){if(q4(K)){X(K,`Cannot use updater function to create a Computed in ${j(this)}`,A);return}if(G&&this.debug)H="Create Signal of type";this.signals[$]=b(K)}else if(Z||J===F||J===L){if(p(K)){X(K,`Cannot use computed callbacks to update Signal ${M($)} in ${j(this)}`,A);return}if(_(K)){if(G&&this.debug)H="Replace";if(this.signals[$]=K,P(B))B.set(F)}else if(P(B)){if(G&&this.debug)H="Update State of type";B.set(q4(K)?K(J):K)}else{X(K,`Computed ${M($)} in ${j(this)} cannot be set`,y);return}}else return;if(G&&this.debug)X(K,`${H} ${K4(K)} ${M($)} in ${j(this)}`)}delete($){if(G&&this.debug)X($,`Delete Signal ${M($)} from ${j(this)}`);return delete this.signals[$]}first($){let K=this.root.querySelector($);if(this.shadowRoot&&!K)K=this.querySelector($);return r(this,K?[K]:[])}all($){let K=this.root.querySelectorAll($);if(this.shadowRoot&&!K.length)K=this.querySelectorAll($);return r(this,Array.from(K))}}var M4=($,K)=>{if(K==null)return;let Z=$(K);return Number.isFinite(Z)?Z:void 0},P4=($)=>Array.isArray($)&&$[0]?$[0]:$,D4=($)=>$!=="false"&&$!=null,T4=($=0)=>(K)=>M4(parseInt,K)??$,_4=($=0)=>(K)=>M4(parseFloat,K)??$,N4=($="")=>(K)=>K??$,R4=($)=>(K)=>K!=null&&$.includes(K.toLowerCase())?K:P4($),y4=($)=>(K)=>{if(K==null)return $;let Z;try{Z=JSON.parse(K)}catch(H){X(H,"Failed to parse JSON",A)}return Z??$};var t={a:"attribute ",c:"class ",h:"inner HTML",p:"property ",s:"style property ",t:"text content"},B4=($,K,Z,H)=>D($)?K.get($):_($)?$.get():C($)?$(Z,H):L,f4=($)=>{if(/^(mailto|tel):/i.test($))return!0;if($.includes("://"))try{let K=new URL($,window.location.origin);return["http:","https:","ftp:"].includes(K.protocol)}catch(K){return!1}return!0},C4=($,K,Z)=>{if(/^on/i.test(K))throw new Error(`Unsafe attribute: ${K}`);if(Z=String(Z).trim(),!f4(Z))throw new Error(`Unsafe URL for ${K}: ${Z}`);$.setAttribute(K,Z)},N=($,K)=>(Z,H,B)=>{let{op:J,read:Q,update:z}=K,W=Q(H);if(D($)&&!T(Z.signals[$])){let Y=D(W)?l(Z,$,W):W;if(Y!=null)Z.set($,Y,!1)}let I=(Y,q,w="element")=>X(Y,`Failed to ${q} ${w} ${j(H)} in ${j(Z)}`,A);U(()=>{let Y=L;try{Y=B4($,Z,H,B)}catch(q){I(q,"update");return}if(Y===L)Y=W;if(Y===F)Y=K.delete?null:W;if(K.delete&&Y===null){let q="";R(()=>{return q=K.delete(H),!0},[H,J]).then(()=>{X(H,`Deleted ${t[J]+q} of ${j(H)} in ${j(Z)}`)}).catch((w)=>{I(w,"delete",`${t[J]+q} of`)})}else if(Y!=null){let q=Q(H);if(Object.is(Y,q))return;let w="";R(()=>{return w=z(H,Y),!0},[H,J]).then(()=>{X(H,`Updated ${t[J]+w} of ${j(H)} in ${j(Z)}`)}).catch((f)=>{I(f,"update",`${t[J]+w} of`)})}})},J4=($,{type:K,where:Z,create:H})=>(B,J,Q)=>{let z={beforebegin:"before",afterbegin:"prepend",beforeend:"append",afterend:"after"};if(!C(J[z[Z]])){X(`Invalid insertPosition ${M(Z)} for ${j(B)}:`,A);return}let W=(I)=>X(I,`Failed to insert ${K} into ${j(B)}:`,A);U(()=>{let I=!1;try{I=B4($,B,J,Q)}catch(Y){W(Y);return}if(!I)return;R(()=>{let Y=H(B);if(!Y)return;J[z[Z]](Y)},[J,"i"]).then(()=>{let Y=D($)?B.signals[$]:$;if(P(Y))Y.set(!1);X(J,`Inserted ${K} into ${j(B)}`)}).catch((Y)=>{W(Y)})})},O4=($)=>N($,{op:"t",read:(K)=>K.textContent,update:(K,Z)=>{return Array.from(K.childNodes).filter((H)=>H.nodeType!==Node.COMMENT_NODE).forEach((H)=>H.remove()),K.append(document.createTextNode(Z)),""}}),k4=($,K=$)=>N(K,{op:"p",read:(Z)=>($ in Z)?Z[$]:F,update:(Z,H)=>{return Z[$]=H,String($)}}),b4=($,K=$)=>N(K,{op:"a",read:(Z)=>Z.getAttribute($),update:(Z,H)=>{return C4(Z,$,H),$},delete:(Z)=>{return Z.removeAttribute($),$}}),S4=($,K=$)=>N(K,{op:"a",read:(Z)=>Z.hasAttribute($),update:(Z,H)=>{return Z.toggleAttribute($,H),$}}),E4=($,K=$)=>N(K,{op:"c",read:(Z)=>Z.classList.contains($),update:(Z,H)=>{return Z.classList.toggle($,H),$}}),h4=($,K=$)=>N(K,{op:"s",read:(Z)=>Z.style.getPropertyValue($),update:(Z,H)=>{return Z.style.setProperty($,H),$},delete:(Z)=>{return Z.style.removeProperty($),$}}),p4=($,K,Z)=>N($,{op:"h",read:(H)=>(H.shadowRoot||!K?H:null)?.innerHTML??"",update:(H,B)=>{if(!B){if(H.shadowRoot)H.shadowRoot.innerHTML="<slot></slot>";return""}if(K&&!H.shadowRoot)H.attachShadow({mode:K});let J=H.shadowRoot||H;if(J.innerHTML=B,!Z)return"";return J.querySelectorAll("script").forEach((Q)=>{let z=document.createElement("script");z.appendChild(document.createTextNode(Q.textContent??"")),J.appendChild(z),Q.remove()})," with scripts"}}),m4=($,K,Z="beforeend")=>J4(K,{type:"template content",where:Z,create:(H)=>{if(!($ instanceof HTMLTemplateElement)){X(`Invalid template to insert into ${j(H)}:`,A);return}return H.shadowRoot?document.importNode($.content,!0):$.content.cloneNode(!0)}}),d4=($,K,Z="beforeend",H={},B)=>J4(K,{type:"new element",where:Z,create:()=>{let J=document.createElement($);for(let[Q,z]of Object.entries(H))C4(J,Q,z);if(B)J.textContent=B;return J}}),g4=($)=>(K,Z,H)=>{let B=(J)=>X(J,`Failed to delete ${j(Z)} from ${j(K)}:`,A);U(()=>{let J=!1;try{J=B4($,K,Z,H)}catch(Q){B(Q);return}if(!J)return;R(()=>{return Z.remove(),!0},[Z,"r"]).then(()=>{X(Z,`Deleted ${j(Z)} into ${j(K)}`)}).catch((Q)=>{B(Q)})})};export{k as watch,Z4 as useContext,N as updateElement,E4 as toggleClass,S4 as toggleAttribute,b as toSignal,s as state,O4 as setText,h4 as setStyle,k4 as setProperty,b4 as setAttribute,g4 as removeElement,l as parse,X as log,P as isState,_ as isSignal,T as isComputed,m4 as insertTemplate,J4 as insertNode,R as enqueue,U as effect,p4 as dangerouslySetInnerHTML,d4 as createElement,x as computed,z4 as batch,N4 as asString,_4 as asNumber,y4 as asJSON,T4 as asInteger,R4 as asEnum,D4 as asBoolean,F as UNSET,d as UIElement,L as RESET,y as LOG_WARN,L4 as LOG_INFO,A as LOG_ERROR,I4 as LOG_DEBUG};