From 88703d70db7b68075f4517052ecdc5586494f645 Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Mon, 22 Jun 2026 21:05:20 +0000 Subject: [PATCH] Add createElement and updateElement methods to YjsDocument --- frontend/src/crdt/YjsDocument.ts | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/frontend/src/crdt/YjsDocument.ts b/frontend/src/crdt/YjsDocument.ts index f58c3fd..48a8c5e 100644 --- a/frontend/src/crdt/YjsDocument.ts +++ b/frontend/src/crdt/YjsDocument.ts @@ -63,4 +63,44 @@ export class YjsDocument { destroy() { this.doc.destroy(); } + + // Create a new element + createElement(element: Element): void { + this.doc.transact(() => { + this.elements.push([element]); + }); + } + + // Update an existing element + updateElement(id: string, updates: Partial): void { + this.doc.transact(() => { + const index = this.elements.toArray().findIndex(el => el.id === id); + if (index !== -1) { + const currentElement = this.elements.get(index); + const updatedElement = { ...currentElement, ...updates }; + this.elements.delete(index, 1); + this.elements.insert(index, [updatedElement]); + } + }); + } + + // Delete an element + deleteElement(id: string): void { + this.doc.transact(() => { + const index = this.elements.toArray().findIndex(el => el.id === id); + if (index !== -1) { + this.elements.delete(index, 1); + } + }); + } + + // Get all elements + getElements(): Element[] { + return this.elements.toArray(); + } + + // Get element by ID + getElementById(id: string): Element | undefined { + return this.elements.toArray().find(el => el.id === id); + } } \ No newline at end of file