Files snapshot from mithril-server-side-rendering
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
103
104
105
106
107
108
109
110
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
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
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
5428c7 Tucker McKnight
5428c7 Tucker McKnight
5428c7 Tucker McKnight
5428c7 Tucker McKnight
5428c7 Tucker McKnight
7d2ffa Tucker McKnight
f8e00d Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
5428c7 Tucker McKnight
5428c7 Tucker McKnight
7d2ffa Tucker McKnight
5428c7 Tucker McKnight
5428c7 Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
5428c7 Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
7d2ffa Tucker McKnight
be0819 Tucker McKnight
import m from 'mithril'
import render from 'mithril-node-render'
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 render([
m('div', {class: "row"},
m('div', {class: "col-auto"},
m('div', {class: "bezel-secondary px-3 py-2"}, [
m('h1', {class: "fs-2"}, data.patchInfo.commit.message.split('\n')[0]),
m('div', {class: "input-group mb-2 flex-nowrap"}, [
m('span', {class: "font-monospace input-group-text border-info text-white text-bg-dark overflow-scroll"}, data.patchInfo.commit.hash),
m('button', {'data-copy-text': data.patchInfo.commit.hash, class: "btn btn-info shadow-none copy-button"}, 'Copy')
]),
m('p', `${data.patchInfo.commit.author} | ${date(data.patchInfo.commit.date)}`),
m('pre', {class: "mb-0"}, data.patchInfo.commit.message)
])
)
),
m('div', {class: "row my-4"},
m('div', {class: "col-auto"}, [
m('div', {class: "form-check"}, [
m('input', {
class: "form-check-input",
type: "radio",
name: "unified",
id: "splitModeSwitch",
value: "split",
onchange: "toggleUnifiedMode(this)",
checked: true,
}),
m('label', {class: "form-check-label", for: "splitModeSwitch"}, 'Side-by-side'),
]),
m('div', {class: "form-check"}, [
m('input', {
class: "form-check-input",
type: "radio",
name: "unified",
id: "unifiedModeSwitch",
value: "unified",
onchange: "toggleUnifiedMode(this)",
}),
m('label', {class: "form-check-label", for: "unifiedModeSwitch"}, 'Stacked')
])
])
),
m('div', {class: "row", id: "diffs"}, data.patchInfo.commit.diffs.map((hunk) => {
return m('div', {class: 'hunk'}, [
m('span', {class: "font-monospace fw-bold"},
m('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}`)
),
m('div', {class: "diff d-flex"}, [
m('div', {class: "flex-grow-1 diff-left pe-2"}, [
m('span', {class: 'font-monospace text-secondary'}, 'Before'),
m('div', {class: "row"}, [
m('div', {class: "col-auto border-end"},
m('pre', {class: "mb-0"}, lineNumbers(hunk.beforeText).map((lineNumber) => {
return (lineNumber + hunk.lineNumber - 1).toString()
}).join('\n'))
),
m('div', {class: "col overflow-scroll"},
m('pre', {class: "mb-0", 'data-start': hunk.lineNumber}, m('code', {'data-type': 'before', class: `code-diff line-numbers language-${languageExtension(hunk.fileName, data.patchInfo.repoName)}`}, m.trust(hunk.beforeText)))
)
])
]),
m('div', {class: "diff-right flex-grow-1"}, [
m('span', {class: 'font-monospace text-secondary'}, 'After'),
m('div', {class: "row"},
m('div', {class: "col-auto border-end"},
m('pre', {class: "mb-0"}, lineNumbers(hunk.beforeText).map((lineNumber) => {
return (lineNumber + hunk.lineNumber - 1).toString()
}).join('\n'))
),
m('div', {class: "col overflow-scroll"},
m('pre', {class: "mb-0", 'data-start': hunk.lineNumber},
m('code', {'data-type': "after", class: `line-numbers language-${languageExtension(hunk.fileName, data.patchInfo.repoName)}`}, m.trust(hunk.afterText))
)
)
)
])
])
])
})),
m('script', m.trust(`
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")
}
}
`)
)
])
}