fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
26 lines (24 loc) • 1.02 kB
JavaScript
/**
* Wrap an action handler with saving/restoring object position on the transform.
* this is the code that permits to objects to keep their position while transforming.
* @param {Function} actionHandler the function to wrap
* @return {Function} a function with an action handler signature
*/
function wrapWithFixedAnchor(actionHandler) {
return (eventData, transform, x, y) => {
const {
target,
originX,
originY
} = transform,
centerPoint = target.getRelativeCenterPoint(),
constraint = target.translateToOriginPoint(centerPoint, originX, originY),
actionPerformed = actionHandler(eventData, transform, x, y);
// flipping requires to change the transform origin, so we read from the mutated transform
// instead of leveraging the one destructured before
target.setPositionByOrigin(constraint, transform.originX, transform.originY);
return actionPerformed;
};
}
export { wrapWithFixedAnchor };
//# sourceMappingURL=wrapWithFixedAnchor.mjs.map