{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/src/internal/individuals-as-points/venn/group-hull.js"],"names":["d3Hull","GroupHull","constructor","individuals","setIndividualsToInclude","getPaddedHullCornerPoints","points","map","individual","x","y","cornerPoints","polygonHull","_getPaddedPoints","paddedHull","centroid","polygonCentroid","forEach","cornerPoint","push","_padd","center"],"mappings":";;;;;;AAAOA,Y;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,SAAN,CAAgB;AAC7BC,sBAAc;AACZ,eAAKC,WAAL,GAAmB,EAAnB;AACD;;AAED;AACA;AACA;;AAEAC,gCAAwBD,WAAxB,EAAqC;AACnC,eAAKA,WAAL,GAAmBA,WAAnB;AACD;;AAEDE,oCAA4B;AAC1B,cAAIC,SAAS,KAAKH,WAAL,CAAiBI,GAAjB,CAAqBC,cAAc,CAACA,WAAWC,CAAZ,EAAeD,WAAWE,CAA1B,CAAnC,CAAb;AACA,cAAIC,eAAeX,OAAOY,WAAP,CAAmBN,MAAnB,CAAnB;AACA,iBAAO,KAAKO,gBAAL,CAAsBF,YAAtB,CAAP;AACD;;AAED;AACA;AACA;;AAEAE,yBAAiBF,YAAjB,EAA8B;AAC5B,cAAG,CAACA,YAAJ,EAAkBA,eAAe,EAAf;AAClB,cAAIG,aAAa,EAAjB;AACA,cAAIC,WAAWf,OAAOgB,eAAP,CAAuBL,YAAvB,CAAf;AACAA,uBAAaM,OAAb,CAAqBC,eAAe;AAClCJ,uBAAWK,IAAX,CAAgB,KAAKC,KAAL,CAAWF,WAAX,EAAwBH,QAAxB,CAAhB;AACD,WAFD;AAGA,iBAAOD,UAAP;AACD;;AAEDM,cAAMF,WAAN,EAAmBG,MAAnB,EAA0B;AACxB,cAAIZ,IAAIY,OAAO,CAAP,IAAc,CAACH,YAAY,CAAZ,IAAiBG,OAAO,CAAP,CAAlB,IAA+B,GAArD;AACA,cAAIX,IAAIW,OAAO,CAAP,IAAc,CAACH,YAAY,CAAZ,IAAiBG,OAAO,CAAP,CAAlB,IAA+B,GAArD;AACA,iBAAO,CAACZ,CAAD,EAAGC,CAAH,CAAP;AACD;AArC4B;;yBAAVT,S","file":"group-hull.js","sourcesContent":["import d3Hull from \"https://d3js.org/d3-polygon.v1.min.js\"\n\nexport default class GroupHull {\n  constructor() {\n    this.individuals = []\n  } \n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  setIndividualsToInclude(individuals) {\n    this.individuals = individuals\n  }\n  \n  getPaddedHullCornerPoints() {\n    let points = this.individuals.map(individual => [individual.x, individual.y])\n    let cornerPoints = d3Hull.polygonHull(points)\n    return this._getPaddedPoints(cornerPoints)\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _getPaddedPoints(cornerPoints){\n    if(!cornerPoints) cornerPoints = []\n    let paddedHull = [];\n    let centroid = d3Hull.polygonCentroid(cornerPoints);\n    cornerPoints.forEach(cornerPoint => {\n      paddedHull.push(this._padd(cornerPoint, centroid));\n    })\n    return paddedHull;\n  }\n\n  _padd(cornerPoint, center){\n    let x = center[0] + ( (cornerPoint[0] - center[0]) * 1.2)\n    let y = center[1] + ( (cornerPoint[1] - center[1]) * 1.2)\n    return [x,y]\n  }\n}"]}