21 lines
788 B
TypeScript
21 lines
788 B
TypeScript
/** Explicit switches take precedence over the common beat-sync phrase shortcut. */
|
|
export function resolveSmartEditIntent<
|
|
T extends {
|
|
mode?: string;
|
|
prompt?: string;
|
|
beatSync?: boolean;
|
|
variants?: number;
|
|
music?: { url: string };
|
|
},
|
|
>(draft: T) {
|
|
const prompt = draft.prompt || "";
|
|
const beatSync =
|
|
draft.beatSync ??
|
|
(/卡点|beat[ -]?sync/i.test(prompt) &&
|
|
!/(?:不|不要|无需|不用|取消|关闭).{0,5}卡点|no beat[ -]?sync/i.test(prompt));
|
|
return { ...draft, beatSync, variants: draft.variants ?? (draft.mode === "ads" ? 3 : 1) };
|
|
}
|
|
export function assertBeatMusic(draft: { beatSync?: boolean; music?: { url: string } }) {
|
|
if (draft.beatSync && !draft.music?.url) throw Error("音乐卡点需要先选择或上传背景音乐");
|
|
}
|