@@ -314,30 +314,36 @@ function paletteSelect(event) {
314
314
- UNDO/REDO -
315
315
//////////////////////////////////////////////////////////////////////////////*/
316
316
class HistoryStack {
317
- constructor ( ) {
318
- this . stack = [ ] ;
317
+ constructor ( stack = [ ] ) {
318
+ this . stack = stack ; //[{[cells], char}, ...]
319
319
}
320
- push ( item ) {
321
- this . stack . push ( item ) ;
322
- document . dispatchEvent ( new CustomEvent ( 'historyupdate' ) ) ;
320
+ push ( record ) {
321
+ this . stack . push ( record ) ;
322
+ document . dispatchEvent ( HistoryStack . updateEvent ( ) ) ;
323
323
}
324
324
pop ( ) {
325
325
let record = this . stack . pop ( )
326
- document . dispatchEvent ( new CustomEvent ( 'historyupdate' ) ) ;
326
+ document . dispatchEvent ( HistoryStack . updateEvent ( ) ) ;
327
327
return record ;
328
328
}
329
329
clear ( ) {
330
330
this . stack = [ ] ;
331
- document . dispatchEvent ( new CustomEvent ( 'historyupdate' ) ) ;
331
+ document . dispatchEvent ( HistoryStack . updateEvent ( ) ) ;
332
+ }
333
+ drop ( last ) {
334
+ this . stack = this . stack . slice ( 0 , last ) ;
335
+ document . dispatchEvent ( HistoryStack . updateEvent ( ) ) ;
332
336
}
333
337
get length ( ) { return this . stack . length ; }
338
+
339
+ static updateEvent ( ) { return new CustomEvent ( 'historyupdate' ) ; }
334
340
}
335
341
336
- let past = new HistoryStack , future = new HistoryStack ; //[{[cells], char}, ...]
342
+ let past = new HistoryStack , future = new HistoryStack ;
337
343
338
344
function updateHistory ( cells , char ) {
339
345
future . clear ( ) ;
340
- if ( past . length > 1000 ) past = past . slice ( 0 , 500 ) ;
346
+ if ( past . length > 1000 ) past . drop ( 500 ) ;
341
347
past . push ( { cells, char} ) ;
342
348
}
343
349
0 commit comments