fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
2 lines • 2.02 kB
JavaScript
import{SCALING as e}from"../constants.min.mjs";import{NOT_ALLOWED_CURSOR as t,findCornerQuadrant as n,getLocalPoint as r,invertOrigin as i,isLocked as a,isTransformCentered as o}from"./util.min.mjs";import{wrapWithFireEvent as s}from"./wrapWithFireEvent.min.mjs";import{wrapWithFixedAnchor as c}from"./wrapWithFixedAnchor.min.mjs";function l(e,t){let n=t.canvas,r=e[n.uniScaleKey];return n.uniformScaling&&!r||!n.uniformScaling&&r}function u(e,t,n){let r=a(e,`lockScalingX`),i=a(e,`lockScalingY`);if(r&&i||!t&&(r||i)&&n||r&&t===`x`||i&&t===`y`)return!0;let{width:o,height:s,strokeWidth:c}=e;return o===0&&c===0&&t!==`y`||s===0&&c===0&&t!==`x`}const d=[`e`,`se`,`s`,`sw`,`w`,`nw`,`n`,`ne`,`e`],f=(e,r,i,a)=>{let o=l(e,i);return u(i,r.x!==0&&r.y===0?`x`:r.x===0&&r.y!==0?`y`:``,o)?t:`${d[n(i,r,a)]}-resize`};function p(e,t,n,s,c={}){let d=t.target,f=c.by,p=l(e,d),m,h,g,_,v,y;if(u(d,f,p))return!1;if(t.gestureScale)h=t.scaleX*t.gestureScale,g=t.scaleY*t.gestureScale;else{if(m=r(t,t.originX,t.originY,n,s),v=f===`y`?1:Math.sign(m.x||t.signX||1),y=f===`x`?1:Math.sign(m.y||t.signY||1),t.signX||(t.signX=v),t.signY||(t.signY=y),a(d,`lockScalingFlip`)&&(t.signX!==v||t.signY!==y))return!1;if(_=d._getTransformedDimensions(),p&&!f){let e=Math.abs(m.x)+Math.abs(m.y),{original:n}=t,r=e/(Math.abs(_.x*n.scaleX/d.scaleX)+Math.abs(_.y*n.scaleY/d.scaleY));h=n.scaleX*r,g=n.scaleY*r}else h=Math.abs(m.x*d.scaleX/_.x),g=Math.abs(m.y*d.scaleY/_.y);o(t)&&(h*=2,g*=2),t.signX!==v&&f!==`y`&&(t.originX=i(t.originX),h*=-1,t.signX=v),t.signY!==y&&f!==`x`&&(t.originY=i(t.originY),g*=-1,t.signY=y)}let b=d.scaleX,x=d.scaleY;return f?(f===`x`&&d.set(`scaleX`,h),f===`y`&&d.set(`scaleY`,g)):(!a(d,`lockScalingX`)&&d.set(`scaleX`,h),!a(d,`lockScalingY`)&&d.set(`scaleY`,g)),b!==d.scaleX||x!==d.scaleY}const m=s(e,c((e,t,n,r)=>p(e,t,n,r))),h=s(e,c((e,t,n,r)=>p(e,t,n,r,{by:`x`}))),g=s(e,c((e,t,n,r)=>p(e,t,n,r,{by:`y`})));export{f as scaleCursorStyleHandler,m as scalingEqually,h as scalingX,g as scalingY};
//# sourceMappingURL=scale.min.mjs.map