UNPKG

fabric

Version:

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

1 lines 5.54 kB
{"version":3,"file":"scaleSkew.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":";;;;AAYA,SAASA,WAAWA,CAACC,SAAwB,EAAEC,MAAoB,EAAE;AACnE,EAAA,OAAOD,SAAS,CAACC,MAAM,CAACC,MAAM,CAAEC,YAAY,CAAE,CAAA;AAChD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,qBAEZ,GAAGA,CAACJ,SAAS,EAAEK,OAAO,EAAEC,YAAY,KAAK;AACxC,EAAA,MAAMC,aAAa,GAAGR,WAAW,CAACC,SAAS,EAAEM,YAAY,CAAC,CAAA;AAC1D,EAAA,IAAID,OAAO,CAACG,CAAC,KAAK,CAAC,EAAE;AACnB;AACA,IAAA,OAAOD,aAAa,GAAGE,MAAM,GAAGC,OAAO,CAAA;AACzC,GAAA;AACA,EAAA,IAAIL,OAAO,CAACM,CAAC,KAAK,CAAC,EAAE;AACnB;AACA,IAAA,OAAOJ,aAAa,GAAGK,MAAM,GAAGC,OAAO,CAAA;AACzC,GAAA;AACA,EAAA,OAAO,EAAE,CAAA;AACX,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,2BAAkD,GAAGA,CAChEd,SAAS,EACTK,OAAO,EACPC,YAAY,KACT;EACH,OAAOP,WAAW,CAACC,SAAS,EAAEM,YAAY,CAAC,GACvCS,sBAAsB,CAACf,SAAS,EAAEK,OAAO,EAAEC,YAAY,CAAC,GACxDU,uBAAuB,CAAChB,SAAS,EAAEK,OAAO,EAAEC,YAAY,CAAC,CAAA;AAC/D,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMW,kBAA0C,GAAGA,CACxDjB,SAAS,EACTkB,SAAS,EACTV,CAAC,EACDG,CAAC,KACE;AACH,EAAA,OAAOZ,WAAW,CAACC,SAAS,EAAEkB,SAAS,CAACjB,MAAM,CAAC,GAC3CkB,YAAY,CAACnB,SAAS,EAAEkB,SAAS,EAAEV,CAAC,EAAEG,CAAC,CAAC,GACxCS,QAAQ,CAACpB,SAAS,EAAEkB,SAAS,EAAEV,CAAC,EAAEG,CAAC,CAAC,CAAA;AAC1C,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMU,kBAA0C,GAAGA,CACxDrB,SAAS,EACTkB,SAAS,EACTV,CAAC,EACDG,CAAC,KACE;AACH,EAAA,OAAOZ,WAAW,CAACC,SAAS,EAAEkB,SAAS,CAACjB,MAAM,CAAC,GAC3CqB,YAAY,CAACtB,SAAS,EAAEkB,SAAS,EAAEV,CAAC,EAAEG,CAAC,CAAC,GACxCY,QAAQ,CAACvB,SAAS,EAAEkB,SAAS,EAAEV,CAAC,EAAEG,CAAC,CAAC,CAAA;AAC1C;;;;"}