{"version":3,"sources":["utility.js"],"names":["define","smallTag","mediumTag","largeTag","mediumBP","largeBP","baseFont","RegExp","urlRegExp","deepMerge","target","source","this","result","instance","Object","prototype","toString","call","forEach","child","index","loop","nodeType","cloneNode","Date","key","clone","item","Number","String","Boolean","types","type","keys","trigger","element","eventName","document","createEvent","event","initEvent","dispatchEvent","addClass","classes","classNames","split","classList","className","add","addMeasurements","measurement","measurementArray","removeMeasurementSuffix","i","convertToPx","newNumber","number","noAuto","debounce","func","wait","immediate","timeout","context","args","callNow","clearTimeout","later","apply","escapeHtml","str","createElement","div","appendChild","extend","length","arguments","fade","duration","fadeOptions","variant","displayNone","maxFade","minFade","isNode","contains","style","transition","webkitTransition","opacity","display","fadeIn","timing","setTimeout","remove","innerTimeoutFn","removeProperty","setAttribute","fadeOut","callback","find","elements","selector","search","querySelectorAll","results","concat","Array","slice","getAnchor","window","location","href","fullHash","currentUrl","match","partHash","urlAnchorRegExp","localeCompare","fontSize","tag","body","largeBreakpoint","getBreakpoint","FRAMEWORK","thisElement","getComputedStyle","mediumBreakpoint","matches","getData","attrib","data","attributes","attribName","test","name","replace","l","toUpperCase","value","error","hexToRgba","hex","c","substring","join","template","html","trim","innerHTML","firstChild","htmlStringToElement","childNodes","inRange","originalNumber","comparitor","range","inclusive","min","max","exists","Node","ELEMENT_NODE","isOverflown","axis","scrollHeight","clientHeight","hasOverflown","scrollWidth","clientWidth","isVisible","offsetWidth","offsetHeight","makeId","testHidden","prefix","newID","poss","possLength","Math","random","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","offset","rect","getBoundingClientRect","top","left","pageXOffset","outerHeightTrue","height","parseInt","marginBottom","outerWidthTrue","width","marginLeft","marginRight","parents","currentEl","parentNode","processInPageLinks","pathname","linkFunction","host","removeClass","newValue","isNaN","parseFloat","resetStyles","convertedKey","styleList","regexFn","toLowerCase","requestLoadInto","responseCallback","bodyRegex","requestUrl","id","request","XMLHttpRequest","tempUrl","origin","open","tempEl","elContent","status","responseText","querySelector","indexOf","exec","send","scrollParent","includeHidden","parent","excludeStaticParent","position","overflowRegex","parentElement","attrs","siblingsArr","isSibling","options","startHeight","nextStyles","startPaddingTop","baseHeight","initialHeight","overlapMargin","toggleOptions","customStartHeight","customEndHeight","overlap","elStyles","startPaddingBottom","paddingBottom","paddingTop","savedStyles","marginTop","maxHeight","overflow","overflowX","overflowY","subtractMeasurements","slideDown","slideUp","endHeight","hide","timeoutFn","smoothScroll","xCoord","yCoord","animationTime","scrollArea","scrollCompleteFunction","smoothScrollSupported","documentElement","scrollBehavior","scrollableArea","newAnimationTime","timings","current","t350ms","animation","scrollTop","pageYOffset","ceil","scrollLeft","scrollTimeout","removeEventListener","scrollTo","distanceTop","distanceLeft","TEXT_NODE","insertAdjacentElement","removeChild","updateHistory","replaceState","anchor","wrap","wrappingElement","wrapper","wrapInner","contentWrapper","insertBefore"],"mappings":"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","file":"utility.js","sourcesContent":["// eslint-disable-next-line max-lines-per-function\r\ndefine( function run() {\r\n\t'use strict';\r\n\r\n\t/*\r\n\t * FRAMEWORK UTILITY FUNCTIONS\r\n\t * ===========================\r\n\t *\r\n\t * All functions up to date and tested as of v4.13 release\r\n\t * Please quote version number when adding additional functions or updating existing ones\r\n\t *\r\n\t * Functions list:\r\n\t * ---------------\r\n\t * trigger - Trigger event natively\r\n\t * addClass - add specified class to an element\r\n\t * addMeasurements - get sum of measurements in an array\r\n\t * convertToPx - add px suffix to a number\r\n\t * debounce - prevent other functions from being called again too rapidly (eg on page resize)\r\n\t * escapeHTML - safely escape any strings using built-in browser functionality\r\n\t * extend - deep merge multiple objects together\r\n\t * fade - vanilla JS replacement for jQuery's fadeIn / fadeOut functions\r\n\t * find - find elements with a particular selector from within a given set of elements\r\n\t * getAnchor - get anchor href\r\n\t * getBreakpoint - gets viewport's current breakpoint based on standard Framework widths\r\n\t * getData - return an object containing a list of data attributes\r\n\t * hexToRgba - Convert hex value to rgba\r\n\t * htmlStringToElement - Convert an HTML string to a proper DOM element\r\n\t * htmlStringToElements - Convert an HTML string to a node list of elements\r\n\t * inRange - Test if two numbers are within a given range of each other\r\n\t * isNode - Check if the the element passed in is an Element Node\r\n\t * isOverflown - check if the content of an element has overflown its bounding box\r\n\t * isVisible - check if an element is visible\r\n\t * makeId - create a random ID\r\n\t * matches - Find elements with a matching selector\r\n\t * offset - find an element's position\r\n\t * outerHeightTrue - get an element's total outer height (including margins etc)\r\n\t * outerWidthTrue - get an element's total outer width (including margins etc)\r\n\t * parents - return an array of an element's parents\r\n\t * processInPageLinks - find all links with a specific selector and run specified function on them\r\n\t * removeClass - remove specified class to an element\r\n\t * removeMeasurementSuffix - memove measurement suffixes (px/em etc)\r\n\t * resetStyles - Reset styles on an element\r\n\t * requestLoadInto - load content from specified url/anchor into an element\r\n\t * scrollParent - find an element's parent for scrolling purposes\r\n\t * setAttributes - allow daisychaining to set multiple attributes in one go\r\n\t * siblings - find all sibling elements / sibling elements (with a particular selector if specified)\r\n\t * slideToggle - vanilla JS replacement for jQuery's slideUp / slideDown / slideToggle functions\r\n\t * smoothScroll - smooth scroll to position\r\n\t * subtractMeasurements - get remainder from subtracted measurements in an array\r\n\t * unwrap - unwrap an element from its parent (removes parent)\r\n\t * updateHistory - update browser history\r\n\t * wrap - wrap element with a new one\r\n\t * wrapInner - wrap the children of an element within a single new child element\r\n\t */\r\n\r\n\t// Other functions\r\n\treturn {\r\n\t\tsmallTag : 'small',\r\n\t\tmediumTag : 'medium',\r\n\t\tlargeTag : 'large',\r\n\t\tmediumBP : 35,\r\n\t\tlargeBP : 60,\r\n\t\tbaseFont : 16,\r\n\t\turlRegExp : new RegExp( '#[a-zA-Z0-9-._~%!$&\\'()*+,;=:@/?#]+' ),\r\n\t\turlAnchorRegExp : new RegExp( '#[a-zA-Z]+[a-zA-Z0-9-._]*' ), // Only accept character valid in html4 for compatability\r\n\r\n\t\tdeepMerge : function( target, source ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tresult = target;\r\n\r\n\t\t\tif ( !source ) {\r\n\t\t\t\treturn target; // Null, undefined values check\r\n\t\t\t}\r\n\r\n\t\t\tif ( Object.prototype.toString.call( source ) === '[object Array]' ) {\r\n\t\t\t\tif ( Object.prototype.toString.call( result ) !== '[object Array]' ) {\r\n\t\t\t\t\tresult = [];\r\n\t\t\t\t}\r\n\t\t\t\tsource.forEach( function loop( child, index ) {\r\n\t\t\t\t\tif ( result[ index ] ) {\r\n\t\t\t\t\t\tresult[ index ] = instance.deepMerge( result[ index ], source[ index ] );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresult[ index ] = instance.clone( source[ index ] );\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if ( typeof source === 'object' ) {\r\n\t\t\t\t// Testing that this is DOM\r\n\t\t\t\tif ( source.nodeType && typeof source.cloneNode === 'function' ) {\r\n\t\t\t\t\tresult = source.cloneNode( true );\r\n\t\t\t\t} else if ( target.prototype ) {\r\n\t\t\t\t\tresult = source;\r\n\t\t\t\t} else if ( source instanceof Date ) {\r\n\t\t\t\t\t// Check that this is a literal\r\n\t\t\t\t\tresult = new Date( source );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// It is an object literal\r\n\t\t\t\t\tif ( typeof result !== 'object' ) {\r\n\t\t\t\t\t\tresult = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tObject.keys( source ).forEach( function loop( key ) {\r\n\t\t\t\t\t\tif ( result[ key ] ) {\r\n\t\t\t\t\t\t\tresult[ key ] = instance.deepMerge( result[ key ], source[ key ] );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tresult[ key ] = instance.clone( source[ key ] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult = source;\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\tclone : function( item ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\ttypes = [ Number, String, Boolean ],\r\n\t\t\t\tresult;\r\n\r\n\t\t\tif ( !item ) {\r\n\t\t\t\treturn item; // Null, undefined values check\r\n\t\t\t}\r\n\r\n\t\t\t// Normalizing primitives if someone did new String('aaa'), or new Number('444');\r\n\t\t\ttypes.forEach( function loop( type ) {\r\n\t\t\t\tif ( item instanceof type ) {\r\n\t\t\t\t\tresult = type( item );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif ( typeof result === 'undefined' ) {\r\n\t\t\t\tif ( Object.prototype.toString.call( item ) === '[object Array]' ) {\r\n\t\t\t\t\tresult = [];\r\n\t\t\t\t\titem.forEach( function loop( child, index ) {\r\n\t\t\t\t\t\tresult[ index ] = instance.clone( child );\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if ( typeof item === 'object' ) {\r\n\t\t\t\t\t// Testing that this is DOM\r\n\t\t\t\t\tif ( item.nodeType && typeof item.cloneNode === 'function' ) {\r\n\t\t\t\t\t\tresult = item.cloneNode( true );\r\n\t\t\t\t\t} else if ( item.prototype ) {\r\n\t\t\t\t\t\tresult = item;\r\n\t\t\t\t\t} else if ( item instanceof Date ) {\r\n\t\t\t\t\t\t// Check that this is a literal\r\n\t\t\t\t\t\tresult = new Date( item );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// It is an object literal\r\n\t\t\t\t\t\tresult = {};\r\n\t\t\t\t\t\tObject.keys( item ).forEach( function loop( key ) {\r\n\t\t\t\t\t\t\tresult[ key ] = instance.clone( item[ key ] );\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult = item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// Function to help dispatch custom events\r\n\t\ttrigger : function( element, eventName ) {\r\n\t\t\tvar event = document.createEvent( 'Event' );\r\n\r\n\t\t\tevent.initEvent( eventName, true, true );\r\n\t\t\telement.dispatchEvent( event );\r\n\t\t},\r\n\r\n\t\t// Add specified class to an element (v4.13 - Sep 19)\r\n\t\taddClass : function( element, classNames ) {\r\n\t\t\tvar classes = classNames.split( ' ' );\r\n\r\n\t\t\tif ( element && element.classList ) {\r\n\t\t\t\tclasses.forEach( function loop( className ) {\r\n\t\t\t\t\tif ( className ) {\r\n\t\t\t\t\t\telement.classList.add( className );\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Get sum of measurements in an array (v4.13 - Sep 19)\r\n\t\taddMeasurements : function( measurementArray ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tmeasurement = 0,\r\n\t\t\t\ti;\r\n\r\n\t\t\tfor ( i = 0; i < measurementArray.length; i++ ) {\r\n\t\t\t\tif ( typeof measurementArray[ i ] !== 'number' ) {\r\n\t\t\t\t\tmeasurementArray[ i ] = instance.removeMeasurementSuffix( measurementArray[ i ] ); // Value is NaN, so attempt to convert beore continuing\r\n\t\t\t\t}\r\n\t\t\t\tif ( typeof measurementArray[ i ] === 'number' ) {\r\n\t\t\t\t\tmeasurement += measurementArray[ i ]; // Value is a number, so add it on to current total\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmeasurement = 'auto'; // Value is set to auto (so don't change it), or something else entirely (so set to auto rather than failing completely)...\r\n\t\t\t\t\ti = measurementArray.length; // ... then set count to be complete so no more additions are run\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn measurement;\r\n\t\t},\r\n\r\n\t\t// Add px suffix to a number (v4.13 - Sep 19)\r\n\t\tconvertToPx : function( number, noAuto ) {\r\n\t\t\tvar newNumber;\r\n\r\n\t\t\tif ( number === 0 || number === '0' || ( number === 'auto' && noAuto ) ) { // Starting value is 0, or number being forced instead of auto\r\n\t\t\t\tnewNumber = 0;\r\n\t\t\t} else if ( number === 'auto' || typeof number !== 'number' || Number.isNaN( number ) ) { // Starting value is auto or not a number\r\n\t\t\t\tnewNumber = 'auto';\r\n\t\t\t} else { // Standard functionality\r\n\t\t\t\tnewNumber = number + 'px';\r\n\t\t\t}\r\n\t\t\treturn newNumber;\r\n\t\t},\r\n\r\n\t\t// Help to prevent other functions from being called again too rapidly (eg on page resize) (v4.13 - Sep 19)\r\n\t\tdebounce : function( func, wait, immediate ) {\r\n\t\t\tvar timeout;\r\n\r\n\t\t\treturn function debounceFn() {\r\n\t\t\t\tvar context = this,\r\n\t\t\t\t\targs = arguments,\r\n\t\t\t\t\tlater = function() {\r\n\t\t\t\t\t\ttimeout = null;\r\n\t\t\t\t\t\tif ( !immediate ) {\r\n\t\t\t\t\t\t\tfunc.apply( context, args );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcallNow = immediate && !timeout;\r\n\r\n\t\t\t\tclearTimeout( timeout );\r\n\r\n\t\t\t\ttimeout = setTimeout( later, wait );\r\n\t\t\t\tif ( callNow ) {\r\n\t\t\t\t\tfunc.apply( context, args );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t// Safely escape any strings using built-in browser functionality (v4.13 - Sep 19)\r\n\t\tescapeHtml : function( str ) {\r\n\t\t\tvar div = document.createElement( 'div' );\r\n\r\n\t\t\tdiv.appendChild( document.createTextNode( str ) );\r\n\t\t\treturn div.innerHTML;\r\n\t\t},\r\n\r\n\t\t// Deep merge objects together (v5.0.0 - Jan 20)\r\n\t\textend : function() {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tresult,\r\n\t\t\t\ti;\r\n\r\n\t\t\tif ( arguments.length > 0 ) {\r\n\t\t\t\tresult = {};\r\n\t\t\t\tfor ( i = 0; i < arguments.length; i++ ) {\r\n\t\t\t\t\tif ( arguments[ i ] ) {\r\n\t\t\t\t\t\tresult = instance.deepMerge( result, arguments[ i ] );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t/*\r\n\t\t * Vanilla JS replacement for jQuery's fadeIn / fadeOut functions (v4.13 - Sep 19)\r\n\t\t * eg: element.fade( target element, animation duration (in ms), { options } );\r\n\t\t */\r\n\t\tfade : function( element, duration, options ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tfadeOptions = {\r\n\t\t\t\t\tvariant : 'toggle', // ...in/out/toggle - default toggle\r\n\t\t\t\t\tdisplayNone : true, // ...boolean - default true\r\n\t\t\t\t\tminFade : 0, // ...number - default 0\r\n\t\t\t\t\tmaxFade : 1, // ...number - default 1\r\n\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t// Only run if not currently animating\r\n\t\t\tif ( instance.isNode( element ) && !element.classList.contains( 'is-animating' ) ) {\r\n\t\t\t\t// If options have been set update the default ones\r\n\t\t\t\tfadeOptions = instance.extend({}, fadeOptions, options );\r\n\r\n\t\t\t\tfadeOptions.transition = element.style.transition; // Save any curent inline styles\r\n\t\t\t\tfadeOptions.webkitTransition = element.style.webkitTransition; // Save any curent inline styles\r\n\r\n\t\t\t\telement.classList.add( 'is-animating' );\r\n\r\n\t\t\t\tif ( fadeOptions.variant === 'in' ) {\r\n\t\t\t\t\tinstance.fadeIn( element, duration, fadeOptions );\r\n\t\t\t\t} else if ( fadeOptions.variant === 'out' ) {\r\n\t\t\t\t\tinstance.fadeOut( element, duration, fadeOptions );\r\n\t\t\t\t} else if ( fadeOptions.variant === 'toggle' && ( element.style.opacity === 0 || element.style.display === 'none' ) ) {\r\n\t\t\t\t\tinstance.fadeIn( element, duration, fadeOptions );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinstance.fadeOut( element, duration, fadeOptions );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Fade in - fade variant only\r\n\t\tfadeIn : function( element, duration, fadeOptions ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\ttiming = ( duration / 1000 ) + 's';\r\n\r\n\t\t\tif ( instance.isNode( element ) ) {\r\n\t\t\t\telement.style.transition = 'opacity ' + timing;\r\n\t\t\t\telement.style.webkitTransition = 'opacity ' + timing;\r\n\t\t\t\telement.style.opacity = fadeOptions.minFade;\r\n\t\t\t\tif ( fadeOptions.displayNone ) {\r\n\t\t\t\t\telement.style.display = 'block';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\telement.style.opacity = fadeOptions.maxFade;\r\n\r\n\t\t\t\t\tsetTimeout( function innerTimeoutFn() {\r\n\t\t\t\t\t\telement.classList.remove( 'is-animating' );\r\n\t\t\t\t\t\tif ( element.style.transition === null ) {\r\n\t\t\t\t\t\t\telement.style.removeProperty( 'transition' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telement.style.transition = fadeOptions.transition;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( element.style.webkitTransition === null ) {\r\n\t\t\t\t\t\t\telement.style.removeProperty( 'webkitTransition' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telement.style.webkitTransition = fadeOptions.webkitTransition;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telement.style.webkitTransition = fadeOptions.webkitTransition;\r\n\t\t\t\t\t\tif ( fadeOptions.displayNone ) {\r\n\t\t\t\t\t\t\telement.style.display = 'block';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telement.style.opacity = fadeOptions.maxFade;\r\n\t\t\t\t\t\telement.setAttribute( 'aria-hidden', 'false' );\r\n\t\t\t\t\t\tfadeOptions.callback();\r\n\t\t\t\t\t}, duration );\r\n\t\t\t\t}, 20 );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Fade out - fade variant only\r\n\t\tfadeOut : function( element, duration, fadeOptions ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\ttiming = ( duration / 1000 ) + 's';\r\n\r\n\t\t\tif ( instance.isNode( element ) ) {\r\n\t\t\t\telement.style.transition = 'opacity ' + timing;\r\n\t\t\t\telement.style.webkitTransition = 'opacity ' + timing;\r\n\t\t\t\telement.style.opacity = fadeOptions.maxFade;\r\n\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\telement.style.opacity = fadeOptions.minFade;\r\n\t\t\t\t\tsetTimeout( function innerTimeoutFn() {\r\n\t\t\t\t\t\telement.classList.remove( 'is-animating' );\r\n\t\t\t\t\t\tif ( element.style.transition === null ) {\r\n\t\t\t\t\t\t\telement.style.removeProperty( 'transition' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telement.style.transition = fadeOptions.transition;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( element.style.webkitTransition === null ) {\r\n\t\t\t\t\t\t\telement.style.removeProperty( 'webkitTransition' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telement.style.webkitTransition = fadeOptions.webkitTransition;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telement.style.display = 'block';\r\n\t\t\t\t\t\telement.style.opacity = fadeOptions.minFade;\r\n\r\n\t\t\t\t\t\tif ( fadeOptions.displayNone && fadeOptions.minFade === 0 ) {\r\n\t\t\t\t\t\t\t// MinFade = 0 required as otherwise minFade of greater than 0 will get blatted to hiddden anyway\r\n\t\t\t\t\t\t\telement.style.display = 'none';\r\n\t\t\t\t\t\t\telement.style.removeProperty( 'opacity' );\r\n\t\t\t\t\t\t\telement.setAttribute( 'aria-hidden', 'true' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfadeOptions.callback();\r\n\t\t\t\t\t}, duration );\r\n\t\t\t\t}, 20 );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Find elements with a particular selector from within a given set of elements (v4.13 - Sep 19)\r\n\t\tfind : function( elements, selector ) {\r\n\t\t\tvar results = [],\r\n\t\t\t\ti,\r\n\t\t\t\tsearch;\r\n\r\n\t\t\tfor ( i = 0; i < elements.length; i++ ) {\r\n\t\t\t\tsearch = elements[ i ].querySelectorAll( selector );\r\n\t\t\t\tif ( search !== null ) {\r\n\t\t\t\t\tresults = results.concat( Array.prototype.slice.call( search ) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( results.length === 0 ) {\r\n\t\t\t\tresults = null;\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t},\r\n\r\n\t\t// Get anchor href (v4.13 - Sep 19)\r\n\t\tgetAnchor : function() {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tcurrentUrl = window.location.href,\r\n\t\t\t\tfullHash = currentUrl.match( instance.urlRegExp ),\r\n\t\t\t\tpartHash = currentUrl.match( instance.urlAnchorRegExp ),\r\n\t\t\t\thref = '';\r\n\r\n\t\t\tif ( !fullHash ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t} else if ( partHash !== null && fullHash.toString().localeCompare( partHash.toString() ) === 0 ) {\r\n\t\t\t\thref = partHash;\r\n\t\t\t} else {\r\n\t\t\t\thref = null;\r\n\t\t\t}\r\n\r\n\t\t\treturn href;\r\n\t\t},\r\n\r\n\t\t// Get the current main breakpoint of the page so that we can adjust a component's behaviour (v4.13 - Sep 19)\r\n\t\tgetBreakpoint : function( element ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tthisElement = window.document.body,\r\n\t\t\t\ttag = instance.smallTag,\r\n\t\t\t\tfontSize = instance.baseFont,\r\n\t\t\t\tlargeBreakpoint = instance.largeBP + 'em',\r\n\t\t\t\tmediumBreakpoint = instance.mediumBP + 'em';\r\n\r\n\t\t\tif ( FRAMEWORK.standalone && typeof element !== 'undefined' ) {\r\n\t\t\t\t// Get the font size for the element that was passed in. Used for Standalone global nav\r\n\t\t\t\tthisElement = element;\r\n\t\t\t\tfontSize = instance.removeMeasurementSuffix( window.getComputedStyle( thisElement ).fontSize );\r\n\t\t\t\tlargeBreakpoint = ( instance.largeBP * fontSize ) + 'px';\r\n\t\t\t\tmediumBreakpoint = ( instance.mediumBP * fontSize ) + 'px';\r\n\t\t\t}\r\n\r\n\t\t\tif ( window.matchMedia( '(min-width: ' + largeBreakpoint + ')' ).matches ) {\r\n\t\t\t\ttag = instance.largeTag;\r\n\t\t\t} else if ( window.matchMedia( '(min-width: ' + mediumBreakpoint + ')' ).matches ) {\r\n\t\t\t\ttag = instance.mediumTag;\r\n\t\t\t} else {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\r\n\t\t\treturn tag;\r\n\t\t},\r\n\r\n\t\t// Return an object containing a list of data attributes (v4.13 - Sep 19)\r\n\t\tgetData : function( element ) {\r\n\t\t\tvar data = {},\r\n\t\t\t\ti,\r\n\t\t\t\tattrib,\r\n\t\t\t\tattribName;\r\n\r\n\t\t\tfor ( i = 0; i < element.attributes.length; i++ ) {\r\n\t\t\t\tattrib = element.attributes[ i ];\r\n\t\t\t\tif ( attrib.specified && ( /^data-/ ).test( attrib.name ) ) {\r\n\t\t\t\t\tattribName = String( attrib.name );\r\n\t\t\t\t\tattribName = attribName.replace( /^data-/, '' );\r\n\t\t\t\t\tattribName = attribName.replace( /-\\b\\w/g, function fn( l ) {\r\n\t\t\t\t\t\treturn l.toUpperCase();\r\n\t\t\t\t\t});\r\n\t\t\t\t\tattribName = attribName.replace( /-/g, '' );\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdata[ attribName ] = JSON.parse( attrib.value );\r\n\t\t\t\t\t} catch ( error ) {\r\n\t\t\t\t\t\tdata[ attribName ] = attrib.value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\t// Convert hex value to rgba (v5.0 - May 20)\r\n\t\thexToRgba : function( hex ) {\r\n\t\t\tvar c;\r\n\t\t\tif ( ( /^#([A-Fa-f0-9]{3}){1,2}$/ ).test( hex ) ) {\r\n\t\t\t\tc = hex.substring( 1 ).split( '' );\r\n\t\t\t\tif ( c.length === 3 ) {\r\n\t\t\t\t\t// 6 digit shortcode\r\n\t\t\t\t\tc = [ c[ 0 ], c[ 0 ], c[ 1 ], c[ 1 ], c[ 2 ], c[ 2 ] ];\r\n\t\t\t\t}\r\n\t\t\t\tc = '0x' + c.join( '' );\r\n\t\t\t\t// eslint-disable-next-line no-bitwise\r\n\t\t\t\treturn 'rgba( ' + [ ( c >> 16 ) & 255, ( c >> 8 ) & 255, c & 255 ].join( ', ' ) + ', 1)';\r\n\t\t\t}\r\n\t\t\t// If process fails, return original value\r\n\t\t\treturn hex;\r\n\t\t},\r\n\r\n\t\t// Convert an HTML string to a proper DOM element (v4.13 - Sep 19)\r\n\t\thtmlStringToElement : function( str ) {\r\n\t\t\tvar template = document.createElement( 'div' ),\r\n\t\t\t\thtml = str.trim(); // Never return a text node of whitespace as the result\r\n\r\n\t\t\ttemplate.innerHTML = html;\r\n\t\t\treturn template.firstChild;\r\n\t\t},\r\n\r\n\t\t// Convert an HTML string to a node list of elements (v4.13 - Sep 19)\r\n\t\thtmlStringToElements : function( str ) {\r\n\t\t\t// Returns a node list rather than an array; may want to consider changing final line return to Array.from( template.childNodes );\r\n\t\t\tvar template = document.createElement( 'div' ),\r\n\t\t\t\thtml = str.trim(); // Never return a text node of whitespace as the result\r\n\r\n\t\t\ttemplate.innerHTML = html;\r\n\t\t\treturn template.childNodes; // Returns node list\r\n\t\t},\r\n\r\n\t\tinRange : function( originalNumber, comparitor, range, inclusive ) {\r\n\t\t\tvar min = comparitor - range,\r\n\t\t\t\tmax = comparitor + range;\r\n\r\n\t\t\treturn inclusive ? originalNumber >= min && originalNumber <= max : originalNumber > min && originalNumber < max;\r\n\t\t},\r\n\r\n\t\t// Check if the the element passed in is an Element Node (v4.15 - Nov 19)\r\n\t\tisNode : function( element ) {\r\n\t\t\tvar exists = false;\r\n\r\n\t\t\tif ( element && element !== null && element.nodeType === Node.ELEMENT_NODE ) {\r\n\t\t\t\texists = true;\r\n\t\t\t}\r\n\t\t\treturn exists;\r\n\t\t},\r\n\r\n\t\t// Check if the content of an element has overflown its bounding box (v4.13 - Sep 19)\r\n\t\tisOverflown : function( element, axis ) {\r\n\t\t\tvar hasOverflown = false;\r\n\r\n\t\t\tif ( axis === 'y' ) {\r\n\t\t\t\thasOverflown = element.scrollHeight > element.clientHeight + 1;\r\n\t\t\t} else if ( axis === 'x' ) {\r\n\t\t\t\thasOverflown = element.scrollWidth > element.clientWidth + 1;\r\n\t\t\t} else {\r\n\t\t\t\thasOverflown = element.scrollHeight > element.clientHeight + 1 || element.scrollWidth > element.clientWidth + 1;\r\n\t\t\t}\r\n\t\t\treturn hasOverflown;\r\n\t\t},\r\n\r\n\t\t// Check if an element is visible (v4.13 - Sep 19)\r\n\t\tisVisible : function( element ) {\r\n\t\t\tvar testHidden = ( element.offsetWidth === 0 && element.offsetHeight === 0 ) || window.getComputedStyle( element ).display === 'none';\r\n\t\t\treturn !testHidden;\r\n\t\t},\r\n\r\n\t\t// Create a random ID (copied from utility.js) (v4.13 - Sep 19)\r\n\t\tmakeId : function( prefix ) {\r\n\t\t\tvar newID = '',\r\n\t\t\t\tposs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',\r\n\t\t\t\tpossLength = poss.length,\r\n\t\t\t\ti;\r\n\r\n\t\t\tfor ( i = 0; i < 5; i++ ) {\r\n\t\t\t\tnewID += poss.charAt( Math.floor( Math.random() * possLength ) );\r\n\t\t\t}\r\n\r\n\t\t\treturn ( prefix ? prefix : '' ) + newID;\r\n\t\t},\r\n\r\n\t\t// Find elements with a matching selector (v4.13 - Sep 19)\r\n\t\tmatches : function( element, selector ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tresult = false;\r\n\r\n\t\t\tif ( instance.isNode( element ) ) {\r\n\t\t\t\t// eslint-disable-next-line max-len\r\n\t\t\t\tresult = ( element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.webkitMatchesSelector || element.oMatchesSelector ).call( element, selector );\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// Find an element's position (v4.13 - Sep 19)\r\n\t\toffset : function( element ) {\r\n\t\t\tvar rect = element.getBoundingClientRect();\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttop : rect.top + window.pageYOffset,\r\n\t\t\t\tleft : rect.left + window.pageXOffset,\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t// Get an element's total outer height (including margins etc) (v4.13 - Sep 19)\r\n\t\touterHeightTrue : function( element ) {\r\n\t\t\tvar height = element.offsetHeight,\r\n\t\t\t\tstyle = getComputedStyle( element );\r\n\r\n\t\t\theight += parseInt( style.marginTop, 10 ) + parseInt( style.marginBottom, 10 );\r\n\t\t\treturn height;\r\n\t\t},\r\n\r\n\t\t// Get an element's total outer width (including margins etc) (v4.13 - Sep 19)\r\n\t\touterWidthTrue : function( element ) {\r\n\t\t\tvar width = element.offsetWidth,\r\n\t\t\t\tstyle = getComputedStyle( element );\r\n\r\n\t\t\twidth += parseInt( style.marginLeft, 10 ) + parseInt( style.marginRight, 10 );\r\n\t\t\treturn width;\r\n\t\t},\r\n\r\n\t\t// Return an array of an element's parents (v4.13 - Sep 19)\r\n\t\tparents : function( element, customSelector ) {\r\n\t\t\tvar elements = [],\r\n\t\t\t\tselector = customSelector || '*',\r\n\t\t\t\tcurrentEl = element.parentNode;\r\n\r\n\t\t\twhile ( currentEl.parentNode ) {\r\n\t\t\t\tif ( currentEl.matches( selector ) ) {\r\n\t\t\t\t\telements.push( currentEl );\r\n\t\t\t\t}\r\n\t\t\t\tcurrentEl = currentEl.parentNode;\r\n\t\t\t}\r\n\t\t\treturn elements;\r\n\t\t},\r\n\r\n\t\t// Find all links with a specific selector and run specified function on them (v4.13 - Sep 19)\r\n\t\tprocessInPageLinks : function( selector, linkFunction ) {\r\n\t\t\tdocument.querySelectorAll( '[href*=\"#\"]' + selector ).forEach( function loop( element ) {\r\n\t\t\t\tif ( window.location.pathname === element.pathname && window.location.host === element.host ) {\r\n\t\t\t\t\tlinkFunction( element );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// Remove specified class to an element (v4.13 - Sep 19)\r\n\t\tremoveClass : function( element, classNames ) {\r\n\t\t\tvar classes;\r\n\r\n\t\t\tif ( element && element.classList ) {\r\n\t\t\t\tclasses = classNames.split( ' ' );\r\n\t\t\t\tclasses.forEach( function loop( className ) {\r\n\t\t\t\t\tif ( className ) {\r\n\t\t\t\t\t\telement.classList.remove( className );\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Remove measurement suffixes (v4.13 - Sep 19)\r\n\t\tremoveMeasurementSuffix : function( value, noAuto ) {\r\n\t\t\tvar newValue = value;\r\n\r\n\t\t\tif ( typeof newValue === 'string' ) {\r\n\t\t\t\tif ( value === 'auto' && !noAuto ) {\r\n\t\t\t\t\tnewValue = 'auto'; // Starting value is auto, number not being forced\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValue = newValue.replace( /q|mm|cm|in|pt|pc|px|em|ex|ch|rem|vw|vh|deg|%/g, '' ); // Remove valid css measurements such as px, em etc\r\n\t\t\t\t\tnewValue = parseFloat( newValue, 10 );\r\n\t\t\t\t\tif ( Number.isNaN( newValue ) ) { // New value is NaN despite suffix removal\r\n\t\t\t\t\t\tnewValue = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if ( typeof newValue === 'number' ) {\r\n\t\t\t\tnewValue = value; // Do nothing - starting value is already a number\r\n\t\t\t} else {\r\n\t\t\t\tnewValue = 0; // Any other random case\r\n\t\t\t}\r\n\t\t\treturn newValue;\r\n\t\t},\r\n\r\n\t\t// Reset styles on an element (v4.15 - Oct 19)\r\n\t\tresetStyles : function( element, styleList ) {\r\n\t\t\tvar convertedKey;\r\n\t\t\tObject.keys( styleList ).forEach( function loop( key ) {\r\n\t\t\t\tif ( styleList[ key ] === null || styleList[ key ] === '' ) {\r\n\t\t\t\t\tconvertedKey = key.replace( /[A-Z]/g, function regexFn( match ) {\r\n\t\t\t\t\t\treturn '-' + match.toLowerCase();\r\n\t\t\t\t\t});\r\n\t\t\t\t\telement.style.removeProperty( convertedKey );\r\n\t\t\t\t} else {\r\n\t\t\t\t\telement.style[ key ] = styleList[ key ];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// Load content from specified url/anchor into an element (v4.13 - Sep 19)\r\n\t\trequestLoadInto : function( element, href, responseCallback ) {\r\n\t\t\tvar instance = this,\r\n\t\t\t\tbodyRegex = /