{"version":3,"sources":["../../../../dev/j/v2/components/cmp-sticky-bars.js"],"names":["changeTabindex","value","buttons","forEach","button","setAttribute","makeSticky","bool","stickyBars","bar","classList","add","remove","positionCheck","visibleTableHeader","tables","length","table","contains","tableTop","querySelector","waypoints","messageBar","waypoint","avm","require","document","querySelectorAll","window","addEventListener","error","sdl","console","push","system","type","name","message","event"],"mappings":"CAAA,WACC,YAWC,SAASA,GAAeC,GACvBC,EAAQC,QAAQ,SAASC,GACxBA,EAAOC,aAAa,WAAYJ,KAKlC,QAASK,GAAWC,GACnBC,EAAWL,QAAQ,SAASM,GACvBF,GACHE,EAAIC,UAAUC,IAAI,aAClBX,EAAe,KAEfS,EAAIC,UAAUE,OAAO,aACrBZ,GAAgB,MAMnB,QAASa,KACR,GAAIC,IAAqB,CAGrBC,IAAUA,EAAOC,OAAS,GAC7BD,EAAOZ,QAAQ,SAASc,GACvB,GAAIA,EAAMP,UAAUQ,SAAS,kBAC5B,GAAIC,GAAWF,EAAMG,cAAc,gBAEnC,IAAID,GAAWF,EAAMG,cAAc,QAGpCN,GAAsBA,GAAsBO,EAAUF,EAAU,GAAI,MAAM,IAASE,EAAUJ,KAM3FH,EAGCQ,EACHA,EAAWZ,UAAUC,IAAI,UAEzBL,GAAW,GAGFgB,GAEVhB,GAAW,GAGNQ,GACJQ,EAAWZ,UAAUE,OAAO,WAI7BN,EAFUe,EAAUE,EAAU,KAAM,MAAM,IAE/B,GAGA,GAtEd,IACC,GACCF,GAAYG,IAAIC,QAAQ,uBACxBjB,EAAakB,SAASC,iBAAiB,eACvCzB,EAAUwB,SAASC,iBAAiB,iBACpCL,EAAaI,SAASN,cAAc,+BACpCL,EAASW,SAASC,iBAAiB,wDACnCJ,EAAW,kBAoEZvB,IAAgB,IAIZ0B,SAASN,cAAcG,IAAaD,KACvCM,OAAOC,iBAAiB,SAAU,WACjChB,MAGDe,OAAOC,iBAAiB,SAAU,WACjChB,OAKD,MAAOiB,GAEW,mBAARC,OACVC,QAAQF,MAAMA,GACdC,IAAIE,MACHC,QACCJ,OACCK,KAAML,EAAMM,KACZC,QAASP,EAAMO,UAGjBC,MAAO","file":"cmp-sticky-bars.js","sourcesContent":["(function() {\n\t'use strict';\n\ttry {\n\t\tvar\n\t\t\twaypoints = avm.require('avast.web.waypoints'),\n\t\t\tstickyBars = document.querySelectorAll('.sticky-bar'),\n\t\t\tbuttons = document.querySelectorAll('.sticky-bar a'),\n\t\t\tmessageBar = document.querySelector('.message-bar.sticky-message'),\n\t\t\ttables = document.querySelectorAll('.tables-common.sticky-header, .tables.tables--sticky'),\n\t\t\twaypoint = '.sticky-waypoint';\n\n\t\t// (un)set all sticky bar buttons to be tabable\n\t\tfunction changeTabindex(value) {\n\t\t\tbuttons.forEach(function(button){\n\t\t\t\tbutton.setAttribute('tabindex', value);\n\t\t\t});\n\t\t}\n\n\t\t// (un)set class to sticky bar\n\t\tfunction makeSticky(bool) {\n\t\t\tstickyBars.forEach(function(bar){\n\t\t\t\tif (bool) {\n\t\t\t\t\tbar.classList.add('is-sticky');\n\t\t\t\t\tchangeTabindex(0);\n\t\t\t\t} else {\n\t\t\t\t\tbar.classList.remove('is-sticky');\n\t\t\t\t\tchangeTabindex(-1);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// stickiness logic\n\t\tfunction positionCheck() {\n\t\t\tvar visibleTableHeader = false;\n\n\t\t\t// check if there is more than one table with sticky header and if in any of them is currently visible thus possibly colliding with other sticky elements\n\t\t\tif (tables && tables.length > 0) {\n\t\t\t\ttables.forEach(function(table){\n\t\t\t\t\tif (table.classList.contains('tables--sticky')) {\n\t\t\t\t\t\tvar tableTop = table.querySelector('thead th');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar tableTop = table.querySelector('thead');\n\t\t\t\t\t}\n\n\t\t\t\t\tvisibleTableHeader = !visibleTableHeader ? (waypoints(tableTop, 64, null, true) && waypoints(table)) : visibleTableHeader;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\t//if sticky table header is present\n\t\t\tif (visibleTableHeader) {\n\n\t\t\t\t// hide both sticky bar and sticky message bar\n\t\t\t\tif (messageBar) {\n\t\t\t\t\tmessageBar.classList.add('hidden');\n\t\t\t\t} else {\n\t\t\t\t\tmakeSticky(false);\n\t\t\t\t}\n\t\t\t\n\t\t\t} else if (messageBar) {\n\t\t\t\t// if there is sticky message then disable sticky bar\n\t\t\t\tmakeSticky(false);\n\t\t\t\t\n\t\t\t\t// make sure the sticky message bar is displayed once the sticky table is not in view anymore\n\t\t\t\tif (!visibleTableHeader) {\n\t\t\t\t\tmessageBar.classList.remove('hidden');\n\t\t\t\t}\n\t\t\t} else if (waypoints(waypoint, null, null, true)) {\n\t\t\t\t// else make sticky bar sticky under given waypoint\n\t\t\t\tmakeSticky(true);\n\t\t\t} else {\n\t\t\t\t// else hide sticky bar\n\t\t\t\tmakeSticky(false);\n\t\t\t}\n\t\t}\n\n\t\t// initially disable all sticky bar buttons from tabbing scope\n\t\tchangeTabindex(-1);\n\t\t\n\n\t\t// event listeners assignment only if waypoint class exists\n\t\tif (document.querySelector(waypoint) || messageBar) {\n\t\t\twindow.addEventListener('scroll', function () {\n\t\t\t\tpositionCheck();\n\t\t\t});\n\n\t\t\twindow.addEventListener('resize', function () {\n\t\t\t\tpositionCheck();\n\t\t\t});\n\t\t}\n\t\t\n\n\t} catch (error) {\n\t\t// singe data layer error tracking\n\t\tif (typeof sdl !== 'undefined') {\n\t\t\tconsole.error(error);\n\t\t\tsdl.push({\n\t\t\t\tsystem: {\n\t\t\t\t\terror: {\n\t\t\t\t\t\ttype: error.name,\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tevent: 'system.error'\n\t\t\t});\n\t\t}\n\t}\n})();\n"]}