{{$isTreePathRoot := not .TreeNames}}

<div class="repo-view-content-data tw-hidden" data-document-title="{{ctx.RootData.Title}}" data-document-title-common="{{ctx.RootData.PageTitleCommon}}"></div>
{{template "repo/sub_menu" .}}
<div class="repo-button-row">
	<div class="repo-button-row-left">
	{{if not $isTreePathRoot}}
		{{template "repo/view_file_tree_toggle_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 .PullRequestCtx.CanCreateNewPull .RefFullName.IsBranch}}
		{{$compareLink := .PullRequestCtx.MakeDefaultCompareLink .BranchName}}
		<a id="new-pull-request" role="button" class="ui compact basic button" href="{{QueryBuild $compareLink "expand" 1}}"
			data-tooltip-content="{{ctx.Locale.Tr "repo.pulls.compare_changes"}}">
			{{svg "octicon-git-pull-request"}}
		</a>
	{{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">
			<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">
		<div class="repo-file-search-container"
				data-global-init="initRepoFileSearch"
				data-repo-link="{{.RepoLink}}"
				data-current-ref-name-sub-url="{{.RefTypeNameSubURL}}"
				data-tree-list-url="{{.RepoLink}}/tree-list/{{.RefTypeNameSubURL}}"
				data-no-results-text="{{ctx.Locale.Tr "repo.find_file.no_matching"}}"
				data-placeholder="{{ctx.Locale.Tr "repo.find_file.go_to_file"}}"
		><div class="ui small input global-shortcut-wrapper"><input placeholder="{{ctx.Locale.Tr "repo.find_file.go_to_file"}}"><kbd>T</kbd></div></div>

		{{if .RefFullName.IsBranch}}
			{{$addFilePath := .TreePath}}
			{{if .IsViewFile}}
				{{if gt (len .TreeNames) 1}}
					{{$addFilePath = StringUtils.Join (slice .TreeNames 0 (Eval (len .TreeNames) "-" 1)) "/"}}
				{{else}}
					{{$addFilePath = ""}}
				{{end}}
			{{end}}
			<button class="ui dropdown basic compact jump button repo-add-file" {{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}}/{{$addFilePath | PathEscapeSegments}}">
						{{svg "octicon-file-added" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.editor.new_file"}}
					</a>
					{{if .RepositoryUploadEnabled}}
					<a class="item" href="{{.RepoLink}}/_upload/{{.BranchName | PathEscapeSegments}}/{{$addFilePath | PathEscapeSegments}}">
						{{svg "octicon-upload" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.editor.upload_file"}}
					</a>
					{{end}}
					<a class="item" href="{{.RepoLink}}/_diffpatch/{{.BranchName | PathEscapeSegments}}/{{$addFilePath | PathEscapeSegments}}">
						{{svg "octicon-diff" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.editor.patch"}}
					</a>
				</div>
			</button>

			{{if and (not .IsViewFile) (not $isTreePathRoot)}}
			<button class="ui dropdown basic compact jump button tw-px-3" data-tooltip-content="{{ctx.Locale.Tr "repo.more_operations"}}">
				{{svg "octicon-kebab-horizontal"}}
				<div class="menu">
					<a class="item" data-clipboard-text="{{ctx.AppFullLink}}{{.Repository.Link}}/src/commit/{{.CommitID}}/{{PathEscapeSegments .TreePath}}">
						{{svg "octicon-link" 16}}{{ctx.Locale.Tr "repo.file_copy_permalink"}}
					</a>
					{{if and (not $.DisableDownloadSourceArchives) $.RefFullName}}
						<div class="divider"></div>
						<a class="item muted archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefFullName.ShortName}}.zip?path={{PathEscapeSegments .TreePath}}" rel="nofollow">{{svg "octicon-file-zip"}}{{ctx.Locale.Tr "repo.download_directory_as" "ZIP"}}</a>
						<a class="item muted archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefFullName.ShortName}}.tar.gz?path={{PathEscapeSegments .TreePath}}" rel="nofollow">{{svg "octicon-file-zip"}}{{ctx.Locale.Tr "repo.download_directory_as" "TAR.GZ"}}</a>
					{{end}}
					{{if and .Repository.CanContentChange (not $isTreePathRoot)}}
						<div class="divider"></div>
						<a class="item tw-text-danger" href="{{.RepoLink}}/_delete/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
							{{svg "octicon-trash" 16}}{{ctx.Locale.Tr "repo.editor.delete_this_directory"}}
						</a>
					{{end}}
				</div>
			</button>
			{{end}}
		{{end}}
		<!-- 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 compact button" href="{{.RepoLink}}/commits/{{.RefTypeNameSubURL}}/{{.TreePath | PathEscapeSegments}}">
				{{svg "octicon-history"}}{{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 .RenderAsMarkup .IsPlainText)}}
		{{template "repo/view_file" .}}
	{{end}}
{{end}}
