import { AbstractCanvas } from '../../CanvasInterface/Canvas'; import { Group } from './Objects/Group'; import { Image } from './Objects/Image'; import { Text } from './Objects/Text'; import { CanvasObject } from './Objects/CanvasObject'; import Logger from '../../Utils/Logger'; const logger = new Logger('Canvas'); export class Canvas extends AbstractCanvas { addText(options: any): Text { const text = new Text(options); this.add(text); return text; } async addImage(options: any): Image { const { src } = options; const image = new Image(options); if (src) { await image.loadFromURL(src); } this.add(image); logger.log('Image has been added.', image); return image; } async addGroup(options: any): Group { const { src } = options; const group = new Group(options); if (src) { await group.loadFromURL(src); } this.add(group); logger.log('Group has been added.', group); return group; } async addItemFromObject(options: any): CanvasObject { const { type, ...props } = options; switch (type) { case 'Image': { return await this.addImage(props); } case 'Group': { return await this.addGroup(props); } case 'Text': { return this.addText(props); } } } }