paste files, images

This commit is contained in:
Mateusz Gruszczyński
2026-08-04 10:42:45 +02:00
parent 83e10129c3
commit 1a77ccd1bf
11 changed files with 686 additions and 41 deletions
+47
View File
@@ -0,0 +1,47 @@
/*
* Copyright (C) 2026 Mateusz Gruszczynski @linuxiarz.pl
* Source-Available Code / Dual-Licensed.
*
* Free for non-commercial and evaluation use under terms of BSL/GPLv3.
* Commercial or production use requires a valid paid license.
* See LICENSE file in repository root for details.
*/
export function createRenderQueue(renderNow, schedule = queueMicrotask) {
if (typeof renderNow !== "function") throw new TypeError("renderNow must be a function");
if (typeof schedule !== "function") throw new TypeError("schedule must be a function");
let rendering = false;
let pending = false;
let scheduled = false;
const schedulePendingRender = () => {
if (scheduled) return;
scheduled = true;
schedule(() => {
scheduled = false;
if (!pending) return;
pending = false;
render();
});
};
function render() {
if (rendering) {
pending = true;
schedulePendingRender();
return;
}
pending = false;
rendering = true;
try {
renderNow();
} finally {
rendering = false;
if (pending) schedulePendingRender();
}
}
return render;
}