this repo has no description
1{{ define "repo/fragments/diff" }} 2{{ $repo := index . 0 }} 3{{ $diff := index . 1 }} 4{{ $commit := $diff.Commit }} 5{{ $diff := $diff.Diff }} 6{{ $this := $commit.This }} 7{{ $parent := $commit.Parent }} 8 9 {{ $last := sub (len $diff) 1 }} 10 {{ range $idx, $hunk := $diff }} 11 {{ with $hunk }} 12 <section class="mt-4 border border-gray-200 dark:border-gray-700 w-full mx-auto rounded bg-white dark:bg-gray-800 drop-shadow-sm"> 13 <div id="file-{{ .Name.New }}"> 14 <div id="diff-file"> 15 <details open> 16 <summary class="list-none cursor-pointer sticky top-0"> 17 <div id="diff-file-header" class="rounded cursor-pointer bg-white dark:bg-gray-800 flex justify-between"> 18 <div id="left-side-items" class="p-2 flex gap-2 items-center overflow-x-auto"> 19 <div class="flex gap-1 items-center"> 20 {{ $markerstyle := "diff-type p-1 mr-1 font-mono text-sm rounded select-none" }} 21 {{ if .IsNew }} 22 <span class="bg-green-100 text-green-700 dark:bg-green-800/50 dark:text-green-400 {{ $markerstyle }}">ADDED</span> 23 {{ else if .IsDelete }} 24 <span class="bg-red-100 text-red-700 dark:bg-red-800/50 dark:text-red-400 {{ $markerstyle }}">DELETED</span> 25 {{ else if .IsCopy }} 26 <span class="bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 {{ $markerstyle }}">COPIED</span> 27 {{ else if .IsRename }} 28 <span class="bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 {{ $markerstyle }}">RENAMED</span> 29 {{ else }} 30 <span class="bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 {{ $markerstyle }}">MODIFIED</span> 31 {{ end }} 32 33 {{ template "repo/fragments/diffStatPill" .Stats }} 34 </div> 35 36 <div class="flex gap-2 items-center overflow-x-auto"> 37 {{ if .IsDelete }} 38 <a class="dark:text-white whitespace-nowrap overflow-x-auto" {{if $this }}href="/{{ $repo }}/blob/{{ $this }}/{{ .Name.Old }}"{{end}}> 39 {{ .Name.Old }} 40 </a> 41 {{ else if (or .IsCopy .IsRename) }} 42 <a class="dark:text-white whitespace-nowrap overflow-x-auto" {{if $parent}}href="/{{ $repo }}/blob/{{ $parent }}/{{ .Name.Old }}"{{end}}> 43 {{ .Name.Old }} 44 </a> 45 {{ i "arrow-right" "w-4 h-4" }} 46 <a class="dark:text-white whitespace-nowrap overflow-x-auto" {{if $this}}href="/{{ $repo }}/blob/{{ $this }}/{{ .Name.New }}"{{end}}> 47 {{ .Name.New }} 48 </a> 49 {{ else }} 50 <a class="dark:text-white whitespace-nowrap overflow-x-auto" {{if $this}}href="/{{ $repo }}/blob/{{ $this }}/{{ .Name.New }}"{{end}}> 51 {{ .Name.New }} 52 </a> 53 {{ end }} 54 </div> 55 </div> 56 57 {{ $iconstyle := "p-1 mx-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded" }} 58 <div id="right-side-items" class="p-2 flex items-center"> 59 <a title="top of file" href="#file-{{ .Name.New }}" class="{{ $iconstyle }}">{{ i "arrow-up-to-line" "w-4 h-4" }}</a> 60 {{ if gt $idx 0 }} 61 {{ $prev := index $diff (sub $idx 1) }} 62 <a title="previous file" href="#file-{{ $prev.Name.New }}" class="{{ $iconstyle }}">{{ i "arrow-up" "w-4 h-4" }}</a> 63 {{ end }} 64 65 {{ if lt $idx $last }} 66 {{ $next := index $diff (add $idx 1) }} 67 <a title="next file" href="#file-{{ $next.Name.New }}" class="{{ $iconstyle }}">{{ i "arrow-down" "w-4 h-4" }}</a> 68 {{ end }} 69 </div> 70 71 </div> 72 </summary> 73 74 <div class="transition-all duration-700 ease-in-out"> 75 {{ if .IsDelete }} 76 <p class="text-center text-gray-400 dark:text-gray-500 p-4"> 77 This file has been deleted. 78 </p> 79 {{ else if .IsCopy }} 80 <p class="text-center text-gray-400 dark:text-gray-500 p-4"> 81 This file has been copied. 82 </p> 83 {{ else if .IsBinary }} 84 <p class="text-center text-gray-400 dark:text-gray-500 p-4"> 85 This is a binary file and will not be displayed. 86 </p> 87 {{ else }} 88 {{ $name := .Name.New }} 89 <pre class="overflow-x-auto"><div class="overflow-x-auto"><div class="min-w-full inline-block">{{- range .TextFragments -}}<div class="bg-gray-100 dark:bg-gray-700 text-gray-500 dark:text-gray-400 select-none text-center">&middot;&middot;&middot;</div> 90 {{- $oldStart := .OldPosition -}} 91 {{- $newStart := .NewPosition -}} 92 {{- $lineNrStyle := "min-w-[3.5rem] flex-shrink-0 select-none text-right bg-white dark:bg-gray-800 scroll-mt-10 target:border target:border-amber-500 target:rounded " -}} 93 {{- $linkStyle := "text-gray-400 dark:text-gray-500 hover:underline" -}} 94 {{- $lineNrSepStyle1 := "" -}} 95 {{- $lineNrSepStyle2 := "pr-2" -}} 96 {{- range .Lines -}} 97 {{- if eq .Op.String "+" -}} 98 <div class="bg-green-100 dark:bg-green-800/30 text-green-700 dark:text-green-400 flex min-w-full items-center"> 99 <div class="{{$lineNrStyle}} {{$lineNrSepStyle1}}"><span aria-hidden="true" class="invisible">{{$newStart}}</span></div> 100 <div class="{{$lineNrStyle}} {{$lineNrSepStyle2}}" id="{{$name}}-N{{$newStart}}"><a class="{{$linkStyle}}" href="#{{$name}}-N{{$newStart}}">{{ $newStart }}</a></div> 101 <div class="w-5 flex-shrink-0 select-none text-center">{{ .Op.String }}</div> 102 <div class="px-2">{{ .Line }}</div> 103 </div> 104 {{- $newStart = add64 $newStart 1 -}} 105 {{- end -}} 106 {{- if eq .Op.String "-" -}} 107 <div class="bg-red-100 dark:bg-red-800/30 text-red-700 dark:text-red-400 flex min-w-full items-center"> 108 <div class="{{$lineNrStyle}} {{$lineNrSepStyle1}}" id="{{$name}}-O{{$oldStart}}"><a class="{{$linkStyle}}" href="#{{$name}}-O{{$oldStart}}">{{ $oldStart }}</a></div> 109 <div class="{{$lineNrStyle}} {{$lineNrSepStyle2}}"><span aria-hidden="true" class="invisible">{{$oldStart}}</span></div> 110 <div class="w-5 flex-shrink-0 select-none text-center">{{ .Op.String }}</div> 111 <div class="px-2">{{ .Line }}</div> 112 </div> 113 {{- $oldStart = add64 $oldStart 1 -}} 114 {{- end -}} 115 {{- if eq .Op.String " " -}} 116 <div class="bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 flex min-w-full items-center"> 117 <div class="{{$lineNrStyle}} {{$lineNrSepStyle1}}" id="{{$name}}-O{{$oldStart}}"><a class="{{$linkStyle}}" href="#{{$name}}-O{{$oldStart}}">{{ $oldStart }}</a></div> 118 <div class="{{$lineNrStyle}} {{$lineNrSepStyle2}}" id="{{$name}}-N{{$newStart}}"><a class="{{$linkStyle}}" href="#{{$name}}-N{{$newStart}}">{{ $newStart }}</a></div> 119 <div class="w-5 flex-shrink-0 select-none text-center">{{ .Op.String }}</div> 120 <div class="px-2">{{ .Line }}</div> 121 </div> 122 {{- $newStart = add64 $newStart 1 -}} 123 {{- $oldStart = add64 $oldStart 1 -}} 124 {{- end -}} 125 {{- end -}} 126 {{- end -}}</div></div></pre> 127 {{- end -}} 128 </div> 129 130 </details> 131 132 </div> 133 </div> 134 </section> 135 {{ end }} 136 {{ end }} 137{{ end }} 138 139{{ define "statPill" }} 140 <div class="flex items-center font-mono text-sm"> 141 {{ if and .Insertions .Deletions }} 142 <span class="rounded-l p-1 select-none bg-green-100 text-green-700 dark:bg-green-800/50 dark:text-green-400">+{{ .Insertions }}</span> 143 <span class="rounded-r p-1 select-none bg-red-100 text-red-700 dark:bg-red-800/50 dark:text-red-400">-{{ .Deletions }}</span> 144 {{ else if .Insertions }} 145 <span class="rounded p-1 select-none bg-green-100 text-green-700 dark:bg-green-800/50 dark:text-green-400">+{{ .Insertions }}</span> 146 {{ else if .Deletions }} 147 <span class="rounded p-1 select-none bg-red-100 text-red-700 dark:bg-red-800/50 dark:text-red-400">-{{ .Deletions }}</span> 148 {{ end }} 149 </div> 150{{ end }}