From b67077d6cbcb40ee2d9dd0563874c86450fef659 Mon Sep 17 00:00:00 2001 From: chenshenhai Date: Thu, 15 Jul 2021 14:57:38 +0800 Subject: [PATCH] feat: update idraw undo/redo return --- packages/core/src/index.ts | 8 +++++--- packages/idraw/src/index.ts | 30 ++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 5a53ca3..32600e3 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -172,13 +172,15 @@ class Core { if (this[_hasInitedData] === true) { return; } - this.setData(data); - this[_emitChangeData](); + this.setData(data, { triggerChangeEvent: true }); this[_hasInitedData] = true; } - setData(data: any | TypeData): void { + setData(data: any | TypeData, opts?: { triggerChangeEvent: boolean }): void { this[_data] = this[_element].initData(deepClone(parseData(data))); + if (opts && opts.triggerChangeEvent === true) { + this[_emitChangeData](); + } this.draw(); } diff --git a/packages/idraw/src/index.ts b/packages/idraw/src/index.ts index 91ea752..7e3fbed 100644 --- a/packages/idraw/src/index.ts +++ b/packages/idraw/src/index.ts @@ -43,9 +43,15 @@ class IDraw extends Core { this[_initEvent](); } - undo() { + undo(): { + doRecordCount: number, + data: TypeData | null, + } { if (!(this[_doRecords].length > 1)) { - return this[_doRecords].length; + return { + doRecordCount: this[_doRecords].length, + data: null, + }; } const popRecord = this[_doRecords].pop(); if (popRecord) { @@ -56,19 +62,31 @@ class IDraw extends Core { this.setData(record.data); this.draw(); } - return this[_doRecords].length; + return { + doRecordCount: this[_doRecords].length, + data: record?.data || null, + }; } - redo() { + redo(): { + undoRecordCount: number, + data: TypeData | null, + } { if (!(this[_unDoRecords].length > 0)) { - return this[_unDoRecords].length; + return { + undoRecordCount: this[_unDoRecords].length, + data: null, + }; } const record = this[_unDoRecords].pop(); if (record?.data) { this.setData(record.data); this.draw(); } - return this[_unDoRecords].length; + return { + undoRecordCount: this[_unDoRecords].length, + data: record?.data || null, + }; } private [_initEvent]() {