feat: add element.updated (#4070)

This commit is contained in:
David Luzar 2021-11-24 18:38:33 +01:00 committed by GitHub
parent dac970c640
commit f9d2d537a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 500 additions and 4 deletions

View file

@ -4,6 +4,7 @@ import Scene from "../scene/Scene";
import { getSizeFromPoints } from "../points";
import { randomInteger } from "../random";
import { Point } from "../types";
import { getUpdatedTimestamp } from "../utils";
type ElementUpdate<TElement extends ExcalidrawElement> = Omit<
Partial<TElement>,
@ -92,6 +93,7 @@ export const mutateElement = <TElement extends Mutable<ExcalidrawElement>>(
element.version++;
element.versionNonce = randomInteger();
element.updated = getUpdatedTimestamp();
if (informMutation) {
Scene.getScene(element)?.informMutation();
@ -126,13 +128,14 @@ export const newElementWith = <TElement extends ExcalidrawElement>(
return {
...element,
...updates,
updated: getUpdatedTimestamp(),
version: element.version + 1,
versionNonce: randomInteger(),
};
};
/**
* Mutates element and updates `version` & `versionNonce`.
* Mutates element, bumping `version`, `versionNonce`, and `updated`.
*
* NOTE: does not trigger re-render.
*/
@ -142,5 +145,6 @@ export const bumpVersion = (
) => {
element.version = (version ?? element.version) + 1;
element.versionNonce = randomInteger();
element.updated = getUpdatedTimestamp();
return element;
};