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.

144 lines
4.1 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. function editPage(repoJsId) {
  54. let relPath = "../".repeat(relPathDepth - 1);
  55. var el = document.createElement('script');
  56. el.onload = ()=> {
  57. console.log("loading...")
  58. console.log(repo)
  59. }
  60. el.src = `${relPath}js/repo/${repoJsId}.js`
  61. document.body.appendChild(el)
  62. document.location.href = `${relPath}edit/index.html#${repoJsId}`
  63. ev}
  64. window.addEventListener("keyup", (e)=> {
  65. if (e.key == "e") {
  66. editPage(sandpointsPageId)
  67. }
  68. })
  69. window.addEventListener("DOMContentLoaded", (e) => {
  70. document.querySelectorAll('.triadlink').forEach((i) => {
  71. console.log(i)
  72. i.addEventListener("click", (ev) => {
  73. if (ev.ctrlKey) {
  74. ev.preventDefault()
  75. editPage(ev.target.getAttribute("repoid"))
  76. }
  77. })
  78. })
  79. let preview = document.querySelector("#preview");
  80. if (
  81. location.pathname.split("/").includes("_preview") ||
  82. location.hash.startsWith("#/_edit")
  83. ) {
  84. preview.style.display = "flex";
  85. }
  86. let par = document.querySelector(
  87. "#TableOfContents > ol:first-child > li:first-child"
  88. );
  89. let s = document.createElement("span");
  90. s.appendChild(par.cloneNode(true));
  91. par.remove();
  92. document
  93. .querySelector("#TableOfContents > ol:first-child")
  94. .insertBefore(
  95. s,
  96. document.querySelector("#TableOfContents > ol:first-child").firstChild
  97. );
  98. if (document.querySelector(".soundcite")) {
  99. let relPath = "../".repeat(relPathDepth - 1);
  100. var popcorn = document.createElement("script");
  101. popcorn.src = `${relPath}js/popcorn.min.js`;
  102. document.body.appendChild(popcorn);
  103. var soundcite = document.createElement("script");
  104. soundcite.src = `${relPath}js/soundcite.min.js`;
  105. document.body.appendChild(soundcite);
  106. }
  107. document
  108. .querySelectorAll(
  109. "#TableOfContents a, .anchorz, .footnote-backref, .footnote-ref"
  110. )
  111. .forEach((i) => {
  112. i.addEventListener("click", (e) => {
  113. setTimeout(() => {
  114. window.scrollBy({
  115. top: document.querySelector(".header").clientHeight * -1.25,
  116. behavior: "smooth",
  117. });
  118. }, 50);
  119. });
  120. });
  121. });
  122. toggleAllLinks = function () {
  123. document.querySelectorAll("details").forEach((i) => {
  124. if (i.open) {
  125. i.removeAttribute("open");
  126. } else {
  127. i.setAttribute("open", true);
  128. }
  129. });
  130. };