{"version":3,"sources":["blocks/m-product-navigation.js"],"names":["define","utility","mProductNavigationFn","init","elm","classList","mProductNavigation","config","getData","control","querySelector","content","controlLink","getAttribute","toggleSelection","open","scrollTo","moveTo","scrollParent","offsetTop","setupControl","controlId","setAttributes","autoId","makeId","wrapInner","nextElementSibling","display","type","aria-controls","aria-expanded","preventDefault","style","id","aria-hidden","toggleVariant","addEventListener","e","updateHistory","parentId","FRAMEWORK","add","contains","remove","slideToggle","timings","current","t500ms","variant","callback","setAttribute","trigger","window","initInstance"],"mappings":"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","file":"blocks/m-product-navigation.js","sourcesContent":["define( [ 'utility' ], function run( utility ) {\r\n\t'use strict';\r\n\r\n\tvar mProductNavigationFn = {\r\n\r\n\t\tinit : function( elm ) {\r\n\t\t\tif ( !elm.classList.contains( 'js-m-product-navigation' ) ) {\r\n\t\t\t\telm.classList.add( 'js-m-product-navigation' );\r\n\r\n\t\t\t\telm.mProductNavigation = {}; // Setup mProductNavigation object\r\n\r\n\t\t\t\t// Get config data\r\n\t\t\t\telm.mProductNavigation.config = utility.getData( elm );\r\n\r\n\t\t\t\t// Find all control element in the page\r\n\t\t\t\telm.mProductNavigation.control = elm.querySelector( '.m-product-navigation__heading' );\r\n\t\t\t\telm.mProductNavigation.content = elm.querySelector( '.m-product-navigation__content' );\r\n\r\n\t\t\t\tmProductNavigationFn.setupControl( elm );\r\n\r\n\t\t\t\telm.mProductNavigation.close = function close() {\r\n\t\t\t\t\t// If the section is open then close it\r\n\t\t\t\t\tif ( elm.mProductNavigation.controlLink.getAttribute( 'aria-expanded' ) === 'true' ) {\r\n\t\t\t\t\t\tmProductNavigationFn.toggleSelection( elm );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\telm.mProductNavigation.open = function open( scrollTo ) {\r\n\t\t\t\t\tvar scrollParent,\r\n\t\t\t\t\t\tmoveTo;\r\n\r\n\t\t\t\t\tif ( scrollTo ) {\r\n\t\t\t\t\t\tmProductNavigationFn.toggleSelection( elm, true );\r\n\r\n\t\t\t\t\t\tscrollParent = utility.scrollParent( elm.mProductNavigation.control );\r\n\t\t\t\t\t\tmoveTo = elm.mProductNavigation.control.offsetTop - scrollParent.offsetTop;\r\n\r\n\t\t\t\t\t\tscrollParent.scrollTo( 0, moveTo );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmProductNavigationFn.toggleSelection( elm, true );\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 elm.mProductNavigation;\r\n\t\t},\r\n\r\n\t\tsetupControl : function( elm ) {\r\n\t\t\tvar controlId = elm.mProductNavigation.control.getAttribute( 'id' ),\r\n\t\t\t\tautoId = utility.makeId( 'productNav' );\r\n\r\n\t\t\tutility.wrapInner( elm.mProductNavigation.control, 'button', 'm-product-navigation__control' );\r\n\t\t\telm.mProductNavigation.controlLink = elm.mProductNavigation.control.querySelector( '.m-product-navigation__control' );\r\n\t\t\tif ( controlId ) {\r\n\t\t\t\tautoId = controlId + '-productNav';\r\n\t\t\t}\r\n\r\n\t\t\tutility.setAttributes( elm.mProductNavigation.controlLink, {\r\n\t\t\t\ttype : 'button',\r\n\t\t\t\t'aria-controls' : autoId,\r\n\t\t\t\t'aria-expanded' : 'false',\r\n\t\t\t});\r\n\r\n\t\t\telm.mProductNavigation.control.nextElementSibling.style.display = 'none';\r\n\t\t\tutility.setAttributes( elm.mProductNavigation.control.nextElementSibling, {\r\n\t\t\t\tid : autoId,\r\n\t\t\t\t'aria-hidden' : 'true',\r\n\t\t\t});\r\n\r\n\t\t\t// Add a click event to the control to open the associated element\r\n\t\t\telm.mProductNavigation.controlLink.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tmProductNavigationFn.toggleSelection( elm );\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\ttoggleSelection : function( elm, open ) {\r\n\t\t\tvar parentId,\r\n\t\t\t\ttoggleVariant = 'toggle';\r\n\r\n\t\t\tif ( !elm.mProductNavigation.controlLink.classList.contains( 'is-animating' ) ) {\r\n\t\t\t\telm.mProductNavigation.controlLink.classList.add( 'is-animating' );\r\n\r\n\t\t\t\tparentId = elm.mProductNavigation.control.getAttribute( 'id' );\r\n\r\n\t\t\t\tif ( parentId ) {\r\n\t\t\t\t\tutility.updateHistory( '#' + parentId );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( elm.mProductNavigation.control.classList.contains( 'is-visible' ) && !open ) {\r\n\t\t\t\t\telm.mProductNavigation.control.classList.remove( 'is-visible' );\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.mProductNavigation.control.classList.add( 'is-visible' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( open ) {\r\n\t\t\t\t\ttoggleVariant = 'down';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tutility.slideToggle( elm.mProductNavigation.control.nextElementSibling, FRAMEWORK.timings.current.t500ms, {\r\n\t\t\t\t\tvariant : toggleVariant,\r\n\t\t\t\t\tcallback : function() {\r\n\t\t\t\t\t\tif ( open ) {\r\n\t\t\t\t\t\t\telm.mProductNavigation.controlLink.setAttribute( 'aria-expanded', 'true' );\r\n\t\t\t\t\t\t\telm.mProductNavigation.content.setAttribute( 'aria-hidden', 'false' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telm.mProductNavigation.controlLink.setAttribute( 'aria-expanded', elm.mProductNavigation.controlLink.getAttribute( 'aria-expanded' ) === 'true' ? 'false' : 'true' );\r\n\t\t\t\t\t\t\telm.mProductNavigation.content.setAttribute( 'aria-hidden', elm.mProductNavigation.controlLink.getAttribute( 'aria-expanded' ) === 'true' ? 'false' : 'true' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telm.mProductNavigation.controlLink.classList.remove( 'is-animating' );\r\n\r\n\t\t\t\t\t\tutility.trigger( window, 'refresh' );\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\treturn {\r\n\t\tinitInstance : function( elm ) {\r\n\t\t\treturn mProductNavigationFn.init( elm );\r\n\t\t},\r\n\t};\r\n});\r\n"]}