camunda-bpmn-js-behaviors
Version:
Camunda Platform 7 and 8 behaviors for bpmn-js
44 lines (34 loc) • 1.03 kB
JavaScript
import {
getBusinessObject,
is
} from 'bpmn-js/lib/util/ModelUtil';
import { isInputOutputEmpty } from './util/InputOutputUtil';
import {
removeExtensionElements
} from '../util/ExtensionElementsUtil';
import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
const LOW_PRIORITY = 250;
/**
* Camunda BPMN specific behavior ensuring empty camunda:InputOutput is removed.
*/
export default class UpdateInputOutputBehavior extends CommandInterceptor {
constructor(commandStack, eventBus) {
super(eventBus);
this.postExecuted('element.updateModdleProperties', LOW_PRIORITY, function(context) {
const {
element,
moddleElement
} = context;
if (!is(moddleElement, 'camunda:InputOutput')) {
return;
}
if (isInputOutputEmpty(moddleElement)) {
removeExtensionElements(element, getBusinessObject(element), moddleElement, commandStack);
}
}, true);
}
}
UpdateInputOutputBehavior.$inject = [
'commandStack',
'eventBus'
];