You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
3.4 KiB

  1. window.addEventListener("scroll", function (e) {
  2. if (document.querySelector("body").clientWidth > 767) {
  3. let rightcolumn = document.querySelector(".rightcolumn");
  4. let mantletitle =
  5. document.querySelector(".mantletitle") ||
  6. document.querySelector(".crusttitle") ||
  7. false;
  8. if (!mantletitle) {
  9. return;
  10. }
  11. let mantlebar = document.querySelector(".mantlebar");
  12. let grid = document.querySelector(".grid");
  13. let gridrect = mantletitle.getBoundingClientRect();
  14. if (
  15. document.querySelector("body").clientHeight -
  16. (grid.clientHeight + mantletitle.clientHeight + 32) <
  17. window.innerHeight
  18. ) {
  19. return;
  20. }
  21. if (gridrect.top < 20 && !grid.classList.contains("moved")) {
  22. grid.classList.add("moved");
  23. mantlebar.style.display = "inline";
  24. mantletitle.style.visibility = "hidden";
  25. } else if (gridrect.top > 21 && grid.classList.contains("moved")) {
  26. grid.classList.remove("moved");
  27. mantletitle.style.visibility = "visible";
  28. mantlebar.style.display = "none";
  29. }
  30. } else {
  31. let rightcolumn = document.querySelector(".rightcolumn");
  32. let mantletitle =
  33. document.querySelector(".mantletitle") ||
  34. document.querySelector(".crusttitle") ||
  35. false;
  36. if (!mantletitle) {
  37. return;
  38. }
  39. let mantlebar = document.querySelector(".mantlebar");
  40. let grid = document.querySelector(".grid");
  41. let gridrect = mantletitle.getBoundingClientRect();
  42. if (gridrect.top < 20 && !grid.classList.contains("moved")) {
  43. grid.classList.add("moved");
  44. mantlebar.style.display = "inline";
  45. mantletitle.style.visibility = "hidden";
  46. } else if (gridrect.top > 21 && grid.classList.contains("moved")) {
  47. grid.classList.remove("moved");
  48. mantletitle.style.visibility = "visible";
  49. mantlebar.style.display = "none";
  50. }
  51. }
  52. });
  53. window.addEventListener("DOMContentLoaded", (e) => {
  54. let preview = document.querySelector("#preview");
  55. if (
  56. location.pathname.split("/").includes("_preview") ||
  57. location.hash.startsWith("#/_edit")
  58. ) {
  59. preview.style.display = "flex";
  60. }
  61. let par = document.querySelector(
  62. "#TableOfContents > ol:first-child > li:first-child"
  63. );
  64. let s = document.createElement("span");
  65. s.appendChild(par.cloneNode(true));
  66. par.remove();
  67. document
  68. .querySelector("#TableOfContents > ol:first-child")
  69. .insertBefore(
  70. s,
  71. document.querySelector("#TableOfContents > ol:first-child").firstChild
  72. );
  73. if (document.querySelector(".soundcite")) {
  74. let relPath = "../".repeat(relPathDepth - 1);
  75. var popcorn = document.createElement("script");
  76. popcorn.src = `${relPath}js/popcorn.min.js`;
  77. document.body.appendChild(popcorn);
  78. var soundcite = document.createElement("script");
  79. soundcite.src = `${relPath}js/soundcite.min.js`;
  80. document.body.appendChild(soundcite);
  81. }
  82. document
  83. .querySelectorAll(
  84. "#TableOfContents a, .anchorz, .footnote-backref, .footnote-ref"
  85. )
  86. .forEach((i) => {
  87. i.addEventListener("click", (e) => {
  88. setTimeout(() => {
  89. window.scrollBy({
  90. top: document.querySelector(".header").clientHeight * -1.25,
  91. behavior: "smooth",
  92. });
  93. }, 50);
  94. });
  95. });
  96. });
  97. toggleAllLinks = function () {
  98. document.querySelectorAll("details").forEach((i) => {
  99. if (i.open) {
  100. i.removeAttribute("open");
  101. } else {
  102. i.setAttribute("open", true);
  103. }
  104. });
  105. };