~ knotless Search/
↑↓ move↵ open⇧↵ all results

johnandersen777.bsky.social/knotless

git that lives in your Atmosphere account

Forked from chadtmiller.com/knotless

0
0
52 lines · 1.5 KB Raw History
<script lang="ts">
	import { isMarkdown, plural, repoHref, urlPath } from '#lib/format.ts';
	import Icon from '#lib/atoms/Icon.svelte';
	import FileViews from '#lib/molecules/FileViews.svelte';
	import BlameView from '#lib/organisms/BlameView.svelte';
	import Toolbar from '#lib/organisms/Toolbar.svelte';
	import RepoPage from '#lib/templates/RepoPage.svelte';
	let { data } = $props();
	const b = $derived(data.blame);
	const r = $derived(data.repo);
	const at = (view: string) =>
		repoHref(data.authority, r.name, `/${view}/${urlPath(b.ref)}/${urlPath(b.path)}`);
	const markdown = $derived(isMarkdown(b.path));
</script>

<RepoPage repo={r} tab="code" title="Blame · {b.path} · {r.name}">
	<Toolbar
		authority={data.authority}
		name={r.name}
		rev={b.ref}
		view="blame"
		path={b.path}
		branches={data.branches}
		head={r.defaultBranch}
		tags={data.tags}
	/>
	<div class="box">
		<div class="boxhead">
			<FileViews
				preview={markdown ? at('blob') : undefined}
				code={markdown ? `${at('blob')}?plain=1` : at('blob')}
				blame={at('blame')}
				current="blame"
			/>
			<span class="mute"
				>{`${plural(b.lines, 'line', 'lines')} · ${plural(b.commits.length, 'commit', 'commits')}`}</span
			>
			<span class="end"></span>
			<a class="btn" href={at('raw')} data-sveltekit-reload>Raw</a>
			<a class="btn" href={at('commits')}><Icon name="history" />History</a>
		</div>
		<BlameView
			authority={data.authority}
			name={r.name}
			text={b.text}
			lines={b.lines}
			ranges={b.ranges}
			hunks={b.hunks}
			commits={b.commits}
		/>
	</div>
</RepoPage>