diff --git a/src/canvas/index.ts b/src/canvas/index.ts index d6d549598..ede0f1624 100644 --- a/src/canvas/index.ts +++ b/src/canvas/index.ts @@ -718,6 +718,14 @@ export default class CanvasModule extends Module { } setSpot(spotProps: Partial = {}, opts: AddOptions = {}) { + const spots = this.getSpots(spotProps); + + if (spots.length) { + const spot = spots[0]; + spot.set(spotProps); + return spot; + } + const spot = new CanvasSpot(this, { ...spotProps, id: spotProps.id || `cs_${spotProps.frame?.id}_${spotProps.component?.getId()}`, @@ -728,17 +736,17 @@ export default class CanvasModule extends Module { this.spots.add(spot, opts); return spot; - // CanvasSpot // 'canvas:spot:add' | 'canvas:spot:update' // 'canvas:spot' } - getSpots(spot: any = {}) { - // CanvasSpot[] + getSpots(spotProps: Partial = {}) { + return this.spots.where(spotProps.id ? { id: spotProps.id } : spotProps); } - removeSpot(spot: any = {}) { - // CanvasSpot[] + removeSpot(spotProps: Partial = {}) { + const spots = this.getSpots(spotProps); + return this.spots.remove(spots); // 'canvas:spot:remove' // 'canvas:spot' // remove all spots: canvas.getSpots().forEach(spot => canvas.removeSpot(spot))