43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
import { z } from 'zod';
|
|
import { ExportFormatId } from '../../../types/types';
|
|
|
|
const FORMAT_IDS: [ExportFormatId, ...ExportFormatId[]] = [
|
|
'ableton',
|
|
'dawproject',
|
|
'midi',
|
|
'reaper',
|
|
];
|
|
|
|
export const exportFormSchema = z.object({
|
|
format: z.enum(FORMAT_IDS),
|
|
abletonVersion: z.enum(['10', '11']),
|
|
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',
|
|
'includeArchivedSamples',
|
|
'exportAllPadsWithSamples',
|
|
'clips',
|
|
'groupTracks',
|
|
'drumRackGroupA',
|
|
'drumRackGroupB',
|
|
'drumRackGroupC',
|
|
'drumRackGroupD',
|
|
'sendEffects',
|
|
];
|