{"version":3,"file":"draw.mjs","sources":["../../../extensions/aligning_guidelines/util/draw.ts"],"sourcesContent":["import type { Canvas } from '@postermywall/fabricjs-2';\nimport { Point } from '@postermywall/fabricjs-2';\nimport type { HorizontalLine, VerticalLine } from '../typedefs';\nimport { aligningLineConfig } from '../constant';\n\nfunction drawLine(canvas: Canvas, origin: Point, target: Point) {\n  const { width, color } = aligningLineConfig;\n  const ctx = canvas.getSelectionContext();\n  const viewportTransform = canvas.viewportTransform;\n  const zoom = canvas.getZoom();\n  ctx.save();\n  ctx.transform(...viewportTransform);\n  ctx.lineWidth = width / zoom;\n  ctx.strokeStyle = color;\n  ctx.setLineDash([5, 3]);\n  ctx.beginPath();\n  ctx.moveTo(origin.x, origin.y);\n  ctx.lineTo(target.x, target.y);\n  ctx.stroke();\n  drawX(ctx, zoom, origin);\n  drawX(ctx, zoom, target);\n  ctx.restore();\n}\n\nconst xSize = 2.4;\nfunction drawX(ctx: CanvasRenderingContext2D, zoom: number, point: Point) {\n  if(!aligningLineConfig.drawX){\n    return;\n  }\n  const size = xSize / zoom;\n  ctx.save();\n  ctx.translate(point.x, point.y);\n  ctx.beginPath();\n  ctx.moveTo(-size, -size);\n  ctx.lineTo(size, size);\n  ctx.moveTo(size, -size);\n  ctx.lineTo(-size, size);\n  ctx.stroke();\n  ctx.restore();\n}\nfunction drawPoint(canvas: Canvas, arr: Point[]) {\n  const { width, color } = aligningLineConfig;\n  const ctx = canvas.getSelectionContext();\n  const viewportTransform = canvas.viewportTransform;\n  const zoom = canvas.getZoom();\n  ctx.save();\n  ctx.transform(...viewportTransform);\n  ctx.lineWidth = width / zoom;\n  ctx.strokeStyle = color;\n  for (const item of arr) drawX(ctx, zoom, item);\n  ctx.restore();\n}\nexport function drawPointList(\n  canvas: Canvas,\n  list: Array<VerticalLine | HorizontalLine>,\n) {\n  const arr = list.map((item) => {\n    const isVertical = 'y2' in item;\n    const x = isVertical ? item.x : item.x1;\n    const y = isVertical ? item.y1 : item.y;\n    return new Point(x, y);\n  });\n  drawPoint(canvas, arr);\n}\n\nexport function drawVerticalLine(canvas: Canvas, coords: VerticalLine) {\n  const x = coords.x;\n  const origin = new Point(x, coords.y1);\n  const target = new Point(x, coords.y2);\n  drawLine(canvas, origin, target);\n}\n\nexport function drawHorizontalLine(canvas: Canvas, coords: HorizontalLine) {\n  const y = coords.y;\n  const origin = new Point(coords.x1, y);\n  const target = new Point(coords.x2, y);\n  drawLine(canvas, origin, target);\n}\n"],"names":["drawLine","canvas","origin","target","width","color","aligningLineConfig","ctx","getSelectionContext","viewportTransform","zoom","getZoom","save","transform","lineWidth","strokeStyle","setLineDash","beginPath","moveTo","x","y","lineTo","stroke","drawX","restore","xSize","point","size","translate","drawPoint","arr","item","drawPointList","list","map","isVertical","x1","y1","Point","drawVerticalLine","coords","y2","drawHorizontalLine","x2"],"mappings":";;;AAKA,SAASA,QAAQA,CAACC,MAAc,EAAEC,MAAa,EAAEC,MAAa,EAAE;EAC9D,MAAM;IAAEC,KAAK;AAAEC,IAAAA,KAAAA;AAAM,GAAC,GAAGC,kBAAkB,CAAA;AAC3C,EAAA,MAAMC,GAAG,GAAGN,MAAM,CAACO,mBAAmB,EAAE,CAAA;AACxC,EAAA,MAAMC,iBAAiB,GAAGR,MAAM,CAACQ,iBAAiB,CAAA;AAClD,EAAA,MAAMC,IAAI,GAAGT,MAAM,CAACU,OAAO,EAAE,CAAA;EAC7BJ,GAAG,CAACK,IAAI,EAAE,CAAA;AACVL,EAAAA,GAAG,CAACM,SAAS,CAAC,GAAGJ,iBAAiB,CAAC,CAAA;AACnCF,EAAAA,GAAG,CAACO,SAAS,GAAGV,KAAK,GAAGM,IAAI,CAAA;EAC5BH,GAAG,CAACQ,WAAW,GAAGV,KAAK,CAAA;EACvBE,GAAG,CAACS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;EACvBT,GAAG,CAACU,SAAS,EAAE,CAAA;EACfV,GAAG,CAACW,MAAM,CAAChB,MAAM,CAACiB,CAAC,EAAEjB,MAAM,CAACkB,CAAC,CAAC,CAAA;EAC9Bb,GAAG,CAACc,MAAM,CAAClB,MAAM,CAACgB,CAAC,EAAEhB,MAAM,CAACiB,CAAC,CAAC,CAAA;EAC9Bb,GAAG,CAACe,MAAM,EAAE,CAAA;AACZC,EAAAA,KAAK,CAAChB,GAAG,EAAEG,IAAI,EAAER,MAAM,CAAC,CAAA;AACxBqB,EAAAA,KAAK,CAAChB,GAAG,EAAEG,IAAI,EAAEP,MAAM,CAAC,CAAA;EACxBI,GAAG,CAACiB,OAAO,EAAE,CAAA;AACf,CAAA;AAEA,MAAMC,KAAK,GAAG,GAAG,CAAA;AACjB,SAASF,KAAKA,CAAChB,GAA6B,EAAEG,IAAY,EAAEgB,KAAY,EAAE;AACxE,EAAA,IAAG,CAACpB,kBAAkB,CAACiB,KAAK,EAAC;AAC3B,IAAA,OAAA;AACF,GAAA;AACA,EAAA,MAAMI,IAAI,GAAGF,KAAK,GAAGf,IAAI,CAAA;EACzBH,GAAG,CAACK,IAAI,EAAE,CAAA;EACVL,GAAG,CAACqB,SAAS,CAACF,KAAK,CAACP,CAAC,EAAEO,KAAK,CAACN,CAAC,CAAC,CAAA;EAC/Bb,GAAG,CAACU,SAAS,EAAE,CAAA;EACfV,GAAG,CAACW,MAAM,CAAC,CAACS,IAAI,EAAE,CAACA,IAAI,CAAC,CAAA;AACxBpB,EAAAA,GAAG,CAACc,MAAM,CAACM,IAAI,EAAEA,IAAI,CAAC,CAAA;AACtBpB,EAAAA,GAAG,CAACW,MAAM,CAACS,IAAI,EAAE,CAACA,IAAI,CAAC,CAAA;AACvBpB,EAAAA,GAAG,CAACc,MAAM,CAAC,CAACM,IAAI,EAAEA,IAAI,CAAC,CAAA;EACvBpB,GAAG,CAACe,MAAM,EAAE,CAAA;EACZf,GAAG,CAACiB,OAAO,EAAE,CAAA;AACf,CAAA;AACA,SAASK,SAASA,CAAC5B,MAAc,EAAE6B,GAAY,EAAE;EAC/C,MAAM;IAAE1B,KAAK;AAAEC,IAAAA,KAAAA;AAAM,GAAC,GAAGC,kBAAkB,CAAA;AAC3C,EAAA,MAAMC,GAAG,GAAGN,MAAM,CAACO,mBAAmB,EAAE,CAAA;AACxC,EAAA,MAAMC,iBAAiB,GAAGR,MAAM,CAACQ,iBAAiB,CAAA;AAClD,EAAA,MAAMC,IAAI,GAAGT,MAAM,CAACU,OAAO,EAAE,CAAA;EAC7BJ,GAAG,CAACK,IAAI,EAAE,CAAA;AACVL,EAAAA,GAAG,CAACM,SAAS,CAAC,GAAGJ,iBAAiB,CAAC,CAAA;AACnCF,EAAAA,GAAG,CAACO,SAAS,GAAGV,KAAK,GAAGM,IAAI,CAAA;EAC5BH,GAAG,CAACQ,WAAW,GAAGV,KAAK,CAAA;AACvB,EAAA,KAAK,MAAM0B,IAAI,IAAID,GAAG,EAAEP,KAAK,CAAChB,GAAG,EAAEG,IAAI,EAAEqB,IAAI,CAAC,CAAA;EAC9CxB,GAAG,CAACiB,OAAO,EAAE,CAAA;AACf,CAAA;AACO,SAASQ,aAAaA,CAC3B/B,MAAc,EACdgC,IAA0C,EAC1C;AACA,EAAA,MAAMH,GAAG,GAAGG,IAAI,CAACC,GAAG,CAAEH,IAAI,IAAK;AAC7B,IAAA,MAAMI,UAAU,IAAG,IAAI,IAAIJ,IAAI,CAAA,CAAA;IAC/B,MAAMZ,CAAC,GAAGgB,UAAU,GAAGJ,IAAI,CAACZ,CAAC,GAAGY,IAAI,CAACK,EAAE,CAAA;IACvC,MAAMhB,CAAC,GAAGe,UAAU,GAAGJ,IAAI,CAACM,EAAE,GAAGN,IAAI,CAACX,CAAC,CAAA;AACvC,IAAA,OAAO,IAAIkB,KAAK,CAACnB,CAAC,EAAEC,CAAC,CAAC,CAAA;AACxB,GAAC,CAAC,CAAA;AACFS,EAAAA,SAAS,CAAC5B,MAAM,EAAE6B,GAAG,CAAC,CAAA;AACxB,CAAA;AAEO,SAASS,gBAAgBA,CAACtC,MAAc,EAAEuC,MAAoB,EAAE;AACrE,EAAA,MAAMrB,CAAC,GAAGqB,MAAM,CAACrB,CAAC,CAAA;EAClB,MAAMjB,MAAM,GAAG,IAAIoC,KAAK,CAACnB,CAAC,EAAEqB,MAAM,CAACH,EAAE,CAAC,CAAA;EACtC,MAAMlC,MAAM,GAAG,IAAImC,KAAK,CAACnB,CAAC,EAAEqB,MAAM,CAACC,EAAE,CAAC,CAAA;AACtCzC,EAAAA,QAAQ,CAACC,MAAM,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAA;AAClC,CAAA;AAEO,SAASuC,kBAAkBA,CAACzC,MAAc,EAAEuC,MAAsB,EAAE;AACzE,EAAA,MAAMpB,CAAC,GAAGoB,MAAM,CAACpB,CAAC,CAAA;EAClB,MAAMlB,MAAM,GAAG,IAAIoC,KAAK,CAACE,MAAM,CAACJ,EAAE,EAAEhB,CAAC,CAAC,CAAA;EACtC,MAAMjB,MAAM,GAAG,IAAImC,KAAK,CAACE,MAAM,CAACG,EAAE,EAAEvB,CAAC,CAAC,CAAA;AACtCpB,EAAAA,QAAQ,CAACC,MAAM,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAAA;AAClC;;;;"}