{"version":3,"file":"wmcads-website.min.js","mappings":"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ACA;AACA,KAAK;AACL,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,8BAA8B;AAC9B,4BAA4B;AAC5B;AACA;AACA,OAAO;AACP,kCAAkC;AAClC,kCAAkC;AAClC,+BAA+B;AAC/B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,8CAA8C;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,YAAY;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,mDAAmD;AACzE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,IAA0C;AAChD,IAAI,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAC;AACvB,IAAI,KAAK,EAGN;AACH;AACA,CAAC;;;;;;;UCz7CD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA,eAAe,4BAA4B;WAC3C,eAAe;WACf,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;ACNoE;AACO;AAC+B;AAChD;AACG;AACH;AACS;AACI;AACO;AAMvC;AAEvC,IAAMkB,KAAK,GAAG,SAARA,KAAKA,CAAA,EAAS;EAClB;EACA,IAAMpJ,IAAI,GAAG,IAAIC,cAAc,CAAC,CAAC;EACjCD,IAAI,CAACE,IAAI,CAAC,KAAK,EAAE,2BAA2B,EAAE,IAAI,CAAC;EACnDF,IAAI,CAACG,IAAI,CAAC,CAAC;EACXH,IAAI,CAACI,MAAM,GAAG,YAAM;IAClB,IAAMiJ,GAAG,GAAGrY,QAAQ,CAAC+R,aAAa,CAAC,KAAK,CAAC;IACzCsG,GAAG,CAAC/U,KAAK,CAACC,OAAO,GAAG,MAAM;IAC1B8U,GAAG,CAACvJ,SAAS,GAAGE,IAAI,CAACM,YAAY;IACjCtP,QAAQ,CAACsY,IAAI,CAACC,YAAY,CAACF,GAAG,EAAErY,QAAQ,CAACsY,IAAI,CAACE,UAAU,CAAC,CAAC,CAAC,CAAC;EAC9D,CAAC;AACH,CAAC;AAEDzV,MAAM,CAACnC,gBAAgB,CACrB,kBAAkB,GACjBuX,kEAAS,EACVC,KAAK,CAAC,CAAC,EACPnC,+GAAqB,CAAC,CAAC,EACvBiB,wFAAa,CAAC,CAAC,EACfpO,8EAAQ,CAAC,CAAC,EACV3B,2EAAQ,CAAC,CAAC,EACVrH,gFAAY,CAAC,CAAC,EACde,kFAAc,CAAC,CAAC,EAChBsC,4EAAO,CAAC,CAAC,EACTuK,yFAAc,CAAC,CAAC,EAChBa,mFAAsB,CAAC,CAAC,EACxBsB,mFAAsB,CAAC,CAAC,EACxB8B,yEAAgB,CAClB,CAAC,C","sources":["webpack://wmcads-design-system/./src/wmcads/components/accordion/_example.js","webpack://wmcads-design-system/./src/wmcads/patterns/board-members/_example.js","webpack://wmcads-design-system/./src/wmcads/patterns/cookies/_example.js","webpack://wmcads-design-system/./src/wmcads/patterns/footer/_example.js","webpack://wmcads-design-system/./src/wmcads/patterns/header-v2/_example.js","webpack://wmcads-design-system/./src/wmcads/patterns/search/search-filter/_example.js","webpack://wmcads-design-system/./src/www/_partials/component-example/_component-example-iframe.js","webpack://wmcads-design-system/./src/www/_partials/component-example/_component-example-script.js","webpack://wmcads-design-system/./src/www/_partials/component-example/_component-example.js","webpack://wmcads-design-system/./src/www/_partials/component-example/index.js","webpack://wmcads-design-system/./src/www/assets/vendor/js/polyfills/details-element.js","webpack://wmcads-design-system/./src/www/assets/vendor/js/polyfills/ie11-forEach.js","webpack://wmcads-design-system/./src/www/assets/vendor/js/polyfills/includes.js","webpack://wmcads-design-system/./src/www/assets/vendor/js/polyfills/polyfills.js","webpack://wmcads-design-system/./src/www/pages/styles/a-to-z-content-style-guide/_a-to-z-content-style-guide.js","webpack://wmcads-design-system/./src/www/pages/styles/colour-palettes/_color-palettes.js","webpack://wmcads-design-system/./node_modules/iframe-resizer/js/iframeResizer.js","webpack://wmcads-design-system/webpack/bootstrap","webpack://wmcads-design-system/webpack/runtime/compat get default export","webpack://wmcads-design-system/webpack/runtime/define property getters","webpack://wmcads-design-system/webpack/runtime/hasOwnProperty shorthand","webpack://wmcads-design-system/webpack/runtime/make namespace object","webpack://wmcads-design-system/./src/www/wmcads-website.js"],"sourcesContent":["const accordionsJS = () => {\n const accordions = document.querySelectorAll('.wmcads-accordion');\n\n accordions.forEach(accordion => {\n const accordionBtn = accordion.querySelector('.wmcads-accordion__summary-wrapper');\n\n const toggleAccordion = () => {\n if (accordion.classList.contains('wmcads-is--open')) {\n accordion.classList.remove('wmcads-is--open');\n accordionBtn.setAttribute('aria-expanded', false);\n } else {\n accordion.classList.add('wmcads-is--open');\n accordionBtn.setAttribute('aria-expanded', true);\n }\n };\n\n accordionBtn.addEventListener('click', toggleAccordion);\n });\n};\n\nexport default accordionsJS;\n","const boardMembersJS = () => {\n // get all the 'trigger' elements on the page\n const triggers = Array.from(document.querySelectorAll('[data-toggle=\"collapse\"]'));\n\n // map commands to the classList methods\n const fnmap = {\n toggle: 'toggle',\n show: 'add',\n hide: 'remove'\n };\n const collapse = (selector, cmd) => {\n const targets = Array.from(document.querySelectorAll(selector));\n targets.forEach(target => {\n target.classList[fnmap[cmd]]('show');\n });\n };\n\n const tabs = document.querySelectorAll('ul.wmcads-board-members-tab-labels > li');\n const panelQuestions = document.querySelectorAll('.wmcads-board-members-panel-question');\n\n const onTabClick = e => {\n e.preventDefault();\n\n tabs.forEach(tab => {\n tab.classList.remove('active');\n });\n\n const clickedTab = e.currentTarget;\n clickedTab.classList.add('active');\n\n const tabsPanel = document.querySelectorAll('.wmcads-board-members-single-panel');\n\n tabsPanel.forEach(panel => {\n panel.classList.remove('active');\n });\n\n const anchorRef = e.target;\n const activePanelId = anchorRef.getAttribute('href');\n const activePanel = document.querySelector(activePanelId);\n\n activePanel.classList.add('active');\n };\n\n const onQuestionClick = e => {\n e.preventDefault();\n\n tabs.forEach(tab => {\n tab.classList.remove('active');\n });\n\n tabs[1].classList.add('active');\n\n const tabsPanel = document.querySelectorAll('.wmcads-board-members-single-panel');\n const tab2 = document.querySelector('#tab-2');\n\n tabsPanel.forEach(panel => {\n panel.classList.remove('active');\n });\n\n tab2.classList.add('active');\n\n const tabQuestion = document.querySelectorAll('.wmcads-board-members-panel-content');\n\n tabQuestion.forEach(question => {\n question.classList.remove('active');\n });\n\n const questionAnchor = e.target;\n const activeQuestion = questionAnchor.getAttribute('href');\n const AnswerPanel = document.querySelector(activeQuestion);\n\n AnswerPanel.classList.add('active');\n };\n\n tabs.forEach(tab => {\n tab.addEventListener('click', onTabClick);\n });\n\n panelQuestions.forEach(question => {\n question.addEventListener('click', onQuestionClick);\n });\n\n // listen to click events that occuor\n // only on our triggers\n window.addEventListener(\n 'click',\n ev => {\n const elm = ev.target;\n if (triggers.includes(elm)) {\n ev.preventDefault();\n const selector = elm.getAttribute('data-target');\n collapse(selector, 'toggle');\n if (elm.getAttribute('aria-expanded') === 'false') {\n elm.setAttribute('aria-expanded', 'true');\n } else {\n elm.setAttribute('aria-expanded', 'false');\n }\n }\n },\n false\n );\n};\n\nexport default boardMembersJS;\n","const cookies = () => {\n const cookiesBanner = document.querySelector('header .wmcads-cookies-banner');\n\n if (cookiesBanner) {\n const hideCookieBanner = () => {\n cookiesBanner.style.display = 'none';\n };\n const showCookieBanner = () => {\n const codeExample = document.querySelector(\n '.wmcads-website-code-example .wmcads-cookies-banner'\n );\n\n cookiesBanner.style.display = 'block';\n if (codeExample) codeExample.style.display = 'block'; // Ensure the cookie banner in the component example stays visible even if the user has already accepted cookies\n };\n\n // Set cookie based on name, value and expiry date supplied\n const setCookie = (cname, cvalue, exdays) => {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n const expires = `expires=${d.toUTCString()}`;\n const domain = `domain=${window.location.hostname}`;\n document.cookie = `${cname}=${cvalue};${expires};${domain};path=/`;\n };\n\n // Get cookie based on name supplied\n const getCookie = cname => {\n const name = `${cname}=`;\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i += 1) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n // Check if cookie(s) created or not\n const checkCookie = cname => {\n const isCookieCreated = getCookie(cname);\n if (isCookieCreated === '') {\n return false;\n }\n return true;\n };\n\n const getCookiePolicy = () => JSON.parse(getCookie('cookies-policy'));\n\n const updateCookiePreferences = () => {\n if (document.querySelector('.wmcads-cookies-manager__preferences')) {\n hideCookieBanner();\n const cookiesOptions = document\n .querySelector('.wmcads-cookies-manager__preferences')\n .querySelectorAll('.wmcads-fe-checkboxes__input');\n const currentOptions = [\n getCookiePolicy().essential,\n getCookiePolicy().functional,\n getCookiePolicy().performance\n ];\n for (let i = 0; i < cookiesOptions.length; i += 1) {\n cookiesOptions[i].checked = currentOptions[i];\n }\n }\n };\n\n const setCookiePolicy = (essentialValue, functionalValue, performanceValue) => {\n const cookieValue = {\n essential: essentialValue,\n functional: functionalValue,\n performance: performanceValue\n };\n setCookie('cookies-policy', JSON.stringify(cookieValue), 181);\n updateCookiePreferences();\n };\n\n const acceptAllCookies = () => {\n setCookiePolicy(true, true, true);\n setCookie('cookies-preference', true, 181);\n hideCookieBanner();\n };\n\n const savePreferences = () => {\n if (document.querySelector('.wmcads-cookies-manager__form')) {\n const elements = document\n .querySelector('.wmcads-cookies-manager__form')\n .querySelectorAll('.wmcads-fe-checkboxes__input');\n const selectedOptions = [];\n for (let i = 0; i < elements.length; i += 1) {\n selectedOptions[i] = elements.item(i).checked;\n }\n setCookiePolicy(...selectedOptions);\n setCookie('cookies-preference', true, 181);\n }\n };\n\n const cookiesScan = () => {\n // if cookies-preference doesn't exist, show cookie banner\n if (!checkCookie('cookies-preference')) {\n showCookieBanner();\n setCookiePolicy(true, false, false);\n }\n\n // verify if we are at Cookies Manager page and update the selected options to match the already created cookie\n updateCookiePreferences();\n };\n\n const isInIframe = window.frameElement && window.frameElement.nodeName === 'IFRAME'; // check if we are in an iframe\n\n // Creation of default Cookies permissions when the DOM is fully loaded\n if (!isInIframe) document.addEventListener('DOMContentLoaded', cookiesScan);\n\n // When Accept all cookies button is triggered\n const acceptAllCookiesBtn = document.querySelector(\n '.wmcads-cookies-banner__accept-all-cookies'\n );\n\n if (!isInIframe) {\n acceptAllCookiesBtn.addEventListener('click', acceptAllCookies);\n acceptAllCookiesBtn.addEventListener('keydown', event => {\n if (event.key === ' ' || event.key === 'Enter' || event.key === 'Spacebar') {\n event.preventDefault();\n acceptAllCookies();\n }\n });\n }\n\n // When Safe Preferences button is triggered\n const cookieForm = document.querySelector('.wmcads-cookies-manager__form');\n if (cookieForm) cookieForm.addEventListener('submit', savePreferences);\n }\n};\n\nexport default cookies;\n","const footerJs = () => {\n const collapseMenus = document.querySelectorAll('.wmcads-collapse-heading');\n let eventListenersAdded = false;\n\n const handleMobileFooter = () => {\n const windowWidth = window.innerWidth;\n\n if (windowWidth < 768 && !eventListenersAdded) {\n eventListenersAdded = true; // Stop multiple event listeners being added as collapse functionality forces 'resize' call on window.\n\n collapseMenus.forEach(collapseToggle => {\n let toggleActive = false;\n const panel = document.getElementById(collapseToggle.getAttribute('aria-controls'));\n\n const handleToggle = () => {\n if (toggleActive) {\n collapseToggle.setAttribute('aria-expanded', 'true');\n panel.style.maxHeight = `${panel.scrollHeight}px`;\n } else {\n collapseToggle.setAttribute('aria-expanded', 'false');\n panel.style.maxHeight = null;\n }\n };\n\n handleToggle();\n\n collapseToggle.addEventListener('click', () => {\n toggleActive = !toggleActive;\n handleToggle();\n });\n\n // if tab is used automaticaly open collapse headings\n const handleKeydown = (e, key) => {\n e.stopPropagation();\n if (key === 9) {\n const collapseToggleButton = document.querySelectorAll('.wmcads-collapse-heading');\n const handleToggleButton = () => {\n collapseToggleButton[0].setAttribute('aria-expanded', 'true');\n collapseToggleButton[1].setAttribute('aria-expanded', 'true');\n panel.style.maxHeight = `${panel.scrollHeight}px`;\n };\n\n handleToggleButton();\n }\n };\n\n // if tab is used open menu\n const collapseButton = document.querySelectorAll('.wmcads-footer__collapse-button');\n\n // eslint-disable-next-line no-restricted-syntax\n for (const i of collapseButton) {\n i.addEventListener('keydown', e => {\n handleKeydown(e, e.keyCode);\n });\n }\n });\n }\n };\n // init mobile nav function\n handleMobileFooter();\n window.addEventListener('resize', handleMobileFooter);\n};\n\nexport default footerJs;\n","const headerJs = () => {\n // get mega menu elements\n const megaMenus = document.querySelectorAll('.wmcads-mega-menu');\n\n const mobileMenu = window.matchMedia('(max-width: 767px)');\n\n /*\n Mega menu helper functions\n */\n\n // getMenuLink returns a specified menu link from a specified array\n // currentIndex = index of the link that is currently focused\n // array = array to move through\n // direction = next, prev,\n const getMenuLink = (currentIndex, array, direction) => {\n let menuLink = null;\n if (array) {\n if (direction === 'prev') {\n // return previous link in specified array if there is one else return null;\n menuLink = array[currentIndex - 1] ? array[currentIndex - 1] : null;\n } else if (direction === 'next') {\n // return next link in specified array if there is one else return null;\n menuLink = array[currentIndex + 1] ? array[currentIndex + 1] : null;\n } else {\n // return link with same index in specified array;\n menuLink = array[currentIndex] ? array[currentIndex] : array[array.length - 1];\n }\n }\n return menuLink;\n };\n\n // takes a menu element and allows moving between focus via tabbing/arrows\n const setKeyboardNavigation = (subMenuContainer, subMenuQuery, onFirst, onLast) => {\n // array of all links in menu container\n const allLinksArray = [];\n\n // use specified query to select all submenus\n const subMenus = subMenuContainer.querySelectorAll(subMenuQuery);\n\n subMenus.forEach((subMenu, subMenuIndex) => {\n const thisSubMenuLinks = subMenu.querySelectorAll('a');\n\n // add list of all links in this container to an array\n allLinksArray.push(thisSubMenuLinks);\n\n // add event listener to each link with key logic\n thisSubMenuLinks.forEach((link, linkIndex) => {\n link.addEventListener('keydown', e => {\n // if not escape\n if (e.keyCode !== 27) {\n e.stopPropagation();\n if (e.keyCode === 39) {\n // right arrow - go to link of same index in next menu list\n e.preventDefault();\n const nextMenuLink = getMenuLink(linkIndex, allLinksArray[subMenuIndex + 1]);\n if (nextMenuLink) nextMenuLink.focus();\n } else if (e.keyCode === 37) {\n // left arrow - go to link of same index in previous menu list\n e.preventDefault();\n const prevMenuLink = getMenuLink(linkIndex, allLinksArray[subMenuIndex - 1]);\n if (prevMenuLink) prevMenuLink.focus();\n } else if (e.keyCode === 40 || (e.keyCode === 9 && !e.shiftKey)) {\n // down arrow or tab - go to next link in current menu list\n e.preventDefault();\n // if next link doesn't exist try next menu first item else return null\n const nextLink = getMenuLink(linkIndex, thisSubMenuLinks, 'next')\n ? getMenuLink(linkIndex, thisSubMenuLinks, 'next')\n : getMenuLink(-1, allLinksArray[subMenuIndex + 1], 'next');\n\n if (nextLink) {\n nextLink.focus();\n } else if (onLast) {\n onLast();\n }\n } else if (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9)) {\n // up arrow or shift + tab - go to previous item in current menu list\n e.preventDefault();\n const prevMenu = allLinksArray[subMenuIndex - 1];\n let prevLink = null;\n if (prevMenu || linkIndex > 0) {\n prevLink = getMenuLink(linkIndex, thisSubMenuLinks, 'prev')\n ? getMenuLink(linkIndex, thisSubMenuLinks, 'prev')\n : getMenuLink(prevMenu.length, prevMenu, 'prev');\n }\n if (prevLink) {\n prevLink.focus();\n } else if (onFirst) {\n onFirst();\n }\n }\n }\n });\n });\n });\n };\n\n megaMenus.forEach(menu => {\n const clearActiveListItems = () => {\n // remove active classes from other list items\n menu.querySelectorAll('.wmcads-mega-menu__primary-menu-item').forEach(menuItem => {\n menuItem.classList.remove('active');\n });\n };\n\n // handle setting the active class on menu and list items\n const setMenuActive = (element, active = true, onCloseFocusElement) => {\n if (active) {\n menu.classList.add('active');\n clearActiveListItems();\n // add active class to current item\n element.classList.add('active');\n } else {\n menu.classList.remove('active');\n element.classList.remove('active');\n // set focus on menu close\n\n if (onCloseFocusElement) onCloseFocusElement.focus();\n }\n };\n\n // mobile nav function\n function handleMobileMenu(mq) {\n if (mq.matches) {\n const mobileToggle = menu.querySelector('.wmcads-mega-menu__mobile-toggle');\n const headerEl = menu.parentNode.parentNode;\n\n const topLevelMenuBtn = menu.querySelectorAll('.wmcads-mega-menu__link-arrow-icon-btn');\n const searchBtn = menu.querySelector('.wmcads-mega-menu__search-btn');\n // object to see which menu/menu level is open\n const mobileMenuIsOpen = { menu: false, primary: false, search: false };\n\n // handle mobile menu toggle\n mobileToggle.addEventListener('click', () => {\n mobileMenuIsOpen.menu = !mobileMenuIsOpen.menu;\n if (mobileMenuIsOpen.menu) {\n mobileMenuIsOpen.search = false;\n headerEl.classList.remove('wmcads-header--search-open');\n headerEl.classList.add('wmcads-header--mega-menu-open');\n document.querySelector('html').classList.add('mobile-menu-open');\n } else {\n headerEl.classList.remove(\n 'wmcads-header--mega-menu-open',\n 'wmcads-header--mega-menu-submenu-open'\n );\n document.querySelector('html').classList.remove('mobile-menu-open');\n }\n });\n\n const showSearch = () => {\n mobileMenuIsOpen.search = !mobileMenuIsOpen.search;\n if (mobileMenuIsOpen.search) {\n mobileMenuIsOpen.menu = false;\n headerEl.classList.remove(\n 'wmcads-header--mega-menu-open',\n 'wmcads-header--mega-menu-submenu-open'\n );\n document.querySelector('html').classList.remove('mobile-menu-open');\n headerEl.classList.add('wmcads-header--search-open');\n } else {\n headerEl.classList.remove('wmcads-header--search-open');\n }\n };\n\n if (searchBtn) {\n searchBtn.addEventListener('click', () => {\n showSearch();\n });\n searchBtn.addEventListener('keyup', event => {\n if (event.key === 'Enter') {\n showSearch();\n }\n });\n }\n\n // handle sub menu open/close\n topLevelMenuBtn.forEach(menuBtn => {\n const handleSubMenus = () => {\n mobileMenuIsOpen.primary = !mobileMenuIsOpen.primary;\n const targetListItem = menuBtn.parentNode;\n if (mobileMenuIsOpen.primary) {\n targetListItem.classList.add('open');\n targetListItem.querySelector('.wmcads-mega-menu__sub-menu-link').focus();\n headerEl.classList.add('wmcads-header--mega-menu-submenu-open');\n } else {\n targetListItem.classList.remove('open');\n headerEl.classList.remove('wmcads-header--mega-menu-submenu-open');\n }\n };\n menuBtn.previousElementSibling.addEventListener('click', handleSubMenus);\n menuBtn.addEventListener('click', handleSubMenus);\n });\n\n // mobile collapse for third level menus\n const collapseMenus = menu.querySelectorAll(\n '.wmcads-mega-menu__sub-menu-item .wmcads-mega-menu__collapse-toggle'\n );\n collapseMenus.forEach(collapseToggle => {\n const handleThirdLevelMenus = () => {\n const panel = collapseToggle.nextElementSibling;\n collapseToggle.classList.toggle('open');\n if (panel.style.maxHeight) {\n panel.style.maxHeight = null;\n } else {\n panel.style.maxHeight = `${panel.scrollHeight}px`;\n }\n };\n if (collapseToggle.previousElementSibling.tagName !== 'A') {\n collapseToggle.previousElementSibling.addEventListener('click', handleThirdLevelMenus);\n }\n collapseToggle.addEventListener('click', handleThirdLevelMenus);\n });\n }\n }\n // end mobile nav function\n\n // init mobile nav function\n handleMobileMenu(mobileMenu);\n mobileMenu.addListener(handleMobileMenu);\n\n const topLevelLinks = menu.querySelectorAll('.wmcads-mega-menu__primary-menu-link');\n let menuDelay = false;\n let enterTimeOut;\n let leaveTimeOut;\n const delayTime = 300;\n\n // handle events within each top level list item\n topLevelLinks.forEach((topLevelLink, topLevelLinkIndex) => {\n // return list item parent of the current link if it exists else return the link\n const topLevelListItem =\n topLevelLink.parentNode.tagName === 'LI' ||\n topLevelLink.parentNode.className.includes('wmcads-mega-menu__search')\n ? topLevelLink.parentNode\n : topLevelLink;\n\n const subMenuLinks = topLevelListItem.querySelectorAll('.wmcads-mega-menu__sub-menu-link');\n\n // check if level 3 menus are present, if so add modifier class\n const hasSubmenuChildren =\n topLevelListItem.querySelectorAll('.wmcads-mega-menu__sub-menu-child-menu').length !== 0;\n if (hasSubmenuChildren) {\n topLevelListItem.querySelectorAll('.wmcads-mega-menu__sub-menu').forEach(subMenu => {\n subMenu.classList.add('wmcads-mega-menu__sub-menu--has-child-menus');\n });\n }\n\n const openSubMenu = e => {\n // check if list item has a mega menu\n if (topLevelListItem.querySelectorAll('.wmcads-mega-menu__container').length) {\n e.preventDefault();\n // remove keyFocus to allow menu to show\n setMenuActive(topLevelListItem, true);\n // focus first menu item\n if (topLevelListItem.contains(subMenuLinks[0])) {\n subMenuLinks[0].focus();\n } else if (topLevelListItem.querySelector('.wmcads-search-bar__input')) {\n topLevelListItem.querySelector('.wmcads-search-bar__input').focus();\n }\n }\n };\n\n const handleKeydown = (e, key) => {\n e.stopPropagation();\n // enable keyboard navigation only when search input is not active\n const searchInput = document.querySelector('.wmcads-search-bar__input');\n if (searchInput !== document.activeElement) {\n // if key pressed is enter, space bar or down arrow\n if (key === 13 || key === 32 || key === 40) {\n // enter\n // check if link exists\n if (key === 13) {\n if (!topLevelLink.tagName === 'a' || !topLevelLink.getAttribute('href')) {\n openSubMenu(e);\n }\n } else {\n openSubMenu(e);\n }\n } else if (key === 37) {\n // left arrow\n const prevLink = getMenuLink(topLevelLinkIndex, topLevelLinks, 'prev');\n if (prevLink) prevLink.focus();\n } else if (key === 39) {\n // right arrow\n const nextLink = getMenuLink(topLevelLinkIndex, topLevelLinks, 'next');\n if (nextLink) nextLink.focus();\n } else if (key === 27) {\n // if escape pressed\n setMenuActive(topLevelListItem, false, topLevelLink);\n }\n }\n };\n\n // if top level link doesn't have a mega-menu child add class to menu to hide overlay when hovered\n // has to be added/removed on mouseover to cover menus that have a mix of items with/without mega menus\n const isTopLevelWithMenu = topLevelListItem.querySelectorAll(\n '.wmcads-mega-menu__container'\n ).length;\n\n if (isTopLevelWithMenu) {\n topLevelLink.addEventListener('mouseover', () => {\n if (!menuDelay) {\n // if no menuDelay is active just open the menu\n setMenuActive(topLevelListItem);\n } else {\n // if menuDelay is active, clear all timeouts and start a new one\n clearTimeout(enterTimeOut);\n clearTimeout(leaveTimeOut);\n\n enterTimeOut = setTimeout(() => {\n // enter timeout completed, open menu and kill delay\n menuDelay = false;\n setMenuActive(topLevelListItem);\n }, delayTime);\n }\n });\n topLevelListItem\n .querySelector('.wmcads-mega-menu__container')\n .addEventListener('mouseover', () => {\n if (menuDelay) {\n // if container is rehovered before timeout is done, clear all timeouts kill the delay\n clearTimeout(enterTimeOut);\n clearTimeout(leaveTimeOut);\n menuDelay = false;\n }\n });\n topLevelListItem.addEventListener('mouseleave', () => {\n menuDelay = true;\n // leave timeout is active\n leaveTimeOut = setTimeout(() => {\n // leave timeout completed, close menu\n setMenuActive(topLevelListItem, false);\n menuDelay = false;\n }, delayTime);\n });\n\n topLevelListItem.addEventListener('blur', setMenuActive(topLevelListItem, false));\n }\n\n topLevelListItem.addEventListener('keydown', e => {\n handleKeydown(e, e.keyCode);\n });\n\n // top lvl link event listeners\n topLevelLink.addEventListener('focus', e => {\n e.preventDefault();\n setMenuActive(topLevelListItem, false);\n clearActiveListItems();\n });\n topLevelLink.addEventListener('mousedown', e => {\n // prevent link focus on click\n e.preventDefault();\n });\n\n // set up keyboard navigation for sub menu links\n const subMenuContainer = topLevelListItem.querySelector('.wmcads-mega-menu__sub-menu');\n\n if (subMenuContainer) {\n setKeyboardNavigation(\n subMenuContainer,\n '.wmcads-mega-menu__sub-menu-item',\n // what to do on first link\n () => topLevelLink.focus(),\n // what to do on last link\n () => {\n setMenuActive(topLevelListItem, false);\n if (getMenuLink(topLevelLinkIndex, topLevelLinks, 'next')) {\n getMenuLink(topLevelLinkIndex, topLevelLinks, 'next').focus();\n }\n }\n );\n }\n });\n\n // set up keyboard navigation for search menu links\n const searchMenuContainer = menu.querySelector('.wmcads-search-container');\n if (searchMenuContainer) {\n setKeyboardNavigation(\n searchMenuContainer,\n '.wmcads-search-list',\n // what to do on first link\n () => menu.querySelector('.wmcads-search-bar__input').focus(),\n // what to do on last link\n () =>\n setMenuActive(\n menu.querySelector('.wmcads-mega-menu__search'),\n false,\n menu.querySelector('.wmcads-mega-menu__search-btn')\n )\n );\n }\n });\n};\n\nexport default headerJs;\n","const searchFilterJs = () => {\n const showBtn = document.getElementById('show_filter_btn');\n const hideBtn = document.getElementById('hide_filter_btn');\n const showResults = document.getElementById('show_results_btn');\n const searchFilter = document.getElementById('search_filter');\n\n if (searchFilter) {\n const filterOptions = searchFilter.querySelectorAll('.wmcads-fe-checkboxes__input');\n\n filterOptions.forEach(option => {\n option.addEventListener('change', () => {\n if ([...filterOptions].some(input => input.checked)) {\n searchFilter.classList.add('wmcads-search-filter--has-inputs-checked');\n } else {\n searchFilter.classList.remove('wmcads-search-filter--has-inputs-checked');\n }\n });\n });\n\n const showFilter = (show = true) => {\n if (show) {\n searchFilter.classList.add('wmcads-search-filter--is-open');\n searchFilter.setAttribute('aria-expanded', 'true');\n } else {\n searchFilter.classList.remove('wmcads-search-filter--is-open');\n searchFilter.setAttribute('aria-expanded', 'false');\n }\n };\n\n const clearFilters = () => {\n filterOptions.forEach(option => {\n option.checked = false; // eslint-disable-line no-param-reassign\n });\n searchFilter.classList.remove('wmcads-search-filter--has-inputs-checked');\n };\n\n showBtn.addEventListener('click', e => {\n e.preventDefault();\n showFilter();\n });\n\n hideBtn.addEventListener('click', e => {\n e.preventDefault();\n showFilter(false);\n });\n\n document.querySelectorAll('.wmcads-search-filter__clear-all').forEach(clearBtn => {\n clearBtn.addEventListener('click', e => {\n e.preventDefault();\n clearFilters();\n });\n });\n\n showResults.addEventListener('click', () => showFilter(false));\n }\n};\n\nexport default searchFilterJs;\n","import 'iframe-resizer/js/iframeResizer'; // Import iframe resizer logic\n\nconst componentExampleIframe = () => {\n const iframeExamples = document.querySelectorAll('.wmcads-website-code-example__iframe');\n\n iframeExamples.forEach(iframeElement => {\n const ifrm = iframeElement;\n\n // get iframe content\n const html = ifrm.dataset.src;\n // clear unnecessary html\n ifrm.innerHTML = '';\n\n const host = `//${window.location.host}`;\n\n const ajax = new XMLHttpRequest();\n ajax.open('GET', `${host}/img/wmcads-icons.min.svg`, true); // Fire off ajax to get spritesheet\n ajax.send();\n // When spritesheet has loaded\n ajax.onload = () => {\n // CONSTRUCT HTML TO INJECT IN IFRAME\n const svgSprite = `
${ajax.responseText}
`; // Set spritesheet to hidden dom element\n // set up iframe content structure\n const source = `\n \n \n \n \n \n \n \n \n
\n ${svgSprite}\n ${html || ''}\n
\n \n \n \n \n \n `;\n ifrm.contentWindow.document.open(); // Open the iframe doc to write to\n ifrm.contentWindow.document.write(source); // Put in html\n ifrm.contentWindow.document.close(); // Cloe the iframe doc\n\n ifrm.onload = () => {\n window.iFrameResize({ checkOrigin: [`http:${host}`, `https:${host}`] }, ifrm);\n }; // When the iframe has loaded then run resize function to give correct height/width, checkOrigin is an array that contains the allow hosts that can change the iframe\n };\n\n return ifrm;\n });\n};\n\nexport default componentExampleIframe;\n","// The commented out code below is for compiling ES6 to ES5 in the browser. Commented out for now as it doesn't work great in IE11\n// import * as babel from '@babel/standalone';\n\nconst componentExampleScript = () => {\n const exampleScripts = document.querySelectorAll('.wmcads-website-code-example__js'); // Get all code examples that have the js tab enabled\n\n exampleScripts.forEach(exampleScript => {\n const parentEle = exampleScript; // get parent element for easier querying\n const scriptTag = parentEle.querySelector('script').innerHTML; // Grab our javascript from the hidden script tag\n\n // Func to replace special chars with nice html chars\n const escapeCharacters = str => {\n return str\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace('
', '
')\n .trim();\n };\n\n const escapeCharScriptES6 = escapeCharacters(scriptTag); // Run our code through the escaper func\n\n // *** BABEL COMPILER ES6 => ES5 (TURNED OFF DUE TO IE11 ISSUE) ***\n // compile fn\n // const compileJs = input => babel.transform(input, { presets: ['env'] }).code;\n // const escapedCharScriptES5 = escapeCharacters(compileJs(scriptTag));\n\n // parentEle.querySelector('.wmcads-details--js .js').innerHTML = escapedCharScriptES5;\n\n // *** END BABEL ES6 => ES5 ***\n\n parentEle.querySelector('.wmcads-details--es6 .js').innerHTML = escapeCharScriptES6; // The find the es6 pre/code block and drop our formatted code in there\n });\n};\n\nexport default componentExampleScript;\n","const seeExampleFullScreen = () => {\n const fullScreenBtns = document.querySelectorAll('.wmcads-website-code-example__view-fullscreen');\n const { style } = document.documentElement;\n\n fullScreenBtns.forEach(btn => {\n const btnEle = btn; // Grab ele of btn and map to const to avoid mutation\n const codeExampleDiv = btnEle.parentElement; // Get parent div of button (inner wrap)\n\n // Func on what to do when closing full screen\n const closeFullScreen = () => {\n codeExampleDiv.classList.remove('wmcads-website-code-example--fullscreen'); // Remove full screen class\n btnEle.innerHTML = 'See this example in fullscreen'; // Change button text\n style.overflow = 'initial'; // Set body overflow back to initial, so we enable scrolling again\n style.overscrollBehaviorY = 'initial'; // Enables pull down to refresh in chrome on android\n };\n\n // Func to handle what to do when keys are pressed\n const handleFullScreenKeyDown = e => {\n const focusableElements = 'button, [href], input, select, textarea, details, summary'; // Element we want to track\n\n const firstFocusableElement = codeExampleDiv.querySelectorAll(focusableElements)[0]; // Get first element to be focused\n const focusableContent = codeExampleDiv.querySelectorAll(focusableElements); // Get all focusable elements\n const lastFocusableElement = focusableContent[focusableContent.length - 1]; // Get last element to be focused\n\n const isTabPressed = e.key === 'Tab' || e.keyCode === 9; // Map to tab key\n const isEscPressed = e.key === 'Esc' || e.key === 'Escape' || e.keyCode === 27; // Map to esc key\n\n // If tabe or esc is not pressed then break out of func\n if (!isTabPressed && !isEscPressed) {\n return;\n }\n\n // If escape key pressed\n if (isEscPressed) {\n closeFullScreen();\n document.removeEventListener('keydown', handleFullScreenKeyDown); // Remove listener as we want to go back to normal keyboard events\n }\n // else if shift key pressed for shift + tab combination\n else if (e.shiftKey) {\n // if focused has reached to first focusable element then focus last focusable element after pressing shift + tab\n if (document.activeElement === firstFocusableElement) {\n e.preventDefault();\n lastFocusableElement.focus(); // add focus for the last focusable element\n }\n }\n // if tab key is pressed\n else if (document.activeElement === lastFocusableElement) {\n e.preventDefault();\n // if focused has reached to last focusable element then focus first focusable element after pressing tab\n firstFocusableElement.focus(); // add focus for the first focusable element\n }\n };\n\n // Func to handle click of btn\n const handleClick = () => {\n // Func on what to do when opening full screen\n const openFullScreen = () => {\n codeExampleDiv.classList.add('wmcads-website-code-example--fullscreen'); // Add full screen class\n btnEle.innerHTML = 'Close this fullscreen example'; // Change button text\n style.overflow = 'hidden'; // Set body overflow to hidden, so we don't snap to body scrollbar\n style.overscrollBehaviorY = 'none'; // Stops pull down to refresh in chrome on android\n document.addEventListener('keydown', handleFullScreenKeyDown); // Add listener to key events for full screen\n };\n // If we are in fullscreen mode\n if (codeExampleDiv.classList.contains('wmcads-website-code-example--fullscreen')) {\n closeFullScreen(); // Close full screen\n document.removeEventListener('keydown', handleFullScreenKeyDown); /// Remove listener as we want to go back to normal keyboard events\n }\n // Else we want to go into fullscreen mode\n else {\n openFullScreen();\n }\n };\n\n btnEle.addEventListener('click', handleClick);\n });\n};\n\nconst componentExample = () => {\n const { hljs } = window; // declare higlightJS as global var\n document.querySelectorAll('pre code').forEach(element => {\n // Run highlightJS for each pre code element found */\n return hljs.highlightBlock(element);\n });\n\n seeExampleFullScreen();\n};\n\nexport default componentExample;\n","import componentExample from './_component-example';\nimport componentExampleScript from './_component-example-script';\nimport componentExampleIframe from './_component-example-iframe';\n\nexport { componentExample, componentExampleScript, componentExampleIframe };\n","/*\nDetails Element Polyfill 2.4.0\nCopyright © 2019 Javan Makhmali\n */\n(function() {\n \"use strict\";\n var element = document.createElement(\"details\");\n var elementIsNative = typeof HTMLDetailsElement != \"undefined\" && element instanceof HTMLDetailsElement;\n var support = {\n open: \"open\" in element || elementIsNative,\n toggle: \"ontoggle\" in element\n };\n var styles = '\\ndetails, summary {\\n display: block;\\n}\\ndetails:not([open]) > *:not(summary) {\\n display: none;\\n}\\nsummary::before {\\n content: \"►\";\\n padding-right: 0.3rem;\\n font-size: 0.6rem;\\n cursor: default;\\n}\\n[open] > summary::before {\\n content: \"▼\";\\n}\\n';\n var _ref = [], forEach = _ref.forEach, slice = _ref.slice;\n if (!support.open) {\n polyfillStyles();\n polyfillProperties();\n polyfillToggle();\n polyfillAccessibility();\n }\n if (support.open && !support.toggle) {\n polyfillToggleEvent();\n }\n function polyfillStyles() {\n document.head.insertAdjacentHTML(\"afterbegin\", \"\");\n }\n function polyfillProperties() {\n var prototype = document.createElement(\"details\").constructor.prototype;\n var setAttribute = prototype.setAttribute, removeAttribute = prototype.removeAttribute;\n var open = Object.getOwnPropertyDescriptor(prototype, \"open\");\n Object.defineProperties(prototype, {\n open: {\n get: function get() {\n if (this.tagName == \"DETAILS\") {\n return this.hasAttribute(\"open\");\n } else {\n if (open && open.get) {\n return open.get.call(this);\n }\n }\n },\n set: function set(value) {\n if (this.tagName == \"DETAILS\") {\n return value ? this.setAttribute(\"open\", \"\") : this.removeAttribute(\"open\");\n } else {\n if (open && open.set) {\n return open.set.call(this, value);\n }\n }\n }\n },\n setAttribute: {\n value: function value(name, _value) {\n var _this = this;\n var call = function call() {\n return setAttribute.call(_this, name, _value);\n };\n if (name == \"open\" && this.tagName == \"DETAILS\") {\n var wasOpen = this.hasAttribute(\"open\");\n var result = call();\n if (!wasOpen) {\n var summary = this.querySelector(\"summary\");\n if (summary) summary.setAttribute(\"aria-expanded\", true);\n triggerToggle(this);\n }\n return result;\n }\n return call();\n }\n },\n removeAttribute: {\n value: function value(name) {\n var _this2 = this;\n var call = function call() {\n return removeAttribute.call(_this2, name);\n };\n if (name == \"open\" && this.tagName == \"DETAILS\") {\n var wasOpen = this.hasAttribute(\"open\");\n var result = call();\n if (wasOpen) {\n var summary = this.querySelector(\"summary\");\n if (summary) summary.setAttribute(\"aria-expanded\", false);\n triggerToggle(this);\n }\n return result;\n }\n return call();\n }\n }\n });\n }\n function polyfillToggle() {\n onTogglingTrigger(function(element) {\n element.hasAttribute(\"open\") ? element.removeAttribute(\"open\") : element.setAttribute(\"open\", \"\");\n });\n }\n function polyfillToggleEvent() {\n if (window.MutationObserver) {\n new MutationObserver(function(mutations) {\n forEach.call(mutations, function(mutation) {\n var target = mutation.target, attributeName = mutation.attributeName;\n if (target.tagName == \"DETAILS\" && attributeName == \"open\") {\n triggerToggle(target);\n }\n });\n }).observe(document.documentElement, {\n attributes: true,\n subtree: true\n });\n } else {\n onTogglingTrigger(function(element) {\n var wasOpen = element.getAttribute(\"open\");\n setTimeout(function() {\n var isOpen = element.getAttribute(\"open\");\n if (wasOpen != isOpen) {\n triggerToggle(element);\n }\n }, 1);\n });\n }\n }\n function polyfillAccessibility() {\n setAccessibilityAttributes(document);\n if (window.MutationObserver) {\n new MutationObserver(function(mutations) {\n forEach.call(mutations, function(mutation) {\n forEach.call(mutation.addedNodes, setAccessibilityAttributes);\n });\n }).observe(document.documentElement, {\n subtree: true,\n childList: true\n });\n } else {\n document.addEventListener(\"DOMNodeInserted\", function(event) {\n setAccessibilityAttributes(event.target);\n });\n }\n }\n function setAccessibilityAttributes(root) {\n findElementsWithTagName(root, \"SUMMARY\").forEach(function(summary) {\n var details = findClosestElementWithTagName(summary, \"DETAILS\");\n summary.setAttribute(\"aria-expanded\", details.hasAttribute(\"open\"));\n if (!summary.hasAttribute(\"tabindex\")) summary.setAttribute(\"tabindex\", \"0\");\n if (!summary.hasAttribute(\"role\")) summary.setAttribute(\"role\", \"button\");\n });\n }\n function eventIsSignificant(event) {\n return !(event.defaultPrevented || event.ctrlKey || event.metaKey || event.shiftKey || event.target.isContentEditable);\n }\n function onTogglingTrigger(callback) {\n addEventListener(\"click\", function(event) {\n if (eventIsSignificant(event)) {\n if (event.which <= 1) {\n var element = findClosestElementWithTagName(event.target, \"SUMMARY\");\n if (element && element.parentNode && element.parentNode.tagName == \"DETAILS\") {\n callback(element.parentNode);\n }\n }\n }\n }, false);\n addEventListener(\"keydown\", function(event) {\n if (eventIsSignificant(event)) {\n if (event.keyCode == 13 || event.keyCode == 32) {\n var element = findClosestElementWithTagName(event.target, \"SUMMARY\");\n if (element && element.parentNode && element.parentNode.tagName == \"DETAILS\") {\n callback(element.parentNode);\n event.preventDefault();\n }\n }\n }\n }, false);\n }\n function triggerToggle(element) {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"toggle\", false, false);\n element.dispatchEvent(event);\n }\n function findElementsWithTagName(root, tagName) {\n return (root.tagName == tagName ? [ root ] : []).concat(typeof root.getElementsByTagName == \"function\" ? slice.call(root.getElementsByTagName(tagName)) : []);\n }\n function findClosestElementWithTagName(element, tagName) {\n if (typeof element.closest == \"function\") {\n return element.closest(tagName);\n } else {\n while (element) {\n if (element.tagName == tagName) {\n return element;\n } else {\n element = element.parentNode;\n }\n }\n }\n }\n})();","const forEachPolyFill = () => {\n // missing forEach on NodeList for IE11\n if (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n};\n\nexport default forEachPolyFill();\n","const includesPolyfill = () => {\n if (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n 'use strict';\n\n if (search instanceof RegExp) {\n throw TypeError('first argument must not be a RegExp');\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n};\n\nexport default includesPolyfill();\n","// Export * from any polyfill files in the polyfills folder\n// Make sure that the file is exporting the function running like\n// export default forEachPolyFill();\n\n// This file is then included as the first import in the main wmcads-website.js file so our polyfills get loaded\nexport * from './ie11-forEach';\nexport * from './includes';\nexport * from './details-element'\n","function aToZContentStyleGuide() {\n // FUNCTIONS\n // Change accordion state\n const changeAccordionState = (accordionElem, changeStateToOpen = true) => {\n const accordionBtn = accordionElem.querySelector('.wmcads-accordion__summary-wrapper');\n if (changeStateToOpen) {\n accordionElem.classList.add('wmcads-is--open');\n accordionBtn.setAttribute('aria-expanded', true);\n } else {\n accordionElem.classList.remove('wmcads-is--open');\n accordionBtn.setAttribute('aria-expanded', false);\n }\n };\n\n // Change all accordion states at once\n const changeAllAccordionStates = changeStateToOpen => {\n const accordions = document.querySelectorAll('main .wmcads-accordion');\n accordions.forEach(accordion => changeAccordionState(accordion, changeStateToOpen));\n };\n\n // Scroll to an anchor within an accordion\n const scrollToAnchor = idWithHash => {\n // Check if element is on the page\n const elem = document.querySelector(idWithHash);\n if (!elem || elem.classList.contains('wmcads-accordion__summary-wrapper')) {\n return;\n }\n // Open accordion and scroll to element\n changeAccordionState(elem.parentElement.parentElement);\n elem.scrollIntoView();\n };\n\n // Check for anchor to scroll to onload\n const scrollToAnchorOnLoad = () => {\n if (document.location.hash) {\n scrollToAnchor(document.location.hash);\n }\n };\n\n // Add event listener to all section links on the page\n const setupScrollToAnchor = () => {\n const anchors = document.querySelectorAll('main a[href^=\"#\"]:not([href=\"#\"])');\n // Loop through an add event listener\n anchors.forEach(anchor => {\n anchor.addEventListener('click', e => {\n e.preventDefault();\n scrollToAnchor(anchor.hash);\n });\n });\n };\n\n // Set up controls\n const setupAccordionControls = () => {\n const controls = document.querySelectorAll('main .js-accordion-controls button');\n\n controls.forEach(control => {\n control.addEventListener('click', () => {\n changeAllAccordionStates(control.classList.contains('js-accordion-controls-open'));\n });\n });\n };\n\n // CALL FUNCTIONS\n if (document.querySelector('#atozofstyle')) {\n scrollToAnchorOnLoad();\n setupScrollToAnchor();\n setupAccordionControls();\n }\n}\n\nexport default aToZContentStyleGuide;\n","function colorPalettes() {\n const colors = document.querySelectorAll('.wmcads-website-color-swatch__inner');\n\n // Function to convert rgb to hex\n function rgb2hex(rgb) {\n const newRGB = rgb.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n function hex(x) {\n return `0${parseInt(x, 10).toString(16)}`.slice(-2);\n }\n return `#${hex(newRGB[1])}${hex(newRGB[2])}${hex(newRGB[3])}`;\n }\n\n colors.forEach(swatch => {\n const ele = swatch;\n const rgbColor = getComputedStyle(swatch).backgroundColor;\n const hexColor = rgb2hex(rgbColor);\n\n ele.nextElementSibling.querySelector('pre code .color-hex').innerText = `color: '${hexColor}'`;\n });\n}\n\nexport default colorPalettes;\n","/*\n * File: iframeResizer.js\n * Desc: Force iframes to size to content.\n * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.\n * Doc: https://github.com/davidjbradshaw/iframe-resizer\n * Author: David J. Bradshaw - dave@bradshaw.net\n * Contributor: Jure Mav - jure.mav@gmail.com\n * Contributor: Reed Dadoune - reed@dadoune.com\n */\n\n// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names\n;(function (undefined) {\n if (typeof window === 'undefined') return // don't run for server side render\n\n var count = 0,\n logEnabled = false,\n hiddenCheckEnabled = false,\n msgHeader = 'message',\n msgHeaderLen = msgHeader.length,\n msgId = '[iFrameSizer]', // Must match iframe msg ID\n msgIdLen = msgId.length,\n pagePosition = null,\n requestAnimationFrame = window.requestAnimationFrame,\n resetRequiredMethods = Object.freeze({\n max: 1,\n scroll: 1,\n bodyScroll: 1,\n documentElementScroll: 1\n }),\n settings = {},\n timer = null,\n defaults = Object.freeze({\n autoResize: true,\n bodyBackground: null,\n bodyMargin: null,\n bodyMarginV1: 8,\n bodyPadding: null,\n checkOrigin: true,\n inPageLinks: false,\n enablePublicMethods: true,\n heightCalculationMethod: 'bodyOffset',\n id: 'iFrameResizer',\n interval: 32,\n log: false,\n maxHeight: Infinity,\n maxWidth: Infinity,\n minHeight: 0,\n minWidth: 0,\n mouseEvents: true,\n resizeFrom: 'parent',\n scrolling: false,\n sizeHeight: true,\n sizeWidth: false,\n warningTimeout: 5000,\n tolerance: 0,\n widthCalculationMethod: 'scroll',\n onClose: function () {\n return true\n },\n onClosed: function () {},\n onInit: function () {},\n onMessage: function () {\n warn('onMessage function not defined')\n },\n onMouseEnter: function () {},\n onMouseLeave: function () {},\n onResized: function () {},\n onScroll: function () {\n return true\n }\n })\n\n function getMutationObserver() {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n )\n }\n\n function addEventListener(el, evt, func) {\n el.addEventListener(evt, func, false)\n }\n\n function removeEventListener(el, evt, func) {\n el.removeEventListener(evt, func, false)\n }\n\n function setupRequestAnimationFrame() {\n var vendors = ['moz', 'webkit', 'o', 'ms']\n var x\n\n // Remove vendor prefixing if prefixed and break early if not\n for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {\n requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']\n }\n\n if (requestAnimationFrame) {\n // Firefox extension content-scripts have a globalThis object that is not the same as window.\n // Binding `requestAnimationFrame` to window allows the function to work and prevents errors\n // being thrown when run in that context, and should be a no-op in every other context.\n requestAnimationFrame = requestAnimationFrame.bind(window)\n } else {\n log('setup', 'RequestAnimationFrame not supported')\n }\n }\n\n function getMyID(iframeId) {\n var retStr = 'Host page: ' + iframeId\n\n if (window.top !== window.self) {\n retStr =\n window.parentIFrame && window.parentIFrame.getId\n ? window.parentIFrame.getId() + ': ' + iframeId\n : 'Nested host page: ' + iframeId\n }\n\n return retStr\n }\n\n function formatLogHeader(iframeId) {\n return msgId + '[' + getMyID(iframeId) + ']'\n }\n\n function isLogEnabled(iframeId) {\n return settings[iframeId] ? settings[iframeId].log : logEnabled\n }\n\n function log(iframeId, msg) {\n output('log', iframeId, msg, isLogEnabled(iframeId))\n }\n\n function info(iframeId, msg) {\n output('info', iframeId, msg, isLogEnabled(iframeId))\n }\n\n function warn(iframeId, msg) {\n output('warn', iframeId, msg, true)\n }\n\n function output(type, iframeId, msg, enabled) {\n if (true === enabled && 'object' === typeof window.console) {\n // eslint-disable-next-line no-console\n console[type](formatLogHeader(iframeId), msg)\n }\n }\n\n function iFrameListener(event) {\n function resizeIFrame() {\n function resize() {\n setSize(messageData)\n setPagePosition(iframeId)\n on('onResized', messageData)\n }\n\n ensureInRange('Height')\n ensureInRange('Width')\n\n syncResize(resize, messageData, 'init')\n }\n\n function processMsg() {\n var data = msg.slice(msgIdLen).split(':')\n var height = data[1] ? parseInt(data[1], 10) : 0\n var iframe = settings[data[0]] && settings[data[0]].iframe\n var compStyle = getComputedStyle(iframe)\n\n return {\n iframe: iframe,\n id: data[0],\n height: height + getPaddingEnds(compStyle) + getBorderEnds(compStyle),\n width: data[2],\n type: data[3]\n }\n }\n\n function getPaddingEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.paddingTop ? parseInt(compStyle.paddingTop, 10) : 0\n var bot = compStyle.paddingBottom\n ? parseInt(compStyle.paddingBottom, 10)\n : 0\n return top + bot\n }\n\n function getBorderEnds(compStyle) {\n if (compStyle.boxSizing !== 'border-box') {\n return 0\n }\n var top = compStyle.borderTopWidth\n ? parseInt(compStyle.borderTopWidth, 10)\n : 0\n var bot = compStyle.borderBottomWidth\n ? parseInt(compStyle.borderBottomWidth, 10)\n : 0\n return top + bot\n }\n\n function ensureInRange(Dimension) {\n var max = Number(settings[iframeId]['max' + Dimension]),\n min = Number(settings[iframeId]['min' + Dimension]),\n dimension = Dimension.toLowerCase(),\n size = Number(messageData[dimension])\n\n log(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)\n\n if (size < min) {\n size = min\n log(iframeId, 'Set ' + dimension + ' to min value')\n }\n\n if (size > max) {\n size = max\n log(iframeId, 'Set ' + dimension + ' to max value')\n }\n\n messageData[dimension] = '' + size\n }\n\n function isMessageFromIFrame() {\n function checkAllowedOrigin() {\n function checkList() {\n var i = 0,\n retCode = false\n\n log(\n iframeId,\n 'Checking connection is from allowed list of origins: ' +\n checkOrigin\n )\n\n for (; i < checkOrigin.length; i++) {\n if (checkOrigin[i] === origin) {\n retCode = true\n break\n }\n }\n return retCode\n }\n\n function checkSingle() {\n var remoteHost = settings[iframeId] && settings[iframeId].remoteHost\n log(iframeId, 'Checking connection is from: ' + remoteHost)\n return origin === remoteHost\n }\n\n return checkOrigin.constructor === Array ? checkList() : checkSingle()\n }\n\n var origin = event.origin,\n checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin\n\n if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {\n throw new Error(\n 'Unexpected message received from: ' +\n origin +\n ' for ' +\n messageData.iframe.id +\n '. Message was: ' +\n event.data +\n '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'\n )\n }\n\n return true\n }\n\n function isMessageForUs() {\n return (\n msgId === ('' + msg).slice(0, msgIdLen) &&\n msg.slice(msgIdLen).split(':')[0] in settings\n ) // ''+Protects against non-string msg\n }\n\n function isMessageFromMetaParent() {\n // Test if this message is from a parent above us. This is an ugly test, however, updating\n // the message format would break backwards compatibility.\n var retCode = messageData.type in { true: 1, false: 1, undefined: 1 }\n\n if (retCode) {\n log(iframeId, 'Ignoring init message from meta parent page')\n }\n\n return retCode\n }\n\n function getMsgBody(offset) {\n return msg.slice(msg.indexOf(':') + msgHeaderLen + offset)\n }\n\n function forwardMsgFromIFrame(msgBody) {\n log(\n iframeId,\n 'onMessage passed: {iframe: ' +\n messageData.iframe.id +\n ', message: ' +\n msgBody +\n '}'\n )\n\n on('onMessage', {\n iframe: messageData.iframe,\n message: JSON.parse(msgBody)\n })\n\n log(iframeId, '--')\n }\n\n function getPageInfo() {\n var bodyPosition = document.body.getBoundingClientRect(),\n iFramePosition = messageData.iframe.getBoundingClientRect()\n\n return JSON.stringify({\n iframeHeight: iFramePosition.height,\n iframeWidth: iFramePosition.width,\n clientHeight: Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n ),\n clientWidth: Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n ),\n offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),\n offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),\n scrollTop: window.pageYOffset,\n scrollLeft: window.pageXOffset,\n documentHeight: document.documentElement.clientHeight,\n documentWidth: document.documentElement.clientWidth,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth\n })\n }\n\n function sendPageInfoToIframe(iframe, iframeId) {\n function debouncedTrigger() {\n trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)\n }\n debounceFrameEvents(debouncedTrigger, 32, iframeId)\n }\n\n function startPageInfoMonitor() {\n function setListener(type, func) {\n function sendPageInfo() {\n if (settings[id]) {\n sendPageInfoToIframe(settings[id].iframe, id)\n } else {\n stop()\n }\n }\n\n ;['scroll', 'resize'].forEach(function (evt) {\n log(id, type + evt + ' listener for sendPageInfo')\n func(window, evt, sendPageInfo)\n })\n }\n\n function stop() {\n setListener('Remove ', removeEventListener)\n }\n\n function start() {\n setListener('Add ', addEventListener)\n }\n\n var id = iframeId // Create locally scoped copy of iFrame ID\n\n start()\n\n if (settings[id]) {\n settings[id].stopPageInfo = stop\n }\n }\n\n function stopPageInfoMonitor() {\n if (settings[iframeId] && settings[iframeId].stopPageInfo) {\n settings[iframeId].stopPageInfo()\n delete settings[iframeId].stopPageInfo\n }\n }\n\n function checkIFrameExists() {\n var retBool = true\n\n if (null === messageData.iframe) {\n warn(iframeId, 'IFrame (' + messageData.id + ') not found')\n retBool = false\n }\n return retBool\n }\n\n function getElementPosition(target) {\n var iFramePosition = target.getBoundingClientRect()\n\n getPagePosition(iframeId)\n\n return {\n x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),\n y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))\n }\n }\n\n function scrollRequestFromChild(addOffset) {\n /* istanbul ignore next */ // Not testable in Karma\n function reposition() {\n pagePosition = newPosition\n scrollTo()\n log(iframeId, '--')\n }\n\n function calcOffset() {\n return {\n x: Number(messageData.width) + offset.x,\n y: Number(messageData.height) + offset.y\n }\n }\n\n function scrollParent() {\n if (window.parentIFrame) {\n window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](\n newPosition.x,\n newPosition.y\n )\n } else {\n warn(\n iframeId,\n 'Unable to scroll to requested position, window.parentIFrame not found'\n )\n }\n }\n\n var offset = addOffset\n ? getElementPosition(messageData.iframe)\n : { x: 0, y: 0 },\n newPosition = calcOffset()\n\n log(\n iframeId,\n 'Reposition requested from iFrame (offset x:' +\n offset.x +\n ' y:' +\n offset.y +\n ')'\n )\n\n if (window.top === window.self) {\n reposition()\n } else {\n scrollParent()\n }\n }\n\n function scrollTo() {\n if (false === on('onScroll', pagePosition)) {\n unsetPagePosition()\n } else {\n setPagePosition(iframeId)\n }\n }\n\n function findTarget(location) {\n function jumpToTarget() {\n var jumpPosition = getElementPosition(target)\n\n log(\n iframeId,\n 'Moving to in page link (#' +\n hash +\n ') at x: ' +\n jumpPosition.x +\n ' y: ' +\n jumpPosition.y\n )\n pagePosition = {\n x: jumpPosition.x,\n y: jumpPosition.y\n }\n\n scrollTo()\n log(iframeId, '--')\n }\n\n function jumpToParent() {\n if (window.parentIFrame) {\n window.parentIFrame.moveToAnchor(hash)\n } else {\n log(\n iframeId,\n 'In page link #' +\n hash +\n ' not found and window.parentIFrame not found'\n )\n }\n }\n\n var hash = location.split('#')[1] || '',\n hashData = decodeURIComponent(hash),\n target =\n document.getElementById(hashData) ||\n document.getElementsByName(hashData)[0]\n\n if (target) {\n jumpToTarget()\n } else if (window.top === window.self) {\n log(iframeId, 'In page link #' + hash + ' not found')\n } else {\n jumpToParent()\n }\n }\n\n function onMouse(event) {\n var mousePos = {}\n\n if (Number(messageData.width) === 0 && Number(messageData.height) === 0) {\n var data = getMsgBody(9).split(':')\n mousePos = {\n x: data[1],\n y: data[0]\n }\n } else {\n mousePos = {\n x: messageData.width,\n y: messageData.height\n }\n }\n\n on(event, {\n iframe: messageData.iframe,\n screenX: Number(mousePos.x),\n screenY: Number(mousePos.y),\n type: messageData.type\n })\n }\n\n function on(funcName, val) {\n return chkEvent(iframeId, funcName, val)\n }\n\n function actionMsg() {\n if (settings[iframeId] && settings[iframeId].firstRun) firstRun()\n\n switch (messageData.type) {\n case 'close': {\n closeIFrame(messageData.iframe)\n break\n }\n\n case 'message': {\n forwardMsgFromIFrame(getMsgBody(6))\n break\n }\n\n case 'mouseenter': {\n onMouse('onMouseEnter')\n break\n }\n\n case 'mouseleave': {\n onMouse('onMouseLeave')\n break\n }\n\n case 'autoResize': {\n settings[iframeId].autoResize = JSON.parse(getMsgBody(9))\n break\n }\n\n case 'scrollTo': {\n scrollRequestFromChild(false)\n break\n }\n\n case 'scrollToOffset': {\n scrollRequestFromChild(true)\n break\n }\n\n case 'pageInfo': {\n sendPageInfoToIframe(\n settings[iframeId] && settings[iframeId].iframe,\n iframeId\n )\n startPageInfoMonitor()\n break\n }\n\n case 'pageInfoStop': {\n stopPageInfoMonitor()\n break\n }\n\n case 'inPageLink': {\n findTarget(getMsgBody(9))\n break\n }\n\n case 'reset': {\n resetIFrame(messageData)\n break\n }\n\n case 'init': {\n resizeIFrame()\n on('onInit', messageData.iframe)\n break\n }\n\n default: {\n if (\n Number(messageData.width) === 0 &&\n Number(messageData.height) === 0\n ) {\n warn(\n 'Unsupported message received (' +\n messageData.type +\n '), this is likely due to the iframe containing a later ' +\n 'version of iframe-resizer than the parent page'\n )\n } else {\n resizeIFrame()\n }\n }\n }\n }\n\n function hasSettings(iframeId) {\n var retBool = true\n\n if (!settings[iframeId]) {\n retBool = false\n warn(\n messageData.type +\n ' No settings for ' +\n iframeId +\n '. Message was: ' +\n msg\n )\n }\n\n return retBool\n }\n\n function iFrameReadyMsgReceived() {\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (var iframeId in settings) {\n trigger(\n 'iFrame requested init',\n createOutgoingMsg(iframeId),\n settings[iframeId].iframe,\n iframeId\n )\n }\n }\n\n function firstRun() {\n if (settings[iframeId]) {\n settings[iframeId].firstRun = false\n }\n }\n\n var msg = event.data,\n messageData = {},\n iframeId = null\n\n if ('[iFrameResizerChild]Ready' === msg) {\n iFrameReadyMsgReceived()\n } else if (isMessageForUs()) {\n messageData = processMsg()\n iframeId = messageData.id\n if (settings[iframeId]) {\n settings[iframeId].loaded = true\n }\n\n if (!isMessageFromMetaParent() && hasSettings(iframeId)) {\n log(iframeId, 'Received: ' + msg)\n\n if (checkIFrameExists() && isMessageFromIFrame()) {\n actionMsg()\n }\n }\n } else {\n info(iframeId, 'Ignored: ' + msg)\n }\n }\n\n function chkEvent(iframeId, funcName, val) {\n var func = null,\n retVal = null\n\n if (settings[iframeId]) {\n func = settings[iframeId][funcName]\n\n if ('function' === typeof func) {\n retVal = func(val)\n } else {\n throw new TypeError(\n funcName + ' on iFrame[' + iframeId + '] is not a function'\n )\n }\n }\n\n return retVal\n }\n\n function removeIframeListeners(iframe) {\n var iframeId = iframe.id\n delete settings[iframeId]\n }\n\n function closeIFrame(iframe) {\n var iframeId = iframe.id\n if (chkEvent(iframeId, 'onClose', iframeId) === false) {\n log(iframeId, 'Close iframe cancelled by onClose event')\n return\n }\n log(iframeId, 'Removing iFrame: ' + iframeId)\n\n try {\n // Catch race condition error with React\n if (iframe.parentNode) {\n iframe.parentNode.removeChild(iframe)\n }\n } catch (error) {\n warn(error)\n }\n\n chkEvent(iframeId, 'onClosed', iframeId)\n log(iframeId, '--')\n removeIframeListeners(iframe)\n }\n\n function getPagePosition(iframeId) {\n if (null === pagePosition) {\n pagePosition = {\n x:\n window.pageXOffset === undefined\n ? document.documentElement.scrollLeft\n : window.pageXOffset,\n y:\n window.pageYOffset === undefined\n ? document.documentElement.scrollTop\n : window.pageYOffset\n }\n log(\n iframeId,\n 'Get page position: ' + pagePosition.x + ',' + pagePosition.y\n )\n }\n }\n\n function setPagePosition(iframeId) {\n if (null !== pagePosition) {\n window.scrollTo(pagePosition.x, pagePosition.y)\n log(\n iframeId,\n 'Set page position: ' + pagePosition.x + ',' + pagePosition.y\n )\n unsetPagePosition()\n }\n }\n\n function unsetPagePosition() {\n pagePosition = null\n }\n\n function resetIFrame(messageData) {\n function reset() {\n setSize(messageData)\n trigger('reset', 'reset', messageData.iframe, messageData.id)\n }\n\n log(\n messageData.id,\n 'Size reset requested by ' +\n ('init' === messageData.type ? 'host page' : 'iFrame')\n )\n getPagePosition(messageData.id)\n syncResize(reset, messageData, 'reset')\n }\n\n function setSize(messageData) {\n function setDimension(dimension) {\n if (!messageData.id) {\n log('undefined', 'messageData id not set')\n return\n }\n messageData.iframe.style[dimension] = messageData[dimension] + 'px'\n log(\n messageData.id,\n 'IFrame (' +\n iframeId +\n ') ' +\n dimension +\n ' set to ' +\n messageData[dimension] +\n 'px'\n )\n }\n\n function chkZero(dimension) {\n // FireFox sets dimension of hidden iFrames to zero.\n // So if we detect that set up an event to check for\n // when iFrame becomes visible.\n\n /* istanbul ignore next */ // Not testable in PhantomJS\n if (!hiddenCheckEnabled && '0' === messageData[dimension]) {\n hiddenCheckEnabled = true\n log(iframeId, 'Hidden iFrame detected, creating visibility listener')\n fixHiddenIFrames()\n }\n }\n\n function processDimension(dimension) {\n setDimension(dimension)\n chkZero(dimension)\n }\n\n var iframeId = messageData.iframe.id\n\n if (settings[iframeId]) {\n if (settings[iframeId].sizeHeight) {\n processDimension('height')\n }\n if (settings[iframeId].sizeWidth) {\n processDimension('width')\n }\n }\n }\n\n function syncResize(func, messageData, doNotSync) {\n /* istanbul ignore if */ // Not testable in PhantomJS\n if (\n doNotSync !== messageData.type &&\n requestAnimationFrame &&\n // including check for jasmine because had trouble getting spy to work in unit test using requestAnimationFrame\n !window.jasmine\n ) {\n log(messageData.id, 'Requesting animation frame')\n requestAnimationFrame(func)\n } else {\n func()\n }\n }\n\n function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {\n function postMessageToIFrame() {\n var target = settings[id] && settings[id].targetOrigin\n log(\n id,\n '[' +\n calleeMsg +\n '] Sending msg to iframe[' +\n id +\n '] (' +\n msg +\n ') targetOrigin: ' +\n target\n )\n iframe.contentWindow.postMessage(msgId + msg, target)\n }\n\n function iFrameNotFound() {\n warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found')\n }\n\n function chkAndSend() {\n if (\n iframe &&\n 'contentWindow' in iframe &&\n null !== iframe.contentWindow\n ) {\n // Null test for PhantomJS\n postMessageToIFrame()\n } else {\n iFrameNotFound()\n }\n }\n\n function warnOnNoResponse() {\n function warning() {\n if (settings[id] && !settings[id].loaded && !errorShown) {\n errorShown = true\n warn(\n id,\n 'IFrame has not responded within ' +\n settings[id].warningTimeout / 1000 +\n ' seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.'\n )\n }\n }\n\n if (\n !!noResponseWarning &&\n settings[id] &&\n !!settings[id].warningTimeout\n ) {\n settings[id].msgTimeout = setTimeout(\n warning,\n settings[id].warningTimeout\n )\n }\n }\n\n var errorShown = false\n\n id = id || iframe.id\n\n if (settings[id]) {\n chkAndSend()\n warnOnNoResponse()\n }\n }\n\n function createOutgoingMsg(iframeId) {\n return (\n iframeId +\n ':' +\n settings[iframeId].bodyMarginV1 +\n ':' +\n settings[iframeId].sizeWidth +\n ':' +\n settings[iframeId].log +\n ':' +\n settings[iframeId].interval +\n ':' +\n settings[iframeId].enablePublicMethods +\n ':' +\n settings[iframeId].autoResize +\n ':' +\n settings[iframeId].bodyMargin +\n ':' +\n settings[iframeId].heightCalculationMethod +\n ':' +\n settings[iframeId].bodyBackground +\n ':' +\n settings[iframeId].bodyPadding +\n ':' +\n settings[iframeId].tolerance +\n ':' +\n settings[iframeId].inPageLinks +\n ':' +\n settings[iframeId].resizeFrom +\n ':' +\n settings[iframeId].widthCalculationMethod +\n ':' +\n settings[iframeId].mouseEvents\n )\n }\n\n function isNumber(value) {\n return typeof value === 'number'\n }\n\n function setupIFrame(iframe, options) {\n function setLimits() {\n function addStyle(style) {\n var styleValue = settings[iframeId][style]\n if (Infinity !== styleValue && 0 !== styleValue) {\n iframe.style[style] = isNumber(styleValue)\n ? styleValue + 'px'\n : styleValue\n log(iframeId, 'Set ' + style + ' = ' + iframe.style[style])\n }\n }\n\n function chkMinMax(dimension) {\n if (\n settings[iframeId]['min' + dimension] >\n settings[iframeId]['max' + dimension]\n ) {\n throw new Error(\n 'Value for min' +\n dimension +\n ' can not be greater than max' +\n dimension\n )\n }\n }\n\n chkMinMax('Height')\n chkMinMax('Width')\n\n addStyle('maxHeight')\n addStyle('minHeight')\n addStyle('maxWidth')\n addStyle('minWidth')\n }\n\n function newId() {\n var id = (options && options.id) || defaults.id + count++\n if (null !== document.getElementById(id)) {\n id += count++\n }\n return id\n }\n\n function ensureHasId(iframeId) {\n if (typeof iframeId !== 'string') {\n throw new TypeError('Invaild id for iFrame. Expected String')\n }\n\n if ('' === iframeId) {\n // eslint-disable-next-line no-multi-assign\n iframe.id = iframeId = newId()\n logEnabled = (options || {}).log\n log(\n iframeId,\n 'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'\n )\n }\n\n return iframeId\n }\n\n function setScrolling() {\n log(\n iframeId,\n 'IFrame scrolling ' +\n (settings[iframeId] && settings[iframeId].scrolling\n ? 'enabled'\n : 'disabled') +\n ' for ' +\n iframeId\n )\n iframe.style.overflow =\n false === (settings[iframeId] && settings[iframeId].scrolling)\n ? 'hidden'\n : 'auto'\n switch (settings[iframeId] && settings[iframeId].scrolling) {\n case 'omit': {\n break\n }\n\n case true: {\n iframe.scrolling = 'yes'\n break\n }\n\n case false: {\n iframe.scrolling = 'no'\n break\n }\n\n default: {\n iframe.scrolling = settings[iframeId]\n ? settings[iframeId].scrolling\n : 'no'\n }\n }\n }\n\n // The V1 iFrame script expects an int, where as in V2 expects a CSS\n // string value such as '1px 3em', so if we have an int for V2, set V1=V2\n // and then convert V2 to a string PX value.\n function setupBodyMarginValues() {\n if (\n 'number' ===\n typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||\n '0' === (settings[iframeId] && settings[iframeId].bodyMargin)\n ) {\n settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin\n settings[iframeId].bodyMargin =\n '' + settings[iframeId].bodyMargin + 'px'\n }\n }\n\n function checkReset() {\n // Reduce scope of firstRun to function, because IE8's JS execution\n // context stack is borked and this value gets externally\n // changed midway through running this function!!!\n var firstRun = settings[iframeId] && settings[iframeId].firstRun,\n resetRequertMethod =\n settings[iframeId] &&\n settings[iframeId].heightCalculationMethod in resetRequiredMethods\n\n if (!firstRun && resetRequertMethod) {\n resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' })\n }\n }\n\n function setupIFrameObject() {\n if (settings[iframeId]) {\n settings[iframeId].iframe.iFrameResizer = {\n close: closeIFrame.bind(null, settings[iframeId].iframe),\n\n removeListeners: removeIframeListeners.bind(\n null,\n settings[iframeId].iframe\n ),\n\n resize: trigger.bind(\n null,\n 'Window resize',\n 'resize',\n settings[iframeId].iframe\n ),\n\n moveToAnchor: function (anchor) {\n trigger(\n 'Move to anchor',\n 'moveToAnchor:' + anchor,\n settings[iframeId].iframe,\n iframeId\n )\n },\n\n sendMessage: function (message) {\n message = JSON.stringify(message)\n trigger(\n 'Send Message',\n 'message:' + message,\n settings[iframeId].iframe,\n iframeId\n )\n }\n }\n }\n }\n\n // We have to call trigger twice, as we can not be sure if all\n // iframes have completed loading when this code runs. The\n // event listener also catches the page changing in the iFrame.\n function init(msg) {\n function iFrameLoaded() {\n trigger('iFrame.onload', msg, iframe, undefined, true)\n checkReset()\n }\n\n function createDestroyObserver(MutationObserver) {\n if (!iframe.parentNode) {\n return\n }\n\n var destroyObserver = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array\n removedNodes.forEach(function (removedNode) {\n if (removedNode === iframe) {\n closeIFrame(iframe)\n }\n })\n })\n })\n destroyObserver.observe(iframe.parentNode, {\n childList: true\n })\n }\n\n var MutationObserver = getMutationObserver()\n if (MutationObserver) {\n createDestroyObserver(MutationObserver)\n }\n\n addEventListener(iframe, 'load', iFrameLoaded)\n trigger('init', msg, iframe, undefined, true)\n }\n\n function checkOptions(options) {\n if ('object' !== typeof options) {\n throw new TypeError('Options is not an object')\n }\n }\n\n function copyOptions(options) {\n // eslint-disable-next-line no-restricted-syntax\n for (var option in defaults) {\n if (Object.prototype.hasOwnProperty.call(defaults, option)) {\n settings[iframeId][option] = Object.prototype.hasOwnProperty.call(\n options,\n option\n )\n ? options[option]\n : defaults[option]\n }\n }\n }\n\n function getTargetOrigin(remoteHost) {\n return '' === remoteHost ||\n null !== remoteHost.match(/^(about:blank|javascript:|file:\\/\\/)/)\n ? '*'\n : remoteHost\n }\n\n function depricate(key) {\n var splitName = key.split('Callback')\n\n if (splitName.length === 2) {\n var name =\n 'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)\n this[name] = this[key]\n delete this[key]\n warn(\n iframeId,\n \"Deprecated: '\" +\n key +\n \"' has been renamed '\" +\n name +\n \"'. The old method will be removed in the next major version.\"\n )\n }\n }\n\n function processOptions(options) {\n options = options || {}\n\n settings[iframeId] = Object.create(null) // Protect against prototype attacks\n settings[iframeId].iframe = iframe\n settings[iframeId].firstRun = true\n settings[iframeId].remoteHost =\n iframe.src && iframe.src.split('/').slice(0, 3).join('/')\n\n checkOptions(options)\n Object.keys(options).forEach(depricate, options)\n copyOptions(options)\n\n if (settings[iframeId]) {\n settings[iframeId].targetOrigin =\n true === settings[iframeId].checkOrigin\n ? getTargetOrigin(settings[iframeId].remoteHost)\n : '*'\n }\n }\n\n function beenHere() {\n return iframeId in settings && 'iFrameResizer' in iframe\n }\n\n var iframeId = ensureHasId(iframe.id)\n\n if (beenHere()) {\n warn(iframeId, 'Ignored iFrame, already setup.')\n } else {\n processOptions(options)\n setScrolling()\n setLimits()\n setupBodyMarginValues()\n init(createOutgoingMsg(iframeId))\n setupIFrameObject()\n }\n }\n\n function debouce(fn, time) {\n if (null === timer) {\n timer = setTimeout(function () {\n timer = null\n fn()\n }, time)\n }\n }\n\n var frameTimer = {}\n function debounceFrameEvents(fn, time, frameId) {\n if (!frameTimer[frameId]) {\n frameTimer[frameId] = setTimeout(function () {\n frameTimer[frameId] = null\n fn()\n }, time)\n }\n }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n\n function fixHiddenIFrames() {\n function checkIFrames() {\n function checkIFrame(settingId) {\n function chkDimension(dimension) {\n return (\n '0px' ===\n (settings[settingId] && settings[settingId].iframe.style[dimension])\n )\n }\n\n function isVisible(el) {\n return null !== el.offsetParent\n }\n\n if (\n settings[settingId] &&\n isVisible(settings[settingId].iframe) &&\n (chkDimension('height') || chkDimension('width'))\n ) {\n trigger(\n 'Visibility change',\n 'resize',\n settings[settingId].iframe,\n settingId\n )\n }\n }\n\n Object.keys(settings).forEach(function (key) {\n checkIFrame(key)\n })\n }\n\n function mutationObserved(mutations) {\n log(\n 'window',\n 'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type\n )\n debouce(checkIFrames, 16)\n }\n\n function createMutationObserver() {\n var target = document.querySelector('body'),\n config = {\n attributes: true,\n attributeOldValue: false,\n characterData: true,\n characterDataOldValue: false,\n childList: true,\n subtree: true\n },\n observer = new MutationObserver(mutationObserved)\n\n observer.observe(target, config)\n }\n\n var MutationObserver = getMutationObserver()\n if (MutationObserver) {\n createMutationObserver()\n }\n }\n\n function resizeIFrames(event) {\n function resize() {\n sendTriggerMsg('Window ' + event, 'resize')\n }\n\n log('window', 'Trigger event: ' + event)\n debouce(resize, 16)\n }\n\n // Not testable in PhantomJS\n /* istanbul ignore next */\n function tabVisible() {\n function resize() {\n sendTriggerMsg('Tab Visible', 'resize')\n }\n\n if ('hidden' !== document.visibilityState) {\n log('document', 'Trigger event: Visibility change')\n debouce(resize, 16)\n }\n }\n\n function sendTriggerMsg(eventName, event) {\n function isIFrameResizeEnabled(iframeId) {\n return (\n settings[iframeId] &&\n 'parent' === settings[iframeId].resizeFrom &&\n settings[iframeId].autoResize &&\n !settings[iframeId].firstRun\n )\n }\n\n Object.keys(settings).forEach(function (iframeId) {\n if (isIFrameResizeEnabled(iframeId)) {\n trigger(eventName, event, settings[iframeId].iframe, iframeId)\n }\n })\n }\n\n function setupEventListeners() {\n addEventListener(window, 'message', iFrameListener)\n\n addEventListener(window, 'resize', function () {\n resizeIFrames('resize')\n })\n\n addEventListener(document, 'visibilitychange', tabVisible)\n\n addEventListener(document, '-webkit-visibilitychange', tabVisible)\n }\n\n function factory() {\n function init(options, element) {\n function chkType() {\n if (!element.tagName) {\n throw new TypeError('Object is not a valid DOM element')\n } else if ('IFRAME' !== element.tagName.toUpperCase()) {\n throw new TypeError(\n 'Expected