{"version":3,"file":"croppingControls.mjs","sources":["../../extensions/cropping_controls/croppingControls.ts"],"sourcesContent":["import { Control, controlsUtils } from 'fabric';\nimport {\n  changeCropHeight,\n  changeCropWidth,\n  changeCropX,\n  changeCropY,\n  ghostScalePositionHandler,\n  scaleEquallyCropGenerator,\n} from './croppingHandlers';\nimport { renderCornerControl } from './renderCornerControl';\n\nconst { scaleCursorStyleHandler } = controlsUtils;\n\nconst cropActionName = () => 'crop';\n// use this function if you want to generate new controls for every instance\nexport const createImageCroppingControls = () => ({\n  // scaling image\n  tls: new Control({\n    x: -0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    positionHandler: ghostScalePositionHandler,\n    actionHandler: scaleEquallyCropGenerator(-0.5, -0.5),\n  }),\n  brs: new Control({\n    x: 0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    positionHandler: ghostScalePositionHandler,\n    actionHandler: scaleEquallyCropGenerator(0.5, 0.5),\n  }),\n  trs: new Control({\n    x: 0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    positionHandler: ghostScalePositionHandler,\n    actionHandler: scaleEquallyCropGenerator(0.5, -0.5),\n  }),\n  bls: new Control({\n    x: -0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    positionHandler: ghostScalePositionHandler,\n    actionHandler: scaleEquallyCropGenerator(-0.5, 0.5),\n  }),\n  // cropping image\n  mlc: new Control({\n    x: -0.5,\n    y: 0,\n    sizeX: 4,\n    sizeY: 20,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: changeCropX,\n    getActionName: cropActionName,\n  }),\n\n  mrc: new Control({\n    x: 0.5,\n    y: 0,\n    sizeX: 4,\n    sizeY: 20,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: changeCropWidth,\n    getActionName: cropActionName,\n  }),\n\n  mbc: new Control({\n    x: 0,\n    y: 0.5,\n    sizeX: 20,\n    sizeY: 4,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: changeCropHeight,\n    getActionName: cropActionName,\n  }),\n\n  mtc: new Control({\n    x: 0,\n    y: -0.5,\n    sizeX: 20,\n    sizeY: 4,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: changeCropY,\n    getActionName: cropActionName,\n  }),\n\n  tlc: new Control({\n    angle: 0,\n    x: -0.5,\n    y: -0.5,\n    sizeX: 20,\n    sizeY: 4,\n    render: renderCornerControl,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: (...args) => {\n      const cropX = changeCropX(...args);\n      const cropY = changeCropY(...args);\n      return cropX || cropY;\n    },\n    getActionName: cropActionName,\n  }),\n\n  trc: new Control({\n    angle: 90,\n    x: 0.5,\n    y: -0.5,\n    sizeX: 20,\n    sizeY: 4,\n    render: renderCornerControl,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: (...args) => {\n      const width = changeCropWidth(...args);\n      const cropY = changeCropY(...args);\n      return width || cropY;\n    },\n    getActionName: cropActionName,\n  }),\n\n  blc: new Control({\n    angle: 270,\n    x: -0.5,\n    y: 0.5,\n    sizeX: 20,\n    sizeY: 4,\n    render: renderCornerControl,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: (...args) => {\n      const height = changeCropHeight(...args);\n      const cropX = changeCropX(...args);\n      return height || cropX;\n    },\n    getActionName: cropActionName,\n  }),\n\n  brc: new Control({\n    angle: 180,\n    x: 0.5,\n    y: 0.5,\n    sizeX: 20,\n    sizeY: 4,\n    render: renderCornerControl,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: (...args) => {\n      const height = changeCropHeight(...args);\n      const width = changeCropWidth(...args);\n      return height || width;\n    },\n    getActionName: cropActionName,\n  }),\n});\n"],"names":["scaleCursorStyleHandler","controlsUtils","cropActionName","createImageCroppingControls","tls","Control","x","y","cursorStyleHandler","positionHandler","ghostScalePositionHandler","actionHandler","scaleEquallyCropGenerator","brs","trs","bls","mlc","sizeX","sizeY","changeCropX","getActionName","mrc","changeCropWidth","mbc","changeCropHeight","mtc","changeCropY","tlc","angle","render","renderCornerControl","cropX","arguments","cropY","trc","width","blc","height","brc"],"mappings":"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"}