26 lines
		
	
	
		
			461 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			26 lines
		
	
	
		
			461 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | // #docregion
 | ||
|  | export class RestoreService<T> { | ||
|  |   originalItem: T; | ||
|  |   currentItem: T; | ||
|  | 
 | ||
|  |   setItem (item: T) { | ||
|  |     this.originalItem = item; | ||
|  |     this.currentItem = this.clone(item); | ||
|  |   } | ||
|  | 
 | ||
|  |   getItem () :T { | ||
|  |     return this.currentItem; | ||
|  |   } | ||
|  | 
 | ||
|  |   restoreItem () :T { | ||
|  |     this.currentItem = this.originalItem; | ||
|  |     return this.getItem(); | ||
|  |   } | ||
|  | 
 | ||
|  |   clone (item: T) :T { | ||
|  |     // super poor clone implementation
 | ||
|  |     return JSON.parse(JSON.stringify(item)); | ||
|  |   } | ||
|  | } | ||
|  | // #enddocregion
 |