{{$isTreePathRoot := not .TreeNames}}

{{template "repo/sub_menu" .}}
<div class="repo-button-row">
	<div class="repo-button-row-left">
	{{if not $isTreePathRoot}}
		<button class="repo-view-file-tree-toggle-show ui compact basic button icon not-mobile {{if .UserSettingCodeViewShowFileTree}}tw-hidden{{end}}"
			data-global-click="onRepoViewFileTreeToggle" data-toggle-action="show"
			data-tooltip-content="{{ctx.Locale.Tr "repo.diff.show_file_tree"}}">
			{{svg "octicon-sidebar-collapse"}}
		</button>
	{{end}}

	{{template "repo/branch_dropdown" dict
		"Repository" .Repository
		"ShowTabBranches" true
		"ShowTabTags" true
		"CurrentRefType" .RefFullName.RefType
		"CurrentRefShortName" .RefFullName.ShortName
		"CurrentTreePath" .TreePath
		"RefLinkTemplate" "{RepoLink}/src/{RefType}/{RefShortName}/{TreePath}"
		"AllowCreateNewRef" .CanCreateBranch
		"ShowViewAllRefsEntry" true
	}}

	{{if and .CanCompareOrPull .RefFullName.IsBranch (not .Repository.IsArchived)}}
		{{$cmpBranch := ""}}
		{{if ne .Repository.ID .BaseRepo.ID}}
			{{$cmpBranch = printf "%s/%s:" (.Repository.OwnerName|PathEscape) (.Repository.Name|PathEscape)}}
		{{end}}
		{{$cmpBranch = print $cmpBranch (.BranchName|PathEscapeSegments)}}
		{{$compareLink := printf "%s/compare/%s...%s" .BaseRepo.Link (.BaseRepo.DefaultBranch|PathEscapeSegments) $cmpBranch}}
		<a id="new-pull-request" role="button" class="ui compact basic button" href="{{QueryBuild $compareLink "expand" 1}}"
			data-tooltip-content="{{if .PullRequestCtx.Allowed}}{{ctx.Locale.Tr "repo.pulls.compare_changes"}}{{else}}{{ctx.Locale.Tr "action.compare_branch"}}{{end}}">
			{{svg "octicon-git-pull-request"}}
		</a>
	{{end}}

	<!-- Show go to file if on home page -->
	{{if $isTreePathRoot}}
		<a href="{{.Repository.Link}}/find/{{.RefTypeNameSubURL}}" class="ui compact basic button">{{ctx.Locale.Tr "repo.find_file.go_to_file"}}</a>
	{{end}}

	{{if and .CanWriteCode .RefFullName.IsBranch (not .Repository.IsMirror) (not .Repository.IsArchived) (not .IsViewFile)}}
		<button class="ui dropdown basic compact jump button"{{if not .Repository.CanEnableEditor}} disabled{{end}}>
			{{ctx.Locale.Tr "repo.editor.add_file"}}
			{{svg "octicon-triangle-down" 14 "dropdown icon"}}
			<div class="menu">
				<a class="item" href="{{.RepoLink}}/_new/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
					{{ctx.Locale.Tr "repo.editor.new_file"}}
				</a>
				{{if .RepositoryUploadEnabled}}
				<a class="item" href="{{.RepoLink}}/_upload/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
					{{ctx.Locale.Tr "repo.editor.upload_file"}}
				</a>
				{{end}}
				<a class="item" href="{{.RepoLink}}/_diffpatch/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
					{{ctx.Locale.Tr "repo.editor.patch"}}
				</a>
			</div>
		</button>
	{{end}}

	{{if and $isTreePathRoot .Repository.IsTemplate}}
		<a role="button" class="ui primary compact button" href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}">
			{{ctx.Locale.Tr "repo.use_template"}}
		</a>
	{{end}}

	{{if not $isTreePathRoot}}
		{{$treeNameIdxLast := Eval (len .TreeNames) "-" 1}}
		<span class="breadcrumb repo-path tw-ml-1">
			<a class="section" href="{{.RepoLink}}/src/{{.RefTypeNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a>
			{{- range $i, $v := .TreeNames -}}
				<span class="breadcrumb-divider">/</span>
				{{- if eq $i $treeNameIdxLast -}}
					<span class="active section" title="{{$v}}">{{$v}}</span>
					<button class="btn interact-fg tw-mx-1" data-clipboard-text="{{$.TreePath}}" data-tooltip-content="{{ctx.Locale.Tr "copy_path"}}">{{svg "octicon-copy" 14}}</button>
				{{- else -}}
					{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{$v}}</a></span>
				{{- end -}}
			{{- end -}}
		</span>
	{{end}}
	</div>

	<div class="repo-button-row-right">
		<!-- Only show clone panel in repository home page -->
		{{if $isTreePathRoot}}
			{{template "repo/clone_panel" .}}
		{{end}}
		{{if and (not $isTreePathRoot) (not .IsViewFile) (not .IsBlame)}}{{/* IsViewDirectory (not home), TODO: split the templates, avoid using "if" tricks */}}
			<a class="ui button" href="{{.RepoLink}}/commits/{{.RefTypeNameSubURL}}/{{.TreePath | PathEscapeSegments}}">
				{{svg "octicon-history" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.file_history"}}
			</a>
		{{end}}
	</div>
</div>
{{if .IsViewFile}}
	{{template "repo/view_file" .}}
{{else if .IsBlame}}
	{{template "repo/blame" .}}
{{else}}{{/* IsViewDirectory */}}
	{{if $isTreePathRoot}}
		{{template "repo/code/upstream_diverging_info" .}}
	{{end}}
	{{template "repo/view_list" .}}
	{{if and .ReadmeExist (or .IsMarkup .IsPlainText)}}
		{{template "repo/view_file" .}}
	{{end}}
{{end}}
