vendor: 7,201 bytes, line 1
1!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="dist/",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),f=o(c),s=n(8),d=o(s),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,startEvent:"DOMContentLoaded",throttleDelay:99,debounceDelay:50,disableMutationObserver:!1},j=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},_=function(){w.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay")})},S=function(e){return e===!0||"mobile"===e&&p.default.mobile()||"phone"===e&&p.default.phone()||"tablet"===e&&p.default.tablet()||"function"==typeof e&&e()===!0},z=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?_():(document.querySelector("body").setAttribute("data-aos-easing",x.easing),document.querySelector("body").setAttribute("data-aos-duration",x.duration),document.querySelector("body").setAttribute("data-aos-delay",x.delay),"DOMContentLoaded"===x.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1?j(!0):"load"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener("resize",(0,f.default)(j,x.debounceDelay,!0)),window.addEventListener("orientationchange",(0,f.default)(j,x.debounceDelay,!0)),window.addEventListener("scroll",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||(0,d.default)("[data-aos]",O),w)};e.exports={init:z,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){"use strict";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(s,t),_?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function s(){var e=O();return c(e)?d(e):void(h=setTimeout(s,a(e)))}function d(e){return h=void 0,z&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(s,t),o(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,k=0,_=!1,S=!1,z=!0;if("function"!=typeof e)throw new TypeError(f);return t=u(t)||0,i(n)&&(_=!!n.leading,S="maxWait"in n,y=S?x(u(n.maxWait)||0,t):y,z="trailing"in n?!!n.trailing:z),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(f);return i(o)&&(r="leading"in o?!!o.leading:r,a="trailing"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("object"==t||"function"==t)}function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(e))}function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||r(e)&&k.call(e)==d}function u(e){if("number"==typeof e)return e;if(a(e))return s;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(l,"");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?s:+e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f="Expected a function",s=NaN,d="[object Symbol]",l=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,g="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,h=y||g||Function("return this")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){"use strict";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(s,t),_?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function f(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function s(){var e=j();return f(e)?d(e):void(h=setTimeout(s,u(e)))}function d(e){return h=void 0,z&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=f(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(s,t),i(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,O=0,_=!1,S=!1,z=!0;if("function"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(_=!!n.leading,S="maxWait"in n,y=S?k(a(n.maxWait)||0,t):y,z="trailing"in n?!!n.trailing:z),m.cancel=l,m.flush=p,m}function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(e))}function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||i(e)&&w.call(e)==s}function a(e){if("number"==typeof e)return e;if(r(e))return f;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?f:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c="Expected a function",f=NaN,s="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v="object"==("undefined"==typeof t?"undefined":u(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":u(self))&&self&&self.Object===Object&&self,g=v||y||Function("return this")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){"use strict";function n(e,t){var n=window.document,r=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,a=new r(o);i=t,a.observe(n.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}function o(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes
1),o=t.concat(n).filter(function(e){return e.hasAttribute&&e.hasAttribute("data-aos")}).length;o&&i()})}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){};t.default=n},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(){return navigator.userAgent||navigator.vendor||window.opera||""}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,u=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
1sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,f=function(){function e(){n(this,e)}return i(e,[{key:"phone",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:"mobile",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:"tablet",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new f},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute("data-aos-once");t>e.position?e.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&e.node.classList.remove("aos-animate")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add("aos-init"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case"top-bottom":break;case"center-bottom":n+=e.offsetHeight/2;break;case"bottom-bottom":n+=e.offsetHeight;break;case"top-center":n+=i/2;break;case"bottom-center":n+=i/2+e.offsetHeight;break;case"center-center":n+=i/2+e.offsetHeight/2;break;case"top-top":n+=i;break;case"bottom-top":n+=e.offsetHeight+i;break;case"center-top":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){return e=e||document.querySelectorAll("[data-aos]"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});; 2/*! 3 * Infinite Scroll PACKAGED v4.0.1 4 * Automatically add next page 5 * 6 * Licensed GPLv3 for open source use 7 * or Infinite Scroll Commercial License for commercial use 8 * 9 * https://infinite-scroll.com 10 * Copyright 2018-2020
vendor: 22,312 bytes, lines 10-18
10 Metafizzy 11 */ 12!function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,(function(t,e){let i=t.console,n=void 0===i?function(){}:function(t){i.error(t)};return function(i,o,s){(s=s||e||t.jQuery)&&(o.prototype.option||(o.prototype.option=function(t){t&&(this.options=Object.assign(this.options||{},t))}),s.fn[i]=function(t,...e){return"string"==typeof t?function(t,e,o){let r,l=`$().${i}("${e}")`;return t.each((function(t,h){let a=s.data(h,i);if(!a)return void n(`${i} not initialized. Cannot call method ${l}`);let c=a[e];if(!c||"_"==e.charAt(0))return void n(`${l} is not a valid method`);let u=c.apply(a,o);r=void 0===r?u:r})),void 0!==r?r:t}(this,t,e):(r=t,this.each((function(t,e){let n=s.data(e,i);n?(n.option(r),n._init()):(n=new o(e,r),s.data(e,i,n))})),this);var r})}})),function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},n=i[t]=i[t]||[];return n.includes(e)||n.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let n=i.indexOf(e);return-1!=n&&i.splice(n,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let n=this._onceEvents&&this._onceEvents[t];for(let o of i){n&&n[o]&&(this.off(t,o),delete n[o]),o.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})),function(t,e){"object"==typeof module&&module.exports?module.exports=e(t):t.fizzyUIUtils=e(t)}(this,(function(t){let e={extend:function(t,e){return Object.assign(t,e)},modulo:function(t,e){return(t%e+e)%e},makeArray:function(t){if(Array.isArray(t))return t;if(null==t)return[];return"object"==typeof t&&"number"==typeof t.length?[...t]:[t]},removeFrom:function(t,e){let i=t.indexOf(e);-1!=i&&t.splice(i,1)},getParent:function(t,e){for(;t.parentNode&&t!=document.body;)if((t=t.parentNode).matches(e))return t},getQueryElement:function(t){return"string"==typeof t?document.querySelector(t):t},handleEvent:function(t){let e="on"+t.type;this[e]&&this[e](t)},filterFindElements:function(t,i){return(t=e.makeArray(t)).filter((t=>t instanceof HTMLElement)).reduce(((t,e)=>{if(!i)return t.push(e),t;e.matches(i)&&t.push(e);let n=e.querySelectorAll(i);return t=t.concat(...n)}),[])},debounceMethod:function(t,e,i){i=i||100;let n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){clearTimeout(this[o]);let t=arguments;this[o]=setTimeout((()=>{n.apply(this,t),delete this[o]}),i)}},docReady:function(t){let e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},toDashed:function(t){return t.replace(/(.)([A-Z])/g,(function(t,e,i){return e+"-"+i})).toLowerCase()}},i=t.console;return e.htmlInit=function(n,o){e.docReady((function(){let s="data-"+e.toDashed(o),r=document.querySelectorAll(`[${s}]`),l=t.jQuery;[...r].forEach((t=>{let e,r=t.getAttribute(s);try{e=r&&JSON.parse(r)}catch(e){return void(i&&i.error(`Error parsing ${s} on ${t.className}: ${e}`))}let h=new n(t,e);l&&l.data(t,o,h)}))}))},e})),function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("fizzy-ui-utils")):t.InfiniteScroll=e(t,t.EvEmitter,t.fizzyUIUtils)}(window,(function(t,e,i){let n=t.jQuery,o={};function s(t,e){let r=i.getQueryElement(t);if(r){if((t=r).infiniteScrollGUID){let i=o[t.infiniteScrollGUID];return i.option(e),i}this.element=t,this.options={...s.defaults},this.option(e),n&&(this.$element=n(this.element)),this.create()}else console.error("Bad element for InfiniteScroll: "+(r||t))}s.defaults={},s.create={},s.destroy={};let r=s.prototype;Object.assign(r,e.prototype);let l=0;r.create=function(){let t=this.guid=++l;if(this.element.infiniteScrollGUID=t,o[t]=this,this.pageIndex=1,this.loadCount=0,this.updateGetPath(),this.getPath&&this.getPath()){this.updateGetAbsolutePath(),this.log("initialized",[this.element.className]),this.callOnInit();for(let t in s.create)s.create[t].call(this)}else console.error("Disabling InfiniteScroll")},r.option=function(t){Object.assign(this.options,t)},r.callOnInit=function(){let t=this.options.onInit;t&&t.call(this,this)},r.dispatchEvent=function(t,e,i){this.log(t,i);let o=e?[e].concat(i):i;if(this.emitEvent(t,o),!n||!this.$element)return;let s=t+=".infiniteScroll";if(e){let i=n.Event(e);i.type=t,s=i}this.$element.trigger(s,i)};let h={initialized:t=>`on ${t}`,request:t=>`URL: ${t}`,load:(t,e)=>`${t.title||""}. URL: ${e}`,error:(t,e)=>`${t}. URL: ${e}`,append:(t,e,i)=>`${i.length} items. URL: ${e}`,last:(t,e)=>`URL: ${e}`,history:(t,e)=>`URL: ${e}`,pageIndex:function(t,e){return`current page determined to be: ${t} from ${e}`}};r.log=function(t,e){if(!this.options.debug)return;let i=`[InfiniteScroll] ${t}`,n=h[t];n&&(i+=". "+n.apply(this,e)),console.log(i)},r.updateMeasurements=function(){this.windowHeight=t.innerHeight;let e=this.element.getBoundingClientRect();this.top=e.top+t.scrollY},r.updateScroller=function(){let e=this.options.elementScroll;if(e){if(this.scroller=!0===e?this.element:i.getQueryElement(e),!this.scroller)throw new Error(`Unable to find elementScroll: ${e}`)}else this.scroller=t},r.updateGetPath=function(){let t=this.options.path;if(!t)return void console.error(`InfiniteScroll path option required. Set as: ${t}`);let e=typeof t;"function"!=e?"string"==e&&t.match("{{#}}")?this.updateGetPathTemplate(t):this.updateGetPathSelector(t):this.getPath=t},r.updateGetPathTemplate=function(t){this.getPath=()=>{let e=this.pageIndex+1;return t.replace("{{#}}",e)};let e=t.replace(/(\\\?|\?)/,"\\?").replace("{{#}}","(\\d\\d?\\d?)"),i=new RegExp(e),n=location.href.match(i);n&&(this.pageIndex=parseInt(n[1],10),this.log("pageIndex",[this.pageIndex,"template string"]))};let a=[/^(.*?\/?page\/?)(\d\d?\d?)(.*?$)/,/^(.*?\/?\?page=)(\d\d?\d?)(.*?$)/,/(.*?)(\d\d?\d?)(?!.*\d)(.*?$)/],c=s.getPathParts=function(t){if(t)for(let e of a){let i=t.match(e);if(i){let[,t,e,n]=i;return{begin:t,index:e,end:n}}}};r.updateGetPathSelector=function(t){let e=document.querySelector(t);if(!e)return void console.error(`Bad InfiniteScroll path option. Next link not found: ${t}`);let i=e.getAttribute("href"),n=c(i);if(!n)return void console.error(`InfiniteScroll unable to parse next link href: ${i}`);let{begin:o,index:s,end:r}=n;this.isPathSelector=!0,this.getPath=()=>o+(this.pageIndex+1)+r,this.pageIndex=parseInt(s,10)-1,this.log("pageIndex",[this.pageIndex,"next link"])},r.updateGetAbsolutePath=function(){let t=this.getPath();if(t.match(/^http/)||t.match(/^\//))return void(this.getAbsolutePath=this.getPath);let{pathname:e}=location,i=t.match(/^\?/),n=e.substring(0,e.lastIndexOf("/")),o=i?e:n+"/";this.getAbsolutePath=()=>o+this.getPath()},s.create.hideNav=function(){let t=i.getQueryElement(this.options.hideNav);t&&(t.style.display="none",this.nav=t)},s.destroy.hideNav=function(){this.nav&&(this.nav.style.display="")},r.destroy=function(){this.allOff();for(let t in s.destroy)s.destroy[t].call(this);delete this.element.infiniteScrollGUID,delete o[this.guid],n&&this.$element&&n.removeData(this.element,"infiniteScroll")},s.throttle=function(t,e){let i,n;return e=e||200,function(){let o=+new Date,s=arguments,r=()=>{i=o,t.apply(this,s)};i&&o<i+e?(clearTimeout(n),n=setTimeout(r,e)):r()}},s.data=function(t){let e=(t=i.getQueryElement(t))&&t.infiniteScrollGUID;return e&&o[e]},s.setJQuery=function(t){n=t},i.htmlInit(s,"infinite-scroll"),r._init=function(){};let{jQueryBridget:u}=t;return n&&u&&u("infiniteScroll",s,n),s})),function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("./core")):e(t,t.InfiniteScroll)}(window,(function(t,e){let i=e.prototype;Object.assign(e.defaults,{loadOnScroll:!0,checkLastPage:!0,responseBody:"text",domParseResponse:!0}),e.create.pageLoad=function(){this.canLoad=!0,this.on("scrollThreshold",this.onScrollThresholdLoad),this.on("load",this.checkLastPage),this.options.outlayer&&this.on("append",this.onAppendOutlayer)},i.onScrollThresholdLoad=function(){this.options.loadOnScroll&&this.loadNextPage()};let n=new DOMParser;function o(t){let e=document.createDocumentFragment();return t&&e.append(...t),e}return i.loadNextPage=function(){if(this.isLoading||!this.canLoad)return;let{responseBody:t,domParseResponse:e,fetchOptions:i}=this.options,o=this.getAbsolutePath();this.isLoading=!0,"function"==typeof i&&(i=i());let s=fetch(o,i).then((i=>{if(!i.ok){let t=new Error(i.statusText);return this.onPageError(t,o,i),{response:i}}return i[t]().then((s=>("text"==t&&e&&(s=n.parseFromString(s,"text/html")),204==i.status?(this.lastPageReached(s,o),{body:s,response:i}):this.onPageLoad(s,o,i))))})).catch((t=>{this.onPageError(t,o)}));return this.dispatchEvent("request",null,[o,s]),s},i.onPageLoad=function(t,e,i){return this.options.append||(this.isLoading=!1),this.pageIndex++,this.loadCount++,this.dispatchEvent("load",null,[t,e,i]),this.appendNextPage(t,e,i)},i.appendNextPage=function(t,e,i){let{append:n,responseBody:s,domParseResponse:r}=this.options;if(!("text"==s&&r)||!n)return{body:t,response:i};let l=t.querySelectorAll(n),h={body:t,response:i,items:l};if(!l||!l.length)return this.lastPageReached(t,e),h;let a=o(l),c=()=>(this.appendItems(l,a),this.isLoading=!1,this.dispatchEvent("append",null,[t,e,l,i]),h);return this.options.outlayer?this.appendOutlayerItems(a,c):c()},i.appendItems=function(t,e){t&&t.length&&(function(t){let e=t.querySelectorAll("script");for(let t of e){let e=document.createElement("script"),i=t.attributes;for(let t of i)e.setAttribute(t.name,t.value);e.innerHTML=t.innerHTML,t.parentNode.replaceChild(e,t)}}(e=e||o(t)),this.element.appendChild(e))},i.appendOutlayerItems=function(i,n){let o=e.imagesLoaded||t.imagesLoaded;return o?new Promise((function(t){o(i,(function(){let e=n();t(e)}))})):(console.error("[InfiniteScroll] imagesLoaded required for outlayer option"),void(this.isLoading=!1))},i.onAppendOutlayer=function(t,e,i){this.options.outlayer.appended(i)},i.checkLastPage=function(t,e){let i,{checkLastPage:n,path:o}=this.options;if(n){if("function"==typeof o){if(!this.getPath())return void this.lastPageReached(t,e)}"string"==typeof n?i=n:this.isPathSelector&&(i=o),i&&t.querySelector&&(t.querySelector(i)||this.lastPageReached(t,e))}},i.lastPageReached=function(t,e){this.canLoad=!1,this.dispatchEvent("last",null,[t,e])},i.onPageError=function(t,e,i){return this.isLoading=!1,this.canLoad=!1,this.dispatchEvent("error",null,[t,e,i]),t},e.create.prefill=function(){if(!this.options.prefill)return;let t=this.options.append;t?(this.updateMeasurements(),this.updateScroller(),this.isPrefilling=!0,this.on("append",this.prefill),this.once("error",this.stopPrefill),this.once("last",this.stopPrefill),this.prefill()):console.error(`append option required for prefill. Set as :${t}`)},i.prefill=function(){let t=this.getPrefillDistance();this.isPrefilling=t>=0,this.isPrefilling?(this.log("prefill"),this.loadNextPage()):this.stopPrefill()},i.getPrefillDistance=function(){return this.options.elementScroll?this.scroller.clientHeight-this.scroller.scrollHeight:this.windowHeight-this.element.clientHeight},i.stopPrefill=function(){this.log("stopPrefill"),this.off("append",this.prefill)},e})),function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(t,e,i){let n=e.prototype;return Object.assign(e.defaults,{scrollThreshold:400}),e.create.scrollWatch=function(){this.pageScrollHandler=this.onPageScroll.bind(this),this.resizeHandler=this.onResize.bind(this);let t=this.options.scrollThreshold;(t||0===t)&&this.enableScrollWatch()},e.destroy.scrollWatch=function(){this.disableScrollWatch()},n.enableScrollWatch=function(){this.isScrollWatching||(this.isScrollWatching=!0,this.updateMeasurements(),this.updateScroller(),this.on("last",this.disableScrollWatch),this.bindScrollWatchEvents(!0))},n.disableScrollWatch=function(){this.isScrollWatching&&(this.bindScrollWatchEvents(!1),delete this.isScrollWatching)},n.bindScrollWatchEvents=function(e){let i=e?"addEventListener":"removeEventListener";this.scroller[i]("scroll",this.pageScrollHandler),t[i]("resize",this.resizeHandler)},n.onPageScroll=e.throttle((function(){this.getBottomDistance()<=this.options.scrollThreshold&&this.dispatchEvent("scrollThreshold")})),n.getBottomDistance=function(){let e,i;return this.options.elementScroll?(e=this.scroller.scrollHeight,i=this.scroller.scrollTop+this.scroller.clientHeight):(e=this.top+this.element.clientHeight,i=t.scrollY+this.windowHeight),e-i},n.onResize=function(){this.updateMeasurements()},i.debounceMethod(e,"onResize",150),e})),function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(t,e,i){let n=e.prototype;Object.assign(e.defaults,{history:"replace"});let o=document.createElement("a");return e.create.history=function(){if(!this.options.history)return;o.href=this.getAbsolutePath(),(o.origin||o.protocol+"//"+o.host)==location.origin?this.options.append?this.createHistoryAppend():this.createHistoryPageLoad():console.error(`[InfiniteScroll] cannot set history with different origin: ${o.origin} on ${location.origin} . History behavior disabled.`)},n.createHistoryAppend=function(){this.updateMeasurements(),this.updateScroller(),this.scrollPages=[{top:0,path:location.href,title:document.title}],this.scrollPage=this.scrollPages[0],this.scrollHistoryHandler=this.onScrollHistory.bind(this),this.unloadHandler=this.onUnload.bind(this),this.scroller.addEventListener("scroll",this.scrollHistoryHandler),this.on("append",this.onAppendHistory),this.bindHistoryAppendEvents(!0)},n.bindHistoryAppendEvents=function(e){let i=e?"addEventListener":"removeEventListener";this.scroller[i]("scroll",this.scrollHistoryHandler),t[i]("unload",this.unloadHandler)},n.createHistoryPageLoad=function(){this.on("load",this.onPageLoadHistory)},e.destroy.history=n.destroyHistory=function(){this.options.history&&this.options.append&&this.bindHistoryAppendEvents(!1)},n.onAppendHistory=function(t,e,i){if(!i||!i.length)return;let n=i[0],s=this.getElementScrollY(n);o.href=e,this.scrollPages.push({top:s,path:o.href,title:t.title})},n.getElementScrollY=function(e){if(this.options.elementScroll)return e.offsetTop-this.top;return e.getBoundingClientRect().top+t.scrollY},n.onScrollHistory=function(){let t=this.getClosestScrollPage();t!=this.scrollPage&&(this.scrollPage=t,this.setHistory(t.title,t.path))},i.debounceMethod(e,"onScrollHistory",150),n.getClosestScrollPage=function(){let e,i;e=this.options.elementScroll?this.scroller.scrollTop+this.scroller.clientHeight/2:t.scrollY+this.windowHeight/2;for(let t of this.scrollPages){if(t.top>=e)break;i=t}return i},n.setHistory=function(t,e){let i=this.options.history;i&&history[i+"State"]&&(history[i+"State"](null,t,e),this.options.historyTitle&&(document.title=t),this.dispatchEvent("history",null,[t,e]))},n.onUnload=function(){if(0===this.scrollPage.top)return;let e=t.scrollY-this.scrollPage.top+this.top;this.destroyHistory(),scrollTo(0,e)},n.onPageLoadHistory=function(t,e){this.setHistory(t.title,e)},e})),function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(t,e,i){class n{constructor(t,e){this.element=t,this.infScroll=e,this.clickHandler=this.onClick.bind(this),this.element.addEventListener("click",this.clickHandler),e.on("request",this.disable.bind(this)),e.on("load",this.enable.bind(this)),e.on("error",this.hide.bind(this)),e.on("last",this.hide.bind(this))}onClick(t){t.preventDefault(),this.infScroll.loadNextPage()}enable(){this.element.removeAttribute("disabled")}disable(){this.element.disabled="disabled"}hide(){this.element.style.display="none"}destroy(){this.element.removeEventListener("click",this.clickHandler)}}return e.create.button=function(){let t=i.getQueryElement(this.options.button);t&&(this.button=new n(t,this))},e.destroy.button=function(){this.button&&this.button.destroy()},e.Button=n,e})),function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,(function(t,e,i){let n=e.prototype;function o(t){r(t,"none")}function s(t){r(t,"block")}function r(t,e){t&&(t.style.display=e)}return e.create.status=function(){let t=i.getQueryElement(this.options.status);t&&(this.statusElement=t,this.statusEventElements={request:t.querySelector(".infinite-scroll-request"),error:t.querySelector(".infinite-scroll-error"),last:t.querySelector(".infinite-scroll-last")},this.on("request",this.showRequestStatus),this.on("error",this.showErrorStatus),this.on("last",this.showLastStatus),this.bindHideStatus("on"))},n.bindHideStatus=function(t){let e=this.options.append?"append":"load";this[t](e,this.hideAllStatus)},n.showRequestStatus=function(){this.showStatus("request")},n.showErrorStatus=function(){this.showStatus("error")},n.showLastStatus=function(){this.showStatus("last"),this.bindHideStatus("off")},n.showStatus=function(t){s(this.statusElement),this.hideStatusEventElements(),s(this.statusEventElements[t])},n.hideAllStatus=function(){o(this.statusElement),this.hideStatusEventElements()},n.hideStatusEventElements=function(){for(let t in this.statusEventElements){o(this.statusEventElements[t])}},e})), 13/*! 14 * imagesLoaded v4.1.4 15 * JavaScript is all like "You images are done yet or what?" 16 * MIT License 17 */ 18function(t,e){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],(function(i){return e(t,i)})):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){"use strict";var i=t.jQuery,n=t.console;function o(t,e){for(var i in e)t[i]=e[i];return t}var s=Array.prototype.slice;function r(t,e,l){if(!(this instanceof r))return new r(t,e,l);var h,a=t;("string"==typeof t&&(a=document.querySelectorAll(t)),a)?(this.elements=(h=a,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?s.call(h):[h]),this.options=o({},this.options),"function"==typeof e?l=e:o(this.options,e),l&&this.on("always",l),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):n.error("Bad element for imagesLoaded "+(a||t))}r.prototype=Object.create(e.prototype),r.prototype.options={},r.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},r.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&l[e]){for(var i=t.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var s=t.querySelectorAll(this.options.background);for(n=0;n<s.length;n++){var r=s[n];this.addElementBackgroundImages(r)}}}};var l={1:!0,9:!0,11:!0};function h(t){this.img=t}function a(t,e){this.url=t,this.element=e,this.img=new Image}return r.prototype.addElementBackgroundImages=function(t){var e=getComputedStyle(t);if(e)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(e.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,t),n=i.exec(e.backgroundImage)}},r.prototype.addImage=function(t){var e=new h(t);this.images.push(e)},r.prototype.addBackground=function(t,e){var i=new a(t,e);this.images.push(i)},r.prototype.check=function(){var t=this;function e(e,i,n){setTimeout((function(){t.progress(e,i,n)}))}this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?this.images.forEach((function(t){t.once("progress",e),t.check()})):this.complete()},r.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&n&&n.log("progress: "+i,t,e)},r.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){var e=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[e](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.img,e])},h.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},a.prototype=Object.create(h.prototype),a.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},a.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},a.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},r.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&((i=e).fn.imagesLoaded=function(t,e){return new r(this,t,e).jqDeferred.promise(i(this))})},r.makeJQueryPlugin(),r}));
18; 19/** 20 * This work is licensed under the W3C Software and Document License 21 * (http://www.w3.org/Consortium/Legal/2015/copyright-software-and-document). 22 */ 23 24 (function() { 25 // Return early if we're not running inside of the browser. 26 if (typeof window === 'undefined') { 27 return; 28 } 29 30 // Convenience function for converting NodeLists. 31 /** @type {typeof Array.prototype.slice} */ 32 const slice = Array.prototype.slice; 33 34 /** 35 * IE has a non-standard name for "matches". 36 * @type {typeof Element.prototype.matches} 37 */ 38 const matches = 39 Element.prototype.matches || Element.prototype.msMatchesSelector; 40 41 /** @type {string} */ 42 const _focusableElementsString = ['a[href]', 43 'area[href]', 44 'input:not([disabled])', 45 'select:not([disabled])', 46 'textarea:not([disabled])', 47 'button:not([disabled])', 48 'details', 49 'summary', 50 'iframe', 51 'object', 52 'embed', 53 '[contenteditable]'].join(','); 54 55 /** 56 * `InertRoot` manages a single inert subtree, i.e. a DOM subtree whose root element has an `inert` 57 * attribute. 58 * 59 * Its main functions are: 60 * 61 * - to create and maintain a set of managed `InertNode`s, including when mutations occur in the 62 * subtree. The `makeSubtreeUnfocusable()` method handles collecting `InertNode`s via registering 63 * each focusable node in the subtree with the singleton `InertManager` which manages all known 64 * focusable nodes within inert subtrees. `InertManager` ensures that a single `InertNode` 65 * instance exists for each focusable node which has at least one inert root as an ancestor. 66 * 67 * - to notify all managed `InertNode`s when this subtree stops being inert (i.e. when the `inert` 68 * attribute is removed from the root node). This is handled in the destructor, which calls the 69 * `deregister` method on `InertManager` for each managed inert node. 70 */ 71 class InertRoot { 72 /** 73 * @param {!Element} rootElement The Element at the root of the inert subtree. 74 * @param {!InertManager} inertManager The global singleton InertManager object. 75 */ 76 constructor(rootElement, inertManager) { 77 /** @type {!InertManager} */ 78 this._inertManager = inertManager; 79 80 /** @type {!Element} */ 81 this._rootElement = rootElement; 82 83 /** 84 * @type {!Set<!InertNode>} 85 * All managed focusable nodes in this InertRoot's subtree. 86 */ 87 this._managedNodes = new Set(); 88 89 // Make the subtree hidden from assistive technology 90 if (this._rootElement.hasAttribute('aria-hidden')) { 91 /** @type {?string} */ 92 this._savedAriaHidden = this._rootElement.getAttribute('aria-hidden'); 93 } else { 94 this._savedAriaHidden = null; 95 } 96 this._rootElement.setAttribute('aria-hidden', 'true'); 97 98 // Make all focusable elements in the subtree unfocusable and add them to _managedNodes 99 this._makeSubtreeUnfocusable(this._rootElement); 100 101 // Watch for: 102 // - any additions in the subtree: make them unfocusable too 103 // - any removals from the subtree: remove them from this inert root's managed nodes 104 // - attribute changes: if `tabindex` is added, or removed from an intrinsically focusable 105 // element, make that node a managed node. 106 this._observer = new MutationObserver(this._onMutation.bind(this)); 107 this._observer.observe(this._rootElement, {attributes: true, childList: true, subtree: true}); 108 } 109 110 /** 111 * Call this whenever this object is about to become obsolete. This unwinds all of the state 112 * stored in this object and updates the state of all of the managed nodes. 113 */ 114 destructor() { 115 this._observer.disconnect(); 116 117 if (this._rootElement) { 118 if (this._savedAriaHidden !== null) { 119 this._rootElement.setAttribute('aria-hidden', this._savedAriaHidden); 120 } else { 121 this._rootElement.removeAttribute('aria-hidden'); 122 } 123 } 124
125 this._managedNodes.forEach(function(inertNode) { 126 this._unmanageNode(inertNode.node); 127 }, this); 128 129 // Note we cast the nulls to the ANY type here because: 130 // 1) We want the class properties to be declared as non-null, or else we 131 // need even more casts throughout this code. All bets are off if an 132 // instance has been destroyed and a method is called. 133 // 2) We don't want to cast "this", because we want type-aware optimizations 134 // to know which properties we're setting. 135 this._observer = /** @type {?} */ (null); 136 this._rootElement = /** @type {?} */ (null); 137 this._managedNodes = /** @type {?} */ (null); 138 this._inertManager = /** @type {?} */ (null); 139 } 140 141 /** 142 * @return {!Set<!InertNode>} A copy of this InertRoot's managed nodes set. 143 */ 144 get managedNodes() { 145 return new Set(this._managedNodes); 146 } 147 148 /** @return {boolean} */ 149 get hasSavedAriaHidden() { 150 return this._savedAriaHidden !== null; 151 } 152 153 /** @param {?string} ariaHidden */ 154 set savedAriaHidden(ariaHidden) { 155 this._savedAriaHidden = ariaHidden; 156 } 157 158 /** @return {?string} */ 159 get savedAriaHidden() { 160 return this._savedAriaHidden; 161 } 162 163 /** 164 * @param {!Node} startNode 165 */ 166 _makeSubtreeUnfocusable(startNode) { 167 composedTreeWalk(startNode, (node) => this._visitNode(node)); 168 169 let activeElement = document.activeElement; 170 171 if (!document.body.contains(startNode)) { 172 // startNode may be in shadow DOM, so find its nearest shadowRoot to get the activeElement. 173 let node = startNode; 174 /** @type {!ShadowRoot|undefined} */ 175 let root = undefined; 176 while (node) { 177 if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
178 root = /** @type {!ShadowRoot} */ (node); 179 break; 180 } 181 node = node.parentNode; 182 } 183 if (root) { 184 activeElement = root.activeElement; 185 } 186 } 187 if (startNode.contains(activeElement)) { 188 activeElement.blur(); 189 // In IE11, if an element is already focused, and then set to tabindex=-1 190 // calling blur() will not actually move the focus. 191 // To work around this we call focus() on the body instead. 192 if (activeElement === document.activeElement) { 193 document.body.focus(); 194 } 195 } 196 } 197 198 /** 199 * @param {!Node} node 200 */ 201 _visitNode(node) { 202 if (node.nodeType !== Node.ELEMENT_NODE) { 203 return; 204 } 205 const element = /** @type {!Element} */ (node); 206 207 // If a descendant inert root becomes un-inert, its descendants will still be inert because of 208 // this inert root, so all of its managed nodes need to be adopted by this InertRoot. 209 if (element !== this._rootElement && element.hasAttribute('inert')) { 210 this._adoptInertRoot(element); 211 } 212 213 if (matches.call(element, _focusableElementsString) || element.hasAttribute('tabindex')) { 214 this._manageNode(element); 215 } 216 } 217 218 /** 219 * Register the given node with this InertRoot and with InertManager. 220 * @param {!Node} node 221 */ 222 _manageNode(node) { 223 const inertNode = this._inertManager.register(node, this); 224 this._managedNodes.add(inertNode); 225 } 226 227 /** 228 * Unregister the given node with this InertRoot and with InertManager. 229 * @param {!Node} node 230 */ 231 _unmanageNode(node) { 232 const inertNode = this._inertManager.deregister(node, this); 233 if (inertNode) { 234 this._managedNodes.delete(inertNode); 235 } 236 } 237 238 /** 239 * Unregister the entire subtree starting at `startNode`. 240 * @param {!Node} startNode 241 */ 242 _unmanageSubtree(startNode) { 243 composedTreeWalk(startNode, (node) => this._unmanageNode(node)); 244 } 245 246 /** 247 * If a descendant node is found with an `inert` attribute, adopt its managed nodes. 248 * @param {!Element} node 249 */ 250 _adoptInertRoot(node) { 251 let inertSubroot = this._inertManager.getInertRoot(node); 252 253 // During initialisation this inert root may not have been registered yet, 254 // so register it now if need be. 255 if (!inertSubroot) { 256 this._inertManager.setInert(node, true); 257 inertSubroot = this._inertManager.getInertRoot(node); 258 } 259 260 inertSubroot.managedNodes.forEach(function(savedInertNode) { 261 this._manageNode(savedInertNode.node); 262 }, this); 263 } 264 265 /** 266 * Callback used when mutation observer detects subtree additions, removals, or attribute changes. 267 * @param {!Array<!MutationRecord>} records 268 * @param {!MutationObserver} self 269 */ 270 _onMutation(records, self) { 271 records.forEach(function(record) {
vendor: 2,097 bytes, lines 272-315
272 const target = /** @type {!Element} */ (record.target); 273 if (record.type === 'childList') { 274 // Manage added nodes 275 slice.call(record.addedNodes).forEach(function(node) { 276 this._makeSubtreeUnfocusable(node); 277 }, this); 278 279 // Un-manage removed nodes 280 slice.call(record.removedNodes).forEach(function(node) { 281 this._unmanageSubtree(node); 282 }, this); 283 } else if (record.type === 'attributes') { 284 if (record.attributeName === 'tabindex') { 285 // Re-initialise inert node if tabindex changes 286 this._manageNode(target); 287 } else if (target !== this._rootElement && 288 record.attributeName === 'inert' && 289 target.hasAttribute('inert')) { 290 // If a new inert root is added, adopt its managed nodes and make sure it knows about the 291 // already managed nodes from this inert subroot. 292 this._adoptInertRoot(target); 293 const inertSubroot = this._inertManager.getInertRoot(target); 294 this._managedNodes.forEach(function(managedNode) { 295 if (target.contains(managedNode.node)) { 296 inertSubroot._manageNode(managedNode.node); 297 } 298 }); 299 } 300 } 301 }, this); 302 } 303 } 304 305 /** 306 * `InertNode` initialises and manages a single inert node. 307 * A node is inert if it is a descendant of one or more inert root elements. 308 * 309 * On construction, `InertNode` saves the existing `tabindex` value for the node, if any, and 310 * either removes the `tabindex` attribute or sets it to `-1`, depending on whether the element 311 * is intrinsically focusable or not. 312 * 313 * `InertNode` maintains a set of `InertRoot`s which are descendants of this `InertNode`. When an 314 * `InertRoot` is destroyed, and calls `InertManager.deregister()`, the `InertManager` notifies the 315 * `InertNode` via `removeInertRoot()`, which in turn destroys the `InertN
315ode` if no `InertRoot`s 316 * remain in the set. On destruction, `InertNode` reinstates the stored `tabindex` if one exists, 317 * or removes the `tabindex` attribute if the element is intrinsically focusable. 318 */ 319 class InertNode { 320 /** 321 * @param {!Node} node A focusable element to be made inert. 322 * @param {!InertRoot} inertRoot The inert root element associated with this inert node. 323 */ 324 constructor(node, inertRoot) { 325 /** @type {!Node} */ 326 this._node = node; 327 328 /** @type {boolean} */ 329 this._overrodeFocusMethod = false; 330 331 /** 332 * @type {!Set<!InertRoot>} The set of descendant inert roots. 333 * If and only if this set becomes empty, this node is no longer inert. 334 */ 335 this._inertRoots = new Set([inertRoot]); 336 337 /** @type {?number} */ 338 this._savedTabIndex = null; 339 340 /** @type {boolean} */ 341 this._destroyed = false; 342 343 // Save any prior tabindex info and make this node untabbable 344 this.ensureUntabbable(); 345 } 346 347 /** 348 * Call this whenever this object is about to become obsolete. 349 * This makes the managed node focusable again and deletes all of the previously stored state. 350 */ 351 destructor() { 352 this._throwIfDestroyed(); 353 354 if (this._node && this._node.nodeType === Node.ELEMENT_NODE) {
355 const element = /** @type {!Element} */ (this._node); 356 if (this._savedTabIndex !== null) { 357 element.setAttribute('tabindex', this._savedTabIndex); 358 } else { 359 element.removeAttribute('tabindex'); 360 } 361 362 // Use `delete` to restore native focus method. 363 if (this._overrodeFocusMethod) { 364 delete element.focus; 365 } 366 } 367 368 // See note in InertRoot.destructor for why we cast these nulls to ANY. 369 this._node = /** @type {?} */ (null); 370 this._inertRoots = /** @type {?} */ (null); 371 this._destroyed = true; 372 } 373 374 /** 375 * @type {boolean} Whether this object is obsolete because the managed node is no longer inert. 376 * If the object has been destroyed, any attempt to access it will cause an exception. 377 */ 378 get destroyed() { 379 return /** @type {!InertNode} */ (this)._destroyed; 380 } 381 382 /** 383 * Throw if user tries to access destroyed InertNode. 384 */ 385 _throwIfDestroyed() { 386 if (this.destroyed) { 387 throw new Error('Trying to access destroyed InertNode'); 388 } 389 } 390 391 /** @return {boolean} */ 392 get hasSavedTabIndex() { 393 return this._savedTabIndex !== null; 394 } 395 396 /** @return {!Node} */ 397 get node() { 398 this._throwIfDestroyed(); 399 return this._node; 400 } 401 402 /** @param {?number} tabIndex */ 403 set savedTabIndex(tabIndex) { 404 this._throwIfDestroyed(); 405 this._savedTabIndex = tabIndex; 406 } 407 408 /** @return {?number} */ 409 get savedTabIndex() { 410 this._throwIfDestroyed(); 411 return this._savedTabIndex; 412 } 413 414 /** Save the existing tabindex value and make the node untabbable and unfocusable */ 415 ensureUntabbable() { 416 if (this.node.nodeType !== Node.ELEMENT_NODE) { 417 return; 418 }
419 const element = /** @type {!Element} */ (this.node); 420 if (matches.call(element, _focusableElementsString)) { 421 if (/** @type {!HTMLElement} */ (element).tabIndex === -1 && 422 this.hasSavedTabIndex) { 423 return; 424 } 425 426 if (element.hasAttribute('tabindex')) { 427 this._savedTabIndex = /** @type {!HTMLElement} */ (element).tabIndex; 428 } 429 element.setAttribute('tabindex', '-1'); 430 if (element.nodeType === Node.ELEMENT_NODE) { 431 element.focus = function() {}; 432 this._overrodeFocusMethod = true; 433 } 434 } else if (element.hasAttribute('tabindex')) { 435 this._savedTabIndex = /** @type {!HTMLElement} */ (element).tabIndex; 436 element.removeAttribute('tabindex'); 437 } 438 } 439 440 /** 441 * Add another inert root to this inert node's set of managing inert roots. 442 * @param {!InertRoot} inertRoot 443 */ 444 addInertRoot(inertRoot) { 445 this._throwIfDestroyed(); 446 this._inertRoots.add(inertRoot); 447 } 448 449 /** 450 * Remove the given inert root from this inert node's set of managing inert roots. 451 * If the set of managing inert roots becomes empty, this node is no longer inert, 452 * so the object should be destroyed. 453 * @param {!InertRoot} inertRoot 454 */ 455 removeInertRoot(inertRoot) { 456 this._throwIfDestroyed(); 457 this._inertRoots.delete(inertRoot); 458 if (this._inertRoots.size === 0) { 459 this.destructor(); 460 } 461 } 462 } 463 464 /** 465 * InertManager is a per-document singleton object which manages all inert roots and nodes. 466 * 467 * When an element becomes an inert root by having an `inert` attribute set and/or its `inert` 468 * property set to `true`, the `setInert` method creates an `InertRoot` object for the element. 469 * The `InertRoot` in turn registers itself as managing all of the element's focusable descendant 470 * nodes via the `register()` method. The `InertManager` ensures that a single `InertNode` instance 471 * is created for each such node, via the `_managedNodes` map. 472 */ 473 class InertManager { 474 /** 475 * @param {!Document} document 476 */ 477 constructor(document) { 478 if (!document) { 479 throw new Error('Missing required argument; InertManager needs to wrap a document.'); 480 } 481 482 /** @type {!Document} */ 483 this._document = document; 484 485 /** 486 * All managed nodes known to this InertManager. In a map to allow looking up by Node. 487 * @type {!Map<!Node, !InertNode>} 488 */ 489 this._managedNodes = new Map(); 490 491 /** 492 * All inert roots known to this InertManager. In a map to allow looking up by Node. 493 * @type {!Map<!Node, !InertRoot>} 494 */ 495 this._inertRoots = new Map(); 496 497 /** 498 * Observer for mutations on `document.body`. 499 * @type {!MutationObserver} 500 */ 501 this._observer = new MutationObserver(this._watchForInert.bind(this)); 502 503 // Add inert style. 504 addInertStyle(document.head || document.body || document.documentElement); 505 506 // Wait for document to be loaded. 507 if (document.readyState === 'loading') { 508 document.addEventListener('DOMContentLoaded', this._onDocumentLoaded.bind(this)); 509 } else { 510 this._onDocumentLoaded(); 511 } 512 } 513 514 /** 515 * Set whether the given element should be an inert root or not. 516 * @param {!Element} root 517 * @param {boolean} inert 518 */ 519 setInert(root, inert) { 520 if (inert) { 521 if (this._inertRoots.has(root)) { // element is already inert 522 return; 523 } 524 525 const inertRoot = new InertRoot(root, this); 526 root.setAttribute('inert', ''); 527 this._inertRoots.set(root, inertRoot); 528 // If not contained in the document, it must be in a shadowRoot. 529 // Ensure inert styles are added there. 530 if (!this._document.body.contains(root)) { 531 let parent = root.parentNode; 532 while (parent) { 533 if (parent.nodeType === 11) { 534 addInertStyle(parent); 535 } 536 parent = parent.parentNode; 537 } 538 } 539 } else { 540 if (!this._inertRoots.has(root)) { // element is already non-inert 541 return; 542 } 543 544 const inertRoot = this._inertRoots.get(root);
545 inertRoot.destructor(); 546 this._inertRoots.delete(root); 547 root.removeAttribute('inert'); 548 } 549 } 550 551 /** 552 * Get the InertRoot object corresponding to the given inert root element, if any. 553 * @param {!Node} element 554 * @return {!InertRoot|undefined} 555 */ 556 getInertRoot(element) { 557 return this._inertRoots.get(element); 558 } 559 560 /** 561 * Register the given InertRoot as managing the given node. 562 * In the case where the node has a previously existing inert root, this inert root will 563 * be added to its set of inert roots. 564 * @param {!Node} node 565 * @param {!InertRoot} inertRoot 566 * @return {!InertNode} inertNode 567 */ 568 register(node, inertRoot) { 569 let inertNode = this._managedNodes.get(node); 570 if (inertNode !== undefined) { // node was already in an inert subtree 571 inertNode.addInertRoot(inertRoot); 572 } else { 573 inertNode = new InertNode(node, inertRoot); 574 } 575 576 this._managedNodes.set(node, inertNode); 577 578 return inertNode; 579 } 580 581 /** 582 * De-register the given InertRoot as managing the given inert node. 583 * Removes the inert root from the InertNode's set of managing inert roots, and remove the inert 584 * node from the InertManager's set of managed nodes if it is destroyed. 585 * If the node is not currently managed, this is essentially a no-op. 586 * @param {!Node} node 587 * @param {!InertRoot} inertRoot 588 * @return {?InertNode} The potentially destroyed InertNode associated with this node, if any. 589 */ 590 deregister(node, inertRoot) { 591 const inertNode = this._managedNodes.get(node); 592 if (!inertNode) { 593 return null; 594 } 595 596 inertNode.removeInertRoot(inertRoot); 597 if (inertNode.destroyed) { 598 this._managedNodes.delete(node); 599 } 600 601 return inertNode; 602 } 603 604 /** 605 * Callback used when document has finished loading. 606 */ 607 _onDocumentLoaded() { 608 // Find all inert roots in document and make them actually inert. 609 const inertElements = slice.call(this._document.querySelectorAll('[inert]')); 610 inertElements.forEach(function(inertElement) { 611 this.setInert(inertElement, true); 612 }, this); 613 614 // Comment this out to use programmatic API only. 615 this._observer.observe(this._document.body || this._document.documentElement, {attributes: true, subtree: true, childList: true}); 616 } 617 618 /** 619 * Callback used when mutation observer detects attribute changes. 620 * @param {!Array<!MutationRecord>} records 621 * @param {!MutationObserver} self 622 */ 623 _watchForInert(records, self) { 624 const _this = this; 625 records.forEach(function(record) { 626 switch (record.type) { 627 case 'childList': 628 slice.call(record.addedNodes).forEach(function(node) { 629 if (node.nodeType !== Node.ELEMENT_NODE) { 630 return; 631 } 632 const inertElements = slice.call(node.querySelectorAll('[inert]')); 633 if (matches.call(node, '[inert]')) { 634 inertElements.unshift(node); 635 } 636 inertElements.forEach(function(inertElement) { 637 this.setInert(inertElement, true); 638 }, _this); 639 }, _this); 640 break; 641 case 'attributes': 642 if (record.attributeName !== 'inert') { 643 return; 644 }
645 const target = /** @type {!Element} */ (record.target); 646 const inert = target.hasAttribute('inert'); 647 _this.setInert(target, inert); 648 break; 649 } 650 }, this); 651 } 652 } 653 654 /** 655 * Recursively walk the composed tree from |node|. 656 * @param {!Node} node 657 * @param {(function (!Element))=} callback Callback to be called for each element traversed, 658 * before descending into child nodes. 659 * @param {?ShadowRoot=} shadowRootAncestor The nearest ShadowRoot ancestor, if any. 660 */ 661 function composedTreeWalk(node, callback, shadowRootAncestor) { 662 if (node.nodeType == Node.ELEMENT_NODE) { 663 const element = /** @type {!Element} */ (node); 664 if (callback) { 665 callback(element); 666 } 667 668 // Descend into node: 669 // If it has a ShadowRoot, ignore all child elements - these will be picked 670 // up by the <content> or <shadow> elements. Descend straight into the 671 // ShadowRoot. 672 const shadowRoot = /** @type {
672!HTMLElement} */ (element).shadowRoot; 673 if (shadowRoot) { 674 composedTreeWalk(shadowRoot, callback, shadowRoot); 675 return; 676 } 677 678 // If it is a <content> element, descend into distributed elements - these 679 // are elements from outside the shadow root which are rendered inside the 680 // shadow DOM. 681 if (element.localName == 'content') { 682 const content = /** @type {!HTMLContentElement} */ (element); 683 // Verifies if ShadowDom v0 is supported. 684 const distributedNodes = content.getDistributedNodes ? 685 content.getDistributedNodes() : []; 686 for (let i = 0; i < distributedNodes.length; i++) { 687 composedTreeWalk(distributedNodes[i], callback, shadowRootAncestor); 688 } 689 return; 690 } 691 692 // If it is a <slot> element, descend into assigned nodes - these 693 // are elements from outside the shadow root which are rendered inside the 694 // shadow DOM. 695 if (element.localName == 'slot') {
696 const slot = /** @type {!HTMLSlotElement} */ (element); 697 // Verify if ShadowDom v1 is supported. 698 const distributedNodes = slot.assignedNodes ? 699 slot.assignedNodes({flatten: true}) : []; 700 for (let i = 0; i < distributedNodes.length; i++) { 701 composedTreeWalk(distributedNodes[i], callback, shadowRootAncestor); 702 } 703 return; 704 } 705 } 706 707 // If it is neither the parent of a ShadowRoot, a <content> element, a <slot> 708 // element, nor a <shadow> element recurse normally. 709 let child = node.firstChild; 710 while (child != null) { 711 composedTreeWalk(child, callback, shadowRootAncestor); 712 child = child.nextSibling; 713 } 714 } 715 716 /** 717 * Adds a style element to the node containing the inert specific styles 718 * @param {!Node} node 719 */ 720 function addInertStyle(node) { 721 if (node.querySelector('style#inert-style, link#inert-style')) { 722 return; 723 } 724 const style = document.createElement('style'); 725 style.setAttribute('id', 'inert-style'); 726 style.textContent = '\n'+ 727 '[inert] {\n' + 728 ' pointer-events: none;\n' + 729 ' cursor: default;\n' + 730 '}\n' + 731 '\n' + 732 '[inert], [inert] * {\n' + 733 ' -webkit-user-select: none;\n' + 734 ' -moz-user-select: none;\n' + 735 ' -ms-user-select: none;\n' + 736 ' user-select: none;\n' + 737 '}\n'; 738 node.appendChild(style); 739 } 740 741 if (!Element.prototype.hasOwnProperty('inert')) { 742 /** @type {!InertManager} */ 743 const inertManager = new InertManager(document); 744 745 Object.defineProperty(Element.prototype, 'inert', { 746 enumerable: true, 747 /** @this {!Element} */ 748 get: function() { 749 return this.hasAttribute('inert'); 750 }, 751 /** @this {!Element} */ 752 set: function(inert) { 753 inertManager.setInert(this, inert); 754 }, 755 }); 756 } 757 })();; 758jQuery(document).ready(oxygen_init_offcanvas); 759function oxygen_init_offcanvas($) { 760 761 let touchEvent = 'click'; 762 let previousFocus = false; 763 764 'use strict'; 765 766 $('.oxy-off-canvas .offcanvas-inner').each(function() { 767 768 var offCanvas = $(this), 769 triggerSelector = offCanvas.data('trigger-selector'), 770 offCanvasOutside = offCanvas.data('click-outside'), 771 offCanvasEsc = offCanvas.data('esc'), 772 offCanvasStart = offCanvas.data('start'), 773 offCanvasBackdrop = offCanvas.data('backdrop'), 774 offCanvasFocusSelector = offCanvas.data('focus-selector'), 775 backdrop = offCanvas.prev('.oxy-offcanvas_backdrop'), 776 menuHashLink = offCanvas.find('a[href*=\\#]').not(".menu-item-has-children > a"), 777 reset = offCanvas.data('reset'), 778 mediaPlayer = offCanvas.find('.oxy-pro-media-player vime-player'), 779 otherOffcanvas = offCanvas.data('second-offcanvas'), 780 maybeHashClose = offCanvas.data('hashclose'), 781 offcanvasPush = offCanvas.data('content-push'), 782 offcanvasPushContent = offCanvas.data('content-selector'), 783 offcanvasPushDuration = offCanvas.data('content-duration'), 784 offcanvasID = offCanvas.parent('.oxy-off-canvas').attr('ID'), 785 burgerSync = offCanvas.data('burger-sync'), 786 maybeOverflow = offCanvas.data('overflow'); 787 788 789 if (false !== offCanvas.data('stagger-menu')) { 790 offCanvas.find('.oxy-slide-menu_list > .menu-item').addClass('aos-animate'); 791 offCanvas.find('.oxy-slide-menu_list > .menu-item').attr( { "data-aos": offCanvas.data('stagger-menu') } ); 792 } 793 794 if (! $(this).hasClass('oxy-off-canvas-toggled') ) { 795 $(this).find(".aos-animate:not(.oxy-off-canvas-toggled .aos-animate)").addClass("aos-animate-disabled").removeClass("aos-animate"); 796 } 797 798 ariaExpandToggle('false'); 799 800 if ( true === offCanvas.data('auto-aria') ) { 801 802 $(triggerSelector).each(function(i,trigger) { 803 804 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 805 $(trigger).children('.hamburger').attr('aria-controls', offCanvas.attr('id')); 806 } else { 807 $(trigger).attr('aria-controls', offCanvas.attr('id')); 808 } 809 }); 810 } 811 812 if ( true === offCanvas.data('focus-trap') ) { 813
814 const keyboardfocusableElements = offCanvas.find( 815 'a[href], button, input, textarea, select, details, [tabindex]' 816 ); 817 818 if (keyboardfocusableElements.length) { 819 820 keyboardfocusableElements[keyboardfocusableElements.length - 1].addEventListener('keydown', (e) => { 821 822 if (!e.shiftKey && e.key === 'Tab') { 823 e.preventDefault() 824 keyboardfocusableElements[0].focus() 825 } 826 827 }) 828 829 keyboardfocusableElements[0].addEventListener('keydown', (e) => { 830 831 if (e.shiftKey && e.key === 'Tab') { 832 e.preventDefault() 833 keyboardfocusableElements[keyboardfocusableElements.length - 1].focus() 834 } 835 836 }) 837 838 } 839 } 840 841 function doOffCanvas(triggerSelector) { 842 843 if ($(triggerSelector).hasClass('oxy-close-modal')) { 844 oxyCloseModal(); 845 } 846 847 if (!offCanvas.parent().hasClass('oxy-off-canvas-toggled')) { 848 openOffCanvas(); 849 } else { 850 closeOffCanvas(); 851 } 852 } 853 854 if ( $(triggerSelector).hasClass('oxy-burger-trigger') && $(triggerSelector).children('.hamburger').length ) { 855 856 let triggerSelectorTouch = $( triggerSelector ).children('.hamburger').data('touch'); 857 let touchEvent = 'ontouchstart' in window ? triggerSelectorTouch : 'click'; 858 859 $(triggerSelector).on(touchEvent, function(e) { 860 e.stopPropagation(); 861 e.preventDefault(); 862 863 if (true === burgerSync) { 864 $(triggerSelector).not('#' + $(this).attr('ID')).children('.hamburger').toggleClass('is-active'); 865 } 866 867 if ( !e.target.closest('.oxy-off-canvas') ) { 868 previousFocus = e.target.closest(triggerSelector); 869 } 870 871 doOffCanvas(triggerSelector); 872 873 }); 874 } else { 875 876 let triggerSelectorTouch = touchEvent; 877 $(triggerSelector).on(triggerSelectorTouch, function(e) { 878 e.stopPropagation(); 879 e.preventDefault(); 880 doOffCanvas(triggerSelector); 881 }); 882 } 883 884 885 // Backdrop Clicked 886 offCanvas.siblings('.oxy-offcanvas_backdrop').on(touchEvent, function(e) { 887 e.stopPropagation(); 888 if (offCanvasOutside === true) { 889 closeBurger(); 890 closeLottie(); 891 closeOffCanvas(); 892 } 893 894 }); 895 896 // Pressing ESC from inside the offcanvas will close it 897 offCanvas.keyup(function(e) { 898 if (offCanvasEsc === true) { 899 if (e.keyCode === 27) { 900 closeBurger(); 901 closeLottie(); 902 closeOffCanvas(); 903 } 904 } 905 }); 906 907 if (maybeHashClose === true) { 908 909 $(document).on("click", '#' + offcanvasID + ' a[href*=\\#]', function (e) { 910 911 e.stopPropagation(); 912 913 if ( ( !$(this).not(".menu-item-has-children > a") ) || $(this).is('[href="#"]' ) ) { 914 return; 915 } 916 917 if ( $(this).is(".oxy-table-of-contents_list-item > a") ) { 918 return; 919 } 920 921 if ( $(this).is(".mm-btn") || $(this).is(".mm-navbar__title") ) { 922 return; 923 } 924 925 926 927 if (this.pathname === window.location.pathname) { 928 closeBurger(); 929 closeLottie(); 930 closeOffCanvas(); 931 } 932 }); 933 934 } 935 936 if (offcanvasPush) { 937 $(offcanvasPushContent).attr('data-offcanvas-push', '#' + offcanvasID); 938 $(offcanvasPushContent).css({ 939 "--offcanvas-push" : offcanvasPush + "px", 940 "--offcanvas-push-duration" : offcanvasPushDuration + 's', 941 }); 942 943 } 944 945 function ariaExpandToggle($state) { 946 if ( true === offCanvas.data('auto-aria') ) { 947 $(triggerSelector).each(function(i,trigger) { 948 if ( $(trigger).hasClass('oxy-burger-trigger') && $(trigger).children('.hamburger').length ) { 949 $(trigger).children('.hamburger').attr('aria-expanded', $state); 950 } else { 951 $(trigger).attr('aria-expanded', $state); 952 $(trigger).attr('role','button'); 953 } 954 }); 955 } 956 } 957 958 function inertToggle($state) { 959 if ( false !== offCanvas.data('inert') ) { 960 if ('true' === $state) { 961 offCanvas.attr('inert',''); 962 } else { 963 offCanvas.removeAttr('inert'); 964 } 965 } 966 } 967 968 function openOffCanvas() { 969 offCanvas.parent().addClass('oxy-off-canvas-toggled'); 970 $(offcanvasPushContent).addClass('oxy-off-canvas-toggled'); 971 $('body,html').addClass('off-canvas-toggled'); 972 $('body,html').addClass('toggled' + offcanvasID); 973 974 if (true === offCanvasStart) { 975 doClose(); 976 } else { 977 doOpen() 978 } 979 980 } 981 982 function closeOffCanvas() { 983 $('body,html').removeClass('off-canvas-toggled'); 984 $('body,html').removeClass('toggled' + offcanvasID); 985 offCanvas.parent().removeClass('oxy-off-canvas-toggled'); 986 $(offcanvasPushContent).removeClass('oxy-off-canvas-toggled'); 987 988 if (true === offCanvasStart) { 989 doOpen() 990 } else { 991 doClose(); 992 } 993 994 } 995 996 function doOpen() { 997 offCanvas.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); 998 offCanvas.parent('.oxy-off-canvas').trigger('extras_offcanvas:open'); 999 1000 inertToggle('false') 1001 setTimeout(function() { 1002 offCanvas.attr('aria-hidden','false'); 1003 }, 0); 1004 1005 ariaExpandToggle('true'); 1006 1007 1008 1009 if (offCanvasFocusSelector) { 1010 setTimeout(function() { 1011 offCanvas.parent().find(offCanvasFocusSelector).eq(0).focus(); 1012 }, 0); 1013 } 1014 } 1015 1016 function doClose() { 1017 inertToggle('true'); 1018 offCanvas.attr('aria-hidden','true'); 1019 1020 setTimeout(function(){ 1021 offCanvas.find(".aos-animate").removeClass("aos-animate").addClass("aos-animate-disabled"); 1022 }, reset); // wait before removing the animate class 1023 1024 $(offCanvas).parent('.oxy-off-canvas').trigger('extras_offcanvas:close'); 1025 if (otherOffcanvas) { 1026 $(otherOffcanvas).children('.offcanvas-inner').attr('aria-hidden','true'); 1027 $(otherOffcanvas).children('.offcanvas-inner').removeAttr('inert'); 1028 $(otherOffcanvas).removeClass('oxy-off-canvas-toggled'); 1029 } 1030 1031 ariaExpandToggle('false'); 1032 1033 mediaPlayer.each(function() { 1034 $(this)[0].pause(); // turn off any pro media players 1035 }); 1036 1037 setTimeout(function() { 1038 1039 if (!!previousFocus) { 1040 1041 if ( $(previousFocus).find('.hamburger') ) { 1042 $(previousFocus).find('.hamburger').focus(); 1043 } else { 1044 $(previousFocus).focus(); 1045 } 1046 } 1047 1048 }, 0); 1049 } 1050 1051 function closeBurger() { 1052
1053 if ( ( $(triggerSelector).children('.hamburger').length > 0) && ($(this).children('.hamburger').data('animation') !== 'disable')) { 1054 $(triggerSelector).children('.hamburger').removeClass('is-active'); 1055 } 1056 } 1057 1058 function closeLottie() { 1059 1060 if ( ( $(triggerSelector).children('lottie-player').length > 0) ) { 1061 $(triggerSelector).children('lottie-player').trigger('click'); 1062 } 1063 } 1064 1065 /* For programmatically opening */ 1066 function extrasOpenOffcanvas($extras_offcanvas) { 1067 1068 var thisOffcanvas = $($extras_offcanvas); 1069 var thisoffcanvasPushContent = thisOffcanvas.children('.offcanvas-inner').data('content-selector'); 1070 var thisoffCanvasFocusSelector = thisOffcanvas.children('.offcanvas-inner').data('focus-selector'); 1071 1072 thisOffcanvas.addClass('oxy-off-canvas-toggled'); 1073 $(offcanvasPushContent).addClass('oxy-off-canvas-toggled'); 1074 offCanvas.attr('aria-hidden','false'); 1075 $('body,html').addClass('off-canvas-toggled'); 1076 thisOffcanvas.find(".aos-animate-disabled").removeClass("aos-animate-disabled").addClass("aos-animate"); 1077 thisOffcanvas.trigger('extras_offcanvas:open'); 1078 1079 if (thisoffCanvasFocusSelector) { 1080 thisOffcanvas.find(thisoffCanvasFocusSelector).eq(0).focus(); 1081 } 1082 1083 } 1084 1085 if (true !== offCanvasStart) { 1086 offCanvas.attr('aria-hidden','true'); 1087 inertToggle('true'); 1088 } else { 1089 offCanvas.attr('aria-hidden','false'); 1090 } 1091 1092 // Expose function 1093 window.extrasOpenOffcanvas = extrasOpenOffcanvas; 1094 1095 var stagger = offCanvas.data('stagger'); 1096 1097 // Make sure AOS animations are reset for elements inside after everything has loaded 1098 setTimeout(function(){ 1099 if (! offCanvas.hasClass('oxy-off-canvas-toggled') ) { 1100 offCanvas.find(".aos-animate:not(.oxy-off-canvas-toggled .aos-animate)").addClass("aos-animate-disabled").removeClass("aos-animate"); 1101 } 1102 }, 40); // wait 1103 1104 if (stagger != null) { 1105 1106 var delay = offCanvas.data('first-delay'); 1107 offCanvas.find('[data-aos]').not('.not-staggered').each(function() { 1108 delay = delay + stagger; 1109 1110 $(this).attr('data-aos-delay', delay); 1111 }); 1112 1113 } 1114 1115 }); 1116} 1117 1118; 1119window.WP_Grid_Builder && WP_Grid_Builder.on( 'init', onInit ); 1120 1121function onInit( wpgb ) { 1122 wpgb.facets && wpgb.facets.on( 'appended', onAppended ); 1123} 1124 1125function onAppended( content ) { 1126 1127 /* Lightbox */ 1128 if (typeof doExtrasLightbox == 'function' && jQuery(content).has('.oxy-lightbox')) { 1129 doExtrasLightbox(jQuery(content)); 1130 } 1131 1132 /* Read More / Less */ 1133 if (typeof doExtrasReadmore == 'function' && jQuery(content).has('.oxy-read-more-less')) { 1134 doExtrasReadmore(jQuery(content)); 1135 } 1136 1137 /* Tabs */ 1138 if (typeof doExtrasTabs == 'function' && jQuery(content).has('.oxy-dynamic-tabs')) { 1139 doExtrasTabs(jQuery(content)); 1140 } 1141 1142 /* Accordion */ 1143 if (typeof doExtrasAccordion == 'function' && jQuery(content).has('.oxy-pro-accordion')) { 1144 doExtrasAccordion(jQuery(content)); 1145 } 1146 1147 /* Carousel */ 1148 if (typeof doExtrasCarousel == 'function' && jQuery(content).has('.oxy-carousel-builder')) { 1149 doExtrasCarousel(jQuery(content)); 1150 } 1151 1152 /* Popover */ 1153 if (typeof doExtrasPopover == 'function' && jQuery(content).has('.oxy-popover')) { 1154 doExtrasPopover(jQuery(content)); 1155 } 1156 1157 /* copy to clipboard */ 1158 if (typeof doCopyToClipboard == 'function' && jQuery(content).has('.oxy-copy-to-clipboard')) { 1159 doCopyToClipboard(jQuery(content)); 1160 } 1161 1162 /* social share */ 1163 if (typeof doExtrasSocialShare == 'function' && jQuery(content).has('.oxy-share-button')) { 1164 doExtrasSocialShare(jQuery(content)); 1165 } 1166 1167 1168 content.forEach((container) => { 1169 1170 /* print */ 1171 if (typeof doExtrasSocialSharePrint == 'function' && jQuery(content).has('.oxy-share-button.print')) { 1172 doExtrasSocialSharePrint(container); 1173 } 1174 1175 }) 1176 1177 1178 1179 1180 1181} ;
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.