Files snapshot from main

./js_templates/commit.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
90
91
92
93
be0819 Tucker McKnight
be0819 Tucker McKnight
fc1156 Tucker McKnight
fc1156 Tucker McKnight
fc1156 Tucker McKnight
fc1156 Tucker McKnight
fc1156 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
481ce7 Tucker McKnight
628208 Tucker McKnight
628208 Tucker McKnight
612263 Tucker McKnight
be0819 Tucker McKnight
481ce7 Tucker McKnight
481ce7 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
6b33c0 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
481ce7 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
481ce7 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
481ce7 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
481ce7 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
be0819 Tucker McKnight
import {NavHelper} from './helpers/nav.ts'

export default async (
  eleventyConfig: any,
  data: any,
  nav: ReturnType<typeof NavHelper>
) => {
  const date = eleventyConfig.getFilter("date")
  const slugify = eleventyConfig.getFilter("slugify")
  const lineNumbers = eleventyConfig.getFilter("lineNumbers")
  const languageExtension = eleventyConfig.getFilter("languageExtension")

  return `
    <div class="row">
      <div class="col-auto">
        <div class="bezel-secondary px-3 py-2">
          <h1 class="fs-2">${data.patchInfo.commit.message.split('\n')[0]}</h2>
          <div class="input-group mb-2 flex-nowrap">
            <span class="font-monospace input-group-text border-info text-white text-bg-dark overflow-scroll">${data.patchInfo.commit.hash}</span>
            <button data-copy-text='${data.patchInfo.commit.hash}' class="btn btn-info shadow-none copy-button">Copy</button>
          </div>
          <p>${data.patchInfo.commit.author} | ${date(data.patchInfo.commit.date)}</p>
          <pre class="mb-0">${data.patchInfo.commit.message}</pre>
        </div>
      </div>
    </div>
    <div class="row my-4">
      <div class="col-auto">
        <div class="form-check">
          <input class="form-check-input" type="radio" name="unified" id="splitModeSwitch" value="split" onchange="toggleUnifiedMode(this)" checked>
          <label class="form-check-label" for="splitModeSwitch">
            Side-by-side
          </label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="radio" name="unified" id="unifiedModeSwitch" value="unified" onchange="toggleUnifiedMode(this)">
          <label class="form-check-label" for="unifiedModeSwitch">
            Stacked
          </label>
        </div>
      </div>
    </div>
    <div class="row" id="diffs">
      ${data.patchInfo.commit.diffs.map((hunk) => {
        return `
          <div class=hunk>
            <span class="font-monospace fw-bold"><a href="${data.reposPath}/${slugify(data.patchInfo.repoName)}/branches/${slugify(data.patchInfo.branchName)}/files/${hunk.fileName.split('/').map((filePart) => { return filePart.split('.').map((subpart) => { return slugify(subpart)}).join('.')}).join('/')}.html">${hunk.fileName}:${hunk.lineNumber}</a></span>
            <div class="diff d-flex">
              <div class="flex-grow-1 diff-left pe-2">
                <span class='font-monospace text-secondary'>Before</span>
                <div class="row">
                  <div class="col-auto border-end"><pre class="mb-0">
${lineNumbers(hunk.beforeText).map((lineNumber) => {
  return (lineNumber + hunk.lineNumber - 1).toString()
}).join('\n')}</pre></div>
                  <div class="col overflow-scroll">
                    <pre class="mb-0" data-start="${hunk.lineNumber}"><code data-type="before" class="line-numbers language-${languageExtension(hunk.fileName, data.patchInfo.repoName)}">${hunk.beforeText}</code></pre>
                  </div>
                </div>
              </div>
              <div class="diff-right flex-grow-1">
                <span class='font-monospace text-secondary'>After</span>
                <div class="row">
                  <div class="col-auto border-end"><pre class="mb-0">
${lineNumbers(hunk.beforeText).map((lineNumber) => {
  return (lineNumber + hunk.lineNumber - 1).toString()
}).join('\n')}</pre></div>
                  <div class="col overflow-scroll">
                    <pre class="mb-0" data-start="${hunk.lineNumber}"><code data-type="after" class="line-numbers language-${languageExtension(hunk.fileName, data.patchInfo.repoName)}">${hunk.afterText}</code></pre>
                  </div>
                </div>
              </div>
            </div>
          </div>
        `
      }).join('')}
    </div>

    <script>
      const toggleUnifiedMode = (e) => {
        const diffs = document.getElementById('diffs')
        const afterDiffs = document.querySelectorAll('.diff-right')
        if (e.value == "unified") {
          diffs.classList.add("unified")
        }
        else {
          diffs.classList.remove("unified")
        }
      }
    </script>
  `
}