{"version":3,"sources":["blocks/m-country-selection.js"],"names":["define","utility","mCountrySelectionFn","init","selectedTab","elm","mCountrySelection","settings","classList","direction","ArrowRight","Left","Home","ArrowLeft","Right","End","breakpointElement","document","createElement","add","append","setupTabs","getBreakpoint","isAnimating","addEventListener","tabLinks","Array","from","listener","e","forEach","tabLink","preventDefault","closeTabs","currentBreakpoint","smallTag","openTab","FRAMEWORK","timings","current","t500ms","pressed","switchTabOnArrowPress","click","onResize","resizeTabs","newBreakpoint","window","selectedListItem","selectedSection","querySelector","closest","id","groupHeadings","loop","heading","tabList","htmlStringToElement","setAttribute","insertAdjacentElement","tabPanel","nextElementSibling","tabId","tab","innerHTML","mainHeading","insertAdjacentHTML","groupSections","querySelectorAll","variant","fadeSpeed","section","scrollParent","getAttribute","removeAttribute","firstElementChild","callback","scrollParentPos","scrollTop","scroll","remove","scrollWindowPos","link","largestSectionSize","style","display","currentSectionSize","offsetHeight","minHeight","target","event","targetIndex","key","indexOf","Number","isInteger","initInstance","focus","length"],"mappings":"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","file":"blocks/m-country-selection.js","sourcesContent":["define( [ 'utility' ], function run( utility ) {\r\n\t'use strict';\r\n\r\n\tvar mCountrySelectionFn = {\r\n\r\n\t\tinit : function( elm ) {\r\n\t\t\tvar onResize,\r\n\t\t\t\tselectedListItem,\r\n\t\t\t\tselectedSection,\r\n\t\t\t\tselectedTab;\r\n\r\n\t\t\tif ( !elm.classList.contains( 'js-m-country-selection' ) ) {\r\n\t\t\t\telm.classList.add( 'js-m-country-selection' );\r\n\r\n\t\t\t\telm.mCountrySelection = {};\r\n\t\t\t\telm.mCountrySelection.settings = {\r\n\t\t\t\t\tdirection : {\r\n\t\t\t\t\t\tLeft : -1,\r\n\t\t\t\t\t\tArrowLeft : -1,\r\n\t\t\t\t\t\tRight : 1,\r\n\t\t\t\t\t\tArrowRight : 1,\r\n\t\t\t\t\t\tHome : 0,\r\n\t\t\t\t\t\tEnd : 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Sets the group headings\r\n\t\t\t\telm.mCountrySelection.settings.groupHeadings = elm.querySelectorAll( '.m-country-selection__heading' );\r\n\r\n\t\t\t\t// Creates breakpoint element\r\n\t\t\t\telm.mCountrySelection.settings.breakpointElement = document.createElement( 'div' );\r\n\t\t\t\telm.mCountrySelection.settings.breakpointElement.classList.add( 'm-country-selection__breakpoint' );\r\n\t\t\t\telm.append( elm.mCountrySelection.settings.breakpointElement );\r\n\t\t\t\telm.mCountrySelection.settings.currentBreakpoint = utility.getBreakpoint( elm.mCountrySelection.settings.breakpointElement );\r\n\t\t\t\telm.mCountrySelection.settings.isAnimating = false;\r\n\r\n\t\t\t\t// Sets up the tab links\r\n\t\t\t\tmCountrySelectionFn.setupTabs( elm );\r\n\r\n\t\t\t\t// Selects key elements and puts them into the settings object\r\n\t\t\t\telm.mCountrySelection.settings.tabLinks = Array.from( elm.querySelectorAll( '.m-country-sections__tab-list a' ) );\r\n\r\n\t\t\t\t// Adds the click event listener to each of the links to run the close tabs and then open tabs functions\r\n\t\t\t\telm.mCountrySelection.settings.tabLinks.forEach( function loop( tabLink ) {\r\n\t\t\t\t\ttabLink.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif ( elm.mCountrySelection.settings.isAnimating || elm.mCountrySelection.settings.currentBreakpoint === utility.smallTag ) {\r\n\t\t\t\t\t\t\t// If at small breakpoint or already animating do nothing\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telm.mCountrySelection.settings.isAnimating = true;\r\n\t\t\t\t\t\t\tmCountrySelectionFn.closeTabs( elm );\r\n\t\t\t\t\t\t\tmCountrySelectionFn.openTab( elm, tabLink, FRAMEWORK.timings.current.t500ms );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\ttabLink.addEventListener( 'keydown', function listener( e ) {\r\n\t\t\t\t\t\tvar pressed = e.key,\r\n\t\t\t\t\t\t\tdirection = elm.mCountrySelection.settings.direction[ pressed ];\r\n\r\n\t\t\t\t\t\t// Catch Arrow, Home or End key presses before they are processed for the page\r\n\t\t\t\t\t\tif ( elm.mCountrySelection.settings.currentBreakpoint === utility.smallTag ) {\r\n\t\t\t\t\t\t\t// If at small breakpoint do nothing\r\n\t\t\t\t\t\t} else if ( Number.isInteger( direction ) ) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tmCountrySelectionFn.switchTabOnArrowPress( elm, e );\r\n\t\t\t\t\t\t} else if ( pressed === ' ' || pressed === 'Spacebar' ) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\ttabLink.click();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Checks to see if resize tabs should run if there is a change in breakpoint\r\n\t\t\t\tonResize = utility.debounce( function listener() {\r\n\t\t\t\t\tvar newBreakpoint = utility.getBreakpoint( elm.mCountrySelection.settings.breakpointElement );\r\n\t\t\t\t\tif ( newBreakpoint !== elm.mCountrySelection.settings.currentBreakpoint ) {\r\n\t\t\t\t\t\telm.mCountrySelection.settings.currentBreakpoint = newBreakpoint;\r\n\t\t\t\t\t\tmCountrySelectionFn.resizeTabs( elm );\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 10 );\r\n\t\t\t\twindow.addEventListener( 'resize', onResize );\r\n\r\n\t\t\t\t// Closes the tabs to set the closed attribute values\r\n\t\t\t\tmCountrySelectionFn.closeTabs( elm );\r\n\r\n\t\t\t\t// Adds the js-m-country-selection-current class to the current tab link\r\n\t\t\t\tselectedListItem = elm.querySelector( '.m-country-selection-list__item.is-selected' );\r\n\r\n\t\t\t\t// Adds the relevant classes to the currently opened tab based on the selected list item\r\n\t\t\t\tif ( typeof selectedListItem !== 'undefined' && selectedListItem !== null ) {\r\n\t\t\t\t\tselectedSection = selectedListItem.closest( '.m-country-sections__tab-panel' );\r\n\t\t\t\t\tselectedTab = elm.querySelector( 'a[href=\"#' + selectedSection.id + '\"]' );\r\n\t\t\t\t\tselectedTab.classList.add( 'js-m-country-selection-current' );\r\n\t\t\t\t\tselectedTab.classList.add( 'is-open' );\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.mCountrySelection.settings.tabLinks[ 0 ].classList.add( 'js-m-country-selection-current' );\r\n\t\t\t\t\telm.mCountrySelection.settings.tabLinks[ 0 ].classList.add( 'is-open' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Run resize tabs to apply the changes\r\n\t\t\t\tmCountrySelectionFn.resizeTabs( elm );\r\n\t\t\t}\r\n\r\n\t\t\treturn elm.mCountrySelection;\r\n\t\t},\r\n\r\n\t\tsetupTabs : function( elm ) {\r\n\t\t\tvar mainHeading;\r\n\r\n\t\t\t// Creates new tab list element\r\n\t\t\telm.mCountrySelection.settings.tabList = document.createElement( 'ul' );\r\n\t\t\telm.mCountrySelection.settings.tabList.classList.add( 'a-list-plain' );\r\n\t\t\telm.mCountrySelection.settings.tabList.classList.add( 'm-country-sections__tab-list' );\r\n\t\t\telm.mCountrySelection.settings.tabList.setAttribute( 'role', 'tablist' );\r\n\r\n\t\t\t// Creates and appends links for each heading\r\n\t\t\telm.mCountrySelection.settings.groupHeadings.forEach( function loop( heading ) {\r\n\t\t\t\tvar tabId = utility.makeId( 'm-country-selection' ),\r\n\t\t\t\t\ttab,\r\n\t\t\t\t\ttabPanel = utility.htmlStringToElement( '
' );\r\n\r\n\t\t\t\ttab = '