{"version":3,"file":"boundingBoxFromPoints.min.mjs","sources":["../../../../src/util/misc/boundingBoxFromPoints.ts"],"sourcesContent":["import type { XY } from '../../Point';\nimport { Point } from '../../Point';\nimport type { TBBox } from '../../typedefs';\n\n/**\n * Calculates bounding box (left, top, width, height) from given `points`\n * @param {XY[]} points\n * @return {Object} Object with left, top, width, height properties\n */\nexport const makeBoundingBoxFromPoints = (points: XY[]): TBBox => {\n  if (points.length === 0) {\n    return {\n      left: 0,\n      top: 0,\n      width: 0,\n      height: 0,\n    };\n  }\n\n  const { min, max } = points.reduce(\n    ({ min, max }, curr) => {\n      return {\n        min: min.min(curr),\n        max: max.max(curr),\n      };\n    },\n    { min: new Point(points[0]), max: new Point(points[0]) }\n  );\n\n  const size = max.subtract(min);\n\n  return {\n    left: min.x,\n    top: min.y,\n    width: size.x,\n    height: size.y,\n  };\n};\n"],"names":["makeBoundingBoxFromPoints","points","length","left","top","width","height","min","max","reduce","_ref","curr","Point","size","subtract","x","y"],"mappings":"4CASaA,MAAAA,EAA6BC,IACxC,GAAsB,IAAlBA,EAAOC,OACT,MAAO,CACLC,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,OAAQ,GAIZ,MAAMC,IAAEA,EAAGC,IAAEA,GAAQP,EAAOQ,QAC1B,CAAAC,EAAeC,KAAS,IAAvBJ,IAAEA,EAAGC,IAAEA,GAAKE,EACX,MAAO,CACLH,IAAKA,EAAIA,IAAII,GACbH,IAAKA,EAAIA,IAAIG,GACd,GAEH,CAAEJ,IAAK,IAAIK,EAAMX,EAAO,IAAKO,IAAK,IAAII,EAAMX,EAAO,MAG/CY,EAAOL,EAAIM,SAASP,GAE1B,MAAO,CACLJ,KAAMI,EAAIQ,EACVX,IAAKG,EAAIS,EACTX,MAAOQ,EAAKE,EACZT,OAAQO,EAAKG,EACd"}