Browse Source

Allow dynamic boxRect for CanvasSpot

spot-dynamic-boxrect
Artur Arseniev 6 months ago
parent
commit
db6becd615
  1. 7
      packages/core/src/canvas/model/CanvasSpot.ts

7
packages/core/src/canvas/model/CanvasSpot.ts

@ -1,3 +1,4 @@
import { isFunction } from 'underscore';
import CanvasModule from '..';
import { ModuleModel } from '../../abstract';
import { BoxRect, LiteralUnion } from '../../common';
@ -31,7 +32,7 @@ export interface CanvasSpotBase<T extends CanvasSpotType> {
/**
* Fixed box rect of the spot, eg. `{ width: 100, height: 100, x: 0, y: 0 }`.
*/
boxRect?: BoxRect;
boxRect?: BoxRect | (() => BoxRect);
/**
* Component to which the spot will be attached.
*/
@ -97,10 +98,10 @@ export default class CanvasSpot<T extends CanvasSpotProps = CanvasSpotProps> ext
getBoxRect(opts?: GetBoxRectOptions) {
const { el, em } = this;
const cvView = em.Canvas.getCanvasView();
const boxRect = this.get('boxRect');
const boxRect = this.attributes.boxRect;
if (boxRect) {
return boxRect;
return isFunction(boxRect) ? boxRect() : (boxRect as BoxRect);
} else if (el && cvView) {
return cvView.getElBoxRect(el, opts);
}

Loading…
Cancel
Save