import { Canvas } from './Canvas'; export const AdapterClasses = { Canvas, }; export const createCanvasRepository = (repositoryMap = new Map()) => { let activeCanvas; const requestCanvas = (key, canvasSize = null, options = {}) => { const { updateCanvas = false } = options; if (!repositoryMap.has(key) || updateCanvas) { const canvas = new AdapterClasses.Canvas(); canvas.init(); // create canvas element if (canvasSize) { canvas.setSize(canvasSize); } repositoryMap.set(key, canvas); if (repository.onCreate) { repository.onCreate(canvas); } } const canvas = repositoryMap.get(key); const { activate = true } = options; if (activate) { canvas.activate(); // clear selection if the active canvas is not the same as the previous one if (activeCanvas && activeCanvas !== canvas) { activeCanvas.clearSelection(); } activeCanvas = canvas; } return canvas; }; const getActiveCanvas = () => activeCanvas; const repository = { requestCanvas, getActiveCanvas, }; return repository; };