Como colocar mascara telefone de acordo com numero de caracteres?

Eu tenho um campo que pode receber números no formato (00)0000-0000 e (00)00000-0000 como eu implemento uma mascara que se adapte a tais formatos de acordo com o que o usuário digitou?