{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/src/internal/individuals-as-points/map/individualClicker.js"],"names":["InspectAction","d3","IndividualClicker","constructor","map","mapWidget","tooltip","dataHandler","uniqueColoredCanvas","interactiveMapCanvas","selectedIndividual","setDataProcessor","dataProcessor","setColorStore","colorStore","addClick","select","canvas","on","mouseX","event","layerX","mouseY","layerY","color","context","getImageData","data","colorKey","individualId","colorToIndividualId","individuals","forEach","individual","id","applyGlobal","action","dispatchEvent","CustomEvent","detail","bubbles","applyAction","deselectSelectedIndividual","setSelectedIndividual","hide","selectIndividual","showIndividualInformation"],"mappings":";;;;;;AAASA,mB,oBAAAA,a;;AACFC,Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,YAAMC,iBAAN,CAAwB;;AAE7BC,oBAAYC,GAAZ,EAAiBC,SAAjB,EAA4BC,OAA5B,EAAqCC,WAArC,EAAkD;AAChD,eAAKC,mBAAL,GAA2BJ,IAAII,mBAA/B;AACA,eAAKC,oBAAL,GAA4BL,IAAIK,oBAAhC;AACA,eAAKH,OAAL,GAAeA,OAAf;AACA,eAAKC,WAAL,GAAmBA,WAAnB;AACA,eAAKG,kBAAL,GAA0B,IAA1B;AACA,eAAKN,GAAL,GAAWA,GAAX;AACA,eAAKC,SAAL,GAAiBA,SAAjB;AACD;;AAEDM,yBAAiBC,aAAjB,EAAgC;AAC9B,eAAKA,aAAL,GAAqBA,aAArB;AACD;;AAEDC,sBAAcC,UAAd,EAA0B;AACxB,eAAKA,UAAL,GAAkBA,UAAlB;AACD;;AAEDC,mBAAW;AACTd,aAAGe,MAAH,CAAU,KAAKP,oBAAL,CAA0BQ,MAApC,EAA4CC,EAA5C,CAA+C,OAA/C,EAAwD,MAAM;AAC5D,gBAAIC,SAASlB,GAAGmB,KAAH,CAASC,MAAtB;AACA,gBAAIC,SAASrB,GAAGmB,KAAH,CAASG,MAAtB;AACA,gBAAIC,QAAQ,KAAKhB,mBAAL,CAAyBiB,OAAzB,CAAiCC,YAAjC,CAA8CP,MAA9C,EAAsDG,MAAtD,EAA8D,CAA9D,EAAiE,CAAjE,EAAoEK,IAAhF;AACA,gBAAIC,WAAW,MAAMJ,MAAM,CAAN,CAAN,GAAiB,GAAjB,GAAuBA,MAAM,CAAN,CAAvB,GAAkC,GAAlC,GAAwCA,MAAM,CAAN,CAAvD;AACA,gBAAIK,eAAe,KAAKtB,WAAL,CAAiBuB,mBAAjB,CAAqCF,QAArC,CAAnB;;AAEA,gBAAIlB,kBAAJ;AACA,gBAAImB,YAAJ,EAAkB;AAChB,mBAAKtB,WAAL,CAAiBwB,WAAjB,CAA6BC,OAA7B,CAAqCC,cAAc;AACjD,oBAAIA,WAAWC,EAAX,KAAkBL,YAAtB,EAAoC;AAClCnB,uCAAqBuB,UAArB;AACD;AACF,eAJD;AAKD;;AAED,gBAAIE,cAAc,IAAlB;AACA,gBAAIC,SAAS,IAAIpC,aAAJ,CAAkBU,kBAAlB,EAAsCyB,WAAtC,EAAmD,KAAKvB,aAAxD,EAAuE,KAAKE,UAA5E,CAAb;;AAEA,iBAAKT,SAAL,CAAegC,aAAf,CAA6B,IAAIC,WAAJ,CAAgB,sBAAhB,EAAwC;AACnEC,sBAAQ;AACNH,wBAAQA;AADF,eAD2D;AAInEI,uBAAS;AAJ0D,aAAxC,CAA7B;;AAOA,iBAAKnC,SAAL,CAAeoC,WAAf,CAA2BL,MAA3B;AACD,WA3BD;AA4BD;;AAEDM,qCAA6B;AAC3B,cAAI,KAAKhC,kBAAT,EAA6B;AAC3B,iBAAKA,kBAAL,GAA0B,IAA1B;AACA,iBAAKH,WAAL,CAAiBoC,qBAAjB,CAAuC,IAAvC;AACA,iBAAKrC,OAAL,CAAasC,IAAb;AACD;AACF;;AAEDC,yBAAiBZ,UAAjB,EAA6B;AAC3B,cAAIA,UAAJ,EAAgB;AACd,iBAAKvB,kBAAL,GAA0BuB,UAA1B;AACA,iBAAK1B,WAAL,CAAiBoC,qBAAjB,CAAuCV,UAAvC;AACA,iBAAK3B,OAAL,CAAawC,yBAAb,CAAuCb,UAAvC;AACD;AACF;;AAjE4B","file":"individualClicker.js","sourcesContent":["import { InspectAction } from \"../common/actions.js\"\nimport d3 from \"src/external/d3.v5.js\"\n\nexport class IndividualClicker {\n  \n  constructor(map, mapWidget, tooltip, dataHandler) {\n    this.uniqueColoredCanvas = map.uniqueColoredCanvas\n    this.interactiveMapCanvas = map.interactiveMapCanvas\n    this.tooltip = tooltip\n    this.dataHandler = dataHandler\n    this.selectedIndividual = null\n    this.map = map\n    this.mapWidget = mapWidget\n  }\n  \n  setDataProcessor(dataProcessor) {\n    this.dataProcessor = dataProcessor\n  }\n  \n  setColorStore(colorStore) {\n    this.colorStore = colorStore\n  }\n  \n  addClick() {\n    d3.select(this.interactiveMapCanvas.canvas).on(\"click\", () => {\n      let mouseX = d3.event.layerX\n      let mouseY = d3.event.layerY\n      let color = this.uniqueColoredCanvas.context.getImageData(mouseX, mouseY, 1, 1).data\n      let colorKey = 'r' + color[0] + 'g' + color[1] + 'b' + color[2] \n      let individualId = this.dataHandler.colorToIndividualId[colorKey]\n      \n      let selectedIndividual\n      if (individualId) {\n        this.dataHandler.individuals.forEach(individual => {\n          if (individual.id === individualId) {\n            selectedIndividual = individual\n          }\n        })\n      }\n      \n      let applyGlobal = true\n      let action = new InspectAction(selectedIndividual, applyGlobal, this.dataProcessor, this.colorStore)\n      \n      this.mapWidget.dispatchEvent(new CustomEvent(\"individual-inspected\", {\n        detail: {\n          action: action\n        },\n        bubbles: true\n      }))\n      \n      this.mapWidget.applyAction(action)\n    })\n  }\n  \n  deselectSelectedIndividual() {\n    if (this.selectedIndividual) {\n      this.selectedIndividual = null\n      this.dataHandler.setSelectedIndividual(null)\n      this.tooltip.hide()\n    }\n  }\n  \n  selectIndividual(individual) {\n    if (individual) {\n      this.selectedIndividual = individual\n      this.dataHandler.setSelectedIndividual(individual)\n      this.tooltip.showIndividualInformation(individual)\n    }\n  }\n  \n}"]}