1jQuery(document).ready(oxygen_init_offcanvas); 2function oxygen_init_offcanvas($) { 3 4 let touchEvent = 'click'; 5 let previousFocus = false; 6 7 'use strict'; 8 9 let extrasOffcanvas = function(container) { 10 11 $(container).find('.oxy-off-canvas .offcanvas-inner').each(function() { 12 13 var offCanvas = $(this), 14 triggerSelector = offCanvas.data('trigger-selector'), 15 offCanvasOutside = offCanvas.data('click-outside'), 16 offCanvasEsc = offCanvas.data('esc'), 17 offCanvasStart = offCanvas.data('start'), 18 offCanvasBackdrop = offCanvas.data('backdrop'), 19 offCanvasFocusSelector = offCanvas.data('focus-selector'), 20 backdrop = offCanvas.prev('.oxy-offcanvas_backdrop'), 21 menuHashLink = offCanvas.find('a[href*=\\#]').not(".menu-item-has-children > a"), 22 reset = offCanvas.data('reset'), 23 mediaPlayer = offCanvas.find('.oxy-pro-media-player vime-player'), 24 otherOffcanvas = offCanvas.data('second-offcanvas'), 25 maybeHashClose = offCanvas.data('hashclose'), 26 offcanvasPush = offCanvas.data('content-push'), 27 offcanvasPushContent = offCanvas.data('content-selector'), 28 offcanvasPushDuration = offCanvas.data('content-duration'), 29 offcanvasID = offCanvas.parent('.oxy-off-canvas').attr('ID'), 30 burgerSync = offCanvas.data('burger-sync'), 31 maybeOverflow = offCanvas.data('overflow'), 32 triggerScope = offCanvas.closest('.oxy-dynamic-list > .ct-div-block').length ? offCanvas.closest('.oxy-dynamic-list > .ct-div-block') : $(container); 33 34 35 if (false !== offCanvas.data('stagger-menu')) { 36 offCanvas.find('.oxy-slide-menu_list > .menu-item').addClass('aos-animate'); 37 offCanvas.find('.oxy-slide-menu_list > .menu-item').attr( { "data-aos": offCanvas.data('stagger-menu') } ); 38 } 39 40 if (! $(this).hasClass('oxy-off-canvas-toggled') ) { 41 $(this).find(".aos-animate:not(.oxy-off-canvas-toggled .aos-animate)").addClass("aos-animate-disabled").removeClass("aos-animate"); 42 } 43 44 ariaExpandToggle('false'); 45 46 if ( true === offCanvas.data('auto-aria') ) { 47 48 triggerScope.find(triggerSelector).each(function(i,trigger) { 49 50 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 51 $(trigger).children('.hamburger').attr('aria-controls', offCanvas.attr('id')); 52 } else { 53 $(trigger).attr('aria-controls', offCanvas.attr('id')); 54 } 55 }); 56 } 57 58 if ( true === offCanvas.data('focus-trap') ) { 59 60 const keyboardfocusableElements = offCanvas.find( 61 'a[href], button, input, textarea, select, details, [tabindex]' 62 ); 63 64 if (keyboardfocusableElements.length) { 65 66 keyboardfocusableElements[keyboardfocusableElements.length - 1].addEventListener('keydown', (e) => { 67 68 if (!e.shiftKey && e.key === 'Tab') { 69 e.preventDefault() 70 keyboardfocusableElements[0].focus() 71 } 72 73 }) 74 75 keyboardfocusableElements[0].addEventListener('keydown', (e) => { 76 77 if (e.shiftKey && e.key === 'Tab') { 78 e.preventDefault() 79 keyboardfocusableElements[keyboardfocusableElements.length - 1].focus() 80 } 81 82 }) 83 84 } 85 } 86 87 function doOffCanvas(triggerSelector) { 88 89 if (triggerScope.find(triggerSelector).hasClass('oxy-close-modal')) { 90 oxyCloseModal(); 91 } 92 93 if (!offCanvas.parent().hasClass('oxy-off-canvas-toggled')) { 94 openOffCanvas(); 95 } else { 96 closeOffCanvas(); 97 } 98 } 99 100 if ( triggerScope.find(triggerSelector).hasClass('oxy-burger-trigger') && triggerScope.find(triggerSelector).children('.hamburger').length ) { 101 102 let triggerSelectorTouch = triggerScope.find(triggerSelector).children('.hamburger').data('touch'); 103 let touchEvent = 'ontouchstart' in window ? triggerSelectorTouch : 'click'; 104 105 triggerScope.find(triggerSelector).on(touchEvent, function(e) { 106 e.stopPropagation(); 107 e.preventDefault(); 108 109 if (true === burgerSync) { 110 triggerScope.find(triggerSelector).not('#' + $(this).attr('ID')).children('.hamburger').toggleClass('is-active'); 111 } 112 113 if ( !e.target.closest('.oxy-off-canvas') ) { 114 previousFocus = e.target.closest(triggerSelector); 115 } 116 117 doOffCanvas(triggerSelector); 118 119 }); 120 } else { 121 122 let triggerSelectorTouch = touchEvent; 123 triggerScope.find(triggerSelector).on(triggerSelectorTouch, function(e) { 124 e.stopPropagation(); 125 e.preventDefault(); 126 doOffCanvas(triggerSelector); 127 }); 128 } 129 130 131 // Backdrop Clicked 132 offCanvas.siblings('.oxy-offcanvas_backdrop').on(touchEvent, function(e) { 133 e.stopPropagation(); 134 if (offCanvasOutside === true) { 135 closeBurger(); 136 closeLottie(); 137 closeOffCanvas(); 138 } 139 140 }); 141 142 // Pressing ESC from inside the offcanvas will close it 143 offCanvas.keyup(function(e) { 144 if (offCanvasEsc === true) { 145 if (e.keyCode === 27) { 146 closeBurger(); 147 closeLottie(); 148 closeOffCanvas(); 149 } 150 } 151 }); 152 153 if (maybeHashClose === true) { 154 155 $(document).on("click", '#' + offcanvasID + ' a[href*=\\#]', function (e) { 156 157 e.stopPropagation(); 158 159 if ( ( !$(this).not(".menu-item-has-children > a") ) || $(this).is('[href="#"]' ) ) { 160 return; 161 } 162 163 if ( $(this).is(".oxy-table-of-contents_list-item > a") ) { 164 return; 165 } 166 167 if ( $(this).is(".mm-btn") || $(this).is(".mm-navbar__title") ) { 168 return; 169 } 170 171 172 173 if (this.pathname === window.location.pathname) { 174 closeBurger(); 175 closeLottie(); 176 closeOffCanvas(); 177 } 178 }); 179 180 } 181 182 if (offcanvasPush) { 183 $(container).find(offcanvasPushContent).attr('data-offcanvas-push', '#' + offcanvasID); 184 $(container).find(offcanvasPushContent).css({ 185 "--offcanvas-push" : offcanvasPush + "px", 186 "--offcanvas-push-duration" : offcanvasPushDuration + 's', 187 }); 188 189 } 190 191 function ariaExpandToggle($state) { 192 if ( true === offCanvas.data('auto-aria') ) { 193 triggerScope.find(triggerSelector).each(function(i,trigger) { 194 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 195 $(trigger).children('.hamburger').attr('aria-expanded', $state); 196 } else { 197 $(trigger).attr('aria-expanded', $state); 198 $(trigger).attr('role','button'); 199 } 200 }); 201 } 202 } 203 204 function inertToggle($state) { 205 if ( false !== offCanvas.data('inert') ) { 206 if ('true' === $state) { 207 offCanvas.attr('inert',''); 208 } else { 209 offCanvas.removeAttr('inert'); 210 } 211 } 212 } 213 214 function openOffCanvas() { 215 offCanvas.parent().addClass('oxy-off-canvas-toggled'); 216 $(container).find(offcanvasPushContent).addClass('oxy-off-canvas-toggled'); 217 $('body,html').addClass('off-canvas-toggled'); 218 $('body,html').addClass('toggled' + offcanvasID); 219 220 if (true === offCanvasStart) { 221 doClose(); 222 } else { 223 doOpen() 224 } 225 226 } 227 228 function closeOffCanvas() { 229 $('body,html').removeClass('off-canvas-toggled'); 230 $('body,html').removeClass('toggled' + offcanvasID); 231 offCanvas.parent().removeClass('oxy-off-canvas-toggled'); 232 $(container).find(offcanvasPushContent).removeClass('oxy-off-canvas-toggled'); 233 234 if (true === offCanvasStart) { 235 doOpen() 236 } else { 237 doClose(); 238 } 239 240 } 241 242 function doOpen() { 243 offCanvas.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); 244 offCanvas.parent('.oxy-off-canvas').trigger('extras_offcanvas:open'); 245 246 inertToggle('false') 247 setTimeout(function() { 248 offCanvas.attr('aria-hidden','false'); 249 }, 0); 250 251 ariaExpandToggle('true'); 252 253 254 255 if (offCanvasFocusSelector) { 256 setTimeout(function() { 257 offCanvas.parent().find(offCanvasFocusSelector).eq(0).focus(); 258 }, 0); 259 } 260 } 261 262 function doClose() { 263 inertToggle('true'); 264 offCanvas.attr('aria-hidden','true'); 265 266 setTimeout(function(){ 267 offCanvas.find(".aos-animate").removeClass("aos-animate").addClass("aos-animate-disabled"); 268 }, reset); // wait before removing the animate class 269 270 $(offCanvas).parent('.oxy-off-canvas').trigger('extras_offcanvas:close'); 271 if (otherOffcanvas) { 272 $(container).find(otherOffcanvas).children('.offcanvas-inner').attr('aria-hidden','true'); 273 $(container).find(otherOffcanvas).children('.offcanvas-inner').removeAttr('inert'); 274 $(container).find(otherOffcanvas).removeClass('oxy-off-canvas-toggled'); 275 } 276 277 ariaExpandToggle('false'); 278 279 mediaPlayer.each(function() { 280 $(this)[0].pause(); // turn off any pro media players 281 }); 282 283 setTimeout(function() { 284 285 if (!!previousFocus) { 286 287 if ( $(previousFocus).find('.hamburger') ) { 288 $(previousFocus).find('.hamburger').focus(); 289 } else { 290 $(previousFocus).focus(); 291 } 292 } 293 294 }, 0); 295 } 296 297 function closeBurger() { 298 299 if ( ( triggerScope.find(triggerSelector).children('.hamburger').length > 0) && ($(this).children('.hamburger').data('animation') !== 'disable')) { 300 triggerScope.find(triggerSelector).children('.hamburger').removeClass('is-active'); 301 } 302 } 303 304 function closeLottie() { 305 306 if ( ( triggerScope.find(triggerSelector).children('lottie-player').length > 0) ) { 307 triggerScope.find(triggerSelector).children('lottie-player').trigger('click'); 308 } 309 } 310 311 /* For programmatically opening */ 312 function extrasOpenOffcanvas($extras_offcanvas) { 313 314 var thisOffcanvas = $($extras_offcanvas); 315 var thisoffcanvasPushContent = thisOffcanvas.children('.offcanvas-inner').data('content-selector'); 316 var thisoffCanvasFocusSelector = thisOffcanvas.children('.offcanvas-inner').data('focus-selector'); 317 318 thisOffcanvas.addClass('oxy-off-canvas-toggled'); 319 $(container).find(offcanvasPushContent).addClass('oxy-off-canvas-toggled'); 320 offCanvas.attr('aria-hidden','false'); 321 $('body,html').addClass('off-canvas-toggled'); 322 thisOffcanvas.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); 323 thisOffcanvas.trigger('extras_offcanvas:open'); 324 325 if (thisoffCanvasFocusSelector) { 326 thisOffcanvas.find(thisoffCanvasFocusSelector).eq(0).focus(); 327 } 328 329 } 330 331 if (true !== offCanvasStart) { 332 offCanvas.attr('aria-hidden','true'); 333 inertToggle('true'); 334 } else { 335 offCanvas.attr('aria-hidden','false'); 336 } 337 338 // Expose function 339 window.extrasOpenOffcanvas = extrasOpenOffcanvas; 340 341 var stagger = offCanvas.data('stagger'); 342 343 // Make sure AOS animations are reset for elements inside after everything has loaded 344 setTimeout(function(){ 345 if (! offCanvas.hasClass('oxy-off-canvas-toggled') ) { 346 offCanvas.find(".aos-animate:not(.oxy-off-canvas-toggled .aos-animate)").addClass("aos-animate-disabled").removeClass("aos-animate"); 347 } 348 }, 40); // wait 349 350 if (stagger != null) { 351
352 var delay = offCanvas.data('first-delay'); 353 offCanvas.find('[data-aos]').not('.not-staggered').each(function() { 354 delay = delay + stagger; 355 356 $(this).attr('data-aos-delay', delay); 357 }); 358 359 } 360 361 }); 362 363 } 364 365 extrasOffcanvas('body'); 366 367 // Expose function 368 window.doExtrasOffcanvas = extrasOffcanvas; 369 370} 371
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.