SpaceToolBehavior.js 822 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. var HIGH_PRIORITY = 2000;
  2. /**
  3. * Integrates space tool with grid snapping.
  4. */
  5. export default function SpaceToolBehavior(eventBus, gridSnapping) {
  6. eventBus.on([
  7. 'spaceTool.move',
  8. 'spaceTool.end'
  9. ], HIGH_PRIORITY, function(event) {
  10. var context = event.context;
  11. if (!context.initialized) {
  12. return;
  13. }
  14. var axis = context.axis;
  15. var snapped;
  16. if (axis === 'x') {
  17. // snap delta x to multiple of 10
  18. snapped = gridSnapping.snapValue(event.dx);
  19. event.x = event.x + snapped - event.dx;
  20. event.dx = snapped;
  21. } else {
  22. // snap delta y to multiple of 10
  23. snapped = gridSnapping.snapValue(event.dy);
  24. event.y = event.y + snapped - event.dy;
  25. event.dy = snapped;
  26. }
  27. });
  28. }
  29. SpaceToolBehavior.$inject = [
  30. 'eventBus',
  31. 'gridSnapping'
  32. ];