Files
ep-133-project-export/src/routes/home/Export/exportFormSchema.ts

46 lines
1.1 KiB
TypeScript
Raw Normal View History

2026-07-13 04:39:10 +02:00
import { z } from 'zod';
import { ExportFormatId, PadCode } from '../../../types/types';
2026-07-13 04:39:10 +02:00
const FORMAT_IDS: [ExportFormatId, ...ExportFormatId[]] = [
'ableton',
'dawproject',
'midi',
'reaper',
];
export const exportFormSchema = z.object({
format: z.enum(FORMAT_IDS),
abletonVersion: z.enum(['10', '11']),
abletonOneShotPads: z.array(
z.custom<PadCode>((value) => typeof value === 'string' && /^[abcd]\d+$/.test(value)),
),
2026-07-13 04:39:10 +02:00
projectName: z.string(),
includeArchivedSamples: z.boolean(),
exportAllPadsWithSamples: z.boolean(),
clips: z.boolean(),
groupTracks: z.boolean(),
drumRackGroupA: z.boolean(),
drumRackGroupB: z.boolean(),
drumRackGroupC: z.boolean(),
drumRackGroupD: z.boolean(),
sendEffects: z.boolean(),
allScenes: z.boolean(),
selectedScenes: z.array(z.string()),
});
export type ExportFormValues = z.infer<typeof exportFormSchema>;
export const PERSISTED_FIELDS: (keyof ExportFormValues)[] = [
'format',
'abletonVersion',
2026-07-13 04:39:10 +02:00
'includeArchivedSamples',
'exportAllPadsWithSamples',
'clips',
'groupTracks',
'drumRackGroupA',
'drumRackGroupB',
'drumRackGroupC',
'drumRackGroupD',
'sendEffects',
];