client.mjs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // src/client.ts
  2. function post(data) {
  3. return fetch("__POST_PATH__", {
  4. method: "POST",
  5. headers: {
  6. "Content-Type": "application/json"
  7. },
  8. body: JSON.stringify(data)
  9. });
  10. }
  11. function include(set, v) {
  12. for (const i of v)
  13. set.add(i);
  14. }
  15. console.log(
  16. "%c[windicss] devtools support enabled %c\nread more at https://windicss.org",
  17. "background:#0ea5e9; color:white; padding: 1px 4px; border-radius: 3px;",
  18. ""
  19. );
  20. var visitedClasses = /* @__PURE__ */ new Set();
  21. var pendingClasses = /* @__PURE__ */ new Set();
  22. var _timer;
  23. function schedule() {
  24. if (_timer != null)
  25. clearTimeout(_timer);
  26. _timer = setTimeout(() => {
  27. if (pendingClasses.size) {
  28. post({ type: "add-classes", data: Array.from(pendingClasses) });
  29. include(visitedClasses, pendingClasses);
  30. pendingClasses.clear();
  31. }
  32. }, 10);
  33. }
  34. var mutationObserver = new MutationObserver((mutations) => {
  35. mutations.forEach((mutation) => {
  36. if (mutation.attributeName === "class" && mutation.target) {
  37. Array.from(mutation.target.classList || []).forEach((i) => {
  38. if (!visitedClasses.has(i))
  39. pendingClasses.add(i);
  40. });
  41. schedule();
  42. }
  43. });
  44. });
  45. mutationObserver.observe(document.documentElement || document.body, {
  46. childList: true,
  47. subtree: true,
  48. attributes: true
  49. });