{"version":3,"file":"WBAlignmentGuidelines.mjs","sources":["../../../../src/canvas/canvasx/WBAlignmentGuidelines.ts"],"sourcesContent":["//@ts-nocheck\nimport { Point } from '../../Point';\nimport { EventNames } from './EventNames';\n\n//**import Services */\n\nexport class alignmentGuideLines {\n  canvas: any = null;\n  ctx: any = null;\n  aligningLineOffset: number = 0;\n  masterMargin: number = 4;\n  margin: number = 4;\n  aligningLineWidth: number = 1;\n  aligningLineColor: any = '#3FB2FF';\n  viewportTransform: any = null;\n  zoom: number = 1;\n  verticalLines: any = [];\n  horizontalLines: any = [];\n  isScaling: any = null;\n  mouseDownPoint: any = null;\n  activeObject: any = null;\n  offsetX: number = 30;\n  offsetY: number = 30;\n  padding: number = 0;\n  candidateObjects: any = [];\n  hCandidateObjects: any = [];\n  vCandidateObjects: any = [];\n  horizontalInTheRange: boolean = false;\n  verticalInTheRange: boolean = false;\n  scalePoint: any = null;\n  debug: boolean = false;\n  mouseMovePoint: any = null;\n  timoutHandler: any;\n\n  constructor(canvas: any) {\n    this.canvas = canvas;\n    this.ctx = this.canvas.getSelectionContext();\n  }\n\n  onObjectMoving(e: any) {\n    this.isScaling = false;\n    this.moveHandler(e);\n  }\n\n  onObjectScaling(e: any) {\n    this.isScaling = true;\n    this.scaleHandler(e);\n  }\n\n  //todo: clear context caused the bug that the selection blue rect stop showing, there should be better way to clear the context\n  //as it clear verything including the selection rect\n  onBeforeRender() {\n    this.canvas.clearContext(this.ctx);\n    this.canvas.renderTopLayer(this.ctx);\n  }\n\n  onAfterRender() {\n    if (this.activeObject) {\n      this.ctx.font = '10px Arial';\n      if (this.isScaling && this.debug) {\n        const x = this.scalePoint.x * this.zoom + this.viewportTransform[4];\n        const y = this.scalePoint.y * this.zoom + this.viewportTransform[5];\n        this.ctx.fillText(\n          JSON.stringify(this.scalePoint) + JSON.stringify(this.activeObject),\n          x,\n          y\n        );\n        if (this.canvas.getActiveObject().parent)\n          this.ctx.fillText(JSON.stringify(this.activeObject), x, y + 20);\n      }\n      if (this.debug) {\n        const x =\n          this.activeObject.getCenterPoint().x * this.zoom +\n          this.viewportTransform[4];\n        const y =\n          this.activeObject.getCenterPoint().y * this.zoom +\n          this.viewportTransform[5];\n        this.ctx.fillText(\n          JSON.stringify(this.activeObject.getCenterPoint()),\n          x,\n          y\n        );\n      }\n    }\n\n    if (this.verticalLines)\n      this.verticalLines.forEach((vline: any) => {\n        this.drawVerticalLine(vline);\n      });\n    if (this.horizontalLines)\n      this.horizontalLines.forEach((hline: any) => {\n        this.drawHorizontalLine(hline);\n      });\n  }\n\n  onMouseUpRenderCanvas() {\n    this.verticalLines.length = this.horizontalLines.length = 0;\n    if (this.activeObject && !this.activeObject.isEditing)\n      this.activeObject.hasControls = true;\n\n    this.canvas.requestRenderAll();\n  }\n\n  onMouseDown({ pointer }: { pointer: any }) {\n    this.mouseDownPoint = { ...pointer };\n    this.zoom = this.canvas.getZoom();\n    this.viewportTransform = this.canvas.viewportTransform;\n  }\n\n  initializeEvents() {\n    // const esi = EventService.getInstance();\n    this.canvas.off(EventNames.OBJECT_MOVING, this.onObjectMoving.bind(this));\n    this.canvas.off(EventNames.OBJECT_SCALING, this.onObjectScaling.bind(this));\n    this.canvas.off(EventNames.BEFORE_RENDER, this.onBeforeRender.bind(this));\n    this.canvas.off(EventNames.AFTER_RENDER, this.onAfterRender.bind(this));\n    this.canvas.off('mouse:up', this.onMouseUpRenderCanvas.bind(this));\n    this.canvas.off('mouse:down', this.onMouseDown.bind(this));\n\n    // const esi = EventService.getInstance();\n    this.canvas.on(EventNames.OBJECT_MOVING, this.onObjectMoving.bind(this));\n    this.canvas.on(EventNames.OBJECT_SCALING, this.onObjectScaling.bind(this));\n    this.canvas.on(EventNames.BEFORE_RENDER, this.onBeforeRender.bind(this));\n    this.canvas.on(EventNames.AFTER_RENDER, this.onAfterRender.bind(this));\n    this.canvas.on('mouse:up', this.onMouseUpRenderCanvas.bind(this));\n\n    this.canvas.on('mouse:down', this.onMouseDown.bind(this));\n  }\n\n  snapLine(aLine: any) {\n    this.activeObject.setPositionByOrigin(\n      new Point(aLine.x, aLine.y),\n      aLine.xalign,\n      aLine.yalign\n    );\n  }\n\n  drawVerticalLine(coords: { x: any; y1: any; y2: any; type: string }) {\n    let padding: number = 0;\n    if (coords.type.substring(2, 3) === 'l') padding = -this.padding;\n    if (coords.type.substring(2, 3) === 'c') padding = 0;\n    if (coords.type.substring(2, 3) === 'r') padding = this.padding;\n    let x1 = coords.x! + this.padding,\n      y1 = coords.y1! > coords.y2! ? coords.y2! : coords.y1!,\n      x2 = coords.x! + this.padding,\n      y2 = coords.y2! > coords.y1! ? coords.y2! : coords.y1!;\n    this.zoom = this.canvas.getZoom();\n    this.viewportTransform = this.canvas.viewportTransform;\n    if (this.viewportTransform) {\n      x1 = x1 * this.zoom + this.viewportTransform[4];\n      y1 =\n        y1 * this.zoom + this.viewportTransform[5] - this.offsetY * this.zoom;\n      x2 = x2 * this.zoom + this.viewportTransform[4];\n      y2 =\n        y2 * this.zoom + this.viewportTransform[5] + this.offsetY * this.zoom;\n      const lineColorMap: any = { l: 'red', c: 'yellow', r: 'green' };\n      const lineColor = lineColorMap[coords.type.substring(1, 2)];\n      this.drawLine(x1, y1, x2, y2, lineColor);\n    }\n  }\n\n  drawHorizontalLine(coords: { x1: any; x2: any; y: any; type: string }) {\n    let padding: number = 0;\n    if (coords.type.substring(2, 3) === 't') padding = -this.padding;\n    if (coords.type.substring(2, 3) === 'c') padding = 0;\n    if (coords.type.substring(2, 3) === 'b') padding = this.padding;\n    let x1 = coords.x1! > coords.x2! ? coords.x2! : coords.x1!,\n      y1 = coords.y! + padding,\n      x2 = coords.x2! > coords.x1! ? coords.x2! : coords.x1!,\n      y2 = coords.y! + padding;\n    this.zoom = this.canvas.getZoom();\n    //let offset = this.canvas.getPositionOnCanvas(0, 0);\n    this.viewportTransform = this.canvas.viewportTransform;\n    if (this.viewportTransform) {\n      x1 =\n        x1 * this.zoom + this.viewportTransform[4] - this.offsetX * this.zoom;\n      y1 = y1 * this.zoom + this.viewportTransform[5];\n      x2 =\n        x2 * this.zoom + this.viewportTransform[4] + this.offsetX * this.zoom;\n      y2 = y2 * this.zoom + this.viewportTransform[5];\n      const lineColorMap: any = { t: 'red', c: 'yellow', b: 'green' };\n      const lineColor = lineColorMap[coords.type.substring(1, 2)];\n      this.drawLine(x1, y1, x2, y2, lineColor);\n    }\n  }\n\n  drawLine(x1: any, y1: any, x2: any, y2: any, lineColor: any) {\n    this.ctx.save();\n    this.ctx.lineWidth = this.aligningLineWidth;\n    this.ctx.strokeStyle = this.aligningLineColor;\n    this.ctx.beginPath();\n    this.ctx.moveTo(x1, y1);\n    this.ctx.lineTo(x2, y2);\n    this.ctx.stroke();\n    this.ctx.restore();\n  }\n\n  isInRange(value1: number, value2: number) {\n    return Math.abs(value1 - value2) <= this.margin * this.zoom;\n  }\n\n  skipActiveObject() {\n    this.viewportTransform = this.canvas.viewportTransform;\n    if (\n      !this.activeObject ||\n      !this.viewportTransform ||\n      this.activeObject.objType === 'WBRectPanel' ||\n      this.activeObject.objType === 'common' ||\n      this.activeObject.angle !== 0 ||\n      this.activeObject.isPanelTitle\n    )\n      return true;\n    else return false;\n  }\n\n  skipCandidateObject(currentObject: any) {\n    if (\n      !currentObject ||\n      !currentObject.visible ||\n      currentObject.objType === 'WBLine' ||\n      currentObject.objType === 'XConnector' ||\n      currentObject.objType === 'common' ||\n      currentObject.group ||\n      currentObject === this.activeObject ||\n      currentObject.id === this.activeObject.id ||\n      !currentObject.isOnScreen()\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  findCandidateObjects() {\n    this.zoom = this.canvas.getZoom();\n    this.margin = this.masterMargin / this.zoom;\n    var canvasObjects = this.canvas.getObjects();\n    this.candidateObjects = [];\n    for (let i = canvasObjects.length; i--; ) {\n      const candidateObject = canvasObjects[i];\n      if (this.skipCandidateObject(candidateObject)) continue;\n      this.candidateObjects.push(candidateObject);\n    }\n\n    const leftBoundary = this.activeObject.left - this.margin * this.zoom * 2,\n      rightBoundary =\n        this.activeObject.left +\n        this.activeObject.width +\n        this.margin * this.zoom * 2,\n      topBoundary = this.activeObject.top - this.margin * this.zoom * 2,\n      bottomBoundary =\n        this.activeObject.top +\n        this.activeObject.height +\n        this.margin * this.zoom * 2;\n\n    this.hCandidateObjects = this.candidateObjects;\n    this.vCandidateObjects = this.candidateObjects;\n  }\n\n  findUniqueGuideLines() {\n    const compareABS = (property: any) => (a: any, b: any) =>\n      Math.abs(a[property]) - Math.abs(b[property]);\n    const vLineIDs = ['vl', 'vc', 'vr', 'vs'];\n    const newVLines: any[] = [];\n    vLineIDs.map((id: string) => {\n      let Lines = this.verticalLines.filter(\n        (l: any) => l.type.substring(0, 2) === id\n      );\n      if (Lines.length > 0) {\n        const l = Lines.sort(compareABS('distance'))[0];\n        newVLines.push(l);\n      }\n    });\n    const hLineIDs = ['ht', 'hc', 'hb', 'hs'];\n    const newHLines: any[] = [];\n    hLineIDs.map((id: string) => {\n      let Lines = this.horizontalLines.filter(\n        (l: any) => l.type.substring(0, 2) === id\n      );\n      if (Lines.length > 0) {\n        const l = Lines.sort(compareABS('distance'))[0];\n        newHLines.push(l);\n      }\n    });\n\n    this.verticalLines = newVLines;\n    this.horizontalLines = newHLines;\n  }\n\n  snap() {\n    this.verticalLines.forEach((l: any) => {\n      this.snapLine(l);\n    });\n    this.horizontalLines.forEach((l: any) => {\n      this.snapLine(l);\n    });\n  }\n\n  scaleSnap() {\n    //to be done later\n  }\n\n  findGuideLines() {\n    this.verticalLines = [];\n    this.horizontalLines = [];\n    this.horizontalInTheRange = false;\n    this.verticalInTheRange = false;\n\n    for (let i = this.vCandidateObjects.length; i--; ) {\n      let cObject = this.vCandidateObjects[i];\n\n      const aOKeyPoints = [\n        {\n          yt: this.activeObject.aCoords.tl.y,\n          yb: this.activeObject.aCoords.bl.y,\n          yc: this.activeObject.getCenterPoint().y,\n          x: this.activeObject.getCenterPoint().x,\n          type: 'center',\n        },\n        {\n          yt: this.activeObject.aCoords.tl.y,\n          yb: this.activeObject.aCoords.bl.y,\n          yc: this.activeObject.getCenterPoint().y,\n          x: this.activeObject.aCoords.tl.x,\n          type: 'left',\n        },\n        {\n          yt: this.activeObject.aCoords.tl.y,\n          yb: this.activeObject.aCoords.bl.y,\n          yc: this.activeObject.getCenterPoint().y,\n          x: this.activeObject.aCoords.tr.x,\n          type: 'right',\n        },\n      ];\n      const cOKeyPoints = [\n        {\n          yt: cObject.aCoords.tl.y,\n          yb: cObject.aCoords.bl.y,\n          yc: cObject.getCenterPoint().y,\n          x: cObject.getCenterPoint().x,\n          type: 'center',\n        },\n        {\n          yt: cObject.aCoords.tl.y,\n          yb: cObject.aCoords.bl.y,\n          yc: cObject.getCenterPoint().y,\n          x: cObject.aCoords.tl.x,\n          type: 'left',\n        },\n        {\n          yt: cObject.aCoords.tl.y,\n          yb: cObject.aCoords.bl.y,\n          yc: cObject.getCenterPoint().y,\n          x: cObject.aCoords.tr.x,\n          type: 'right',\n        },\n      ];\n      for (let p1 in aOKeyPoints)\n        for (let p2 in cOKeyPoints) {\n          this.findVerticalLine(aOKeyPoints[p1], cOKeyPoints[p2], cObject);\n        }\n    }\n\n    for (let i = this.hCandidateObjects.length; i--; ) {\n      let cObject = this.hCandidateObjects[i];\n      const aOKeyPoints = [\n        {\n          xl: this.activeObject.aCoords.tl.x,\n          xr: this.activeObject.aCoords.tr.x,\n          xc: this.activeObject.getCenterPoint().x,\n          y: this.activeObject.getCenterPoint().y,\n          type: 'center',\n        },\n        {\n          xl: this.activeObject.aCoords.tl.x,\n          xr: this.activeObject.aCoords.tr.x,\n          xc: this.activeObject.getCenterPoint().x,\n          y: this.activeObject.aCoords.tl.y,\n          type: 'top',\n        },\n        {\n          xl: this.activeObject.aCoords.tl.x,\n          xr: this.activeObject.aCoords.tr.x,\n          xc: this.activeObject.getCenterPoint().x,\n          y: this.activeObject.aCoords.bl.y,\n          type: 'bottom',\n        },\n      ];\n      const cOKeyPoints = [\n        {\n          xl: cObject.aCoords.tl.x,\n          xr: cObject.aCoords.tr.x,\n          xc: cObject.getCenterPoint().x,\n          y: cObject.getCenterPoint().y,\n          type: 'center',\n        },\n        {\n          xl: cObject.aCoords.tl.x,\n          xr: cObject.aCoords.tr.x,\n          xc: cObject.getCenterPoint().x,\n          y: cObject.aCoords.tl.y,\n          type: 'top',\n        },\n        {\n          xl: cObject.aCoords.tl.x,\n          xr: cObject.aCoords.tr.x,\n          xc: cObject.getCenterPoint().x,\n          y: cObject.aCoords.bl.y,\n          type: 'bottom',\n        },\n      ];\n\n      for (let p1 in aOKeyPoints)\n        for (let p2 in cOKeyPoints) {\n          this.findHorizontalLine(aOKeyPoints[p1], cOKeyPoints[p2], cObject);\n        }\n    }\n    if (!this.horizontalInTheRange) {\n      this.horizontalLines.length = 0;\n    }\n    if (!this.verticalInTheRange) {\n      this.verticalLines.length = 0;\n    }\n  }\n\n  findScaleGuideLines(e: any) {\n    this.verticalLines = [];\n    this.horizontalLines = [];\n    this.horizontalInTheRange = false;\n    this.verticalInTheRange = false;\n\n    // Which point must be crossed\n    switch (e.transform.corner) {\n      case 'bl':\n        this.scalePoint = {\n          x: this.activeObject.aCoords.bl.x,\n          y: this.activeObject.aCoords.bl.y,\n        };\n        break;\n      case 'br':\n        this.scalePoint = {\n          x: this.activeObject.aCoords.br.x,\n          y: this.activeObject.aCoords.br.y,\n        };\n        break;\n      case 'tl':\n        this.scalePoint = {\n          x: this.activeObject.aCoords.tl.x,\n          y: this.activeObject.aCoords.tl.y,\n        };\n        break;\n      case 'tr':\n        this.scalePoint = {\n          x: this.activeObject.aCoords.tr.x,\n          y: this.activeObject.aCoords.tr.y,\n        };\n        break;\n    }\n\n    for (let i = this.vCandidateObjects.length; i--; ) {\n      let cObject = this.vCandidateObjects[i];\n      const aOKeyPoints = [\n        {\n          yt: this.activeObject.aCoords.tl.y,\n          yb: this.activeObject.aCoords.bl.y,\n          yc: this.activeObject.getCenterPoint().y,\n          x: this.scalePoint?.x,\n          type: 'scale',\n        },\n      ];\n      const cOKeyPoints = [\n        {\n          yt: cObject.aCoords.tl.y,\n          yb: cObject.aCoords.bl.y,\n          yc: cObject.getCenterPoint().y,\n          x: cObject.aCoords.tl.x,\n          type: 'left',\n        },\n        {\n          yt: cObject.aCoords.tl.y,\n          yb: cObject.aCoords.bl.y,\n          yc: cObject.getCenterPoint().y,\n          x: cObject.aCoords.tr.x,\n          type: 'right',\n        },\n        {\n          yt: cObject.aCoords.tl.y,\n          yb: cObject.aCoords.bl.y,\n          yc: cObject.getCenterPoint().y,\n          x: cObject.getCenterPoint().x,\n          type: 'center',\n        },\n      ];\n      for (let p1 in aOKeyPoints)\n        for (let p2 in cOKeyPoints) {\n          this.findVerticalLine(aOKeyPoints[p1], cOKeyPoints[p2], cObject);\n        }\n    }\n\n    for (let i = this.hCandidateObjects.length; i--; ) {\n      let cObject = this.hCandidateObjects[i];\n      const aOKeyPoints = [\n        {\n          xl: this.activeObject.aCoords.tl.x,\n          xr: this.activeObject.aCoords.tr.x,\n          xc: this.activeObject.getCenterPoint().x,\n          y: this.scalePoint?.y,\n          type: 'scale',\n        },\n      ];\n      const cOKeyPoints = [\n        {\n          xl: cObject.aCoords.tl.x,\n          xr: cObject.aCoords.tr.x,\n          xc: cObject.getCenterPoint().x,\n          y: cObject.aCoords.tl.y,\n          type: 'top',\n        },\n        {\n          xl: cObject.aCoords.tl.x,\n          xr: cObject.aCoords.tr.x,\n          xc: cObject.getCenterPoint().x,\n          y: cObject.aCoords.bl.y,\n          type: 'bottom',\n        },\n        {\n          xl: cObject.aCoords.tl.x,\n          xr: cObject.aCoords.tr.x,\n          xc: cObject.getCenterPoint().x,\n          y: cObject.getCenterPoint().y,\n          type: 'center',\n        },\n      ];\n\n      for (let p1 in aOKeyPoints)\n        for (let p2 in cOKeyPoints) {\n          this.findHorizontalLine(aOKeyPoints[p1], cOKeyPoints[p2], cObject);\n        }\n    }\n    if (!this.horizontalInTheRange) {\n      this.horizontalLines.length = 0;\n    }\n    if (!this.verticalInTheRange) {\n      this.verticalLines.length = 0;\n    }\n  }\n\n  findHorizontalLine(aO: any, cO: any, cObj: any) {\n    if (this.isInRange(aO.y, cO.y)) {\n      this.horizontalInTheRange = true;\n      const aLine = {\n        y: cO.y,\n        x1: cO.xl < aO.xl ? cO.xl : aO.xl,\n        x2: cO.xr < aO.xr ? aO.xr : cO.xr,\n        x: aO.xc,\n        xalign: 'center',\n        yalign: aO.type,\n        type: 'h' + aO.type.substring(0, 1) + cO.type.substring(0, 1),\n        difference: cO.y - aO.y,\n        distance: cO.xc - aO.xc,\n        obj: cObj,\n      };\n      const el = this.horizontalLines.find((l: any) => {\n        l.type.substring(0, 2) === aLine.type.substring(0, 2);\n      });\n      if (!el) {\n        this.horizontalLines.push(aLine);\n      } else if (Math.abs(el.distance) > Math.abs(aLine.distance)) {\n        this.horizontalLines = this.horizontalLines.filter(function (l: any) {\n          return l.type.substring(0, 2) !== aLine.type.substring(0, 2);\n        });\n        this.horizontalLines.push(aLine);\n      } else if (\n        Math.abs(el.distance) === Math.abs(aLine.distance) &&\n        Math.abs(el.difference) >= Math.abs(aLine.difference)\n      ) {\n        this.horizontalLines = this.horizontalLines.filter(function (l: any) {\n          return l.type.substring(0, 2) !== aLine.type.substring(0, 2);\n        });\n        this.horizontalLines.push(aLine);\n      }\n    }\n  }\n\n  findVerticalLine(aO: any, cO: any, cObj: any) {\n    if (this.isInRange(aO.x, cO.x)) {\n      this.verticalInTheRange = true;\n      const aLine = {\n        x: cO.x,\n        y1: cO.yt < aO.yt ? cO.yt : aO.yt,\n        y2: cO.yb < aO.yb ? aO.yb : cO.yb,\n        y: aO.yc,\n        xalign: aO.type,\n        yalign: 'center',\n        type: 'v' + aO.type.substring(0, 1) + cO.type.substring(0, 1),\n        difference: cO.x - aO.x,\n        distance: cO.yc - aO.yc,\n        obj: cObj,\n      };\n\n      const el = this.verticalLines.find((l: any) => {\n        l.type.substring(0, 2) === aLine.type.substring(0, 2);\n      });\n      if (!el) {\n        this.verticalLines.push(aLine);\n      } else if (\n        Math.abs(el.distance) > Math.abs(aLine.distance) ||\n        (Math.abs(el.distance) === Math.abs(aLine.distance) &&\n          Math.abs(el.difference) >= Math.abs(aLine.difference))\n      ) {\n        this.verticalLines = this.verticalLines.filter(function (l: any) {\n          return l.type.substring(0, 2) !== aLine.type.substring(0, 2);\n        });\n        this.verticalLines.push(aLine);\n      }\n    }\n  }\n\n  scaleHandler(e: any) {\n    this.activeObject = e.target;\n    //this.activeObject.dirty = true;\n    //this.canvas.requestRenderAll();\n    if (this.skipActiveObject()) return;\n    this.activeObject.setCoords();\n    //let offset = this.canvas.getPositionOnCanvas(0, 0);\n    this.findCandidateObjects();\n    this.findScaleGuideLines(e);\n    this.findUniqueGuideLines();\n    //this.scaleSnap();\n  }\n\n  moveHandler(e: any) {\n    this.activeObject = e.target;\n    if (this.skipActiveObject()) return;\n    //this.activeObject.dirty = true;\n    //this.canvas.requestRenderAll();\n    //let offset = this.canvas.getPositionOnCanvas(0, 0);\n    this.activeObject.hasControls = false;\n    this.activeObject.setCoords();\n    this.findCandidateObjects();\n    this.findGuideLines();\n    this.findUniqueGuideLines();\n    this.snap();\n  }\n}\n"],"names":["alignmentGuideLines","constructor","canvas","_defineProperty","ctx","getSelectionContext","onObjectMoving","e","isScaling","moveHandler","onObjectScaling","scaleHandler","onBeforeRender","clearContext","renderTopLayer","onAfterRender","activeObject","font","debug","x","scalePoint","zoom","viewportTransform","y","fillText","JSON","stringify","getActiveObject","parent","getCenterPoint","verticalLines","forEach","vline","drawVerticalLine","horizontalLines","hline","drawHorizontalLine","onMouseUpRenderCanvas","length","isEditing","hasControls","requestRenderAll","onMouseDown","_ref","pointer","mouseDownPoint","_objectSpread","getZoom","initializeEvents","off","EventNames","OBJECT_MOVING","bind","OBJECT_SCALING","BEFORE_RENDER","AFTER_RENDER","on","snapLine","aLine","setPositionByOrigin","Point","xalign","yalign","coords","type","substring","padding","x1","y1","y2","x2","offsetY","lineColorMap","l","c","r","lineColor","drawLine","offsetX","t","b","save","lineWidth","aligningLineWidth","strokeStyle","aligningLineColor","beginPath","moveTo","lineTo","stroke","restore","isInRange","value1","value2","Math","abs","margin","skipActiveObject","objType","angle","isPanelTitle","skipCandidateObject","currentObject","visible","group","id","isOnScreen","findCandidateObjects","masterMargin","canvasObjects","getObjects","candidateObjects","i","candidateObject","push","left","width","topBoundary","top","height","hCandidateObjects","vCandidateObjects","findUniqueGuideLines","compareABS","property","a","vLineIDs","newVLines","map","Lines","filter","sort","hLineIDs","newHLines","snap","scaleSnap","findGuideLines","horizontalInTheRange","verticalInTheRange","cObject","aOKeyPoints","yt","aCoords","tl","yb","bl","yc","tr","cOKeyPoints","p1","p2","findVerticalLine","xl","xr","xc","findHorizontalLine","findScaleGuideLines","transform","corner","br","_this$scalePoint","_this$scalePoint2","aO","cO","cObj","difference","distance","obj","el","find","target","setCoords"],"mappings":"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"}