Add createElement and updateElement methods to YjsDocument
This commit is contained in:
@@ -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<Element>): 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user