more tweaks

This commit is contained in:
Seth Trowbridge 2023-06-15 17:50:55 -04:00
parent fc674f2efb
commit b042cf337a
4 changed files with 23 additions and 18 deletions

View File

@ -18,7 +18,7 @@ Socket.addEventListener('message', (event:{data:string})=>
return import(event.data+"?reload="+SocketReloads)
.then(updatedModule=>handler(updatedModule));
})
).then(HMR.update);
).then(()=>HMR.update());
});
let SocketReloads = 0;
// heartbeat
@ -26,19 +26,19 @@ const SocketTimer = setInterval(()=>{Socket.send("ping")}, 5000);
const HMR = {
reloads:0,
registered: new Map() as Map<string, ()=>void>,
createdElements: new Map() as Map<string, ()=>void>,
states: new Map(),
statesOld: new Map(),
wireframe: false,
onChange(key:string, value:()=>void):void
onChange(reactID:string, value:()=>void):void
{
this.registered.set(key, value);
this.createdElements.set(reactID, value);
},
update()
{
this.reloads++;
this.registered.forEach(handler=>handler());
this.registered.clear();
this.createdElements.forEach(handler=>handler());
this.createdElements.clear();
this.statesOld = this.states;
this.states = new Map();
this.echoState();

View File

@ -5,7 +5,7 @@ const CTX = React.createContext("lol");
export default ()=>
{
return <CTX.Provider value="intradestink">
<div><h1>hey!?</h1></div>
<div><h1>hey!</h1></div>
<CTX.Consumer>
{(value)=><button>{value}</button>}
</CTX.Consumer>

View File

@ -4,5 +4,10 @@
{
"react":"https://esm.sh/preact@10.15.1/compat",
"app": "./app.tsx"
},
"tasks":
{
"local": "deno run -A --no-lock ../local.tsx",
"serve": "deno run -A --no-lock ../serve.tsx"
}
}

View File

@ -43,17 +43,17 @@ Configure({
const imp = await import(Directory+inURL.pathname);
const members = [];
for( const key in imp ) { members.push(key); }
return new Response(`import {FileListen} from "/_lib_/hmr.tsx";
const code =`
import {FileListen} from "/_lib_/hmr.tsx";
import * as Import from "${inURL.pathname}?reload=0";
${ members.map(m=>`let proxy_${m} = Import.${m};
export { proxy_${m} as ${m} };
`).join(" ") }
const reloadHandler = (updatedModule)=>
${ members.map(m=>`let proxy_${m} = Import.${m}; export { proxy_${m} as ${m} };`).join("\n") }
FileListen("${inURL.pathname}", (updatedModule)=>
{
${ members.map(m=>`proxy_${m} = updatedModule.${m};`).join("\n") }
};
FileListen("${inURL.pathname}", reloadHandler);`, {headers:{"content-type":"application/javascript"}}
);
});`
return new Response(code, {headers:{"content-type":"application/javascript"}});
}