import { isUndefined } from '@videojs/utils/predicate'; export function useSyncProps>( target: Props, props: Partial & Rest, defaults: Props ): Omit { const rest: Record = {}; for (const key in props) { if (key in defaults) { const value = isUndefined(props[key]) ? (defaults as Record)[key] : props[key]; if (target[key as keyof typeof target] !== value) target[key as keyof typeof target] = value as any; } else { rest[key] = props[key]; } } return rest as Omit; }