Branch

main.ts

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
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
237651 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
79d4a6 Tucker McKnight
(function() {
  const setCheckbox = (<any>window).setCheckbox
  const currentTheme = (<any>window).currentTheme

  setCheckbox(currentTheme, document.getElementById('dark-mode-switch'))

  const copyCommand = (event) => {
    const elem = event.target
    const cloneText = elem.dataset.cloneUrl
    const originalInnerText = elem.innerText
    navigator.clipboard.writeText(cloneText).then(() => {
      elem.innerText = "Copied"
    })

    window.setTimeout(() => {
      elem.innerText = originalInnerText
    }, 5000)
  }

  const createClonePopover = (currentRepo: string) => {
    const div = document.createElement('div')
    div.id = "clone-popover"
    div.innerHTML = jsVars.cloneDiv
    const popoverBtn = document.getElementById("clone-popover-btn")
    const bsPopover = new bootstrap.Popover(popoverBtn, {
      sanitize: false,
      html: true,
      content: div,
      title: 'Clone',
    })

    div.querySelector("#clone-button").addEventListener('click', copyCommand)

    document.body.addEventListener('click', (event) => {
      const target = event.target as HTMLElement
      // If they didn't click the #clone-popover-btn or if we're not inside of
      // popover, or if we *are* inside of a popover but a different one than the
      // current one, then close the popover.
      const parentPopover = target.closest(".popover")
      if (
        target.id !== "clone-popover-btn"
        && (
          parentPopover === null
          || parentPopover !== bsPopover.tip)
      ) {
        bsPopover.hide()
      }
    })
  }

  const toggleLastTouch = (event) => {
    const isOn = event.target.checked
    const annotations = document.getElementById("annotations")
    if (isOn) {
      annotations.classList.remove("d-none")
    } else {
      annotations.classList.add("d-none")
    }
  }

  document.getElementById("showLastTouch")?.addEventListener('click', toggleLastTouch)

  const copyPull = (event) => {
    const hash = event.target.dataset.hash
    const originalInnerHtml = event.target.innerHTML
    const copiedAlert = document.createElement('span')
    copiedAlert.innerText = "Copied"

    navigator.clipboard.writeText(hash).then(() => {
      event.target.parentElement.appendChild(copiedAlert)
    })

    window.setTimeout(() => {
      copiedAlert.remove()
    }, 5000)
  }

  document.querySelectorAll(".copy-btn").forEach((element) => {
    element.addEventListener("click", copyPull)
  })

  const bootstrap = (<any>window).bootstrap
  const jsVars = (<any>window).jsVars

  if (jsVars.nav.repoName) {
    createClonePopover(jsVars.nav.repoName)
  }
}())