aboutsummaryrefslogtreecommitdiffhomepage
path: root/append.html
blob: 20d1afe75fbcd6ad92ac2e9a392de98864dd344f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<div class="buttons">
  <button title="toggle theme">
    <svg><use href="res/feather.svg#moon" /></svg>
  </button>
  <button title="remove distractions">
    <svg><use href="res/feather.svg#eye-off" /></svg>
  </button>
  <button title="share on twitter or mastodon">
    <svg><use href="res/feather.svg#share-2" /></svg>
  </button>
  <button title="open print dialog">
    <svg><use href="res/feather.svg#printer" /></svg>
  </button>
  <button title="go to index">
    <svg><use href="res/feather.svg#home" /></svg>
  </button>
</div>

<div id="share" class="popover">
  <div>
    <ul>
      <li><a href="https://twitter.com" id="twitter">Share on Twitter</a></li>
      <li>
        <a href="https://joinmastodon.org" id="mastodon">Share on Mastodon</a>
      </li>
    </ul>
  </div>
</div>

<script>
  /// scripts for the sidebar

  // haha i love this
  // thanks, me too
  const toggleScheme = () => {
    for (const rule of document.styleSheets[1].rules) {
      if (!rule.media || !rule.media.mediaText.includes("prefers-color-scheme"))
        continue;
      if (rule.media.mediaText.includes("dark")) {
        rule.media.deleteMedium("(prefers-color-scheme: dark)");
        rule.media.appendMedium("(prefers-color-scheme: light)");
      } else {
        rule.media.deleteMedium("(prefers-color-scheme: light)");
        rule.media.appendMedium("(prefers-color-scheme: dark)");
      }
    }

    if (typeof redrawPlots === "function") redrawPlots();
  };

  const toggleDetails = () => {
    document.querySelectorAll("details").forEach((e) => (e.open = !e.open));
  };

  let text =
    "V2tWa1YwNUhVa1pSYmxKYVYwVnZlVmxXWXpGaFYwbDZVMjVXWVZkRmJERlhhMlJXVUZFOVBRPT0=";

  (() => {
    const sharePopover = document.querySelector(".popover#share");

    const funcs = [
      () => toggleScheme(),
      () =>
        document.querySelectorAll("nav, .buttons").forEach((e) => e.remove()),
      () => (sharePopover.style.display = "block"),
      () => {
        document.querySelectorAll("details").forEach((e) => (e.open = true));
        window.print();
        document.querySelectorAll("details").forEach((e) => (e.open = false));
      },
      () => (window.location.href = "/"),
    ];

    sharePopover.addEventListener("click", (e) => {
      sharePopover.style.display = "none";
    });

    document.querySelector("#twitter").href =
      `https://twitter.com/intent/tweet?text=${document.title}%0A${window.location.href}`;
    document.querySelector("#mastodon").onclick = (e) => {
      window.location.href = `https://${prompt(
        "Enter your mastodon instance:",
        "mastodon.social",
      )}/share?text=${document.title}%0A${window.location.href}`;
      e.preventDefault();
    };

    const buttons = document.querySelectorAll(".buttons button");
    for (let i = 0; i < buttons.length; i++)
      buttons[i].addEventListener("click", funcs[i]);

    setTimeout(() => {
      const links = document.querySelectorAll("a");
      for (let i = 0; i < links.length; i++) {
        if (links[i].getAttribute("href") == "mail") {
          for (let j = 0; j < 4; j++) text = atob(text);
          links[i].href = `mailto:${text}`;
        }
      }
    }, 1000);
  })();
</script>