Something went wrong. Try again.
opencode v2 mirror
Something went wrong. Try again.
1.1 kB · 33 lines
TSX
12345678910111213141516171819202122232425262728293031323334import { createMemo, Show } from "solid-js"import "./diff-changes.css"
export function DiffChanges(props: { class?: string appearance?: "standard" | "compact" changes: { additions: number; deletions: number } | { additions: number; deletions: number }[]}) { const additions = createMemo(() => Array.isArray(props.changes) ? props.changes.reduce((acc, diff) => acc + (diff.additions ?? 0), 0) : props.changes.additions, ) const deletions = createMemo(() => Array.isArray(props.changes) ? props.changes.reduce((acc, diff) => acc + (diff.deletions ?? 0), 0) : props.changes.deletions, ) const total = createMemo(() => (additions() ?? 0) + (deletions() ?? 0))
return ( <Show when={total() > 0}> <div data-component="diff-changes" data-appearance={props.appearance ?? "compact"} classList={{ [props.class ?? ""]: true }} > <span data-slot="diff-changes-additions">{`+${additions()}`}</span> <span data-slot="diff-changes-deletions">{`-${deletions()}`}</span> </div> </Show> )}