{{if not .DiffNotAvailable}}
{{svg "octicon-diff" 16 "gt-mr-2"}}{{.locale.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}}
{{end}}
{{if and .PageIsPullFiles $.SignedUserID (not .IsArchived) (not .DiffNotAvailable)}}
{{end}} {{template "repo/diff/whitespace_dropdown" .}} {{template "repo/diff/options_dropdown" .}} {{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}} {{template "repo/diff/new_review" .}} {{end}}
{{if not .DiffNotAvailable}}
{{end}}
{{if .DiffNotAvailable}}

{{.locale.Tr "repo.diff.data_not_available"}}

{{else}}
{{range $i, $file := .Diff.Files}} {{/*notice: the index of Diff.Files should not be used for element ID, because the index will be restarted from 0 when doing load-more for PRs with a lot of files*/}} {{$blobBase := call $.GetBlobByPathForCommit $.BeforeCommit $file.OldName}} {{$blobHead := call $.GetBlobByPathForCommit $.HeadCommit $file.Name}} {{$isImage := or (call $.IsBlobAnImage $blobBase) (call $.IsBlobAnImage $blobHead)}} {{$isCsv := (call $.IsCsvFile $file)}} {{$showFileViewToggle := or $isImage (and (not $file.IsIncomplete) $isCsv)}} {{$isExpandable := or (gt $file.Addition 0) (gt $file.Deletion 0) $file.IsBin}} {{$isReviewFile := and $.IsSigned $.PageIsPullFiles (not $.IsArchived)}}

{{if $file.IsBin}} {{$.locale.Tr "repo.diff.bin"}} {{else}} {{template "repo/diff/stats" dict "file" . "root" $}} {{end}}
{{if $file.IsRenamed}}{{$file.OldName}} → {{end}}{{$file.Name}}{{if .IsLFSFile}} ({{$.locale.Tr "repo.stored_lfs"}}){{end}} {{if $file.IsGenerated}} {{$.locale.Tr "repo.diff.generated"}} {{end}} {{if $file.IsVendored}} {{$.locale.Tr "repo.diff.vendored"}} {{end}} {{if and $file.Mode $file.OldMode}} {{$old := $.locale.Tr ($file.ModeTranslationKey $file.OldMode)}} {{$new := $.locale.Tr ($file.ModeTranslationKey $file.Mode)}} {{$.locale.Tr "git.filemode.changed_filemode" $old $new}} {{else if $file.Mode}} {{$.locale.Tr ($file.ModeTranslationKey $file.Mode)}} {{end}}
{{if $showFileViewToggle}}
{{end}} {{if $file.IsProtected}} {{$.locale.Tr "repo.diff.protected"}} {{end}} {{if and $isReviewFile $file.HasChangedSinceLastReview}} {{$.locale.Tr "repo.pulls.has_changed_since_last_review"}} {{end}} {{if not (or $file.IsIncomplete $file.IsBin $file.IsSubmodule)}} {{end}} {{if and (not $file.IsSubmodule) (not $.PageIsWiki)}} {{if $file.IsDeleted}} {{$.locale.Tr "repo.diff.view_file"}} {{else}} {{$.locale.Tr "repo.diff.view_file"}} {{end}} {{end}} {{if $isReviewFile}} {{end}}

{{if or $file.IsIncomplete $file.IsBin}}
{{if $file.IsIncomplete}} {{if $file.IsIncompleteLineTooLong}} {{$.locale.Tr "repo.diff.file_suppressed_line_too_long"}} {{else}} {{$.locale.Tr "repo.diff.file_suppressed"}} {{$.locale.Tr "repo.diff.load"}} {{end}} {{else}} {{$.locale.Tr "repo.diff.bin_not_shown"}} {{end}}
{{else}} {{if $.IsSplitStyle}} {{template "repo/diff/section_split" dict "file" . "root" $}} {{else}} {{template "repo/diff/section_unified" dict "file" . "root" $}} {{end}}
{{end}}
{{if $showFileViewToggle}} {{/* for image or CSV, it can have a horizontal scroll bar, there won't be review comment context menu (position absolute) which would be clipped by "overflow" */}}
{{if $isImage}} {{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}} {{else}} {{template "repo/diff/csv_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}} {{end}}
{{end}}
{{end}} {{if .Diff.IsIncomplete}}

{{$.locale.Tr "repo.diff.too_many_files"}} {{.locale.Tr "repo.diff.show_more"}}

{{end}}
{{end}}
{{if and (not $.Repository.IsArchived) (not .DiffNotAvailable)}} {{end}} {{if (not .DiffNotAvailable)}} {{template "repo/issue/view_content/reference_issue_dialog" .}} {{end}}