{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/src/internal/individuals-as-points/map/individualClicker.js"],"names":["InspectAction","d3","IndividualClicker","constructor","map","mapWidget","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","selectIndividual"],"mappings":";;;;;;AAASA,mB,oBAAAA,a;;AACFC,Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,YAAMC,iBAAN,CAAwB;;AAE7BC,oBAAYC,GAAZ,EAAiBC,SAAjB,EAA4BC,WAA5B,EAAyC;AACvC,eAAKC,mBAAL,GAA2BH,IAAIG,mBAA/B;AACA,eAAKC,oBAAL,GAA4BJ,IAAII,oBAAhC;AACA,eAAKF,WAAL,GAAmBA,WAAnB;AACA,eAAKG,kBAAL,GAA0B,IAA1B;AACA,eAAKL,GAAL,GAAWA,GAAX;AACA,eAAKC,SAAL,GAAiBA,SAAjB;AACD;;AAEDK,yBAAiBC,aAAjB,EAAgC;AAC9B,eAAKA,aAAL,GAAqBA,aAArB;AACD;;AAEDC,sBAAcC,UAAd,EAA0B;AACxB,eAAKA,UAAL,GAAkBA,UAAlB;AACD;;AAEDC,mBAAW;AACTb,aAAGc,MAAH,CAAU,KAAKP,oBAAL,CAA0BQ,MAApC,EAA4CC,EAA5C,CAA+C,OAA/C,EAAwD,MAAM;AAC5D,gBAAIC,SAASjB,GAAGkB,KAAH,CAASC,MAAtB;AACA,gBAAIC,SAASpB,GAAGkB,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,IAAInC,aAAJ,CAAkBS,kBAAlB,EAAsCyB,WAAtC,EAAmD,KAAKvB,aAAxD,EAAuE,KAAKE,UAA5E,CAAb;;AAEA,iBAAKR,SAAL,CAAe+B,aAAf,CAA6B,IAAIC,WAAJ,CAAgB,sBAAhB,EAAwC;AACnEC,sBAAQ;AACNH,wBAAQA;AADF,eAD2D;AAInEI,uBAAS;AAJ0D,aAAxC,CAA7B;;AAOA,iBAAKlC,SAAL,CAAemC,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;AACD;AACF;;AAEDC,yBAAiBX,UAAjB,EAA6B;AAC3B,cAAIA,UAAJ,EAAgB;AACd,iBAAKvB,kBAAL,GAA0BuB,UAA1B;AACA,iBAAK1B,WAAL,CAAiBoC,qBAAjB,CAAuCV,UAAvC;AACD;AACF;;AA9D4B","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, dataHandler) {\n    this.uniqueColoredCanvas = map.uniqueColoredCanvas\n    this.interactiveMapCanvas = map.interactiveMapCanvas\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    }\n  }\n  \n  selectIndividual(individual) {\n    if (individual) {\n      this.selectedIndividual = individual\n      this.dataHandler.setSelectedIndividual(individual)\n    }\n  }\n  \n}"]}