diagram-js
Version:
A toolbox for displaying and modifying diagrams on the web
58 lines (57 loc) • 1.4 kB
TypeScript
import type { Element } from '../../model/Types';
export type Outline = SVGSVGElement | SVGCircleElement | SVGRectElement;
/**
* An interface to be implemented by an outline provider.
*/
export default interface OutlineProvider {
/**
* Returns outline shape for given element.
*
* @example
*
* ```javascript
* getOutline(element) {
* if (element.type === 'Foo') {
* const outline = svgCreate('circle');
*
* svgAttr(outline, {
* cx: element.width / 2,
* cy: element.height / 2,
* r: 23
* });
*
* return outline;
* }
* }
* ```
*
* @param element
*/
getOutline: (element: Element) => Outline;
/**
* Updates outline shape based on element's current size. Returns true if
* update was handled by provider.
*
* @example
*
* ```javascript
* updateOutline(element, outline) {
* if (element.type === 'Foo') {
* svgAttr(outline, {
* cx: element.width / 2,
* cy: element.height / 2,
* r: 23
* });
* } else if (element.type === 'Bar') {
* return true;
* }
*
* return false;
* }
* ```
*
* @param element
* @param outline
*/
updateOutline: (element: Element, outline: Outline) => boolean;
}