-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
1 lines (1 loc) · 8 KB
/
index.js
1
var D=($)=>typeof $==="function",s=($)=>D($)&&/^async\s+/.test($.toString()),y=($)=>(A)=>A instanceof $,d=y(Error),n=y(Promise);var u="Computed",F=($,A)=>{A=A??s($);let B=[],K,Z=null,J=!0,W=()=>{if(J=!0,A)f(B)},C={[Symbol.toStringTag]:u,get:()=>{if(A)O(B);if(!A||J)b(()=>{let Q=(H)=>{K=H,J=!1,Z=null},v=(H)=>{Z=d(H)?H:new Error(`Computed function failed: ${H}`)};try{let H=$(K);n(H)?H.then(Q).catch(v):Q(H)}catch(H){v(H)}},W);if(d(Z))throw Z;return K},map:(Q)=>F(()=>Q(C.get()))};return C},o=($)=>!!$&&typeof $==="object"&&$[Symbol.toStringTag]===u;var I,c=!1,i=[],U=($)=>G($)||o($),V=($,A=!1)=>U($)?$:D($)?F($,A):_($),O=($)=>{if(I&&!$.includes(I))$.push(I)},f=($)=>$.forEach((A)=>c?i.push(A):A()),b=($,A)=>{let B=I;I=A,$(),I=B},t=($)=>{c=!0,$(),c=!1,i.forEach((A)=>A()),i.length=0};var x=Symbol();class k{$;watchers=[];constructor($){this.value=$}get(){return O(this.watchers),this.value}set($){if(x!==$){let A=D($)?$(this.value):$;if(Object.is(this.value,A))return;this.value=A}if(f(this.watchers),x===$)this.watchers=[]}map($){return F(()=>$(this.get()))}}var _=($)=>new k($),G=y(k);var E=($)=>{let A=()=>b(()=>{try{$()}catch(B){console.error(B)}},A);A()};if(!("requestAnimationFrame"in globalThis))globalThis.requestAnimationFrame=($)=>setTimeout($,16);var h=new Map,R=[],g,l=()=>{g=null,R.forEach(($)=>$()),R=[],h.clear()},z$=()=>{if(g)cancelAnimationFrame(g);g=requestAnimationFrame(l)};queueMicrotask(l);var j=($,A)=>new Promise((B,K)=>{let Z=()=>{try{B($())}catch(J){K(J)}};if(A){let[J,W]=A;if(!h.has(J))h.set(J,new Map);let C=h.get(J);if(C.has(W)){let Q=R.indexOf($);if(Q>-1)R.splice(Q,1)}C.set(W,Z)}R.push(Z),z$()}),a=async()=>new Promise(requestAnimationFrame);var e=($)=>$.nodeType===Node.COMMENT_NODE,F$=($)=>!/^on/i.test($),G$=($)=>{if(/^(mailto|tel):/i.test($))return!0;if($.includes("://"))try{let A=new URL($,window.location.origin);return!["http:","https:","ftp:"].includes(A.protocol)}catch(A){return!0}return!0},m=($,A,B)=>{if(!F$(A))throw new Error(`Unsafe attribute: ${A}`);if(B=String(B).trim(),!G$(B))throw new Error(`Unsafe URL for ${A}: ${B}`);$.setAttribute(A,B)};var $$=($,A,B={},K)=>j(()=>{let Z=document.createElement(A);for(let[J,W]of Object.entries(B))m(Z,J,W);if(K)Z.textContent=K;return $.append(Z),Z},[$,"e"]),A$=($)=>j(()=>{return $.remove(),null},[$,"r"]),B$=($,A)=>j(()=>{return Array.from($.childNodes).filter((B)=>!e(B)).forEach((B)=>B.remove()),$.append(document.createTextNode(A)),$},[$,"t"]),K$=($,A,B)=>j(()=>{return m($,A,B),$},[$,`a:${A}`]),Z$=($,A)=>j(()=>{return $.removeAttribute(A),$},[$,`a:${A}`]),J$=($,A,B)=>j(()=>{return $.toggleAttribute(A,B),$},[$,`a:${A}`]),W$=($,A,B)=>j(()=>{return $.classList.toggle(A,B),$},[$,`c:${A}`]),Y$=($,A,B)=>j(()=>{return $.style.setProperty(A,B),$},[$,`s:${A}`]),Q$=($,A)=>j(()=>{return $.style.removeProperty(A),$},[$,`s:${A}`]);var P=($)=>typeof $==="function",p=($)=>!!$&&typeof $==="object",L$=($)=>typeof $==="number",L=($)=>typeof $==="string",I$=($)=>typeof $==="symbol",X$=($)=>L($)||I$($)||L$($);var X=!1,j$="debug",U$="info",H$="warn",N="error",V$=($)=>$?`#${$}`:"",x$=($)=>$.length?`.${Array.from($).join(".")}`:"",S=($)=>`<${$.localName}${V$($.id)}${x$($.classList)}>`,w=($)=>L($)?`"${$}"`:p($)?JSON.stringify($):String($),Y=($,A,B=j$)=>{if(X||[N,H$].includes(B))console[B](A,$);return $};var S$=($)=>P($)&&$.length===2,P$=($,A,B=0)=>S$($)?$(A,B):$;class M{$;A;constructor($,A=[$]){this.host=$;this.targets=A}on($,A){return this.targets.forEach((B,K)=>{let Z=P$(A,B,K);B.addEventListener($,Z),this.host.listeners.push(()=>B.removeEventListener($,Z))}),this}emit($,A){return this.targets.forEach((B)=>{B.dispatchEvent(new CustomEvent($,{detail:A,bubbles:!0}))}),this}pass($){return this.targets.forEach(async(A,B)=>{if(await q.registry.whenDefined(A.localName),A instanceof q)Object.entries($).forEach(([K,Z])=>{let J=P$(Z,A,B),W=X$(J)?this.host.signals.get(J):V(J,!0);if(W)A.set(K,W);else Y(Z,`Invalid source for state ${w(K)}`,N)});else Y(A,"Target is not a UIElement",N)}),this}sync(...$){return this.targets.forEach((A,B)=>$.forEach((K)=>K(this.host,A,B))),this}}var C$=($,A)=>{if(A==null)return;let B=$(A);return Number.isFinite(B)?B:void 0},T=($,A,B,K)=>{return(((J)=>P(J)&&!!J.length)(A)?A(B,$,K):B)??A},q$=($)=>$!=="false"&&$!=null,M$=($)=>C$(parseInt,$),T$=($)=>C$(parseFloat,$),D$=($)=>$,R$=($)=>(A)=>{if(A==null)return;return $.includes(A.toLowerCase())?A:void 0},y$=($)=>{if($==null)return;try{return JSON.parse($)}catch(A){Y(A,"Failed to parse JSON",N);return}};var N$="context-request";class w$ extends Event{$;A;B;constructor($,A,B=!1){super(N$,{bubbles:!0,composed:!0});this.context=$;this.callback=A;this.subscribe=B}}var r=($)=>{let A=$.constructor,B=A.consumedContexts||[];setTimeout(()=>{for(let Z of B)$.dispatchEvent(new w$(Z,(J)=>$.set(String(Z),J)))});let K=A.providedContexts||[];if(!K.length)return!1;return $.addEventListener(N$,(Z)=>{let{context:J,callback:W}=Z;if(!K.includes(J)||!P(W))return;Z.stopPropagation(),W($.signals.get(String(J)))}),!0};class q extends HTMLElement{get ctor(){return this.constructor}static registry=customElements;static states={};static observedAttributes;static consumedContexts;static providedContexts;static define($){try{if(q.registry.define($,this),X)Y($,"Registered custom element")}catch(A){Y(A,`Failed to register custom element ${$}`,N)}}signals=new Map;listeners=[];self=new M(this);root=this.shadowRoot||this;debug=!1;attributeChangedCallback($,A,B){if(B===A)return;if(X&&this.debug)Y(`${w(A)} => ${w(B)}`,`Attribute "${$}" of ${S(this)} changed`);this.set($,T(this,this.ctor.states[$],B,A))}connectedCallback(){if(X){if(this.debug=this.hasAttribute("debug"),this.debug)Y(this,"Connected")}Object.entries(this.ctor.states).forEach(([$,A])=>{let B=P(A)?T(this,this.ctor.states[$],this.getAttribute($)??void 0):A;this.set($,B,!1)}),r(this)}disconnectedCallback(){if(this.listeners.forEach(($)=>$()),X&&this.debug)Y(this,"Disconnected")}adoptedCallback(){if(X&&this.debug)Y(this,"Adopted")}has($){return this.signals.has($)}get($){let A=(K)=>!p(K)?K:P(K)?A(K()):U(K)?A(K.get()):K,B=A(this.signals.get($));if(X&&this.debug)Y(B,`Get current value of state ${w($)} in ${S(this)}`);return B}set($,A,B=!0){let K;if(!this.signals.has($)){if(X&&this.debug)K="Create";this.signals.set($,V(A,!0))}else if(B){let Z=this.signals.get($);if(U(A)){if(X&&this.debug)K="Replace";if(this.signals.set($,A),G(Z))Z.set(x)}else if(G(Z)){if(X&&this.debug)K="Update";Z.set(A)}else{Y(A,`Computed state ${w($)} in ${S(this)} cannot be set`,N);return}}else return;if(X&&this.debug)Y(A,`${K} state ${w($)} in ${S(this)}`)}delete($){if(X&&this.debug)Y($,`Delete state ${w($)} from ${S(this)}`);return this.signals.delete($)}first($){let A=this.root.querySelector($);return new M(this,A?[A]:[])}all($){return new M(this,Array.from(this.root.querySelectorAll($)))}}var z=($,A)=>(B,K)=>{let{read:Z,update:J}=A,W=Z(K);if(L($)){let C=L(W)?T(B,B.constructor.states[$],W):W;B.set($,C,!1)}E(()=>{let C=Z(K),Q=L($)?B.get($):P($)?$(C):void 0;if(!Object.is(Q,C)){if(Q===null&&A.delete)A.delete(K);else if(Q==null&&W)J(K,W);else if(Q!=null)J(K,Q)}})},O$=($,A)=>z(A,{read:()=>null,update:(B,K)=>$$(B,$,K)}),f$=($)=>z($,{read:(A)=>A!=null,update:(A,B)=>B?A$(A):Promise.resolve(null)}),b$=($)=>z($,{read:(A)=>A.textContent,update:(A,B)=>B$(A,B)}),_$=($,A=$)=>z(A,{read:(B)=>($ in B)?B[$]:void 0,update:(B,K)=>B[$]=K}),k$=($,A=$)=>z(A,{read:(B)=>B.getAttribute($),update:(B,K)=>K$(B,$,K),delete:(B)=>Z$(B,$)}),E$=($,A=$)=>z(A,{read:(B)=>B.hasAttribute($),update:(B,K)=>J$(B,$,K)}),h$=($,A=$)=>z(A,{read:(B)=>B.classList.contains($),update:(B,K)=>W$(B,$,K)}),g$=($,A=$)=>z(A,{read:(B)=>B.style.getPropertyValue($),update:(B,K)=>Y$(B,$,K),delete:(B)=>Q$(B,$)});export{r as useContext,z as updateElement,h$ as toggleClass,E$ as toggleAttribute,V as toSignal,_ as state,b$ as setText,g$ as setStyle,_$ as setProperty,k$ as setAttribute,f$ as removeElement,T as parse,Y as log,G as isState,U as isSignal,j as enqueue,E as effect,O$ as createElement,F as computed,t as batch,D$ as asString,T$ as asNumber,y$ as asJSON,M$ as asInteger,R$ as asEnum,q$ as asBoolean,a as animationFrame,x as UNSET,q as UIElement,M as UI,H$ as LOG_WARN,U$ as LOG_INFO,N as LOG_ERROR,j$ as LOG_DEBUG};