UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

3 lines (2 loc) 1.95 kB
import{resolveOrigin as i}from"../util/misc/resolveOrigin.min.mjs";import{Point as e}from"../Point.min.mjs";import{radiansToDegrees as n,degreesToRadians as s}from"../util/misc/radiansDegreesConversion.min.mjs";import{isLocked as r,NOT_ALLOWED_CURSOR as o,findCornerQuadrant as t,getLocalPoint as m}from"./util.min.mjs";import{wrapWithFireEvent as c}from"./wrapWithFireEvent.min.mjs";import{wrapWithFixedAnchor as a}from"./wrapWithFixedAnchor.min.mjs";import{SKEW_Y as l,SCALE_Y as g,SKEW_X as w,SCALE_X as f,SKEWING as k,CENTER as p}from"../constants.min.mjs";const u={x:{counterAxis:"y",scale:f,skew:w,lockSkewing:"lockSkewingX",origin:"originX",flip:"flipX"},y:{counterAxis:"x",scale:g,skew:l,lockSkewing:"lockSkewingY",origin:"originY",flip:"flipY"}},x=["ns","nesw","ew","nwse"],d=(i,e,n,s)=>{if(0!==e.x&&r(n,"lockSkewingY"))return o;if(0!==e.y&&r(n,"lockSkewingX"))return o;const m=t(n,e,s)%4;return`${x[m]}-resize`};function X(o,t,l,g,w){const{target:x}=l,{counterAxis:d,origin:X,lockSkewing:S,skew:y,flip:Y}=u[o];if(r(x,S))return!1;const{origin:h,flip:j}=u[d],D=i(l[h])*(x[j]?-1:1),v=-Math.sign(D)*(x[Y]?-1:1),A=.5*-((0===x[y]&&m(l,p,p,g,w)[o]>0||x[y]>0?1:-1)*v)+.5,M=c(k,a((i,r,t,m)=>function(i,r,o){let{target:t,ex:m,ey:c,skewingSide:a,...l}=r;const{skew:g}=u[i],w=o.subtract(new e(m,c)).divide(new e(t.scaleX,t.scaleY))[i],k=t[g],p=l[g],x=Math.tan(s(p)),d="y"===i?t._getTransformedDimensions({scaleX:1,scaleY:1,skewX:0}).x:t._getTransformedDimensions({scaleX:1,scaleY:1}).y,X=2*w*a/Math.max(d,1)+x,S=n(Math.atan(X));t.set(g,S);const y=k!==t[g];if(y&&"y"===i){const{skewX:i,scaleX:e}=t,n=t._getTransformedDimensions({skewY:k}),s=t._getTransformedDimensions(),r=0!==i?n.x/s.x:1;1!==r&&t.set(f,r*e)}return y}(o,r,new e(t,m))));return M(t,{...l,[X]:A,skewingSide:v},g,w)}const S=(i,e,n,s)=>X("x",i,e,n,s),y=(i,e,n,s)=>X("y",i,e,n,s);export{d as skewCursorStyleHandler,S as skewHandlerX,y as skewHandlerY}; //# sourceMappingURL=skew.min.mjs.map