{"version":3,"file":"renderCornerControl.mjs","sources":["../../extensions/cropping_controls/renderCornerControl.ts"],"sourcesContent":["import {\n  type ControlRenderingStyleOverride,\n  type InteractiveFabricObject,\n  util,\n  type Control,\n} from 'fabric';\n\nconst { degreesToRadians } = util;\n\n/**\n * Render a control for the main corners of a cropping image\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for FabricObject controls style\n * @param {FabricObject} fabricObject the fabric object for which we are rendering controls\n */\nexport function renderCornerControl(\n  this: Control,\n  ctx: CanvasRenderingContext2D,\n  left: number,\n  top: number,\n  styleOverride: ControlRenderingStyleOverride,\n  fabricObject: InteractiveFabricObject,\n) {\n  ctx.save();\n  const { stroke, xSize, ySize, opName } = this.commonRenderProps(\n      ctx,\n      left,\n      top,\n      fabricObject,\n      styleOverride,\n    ),\n    xSizeBy2 = xSize / 2,\n    ySizeBy2 = ySize / 2;\n  //  angle is relative to canvas plane\n  ctx.rotate(degreesToRadians(this.angle));\n  ctx.beginPath();\n  ctx.moveTo(-ySizeBy2, 0);\n  ctx.lineTo(-ySizeBy2, xSizeBy2);\n  ctx.lineTo(ySizeBy2, xSizeBy2);\n  ctx.lineTo(ySizeBy2, ySizeBy2);\n  ctx.lineTo(xSizeBy2, ySizeBy2);\n  ctx.lineTo(xSizeBy2, -ySizeBy2);\n  ctx.lineTo(-ySizeBy2, -ySizeBy2);\n  ctx.closePath();\n  ctx[opName]();\n  stroke && ctx.stroke();\n  ctx.restore();\n}\n"],"names":["degreesToRadians","util","renderCornerControl","ctx","left","top","styleOverride","fabricObject","save","stroke","xSize","ySize","opName","commonRenderProps","xSizeBy2","ySizeBy2","rotate","angle","beginPath","moveTo","lineTo","closePath","restore"],"mappings":";;AAOA,MAAM;AAAEA,EAAAA;AAAiB,CAAC,GAAGC,IAAI;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAEjCC,GAA6B,EAC7BC,IAAY,EACZC,GAAW,EACXC,aAA4C,EAC5CC,YAAqC,EACrC;EACAJ,GAAG,CAACK,IAAI,EAAE;EACV,MAAM;MAAEC,MAAM;MAAEC,KAAK;MAAEC,KAAK;AAAEC,MAAAA;AAAO,KAAC,GAAG,IAAI,CAACC,iBAAiB,CAC3DV,GAAG,EACHC,IAAI,EACJC,GAAG,EACHE,YAAY,EACZD,aACF,CAAC;IACDQ,QAAQ,GAAGJ,KAAK,GAAG,CAAC;IACpBK,QAAQ,GAAGJ,KAAK,GAAG,CAAC;AACtB;EACAR,GAAG,CAACa,MAAM,CAAChB,gBAAgB,CAAC,IAAI,CAACiB,KAAK,CAAC,CAAC;EACxCd,GAAG,CAACe,SAAS,EAAE;AACff,EAAAA,GAAG,CAACgB,MAAM,CAAC,CAACJ,QAAQ,EAAE,CAAC,CAAC;AACxBZ,EAAAA,GAAG,CAACiB,MAAM,CAAC,CAACL,QAAQ,EAAED,QAAQ,CAAC;AAC/BX,EAAAA,GAAG,CAACiB,MAAM,CAACL,QAAQ,EAAED,QAAQ,CAAC;AAC9BX,EAAAA,GAAG,CAACiB,MAAM,CAACL,QAAQ,EAAEA,QAAQ,CAAC;AAC9BZ,EAAAA,GAAG,CAACiB,MAAM,CAACN,QAAQ,EAAEC,QAAQ,CAAC;AAC9BZ,EAAAA,GAAG,CAACiB,MAAM,CAACN,QAAQ,EAAE,CAACC,QAAQ,CAAC;EAC/BZ,GAAG,CAACiB,MAAM,CAAC,CAACL,QAAQ,EAAE,CAACA,QAAQ,CAAC;EAChCZ,GAAG,CAACkB,SAAS,EAAE;AACflB,EAAAA,GAAG,CAACS,MAAM,CAAC,EAAE;AACbH,EAAAA,MAAM,IAAIN,GAAG,CAACM,MAAM,EAAE;EACtBN,GAAG,CAACmB,OAAO,EAAE;AACf;;;;"}