Реализация функциональности многоуровневого undo/redo на примере прототипа электронной таблицы https://habr.com/ru/post/277245/