{"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} 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  ml: 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  mr: 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  mb: 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  mt: 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  tl: 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  tr: 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  bl: 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  br: 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","ml","Control","x","y","sizeX","sizeY","cursorStyleHandler","actionHandler","changeCropX","getActionName","mr","changeCropWidth","mb","changeCropHeight","mt","changeCropY","tl","angle","render","renderCornerControl","cropX","arguments","cropY","tr","width","bl","height","br"],"mappings":"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"}