{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/src/internal/individuals-as-points/venn/forces-simulation.js"],"names":["d3","ForcesSimulation","constructor","vennDiagram","forceCenters","forceCenterConnections","simulation","_createSimulation","start","setTimeout","alpha","restart","stop","updateForces","forceSimulation","force","forceLink","id","d","uuid","forceManyBody","forceX","forceY","on","_tick","draw"],"mappings":";;;;;;AAAOA,Q;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,gBAAN,CAAuB;;AAEpCC,oBAAYC,WAAZ,EAAyBC,YAAzB,EAAuCC,sBAAvC,EAA+D;AAC7D,eAAKF,WAAL,GAAmBA,WAAnB;AACA,eAAKG,UAAL,GAAkB,KAAKC,iBAAL,CAAuBH,YAAvB,EAAqCC,sBAArC,CAAlB;AACD;;AAED;AACA;AACA;;AAEAG,gBAAQ;AACNC,qBAAW,MAAM,KAAKH,UAAL,CAAgBI,KAAhB,CAAsB,GAAtB,EAA2BC,OAA3B,EAAjB,EAAuD,GAAvD;AACD;;AAEDC,eAAO;AACL,eAAKN,UAAL,CAAgBM,IAAhB;AACD;;AAEDC,uBAAe;AACb,eAAKL,KAAL;AACD;;AAED;AACA;AACA;;AAEAD,0BAAkBH,YAAlB,EAAgCC,sBAAhC,EAAwD;AACtD,iBAAOL,GAAGc,eAAH,CAAmBV,YAAnB,EACJW,KADI,CACE,MADF,EACUf,GAAGgB,SAAH,CAAaX,sBAAb,EAAqCY,EAArC,CAAwCC,KAAKA,EAAEC,IAA/C,CADV,EAEJJ,KAFI,CAEE,QAFF,EAEYf,GAAGoB,aAAH,EAFZ,EAGJL,KAHI,CAGE,GAHF,EAGOf,GAAGqB,MAAH,EAHP,EAIJN,KAJI,CAIE,GAJF,EAIOf,GAAGsB,MAAH,EAJP,EAKJC,EALI,CAKD,MALC,EAKO,MAAM,KAAKC,KAAL,EALb,CAAP;AAOD;;AAEDA,cAAMrB,WAAN,EAAmB;AACjBA,sBAAYsB,IAAZ;AACD;AAvCmC;;yBAAjBxB,gB","file":"forces-simulation.js","sourcesContent":["import d3 from \"src/external/d3.v5.js\";\n\nexport default class ForcesSimulation {\n  \n  constructor(vennDiagram, forceCenters, forceCenterConnections) {\n    this.vennDiagram = vennDiagram\n    this.simulation = this._createSimulation(forceCenters, forceCenterConnections)\n  }\n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  start() {\n    setTimeout(() => this.simulation.alpha(0.5).restart(), 250);\n  }\n  \n  stop() {\n    this.simulation.stop()\n  }\n  \n  updateForces() {\n    this.start()\n  }\n    \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _createSimulation(forceCenters, forceCenterConnections) {\n    return d3.forceSimulation(forceCenters)\n      .force(\"link\", d3.forceLink(forceCenterConnections).id(d => d.uuid))\n      .force(\"charge\", d3.forceManyBody())\n      .force(\"x\", d3.forceX())\n      .force(\"y\", d3.forceY())\n      .on('tick', () => this._tick() )\n\n  }\n  \n  _tick(vennDiagram) {\n    vennDiagram.draw()\n  }\n}"]}