diff --git a/src/lib/types/models.ts b/src/lib/types/models.ts index 0586744..e0e334e 100644 --- a/src/lib/types/models.ts +++ b/src/lib/types/models.ts @@ -12,3 +12,14 @@ export const ModelChoices: Option[] = [ { label: 'Flux', value: 'flux' }, { label: 'Flux 2', value: 'flux2' }, ] + +export type LoRATypes = 'char' | 'clothing' | 'style' | 'concept' | 'scene' | 'other'; + +export const LoRATypeChoices: Option[] = [ + { label: 'Character', value: 'char' }, + { label: 'Clothing', value: 'clothing' }, + { label: 'Style', value: 'style' }, + { label: 'Concept', value: 'concept' }, + { label: 'Scene', value: 'scene' }, + { label: 'Other', value: 'other' }, +] diff --git a/src/lib/utils/form-save.ts b/src/lib/utils/form-save.ts new file mode 100644 index 0000000..d735f65 --- /dev/null +++ b/src/lib/utils/form-save.ts @@ -0,0 +1,55 @@ +export type SaveFeedbackState = 'idle' | 'updated' | 'not-updated'; + +export function createSaveFeedbackController( + setState: (state: SaveFeedbackState) => void, + resetDelayMs = 2000, +) { + let feedbackTimer: ReturnType | null = null; + + const resetLater = () => { + if (feedbackTimer) { + clearTimeout(feedbackTimer); + } + + feedbackTimer = setTimeout(() => { + setState('idle'); + }, resetDelayMs); + }; + + return { + markUpdated() { + setState('updated'); + resetLater(); + }, + markNotUpdated() { + setState('not-updated'); + resetLater(); + }, + dispose() { + if (feedbackTimer) { + clearTimeout(feedbackTimer); + } + }, + }; +} + +export function createDebouncedTrigger(callback: () => void, delayMs: number) { + let timer: ReturnType | null = null; + + return { + trigger() { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(() => { + callback(); + }, delayMs); + }, + cancel() { + if (timer) { + clearTimeout(timer); + } + }, + }; +} diff --git a/src/routes/dataset/meta-form/DatasetName.svelte b/src/routes/dataset/meta-form/DatasetName.svelte index 6ceec5a..720f90b 100644 --- a/src/routes/dataset/meta-form/DatasetName.svelte +++ b/src/routes/dataset/meta-form/DatasetName.svelte @@ -1,16 +1,65 @@ -