UNPKG

1.19 kBTypeScriptView Raw
1/**
2 * @description 双栈实现撤销恢复
3 * @author fangzhicong
4 */
5import { CeilStack } from './stack';
6export default class Cache<T> {
7 protected maxSize: number;
8 /**
9 * 正常操作(用户输入、js代码修改内容、恢复操作)产生的缓存
10 */
11 protected data: CeilStack<T>;
12 /**
13 * 撤销操作产生的缓存(恢复操作时需要这些数据)
14 */
15 protected revokeData: CeilStack<T>;
16 /**
17 * 上一步操作是否为 撤销/恢复
18 */
19 protected isRe: boolean;
20 constructor(maxSize: number);
21 /**
22 * 返回当前栈中的数据长度。格式为:[正常的数据的条数,被撤销的数据的条数]
23 */
24 get size(): number[];
25 /**
26 * 重设数据缓存器的缓存长度(第一次有效)
27 */
28 resetMaxSize(maxSize: number): void;
29 /**
30 * 保存数据
31 */
32 save(data: T): this;
33 /**
34 * 撤销
35 * @param fn 撤销时,如果有数据,执行的回调函数
36 */
37 revoke(fn: (data: T) => void): boolean;
38 /**
39 * 恢复
40 * @param fn 恢复时,如果有数据,执行的回调函数
41 */
42 restore(fn: (data: T) => void): boolean;
43}