{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/src/internal/individuals-as-points/venn/individuals-simulation.js"],"names":["d3","IndividualsSimulation","constructor","vennDiagram","individuals","simulation","_createSimulation","start","setTimeout","alpha","restart","stop","updateForces","force","forceX","individual","center","x","strength","forceY","y","updateIndividuals","nodes","forceSimulation","forceCollide","iterations","alphaDecay","on","_tick","draw"],"mappings":";;;;;;AAAOA,Q;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,qBAAN,CAA4B;AACzCC,oBAAYC,WAAZ,EAAyBC,WAAzB,EAAsC;AACpC,eAAKD,WAAL,GAAmBA,WAAnB;AACA,eAAKE,UAAL,GAAkB,KAAKC,iBAAL,CAAuBF,WAAvB,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,eAAKP,UAAL,CACGQ,KADH,CACS,GADT,EACcb,GAAGc,MAAH,CAAUC,cAAcA,WAAWC,MAAX,CAAkBC,CAA1C,EAA6CC,QAA7C,CAAsD,GAAtD,CADd,EAEGL,KAFH,CAES,GAFT,EAEcb,GAAGmB,MAAH,CAAUJ,cAAcA,WAAWC,MAAX,CAAkBI,CAA1C,EAA6CF,QAA7C,CAAsD,GAAtD,CAFd;;AAIA,eAAKX,KAAL;AACD;;AAEDc,0BAAkBjB,WAAlB,EAA+B;AAC7B,eAAKC,UAAL,CAAgBiB,KAAhB,CAAsBlB,WAAtB;AACD;;AAED;AACA;AACA;;AAEAE,0BAAkBF,WAAlB,EAA+B;AAC7B,iBAAOJ,GAAGuB,eAAH,GACHV,KADG,CACG,WADH,EACgBb,GAAGwB,YAAH,CAAgB,CAAhB,EAAmBC,UAAnB,CAA8B,CAA9B,CADhB,EAEHZ,KAFG,CAEG,GAFH,EAEQb,GAAGc,MAAH,CAAUC,cAAcA,WAAWC,MAAX,CAAkBC,CAA1C,EAA6CC,QAA7C,CAAsD,GAAtD,CAFR,EAGHL,KAHG,CAGG,GAHH,EAGQb,GAAGmB,MAAH,CAAUJ,cAAcA,WAAWC,MAAX,CAAkBI,CAA1C,EAA6CF,QAA7C,CAAsD,GAAtD,CAHR,EAIHQ,UAJG,CAIQ,KAJR,EAKHjB,KALG,CAKG,GALH,EAMFa,KANE,CAMIlB,WANJ,EAOFuB,EAPE,CAOC,MAPD,EAOS,MAAM,KAAKC,KAAL,CAAW,KAAKzB,WAAhB,CAPf,CAAP;AAQD;;AAEDyB,cAAMzB,WAAN,EAAmB;AACjBA,sBAAY0B,IAAZ;AACD;AA/CwC;;yBAAtB5B,qB","file":"individuals-simulation.js","sourcesContent":["import d3 from \"src/external/d3.v5.js\";\n\nexport default class IndividualsSimulation {\n  constructor(vennDiagram, individuals) {\n    this.vennDiagram = vennDiagram\n    this.simulation = this._createSimulation(individuals)\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.simulation\n      .force(\"x\", d3.forceX(individual => individual.center.x).strength(0.1))\n      .force(\"y\", d3.forceY(individual => individual.center.y).strength(0.1))\n    \n    this.start()\n  }\n  \n  updateIndividuals(individuals) {\n    this.simulation.nodes(individuals)\n  }\n    \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _createSimulation(individuals) {\n    return d3.forceSimulation()\n       .force(\"collision\", d3.forceCollide(4).iterations(1))\n       .force(\"x\", d3.forceX(individual => individual.center.x).strength(0.1))\n       .force(\"y\", d3.forceY(individual => individual.center.y).strength(0.1))\n       .alphaDecay(0.007)\n       .alpha(0.5)\n        .nodes(individuals)\n        .on(\"tick\", () => this._tick(this.vennDiagram))\n  }\n  \n  _tick(vennDiagram) {\n    vennDiagram.draw()\n  }\n}"]}