UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 911 B
import*as Coordinator from"../render_coordinator/render_coordinator.js";const coordinator=Coordinator.RenderCoordinator.RenderCoordinator.instance(),pendingRenders=new WeakSet,activeRenders=new WeakSet,subsequentRender=new WeakMap,wrappedCallbacks=new WeakMap;export async function scheduleRender(e,n){if(activeRenders.has(e))return void subsequentRender.set(e,n);if(pendingRenders.has(e))return;pendingRenders.add(e);let r=wrappedCallbacks.get(n);if(r||(r=async()=>{pendingRenders.delete(e),activeRenders.add(e);try{await n.call(e)}catch(n){throw console.error(`ScheduledRender: rendering ${e.nodeName.toLowerCase()}:`),console.error(n),n}finally{activeRenders.delete(e)}},wrappedCallbacks.set(n,r)),await coordinator.write(r),subsequentRender.has(e)){const n=subsequentRender.get(e);if(subsequentRender.delete(e),!n)return;scheduleRender(e,n)}}export function isScheduledRender(e){return activeRenders.has(e)}