import * as Y from 'yjs'; type ProjectMeta = { id: string; name: string; createdAt: number; updatedAt: number; }; type Layer = { id: string; name: string; visible: boolean; locked: boolean; color?: string; lineType?: string; transparency?: number; sortOrder?: number; }; type Element = { id: string; type: string; layerId: string; x: number; y: number; width: number; height: number; properties: Record; }; type Block = { id: string; name: string; elements: string[]; // element IDs }; type BlockInstance = { id: string; blockId: string; x: number; y: number; properties: Record; }; export class YjsDocument { doc: Y.Doc; projectMeta: Y.Map; layers: Y.Map; elements: Y.Array; blocks: Y.Map; blockInstances: Y.Array; constructor() { this.doc = new Y.Doc(); this.projectMeta = this.doc.getMap('projectMeta'); this.layers = this.doc.getMap('layers'); this.elements = this.doc.getArray('elements'); this.blocks = this.doc.getMap('blocks'); this.blockInstances = this.doc.getArray('blockInstances'); } destroy() { this.doc.destroy(); } }