fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 4.67 kB
Source Map (JSON)
{"version":3,"file":"scaleSkew.min.mjs","sources":["../../../src/controls/scaleSkew.ts"],"sourcesContent":["import type {\n ControlCallback,\n ControlCursorCallback,\n TPointerEvent,\n TransformActionHandler,\n} from '../EventTypeDefs';\nimport { SCALE_X, SCALE_Y, SKEW_X, SKEW_Y } from '../constants';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TAxisKey } from '../typedefs';\nimport { scaleCursorStyleHandler, scalingX, scalingY } from './scale';\nimport { skewCursorStyleHandler, skewHandlerX, skewHandlerY } from './skew';\n\nfunction isAltAction(eventData: TPointerEvent, target: FabricObject) {\n return eventData[target.canvas!.altActionKey!];\n}\n\n/**\n * Inspect event, control and fabricObject to return the correct action name\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {Control} control the control that is interested in the action\n * @param {FabricObject} fabricObject the fabric object that is interested in the action\n * @return {String} an action name\n */\nexport const scaleOrSkewActionName: ControlCallback<\n TAxisKey<'skew' | 'scale'> | ''\n> = (eventData, control, fabricObject) => {\n const isAlternative = isAltAction(eventData, fabricObject);\n if (control.x === 0) {\n // then is scaleY or skewX\n return isAlternative ? SKEW_X : SCALE_Y;\n }\n if (control.y === 0) {\n // then is scaleY or skewX\n return isAlternative ? SKEW_Y : SCALE_X;\n }\n return '';\n};\n\n/**\n * Combine skew and scale style handlers to cover fabric standard use case\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {Control} control the control that is interested in the action\n * @param {FabricObject} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\nexport const scaleSkewCursorStyleHandler: ControlCursorCallback = (\n eventData,\n control,\n fabricObject,\n) => {\n return isAltAction(eventData, fabricObject)\n ? skewCursorStyleHandler(eventData, control, fabricObject)\n : scaleCursorStyleHandler(eventData, control, fabricObject);\n};\n/**\n * Composed action handler to either scale X or skew Y\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\nexport const scalingXOrSkewingY: TransformActionHandler = (\n eventData,\n transform,\n x,\n y,\n) => {\n return isAltAction(eventData, transform.target)\n ? skewHandlerY(eventData, transform, x, y)\n : scalingX(eventData, transform, x, y);\n};\n\n/**\n * Composed action handler to either scale Y or skew X\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\nexport const scalingYOrSkewingX: TransformActionHandler = (\n eventData,\n transform,\n x,\n y,\n) => {\n return isAltAction(eventData, transform.target)\n ? skewHandlerX(eventData, transform, x, y)\n : scalingY(eventData, transform, x, y);\n};\n"],"names":["isAltAction","eventData","target","canvas","altActionKey","scaleOrSkewActionName","control","fabricObject","isAlternative","x","SKEW_X","SCALE_Y","y","SKEW_Y","SCALE_X","scaleSkewCursorStyleHandler","skewCursorStyleHandler","scaleCursorStyleHandler","scalingXOrSkewingY","transform","skewHandlerY","scalingX","scalingYOrSkewingX","skewHandlerX","scalingY"],"mappings":"sQAYA,SAASA,EAAYC,EAA0BC,GAC7C,OAAOD,EAAUC,EAAOC,OAAQC,aAClC,CASO,MAAMC,EAETA,CAACJ,EAAWK,EAASC,KACvB,MAAMC,EAAgBR,EAAYC,EAAWM,GAC7C,OAAkB,IAAdD,EAAQG,EAEHD,EAAgBE,EAASC,EAEhB,IAAdL,EAAQM,EAEHJ,EAAgBK,EAASC,EAE3B,EAAE,EAUEC,EAAqDA,CAChEd,EACAK,EACAC,IAEOP,EAAYC,EAAWM,GAC1BS,EAAuBf,EAAWK,EAASC,GAC3CU,EAAwBhB,EAAWK,EAASC,GAWrCW,EAA6CA,CACxDjB,EACAkB,EACAV,EACAG,IAEOZ,EAAYC,EAAWkB,EAAUjB,QACpCkB,EAAanB,EAAWkB,EAAWV,EAAGG,GACtCS,EAASpB,EAAWkB,EAAWV,EAAGG,GAY3BU,EAA6CA,CACxDrB,EACAkB,EACAV,EACAG,IAEOZ,EAAYC,EAAWkB,EAAUjB,QACpCqB,EAAatB,EAAWkB,EAAWV,EAAGG,GACtCY,EAASvB,EAAWkB,EAAWV,EAAGG"}