ai-chatbot/lib/video-canvas/video-advanced-settings.ts

52 lines
1.5 KiB
TypeScript

export type VideoCanvasAdvancedSettings = {
autoValidateMaterial: boolean;
searchEnabled: boolean;
};
type VideoCanvasAdvancedSettingsDefaults = {
defaultAutoValidateMaterial: boolean;
defaultSearchEnabled: boolean;
};
function isRecord(value: unknown): value is Record<string, unknown> {
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
}
export function resolveVideoCanvasAdvancedSettings(
value: unknown,
defaults: VideoCanvasAdvancedSettingsDefaults,
): VideoCanvasAdvancedSettings {
const incoming = isRecord(value) ? value : {};
return {
autoValidateMaterial:
typeof incoming.autoValidateMaterial === "boolean"
? incoming.autoValidateMaterial
: typeof incoming.auto_validate_material === "boolean"
? incoming.auto_validate_material
: defaults.defaultAutoValidateMaterial,
searchEnabled:
typeof incoming.searchEnabled === "boolean"
? incoming.searchEnabled
: typeof incoming.search_enabled === "boolean"
? incoming.search_enabled
: typeof incoming.searchable === "boolean"
? incoming.searchable
: defaults.defaultSearchEnabled,
};
}
export function mergeVideoCanvasAdvancedSettings(
paramsValue: unknown,
updates: Partial<VideoCanvasAdvancedSettings>,
): Record<string, unknown> {
const params = isRecord(paramsValue) ? paramsValue : {};
const settings = isRecord(params.settings) ? params.settings : {};
return {
...params,
settings: {
...settings,
...updates,
},
};
}