import deepUnref from '../../utils/deep-unref'; import { LayerObject } from './interfaces'; export class HousePlannerCanvasClipboard { public storedObjects: LayerObject[] = []; public wasCutOperation = false; storeToClipboard(items: LayerObject[], cut = false) { this.wasCutOperation = cut; // If we are cutting, we store the object by reference and return it all in its original state if (cut) { this.storedObjects = [...items]; return; } this.storedObjects = [ ...items.map((item) => { const itemCopy = { ...deepUnref(item), visible: true, name: item.name + ' Copy', }; delete itemCopy.databaseId; return itemCopy; }), ]; } getFromClipboard(newId: number, selected = true): LayerObject[] { if (this.wasCutOperation) { const unalteredList = [...this.storedObjects]; this.storeToClipboard(this.storedObjects, false); return unalteredList; } const newObjects = deepUnref(this.storedObjects); return newObjects.map((item, index) => ({ ...item, id: newId + index, selected, })); } }