fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 2 kB
Source Map (JSON)
{"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"}