{"version":3,"file":"enterCropMode.mjs","names":[],"sources":["../../extensions/cropping_controls/enterCropMode.ts"],"sourcesContent":["import { type FabricImage, type TPointerEventInfo } from 'fabric';\nimport { createImageCroppingControls } from './croppingControls';\nimport { cropPanMoveHandler, renderGhostImage } from './croppingHandlers';\n/**\n * Coordinates the change to image to enter crop mode and returns\n * a function to exit crop mode\n * This is a basic example for demos and your project may need persistent crop state,\n * in that case make your own function.\n */\nexport const enterCropMode = function enterCropMode(\n  this: (args: TPointerEventInfo) => void,\n  { target }: TPointerEventInfo,\n) {\n  const fabricImage = target as FabricImage;\n  const { controls, padding } = fabricImage;\n  fabricImage.padding = 0;\n  fabricImage.controls = createImageCroppingControls();\n  fabricImage.on('moving', cropPanMoveHandler);\n  fabricImage.on('before:render', renderGhostImage);\n  fabricImage.setCoords();\n  const exitCropMode = () => {\n    fabricImage.padding = padding;\n    fabricImage.off('moving', cropPanMoveHandler);\n    fabricImage.off('before:render', renderGhostImage);\n    fabricImage.controls = controls;\n    fabricImage.setCoords();\n    fabricImage.once('mousedblclick', enterCropMode);\n    fabricImage.canvas?.requestRenderAll();\n  };\n  fabricImage.once('mousedblclick', exitCropMode);\n  fabricImage.canvas?.requestRenderAll();\n};\n"],"mappings":";;;;;;;;;AASA,MAAa,gBAAgB,SAAS,cAEpC,EAAE,UACF;;CACA,MAAM,cAAc;CACpB,MAAM,EAAE,UAAU,YAAY;AAC9B,aAAY,UAAU;AACtB,aAAY,WAAW,6BAA6B;AACpD,aAAY,GAAG,UAAU,mBAAmB;AAC5C,aAAY,GAAG,iBAAiB,iBAAiB;AACjD,aAAY,WAAW;CACvB,MAAM,qBAAqB;;AACzB,cAAY,UAAU;AACtB,cAAY,IAAI,UAAU,mBAAmB;AAC7C,cAAY,IAAI,iBAAiB,iBAAiB;AAClD,cAAY,WAAW;AACvB,cAAY,WAAW;AACvB,cAAY,KAAK,iBAAiB,cAAc;AAChD,GAAA,sBAAA,YAAY,YAAA,QAAA,wBAAA,KAAA,KAAA,oBAAQ,kBAAkB;;AAExC,aAAY,KAAK,iBAAiB,aAAa;AAC/C,EAAA,uBAAA,YAAY,YAAA,QAAA,yBAAA,KAAA,KAAA,qBAAQ,kBAAkB"}