{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/src/internal/individuals-as-points/map/mapHoverer.js"],"names":["d3","MapHoverer","constructor","uniqueColoredMap","defaultColoredMap","tooltip","dataHandler","addHover","select","canvas","on","mouseX","event","layerX","mouseY","layerY","color","context","getImageData","data","colorKey","districtData","colorToDistrict","districtName","getDistrictLookupName","individualsGroupedByDistrict","individualsInDistrict","population","length","selectedThemes","showDistrictInformation","themes","totalThemeAmount","themeCount","countyThemeAmount","themeCountInDistrict","uniformDistributedSample","Math","round","individuals","hide"],"mappings":";;;;;;AAAOA,Q;;;;;;;;;;;;;;;;;;AAEA,YAAMC,UAAN,CAAiB;AACtBC,oBAAYC,gBAAZ,EAA8BC,iBAA9B,EAAiDC,OAAjD,EAA0DC,WAA1D,EAAuE;AACrE,eAAKH,gBAAL,GAAwBA,gBAAxB;AACA,eAAKC,iBAAL,GAAyBA,iBAAzB;AACA,eAAKC,OAAL,GAAeA,OAAf;AACA,eAAKC,WAAL,GAAmBA,WAAnB;AACD;;AAEDC,mBAAW;AACTP,aAAGQ,MAAH,CAAU,KAAKJ,iBAAL,CAAuBK,MAAjC,EAAyCC,EAAzC,CAA4C,WAA5C,EAAyD,MAAM;AAC7D,gBAAIC,SAASX,GAAGY,KAAH,CAASC,MAAtB;AACA,gBAAIC,SAASd,GAAGY,KAAH,CAASG,MAAtB;AACA,gBAAIC,QAAQ,KAAKb,gBAAL,CAAsBc,OAAtB,CAA8BC,YAA9B,CAA2CP,MAA3C,EAAmDG,MAAnD,EAA2D,CAA3D,EAA8D,CAA9D,EAAiEK,IAA7E;AACA,gBAAIC,WAAW,SAASJ,MAAM,CAAN,CAAT,GAAoB,GAApB,GAA0BA,MAAM,CAAN,CAA1B,GAAqC,GAArC,GAA2CA,MAAM,CAAN,CAA3C,GAAsD,GAArE;AACA,gBAAIK,eAAe,KAAKf,WAAL,CAAiBgB,eAAjB,CAAiCF,QAAjC,CAAnB;;AAEA,gBAAIC,YAAJ,EAAkB;AAChB,kBAAIE,eAAe,KAAKjB,WAAL,CAAiBkB,qBAAjB,CAAuCH,YAAvC,CAAnB;AACA,kBAAII,+BAA+B,KAAKnB,WAAL,CAAiBmB,4BAApD;AACA,kBAAIC,wBAAwBD,6BAA6BF,YAA7B,CAA5B;AACA,kBAAII,aAAa,CAAjB;AACA,kBAAID,qBAAJ,EAA2B;AACzBC,6BAAaD,sBAAsBE,MAAnC;AACD;AACD;AACA,kBAAI,CAAC,KAAKtB,WAAL,CAAiBuB,cAAtB,EAAsC;AACpC,qBAAKxB,OAAL,CAAayB,uBAAb,CAAqCT,YAArC,EAAmDM,UAAnD;AACD,eAFD,MAEO;AACL,oBAAII,SAAS,KAAKzB,WAAL,CAAiBuB,cAA9B;AACA,oBAAIG,mBAAmB,KAAK1B,WAAL,CAAiB2B,UAAxC;AACA,oBAAIC,iBAAJ;AACAA,oCAAoB,KAAK5B,WAAL,CAAiB6B,oBAAjB,CAAsCZ,YAAtC,CAApB;AACA,oBAAI,CAACW,iBAAL,EAAwB;AACtBA,sCAAoB,CAApB;AACD;AACD,oBAAIE,2BAA2BC,KAAKC,KAAL,CAAYN,mBAAmB,KAAK1B,WAAL,CAAiBiC,WAAjB,CAA6BX,MAAjD,GAA2DD,UAAtE,CAA/B;AACA,qBAAKtB,OAAL,CAAayB,uBAAb,CAAqCT,YAArC,EAAmDM,UAAnD,EAA+DI,MAA/D,EAAuEC,gBAAvE,EAAyFE,iBAAzF,EAA4GE,wBAA5G;AACD;AACF,aAtBD,MAsBO;AACL,mBAAK/B,OAAL,CAAamC,IAAb;AACD;AACF,WAhCD;AAiCD;AA1CqB","file":"mapHoverer.js","sourcesContent":["import d3 from \"src/external/d3.v5.js\"\n\nexport class MapHoverer {\n  constructor(uniqueColoredMap, defaultColoredMap, tooltip, dataHandler) {\n    this.uniqueColoredMap = uniqueColoredMap\n    this.defaultColoredMap = defaultColoredMap\n    this.tooltip = tooltip\n    this.dataHandler = dataHandler\n  }\n  \n  addHover() {\n    d3.select(this.defaultColoredMap.canvas).on(\"mousemove\", () => {\n      let mouseX = d3.event.layerX\n      let mouseY = d3.event.layerY\n      let color = this.uniqueColoredMap.context.getImageData(mouseX, mouseY, 1, 1).data\n      let colorKey = 'rgb(' + color[0] + ',' + color[1] + ',' + color[2] + ')'\n      let districtData = this.dataHandler.colorToDistrict[colorKey]\n      \n      if (districtData) {\n        let districtName = this.dataHandler.getDistrictLookupName(districtData)\n        let individualsGroupedByDistrict = this.dataHandler.individualsGroupedByDistrict\n        let individualsInDistrict = individualsGroupedByDistrict[districtName]\n        let population = 0\n        if (individualsInDistrict) {\n          population = individualsInDistrict.length\n        }\n        // TODO: amount in district data \n        if (!this.dataHandler.selectedThemes) {\n          this.tooltip.showDistrictInformation(districtData, population)\n        } else {\n          let themes = this.dataHandler.selectedThemes\n          let totalThemeAmount = this.dataHandler.themeCount\n          let countyThemeAmount\n          countyThemeAmount = this.dataHandler.themeCountInDistrict[districtName]\n          if (!countyThemeAmount) {\n            countyThemeAmount = 0\n          }\n          let uniformDistributedSample = Math.round((totalThemeAmount / this.dataHandler.individuals.length) * population)\n          this.tooltip.showDistrictInformation(districtData, population, themes, totalThemeAmount, countyThemeAmount, uniformDistributedSample)\n        }\n      } else {\n        this.tooltip.hide()\n      }\n    })\n  }\n}"]}