52 lines
1.5 KiB
TypeScript
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,
|
|
},
|
|
};
|
|
}
|