GridSnappingParticipantBehavior.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { is } from '../../../util/ModelUtil';
  2. /**
  3. * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas
  4. * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
  5. * @typedef {import('diagram-js/lib/features/grid-snapping/GridSnapping').default} GridSnapping
  6. */
  7. var HIGHER_PRIORITY = 1750;
  8. /**
  9. * @param {Canvas} canvas
  10. * @param {EventBus} eventBus
  11. * @param {GridSnapping} gridSnapping
  12. */
  13. export default function GridSnappingParticipantBehavior(canvas, eventBus, gridSnapping) {
  14. eventBus.on([
  15. 'create.start',
  16. 'shape.move.start'
  17. ], HIGHER_PRIORITY, function(event) {
  18. var context = event.context,
  19. shape = context.shape,
  20. rootElement = canvas.getRootElement();
  21. if (!is(shape, 'bpmn:Participant') ||
  22. !is(rootElement, 'bpmn:Process') ||
  23. !rootElement.children.length) {
  24. return;
  25. }
  26. var createConstraints = context.createConstraints;
  27. if (!createConstraints) {
  28. return;
  29. }
  30. shape.width = gridSnapping.snapValue(shape.width, { min: shape.width });
  31. shape.height = gridSnapping.snapValue(shape.height, { min: shape.height });
  32. });
  33. }
  34. GridSnappingParticipantBehavior.$inject = [
  35. 'canvas',
  36. 'eventBus',
  37. 'gridSnapping'
  38. ];