client.js 1.3 KB

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