mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
Add app state to history (#309)
* Add app state to history. * Pick missing state keys. * Fix bug. * Remove force update.
This commit is contained in:
parent
3f1075cbcd
commit
dfb7c2b744
2 changed files with 34 additions and 9 deletions
|
@ -115,6 +115,19 @@ export function viewportCoordsToSceneCoords(
|
|||
return { x, y };
|
||||
}
|
||||
|
||||
function pickAppStatePropertiesForHistory(
|
||||
appState: AppState
|
||||
): Partial<AppState> {
|
||||
return {
|
||||
exportBackground: appState.exportBackground,
|
||||
currentItemStrokeColor: appState.currentItemStrokeColor,
|
||||
currentItemBackgroundColor: appState.currentItemBackgroundColor,
|
||||
currentItemFont: appState.currentItemFont,
|
||||
viewBackgroundColor: appState.viewBackgroundColor,
|
||||
name: appState.name
|
||||
};
|
||||
}
|
||||
|
||||
export class App extends React.Component<any, AppState> {
|
||||
canvas: HTMLCanvasElement | null = null;
|
||||
rc: RoughCanvas | null = null;
|
||||
|
@ -312,21 +325,23 @@ export class App extends React.Component<any, AppState> {
|
|||
}
|
||||
this.setState({ elementType: shape });
|
||||
} else if (event[KEYS.META] && event.code === "KeyZ") {
|
||||
event.preventDefault();
|
||||
|
||||
if (event.shiftKey) {
|
||||
// Redo action
|
||||
const data = history.redoOnce();
|
||||
if (data !== null) {
|
||||
elements = data;
|
||||
elements = data.elements;
|
||||
this.setState(data.appState);
|
||||
}
|
||||
} else {
|
||||
// undo action
|
||||
const data = history.undoOnce();
|
||||
if (data !== null) {
|
||||
elements = data;
|
||||
elements = data.elements;
|
||||
this.setState(data.appState);
|
||||
}
|
||||
}
|
||||
this.forceUpdate();
|
||||
event.preventDefault();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1387,7 +1402,12 @@ export class App extends React.Component<any, AppState> {
|
|||
});
|
||||
this.saveDebounced();
|
||||
if (history.isRecording()) {
|
||||
history.pushEntry(history.generateCurrentEntry(elements));
|
||||
history.pushEntry(
|
||||
history.generateCurrentEntry(
|
||||
pickAppStatePropertiesForHistory(this.state),
|
||||
elements
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue