40 lines
990 B
Svelte
40 lines
990 B
Svelte
<script lang="ts">
|
|
import type { ScriptLineEditable } from "$lib/models/script";
|
|
import ScriptBlock from "./ScriptBlock.svelte";
|
|
import ScriptLine from "./ScriptLine.svelte";
|
|
|
|
export let label: string;
|
|
export let value: ScriptLineEditable[];
|
|
export let add: boolean = false;
|
|
|
|
function moveUp(i: number) {
|
|
value = [...value];
|
|
const temp = value[i];
|
|
value[i] = value[i - 1];
|
|
value[i - 1] = temp;
|
|
}
|
|
|
|
function moveDown(i: number) {
|
|
value = [...value];
|
|
const temp = value[i];
|
|
value[i] = value[i + 1];
|
|
value[i + 1] = temp;
|
|
}
|
|
|
|
function deleteLine(i: number) {
|
|
value = [...value.slice(0, i), ...value.slice(i + 1)];
|
|
}
|
|
</script>
|
|
|
|
<ScriptBlock on:add add={add} label={label}>
|
|
{#each value as line, i}
|
|
<ScriptLine
|
|
first={i === 0}
|
|
last={i === value.length - 1}
|
|
bind:value={line}
|
|
on:up={() => moveUp(i)}
|
|
on:down={() => moveDown(i)}
|
|
on:delete={() => deleteLine(i)}
|
|
/>
|
|
{/each}
|
|
</ScriptBlock> |