Spaces:
Runtime error
Runtime error
<script lang="ts"> | |
import { nanoid } from "nanoid"; | |
import { createEventDispatcher } from "svelte"; | |
import type { PromptType } from "../types"; | |
import Prompt from "./Prompt.svelte"; | |
import Plus from "./Icons/Plus.svelte"; | |
export let classNames = ""; | |
export let promptsList: PromptType[] = []; | |
export let min: number; | |
export let max: number; | |
export let step: number; | |
function removeConcept(conceptToRemove: PromptType) { | |
promptsList = promptsList.filter( | |
(concept) => concept.id !== conceptToRemove.id | |
); | |
} | |
function addPrompt(negative = false) { | |
promptsList = [ | |
...promptsList, | |
{ | |
id: nanoid(), | |
prompt: "", | |
scale: 1, | |
negative: negative, | |
}, | |
]; | |
} | |
const dispatch = createEventDispatcher(); | |
// $: promptsList, | |
// dispatch("change", promptsList), | |
// dispatch("input", promptsList); | |
</script> | |
<div class="flex items-center gap-1 flex-wrap {classNames}"> | |
{#each promptsList as prompt} | |
<Prompt | |
{min} | |
{max} | |
{step} | |
bind:prompt | |
on:remove={() => removeConcept(prompt)} | |
on:add={() => addPrompt()} | |
/> | |
{/each} | |
<div class="flex flex-col gap-1"> | |
<button | |
title="Add Concept" | |
class="flex items-center text-base text-black hover-text-cyan-500 dark:text-white" | |
on:click={() => addPrompt(false)} | |
><Plus /> | |
<h2 class="text-xs font-normal px-1">Add Prompt</h2> | |
</button> | |
</div> | |
</div> | |
<style scoped> | |
.flex { | |
display: flex; | |
} | |
.items-center { | |
align-items: center; | |
} | |
.gap-1 { | |
gap: 0.25rem; | |
} | |
.flex-wrap { | |
flex-wrap: wrap; | |
} | |
.flex-col { | |
flex-direction: column; | |
} | |
.text-base { | |
font-size: 1rem; | |
line-height: 1.5rem; | |
} | |
.text-black { | |
color: #000; | |
} | |
.hover-text-cyan-500:hover { | |
color: #06b6d4; | |
} | |
@media (prefers-color-scheme: dark) { | |
.dark\:text-white { | |
color: #fff; | |
} | |
} | |
.text-xs { | |
font-size: 0.75rem; | |
line-height: 1rem; | |
} | |
.font-normal { | |
font-weight: 400; | |
} | |
.px-1 { | |
padding-left: 0.25rem; | |
padding-right: 0.25rem; | |
} | |
</style> | |