{"version":3,"sources":["../../../../../FED.Source/assets/js/header-script.js"],"names":["window","clampNumber","num","min","max","Math","columnLayout","div","document","createElement","id","innerHTML","head","parentNode","append","setColumnCSSVars","col1","querySelector","lineCheckerEl","colWidthStyles","getComputedStyle","colWidth","parseInt","width","paddingLeft","paddingRight","documentElement","style","setProperty","currentBreakpoint","getPropertyValue","replace","isDesktop","includes","lineOffset","getBoundingClientRect","right","left","setHeaderOpacityVars","scrollY"],"mappings":";;AAAA,CAAC,YAAY;AACZ,eADY,CAGZ;;AACAA,EAAAA,MAAM,CAACC,WAAP,GAAqB,CAACC,GAAD,EAAMC,GAAN,EAAWC,GAAX,KAAmBC,IAAI,CAACF,GAAL,CAASE,IAAI,CAACD,GAAL,CAASF,GAAT,EAAcC,GAAd,CAAT,EAA6BC,GAA7B,CAAxC,CAJY,CAMZ;AACA;;;AACA,QAAME,YAAY,iOAAlB;AASA,QAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AACAF,EAAAA,GAAG,CAACG,EAAJ,GAAS,eAAT;AACAH,EAAAA,GAAG,CAACI,SAAJ,GAAgBL,YAAhB;AACAE,EAAAA,QAAQ,CAACI,IAAT,CAAcC,UAAd,CAAyBC,MAAzB,CAAgCP,GAAhC;;AAEAP,EAAAA,MAAM,CAACe,gBAAP,GAA0B,MAAM;AAC/B,UAAMC,IAAI,GAAGT,GAAG,CAACU,aAAJ,CAAkB,gBAAlB,CAAb;AACA,UAAMC,aAAa,GAAGX,GAAG,CAACU,aAAJ,CAAkB,mBAAlB,CAAtB;AAEA,UAAME,cAAc,GAAGC,gBAAgB,CAACJ,IAAD,CAAvC;AACA,UAAMK,QAAQ,aACbC,QAAQ,CAACH,cAAc,CAACI,KAAhB,CAAR,GAAiCD,QAAQ,CAACH,cAAc,CAACK,WAAhB,CAAzC,GAAwEF,QAAQ,CAACH,cAAc,CAACM,YAAhB,CADnE,OAAd;AAGAjB,IAAAA,QAAQ,CAACkB,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,aAA3C,EAA0DP,QAA1D;AAEA,UAAMQ,iBAAiB,GAAG7B,MAAM,CAC9BoB,gBADwB,CACPZ,QAAQ,CAACS,aAAT,CAAuB,MAAvB,CADO,EACyB,SADzB,EAExBa,gBAFwB,CAEP,SAFO,EAGxBC,OAHwB,CAGhB,OAHgB,EAGP,EAHO,CAA1B,CAV+B,CAe/B;;AACA,UAAMC,SAAS,GAAG,CAAC,WAAD,EAAc,WAAd,EAA2BC,QAA3B,CAAoCJ,iBAApC,CAAlB;AACA,UAAMK,UAAU,GAAGF,SAAS,GACzBd,aAAa,CAACiB,qBAAd,GAAsCC,KADb,GAEzBlB,aAAa,CAACiB,qBAAd,GAAsCE,IAFzC;AAGA7B,IAAAA,QAAQ,CAACkB,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CAA2C,eAA3C,YAA+DM,UAA/D;AACA,GArBD;;AAuBAlC,EAAAA,MAAM,CAACsC,oBAAP,GAA8B,MAAM;AACnC;AACA;AACA9B,IAAAA,QAAQ,CAACkB,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CACC,+BADD,YAEI5B,MAAM,CAACC,WAAP,CAAmB,MAAMD,MAAM,CAACuC,OAAP,GAAiB,EAA1C,EAA8C,CAA9C,EAAiD,CAAjD,CAFJ;AAIA/B,IAAAA,QAAQ,CAACkB,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CACC,8BADD,YAEI5B,MAAM,CAACC,WAAP,CAAmB,CAAC,GAAD,GAAOD,MAAM,CAACuC,OAAP,GAAiB,EAA3C,EAA+C,CAA/C,EAAkD,CAAlD,CAFJ,GAPmC,CAWnC;;AACA/B,IAAAA,QAAQ,CAACkB,eAAT,CAAyBC,KAAzB,CAA+BC,WAA/B,CACC,6BADD,YAEI5B,MAAM,CAACC,WAAP,CAAmB,CAAC,GAAD,GAAOD,MAAM,CAACuC,OAAP,GAAiB,EAA3C,EAA+C,CAA/C,EAAkD,CAAlD,CAFJ;AAIA,GAhBD;;AAkBAvC,EAAAA,MAAM,CAACe,gBAAP;AACAf,EAAAA,MAAM,CAACsC,oBAAP;AACA,CAjED","sourcesContent":["(function () {\n\t'use strict';\n\n\t// clamp number between two values\n\twindow.clampNumber = (num, min, max) => Math.min(Math.max(num, min), max);\n\n\t// magical markup used to generated a container and column\n\t// needed to measure the width of a column and set it to a CSS var so it can be accessed from any context\n\tconst columnLayout = `\n\t\t
\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t`;\n\tconst div = document.createElement('div');\n\tdiv.id = 'measuring-div';\n\tdiv.innerHTML = columnLayout;\n\tdocument.head.parentNode.append(div);\n\n\twindow.setColumnCSSVars = () => {\n\t\tconst col1 = div.querySelector('#measure-col-1');\n\t\tconst lineCheckerEl = div.querySelector('#measure-col-half');\n\n\t\tconst colWidthStyles = getComputedStyle(col1);\n\t\tconst colWidth = `${\n\t\t\tparseInt(colWidthStyles.width) - parseInt(colWidthStyles.paddingLeft) - parseInt(colWidthStyles.paddingRight)\n\t\t}px`;\n\t\tdocument.documentElement.style.setProperty('--col-width', colWidth);\n\n\t\tconst currentBreakpoint = window\n\t\t\t.getComputedStyle(document.querySelector('html'), ':before')\n\t\t\t.getPropertyValue('content')\n\t\t\t.replace(/[\"']/g, '');\n\n\t\t// will offset the line by a half-column on desktop, and otherwise align to left of first column\n\t\tconst isDesktop = ['screen-lg', 'screen-xl'].includes(currentBreakpoint);\n\t\tconst lineOffset = isDesktop\n\t\t\t? lineCheckerEl.getBoundingClientRect().right\n\t\t\t: lineCheckerEl.getBoundingClientRect().left;\n\t\tdocument.documentElement.style.setProperty('--line-offset', `${lineOffset}px`);\n\t};\n\n\twindow.setHeaderOpacityVars = () => {\n\t\t// transitioning the logo opacity based on scroll, with a bit of leeway so it's not from the absolute top of the page\n\t\t// opacity number also manually clamped between 0 and 1\n\t\tdocument.documentElement.style.setProperty(\n\t\t\t'--header-desktop-logo-opacity',\n\t\t\t`${window.clampNumber(1.6 - window.scrollY / 60, 0, 1)}`\n\t\t);\n\t\tdocument.documentElement.style.setProperty(\n\t\t\t'--header-mobile-logo-opacity',\n\t\t\t`${window.clampNumber(-1.6 + window.scrollY / 60, 0, 1)}`\n\t\t);\n\t\t// this CSS var only gets applied on Brandenburg One homepage\n\t\tdocument.documentElement.style.setProperty(\n\t\t\t'--header-background-opacity',\n\t\t\t`${window.clampNumber(-1.6 + window.scrollY / 60, 0, 1)}`\n\t\t);\n\t};\n\n\twindow.setColumnCSSVars();\n\twindow.setHeaderOpacityVars();\n})();\n"],"file":"header-script.js"}