File size: 1,183 Bytes
044eef3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import { Layout } from '../types/layout.types';
import { CanvasObject } from '../types/canvas.types';
import { generateId } from './canvas.utils';
/**
* Load a layout and convert all objects to canvas objects
*/
export function loadLayout(layout: Layout, startingZIndex: number = 0): CanvasObject[] {
return layout.objects.map((layoutObj, index) =>
layoutObjectToCanvasObject(layoutObj, startingZIndex + index)
);
}
/**
* Convert a layout object to a canvas object
*/
export function layoutObjectToCanvasObject(
layoutObj: any,
startingZIndex: number
): CanvasObject {
return {
...layoutObj,
id: generateId(),
zIndex: startingZIndex
} as CanvasObject;
}
/**
* Get layouts by canvas size
*/
export function getLayoutsByCanvasSize(layouts: Layout[], canvasSize: string): Layout[] {
return layouts.filter(layout => layout.canvasSize === canvasSize);
}
/**
* Validate layout object structure
*/
export function isValidLayout(layout: any): layout is Layout {
return (
layout &&
typeof layout.id === 'string' &&
typeof layout.name === 'string' &&
typeof layout.canvasSize === 'string' &&
Array.isArray(layout.objects)
);
}
|