99 />
1010</template >
1111
12- <script >
13- export default {
14- name: " App" ,
15- };
16- </script >
17-
1812<script setup>
1913// import { defineComponent } from "vue";
2014// import ElementPlus from 'element-plus'; // importing element plus component library
@@ -41,19 +35,19 @@ const isTimetraveling = ref(false);
4135
4236const store = useStore ();
4337
44- const subscribeAction = store .$subscribe ((action , state ) => {
45- if (typeof action .payload === " object" ) {
46- action .payload = cloneDeep (action .payload );
38+ store .$onAction ((action ) => {
39+ if (typeof action .args [ 0 ] === " object" ) {
40+ action .args = cloneDeep (action .args [ 0 ] );
4741 }
4842 doneAction .value .push (action);
4943 if (! isTimetraveling .value ) {
5044 if (undoneAction .value [undoneAction .value .length - 1 ]) {
5145 if (
52- action .type ===
53- undoneAction .value [undoneAction .value .length - 1 ].type &&
46+ action .name ===
47+ undoneAction .value [undoneAction .value .length - 1 ].name &&
5448 deepEqual (
55- action .payload ,
56- undoneAction .value [undoneAction .value .length - 1 ].payload
49+ action .args ,
50+ undoneAction .value [undoneAction .value .length - 1 ].args [ 0 ]
5751 )
5852 ) {
5953 undoneAction .value .pop ();
@@ -98,10 +92,10 @@ const undo = () => {
9892 if this happens we keep popping the doneAction.value queue and building up the redo queue. */
9993 if (undone !== undefined ) {
10094 undoneAction .value .push (undone);
101- if (ignoredActions .has (undone .type )) {
95+ if (ignoredActions .has (undone .name )) {
10296 while (
10397 doneAction .value [doneAction .value .length - 1 ] &&
104- ignoredActions .has (doneAction .value [doneAction .value .length - 1 ].type )
98+ ignoredActions .has (doneAction .value [doneAction .value .length - 1 ].name )
10599 ) {
106100 undoneAction .value .push (doneAction .value .pop ());
107101 }
@@ -117,9 +111,8 @@ const undo = () => {
117111 store .emptyState ();
118112
119113 doneAction .value .forEach ((action ) => {
120- const actionType = action .type ;
121- store .action .type (cloneDeep (action .payload ));
122- doneAction .pop ();
114+ store[action .name ](cloneDeep (action .args [0 ]));
115+ doneAction .value .pop ();
123116 });
124117 isTimetraveling .value = false ;
125118};
@@ -130,11 +123,11 @@ const redo = () => {
130123 // we have to set timeTraveling to true to preserve the undoneAction array while we make changes
131124 isTimetraveling .value = true ;
132125 if (action) {
133- const actionType = action .type ;
134- store[actionType ](cloneDeep (action .payload ));
126+ const actionName = action .name ;
127+ store[actionName ](cloneDeep (action .args [ 0 ] ));
135128 }
136129 isTimetraveling .value = false ;
137- if (action && ignoredActions .has (action .type )) {
130+ if (action && ignoredActions .has (action .name )) {
138131 redo ();
139132 }
140133};
0 commit comments