AssociationBehavior.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import inherits from 'inherits-browser';
  2. import { is } from '../../../util/ModelUtil';
  3. import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
  4. import {
  5. filter,
  6. forEach
  7. } from 'min-dash';
  8. /**
  9. * @typedef {import('didi').Injector} Injector
  10. * @typedef {import('../Modeling').default} Modeling
  11. */
  12. /**
  13. * @param {Injector} injector
  14. * @param {Modeling} modeling
  15. */
  16. export default function AssociationBehavior(injector, modeling) {
  17. injector.invoke(CommandInterceptor, this);
  18. this.postExecute('shape.move', function(context) {
  19. var newParent = context.newParent,
  20. shape = context.shape;
  21. var associations = filter(shape.incoming.concat(shape.outgoing), function(connection) {
  22. return is(connection, 'bpmn:Association');
  23. });
  24. forEach(associations, function(association) {
  25. modeling.moveConnection(association, { x: 0, y: 0 }, newParent);
  26. });
  27. }, true);
  28. }
  29. inherits(AssociationBehavior, CommandInterceptor);
  30. AssociationBehavior.$inject = [
  31. 'injector',
  32. 'modeling'
  33. ];