| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import OutlineProvider from 'bpmn-js/lib/features/outline/OutlineProvider.js';
- import { attr as svgAttr, create as svgCreate } from 'tiny-svg';
- import { isLabel } from 'bpmn-js/lib/util/LabelUtil';
- import { typeConfig } from '../config';
- import { typeCondition, typeConfluence } from '../config/variableName';
- class YmOutlineProvider extends OutlineProvider {
- private offset: number = 0;
- private _styles;
- private _type;
- constructor(outline: any, styles: any, type: any) {
- super(outline, styles);
- this._styles = styles;
- this._type = type;
- }
- getOutline(element: any) {
- const OUTLINE_STYLE = this._styles.cls('djs-outline', ['no-fill']);
- var outline;
- if (isLabel(element)) return;
- let { renderer } = typeConfig[element.type];
- const { attr } = renderer;
- outline = svgCreate('rect');
- svgAttr(
- outline,
- Object.assign(
- {
- x: attr.x,
- y: attr.y,
- rx: attr.rx ? attr.rx : 3,
- width: (this._type === 0 || element.wnType === typeCondition) && isLabel(element) ? 128 : element.wnType === typeConfluence ? 0 : attr.width,
- height: (this._type === 0 || element.wnType === typeCondition) && isLabel(element) ? 28 : element.wnType === typeConfluence ? 0 : attr.height,
- },
- OUTLINE_STYLE,
- ),
- );
- return outline;
- }
- updateOutline(element: any, outline: any): any {
- svgAttr(outline, {
- x: 0,
- y: 0,
- width: (this._type === 0 || element.wnType === typeCondition) && isLabel(element) ? 128 : element.width + this.offset * 2,
- height: (this._type === 0 || element.wnType === typeCondition) && isLabel(element) ? 28 : element.height + this.offset * 2,
- });
- return outline;
- }
- }
- // 注入的依赖项
- YmOutlineProvider.$inject = ['outline', 'styles', 'config.type'];
- export default YmOutlineProvider;
|