{"version":3,"sources":["main.js"],"names":["FRAMEWORK","window","extend","locale","default","aContextHelp","formText","aDate","format","previousMonth","nextMonth","months","weekdays","weekdaysShort","interactionInstruction","triggerLabelSingle","confirmLabelSingle","triggerLabelRange","confirmLabelRange","clearLabel","totalSelectedSingular","totalSelectedPlural","yearLabel","monthLabel","startDateTitle","aFileUpload","multipleCaption","minus","plus","limitMessage","aTextarea","limitMetMessage","nextText","previousText","closeText","pleaseSelect","mCardNotification","selectAll","allSelected","selected","mCreditCard","mCookiePolicy","successfullySaved","failed","noMatch","mMediaPlayer","mFormRowHelp","showMore","showLess","rewind","progress","progressTime","restart","play","playVideo","playAudio","pause","forward","mute","volume","captions","fullscreen","seconds","on","off","mPredictiveSearch","instruction","resultsFound","noResults","description","expand","mobileText","contract","about","loadingText","mTabs","oCardSelect","oAccessibilitySettings","error","reduced","success","page","maxMessage","oCarousel","previousPageLong","previousPage","nextPageLong","nextPage","switcherInitial","oFaqPanel","oMasthead","menuText","closeMenu","switcherSelection","primaryNavigationLabel","contentLabel","oWallet","nextButton","previousButton","t250ms","t300ms","t350ms","timings","componentSettings","t500ms","t1s","accent-dark-1","mDoughnutChart","color","accent-dark-5","multiSegmentColors","accent-dark-7","accentSegmentColors","accent-light-3","accent-light-5","aviva-blue","defining-grey","segment1","segment2","segment3","segment4","segment5","basecolor","animation","standalone","functions","extendRequire","arrs","origCallback","currentUrl","deepMerge","Object","assign","defineProperty","value","target","varArgs","require","index","nextSource","TypeError","to","arguments","length","keys","forEach","nextKey","prototype","writable","requireConfig","requireExtend","objs","source","result","blocked","toString","call","child","key","prop","x","y","Error","indexOf","concat","callback","this","initScript","document","getElementById","src","baseUrl","replace","appUrl","getAttribute","setLocalisation","utility","documentElement","lang","settings","setComponentSettings","cookie","hasOwnProperty","current","animationOff","testEnv","matchMedia","matches","className","get","jQuery","moduleScan","elements","querySelectorAll","instantLoadModulesRegex","RegExp","Array","elm","instantLoad","classList","remove","moduleIntersectionObserver","removeEventListener","eventListenerFn","modules","instantLoadModules","test","unobserve","entries","entry","isIntersecting","observe","addEventListener","loadModules","contains","split","module","mod","add","setupPage","requiredPolyfills","requiredScripts","CSS","supports","componentSettingsUrl","style","scrollBehavior","push","localeUrl","setupPagePart2","moduleMutationObserver","MutationObserver","setAnimation","childList","subtree","element","e","thisHref","targetElm","tempElm","hasAttribute","closest","match","urlAnchorRegExp","escape","substr","querySelector","parentNode","requireExtendUrl","config"],"mappings":"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","file":"main.js","sourcesContent":["// Setup global namespace\r\nvar FRAMEWORK = window.FRAMEWORK || {};\r\nFRAMEWORK.extend = FRAMEWORK.extend || {};\r\n\r\n// Set localisation setting\r\nFRAMEWORK.locale = {\r\n\tdefault : {\r\n\t\taContextHelp : {\r\n\t\t\tformText : 'Help',\r\n\t\t\tcloseText : 'Close',\r\n\t\t},\r\n\t\taDate : {\r\n\t\t\tlocale : 'en-gb',\r\n\t\t\tformat : 'DD/MM/YYYY',\r\n\t\t\tpreviousMonth : 'Previous month',\r\n\t\t\tnextMonth : 'Next month',\r\n\t\t\tmonths : [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ],\r\n\t\t\tweekdays : [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],\r\n\t\t\tweekdaysShort : [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ],\r\n\t\t\tinteractionInstruction : 'Use the arrow keys to pick a date',\r\n\t\t\ttriggerLabelSingle : 'Select date',\r\n\t\t\tconfirmLabelSingle : 'Confirm date',\r\n\t\t\ttriggerLabelRange : 'Select dates',\r\n\t\t\tconfirmLabelRange : 'Confirm dates',\r\n\t\t\tclearLabel : 'Clear',\r\n\t\t\ttotalSelectedSingular : 'Total days selected: {days} day',\r\n\t\t\ttotalSelectedPlural : 'Total days selected: {days} days',\r\n\t\t\tyearLabel : 'Year',\r\n\t\t\tmonthLabel : 'Month',\r\n\t\t\tstartDateTitle : 'Set start date',\r\n\t\t\tendDateTitle : 'Set end date',\r\n\t\t},\r\n\t\taFileUpload : { multipleCaption : '{count} files selected' },\r\n\t\taPlusMinus : {\r\n\t\t\tplus : 'plus',\r\n\t\t\tminus : 'minus',\r\n\t\t},\r\n\t\taTextarea : {\r\n\t\t\tmultipleCaption : '{count} characters left',\r\n\t\t\tlimitMessage : 'There is a character limit of {count}',\r\n\t\t\tlimitMetMessage : 'Character limit of {count} met',\r\n\t\t},\r\n\t\tmChapterIndex : {\r\n\t\t\tpreviousText : 'Previous',\r\n\t\t\tnextText : 'Next',\r\n\t\t},\r\n\t\tmCardNotification : { closeText : 'Close' },\r\n\t\tmCheckboxGroupMultiselect : {\r\n\t\t\tpleaseSelect : 'Please select\\u2026',\r\n\t\t\tallSelected : 'All selected',\r\n\t\t\tselected : ' selected',\r\n\t\t\tselectAll : 'Select all',\r\n\t\t},\r\n\t\tmCookiePolicy : {\r\n\t\t\tsuccessfullySaved : 'The cookie setting has been successfully saved.',\r\n\t\t\tfailed : 'Cookies are not enabled so your preference could not be saved.',\r\n\t\t},\r\n\t\tmCreditCard : {\r\n\t\t\tdefault : 'For %s, look for the three digits on the back',\r\n\t\t\tnoMatch : 'Look for the three digits on the back',\r\n\t\t\tamex : 'For American Express, look for the four digits on the front',\r\n\t\t},\r\n\t\tmFormRowHelp : {\r\n\t\t\tshowMore : 'Show more',\r\n\t\t\tshowLess : 'Show less',\r\n\t\t},\r\n\t\tmMediaPlayer : {\r\n\t\t\tprogress : 'played',\r\n\t\t\tprogressTime : 'time',\r\n\t\t\trestart : 'Restart',\r\n\t\t\trewind : 'Rewind',\r\n\t\t\tplay : 'Play',\r\n\t\t\tplayVideo : 'Play video',\r\n\t\t\tplayAudio : 'Play audio',\r\n\t\t\tpause : 'Pause',\r\n\t\t\tforward : 'Forward',\r\n\t\t\tmute : 'Mute',\r\n\t\t\tvolume : 'Volume',\r\n\t\t\tcaptions : 'Captions',\r\n\t\t\tsubtitles : 'Subtitles',\r\n\t\t\tfullscreen : 'Fullscreen',\r\n\t\t\tseconds : 'seconds',\r\n\t\t\ton : 'on',\r\n\t\t\toff : 'off',\r\n\t\t},\r\n\t\tmPredictiveSearch : {\r\n\t\t\tinstruction : 'When auto-complete results are available use up and down arrows to review and enter to select. Touch device users, explore by touch or with swipe gestures.',\r\n\t\t\tresultsFound : 'results are available.',\r\n\t\t\tnoResults : 'No search results.',\r\n\t\t},\r\n\t\tmShowMore : {\r\n\t\t\texpand : 'Show more',\r\n\t\t\tcontract : 'Show less',\r\n\t\t\tabout : ' about ',\r\n\t\t\tdescription : 'this topic',\r\n\t\t},\r\n\t\tmStickyCtaBar : { mobileText : 'Ready to get going?' },\r\n\t\tmTabs : {\r\n\t\t\tpreviousText : 'Previous',\r\n\t\t\tnextText : 'Next',\r\n\t\t\tloadingText : 'Please wait',\r\n\t\t},\r\n\t\toAccessibilitySettings : {\r\n\t\t\t// eslint-disable-next-line max-len\r\n\t\t\terror : 'The ability to store your accessibility preferences for this website requires the use of cookies. Please enable cookies for this site so that we can save your preference, or use the prefer reduced motion setting on your device.',\r\n\t\t\treduced : 'Animations and transitions have been automatically disabled for this website in accordance with your device settings.',\r\n\t\t\tsuccess : 'Your preferences have been updated successfully.',\r\n\t\t},\r\n\t\toCardSelect : {\r\n\t\t\tmaxMessage : 'Maximum reached - Please deselect an option to proceed',\r\n\t\t},\r\n\t\toCarousel : {\r\n\t\t\tpreviousPageLong : 'Previous, {x} of {y}',\r\n\t\t\tpreviousPage : 'Previous',\r\n\t\t\tpage : '{x} of {y}',\r\n\t\t\tnextPageLong : 'Next, {x} of {y}',\r\n\t\t\tnextPage : 'Next',\r\n\t\t},\r\n\t\toFaqPanel : { showMore : 'Show more' },\r\n\t\toMasthead : {\r\n\t\t\tmenuText : 'Menu',\r\n\t\t\tcloseMenu : 'Close menu',\r\n\t\t\tcloseText : 'Close',\r\n\t\t\tloadingText : 'Please wait',\r\n\t\t\tswitcherInitial : 'Select your preferred option',\r\n\t\t\tswitcherSelection : 'You are on {option}',\r\n\t\t\tprimaryNavigationLabel : 'Primary navigation',\r\n\t\t},\r\n\t\toModal : {\r\n\t\t\tcloseText : 'Close',\r\n\t\t\tloadingText : 'Please wait',\r\n\t\t\tcontentLabel : 'Modal content',\r\n\t\t},\r\n\t\toWallet : {\r\n\t\t\tnextButton : 'Next',\r\n\t\t\tpreviousButton : 'Back',\r\n\t\t},\r\n\t},\r\n};\r\n\r\nFRAMEWORK.timings = {\r\n\tdefault : {\r\n\t\tt100ms : 100,\r\n\t\tt150ms : 150,\r\n\t\tt200ms : 200,\r\n\t\tt250ms : 250,\r\n\t\tt300ms : 300,\r\n\t\tt350ms : 350,\r\n\t\tt500ms : 500,\r\n\t\tt1s : 1000,\r\n\t},\r\n};\r\n\r\nFRAMEWORK.componentSettings = {\r\n\tmDoughnutChart : {\r\n\t\tcolor : 'accent-dark-1', // Accent dark 1 default (Aviva Blue)\r\n\t\tmultiSegmentColors : [ '#1a61bd', '#a9b2c6', '#5a8ccc', '#c2c8d5', '#7988a9' ], // Default colours for multisegment\r\n\t\taccentSegmentColors : {\r\n\t\t\t// Standard accent colours\r\n\t\t\t'accent-dark-1' : '#004fb6', // Aviva Blue\r\n\t\t\t'accent-dark-2' : '#004fb6', // Aviva Blue\r\n\t\t\t'accent-dark-3' : '#002f14', // Bottle Green\r\n\t\t\t'accent-dark-4' : '#5c596d', // Warm Grey\r\n\t\t\t'accent-dark-5' : '#4e1758', // Plum\r\n\t\t\t'accent-dark-6' : '#4e1758', // Plum\r\n\t\t\t'accent-dark-7' : '#005a6c', // Dark Teal\r\n\t\t\t'accent-dark-8' : '#444', // Dark Grey\r\n\t\t\t// Aviva specific accent colours\r\n\t\t\t'accent-light-3' : '#eee',\r\n\t\t\t'accent-light-5' : '#ffd900',\r\n\t\t\t'aviva-blue' : '#004fb6',\r\n\t\t\t'defining-grey' : '#ccc',\r\n\t\t\tsegment1 : '#1a61bd',\r\n\t\t\tsegment2 : '#a9b2c6',\r\n\t\t\tsegment3 : '#5a8ccc',\r\n\t\t\tsegment4 : '#c2c8d5',\r\n\t\t\tsegment5 : '#7988a9',\r\n\t\t},\r\n\t\tbasecolor : 'defining-grey', // Defining grey\r\n\t},\r\n};\r\n\r\nFRAMEWORK.animation = true; // Setup global animation variable\r\n\r\nFRAMEWORK.standalone = false;\r\n\r\nFRAMEWORK.functions = {\r\n\t// Extend require config\r\n\textendRequire : function() {\r\n\t\t'use strict';\r\n\r\n\t\tvar require,\r\n\t\t\trequireExtend,\r\n\t\t\tobjs,\r\n\t\t\tarrs,\r\n\t\t\tblocked,\r\n\t\t\torigCallback,\r\n\t\t\tinitScript,\r\n\t\t\tcurrentUrl,\r\n\t\t\tappUrl,\r\n\t\t\tdeepMerge;\r\n\r\n\t\t// Object.assign polyfill\r\n\t\tif ( typeof Object.assign !== 'function' ) {\r\n\t\t\t// Must be writable: true, enumerable: false, configurable: true\r\n\t\t\tObject.defineProperty( Object, 'assign', {\r\n\t\t\t\tvalue : function assign( target, varArgs ) { // eslint-disable-line no-unused-vars\r\n\t\t\t\t\tvar to,\r\n\t\t\t\t\t\tindex,\r\n\t\t\t\t\t\tnextSource;\r\n\r\n\t\t\t\t\t// .length of function is 2\r\n\t\t\t\t\tif ( target === null ) { // TypeError if undefined or null\r\n\t\t\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tto = Object( target );\r\n\r\n\t\t\t\t\tfor ( index = 1; index < arguments.length; index++ ) {\r\n\t\t\t\t\t\tnextSource = arguments[ index ];\r\n\r\n\t\t\t\t\t\tif ( nextSource !== null ) { // Skip over if undefined or null\r\n\t\t\t\t\t\t\tObject.keys( nextSource ).forEach( function loop( nextKey ) { // eslint-disable-line no-loop-func\r\n\t\t\t\t\t\t\t\t// Avoid bugs when hasOwnProperty is shadowed\r\n\t\t\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( nextSource, nextKey ) ) {\r\n\t\t\t\t\t\t\t\t\tto[ nextKey ] = nextSource[ nextKey ];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn to;\r\n\t\t\t\t},\r\n\t\t\t\twritable : true,\r\n\t\t\t\tconfigurable : true,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\trequire = FRAMEWORK.requireConfig;\r\n\t\trequireExtend = FRAMEWORK.extend.requireConfig;\r\n\t\tobjs = [ 'paths', 'bundles', 'shim', 'map', 'config', 'moduleAttributes' ];\r\n\t\tarrs = [ 'packages', 'deps' ];\r\n\t\tblocked = [ 'baseUrl', 'skipDataMain', 'baseBlocksUrl' ];\r\n\r\n\t\tdeepMerge = function( target, source ) {\r\n\t\t\tvar result = 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 ] = deepMerge( result[ index ], source[ index ] );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresult[ index ] = 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// It is an object literal\r\n\t\t\t\tif ( typeof result !== 'object' ) {\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t}\r\n\t\t\t\tObject.keys( source ).forEach( function loop( key ) {\r\n\t\t\t\t\tif ( result[ key ] ) {\r\n\t\t\t\t\t\tresult[ key ] = deepMerge( result[ key ], source[ key ] );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresult[ key ] = source[ key ];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else if ( result ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t} else {\r\n\t\t\t\tresult = source; // Dont overwrite any original values\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t};\r\n\r\n\t\tif ( requireExtend && typeof requireExtend === 'object' ) {\r\n\t\t\tObject.keys( requireExtend ).forEach( function loop( prop ) {\r\n\t\t\t\tvar x,\r\n\t\t\t\t\ty;\r\n\t\t\t\tif ( blocked.indexOf( prop ) > -1 ) {\r\n\t\t\t\t\tthrow new Error( 'You are not permitted to override `' + prop + '` in your config' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( objs.indexOf( prop ) > -1 ) {\r\n\t\t\t\t\trequire[ prop ] = deepMerge( require[ prop ], requireExtend[ prop ] );\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( arrs.indexOf( prop ) > -1 ) {\r\n\t\t\t\t\tx = require[ prop ] || [];\r\n\t\t\t\t\ty = requireExtend[ prop ] || [];\r\n\t\t\t\t\trequire[ prop ] = [].concat( x, y );\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( prop === 'callback' && requireExtend.callback === 'function' ) {\r\n\t\t\t\t\t// Callback already exists on config, wrap and call both\r\n\t\t\t\t\tif ( require.callback ) {\r\n\t\t\t\t\t\torigCallback = require.callback;\r\n\t\t\t\t\t\trequire.callback = function callback() {\r\n\t\t\t\t\t\t\torigCallback.apply( this, arguments );\r\n\t\t\t\t\t\t\trequireExtend.callback.apply( this, arguments );\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\trequire.callback = requireExtend.callback;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trequire[ prop ] = requireExtend[ prop ];\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Set base URL based on where init.js is being loaded from\r\n\t\tinitScript = document.getElementById( 'js-init' );\r\n\t\tif ( initScript !== null ) {\r\n\t\t\tcurrentUrl = initScript.src;\r\n\t\t\trequire.baseUrl = currentUrl.replace( '/init.js', '' );\r\n\r\n\t\t\tappUrl = initScript.getAttribute( 'data-app' );\r\n\t\t\tif ( appUrl !== null ) {\r\n\t\t\t\trequire.paths.app = appUrl;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Function to merge locale settings with defaults\r\n\tsetLocalisation : function( utility ) {\r\n\t\t'use strict';\r\n\r\n\t\tvar lang = document.documentElement.lang;\r\n\r\n\t\tif ( typeof FRAMEWORK.extend.locale !== 'undefined' && FRAMEWORK.extend.locale[ lang ] ) {\r\n\t\t\tFRAMEWORK.locale.settings = utility.extend({}, FRAMEWORK.locale.default, FRAMEWORK.extend.locale[ lang ] );\r\n\t\t} else {\r\n\t\t\tFRAMEWORK.locale.settings = utility.extend({}, FRAMEWORK.locale.default, null );\r\n\t\t}\r\n\t},\r\n\r\n\t// Function to merge component settings with defaults\r\n\tsetComponentSettings : function( utility ) {\r\n\t\t'use strict';\r\n\r\n\t\tif ( FRAMEWORK.extend.componentSettings && typeof FRAMEWORK.extend.componentSettings === 'object' ) {\r\n\t\t\tFRAMEWORK.componentSettings = utility.extend( FRAMEWORK.componentSettings, FRAMEWORK.extend.componentSettings );\r\n\t\t} else {\r\n\t\t\t// Do nothing\r\n\t\t}\r\n\t},\r\n\r\n\t// Setup global variable for animation setting and set global class for css animation\r\n\tsetAnimation : function( utility, cookie ) {\r\n\t\t'use strict';\r\n\r\n\t\tif ( FRAMEWORK.extend.timings && typeof FRAMEWORK.extend.timings === 'object' ) {\r\n\t\t\t// Do nothing\r\n\t\t} else {\r\n\t\t\tFRAMEWORK.extend.timings = {};\r\n\t\t}\r\n\r\n\t\t// Loop through any additional timing values and add them to the default list\r\n\t\tObject.keys( FRAMEWORK.extend.timings ).forEach( function loop( key ) {\r\n\t\t\tif ( Object.prototype.hasOwnProperty.call( FRAMEWORK.timings.default, key ) ) {\r\n\t\t\t\t// Do not overwrite default time values\r\n\t\t\t} else {\r\n\t\t\t\t// Add new timing value\r\n\t\t\t\tFRAMEWORK.timings.default[ key ] = FRAMEWORK.extend.timings[ key ];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Setup current timings to match default\r\n\t\tFRAMEWORK.timings.current = utility.extend({}, FRAMEWORK.timings.default );\r\n\r\n\t\tif ( cookie.cookie.get( 'animation_disable_decision' ) === 'true' || FRAMEWORK.animationOff || FRAMEWORK.testEnv || window.matchMedia( '(prefers-reduced-motion: reduce)' ).matches ) {\r\n\t\t\tFRAMEWORK.animation = false; // Setup global animation variable\r\n\t\t\twindow.document.documentElement.className = window.document.documentElement.className.replace( 'u-animation', '' ); // Remove class if there\r\n\r\n\t\t\tObject.keys( FRAMEWORK.timings.current ).forEach( function loop( key ) {\r\n\t\t\t\tif ( Object.prototype.hasOwnProperty.call( FRAMEWORK.timings.current, key ) ) {\r\n\t\t\t\t\tFRAMEWORK.timings.current[ key ] = 0;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif ( typeof jQuery === 'function' ) {\r\n\t\t\t\tjQuery.fx.off = true;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tFRAMEWORK.animation = true; // Setup global animation variable\r\n\t\t\twindow.document.documentElement.className += ' u-animation'; // Turn on animation for CSS\r\n\t\t}\r\n\t},\r\n\r\n\t// Function to scan all modules for a data attribute to link to required JS and run\r\n\tmoduleScan : function() {\r\n\t\t'use strict';\r\n\r\n\t\t// Get all elements with data-module attribute but not got an intersection observer or not had their modules loaded already\r\n\t\tvar elements = document.querySelectorAll( '[data-module]:not(.has-module-observer):not(.has-modules-loaded)' ),\r\n\t\t\tinstantLoadModulesRegex = new RegExp( '(m-tabs)|(m-showhide)+', 'g' );\r\n\t\tArray.prototype.forEach.call( elements, function loop( elm ) {\r\n\t\t\tvar instantLoad = elm.getAttribute( 'data-module-load' ),\r\n\t\t\t\tmodules = elm.getAttribute( 'data-module' ),\r\n\t\t\t\tinstantLoadModules = instantLoadModulesRegex.test( modules ),\r\n\t\t\t\trootMargin = '256px',\r\n\t\t\t\tmoduleIntersectionObserver,\r\n\t\t\t\teventListenerFn = function() {\r\n\t\t\t\t\tFRAMEWORK.functions.loadModules( elm );\r\n\t\t\t\t\telm.classList.remove( 'has-module-observer' );\r\n\t\t\t\t\tmoduleIntersectionObserver.unobserve( elm );\r\n\t\t\t\t\telm.removeEventListener( 'loadModule', eventListenerFn );\r\n\t\t\t\t};\r\n\r\n\t\t\t// If intersection observers are supported and the module shouldn't be loaded instantly then add an intersection observer\r\n\t\t\tif ( 'IntersectionObserver' in window && ( instantLoad !== 'true' && instantLoadModules === false && !FRAMEWORK.testEnv ) ) {\r\n\t\t\t\tmoduleIntersectionObserver = new IntersectionObserver( function listener( entries ) {\r\n\t\t\t\t\tentries.forEach( function innerLoop( entry ) {\r\n\t\t\t\t\t\tif ( entry.isIntersecting ) {\r\n\t\t\t\t\t\t\teventListenerFn();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}, { rootMargin : rootMargin });\r\n\r\n\t\t\t\telm.classList.add( 'has-module-observer' );\r\n\t\t\t\tmoduleIntersectionObserver.observe( elm );\r\n\t\t\t\telm.addEventListener( 'loadModule', eventListenerFn );\r\n\t\t\t} else {\r\n\t\t\t\tFRAMEWORK.functions.loadModules( elm );\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t// Function to take the date-module attribute and load all the modules listed within it\r\n\tloadModules : function( elm ) {\r\n\t\t'use strict';\r\n\t\tvar modules = elm.getAttribute( 'data-module' );\r\n\r\n\t\tif ( modules && !elm.classList.contains( 'has-modules-loaded' ) ) {\r\n\t\t\tmodules = modules.split( ', ' );\r\n\r\n\t\t\tif ( typeof modules === 'string' ) {\r\n\t\t\t\tmodules = [ modules ];\r\n\t\t\t}\r\n\r\n\t\t\tArray.prototype.forEach.call( modules, function innerLoop( module ) {\r\n\t\t\t\tif ( module !== '' ) {\r\n\t\t\t\t\tFRAMEWORK.require( [ 'b!' + module ], function innerFn( mod ) {\r\n\t\t\t\t\t\tif ( mod && Object.prototype.hasOwnProperty.call( mod, 'initInstance' ) ) {\r\n\t\t\t\t\t\t\tmod.initInstance( elm );\r\n\t\t\t\t\t\t\t// Add a class to say modules have been loaded to try and prevent over processing of elements\r\n\t\t\t\t\t\t\telm.classList.add( 'has-modules-loaded' );\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});\r\n\t\t}\r\n\t},\r\n\r\n\t/*\r\n\t * Load any block modules that are on the page, and run their\r\n\t * initInstances function if one exists. We also pass in the\r\n\t * element that the module was referenced on as their may be\r\n\t * more than one copy of the block on the page.\r\n\t */\r\n\t// eslint-disable-next-line complexity\r\n\tsetupPage : function() {\r\n\t\t'use strict';\r\n\r\n\t\t// Set base URL based on where init.js is being loaded from\r\n\t\tvar initScript = document.getElementById( 'js-init' ),\r\n\t\t\trequiredPolyfills = [],\r\n\t\t\trequiredScripts = [ 'utility', 'vendor/cookie' ],\r\n\t\t\tlocaleUrl,\r\n\t\t\tcomponentSettingsUrl;\r\n\r\n\t\tif ( window.CSS && window.CSS.supports && window.CSS.supports( 'object-fit', 'cover' ) ) {\r\n\t\t\t// Not IE11 or below so do nothing\r\n\t\t} else {\r\n\t\t\t// Load the polyfills for IE11 and below\r\n\t\t\trequiredPolyfills.push( 'vendor/polyfills-IE11' );\r\n\t\t}\r\n\r\n\t\tif ( 'scrollBehavior' in document.documentElement.style && document.documentElement.style.scrollBehavior !== 'auto' ) {\r\n\t\t\t// Smooth scrolling is supported so do nothing\r\n\t\t} else {\r\n\t\t\t// Load the smoothscroll polyfill\r\n\t\t\trequiredPolyfills.push( 'vendor/polyfills-smoothscroll' );\r\n\t\t}\r\n\r\n\t\tif ( 'IntersectionObserver' in window ) {\r\n\t\t\t// Intersection observer is supported so do nothing\r\n\t\t} else {\r\n\t\t\t// Load the intersection observer polyfill\r\n\t\t\trequiredPolyfills.push( 'vendor/core/intersection-observer' );\r\n\t\t}\r\n\r\n\t\tif ( initScript !== null ) {\r\n\t\t\tlocaleUrl = initScript.getAttribute( 'data-locale' );\r\n\t\t\tcomponentSettingsUrl = initScript.getAttribute( 'data-settings' );\r\n\r\n\t\t\tif ( localeUrl !== null ) {\r\n\t\t\t\t// If a custom locale file has been supplied then load it as a dependancy\r\n\t\t\t\trequiredScripts.push( localeUrl );\r\n\t\t\t}\r\n\t\t\tif ( componentSettingsUrl !== null ) {\r\n\t\t\t\t// If a custom component settings file has been supplied then load it as a dependancy\r\n\t\t\t\trequiredScripts.push( componentSettingsUrl );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( requiredPolyfills.length === 0 ) {\r\n\t\t\t// No polyfills are required so just move onto loading the other files\r\n\t\t\tFRAMEWORK.functions.setupPagePart2( requiredScripts );\r\n\t\t} else {\r\n\t\t\t// Polyfills are required so load these first\r\n\t\t\tFRAMEWORK.require( requiredPolyfills, function run() {\r\n\t\t\t\tFRAMEWORK.functions.setupPagePart2( requiredScripts );\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tsetupPagePart2 : function( requiredScripts ) {\r\n\t\t'use strict';\r\n\r\n\t\tFRAMEWORK.require( requiredScripts, function run( utility, cookie ) {\r\n\t\t\tvar moduleMutationObserver = new MutationObserver( function listener() {\r\n\t\t\t\tFRAMEWORK.functions.moduleScan();\r\n\t\t\t});\r\n\r\n\t\t\tFRAMEWORK.functions.setLocalisation( utility );\r\n\t\t\tFRAMEWORK.functions.setComponentSettings( utility );\r\n\t\t\tFRAMEWORK.functions.setAnimation( utility, cookie );\r\n\r\n\t\t\tutility.trigger( document, 'frameworkready' );\r\n\r\n\t\t\tFRAMEWORK.functions.moduleScan(); // Run initial moduleScan and then observe\r\n\r\n\t\t\tmoduleMutationObserver.observe( document.querySelector( 'body' ), {\r\n\t\t\t\tchildList : true,\r\n\t\t\t\tsubtree : true,\r\n\t\t\t});\r\n\r\n\t\t\tdocument.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\tvar element = e.target,\r\n\t\t\t\t\tthisHref,\r\n\t\t\t\t\ttargetElm,\r\n\t\t\t\t\ttempElm;\r\n\r\n\t\t\t\t// Get the href of the clicked element if there is one\r\n\t\t\t\tif ( element.hasAttribute( 'href' ) ) {\r\n\t\t\t\t\tthisHref = element.getAttribute( 'href' ).match( utility.urlAnchorRegExp );\r\n\t\t\t\t} else {\r\n\t\t\t\t\telement = element.closest( 'a[href], button[href]' );\r\n\t\t\t\t\tif ( element ) {\r\n\t\t\t\t\t\tthisHref = element.getAttribute( 'href' ).match( utility.urlAnchorRegExp );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Only try and process if the link is not blank\r\n\t\t\t\tif ( Array.isArray( thisHref ) && thisHref[ 0 ] !== '' ) {\r\n\t\t\t\t\tthisHref = thisHref[ 0 ];\r\n\t\t\t\t\tif ( thisHref.indexOf( '#' ) === 0 ) {\r\n\t\t\t\t\t\tthisHref = '#' + CSS.escape( thisHref.substr( 1 ) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttargetElm = document.querySelector( thisHref );\r\n\r\n\t\t\t\t\t// If target element exists makes sure parentJS modules are all loaded\r\n\t\t\t\t\tif ( targetElm ) {\r\n\t\t\t\t\t\t// Loop through all parents loading their modules\r\n\t\t\t\t\t\ttempElm = targetElm.closest( '.has-module-observer' );\r\n\r\n\t\t\t\t\t\twhile ( tempElm ) {\r\n\t\t\t\t\t\t\tFRAMEWORK.functions.loadModules( tempElm );\r\n\t\t\t\t\t\t\ttempElm = tempElm.parentNode.closest( '.has-module-observer' );\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});\r\n\t\t});\r\n\t},\r\n};\r\n\r\n( function fn() {\r\n\t'use strict';\r\n\r\n\tvar initScript = document.getElementById( 'js-init' ),\r\n\t\trequireExtendUrl;\r\n\r\n\tif ( initScript !== null ) {\r\n\t\trequireExtendUrl = initScript.getAttribute( 'data-require' );\r\n\t}\r\n\r\n\t// If a custom require extend file has been supplied then load it as a dependancy otherwise just run as normal\r\n\tif ( requireExtendUrl === null ) {\r\n\t\tFRAMEWORK.functions.extendRequire();\r\n\t\tFRAMEWORK.require = require.config( FRAMEWORK.requireConfig ); // Setup Framework specific instance of require\r\n\t\tFRAMEWORK.functions.setupPage();\r\n\t} else {\r\n\t\t// If a custom require extend file has been supplied then load it as a dependancy\r\n\t\trequire( [ requireExtendUrl ], function run() {\r\n\t\t\tFRAMEWORK.functions.extendRequire();\r\n\t\t\tFRAMEWORK.require = require.config( FRAMEWORK.requireConfig ); // Setup Framework specific instance of require\r\n\t\t\tFRAMEWORK.functions.setupPage();\r\n\t\t});\r\n\t}\r\n})();\r\n"]}