Skip to content

Commit 0a7b45c

Browse files
authored
Merge pull request #9 from humanspeak/feature-initial
Enhancement: Updated Readme
2 parents c6f3d30 + 3dd4efb commit 0a7b45c

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

README.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,70 @@ import type {
128128
| onProcessing | `function` | - | Callback for timing and diff information |
129129
| rendererClasses | `object` | - | CSS classes for diff highlighting |
130130

131+
## Custom Rendering with Snippets
132+
133+
You can customize how the diff is rendered using Svelte snippets. This gives you full control over the HTML structure and styling of each diff part.
134+
135+
```svelte
136+
<script lang="ts">
137+
import SvelteDiffMatchPatch from '@humanspeak/svelte-diff-match-patch'
138+
139+
let originalText = $state(`I am the very model of a modern Major-General,
140+
I've information vegetable, animal, and mineral,
141+
I know the kings of England, and I quote the fights historical,
142+
From Marathon to Waterloo, in order categorical.`)
143+
144+
let modifiedText = $state(`I am the very model of a cartoon individual,
145+
My animation's comical, unusual, and whimsical,
146+
I'm quite adept at funny gags, comedic theory I have read,
147+
From wicked puns and stupid jokes to anvils that drop on your head.`)
148+
</script>
149+
150+
<SvelteDiffMatchPatch {originalText} {modifiedText}>
151+
{#snippet remove(text: string)}
152+
<span class="diff-snippet-remove">{text}</span>
153+
{/snippet}
154+
{#snippet insert(text: string)}
155+
<span class="diff-snippet-insert">{text}</span>
156+
{/snippet}
157+
{#snippet equal(text: string)}
158+
<span class="diff-snippet-equal">{text}</span>
159+
{/snippet}
160+
{#snippet lineBreak()}
161+
<br /><br />
162+
{/snippet}
163+
</SvelteDiffMatchPatch>
164+
165+
<style>
166+
:global(.diff-snippet-remove) {
167+
background-color: #ffd7d5;
168+
text-decoration: line-through;
169+
}
170+
:global(.diff-snippet-insert) {
171+
background-color: #d4ffd4;
172+
}
173+
</style>
174+
```
175+
176+
### Available Snippets
177+
178+
| Snippet | Parameters | Description |
179+
| --------- | ---------- | -------------------------------------------- |
180+
| remove | `text` | Renders removed text (in originalText only) |
181+
| insert | `text` | Renders inserted text (in modifiedText only) |
182+
| equal | `text` | Renders unchanged text (in both texts) |
183+
| lineBreak | - | Renders line breaks between diff sections |
184+
185+
You can use these snippets to:
186+
187+
- Customize the HTML structure of each diff part
188+
- Apply custom styling to different types of changes
189+
- Add additional elements or attributes
190+
- Implement custom animations or transitions
191+
- Add tooltips or other interactive elements
192+
193+
If you don't provide snippets, the component will use the default rendering with the `rendererClasses` prop.
194+
131195
## Events
132196

133197
The component emits a `processing` event with timing and diff information:

0 commit comments

Comments
 (0)