@@ -1082,6 +1082,8 @@ class PagesMapper {
10821082 */
10831083 #copiedPageNumbers = null ;
10841084
1085+ #savedData = null ;
1086+
10851087 /**
10861088 * Gets the total number of pages.
10871089 * @returns {number } The number of pages.
@@ -1253,6 +1255,13 @@ class PagesMapper {
12531255 const pageNumberToId = this . #pageNumberToId;
12541256 const prevIdToPageNumber = this . #idToPageNumber;
12551257
1258+ this . #savedData = {
1259+ pageNumberToId : pageNumberToId . slice ( ) ,
1260+ idToPageNumber : new Map ( prevIdToPageNumber ) ,
1261+ pageNumber : this . #pagesNumber,
1262+ prevPageNumbers : this . #prevPageNumbers. slice ( ) ,
1263+ } ;
1264+
12561265 this . pagesNumber -= pagesToDelete . length ;
12571266 this . #init( false ) ;
12581267 const newPageNumberToId = this . #pageNumberToId;
@@ -1279,6 +1288,22 @@ class PagesMapper {
12791288 this . #updateListeners( { type : "delete" , pageNumbers : pagesToDelete } ) ;
12801289 }
12811290
1291+ cancelDelete ( ) {
1292+ if ( this . #savedData) {
1293+ this . #pageNumberToId = this . #savedData. pageNumberToId ;
1294+ this . #idToPageNumber = this . #savedData. idToPageNumber ;
1295+ this . pagesNumber = this . #savedData. pageNumber ;
1296+ this . #prevPageNumbers = this . #savedData. prevPageNumbers ;
1297+ this . #savedData = null ;
1298+ this . #updateListeners( { type : "cancelDelete" } ) ;
1299+ }
1300+ }
1301+
1302+ cleanSavedData ( ) {
1303+ this . #savedData = null ;
1304+ this . #updateListeners( { type : "cleanSavedData" } ) ;
1305+ }
1306+
12821307 /**
12831308 * Copies a set of pages while keeping ID→number mappings in sync.
12841309 * @param {Uint32Array } pagesToCopy - Page numbers to copy (1-indexed).
@@ -1292,6 +1317,12 @@ class PagesMapper {
12921317 this . #updateListeners( { type : "copy" , pageNumbers : pagesToCopy } ) ;
12931318 }
12941319
1320+ cancelCopy ( ) {
1321+ this . #copiedPageIds = null ;
1322+ this . #copiedPageNumbers = null ;
1323+ this . #updateListeners( { type : "cancelCopy" } ) ;
1324+ }
1325+
12951326 /**
12961327 * Pastes a set of pages while keeping ID→number mappings in sync.
12971328 * @param {number } index - Zero-based insertion index in the page-number list.
@@ -1323,6 +1354,7 @@ class PagesMapper {
13231354 this . #updateListeners( { type : "paste" } ) ;
13241355
13251356 this . #copiedPageIds = null ;
1357+ this . #copiedPageNumbers = null ;
13261358 }
13271359
13281360 /**
@@ -1455,7 +1487,7 @@ class PagesMapper {
14551487 }
14561488
14571489 getMapping ( ) {
1458- return this . #pageNumberToId. subarray ( 0 , this . pagesNumber ) ;
1490+ return this . #pageNumberToId? .subarray ( 0 , this . pagesNumber ) ;
14591491 }
14601492}
14611493
0 commit comments