{"version":3,"file":"./modules/CircleNavigationItem.xxxxxxxx.js","mappings":"+HAAe,MAAMA,EAajB,WAAAC,CAAYC,EAAsBC,EAAgBC,EAAqBC,GACnEC,KAAKJ,QAAUA,EACfI,KAAKC,KAAOC,MAAMC,KAAKH,KAAKJ,QAAQQ,qBAAqB,MACzDJ,KAAKH,OAASA,EAAoC,IAA3BG,KAAKJ,QAAQS,YACpCL,KAAKM,UAAYN,KAAKO,MAAQT,EAC9BE,KAAKD,UAAYA,EACjBC,KAAKQ,WAAaR,KAAKH,OAASY,KAAKC,IAAID,KAAKE,GAAK,KACnDX,KAAKY,OAASZ,KAAKJ,QAAQiB,aAE3Bb,KAAKc,WAAad,KAAKJ,QAAQmB,wBAG/BC,SAASC,gBAAgBC,iBAAiB,gCAAkCC,GAAuBnB,KAAKoB,YAAcD,EAAME,OAAOD,YACvI,CAEA,KAAAE,GAQI,OAPAtB,KAAKO,MAAQP,KAAKM,WAAcN,KAAKJ,QAAQ2B,UAAYvB,KAAKJ,QAAQiB,aAAe,GAAKb,KAAKQ,WAE/FR,KAAKwB,UAAUxB,KAAKO,OAGdP,KAAKJ,QAAS6B,IAAMzB,KAEnBA,IACX,CAEA,IAAA0B,CAAKC,GACD,IAAIpB,EAAQP,KAAKO,MAASoB,EAAW3B,KAAKQ,WAI1C,OAFAR,KAAKwB,UAAUjB,GAERP,IACX,CAEA,SAAAwB,CAAUjB,GAMN,OALAP,KAAKJ,QAAQgC,MAAMC,UACf,UAAW7B,KAAKoB,aAAeb,EAAUA,kBAC3BP,KAAKoB,aAAepB,KAAKH,OAASG,KAAKH,mBAC1CG,KAAKoB,YAAcb,GAASA,QAEpCP,IACX,CAEA,KAAA8B,GAOI,OANA9B,KAAKJ,QAAQmC,UAAUC,OAAO,0BAC9BhC,KAAKJ,QAAQmC,UAAUC,OAAO,0BAC9BhC,KAAKJ,QAAQqC,gBAAgB,SAE7BjC,KAAKc,WAAad,KAAKJ,QAAQmB,wBAExBf,IACX,CAEA,MAAAkC,GAGI,OAFAlC,KAAKJ,QAAQmC,UAAUI,IAAI,0BAEpBnC,IACX,CAEA,OAAAoC,GAGI,OAFApC,KAAKJ,QAAQmC,UAAUC,OAAO,0BAEvBhC,IACX,CAEA,IAAAqC,GAGI,OAFArC,KAAKJ,QAAQmC,UAAUI,IAAI,0BAEpBnC,IACX,CAEA,KAAAsC,GAGI,OAFAtC,KAAKJ,QAAQmC,UAAUC,OAAO,0BAEvBhC,IACX,CAEA,QAAAuC,CAASC,EAAsBC,GAC3B,IACIC,EACAC,EAIJ,OAFAF,EAAIA,GAAK,EAELzC,KAAKc,WAAW8B,OAASH,EAAID,EAASI,QACtCF,EAAQ1C,KAAKc,WAAW8B,OAASJ,EAASI,OAC1CD,EAAUlC,KAAKoC,IAAIpC,KAAKqC,IAAI,GAAMJ,EAAQD,GAR9B,GAQ+C,GAAI,GAE/DzC,KAAKC,KAAK8C,QAAQ9C,GAAQA,EAAK2B,MAAMe,QAAUA,EAAQK,YAEhDhD,OAGX0C,EAAQ1C,KAAKc,WAAWmC,IAAMT,EAASS,IACvCN,EAAUlC,KAAKoC,IAAIpC,KAAKqC,IAAI,GAAMJ,EAAQD,GAhB1B,GAgB2C,GAAI,GAE/DzC,KAAKC,KAAK8C,QAAQ9C,GAAQA,EAAK2B,MAAMe,QAAUA,EAAQK,YACvDhD,KAAKJ,QAAQmC,UAAUmB,OAAO,2BAAuC,GAAXP,GAEnD3C,KACX,E","sources":["webpack:///./modules/CircleNavigationItem.ts"],"sourcesContent":["export default class CircleNavigationItem {\r\n element: HTMLElement;\r\n link: HTMLAnchorElement[];\r\n radius: number;\r\n rootAngle: number;\r\n angle: number;\r\n foldAngle: number;\r\n oneDegInPX: number;\r\n leftAligned: boolean;\r\n height: number;\r\n originRect: ClientRect;\r\n translateValue: string;\r\n\r\n constructor(element: HTMLElement, radius: number, unfoldAngle: number, foldAngle: number) {\r\n this.element = element;\r\n this.link = Array.from(this.element.getElementsByTagName('a'));\r\n this.radius = radius - this.element.offsetWidth * .66;\r\n this.rootAngle = this.angle = unfoldAngle;\r\n this.foldAngle = foldAngle;\r\n this.oneDegInPX = this.radius * Math.sin(Math.PI / 180);\r\n this.height = this.element.offsetHeight;\r\n\r\n this.originRect = this.element.getBoundingClientRect();\r\n\r\n // jQuery(document).on('niveax:navigation:leftaligned', (event: JQueryEventObject, leftAligned: boolean) => this.leftAligned = leftAligned);\r\n document.documentElement.addEventListener('niveax:navigation:leftaligned', (event: CustomEvent) => this.leftAligned = event.detail.leftAligned);\r\n }\r\n\r\n setup(): CircleNavigationItem {\r\n this.angle = this.rootAngle - ((this.element.offsetTop + this.element.offsetHeight / 2) / this.oneDegInPX);\r\n\r\n this.translate(this.angle);\r\n\r\n\r\n (this.element).cni = this;\r\n\r\n return this;\r\n }\r\n\r\n move(currentY: number): CircleNavigationItem {\r\n var angle = this.angle - (currentY / this.oneDegInPX);\r\n\r\n this.translate(angle);\r\n\r\n return this;\r\n }\r\n\r\n translate(angle: number): CircleNavigationItem {\r\n this.element.style.transform = \r\n `rotate(${(this.leftAligned ? -angle : angle)}deg)` +\r\n `translate(${(this.leftAligned ? -this.radius : this.radius)}px)` +\r\n `rotate(${(this.leftAligned ? angle : -angle)}deg)`;\r\n\r\n return this;\r\n }\r\n\r\n reset(): CircleNavigationItem {\r\n this.element.classList.remove('nx-mob-nav__item--show');\r\n this.element.classList.remove('nx-mob-nav__item--open');\r\n this.element.removeAttribute('style');\r\n \r\n this.originRect = this.element.getBoundingClientRect();\r\n\r\n return this;\r\n }\r\n\r\n fadeIn(): CircleNavigationItem {\r\n this.element.classList.add('nx-mob-nav__item--show');\r\n\r\n return this;\r\n }\r\n\r\n fadeOut(): CircleNavigationItem {\r\n this.element.classList.remove('nx-mob-nav__item--show');\r\n\r\n return this;\r\n }\r\n\r\n open(): CircleNavigationItem {\r\n this.element.classList.add('nx-mob-nav__item--open');\r\n\r\n return this;\r\n }\r\n\r\n close(): CircleNavigationItem {\r\n this.element.classList.remove('nx-mob-nav__item--open');\r\n\r\n return this;\r\n }\r\n\r\n fadeLink(listRect: ClientRect, y?: number): CircleNavigationItem {\r\n var marginTop = 40,\r\n delta: number,\r\n opacity: number;\r\n\r\n y = y || 0;\r\n\r\n if (this.originRect.bottom + y > listRect.bottom) {\r\n delta = this.originRect.bottom - listRect.bottom;\r\n opacity = Math.max(Math.min(1 - ((delta + y) / marginTop), 1), 0);\r\n\r\n this.link.forEach(link => link.style.opacity = opacity.toString());\r\n\r\n return this;\r\n }\r\n\r\n delta = this.originRect.top - listRect.top;\r\n opacity = Math.max(Math.min(1 + ((delta + y) / marginTop), 1), 0);\r\n\r\n this.link.forEach(link => link.style.opacity = opacity.toString());\r\n this.element.classList.toggle('nx-mob-nav__item--hidden', opacity == 0);\r\n\r\n return this;\r\n }\r\n}"],"names":["CircleNavigationItem","constructor","element","radius","unfoldAngle","foldAngle","this","link","Array","from","getElementsByTagName","offsetWidth","rootAngle","angle","oneDegInPX","Math","sin","PI","height","offsetHeight","originRect","getBoundingClientRect","document","documentElement","addEventListener","event","leftAligned","detail","setup","offsetTop","translate","cni","move","currentY","style","transform","reset","classList","remove","removeAttribute","fadeIn","add","fadeOut","open","close","fadeLink","listRect","y","delta","opacity","bottom","max","min","forEach","toString","top","toggle"],"sourceRoot":""}