mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-10-28 15:46:58 +09:00
Pubsub is only used for builder/canvas communication while sdk is responsible for rendering sites. Here moved pubsub to builder. Now we can drop nanoevents from cli dependencies.
26 lines
511 B
TypeScript
26 lines
511 B
TypeScript
type Task = () => void;
|
|
|
|
let handle: ReturnType<typeof requestAnimationFrame> | undefined;
|
|
let updateQueue: Task[] = [];
|
|
|
|
const processUpdates = (updates: Task[]) => {
|
|
for (const update of updates) {
|
|
update();
|
|
}
|
|
};
|
|
|
|
export const batchUpdate = (update: () => void) => {
|
|
updateQueue.push(update);
|
|
|
|
if (handle !== undefined) {
|
|
return;
|
|
}
|
|
|
|
handle = requestAnimationFrame(() => {
|
|
const updates = updateQueue;
|
|
updateQueue = [];
|
|
handle = undefined;
|
|
processUpdates(updates);
|
|
});
|
|
};
|