@@ -3,6 +3,8 @@ import { ySyncPluginKey } from 'y-prosemirror';
33
44import type { Page } from './page' ;
55
6+ const _moduleLogger = mainLogger . sub ( 'UndoRedo' ) ;
7+
68export class PageUndoRedo {
79 readonly page : Page ;
810
@@ -37,26 +39,63 @@ export class PageUndoRedo {
3739 } ,
3840 ) ;
3941
40- this . undoManager . on ( 'stack-cleared' , this . updateReactiveData ) ;
41- this . undoManager . on ( 'stack-item-added' , this . updateReactiveData ) ;
42- this . undoManager . on ( 'stack-item-popped' , this . updateReactiveData ) ;
43- this . undoManager . on ( 'stack-item-updated' , this . updateReactiveData ) ;
42+ this . undoManager . on ( 'stack-cleared' , ( event : any ) => {
43+ _moduleLogger . debug ( 'stack-cleared: %o' , event ) ;
44+
45+ this . updateReactiveData ( ) ;
46+ } ) ;
47+ this . undoManager . on ( 'stack-item-added' , ( event : any ) => {
48+ _moduleLogger . debug ( 'stack-item-added: %o' , event ) ;
49+
50+ this . updateReactiveData ( ) ;
51+
52+ event . stackItem . meta . set (
53+ 'selectedNoteIds' ,
54+ this . page . selection . react . noteIds . slice ( ) ,
55+ ) ;
56+ event . stackItem . meta . set (
57+ 'selectedArrowIds' ,
58+ this . page . selection . react . arrowIds . slice ( ) ,
59+ ) ;
60+ } ) ;
61+ this . undoManager . on ( 'stack-item-updated' , ( event : any ) => {
62+ // _moduleLogger.debug('stack-item-updated: %o', event);
63+
64+ this . updateReactiveData ( ) ;
65+
66+ event . stackItem . meta . set (
67+ 'selectedNoteIds' ,
68+ this . page . selection . react . noteIds . slice ( ) ,
69+ ) ;
70+ event . stackItem . meta . set (
71+ 'selectedArrowIds' ,
72+ this . page . selection . react . arrowIds . slice ( ) ,
73+ ) ;
74+ } ) ;
75+ this . undoManager . on ( 'stack-item-popped' , ( event : any ) => {
76+ _moduleLogger . debug ( 'stack-item-popped: %o' , event ) ;
77+
78+ this . updateReactiveData ( ) ;
79+
80+ this . page . selection . set (
81+ ...this . page . notes . fromIds ( event . stackItem . meta . get ( 'selectedNoteIds' ) ) ,
82+ ...this . page . arrows . fromIds (
83+ event . stackItem . meta . get ( 'selectedArrowIds' ) ,
84+ ) ,
85+ ) ;
86+ } ) ;
4487 }
4588
4689 resetCapturing ( ) {
4790 this . undoManager . stopCapturing ( ) ;
4891 }
4992
5093 undo ( ) {
51- this . page . selection . clear ( ) ;
52-
5394 this . undoManager . undo ( ) ;
5495
5596 this . updateReactiveData ( ) ;
5697 }
5798 redo ( ) {
58- this . page . selection . clear ( ) ;
59-
6099 this . undoManager . redo ( ) ;
61100
62101 this . updateReactiveData ( ) ;
0 commit comments