{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/external/event-drops/indicator.js"],"names":["isBefore","isAfter","config","xScale","selection","label","width","labelWidth","line","height","lineHeight","drop","date","dropDate","indicator","previousText","nextText","dateBounds","domain","map","d","Date","indicators","selectAll","data","fullData","some","event","push","enter","append","classed","attr","text","exit","remove"],"mappings":";;;;;;AAASA,oB,eAAAA,Q;;AACAC,mB,cAAAA,O;;;;;;;;;;;AADAD,6D;;;;;;;;;;;;;AACAC,4D;;;;;;;;+BAEM,CAACC,MAAD,EAASC,MAAT,KAAoBC,aAAa;AAC5C,sBAAM;AACFC,2BAAO,EAAEC,OAAOC,UAAT,EADL;AAEFC,0BAAM,EAAEC,QAAQC,UAAV,EAFJ;AAGFC,0BAAM,EAAEC,MAAMC,QAAR,EAHJ;AAIFC,+BAAW,EAAEC,YAAF,EAAgBC,QAAhB;AAJT,oBAKFd,MALJ;;AAOA,sBAAMe,aAAad,OAAOe,MAAP,GAAgBC,GAAhB,CAAoBC,KAAK,IAAIC,IAAJ,CAASD,CAAT,CAAzB,CAAnB;;AAEA,sBAAME,aAAalB,UAAUmB,SAAV,CAAoB,YAApB,EAAkCC,IAAlC,CAAuCJ,KAAK;AAC3D,0BAAMI,OAAO,EAAb;AACA,wBAAIJ,EAAEK,QAAF,CAAWC,IAAX,CAAgBC,SAAS3B,SAASa,SAASc,KAAT,CAAT,EAA0BV,UAA1B,CAAzB,CAAJ,EAAqE;AACjEO,6BAAKI,IAAL,CAAU,QAAV;AACH;AACD,wBAAIR,EAAEK,QAAF,CAAWC,IAAX,CAAgBC,SAAS1B,QAAQY,SAASc,KAAT,CAAR,EAAyBV,UAAzB,CAAzB,CAAJ,EAAoE;AAChEO,6BAAKI,IAAL,CAAU,OAAV;AACH;AACD,2BAAOJ,IAAP;AACH,iBATkB,CAAnB;;AAWAF,2BACKO,KADL,GAEKC,MAFL,CAEY,MAFZ,EAGKC,OAHL,CAGa,WAHb,EAG0B,IAH1B,EAIKC,IAJL,CAIU,SAJV,EAIqB,GAJrB,EAKKA,IALL,CAKU,GALV,EAKeZ,KAAMA,MAAM,QAAN,GAAiBb,UAAjB,GAA8B,MALnD,EAMKyB,IANL,CAMU,IANV,EAMgBZ,KAAMA,MAAM,QAAN,GAAiB,CAAjB,GAAqB,CAAC,EAN5C,EAOKY,IAPL,CAOU,GAPV,EAOetB,aAAa,CAP5B,EAQKsB,IARL,CAQU,IARV,EAQgB,QARhB,EASKC,IATL,CASUb,KAAMA,MAAM,QAAN,GAAiBL,YAAjB,GAAgCC,QAThD;;AAWAM,2BACKU,IADL,CACU,GADV,EACeZ,KAAMA,MAAM,QAAN,GAAiBb,UAAjB,GAA8B,MADnD,EAEKyB,IAFL,CAEU,IAFV,EAEgBZ,KAAMA,MAAM,QAAN,GAAiB,CAAjB,GAAqB,CAAC,EAF5C,EAGKY,IAHL,CAGU,GAHV,EAGetB,aAAa,CAH5B,EAIKsB,IAJL,CAIU,IAJV,EAIgB,QAJhB,EAKKC,IALL,CAKUb,KAAMA,MAAM,QAAN,GAAiBL,YAAjB,GAAgCC,QALhD;;AAOAM,2BAAWY,IAAX,GAAkBC,MAAlB;AACH,a","file":"indicator.js","sourcesContent":["import { isBefore } from './isBefore.js';\nimport { isAfter } from './isAfter.js';\n\nexport default (config, xScale) => selection => {\n    const {\n        label: { width: labelWidth },\n        line: { height: lineHeight },\n        drop: { date: dropDate },\n        indicator: { previousText, nextText },\n    } = config;\n\n    const dateBounds = xScale.domain().map(d => new Date(d));\n\n    const indicators = selection.selectAll('.indicator').data(d => {\n        const data = [];\n        if (d.fullData.some(event => isBefore(dropDate(event), dateBounds))) {\n            data.push('before');\n        }\n        if (d.fullData.some(event => isAfter(dropDate(event), dateBounds))) {\n            data.push('after');\n        }\n        return data;\n    });\n\n    indicators\n        .enter()\n        .append('text')\n        .classed('indicator', true)\n        .attr('opacity', 0.5)\n        .attr('x', d => (d === 'before' ? labelWidth : '100%'))\n        .attr('dx', d => (d === 'before' ? 0 : -25))\n        .attr('y', lineHeight / 2)\n        .attr('dy', '0.25em')\n        .text(d => (d === 'before' ? previousText : nextText));\n\n    indicators\n        .attr('x', d => (d === 'before' ? labelWidth : '100%'))\n        .attr('dx', d => (d === 'before' ? 0 : -25))\n        .attr('y', lineHeight / 2)\n        .attr('dy', '0.25em')\n        .text(d => (d === 'before' ? previousText : nextText));\n\n    indicators.exit().remove();\n};\n"]}