Add createElement and updateElement methods to YjsDocument
This commit is contained in:
@@ -63,4 +63,44 @@ export class YjsDocument {
|
|||||||
destroy() {
|
destroy() {
|
||||||
this.doc.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