diff --git a/bundle.js b/bundle.js deleted file mode 100644 index 52ff28e..0000000 --- a/bundle.js +++ /dev/null @@ -1,3 +0,0 @@ -var ue=Object.defineProperty;var _e=(e,t)=>{for(var r in t)ue(e,r,{get:t[r],enumerable:!0})};var y=Object.getPrototypeOf,b,k,w,T,z={isConnected:1},ye=1e3,O,pe={},Se=y(z),Q=y(y),p,Z=(e,t,r,l)=>(e??(setTimeout(r,l),new Set)).add(t),q=(e,t,r)=>{let l=w;w=t;try{return e(r)}catch(n){return console.error(n),r}finally{w=l}},P=e=>e.filter(t=>t._dom?.isConnected),U=e=>O=Z(O,e,()=>{for(let t of O)t._bindings=P(t._bindings),t._listeners=P(t._listeners);O=p},ye),I={get val(){return w?._getters?.add(this),this.rawVal},get oldVal(){return w?._getters?.add(this),this._oldVal},set val(e){w?._setters?.add(this),e!==this.rawVal&&(this.rawVal=e,this._bindings.length+this._listeners.length?(k?.add(this),b=Z(b,this,ve)):this._oldVal=e)}},Y=e=>({__proto__:I,rawVal:e,_oldVal:e,_bindings:[],_listeners:[]}),V=(e,t)=>{let r={_getters:new Set,_setters:new Set},l={f:e},n=T;T=[];let i=q(e,r,t);i=(i??document).nodeType?i:new Text(i);for(let o of r._getters)r._setters.has(o)||(U(o),o._bindings.push(l));for(let o of T)o._dom=i;return T=n,l._dom=i},G=(e,t=Y(),r)=>{let l={_getters:new Set,_setters:new Set},n={f:e,s:t};n._dom=r??T?.push(n)??z,t.val=q(e,l,t.rawVal);for(let i of l._getters)l._setters.has(i)||(U(i),i._listeners.push(n));return t},j=(e,...t)=>{for(let r of t.flat(1/0)){let l=y(r??0),n=l===I?V(()=>r.val):l===Q?V(r):r;n!=p&&e.append(n)}return e},ee=(e,t,...r)=>{let[{is:l,...n},...i]=y(r[0]??0)===Se?r:[{},...r],o=e?document.createElementNS(e,t,{is:l}):document.createElement(t,{is:l});for(let[d,g]of Object.entries(n)){let u=_=>_?Object.getOwnPropertyDescriptor(_,d)??u(y(_)):p,C=t+","+d,c=pe[C]??=u(y(o))?.set??0,a=d.startsWith("on")?(_,h)=>{let f=d.slice(2);o.removeEventListener(f,h),o.addEventListener(f,_)}:c?c.bind(o):o.setAttribute.bind(o,d),s=y(g??0);d.startsWith("on")||s===Q&&(g=G(g),s=I),s===I?V(()=>(a(g.val,g._oldVal),o)):a(g)}return j(o,i)},J=e=>({get:(t,r)=>ee.bind(p,e,r)}),te=(e,t)=>t?t!==e&&e.replaceWith(t):e.remove(),ve=()=>{let e=0,t=[...b].filter(l=>l.rawVal!==l._oldVal);do{k=new Set;for(let l of new Set(t.flatMap(n=>n._listeners=P(n._listeners))))G(l.f,l.s,l._dom),l._dom=p}while(++e<100&&(t=[...k]).length);let r=[...b].filter(l=>l.rawVal!==l._oldVal);b=p;for(let l of new Set(r.flatMap(n=>n._bindings=P(n._bindings))))te(l._dom,V(l.f,l._dom)),l._dom=p;for(let l of r)l._oldVal=l.rawVal},M={tags:new Proxy(e=>new Proxy(ee,J(e)),J()),hydrate:(e,t)=>te(e,V(t,e)),add:j,state:Y,derive:G};var W={};_e(W,{calc:()=>Ce,compact:()=>B,list:()=>Re,noreactive:()=>Pe,raw:()=>de,reactive:()=>R,replace:()=>ge,stateFields:()=>Ie});var{fromEntries:le,entries:D,keys:E,hasOwn:F,getPrototypeOf:K,create:we,assign:me}=Object,{get:ne,set:re,deleteProperty:Te,ownKeys:be}=Reflect,{state:$,derive:Ve,add:Ae}=M,x,De=1e3,X,L,v=Symbol(),oe=Symbol(),H=Symbol(),S=Symbol(),A=Symbol(),ie=Symbol(),Ce=e=>(e[oe]=1,e),m=e=>e instanceof Object&&!(e instanceof Function)&&!e[ie],ae=e=>{if(e?.[oe]){let t=$();return Ve(()=>{let r=e();m(t.rawVal)&&m(r)?ge(t.rawVal,r):t.val=R(r)}),t}else return $(R(e))},Oe=e=>{let t=Array.isArray(e)?[]:{__proto__:K(e)};for(let[r,l]of D(e))t[r]=ae(l);return t[H]=[],t[S]=$(1),t},se={get:(e,t,r)=>t===v?e:F(e,t)?Array.isArray(e)&&t==="length"?(e[S].val,e.length):e[t].val:ne(e,t,r),set:(e,t,r,l)=>F(e,t)?Array.isArray(e)&&t==="length"?(r!==e.length&&++e[S].val,e.length=r,1):(e[t].val=R(r),1):t in e?re(e,t,r,l):re(e,t,ae(r))&&(++e[S].val,N(e).forEach(ce.bind(X,l,t,e[t],L)),1),deleteProperty:(e,t)=>(Te(e,t)&&$e(e,t),++e[S].val),ownKeys:e=>(e[S].val,be(e))},R=e=>!m(e)||e[v]?e:new Proxy(Oe(e),se),Pe=e=>(e[ie]=1,e),Ie=e=>e[v],Me=K($()),xe=e=>new Proxy(e,{get:(t,r,l)=>K(t[r]??0)===Me?{val:de(t[r].rawVal)}:ne(t,r,l)}),de=e=>e?.[v]?new Proxy(xe(e[v]),se):e,N=e=>e[H]=e[H].filter(t=>t._containerDom.isConnected),ce=(e,t,r,l,{_containerDom:n,f:i})=>{let o=Array.isArray(e),d=o?Number(t):t;Ae(n,()=>n[A][t]=i(r,()=>delete e[t],d)),o&&!l&&d!==e.length-1&&n.insertBefore(n.lastChild,n[A][E(e).find(g=>Number(g)>d)])},$e=(e,t)=>{for(let r of N(e)){let l=r._containerDom[A];l[t]?.remove(),delete l[t]}},He=e=>(x??(x=(setTimeout(()=>(x.forEach(N),x=X),De),new Set))).add(e),Re=(e,t,r)=>{let l={_containerDom:e instanceof Function?e():e,f:r},n=t[v];l._containerDom[A]={},n[H].push(l),He(n);for(let[i,o]of D(n))ce(t,i,o,1,l);return l._containerDom},fe=(e,t)=>{for(let[n,i]of D(t)){let o=e[n];m(o)&&m(i)?fe(o,i):e[n]=i}for(let n in e)F(t,n)||delete e[n];let r=E(t),l=Array.isArray(e);if(l||E(e).some((n,i)=>n!==r[i])){let n=e[v];if(l)e.length=t.length;else{++n[S].val;let i={...n};for(let o of r)delete n[o];for(let o of r)n[o]=i[o]}for(let{_containerDom:i}of N(n)){let{firstChild:o,[A]:d}=i;for(let g of r)o===d[g]?o=o.nextSibling:i.insertBefore(d[g],o)}}return e},ge=(e,t)=>{L=1;try{return fe(e,t instanceof Function?Array.isArray(e)?t(e.filter(r=>1)):le(t(D(e))):t)}finally{L=X}},B=e=>Array.isArray(e)?e.filter(t=>1).map(B):m(e)?me(we(K(e)),le(D(e).map(([t,r])=>[t,B(r)]))):e;var he=(e,t="")=>{let r="@",l=":",n=".",i="^",o=(c,a,s)=>{let _=Object.keys(a).map(h=>{let f=a[h];switch(h[0]){case r:return o(`@media(max-width:${h.substring(r.length)})`,f,s);case l:return o(`&${h}`,f,s);case n:return o(`${h}${s}`,f,s);case i:return o(`&:hover .${h.substring(i.length)}${s}`,f,s)}return`${h.replace(/([a-z])([A-Z])/g,"$1-$2")}: ${f};`});return`${c}{${_.join(` -`)}}`},d=(c,a)=>{let s=a.lastIndexOf(c)+c.length;return s?a.substring(s):a},g=c=>{let a=van.tags[c],s=[],_=new Proxy((...h)=>{let f=a(...h);return f.className=s.join(u+" ")+u+" "+f.className,s=[],f},{get(h,f){return s.push(f.substring(f.lastIndexOf(".")+1)),_}});return _},u=t?"_"+t:"",C=Object.keys(e).map(c=>o("."+c+u,e[c],u)).join(` -`);return globalThis.document?.head.insertAdjacentHTML("beforeend",``),{Tag(...c){return c.map(a=>d(i,d(n,a))).join(u+" ")+u},CSS:C,DOM:new Proxy({},{get(c,a){return g(a)}}),Div:new Proxy({},{get(c,a){return g("div")[a]}})}};globalThis.van=M;globalThis.vanX=W;globalThis.Gale=he; diff --git a/deno.json b/deno.json index 7cc3241..4512197 100644 --- a/deno.json +++ b/deno.json @@ -9,8 +9,7 @@ { "work": "deno run -Ar ./scripts/dev_server.ts", "scan": "deno run -Ar ./scripts/refresh_types.ts", - "html": "deno run -Ar ./scripts/scaffold.ts --html", - "make": "deno bundle --no-lock --platform=browser --inline-imports=true --output=bundle.js --minify src/bundle_entry.ts" + "html": "deno run -Ar ./scripts/scaffold.ts --html" }, "imports": { diff --git a/dist/core.js b/dist/core.js index 7753984..52127cf 100644 --- a/dist/core.js +++ b/dist/core.js @@ -1,21 +1,3 @@ - -//van -{let e,t,r,o,n,l,s,i,f,h,w,a,d,u,_,c,S,g,y,b,m,v,j,x,O;s=Object.getPrototypeOf,f={},h=s(i={isConnected:1}),w=s(s),a=(e,t,r,o)=>(e??(setTimeout(r,o),new Set)).add(t),d=(e,t,o)=>{let n=r;r=t;try{return e(o)}catch(e){return console.error(e),o}finally{r=n}},u=e=>e.filter(e=>e.t?.isConnected),_=e=>n=a(n,e,()=>{for(let e of n)e.o=u(e.o),e.l=u(e.l);n=l},1e3),c={get val(){return r?.i?.add(this),this.rawVal},get oldVal(){return r?.i?.add(this),this.h},set val(o){r?.u?.add(this),o!==this.rawVal&&(this.rawVal=o,this.o.length+this.l.length?(t?.add(this),e=a(e,this,x)):this.h=o)}},S=e=>({__proto__:c,rawVal:e,h:e,o:[],l:[]}),g=(e,t)=>{let r={i:new Set,u:new Set},n={f:e},l=o;o=[];let s=d(e,r,t);s=(s??document).nodeType?s:new Text(s);for(let e of r.i)r.u.has(e)||(_(e),e.o.push(n));for(let e of o)e.t=s;return o=l,n.t=s},y=(e,t=S(),r)=>{let n={i:new Set,u:new Set},l={f:e,s:t};l.t=r??o?.push(l)??i,t.val=d(e,n,t.rawVal);for(let e of n.i)n.u.has(e)||(_(e),e.l.push(l));return t},b=(e,...t)=>{for(let r of t.flat(1/0)){let t=s(r??0),o=t===c?g(()=>r.val):t===w?g(r):r;o!=l&&e.append(o)}return e},m=(e,t,...r)=>{let[{is:o,...n},...i]=s(r[0]??0)===h?r:[{},...r],a=e?document.createElementNS(e,t,{is:o}):document.createElement(t,{is:o});for(let[e,r]of Object.entries(n)){let o=t=>t?Object.getOwnPropertyDescriptor(t,e)??o(s(t)):l,n=t+","+e,i=f[n]??=o(s(a))?.set??0,h=e.startsWith("on")?(t,r)=>{let o=e.slice(2);a.removeEventListener(o,r),a.addEventListener(o,t)}:i?i.bind(a):a.setAttribute.bind(a,e),d=s(r??0);e.startsWith("on")||d===w&&(r=y(r),d=c),d===c?g(()=>(h(r.val,r.h),a)):h(r)}return b(a,i)},v=e=>({get:(t,r)=>m.bind(l,e,r)}),j=(e,t)=>t?t!==e&&e.replaceWith(t):e.remove(),x=()=>{let r=0,o=[...e].filter(e=>e.rawVal!==e.h);do{t=new Set;for(let e of new Set(o.flatMap(e=>e.l=u(e.l))))y(e.f,e.s,e.t),e.t=l}while(++r<100&&(o=[...t]).length);let n=[...e].filter(e=>e.rawVal!==e.h);e=l;for(let e of new Set(n.flatMap(e=>e.o=u(e.o))))j(e.t,g(e.f,e.t)),e.t=l;for(let e of n)e.h=e.rawVal},O={tags:new Proxy(e=>new Proxy(m,v(e)),v()),hydrate:(e,t)=>j(e,g(t,e)),add:b,state:S,derive:y},window.van=O;} - -//vanx -{let e,t,r,{fromEntries:o,entries:l,keys:n,hasOwn:f,getPrototypeOf:a}=Object,{get:i,set:y,deleteProperty:c,ownKeys:s}=Reflect,{state:m,derive:d,add:u}=van,b=1e3,w=Symbol(),A=Symbol(),S=Symbol(),_=Symbol(),g=Symbol(),p=Symbol(),P=e=>(e[A]=1,e),v=e=>e instanceof Object&&!(e instanceof Function)&&!e[p],h=e=>{if(e?.[A]){let t=m();return d(()=>{let r=e();v(t.rawVal)&&v(r)?B(t.rawVal,r):t.val=x(r)}),t}return m(x(e))},F=e=>{let t=Array.isArray(e)?[]:{__proto__:a(e)};for(let[r,o]of l(e))t[r]=h(o);return t[S]=[],t[_]=m(1),t},O={get:(e,t,r)=>t===w?e:f(e,t)?Array.isArray(e)&&"length"===t?(e[_].val,e.length):e[t].val:i(e,t,r),set:(e,o,l,n)=>f(e,o)?Array.isArray(e)&&"length"===o?(l!==e.length&&++e[_].val,e.length=l,1):(e[o].val=x(l),1):o in e?y(e,o,l,n):y(e,o,h(l))&&(++e[_].val,C(e).forEach(E.bind(t,n,o,e[o],r)),1),deleteProperty:(e,t)=>(c(e,t)&&R(e,t),++e[_].val),ownKeys:e=>(e[_].val,s(e))},x=e=>!v(e)||e[w]?e:new Proxy(F(e),O),D=e=>(e[p]=1,e),j=e=>e[w],K=a(m()),N=e=>new Proxy(e,{get:(e,t,r)=>a(e[t]??0)===K?{val:k(e[t].rawVal)}:i(e,t,r)}),k=e=>e?.[w]?new Proxy(N(e[w]),O):e,C=e=>e[S]=e[S].filter(e=>e.t.isConnected),E=(e,t,r,o,{t:l,f:f})=>{let a=Array.isArray(e),i=a?Number(t):t;u(l,()=>l[g][t]=f(r,()=>delete e[t],i)),a&&!o&&i!==e.length-1&&l.insertBefore(l.lastChild,l[g][n(e).find(e=>Number(e)>i)])},R=(e,t)=>{for(let r of C(e)){let e=r.t[g];e[t]?.remove(),delete e[t]}},T=r=>(e??(setTimeout(()=>(e.forEach(C),e=t),b),e=new Set)).add(r),q=(e,t,r)=>{let o={t:e instanceof Function?e():e,f:r},n=t[w];o.t[g]={},n[S].push(o),T(n);for(let[e,r]of l(n))E(t,e,r,1,o);return o.t},z=(e,t)=>{for(let[r,o]of l(t)){let t=e[r];v(t)&&v(o)?z(t,o):e[r]=o}for(let r in e)f(t,r)||delete e[r];let r=n(t),o=Array.isArray(e);if(o||n(e).some((e,t)=>e!==r[t])){let l=e[w];if(o)e.length=t.length;else{++l[_].val;let e={...l};for(let e of r)delete l[e];for(let t of r)l[t]=e[t]}for(let{t:e}of C(l)){let{firstChild:t,[g]:o}=e;for(let l of r)t===o[l]?t=t.nextSibling:e.insertBefore(o[l],t)}}return e},B=(e,n)=>{r=1;try{return z(e,n instanceof Function?Array.isArray(e)?n(e.filter(e=>1)):o(n(l(e))):n)}finally{r=t}},G=e=>Array.isArray(e)?e.filter(e=>1).map(G):v(e)?o(l(e).map(([e,t])=>[e,G(t)])):e;window.vanX={calc:P,reactive:x,noreactive:D,stateFields:j,raw:k,list:q,replace:B,compact:G}} - -//Store -vanX.Store=(e,t)=> -{ - const a = localStorage.getItem(t); - const r = vanX.reactive( a ? JSON.parse(a) : e ); - - return van.derive( (()=>localStorage.setItem(t,JSON.stringify(vanX.compact(r)))) ),r -}; - -//gale -globalThis.Gale=(e,t="")=>{const n=(e,t,s)=>`${e}{${Object.keys(t).map((e=>{const r=t[e];switch(e[0]){case"@":return n(`@media(max-width:${e.substring(1)})`,r,s);case":":return n(`&${e}`,r,s);case".":return n(`${e}${s}`,r,s);case"^":return n(`&:hover .${e.substring(1)}${s}`,r,s)}return`${e.replace(/([a-z])([A-Z])/g,"$1-$2")}: ${r};`})).join("\n")}}`,s=(e,t)=>{const n=t.lastIndexOf(e)+e.length;return n?t.substring(n):t},r=e=>{const t=van.tags[e];let n=[];const s=new Proxy(((...e)=>{const s=t(...e);return s.className=n.join(a+" ")+a+" "+s.className,n=[],s}),{get:(e,t)=>(n.push(t.substring(t.lastIndexOf(".")+1)),s)});return s},a=t?"_"+t:"",c=Object.keys(e).map((t=>n("."+t+a,e[t],a))).join("\n");return globalThis.document?.head.insertAdjacentHTML("beforeend",``),{Tag:(...e)=>e.map((e=>s("^",s(".",e)))).join(a+" ")+a,CSS:c,DOM:new Proxy({},{get:(e,t)=>r(t)}),H:new Proxy({},{get:(e,t)=>r("div")[t]})}}; - -//boot -((t="/")=>{fetch(t+"deno.json").then((t=>t.json())).then((e=>{const n=(t,e)=>{let n=document.createElement("script");n.type=t,n.textContent=e,document.head.appendChild(n)},o=e.imports;for(let e in o){const n=o[e];n.startsWith("./")&&(o[e]=t+n.substring(2))}n("importmap",JSON.stringify({imports:o})),n("module",'import "entry"; ')}))})(); +var we=Object.defineProperty;var be=(e,t)=>{for(var r in t)we(e,r,{get:t[r],enumerable:!0})};var _=Object.getPrototypeOf,A,F,w,T,q={isConnected:1},Te=1e3,D,Ae={},Ve=_(q),U=_(_),S,Y=(e,t,r,l)=>(e??(setTimeout(r,l),new Set)).add(t),j=(e,t,r)=>{let l=w;w=t;try{return e(r)}catch(n){return console.error(n),r}finally{w=l}},P=e=>e.filter(t=>t._dom?.isConnected),ee=e=>D=Y(D,e,()=>{for(let t of D)t._bindings=P(t._bindings),t._listeners=P(t._listeners);D=S},Te),I={get val(){return w?._getters?.add(this),this.rawVal},get oldVal(){return w?._getters?.add(this),this._oldVal},set val(e){w?._setters?.add(this),e!==this.rawVal&&(this.rawVal=e,this._bindings.length+this._listeners.length?(F?.add(this),A=Y(A,this,Oe)):this._oldVal=e)}},te=e=>({__proto__:I,rawVal:e,_oldVal:e,_bindings:[],_listeners:[]}),V=(e,t)=>{let r={_getters:new Set,_setters:new Set},l={f:e},n=T;T=[];let a=j(e,r,t);a=(a??document).nodeType?a:new Text(a);for(let o of r._getters)r._setters.has(o)||(ee(o),o._bindings.push(l));for(let o of T)o._dom=a;return T=n,l._dom=a},J=(e,t=te(),r)=>{let l={_getters:new Set,_setters:new Set},n={f:e,s:t};n._dom=r??T?.push(n)??q,t.val=j(e,l,t.rawVal);for(let a of l._getters)l._setters.has(a)||(ee(a),a._listeners.push(n));return t},re=(e,...t)=>{for(let r of t.flat(1/0)){let l=_(r??0),n=l===I?V(()=>r.val):l===U?V(r):r;n!=S&&e.append(n)}return e},le=(e,t,...r)=>{let[{is:l,...n},...a]=_(r[0]??0)===Ve?r:[{},...r],o=e?document.createElementNS(e,t,{is:l}):document.createElement(t,{is:l});for(let[i,s]of Object.entries(n)){let u=y=>y?Object.getOwnPropertyDescriptor(y,i)??u(_(y)):S,p=t+","+i,f=Ae[p]??=u(_(o))?.set??0,d=i.startsWith("on")?(y,h)=>{let g=i.slice(2);o.removeEventListener(g,h),o.addEventListener(g,y)}:f?f.bind(o):o.setAttribute.bind(o,i),c=_(s??0);i.startsWith("on")||c===U&&(s=J(s),c=I),c===I?V(()=>(d(s.val,s._oldVal),o)):d(s)}return re(o,a)},Z=e=>({get:(t,r)=>le.bind(S,e,r)}),ne=(e,t)=>t?t!==e&&e.replaceWith(t):e.remove(),Oe=()=>{let e=0,t=[...A].filter(l=>l.rawVal!==l._oldVal);do{F=new Set;for(let l of new Set(t.flatMap(n=>n._listeners=P(n._listeners))))J(l.f,l.s,l._dom),l._dom=S}while(++e<100&&(t=[...F]).length);let r=[...A].filter(l=>l.rawVal!==l._oldVal);A=S;for(let l of new Set(r.flatMap(n=>n._bindings=P(n._bindings))))ne(l._dom,V(l.f,l._dom)),l._dom=S;for(let l of r)l._oldVal=l.rawVal},x={tags:new Proxy(e=>new Proxy(le,Z(e)),Z()),hydrate:(e,t)=>ne(e,V(t,e)),add:re,state:te,derive:J};var R={};be(R,{calc:()=>Ke,compact:()=>W,list:()=>Xe,noreactive:()=>Ee,raw:()=>ge,reactive:()=>k,replace:()=>pe,stateFields:()=>Ge});var{fromEntries:ae,entries:C,keys:L,hasOwn:X,getPrototypeOf:E,create:Ce,assign:De}=Object,{get:ie,set:oe,deleteProperty:Pe,ownKeys:Ie}=Reflect,{state:$,derive:xe,add:Ne}=x,N,$e=1e3,H,B,v=Symbol(),se=Symbol(),K=Symbol(),m=Symbol(),O=Symbol(),de=Symbol(),Ke=e=>(e[se]=1,e),b=e=>e instanceof Object&&!(e instanceof Function)&&!e[de],ce=e=>{if(e?.[se]){let t=$();return xe(()=>{let r=e();b(t.rawVal)&&b(r)?pe(t.rawVal,r):t.val=k(r)}),t}else return $(k(e))},ke=e=>{let t=Array.isArray(e)?[]:{__proto__:E(e)};for(let[r,l]of C(e))t[r]=ce(l);return t[K]=[],t[m]=$(1),t},fe={get:(e,t,r)=>t===v?e:X(e,t)?Array.isArray(e)&&t==="length"?(e[m].val,e.length):e[t].val:ie(e,t,r),set:(e,t,r,l)=>X(e,t)?Array.isArray(e)&&t==="length"?(r!==e.length&&++e[m].val,e.length=r,1):(e[t].val=k(r),1):t in e?oe(e,t,r,l):oe(e,t,ce(r))&&(++e[m].val,G(e).forEach(ue.bind(H,l,t,e[t],B)),1),deleteProperty:(e,t)=>(Pe(e,t)&&Je(e,t),++e[m].val),ownKeys:e=>(e[m].val,Ie(e))},k=e=>!b(e)||e[v]?e:new Proxy(ke(e),fe),Ee=e=>(e[de]=1,e),Ge=e=>e[v],Me=E($()),Fe=e=>new Proxy(e,{get:(t,r,l)=>E(t[r]??0)===Me?{val:ge(t[r].rawVal)}:ie(t,r,l)}),ge=e=>e?.[v]?new Proxy(Fe(e[v]),fe):e,G=e=>e[K]=e[K].filter(t=>t._containerDom.isConnected),ue=(e,t,r,l,{_containerDom:n,f:a})=>{let o=Array.isArray(e),i=o?Number(t):t;Ne(n,()=>n[O][t]=a(r,()=>delete e[t],i)),o&&!l&&i!==e.length-1&&n.insertBefore(n.lastChild,n[O][L(e).find(s=>Number(s)>i)])},Je=(e,t)=>{for(let r of G(e)){let l=r._containerDom[O];l[t]?.remove(),delete l[t]}},Le=e=>(N??(N=(setTimeout(()=>(N.forEach(G),N=H),$e),new Set))).add(e),Xe=(e,t,r)=>{let l={_containerDom:e instanceof Function?e():e,f:r},n=t[v];l._containerDom[O]={},n[K].push(l),Le(n);for(let[a,o]of C(n))ue(t,a,o,1,l);return l._containerDom},he=(e,t)=>{for(let[n,a]of C(t)){let o=e[n];b(o)&&b(a)?he(o,a):e[n]=a}for(let n in e)X(t,n)||delete e[n];let r=L(t),l=Array.isArray(e);if(l||L(e).some((n,a)=>n!==r[a])){let n=e[v];if(l)e.length=t.length;else{++n[m].val;let a={...n};for(let o of r)delete n[o];for(let o of r)n[o]=a[o]}for(let{_containerDom:a}of G(n)){let{firstChild:o,[O]:i}=a;for(let s of r)o===i[s]?o=o.nextSibling:a.insertBefore(i[s],o)}}return e},pe=(e,t)=>{B=1;try{return he(e,t instanceof Function?Array.isArray(e)?t(e.filter(r=>1)):ae(t(C(e))):t)}finally{B=H}},W=e=>Array.isArray(e)?e.filter(t=>1).map(W):b(e)?De(Ce(E(e)),ae(C(e).map(([t,r])=>[t,W(r)]))):e;var ye=(e,t="")=>{let r="@",l=":",n=".",a="^",o=(f,d,c)=>{let y=Object.keys(d).map(h=>{let g=d[h];switch(h[0]){case r:return o(`@media(max-width:${h.substring(r.length)})`,g,c);case l:return o(`&${h}`,g,c);case n:return o(`${h}${c}`,g,c);case a:return o(`&:hover .${h.substring(a.length)}${c}`,g,c)}return`${h.replace(/([a-z])([A-Z])/g,"$1-$2")}: ${g};`});return`${f}{${y.join(` +`)}}`},i=(f,d)=>{let c=d.lastIndexOf(f)+f.length;return c?d.substring(c):d},s=f=>{let d=van.tags[f],c=[],y=new Proxy((...h)=>{let g=d(...h);return g.className=c.join(u+" ")+u+" "+g.className,c=[],g},{get(h,g){return c.push(g.substring(g.lastIndexOf(".")+1)),y}});return y},u=t?"_"+t:"",p=Object.keys(e).map(f=>o("."+f+u,e[f],u)).join(` +`);return globalThis.document?.head.insertAdjacentHTML("beforeend",``),{Tag(...f){return f.map(d=>i(a,i(n,d))).join(u+" ")+u},CSS:p,DOM:new Proxy({},{get(f,d){return s(d)}}),Div:new Proxy({},{get(f,d){return s("div")[d]}})}};var z=0,M={};function Be(){for(let e in M)sessionStorage.setItem(e,M[e]);M={},z=0}function We(e,t){M[e]=t,z||(z=setTimeout(Be,500)),console.log("SAVE",e,t)}function He(e){let t=sessionStorage.getItem(e);return console.log("LOAD",e,t),t}var Q,Se=0;function _e(e){Se=0,Q=e}function Re(){return Q?Q+"_"+Se+++"_":""}var me=()=>{let e=globalThis.van.state;globalThis.van.state=(r,l="")=>{let n=typeof r,a=p=>p,o=p=>p?.toString()||null;switch(n){case"boolean":a=p=>p==="true";break;case"number":a=parseFloat;break;case"object":a=JSON.parse,o=JSON.stringify;break}let i="HMR_"+Re()+l,s=He(i),u=e(s?a(s):r);return van.derive(()=>We(i,o(u.val))),u};let t=globalThis.vanX.reactive;globalThis.vanX.reactive=(r,l)=>{_e(l);let n=t(r);return _e(),n},new WebSocket("ws://"+window.location.host+"/ws").addEventListener("message",r=>r.data==="reload"&&window.location.reload()),vanX.Store=(r,l)=>{let n=JSON.stringify(r),a=localStorage.getItem(l+"check");localStorage.setItem(l+"check",n);let o;if(n==a){let s=localStorage.getItem(l);try{o=JSON.parse(s)||r}catch{o=r}}else o=r;let i=vanX.reactive(o);return van.derive(()=>localStorage.setItem(l,JSON.stringify(vanX.compact(i)))),i}};var ve=(e="/")=>fetch(e+"deno.json").then(t=>t.json()).then(t=>{let r=(n,a)=>{let o=document.createElement("script");o.type=n,o.textContent=a,document.head.appendChild(o)},l=t.imports;for(let n in l){let a=l[n];a.startsWith("./")&&(l[n]=e+a.substring(2))}r("importmap",JSON.stringify({imports:l})),r("module",'import "entry"; ')});globalThis.van=x;globalThis.vanX=R;globalThis.Gale=ye;me();ve(); diff --git a/index.html b/index.html deleted file mode 100644 index fd56352..0000000 --- a/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - -
- - - - - - - - \ No newline at end of file diff --git a/src/bundle_entry.ts b/scripts/bundle_entry.ts similarity index 55% rename from src/bundle_entry.ts rename to scripts/bundle_entry.ts index 06afbdf..d2ecbb2 100644 --- a/src/bundle_entry.ts +++ b/scripts/bundle_entry.ts @@ -4,7 +4,11 @@ globalThis.van = Van; import * as VanX from "npm:vanjs-ext@^0.6.3"; globalThis.vanX = VanX; -import Gale from "./gale.js"; +import Gale from "../src/gale.js"; globalThis.Gale = Gale; -import "./hmr.js"; \ No newline at end of file +import BindHMR from "../src/hmr.js"; +BindHMR(); + +import Boot from "../src/boot.js"; +Boot(); \ No newline at end of file diff --git a/scripts/bundle_subprocess.ts b/scripts/bundle_subprocess.ts index 7352747..2baf808 100644 --- a/scripts/bundle_subprocess.ts +++ b/scripts/bundle_subprocess.ts @@ -1,8 +1,12 @@ -const command = new Deno.Command("deno bundle", {}); -const decode = new TextDecoder("utf-8"); - -const output = await command.output(); - - - -console.assert() \ No newline at end of file +const command = new Deno.Command("deno", { + args:[ + "bundle", + "--no-lock", + "--platform=browser", + "--inline-imports=true", + "--output=dist/core.js", + "--minify", + "scripts/bundle_entry.ts" + ] +}); +command.outputSync(); \ No newline at end of file diff --git a/scripts/dev_server.ts b/scripts/dev_server.ts index d6e82cf..b862041 100644 --- a/scripts/dev_server.ts +++ b/scripts/dev_server.ts @@ -4,7 +4,7 @@ import {HTML} from "./assemble_files.ts"; // Parse the port from the command-line arguments, defaulting to 8000 const port = parseInt(Deno.args[0] || "8000", 10); const sockets: WebSocket[] = []; -const devinc = await fetch(import.meta.resolve("../src/dev.js")).then(r=>r.text()); +//const devinc = await fetch(import.meta.resolve("../src/dev.js")).then(r=>r.text()); let html: string; try { @@ -12,7 +12,7 @@ try { } catch (_) { html = HTML; } -html = html.replace("", ``); +//html = html.replace("", ``); function extension(path: string): string { // Remove trailing slash if it exists diff --git a/src/boot.js b/src/boot.js index 34d0157..b0b0318 100644 --- a/src/boot.js +++ b/src/boot.js @@ -1,15 +1,13 @@ -( - (root="/")=>fetch(root+"deno.json") - .then(text=>text.json()) - .then(json=>{ - const n=(t,e)=>{let n=document.createElement("script");n.type=t,n.textContent=e,document.head.appendChild(n)}; - const imports = json.imports; - for(let n in imports) - { - const path=imports[n]; - path.startsWith("./")&&(imports[n]=root+path.substring(2)) - } - n("importmap",JSON.stringify({imports})), - n("module",'import "entry"; ') - }) -)(); \ No newline at end of file +export default (root="/")=>fetch(root+"deno.json") +.then(text=>text.json()) +.then(json=>{ + const n=(t,e)=>{let n=document.createElement("script");n.type=t,n.textContent=e,document.head.appendChild(n)}; + const imports = json.imports; + for(let n in imports) + { + const path=imports[n]; + path.startsWith("./")&&(imports[n]=root+path.substring(2)) + } + n("importmap",JSON.stringify({imports})), + n("module",'import "entry"; ') +}) \ No newline at end of file diff --git a/src/dev.js b/src/dev.js deleted file mode 100644 index 9f9a0f6..0000000 --- a/src/dev.js +++ /dev/null @@ -1,33 +0,0 @@ -// added in devmode to index.html - -new WebSocket('ws://'+window.location.host+'/ws').addEventListener('message',e=>e.data==='reload'&&window.location.reload()); - -vanX.Store =(obj, key)=> -{ - let checkInit = JSON.stringify(obj); - let checkStore = localStorage.getItem(key+"check"); - localStorage.setItem(key+"check", checkInit); - - let recallJSON; - if(checkInit == checkStore) - { - let recallText = localStorage.getItem(key); - try - { - recallJSON = JSON.parse(recallText) || obj; - } - catch(e) - { - recallJSON = obj; - } - } - else - { - - recallJSON = obj; - } - - const store = vanX.reactive( recallJSON ); - van.derive(() => localStorage.setItem(key, JSON.stringify(vanX.compact(store)))); - return store; -} \ No newline at end of file diff --git a/src/hmr.js b/src/hmr.js index 6f7489a..3e3cf34 100644 --- a/src/hmr.js +++ b/src/hmr.js @@ -1,90 +1,121 @@ -export default { - Time: 0, - /** @type {Record