Implementando desfazer em um aplicativo Web

Estou criando um aplicativo da web de edição de mapas onde podemos criar e editar polilinhas, polígonos etc. Estou com problemas para encontrar informações sobre desfazer a implementação na web, acho que lamento por "precisamos desfazer" e "aqui está o meu padrão de comando usando encerramentos ", mas acho que entre isso e uma interface completa de desfazer / refazer há alguma estrada.

Então, aqui estão minhas perguntas (bom candidato ao wiki, eu acho):

DevemosI gerenciar a pilha ou existe uma maneira de enviar meus comandos para a pilha do navegador? (e como eu manejo comandos nativos, como edições de texto em campos de texto nesse caso)como lidar com "compressão de comando" (agrupamento de comandos) quando alguns comandos são nativos do navegadorComo detecto o pressionamento de tecla desfazer (ctrl + zSe eu registrar um evento de keyup, como posso decidir se evito o padrão ou nãSe não, posso registrar algum manipulador desfazer em algum lugar? Os usuários não estão acostumados a desfazer na web, como posso "treiná-los" para explorar / desfazer no meu aplicativo?

brigado a todo

questionAnswers(3)

yourAnswerToTheQuestion