core-graphics
Version:
A core library for creating shape-based graphic editors
42 lines (34 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.snapCoordToGrid = snapCoordToGrid;
exports.snapCoordsIfNeeded = snapCoordsIfNeeded;
exports.snapEditorInputEventCoordsIfNeeded = snapEditorInputEventCoordsIfNeeded;
var _icepick = require('icepick');
var i = _interopRequireWildcard(_icepick);
var _editorEvents = require('../editor-state/editor-events');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function snapCoordToGrid(size, x) {
return Math.round(x / size) * size;
}
function snapCoordsIfNeeded(gridState, coords) {
var on = gridState.on;
var size = gridState.size;
if (!on) {
return coords;
}
var x = coords.x;
var y = coords.y;
return i.merge(coords, {
x: snapCoordToGrid(size, x),
y: snapCoordToGrid(size, y)
});
}
function snapEditorInputEventCoordsIfNeeded(gridState, ev) {
if ((0, _editorEvents.isMouseDownEvent)(ev) || (0, _editorEvents.isMouseUpEvent)(ev) || (0, _editorEvents.isMouseMoveEvent)(ev) || (0, _editorEvents.isMouseEnterEvent)(ev) || (0, _editorEvents.isMouseLeaveEvent)(ev)) {
var snappedPayload = snapCoordsIfNeeded(gridState, ev.payload);
return i.assoc(ev, 'payload', snappedPayload);
}
return ev;
}