<script lang="ts">
	import { getSelectionContext } from '$lib/Selection';

	export let id: number;
	export let index: number;

	export let edit: ((id: number) => void) | undefined = undefined;

	const selection = getSelectionContext();

	$: selected = $selection.contains(id);

	const handle = (event: MouseEvent) => {
		if ($selection.active) {
			$selection = $selection.update(index, event.shiftKey);
			event.preventDefault();
		} else if (edit) {
			edit(id);
			event.preventDefault();
		}
	};
</script>

<slot {handle} {selected} />
