{"version":3,"sources":["components/header/_4/user/header-user.js"],"names":["HeaderUser","Component","constructor","el","usernavOpener","$find","dropdown","onClickOutside","e","$el","contains","target","onDown","document","removeEventListener","handler","onClickOutsideFactory","binding","onUp","bind","onClickOutsideUsernav","classList","toggle","remove","addEventListener"],"mappings":"aAAA,KAAMA,CAAAA,UAAN,QAAyBC,CAAAA,SAAU,CAE/BC,WAAW,CAACC,EAAD,CAAK,CACZ,MAAMA,EAAN,EAEA,KAAMC,CAAAA,aAAa,CAAG,KAAKC,KAAL,CAAW,uBAAX,CAAtB,CACA,KAAMC,CAAAA,QAAQ,CAAG,KAAKD,KAAL,CAAW,iBAAX,CAAjB,CAKA,KAAME,CAAAA,cAAc,CAAI,SAAUC,CAAV,CAAa,CACjC,GAAI,CAAC,KAAKC,GAAL,CAASC,QAAT,CAAkBF,CAAC,CAACG,MAApB,CAAL,CAAkC,CAC9B,KAAKC,MAAL,GACAC,QAAQ,CAACC,mBAAT,CAA6B,OAA7B,CAAsC,KAAKC,OAA3C,CACH,CACJ,CALD,CAUA,KAAMC,CAAAA,qBAAqB,CAAG,SAAUC,OAAV,CAAmB,CAC7CA,OAAO,CAACC,IAAR,GACA,GAAID,OAAO,CAACF,OAAZ,CAAqBF,QAAQ,CAACC,mBAAT,CAA6B,OAA7B,CAAsCG,OAAO,CAACF,OAA9C,EACrBE,OAAO,CAACF,OAAR,CAAkBR,cAAc,CAACY,IAAf,CAAoBF,OAApB,CAAlB,CACA,MAAOA,CAAAA,OAAO,CAACF,OAClB,CALD,CAOA,GAAIX,aAAJ,CAAmB,CAEf,KAAMgB,CAAAA,qBAAqB,CAAG,CAC1BX,GAAG,CAAE,KAAKA,GADgB,CAE1BS,IAAI,CAAE,IAAM,CACRZ,QAAQ,CAACe,SAAT,CAAmBC,MAAnB,CAA0B,WAA1B,EACAlB,aAAa,CAACiB,SAAd,CAAwBC,MAAxB,CAA+B,WAA/B,CACH,CALyB,CAM1BV,MAAM,CAAE,IAAM,CACVN,QAAQ,CAACe,SAAT,CAAmBE,MAAnB,CAA0B,WAA1B,EACAnB,aAAa,CAACiB,SAAd,CAAwBE,MAAxB,CAA+B,WAA/B,CACH,CATyB,CAA9B,CAaAnB,aAAa,CAACoB,gBAAd,CAA+B,OAA/B,CAAwC,IAAM,CAC1CX,QAAQ,CAACW,gBAAT,CAA0B,OAA1B,CAAmCR,qBAAqB,CAACI,qBAAD,CAAxD,CACH,CAFD,CAGH,CACJ,CA/C8B","sourcesContent":["class HeaderUser extends Component {\n\n constructor(el) {\n super(el);\n\n const usernavOpener = this.$find('[data-usernav-opener]');\n const dropdown = this.$find('[data-dropdown]');\n\n // Generická funkce pro ověření, zda jsme kliknuli mimo element\n // Funkce musí být neanonymní, jinak ji nelze odregistovat z event stacku\n // Pro funkčnost předpokládá, že v this má kontext {$el, onUp(), onDown(), [handler]}\n const onClickOutside = (function (e) {\n if (!this.$el.contains(e.target)) {\n this.onDown()\n document.removeEventListener('click', this.handler);\n }\n })\n\n // Je třeba mít jistotu, že už handler neexistuje.\n // Pokud existuje, je třeba jej odstranit. Jinak pokud bychom klikali na spouštěcí event, registrovaly by se nám\n // stále nové eventy.\n const onClickOutsideFactory = function (binding) {\n binding.onUp()\n if (binding.handler) document.removeEventListener('click', binding.handler)\n binding.handler = onClickOutside.bind(binding)\n return binding.handler // vrátíme handler, referenci uchováme, abychom mohli odregistrovat z event stacku\n }\n\n if (usernavOpener) {\n // vytvoříme handler \"staticky\", tj. aby byl nezávislý na scope spouštěcím eventu\n const onClickOutsideUsernav = {\n $el: this.$el,\n onUp: () => {\n dropdown.classList.toggle('is-opened');\n usernavOpener.classList.toggle('is-active');\n },\n onDown: () => {\n dropdown.classList.remove('is-opened');\n usernavOpener.classList.remove('is-active');\n }\n }\n\n // spouštěcí event\n usernavOpener.addEventListener('click', () => {\n document.addEventListener('click', onClickOutsideFactory(onClickOutsideUsernav))\n });\n }\n }\n\n}"],"file":"header-user.min.js"}