{"version":3,"sources":["webpack:///./src/js/components/TwoColContent.js","webpack:///./src/js/components lazy ^\\.\\/.*$","webpack:///./src/js/helpers/bootstrap.js","webpack:///./src/js/main.js","webpack:///./src/js/helpers/xhr.js","webpack:///./src/js/constants/index.js","webpack:///./src/js/components/FormValidate.js","webpack:///./src/js/components/Accordion.js","webpack:///./src/js/components/Dropdown.js","webpack:///./src/js/components/FooterNav.js","webpack:///./src/js/components/PrimaryNav.js"],"names":["TwoColContent","desktopVal","BREAKPOINT","desktop","mediaQuery","window","matchMedia","getTwocolcontent","matches","titleMaxHeight","getMaxHeight","subtitleMaxHeight","descriptionMaxHeight","setHeight","resetHeight","attributeSelector","elements","document","querySelectorAll","maxHeight","forEach","element","Math","max","offsetHeight","height","style","addEventListener","_constants","__webpack_require__","map","./Accordion","./Accordion.js","./AirDuctCalculator","./AirDuctCalculator.js","./BlogListing","./BlogListing.js","./BlogListingLr","./BlogListingLr.js","./CaseStudiesAccordion","./CaseStudiesAccordion.js","./Component","./Component.js","./ContentSlider","./ContentSlider.js","./CookieForm","./CookieForm.js","./CustomFormSelection","./CustomFormSelection.js","./DifmSlider","./DifmSlider.js","./Dropdown","./Dropdown.js","./EpiFormCustomChoiceField","./EpiFormCustomChoiceField.js","./FeatureSlider","./FeatureSlider.js","./FeaturedCompare","./FeaturedCompare.js","./FeaturedReviewsSlider","./FeaturedReviewsSlider.js","./FileField","./FileField.js","./FooterNav","./FooterNav.js","./Form","./Form.js","./FormOffer","./FormOffer.js","./FormValidate","./FormValidate.js","./GenericHero","./GenericHero.js","./Header","./Header.js","./HeaderBrandSwitcher","./HeaderBrandSwitcher.js","./HeaderLocalized","./HeaderLocalized.js","./IconSlider","./IconSlider.js","./InspirationBoard","./InspirationBoard.js","./JumpLink","./JumpLink.js","./Locations","./Locations.js","./LocationsDropdown","./LocationsDropdown.js","./Modal","./Modal.js","./ModalProjGallery","./ModalProjGallery.js","./PhoneSwap","./PhoneSwap.js","./PrimaryNav","./PrimaryNav.js","./ProductsGallery","./ProductsGallery.js","./ProjectsGalleryListing","./ProjectsGalleryListing.js","./ReadMore","./ReadMore.js","./ReviewModal","./ReviewModal.js","./ReviewsList","./ReviewsList.js","./ReviewsListFlexible","./ReviewsListFlexible.js","./ServicesSlider","./ServicesSlider.js","./SliderHero","./SliderHero.js","./StatisticsSlider","./StatisticsSlider.js","./SwatchGallery","./SwatchGallery.js","./TabModule","./TabModule.js","./TrimText","./TrimText.js","./TwoColContent","./TwoColContent.js","./VideoModal","./VideoModal.js","./ZipLocation","./ZipLocation.js","webpackAsyncContext","req","ids","Promise","all","slice","e","then","reject","Error","keys","Object","id","module","exports","render","el","cb","length","i","$","_callee","name","imports","arguments","undefined","regeneratorRuntime","wrap","_context","prev","next","exists","abrupt","Array","isArray","v","push","resp","component","default","catch","err","sent","stop","this","querySelector","_bootstrap","_xhr","maska","_Accordion","_FooterNav","_PrimaryNav","_Dropdown","_TwoColContent","antiForgeryAjax","create","_bootstrap2","data","autoplay","$target","textSelector","maxLines","responsive","breakpoint","tablet","config","allowSingleAccordion","minimumResultsForSearch","charCount","lines","documentElement","addClass","PrimaryNav","Accordion","FooterNav","Dropdown","_FormValidate2","token","val","ajaxPrefilter","options","originalOptions","jqXHR","setRequestHeader","mobile","wide","KEYCODES","tab","_this","validateZipCode","value","valid","test","displayError","ele","errorMessage","referenceNode","newNode","getAttribute","formId","errorLabel","getElementById","setCustomValidity","classList","add","innerHTML","label","createElement","parentNode","insertBefore","nextSibling","formEle","submitForm","item","setAttribute","isRequired","hasAttribute","requiredErrorData","validationMessage","trim","parent","child","node","checkParentNode","validity","activeElement","contains","focus","zipcodeErrorData","isTypeName","includes","validateAndDisplayError","useValidate","isValid","type","validationType","validateName","phone","validatePhoneNumber","email","validateEmailAddress","zip","ziplocator","validateForm","remove","generalAccordion","accordionItems","header","body","arrow","wrapper","newWrapper","firstChild","appendChild","arrowelement","scrollHeight","setTimeout","slideDown","categoryDropdowns","categorySelectors","categoryLists","dropdown","index","dropdowns","selectors","lists","toggle","toggleDropdown","footerAccordion","triggerElement","navElement","searchTrigger","searchHeader","headerElement","subNavDynamicColumns","siteNav","openAccordionItem","parentDiv","parentItem","closest","primaryNavElement","newParentDiv","parentNavElement","slideUp","demoDiv","slidedownmainNav","event","preventDefault","otherItem","otherHeader","otherBody","viewportHeight","innerHeight","heightMinus50px","isClickInsideAccordion","target","children","from","filter","_loop","len","group","columnList","className","primaryNavItem","position"],"mappings":"uGAEgBA,cAAT,WACL,IAAMC,EAAaC,aAAWC,QACxBC,EAAaC,OAAOC,WAAP,0BAA4CL,EAA5C,OACnB,SAASM,IACP,GAAIH,EAAWI,QAAS,CACtB,IAAMC,EAAiBC,EAAa,2BAC9BC,EAAoBD,EAAa,8BACjCE,EAAuBF,EAAa,iCAC1CG,EAAU,0BAA2BJ,GACrCI,EAAU,6BAA8BF,GACxCE,EAAU,gCAAiCD,QAE3CE,EAAY,2BACZA,EAAY,8BACZA,EAAY,iCAGhB,SAASJ,EAAaK,GACpB,IAAMC,EAAWC,SAASC,iBAAiBH,GACvCI,EAAY,EAIhB,OAHAH,EAASI,QAAQ,SAAAC,GACfF,EAAYG,KAAKC,IAAIJ,EAAWE,EAAQG,gBAEnCL,EAET,SAASN,EAAUE,EAAmBU,GACpC,IAAMT,EAAWC,SAASC,iBAAiBH,GAC3CC,EAASI,QAAQ,SAAAC,GACfA,EAAQK,MAAMD,OAAYA,EAA1B,OAGJ,SAASX,EAAYC,GACnB,IAAMC,EAAWC,SAASC,iBAAiBH,GAC3CC,EAASI,QAAQ,SAAAC,GACfA,EAAQK,MAAMD,OAAS,SAI3BlB,IAEAF,OAAOsB,iBAAiB,SAAUpB,IA1CpC,IAAAqB,EAAAC,EAAA,yBCAA,IAAAC,GACAC,eACA,IAEAC,kBACA,IAEAC,uBACA,IACA,IAEAC,0BACA,IACA,IAEAC,iBACA,IACA,GAEAC,oBACA,IACA,GAEAC,mBACA,IACA,GAEAC,sBACA,IACA,GAEAC,0BACA,IACA,IAEAC,6BACA,IACA,IAEAC,eACA,IACA,IAEAC,kBACA,IACA,IAEAC,mBACA,IACA,IAEAC,sBACA,IACA,IAEAC,gBACA,IACA,IAEAC,mBACA,IACA,IAEAC,yBACA,IACA,IAEAC,4BACA,IACA,IAEAC,gBACA,IACA,IAEAC,mBACA,IACA,IAEAC,cACA,IAEAC,iBACA,IAEAC,8BACA,IACA,IAEAC,iCACA,IACA,IAEAC,mBACA,IACA,IAEAC,sBACA,IACA,IAEAC,qBACA,IACA,IAEAC,wBACA,IACA,IAEAC,2BACA,IACA,IAEAC,8BACA,IACA,IAEAC,eACA,IACA,IAEAC,kBACA,IACA,IAEAC,eACA,IAEAC,kBACA,IAEAC,UACA,IACA,IAEAC,aACA,IACA,IAEAC,eACA,IACA,IAEAC,kBACA,IACA,IAEAC,kBACA,IAEAC,qBACA,IAEAC,iBACA,IACA,IAEAC,oBACA,IACA,IAEAC,YACA,IACA,IAEAC,eACA,IACA,IAEAC,yBACA,IACA,IAEAC,4BACA,IACA,IAEAC,qBACA,IACA,IAEAC,wBACA,IACA,IAEAC,gBACA,IACA,IAEAC,mBACA,IACA,IAEAC,sBACA,IACA,IAEAC,yBACA,IACA,IAEAC,cACA,IACA,IAEAC,iBACA,IACA,IAEAC,eACA,IACA,GAEAC,kBACA,IACA,GAEAC,uBACA,IACA,IAEAC,0BACA,IACA,IAEAC,WACA,IACA,IAEAC,cACA,IACA,IAEAC,sBACA,IACA,GAEAC,yBACA,IACA,GAEAC,eACA,IACA,IAEAC,kBACA,IACA,IAEAC,gBACA,IAEAC,mBACA,IAEAC,qBACA,IACA,IAEAC,wBACA,IACA,IAEAC,4BACA,IACA,GAEAC,+BACA,IACA,GAEAC,cACA,IACA,IAEAC,iBACA,IACA,IAEAC,iBACA,IACA,GAEAC,oBACA,IACA,GAEAC,iBACA,IACA,GAEAC,oBACA,IACA,GAEAC,yBACA,IACA,GAEAC,4BACA,IACA,GAEAC,oBACA,IACA,IAEAC,uBACA,IACA,IAEAC,gBACA,IACA,IAEAC,mBACA,IACA,IAEAC,sBACA,IACA,IAEAC,yBACA,IACA,IAEAC,mBACA,IACA,GAEAC,sBACA,IACA,GAEAC,eACA,IACA,IAEAC,kBACA,IACA,IAEAC,cACA,IACA,IAEAC,iBACA,IACA,IAEAC,mBACA,KAEAC,sBACA,KAEAC,gBACA,IACA,GAEAC,mBACA,IACA,GAEAC,iBACA,IACA,IAEAC,oBACA,IACA,KAGA,SAAAC,EAAAC,GACA,IAAAC,EAAAnG,EAAAkG,GACA,OAAAC,EAEAC,QAAAC,IAAAF,EAAAG,MAAA,GAAAtG,IAAAD,EAAAwG,IAAAC,KAAA,WACA,OAAAzG,EAAAoG,EAAA,MAFAC,QAAAK,OAAA,IAAAC,MAA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","file":"main.bundle.js","sourcesContent":["import { BREAKPOINT } from '../constants';\r\n\r\nexport function TwoColContent() {\r\n const desktopVal = BREAKPOINT.desktop;\r\n const mediaQuery = window.matchMedia(`screen and (min-width: ${desktopVal}px)`);\r\n function getTwocolcontent() {\r\n if (mediaQuery.matches) {\r\n const titleMaxHeight = getMaxHeight('[data-mh=\"title-group\"]');\r\n const subtitleMaxHeight = getMaxHeight('[data-mh=\"subtitle-group\"]');\r\n const descriptionMaxHeight = getMaxHeight('[data-mh=\"description-group\"]');\r\n setHeight('[data-mh=\"title-group\"]', titleMaxHeight);\r\n setHeight('[data-mh=\"subtitle-group\"]', subtitleMaxHeight);\r\n setHeight('[data-mh=\"description-group\"]', descriptionMaxHeight);\r\n } else {\r\n resetHeight('[data-mh=\"title-group\"]');\r\n resetHeight('[data-mh=\"subtitle-group\"]');\r\n resetHeight('[data-mh=\"description-group\"]');\r\n }\r\n }\r\n function getMaxHeight(attributeSelector) {\r\n const elements = document.querySelectorAll(attributeSelector);\r\n let maxHeight = 0;\r\n elements.forEach(element => {\r\n maxHeight = Math.max(maxHeight, element.offsetHeight);\r\n });\r\n return maxHeight;\r\n }\r\n function setHeight(attributeSelector, height) {\r\n const elements = document.querySelectorAll(attributeSelector);\r\n elements.forEach(element => {\r\n element.style.height = `${height}px`;\r\n });\r\n }\r\n function resetHeight(attributeSelector) {\r\n const elements = document.querySelectorAll(attributeSelector);\r\n elements.forEach(element => {\r\n element.style.height = 'auto';\r\n });\r\n }\r\n // Call the function initially\r\n getTwocolcontent();\r\n // Add event listener for window resize\r\n window.addEventListener('resize', getTwocolcontent);\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/TwoColContent.js","var map = {\n\t\"./Accordion\": [\n\t\t96\n\t],\n\t\"./Accordion.js\": [\n\t\t96\n\t],\n\t\"./AirDuctCalculator\": [\n\t\t145,\n\t\t40\n\t],\n\t\"./AirDuctCalculator.js\": [\n\t\t145,\n\t\t40\n\t],\n\t\"./BlogListing\": [\n\t\t146,\n\t\t2\n\t],\n\t\"./BlogListing.js\": [\n\t\t146,\n\t\t2\n\t],\n\t\"./BlogListingLr\": [\n\t\t147,\n\t\t1\n\t],\n\t\"./BlogListingLr.js\": [\n\t\t147,\n\t\t1\n\t],\n\t\"./CaseStudiesAccordion\": [\n\t\t148,\n\t\t39\n\t],\n\t\"./CaseStudiesAccordion.js\": [\n\t\t148,\n\t\t39\n\t],\n\t\"./Component\": [\n\t\t139,\n\t\t41\n\t],\n\t\"./Component.js\": [\n\t\t139,\n\t\t41\n\t],\n\t\"./ContentSlider\": [\n\t\t149,\n\t\t38\n\t],\n\t\"./ContentSlider.js\": [\n\t\t149,\n\t\t38\n\t],\n\t\"./CookieForm\": [\n\t\t150,\n\t\t21\n\t],\n\t\"./CookieForm.js\": [\n\t\t150,\n\t\t21\n\t],\n\t\"./CustomFormSelection\": [\n\t\t151,\n\t\t37\n\t],\n\t\"./CustomFormSelection.js\": [\n\t\t151,\n\t\t37\n\t],\n\t\"./DifmSlider\": [\n\t\t152,\n\t\t36\n\t],\n\t\"./DifmSlider.js\": [\n\t\t152,\n\t\t36\n\t],\n\t\"./Dropdown\": [\n\t\t97\n\t],\n\t\"./Dropdown.js\": [\n\t\t97\n\t],\n\t\"./EpiFormCustomChoiceField\": [\n\t\t153,\n\t\t35\n\t],\n\t\"./EpiFormCustomChoiceField.js\": [\n\t\t153,\n\t\t35\n\t],\n\t\"./FeatureSlider\": [\n\t\t154,\n\t\t34\n\t],\n\t\"./FeatureSlider.js\": [\n\t\t154,\n\t\t34\n\t],\n\t\"./FeaturedCompare\": [\n\t\t155,\n\t\t20\n\t],\n\t\"./FeaturedCompare.js\": [\n\t\t155,\n\t\t20\n\t],\n\t\"./FeaturedReviewsSlider\": [\n\t\t156,\n\t\t17\n\t],\n\t\"./FeaturedReviewsSlider.js\": [\n\t\t156,\n\t\t17\n\t],\n\t\"./FileField\": [\n\t\t157,\n\t\t33\n\t],\n\t\"./FileField.js\": [\n\t\t157,\n\t\t33\n\t],\n\t\"./FooterNav\": [\n\t\t98\n\t],\n\t\"./FooterNav.js\": [\n\t\t98\n\t],\n\t\"./Form\": [\n\t\t140,\n\t\t32\n\t],\n\t\"./Form.js\": [\n\t\t140,\n\t\t32\n\t],\n\t\"./FormOffer\": [\n\t\t158,\n\t\t18\n\t],\n\t\"./FormOffer.js\": [\n\t\t158,\n\t\t18\n\t],\n\t\"./FormValidate\": [\n\t\t68\n\t],\n\t\"./FormValidate.js\": [\n\t\t68\n\t],\n\t\"./GenericHero\": [\n\t\t159,\n\t\t31\n\t],\n\t\"./GenericHero.js\": [\n\t\t159,\n\t\t31\n\t],\n\t\"./Header\": [\n\t\t160,\n\t\t16\n\t],\n\t\"./Header.js\": [\n\t\t160,\n\t\t16\n\t],\n\t\"./HeaderBrandSwitcher\": [\n\t\t161,\n\t\t15\n\t],\n\t\"./HeaderBrandSwitcher.js\": [\n\t\t161,\n\t\t15\n\t],\n\t\"./HeaderLocalized\": [\n\t\t162,\n\t\t13\n\t],\n\t\"./HeaderLocalized.js\": [\n\t\t162,\n\t\t13\n\t],\n\t\"./IconSlider\": [\n\t\t163,\n\t\t14\n\t],\n\t\"./IconSlider.js\": [\n\t\t163,\n\t\t14\n\t],\n\t\"./InspirationBoard\": [\n\t\t164,\n\t\t30\n\t],\n\t\"./InspirationBoard.js\": [\n\t\t164,\n\t\t30\n\t],\n\t\"./JumpLink\": [\n\t\t165,\n\t\t24\n\t],\n\t\"./JumpLink.js\": [\n\t\t165,\n\t\t24\n\t],\n\t\"./Locations\": [\n\t\t166,\n\t\t6\n\t],\n\t\"./Locations.js\": [\n\t\t166,\n\t\t6\n\t],\n\t\"./LocationsDropdown\": [\n\t\t143,\n\t\t29\n\t],\n\t\"./LocationsDropdown.js\": [\n\t\t143,\n\t\t29\n\t],\n\t\"./Modal\": [\n\t\t141,\n\t\t10\n\t],\n\t\"./Modal.js\": [\n\t\t141,\n\t\t10\n\t],\n\t\"./ModalProjGallery\": [\n\t\t144,\n\t\t4\n\t],\n\t\"./ModalProjGallery.js\": [\n\t\t144,\n\t\t4\n\t],\n\t\"./PhoneSwap\": [\n\t\t167,\n\t\t23\n\t],\n\t\"./PhoneSwap.js\": [\n\t\t167,\n\t\t23\n\t],\n\t\"./PrimaryNav\": [\n\t\t99\n\t],\n\t\"./PrimaryNav.js\": [\n\t\t99\n\t],\n\t\"./ProductsGallery\": [\n\t\t168,\n\t\t11\n\t],\n\t\"./ProductsGallery.js\": [\n\t\t168,\n\t\t11\n\t],\n\t\"./ProjectsGalleryListing\": [\n\t\t169,\n\t\t0\n\t],\n\t\"./ProjectsGalleryListing.js\": [\n\t\t169,\n\t\t0\n\t],\n\t\"./ReadMore\": [\n\t\t170,\n\t\t22\n\t],\n\t\"./ReadMore.js\": [\n\t\t170,\n\t\t22\n\t],\n\t\"./ReviewModal\": [\n\t\t171,\n\t\t9\n\t],\n\t\"./ReviewModal.js\": [\n\t\t171,\n\t\t9\n\t],\n\t\"./ReviewsList\": [\n\t\t172,\n\t\t8\n\t],\n\t\"./ReviewsList.js\": [\n\t\t172,\n\t\t8\n\t],\n\t\"./ReviewsListFlexible\": [\n\t\t173,\n\t\t7\n\t],\n\t\"./ReviewsListFlexible.js\": [\n\t\t173,\n\t\t7\n\t],\n\t\"./ServicesSlider\": [\n\t\t174,\n\t\t28\n\t],\n\t\"./ServicesSlider.js\": [\n\t\t174,\n\t\t28\n\t],\n\t\"./SliderHero\": [\n\t\t175,\n\t\t27\n\t],\n\t\"./SliderHero.js\": [\n\t\t175,\n\t\t27\n\t],\n\t\"./StatisticsSlider\": [\n\t\t176,\n\t\t26\n\t],\n\t\"./StatisticsSlider.js\": [\n\t\t176,\n\t\t26\n\t],\n\t\"./SwatchGallery\": [\n\t\t177,\n\t\t3\n\t],\n\t\"./SwatchGallery.js\": [\n\t\t177,\n\t\t3\n\t],\n\t\"./TabModule\": [\n\t\t178,\n\t\t25\n\t],\n\t\"./TabModule.js\": [\n\t\t178,\n\t\t25\n\t],\n\t\"./TrimText\": [\n\t\t179,\n\t\t12\n\t],\n\t\"./TrimText.js\": [\n\t\t179,\n\t\t12\n\t],\n\t\"./TwoColContent\": [\n\t\t100\n\t],\n\t\"./TwoColContent.js\": [\n\t\t100\n\t],\n\t\"./VideoModal\": [\n\t\t180,\n\t\t5\n\t],\n\t\"./VideoModal.js\": [\n\t\t180,\n\t\t5\n\t],\n\t\"./ZipLocation\": [\n\t\t181,\n\t\t19\n\t],\n\t\"./ZipLocation.js\": [\n\t\t181,\n\t\t19\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids)\n\t\treturn Promise.reject(new Error(\"Cannot find module '\" + req + \"'.\"));\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(ids[0]);\n\t});\n};\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 138;\nmodule.exports = webpackAsyncContext;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/components lazy ^\\.\\/.*$\n// module id = 138\n// module chunks = 43","/**\r\n * Imports a chunked component async\r\n *\r\n * @param name - Name of the Javascript file\r\n * @param el - Name of the element\r\n * @returns {Promise.<*>}\r\n */\r\nexport default async function importComponent(name, el = null) {\r\n if (el) {\r\n if (!exists(el)) return;\r\n } else {\r\n throw new Error('You must pass an element in.');\r\n }\r\n\r\n if (Array.isArray(name)) {\r\n const imports = [];\r\n\r\n name.forEach(v => {\r\n imports.push(import(`../components/${v}`));\r\n });\r\n\r\n return await Promise.all(imports)\r\n .then(resp => {\r\n const component = [];\r\n\r\n resp.forEach(v => {\r\n component.push(v.default);\r\n });\r\n\r\n return {\r\n component,\r\n el\r\n };\r\n })\r\n .catch(err => {\r\n Promise.reject(new Error(`There was an error loading your component - ${err}`));\r\n });\r\n }\r\n\r\n return await import(`../components/${name}`)\r\n .then(component => {\r\n return {\r\n component: component.default,\r\n el\r\n };\r\n })\r\n .catch(err => {\r\n Promise.reject(new Error(`There was an error loading your component - ${err}`));\r\n });\r\n}\r\n\r\n/**\r\n * Check if an element exists in the DOM tree\r\n *\r\n * @param el - DOM element\r\n * @returns {boolean}\r\n */\r\nexport const exists = el => {\r\n if (typeof el !== 'string') {\r\n return el.length > 0;\r\n }\r\n return document.querySelector(el) !== null;\r\n};\r\n\r\n/**\r\n * Renders component with callback\r\n *\r\n * @param el - Name of the element\r\n * @param cb - Callback\r\n */\r\nexport function render(el, cb){\r\n let elements;\r\n if (typeof el === 'string') {\r\n elements = document.querySelectorAll(el);\r\n } else {\r\n elements = el;\r\n }\r\n const length = elements.length;\r\n\r\n for(let i = 0; i < length; ++i) {\r\n cb($(elements[i]));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/helpers/bootstrap.js","import importComponent, {\r\n render\r\n} from './helpers/bootstrap';\r\nimport {\r\n BREAKPOINT\r\n} from './constants';\r\nimport {\r\n antiForgeryAjax\r\n} from './helpers/xhr';\r\nimport * as maska from 'maska'\r\n\r\n$(() => {\r\n antiForgeryAjax();\r\n maska.create('.masked');\r\n\r\n importComponent('PhoneSwap', '.yotrack-phone')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('IconSlider', '.icon-slider:not(.icon-slider--hero)')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('IconSlider', '.icon-slider--hero')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el, {\r\n autoplay: true\r\n });\r\n });\r\n\r\n importComponent('DifmSlider', '.difm-slider')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('StatisticsSlider', '.statistics')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('ReviewsList', '.reviews-list:not(.reviews-list--flexible)')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('ReviewsListFlexible', '.reviews-list--flexible')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('FeatureSlider', '.feature-slider').then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('InspirationBoard', '.inspiration-board').then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('ReadMore', '.feature-slider')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target, {\r\n textSelector: '.feature-slider__content',\r\n maxLines: 8\r\n }));\r\n });\r\n importComponent('ReadMore', '.team-member')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target, {\r\n textSelector: '.team-member__biography',\r\n maxLines: 4,\r\n responsive: [{\r\n breakpoint: BREAKPOINT.tablet,\r\n config: {\r\n maxLines: 5\r\n }\r\n }]\r\n }));\r\n });\r\n\r\n importComponent('ReadMore', '.who-we-are')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target, {\r\n textSelector: '.who-we-are__content',\r\n maxLines: false,\r\n responsive: [{\r\n breakpoint: BREAKPOINT.desktop,\r\n config: {\r\n maxLines: 8\r\n }\r\n },\r\n {\r\n breakpoint: BREAKPOINT.tablet,\r\n config: {\r\n maxLines: 12\r\n }\r\n }\r\n ]\r\n }));\r\n });\r\n\r\n importComponent('Accordion', '.js-accordion')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('CaseStudiesAccordion', '.case-studies-accordion')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target, {\r\n allowSingleAccordion: true\r\n }));\r\n });\r\n\r\n importComponent('HeaderBrandSwitcher', '.js-header-brand-switcher').then(data => {\r\n if (!data) return;\r\n const { component, el } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('ZipLocation', '.js-zip-location')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('FormOffer', '.js-form-offer')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('ContentSlider', '.content-slider')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => {\r\n new component($target)\r\n });\r\n });\r\n\r\n importComponent('FeaturedReviewsSlider', '.featured-reviews')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => {\r\n new component($target)\r\n });\r\n });\r\n\r\n importComponent('JumpLink', '.js-jumplink')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n importComponent('SliderHero', '.js-slider-hero')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target));\r\n });\r\n importComponent('ProductsGallery', '.prod-gallery').then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n importComponent('Modal', '.js-modal').then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n importComponent('FeaturedCompare', '.featured-compare').then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n importComponent('ProjectsGalleryListing', '.proj-gallery__listing').then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n importComponent('FileField', '.js-file-field')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('ReadMore', '.local-info__section')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target, {\r\n textSelector: '.local-info__section-content',\r\n maxLines: 3,\r\n responsive: [{\r\n breakpoint: BREAKPOINT.tablet,\r\n config: {\r\n maxLines: 5\r\n }\r\n }]\r\n }));\r\n });\r\n\r\n importComponent('EpiFormCustomChoiceField', '.FormChoice')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('CustomFormSelection', '.FormSelection')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target, {\r\n minimumResultsForSearch: -1\r\n }));\r\n });\r\n\r\n importComponent('TrimText', '.related-post__title-link')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target, {\r\n charCount: 35\r\n }));\r\n });\r\n importComponent('TrimText', '.related-post__teaser')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n render(el, $target => new component($target, {\r\n lines: 3,\r\n charCount: 115,\r\n responsive: [{\r\n breakpoint: BREAKPOINT.desktop,\r\n config: {\r\n lines: 2\r\n }\r\n }, {\r\n breakpoint: BREAKPOINT.tablet,\r\n config: {\r\n lines: 3\r\n }\r\n }]\r\n }));\r\n });\r\n\r\n importComponent('Header', '.header')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n new component(el);\r\n });\r\n\r\n importComponent('HeaderLocalized', '.header--localized')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n new component(el);\r\n });\r\n\r\n importComponent('Locations', '.locations')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n new component(el);\r\n });\r\n\r\n importComponent('BlogListing', '.blog-listing')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('BlogListingLr', '.lr-blog-listing')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('GenericHero', '.generic-hero')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n\r\n });\r\n\r\n importComponent('TabModule', '.tab-module')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n new component(el);\r\n });\r\n\r\n importComponent('SwatchGallery', '.swatch-gallery')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('ServicesSlider', '.services')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n new component(el);\r\n });\r\n\r\n importComponent('AirDuctCalculator', '.air-duct-calculator')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n importComponent('CookieForm', '.js-form-privacy')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n });\r\n\r\n\r\n // LIGHTSPEED RESTORATION COMPONENTS\r\n\r\n importComponent('lightspeed_restoration/PrimaryNav', '.primary-nav-tl')\r\n .then(data => {\r\n if (!data) return;\r\n const {\r\n component,\r\n el\r\n } = data;\r\n\r\n render(el, $target => new component($target));\r\n\r\n });\r\n\r\n // Check object-fit\r\n if ('objectFit' in document.documentElement.style) {\r\n $('body').addClass('supports-object-fit');\r\n }\r\n});\r\n\r\n\r\n// Hot module replacement\r\nif (__DEV__) {\r\n if (module.hot) module.hot.accept();\r\n}\r\n\r\nimport { Accordion } from '../js/components/Accordion';\r\nimport { FooterNav } from '../js/components/FooterNav';\r\nimport { PrimaryNav } from '../js/components/PrimaryNav';\r\nimport { Dropdown } from '../js/components/Dropdown';\r\nimport { TwoColContent } from '../js/components/TwoColContent';\r\nimport FormValidate from './components/FormValidate';\r\n\r\nif (document.querySelectorAll('.primary-nav').length > 0){\r\n PrimaryNav();\r\n}\r\n\r\nif (document.querySelectorAll('.accordion').length > 0){\r\n Accordion();\r\n}\r\n\r\nif (document.querySelectorAll('.footer-nav').length > 0){\r\n FooterNav();\r\n}\r\n\r\nif (document.querySelectorAll('.language-selector').length > 0 || document.querySelectorAll('.category-select').length > 0){\r\n Dropdown();\r\n}\r\n\r\nif (document.querySelectorAll('.twocol-content').length > 0){\r\n TwoColContent();\r\n}\r\n\r\nif (document.querySelectorAll('.js-validate').length > 0) {\r\n FormValidate();\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/main.js","// Get value from .NET form and then transmit it as part of the header for all AJAX requests.\r\n// Used by the back end to validate that this is a legitimate request\r\nexport const antiForgeryAjax = () => {\r\n const token = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();\r\n\r\n $.ajaxPrefilter((options, originalOptions, jqXHR) => {\r\n jqXHR.setRequestHeader('__RequestVerificationToken', token);\r\n });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/helpers/xhr.js","//-- Breakpoints\r\nexport const BREAKPOINT = {\r\n mobile: 0,\r\n tablet: 640,\r\n desktop: 1024,\r\n wide: 1440\r\n};\r\n\r\n//-- Keycodes\r\nexport const KEYCODES = {\r\n tab: 9\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/constants/index.js","export default function FormValidate() {\r\n function validateName(value) {\r\n if (value.length === 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function validatePhoneNumber(value) {\r\n const regx =\r\n /^(\\+?(1\\s)?)[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/;\r\n if (regx.test(value) || value.length === 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function validateEmailAddress(value) {\r\n const regx =\r\n /^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/;\r\n if (regx.test(value) || value.length === 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function validateZipCode(value) {\r\n // USA ZIP Code can be in the format XXXXX or XXXXX-XXXX\r\n const usaZip = /(^\\d{5}$)|(^\\d{5}[ -]?\\d{4}$)/;\r\n\r\n // Canadian Postal Code can be in the format ANA NAN\r\n const canadaZip = /(^[A-Za-z]\\d[A-Za-z][ -]?(?:\\d[A-Za-z]\\d)?$)/;\r\n\r\n const valid = usaZip.test(value) || canadaZip.test(value);\r\n\r\n if (valid || value.length === 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function validateForm(value, type) {\r\n const validationType = {\r\n name: () => {\r\n return validateName(value);\r\n },\r\n phone: () => {\r\n return validatePhoneNumber(value);\r\n },\r\n email: () => {\r\n return validateEmailAddress(value);\r\n },\r\n zip: () => {\r\n return validateZipCode(value);\r\n },\r\n ziplocator: () => {\r\n return validateZipCode(value);\r\n },\r\n 'default': () => true\r\n };\r\n\r\n return (validationType[type] || validationType['default'])();\r\n }\r\n\r\n function insertAfter(referenceNode, newNode) {\r\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n }\r\n\r\n function displayError(ele, errorMessage) {\r\n const name = ele.getAttribute('name');\r\n const formId = `${ele.getAttribute('id')}_${name}-error`;\r\n const errorLabel = document.getElementById(formId);\r\n ele.setCustomValidity(errorMessage);\r\n ele.classList.add('error');\r\n\r\n if (!errorLabel) {\r\n const label = document.createElement('span');\r\n label.innerHTML = errorMessage;\r\n label.id = formId;\r\n label.classList.add('error');\r\n insertAfter(ele, label);\r\n } else {\r\n errorLabel.classList.add('error');\r\n errorLabel.style = 'display:block';\r\n errorLabel.innerHTML = errorMessage;\r\n }\r\n }\r\n\r\n function checkParentNode(parent, child) {\r\n let node = child.parentNode;\r\n while(node) {\r\n if (node === parent) {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n }\r\n\r\n //to get all form elements\r\n const formEle = document.querySelectorAll('.js-validate');\r\n\r\n //to get all submit button elements\r\n const submitForm = document.querySelectorAll('input[type=submit], button[type=submit]');\r\n\r\n formEle.forEach(item => {\r\n item.setAttribute('novalidate', 'novalidate');\r\n\r\n const elements = item.querySelectorAll(\r\n 'input[type=text], input[type=tel], input[type=email], select'\r\n );\r\n\r\n //to handle error on form submit event\r\n submitForm.forEach(ele => {\r\n ele.addEventListener('click', () => {\r\n elements.forEach(formEle => {\r\n const isRequired = formEle.hasAttribute('required');\r\n const requiredErrorData = formEle.getAttribute('data-msg-required')\r\n ? formEle.getAttribute('data-msg-required')\r\n : formEle.validationMessage;\r\n const value = formEle.value.trim();\r\n formEle.value = value;\r\n\r\n if (checkParentNode(item, ele)) {\r\n if (!formEle.validity.valid) {\r\n // Check for active element and error class\r\n if (\r\n !document.activeElement ||\r\n !document.activeElement.classList.contains('error')\r\n ) {\r\n formEle.focus();\r\n }\r\n }\r\n\r\n if (isRequired) {\r\n if (!value && value.length === 0) {\r\n displayError(formEle, requiredErrorData);\r\n return true;\r\n }\r\n }\r\n }\r\n });\r\n });\r\n });\r\n\r\n //to handle error on blur, input and changes events\r\n elements.forEach(ele => {\r\n const name = ele.getAttribute('name');\r\n const formId = `${ele.getAttribute('id')}_${name}-error`;\r\n const requiredErrorData = ele.getAttribute('data-msg-required')\r\n ? ele.getAttribute('data-msg-required')\r\n : '*This field is required';\r\n const nameErrorData = ele.getAttribute('data-msg-name')\r\n ? ele.getAttribute('data-msg-name')\r\n : `Invalid ${\r\n ele.getAttribute('placeholder')\r\n ? ele.getAttribute('placeholder')\r\n : 'value'\r\n }`;\r\n const zipcodeErrorData = ele.getAttribute('data-msg-zip')\r\n ? ele.getAttribute('data-msg-zip')\r\n : 'Invalid zip/postal code';\r\n const isTypeName =\r\n name.includes('name') ||\r\n (ele.hasAttribute('data-msg-name') && !name.includes('zip'));\r\n const isTypeZip = name.includes('zip');\r\n const errorMessage = isTypeZip\r\n ? zipcodeErrorData\r\n : ele.getAttribute(`data-msg-${name}`);\r\n\r\n ele.addEventListener('blur', function() {\r\n const errorLabel = document.getElementById(formId);\r\n if (!errorLabel) {\r\n validateAndDisplayError(this, true);\r\n }\r\n });\r\n\r\n ele.addEventListener('input', function() {\r\n const errorLabel = document.getElementById(formId);\r\n if (errorLabel) {\r\n validateAndDisplayError(this, true);\r\n }\r\n });\r\n\r\n ele.addEventListener('change', () => {\r\n validateAndDisplayError(this, false);\r\n });\r\n\r\n function validateAndDisplayError(ele, useValidate) {\r\n const value = ele ? ele.value.trim() : '';\r\n const isRequired = ele ? ele.hasAttribute('required') : false;\r\n const errorLabel = document.getElementById(formId);\r\n const isValid = validateForm(value, isTypeName ? 'name' : name);\r\n ele.value = value;\r\n\r\n if (isRequired) {\r\n if (value && value.length) {\r\n if (errorLabel) {\r\n errorLabel.style = 'display:none';\r\n errorLabel.classList.remove('error');\r\n ele.classList.remove('error');\r\n ele.setCustomValidity('');\r\n }\r\n } else {\r\n displayError(ele, requiredErrorData);\r\n return true;\r\n }\r\n }\r\n\r\n if (useValidate) {\r\n if (isValid) {\r\n if (errorLabel) {\r\n errorLabel.style = 'display:none';\r\n errorLabel.classList.remove('error');\r\n ele.classList.remove('error');\r\n ele.setCustomValidity('');\r\n }\r\n } else {\r\n if (!isTypeName) {\r\n displayError(ele, errorMessage);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n return (\r\n displayError\r\n );\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/FormValidate.js","export function Accordion(){\r\n\r\n generalAccordion();\r\n window.addEventListener('orientationchange', generalAccordion);\r\n\r\n function generalAccordion(){\r\n // Get all accordion items\r\n const accordionItems = document.querySelectorAll('.accordion .js-accordion-item');\r\n\r\n // Add click event listener to each accordion header\r\n accordionItems.forEach(item => {\r\n const header = item.querySelector('.accordion .js-accordion-item__header');\r\n const body = item.querySelector('.accordion .js-accordion-item__body');\r\n const arrow = item.querySelector('.accordion .accordion__item-icon');\r\n\r\n if (item.classList.contains('is-open')) {\r\n body.classList.add('open');\r\n arrow.classList.add('open-arrow');\r\n body.style.height = 'auto';\r\n }\r\n\r\n // Check if wrapper class is already present\r\n const wrapper = body.querySelector('.accordion-item-wrapper');\r\n\r\n if (!wrapper) {\r\n // Add wrapper class to accordion item body\r\n const newWrapper = document.createElement('div');\r\n newWrapper.classList.add('accordion-item-wrapper');\r\n\r\n // Wrap existing child elements inside the wrapper\r\n while(body.firstChild) {\r\n newWrapper.appendChild(body.firstChild);\r\n }\r\n\r\n // Append the wrapper to the accordion item body\r\n body.appendChild(newWrapper);\r\n }\r\n\r\n header.addEventListener('click', () => {\r\n\r\n if (body.classList.contains('open')) {\r\n // If accordion content is open, close it with a smooth transition\r\n slideUp(body, arrow);\r\n } else {\r\n // If accordion content is closed, open it with a smooth transition\r\n slideDown(body, arrow);\r\n }\r\n });\r\n });\r\n\r\n function slideDown(element, arrowelement) {\r\n element.style.height = 'auto';\r\n const height = element.scrollHeight;\r\n element.style.height = '0';\r\n\r\n setTimeout(() => {\r\n element.style.height = `${height }px`;\r\n element.classList.add('open');\r\n arrowelement.classList.add('open-arrow');\r\n }, 0);\r\n }\r\n\r\n function slideUp(element, arrowelement) {\r\n const height = element.scrollHeight;\r\n\r\n element.style.height = `${height }px`;\r\n\r\n setTimeout(() => {\r\n element.style.height = '0';\r\n element.classList.remove('open');\r\n arrowelement.classList.remove('open-arrow');\r\n }, 0);\r\n\r\n setTimeout(() => {\r\n element.style.height = '';\r\n }, 300);\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/Accordion.js","export function Dropdown() {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Removed the code for '.language-selector__dropdown'\r\n const categoryDropdowns = document.querySelectorAll('.category-select__dropdown');\r\n const categorySelectors = document.querySelectorAll('.category-select');\r\n const categoryLists = document.querySelectorAll('.category-select__list');\r\n\r\n function toggleDropdown(dropdowns, selectors, lists, index) {\r\n dropdowns[index].addEventListener('click', () => {\r\n selectors[index].classList.toggle('is-open');\r\n if (selectors[index].classList.contains('is-open')) {\r\n lists[index].style.height = `${lists[index].scrollHeight}px`;\r\n } else {\r\n lists[index].style.height = '0';\r\n }\r\n });\r\n }\r\n\r\n // Removed the forEach loop for '.language-selector__dropdown'\r\n\r\n categoryDropdowns.forEach((dropdown, index) => {\r\n toggleDropdown(categoryDropdowns, categorySelectors, categoryLists, index);\r\n });\r\n });\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/Dropdown.js","import {\r\n BREAKPOINT\r\n} from '../constants';\r\n\r\nexport function FooterNav(){\r\n\r\n const desktopVal = BREAKPOINT.desktop;\r\n // Create a MediaQueryList object\r\n const mediaQuery = window.matchMedia(`screen and (max-width: ${desktopVal}px)`);\r\n\r\n // Check if the media query matches the current viewport\r\n if (mediaQuery.matches) {\r\n footerAccordion();\r\n }\r\n\r\n window.addEventListener('resize', footerAccordion);\r\n\r\n function footerAccordion(){\r\n // Get all accordion items\r\n const accordionItems = document.querySelectorAll('.footer-nav .js-accordion-item');\r\n\r\n // Add click event listener to each accordion header\r\n accordionItems.forEach(item => {\r\n const header = item.querySelector('.footer-nav .js-accordion-item__header');\r\n const body = item.querySelector('.footer-nav .js-accordion-item__body');\r\n\r\n header.addEventListener('click', () => {\r\n header.classList.toggle('is-open');\r\n\r\n if (body.classList.contains('open')) {\r\n // If accordion content is open, close it with a smooth transition\r\n slideUp(body);\r\n } else {\r\n // If accordion content is closed, open it with a smooth transition\r\n slideDown(body);\r\n }\r\n });\r\n });\r\n\r\n function slideDown(element) {\r\n element.style.height = 'auto';\r\n const height = element.scrollHeight;\r\n element.style.height = '0';\r\n\r\n setTimeout(() => {\r\n element.style.height = `${height }px`;\r\n element.classList.add('open');\r\n }, 0);\r\n }\r\n\r\n function slideUp(element) {\r\n const height = element.scrollHeight;\r\n\r\n element.style.height = `${height }px`;\r\n\r\n setTimeout(() => {\r\n element.style.height = '0';\r\n element.classList.remove('open');\r\n }, 0);\r\n\r\n setTimeout(() => {\r\n element.style.height = '';\r\n }, 300);\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/FooterNav.js","import { BREAKPOINT } from '../constants';\r\n\r\nexport function PrimaryNav() {\r\n // Get the elements\r\n const triggerElement = document.querySelector('.header-menu__trigger');\r\n const navElement = document.querySelector('.primary-nav');\r\n const accordionItems = document.querySelectorAll(\r\n '.primary-nav .js-accordion-item'\r\n );\r\n const desktopVal = BREAKPOINT.desktop;\r\n const searchTrigger = document.querySelector('.header-search__trigger');\r\n const searchHeader = document.querySelector('.header-search');\r\n const headerElement = document.querySelector('.header');\r\n const subNavDynamicColumns = document.querySelectorAll(\r\n '.primary-nav__subnav-list--dynamic'\r\n );\r\n\r\n // Create a MediaQueryList object\r\n const mediaQuery = window.matchMedia(\r\n `screen and (max-width: ${desktopVal - 1}px)`\r\n );\r\n\r\n buildDynamicColumns();\r\n\r\n // Check if the media query matches the current viewport\r\n siteNav();\r\n\r\n window.addEventListener('resize', () => {\r\n siteNav();\r\n });\r\n\r\n function buildDynamicColumns() {\r\n subNavDynamicColumns.forEach(el => {\r\n const children = Array.from(el.children).filter(child => {\r\n return !child.classList.contains('primary-subnav__item--mobile-only');\r\n });\r\n\r\n for(let i = 0, len = children.length; i < len; i += 2) {\r\n const group = children.slice(i, i + 2);\r\n const wrapper = document.createElement('li');\r\n const columnList = document.createElement('ul');\r\n columnList.className = 'primary-nav__column';\r\n group.forEach(child => {\r\n columnList.appendChild(child);\r\n });\r\n wrapper.appendChild(columnList);\r\n el.appendChild(wrapper);\r\n }\r\n\r\n const primaryNavItem = el.closest('.primary-nav__item');\r\n if (primaryNavItem) {\r\n primaryNavItem.style.position = 'relative';\r\n }\r\n });\r\n }\r\n\r\n // Open mobile nav\r\n function siteNav() {\r\n setTimeout(restoreNavigation, 200);\r\n\r\n function restoreNavigation() {\r\n if (mediaQuery.matches) {\r\n const openAccordionItem = document.querySelector(\r\n '.primary-nav .js-accordion-item.is-open'\r\n );\r\n if (openAccordionItem) {\r\n const body = openAccordionItem.querySelector(\r\n '.primary-nav .js-accordion-item__body'\r\n );\r\n const header = openAccordionItem.querySelector(\r\n '.primary-nav .js-accordion-item__header'\r\n );\r\n const parentDiv = document.querySelector('.parent-nav');\r\n body.style.height = 'auto';\r\n body.style.height = `${body.scrollHeight}px`;\r\n navElement.style.height = 'auto';\r\n navElement.style.height = `${navElement.scrollHeight}px`;\r\n triggerElement.classList.add('is-active');\r\n header.classList.add('is-open');\r\n document.documentElement.classList.add('has-menu-active');\r\n parentDiv.classList.add('open');\r\n }\r\n } else {\r\n const openAccordionItem = document.querySelector(\r\n '.primary-nav .js-accordion-item .js-accordion-item__body.open'\r\n );\r\n if (openAccordionItem) {\r\n const parentItem = openAccordionItem.closest(\r\n '.primary-nav__item.js-accordion-item'\r\n );\r\n\r\n if (parentItem) {\r\n parentItem.classList.add('is-open');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Add parent element to Nav\r\n const primaryNavElement = document.querySelector('.primary-nav');\r\n const parentDiv = primaryNavElement.parentNode;\r\n\r\n // Check if parent div already exists\r\n if (!parentDiv.classList.contains('parent-nav')) {\r\n const newParentDiv = document.createElement('div');\r\n newParentDiv.classList.add('parent-nav');\r\n parentDiv.insertBefore(newParentDiv, primaryNavElement);\r\n newParentDiv.appendChild(primaryNavElement);\r\n }\r\n\r\n // on search close menu\r\n const parentNavElement = document.querySelector('.parent-nav');\r\n searchTrigger.addEventListener('click', () => {\r\n if (navElement.classList.contains('open')) {\r\n slideUp(navElement); // Slide up the navElement\r\n navElement.classList.remove('open'); // Remove the 'open' class\r\n triggerElement.classList.remove('is-active');\r\n document.documentElement.classList.remove('has-menu-active');\r\n }\r\n parentNavElement.classList.remove('open'); // Remove the 'open' class from parentNavElement\r\n });\r\n\r\n // Add click event listener to the trigger element\r\n triggerElement.addEventListener('click', () => {\r\n // Remove the 'is-active' class from headerMenuTrigger\r\n if (searchHeader.classList.contains('is-active')) {\r\n searchHeader.classList.remove('is-active');\r\n searchTrigger.classList.remove('is-active');\r\n headerElement.classList.remove('is-search-active');\r\n }\r\n\r\n // Toggle the \"active\" class on the nav element\r\n navElement.classList.toggle('active');\r\n triggerElement.classList.toggle('is-active');\r\n document.documentElement.classList.toggle('has-menu-active');\r\n headerElement.classList.toggle('is-menu-active');\r\n const demoDiv = document.querySelector('.parent-nav');\r\n demoDiv.classList.toggle('open');\r\n\r\n if (navElement.classList.contains('open')) {\r\n // If accordion content is open, close it with a smooth transition\r\n slideupmainNav(navElement);\r\n } else {\r\n // If accordion content is closed, open it with a smooth transition\r\n slidedownmainNav(navElement);\r\n }\r\n });\r\n\r\n accordionItems.forEach(item => {\r\n const header = item.querySelector(\r\n '.primary-nav .js-accordion-item__header'\r\n );\r\n const body = item.querySelector('.primary-nav .js-accordion-item__body');\r\n\r\n header.addEventListener('click', event => {\r\n if (mediaQuery.matches) {\r\n item.classList.toggle('is-open');\r\n header.classList.toggle('is-open');\r\n\r\n if (body) {\r\n event.preventDefault();\r\n // Close other open accordion items\r\n accordionItems.forEach(otherItem => {\r\n const otherHeader = otherItem.querySelector(\r\n '.primary-nav .js-accordion-item__header'\r\n );\r\n const otherBody = otherItem.querySelector(\r\n '.primary-nav .js-accordion-item__body'\r\n );\r\n\r\n if (\r\n otherHeader !== header &&\r\n otherHeader.classList.contains('is-open')\r\n ) {\r\n otherItem.classList.remove('is-open');\r\n otherHeader.classList.remove('is-open');\r\n slideUp(otherBody);\r\n }\r\n });\r\n\r\n navElement.style.height = 'auto';\r\n // Get the height of the viewport\r\n const viewportHeight = window.innerHeight;\r\n // Subtract 50px from the viewport height\r\n const heightMinus50px = viewportHeight - 50;\r\n // Set the height of navElement to the calculated height in pixels\r\n navElement.style.height = `${heightMinus50px}px`;\r\n\r\n if (body.classList.contains('open')) {\r\n // If accordion content is open, close it with a smooth transition\r\n slideUp(body);\r\n } else {\r\n // If accordion content is closed, open it with a smooth transition\r\n slideDown(body);\r\n }\r\n }\r\n } else {\r\n const parentNavElement = document.querySelector('.parent-nav');\r\n if (parentNavElement) {\r\n parentNavElement.classList.remove('open');\r\n }\r\n if (body) {\r\n // Add active class to the clicked accordion item\r\n event.preventDefault();\r\n item.classList.toggle('is-open');\r\n }\r\n // Close accordion body when clicking outside\r\n document.addEventListener('click', event => {\r\n const isClickInsideAccordion = item.contains(event.target);\r\n if (!isClickInsideAccordion) {\r\n item.classList.remove('is-open');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n function slideDown(element) {\r\n element.style.height = 'auto';\r\n const height = element.scrollHeight;\r\n element.style.height = '0';\r\n\r\n setTimeout(() => {\r\n element.style.height = `${height}px`;\r\n element.classList.add('open');\r\n }, 0);\r\n }\r\n\r\n function slideUp(element) {\r\n const height = element.scrollHeight;\r\n\r\n element.style.height = `${height}px`;\r\n\r\n setTimeout(() => {\r\n element.style.height = '0';\r\n element.classList.remove('open');\r\n }, 0);\r\n }\r\n\r\n function slidedownmainNav(element) {\r\n element.style.height = 'auto';\r\n const height = element.scrollHeight;\r\n element.style.height = '0';\r\n\r\n setTimeout(() => {\r\n element.style.height = 'calc(100vh - 50px)';\r\n element.classList.add('open');\r\n }, 0);\r\n }\r\n\r\n function slideupmainNav(element) {\r\n const height = element.scrollHeight;\r\n\r\n element.style.height = `${height}px`;\r\n\r\n setTimeout(() => {\r\n element.style.height = '0';\r\n element.classList.remove('open');\r\n }, 0);\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/components/PrimaryNav.js"],"sourceRoot":""}