{"version":3,"sources":["webpack:///./src/_js/main.js","webpack:///./src/_js/partials/CardAnimation.js","webpack:///./src/_js/partials/ContentAnimation.js","webpack:///./src/_js/partials/ContentAnimationWeddings.js","webpack:///./src/_js/partials/FooterUtil.js","webpack:///./src/_js/partials/HeaderUtil.js","webpack:///./src/_js/partials/ScrollTo.js","webpack:///./src/_js/partials/StickyHeader.js","webpack:///./src/_js/partials/custom-matchheight.js","webpack:///./src/_js/partials/jquery-accessibleMegaMenu.js","webpack:///./src/_js/partials/lazyload.js","webpack:///./src/_js/partials/skrollr.js","webpack:///external \"jQuery\"","webpack:///external \"mobx\"","webpack:///external \"mobxReact\"","webpack:///external \"React\"","webpack:///external \"ReactDOM\"","webpack:///external \"ReactRedux\"","webpack:///external \"ReactRouter\"","webpack:///external \"ReactRouterDOM\"","webpack:///external \"ReactRouterRedux\"","webpack:///external \"Redux\""],"names":[],"mappings":"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","file":"main.js","sourcesContent":["\"use strict\";\r\n/**\r\n * Some useful packages (you can install by using npm)\r\n * 1. webfontloader = async font loaders\r\n * 2. slick-carousel = Simple, easy, responsive carousel (buggy centerMode - variableWidth - lazyMode)\r\n * 3. jquery-match-height = Use this to match the height of elements. Either use this or Equalizer from Foundation\r\n * 4. dropkickjs = if you need custom dropdown\r\n *\r\n * IMPORTANT:\r\n * To import async-ly, you need to wrap your codes in require.ensure([], () => { });\r\n * It's best not to async plugins, to leverage browser cache\r\n * Ref: https://webpack.github.io/docs/code-splitting.html\r\n *\r\n * NOTES:\r\n * This boilerplate uses CDN/external for jQuery package. Configured in gulp/webpack.js.\r\n * This to prevent the needs of jQuery from node_modules\r\n */\r\n\r\n///////////////\r\n// Libraries //\r\n///////////////\r\n// import wf from 'webfontloader';\r\nimport ssm from \"simplestatemanager\";\r\nimport svg4everybody from \"svg4everybody\";\r\nimport mh from \"jquery-match-height\";\r\nimport JSON5 from \"json5\";\r\n// import $script from 'scriptjs';\r\nimport \"waypoints/lib/jquery.waypoints\";\r\nimport LazyLoad from \"./partials/lazyload\";\r\nimport Cookies from \"js-cookie\";\r\nimport \"intersection-observer\"; //polyfill\r\n\r\nimport \"lazysizes/plugins/respimg/ls.respimg\";\r\nimport \"lazysizes/plugins/attrchange/ls.attrchange\";\r\nimport \"lazysizes/plugins/bgset/ls.bgset\";\r\nimport \"lazysizes/plugins/unveilhooks/ls.unveilhooks\";\r\nimport \"lazysizes\";\r\n\r\n// Note for lazysizes\r\n// Need to do \"mobile size first\"\r\n// If you define bgset=\"imageA sizeA, imageB sizeB\", then if the B is loaded first, the A won't load although it matches the size requirement\r\n// If you define bgset=\"imageA sizeA, imageB sizeB\", then if the A is loaded first, B will load if it matches the size requirement\r\n\r\n// To define with media query, do the ones that have mediaquery first, then the ones without\r\n// If you define with media query, it will load based on the set media query\r\nlazySizes.cfg.lazyClass = \"js-lazysizes\";\r\nlazySizes.cfg.loadedClass = \"is-lazysizes-loaded\";\r\nlazySizes.cfg.loadingClass = \"is-lazysizes-loading\";\r\n\r\n////////////////\r\n// Components //\r\n////////////////\r\nimport CardAnimation from \"./partials/CardAnimation\";\r\nimport ContentAnimation from \"./partials/ContentAnimation\";\r\nimport ContentAnimationWeddings from \"./partials/ContentAnimationWeddings\";\r\nimport ScrollTo from \"./partials/ScrollTo\";\r\nimport HeaderUtil from \"./partials/HeaderUtil\";\r\nimport FooterUtil from \"./partials/FooterUtil\";\r\n\r\nwindow.CardAnimation = CardAnimation;\r\n\r\nfunction getMobileOperatingSystem() {\r\n\tvar userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n\r\n\t// Windows Phone must come first because its UA also contains \"Android\"\r\n\tif (/windows phone/i.test(userAgent)) {\r\n\t\treturn \"Windows Phone\";\r\n\t}\r\n\r\n\tif (/android/i.test(userAgent)) {\r\n\t\treturn \"Android\";\r\n\t}\r\n\r\n\t// iOS detection from: http://stackoverflow.com/a/9039885/177710\r\n\tif (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\r\n\t\treturn \"iOS\";\r\n\t}\r\n\r\n\treturn \"unknown\";\r\n}\r\n\r\n//////////////////\r\n// Bootstrap JS //\r\n//////////////////\r\n// Tab\r\nrequire(\"bootstrap-sass/assets/javascripts/bootstrap/tab\");\r\n// Collapse\r\nrequire(\"bootstrap-sass/assets/javascripts/bootstrap/collapse\");\r\n// Dropdown\r\nrequire(\"bootstrap-sass/assets/javascripts/bootstrap/dropdown\");\r\n// Transition\r\nrequire(\"bootstrap-sass/assets/javascripts/bootstrap/transition\");\r\n\r\n/////////////\r\n// Plugins //\r\n/////////////\r\nimport \"bootstrap-datepicker\";\r\n\r\n// Polyfill\r\nimport objectFitImages from \"object-fit-images\";\r\n\r\n// Setting Webpack public path dynamically so that it loads the partials\r\n// from the folder where the main.js is located\r\nvar bundleSrc = $('[src*=\"/main.js\"]').attr(\"src\");\r\n__webpack_public_path__ = bundleSrc.substr(0, bundleSrc.lastIndexOf(\"/\") + 1);\r\n\r\n$(() => {\r\n\t// Object-Fit Polyfill\r\n\tif ($(\"body\").hasClass(\"IE\")) {\r\n\t\tobjectFitImages();\r\n\t}\r\n\r\n\tconst mobileOs = getMobileOperatingSystem();\r\n\tconst $body = $(\"body\");\r\n\tswitch (mobileOs) {\r\n\t\tcase \"Android\":\r\n\t\t\t$(\"body\").addClass(\"is-android\");\r\n\t\t\tbreak;\r\n\t\tcase \"iOS\":\r\n\t\t\t$(\"body\").addClass(\"is-ios\");\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\t$(\"body\").addClass(\"is-non-androidios\");\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\t// Notification\r\n\tconst $closeNotif = $(\"[data-closenotifid]\").on(\"click\", function() {\r\n\t\tconst $this = $(this);\r\n\t\tconst notifId = $this.attr(\"data-closenotifid\");\r\n\t\tCookies.set(\"notifId\", notifId);\r\n\t});\r\n\tif ($closeNotif.attr(\"data-closenotifid\") != Cookies.get(\"notifId\")) {\r\n\t\t$closeNotif.closest(\".js-notif\").removeClass(\"hidden\");\r\n\t}\r\n\r\n\t////////////////////////////\r\n\t// For lazy-loaded images //\r\n\t////////////////////////////\r\n\tvar myLazyLoad = new LazyLoad({\r\n\t\telements_selector: \".js-lazy\"\r\n\t});\r\n\r\n\t//////////////////////\r\n\t// For external SVG //\r\n\t//////////////////////\r\n\tsvg4everybody();\r\n\r\n\t/////////////////////////////\r\n\t// Match Height Customized //\r\n\t/////////////////////////////\r\n\trequire(\"./partials/custom-matchheight\");\r\n\r\n\t//////////////////////\r\n\t// Hero parallax //\r\n\t//////////////////////\r\n\tif (\r\n\t\t!/Android|iPhone|iPad|iPod|BlackBerry|Windows Phone/i.test(\r\n\t\t\tnavigator.userAgent || navigator.vendor || window.opera\r\n\t\t)\r\n\t) {\r\n\t\trequire(\"./partials/skrollr\");\r\n\t\tskrollr.init({\r\n\t\t\tforceHeight: false,\r\n\t\t\tedgeStrategy: \"set\",\r\n\t\t\teasing: {\r\n\t\t\t\tWTF: Math.random,\r\n\t\t\t\tinverted: function(p) {\r\n\t\t\t\t\treturn 1 - p;\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// Mute Volume //\r\n\t////////////////\r\n\tlet $heroAudio = $(\".o-hero--parallax-audio\");\r\n\tif ($heroAudio.length) {\r\n\t\tvar getSoundClass = $(this);\r\n\t\tvar getSoundUrl = $(\".o-hero--parallax-audio source\").attr(\"src\");\r\n\t\tvar getSound = new Audio(getSoundUrl);\r\n\t\t$(getSound).bind(\"ended\", function() {\r\n\t\t\tgetSound.currentTime = 0;\r\n\t\t\tgetSound.play();\r\n\t\t});\r\n\t\tif ($(window).width() >= 768) {\r\n\t\t\tgetSound.play();\r\n\t\t}\r\n\t\t$(\"#btnsound\").on(\"click\", function(e) {\r\n\t\t\t$(this).toggleClass(\"muted\");\r\n\t\t\tif (getSound.paused == false) {\r\n\t\t\t\tgetSound.pause();\r\n\t\t\t} else {\r\n\t\t\t\tgetSound.play();\r\n\t\t\t}\r\n\t\t\te.preventDefault();\r\n\t\t});\r\n\t\t$(window).on(\"resize\", function() {\r\n\t\t\tif ($(window).width() <= 767) {\r\n\t\t\t\tgetSound.pause();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////\r\n\t// Scroll To //\r\n\t////////////////\r\n\tlet $scrollTo = $(\"[data-scrollto]\");\r\n\tif ($scrollTo.length) {\r\n\t\tnew ScrollTo($scrollTo);\r\n\t}\r\n\r\n\t///////////////\r\n\t// Triggerer //\r\n\t///////////////\r\n\tlet $jsTriggerer = $(\"[data-triggerer]\");\r\n\tif ($jsTriggerer.length) {\r\n\t\t$jsTriggerer.each(function() {\r\n\t\t\tlet $this = $(this);\r\n\t\t\tlet attr = $this.attr(\"data-triggerer\");\r\n\t\t\tif (attr) {\r\n\t\t\t\t// opts\r\n\t\t\t\t// opt.target = target (CSS string selector)\r\n\t\t\t\t// opt.sourceEvents = (str) default(click) - the events that trigger eventTriggers\r\n\t\t\t\t// opt.triggerEvents = (str) the events triggered on the target\r\n\t\t\t\tlet opt = JSON5.parse(attr);\r\n\r\n\t\t\t\t// if on enter\r\n\t\t\t\tlet isOnEnter = opt.sourceEvents == \"enter\";\r\n\r\n\t\t\t\tif (isOnEnter) {\r\n\t\t\t\t\topt.sourceEvents = \"keypress\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$this.on(opt.sourceEvents || \"click\", function(e) {\r\n\t\t\t\t\tif (isOnEnter) {\r\n\t\t\t\t\t\tif (e.which == 13) {\r\n\t\t\t\t\t\t\t$(opt.target).trigger(opt.triggerEvents);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(opt.target).trigger(opt.triggerEvents);\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// FocusOn //\r\n\t/////////////\r\n\tlet $focusOn = $(\"[data-focuson]\");\r\n\tif ($focusOn.length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t() => {\r\n\t\t\t\tconst FocusOn = require(\"./partials/FocusOn\");\r\n\t\t\t\tnew FocusOn($focusOn);\r\n\t\t\t},\r\n\t\t\t\"focuson\"\r\n\t\t);\r\n\t}\r\n\r\n\t//////////////////\r\n\t// Init Toggler //\r\n\t//////////////////\r\n\tlet $jsVtoggle = $(\"[data-vtoggle]\");\r\n\t$jsVtoggle.each(function() {\r\n\t\tlet $this = $(this);\r\n\t\tlet {\r\n\t\t\tkey,\r\n\t\t\tselfClass,\r\n\t\t\tclass: cls,\r\n\t\t\ttarget,\r\n\t\t\tevent: ev,\r\n\t\t\ttransitionProperty,\r\n\t\t\tremoveClass,\r\n\t\t\tisAddClass\r\n\t\t} = JSON5.parse($this.attr(\"data-vtoggle\"));\r\n\r\n\t\t$this.on(ev || \"click\", function() {\r\n\t\t\tlet $this = $(this);\r\n\r\n\t\t\tif (cls) {\r\n\t\t\t\tlet $target = $(target);\r\n\t\t\t\tconst TRANSITION_EVENT =\r\n\t\t\t\t\t\"webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend\";\r\n\t\t\t\tconst LOADING_CLASS = `${cls}-is-loading`;\r\n\r\n\t\t\t\tif (!isAddClass) {\r\n\t\t\t\t\t$target.toggleClass(cls);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$target.addClass(cls);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (transitionProperty) {\r\n\t\t\t\t\t// Lister offcanvas exception\r\n\t\t\t\t\tif (key == \"lister-offcanvas\") {\r\n\t\t\t\t\t\t$(\".c-lister__offcanvas\").one(\r\n\t\t\t\t\t\t\tTRANSITION_EVENT,\r\n\t\t\t\t\t\t\tfunction(e) {\r\n\t\t\t\t\t\t\t\t// bug in chrome\r\n\t\t\t\t\t\t\t\t// if the child is on focus, the transition end is not on the parent (.c-lister__offcanvas) but it's on the\r\n\t\t\t\t\t\t\t\t// child instead. doesn't happen on FF and IE\r\n\t\t\t\t\t\t\t\t// temp solution: remove the class no matter what the originalEvent.property name is\r\n\t\t\t\t\t\t\t\t$target.removeClass(LOADING_CLASS);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\t$target.addClass(LOADING_CLASS);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$target\r\n\t\t\t\t\t\t\t.addClass(LOADING_CLASS)\r\n\t\t\t\t\t\t\t.one(TRANSITION_EVENT, function(e) {\r\n\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\ttransitionProperty ==\r\n\t\t\t\t\t\t\t\t\te.originalEvent.propertyName\r\n\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\tlet $this = $(this);\r\n\t\t\t\t\t\t\t\t\t$this.removeClass(LOADING_CLASS);\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}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (removeClass) {\r\n\t\t\t\t\t$target.removeClass(removeClass);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (selfClass) {\r\n\t\t\t\t$this.toggleClass(selfClass);\r\n\t\t\t}\r\n\r\n\t\t\t// Lister view toggle\r\n\t\t\tif (key == \"lister-view-toggle\") {\r\n\t\t\t\tCardAnimation.initAnimations($(\".c-lister .o-card--feature\"));\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t///////////////////\r\n\t// Slick Sliders //\r\n\t///////////////////\r\n\tlet $jsSlick = $(\"[data-slickjs]\");\r\n\tif (\r\n\t\t$jsSlick.length ||\r\n\t\t$(\"#map\").length ||\r\n\t\t$(\"[data-bluemountainmap]\").length\r\n\t) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t() => {\r\n\t\t\t\trequire(\"./partials/slick-carousel\");\r\n\t\t\t\twindow.jsSlickOptions = {\r\n\t\t\t\t\tcontent: {\r\n\t\t\t\t\t\tinfinite: true,\r\n\t\t\t\t\t\tslidesToScroll: 4,\r\n\t\t\t\t\t\tslidesToShow: 4,\r\n\t\t\t\t\t\tresponsive: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tbreakpoint: 991,\r\n\t\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\t\tslidesToScroll: 3,\r\n\t\t\t\t\t\t\t\t\tslidesToShow: 3\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\t{\r\n\t\t\t\t\t\t\t\tbreakpoint: 767,\r\n\t\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\t\t\t\t\t\tslidesToShow: 1\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\tsetCounter(slick, onInit) {\r\n\t\t\t\t\t\t\tlet firstActiveSlideIndex = -1;\r\n\t\t\t\t\t\t\tlet lastActiveSlideIndex = -1;\r\n\t\t\t\t\t\t\tconst $parentOfSlider = $(slick.$slider).parent();\r\n\r\n\t\t\t\t\t\t\tif (onInit) {\r\n\t\t\t\t\t\t\t\t// set the total slide count\r\n\t\t\t\t\t\t\t\t$parentOfSlider\r\n\t\t\t\t\t\t\t\t\t.find(\".js-contentslider-slidetotal\")\r\n\t\t\t\t\t\t\t\t\t.html(slick.slideCount);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tslick.$slides.each((i, slide) => {\r\n\t\t\t\t\t\t\t\tif ($(slide).hasClass(\"slick-active\")) {\r\n\t\t\t\t\t\t\t\t\tfirstActiveSlideIndex =\r\n\t\t\t\t\t\t\t\t\t\tfirstActiveSlideIndex < 0\r\n\t\t\t\t\t\t\t\t\t\t\t? i\r\n\t\t\t\t\t\t\t\t\t\t\t: firstActiveSlideIndex;\r\n\t\t\t\t\t\t\t\t\tlastActiveSlideIndex =\r\n\t\t\t\t\t\t\t\t\t\tlastActiveSlideIndex < i\r\n\t\t\t\t\t\t\t\t\t\t\t? i\r\n\t\t\t\t\t\t\t\t\t\t\t: lastActiveSlideIndex;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// set current slide\r\n\t\t\t\t\t\t\t$parentOfSlider\r\n\t\t\t\t\t\t\t\t.find(\".js-contentslider-slidefrom\")\r\n\t\t\t\t\t\t\t\t.html(firstActiveSlideIndex + 1);\r\n\t\t\t\t\t\t\t$parentOfSlider\r\n\t\t\t\t\t\t\t\t.find(\".js-contentslider-slideto\")\r\n\t\t\t\t\t\t\t\t.html(lastActiveSlideIndex + 1);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tonInit(slick, $el, opt) {\r\n\t\t\t\t\t\t\topt.setCounter(slick, true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tonAfterChange(slick, $el, currentSlide, opt) {\r\n\t\t\t\t\t\t\topt.setCounter(slick);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsimplemedia: {\r\n\t\t\t\t\t\tinfinite: true,\r\n\t\t\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\t\t\tmobileFirst: true,\r\n\t\t\t\t\t\tresponsive: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tbreakpoint: 992,\r\n\t\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\t\tcenterMode: true,\r\n\t\t\t\t\t\t\t\t\tcenterPadding: \"258px\"\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\t{\r\n\t\t\t\t\t\t\t\tbreakpoint: 1920,\r\n\t\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\t\tcenterMode: true,\r\n\t\t\t\t\t\t\t\t\tcenterPadding: \"600px\"\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\t{\r\n\t\t\t\t\t\t\t\tbreakpoint: 2560,\r\n\t\t\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\t\t\tcenterMode: true,\r\n\t\t\t\t\t\t\t\t\tcenterPadding: \"800px\"\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\tone: {\r\n\t\t\t\t\t\tinfinite: true,\r\n\t\t\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\t\t\tslidesToShow: 1,\r\n\t\t\t\t\t\tdots: true,\r\n\t\t\t\t\t\tarrows: true,\r\n\t\t\t\t\t\tadaptiveHeight: true\r\n\t\t\t\t\t},\r\n\t\t\t\t\tblockquote: {\r\n\t\t\t\t\t\tautoplay: true,\r\n\t\t\t\t\t\tinfinite: true,\r\n\t\t\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\t\t\tslidesToShow: 1,\r\n\t\t\t\t\t\tdots: true,\r\n\t\t\t\t\t\tarrows: false\r\n\t\t\t\t\t},\r\n\t\t\t\t\thome: {\r\n\t\t\t\t\t\tinfinite: true,\r\n\t\t\t\t\t\tslidesToScroll: 1,\r\n\t\t\t\t\t\tslidesToShow: 1,\r\n\t\t\t\t\t\tdots: true,\r\n\t\t\t\t\t\tarrows: false,\r\n\t\t\t\t\t\tautoplay: true,\r\n\t\t\t\t\t\tfade: true,\r\n\t\t\t\t\t\tspeed: 800,\r\n\t\t\t\t\t\tcssEase: \"linear\",\r\n\t\t\t\t\t\tautoplaySpeed: 5000,\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t$jsSlick.each(function() {\r\n\t\t\t\t\tlet $el = $(this);\r\n\t\t\t\t\tlet key = $el.data(\"slickjs\");\r\n\r\n\t\t\t\t\tif (key == \"simplemedia\") {\r\n\t\t\t\t\t\tif ($el.find(\".o-slider__item\").length < 3) {\r\n\t\t\t\t\t\t\tjsSlickOptions[key].responsive = [];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$el.on(\"init\", function(ev, slick) {\r\n\t\t\t\t\t\tconst $this = $(this);\r\n\t\t\t\t\t\tif (jsSlickOptions[key] && jsSlickOptions[key].onInit) {\r\n\t\t\t\t\t\t\tjsSlickOptions[key].onInit(\r\n\t\t\t\t\t\t\t\tslick,\r\n\t\t\t\t\t\t\t\t$this,\r\n\t\t\t\t\t\t\t\tjsSlickOptions[key]\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tslick.$dots &&\r\n\t\t\t\t\t\t\tslick.$dots.toggleClass(\r\n\t\t\t\t\t\t\t\t\"hidden\",\r\n\t\t\t\t\t\t\t\tslick.slideCount < 2\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\t.on(\"breakpoint\", function(ev, slick) {\r\n\t\t\t\t\t\t\tslick.$dots &&\r\n\t\t\t\t\t\t\t\tslick.$dots.toggleClass(\r\n\t\t\t\t\t\t\t\t\t\"hidden\",\r\n\t\t\t\t\t\t\t\t\tslick.slideCount < 2\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.on(\"afterChange\", function(ev, slick, currentSlide) {\r\n\t\t\t\t\t\t\tconst $this = $(this);\r\n\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\tjsSlickOptions[key] &&\r\n\t\t\t\t\t\t\t\tjsSlickOptions[key].onAfterChange\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\tjsSlickOptions[key].onAfterChange(\r\n\t\t\t\t\t\t\t\t\tslick,\r\n\t\t\t\t\t\t\t\t\t$this,\r\n\t\t\t\t\t\t\t\t\tcurrentSlide,\r\n\t\t\t\t\t\t\t\t\tjsSlickOptions[key]\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\t.slick(jsSlickOptions[key] || {});\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t\"sliders\"\r\n\t\t);\r\n\t}\r\n\r\n\t//////////////////\r\n\t// Royal Slider //\r\n\t//////////////////\r\n\tlet $jsRoyalSlider = $(\"[data-rs]\");\r\n\tif ($jsRoyalSlider.length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t() => {\r\n\t\t\t\trequire(\"./partials/royalslider/dev/jquery.royalslider\");\r\n\t\t\t\trequire(\"./partials/royalslider/dev/modules/jquery.rs.thumbnails\");\r\n\t\t\t\trequire(\"./partials/royalslider/dev/modules/jquery.rs.fullscreen\");\r\n\t\t\t\trequire(\"./partials/royalslider/dev/modules/jquery.rs.auto-height\");\r\n\t\t\t\trequire(\"./partials/royalslider/dev/modules/jquery.rs.active-class\");\r\n\r\n\t\t\t\tconst $jsContentWrapper = $(\".js-content-wrapper\");\r\n\t\t\t\tlet scrollTop = 0;\r\n\t\t\t\tlet scrollLeft = 0;\r\n\r\n\t\t\t\tconst options = {\r\n\t\t\t\t\tgallery: {\r\n\t\t\t\t\t\tfullscreen: {\r\n\t\t\t\t\t\t\tenabled: true,\r\n\t\t\t\t\t\t\tnativeFS: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tcontrolNavigation: \"thumbnails\",\r\n\t\t\t\t\t\tthumbs: {\r\n\t\t\t\t\t\t\torientation: \"vertical\",\r\n\t\t\t\t\t\t\tpaddingBottom: 3,\r\n\t\t\t\t\t\t\tappendSpan: true\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttransitionType: \"fade\",\r\n\t\t\t\t\t\tautoHeight: true,\r\n\t\t\t\t\t\tautoScaleSlider: true,\r\n\t\t\t\t\t\tautoScaleSliderWidth: 1300,\r\n\t\t\t\t\t\tautoScaleSliderHeight: 657,\r\n\t\t\t\t\t\timageAlignCenter: false,\r\n\t\t\t\t\t\timageScalePadding: 13,\r\n\t\t\t\t\t\tloop: true,\r\n\t\t\t\t\t\tarrowsNav: false,\r\n\t\t\t\t\t\tkeyboardNavEnabled: true,\r\n\t\t\t\t\t\taddActiveClass: true,\r\n\r\n\t\t\t\t\t\tsetGalleryCounter($el, slider) {\r\n\t\t\t\t\t\t\tlet $galleryCounter = $el.find(\r\n\t\t\t\t\t\t\t\t\".o-gallery__counter\"\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tif (!$galleryCounter.length) {\r\n\t\t\t\t\t\t\t\t$el.find(\".rsOverflow\").append(\r\n\t\t\t\t\t\t\t\t\t`
`\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t$galleryCounter = $el.find(\r\n\t\t\t\t\t\t\t\t\t\".o-gallery__counter\"\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t$galleryCounter.html(\r\n\t\t\t\t\t\t\t\t\t`${slider.currSlideId + 1} of ${\r\n\t\t\t\t\t\t\t\t\t\tslider.numSlides\r\n\t\t\t\t\t\t\t\t\t}`\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\r\n\t\t\t\t\t\trsAfterSlideChange($el, slider, opt) {\r\n\t\t\t\t\t\t\topt.setGalleryCounter($el, slider);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\trsAfterContentSet($el, slider, opt) {\r\n\t\t\t\t\t\t\t$el.height(\"auto\");\r\n\t\t\t\t\t\t\topt.setGalleryCounter($el, slider);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\trsOnUpdateNav($el, slider) {\r\n\t\t\t\t\t\t\t$el.height(\"auto\");\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\trsEnterFullscreen($el, slider) {\r\n\t\t\t\t\t\t\t$jsContentWrapper.addClass(\"is-rs-fullscreen\");\r\n\t\t\t\t\t\t\t$(\".o-gallery__text\", $el).each(function() {\r\n\t\t\t\t\t\t\t\tconst $this = $(this);\r\n\t\t\t\t\t\t\t\t$this.css(\r\n\t\t\t\t\t\t\t\t\t\"margin-left\",\r\n\t\t\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t\t\t\t\t.find(\".rsImg\")\r\n\t\t\t\t\t\t\t\t\t\t.css(\"margin-left\")\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\trsExitFullscreen($el, slider) {\r\n\t\t\t\t\t\t\t$jsContentWrapper.removeClass(\"is-rs-fullscreen\");\r\n\t\t\t\t\t\t\t$(\".o-gallery__text\", $el).css(\"margin-left\", \"\");\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$jsRoyalSlider.each(function() {\r\n\t\t\t\t\tconst $this = $(this);\r\n\t\t\t\t\tconst key = $this.attr(\"data-rs\");\r\n\t\t\t\t\tconst slider = $this\r\n\t\t\t\t\t\t.on(\"rsAfterContentSet\", function() {\r\n\t\t\t\t\t\t\tif (options[key].rsAfterContentSet) {\r\n\t\t\t\t\t\t\t\toptions[key].rsAfterContentSet(\r\n\t\t\t\t\t\t\t\t\t$this,\r\n\t\t\t\t\t\t\t\t\tslider,\r\n\t\t\t\t\t\t\t\t\toptions[key]\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\t.royalSlider(options[key])\r\n\t\t\t\t\t\t.data(\"royalSlider\");\r\n\r\n\t\t\t\t\tslider.ev\r\n\t\t\t\t\t\t.on(\"rsEnterFullscreen\", function() {\r\n\t\t\t\t\t\t\tif (options[key].rsEnterFullscreen) {\r\n\t\t\t\t\t\t\t\toptions[key].rsEnterFullscreen(\r\n\t\t\t\t\t\t\t\t\t$this,\r\n\t\t\t\t\t\t\t\t\tslider,\r\n\t\t\t\t\t\t\t\t\toptions[key]\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\t.on(\"rsExitFullscreen\", function() {\r\n\t\t\t\t\t\t\tif (options[key].rsExitFullscreen) {\r\n\t\t\t\t\t\t\t\toptions[key].rsExitFullscreen(\r\n\t\t\t\t\t\t\t\t\t$this,\r\n\t\t\t\t\t\t\t\t\tslider,\r\n\t\t\t\t\t\t\t\t\toptions[key]\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\t.on(\"rsAfterSlideChange\", function() {\r\n\t\t\t\t\t\t\tif (options[key].rsAfterSlideChange) {\r\n\t\t\t\t\t\t\t\toptions[key].rsAfterSlideChange(\r\n\t\t\t\t\t\t\t\t\t$this,\r\n\t\t\t\t\t\t\t\t\tslider,\r\n\t\t\t\t\t\t\t\t\toptions[key]\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\t.on(\"rsOnUpdateNav\", function() {\r\n\t\t\t\t\t\t\tif (options[key].rsOnUpdateNav) {\r\n\t\t\t\t\t\t\t\toptions[key].rsOnUpdateNav(\r\n\t\t\t\t\t\t\t\t\t$this,\r\n\t\t\t\t\t\t\t\t\tslider,\r\n\t\t\t\t\t\t\t\t\toptions[key]\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});\r\n\r\n\t\t\t\t// Maintain scroll position when exiting fullscreen\r\n\t\t\t\t$(document).on(\"click\", \".rsFullscreenBtn\", function() {\r\n\t\t\t\t\tlet $win = $(window);\r\n\t\t\t\t\tlet $isFullScreen = $(\".is-rs-fullscreen\");\r\n\t\t\t\t\tif ($isFullScreen.length) {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\twindow.scrollTo(scrollLeft, scrollTop);\r\n\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscrollLeft = $win.scrollLeft();\r\n\t\t\t\t\t\tscrollTop = $win.scrollTop();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t\"gallery\"\r\n\t\t);\r\n\t}\r\n\r\n\t////////////\r\n\t// Sticky //\r\n\t////////////\r\n\tconst $jsSticky = $(\"[data-sticky]\");\r\n\tif ($jsSticky.length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t() => {\r\n\t\t\t\tconst Sticky = require(\"./partials/Sticky\");\r\n\t\t\t\tnew Sticky($jsSticky);\r\n\t\t\t},\r\n\t\t\t\"sticky\"\r\n\t\t);\r\n\t}\r\n\r\n\t//////////////////////////\r\n\t// Bootstrap Datepicker //\r\n\t//////////////////////////\r\n\tconst $jsDatepicker = $(\"[data-jsdatepicker]\");\r\n\tif ($jsDatepicker.length) {\r\n\t\t$jsDatepicker.each(function() {\r\n\t\t\tconst $this = $(this);\r\n\r\n\t\t\t// Enforce to type=\"text\"\r\n\t\t\tif ($this.is(\"input\") && $this.attr(\"type\") != \"text\") {\r\n\t\t\t\t$this.attr(\"type\", \"text\");\r\n\t\t\t}\r\n\r\n\t\t\tconst options = {\r\n\t\t\t\trange: {\r\n\t\t\t\t\tcontainer: $this\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tlet attr = $this.attr(\"data-jsdatepicker\");\r\n\t\t\tlet opt = {\r\n\t\t\t\tformat: \"dd MM yyyy\",\r\n\t\t\t\ttodayHighlight: \"true\",\r\n\t\t\t\ttemplates: {\r\n\t\t\t\t\tleftArrow: ``,\r\n\t\t\t\t\trightArrow: ``,\r\n\t\t\t\t},\r\n\t\t\t\tcontainer: $this.closest(\".o-calendarinput\"),\r\n\t\t\t\tkey: \"\",\r\n\t\t\t\tmaxViewMode: 0, //days\r\n\t\t\t};\r\n\t\t\tif (attr) {\r\n\t\t\t\topt = $.extend(opt, JSON5.parse(attr));\r\n\r\n\t\t\t\tif (opt.key) {\r\n\t\t\t\t\topt = $.extend(opt, options[opt.key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\topt.datesDisabled &&\r\n\t\t\t\topt.datesDisabled.length &&\r\n\t\t\t\topt.container.length\r\n\t\t\t) {\r\n\t\t\t\topt.container.addClass(\"has-disabled\");\r\n\t\t\t}\r\n\r\n\t\t\t$this.datepicker(opt);\r\n\t\t});\r\n\t}\r\n\r\n\t////////////////////\r\n\t// Card Animation //\r\n\t////////////////////\r\n\tconst $jsCards = $(\".o-card--feature:not(.no-animation)\");\r\n\tif ($jsCards.length) {\r\n\t\t// if no-animation added, the only animation that works is the background-image on hover/focus\r\n\t\tCardAnimation.init($jsCards);\r\n\t}\r\n\r\n\t//////////////////////\r\n\t// ContentAnimation //\r\n\t//////////////////////\r\n\tconst $jsContentSection = $(\r\n\t\t\".c-content__section:not(.c-content__section--c-weddings)\"\r\n\t);\r\n\tif ($jsContentSection.length) {\r\n\t\tContentAnimation.init($jsContentSection);\r\n\t}\r\n\r\n\t///////////////////\r\n\t// Content Pager //\r\n\t///////////////////\r\n\tconst $contentPager = $(\".js-contentpager\");\r\n\tif ($contentPager.length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t() => {\r\n\t\t\t\tconst ContentPager = require(\"./partials/ContentPager\");\r\n\t\t\t\tnew ContentPager($contentPager);\r\n\t\t\t},\r\n\t\t\t\"contentpager\"\r\n\t\t);\r\n\t}\r\n\r\n\tconst $socialStream = $(\"[data-socialstream]\");\r\n\tif ($socialStream.length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\t() => {\r\n\t\t\t\tconst SocialStream = require(\"./partials/SocialStream\");\r\n\t\t\t\t$socialStream.each(function() {\r\n\t\t\t\t\tconst ss = new SocialStream($(this));\r\n\t\t\t\t\tss.promise.then(function() {\r\n\t\t\t\t\t\tnew LazyLoad({ elements_selector: \".js-lazy\" });\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t\"socialstream\"\r\n\t\t);\r\n\t}\r\n\r\n\t// Herbarium Progress\r\n\tconst $herbariumProgress = $(\"[data-herbariumprogress]\");\r\n\tif ($herbariumProgress.length) {\r\n\t\tconst config = {\r\n\t\t\tthreshold: 1\r\n\t\t};\r\n\t\tlet isLoaded;\r\n\r\n\t\tconst observer = new IntersectionObserver((entries, self) => {\r\n\t\t\tentries.forEach(entry => {\r\n\t\t\t\tif (!isLoaded && entry.isIntersecting) {\r\n\t\t\t\t\tself.unobserve($herbariumProgress[0]);\r\n\t\t\t\t\trequire.ensure(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\trequire(\"./modules/herbariumprogress\")(\r\n\t\t\t\t\t\t\t\t$herbariumProgress\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tisLoaded = true;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"herbariumprogress\"\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}, config);\r\n\r\n\t\tobserver.observe($herbariumProgress[0]);\r\n\t}\r\n\r\n\tconst $herbariumGallery = $(\"[data-herbariumgallery]\");\r\n\tif ($herbariumGallery.length) {\r\n\t\tlet isLoaded;\r\n\r\n\t\tconst observer = new IntersectionObserver((entries, self) => {\r\n\t\t\tentries.forEach(entry => {\r\n\t\t\t\tif (!isLoaded && entry.isIntersecting) {\r\n\t\t\t\t\tself.unobserve($herbariumGallery[0]);\r\n\t\t\t\t\trequire.ensure(\r\n\t\t\t\t\t\t[],\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\trequire(\"./modules/herbariumgallery\")(\r\n\t\t\t\t\t\t\t\t$herbariumGallery\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"herbariumgallery\"\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\tobserver.observe($herbariumGallery[0]);\r\n\t}\r\n\r\n\t// Timepicker not accessible\r\n\t// const $timepicker = $(\"[data-timepicker]\");\r\n\t// if ($timepicker.length) {\r\n\t// \trequire.ensure(\r\n\t// \t\t[],\r\n\t// \t\t() => {\r\n\t// \t\t\trequire(\"./custom_vendors/wickedpicker/src/wickedpicker\");\r\n\t// \t\t\trequire(\"./custom_vendors/wickedpicker/stylesheets/wickedpicker.css\");\r\n\t// \t\t\t$timepicker.each(function() {\r\n\t// \t\t\t\tconst $this = $(this);\r\n\t// \t\t\t\t$this\r\n\t// \t\t\t\t\t.on(\"blur\", function() {\r\n\t// \t\t\t\t\t\t$this.wickedpicker(\"hide\");\r\n\t// \t\t\t\t\t})\r\n\t// \t\t\t\t\t.wickedpicker(\r\n\t// \t\t\t\t\t\tJSON5.parse($this.attr(\"data-timepicker\"))\r\n\t// \t\t\t\t\t);\r\n\t// \t\t\t});\r\n\t// \t\t},\r\n\t// \t\t\"timepicker\"\r\n\t// \t);\r\n\t// }\r\n\r\n\t//////////\r\n\t// Misc //\r\n\t//////////\r\n\tHeaderUtil.initMegamenu();\r\n\tHeaderUtil.initClearSearch();\r\n\tHeaderUtil.initSearchButtonClick();\r\n\tHeaderUtil.initCloseOffCanvas();\r\n\tFooterUtil.initGotopColorAdjuster();\r\n\r\n\t///////////////////////////////////////\r\n\t// Give title to the tabs navigation //\r\n\t///////////////////////////////////////\r\n\tconst $tabs = $(\".o-tabs\");\r\n\t$tabs.each(function(i, val) {\r\n\t\tlet $this = $(this);\r\n\t\t$this\r\n\t\t\t.find(\".o-tabs__nav-link\")\r\n\t\t\t.each(function(i) {\r\n\t\t\t\tlet $el = $(this);\r\n\t\t\t\t$el.text(\r\n\t\t\t\t\t$this\r\n\t\t\t\t\t\t.find(\"data-tab-title\")\r\n\t\t\t\t\t\t.eq(i)\r\n\t\t\t\t\t\t.attr(\"data-tab-title\")\r\n\t\t\t\t);\r\n\t\t\t})\r\n\t\t\t.on(\"click\", function(e) {\r\n\t\t\t\tconst $this = $(this);\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tif ($this.hasClass(\"is-disabled\")) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t});\r\n\r\n\t//////////////\r\n\t// Main Map //\r\n\t//////////////\r\n\tif ($(\"#map\").length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\tfunction() {\r\n\t\t\t\tconst MapUtil = require(\"./partials/MapUtil\");\r\n\t\t\t\tMapUtil.init();\r\n\t\t\t},\r\n\t\t\t\"map\"\r\n\t\t);\r\n\t}\r\n\r\n\tconst $bluemountainMap = $(\"[data-bluemountainmap]\");\r\n\tif ($(\"[data-bluemountainmap]\").length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\tfunction() {\r\n\t\t\t\tconst bluemountainMap = require(\"./modules/bluemountainmap\");\r\n\t\t\t\tbluemountainMap(\r\n\t\t\t\t\t$bluemountainMap[0],\r\n\t\t\t\t\t$bluemountainMap,\r\n\t\t\t\t\tJSON5.parse($bluemountainMap.attr(\"data-bluemountainmap\"))\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\t\"bluemountainmap\"\r\n\t\t);\r\n\t}\r\n\r\n\t// Wingtags Map\r\n\tconst $wingtagsMap = $(\"#wingtags-map\");\r\n\tif ($wingtagsMap.length) {\r\n\t\trequire.ensure(\r\n\t\t\t[],\r\n\t\t\tfunction() {\r\n\t\t\t\tconst title = $wingtagsMap.data(\"title\");\r\n\t\t\t\tconst apiKey = $wingtagsMap.data(\"apiKey\");\r\n\t\t\t\tconst WingtagsMap = require(\"./components/WingtagsMap/WingtagsMap\");\r\n\t\t\t\tconst WingtagsMapStore = require(\"./store/WingtagsMapStore\");\r\n\t\t\t\tconst store = new WingtagsMapStore();\r\n\t\t\t\tReactDOM.render(\r\n\t\t\t\t\tLicensed under the Apache License, Version 2.0 (the āLicenseā)\r\n *
Copyright Ā© 2013 Adobe Systems Incorporated.\r\n *
Project page https://github.com/adobe-accessibility/Accessible-Mega-Menu\r\n * @version 0.1\r\n * @author Michael Jordan\r\n * @requires jquery\r\n */\r\n\r\n/*jslint browser: true, devel: true, plusplus: true, nomen: true */\r\n/*global jQuery */\r\n(function ($, window, document) {\r\n \"use strict\";\r\n var pluginName = \"accessibleMegaMenu\",\r\n defaults = {\r\n uuidPrefix: \"accessible-megamenu\", // unique ID's are required to indicate aria-owns, aria-controls and aria-labelledby\r\n menuClass: \"accessible-megamenu\", // default css class used to define the megamenu styling\r\n topNavItemClass: \"accessible-megamenu-top-nav-item\", // default css class for a top-level navigation item in the megamenu\r\n panelClass: \"accessible-megamenu-panel\", // default css class for a megamenu panel\r\n panelGroupClass: \"accessible-megamenu-panel-group\", // default css class for a group of items within a megamenu panel\r\n hoverClass: \"hover\", // default css class for the hover state\r\n focusClass: \"focus\", // default css class for the focus state\r\n openClass: \"open\", // default css class for the open state\r\n openDelay: 0 // default open delay when opening menu via mouseover\r\n },\r\n Keyboard = {\r\n BACKSPACE: 8,\r\n COMMA: 188,\r\n DELETE: 46,\r\n DOWN: 40,\r\n END: 35,\r\n ENTER: 13,\r\n ESCAPE: 27,\r\n HOME: 36,\r\n LEFT: 37,\r\n PAGE_DOWN: 34,\r\n PAGE_UP: 33,\r\n PERIOD: 190,\r\n RIGHT: 39,\r\n SPACE: 32,\r\n TAB: 9,\r\n UP: 38,\r\n keyMap: {\r\n 48: \"0\",\r\n 49: \"1\",\r\n 50: \"2\",\r\n 51: \"3\",\r\n 52: \"4\",\r\n 53: \"5\",\r\n 54: \"6\",\r\n 55: \"7\",\r\n 56: \"8\",\r\n 57: \"9\",\r\n 59: \";\",\r\n 65: \"a\",\r\n 66: \"b\",\r\n 67: \"c\",\r\n 68: \"d\",\r\n 69: \"e\",\r\n 70: \"f\",\r\n 71: \"g\",\r\n 72: \"h\",\r\n 73: \"i\",\r\n 74: \"j\",\r\n 75: \"k\",\r\n 76: \"l\",\r\n 77: \"m\",\r\n 78: \"n\",\r\n 79: \"o\",\r\n 80: \"p\",\r\n 81: \"q\",\r\n 82: \"r\",\r\n 83: \"s\",\r\n 84: \"t\",\r\n 85: \"u\",\r\n 86: \"v\",\r\n 87: \"w\",\r\n 88: \"x\",\r\n 89: \"y\",\r\n 90: \"z\",\r\n 96: \"0\",\r\n 97: \"1\",\r\n 98: \"2\",\r\n 99: \"3\",\r\n 100: \"4\",\r\n 101: \"5\",\r\n 102: \"6\",\r\n 103: \"7\",\r\n 104: \"8\",\r\n 105: \"9\",\r\n 190: \".\"\r\n }\r\n };\r\n /**\r\n * @desc Creates a new accessible mega menu instance.\r\n * @param {jquery} element\r\n * @param {object} [options] Mega Menu options\r\n * @param {string} [options.uuidPrefix=accessible-megamenu] - Prefix for generated unique id attributes, which are required to indicate aria-owns, aria-controls and aria-labelledby\r\n * @param {string} [options.menuClass=accessible-megamenu] - CSS class used to define the megamenu styling\r\n * @param {string} [options.topNavItemClass=accessible-megamenu-top-nav-item] - CSS class for a top-level navigation item in the megamenu\r\n * @param {string} [options.panelClass=accessible-megamenu-panel] - CSS class for a megamenu panel\r\n * @param {string} [options.panelGroupClass=accessible-megamenu-panel-group] - CSS class for a group of items within a megamenu panel\r\n * @param {string} [options.hoverClass=hover] - CSS class for the hover state\r\n * @param {string} [options.focusClass=focus] - CSS class for the focus state\r\n * @param {string} [options.openClass=open] - CSS class for the open state\r\n * @constructor\r\n */\r\n function AccessibleMegaMenu(element, options) {\r\n this.element = element;\r\n\r\n // merge optional settings and defaults into settings\r\n this.settings = $.extend({}, defaults, options);\r\n\r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n\r\n this.mouseTimeoutID = null;\r\n this.focusTimeoutID = null;\r\n this.mouseFocused = false;\r\n this.justFocused = false;\r\n\r\n this.init();\r\n }\r\n\r\n AccessibleMegaMenu.prototype = (function () {\r\n\r\n /* private attributes and methods ------------------------ */\r\n var uuid = 0,\r\n keydownTimeoutDuration = 1000,\r\n keydownSearchString = \"\",\r\n isTouch = typeof window.hasOwnProperty === \"function\" && !!window.hasOwnProperty(\"ontouchstart\"),\r\n _getPlugin,\r\n _addUniqueId,\r\n _togglePanel,\r\n _clickHandler,\r\n _clickOutsideHandler,\r\n _DOMAttrModifiedHandler,\r\n _focusInHandler,\r\n _focusOutHandler,\r\n _keyDownHandler,\r\n _mouseDownHandler,\r\n _mouseOverHandler,\r\n _mouseOutHandler,\r\n _toggleExpandedEventHandlers;\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_getPlugin\r\n * @desc Returns the parent accessibleMegaMenu instance for a given element\r\n * @param {jQuery} element\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _getPlugin = function (element) {\r\n return $(element).closest(':data(plugin_' + pluginName + ')').data(\"plugin_\" + pluginName);\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_addUniqueId\r\n * @desc Adds a unique id and element.\r\n * The id string starts with the\r\n * string defined in settings.uuidPrefix.\r\n * @param {jQuery} element\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _addUniqueId = function (element) {\r\n element = $(element);\r\n var settings = this.settings;\r\n if (!element.attr(\"id\")) {\r\n element.attr(\"id\", settings.uuidPrefix + \"-\" + new Date().getTime() + \"-\" + (++uuid));\r\n }\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_togglePanel\r\n * @desc Toggle the display of mega menu panels in response to an event.\r\n * The optional boolean value 'hide' forces all panels to hide.\r\n * @param {event} event\r\n * @param {Boolean} [hide] Hide all mega menu panels when true\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _togglePanel = function (event, hide) {\r\n var target = $(event.target),\r\n that = this,\r\n settings = this.settings,\r\n menu = this.menu,\r\n topli = target.closest('.' + settings.topNavItemClass),\r\n panel = target.hasClass(settings.panelClass) ? target : target.closest('.' + settings.panelClass),\r\n newfocus;\r\n\r\n _toggleExpandedEventHandlers.call(this, true);\r\n\r\n if (hide) {\r\n topli = menu.find('.' + settings.topNavItemClass + ' .' + settings.openClass + ':first').closest('.' + settings.topNavItemClass);\r\n if (!(topli.is(event.relatedTarget) || topli.has(event.relatedTarget).length > 0)) {\r\n if ((event.type === 'mouseout' || event.type === 'focusout') && topli.has(document.activeElement).length > 0) {\r\n return;\r\n }\r\n topli.find('[aria-expanded]')\r\n .attr('aria-expanded', 'false')\r\n .removeClass(settings.openClass)\r\n .filter('.' + settings.panelClass)\r\n .attr('aria-hidden', 'true');\r\n if ((event.type === 'keydown' && event.keyCode === Keyboard.ESCAPE) || event.type === 'DOMAttrModified') {\r\n newfocus = topli.find(':tabbable:first');\r\n setTimeout(function () {\r\n menu.find('[aria-expanded].' + that.settings.panelClass).off('DOMAttrModified.accessible-megamenu');\r\n newfocus.focus();\r\n that.justFocused = false;\r\n }, 99);\r\n }\r\n } else if (topli.length === 0) {\r\n menu.find('[aria-expanded=true]')\r\n .attr('aria-expanded', 'false')\r\n .removeClass(settings.openClass)\r\n .filter('.' + settings.panelClass)\r\n .attr('aria-hidden', 'true');\r\n }\r\n } else {\r\n clearTimeout(that.focusTimeoutID);\r\n topli.siblings()\r\n .find('[aria-expanded]')\r\n .attr('aria-expanded', 'false')\r\n .removeClass(settings.openClass)\r\n .filter('.' + settings.panelClass)\r\n .attr('aria-hidden', 'true');\r\n topli.find('[aria-expanded]')\r\n .attr('aria-expanded', 'true')\r\n .addClass(settings.openClass)\r\n .filter('.' + settings.panelClass)\r\n .attr('aria-hidden', 'false');\r\n if (event.type === 'mouseover' && target.is(':tabbable') && topli.length === 1 && panel.length === 0 && menu.has(document.activeElement).length > 0) {\r\n target.focus();\r\n that.justFocused = false;\r\n }\r\n\r\n _toggleExpandedEventHandlers.call(that);\r\n }\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_clickHandler\r\n * @desc Handle click event on mega menu item\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _clickHandler = function (event) {\r\n var target = $(event.target).closest(':tabbable'),\r\n topli = target.closest('.' + this.settings.topNavItemClass),\r\n panel = target.closest('.' + this.settings.panelClass);\r\n\r\n if (topli.length === 1\r\n && panel.length === 0\r\n && topli.find('.' + this.settings.panelClass).length === 1) {\r\n if (!target.hasClass(this.settings.openClass)) {\r\n if(target.closest('.has-sub').length){\r\n\t event.preventDefault();\r\n \t event.stopPropagation();\r\n \t\t_togglePanel.call(this, event);\r\n \t this.justFocused = false;\r\n }\r\n } else {\r\n if (this.justFocused) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.justFocused = false;\r\n } else if (isTouch) {\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n // _togglePanel.call(this, event, target.hasClass(this.settings.openClass));\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_clickOutsideHandler\r\n * @desc Handle click event outside of a the megamenu\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _clickOutsideHandler = function (event) {\r\n if ($(event.target).closest(this.menu).length === 0) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n _togglePanel.call(this, event, true);\r\n }\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_DOMAttrModifiedHandler\r\n * @desc Handle DOMAttrModified event on panel to respond to Windows 8 Narrator ExpandCollapse pattern\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _DOMAttrModifiedHandler = function (event) {\r\n if (event.originalEvent.attrName === 'aria-expanded'\r\n && event.originalEvent.newValue === 'false'\r\n && $(event.target).hasClass(this.settings.openClass)) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n _togglePanel.call(this, event, true);\r\n }\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_focusInHandler\r\n * @desc Handle focusin event on mega menu item.\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _focusInHandler = function (event) {\r\n clearTimeout(this.focusTimeoutID);\r\n var target = $(event.target),\r\n panel = target.closest('.' + this.settings.panelClass);\r\n target\r\n .addClass(this.settings.focusClass)\r\n .on('click.accessible-megamenu', $.proxy(_clickHandler, this));\r\n this.justFocused = !this.mouseFocused;\r\n this.mouseFocused = false;\r\n if (this.panels.not(panel).filter('.' + this.settings.openClass).length) {\r\n _togglePanel.call(this, event);\r\n }\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_focusOutHandler\r\n * @desc Handle focusout event on mega menu item.\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _focusOutHandler = function (event) {\r\n this.justFocused = false;\r\n var that = this,\r\n target = $(event.target),\r\n topli = target.closest('.' + this.settings.topNavItemClass),\r\n keepOpen = false;\r\n target\r\n .removeClass(this.settings.focusClass)\r\n .off('click.accessible-megamenu');\r\n\r\n if (window.cvox) {\r\n // If ChromeVox is running...\r\n that.focusTimeoutID = setTimeout(function () {\r\n window.cvox.Api.getCurrentNode(function (node) {\r\n if (topli.has(node).length) {\r\n // and the current node being voiced is in\r\n // the mega menu, clearTimeout,\r\n // so the panel stays open.\r\n clearTimeout(that.focusTimeoutID);\r\n } else {\r\n that.focusTimeoutID = setTimeout(function (scope, event, hide) {\r\n _togglePanel.call(scope, event, hide);\r\n }, 275, that, event, true);\r\n }\r\n });\r\n }, 25);\r\n } else {\r\n that.focusTimeoutID = setTimeout(function () {\r\n _togglePanel.call(that, event, true);\r\n }, 300);\r\n }\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_keyDownHandler\r\n * @desc Handle keydown event on mega menu.\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _keyDownHandler = function (event) {\r\n var that = (this.constructor === AccessibleMegaMenu) ? this : _getPlugin(this), // determine the AccessibleMegaMenu plugin instance\r\n settings = that.settings,\r\n target = $($(this).is('.' + settings.hoverClass + ':tabbable') ? this : event.target), // if the element is hovered the target is this, otherwise, its the focused element\r\n menu = that.menu,\r\n topnavitems = that.topnavitems,\r\n topli = target.closest('.' + settings.topNavItemClass),\r\n tabbables = menu.find(':tabbable'),\r\n panel = target.hasClass(settings.panelClass) ? target : target.closest('.' + settings.panelClass),\r\n panelGroups = panel.find('.' + settings.panelGroupClass),\r\n currentPanelGroup = target.closest('.' + settings.panelGroupClass),\r\n next,\r\n keycode = event.keyCode || event.which,\r\n start,\r\n i,\r\n o,\r\n label,\r\n found = false,\r\n newString = Keyboard.keyMap[event.keyCode] || '',\r\n regex,\r\n isTopNavItem = (topli.length === 1 && panel.length === 0);\r\n\r\n if (target.is(\"input:focus, select:focus, textarea:focus, button:focus\")) {\r\n // if the event target is a form element we should handle keydown normally\r\n return;\r\n }\r\n\r\n if (target.is('.' + settings.hoverClass + ':tabbable')) {\r\n $('html').off('keydown.accessible-megamenu');\r\n }\r\n\r\n switch (keycode) {\r\n case Keyboard.ESCAPE:\r\n _togglePanel.call(that, event, true);\r\n break;\r\n case Keyboard.DOWN:\r\n event.preventDefault();\r\n if (isTopNavItem) {\r\n _togglePanel.call(that, event);\r\n found = (topli.find('.' + settings.panelClass + ' :tabbable:first').focus().length === 1);\r\n } else {\r\n found = (tabbables.filter(':gt(' + tabbables.index(target) + '):first').focus().length === 1);\r\n }\r\n\r\n if (!found && window.opera && opera.toString() === \"[object Opera]\" && (event.ctrlKey || event.metaKey)) {\r\n tabbables = $(':tabbable');\r\n i = tabbables.index(target);\r\n found = ($(':tabbable:gt(' + $(':tabbable').index(target) + '):first').focus().length === 1);\r\n }\r\n break;\r\n case Keyboard.UP:\r\n event.preventDefault();\r\n if (isTopNavItem && target.hasClass(settings.openClass)) {\r\n _togglePanel.call(that, event, true);\r\n next = topnavitems.filter(':lt(' + topnavitems.index(topli) + '):last');\r\n if (next.children('.' + settings.panelClass).length) {\r\n found = (next.children()\r\n .attr('aria-expanded', 'true')\r\n .addClass(settings.openClass)\r\n .filter('.' + settings.panelClass)\r\n .attr('aria-hidden', 'false')\r\n .find(':tabbable:last')\r\n .focus() === 1);\r\n }\r\n } else if (!isTopNavItem) {\r\n found = (tabbables.filter(':lt(' + tabbables.index(target) + '):last').focus().length === 1);\r\n }\r\n\r\n if (!found && window.opera && opera.toString() === \"[object Opera]\" && (event.ctrlKey || event.metaKey)) {\r\n tabbables = $(':tabbable');\r\n i = tabbables.index(target);\r\n found = ($(':tabbable:lt(' + $(':tabbable').index(target) + '):first').focus().length === 1);\r\n }\r\n break;\r\n case Keyboard.RIGHT:\r\n event.preventDefault();\r\n if (isTopNavItem) {\r\n found = (topnavitems.filter(':gt(' + topnavitems.index(topli) + '):first').find(':tabbable:first').focus().length === 1);\r\n } else {\r\n if (panelGroups.length && currentPanelGroup.length) {\r\n // if the current panel contains panel groups, and we are able to focus the first tabbable element of the next panel group\r\n found = (panelGroups.filter(':gt(' + panelGroups.index(currentPanelGroup) + '):first').find(':tabbable:first').focus().length === 1);\r\n }\r\n\r\n if (!found) {\r\n found = (topli.find(':tabbable:first').focus().length === 1);\r\n }\r\n }\r\n break;\r\n case Keyboard.LEFT:\r\n event.preventDefault();\r\n if (isTopNavItem) {\r\n found = (topnavitems.filter(':lt(' + topnavitems.index(topli) + '):last').find(':tabbable:first').focus().length === 1);\r\n } else {\r\n if (panelGroups.length && currentPanelGroup.length) {\r\n // if the current panel contains panel groups, and we are able to focus the first tabbable element of the previous panel group\r\n found = (panelGroups.filter(':lt(' + panelGroups.index(currentPanelGroup) + '):last').find(':tabbable:first').focus().length === 1);\r\n }\r\n\r\n if (!found) {\r\n found = (topli.find(':tabbable:first').focus().length === 1);\r\n }\r\n }\r\n break;\r\n case Keyboard.TAB:\r\n i = tabbables.index(target);\r\n if (event.shiftKey && isTopNavItem && target.hasClass(settings.openClass)) {\r\n _togglePanel.call(that, event, true);\r\n next = topnavitems.filter(':lt(' + topnavitems.index(topli) + '):last');\r\n if (next.children('.' + settings.panelClass).length) {\r\n found = next.children()\r\n .attr('aria-expanded', 'true')\r\n .addClass(settings.openClass)\r\n .filter('.' + settings.panelClass)\r\n .attr('aria-hidden', 'false')\r\n .find(':tabbable:last')\r\n .focus();\r\n }\r\n } else if (event.shiftKey && i > 0) {\r\n found = (tabbables.filter(':lt(' + i + '):last').focus().length === 1);\r\n } else if (!event.shiftKey && i < tabbables.length - 1) {\r\n found = (tabbables.filter(':gt(' + i + '):first').focus().length === 1);\r\n } else if (window.opera && opera.toString() === \"[object Opera]\") {\r\n tabbables = $(':tabbable');\r\n i = tabbables.index(target);\r\n if (event.shiftKey) {\r\n found = ($(':tabbable:lt(' + $(':tabbable').index(target) + '):last').focus().length === 1);\r\n } else {\r\n found = ($(':tabbable:gt(' + $(':tabbable').index(target) + '):first').focus().length === 1);\r\n }\r\n }\r\n\r\n if (found) {\r\n event.preventDefault();\r\n }\r\n break;\r\n case Keyboard.SPACE:\r\n if (isTopNavItem) {\r\n event.preventDefault();\r\n _clickHandler.call(that, event);\r\n } else {\r\n return true;\r\n }\r\n break;\r\n case Keyboard.ENTER:\r\n return true;\r\n break;\r\n default:\r\n // alphanumeric filter\r\n clearTimeout(this.keydownTimeoutID);\r\n\r\n keydownSearchString += newString !== keydownSearchString ? newString : '';\r\n\r\n if (keydownSearchString.length === 0) {\r\n return;\r\n }\r\n\r\n this.keydownTimeoutID = setTimeout(function () {\r\n keydownSearchString = '';\r\n }, keydownTimeoutDuration);\r\n\r\n if (isTopNavItem && !target.hasClass(settings.openClass)) {\r\n tabbables = tabbables.filter(':not(.' + settings.panelClass + ' :tabbable)');\r\n } else {\r\n tabbables = topli.find(':tabbable');\r\n }\r\n\r\n if (event.shiftKey) {\r\n tabbables = $(tabbables.get()\r\n .reverse());\r\n }\r\n\r\n for (i = 0; i < tabbables.length; i++) {\r\n o = tabbables.eq(i);\r\n if (o.is(target)) {\r\n start = (keydownSearchString.length === 1) ? i + 1 : i;\r\n break;\r\n }\r\n }\r\n\r\n regex = new RegExp('^' + keydownSearchString.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&'), 'i');\r\n\r\n for (i = start; i < tabbables.length; i++) {\r\n o = tabbables.eq(i);\r\n label = $.trim(o.text());\r\n if (regex.test(label)) {\r\n found = true;\r\n o.focus();\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n for (i = 0; i < start; i++) {\r\n o = tabbables.eq(i);\r\n label = $.trim(o.text());\r\n if (regex.test(label)) {\r\n o.focus();\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n that.justFocused = false;\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_mouseDownHandler\r\n * @desc Handle mousedown event on mega menu.\r\n * @param {event} Event object\r\n * @memberof accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _mouseDownHandler = function (event) {\r\n if ($(event.target).is(this.settings.panelClass) || $(event.target).closest(\":focusable\").length) {\r\n this.mouseFocused = true;\r\n }\r\n clearTimeout(this.mouseTimeoutID);\r\n this.mouseTimeoutID = setTimeout(function () {\r\n clearTimeout(this.focusTimeoutID);\r\n }, 1);\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_mouseOverHandler\r\n * @desc Handle mouseover event on mega menu.\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _mouseOverHandler = function (event) {\r\n clearTimeout(this.mouseTimeoutID);\r\n var that = this;\r\n this.mouseTimeoutID = setTimeout(function () {\r\n $(event.target).addClass(that.settings.hoverClass);\r\n _togglePanel.call(that, event);\r\n if ($(event.target).is(':tabbable')) {\r\n $('html').on('keydown.accessible-megamenu', $.proxy(_keyDownHandler, event.target));\r\n }\r\n }, this.settings.openDelay);\r\n };\r\n\r\n /**\r\n * @name jQuery.fn.accessibleMegaMenu~_mouseOutHandler\r\n * @desc Handle mouseout event on mega menu.\r\n * @param {event} Event object\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @inner\r\n * @private\r\n */\r\n _mouseOutHandler = function (event) {\r\n clearTimeout(this.mouseTimeoutID);\r\n var that = this;\r\n $(event.target)\r\n .removeClass(that.settings.hoverClass);\r\n\r\n that.mouseTimeoutID = setTimeout(function () {\r\n _togglePanel.call(that, event, true);\r\n }, 250);\r\n if ($(event.target).is(':tabbable')) {\r\n $('html').off('keydown.accessible-megamenu');\r\n }\r\n };\r\n\r\n _toggleExpandedEventHandlers = function (hide) {\r\n var menu = this.menu;\r\n if (hide) {\r\n $('html').off('mouseup.outside-accessible-megamenu, touchend.outside-accessible-megamenu, mspointerup.outside-accessible-megamenu, pointerup.outside-accessible-megamenu');\r\n\r\n menu.find('[aria-expanded].' + this.settings.panelClass).off('DOMAttrModified.accessible-megamenu');\r\n } else {\r\n $('html').on('mouseup.outside-accessible-megamenu, touchend.outside-accessible-megamenu, mspointerup.outside-accessible-megamenu, pointerup.outside-accessible-megamenu', $.proxy(_clickOutsideHandler, this));\r\n\r\n /* Narrator in Windows 8 automatically toggles the aria-expanded property on double tap or click.\r\n To respond to the change to collapse the panel, we must add a listener for a DOMAttrModified event. */\r\n menu.find('[aria-expanded=true].' + this.settings.panelClass).on('DOMAttrModified.accessible-megamenu', $.proxy(_DOMAttrModifiedHandler, this));\r\n }\r\n };\r\n\r\n /* public attributes and methods ------------------------- */\r\n return {\r\n constructor: AccessibleMegaMenu,\r\n\r\n /**\r\n * @lends jQuery.fn.accessibleMegaMenu\r\n * @desc Initializes an instance of the accessibleMegaMenu plugins\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @instance\r\n */\r\n init: function () {\r\n var settings = this.settings,\r\n nav = $(this.element),\r\n menu = nav.children().first(),\r\n topnavitems = menu.children();\r\n this.start(settings, nav, menu, topnavitems);\r\n },\r\n\r\n start: function(settings, nav, menu, topnavitems) {\r\n var that = this;\r\n this.settings = settings;\r\n this.menu = menu;\r\n this.topnavitems = topnavitems;\r\n\r\n nav.attr(\"role\", \"navigation\");\r\n menu.addClass(settings.menuClass);\r\n topnavitems.each(function (i, topnavitem) {\r\n var topnavitemlink, topnavitempanel;\r\n topnavitem = $(topnavitem);\r\n topnavitem.addClass(settings.topNavItemClass);\r\n topnavitemlink = topnavitem.find(\":tabbable:first\");\r\n topnavitempanel = topnavitem.children(\":not(:tabbable):last\");\r\n _addUniqueId.call(that, topnavitemlink);\r\n if (topnavitempanel.length) {\r\n _addUniqueId.call(that, topnavitempanel);\r\n topnavitemlink.attr({\r\n // \"aria-haspopup\": true,\r\n \"aria-controls\": topnavitempanel.attr(\"id\"),\r\n \"aria-expanded\": false\r\n });\r\n\r\n topnavitempanel.attr({\r\n \"role\": \"region\",\r\n \"aria-expanded\": false,\r\n \"aria-hidden\": true\r\n })\r\n .addClass(settings.panelClass)\r\n .not(\"[aria-labelledby]\")\r\n .attr(\"aria-labelledby\", topnavitemlink.attr(\"id\"));\r\n }\r\n });\r\n\r\n this.panels = menu.find(\".\" + settings.panelClass);\r\n\r\n menu.on(\"focusin.accessible-megamenu\", \":focusable, .\" + settings.panelClass, $.proxy(_focusInHandler, this))\r\n .on(\"focusout.accessible-megamenu\", \":focusable, .\" + settings.panelClass, $.proxy(_focusOutHandler, this))\r\n .on(\"keydown.accessible-megamenu\", $.proxy(_keyDownHandler, this))\r\n .on(\"mouseover.accessible-megamenu\", $.proxy(_mouseOverHandler, this))\r\n .on(\"mouseout.accessible-megamenu\", $.proxy(_mouseOutHandler, this))\r\n .on(\"mousedown.accessible-megamenu\", $.proxy(_mouseDownHandler, this));\r\n\r\n if (isTouch) {\r\n menu.on(\"touchstart.accessible-megamenu\", $.proxy(_clickHandler, this));\r\n }\r\n\r\n menu.find(\"hr\").attr(\"role\", \"separator\");\r\n\r\n if ($(document.activeElement).closest(menu).length) {\r\n $(document.activeElement).trigger(\"focusin.accessible-megamenu\");\r\n }\r\n },\r\n\r\n /**\r\n * @desc Get default values\r\n * @example $(selector).accessibleMegaMenu(\"getDefaults\");\r\n * @return {object}\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @instance\r\n */\r\n getDefaults: function () {\r\n return this._defaults;\r\n },\r\n\r\n /**\r\n * @desc Get any option set to plugin using its name (as string)\r\n * @example $(selector).accessibleMegaMenu(\"getOption\", some_option);\r\n * @param {string} opt\r\n * @return {string}\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @instance\r\n */\r\n getOption: function (opt) {\r\n return this.settings[opt];\r\n },\r\n\r\n /**\r\n * @desc Get all options\r\n * @example $(selector).accessibleMegaMenu(\"getAllOptions\");\r\n * @return {object}\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @instance\r\n */\r\n getAllOptions: function () {\r\n return this.settings;\r\n },\r\n\r\n /**\r\n * @desc Set option\r\n * @example $(selector).accessibleMegaMenu(\"setOption\", \"option_name\", \"option_value\", reinitialize);\r\n * @param {string} opt - Option name\r\n * @param {string} val - Option value\r\n * @param {boolean} [reinitialize] - boolean to re-initialize the menu.\r\n * @memberof jQuery.fn.accessibleMegaMenu\r\n * @instance\r\n */\r\n setOption: function (opt, value, reinitialize) {\r\n this.settings[opt] = value;\r\n if (reinitialize) {\r\n this.init();\r\n }\r\n }\r\n };\r\n }());\r\n\r\n /* lightweight plugin wrapper around the constructor,\r\n to prevent against multiple instantiations */\r\n\r\n /**\r\n * @class accessibleMegaMenu\r\n * @memberOf jQuery.fn\r\n * @classdesc Implements an accessible mega menu as a jQuery plugin.\r\n *
The mega-menu It is modeled after the mega menu on {@link http://adobe.com|adobe.com} but has been simplified for use by others. A brief description of the interaction design choices can be found in a blog post at {@link http://blogs.adobe.com/accessibility/2013/05/adobe-com.html|Mega menu accessibility on adobe.com}.
\r\n *The accessible mega menu supports keyboard interaction modeled after the behavior described in the {@link http://www.w3.org/TR/wai-aria-practices/#menu|WAI-ARIA Menu or Menu bar (widget) design pattern}, however we also try to respect users' general expectations for the behavior of links in a global navigation. To this end, the accessible mega menu implementation permits tab focus on each of the six top-level menu items. When one of the menu items has focus, pressing the Enter key, Spacebar or Down arrow will open the submenu panel, and pressing the Left or Right arrow key will shift focus to the adjacent menu item. Links within the submenu panels are included in the tab order when the panel is open. They can also be navigated with the arrow keys or by typing the first character in the link name, which speeds up keyboard navigation considerably. Pressing the Escape key closes the submenu and restores focus to the parent menu item.
\r\n *The accessible mega menu models its use of WAI-ARIA Roles, States, and Properties after those described in the {@link http://www.w3.org/TR/wai-aria-practices/#menu|WAI-ARIA Menu or Menu bar (widget) design pattern} with some notable exceptions, so that it behaves better with screen reader user expectations for global navigation. We don't use role=\"menu\"
for the menu container and role=\"menuitem\"
for each of the links therein, because if we do, assistive technology will no longer interpret the links as links, but instead, as menu items, and the links in our global navigation will no longer show up when a screen reader user executes a shortcut command to bring up a list of links in the page.