import { ExcalidrawElement, ExcalidrawTextElement } from "./types"; type ElementUpdate<TElement extends ExcalidrawElement> = Omit< Partial<TElement>, "id" | "seed" >; // This function tracks updates of text elements for the purposes for collaboration. // The version is used to compare updates when more than one user is working in // the same drawing. export function mutateElement( element: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>, ) { Object.assign(element, updates); (element as any).version++; } export function newElementWith( element: ExcalidrawElement, updates: ElementUpdate<ExcalidrawElement>, ): ExcalidrawElement { return { ...element, ...updates, version: element.version + 1 }; } // This function tracks updates of text elements for the purposes for collaboration. // The version is used to compare updates when more than one user is working in // the same document. export function mutateTextElement( element: ExcalidrawTextElement, updates: ElementUpdate<ExcalidrawTextElement>, ): void { Object.assign(element, updates); (element as any).version++; } export function newTextElementWith( element: ExcalidrawTextElement, updates: ElementUpdate<ExcalidrawTextElement>, ): ExcalidrawTextElement { return { ...element, ...updates, version: element.version + 1 }; }