MCPcopy Create free account
hub / github.com/AlexErrant/Pentive / Diff

Function Diff

app/src/components/diff.tsx:5–36  ·  view source on GitHub ↗
(props: {
	title: string
	before: T | undefined
	after: T | undefined
	toChanges: (before?: T, after?: T) => Change[]
})

Source from the content-addressed store, hash-verified

3import { throwExp } from 'shared/utility'
4
5export default function Diff<T>(props: {
6 title: string
7 before: T | undefined
8 after: T | undefined
9 toChanges: (before?: T, after?: T) => Change[]
10}): JSX.Element {
11 return (
12 <Show when={props.before !== props.after && props.before != null}>
13 <fieldset class='border-black border p-1'>
14 <legend>
15 <span class='p-2 px-4 font-bold'>{props.title}</span>
16 </legend>
17 {props.before == null || props.after == null ? (
18 <>{props.after ?? props.before ?? throwExp()}</>
19 ) : (
20 <For each={props.toChanges(props.before, props.after)}>
21 {({ added, removed, value }) => (
22 <span
23 classList={{
24 'text-red-500': removed,
25 'text-green-500': added,
26 }}
27 >
28 {value}
29 </span>
30 )}
31 </For>
32 )}
33 </fieldset>
34 </Show>
35 )
36}

Callers

nothing calls this directly

Calls 1

throwExpFunction · 0.90

Tested by

no test coverage detected