{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/src/internal/individuals-as-points/group-chaining/zoomer.js"],"names":["mat3","vec2","d3","debounce","Zoomer","constructor","interactiveCanvas","transform","create","select","canvas","call","zoom","on","t","event","updateTransform","x","y","k","updateScale","drawNodes","scale","projection","width","height","translate"],"mappings":";;;;;;AAASA,U,yDAAAA,I;AAAMC,U,yDAAAA,I;;AACRC,Q;;AACEC,c,UAAAA,Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,YAAMC,MAAN,CAAa;;AAElBC,oBAAYC,iBAAZ,EAA8B;AAC5B,eAAKA,iBAAL,GAAyBA,iBAAzB;AACA,eAAKA,iBAAL,CAAuBC,SAAvB,GAAmCP,KAAKQ,MAAL,EAAnC;;AAEAN,aAAGO,MAAH,CAAU,KAAKH,iBAAL,CAAuBI,MAAjC,EACCC,IADD,CACMT,GAAGU,IAAH,GAAUC,EAAV,CAAa,MAAb,EAAqB,MAAM;AAC7B,gBAAIC,IAAIZ,GAAGa,KAAH,CAASR,SAAjB;AACA,gBAAIA,YAAY,KAAKS,eAAL,CACd,KAAKV,iBAAL,CAAuBI,MADT,EAEd,KAAKJ,iBAAL,CAAuBC,SAFT,EAGdO,EAAEG,CAHY,EAGTH,EAAEI,CAHO,EAGJJ,EAAEK,CAHE,CAAhB;;AAKA,iBAAKb,iBAAL,CAAuBU,eAAvB,CAAuCT,SAAvC;AACA,iBAAKD,iBAAL,CAAuBc,WAAvB,CAAmCN,EAAEK,CAArC;AACA,iBAAKb,iBAAL,CAAuBe,SAAvB;AACH,WAVK,EAUHlB,QAVG,CAUM,GAVN,CADN;AAYD;;AAGDa,wBAAgBN,MAAhB,EAAwBH,SAAxB,EAAmCU,CAAnC,EAAsCC,CAAtC,EAAyCI,KAAzC,EAAgD;AAC9CtB,eAAKuB,UAAL,CAAgBhB,SAAhB,EAA2BG,OAAOc,KAAlC,EAAyCd,OAAOe,MAAhD;AACAzB,eAAK0B,SAAL,CAAenB,SAAf,EAA0BA,SAA1B,EAAqC,CAACU,CAAD,EAAGC,CAAH,CAArC;AACAlB,eAAKsB,KAAL,CAAWf,SAAX,EAAsBA,SAAtB,EAAiC,CAACe,KAAD,EAAOA,KAAP,CAAjC;AACAtB,eAAK0B,SAAL,CAAenB,SAAf,EAA0BA,SAA1B,EAAqC,CACnCG,OAAOc,KAAP,GAAe,CADoB,EAEnCd,OAAOe,MAAP,GAAgB,CAFmB,CAArC;AAIAzB,eAAKsB,KAAL,CAAWf,SAAX,EAAsBA,SAAtB,EAAiC,CAC/BG,OAAOc,KAAP,GAAe,CADgB,EAE/Bd,OAAOe,MAAP,GAAgB,CAFe,CAAjC;AAIAzB,eAAKsB,KAAL,CAAWf,SAAX,EAAsBA,SAAtB,EAAiC,CAAC,CAAD,EAAI,CAAC,CAAL,CAAjC;;AAEA,iBAAOA,SAAP;AACD;AApCiB","file":"zoomer.js","sourcesContent":["import { mat3, vec2 } from \"https://cdnjs.cloudflare.com/ajax/libs/gl-matrix/2.8.1/gl-matrix.js\";\nimport d3 from \"src/external/d3.v5.js\"\nimport { debounce } from \"utils\";\n\nexport class Zoomer {\n  \n  constructor(interactiveCanvas){\n    this.interactiveCanvas = interactiveCanvas;\n    this.interactiveCanvas.transform = mat3.create();\n    \n    d3.select(this.interactiveCanvas.canvas)\n    .call(d3.zoom().on(\"zoom\", () => {\n        var t = d3.event.transform;\n        let transform = this.updateTransform(\n          this.interactiveCanvas.canvas,\n          this.interactiveCanvas.transform, \n          t.x, t.y, t.k);\n      \n        this.interactiveCanvas.updateTransform(transform);\n        this.interactiveCanvas.updateScale(t.k);\n        this.interactiveCanvas.drawNodes();\n    }).debounce(200));\n  }\n  \n  \n  updateTransform(canvas, transform, x, y, scale) {\n    mat3.projection(transform, canvas.width, canvas.height);\n    mat3.translate(transform, transform, [x,y]);\n    mat3.scale(transform, transform, [scale,scale]);\n    mat3.translate(transform, transform, [\n      canvas.width / 2,\n      canvas.height / 2\n    ]);\n    mat3.scale(transform, transform, [\n      canvas.width / 2,\n      canvas.height / 2\n    ]);\n    mat3.scale(transform, transform, [1, -1]);\n    \n    return transform;\n  }\n}"]}