blob: 11489b1290c04154e95c8e5c9f335be52847272c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<script lang="ts">
import { Selector } from '../Scraper.svelte';
import SelectorButton from './SelectorButton.svelte';
interface Props {
title: string;
selectors: Selector<string>[];
}
let { title, selectors = $bindable() }: Props = $props();
function invert() {
for (let selector of selectors) {
selector.keep = !selector.keep;
}
selectors = selectors;
}
</script>
{#if selectors.length > 0}
<div class="group col-span-6 flex flex-col gap-1">
<div class="flex gap-2">
<h2>{title}</h2>
<button
type="button"
class="flex items-end opacity-75 brightness-75 transition-opacity hover:opacity-100 hover:brightness-110 focus-visible:opacity-100"
onclick={invert}
title="Invert selection"
aria-label="Invert selection"
>
<span class="icon-xs icon-[material-symbols--compare-arrows]"></span>
</button>
</div>
<div class="flex flex-wrap gap-y-1">
{#each selectors as selector}
<SelectorButton {selector} />
{/each}
</div>
</div>
{/if}
|