{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/external/event-drops/drop.js"],"names":["uniqBy","filterOverlappingDrop","xScale","dropDate","d","data","Math","round","config","selection","drop","color","dropColor","radius","dropRadius","date","id","onClick","onMouseOver","onMouseOut","drops","selectAll","enter","append","classed","on","merge","attr","exit","remove"],"mappings":";;;;;;AAAOA,kB;;;;;;;;;;;AAAAA,2D;;;;;;;;;AAEP,kBAAMC,wBAAwB,CAACC,MAAD,EAASC,QAAT,KAAsBC,KAChD,CAAC,GAAGJ,OAAOI,EAAEC,IAAT,EAAeA,QAAQC,KAAKC,KAAL,CAAWL,OAAOC,SAASE,IAAT,CAAP,CAAX,CAAvB,CAAJ,CADJ;;;;;;;;AAAMJ,0E;;;;;;;;+BAGS,CAACO,MAAD,EAASN,MAAT,KAAoBO,aAAa;AAC5C,sBAAM;AACFC,0BAAM;AACFC,+BAAOC,SADL;AAEFC,gCAAQC,UAFN;AAGFC,8BAAMZ,QAHJ;AAIFa,0BAJE;AAKFC,+BALE;AAMFC,mCANE;AAOFC;AAPE;AADJ,oBAUFX,MAVJ;;AAYA,sBAAMY,QAAQX,UACTY,SADS,CACC,OADD,EAEThB,IAFS,CAEJJ,sBAAsBC,MAAtB,EAA8BC,QAA9B,CAFI,CAAd;;AAIAiB,sBACKE,KADL,GAEKC,MAFL,CAEY,QAFZ,EAGKC,OAHL,CAGa,MAHb,EAGqB,IAHrB,EAIKC,EAJL,CAIQ,OAJR,EAIiBR,OAJjB,EAKKQ,EALL,CAKQ,WALR,EAKqBP,WALrB,EAMKO,EANL,CAMQ,UANR,EAMoBN,UANpB,EAOKO,KAPL,CAOWN,KAPX,EAQKO,IARL,CAQU,IARV,EAQgBX,EARhB,EASKW,IATL,CASU,GATV,EASeb,UATf,EAUKa,IAVL,CAUU,MAVV,EAUkBf,SAVlB,EAWKe,IAXL,CAWU,IAXV,EAWgBvB,KAAKF,OAAOC,SAASC,CAAT,CAAP,CAXrB;;AAaAgB,sBACKQ,IADL,GAEKH,EAFL,CAEQ,OAFR,EAEiB,IAFjB,EAGKA,EAHL,CAGQ,WAHR,EAGqB,IAHrB,EAIKA,EAJL,CAIQ,UAJR,EAIoB,IAJpB,EAKKI,MALL;AAMH,a","file":"drop.js","sourcesContent":["import uniqBy from 'src/external/lodash/lodash.js';\n\nconst filterOverlappingDrop = (xScale, dropDate) => d =>\n    [...uniqBy(d.data, data => Math.round(xScale(dropDate(data))))];\n\nexport default (config, xScale) => selection => {\n    const {\n        drop: {\n            color: dropColor,\n            radius: dropRadius,\n            date: dropDate,\n            id,\n            onClick,\n            onMouseOver,\n            onMouseOut,\n        },\n    } = config;\n\n    const drops = selection\n        .selectAll('.drop')\n        .data(filterOverlappingDrop(xScale, dropDate));\n\n    drops\n        .enter()\n        .append('circle')\n        .classed('drop', true)\n        .on('click', onClick)\n        .on('mouseover', onMouseOver)\n        .on('mouseout', onMouseOut)\n        .merge(drops)\n        .attr('id', id)\n        .attr('r', dropRadius)\n        .attr('fill', dropColor)\n        .attr('cx', d => xScale(dropDate(d)));\n\n    drops\n        .exit()\n        .on('click', null)\n        .on('mouseover', null)\n        .on('mouseout', null)\n        .remove();\n};\n"]}