UnclaimIdBehavior.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import inherits from 'inherits';
  2. import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
  3. import { is } from '../../../util/ModelUtil';
  4. import { isExpanded } from '../../../util/DiUtil';
  5. import { isLabel } from '../../../util/LabelUtil';
  6. /**
  7. * Unclaims model IDs on element deletion.
  8. *
  9. * @param {Canvas} canvas
  10. * @param {Injector} injector
  11. * @param {Moddle} moddle
  12. * @param {Modeling} modeling
  13. */
  14. export default function UnclaimIdBehavior(canvas, injector, moddle, modeling) {
  15. injector.invoke(CommandInterceptor, this);
  16. this.preExecute('shape.delete', function(event) {
  17. var context = event.context,
  18. shape = context.shape,
  19. shapeBo = shape.businessObject;
  20. if (isLabel(shape)) {
  21. return;
  22. }
  23. if (is(shape, 'bpmn:Participant') && isExpanded(shape)) {
  24. moddle.ids.unclaim(shapeBo.processRef.id);
  25. }
  26. modeling.unclaimId(shapeBo.id, shapeBo);
  27. });
  28. this.preExecute('connection.delete', function(event) {
  29. var context = event.context,
  30. connection = context.connection,
  31. connectionBo = connection.businessObject;
  32. modeling.unclaimId(connectionBo.id, connectionBo);
  33. });
  34. this.preExecute('canvas.updateRoot', function() {
  35. var rootElement = canvas.getRootElement(),
  36. rootElementBo = rootElement.businessObject;
  37. moddle.ids.unclaim(rootElementBo.id);
  38. });
  39. }
  40. inherits(UnclaimIdBehavior, CommandInterceptor);
  41. UnclaimIdBehavior.$inject = [ 'canvas', 'injector', 'moddle', 'modeling' ];