@unocss/vite
Version:
The Vite plugin for UnoCSS
46 lines (45 loc) • 1.29 kB
JavaScript
//#region src/client.ts
function post(data, config) {
return fetch("__POST_PATH__", {
...config,
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data)
});
}
function include(set, v) {
for (const i of v) set.add(i);
}
console.log("%c[unocss] devtools support enabled %c\nread more at https://windicss.org", "background:#0ea5e9; color:white; padding: 1px 4px; border-radius: 3px;", "");
const visitedClasses = /* @__PURE__ */ new Set();
const pendingClasses = /* @__PURE__ */ new Set();
let _timer;
function schedule() {
if (_timer != null) clearTimeout(_timer);
_timer = setTimeout(() => {
if (pendingClasses.size) {
post({
type: "add-classes",
data: Array.from(pendingClasses)
}, { mode: "__POST_FETCH_MODE__" });
include(visitedClasses, pendingClasses);
pendingClasses.clear();
}
}, 10);
}
new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.attributeName === "class" && mutation.target) {
Array.from(mutation.target.classList || []).forEach((i) => {
if (!visitedClasses.has(i)) pendingClasses.add(i);
});
schedule();
}
});
}).observe(document.documentElement || document.body, {
childList: true,
subtree: true,
attributes: true
});
//#endregion
export {};