vendor: 10,174 bytes, lines 1-8
1 2/*! 3 * shariff - v3.2.1 - Mon, 27 May 2019 08:23:32 GMT 4 * https://github.com/heiseonline/shariff 5 * Copyright (c) 2019 Ines Pauer, Philipp Busse, Sebastian Hilbig, Erich Kramer, Deniz Sesli 6 * Licensed under the MIT license 7 */ 8!function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function n(e,t,r){if(e&&p.isObject(e)&&e instanceof a)return e;var n=new a;return n.parse(e,t,r),n}function i(e){return p.isString(e)&&(e=n(e)),e instanceof a?e.format():a.prototype.format.call(e)}function o(e,t){return n(e,!1,!0).resolve(t)}function s(e,t){return e?n(e,!1,!0).resolveObject(t):t}var l=r(10),p=r(12);t.parse=n,t.resolve=o,t.resolveObject=s,t.format=i,t.Url=a;var u=/^([a-z0-9.+-]+:)/i,h=/:[0-9]*$/,d=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["<",">",'"',"`"," ","\r","\n","\t"],f=["{","}","|","\\","^","`"].concat(c),m=["'"].concat(f),b=["%","/","?",";","#"].concat(m),g=["/","?","#"],v=/^[+a-z0-9A-Z_-]{0,63}$/,k=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,j={javascript:!0,"javascript:":!0},z={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},P=r(13);a.prototype.parse=function(e,t,r){if(!p.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),n=-1!==a&&a<e.indexOf("#")?"?":"#",i=e.split(n),o=/\\/g;i[0]=i[0].replace(o,"/"),e=i.join(n);var s=e;if(s=s.trim(),!r&&1===e.split("#").length){var h=d.exec(s);if(h)return this.path=s,this.href=s,this.pathname=h[1],h[2]?(this.search=h[2],this.query=t?P.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var c=u.exec(s);if(c){c=c[0];var f=c.toLowerCase();this.protocol=f,s=s.substr(c.length)}if(r||c||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var T="//"===s.substr(0,2);!T||c&&z[c]||(s=s.substr(2),this.slashes=!0)}if(!z[c]&&(T||c&&!y[c])){for(var w=-1,x=0;x<g.length;x++){var U=s.indexOf(g[x]);-1!==U&&(-1===w||U<w)&&(w=U)}var C,R;R=-1===w?s.lastIndexOf("@"):s.lastIndexOf("@",w),-1!==R&&(C=s.slice(0,R),s=s.slice(R+1),this.auth=decodeURIComponent(C)),w=-1;for(var x=0;x<b.length;x++){var U=s.indexOf(b[x]);-1!==U&&(-1===w||U<w)&&(w=U)}-1===w&&(w=s.length),this.host=s.slice(0,w),s=s.slice(w),this.parseHost(),this.hostname=this.hostname||"";var I="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!I)for(var D=this.hostname.split(/\./),x=0,S=D.length;x<S;x++){var L=D[x];if(L&&!L.match(v)){for(var N="",O=0,F=L.length;O<F;O++)L.charCodeAt(O)>127?N+="x":N+=L[O];if(!N.match(v)){var A=D.slice(0,x),q=D.slice(x+1),M=L.match(k);M&&(A.push(M[1]),q.unshift(M[2])),q.length&&(s="/"+q.join(".")+s),this.hostname=A.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=l.toASCII(this.hostname));var J=this.port?":"+this.port:"",V=this.hostname||"";this.host=V+J,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!j[f])for(var x=0,S=m.length;x<S;x++){var W=m[x];if(-1!==s.indexOf(W)){var G=encodeURIComponent(W);G===W&&(G=escape(W)),s=s.split(W).join(G)}}var Q=s.indexOf("#");-1!==Q&&(this.hash=s.substr(Q),s=s.slice(0,Q));var B=s.indexOf("?");if(-1!==B?(this.search=s.substr(B),this.query=s.substr(B+1),t&&(this.query=P.parse(this.query)),s=s.slice(0,B)):t&&(this.search="",this.query={}),s&&(this.pathname=s),y[f]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var J=this.pathname||"",X=this.search||"";this.path=J+X}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",a=this.hash||"",n=!1,i="";this.host?n=e+this.host:this.hostname&&(n=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(n+=":"+this.port)),this.query&&p.isObject(this.query)&&Object.keys(this.query).length&&(i=P.stringify(this.query));var o=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||y[t])&&!1!==n?(n="//"+(n||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):n||(n=""),a&&"#"!==a.charAt(0)&&(a="#"+a),o&&"?"!==o.charAt(0)&&(o="?"+o),r=r.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),o=o.replace("#","%23"),t+n+r+o+a},a.prototype.resolve=function(e){return this.resolveObject(n(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(p.isString(e)){var t=new a;t.parse(e,!1,!0),e=t}for(var r=new a,n=Object.keys(this),i=0;i<n.length;i++){var o=n[i];r[o]=this[o]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var s=Object.keys(e),l=0;l<s.length;l++){var u=s[l];"protocol"!==u&&(r[u]=e[u])}return y[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!y[e.protocol]){for(var h=Object.keys(e),d=0;d<h.length;d++){var c=h[d];r[c]=e[c]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||z[e.protocol])r.pathname=e.pathname;else{for(var f=(e.pathname||"").split("/");f.length&&!(e.host=f.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==f[0]&&f.unshift(""),f.length<2&&f.unshift(""),r.pathname=f.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var m=r.pathname||"",b=r.search||"";r.path=m+b}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var g=r.pathname&&"/"===r.pathname.charAt(0),v=e.host||e.pathname&&"/"===e.pathname.charAt(0),k=v||g||r.host&&e.pathname,j=k,P=r.pathname&&r.pathname.split("/")||[],f=e.pathname&&e.pathname.split("/")||[],T=r.protocol&&!y[r.protocol];if(T&&(r.hostname="",r.port=null,r.host&&(""===P[0]?P[0]=r.host:P.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===f[0]?f[0]=e.host:f.unshift(e.host)),e.host=null),k=k&&(""===f[0]||""===P[0])),v)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,P=f;else if(f.length)P||(P=[]),P.pop(),P=P.concat(f),r.search=e.search,r.query=e.query;else if(!p.isNullOrUndefined(e.search)){if(T){r.hostname=r.host=P.shift();var w=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");w&&(r.auth=w.shift(),r.host=r.hostname=w.shift())}return r.search=e.search,r.query=e.query,p.isNull(r.pathname)&&p.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!P.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var x=P.slice(-1)[0],U=(r.host||e.host||P.length>1)&&("."===x||".."===x)||""===x,C=0,R=P.length;R>=0;R--)x=P[R],"."===x?P.splice(R,1):".."===x?(P.splice(R,1),C++):C&&(P.splice(R,1),C--);if(!k&&!j)for(;C--;C)P.unshift("..");!k||""===P[0]||P[0]&&"/"===P[0].charAt(0)||P.unshift(""),U&&"/"!==P.join("/").substr(-1)&&P.push("");var I=""===P[0]||P[0]&&"/"===P[0].charAt(0);if(T){r.hostname=r.host=I?"":P.length?P.shift():"";var w=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");w&&(r.auth=w.shift(),r.host=r.hostname=w.shift())}return k=k||r.host&&P.length,k&&!I&&P.unshift(""),P.length?r.pathname=P.join("/"):(r.pathname=null,r.path=null),p.isNull(r.pathname)&&p.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var e=this.host,t=h.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";r(3),e.exports=r(4)},function(e,t){},function(e,t,r){"use strict";(function(t){function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var n="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},i=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),o=r(5),s=r(6),l=r(0),p={theme:"color",backendUrl:null,infoUrl:"http://ct.de/-2467514",infoDisplay:"blank",lang:"de",langFallback:"en",mailUrl:function(){var e=l.parse(this.getURL(),!0);return e.query.view="mail",delete e.search,l.format(e)},mailBody:function(){return this.getURL()},mediaUrl:null,orientation:"horizontal",buttonStyle:"standard",referrerTrack:null,services:["twitter","facebook","info"],title:t.document.title,twitterVia:null,flattrUser:null,flattrCategory:null,url:function(){var e=t.document.location.href,r=o("link[rel=canonical]").attr("href")||this.getMeta("og:url")||"";return r.length>0&&(r.indexOf("http")<0&&(r=0!==r.indexOf("//")?t.document.location.protocol+"//"+t.document.location.host+r:t.document.location.protocol+r),e=r),e}},u=function(){function e(t,r){var n=this;a(this,e),this.element=t,o(t).empty(),this.options=o.extend({},p,r,o(t).data()),this.services=Object.keys(s).filter(function(e){return n.isEnabledService(e)}).sort(function(e,t){var r=n.options.services;return r.indexOf(e)-r.indexOf(t)}).map(function(e){return s[e](n)}),this._addButtonList(),null!==this.options.backendUrl&&"icon"!==this.options.buttonStyle&&this.get
vendor: 4,524 bytes, line 8
8Shares(this._updateCounts.bind(this))}return i(e,[{key:"isEnabledService",value:function(e){return this.options.services.indexOf(e)>-1}},{key:"$socialshareElement",value:function(){return o(this.element)}},{key:"getLocalized",value:function(e,t){return"object"===n(e[t])?void 0===e[t][this.options.lang]?e[t][this.options.langFallback]:e[t][this.options.lang]:"string"==typeof e[t]?e[t]:void 0}},{key:"getMeta",value:function(e){return o('meta[name="'+e+'"],[property="'+e+'"]').attr("content")||""}},{key:"getInfoUrl",value:function(){return this.options.infoUrl}},{key:"getInfoDisplayPopup",value:function(){return"popup"===this.options.infoDisplay}},{key:"getInfoDisplayBlank",value:function(){return"popup"!==this.options.infoDisplay&&"self"!==this.options.infoDisplay}},{key:"getURL",value:function(){return this.getOption("url")}},{key:"getOption",value:function(e){var t=this.options[e];return"function"==typeof t?t.call(this):t}},{key:"getTitle",value:function(){var e=this.getOption("title");if(o(this.element).data().title)return e;e=e||this.getMeta("DC.title");var t=this.getMeta("DC.creator");return e&&t?e+" - "+t:e}},{key:"getReferrerTrack",value:function(){return this.options.referrerTrack||""}},{key:"getShares",value:function(e){var t=l.parse(this.options.backendUrl,!0);return t.query.url=this.getURL(),delete t.search,o.getJSON(l.format(t),e)}},{key:"_updateCounts",value:function(e,t,r){var a=this;e&&o.each(e,function(e,t){a.isEnabledService(e)&&(t>=1e3&&(t=Math.round(t/1e3)+"k"),o(a.element).find("."+e+" a").append(o("<span/>").addClass("share_count").text(t)))})}},{key:"_addButtonList",value:function(){var e=this,r=o("<ul/>").addClass(["theme-"+this.options.theme,"orientation-"+this.options.orientation,"button-style-"+this.options.buttonStyle,"shariff-col-"+this.options.services.length].join(" "));this.services.forEach(function(t){var a=o("<li/>").addClass("shariff-button "+t.name),n=o("<a/>").attr("href",t.shareUrl);if("standard"===e.options.buttonStyle){var i=o("<span/>").addClass("share_text").text(e.getLocalized(t,"shareText"));n.append(i)}void 0!==t.faPrefix&&void 0!==t.faName&&n.prepend(o("<span/>").addClass(t.faPrefix+" "+t.faName)),t.popup?(n.attr("data-rel","popup"),"info"!==t.name&&n.attr("rel","nofollow")):t.blank?(n.attr("target","_blank"),"info"===t.name?n.attr("rel","noopener noreferrer"):n.attr("rel","nofollow noopener noreferrer")):"info"!==t.name&&n.attr("rel","nofollow"),n.attr("title",e.getLocalized(t,"title")),n.attr("role","button"),n.attr("aria-label",e.getLocalized(t,"title")),a.append(n),r.append(a)}),r.on("click",'[data-rel="popup"]',function(e){e.preventDefault();var r=o(this).attr("href");if(r.match(/twitter\.com\/intent\/(\w+)/)){var a=t.window;if(a.__twttr&&a.__twttr.widgets&&a.__twttr.widgets.loaded)return}t.window.open(r,"_blank","width=600,height=460")}),this.$socialshareElement().append(r)}}]),e}();e.exports=u,t.Shariff=u,o(function(){o(".shariff").each(function(){this.hasOwnProperty("shariff")||(this.shariff=new u(this))})})}).call(t,r(1))},function(e,t){e.exports=jQuery},function(e,t,r){"use strict";e.exports={addthis:r(7),buffer:r(8),diaspora:r(9),facebook:r(16),flattr:r(17),flipboard:r(18),info:r(19),linkedin:r(20),mail:r(21),pinterest:r(22),pocket:r(23),print:r(24),qzone:r(25),reddit:r(26),stumbleupon:r(27),telegram:r(28),tencent:r(29),threema:r(30),tumblr:r(31),twitter:r(32),vk:r(33),weibo:r(34),whatsapp:r(35),xing:r(36)}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"addthis",faPrefix:"fas",faName:"fa-plus",title:{bg:"Сподели в AddThis",cs:"SdÃlet na AddThis",da:"Del pÃ¥ AddThis",de:"Bei AddThis teilen",en:"Share on AddThis",es:"Compartir en AddThis",fi:"Jaa AddThisissä",fr:"Partager sur AddThis",hr:"Podijelite na AddThis",hu:"Megosztás AddThisen",it:"Condividi su AddThis",ja:"AddThisä¸ã§å
±æ",ko:"AddThisìì ê³µì í기",nl:"Delen op AddThis",no:"Del pÃ¥ AddThis",pl:"UdostÄpnij przez AddThis",pt:"Compartilhar no AddThis",ro:"PartajeazÄ pe AddThis",ru:"ÐоделиÑÑÑÑ Ð½Ð° AddThis",sk:"ZdieľaÅ¥ na AddThis",sl:"Deli na AddThis",sr:"Podeli na AddThis",sv:"Dela pÃ¥ AddThis",tr:"AddThis'ta payla
8Å",zh:"å¨AddThisä¸å享"},shareUrl:"http://api.addthis.com/oexchange/0.8/offer?url="+encodeURIComponent(e.getURL())+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL());return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"buffer",faPrefix:"fab",faName:"fa-buffer",title:{bg:"Сподели в buffer",cs:"SdÃlet na buffer",da:"Del pÃ¥ buffer",de:"Bei buffer teilen",en:"Share on buffer",es:"Compartir en buffer",fi:"Jaa bufferissä",fr:"Partager sur buffer",hr:"Podijelite na buffer",hu:"Megosztás bufferen",it:"Condividi su buffer",ja:"bufferä¸ã§å
±æ",ko:"bufferìì ê³µì í기",nl:"Delen op buffer",no:"Del pÃ¥ buffer",pl:"UdostÄpnij przez buffer",pt:"Compartilhar no buffer",ro:"PartajeazÄ pe buffer",ru:"ÐоделиÑÑÑÑ Ð½Ð° buffer",sk:"ZdieľaÅ¥ na buffer",sl:"Deli na buffer",sr:"Podeli na buffer",sv:"Dela pÃ¥ buffer",tr:"buffer'ta paylaÅ",zh:"å¨bufferä¸å享"},shareUrl:"https://buffer.com/add?text="+encodeURIComponent(e.getTitle())+"&url="+t+e.getReferrerTrack()}}},function(e,t,r){"use strict";var a=r(0);e.exports=function(e){var t=a.parse("https://share.diasporafoundation.org/",!0);return t.query.url=e.getURL(),t.query.title=e.getTitle(),t.protocol="https",delete t.search,{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"diaspora",faPrefix:"fas",faName:"fa-asterisk",title:{bg:"Сподели в diaspora*",cs:"SdÃlet na diaspora*",da:"Del pÃ¥ diaspora*",de:"Bei diaspora* teilen",en:"Share on diaspora*",es:"Compartir en diaspora*",fi:"Jaa Diasporaissä",fr:"Partager sur diaspora*",hr:"Podijelite na diaspora*",hu:"Megosztás diaspora*",it:"Condividi su diaspora*",ja:"diaspora*ä¸ã§å
±æ",ko:"diaspora*ìì ê³µì í기",nl:"Delen op diaspora*",no:"Del pÃ¥ diaspora*",pl:"UdostÄpnij przez diaspora*",pt:"Compartilhar no diaspora*",ro:"PartajeazÄ pe diaspora*",ru:"ÐоделиÑÑÑÑ Ð½Ð° diaspora*",sk:"ZdieľaÅ¥ na diaspora*",sl:"Deli na diaspora*",sr:"Podeli na diaspora*-u",sv:"Dela pÃ¥ diaspora*",tr:"diaspora*'ta paylaÅ",zh:"å享è³diaspora*"},shareUrl:a.format(t)+e.getReferrerTrack()}}},function(e,t,r){(function(e,a){var n;!function(a){function i(e){throw new RangeError(I[e])}function o(e,t){for(var r=e.length,a=[];r--;)a[r]=t(e[r]);return a}function s(e,t){var r=e.split("@"),a="";return r.length>1&&(a=r[0]+"@",e=r[1]),e=e.replace(R,"."),a+o(e.split("."),t).join(".")}function l(e){for(var t,r,a=[],n=0,i=e.length;n<i;)t=e.charCodeAt(n++),t>=55296&&t<=56319&&n<i?(r=e.charCodeAt(n++),56320==(64512&r)?a.push(((1023&t)<<10)+(1023&r)+65536):(a.push(t),n--)):a.push(t);return a}function p(e){return o(e,function(e){var t="";return e>65535&&(e-=65536,t+=L(e>>>10&1023|55296),e=56320|1023&e),t+=L(e)}).join("")}function u(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:k}function h(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function d(e,t,r){var a=0;for(e=r?S(e/P):e>>1,e+=S(e/t);e>D*z>>1;a+=k)e=S(e/D);return S(a+(D+1)*e/(e+y))}function c(e){var t,r,a,n,o,s,l,h,c,f,m=[],b=e.length,g=0,y=w,P=T;for(r=e.lastIndexOf(x),r<0&&(r=0),a=0;a<r;++a)e.charCodeAt(a)>=128&&i("not-basic"),m.push(e.charCodeAt(a));for(n=r>0?r+1:0;n<b;){for(o=g,s=1,l=k;n>=b&&i("invalid-input"),h=u(e.charCodeAt(n++)),(h>=k||h>S((v-g)/s))&&i("overflow"),g+=h*s,c=l<=P?j:l>=P+z?z:l-P,!(h<c);l+=k)f=k-c,s>S(v/f)&&i("overflow"),s*=f;t=m.length+1,P=d(g-o,t,0==o),S(g/t)>v-y&&i("overflow"),y+=S(g/t),g%=t,m.splice(g++,0,y)}return p(m)}function f(e){var t,r,a,n,o,s,p,u,c,f,m,b,g,y,P,U=[];for(e=l(e),b=e.length,t=w,r=0,o=T,s=0;s<b;
8++s)(m=e[s])<128&&U.push(L(m));for(a=n=U.length,n&&U.push(x);a<b;){for(p=v,s=0;s<b;++s)(m=e[s])>=t&&m<p&&(p=m);for(g=a+1,p-t>S((v-r)/g)&&i("overflow"),r+=(p-t)*g,t=p,s=0;s<b;++s)if(m=e[s],m<t&&++r>v&&i("overflow"),m==t){for(u=r,c=k;f=c<=o?j:c>=o+z?z:c-o,!(u<f);c+=k)P=u-f,y=k-f,U.push(L(h(f+P%y,0))),u=S(P/y);U.push(L(h(u,0))),o=d(r,g,a==n),r=0,++a}++r,++t}return U.join("")}function m(e){return s(e,function(e){return U.test(e)?c(e.slice(4).toLowerCase()):e})}function b(e){return s(e,function(e){return C.test(e)?"xn--"+f(e):e})}var g,v=("object"==typeof t&&t&&t.nodeType,"object"==typeof e&&e&&e.nodeType,2147483647),k=36,j=1,z=26,y=38,P=700,T=72,w=128,x="-",U=/^xn--/,C=/[^\x20-\x7E]/,R=/[\x2E\u3002\uFF0E\uFF61]/g,I={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},D=k-j,S=Math.floor,L=String.fromCharCode;g={version:"1.4.1",ucs2:{decode:l,encode:p},decode:c,encode:f,toASCII:b,toUnicode:m},void 0!==(n=function(){return g}.call(t,r,t,e))&&(e.exports=n)}()}).call(t,r(11)(e),r(1))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,r){"use strict";t.decode=t.parse=r(14),t.encode=t.stringify=r(15)},function(e,t,r){"use strict";function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,i){t=t||"&",r=r||"=";var o={};if("string"!=typeof e||0===e.length)return o;var s=/\+/g;e=e.split(t);var l=1e3;i&&"number"==typeof i.maxKeys&&(l=i.maxKeys);var p=e.length;l>0&&p>l&&(p=l);for(var u=0;u<p;++u){var h,d,c,f,m=e[u].replace(s,"%20"),b=m.indexOf(r);b>=0?(h=m.substr(0,b),d=m.substr(b+1)):(h=m,d=""),c=decodeURIComponent(h),f=decodeURIComponent(d),a(o,c)?n(o[c])?o[c].push(f):o[c]=[o[c],f]:o[c]=f}return o};var n=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";function a(e,t){if(e.map)return e.map(t);for(var r=[],a=0;a<e.length;a++)r.push(t(e[a],a));return r}var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,s){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?a(o(e),function(o){var s=encodeURIComponent(n(o))+r;return i(e[o])?a(e[o],function(e){return s+encodeURIComponent(n(e))}).join(t):s+encodeURIComponent(n(e[o]))}).join(t):s?encodeURIComponent(n(s))+r+encodeURIComponent(n(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},o=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"facebook",faPrefix:"fab",faName:"fa-facebook-f",title:{bg:"Сподели вÑв Facebook",cs:"SdÃlet na Facebooku",da:"Del pÃ¥ Facebook",de:"Bei Facebook teilen",en:"Share on Facebook",es:"Compartir en Facebook",fi:"Jaa Facebookissa",fr:"Partager sur Facebook",hr:"Podijelite na Facebooku",hu:"Megosztás Facebookon",it:"Condividi su Facebook",ja:"ãã§ã¤ã¹ããã¯ä¸ã§å
±æ",ko:"íì´ì¤ë¶ìì ê³µì í기",nl:"Delen op Facebook",no:"Del pÃ¥ Facebook",pl:"UdostÄpnij na Facebooku",pt:"Compartilhar no Facebook",ro:"PartajeazÄ pe Facebook",ru:"ÐоделиÑÑÑÑ Ð½Ð° Facebook",sk:"ZdieľaÅ¥ na Facebooku",sl:"Deli na Facebooku",sr:"Podeli na Facebook-u",sv:"Dela pÃ¥ Facebook",tr:"Facebook'ta payla
8Å",zh:"å¨Facebookä¸å享"},shareUrl:"https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(e.getURL())+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL()),r=e.getTitle(),a=e.getMeta("description");return{popup:!0,shareText:"Flattr",name:"flattr",faPrefix:"far",faName:"fa-money-bill-alt",title:{de:"Artikel flattrn",en:"Flattr this"},shareUrl:"https://flattr.com/submit/auto?title="+encodeURIComponent(r)+"&description="+encodeURIComponent(a)+"&category="+encodeURIComponent(e.options.flattrCategory||"text")+"&user_id="+encodeURIComponent(e.options.flattrUser)+"&url="+t+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL());return{popup:!0,shareText:"flip it",name:"flipboard",faPrefix:"fab",faName:"fa-flipboard",title:{bg:"Сподели в Flipboard",cs:"SdÃlet na Flipboardu",da:"Del pÃ¥ Flipboard",de:"Bei Flipboard teilen",en:"Share on Flipboard",es:"Compartir en Flipboard",fi:"Jaa Flipboardissä",fr:"Partager sur Flipboard",hr:"Podijelite na Flipboardu",hu:"Megosztás Flipboardon",it:"Condividi su Flipboard",ja:"Flipboardä¸ã§å
±æ",ko:"Flipboardìì ê³µì í기",nl:"Delen op Flipboard",no:"Del pÃ¥ Flipboard",pl:"UdostÄpnij na Flipboardu",pt:"Compartilhar no Flipboard",ro:"PartajeazÄ pe Flipboard",ru:"ÐоделиÑÑÑÑ Ð½Ð° Flipboard",sk:"ZdieľaÅ¥ na Flipboardu",sl:"Deli na Flipboardu",sr:"Podeli na Flipboard-u",sv:"Dela pÃ¥ Flipboard",tr:"Flipboard'ta paylaÅ",zh:"å¨Flipboardä¸å享"},shareUrl:"https://share.flipboard.com/bookmarklet/popout?v=2&title="+encodeURIComponent(e.getTitle())+"&url="+t+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{blank:e.getInfoDisplayBlank(),popup:e.getInfoDisplayPopup(),shareText:"Info",name:"info",faPrefix:"fas",faName:"fa-info",title:{bg:"ÐовеÑе инÑоÑмаÑиÑ",cs:"VÃce informacÃ",da:"Flere oplysninger",de:"Weitere Informationen",en:"More information",es:"Más informaciones",fi:"Lisätietoja",fr:"Plus d'informations",hr:"ViÅ¡e informacija",hu:"Több információ",it:"Maggiori informazioni",ja:"詳ããæ
å ±",ko:"ì¶ê° ì ë³´",nl:"Verdere informatie",no:"Mer informasjon",pl:"WiÄcej informacji",pt:"Mais informações",ro:"Mai multe informatii",ru:"ÐолÑÑе инÑоÑмаÑии",sk:"Viac informáciÃ",sl:"VeÄ informacij",sr:"ViÅ¡e informacija",sv:"Mer information",tr:"Daha fazla bilgi",zh:"æ´å¤ä¿¡æ¯"},shareUrl:e.getInfoUrl()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL()),r=encodeURIComponent(e.getTitle());return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"mitteilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"ã·ã§ã¢",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"distribuiÈi",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"linkedin",faPrefix:"fab",faName:"fa-linkedin-in",title:{bg:"Сподели в LinkedIn",cs:"SdÃlet na LinkedIn",da:"Del pÃ¥ LinkedIn",de:"Bei LinkedIn teilen",en:"Share on LinkedIn",es:"Compartir en LinkedIn",fi:"Jaa LinkedInissä",fr:"Partager sur LinkedIn",hr:"Podijelite na LinkedIn",hu:"Megosztás LinkedInen",it:"Condividi su LinkedIn",ja:"LinkedInä¸ã§å
±æ",ko:"LinkedInìì ê³µì í기",nl:"Delen op LinkedIn",no:"Del pÃ¥ LinkedIn",pl:"UdostÄpnij przez LinkedIn",pt:"Compartilhar no LinkedIn",ro:"PartajeazÄ pe LinkedIn",ru:"ÐоделиÑÑÑÑ Ð½Ð° LinkedIn",sk:"ZdieľaÅ¥ na LinkedIn",sl:"Deli na LinkedIn",sr:"Podeli na LinkedIn-u",sv:"Dela pÃ¥ LinkedIn",tr:"LinkedIn'ta paylaÅ",zh:"å¨LinkedInä¸å享"},shareUrl:"https://www.linkedin.com/shareArticle?mini=true&summary="+encodeURIComponent(e.getMeta("description"))+"&title="+r+"&url="+t}}},function(e,t,r){"use strict";e.exports=function(e){var t=e.getOption("mailUrl");return 0===t.indexOf("mailto:")&&(t+="?subject="+encodeURIComponent(e.getOption("mailSubject")||e.getTitle()),t+="&body="+encodeURIComponent(e.getOption("mailBody").replace(/\{url\}/i,e.getURL()))),{blank:0===t.indexOf("http"),popup:!1,shareText:{en:"mail",zh:"å享"},name:"mail",faPrefix:"fas",faName:"fa-envelope",title:{bg:"ÐзпÑаÑи по имейл",cs:"Poslat mailem",da:"Sende via e-mail",de:"Per E-Mail versenden",en:"Send by email",es:"Enviar por email",fi:"Lähetä sähköpostitse",fr:"Envoyer par courriel",hr:"PoÅ¡aljite emailom",hu:"Elküldés e-mailben",it:"Inviare via email",ja:"é»åã¡ã¼ã«ã§éä¿¡",ko:"ì´ë©ì¼ë¡ ë³´ë´ê¸°",nl:"Sturen via e-mail",no:"Send via epost",pl:"WyÅlij e-mailem",pt:"Enviar por e-mail",ro:"Trimite prin e-mail",ru:"ÐÑпÑавиÑÑ Ð¿Ð¾ Ñл. поÑÑе",sk:"PoslaÅ¥ e-mailom",sl:"PoÅ¡lji po elektronski poÅ¡ti",sr:"PoÅ¡alji putem email-a",sv:"Skicka via e-post",tr:"E-posta ile gönder",zh:"éè¿çµåé®ä»¶ä¼ é"},shareUrl:t}}},function(e,t,r){"use strict";var a=r(0);e.exports=function(e){var t=e.getTitle(),r=e.getMeta("DC.creator");r.length>0&&(t+=" - "+r);var n=e.getOption("mediaUrl");(!n||n.length<=0)&&(n=e.getMeta("og:image"));var i=a.parse("https://www.pinterest.com/pin/create/link/",!0);return i.query.url=e.getURL(),i.query.media=n,i.query.description=t,delete i.search,{popup:!0,shareText:"pin it",name:"pinterest",faPrefix:"fab",faName:"fa-pinterest-p",title:{bg:"Сподели в Pinterest",cs:"PÅidat na Pinterest",da:"Del pÃ¥ Pinterest",de:"Bei Pinterest pinnen",en:"Pin it on Pinterest",es:"Compartir en Pinterest",fi:"Jaa Pinterestissä",fr:"Partager sur Pinterest",hr:"Podijelite na Pinterest",hu:"Megosztás Pinteresten",it:"Condividi su Pinterest",ja:"Pinterestä¸ã§å
±æ",ko:"Pinterestìì ê³µì í기",nl:"Delen op Pinterest",no:"Del pÃ¥ Pinterest",pl:"UdostÄpnij przez Pinterest",pt:"Compartilhar no Pinterest",ro:"PartajeazÄ pe Pinterest",ru:"ÐоделиÑÑÑÑ Ð½Ð° Pinterest",sk:"ZdieľaÅ¥ na Pinterest",sl:"Deli na Pinterest",sr:"Podeli na Pinterest-u",sv:"Dela pÃ¥ Pinterest",tr:"Pinterest'ta payla
8Å",zh:"å享è³Pinterest"},shareUrl:a.format(i)+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL());return{popup:!0,shareText:"Pocket",name:"pocket",faPrefix:"fab",faName:"fa-get-pocket",title:{bg:"Ðапазване в Pocket",cs:"Uložit do Pocket",da:"Gem i Pocket",de:"In Pocket speichern",en:"Save to Pocket",es:"Guardar en Pocket",fi:"Tallenna kohtaan Pocket",fr:"Enregistrer dans Pocket",hr:"Spremi u Pocket",hu:'Mentés "Pocket"-be',it:"Salva in Pocket",ja:"ããã±ãããã«ä¿å",ko:"Pocketì ì ì¥",nl:"Opslaan in Pocket",no:"Lagre i Pocket",pl:"Zapisz w Pocket",pt:"Salvar em Pocket",ro:"SalvaÈi în Pocket",ru:"СоÑ
ÑаниÑÑ Ð² Pocket",sk:"UložiÅ¥ do prieÄinka Pocket",sl:"Shrani v Pocket",sr:"SaÄuvaj u Pocket",sv:"Spara till Pocket",tr:"Pocket e kaydet",zh:"ä¿åå°Pocket"},shareUrl:"https://getpocket.com/save?title="+encodeURIComponent(e.getTitle())+"&url="+t+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{name:"print",faPrefix:"fas",faName:"fa-print",popup:!1,shareText:{bg:"",cs:"tlaÄit",da:"",de:"drucken",en:"print",es:"impresión",fi:"",fr:"imprimer",hr:"",hu:"",it:"stampa",ja:"",ko:"",nl:"afdrukken",no:"",pl:"drukuj",pt:"",ro:"",ru:"РаÑпеÑаÑаÑÑ",sk:"",sl:"",sr:"",sv:"",tr:"",zh:""},title:{bg:"",cs:"tlaÄit",da:"",de:"drucken",en:"print",es:"impresión",fi:"",fr:"imprimer",hr:"",hu:"",it:"stampa",ja:"",ko:"",nl:"afdrukken",no:"",pl:"drukuj",pt:"",ro:"",ru:"РаÑпеÑаÑаÑÑ",sk:"",sl:"",sr:"",sv:"",tr:"",zh:""},shareUrl:"javascript:window.print();"}}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"qzone",faPrefix:"fab",faName:"fa-qq",title:{bg:"Сподели в Qzone",cs:"SdÃlet na Qzone",da:"Del pÃ¥ Qzone",de:"Bei Qzone teilen",en:"Share on Qzone",es:"Compartir en Qzone",fi:"Jaa Qzoneissä",fr:"Partager sur Qzone",hr:"Podijelite na Qzone",hu:"Megosztás Qzone",it:"Condividi su Qzone",ja:"Qzoneä¸ã§å
±æ",ko:"Qzoneìì ê³µì í기",nl:"Delen op Qzone",no:"Del pÃ¥ Qzone",pl:"UdostÄpnij przez Qzone",pt:"Compartilhar no Qzone",ro:"PartajeazÄ pe Qzone",ru:"ÐоделиÑÑÑÑ Ð½Ð° Qzone",sk:"ZdieľaÅ¥ na Qzone",sl:"Deli na Qzone",sr:"Podeli na Qzone-u",sv:"Dela pÃ¥ Qzone",tr:"Qzone'ta paylaÅ",zh:"å享è³QQ空é´"},shareUrl:"http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url="+encodeURIComponent(e.getURL())+"&title="+e.getTitle()+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL()),r=encodeURIComponent(e.getTitle());return""!==r&&(r="&title="+r),{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"reddit",faPrefix:"fab",faName:"fa-reddit-alien",title:{bg:"Сподели в Reddit",cs:"SdÃlet na Redditu",da:"Del pÃ¥ Reddit",de:"Bei Reddit teilen",en:"Share on Reddit",es:"Compartir en Reddit",fi:"Jaa Redditissä",fr:"Partager sur Reddit",hr:"Podijelite na Reddit",hu:"Megosztás Redditen",it:"Condividi su Reddit",ja:"Redditä¸ã§å
±æ",ko:"Redditìì ê³µì í기",nl:"Delen op Reddit",no:"Del pÃ¥ Reddit",pl:"UdostÄpnij przez Reddit",pt:"Compartilhar no Reddit",ro:"PartajeazÄ pe Reddit",ru:"ÐоделиÑÑÑÑ Ð½Ð° Reddit",sk:"ZdieľaÅ¥ na Reddit",sl:"Deli na Reddit",sr:"Podeli na Reddit-u",sv:"Dela pÃ¥ Reddit",tr:"Reddit'ta paylaÅ",zh:"å享è³Reddit"},shareUrl:"https://reddit.com/submit?url="+t+r+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL()),r=encodeURIComponent(e.getTitle());return""!==r&&(r="&title="+r),{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"stumbleupon",faPrefix:"fab",faName:"fa-stumbleupon",title:{bg:"Сподели в Stumbleupon",cs:"SdÃlet na Stumbleuponu",da:"Del pÃ¥ Stumbleupon",de
vendor: 4,562 bytes, line 8
8:"Bei Stumbleupon teilen",en:"Share on Stumbleupon",es:"Compartir en Stumbleupon",fi:"Jaa Stumbleuponissä",fr:"Partager sur Stumbleupon",hr:"Podijelite na Stumbleupon",hu:"Megosztás Stumbleupon",it:"Condividi su Stumbleupon",ja:"Stumbleuponä¸ã§å
±æ",ko:"Stumbleuponìì ê³µì í기",nl:"Delen op Stumbleupon",no:"Del pÃ¥ Stumbleupon",pl:"UdostÄpnij przez Stumbleupon",pt:"Compartilhar no Stumbleupon",ro:"PartajeazÄ pe Stumbleupon",ru:"ÐоделиÑÑÑÑ Ð½Ð° Stumbleupon",sk:"ZdieľaÅ¥ na Stumbleupon",sl:"Deli na Stumbleupon",sr:"Podeli na Stumbleupon-u",sv:"Dela pÃ¥ Stumbleupon",tr:"Stumbleupon'ta paylaÅ",zh:"å享è³Stumbleupon"},shareUrl:"https://www.stumbleupon.com/submit?url="+t+r+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"telegram",faPrefix:"fab",faName:"fa-telegram",title:{bg:"Сподели в Telegram",cs:"SdÃlet na Telegramu",da:"Del pÃ¥ Telegram",de:"Bei Telegram teilen",en:"Share on Telegram",es:"Compartir en Telegram",fi:"Jaa Telegramissä",fr:"Partager sur Telegram",hr:"Podijelite na Telegram",hu:"Megosztás Telegramen",it:"Condividi su Telegram",ja:"Telegramä¸ã§å
±æ",ko:"Telegramìì ê³µì í기",nl:"Delen op Telegram",no:"Del pÃ¥ Telegram",pl:"UdostÄpnij przez Telegram",pt:"Compartilhar no Telegram",ro:"PartajeazÄ pe Telegram",ru:"ÐоделиÑÑÑÑ Ð½Ð° Telegram",sk:"ZdieľaÅ¥ na Telegram",sl:"Deli na Telegram",sr:"Podeli na Telegram-u",sv:"Dela pÃ¥ Telegram",tr:"Telegram'ta paylaÅ",zh:"å¨Telegramä¸å享"},shareUrl:"https://t.me/share/url?url="+encodeURIComponent(e.getURL())+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"tencent-weibo",faPrefix:"fab",faName:"fa-tencent-weibo",title:{bg:"Сподели в tencent weibo",cs:"SdÃlet na tencent weibo",da:"Del pÃ¥ tencent weibo",de:"Bei tencent weibo teilen",en:"Share on tencent weibo",es:"Compartir en tencent weibo",fi:"Jaa tencent weiboissä",fr:"Partager sur tencent weibo",hr:"Podijelite na tencent weibo",hu:"Megosztás tencent weiboen",it:"Condividi su tencent weibo",ja:"Tencent weiboä¸ã§å
±æ",ko:"Tencent weiboìì ê³µì í기",nl:"Delen op tencent weibo",no:"Del pÃ¥ tencent weibo",pl:"UdostÄpnij przez tencent weibo",pt:"Compartilhar no tencent weibo",ro:"PartajeazÄ pe tencent weibo",ru:"ÐоделиÑÑÑÑ Ð½Ð° tencent weibo",sk:"ZdieľaÅ¥ na tencent weibo",sl:"Deli na tencent weibo",sr:"Podeli na tencent weibo-u",sv:"Dela pÃ¥ tencent weibo",tr:"Tencent weibo'ta paylaÅ",zh:"å享è³è
¾è®¯å¾®å"},shareUrl:"http://v.t.qq.com/share/share.php?url="+encodeURIComponent(e.getURL())+"&title="+e.getTitle()+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL()),r=e.getTitle();return{popup:!1,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"threema",faPrefix:"fas",faName:"fa-lock",title:{bg:"Сподели в Threema",cs:"SdÃlet na Threema",da:"Del pÃ¥ Threema",de:"Bei Threema teilen",en:"Share on Threema",es:"Compartir en Threema",fi:"Jaa Threemaissä",fr:"Partager sur Threema",hr:"Podijelite na Threema",hu:"Megosztás Threemaen",it:"Condividi su Threema",ja:"Threemaä¸ã§å
±æ",ko:"Threemaìì ê³µì í기",nl:"Delen op Threema",no:"Del pÃ¥ Threema",pl:"UdostÄpnij przez Threema",pt:"Compartilhar no Threema",ro:"PartajeazÄ pe Threema",ru:"ÐоделиÑÑÑÑ Ð½Ð° Threema",sk:"ZdieľaÅ¥ na Threema",sl:"Deli na Threema",sr:"Podeli na Threema-u",sv:"Dela pÃ¥ Threema",tr:"Threema'ta payla
8Å",zh:"å¨Threemaä¸å享"},shareUrl:"threema://compose?text="+encodeURIComponent(r)+"%20"+t+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"tumblr",faPrefix:"fab",faName:"fa-tumblr",title:{bg:"Сподели в tumblr",cs:"SdÃlet na tumblru",da:"Del pÃ¥ tumblr",de:"Bei tumblr teilen",en:"Share on tumblr",es:"Compartir en tumblr",fi:"Jaa tumblrissä",fr:"Partager sur tumblr",hr:"Podijelite na tumblr",hu:"Megosztás tumblren",it:"Condividi su tumblr",ja:"tumblrä¸ã§å
±æ",ko:"tumblrìì ê³µì í기",nl:"Delen op tumblr",no:"Del pÃ¥ tumblr",pl:"UdostÄpnij przez tumblr",pt:"Compartilhar no tumblr",ro:"PartajeazÄ pe tumblr",ru:"ÐоделиÑÑÑÑ Ð½Ð° tumblr",sk:"ZdieľaÅ¥ na tumblr",sl:"Deli na tumblr",sr:"Podeli na tumblr-u",sv:"Dela pÃ¥ tumblr",tr:"tumblr'ta paylaÅ",zh:"å¨tumblrä¸å享"},shareUrl:"http://tumblr.com/widgets/share/tool?canonicalUrl="+encodeURIComponent(e.getURL())+e.getReferrerTrack()}}},function(e,t,r){"use strict";var a=r(0),n=function(e,t){var r=document.createElement("div"),a=document.createTextNode(e);r.appendChild(a);var n=r.textContent;if(n.length<=t)return e;var i=n.substring(0,t-1).lastIndexOf(" ");return n=n.substring(0,i)+"â¦"};e.exports=function(e){var t=a.parse("https://twitter.com/intent/tweet",!0),r=e.getTitle();return t.query.text=n(r,120),t.query.url=e.getURL(),null!==e.options.twitterVia&&(t.query.via=e.options.twitterVia),delete t.search,{popup:!0,shareText:{en:"tweet",ja:"ã®ã¤ã¶ãã",ko:"짹짹",ru:"ÑвиÑ",sr:"ÑвееÑ",zh:"鸣å«"},name:"twitter",faPrefix:"fab",faName:"fa-twitter",title:{bg:"Сподели в Twitter",cs:"SdÃlet na Twiiteru",da:"Del pÃ¥ Twitter",de:"Bei Twitter teilen",en:"Share on Twitter",es:"Compartir en Twitter",fi:"Jaa Twitterissä",fr:"Partager sur Twitter",hr:"Podijelite na Twitteru",hu:"Megosztás Twitteren",it:"Condividi su Twitter",ja:"ãã¤ãã¿ã¼ä¸ã§å
±æ",ko:"í¸ìí°ìì ê³µì í기",nl:"Delen op Twitter",no:"Del pÃ¥ Twitter",pl:"UdostÄpnij na Twitterze",pt:"Compartilhar no Twitter",ro:"PartajeazÄ pe Twitter",ru:"ÐоделиÑÑÑÑ Ð½Ð° Twitter",sk:"ZdieľaÅ¥ na Twitteri",sl:"Deli na Twitterju",sr:"Podeli na Twitter-u",sv:"Dela pÃ¥ Twitter",tr:"Twitter'da paylaÅ",zh:"å¨Twitterä¸å享"},shareUrl:a.format(t)+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"vk",faPrefix:"fab",faName:"fa-vk",title:{bg:"Сподели вÑв VK",cs:"SdÃlet na VKu",da:"Del pÃ¥ VK",de
vendor: 4,149 bytes, line 8
8:"Bei VK teilen",en:"Share on VK",es:"Compartir en VK",fi:"Jaa VKissa",fr:"Partager sur VK",hr:"Podijelite na VKu",hu:"Megosztás VKon",it:"Condividi su VK",ja:"ãã§ã¤ã¹ããã¯ä¸ã§å
±æ",ko:"íì´ì¤ë¶ìì ê³µì í기",nl:"Delen op VK",no:"Del pÃ¥ VK",pl:"UdostÄpnij na VKu",pt:"Compartilhar no VK",ro:"PartajeazÄ pe VK",ru:"ÐоделиÑÑÑÑ Ð½Ð° ÐÐонÑакÑе",sk:"ZdieľaÅ¥ na VKu",sl:"Deli na VKu",sr:"Podeli na VK-u",sv:"Dela pÃ¥ VK",tr:"VK'ta paylaÅ",zh:"å¨VKä¸å享"},shareUrl:"https://vk.com/share.php?url="+encodeURIComponent(e.getURL())+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"weibo",faPrefix:"fab",faName:"fa-weibo",title:{bg:"Сподели в weibo",cs:"SdÃlet na weibo",da:"Del pÃ¥ weibo",de:"Bei weibo teilen",en:"Share on weibo",es:"Compartir en weibo",fi:"Jaa weiboissä",fr:"Partager sur weibo",hr:"Podijelite na weibo",hu:"Megosztás weiboen",it:"Condividi su weibo",ja:"Weiboä¸ã§å
±æ",ko:"Weiboìì ê³µì í기",nl:"Delen op weibo",no:"Del pÃ¥ weibo",pl:"UdostÄpnij przez weibo",pt:"Compartilhar no weibo",ro:"PartajeazÄ pe weibo",ru:"ÐоделиÑÑÑÑ Ð½Ð° weibo",sk:"ZdieľaÅ¥ na weibo",sl:"Deli na weibo",sr:"Podeli na weibo-u",sv:"Dela pÃ¥ weibo",tr:"Weibo'ta paylaÅ",zh:"åäº«è³æ°æµªå¾®å"},shareUrl:"http://service.weibo.com/share/share.php?url="+encodeURIComponent(e.getURL())+"&title="+e.getTitle()+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){var t=encodeURIComponent(e.getURL()),r=e.getTitle();return{popup:!1,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"whatsapp",faPrefix:"fab",faName:"fa-whatsapp",title:{bg:"Сподели в Whatsapp",cs:"SdÃlet na Whatsappu",da:"Del pÃ¥ Whatsapp",de:"Bei Whatsapp teilen",en:"Share on Whatsapp",es:"Compartir en Whatsapp",fi:"Jaa WhatsAppissä",fr:"Partager sur Whatsapp",hr:"Podijelite na Whatsapp",hu:"Megosztás WhatsAppen",it:"Condividi su Whatsapp",ja:"Whatsappä¸ã§å
±æ",ko:"Whatsappìì ê³µì í기",nl:"Delen op Whatsapp",no:"Del pÃ¥ Whatsapp",pl:"UdostÄpnij przez WhatsApp",pt:"Compartilhar no Whatsapp",ro:"PartajeazÄ pe Whatsapp",ru:"ÐоделиÑÑÑÑ Ð½Ð° Whatsapp",sk:"ZdieľaÅ¥ na Whatsapp",sl:"Deli na Whatsapp",sr:"Podeli na WhatsApp-u",sv:"Dela pÃ¥ Whatsapp",tr:"Whatsapp'ta paylaÅ",zh:"å¨Whatsappä¸å享"},shareUrl:"whatsapp://send?text="+encodeURIComponent(r)+"%20"+t+e.getReferrerTrack()}}},function(e,t,r){"use strict";e.exports=function(e){return{popup:!0,shareText:{bg:"cподелÑне",cs:"sdÃlet",da:"del",de:"teilen",en:"share",es:"compartir",fi:"Jaa",fr:"partager",hr:"podijelite",hu:"megosztás",it:"condividi",ja:"å
±æ",ko:"ê³µì í기",nl:"delen",no:"del",pl:"udostÄpnij",pt:"compartilhar",ro:"partajeazÄ",ru:"поделиÑÑÑÑ",sk:"zdieľaÅ¥",sl:"deli",sr:"podeli",sv:"dela",tr:"paylaÅ",zh:"å享"},name:"xing",faPrefix:"fab",faName:"fa-xing",title:{bg:"Сподели в XING",cs:"SdÃlet na XINGu",da:"Del pÃ¥ XING",de:"Bei XING teilen",en:"Share on XING",es:"Compartir en XING",fi:"Jaa XINGissä",fr:"Partager sur XING",hr:"Podijelite na XING",hu:"Megosztás XINGen",it:"Condividi su XING",ja:"XINGä¸ã§å
±æ",ko:"XINGìì ê³µì í기",nl:"Delen op XING",no:"Del pÃ¥ XING",pl:"UdostÄpnij przez XING",pt:"Compartilhar no XING",ro:"PartajeazÄ pe XING",ru:"ÐоделиÑÑÑÑ Ð½Ð° XING",sk:"ZdieľaÅ¥ na XING",sl:"Deli na XING",sr:"Podeli na XING-u",sv:"Dela pÃ¥ XING",tr:"XING'ta payla
8Å",zh:"å享è³XING"},shareUrl:"https://www.xing.com/spi/shares/new?url="+encodeURIComponent(e.getURL())+e.getReferrerTrack()}}}]); 9(function(d){typeof define=="function"&&define.amd?define(d):d()})(function(){"use strict";const d=`<div class="cc-body" id="cookieconsent:body">\r 10 <span class="cc-message" id="cookieconsent:desc">\r 11 {{description}}\r 12 {{selection}}\r 13 </span>\r 14 <div class="cc-compliance cc-highlight">\r 15 {{allow-all}}\r 16 {{allow}}\r 17 {{deny}}\r 18 </div>\r 19 <div class="powered-by">Powered by <a href="https://dp-wired.de/?ref=consent-note" rel="noopener" target="_blank">DP Wired</a></div>\r 20</div>`,f=`<div class="cc-body" id="cookieconsent:body">\r 21 <span class="cc-message" id="cookieconsent:desc">\r 22 {{description}}\r 23 </span>\r 24 <div class="cc-compliance cc-highlight">\r 25 {{allow-all}}\r 26 {{config}}\r 27 {{deny}}\r 28 </div>\r 29 <div class="powered-by">Powered by <a href="https://dp-wired.de/?ref=consent-note" rel="noopener" target="_blank">DP Wired</a></div>\r 30</div>`,h=`<div class="dp--cookie-check">\r 31 <label for="dp--cookie-require">\r 32 <input type="checkbox" id="dp--cookie-require" class="dp--check-box" checked="checked" disabled="disabled" />\r 33 {{dpRequire}}\r 34 </label>\r 35 <label for="dp--cookie-statistics">\r 36 <input type="checkbox" id="dp--cookie-statistics" class="dp--check-box" {{checked.statistics}} value="" />\r 37 {{dpStatistik}}\r 38 </label>\r 39 <label for="dp--cookie-marketing">\r 40 <input type="checkbox" id="dp--cookie-marketing" class="dp--check-box" {{checked.marketing}} value="" />\r 41 {{dpMarketing}}\r 42 </label>\r 43</div>\r 44`,v=`{{message}}\r 45\r 46<a class="cc-link"\r 47 role=button\r 48 href="{{href}}"\r 49 rel="noopener noreferrer nofollow"\r 50 target="{{target}}"\r 51>\r 52 {{link}}\r 53</a>\r 54`,k=`<button class="cc-btn cc-allow-all cc-w-100">\r 55 {{allow-all}}\r 56</button>\r 57`,b=`<button class="cc-btn cc-allow">\r 58 {{allow}}\r 59</button>\r 60`,y=`<button class="cc-btn cc-dismiss">\r 61 {{dismiss}}\r 62</button>\r 63`,g=`<button class="cc-btn cc-deny">\r 64 {{deny}}\r 65</button>\r 66`,w=`<button class="cc-btn cc-config" >\r 67 {{config}}\r 68</button>\r 69`,m=`<div class="dp--revoke {{classes}}">\r 70 <i class="dp--icon-fingerprint"></i>\r 71 <span class="dp--hover">{{policy}}</span>\r 72</div>\r 73`,C=`<div class="dp--overlay-inner">\r 74 <div class="dp--overlay-header">{{notice}}</div>\r 75 <div class="dp--overlay-description">{{desc}}</div>\r 76 <div class="dp--overlay-button">\r 77 <button class="db--overlay-submit" onclick="window.DPCookieConsent.forceAccept(this)" data-cookieconsent="{{type}}">\r 78 {{btn}}\r 79 </button>\r 80 </div>\r 81</div>\r 82`,x='<div aria-describedby="cookieconsent:desc" aria-label="cookieconsent-dialog" aria-live="polite" class="cc-window {{classes}}" id="cookieconsent:window" role="dialog"></div>',E=`<div aria-describedby="cookieconsent:config" aria-label="cookieconsent-dialog" aria-live="polite" class="cc-window-config cc-type-extend" id="cookieconsent:config" role="dialog">\r 83 <div class="cc-config" >\r 84 <div class="cc-config-header">\r 85 <span>{{config-header}}</span>\r 86 <button class="cc-btn-close">\r 87 <i class="dp--icon-x"></i>\r 88 </button>\r 89 </div>\r 90 <div class="cc-config-body">\r 91 <div class="cc-message">{{message}}</div>\r 92 <div>\r 93 {{cookie-group}}\r 94 </div>\r 95 </div>\r 96 <div class="cc-config-footer">\r 97 {{deny}}\r 98 {{allow}}\r 99 {{allow-all}}\r 100 </div>\r 101 <div class="powered-by">Powered by <a href="https://dp-wired.de/?ref=consent-note" rel="noopener" target="_blank">DP Wired</a></div>\r 102 </div>\r 103</div>\r 104`,B=`<div class="cc-config-group">\r 105 <div class="cc-config-group-name">\r 106 <button class="cc-btn cc-btn-collapse">\r 107 <i class="dp--icon-chevron"></i>\r 108 {{group}}\r 109 </button>\r 110\r 111 <div class="cc-form-switch">\r 112 <input class="dp--check-box" id="dp--cookie-{{group-lower}}" type="checkbox" name="" value="">\r 113 <label class="cc-check-label" for="dp--cookie-{{group-lower}}">\r 114 <div class="cc-sr-only">{{group}}</div>\r 115 </label>\r 116 </div>\r 117 </div>\r 118\r 119 <div class="cc-config-cookies">\r 120 {{config-cookie}}\r 121 </div>\r 122</div>`,A=`<ul class="cc-config-group-cookie">\r 123 <li>\r 124 <div class="cc-label">{{cookie}}</div>\r 125 <div>\r 126 {{cookie_name}}\r 127 <div class="cc-cookie-description cc-pt-2">
127{{cookie_description}}</div>\r 128 </div>\r 129 </li>\r 130 <li class="cc-pt-2">\r 131 <div class="cc-label">{{duration}}</div>\r 132 <div>{{cookie_duration}} {{cookie_duration_time}}</div>\r 133 </li>\r 134 <li class="cc-pt-2">\r 135 <div class="cc-label">{{vendor}}</div>\r 136 <div><a href="{{cookie_vendor_link}}" target="_blank">{{cookie_vendor}}</a></div>\r 137 </li>\r 138</ul>\r 139`;/*! 140 * Cookie Consent 141 * Copyright 2021 Dirk Persky (https://github.com/DirkPersky/npm-dp_cookieconsent/issues) 142 * Licensed under AGPL v3+ (https://github.com/DirkPersky/npm-dp_cookieconsent/blob/master/LICENSE) 143 */(function(i,H){if(!i.hasInitialised){(function(){if(typeof window.CustomEvent=="function")return!1;function s(o,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var t=document.createEvent("CustomEvent");return t.initCustomEvent(o,e.bubbles,e.cancelable,e.detail),t}s.prototype=window.Event.prototype,window.CustomEvent=s})(),function(){if(typeof window.Event=="function")return!1;function s(o,e){e=e||{bubbles:!0,cancelable:!0,detail:void 0};var t=document.createEvent("Event");return t.initEvent(o,e.bubbles,e.cancelable,e.detail),t}s.prototype=window.Event.prototype,window.Event=s}();var l={detectRobot:function(s){return new RegExp([/Chrome-Lighthouse/,/bot/,/spider/,/crawl/,/APIs-Google/,/AdsBot/,/Googlebot/,/mediapartners/,/Google Favicon/,/FeedFetcher/,/Google-Read-Aloud/,/DuplexWeb-Google/,/googleweblight/,/bing/,/yandex/,/baidu/,/duckduck/,/yahoo/,/ecosia/,/ia_archiver/,/semrush/].map(e=>e.source).join("|"),"i").test(s)},reformatCheckboxOptions:function(s){var o=Object.entries(s).map(e=>{var t=String(e[1]).toLowerCase()=="true";return{name:e[0],checked:t}});return o},getCookie:function(s){var o="; "+document.cookie,e=o.split("; "+s+"=");return e.length<2?void 0:JSON.parse(e.pop().split(";").shift())},setCookie:function(s,o,e,t,n,c){var r=new Date;r.setHours(r.getHours()+(e||365)*24);var a=[s+"="+JSON.stringify(o),"expires="+r.toUTCString(),"path="+(n||"/"),"SameSite=Strict"];t&&a.push("domain="+t),c&&a.push("secure"),document.cookie=a.join(";")},prepareCookie:function(s,o){var e={status:"open"},t=this.getCookie(o);return typeof t!="undefined"&&this.deepExtend(e,t),this.deepExtend(e,s),{exists:typeof t!="undefined",config:e}},getElementsByTag:function(s,o){return typeof o=="undefined"&&(o="data-cookieconsent"),document.querySelectorAll(s+"["+o+"]")},deepExtend:function(s,o){for(var e in o)o.hasOwnProperty(e)&&(e in s&&typeof s[e]=="object"&&typeof o[e]=="object"?this.deepExtend(s[e],o[e]):s[e]=o[e]);return s},appendElement:function(s,o){var e=document.createElement("div"),t=o!=null?o:document.body;e.innerHTML=this.replaceContent(s);var n=e.children[0];return t.appendChild(n),n},applyStyle:function(s){if(typeof this.options[s]!="undefined")for(const[o,e]of Object.entries(this.options[s]))for(const[t,n]of Object.entries(e))document.documentElement.style.setProperty(`--dp-cookie-${s}-${o}-${t}`,n)},fireEvent:function(s,o){var e;o?e=new CustomEvent(s,{detail:{$el:o}}):e=new Event(s),document.dispatchEvent(e)}};i.utils=l;var L=function(){var s={cookie:{name:"dp_cookieconsent_status",path:"/",domain:"",expiryDays:365,secure:!1},position:"bottom-right",content:{},theme:"edgeless",type:"opt-in",revokable:!0,reloadOnRevoke:!0,checkboxes:[{name:"statistics",checked:!1},{name:"marketing",checked:!1}],palette:{popup:{background:"rgba(0,0,0,0.8)",text:"#ffffff"},button:{background:"#f96332",text:"#ffffff"}},overlay:{notice:!0,box:{background:"rgba(0,0,0,0.8)",text:"#ffffff"},btn:{background:"#f96332",text:"#ffffff"}},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(){},onStatusChange:function(e,t){},onRevokeChoice:function(){},compilance:{"opt-in":d,extend:f},revokeBtn:m,overlayLayout:C,wrap:{consent:x,config:E},elements:{"allow-all":k,allow:b,dismiss:y,deny:g,config:w,selection:h,description:v}};function o(){}return o.prototype.replaceContent=function(e){var t=this.options,n=["cc-"+t.position,"cc-type-"+t.type,"cc-theme-"+t.theme,"cc-hide"];e=e.replaceAll("{{classes}}",n.join(" "));for(const[c,r]of Object.entries(t.elements))e=e.replaceAll("{{"+c+"}}",r||"");for(const[c,r]of Object.entries(t.content))e=e.replaceAll("{{"+c+"}}",r||"");return e},o.prototype.templateOverwrites=function(){let e=i.utils.getElementsByTag("script","data-dp-cookieRevoke");e.length>0&&(this.options.revokeBtn=e[0].innerHTML);let t=i.utils.getElementsByTag("script","data-dp-cookieDesc");t.length>0&&(this.options.elements.description=t[0].innerHTML);let n=i.utils.getElementsByTag("script","data-dp-cookieSelect");n.length>0&&(this.options.elements.selection=n[0].innerHTML)},o.prototype.initialise=function(e){l.deepExtend(this.options={},s),typeof e.checkboxes=="object"&&(e.checkboxes=l.reformatCheckboxOptions(e.checkboxes)),typeof e=="object"&&l.deepExtend(this.options,e);var t=this.options.onInitialise.bind(this);this.templateOverwrites(),this.options.revokable&&(this.revokeBtn=i.utils.appendElement.call(this,this.options.revokeBtn)),this.window=i.utils.appendElement.call(this,this.options.wrap.consent),this.options.type=="extend"&&i.configWindow.initialise(this.options.wrap.config),i.utils.applyStyle.call(this,"palette"),i.utils.applyStyle.call(this,"overlay"),this.addCompilance(this.window),t(this),this.bindBtns(),this.presetCheckboxes()},o.prototype.presetCheckboxes=function(){var e=i.utils.getCookie(this.options.cookie.name);typeof e!="undefined"&&l.deepExtend(this.options.checkboxes,e.checkboxes);var t=this.getCheckboxInputs(!0);t.length>0&&t.forEach(n=>{var c=n.id;c=c.replace("dp--cookie-",""),this.options.checkboxes.map((r,a)=>{r.name==c&&(n.checked=r.checked)}),c=="required"&&(n.checked=!0,n.disabled=!0)})},o.prototype.addCompilance=function(e){var t=this.options.compilance["opt-in"];typeof this.options.compilance[this.options.type]!="undefined"&&(t=this.options.compilance[this.options.type]),this.compilance=i.utils.appendElement.call(this,t,e),this.allowAllBtn=this.compilance.getElementsByClassName("cc-allow-all"),this.allowBtn=this.compilance.getElementsByClassName("cc-allow"),this.denyBtn=this.compilance.getElementsByClassName("cc-deny"),this.dismissBtn=this.compilance.getElementsByClassName("cc-dismiss"),this.configBtn=this.compilance.querySelector("button.cc-config")},o.prototype.bindBtns=function(){this.allowAllBtn.length>0&&(this.allowAllBtn[0].onclick=()=>this.allowAll.call(this)),this.allowBtn.length>0&&(this.allowBtn[0].onclick=()=>this.allow.call(this)),this.dismissBtn.length>0&&(this.dismissBtn[0].onclick=()=>this.allow.call(this)),this.denyBtn.length>0&&(this.denyBtn[0].onclick=()=>this.denyAll.call(this)),this.revokeBtn&&(this.revokeBtn.onclick=()=>this.revoke.call(this)),this.configBtn&&(this.configBtn.onclick=()=>i.configWindow.showConfig())},o.prototype.allowAll=function(){this.saveCheckboxes(!0),i.utils.fireEvent("dp--cookie-accept"),this.save()},o.prototype.denyAll=function(){this.saveCheckboxes(!1),i.utils.fireEvent("dp--cookie-deny"),this.save()},o.prototype.allow=function(){i.utils.fireEvent("dp--cookie-accept"),this.save()},o.prototype.getCheckboxInputs=function(e){var t=document.querySelectorAll('input[id^="dp--cookie-"]');if(e)return t;var n=[];return t.forEach(c=>{var r=c.id;switch(r=r.replace("dp--cookie-",""),r){case"required":break;default:n.push(c)}}),n},o.prototype.saveCheckboxes=function(e){var t=this.getCheckboxInputs();t.length>0&&t.forEach(n=>{var c=n.id;c=c.replace("dp--cookie-",""),typeof e!="undefined"&&(n.checked=e);var r=this.options.checkboxes.map((a,p)=>{if(a.name==c)return this.options.checkboxes[p].checked=n.checked,!0}).filter(a=>a);r.length||this.options.checkboxes.push({name:c,checked:n.checked})})},o.prototype.save=function(){this.saveCheckboxes(),this.close()},o.prototype.hasChanged=function(){var e=!1;return typeof this.originalCookie=="undefined"||typeof this.originalCookie.checkboxes=="undefined"?!1:(this.originalCookie.checkboxes.map((t,n)=>{var c=this.options.checkboxes[n];if(t.checked===!0&&(!c||c.checked==!1)){e=!0;var r=this.options.onStatusChange.bind(this);r(c,t)}}),e)},o.prototype.hasConsent=function(){var e=i.utils.getCookie(this.options.cookie.name);return!(typeof e=="undefined"||e.status=="open")},o.prototype.saveCookie=function(e){var t=i.utils.prepareCookie(e,this.options.cookie.name);
143!t.exists&&t.config.status=="open"||(i.utils.setCookie(this.options.cookie.name,t.config,this.options.cookie.expiryDays,this.options.cookie.domain,this.options.cookie.path,this.options.cookie.secure),this.hasConsent()&&this.hasChanged()&&this.options.reloadOnRevoke&&location.reload())},o.prototype.revoke=function(){var e=this.options.onRevokeChoice.bind(this);e(this),i.utils.fireEvent("dp--cookie-revoke"),this.open()},o.prototype.open=function(){this.revokeBtn&&this.revokeBtn.classList.add("cc-hide"),this.showPopup(),this.originalCookie=i.utils.getCookie(this.options.cookie.name);var e=this.options.onPopupOpen.bind(this);e(this),this.saveCookie({status:"open"}),document.querySelector("body").classList.add("dp--cookie-consent")},o.prototype.hidePopup=function(){this.window.classList.add("cc-hide")},o.prototype.showPopup=function(){this.window.classList.remove("cc-hide")},o.prototype.close=function(){this.hidePopup(),i.configWindow.closeConfig(),this.revokeBtn&&this.revokeBtn.classList.remove("cc-hide");var e=this.options.onPopupClose.bind(this);e(this),this.saveCookie({status:"approved",checkboxes:this.options.checkboxes}),document.querySelector("body").classList.remove("dp--cookie-consent"),this.execute()},o.prototype.execute=function(){i.Handler.execute(this.options.checkboxes),i.Overlay.execute(this.options.checkboxes)},new o}();i.popup=L;var S=function(){function s(){}return s.prototype.overlays=function(){i.popup.options.overlay.notice&&(this.templateOverwrites(),this.overlaysView("iframe"),this.overlaysView("dp-content"))},s.prototype.templateOverwrites=function(){let o=i.utils.getElementsByTag("script","data-dp-cookieIframe");o.length>0&&(i.popup.options.overlayLayout=o[0].innerHTML)},s.prototype.overlaysView=function(o){var e=i.utils.getElementsByTag(o);e.length!=0&&e.forEach(t=>{var n=t.getAttribute("data-cookieconsent-notice")||i.popup.options.content.media.notice,c=t.getAttribute("data-cookieconsent-description")||i.popup.options.content.media.desc,r=t.getAttribute("data-cookieconsent-btn")||i.popup.options.content.media.btn,a=t.getAttribute("data-cookieconsent");if(!t.hasAttribute("data-cookieconsent-overlay-loaded")){t.setAttribute("data-cookieconsent-overlay-loaded","loaded");var p=document.createElement("div");p.classList.add("dp--overlay");var u=i.popup.options.overlayLayout.replace("{{notice}}",n).replace("{{desc}}",c).replace("{{type}}",a).replace("{{btn}}",r);u=i.utils.appendElement.call(i.popup,u,p),u.getElementsByClassName("db--overlay-submit"),t.parentNode.insertBefore(p,t.nextSibling)}})},s.prototype.execute=function(o){this.executeIframe(o),this.executeContent(o)},s.prototype.ajax=function(o,e,t,n){var c=new XMLHttpRequest;c.open(o,e),c.setRequestHeader("X-Requested-With","XMLHttpRequest"),c.setRequestHeader("Content-type","text/html"),c.onload=function(){c.status<200||c.status>=300?n(c):t(c)},c.onerror=function(){n(c)},c.send()},s.prototype.executeContent=function(o){var e=i.utils.getElementsByTag("dp-content");e.length>0&&e.forEach(t=>{if(i.Handler.typeAllowed(t,o)){t.classList.add("dp--loaded"),t.setAttribute("data-cookieconsent-loaded",t.getAttribute("data-cookieconsent")),t.removeAttribute("data-cookieconsent");var n=t.getAttribute("data-src");n&&n.length>0?this.ajax("GET",n,function(c){t.innerHTML=c.response,i.utils.fireEvent("dp--cookie-content",t)},function(c){}):i.utils.fireEvent("dp--cookie-content",t)}})},s.prototype.executeIframe=function(o){var e=i.utils.getElementsByTag("iframe");e.length>0&&e.forEach(t=>{if(i.Handler.typeAllowed(t,o)){var n=t.cloneNode(!0);n.getAttribute("data-src")&&(n.src=n.getAttribute("data-src")),t.parentNode.replaceChild(n,t),n.classList.add("dp--loaded"),n.setAttribute("data-cookieconsent-loaded",n.getAttribute("data-cookieconsent")),n.removeAttribute("data-cookieconsent"),i.utils.fireEvent("dp--cookie-iframe",n)}})},new s}();i.Overlay=S;var O=function(){function s(){}return s.prototype.execute=function(o){var e=i.utils.getElementsByTag("script");e.length>0&&e.forEach(t=>{if(this.typeAllowed(t,o)){var n=t.innerHTML;n&&n.length&&(n=n.trim()),n&&n.length?(eval.call(this,n),i.utils.fireEvent("dp--cookie-fire",t)):t.getAttribute("data-src")?this.asyncJS(t.getAttribute("data-src"),function(c){i.utils.fireEvent("dp--cookie-fire",t)}):t.src&&this.asyncJS(t.src,function(c){i.utils.fireEvent("dp--cookie-fire",t)}),t.setAttribute("data-cookieconsent-loaded",t.getAttribute("data-cookieconsent")),t.removeAttribute("data-cookieconsent")}})},s.prototype.asyncLoad=function(o,e,t){var n=document,c=n.createElement(e),r=n.getElementsByTagName(e)[0];switch(e){case"script":c.src=o,c.setAttribute("defer","");break;case"link":c.rel="stylesheet",c.type="text/css",c.setAttribute("defer",""),c.href=o;break}t&&c.addEventListener("load",function(a){t(null,a)},!1),r.parentNode.insertBefore(c,r)},s.prototype.asyncJS=function(o,e){this.asyncLoad(o,"script",e)},s.prototype.typeAllowed=function(o,e){var t=o.getAttribute("data-cookieconsent"),n=e.map(c=>{if(c.name==t&&c.checked===!0)return!0});return n.indexOf(!0)!==-1},new s}();i.Handler=O,i.initialise=function(s,o){if(o||(o=function(){}),i.popup.initialise(s),i.Overlay.overlays(),o(i.popup),i.utils.fireEvent("dp--cookie-init"),i.popup.hasConsent()||l.detectRobot(navigator.userAgent)){i.popup.close(),i.utils.fireEvent("dp--cookie-accept-init");return}i.popup.open()};var P=function(){function s(){}return s.prototype.initialise=function(o){this.prepareConfig(),this.configWrap=i.utils.appendElement.call(i.popup,o),this.getElements(),this.bindBtns()},s.prototype.prepareConfig=function(){var o=i.popup.options,e=o.cookies.map(t=>{var n=t.cookies.map(c=>(this.options=i.utils.deepExtend({elements:{},content:c},o),i.popup.replaceContent.call(this,A))).join("");return this.options=i.utils.deepExtend({elements:{"config-cookie":n},content:{group:t.name,"group-lower":t.field}},o),i.popup.replaceContent.call(this,B)}).join("");i.popup.options.elements["cookie-group"]=e},s.prototype.getElements=function(){this.closeBtn=this.configWrap.querySelector("button.cc-btn-close"),this.allowAllBtn=this.configWrap.querySelector("button.cc-allow-all"),this.allowBtn=this.configWrap.querySelector("button.cc-allow"),this.denyBtn=this.configWrap.querySelector("button.cc-deny"),this.configGroups=this.configWrap.querySelectorAll(".cc-config-group")},s.prototype.bindBtns=function(){this.allowAllBtn&&(this.allowAllBtn.onclick=()=>i.popup.allowAll(this)),this.allowBtn&&(this.allowBtn.onclick=()=>i.popup.allow(this)),this.denyBtn&&(this.denyBtn.onclick=()=>i.popup.denyAll(this)),this.closeBtn&&(this.closeBtn.onclick=()=>this.hideConfig.call(this)),this.configGroups&&this.configGroups.forEach(o=>{o.querySelector(".cc-btn-collapse").onclick=()=>{var e=!o.classList.contains("cc-show");this.configGroups.forEach(t=>t.classList.remove("cc-show")),e&&o.classList.add("cc-show")}})},s.prototype.closeConfig=function(){this.configWrap&&this.configWrap.classList.remove("cc-show")},s.prototype.hideConfig=function(){i.popup.showPopup(),this.configWrap&&this.closeConfig()},s.prototype.showConfig=function(){this.configWrap&&this.configWrap.classList.add("cc-show"),i.popup.hidePopup()},new s}();i.configWindow=P,i.forceAccept=function(s){var o=s.getAttribute("data-cookieconsent"),e=i.popup.getCheckboxInputs();console.log(e),e.length>0&&(e.forEach(t=>{var n=t.id;n=n.replace("dp--cookie-",""),i.popup.hasConsent()||(t.checked=!1),n==o&&(t.checked=!0)}),i.utils.fireEvent("dp--cookie-accept")),i.popup.save()},i.forceDeny=function(s){var o=s.getAttribute("data-cookieconsent"),e=i.popup.getCheckboxInputs();e.length>0&&e.forEach(t=>{var n=t.id;n=n.replace("dp--cookie-",""),i.popup.hasConsent()||(t.checked=!1),n==o&&(t.checked=!1)}),i.popup.save()},i.hasInitialised=!0,window.DPCookieConsent=i,window.addEventListener("load",function(){window.DPCookieConsent.initialise(window.cookieconsent_options||{}),window.DPCookieConsent.loaded=!0})}})(window.DPCookieConsent||{})}); 144 145/** 146 * @popperjs/core v2.10.2 - MIT License 147 */ 148 149"use strict";!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){function t(e,t){return{width:(e=e.getBoundingClientRect()).width/1,height:e.height/1,top:e.top/1,right:e.right/1,bottom:e.bottom/1,left:e.left/1,x:e.left/1,y:e.top/1}}function n(e){return null==e?window:"[object Window]"!==e.toString()?(e=e.ownerDocument)&&e.defaultView||window:e}function o(e){return{scrollLeft:(e=n(e)).pageXOffset,scrollTop:e.pageYOffset}}function r(e){return e instanceof n(e).Element||e instanceof Element}function i(e){return e instanceof n(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof n(e).ShadowRoot||e instanceof ShadowRoot)}function s(e){return e?(e.nodeName||"").toLowerCase():null}function f(e){return((r(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return t(f(e)).left+o(e).scrollLeft}function c(e){return n(e).getComputedStyle(e)}function l(e){return e=c(e),/auto|scroll|overlay|hidden/.test(e.overflow+e.overflowY+e.overflowX)}function u(e,r,a){void 0===a&&(a=!1);var c=i(r);i(r)&&r.getBoundingClientRect();var u=f(r);e=t(e);var d={scrollLeft:0,scrollTop:0},m={x:0,y:0};return(c||!c&&!a)&&(("body"!==s(r)||l(u))&&(d=r!==n(r)&&i(r)?{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}:o(r)),i(r)?((m=t(r)).x+=r.clientLeft,m.y+=r.clientTop):u&&(m.x=p(u))),{x:e.left+d.scrollLeft-m.x,y:e.top+d.scrollTop-m.y,width:e.width,height:e.height}}function d(e){var n=t(e),o=e.offsetWidth,r=e.offsetHeight;return 1>=Math.abs(n.width-o)&&(o=n.width),1>=Math.abs(n.height-r)&&(r=n.height),{x:e.offsetLeft,y:e.offsetTop,width:o,height:r}}function m(e){return"html"===s(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||f(e)}function h(e){return 0<=["html","body","#document"].indexOf(s(e))?e.ownerDocument.body:i(e)&&l(e)?e:h(m(e))}function v(e,t){var o;void 0===t&&(t=[]);var r=h(e);return e=r===(null==(o=e.ownerDocument)?void 0:o.body),o=n(r),r=e?[o].concat(o.visualVie
vendor: 16,123 bytes, line 149
149wport||[],l(r)?r:[]):r,t=t.concat(r),e?t:t.concat(v(m(r)))}function g(e){return i(e)&&"fixed"!==c(e).position?e.offsetParent:null}function b(e){for(var t=n(e),o=g(e);o&&0<=["table","td","th"].indexOf(s(o))&&"static"===c(o).position;)o=g(o);if(o&&("html"===s(o)||"body"===s(o)&&"static"===c(o).position))return t;if(!o)e:{if(o=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),-1===navigator.userAgent.indexOf("Trident")||!i(e)||"fixed"!==c(e).position)for(e=m(e);i(e)&&0>["html","body"].indexOf(s(e));){var r=c(e);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||o&&"filter"===r.willChange||o&&r.filter&&"none"!==r.filter){o=e;break e}e=e.parentNode}o=null}return o||t}function y(e){function t(e){o.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){o.has(e)||(e=n.get(e))&&t(e)})),r.push(e)}var n=new Map,o=new Set,r=[];return e.forEach((function(e){n.set(e.name,e)})),e.forEach((function(e){o.has(e.name)||t(e)})),r}function w(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=void 0,n(e())}))}))),t}}function x(e){return e.split("-")[0]}function O(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n))do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function j(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function E(e,r){if("viewport"===r){r=n(e);var a=f(e);r=r.visualViewport;var s=a.clientWidth;a=a.clientHeight;var l=0,u=0;r&&(s=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(l=r.offsetLeft,u=r.offsetTop)),e=j(e={width:s,height:a,x:l+p(e),y:u})}else i(r)?((e=t(r)).top+=r.clientTop,e.left+=r.clientLeft,e.bottom=e.top+r.clientHeight,e.right=e.left+r.clientWidth,e.width=r.clientWidth,e.height=r.clientHeight,e.x=e.left,e.y=e.top):(u=f(e),e=f(u),s=o(u),r=null==(a=u.ownerDocument)?void 0:a.body,a=U(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),l=U(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),u=-s.scrollLeft+p(u),s=-s.scrollTop,"rtl"===c(r||e).direction&&(u+=U(e.clientWidth,r?r.clientWidth:0)-a),e=j({width:a,height:l,x:u,y:s}));return e}function D(e,t,n){return t="clippingParents"===t?function(e){var t=v(m(e)),n=0<=["absolute","fixed"].indexOf(c(e).position)&&i(e)?b(e):e;return r(n)?t.filter((function(e){return r(e)&&O(e,n)&&"body"!==s(e)})):[]}(e):[].concat(t),(n=(n=[].concat(t,[n])).reduce((function(t,n){return n=E(e,n),t.top=U(n.top,t.top),t.right=z(n.right,t.right),t.bottom=z(n.bottom,t.bottom),t.left=U(n.left,t.left),t}),E(e,n[0]))).width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}function L(e){return e.split("-")[1]}function P(e){return 0<=["top","bottom"].indexOf(e)?"x":"y"}function M(e){var t=e.reference,n=e.element,o=(e=e.placement)?x(e):null;e=e?L(e):null;var r=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2;switch(o){case"top":r={x:r,y:t.y-n.height};break;case"bottom":r={x:r,y:t.y+t.height};break;case"right":r={x:t.x+t.width,y:i};break;case"left":r={x:t.x-n.width,y:i};break;default:r={x:t.x,y:t.y}}if(null!=(o=o?P(o):null))switch(i="y"===o?"height":"width",e){case"start":r[o]-=t[i]/2-n[i]/2;break;case"end":r[o]+=t[i]/2-n[i]/2}return r}function k(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function A(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function B(e,n){void 0===n&&(n={});var o=n;n=void 0===(n=o.placement)?e.placement:n;var i=o.boundary,a=void 0===i?"clippingParents":i,s=void 0===(i=o.rootBoundary)?"viewport":i;i=void 0===(i=o.elementContext)?"popper":i;var p=o.altBoundary,c=void 0!==p&&p;o=k("number"!=typeof(o=void 0===(o=o.padding)?0:o)?o:A(o,N)),p=e.rects.popper,a=D(r(c=e.elements[c?"popper"===i?"reference":"popper":i])?c:c.contextElement||f(e.elements.popper),a,s),c=M({reference:s=t(e.elements.reference),element:p,strategy:"absolute",placement:n}),p=j(Object.assign({},p,c)),s="popper"===i?p:s;var l={top:a.top-s.top+o.top,bottom:s.bottom-a.bottom+o.bottom,left:a.left-s.left+o.left,right:s.right-a.right+o.right};if(e=e.modifiersData.offset,"popper"===i&&e){var u=e[n];Object.keys(l).forEach((function(e){var t=0<=["right","bottom"].indexOf(e)?1:-1,n=0<=["top","bottom"].indexOf(e)?"y":"x";l[e]+=u[n]*t}))}return l}function W(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function T(e){void 0===e&&(e={});var t=e.defaultModifiers,n=void 0===t?[]:t,o=void 0===(e=e.defaultOptions)?X:e;return function(e,t,i){function a(){f.forEach((function(e){return e()})),f=[]}void 0===i&&(i=o);var s={placement:"bottom",orderedModifiers:[],options:Object.assign({},X,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},f=[],p=!1,c={state:s,setOptions:function(i){return i="function"==typeof i?i(s.options):i,a(),s.options=Object.assign({},o,s.options,i),s.scrollParents={reference:r(e)?v(e):e.contextElement?v(e.contextElement):[],popper:v(t)},i=function(e){var t=y(e);return _.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}(function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}([].concat(n,s.options.modifiers))),s.orderedModifiers=i.filter((function(e){return e.enabled})),s.orderedModifiers.forEach((function(e){var t=e.name,n=e.options;n=void 0===n?{}:n,"function"==typeof(e=e.effect)&&(t=e({state:s,name:t,instance:c,options:n}),f.push(t||function(){}))})),c.update()},forceUpdate:function(){if(!p){var e=s.elements,t=e.reference;if(W(t,e=e.popper))for(s.rects={reference:u(t,b(e),"fixed"===s.options.strategy),popper:d(e)},s.reset=!1,s.placement=s.options.placement,s.orderedModifiers.forEach((function(e){return s.modifiersData[e.name]=Object.assign({},e.data)})),t=0;t<s.orderedModifiers.length;t++)if(!0===s.reset)s.reset=!1,t=-1;else{var n=s.orderedModifiers[t];e=n.fn;var o=n.options;o=void 0===o?{}:o,n=n.name,"function"==typeof e&&(s=e({state:s,options:o,name:n,instance:c})||s)}}},update:w((function(){return new Promise((function(e){c.forceUpdate(),e(s)}))})),destroy:function(){a(),p=!0}};return W(e,t)?(c.setOptions(i).then((function(e){!p&&i.onFirstUpdate&&i.onFirstUpdate(e)})),c):c}}function R(e){var t,o=e.popper,r=e.popperRect,i=e.placement,a=e.variation,s=e.offsets,p=e.position,l=e.gpuAcceleration,u=e.adaptive;if(!0===(e=e.roundOffsets)){e=s.y;var d=window.devicePixelRatio||1;e={x:F(F(s.x*d)/d)||0,y:F(F(e*d)/d)||0}}else e="function"==typeof e?e(s):s;e=void 0===(e=(d=e).x)?0:e,d=void 0===(d=d.y)?0:d;var m=s.hasOwnProperty("x");s=s.hasOwnProperty("y");var h,v="left",g="top",y=window;if(u){var w=b(o),x="clientHeight",O="clientWidth";w===n(o)&&("static"!==c(w=f(o)).position&&"absolute"===p&&(x="scrollHeight",O="scrollWidth")),"top"!==i&&("left"!==i&&"right"!==i||"end"!==a)||(g="bottom",d-=w[x]-r.height,d*=l?1:-1),"left"!==i&&("top"!==i&&"bottom"!==i||"end"!==a)||(v="right",e-=w[O]-r.width,e*=l?1:-1)}return o=Object.assign({position:p},u&&K),l?Object.assign({},o,((h={})[g]=s?"0":"",h[v]=m?"0":"",h.transform=1>=(y.devicePixelRatio||1)?"translate("+e+"px, "+d+"px)":"translate3d("+e+"px, "+d+"px, 0)",h)):Object.assign({},o,((t={})[g]=s?d+"px":"",t[v]=m?e+"px":"",t.transform="",t))}function H(e){return e.replace(/left|right|bottom|top/g,(function(e){return ee[e]}))}function S(e){return e.replace(/start|end/g,(function(e){return te[e]}))}function C(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function q(e){return["top","right","bottom","left"].some((function(t){return 0<=e[t]}))}var N=["top","bottom","right","left"],V=N.reduce((function(e,t){return e.concat([t+"-start",t+"-end"])}),[]),I=[].concat(N,["auto"]).reduce((function(e,t){return e.concat([t,t+"-start",t+"-end"])}),[]),_="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),U=Math.max,z=Math.min,F=Math.round,X={placement:"bottom",modifiers:[],strategy:"absolute"},Y={passive:!0},G={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,o=e.instance,r=(e=e.options).scroll,i=void 0===r||r,a=void 0===(e=e.resize)||e,s=n(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach((function(e){e.addEventListener("scroll",o.update,Y)})),a&&s.addEventListener("resize",o.update,Y),function(){i&&f.forEach((function(e){e.removeEventListener("scroll",o.update,Y)})),a&&s.removeEventListener("resize",o.update,Y)}},data:{}},J={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state;t.modifiersData[e.name]=M({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},K={top:"auto",right:"auto",bottom:"auto",left:"auto"},Q={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options;e=void 0===(e=n.gpuAcceleration)||e;var o=n.adaptive;o=void 0===o||o,n=void 0===(n=n.roundOffsets)||n,e={placement:x(t.placement),variation:L(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,R(Object.assign({},e,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:n})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,R(Object.assign({},e,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:n})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Z={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},r=t.elements[e];i(r)&&s(r)&&(Object.assign(r.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?r.removeAttribute(e):r.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],r=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{}),i(o)&&s(o)&&(Object.assign(o.style,e),Object.keys(r).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]},$={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.name,o=void 0===(e=e.options.offset)?[0,0]:e,r=(e=I.reduce((function(e,n){var r=t.rects,i=x(n),a=0<=["left","top"].indexOf(i)?-1:1,s="function"==typeof o?o(Object.assign({},r,{placement:n})):o;return r=(r=s[0])||0,s=((s=s[1])||0)*a,i=0<=["left","right"].indexOf(i)?{x:s,y:r}:{x:r,y:s},e[n]=i,e}),{}))[t.placement],i=r.x;r=r.y,null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=i,t.modifiersData.popperOffsets.y+=r),t.modifiersData[n]=e}},ee={left:"right",right:"left",bottom:"top",top:"bottom"},te={start:"end",end:"start"},ne={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;if(e=e.name,!t.modifiersData[e]._skip){var o=n.mainAxis;o=void 0===o||o;var r=n.altAxis;r=void 0===r||r;var i=n.fallbackPlacements,a=n.padding,s=n.boundary,f=n.rootBoundary,p=n.altBoundary,c=n.flipVariations,l=void 0===c||c,u=n.allowedAutoPlacements;c=x(n=t.options.placement),i=i||(c!==n&&l?function(e){if("auto"===x(e))return[];var t=H(e);return[S(e),t,S(t)]}(n):[H(n)]);var d=[n].concat(i).reduce((function(e,n){return e.concat("auto"===x(n)?function(e,t){void 0===t&&(t={});var n=t.boundary,o=t.rootBoundary,r=t.padding,i=t.flipVariations,a=t.allowedAutoPlacements,s=void 0===a?I:a,f=L(t.placement);0===(i=(t=f?i?V:V.filter((function(e){return L(e)===f})):N).filter((function(e){return 0<=s.indexOf(e)}))).length&&(i=t);var p=i.reduce((function(t,i){return t[i]=B(e,{placement:i,boundary:n,rootBoundary:o,padding:r})[x(i)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:s,rootBoundary:f,padding:a,flipVariations:l,allowedAutoPlacements:u}):n)}),[]);n=t.rects.reference,i=t.rects.popper;var m=new Map;c=!0;for(var h=d[0],v=0;v<d.length;v++){var g=d[v],b=x(g),y="start"===L(g),w=0<=["top","bottom"].indexOf(b),O=w?"width":"height",j=B(t,{placement:g,boundary:s,rootBoundary:f,altBoundary:p,padding:a});if(y=w?y?"right":"left":y?"bottom":"top",n[O]>i[O]&&(y=H(y)),O=H(y),w=[],o&&w.push(0>=j[b]),r&&w.push(0>=j[y],0>=j[O]),w.every((function(e){return e}))){h=g,c=!1;break}m.set(g,w)}if(c)for(o=function(e){var t=d.find((function(t){if(t=m.get(t))return t.slice(0,e).every((function(e){return e}))}));if(t)return h=t,"break"},r=l?3:1;0<r&&"break"!==o(r);r--);t.placement!==h&&(t.modifiersData[e]._skip=!0,t.placement=h,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},oe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options;e=e.name;var o=n.mainAxis,r=void 0===o||o,i=void 0!==(o=n.altAxis)&&o;o=void 0===(o=n.tether)||o;var a=n.tetherOffset,s=void 0===a?0:a,f=B(t,{boundary:n.boundary,rootBoundary:n.rootBoundary,padding:n.padding,altBoundary:n.altBoundary});n=x(t.placement);var p=L(t.placement),c=!p,l=P(n);n="x"===l?"y":"x",a=t.modifiersData.popperOffsets;var u=t.rects.reference,m=t.rects.popper,h="function"==typeof s?s(Object.assign({},t.rects,{placement:t.placement})):s;if(s={x:0,y:0},a){if(r||i){var v="y"===l?"top":"left",g="y"===l?"bottom":"right",y="y"===l?"height":"width",w=a[l],O=a[l]+f[v],j=a[l]-f[g],E=o?-m[y]/2:0,D="start"===p?u[y]:m[y];p="start"===p?-m[y]:-u[y],m=t.elements.arrow,m=o&&m?d(m):{width:0,height:0};var M=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0};v=M[v],g=M[g],m=U(0,z(u[y],m[y])),D=c?u[y]/2-E-m-v-h:D-m-v-h,u=c?-u[y]/2+E+m+g+h:p+m+g+h,c=t.elements.arrow&&b(t.elements.arrow),h=t.modifiersData.offset?t.modifiersData.offset[t.placement][l]:0,c=a[l]+D-h-(c?"y"===l?c.clientTop||0:c.clientLeft||0:0),u=a[l]+u-h,r&&(r=o?z(O,c):O,j=o?U(j,u):j,r=U(r,z(w,j)),a[l]=r,s[l]=r-w),i&&(r=(i=a[n])+f["x"===l?"top":"left"],f=i-f["x"===l?"bottom":"right"],r=o?z(r,c):r,o=o?U(f,u):f,o=U(r,z(i,o)),a[n]=o,s[n]=o-i)}t.modifiersData[e]=s}},requiresIfExists:["offset"]},re={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,o=e.name,r=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=x(n.placement);if(e=P(s),s=0<=["left","right"].indexOf(s)?"height":"width",i&&a){r=k("number"!=typeof(r="function"==typeof(r=r.padding)?r(Object.assign({},n.rects,{placement:n.placement})):r)?r:A(r,N));var f=d(i),p="y"===e?"top":"left",c="y"===e?"bottom":"right",l=n.rects.reference[s]+n.rects.reference[e]-a[e]-n.rects.popper[s];a=a[e]-n.rects.reference[e],a=(i=(i=b(i))?"y"===e?i.clientHeight||0:i.clientWidth||0:0)/2-f[s]/2+(l/2-a/2),s=U(r[p],z(a,i-f[s]-r[c])),n.modifiersData[o]=((t={})[e]=s,t.centerOffset=s-a,t)}},effect:function(e){var t=e.state;if(null!=(e=void 0===(e=e.options.element)?"[data-popper-arrow]":e)){if("string"==typeof e&&!(e=t.elements.popper.querySelector(e)))return;O(t.elements.popper,e)&&(t.elements.arrow=e)}},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},ie={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state;e=e.name;var n=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,i=B(t,{elementContext:"reference"}),a=B(t,{altBoundary:!0});n=C(i,n),o=C(a,o,r),r=q(n),a=q(o),t.modifiersData[e]={referenceClippingOffsets:n,popperEscapeOffsets:o,isReferenceHidden:r,hasPopperEscaped:a},t.attributes.popper=Object.assign({}
149,t.attributes.popper,{"data-popper-reference-hidden":r,"data-popper-escaped":a})}},ae=T({defaultModifiers:[G,J,Q,Z]}),se=[G,J,Q,Z,$,ne,oe,re,ie],fe=T({defaultModifiers:se});e.applyStyles=Z,e.arrow=re,e.computeStyles=Q,e.createPopper=fe,e.createPopperLite=ae,e.defaultModifiers=se,e.detectOverflow=B,e.eventListeners=G,e.flip=ne,e.hide=ie,e.offset=$,e.popperGenerator=T,e.popperOffsets=J,e.preventOverflow=oe,Object.defineProperty(e,"__esModule",{value:!0})})); 150 151 152/*! 153 * Bootstrap v5.3.2 (https://getbootstrap.com/) 154 * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 155 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 156 */ 157(function (global, factory) { 158 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) : 159 typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) : 160 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap
vendor: 28,688 bytes, lines 160-1004
160 = factory(global.Popper)); 161})(this, (function (Popper) { 'use strict'; 162 163 function _interopNamespaceDefault(e) { 164 const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } }); 165 if (e) { 166 for (const k in e) { 167 if (k !== 'default') { 168 const d = Object.getOwnPropertyDescriptor(e, k); 169 Object.defineProperty(n, k, d.get ? d : { 170 enumerable: true, 171 get: () => e[k] 172 }); 173 } 174 } 175 } 176 n.default = e; 177 return Object.freeze(n); 178 } 179 180 const Popper__namespace = /*#__PURE__*/_interopNamespaceDefault(Popper); 181 182 /** 183 * -------------------------------------------------------------------------- 184 * Bootstrap dom/data.js 185 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 186 * -------------------------------------------------------------------------- 187 */ 188 189 /** 190 * Constants 191 */ 192 193 const elementMap = new Map(); 194 const Data = { 195 set(element, key, instance) { 196 if (!elementMap.has(element)) { 197 elementMap.set(element, new Map()); 198 } 199 const instanceMap = elementMap.get(element); 200 201 // make it clear we only want one instance per element 202 // can be removed later when multiple key/instances are fine to be used 203 if (!instanceMap.has(key) && instanceMap.size !== 0) { 204 // eslint-disable-next-line no-console 205 console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); 206 return; 207 } 208 instanceMap.set(key, instance); 209 }, 210 get(element, key) { 211 if (elementMap.has(element)) { 212 return elementMap.get(element).get(key) || null; 213 } 214 return null; 215 }, 216 remove(element, key) { 217 if (!elementMap.has(element)) { 218 return; 219 } 220 const instanceMap = elementMap.get(element); 221 instanceMap.delete(key); 222 223 // free up element references if there are no instances left for an element 224 if (instanceMap.size === 0) { 225 elementMap.delete(element); 226 } 227 } 228 }; 229 230 /** 231 * -------------------------------------------------------------------------- 232 * Bootstrap util/index.js 233 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 234 * -------------------------------------------------------------------------- 235 */ 236 237 const MAX_UID = 1000000; 238 const MILLISECONDS_MULTIPLIER = 1000; 239 const TRANSITION_END = 'transitionend'; 240 241 /** 242 * Properly escape IDs selectors to handle weird IDs 243 * @param {string} selector 244 * @returns {string} 245 */ 246 const parseSelector = selector => { 247 if (selector && window.CSS && window.CSS.escape) { 248 // document.querySelector needs escaping to handle IDs (html5+) containing for instance / 249 selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); 250 } 251 return selector; 252 }; 253 254 // Shout-out Angus Croll (https://goo.gl/pxwQGp) 255 const toType = object => { 256 if (object === null || object === undefined) { 257 return `${object}`; 258 } 259 return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); 260 }; 261 262 /** 263 * Public Util API 264 */ 265 266 const getUID = prefix => { 267 do { 268 prefix += Math.floor(Math.random() * MAX_UID); 269 } while (document.getElementById(prefix)); 270 return prefix; 271 }; 272 const getTransitionDurationFromElement = element => { 273 if (!element) { 274 return 0; 275 } 276 277 // Get transition-duration of the element 278 let { 279 transitionDuration, 280 transitionDelay 281 } = window.getComputedStyle(element); 282 const floatTransitionDuration = Number.parseFloat(transitionDuration); 283 const floatTransitionDelay = Number.parseFloat(transitionDelay); 284 285 // Return 0 if element or transition duration is not found 286 if (!floatTransitionDuration && !floatTransitionDelay) { 287 return 0; 288 } 289 290 // If multiple durations are defined, take the first 291 transitionDuration = transitionDuration.split(',')[0]; 292 transitionDelay = transitionDelay.split(',')[0]; 293 return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 294 }; 295 const triggerTransitionEnd = element => { 296 element.dispatchEvent(new Event(TRANSITION_END)); 297 }; 298 const isElement = object => { 299 if (!object || typeof object !== 'object') { 300 return false; 301 } 302 if (typeof object.jquery !== 'undefined') { 303 object = object[0]; 304 } 305 return typeof object.nodeType !== 'undefined'; 306 }; 307 const getElement = object => { 308 // it's a jQuery object or a node element 309 if (isElement(object)) { 310 return object.jquery ? object[0] : object; 311 } 312 if (typeof object === 'string' && object.length > 0) { 313 return document.querySelector(parseSelector(object)); 314 } 315 return null; 316 }; 317 const isVisible = element => { 318 if (!isElement(element) || element.getClientRects().length === 0) { 319 return false; 320 } 321 const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; 322 // Handle `details` element as its content may falsie appear visible when it is closed 323 const closedDetails = element.closest('details:not([open])'); 324 if (!closedDetails) { 325 return elementIsVisible; 326 } 327 if (closedDetails !== element) { 328 const summary = element.closest('summary'); 329 if (summary && summary.parentNode !== closedDetails) { 330 return false; 331 } 332 if (summary === null) { 333 return false; 334 } 335 } 336 return elementIsVisible; 337 }; 338 const isDisabled = element => { 339 if (!element || element.nodeType !== Node.ELEMENT_NODE) { 340 return true; 341 } 342 if (element.classList.contains('disabled')) { 343 return true; 344 } 345 if (typeof element.disabled !== 'undefined') { 346 return element.disabled; 347 } 348 return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; 349 }; 350 const findShadowRoot = element => { 351 if (!document.documentElement.attachShadow) { 352 return null; 353 } 354 355 // Can find the shadow root otherwise it'll return the document 356 if (typeof element.getRootNode === 'function') { 357 const root = element.getRootNode(); 358 return root instanceof ShadowRoot ? root : null; 359 } 360 if (element instanceof ShadowRoot) { 361 return element; 362 } 363 364 // when we don't find a shadow root 365 if (!element.parentNode) { 366 return null; 367 } 368 return findShadowRoot(element.parentNode); 369 }; 370 const noop = () => {}; 371 372 /** 373 * Trick to restart an element's animation 374 * 375 * @param {HTMLElement} element 376 * @return void 377 * 378 * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation 379 */ 380 const reflow = element => { 381 element.offsetHeight; // eslint-disable-line no-unused-expressions 382 }; 383 384 const getjQuery = () => { 385 if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { 386 return window.jQuery; 387 } 388 return null; 389 }; 390 const DOMContentLoadedCallbacks = []; 391 const onDOMContentLoaded = callback => { 392 if (document.readyState === 'loading') { 393 // add listener on the first call when the document is in loading state 394 if (!DOMContentLoadedCallbacks.length) { 395 document.addEventListener('DOMContentLoaded', () => { 396 for (const callback of DOMContentLoadedCallbacks) { 397 callback(); 398 } 399 }); 400 } 401 DOMContentLoadedCallbacks.push(callback); 402 } else { 403 callback(); 404 } 405 }; 406 const isRTL = () => document.documentElement.dir === 'rtl'; 407 const defineJQueryPlugin = plugin => { 408 onDOMContentLoaded(() => { 409 const $ = getjQuery(); 410 /* istanbul ignore if */ 411 if ($) { 412 const name = plugin.NAME; 413 const JQUERY_NO_CONFLICT = $.fn[name]; 414 $.fn[name] = plugin.jQueryInterface; 415 $.fn[name].Constructor = plugin; 416 $.fn[name].noConflict = () => { 417 $.fn[name] = JQUERY_NO_CONFLICT; 418 return plugin.jQueryInterface; 419 }; 420 } 421 }); 422 }; 423 const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { 424 return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue; 425 }; 426 const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { 427 if (!waitForTransition) { 428 execute(callback); 429 return; 430 } 431 const durationPadding = 5; 432 const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; 433 let called = false; 434 const handler = ({ 435 target 436 }) => { 437 if (target !== transitionElement) { 438 return; 439 } 440 called = true; 441 transitionElement.removeEventListener(TRANSITION_END, handler); 442 execute(callback); 443 }; 444 transitionElement.addEventListener(TRANSITION_END, handler); 445 setTimeout(() => { 446 if (!called) { 447 triggerTransitionEnd(transitionElement); 448 } 449 }, emulatedDuration); 450 }; 451 452 /** 453 * Return the previous/next element of a list. 454 * 455 * @param {array} list The list of elements 456 * @param activeElement The active element 457 * @param shouldGetNext Choose to get next or previous element 458 * @param isCycleAllowed 459 * @return {Element|elem} The proper element 460 */ 461 const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { 462 const listLength = list.length; 463 let index = list.indexOf(activeElement); 464 465 // if the element does not exist in the list return an element 466 // depending on the direction and if cycle is allowed 467 if (index === -1) { 468 return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; 469 } 470 index += shouldGetNext ? 1 : -1; 471 if (isCycleAllowed) { 472 index = (index + listLength) % listLength; 473 } 474 return list[Math.max(0, Math.min(index, listLength - 1))]; 475 }; 476 477 /** 478 * -------------------------------------------------------------------------- 479 * Bootstrap dom/event-handler.js 480 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 481 * -------------------------------------------------------------------------- 482 */ 483 484 485 /** 486 * Constants 487 */ 488 489 const namespaceRegex = /[^.]*(?=\..*)\.|.*/; 490 const stripNameRegex = /\..*/; 491 const stripUidRegex = /::\d+$/; 492 const eventRegistry = {}; // Events storage 493 let uidEvent = 1; 494 const customEvents = { 495 mouseenter: 'mouseover', 496 mouseleave: 'mouseout' 497 }; 498 const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); 499 500 /** 501 * Private methods 502 */ 503 504 function makeEventUid(element, uid) { 505 return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; 506 } 507 function getElementEvents(element) { 508 const uid = makeEventUid(element); 509 element.uidEvent = uid; 510 eventRegistry[uid] = eventRegistry[uid] || {}; 511 return eventRegistry[uid]; 512 } 513 function bootstrapHandler(element, fn) { 514 return function handler(event) { 515 hydrateObj(event, { 516 delegateTarget: element 517 }); 518 if (handler.oneOff) { 519 EventHandler.off(element, event.type, fn); 520 } 521 return fn.apply(element, [event]); 522 }; 523 } 524 function bootstrapDelegationHandler(element, selector, fn) { 525 return function handler(event) { 526 const domElements = element.querySelectorAll(selector); 527 for (let { 528 target 529 } = event; target && target !== this; target = target.parentNode) { 530 for (const domElement of domElements) { 531 if (domElement !== target) { 532 continue; 533 } 534 hydrateObj(event, { 535 delegateTarget: target 536 }); 537 if (handler.oneOff) { 538 EventHandler.off(element, event.type, selector, fn); 539 } 540 return fn.apply(target, [event]); 541 } 542 } 543 }; 544 } 545 function findHandler(events, callable, delegationSelector = null) { 546 return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); 547 } 548 function normalizeParameters(originalTypeEvent, handler, delegationFunction) { 549 const isDelegated = typeof handler === 'string'; 550 // TODO: tooltip passes `false` instead of selector, so we need to check 551 const callable = isDelegated ? delegationFunction : handler || delegationFunction; 552 let typeEvent = getTypeEvent(originalTypeEvent); 553 if (!nativeEvents.has(typeEvent)) { 554 typeEvent = originalTypeEvent; 555 } 556 return [isDelegated, callable, typeEvent]; 557 } 558 function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { 559 if (typeof originalTypeEvent !== 'string' || !element) { 560 return; 561 } 562 let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 563 564 // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position 565 // this prevents the handler from being dispatched the same way as mouseover or mouseout does 566 if (originalTypeEvent in customEvents) { 567 const wrapFunction = fn => { 568 return function (event) { 569 if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { 570 return fn.call(this, event); 571 } 572 }; 573 }; 574 callable = wrapFunction(callable); 575 } 576 const events = getElementEvents(element); 577 const handlers = events[typeEvent] || (events[typeEvent] = {}); 578 const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); 579 if (previousFunction) { 580 previousFunction.oneOff = previousFunction.oneOff && oneOff; 581 return; 582 } 583 const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); 584 const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); 585 fn.delegationSelector = isDelegated ? handler : null; 586 fn.callable = callable; 587 fn.oneOff = oneOff; 588 fn.uidEvent = uid; 589 handlers[uid] = fn; 590 element.addEventListener(typeEvent, fn, isDelegated); 591 } 592 function removeHandler(element, events, typeEvent, handler, delegationSelector) { 593 const fn = findHandler(events[typeEvent], handler, delegationSelector); 594 if (!fn) { 595 return; 596 } 597 element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); 598 delete events[typeEvent][fn.uidEvent]; 599 } 600 function removeNamespacedHandlers(element, events, typeEvent, namespace) { 601 const storeElementEvent = events[typeEvent] || {}; 602 for (const [handlerKey, event] of Object.entries(storeElementEvent)) { 603 if (handlerKey.includes(namespace)) { 604 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 605 } 606 } 607 } 608 function getTypeEvent(event) { 609 // allow to get the native events from namespaced events ('click.bs.button' --> 'click') 610 event = event.replace(stripNameRegex, ''); 611 return customEvents[event] || event; 612 } 613 const EventHandler = { 614 on(element, event, handler, delegationFunction) { 615 addHandler(element, event, handler, delegationFunction, false); 616 }, 617 one(element, event, handler, delegationFunction) { 618 addHandler(element, event, handler, delegationFunction, true); 619 }, 620 off(element, originalTypeEvent, handler, delegationFunction) { 621 if (typeof originalTypeEvent !== 'string' || !element) { 622 return; 623 } 624 const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 625 const inNamespace = typeEvent !== originalTypeEvent; 626 const events = getElementEvents(element); 627 const storeElementEvent = events[typeEvent] || {}; 628 const isNamespace = originalTypeEvent.startsWith('.'); 629 if (typeof callable !== 'undefined') { 630 // Simplest case: handler is passed, remove that listener ONLY. 631 if (!Object.keys(storeElementEvent).length) { 632 return; 633 } 634 removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); 635 return; 636 } 637 if (isNamespace) { 638 for (const elementEvent of Object.keys(events)) { 639 removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); 640 } 641 } 642 for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { 643 const handlerKey = keyHandlers.replace(stripUidRegex, ''); 644 if (!inNamespace || originalTypeEvent.includes(handlerKey)) { 645 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 646 } 647 } 648 }, 649 trigger(element, event, args) { 650 if (typeof event !== 'string' || !element) { 651 return null; 652 } 653 const $ = getjQuery(); 654 const typeEvent = getTypeEvent(event); 655 const inNamespace = event !== typeEvent; 656 let jQueryEvent = null; 657 let bubbles = true; 658 let nativeDispatch = true; 659 let defaultPrevented = false; 660 if (inNamespace && $) { 661 jQueryEvent = $.Event(event, args); 662 $(element).trigger(jQueryEvent); 663 bubbles = !jQueryEvent.isPropagationStopped(); 664 nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); 665 defaultPrevented = jQueryEvent.isDefaultPrevented(); 666 } 667 const evt = hydrateObj(new Event(event, { 668 bubbles, 669 cancelable: true 670 }), args); 671 if (defaultPrevented) { 672 evt.preventDefault(); 673 } 674 if (nativeDispatch) { 675 element.dispatchEvent(evt); 676 } 677 if (evt.defaultPrevented && jQueryEvent) { 678 jQueryEvent.preventDefault(); 679 } 680 return evt; 681 } 682 }; 683 function hydrateObj(obj, meta = {}) { 684 for (const [key, value] of Object.entries(meta)) { 685 try { 686 obj[key] = value; 687 } catch (_unused) { 688 Object.defineProperty(obj, key, { 689 configurable: true, 690 get() { 691 return value; 692 } 693 }); 694 } 695 } 696 return obj; 697 } 698 699 /** 700 * -------------------------------------------------------------------------- 701 * Bootstrap dom/manipulator.js 702 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 703 * -------------------------------------------------------------------------- 704 */ 705 706 function normalizeData(value) { 707 if (value === 'true') { 708 return true; 709 } 710 if (value === 'false') { 711 return false; 712 } 713 if (value === Number(value).toString()) { 714 return Number(value); 715 } 716 if (value === '' || value === 'null') { 717 return null; 718 } 719 if (typeof value !== 'string') { 720 return value; 721 } 722 try { 723 return JSON.parse(decodeURIComponent(value)); 724 } catch (_unused) { 725 return value; 726 } 727 } 728 function normalizeDataKey(key) { 729 return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); 730 } 731 const Manipulator = { 732 setDataAttribute(element, key, value) { 733 element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); 734 }, 735 removeDataAttribute(element, key) { 736 element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); 737 }, 738 getDataAttributes(element) { 739 if (!element) { 740 return {}; 741 } 742 const attributes = {}; 743 const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); 744 for (const key of bsKeys) { 745 let pureKey = key.replace(/^bs/, ''); 746 pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); 747 attributes[pureKey] = normalizeData(element.dataset[key]); 748 } 749 return attributes; 750 }, 751 getDataAttribute(element, key) { 752 return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); 753 } 754 }; 755 756 /** 757 * -------------------------------------------------------------------------- 758 * Bootstrap util/config.js 759 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 760 * -------------------------------------------------------------------------- 761 */ 762 763 764 /** 765 * Class definition 766 */ 767 768 class Config { 769 // Getters 770 static get Default() { 771 return {}; 772 } 773 static get DefaultType() { 774 return {}; 775 } 776 static get NAME() { 777 throw new Error('You have to implement the static method "NAME", for each component!'); 778 } 779 _getConfig(config) { 780 config = this._mergeConfigObj(config); 781 config = this._configAfterMerge(config); 782 this._typeCheckConfig(config); 783 return config; 784 } 785 _configAfterMerge(config) { 786 return config; 787 } 788 _mergeConfigObj(config, element) { 789 const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse 790 791 return { 792 ...this.constructor.Default, 793 ...(typeof jsonConfig === 'object' ? jsonConfig : {}), 794 ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}), 795 ...(typeof config === 'object' ? config : {}) 796 }; 797 } 798 _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { 799 for (const [property, expectedTypes] of Object.entries(configTypes)) { 800 const value = config[property]; 801 const valueType = isElement(value) ? 'element' : toType(value); 802 if (!new RegExp(expectedTypes).test(valueType)) { 803 throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); 804 } 805 } 806 } 807 } 808 809 /** 810 * -------------------------------------------------------------------------- 811 * Bootstrap base-component.js 812 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 813 * -------------------------------------------------------------------------- 814 */ 815 816 817 /** 818 * Constants 819 */ 820 821 const VERSION = '5.3.2'; 822 823 /** 824 * Class definition 825 */ 826 827 class BaseComponent extends Config { 828 constructor(element, config) { 829 super(); 830 element = getElement(element); 831 if (!element) { 832 return; 833 } 834 this._element = element; 835 this._config = this._getConfig(config); 836 Data.set(this._element, this.constructor.DATA_KEY, this); 837 } 838 839 // Public 840 dispose() { 841 Data.remove(this._element, this.constructor.DATA_KEY); 842 EventHandler.off(this._element, this.constructor.EVENT_KEY); 843 for (const propertyName of Object.getOwnPropertyNames(this)) { 844 this[propertyName] = null; 845 } 846 } 847 _queueCallback(callback, element, isAnimated = true) { 848 executeAfterTransition(callback, element, isAnimated); 849 } 850 _getConfig(config) { 851 config = this._mergeConfigObj(config, this._element); 852 config = this._configAfterMerge(config); 853 this._typeCheckConfig(config); 854 return config; 855 } 856 857 // Static 858 static getInstance(element) { 859 return Data.get(getElement(element), this.DATA_KEY); 860 } 861 static getOrCreateInstance(element, config = {}) { 862 return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); 863 } 864 static get VERSION() { 865 return VERSION; 866 } 867 static get DATA_KEY() { 868 return `bs.${this.NAME}`; 869 } 870 static get EVENT_KEY() { 871 return `.${this.DATA_KEY}`; 872 } 873 static eventName(name) { 874 return `${name}${this.EVENT_KEY}`; 875 } 876 } 877 878 /** 879 * -------------------------------------------------------------------------- 880 * Bootstrap dom/selector-engine.js 881 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 882 * -------------------------------------------------------------------------- 883 */ 884 885 const getSelector = element => { 886 let selector = element.getAttribute('data-bs-target'); 887 if (!selector || selector === '#') { 888 let hrefAttribute = element.getAttribute('href'); 889 890 // The only valid content that could double as a selector are IDs or classes, 891 // so everything starting with `#` or `.`. If a "real" URL is used as the selector, 892 // `document.querySelector` will rightfully complain it is invalid. 893 // See https://github.com/twbs/bootstrap/issues/32273 894 if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { 895 return null; 896 } 897 898 // Just in case some CMS puts out a full URL with the anchor appended 899 if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { 900 hrefAttribute = `#${hrefAttribute.split('#')[1]}`; 901 } 902 selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null; 903 } 904 return selector; 905 }; 906 const SelectorEngine = { 907 find(selector, element = document.documentElement) { 908 return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); 909 }, 910 findOne(selector, element = document.documentElement) { 911 return Element.prototype.querySelector.call(element, selector); 912 }, 913 children(element, selector) { 914 return [].concat(...element.children).filter(child => child.matches(selector)); 915 }, 916 parents(element, selector) { 917 const parents = []; 918 let ancestor = element.parentNode.closest(selector); 919 while (ancestor) { 920 parents.push(ancestor); 921 ancestor = ancestor.parentNode.closest(selector); 922 } 923 return parents; 924 }, 925 prev(element, selector) { 926 let previous = element.previousElementSibling; 927 while (previous) { 928 if (previous.matches(selector)) { 929 return [previous]; 930 } 931 previous = previous.previousElementSibling; 932 } 933 return []; 934 }, 935 // TODO: this is now unused; remove later along with prev() 936 next(element, selector) { 937 let next = element.nextElementSibling; 938 while (next) { 939 if (next.matches(selector)) { 940 return [next]; 941 } 942 next = next.nextElementSibling; 943 } 944 return []; 945 }, 946 focusableChildren(element) { 947 const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); 948 return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); 949 }, 950 getSelectorFromElement(element) { 951 const selector = getSelector(element); 952 if (selector) { 953 return SelectorEngine.findOne(selector) ? selector : null; 954 } 955 return null; 956 }, 957 getElementFromSelector(element) { 958 const selector = getSelector(element); 959 return selector ? SelectorEngine.findOne(selector) : null; 960 }, 961 getMultipleElementsFromSelector(element) { 962 const selector = getSelector(element); 963 return selector ? SelectorEngine.find(selector) : []; 964 } 965 }; 966 967 /** 968 * -------------------------------------------------------------------------- 969 * Bootstrap util/component-functions.js 970 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 971 * -------------------------------------------------------------------------- 972 */ 973 974 const enableDismissTrigger = (component, method = 'hide') => { 975 const clickEvent = `click.dismiss${component.EVENT_KEY}`; 976 const name = component.NAME; 977 EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { 978 if (['A', 'AREA'].includes(this.tagName)) { 979 event.preventDefault(); 980 } 981 if (isDisabled(this)) { 982 return; 983 } 984 const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); 985 const instance = component.getOrCreateInstance(target); 986 987 // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method 988 instance[method](); 989 }); 990 }; 991 992 /** 993 * -------------------------------------------------------------------------- 994 * Bootstrap alert.js 995 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 996 * -------------------------------------------------------------------------- 997 */ 998 999 1000 /** 1001 * Constants 1002 */ 1003 1004 const NAME$
vendor: 24,275 bytes, lines 1004-1777
1004f = 'alert'; 1005 const DATA_KEY$a = 'bs.alert'; 1006 const EVENT_KEY$b = `.${DATA_KEY$a}`; 1007 const EVENT_CLOSE = `close${EVENT_KEY$b}`; 1008 const EVENT_CLOSED = `closed${EVENT_KEY$b}`; 1009 const CLASS_NAME_FADE$5 = 'fade'; 1010 const CLASS_NAME_SHOW$8 = 'show'; 1011 1012 /** 1013 * Class definition 1014 */ 1015 1016 class Alert extends BaseComponent { 1017 // Getters 1018 static get NAME() { 1019 return NAME$f; 1020 } 1021 1022 // Public 1023 close() { 1024 const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); 1025 if (closeEvent.defaultPrevented) { 1026 return; 1027 } 1028 this._element.classList.remove(CLASS_NAME_SHOW$8); 1029 const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); 1030 this._queueCallback(() => this._destroyElement(), this._element, isAnimated); 1031 } 1032 1033 // Private 1034 _destroyElement() { 1035 this._element.remove(); 1036 EventHandler.trigger(this._element, EVENT_CLOSED); 1037 this.dispose(); 1038 } 1039 1040 // Static 1041 static jQueryInterface(config) { 1042 return this.each(function () { 1043 const data = Alert.getOrCreateInstance(this); 1044 if (typeof config !== 'string') { 1045 return; 1046 } 1047 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 1048 throw new TypeError(`No method named "${config}"`); 1049 } 1050 data[config](this); 1051 }); 1052 } 1053 } 1054 1055 /** 1056 * Data API implementation 1057 */ 1058 1059 enableDismissTrigger(Alert, 'close'); 1060 1061 /** 1062 * jQuery 1063 */ 1064 1065 defineJQueryPlugin(Alert); 1066 1067 /** 1068 * -------------------------------------------------------------------------- 1069 * Bootstrap button.js 1070 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1071 * -------------------------------------------------------------------------- 1072 */ 1073 1074 1075 /** 1076 * Constants 1077 */ 1078 1079 const NAME$e = 'button'; 1080 const DATA_KEY$9 = 'bs.button'; 1081 const EVENT_KEY$a = `.${DATA_KEY$9}`; 1082 const DATA_API_KEY$6 = '.data-api'; 1083 const CLASS_NAME_ACTIVE$3 = 'active'; 1084 const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; 1085 const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; 1086 1087 /** 1088 * Class definition 1089 */ 1090 1091 class Button extends BaseComponent { 1092 // Getters 1093 static get NAME() { 1094 return NAME$e; 1095 } 1096 1097 // Public 1098 toggle() { 1099 // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method 1100 this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); 1101 } 1102 1103 // Static 1104 static jQueryInterface(config) { 1105 return this.each(function () { 1106 const data = Button.getOrCreateInstance(this); 1107 if (config === 'toggle') { 1108 data[config](); 1109 } 1110 }); 1111 } 1112 } 1113 1114 /** 1115 * Data API implementation 1116 */ 1117 1118 EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { 1119 event.preventDefault(); 1120 const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); 1121 const data = Button.getOrCreateInstance(button); 1122 data.toggle(); 1123 }); 1124 1125 /** 1126 * jQuery 1127 */ 1128 1129 defineJQueryPlugin(Button); 1130 1131 /** 1132 * -------------------------------------------------------------------------- 1133 * Bootstrap util/swipe.js 1134 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1135 * -------------------------------------------------------------------------- 1136 */ 1137 1138 1139 /** 1140 * Constants 1141 */ 1142 1143 const NAME$d = 'swipe'; 1144 const EVENT_KEY$9 = '.bs.swipe'; 1145 const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; 1146 const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; 1147 const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; 1148 const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; 1149 const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; 1150 const POINTER_TYPE_TOUCH = 'touch'; 1151 const POINTER_TYPE_PEN = 'pen'; 1152 const CLASS_NAME_POINTER_EVENT = 'pointer-event'; 1153 const SWIPE_THRESHOLD = 40; 1154 const Default$c = { 1155 endCallback: null, 1156 leftCallback: null, 1157 rightCallback: null 1158 }; 1159 const DefaultType$c = { 1160 endCallback: '(function|null)', 1161 leftCallback: '(function|null)', 1162 rightCallback: '(function|null)' 1163 }; 1164 1165 /** 1166 * Class definition 1167 */ 1168 1169 class Swipe extends Config { 1170 constructor(element, config) { 1171 super(); 1172 this._element = element; 1173 if (!element || !Swipe.isSupported()) { 1174 return; 1175 } 1176 this._config = this._getConfig(config); 1177 this._deltaX = 0; 1178 this._supportPointerEvents = Boolean(window.PointerEvent); 1179 this._initEvents(); 1180 } 1181 1182 // Getters 1183 static get Default() { 1184 return Default$c; 1185 } 1186 static get DefaultType() { 1187 return DefaultType$c; 1188 } 1189 static get NAME() { 1190 return NAME$d; 1191 } 1192 1193 // Public 1194 dispose() { 1195 EventHandler.off(this._element, EVENT_KEY$9); 1196 } 1197 1198 // Private 1199 _start(event) { 1200 if (!this._supportPointerEvents) { 1201 this._deltaX = event.touches[0].clientX; 1202 return; 1203 } 1204 if (this._eventIsPointerPenTouch(event)) { 1205 this._deltaX = event.clientX; 1206 } 1207 } 1208 _end(event) { 1209 if (this._eventIsPointerPenTouch(event)) { 1210 this._deltaX = event.clientX - this._deltaX; 1211 } 1212 this._handleSwipe(); 1213 execute(this._config.endCallback); 1214 } 1215 _move(event) { 1216 this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; 1217 } 1218 _handleSwipe() { 1219 const absDeltaX = Math.abs(this._deltaX); 1220 if (absDeltaX <= SWIPE_THRESHOLD) { 1221 return; 1222 } 1223 const direction = absDeltaX / this._deltaX; 1224 this._deltaX = 0; 1225 if (!direction) { 1226 return; 1227 } 1228 execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); 1229 } 1230 _initEvents() { 1231 if (this._supportPointerEvents) { 1232 EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); 1233 EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); 1234 this._element.classList.add(CLASS_NAME_POINTER_EVENT); 1235 } else { 1236 EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); 1237 EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); 1238 EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); 1239 } 1240 } 1241 _eventIsPointerPenTouch(event) { 1242 return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); 1243 } 1244 1245 // Static 1246 static isSupported() { 1247 return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; 1248 } 1249 } 1250 1251 /** 1252 * -------------------------------------------------------------------------- 1253 * Bootstrap carousel.js 1254 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1255 * -------------------------------------------------------------------------- 1256 */ 1257 1258 1259 /** 1260 * Constants 1261 */ 1262 1263 const NAME$c = 'carousel'; 1264 const DATA_KEY$8 = 'bs.carousel'; 1265 const EVENT_KEY$8 = `.${DATA_KEY$8}`; 1266 const DATA_API_KEY$5 = '.data-api'; 1267 const ARROW_LEFT_KEY$1 = 'ArrowLeft'; 1268 const ARROW_RIGHT_KEY$1 = 'ArrowRight'; 1269 const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch 1270 1271 const ORDER_NEXT = 'next'; 1272 const ORDER_PREV = 'prev'; 1273 const DIRECTION_LEFT = 'left'; 1274 const DIRECTION_RIGHT = 'right'; 1275 const EVENT_SLIDE = `slide${EVENT_KEY$8}`; 1276 const EVENT_SLID = `slid${EVENT_KEY$8}`; 1277 const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; 1278 const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; 1279 const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; 1280 const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; 1281 const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; 1282 const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; 1283 const CLASS_NAME_CAROUSEL = 'carousel'; 1284 const CLASS_NAME_ACTIVE$2 = 'active'; 1285 const CLASS_NAME_SLIDE = 'slide'; 1286 const CLASS_NAME_END = 'carousel-item-end'; 1287 const CLASS_NAME_START = 'carousel-item-start'; 1288 const CLASS_NAME_NEXT = 'carousel-item-next'; 1289 const CLASS_NAME_PREV = 'carousel-item-prev'; 1290 const SELECTOR_ACTIVE = '.active'; 1291 const SELECTOR_ITEM = '.carousel-item'; 1292 const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; 1293 const SELECTOR_ITEM_IMG = '.carousel-item img'; 1294 const SELECTOR_INDICATORS = '.carousel-indicators'; 1295 const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; 1296 const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; 1297 const KEY_TO_DIRECTION = { 1298 [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, 1299 [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT 1300 }; 1301 const Default$b = { 1302 interval: 5000, 1303 keyboard: true, 1304 pause: 'hover', 1305 ride: false, 1306 touch: true, 1307 wrap: true 1308 }; 1309 const DefaultType$b = { 1310 interval: '(number|boolean)', 1311 // TODO:v6 remove boolean support 1312 keyboard: 'boolean', 1313 pause: '(string|boolean)', 1314 ride: '(boolean|string)', 1315 touch: 'boolean', 1316 wrap: 'boolean' 1317 }; 1318 1319 /** 1320 * Class definition 1321 */ 1322 1323 class Carousel extends BaseComponent { 1324 constructor(element, config) { 1325 super(element, config); 1326 this._interval = null; 1327 this._activeElement = null; 1328 this._isSliding = false; 1329 this.touchTimeout = null; 1330 this._swipeHelper = null; 1331 this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); 1332 this._addEventListeners(); 1333 if (this._config.ride === CLASS_NAME_CAROUSEL) { 1334 this.cycle(); 1335 } 1336 } 1337 1338 // Getters 1339 static get Default() { 1340 return Default$b; 1341 } 1342 static get DefaultType() { 1343 return DefaultType$b; 1344 } 1345 static get NAME() { 1346 return NAME$c; 1347 } 1348 1349 // Public 1350 next() { 1351 this._slide(ORDER_NEXT); 1352 } 1353 nextWhenVisible() { 1354 // FIXME TODO use `document.visibilityState` 1355 // Don't call next when the page isn't visible 1356 // or the carousel or its parent isn't visible 1357 if (!document.hidden && isVisible(this._element)) { 1358 this.next(); 1359 } 1360 } 1361 prev() { 1362 this._slide(ORDER_PREV); 1363 } 1364 pause() { 1365 if (this._isSliding) { 1366 triggerTransitionEnd(this._element); 1367 } 1368 this._clearInterval(); 1369 } 1370 cycle() { 1371 this._clearInterval(); 1372 this._updateInterval(); 1373 this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); 1374 } 1375 _maybeEnableCycle() { 1376 if (!this._config.ride) { 1377 return; 1378 } 1379 if (this._isSliding) { 1380 EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); 1381 return; 1382 } 1383 this.cycle(); 1384 } 1385 to(index) { 1386 const items = this._getItems(); 1387 if (index > items.length - 1 || index < 0) { 1388 return; 1389 } 1390 if (this._isSliding) { 1391 EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); 1392 return; 1393 } 1394 const activeIndex = this._getItemIndex(this._getActive()); 1395 if (activeIndex === index) { 1396 return; 1397 } 1398 const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; 1399 this._slide(order, items[index]); 1400 } 1401 dispose() { 1402 if (this._swipeHelper) { 1403 this._swipeHelper.dispose(); 1404 } 1405 super.dispose(); 1406 } 1407 1408 // Private 1409 _configAfterMerge(config) { 1410 config.defaultInterval = config.interval; 1411 return config; 1412 } 1413 _addEventListeners() { 1414 if (this._config.keyboard) { 1415 EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); 1416 } 1417 if (this._config.pause === 'hover') { 1418 EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); 1419 EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); 1420 } 1421 if (this._config.touch && Swipe.isSupported()) { 1422 this._addTouchEventListeners(); 1423 } 1424 } 1425 _addTouchEventListeners() { 1426 for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { 1427 EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); 1428 } 1429 const endCallBack = () => { 1430 if (this._config.pause !== 'hover') { 1431 return; 1432 } 1433 1434 // If it's a touch-enabled device, mouseenter/leave are fired as 1435 // part of the mouse compatibility events on first tap - the carousel 1436 // would stop cycling until user tapped out of it; 1437 // here, we listen for touchend, explicitly pause the carousel 1438 // (as if it's the second time we tap on it, mouseenter compat event 1439 // is NOT fired) and after a timeout (to allow for mouse compatibility 1440 // events to fire) we explicitly restart cycling 1441 1442 this.pause(); 1443 if (this.touchTimeout) { 1444 clearTimeout(this.touchTimeout); 1445 } 1446 this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); 1447 }; 1448 const swipeConfig = { 1449 leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), 1450 rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), 1451 endCallback: endCallBack 1452 }; 1453 this._swipeHelper = new Swipe(this._element, swipeConfig); 1454 } 1455 _keydown(event) { 1456 if (/input|textarea/i.test(event.target.tagName)) { 1457 return; 1458 } 1459 const direction = KEY_TO_DIRECTION[event.key]; 1460 if (direction) { 1461 event.preventDefault(); 1462 this._slide(this._directionToOrder(direction)); 1463 } 1464 } 1465 _getItemIndex(element) { 1466 return this._getItems().indexOf(element); 1467 } 1468 _setActiveIndicatorElement(index) { 1469 if (!this._indicatorsElement) { 1470 return; 1471 } 1472 const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); 1473 activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); 1474 activeIndicator.removeAttribute('aria-current'); 1475 const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); 1476 if (newActiveIndicator) { 1477 newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); 1478 newActiveIndicator.setAttribute('aria-current', 'true'); 1479 } 1480 } 1481 _updateInterval() { 1482 const element = this._activeElement || this._getActive(); 1483 if (!element) { 1484 return; 1485 } 1486 const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); 1487 this._config.interval = elementInterval || this._config.defaultInterval; 1488 } 1489 _slide(order, element = null) { 1490 if (this._isSliding) { 1491 return; 1492 } 1493 const activeElement = this._getActive(); 1494 const isNext = order === ORDER_NEXT; 1495 const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); 1496 if (nextElement === activeElement) { 1497 return; 1498 } 1499 const nextElementIndex = this._getItemIndex(nextElement); 1500 const triggerEvent = eventName => { 1501 return EventHandler.trigger(this._element, eventName, { 1502 relatedTarget: nextElement, 1503 direction: this._orderToDirection(order), 1504 from: this._getItemIndex(activeElement), 1505 to: nextElementIndex 1506 }); 1507 }; 1508 const slideEvent = triggerEvent(EVENT_SLIDE); 1509 if (slideEvent.defaultPrevented) { 1510 return; 1511 } 1512 if (!activeElement || !nextElement) { 1513 // Some weirdness is happening, so we bail 1514 // TODO: change tests that use empty divs to avoid this check 1515 return; 1516 } 1517 const isCycling = Boolean(this._interval); 1518 this.pause(); 1519 this._isSliding = true; 1520 this._setActiveIndicatorElement(nextElementIndex); 1521 this._activeElement = nextElement; 1522 const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; 1523 const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; 1524 nextElement.classList.add(orderClassName); 1525 reflow(nextElement); 1526 activeElement.classList.add(directionalClassName); 1527 nextElement.classList.add(directionalClassName); 1528 const completeCallBack = () => { 1529 nextElement.classList.remove(directionalClassName, orderClassName); 1530 nextElement.classList.add(CLASS_NAME_ACTIVE$2); 1531 activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); 1532 this._isSliding = false; 1533 triggerEvent(EVENT_SLID); 1534 }; 1535 this._queueCallback(completeCallBack, activeElement, this._isAnimated()); 1536 if (isCycling) { 1537 this.cycle(); 1538 } 1539 } 1540 _isAnimated() { 1541 return this._element.classList.contains(CLASS_NAME_SLIDE); 1542 } 1543 _getActive() { 1544 return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); 1545 } 1546 _getItems() { 1547 return SelectorEngine.find(SELECTOR_ITEM, this._element); 1548 } 1549 _clearInterval() { 1550 if (this._interval) { 1551 clearInterval(this._interval); 1552 this._interval = null; 1553 } 1554 } 1555 _directionToOrder(direction) { 1556 if (isRTL()) { 1557 return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; 1558 } 1559 return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; 1560 } 1561 _orderToDirection(order) { 1562 if (isRTL()) { 1563 return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; 1564 } 1565 return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; 1566 } 1567 1568 // Static 1569 static jQueryInterface(config) { 1570 return this.each(function () { 1571 const data = Carousel.getOrCreateInstance(this, config); 1572 if (typeof config === 'number') { 1573 data.to(config); 1574 return; 1575 } 1576 if (typeof config === 'string') { 1577 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 1578 throw new TypeError(`No method named "${config}"`); 1579 } 1580 data[config](); 1581 } 1582 }); 1583 } 1584 } 1585 1586 /** 1587 * Data API implementation 1588 */ 1589 1590 EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { 1591 const target = SelectorEngine.getElementFromSelector(this); 1592 if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { 1593 return; 1594 } 1595 event.preventDefault(); 1596 const carousel = Carousel.getOrCreateInstance(target); 1597 const slideIndex = this.getAttribute('data-bs-slide-to'); 1598 if (slideIndex) { 1599 carousel.to(slideIndex); 1600 carousel._maybeEnableCycle(); 1601 return; 1602 } 1603 if (Manipulator.getDataAttribute(this, 'slide') === 'next') { 1604 carousel.next(); 1605 carousel._maybeEnableCycle(); 1606 return; 1607 } 1608 carousel.prev(); 1609 carousel._maybeEnableCycle(); 1610 }); 1611 EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { 1612 const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); 1613 for (const carousel of carousels) { 1614 Carousel.getOrCreateInstance(carousel); 1615 } 1616 }); 1617 1618 /** 1619 * jQuery 1620 */ 1621 1622 defineJQueryPlugin(Carousel); 1623 1624 /** 1625 * -------------------------------------------------------------------------- 1626 * Bootstrap collapse.js 1627 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1628 * -------------------------------------------------------------------------- 1629 */ 1630 1631 1632 /** 1633 * Constants 1634 */ 1635 1636 const NAME$b = 'collapse'; 1637 const DATA_KEY$7 = 'bs.collapse'; 1638 const EVENT_KEY$7 = `.${DATA_KEY$7}`; 1639 const DATA_API_KEY$4 = '.data-api'; 1640 const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; 1641 const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; 1642 const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; 1643 const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; 1644 const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; 1645 const CLASS_NAME_SHOW$7 = 'show'; 1646 const CLASS_NAME_COLLAPSE = 'collapse'; 1647 const CLASS_NAME_COLLAPSING = 'collapsing'; 1648 const CLASS_NAME_COLLAPSED = 'collapsed'; 1649 const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; 1650 const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; 1651 const WIDTH = 'width'; 1652 const HEIGHT = 'height'; 1653 const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; 1654 const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; 1655 const Default$a = { 1656 parent: null, 1657 toggle: true 1658 }; 1659 const DefaultType$a = { 1660 parent: '(null|element)', 1661 toggle: 'boolean' 1662 }; 1663 1664 /** 1665 * Class definition 1666 */ 1667 1668 class Collapse extends BaseComponent { 1669 constructor(element, config) { 1670 super(element, config); 1671 this._isTransitioning = false; 1672 this._triggerArray = []; 1673 const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); 1674 for (const elem of toggleList) { 1675 const selector = SelectorEngine.getSelectorFromElement(elem); 1676 const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); 1677 if (selector !== null && filterElement.length) { 1678 this._triggerArray.push(elem); 1679 } 1680 } 1681 this._initializeChildren(); 1682 if (!this._config.parent) { 1683 this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); 1684 } 1685 if (this._config.toggle) { 1686 this.toggle(); 1687 } 1688 } 1689 1690 // Getters 1691 static get Default() { 1692 return Default$a; 1693 } 1694 static get DefaultType() { 1695 return DefaultType$a; 1696 } 1697 static get NAME() { 1698 return NAME$b; 1699 } 1700 1701 // Public 1702 toggle() { 1703 if (this._isShown()) { 1704 this.hide(); 1705 } else { 1706 this.show(); 1707 } 1708 } 1709 show() { 1710 if (this._isTransitioning || this._isShown()) { 1711 return; 1712 } 1713 let activeChildren = []; 1714 1715 // find active children 1716 if (this._config.parent) { 1717 activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { 1718 toggle: false 1719 })); 1720 } 1721 if (activeChildren.length && activeChildren[0]._isTransitioning) { 1722 return; 1723 } 1724 const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); 1725 if (startEvent.defaultPrevented) { 1726 return; 1727 } 1728 for (const activeInstance of activeChildren) { 1729 activeInstance.hide(); 1730 } 1731 const dimension = this._getDimension(); 1732 this._element.classList.remove(CLASS_NAME_COLLAPSE); 1733 this._element.classList.add(CLASS_NAME_COLLAPSING); 1734 this._element.style[dimension] = 0; 1735 this._addAriaAndCollapsedClass(this._triggerArray, true); 1736 this._isTransitioning = true; 1737 const complete = () => { 1738 this._isTransitioning = false; 1739 this._element.classList.remove(CLASS_NAME_COLLAPSING); 1740 this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 1741 this._element.style[dimension] = ''; 1742 EventHandler.trigger(this._element, EVENT_SHOWN$6); 1743 }; 1744 const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 1745 const scrollSize = `scroll${capitalizedDimension}`; 1746 this._queueCallback(complete, this._element, true); 1747 this._element.style[dimension] = `${this._element[scrollSize]}px`; 1748 } 1749 hide() { 1750 if (this._isTransitioning || !this._isShown()) { 1751 return; 1752 } 1753 const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); 1754 if (startEvent.defaultPrevented) { 1755 return; 1756 } 1757 const dimension = this._getDimension(); 1758 this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; 1759 reflow(this._element); 1760 this._element.classList.add(CLASS_NAME_COLLAPSING); 1761 this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 1762 for (const trigger of this._triggerArray) { 1763 const element = SelectorEngine.getElementFromSelector(trigger); 1764 if (element && !this._isShown(element)) { 1765 this._addAriaAndCollapsedClass([trigger], false); 1766 } 1767 } 1768 this._isTransitioning = true; 1769 const complete = () => { 1770 this._isTransitioning = false; 1771 this._element.classList.remove(CLASS_NAME_COLLAPSING); 1772 this._element.classList.add(CLASS_NAME_COLLAPSE); 1773 EventHandler.trigger(this._element, EVENT_HIDDEN$6); 1774 }; 1775 this._element.style[dimension] = ''; 1776 this._queueCallback(complete, this._element, true); 1777 }
vendor: 8,876 bytes, lines 1778-2030
1778 _isShown(element = this._element) { 1779 return element.classList.contains(CLASS_NAME_SHOW$7); 1780 } 1781 1782 // Private 1783 _configAfterMerge(config) { 1784 config.toggle = Boolean(config.toggle); // Coerce string values 1785 config.parent = getElement(config.parent); 1786 return config; 1787 } 1788 _getDimension() { 1789 return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; 1790 } 1791 _initializeChildren() { 1792 if (!this._config.parent) { 1793 return; 1794 } 1795 const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); 1796 for (const element of children) { 1797 const selected = SelectorEngine.getElementFromSelector(element); 1798 if (selected) { 1799 this._addAriaAndCollapsedClass([element], this._isShown(selected)); 1800 } 1801 } 1802 } 1803 _getFirstLevelChildren(selector) { 1804 const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); 1805 // remove children if greater depth 1806 return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); 1807 } 1808 _addAriaAndCollapsedClass(triggerArray, isOpen) { 1809 if (!triggerArray.length) { 1810 return; 1811 } 1812 for (const element of triggerArray) { 1813 element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); 1814 element.setAttribute('aria-expanded', isOpen); 1815 } 1816 } 1817 1818 // Static 1819 static jQueryInterface(config) { 1820 const _config = {}; 1821 if (typeof config === 'string' && /show|hide/.test(config)) { 1822 _config.toggle = false; 1823 } 1824 return this.each(function () { 1825 const data = Collapse.getOrCreateInstance(this, _config); 1826 if (typeof config === 'string') { 1827 if (typeof data[config] === 'undefined') { 1828 throw new TypeError(`No method named "${config}"`); 1829 } 1830 data[config](); 1831 } 1832 }); 1833 } 1834 } 1835 1836 /** 1837 * Data API implementation 1838 */ 1839 1840 EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { 1841 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element 1842 if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { 1843 event.preventDefault(); 1844 } 1845 for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { 1846 Collapse.getOrCreateInstance(element, { 1847 toggle: false 1848 }).toggle(); 1849 } 1850 }); 1851 1852 /** 1853 * jQuery 1854 */ 1855 1856 defineJQueryPlugin(Collapse); 1857 1858 /** 1859 * -------------------------------------------------------------------------- 1860 * Bootstrap dropdown.js 1861 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1862 * -------------------------------------------------------------------------- 1863 */ 1864 1865 1866 /** 1867 * Constants 1868 */ 1869 1870 const NAME$a = 'dropdown'; 1871 const DATA_KEY$6 = 'bs.dropdown'; 1872 const EVENT_KEY$6 = `.${DATA_KEY$6}`; 1873 const DATA_API_KEY$3 = '.data-api'; 1874 const ESCAPE_KEY$2 = 'Escape'; 1875 const TAB_KEY$1 = 'Tab'; 1876 const ARROW_UP_KEY$1 = 'ArrowUp'; 1877 const ARROW_DOWN_KEY$1 = 'ArrowDown'; 1878 const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button 1879 1880 const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; 1881 const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; 1882 const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; 1883 const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; 1884 const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; 1885 const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; 1886 const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; 1887 const CLASS_NAME_SHOW$6 = 'show'; 1888 const CLASS_NAME_DROPUP = 'dropup'; 1889 const CLASS_NAME_DROPEND = 'dropend'; 1890 const CLASS_NAME_DROPSTART = 'dropstart'; 1891 const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; 1892 const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; 1893 const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; 1894 const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; 1895 const SELECTOR_MENU = '.dropdown-menu'; 1896 const SELECTOR_NAVBAR = '.navbar'; 1897 const SELECTOR_NAVBAR_NAV = '.navbar-nav'; 1898 const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 1899 const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; 1900 const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; 1901 const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; 1902 const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; 1903 const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; 1904 const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; 1905 const PLACEMENT_TOPCENTER = 'top'; 1906 const PLACEMENT_BOTTOMCENTER = 'bottom'; 1907 const Default$9 = { 1908 autoClose: true, 1909 boundary: 'clippingParents', 1910 display: 'dynamic', 1911 offset: [0, 2], 1912 popperConfig: null, 1913 reference: 'toggle' 1914 }; 1915 const DefaultType$9 = { 1916 autoClose: '(boolean|string)', 1917 boundary: '(string|element)', 1918 display: 'string', 1919 offset: '(array|string|function)', 1920 popperConfig: '(null|object|function)', 1921 reference: '(string|element|object)' 1922 }; 1923 1924 /** 1925 * Class definition 1926 */ 1927 1928 class Dropdown extends BaseComponent { 1929 constructor(element, config) { 1930 super(element, config); 1931 this._popper = null; 1932 this._parent = this._element.parentNode; // dropdown wrapper 1933 // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ 1934 this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); 1935 this._inNavbar = this._detectNavbar(); 1936 } 1937 1938 // Getters 1939 static get Default() { 1940 return Default$9; 1941 } 1942 static get DefaultType() { 1943 return DefaultType$9; 1944 } 1945 static get NAME() { 1946 return NAME$a; 1947 } 1948 1949 // Public 1950 toggle() { 1951 return this._isShown() ? this.hide() : this.show(); 1952 } 1953 show() { 1954 if (isDisabled(this._element) || this._isShown()) { 1955 return; 1956 } 1957 const relatedTarget = { 1958 relatedTarget: this._element 1959 }; 1960 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); 1961 if (showEvent.defaultPrevented) { 1962 return; 1963 } 1964 this._createPopper(); 1965 1966 // If this is a touch-enabled device we add extra 1967 // empty mouseover listeners to the body's immediate children; 1968 // only needed because of broken event delegation on iOS 1969 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 1970 if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { 1971 for (const element of [].concat(...document.body.children)) { 1972 EventHandler.on(element, 'mouseover', noop); 1973 } 1974 } 1975 this._element.focus(); 1976 this._element.setAttribute('aria-expanded', true); 1977 this._menu.classList.add(CLASS_NAME_SHOW$6); 1978 this._element.classList.add(CLASS_NAME_SHOW$6); 1979 EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); 1980 } 1981 hide() { 1982 if (isDisabled(this._element) || !this._isShown()) { 1983 return; 1984 } 1985 const relatedTarget = { 1986 relatedTarget: this._element 1987 }; 1988 this._completeHide(relatedTarget); 1989 } 1990 dispose() { 1991 if (this._popper) { 1992 this._popper.destroy(); 1993 } 1994 super.dispose(); 1995 } 1996 update() { 1997 this._inNavbar = this._detectNavbar(); 1998 if (this._popper) { 1999 this._popper.update(); 2000 } 2001 } 2002 2003 // Private 2004 _completeHide(relatedTarget) { 2005 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); 2006 if (hideEvent.defaultPrevented) { 2007 return; 2008 } 2009 2010 // If this is a touch-enabled device we remove the extra 2011 // empty mouseover listeners we added for iOS support 2012 if ('ontouchstart' in document.documentElement) { 2013 for (const element of [].concat(...document.body.children)) { 2014 EventHandler.off(element, 'mouseover', noop); 2015 } 2016 } 2017 if (this._popper) { 2018 this._popper.destroy(); 2019 } 2020 this._menu.classList.remove(CLASS_NAME_SHOW$6); 2021 this._element.classList.remove(CLASS_NAME_SHOW$6); 2022 this._element.setAttribute('aria-expanded', 'false'); 2023 Manipulator.removeDataAttribute(this._menu, 'popper'); 2024 EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); 2025 } 2026 _getConfig(config) { 2027 config = super._getConfig(config); 2028 if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { 2029 // Popper virtual elements require a getBoundingClientRect method 2030 throw new TypeError(`${NAME$a
vendor: 5,485 bytes, lines 2030-2177
2030.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); 2031 } 2032 return config; 2033 } 2034 _createPopper() { 2035 if (typeof Popper__namespace === 'undefined') { 2036 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); 2037 } 2038 let referenceElement = this._element; 2039 if (this._config.reference === 'parent') { 2040 referenceElement = this._parent; 2041 } else if (isElement(this._config.reference)) { 2042 referenceElement = getElement(this._config.reference); 2043 } else if (typeof this._config.reference === 'object') { 2044 referenceElement = this._config.reference; 2045 } 2046 const popperConfig = this._getPopperConfig(); 2047 this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig); 2048 } 2049 _isShown() { 2050 return this._menu.classList.contains(CLASS_NAME_SHOW$6); 2051 } 2052 _getPlacement() { 2053 const parentDropdown = this._parent; 2054 if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { 2055 return PLACEMENT_RIGHT; 2056 } 2057 if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { 2058 return PLACEMENT_LEFT; 2059 } 2060 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { 2061 return PLACEMENT_TOPCENTER; 2062 } 2063 if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { 2064 return PLACEMENT_BOTTOMCENTER; 2065 } 2066 2067 // We need to trim the value because custom properties can also include spaces 2068 const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; 2069 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { 2070 return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; 2071 } 2072 return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; 2073 } 2074 _detectNavbar() { 2075 return this._element.closest(SELECTOR_NAVBAR) !== null; 2076 } 2077 _getOffset() { 2078 const { 2079 offset 2080 } = this._config; 2081 if (typeof offset === 'string') { 2082 return offset.split(',').map(value => Number.parseInt(value, 10)); 2083 } 2084 if (typeof offset === 'function') { 2085 return popperData => offset(popperData, this._element); 2086 } 2087 return offset; 2088 } 2089 _getPopperConfig() { 2090 const defaultBsPopperConfig = { 2091 placement: this._getPlacement(), 2092 modifiers: [{ 2093 name: 'preventOverflow', 2094 options: { 2095 boundary: this._config.boundary 2096 } 2097 }, { 2098 name: 'offset', 2099 options: { 2100 offset: this._getOffset() 2101 } 2102 }] 2103 }; 2104 2105 // Disable Popper if we have a static display or Dropdown is in Navbar 2106 if (this._inNavbar || this._config.display === 'static') { 2107 Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove 2108 defaultBsPopperConfig.modifiers = [{ 2109 name: 'applyStyles', 2110 enabled: false 2111 }]; 2112 } 2113 return { 2114 ...defaultBsPopperConfig, 2115 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 2116 }; 2117 } 2118 _selectMenuItem({ 2119 key, 2120 target 2121 }) { 2122 const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); 2123 if (!items.length) { 2124 return; 2125 } 2126 2127 // if target isn't included in items (e.g. when expanding the dropdown) 2128 // allow cycling to get the last item in case key equals ARROW_UP_KEY 2129 getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); 2130 } 2131 2132 // Static 2133 static jQueryInterface(config) { 2134 return this.each(function () { 2135 const data = Dropdown.getOrCreateInstance(this, config); 2136 if (typeof config !== 'string') { 2137 return; 2138 } 2139 if (typeof data[config] === 'undefined') { 2140 throw new TypeError(`No method named "${config}"`); 2141 } 2142 data[config](); 2143 }); 2144 } 2145 static clearMenus(event) { 2146 if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { 2147 return; 2148 } 2149 const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); 2150 for (const toggle of openToggles) { 2151 const context = Dropdown.getInstance(toggle); 2152 if (!context || context._config.autoClose === false) { 2153 continue; 2154 } 2155 const composedPath = event.composedPath(); 2156 const isMenuTarget = composedPath.includes(context._menu); 2157 if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { 2158 continue; 2159 } 2160 2161 // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu 2162 if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { 2163 continue; 2164 } 2165 const relatedTarget = { 2166 relatedTarget: context._element 2167 }; 2168 if (event.type === 'click') { 2169 relatedTarget.clickEvent = event; 2170 } 2171 context._completeHide(relatedTarget); 2172 } 2173 } 2174 static dataApiKeydownHandler(event) { 2175 // If not an UP | DOWN | ESCAPE key => not a dropdown command 2176 // If input/textarea && if key is other than ESCAPE => not a dropdown command 2177
vendor: 2,561 bytes, lines 2178-2249
2178 const isInput = /input|textarea/i.test(event.target.tagName); 2179 const isEscapeEvent = event.key === ESCAPE_KEY$2; 2180 const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); 2181 if (!isUpOrDownEvent && !isEscapeEvent) { 2182 return; 2183 } 2184 if (isInput && !isEscapeEvent) { 2185 return; 2186 } 2187 event.preventDefault(); 2188 2189 // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ 2190 const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); 2191 const instance = Dropdown.getOrCreateInstance(getToggleButton); 2192 if (isUpOrDownEvent) { 2193 event.stopPropagation(); 2194 instance.show(); 2195 instance._selectMenuItem(event); 2196 return; 2197 } 2198 if (instance._isShown()) { 2199 // else is escape and we check if it is shown 2200 event.stopPropagation(); 2201 instance.hide(); 2202 getToggleButton.focus(); 2203 } 2204 } 2205 } 2206 2207 /** 2208 * Data API implementation 2209 */ 2210 2211 EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); 2212 EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); 2213 EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); 2214 EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); 2215 EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { 2216 event.preventDefault(); 2217 Dropdown.getOrCreateInstance(this).toggle(); 2218 }); 2219 2220 /** 2221 * jQuery 2222 */ 2223 2224 defineJQueryPlugin(Dropdown); 2225 2226 /** 2227 * -------------------------------------------------------------------------- 2228 * Bootstrap util/backdrop.js 2229 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 2230 * -------------------------------------------------------------------------- 2231 */ 2232 2233 2234 /** 2235 * Constants 2236 */ 2237 2238 const NAME$9 = 'backdrop'; 2239 const CLASS_NAME_FADE$4 = 'fade'; 2240 const CLASS_NAME_SHOW$5 = 'show'; 2241 const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; 2242 const Default$8 = { 2243 className: 'modal-backdrop', 2244 clickCallback: null, 2245 isAnimated: false, 2246 isVisible: true, 2247 // if false, we use the backdrop helper without adding any element to the dom 2248 rootElement: 'body' // give the choice to place backdrop under different elements 2249 };
vendor: 3,192 bytes, lines 2250-2374
2250 2251 const DefaultType$8 = { 2252 className: 'string', 2253 clickCallback: '(function|null)', 2254 isAnimated: 'boolean', 2255 isVisible: 'boolean', 2256 rootElement: '(element|string)' 2257 }; 2258 2259 /** 2260 * Class definition 2261 */ 2262 2263 class Backdrop extends Config { 2264 constructor(config) { 2265 super(); 2266 this._config = this._getConfig(config); 2267 this._isAppended = false; 2268 this._element = null; 2269 } 2270 2271 // Getters 2272 static get Default() { 2273 return Default$8; 2274 } 2275 static get DefaultType() { 2276 return DefaultType$8; 2277 } 2278 static get NAME() { 2279 return NAME$9; 2280 } 2281 2282 // Public 2283 show(callback) { 2284 if (!this._config.isVisible) { 2285 execute(callback); 2286 return; 2287 } 2288 this._append(); 2289 const element = this._getElement(); 2290 if (this._config.isAnimated) { 2291 reflow(element); 2292 } 2293 element.classList.add(CLASS_NAME_SHOW$5); 2294 this._emulateAnimation(() => { 2295 execute(callback); 2296 }); 2297 } 2298 hide(callback) { 2299 if (!this._config.isVisible) { 2300 execute(callback); 2301 return; 2302 } 2303 this._getElement().classList.remove(CLASS_NAME_SHOW$5); 2304 this._emulateAnimation(() => { 2305 this.dispose(); 2306 execute(callback); 2307 }); 2308 } 2309 dispose() { 2310 if (!this._isAppended) { 2311 return; 2312 } 2313 EventHandler.off(this._element, EVENT_MOUSEDOWN); 2314 this._element.remove(); 2315 this._isAppended = false; 2316 } 2317 2318 // Private 2319 _getElement() { 2320 if (!this._element) { 2321 const backdrop = document.createElement('div'); 2322 backdrop.className = this._config.className; 2323 if (this._config.isAnimated) { 2324 backdrop.classList.add(CLASS_NAME_FADE$4); 2325 } 2326 this._element = backdrop; 2327 } 2328 return this._element; 2329 } 2330 _configAfterMerge(config) { 2331 // use getElement() with the default "body" to get a fresh Element on each instantiation 2332 config.rootElement = getElement(config.rootElement); 2333 return config; 2334 } 2335 _append() { 2336 if (this._isAppended) { 2337 return; 2338 } 2339 const element = this._getElement(); 2340 this._config.rootElement.append(element); 2341 EventHandler.on(element, EVENT_MOUSEDOWN, () => { 2342 execute(this._config.clickCallback); 2343 }); 2344 this._isAppended = true; 2345 } 2346 _emulateAnimation(callback) { 2347 executeAfterTransition(callback, this._getElement(), this._config.isAnimated); 2348 } 2349 } 2350 2351 /** 2352 * -------------------------------------------------------------------------- 2353 * Bootstrap util/focustrap.js 2354 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 2355 * -------------------------------------------------------------------------- 2356 */ 2357 2358 2359 /** 2360 * Constants 2361 */ 2362 2363 const NAME$8 = 'focustrap'; 2364 const DATA_KEY$5 = 'bs.focustrap'; 2365 const EVENT_KEY$5 = `.${DATA_KEY$5}`; 2366 const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; 2367 const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; 2368 const TAB_KEY = 'Tab'; 2369 const TAB_NAV_FORWARD = 'forward'; 2370 const TAB_NAV_BACKWARD = 'backward'; 2371 const Default$7 = { 2372 autofocus: true, 2373 trapElement: null // The element to trap focus inside of 2374 };
vendor: 23,106 bytes, lines 2375-3102
2375 2376 const DefaultType$7 = { 2377 autofocus: 'boolean', 2378 trapElement: 'element' 2379 }; 2380 2381 /** 2382 * Class definition 2383 */ 2384 2385 class FocusTrap extends Config { 2386 constructor(config) { 2387 super(); 2388 this._config = this._getConfig(config); 2389 this._isActive = false; 2390 this._lastTabNavDirection = null; 2391 } 2392 2393 // Getters 2394 static get Default() { 2395 return Default$7; 2396 } 2397 static get DefaultType() { 2398 return DefaultType$7; 2399 } 2400 static get NAME() { 2401 return NAME$8; 2402 } 2403 2404 // Public 2405 activate() { 2406 if (this._isActive) { 2407 return; 2408 } 2409 if (this._config.autofocus) { 2410 this._config.trapElement.focus(); 2411 } 2412 EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop 2413 EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); 2414 EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); 2415 this._isActive = true; 2416 } 2417 deactivate() { 2418 if (!this._isActive) { 2419 return; 2420 } 2421 this._isActive = false; 2422 EventHandler.off(document, EVENT_KEY$5); 2423 } 2424 2425 // Private 2426 _handleFocusin(event) { 2427 const { 2428 trapElement 2429 } = this._config; 2430 if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { 2431 return; 2432 } 2433 const elements = SelectorEngine.focusableChildren(trapElement); 2434 if (elements.length === 0) { 2435 trapElement.focus(); 2436 } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { 2437 elements[elements.length - 1].focus(); 2438 } else { 2439 elements[0].focus(); 2440 } 2441 } 2442 _handleKeydown(event) { 2443 if (event.key !== TAB_KEY) { 2444 return; 2445 } 2446 this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; 2447 } 2448 } 2449 2450 /** 2451 * -------------------------------------------------------------------------- 2452 * Bootstrap util/scrollBar.js 2453 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 2454 * -------------------------------------------------------------------------- 2455 */ 2456 2457 2458 /** 2459 * Constants 2460 */ 2461 2462 const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; 2463 const SELECTOR_STICKY_CONTENT = '.sticky-top'; 2464 const PROPERTY_PADDING = 'padding-right'; 2465 const PROPERTY_MARGIN = 'margin-right'; 2466 2467 /** 2468 * Class definition 2469 */ 2470 2471 class ScrollBarHelper { 2472 constructor() { 2473 this._element = document.body; 2474 } 2475 2476 // Public 2477 getWidth() { 2478 // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes 2479 const documentWidth = document.documentElement.clientWidth; 2480 return Math.abs(window.innerWidth - documentWidth); 2481 } 2482 hide() { 2483 const width = this.getWidth(); 2484 this._disableOverFlow(); 2485 // give padding to element to balance the hidden scrollbar width 2486 this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); 2487 // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth 2488 this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); 2489 this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); 2490 } 2491 reset() { 2492 this._resetElementAttributes(this._element, 'overflow'); 2493 this._resetElementAttributes(this._element, PROPERTY_PADDING); 2494 this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); 2495 this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); 2496 } 2497 isOverflowing() { 2498 return this.getWidth() > 0; 2499 } 2500 2501 // Private 2502 _disableOverFlow() { 2503 this._saveInitialAttribute(this._element, 'overflow'); 2504 this._element.style.overflow = 'hidden'; 2505 } 2506 _setElementAttributes(selector, styleProperty, callback) { 2507 const scrollbarWidth = this.getWidth(); 2508 const manipulationCallBack = element => { 2509 if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { 2510 return; 2511 } 2512 this._saveInitialAttribute(element, styleProperty); 2513 const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); 2514 element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); 2515 }; 2516 this._applyManipulationCallback(selector, manipulationCallBack); 2517 } 2518 _saveInitialAttribute(element, styleProperty) { 2519 const actualValue = element.style.getPropertyValue(styleProperty); 2520 if (actualValue) { 2521 Manipulator.setDataAttribute(element, styleProperty, actualValue); 2522 } 2523 } 2524 _resetElementAttributes(selector, styleProperty) { 2525 const manipulationCallBack = element => { 2526 const value = Manipulator.getDataAttribute(element, styleProperty); 2527 // We only want to remove the property if the value is `null`; the value can also be zero 2528 if (value === null) { 2529 element.style.removeProperty(styleProperty); 2530 return; 2531 } 2532 Manipulator.removeDataAttribute(element, styleProperty); 2533 element.style.setProperty(styleProperty, value); 2534 }; 2535 this._applyManipulationCallback(selector, manipulationCallBack); 2536 } 2537 _applyManipulationCallback(selector, callBack) { 2538 if (isElement(selector)) { 2539 callBack(selector); 2540 return; 2541 } 2542 for (const sel of SelectorEngine.find(selector, this._element)) { 2543 callBack(sel); 2544 } 2545 } 2546 } 2547 2548 /** 2549 * -------------------------------------------------------------------------- 2550 * Bootstrap modal.js 2551 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 2552 * -------------------------------------------------------------------------- 2553 */ 2554 2555 2556 /** 2557 * Constants 2558 */ 2559 2560 const NAME$7 = 'modal'; 2561 const DATA_KEY$4 = 'bs.modal'; 2562 const EVENT_KEY$4 = `.${DATA_KEY$4}`; 2563 const DATA_API_KEY$2 = '.data-api'; 2564 const ESCAPE_KEY$1 = 'Escape'; 2565 const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; 2566 const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; 2567 const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; 2568 const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; 2569 const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; 2570 const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; 2571 const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; 2572 const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; 2573 const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; 2574 const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; 2575 const CLASS_NAME_OPEN = 'modal-open'; 2576 const CLASS_NAME_FADE$3 = 'fade'; 2577 const CLASS_NAME_SHOW$4 = 'show'; 2578 const CLASS_NAME_STATIC = 'modal-static'; 2579 const OPEN_SELECTOR$1 = '.modal.show'; 2580 const SELECTOR_DIALOG = '.modal-dialog'; 2581 const SELECTOR_MODAL_BODY = '.modal-body'; 2582 const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; 2583 const Default$6 = { 2584 backdrop: true, 2585 focus: true, 2586 keyboard: true 2587 }; 2588 const DefaultType$6 = { 2589 backdrop: '(boolean|string)', 2590 focus: 'boolean', 2591 keyboard: 'boolean' 2592 }; 2593 2594 /** 2595 * Class definition 2596 */ 2597 2598 class Modal extends BaseComponent { 2599 constructor(element, config) { 2600 super(element, config); 2601 this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); 2602 this._backdrop = this._initializeBackDrop(); 2603 this._focustrap = this._initializeFocusTrap(); 2604 this._isShown = false; 2605 this._isTransitioning = false; 2606 this._scrollBar = new ScrollBarHelper(); 2607 this._addEventListeners(); 2608 } 2609 2610 // Getters 2611 static get Default() { 2612 return Default$6; 2613 } 2614 static get DefaultType() { 2615 return DefaultType$6; 2616 } 2617 static get NAME() { 2618 return NAME$7; 2619 } 2620 2621 // Public 2622 toggle(relatedTarget) { 2623 return this._isShown ? this.hide() : this.show(relatedTarget); 2624 } 2625 show(relatedTarget) { 2626 if (this._isShown || this._isTransitioning) { 2627 return; 2628 } 2629 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { 2630 relatedTarget 2631 }); 2632 if (showEvent.defaultPrevented) { 2633 return; 2634 } 2635 this._isShown = true; 2636 this._isTransitioning = true; 2637 this._scrollBar.hide(); 2638 document.body.classList.add(CLASS_NAME_OPEN); 2639 this._adjustDialog(); 2640 this._backdrop.show(() => this._showElement(relatedTarget)); 2641 } 2642 hide() { 2643 if (!this._isShown || this._isTransitioning) { 2644 return; 2645 } 2646 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); 2647 if (hideEvent.defaultPrevented) { 2648 return; 2649 } 2650 this._isShown = false; 2651 this._isTransitioning = true; 2652 this._focustrap.deactivate(); 2653 this._element.classList.remove(CLASS_NAME_SHOW$4); 2654 this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); 2655 } 2656 dispose() { 2657 EventHandler.off(window, EVENT_KEY$4); 2658 EventHandler.off(this._dialog, EVENT_KEY$4); 2659 this._backdrop.dispose(); 2660 this._focustrap.deactivate(); 2661 super.dispose(); 2662 } 2663 handleUpdate() { 2664 this._adjustDialog(); 2665 } 2666 2667 // Private 2668 _initializeBackDrop() { 2669 return new Backdrop({ 2670 isVisible: Boolean(this._config.backdrop), 2671 // 'static' option will be translated to true, and booleans will keep their value, 2672 isAnimated: this._isAnimated() 2673 }); 2674 } 2675 _initializeFocusTrap() { 2676 return new FocusTrap({ 2677 trapElement: this._element 2678 }); 2679 } 2680 _showElement(relatedTarget) { 2681 // try to append dynamic modal 2682 if (!document.body.contains(this._element)) { 2683 document.body.append(this._element); 2684 } 2685 this._element.style.display = 'block'; 2686 this._element.removeAttribute('aria-hidden'); 2687 this._element.setAttribute('aria-modal', true); 2688 this._element.setAttribute('role', 'dialog'); 2689 this._element.scrollTop = 0; 2690 const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); 2691 if (modalBody) { 2692 modalBody.scrollTop = 0; 2693 } 2694 reflow(this._element); 2695 this._element.classList.add(CLASS_NAME_SHOW$4); 2696 const transitionComplete = () => { 2697 if (this._config.focus) { 2698 this._focustrap.activate(); 2699 } 2700 this._isTransitioning = false; 2701 EventHandler.trigger(this._element, EVENT_SHOWN$4, { 2702 relatedTarget 2703 }); 2704 }; 2705 this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); 2706 } 2707 _addEventListeners() { 2708 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { 2709 if (event.key !== ESCAPE_KEY$1) { 2710 return; 2711 } 2712 if (this._config.keyboard) { 2713 this.hide(); 2714 return; 2715 } 2716 this._triggerBackdropTransition(); 2717 }); 2718 EventHandler.on(window, EVENT_RESIZE$1, () => { 2719 if (this._isShown && !this._isTransitioning) { 2720 this._adjustDialog(); 2721 } 2722 }); 2723 EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { 2724 // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks 2725 EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { 2726 if (this._element !== event.target || this._element !== event2.target) { 2727 return; 2728 } 2729 if (this._config.backdrop === 'static') { 2730 this._triggerBackdropTransition(); 2731 return; 2732 } 2733 if (this._config.backdrop) { 2734 this.hide(); 2735 } 2736 }); 2737 }); 2738 } 2739 _hideModal() { 2740 this._element.style.display = 'none'; 2741 this._element.setAttribute('aria-hidden', true); 2742 this._element.removeAttribute('aria-modal'); 2743 this._element.removeAttribute('role'); 2744 this._isTransitioning = false; 2745 this._backdrop.hide(() => { 2746 document.body.classList.remove(CLASS_NAME_OPEN); 2747 this._resetAdjustments(); 2748 this._scrollBar.reset(); 2749 EventHandler.trigger(this._element, EVENT_HIDDEN$4); 2750 }); 2751 } 2752 _isAnimated() { 2753 return this._element.classList.contains(CLASS_NAME_FADE$3); 2754 } 2755 _triggerBackdropTransition() { 2756 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); 2757 if (hideEvent.defaultPrevented) { 2758 return; 2759 } 2760 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 2761 const initialOverflowY = this._element.style.overflowY; 2762 // return if the following background transition hasn't yet completed 2763 if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { 2764 return; 2765 } 2766 if (!isModalOverflowing) { 2767 this._element.style.overflowY = 'hidden'; 2768 } 2769 this._element.classList.add(CLASS_NAME_STATIC); 2770 this._queueCallback(() => { 2771 this._element.classList.remove(CLASS_NAME_STATIC); 2772 this._queueCallback(() => { 2773 this._element.style.overflowY = initialOverflowY; 2774 }, this._dialog); 2775 }, this._dialog); 2776 this._element.focus(); 2777 } 2778 2779 /** 2780 * The following methods are used to handle overflowing modals 2781 */ 2782 2783 _adjustDialog() { 2784 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 2785 const scrollbarWidth = this._scrollBar.getWidth(); 2786 const isBodyOverflowing = scrollbarWidth > 0; 2787 if (isBodyOverflowing && !isModalOverflowing) { 2788 const property = isRTL() ? 'paddingLeft' : 'paddingRight'; 2789 this._element.style[property] = `${scrollbarWidth}px`; 2790 } 2791 if (!isBodyOverflowing && isModalOverflowing) { 2792 const property = isRTL() ? 'paddingRight' : 'paddingLeft'; 2793 this._element.style[property] = `${scrollbarWidth}px`; 2794 } 2795 } 2796 _resetAdjustments() { 2797 this._element.style.paddingLeft = ''; 2798 this._element.style.paddingRight = ''; 2799 } 2800 2801 // Static 2802 static jQueryInterface(config, relatedTarget) { 2803 return this.each(function () { 2804 const data = Modal.getOrCreateInstance(this, config); 2805 if (typeof config !== 'string') { 2806 return; 2807 } 2808 if (typeof data[config] === 'undefined') { 2809 throw new TypeError(`No method named "${config}"`); 2810 } 2811 data[config](relatedTarget); 2812 }); 2813 } 2814 } 2815 2816 /** 2817 * Data API implementation 2818 */ 2819 2820 EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { 2821 const target = SelectorEngine.getElementFromSelector(this); 2822 if (['A', 'AREA'].includes(this.tagName)) { 2823 event.preventDefault(); 2824 } 2825 EventHandler.one(target, EVENT_SHOW$4, showEvent => { 2826 if (showEvent.defaultPrevented) { 2827 // only register focus restorer if modal will actually get shown 2828 return; 2829 } 2830 EventHandler.one(target, EVENT_HIDDEN$4, () => { 2831 if (isVisible(this)) { 2832 this.focus(); 2833 } 2834 }); 2835 }); 2836 2837 // avoid conflict when clicking modal toggler while another one is open 2838 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); 2839 if (alreadyOpen) { 2840 Modal.getInstance(alreadyOpen).hide(); 2841 } 2842 const data = Modal.getOrCreateInstance(target); 2843 data.toggle(this); 2844 }); 2845 enableDismissTrigger(Modal); 2846 2847 /** 2848 * jQuery 2849 */ 2850 2851 defineJQueryPlugin(Modal); 2852 2853 /** 2854 * -------------------------------------------------------------------------- 2855 * Bootstrap offcanvas.js 2856 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 2857 * -------------------------------------------------------------------------- 2858 */ 2859 2860 2861 /** 2862 * Constants 2863 */ 2864 2865 const NAME$6 = 'offcanvas'; 2866 const DATA_KEY$3 = 'bs.offcanvas'; 2867 const EVENT_KEY$3 = `.${DATA_KEY$3}`; 2868 const DATA_API_KEY$1 = '.data-api'; 2869 const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; 2870 const ESCAPE_KEY = 'Escape'; 2871 const CLASS_NAME_SHOW$3 = 'show'; 2872 const CLASS_NAME_SHOWING$1 = 'showing'; 2873 const CLASS_NAME_HIDING = 'hiding'; 2874 const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; 2875 const OPEN_SELECTOR = '.offcanvas.show'; 2876 const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; 2877 const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; 2878 const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; 2879 const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; 2880 const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; 2881 const EVENT_RESIZE = `resize${EVENT_KEY$3}`; 2882 const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; 2883 const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; 2884 const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; 2885 const Default$5 = { 2886 backdrop: true, 2887 keyboard: true, 2888 scroll: false 2889 }; 2890 const DefaultType$5 = { 2891 backdrop: '(boolean|string)', 2892 keyboard: 'boolean', 2893 scroll: 'boolean' 2894 }; 2895 2896 /** 2897 * Class definition 2898 */ 2899 2900 class Offcanvas extends BaseComponent { 2901 constructor(element, config) { 2902 super(element, config); 2903 this._isShown = false; 2904 this._backdrop = this._initializeBackDrop(); 2905 this._focustrap = this._initializeFocusTrap(); 2906 this._addEventListeners(); 2907 } 2908 2909 // Getters 2910 static get Default() { 2911 return Default$5; 2912 } 2913 static get DefaultType() { 2914 return DefaultType$5; 2915 } 2916 static get NAME() { 2917 return NAME$6; 2918 } 2919 2920 // Public 2921 toggle(relatedTarget) { 2922 return this._isShown ? this.hide() : this.show(relatedTarget); 2923 } 2924 show(relatedTarget) { 2925 if (this._isShown) { 2926 return; 2927 } 2928 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { 2929 relatedTarget 2930 }); 2931 if (showEvent.defaultPrevented) { 2932 return; 2933 } 2934 this._isShown = true; 2935 this._backdrop.show(); 2936 if (!this._config.scroll) { 2937 new ScrollBarHelper().hide(); 2938 } 2939 this._element.setAttribute('aria-modal', true); 2940 this._element.setAttribute('role', 'dialog'); 2941 this._element.classList.add(CLASS_NAME_SHOWING$1); 2942 const completeCallBack = () => { 2943 if (!this._config.scroll || this._config.backdrop) { 2944 this._focustrap.activate(); 2945 } 2946 this._element.classList.add(CLASS_NAME_SHOW$3); 2947 this._element.classList.remove(CLASS_NAME_SHOWING$1); 2948 EventHandler.trigger(this._element, EVENT_SHOWN$3, { 2949 relatedTarget 2950 }); 2951 }; 2952 this._queueCallback(completeCallBack, this._element, true); 2953 } 2954 hide() { 2955 if (!this._isShown) { 2956 return; 2957 } 2958 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); 2959 if (hideEvent.defaultPrevented) { 2960 return; 2961 } 2962 this._focustrap.deactivate(); 2963 this._element.blur(); 2964 this._isShown = false; 2965 this._element.classList.add(CLASS_NAME_HIDING); 2966 this._backdrop.hide(); 2967 const completeCallback = () => { 2968 this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); 2969 this._element.removeAttribute('aria-modal'); 2970 this._element.removeAttribute('role'); 2971 if (!this._config.scroll) { 2972 new ScrollBarHelper().reset(); 2973 } 2974 EventHandler.trigger(this._element, EVENT_HIDDEN$3); 2975 }; 2976 this._queueCallback(completeCallback, this._element, true); 2977 } 2978 dispose() { 2979 this._backdrop.dispose(); 2980 this._focustrap.deactivate(); 2981 super.dispose(); 2982 } 2983 2984 // Private 2985 _initializeBackDrop() { 2986 const clickCallback = () => { 2987 if (this._config.backdrop === 'static') { 2988 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 2989 return; 2990 } 2991 this.hide(); 2992 }; 2993 2994 // 'static' option will be translated to true, and booleans will keep their value 2995 const isVisible = Boolean(this._config.backdrop); 2996 return new Backdrop({ 2997 className: CLASS_NAME_BACKDROP, 2998 isVisible, 2999 isAnimated: true, 3000 rootElement: this._element.parentNode, 3001 clickCallback: isVisible ? clickCallback : null 3002 }); 3003 } 3004 _initializeFocusTrap() { 3005 return new FocusTrap({ 3006 trapElement: this._element 3007 }); 3008 } 3009 _addEventListeners() { 3010 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { 3011 if (event.key !== ESCAPE_KEY) { 3012 return; 3013 } 3014 if (this._config.keyboard) { 3015 this.hide(); 3016 return; 3017 } 3018 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 3019 }); 3020 } 3021 3022 // Static 3023 static jQueryInterface(config) { 3024 return this.each(function () { 3025 const data = Offcanvas.getOrCreateInstance(this, config); 3026 if (typeof config !== 'string') { 3027 return; 3028 } 3029 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 3030 throw new TypeError(`No method named "${config}"`); 3031 } 3032 data[config](this); 3033 }); 3034 } 3035 } 3036 3037 /** 3038 * Data API implementation 3039 */ 3040 3041 EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { 3042 const target = SelectorEngine.getElementFromSelector(this); 3043 if (['A', 'AREA'].includes(this.tagName)) { 3044 event.preventDefault(); 3045 } 3046 if (isDisabled(this)) { 3047 return; 3048 } 3049 EventHandler.one(target, EVENT_HIDDEN$3, () => { 3050 // focus on trigger when it is closed 3051 if (isVisible(this)) { 3052 this.focus(); 3053 } 3054 }); 3055 3056 // avoid conflict when clicking a toggler of an offcanvas, while another is open 3057 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); 3058 if (alreadyOpen && alreadyOpen !== target) { 3059 Offcanvas.getInstance(alreadyOpen).hide(); 3060 } 3061 const data = Offcanvas.getOrCreateInstance(target); 3062 data.toggle(this); 3063 }); 3064 EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { 3065 for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { 3066 Offcanvas.getOrCreateInstance(selector).show(); 3067 } 3068 }); 3069 EventHandler.on(window, EVENT_RESIZE, () => { 3070 for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { 3071 if (getComputedStyle(element).position !== 'fixed') { 3072 Offcanvas.getOrCreateInstance(element).hide(); 3073 } 3074 } 3075 }); 3076 enableDismissTrigger(Offcanvas); 3077 3078 /** 3079 * jQuery 3080 */ 3081 3082 defineJQueryPlugin(Offcanvas); 3083 3084 /** 3085 * -------------------------------------------------------------------------- 3086 * Bootstrap util/sanitizer.js 3087 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 3088 * -------------------------------------------------------------------------- 3089 */ 3090 3091 // js-docs-start allow-list 3092 const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 3093 const DefaultAllowlist = { 3094 // Global attributes allowed on any supplied element below. 3095 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], 3096 a: ['target', 'href', 'title', 'rel'], 3097 area: [], 3098 b: [], 3099 br: [], 3100 col: [], 3101 code: [], 3102 d
vendor: 2,312 bytes, lines 3102-3169
3102iv: [], 3103 em: [], 3104 hr: [], 3105 h1: [], 3106 h2: [], 3107 h3: [], 3108 h4: [], 3109 h5: [], 3110 h6: [], 3111 i: [], 3112 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], 3113 li: [], 3114 ol: [], 3115 p: [], 3116 pre: [], 3117 s: [], 3118 small: [], 3119 span: [], 3120 sub: [], 3121 sup: [], 3122 strong: [], 3123 u: [], 3124 ul: [] 3125 }; 3126 // js-docs-end allow-list 3127 3128 const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); 3129 3130 /** 3131 * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation 3132 * contexts. 3133 * 3134 * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38 3135 */ 3136 // eslint-disable-next-line unicorn/better-regex 3137 const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; 3138 const allowedAttribute = (attribute, allowedAttributeList) => { 3139 const attributeName = attribute.nodeName.toLowerCase(); 3140 if (allowedAttributeList.includes(attributeName)) { 3141 if (uriAttributes.has(attributeName)) { 3142 return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); 3143 } 3144 return true; 3145 } 3146 3147 // Check if a regular expression validates the attribute. 3148 return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); 3149 }; 3150 function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { 3151 if (!unsafeHtml.length) { 3152 return unsafeHtml; 3153 } 3154 if (sanitizeFunction && typeof sanitizeFunction === 'function') { 3155 return sanitizeFunction(unsafeHtml); 3156 } 3157 const domParser = new window.DOMParser(); 3158 const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); 3159 const elements = [].concat(...createdDocument.body.querySelectorAll('*')); 3160 for (const element of elements) { 3161 const elementName = element.nodeName.toLowerCase(); 3162 if (!Object.keys(allowList).includes(elementName)) { 3163 element.remove(); 3164 continue; 3165 } 3166 const attributeList = [].concat(...element.attributes); 3167 const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); 3168 for (const attribute of attributeList) { 3169 if (!allowedAttribute(attribute, allowedAttributes)) {
vendor: 7,447 bytes, lines 3170-3446
3170 element.removeAttribute(attribute.nodeName); 3171 } 3172 } 3173 } 3174 return createdDocument.body.innerHTML; 3175 } 3176 3177 /** 3178 * -------------------------------------------------------------------------- 3179 * Bootstrap util/template-factory.js 3180 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 3181 * -------------------------------------------------------------------------- 3182 */ 3183 3184 3185 /** 3186 * Constants 3187 */ 3188 3189 const NAME$5 = 'TemplateFactory'; 3190 const Default$4 = { 3191 allowList: DefaultAllowlist, 3192 content: {}, 3193 // { selector : text , selector2 : text2 , } 3194 extraClass: '', 3195 html: false, 3196 sanitize: true, 3197 sanitizeFn: null, 3198 template: '<div></div>' 3199 }; 3200 const DefaultType$4 = { 3201 allowList: 'object', 3202 content: 'object', 3203 extraClass: '(string|function)', 3204 html: 'boolean', 3205 sanitize: 'boolean', 3206 sanitizeFn: '(null|function)', 3207 template: 'string' 3208 }; 3209 const DefaultContentType = { 3210 entry: '(string|element|function|null)', 3211 selector: '(string|element)' 3212 }; 3213 3214 /** 3215 * Class definition 3216 */ 3217 3218 class TemplateFactory extends Config { 3219 constructor(config) { 3220 super(); 3221 this._config = this._getConfig(config); 3222 } 3223 3224 // Getters 3225 static get Default() { 3226 return Default$4; 3227 } 3228 static get DefaultType() { 3229 return DefaultType$4; 3230 } 3231 static get NAME() { 3232 return NAME$5; 3233 } 3234 3235 // Public 3236 getContent() { 3237 return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); 3238 } 3239 hasContent() { 3240 return this.getContent().length > 0; 3241 } 3242 changeContent(content) { 3243 this._checkContent(content); 3244 this._config.content = { 3245 ...this._config.content, 3246 ...content 3247 }; 3248 return this; 3249 } 3250 toHtml() { 3251 const templateWrapper = document.createElement('div'); 3252 templateWrapper.innerHTML = this._maybeSanitize(this._config.template); 3253 for (const [selector, text] of Object.entries(this._config.content)) { 3254 this._setContent(templateWrapper, text, selector); 3255 } 3256 const template = templateWrapper.children[0]; 3257 const extraClass = this._resolvePossibleFunction(this._config.extraClass); 3258 if (extraClass) { 3259 template.classList.add(...extraClass.split(' ')); 3260 } 3261 return template; 3262 } 3263 3264 // Private 3265 _typeCheckConfig(config) { 3266 super._typeCheckConfig(config); 3267 this._checkContent(config.content); 3268 } 3269 _checkContent(arg) { 3270 for (const [selector, content] of Object.entries(arg)) { 3271 super._typeCheckConfig({ 3272 selector, 3273 entry: content 3274 }, DefaultContentType); 3275 } 3276 } 3277 _setContent(template, content, selector) { 3278 const templateElement = SelectorEngine.findOne(selector, template); 3279 if (!templateElement) { 3280 return; 3281 } 3282 content = this._resolvePossibleFunction(content); 3283 if (!content) { 3284 templateElement.remove(); 3285 return; 3286 } 3287 if (isElement(content)) { 3288 this._putElementInTemplate(getElement(content), templateElement); 3289 return; 3290 } 3291 if (this._config.html) { 3292 templateElement.innerHTML = this._maybeSanitize(content); 3293 return; 3294 } 3295 templateElement.textContent = content; 3296 } 3297 _maybeSanitize(arg) { 3298 return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; 3299 } 3300 _resolvePossibleFunction(arg) { 3301 return execute(arg, [this]); 3302 } 3303 _putElementInTemplate(element, templateElement) { 3304 if (this._config.html) { 3305 templateElement.innerHTML = ''; 3306 templateElement.append(element); 3307 return; 3308 } 3309 templateElement.textContent = element.textContent; 3310 } 3311 } 3312 3313 /** 3314 * -------------------------------------------------------------------------- 3315 * Bootstrap tooltip.js 3316 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 3317 * -------------------------------------------------------------------------- 3318 */ 3319 3320 3321 /** 3322 * Constants 3323 */ 3324 3325 const NAME$4 = 'tooltip'; 3326 const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); 3327 const CLASS_NAME_FADE$2 = 'fade'; 3328 const CLASS_NAME_MODAL = 'modal'; 3329 const CLASS_NAME_SHOW$2 = 'show'; 3330 const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; 3331 const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; 3332 const EVENT_MODAL_HIDE = 'hide.bs.modal'; 3333 const TRIGGER_HOVER = 'hover'; 3334 const TRIGGER_FOCUS = 'focus'; 3335 const TRIGGER_CLICK = 'click'; 3336 const TRIGGER_MANUAL = 'manual'; 3337 const EVENT_HIDE$2 = 'hide'; 3338 const EVENT_HIDDEN$2 = 'hidden'; 3339 const EVENT_SHOW$2 = 'show'; 3340 const EVENT_SHOWN$2 = 'shown'; 3341 const EVENT_INSERTED = 'inserted'; 3342 const EVENT_CLICK$1 = 'click'; 3343 const EVENT_FOCUSIN$1 = 'focusin'; 3344 const EVENT_FOCUSOUT$1 = 'focusout'; 3345 const EVENT_MOUSEENTER = 'mouseenter'; 3346 const EVENT_MOUSELEAVE = 'mouseleave'; 3347 const AttachmentMap = { 3348 AUTO: 'auto', 3349 TOP: 'top', 3350 RIGHT: isRTL() ? 'left' : 'right', 3351 BOTTOM: 'bottom', 3352 LEFT: isRTL() ? 'right' : 'left' 3353 }; 3354 const Default$3 = { 3355 allowList: DefaultAllowlist, 3356 animation: true, 3357 boundary: 'clippingParents', 3358 container: false, 3359 customClass: '', 3360 delay: 0, 3361 fallbackPlacements: ['top', 'right', 'bottom', 'left'], 3362 html: false, 3363 offset: [0, 6], 3364 placement: 'top', 3365 popperConfig: null, 3366 sanitize: true, 3367 sanitizeFn: null, 3368 selector: false, 3369 template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>', 3370 title: '', 3371 trigger: 'hover focus' 3372 }; 3373 const DefaultType$3 = { 3374 allowList: 'object', 3375 animation: 'boolean', 3376 boundary: '(string|element)', 3377 container: '(string|element|boolean)', 3378 customClass: '(string|function)', 3379 delay: '(number|object)', 3380 fallbackPlacements: 'array', 3381 html: 'boolean', 3382 offset: '(array|string|function)', 3383 placement: '(string|function)', 3384 popperConfig: '(null|object|function)', 3385 sanitize: 'boolean', 3386 sanitizeFn: '(null|function)', 3387 selector: '(string|boolean)', 3388 template: 'string', 3389 title: '(string|element|function)', 3390 trigger: 'string' 3391 }; 3392 3393 /** 3394 * Class definition 3395 */ 3396 3397 class Tooltip extends BaseComponent { 3398 constructor(element, config) { 3399 if (typeof Popper__namespace === 'undefined') { 3400 throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); 3401 } 3402 super(element, config); 3403 3404 // Private 3405 this._isEnabled = true; 3406 this._timeout = 0; 3407 this._isHovered = null; 3408 this._activeTrigger = {}; 3409 this._popper = null; 3410 this._templateFactory = null; 3411 this._newContent = null; 3412 3413 // Protected 3414 this.tip = null; 3415 this._setListeners(); 3416 if (!this._config.selector) { 3417 this._fixTitle(); 3418 } 3419 } 3420 3421 // Getters 3422 static get Default() { 3423 return Default$3; 3424 } 3425 static get DefaultType() { 3426 return DefaultType$3; 3427 } 3428 static get NAME() { 3429 return NAME$4; 3430 } 3431 3432 // Public 3433 enable() { 3434 this._isEnabled = true; 3435 } 3436 disable() { 3437 this._isEnabled = false; 3438 } 3439 toggleEnabled() { 3440 this._isEnabled = !this._isEnabled; 3441 } 3442 toggle() { 3443 if (!this._isEnabled) { 3444 return; 3445 } 3446 this._activeTrigger.click = !this._activeTrigger.click;
vendor: 6,583 bytes, lines 3446-3634
3446 3447 if (this._isShown()) { 3448 this._leave(); 3449 return; 3450 } 3451 this._enter(); 3452 } 3453 dispose() { 3454 clearTimeout(this._timeout); 3455 EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 3456 if (this._element.getAttribute('data-bs-original-title')) { 3457 this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); 3458 } 3459 this._disposePopper(); 3460 super.dispose(); 3461 } 3462 show() { 3463 if (this._element.style.display === 'none') { 3464 throw new Error('Please use show on visible elements'); 3465 } 3466 if (!(this._isWithContent() && this._isEnabled)) { 3467 return; 3468 } 3469 const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); 3470 const shadowRoot = findShadowRoot(this._element); 3471 const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); 3472 if (showEvent.defaultPrevented || !isInTheDom) { 3473 return; 3474 } 3475 3476 // TODO: v6 remove this or make it optional 3477 this._disposePopper(); 3478 const tip = this._getTipElement(); 3479 this._element.setAttribute('aria-describedby', tip.getAttribute('id')); 3480 const { 3481 container 3482 } = this._config; 3483 if (!this._element.ownerDocument.documentElement.contains(this.tip)) { 3484 container.append(tip); 3485 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); 3486 } 3487 this._popper = this._createPopper(tip); 3488 tip.classList.add(CLASS_NAME_SHOW$2); 3489 3490 // If this is a touch-enabled device we add extra 3491 // empty mouseover listeners to the body's immediate children; 3492 // only needed because of broken event delegation on iOS 3493 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 3494 if ('ontouchstart' in document.documentElement) { 3495 for (const element of [].concat(...document.body.children)) { 3496 EventHandler.on(element, 'mouseover', noop); 3497 } 3498 } 3499 const complete = () => { 3500 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); 3501 if (this._isHovered === false) { 3502 this._leave(); 3503 } 3504 this._isHovered = false; 3505 }; 3506 this._queueCallback(complete, this.tip, this._isAnimated()); 3507 } 3508 hide() { 3509 if (!this._isShown()) { 3510 return; 3511 } 3512 const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); 3513 if (hideEvent.defaultPrevented) { 3514 return; 3515 } 3516 const tip = this._getTipElement(); 3517 tip.classList.remove(CLASS_NAME_SHOW$2); 3518 3519 // If this is a touch-enabled device we remove the extra 3520 // empty mouseover listeners we added for iOS support 3521 if ('ontouchstart' in document.documentElement) { 3522 for (const element of [].concat(...document.body.children)) { 3523 EventHandler.off(element, 'mouseover', noop); 3524 } 3525 } 3526 this._activeTrigger[TRIGGER_CLICK] = false; 3527 this._activeTrigger[TRIGGER_FOCUS] = false; 3528 this._activeTrigger[TRIGGER_HOVER] = false; 3529 this._isHovered = null; // it is a trick to support manual triggering 3530 3531 const complete = () => { 3532 if (this._isWithActiveTrigger()) { 3533 return; 3534 } 3535 if (!this._isHovered) { 3536 this._disposePopper(); 3537 } 3538 this._element.removeAttribute('aria-describedby'); 3539 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); 3540 }; 3541 this._queueCallback(complete, this.tip, this._isAnimated()); 3542 } 3543 update() { 3544 if (this._popper) { 3545 this._popper.update(); 3546 } 3547 } 3548 3549 // Protected 3550 _isWithContent() { 3551 return Boolean(this._getTitle()); 3552 } 3553 _getTipElement() { 3554 if (!this.tip) { 3555 this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); 3556 } 3557 return this.tip; 3558 } 3559 _createTipElement(content) { 3560 const tip = this._getTemplateFactory(content).toHtml(); 3561 3562 // TODO: remove this check in v6 3563 if (!tip) { 3564 return null; 3565 } 3566 tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); 3567 // TODO: v6 the following can be achieved with CSS only 3568 tip.classList.add(`bs-${this.constructor.NAME}-auto`); 3569 const tipId = getUID(this.constructor.NAME).toString(); 3570 tip.setAttribute('id', tipId); 3571 if (this._isAnimated()) { 3572 tip.classList.add(CLASS_NAME_FADE$2); 3573 } 3574 return tip; 3575 } 3576 setContent(content) { 3577 this._newContent = content; 3578 if (this._isShown()) { 3579 this._disposePopper(); 3580 this.show(); 3581 } 3582 } 3583 _getTemplateFactory(content) { 3584 if (this._templateFactory) { 3585 this._templateFactory.changeContent(content); 3586 } else { 3587 this._templateFactory = new TemplateFactory({ 3588 ...this._config, 3589 // the `content` var has to be after `this._config` 3590 // to override config.content in case of popover 3591 content, 3592 extraClass: this._resolvePossibleFunction(this._config.customClass) 3593 }); 3594 } 3595 return this._templateFactory; 3596 } 3597 _getContentForTemplate() { 3598 return { 3599 [SELECTOR_TOOLTIP_INNER]: this._getTitle() 3600 }; 3601 } 3602 _getTitle() { 3603 return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); 3604 } 3605 3606 // Private 3607 _initializeOnDelegatedTarget(event) { 3608 return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); 3609 } 3610 _isAnimated() { 3611 return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); 3612 } 3613 _isShown() { 3614 return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); 3615 } 3616 _createPopper(tip) { 3617 const placement = execute(this._config.placement, [this, tip, this._element]); 3618 const attachment = AttachmentMap[placement.toUpperCase()]; 3619 return Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment)); 3620 } 3621 _getOffset() { 3622 const { 3623 offset 3624 } = this._config; 3625 if (typeof offset === 'string') { 3626 return offset.split(',').map(value => Number.parseInt(value, 10)); 3627 } 3628 if (typeof offset === 'function') { 3629 return popperData => offset(popperData, this._element); 3630 } 3631 return offset; 3632 } 3633 _resolvePossibleFunction(arg) { 3634 return execute(arg, [this._element
vendor: 1,566 bytes, lines 3634-3680
3634]); 3635 } 3636 _getPopperConfig(attachment) { 3637 const defaultBsPopperConfig = { 3638 placement: attachment, 3639 modifiers: [{ 3640 name: 'flip', 3641 options: { 3642 fallbackPlacements: this._config.fallbackPlacements 3643 } 3644 }, { 3645 name: 'offset', 3646 options: { 3647 offset: this._getOffset() 3648 } 3649 }, { 3650 name: 'preventOverflow', 3651 options: { 3652 boundary: this._config.boundary 3653 } 3654 }, { 3655 name: 'arrow', 3656 options: { 3657 element: `.${this.constructor.NAME}-arrow` 3658 } 3659 }, { 3660 name: 'preSetPlacement', 3661 enabled: true, 3662 phase: 'beforeMain', 3663 fn: data => { 3664 // Pre-set Popper's placement attribute in order to read the arrow sizes properly. 3665 // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement 3666 this._getTipElement().setAttribute('data-popper-placement', data.state.placement); 3667 } 3668 }] 3669 }; 3670 return { 3671 ...defaultBsPopperConfig, 3672 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 3673 }; 3674 } 3675 _setListeners() { 3676 const triggers = this._config.trigger.split(' '); 3677 for (const trigger of triggers) { 3678 if (trigger === 'click') { 3679 EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { 3680 const context = this._initializeOnDelegatedTarget(event
vendor: 28,183 bytes, lines 3680-4545
3680); 3681 context.toggle(); 3682 }); 3683 } else if (trigger !== TRIGGER_MANUAL) { 3684 const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); 3685 const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); 3686 EventHandler.on(this._element, eventIn, this._config.selector, event => { 3687 const context = this._initializeOnDelegatedTarget(event); 3688 context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; 3689 context._enter(); 3690 }); 3691 EventHandler.on(this._element, eventOut, this._config.selector, event => { 3692 const context = this._initializeOnDelegatedTarget(event); 3693 context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); 3694 context._leave(); 3695 }); 3696 } 3697 } 3698 this._hideModalHandler = () => { 3699 if (this._element) { 3700 this.hide(); 3701 } 3702 }; 3703 EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 3704 } 3705 _fixTitle() { 3706 const title = this._element.getAttribute('title'); 3707 if (!title) { 3708 return; 3709 } 3710 if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { 3711 this._element.setAttribute('aria-label', title); 3712 } 3713 this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility 3714 this._element.removeAttribute('title'); 3715 } 3716 _enter() { 3717 if (this._isShown() || this._isHovered) { 3718 this._isHovered = true; 3719 return; 3720 } 3721 this._isHovered = true; 3722 this._setTimeout(() => { 3723 if (this._isHovered) { 3724 this.show(); 3725 } 3726 }, this._config.delay.show); 3727 } 3728 _leave() { 3729 if (this._isWithActiveTrigger()) { 3730 return; 3731 } 3732 this._isHovered = false; 3733 this._setTimeout(() => { 3734 if (!this._isHovered) { 3735 this.hide(); 3736 } 3737 }, this._config.delay.hide); 3738 } 3739 _setTimeout(handler, timeout) { 3740 clearTimeout(this._timeout); 3741 this._timeout = setTimeout(handler, timeout); 3742 } 3743 _isWithActiveTrigger() { 3744 return Object.values(this._activeTrigger).includes(true); 3745 } 3746 _getConfig(config) { 3747 const dataAttributes = Manipulator.getDataAttributes(this._element); 3748 for (const dataAttribute of Object.keys(dataAttributes)) { 3749 if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { 3750 delete dataAttributes[dataAttribute]; 3751 } 3752 } 3753 config = { 3754 ...dataAttributes, 3755 ...(typeof config === 'object' && config ? config : {}) 3756 }; 3757 config = this._mergeConfigObj(config); 3758 config = this._configAfterMerge(config); 3759 this._typeCheckConfig(config); 3760 return config; 3761 } 3762 _configAfterMerge(config) { 3763 config.container = config.container === false ? document.body : getElement(config.container); 3764 if (typeof config.delay === 'number') { 3765 config.delay = { 3766 show: config.delay, 3767 hide: config.delay 3768 }; 3769 } 3770 if (typeof config.title === 'number') { 3771 config.title = config.title.toString(); 3772 } 3773 if (typeof config.content === 'number') { 3774 config.content = config.content.toString(); 3775 } 3776 return config; 3777 } 3778 _getDelegateConfig() { 3779 const config = {}; 3780 for (const [key, value] of Object.entries(this._config)) { 3781 if (this.constructor.Default[key] !== value) { 3782 config[key] = value; 3783 } 3784 } 3785 config.selector = false; 3786 config.trigger = 'manual'; 3787 3788 // In the future can be replaced with: 3789 // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) 3790 // `Object.fromEntries(keysWithDifferentValues)` 3791 return config; 3792 } 3793 _disposePopper() { 3794 if (this._popper) { 3795 this._popper.destroy(); 3796 this._popper = null; 3797 } 3798 if (this.tip) { 3799 this.tip.remove(); 3800 this.tip = null; 3801 } 3802 } 3803 3804 // Static 3805 static jQueryInterface(config) { 3806 return this.each(function () { 3807 const data = Tooltip.getOrCreateInstance(this, config); 3808 if (typeof config !== 'string') { 3809 return; 3810 } 3811 if (typeof data[config] === 'undefined') { 3812 throw new TypeError(`No method named "${config}"`); 3813 } 3814 data[config](); 3815 }); 3816 } 3817 } 3818 3819 /** 3820 * jQuery 3821 */ 3822 3823 defineJQueryPlugin(Tooltip); 3824 3825 /** 3826 * -------------------------------------------------------------------------- 3827 * Bootstrap popover.js 3828 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 3829 * -------------------------------------------------------------------------- 3830 */ 3831 3832 3833 /** 3834 * Constants 3835 */ 3836 3837 const NAME$3 = 'popover'; 3838 const SELECTOR_TITLE = '.popover-header'; 3839 const SELECTOR_CONTENT = '.popover-body'; 3840 const Default$2 = { 3841 ...Tooltip.Default, 3842 content: '', 3843 offset: [0, 8], 3844 placement: 'right', 3845 template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>', 3846 trigger: 'click' 3847 }; 3848 const DefaultType$2 = { 3849 ...Tooltip.DefaultType, 3850 content: '(null|string|element|function)' 3851 }; 3852 3853 /** 3854 * Class definition 3855 */ 3856 3857 class Popover extends Tooltip { 3858 // Getters 3859 static get Default() { 3860 return Default$2; 3861 } 3862 static get DefaultType() { 3863 return DefaultType$2; 3864 } 3865 static get NAME() { 3866 return NAME$3; 3867 } 3868 3869 // Overrides 3870 _isWithContent() { 3871 return this._getTitle() || this._getContent(); 3872 } 3873 3874 // Private 3875 _getContentForTemplate() { 3876 return { 3877 [SELECTOR_TITLE]: this._getTitle(), 3878 [SELECTOR_CONTENT]: this._getContent() 3879 }; 3880 } 3881 _getContent() { 3882 return this._resolvePossibleFunction(this._config.content); 3883 } 3884 3885 // Static 3886 static jQueryInterface(config) { 3887 return this.each(function () { 3888 const data = Popover.getOrCreateInstance(this, config); 3889 if (typeof config !== 'string') { 3890 return; 3891 } 3892 if (typeof data[config] === 'undefined') { 3893 throw new TypeError(`No method named "${config}"`); 3894 } 3895 data[config](); 3896 }); 3897 } 3898 } 3899 3900 /** 3901 * jQuery 3902 */ 3903 3904 defineJQueryPlugin(Popover); 3905 3906 /** 3907 * -------------------------------------------------------------------------- 3908 * Bootstrap scrollspy.js 3909 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 3910 * -------------------------------------------------------------------------- 3911 */ 3912 3913 3914 /** 3915 * Constants 3916 */ 3917 3918 const NAME$2 = 'scrollspy'; 3919 const DATA_KEY$2 = 'bs.scrollspy'; 3920 const EVENT_KEY$2 = `.${DATA_KEY$2}`; 3921 const DATA_API_KEY = '.data-api'; 3922 const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; 3923 const EVENT_CLICK = `click${EVENT_KEY$2}`; 3924 const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; 3925 const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; 3926 const CLASS_NAME_ACTIVE$1 = 'active'; 3927 const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; 3928 const SELECTOR_TARGET_LINKS = '[href]'; 3929 const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; 3930 const SELECTOR_NAV_LINKS = '.nav-link'; 3931 const SELECTOR_NAV_ITEMS = '.nav-item'; 3932 const SELECTOR_LIST_ITEMS = '.list-group-item'; 3933 const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; 3934 const SELECTOR_DROPDOWN = '.dropdown'; 3935 const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; 3936 const Default$1 = { 3937 offset: null, 3938 // TODO: v6 @deprecated, keep it for backwards compatibility reasons 3939 rootMargin: '0px 0px -25%', 3940 smoothScroll: false, 3941 target: null, 3942 threshold: [0.1, 0.5, 1] 3943 }; 3944 const DefaultType$1 = { 3945 offset: '(number|null)', 3946 // TODO v6 @deprecated, keep it for backwards compatibility reasons 3947 rootMargin: 'string', 3948 smoothScroll: 'boolean', 3949 target: 'element', 3950 threshold: 'array' 3951 }; 3952 3953 /** 3954 * Class definition 3955 */ 3956 3957 class ScrollSpy extends BaseComponent { 3958 constructor(element, config) { 3959 super(element, config); 3960 3961 // this._element is the observablesContainer and config.target the menu links wrapper 3962 this._targetLinks = new Map(); 3963 this._observableSections = new Map(); 3964 this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; 3965 this._activeTarget = null; 3966 this._observer = null; 3967 this._previousScrollData = { 3968 visibleEntryTop: 0, 3969 parentScrollTop: 0 3970 }; 3971 this.refresh(); // initialize 3972 } 3973 3974 // Getters 3975 static get Default() { 3976 return Default$1; 3977 } 3978 static get DefaultType() { 3979 return DefaultType$1; 3980 } 3981 static get NAME() { 3982 return NAME$2; 3983 } 3984 3985 // Public 3986 refresh() { 3987 this._initializeTargetsAndObservables(); 3988 this._maybeEnableSmoothScroll(); 3989 if (this._observer) { 3990 this._observer.disconnect(); 3991 } else { 3992 this._observer = this._getNewObserver(); 3993 } 3994 for (const section of this._observableSections.values()) { 3995 this._observer.observe(section); 3996 } 3997 } 3998 dispose() { 3999 this._observer.disconnect(); 4000 super.dispose(); 4001 } 4002 4003 // Private 4004 _configAfterMerge(config) { 4005 // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case 4006 config.target = getElement(config.target) || document.body; 4007 4008 // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only 4009 config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; 4010 if (typeof config.threshold === 'string') { 4011 config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); 4012 } 4013 return config; 4014 } 4015 _maybeEnableSmoothScroll() { 4016 if (!this._config.smoothScroll) { 4017 return; 4018 } 4019 4020 // unregister any previous listeners 4021 EventHandler.off(this._config.target, EVENT_CLICK); 4022 EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { 4023 const observableSection = this._observableSections.get(event.target.hash); 4024 if (observableSection) { 4025 event.preventDefault(); 4026 const root = this._rootElement || window; 4027 const height = observableSection.offsetTop - this._element.offsetTop; 4028 if (root.scrollTo) { 4029 root.scrollTo({ 4030 top: height, 4031 behavior: 'smooth' 4032 }); 4033 return; 4034 } 4035 4036 // Chrome 60 doesn't support `scrollTo` 4037 root.scrollTop = height; 4038 } 4039 }); 4040 } 4041 _getNewObserver() { 4042 const options = { 4043 root: this._rootElement, 4044 threshold: this._config.threshold, 4045 rootMargin: this._config.rootMargin 4046 }; 4047 return new IntersectionObserver(entries => this._observerCallback(entries), options); 4048 } 4049 4050 // The logic of selection 4051 _observerCallback(entries) { 4052 const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); 4053 const activate = entry => { 4054 this._previousScrollData.visibleEntryTop = entry.target.offsetTop; 4055 this._process(targetElement(entry)); 4056 }; 4057 const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; 4058 const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; 4059 this._previousScrollData.parentScrollTop = parentScrollTop; 4060 for (const entry of entries) { 4061 if (!entry.isIntersecting) { 4062 this._activeTarget = null; 4063 this._clearActiveClass(targetElement(entry)); 4064 continue; 4065 } 4066 const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; 4067 // if we are scrolling down, pick the bigger offsetTop 4068 if (userScrollsDown && entryIsLowerThanPrevious) { 4069 activate(entry); 4070 // if parent isn't scrolled, let's keep the first visible item, breaking the iteration 4071 if (!parentScrollTop) { 4072 return; 4073 } 4074 continue; 4075 } 4076 4077 // if we are scrolling up, pick the smallest offsetTop 4078 if (!userScrollsDown && !entryIsLowerThanPrevious) { 4079 activate(entry); 4080 } 4081 } 4082 } 4083 _initializeTargetsAndObservables() { 4084 this._targetLinks = new Map(); 4085 this._observableSections = new Map(); 4086 const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); 4087 for (const anchor of targetLinks) { 4088 // ensure that the anchor has an id and is not disabled 4089 if (!anchor.hash || isDisabled(anchor)) { 4090 continue; 4091 } 4092 const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); 4093 4094 // ensure that the observableSection exists & is visible 4095 if (isVisible(observableSection)) { 4096 this._targetLinks.set(decodeURI(anchor.hash), anchor); 4097 this._observableSections.set(anchor.hash, observableSection); 4098 } 4099 } 4100 } 4101 _process(target) { 4102 if (this._activeTarget === target) { 4103 return; 4104 } 4105 this._clearActiveClass(this._config.target); 4106 this._activeTarget = target; 4107 target.classList.add(CLASS_NAME_ACTIVE$1); 4108 this._activateParents(target); 4109 EventHandler.trigger(this._element, EVENT_ACTIVATE, { 4110 relatedTarget: target 4111 }); 4112 } 4113 _activateParents(target) { 4114 // Activate dropdown parents 4115 if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { 4116 SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); 4117 return; 4118 } 4119 for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { 4120 // Set triggered links parents as active 4121 // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor 4122 for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { 4123 item.classList.add(CLASS_NAME_ACTIVE$1); 4124 } 4125 } 4126 } 4127 _clearActiveClass(parent) { 4128 parent.classList.remove(CLASS_NAME_ACTIVE$1); 4129 const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); 4130 for (const node of activeNodes) { 4131 node.classList.remove(CLASS_NAME_ACTIVE$1); 4132 } 4133 } 4134 4135 // Static 4136 static jQueryInterface(config) { 4137 return this.each(function () { 4138 const data = ScrollSpy.getOrCreateInstance(this, config); 4139 if (typeof config !== 'string') { 4140 return; 4141 } 4142 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 4143 throw new TypeError(`No method named "${config}"`); 4144 } 4145 data[config](); 4146 }); 4147 } 4148 } 4149 4150 /** 4151 * Data API implementation 4152 */ 4153 4154 EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { 4155 for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { 4156 ScrollSpy.getOrCreateInstance(spy); 4157 } 4158 }); 4159 4160 /** 4161 * jQuery 4162 */ 4163 4164 defineJQueryPlugin(ScrollSpy); 4165 4166 /** 4167 * -------------------------------------------------------------------------- 4168 * Bootstrap tab.js 4169 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4170 * -------------------------------------------------------------------------- 4171 */ 4172 4173 4174 /** 4175 * Constants 4176 */ 4177 4178 const NAME$1 = 'tab'; 4179 const DATA_KEY$1 = 'bs.tab'; 4180 const EVENT_KEY$1 = `.${DATA_KEY$1}`; 4181 const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; 4182 const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; 4183 const EVENT_SHOW$1 = `show${EVENT_KEY$1}`; 4184 const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; 4185 const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; 4186 const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; 4187 const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; 4188 const ARROW_LEFT_KEY = 'ArrowLeft'; 4189 const ARROW_RIGHT_KEY = 'ArrowRight'; 4190 const ARROW_UP_KEY = 'ArrowUp'; 4191 const ARROW_DOWN_KEY = 'ArrowDown'; 4192 const HOME_KEY = 'Home'; 4193 const END_KEY = 'End'; 4194 const CLASS_NAME_ACTIVE = 'active'; 4195 const CLASS_NAME_FADE$1 = 'fade'; 4196 const CLASS_NAME_SHOW$1 = 'show'; 4197 const CLASS_DROPDOWN = 'dropdown'; 4198 const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; 4199 const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'; 4200 const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`; 4201 const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; 4202 const SELECTOR_OUTER = '.nav-item, .list-group-item'; 4203 const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; 4204 const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6 4205 const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; 4206 const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; 4207 4208 /** 4209 * Class definition 4210 */ 4211 4212 class Tab extends BaseComponent { 4213 constructor(element) { 4214 super(element); 4215 this._parent = this._element.closest(SELECTOR_TAB_PANEL); 4216 if (!this._parent) { 4217 return; 4218 // TODO: should throw exception in v6 4219 // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`) 4220 } 4221 4222 // Set up initial aria attributes 4223 this._setInitialAttributes(this._parent, this._getChildren()); 4224 EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); 4225 } 4226 4227 // Getters 4228 static get NAME() { 4229 return NAME$1; 4230 } 4231 4232 // Public 4233 show() { 4234 // Shows this elem and deactivate the active sibling if exists 4235 const innerElem = this._element; 4236 if (this._elemIsActive(innerElem)) { 4237 return; 4238 } 4239 4240 // Search for active tab on same parent to deactivate it 4241 const active = this._getActiveElem(); 4242 const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { 4243 relatedTarget: innerElem 4244 }) : null; 4245 const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { 4246 relatedTarget: active 4247 }); 4248 if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { 4249 return; 4250 } 4251 this._deactivate(active, innerElem); 4252 this._activate(innerElem, active); 4253 } 4254 4255 // Private 4256 _activate(element, relatedElem) { 4257 if (!element) { 4258 return; 4259 } 4260 element.classList.add(CLASS_NAME_ACTIVE); 4261 this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section 4262 4263 const complete = () => { 4264 if (element.getAttribute('role') !== 'tab') { 4265 element.classList.add(CLASS_NAME_SHOW$1); 4266 return; 4267 } 4268 element.removeAttribute('tabindex'); 4269 element.setAttribute('aria-selected', true); 4270 this._toggleDropDown(element, true); 4271 EventHandler.trigger(element, EVENT_SHOWN$1, { 4272 relatedTarget: relatedElem 4273 }); 4274 }; 4275 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 4276 } 4277 _deactivate(element, relatedElem) { 4278 if (!element) { 4279 return; 4280 } 4281 element.classList.remove(CLASS_NAME_ACTIVE); 4282 element.blur(); 4283 this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too 4284 4285 const complete = () => { 4286 if (element.getAttribute('role') !== 'tab') { 4287 element.classList.remove(CLASS_NAME_SHOW$1); 4288 return; 4289 } 4290 element.setAttribute('aria-selected', false); 4291 element.setAttribute('tabindex', '-1'); 4292 this._toggleDropDown(element, false); 4293 EventHandler.trigger(element, EVENT_HIDDEN$1, { 4294 relatedTarget: relatedElem 4295 }); 4296 }; 4297 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 4298 } 4299 _keydown(event) { 4300 if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { 4301 return; 4302 } 4303 event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page 4304 event.preventDefault(); 4305 const children = this._getChildren().filter(element => !isDisabled(element)); 4306 let nextActiveElement; 4307 if ([HOME_KEY, END_KEY].includes(event.key)) { 4308 nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; 4309 } else { 4310 const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); 4311 nextActiveElement = getNextActiveElement(children, event.target, isNext, true); 4312 } 4313 if (nextActiveElement) { 4314 nextActiveElement.focus({ 4315 preventScroll: true 4316 }); 4317 Tab.getOrCreateInstance(nextActiveElement).show(); 4318 } 4319 } 4320 _getChildren() { 4321 // collection of inner elements 4322 return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); 4323 } 4324 _getActiveElem() { 4325 return this._getChildren().find(child => this._elemIsActive(child)) || null; 4326 } 4327 _setInitialAttributes(parent, children) { 4328 this._setAttributeIfNotExists(parent, 'role', 'tablist'); 4329 for (const child of children) { 4330 this._setInitialAttributesOnChild(child); 4331 } 4332 } 4333 _setInitialAttributesOnChild(child) { 4334 child = this._getInnerElement(child); 4335 const isActive = this._elemIsActive(child); 4336 const outerElem = this._getOuterElement(child); 4337 child.setAttribute('aria-selected', isActive); 4338 if (outerElem !== child) { 4339 this._setAttributeIfNotExists(outerElem, 'role', 'presentation'); 4340 } 4341 if (!isActive) { 4342 child.setAttribute('tabindex', '-1'); 4343 } 4344 this._setAttributeIfNotExists(child, 'role', 'tab'); 4345 4346 // set attributes to the related panel too 4347 this._setInitialAttributesOnTargetPanel(child); 4348 } 4349 _setInitialAttributesOnTargetPanel(child) { 4350 const target = SelectorEngine.getElementFromSelector(child); 4351 if (!target) { 4352 return; 4353 } 4354 this._setAttributeIfNotExists(target, 'role', 'tabpanel'); 4355 if (child.id) { 4356 this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`); 4357 } 4358 } 4359 _toggleDropDown(element, open) { 4360 const outerElem = this._getOuterElement(element); 4361 if (!outerElem.classList.contains(CLASS_DROPDOWN)) { 4362 return; 4363 } 4364 const toggle = (selector, className) => { 4365 const element = SelectorEngine.findOne(selector, outerElem); 4366 if (element) { 4367 element.classList.toggle(className, open); 4368 } 4369 }; 4370 toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); 4371 toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); 4372 outerElem.setAttribute('aria-expanded', open); 4373 } 4374 _setAttributeIfNotExists(element, attribute, value) { 4375 if (!element.hasAttribute(attribute)) { 4376 element.setAttribute(attribute, value); 4377 } 4378 } 4379 _elemIsActive(elem) { 4380 return elem.classList.contains(CLASS_NAME_ACTIVE); 4381 } 4382 4383 // Try to get the inner element (usually the .nav-link) 4384 _getInnerElement(elem) { 4385 return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); 4386 } 4387 4388 // Try to get the outer element (usually the .nav-item) 4389 _getOuterElement(elem) { 4390 return elem.closest(SELECTOR_OUTER) || elem; 4391 } 4392 4393 // Static 4394 static jQueryInterface(config) { 4395 return this.each(function () { 4396 const data = Tab.getOrCreateInstance(this); 4397 if (typeof config !== 'string') { 4398 return; 4399 } 4400 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 4401 throw new TypeError(`No method named "${config}"`); 4402 } 4403 data[config](); 4404 }); 4405 } 4406 } 4407 4408 /** 4409 * Data API implementation 4410 */ 4411 4412 EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 4413 if (['A', 'AREA'].includes(this.tagName)) { 4414 event.preventDefault(); 4415 } 4416 if (isDisabled(this)) { 4417 return; 4418 } 4419 Tab.getOrCreateInstance(this).show(); 4420 }); 4421 4422 /** 4423 * Initialize on focus 4424 */ 4425 EventHandler.on(window, EVENT_LOAD_DATA_API, () => { 4426 for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { 4427 Tab.getOrCreateInstance(element); 4428 } 4429 }); 4430 /** 4431 * jQuery 4432 */ 4433 4434 defineJQueryPlugin(Tab); 4435 4436 /** 4437 * -------------------------------------------------------------------------- 4438 * Bootstrap toast.js 4439 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4440 * -------------------------------------------------------------------------- 4441 */ 4442 4443 4444 /** 4445 * Constants 4446 */ 4447 4448 const NAME = 'toast'; 4449 const DATA_KEY = 'bs.toast'; 4450 const EVENT_KEY = `.${DATA_KEY}`; 4451 const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; 4452 const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; 4453 const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; 4454 const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; 4455 const EVENT_HIDE = `hide${EVENT_KEY}`; 4456 const EVENT_HIDDEN = `hidden${EVENT_KEY}`; 4457 const EVENT_SHOW = `show${EVENT_KEY}`; 4458 const EVENT_SHOWN = `shown${EVENT_KEY}`; 4459 const CLASS_NAME_FADE = 'fade'; 4460 const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility 4461 const CLASS_NAME_SHOW = 'show'; 4462 const CLASS_NAME_SHOWING = 'showing'; 4463 const DefaultType = { 4464 animation: 'boolean', 4465 autohide: 'boolean', 4466 delay: 'number' 4467 }; 4468 const Default = { 4469 animation: true, 4470 autohide: true, 4471 delay: 5000 4472 }; 4473 4474 /** 4475 * Class definition 4476 */ 4477 4478 class Toast extends BaseComponent { 4479 constructor(element, config) { 4480 super(element, config); 4481 this._timeout = null; 4482 this._hasMouseInteraction = false; 4483 this._hasKeyboardInteraction = false; 4484 this._setListeners(); 4485 } 4486 4487 // Getters 4488 static get Default() { 4489 return Default; 4490 } 4491 static get DefaultType() { 4492 return DefaultType; 4493 } 4494 static get NAME() { 4495 return NAME; 4496 } 4497 4498 // Public 4499 show() { 4500 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); 4501 if (showEvent.defaultPrevented) { 4502 return; 4503 } 4504 this._clearTimeout(); 4505 if (this._config.animation) { 4506 this._element.classList.add(CLASS_NAME_FADE); 4507 } 4508 const complete = () => { 4509 this._element.classList.remove(CLASS_NAME_SHOWING); 4510 EventHandler.trigger(this._element, EVENT_SHOWN); 4511 this._maybeScheduleHide(); 4512 }; 4513 this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated 4514 reflow(this._element); 4515 this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); 4516 this._queueCallback(complete, this._element, this._config.animation); 4517 } 4518 hide() { 4519 if (!this.isShown()) { 4520 return; 4521 } 4522 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); 4523 if (hideEvent.defaultPrevented) { 4524 return; 4525 } 4526 const complete = () => { 4527 this._element.classList.add(CLASS_NAME_HIDE); // @deprecated 4528 this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); 4529 EventHandler.trigger(this._element, EVENT_HIDDEN); 4530 }; 4531 this._element.classList.add(CLASS_NAME_SHOWING); 4532 this._queueCallback(complete, this._element, this._config.animation); 4533 } 4534 dispose() { 4535 this._clearTimeout(); 4536 if (this.isShown()) { 4537 this._element.classList.remove(CLASS_NAME_SHOW); 4538 } 4539 super.dispose(); 4540 } 4541 isShown() { 4542 return this._element.classList.contains(CLASS_NAME_SHOW); 4543 } 4544 4545 // Private
vendor: 1,687 bytes, lines 4546-4599
4546 4547 _maybeScheduleHide() { 4548 if (!this._config.autohide) { 4549 return; 4550 } 4551 if (this._hasMouseInteraction || this._hasKeyboardInteraction) { 4552 return; 4553 } 4554 this._timeout = setTimeout(() => { 4555 this.hide(); 4556 }, this._config.delay); 4557 } 4558 _onInteraction(event, isInteracting) { 4559 switch (event.type) { 4560 case 'mouseover': 4561 case 'mouseout': 4562 { 4563 this._hasMouseInteraction = isInteracting; 4564 break; 4565 } 4566 case 'focusin': 4567 case 'focusout': 4568 { 4569 this._hasKeyboardInteraction = isInteracting; 4570 break; 4571 } 4572 } 4573 if (isInteracting) { 4574 this._clearTimeout(); 4575 return; 4576 } 4577 const nextElement = event.relatedTarget; 4578 if (this._element === nextElement || this._element.contains(nextElement)) { 4579 return; 4580 } 4581 this._maybeScheduleHide(); 4582 } 4583 _setListeners() { 4584 EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); 4585 EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); 4586 EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); 4587 EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false)); 4588 } 4589 _clearTimeout() { 4590 clearTimeout(this._timeout); 4591 this._timeout = null; 4592 } 4593 4594 // Static 4595 static jQueryInterface(config) { 4596 return this.each(function () { 4597 const data = Toast.getOrCreateInstance(this, config); 4598 if (typeof config === 'string') { 4599 if (typeof data[config] === 'undefined') {
4600 throw new TypeError(`No method named "${config}"`); 4601 } 4602 data[config](this); 4603 } 4604 }); 4605 } 4606 } 4607 4608 /** 4609 * Data API implementation 4610 */ 4611 4612 enableDismissTrigger(Toast); 4613 4614 /** 4615 * jQuery 4616 */ 4617 4618 defineJQueryPlugin(Toast); 4619 4620 /** 4621 * -------------------------------------------------------------------------- 4622 * Bootstrap index.umd.js 4623 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4624 * -------------------------------------------------------------------------- 4625 */ 4626 4627 const index_umd = { 4628 Alert, 4629 Button, 4630 Carousel, 4631 Collapse, 4632 Dropdown, 4633 Modal, 4634 Offcanvas, 4635 Popover, 4636 ScrollSpy, 4637 Tab, 4638 Toast, 4639 Tooltip 4640 }; 4641 4642 return index_umd; 4643 4644})); 4645//# sourceMappingURL=bootstrap.js.map 4646
vendor: 43,577 bytes, line 4647
4647!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(d){"use strict";var s,l=window.Slick||{};s=0,(l=function(i,e){var t,o=this;o.defaults={adaptiveHeight:!1,appendArrows:d(i),appendDots:d(i),arrows:!0,arrowsPlacement:null,asNavFor:null,prevArrow:'<button class="slick-prev" type="button"><span class="slick-prev-icon" aria-hidden="true"></span><span class="slick-sr-only">Previous</span></button>',nextArrow:'<button class="slick-next" type="button"><span class="slick-next-icon" aria-hidden="true"></span><span class="slick-sr-only">Next</span></button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(i,e){return d('<button type="button"><span class="slick-dot-icon" aria-hidden="true"></span><span class="slick-sr-only">Go to slide '+(e+1)+"</span></button>")},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,infinite:!0,initialSlide:0,instructionsText:null,lazyLoad:"ondemand",mobileFirst:!1,playIcon:'<span class="slick-play-icon" aria-hidden="true"></span>',pauseIcon:'<span class="slick-pause-icon" aria-hidden="true"></span>',pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,regionLabel:"carousel",respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useAutoplayToggleButton:!0,useCSS:!0,useGroupRole:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},o.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,$instructionsText:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$pauseButton:null,$pauseIcon:null,$playIcon:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},d.extend(o,o.initials),o.activeBreakpoint=null,o.animType=null,o.animProp=null,o.breakpoints=[],o.breakpointSettings=[],o.cssTransitions=!1,o.focussed=!1,o.interrupted=!1,o.hidden="hidden",o.paused=!0,o.positionProp=null,o.respondTo=null,o.rowCount=1,o.shouldClick=!0,o.$slider=d(i),o.$slidesCache=null,o.transformType=null,o.transitionType=null,o.visibilityChange="visibilitychange",o.windowWidth=0,o.windowTimer=null,t=d(i).data("slick")||{},o.options=d.extend({},o.defaults,e,t),o.currentSlide=o.options.initialSlide,o.originalSettings=o.options,void 0!==document.mozHidden?(o.hidden="mozHidden",o.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(o.hidden="webkitHidden",o.visibilityChange="webkitvisibilitychange"),o.autoPlay=d.proxy(o.autoPlay,o),o.autoPlayClear=d.proxy(o.autoPlayClear,o),o.autoPlayIterator=d.proxy(o.autoPlayIterator,o),o.autoPlayToggleHandler=d.proxy(o.autoPlayToggleHandler,o),o.changeSlide=d.proxy(o.changeSlide,o),o.clickHandler=d.proxy(o.clickHandler,o),o.selectHandler=d.proxy(o.selectHandler,o),o.setPosition=d.proxy(o.setPosition,o),o.swipeHandler=d.proxy(o.swipeHandler,o),o.dragHandler=d.proxy(o.dragHandler,o),o.instanceUid=s++,o.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,o.registerBreakpoints(),o.init(!0)}).prototype.addSlide=l.prototype.slickAdd=function(i,e,t){var o=this;if("boolean"==typeof e)t=e,e=null;else if(e<0||e>=o.slideCount)return!1;o.unload(),"number"==typeof e?0===e&&0===o.$slides.length?d(i).appendTo(o.$slideTrack):t?d(i).insertBefore(o.$slides.eq(e)):d(i).insertAfter(o.$slides.eq(e)):!0===t?d(i).prependTo(o.$slideTrack):d(i).appendTo(o.$slideTrack),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slides.each(function(i,e){d(e).attr("data-slick-index",i),d(e).attr("role","group"),d(e).attr("aria-label","slide "+i)}),o.$slidesCache=o.$slides,o.reinit()},l.prototype.animateHeight=function(){var i,e=this;1===e.options.slidesToShow&&!0===e.options.adaptiveHeight&&!1===e.options.vertical&&(i=e.$slides.eq(e.currentSlide).outerHeight(!0),e.$list.animate({height:i},e.options.speed))},l.prototype.animateSlide=function(i,e){var t={},o=this;o.animateHeight(),!0===o.options.rtl&&!1===o.options.vertical&&(i=-i),!1===o.transformsEnabled?!1===o.options.vertical?o.$slideTrack.animate({left:i},o.options.speed,o.options.easing,e):o.$slideTrack.animate({top:i},o.options.speed,o.options.easing,e):!1===o.cssTransitions?(!0===o.options.rtl&&(o.currentLeft=-o.currentLeft),d({animStart:o.currentLeft}).animate({animStart:i},{duration:o.options.speed,easing:o.options.easing,step:function(i){i=Math.ceil(i),!1===o.options.vertical?t[o.animType]="translate("+i+"px, 0px)":t[o.animType]="translate(0px,"+i+"px)",o.$slideTrack.css(t)},complete:function(){e&&e.call()}})):(o.applyTransition(),i=Math.ceil(i),!1===o.options.vertical?t[o.animType]="translate3d("+i+"px, 0px, 0px)":t[o.animType]="translate3d(0px,"+i+"px, 0px)",o.$slideTrack.css(t),e&&setTimeout(function(){o.disableTransition(),e.call()},o.options.speed))},l.prototype.getNavTarget=function(){var i=this.options.asNavFor;return i&&null!==i&&(i=d(i).not(this.$slider)),i},l.prototype.asNavFor=function(e){var i=this.getNavTarget();null!==i&&"object"==typeof i&&i.each(function(){var i=d(this).slick("getSlick");i.unslicked||i.slideHandler(e,!0)})},l.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},l.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},l.prototype.autoPlayClear=function(){this.autoPlayTimer&&clearInterval(this.autoPlayTimer)},l.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},l.prototype.autoPlayToggleHandler=function(){var i=this;i.paused?(i.$playIcon.css("display","none"),i.$pauseIcon.css("display","inline"),i.$pauseButton.find(".slick-play-text").attr("style","display: none"),i.$pauseButton.find(".slick-pause-text").removeAttr("style"),i.slickPlay()):(i.$playIcon.css("display","inline"),i.$pauseIcon.css("display","none"),i.$pauseButton.find(".slick-play-text").removeAttr("style"),i.$pauseButton.find(".slick-pause-text").attr("style","display: none"),i.slickPause())},l.prototype.buildArrows=function(){var i=this;if(!0===i.options.arrows)if(i.$prevArrow=d(i.options.prevArrow).addClass("slick-arrow"),i.$nextArrow=d(i.options.nextArrow).addClass("slick-arrow"),i.slideCount>i.options.slidesToShow){if(i.htmlExpr.test(i.options.prevArrow))if(null!=i.options.arrowsPlacement)switch(i.options.arrowsPlacement){case"beforeSlides":case"split":console.log("test"),i.$prevArrow.prependTo(i.options.appendArrows);break;case"afterSlides":i.$prevArrow.appendTo(i.options.appendArrows)}else i.$prevArrow.prependTo(i.options.appendArrows);if(i.htmlExpr.test(i.options.nextArrow))if(null!=i.options.arrowsPlacement)switch(i.options.arrowsPlacement){case"beforeSlides":console.log("test2"),i.$prevArrow.after(i.$nextArrow);break;case"afterSlides":case"split":i.$nextArrow.appendTo(i.options.appendArrows)}else i.$nextArrow.appendTo(i.options.appendArrows);!0!==i.options.infinite&&i.$prevArrow.addClass("slick-disabled").prop("disabled",!0)}else i.$prevArrow.add(i.$nextArrow).addClass("slick-hidden").prop("disabled",!0)},l.prototype.buildDots=function(){var i,e,t=this;if(!0===t.options.dots&&t.slideCount>t.options.slidesToShow){for(t.$slider.addClass("slick-dotted"),e=d("<ul />").addClass(t.options.dotsClass),i=0;i<=t.getDotCount();i+=1)e.append(d("<li />").append(t.options.customPaging.call(this,t,i)));t.$dots=e.appendTo(t.options.appendDots),t.$dots.find("li").first().addClass("slick-active")}},l.prototype.buildOut=function(){var t=this;t.$slides=t.$slider.children(t.options.slide+":not(.slick-cloned)").addClass("slick-slide"),t.slideCount=t.$slides.length,t.$slides.each(function(i,e){d(e).attr("data-slick-index",i).data("originalStyling",d(e).attr("style")||""),t.options.useGroupRole&&d(e).attr("role","group").attr("aria-label","slide "+(i+1))}),t.$slider.addClass("slick-slider"),t.$slider.attr("role","region"),t.$slider.attr("aria-label",t.options.regionLabel),t.$slideTrack=0===t.slideCount?d('<div class="slick-track"/>').appendTo(t.$slider):t.$slides.wrapAll('<div class="slick-track"/>').parent(),t.$list=t.$slideTrack.wrap('<div class="slick-list"/>').parent(),t.$slideTrack.css("opacity",0),!0!==t.options.centerMode&&!0!==t.options.swipeToSlide||(t.options.slidesToScroll=1),d("img[data-lazy]",t.$slider).not("[src]").addClass("slick-loading"),t.setupInfinite(),t.buildArrows(),t.buildDots(),t.updateDots(),t.setSlideClasses("number"==typeof t.currentSlide?t.currentSlide:0),!0===t.options.draggable&&t.$list.addClass("draggable"),t.options.autoplay&&t.options.useAutoplayToggleButton&&(t.$pauseIcon=d(t.options.pauseIcon).attr("aria-hidden",!0),t.$playIcon=d(t.options.playIcon).attr("aria-hidden",!0),t.$pauseButton=d('<button type="button" class="slick-autoplay-toggle-button">'),t.$pauseButton.append(t.$pauseIcon),t.$pauseButton.append(t.$playIcon.css("display","none")),t.$pauseButton.append(d('<span class="slick-pause-text slick-sr-only">Pause</span>')),t.$pauseButton.append(d('<span class="slick-play-text slick-sr-only" style="display: none">Play</span>')),t.$pauseButton.prependTo(t.$slider)),null!=t.options.instructionsText&&""!=t.options.instructionsText&&(t.$instructionsText=d('<p class="slick-instructions slick-sr-only">'+t.options.instructionsText+"</p>"),t.$instructionsText.prependTo(t.$slider))},l.prototype.buildRows=function(){var i,e,t,o=this,s=document.createDocumentFragment(),n=o.$slider.children();if(0<o.options.rows){for(t=o.options.slidesPerRow*o.options.rows,e=Math.ceil(n.length/t),i=0;i<e;i++){for(var l=document.createElement("div"),r=0;r<o.options.rows;r++){for(var a=document.createElement("div"),d=0;d<o.options.slidesPerRow;d++){var p=i*t+(r*o.options.slidesPerRow+d);n.get(p)&&a.appendChild(n.get(p))}l.appendChild(a)}s.appendChild(l)}o.$slider.empty().append(s),o.$slider.children().children().children().css({width:100/o.options.slidesPerRow+"%",display:"inline-block"})}},l.prototype.checkResponsive=function(i,e){var t,o,s,n=this,l=!1,r=n.$slider.width(),a=window.innerWidth||d(window).width();if("window"===n.respondTo?s=a:"slider"===n.respondTo?s=r:"min"===n.respondTo&&(s=Math.min(a,r)),n.options.responsive&&n.options.responsive.length&&null!==n.options.responsive){for(t in o=null,n.breakpoints)n.breakpoints.hasOwnProperty(t)&&(!1===n.originalSettings.mobileFirst?s<n.breakpoints[t]&&(o=n.breakpoints[t]):s>n.breakpoints[t]&&(o=n.breakpoints[t]));null!==o?null!==n.activeBreakpoint&&o===n.activeBreakpoint&&!e||(n.activeBreakpoint=o,"unslick"===n.breakpointSettings[o]?n.unslick(o):(n.options=d.extend({},n.originalSettings,n.breakpointSettings[o]),!0===i&&(n.currentSlide=n.options.initialSlide),n.refresh(i)),l=o):null!==n.activeBreakpoint&&(n.activeBreakpoint=null,n.options=n.originalSettings,!0===i&&(n.currentSlide=n.options.initialSlide),n.refresh(i),l=o),i||!1===l||n.$slider.trigger("breakpoint",[n,l])}},l.prototype.changeSlide=function(i,e){var t,o,s=this,n=d(i.currentTarget);switch(n.is("a")&&i.preventDefault(),n.is("li")||(n=n.closest("li")),t=s.slideCount%s.options.slidesToScroll!=0?0:(s.slideCount-s.currentSlide)%s.options.slidesToScroll,i.data.message){case"previous":o=0==t?s.options.slidesToScroll:s.options.slidesToShow-t,s.slideCount>s.options.slidesToShow&&s.slideHandler(s.currentSlide-o,!1,e);break;case"next":o=0==t?s.options.slidesToScroll:t,s.slideCount>s.options.slidesToShow&&s.slideHandler(s.currentSlide+o,!1,e);break;case"index":var l=0===i.data.index?0:i.data.index||n.index()*s.options.slidesToScroll;s.slideHandler(s.checkNavigable(l),!1,e),n.children().trigger("focus");break;default:return}},l.prototype.checkNavigable=function(i){var e=this.getNavigableIndexes(),t=0;if(i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},l.prototype.cleanUpEvents=function(){var i=this;i.options.autoplay&&i.options.useAutoplayToggleButton&&i.$pauseButton.off("click.slick",i.autoPlayToggleHandler),i.options.dots&&null!==i.$dots&&d("li",i.$dots).off("click.slick",i.changeSlide).off("mouseenter.slick",d.proxy(i.interrupt,i,!0)).off("mouseleave.slick",d.proxy(i.interrupt,i,!1)),i.$slider.off("focus.slick blur.slick"),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow&&i.$prevArrow.off("click.slick",i.changeSlide),i.$nextArrow&&i.$nextArrow.off("click.slick",i.changeSlide)),i.$list.off("touchstart.slick mousedown.slick",i.swipeHandler),i.$list.off("touchmove.slick mousemove.slick",i.swipeHandler),i.$list.off("touchend.slick mouseup.slick",i.swipeHandler),i.$list.off("touchcancel.slick mouseleave.slick",i.swipeHandler),i.$list.off("click.slick",i.clickHandler),d(document).off(i.visibilityChange,i.visibility),i.cleanUpSlideEvents(),d(window).off("orientationchange.slick.slick-"+i.instanceUid,i.orientationChange),d(window).off("resize.slick.slick-"+i.instanceUid,i.resize),d("[draggable!=true]",i.$slideTrack).off("dragstart",i.preventDefault),d(window).off("load.slick.slick-"+i.instanceUid,i.setPosition)},l.prototype.cleanUpSlideEvents=function(){var i=this;i.$list.off("mouseenter.slick",d.proxy(i.interrupt,i,!0)),i.$list.off("mouseleave.slick",d.proxy(i.interrupt,i,!1))},l.prototype.cleanUpRows=function(){var i;0<this.options.rows&&((i=this.$slides.children().children()).removeAttr("style"),this.$slider.empty().append(i))},l.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},l.prototype.destroy=function(i){var e=this;e.autoPlayClear(),e.touchObject={},e.cleanUpEvents(),d(".slick-cloned",e.$slider).detach(),e.options.autoplay&&e.options.useAutoplayToggleButton&&e.$pauseButton.remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.$prevArrow.length&&(e.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").prop("disabled",!1).css("display",""),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove()),e.$nextArrow&&e.$nextArrow.length&&(e.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").prop("disabled",!1).css("display",""),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove()),e.$slides&&(e.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){d(this).attr("style",d(this).data("originalStyling"))}),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.detach(),e.$list.detach(),e.$slider.append(e.$slides)),e.cleanUpRows(),e.$slider.removeClass("slick-slider"),e.$slider.removeClass("slick-initialized"),e.$slider.removeClass("slick-dotted"),e.unslicked=!0,i||e.$slider.trigger("destroy",[e])},l.prototype.disableTransition=function(i){var e={};e[this.transitionType]="",!1===this.options.fade?this.$slideTrack.css(e):this.$slides.eq(i).css(e)},l.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},l.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},l.prototype.filterSlides=l.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},l.prototype.focusHandler=function(){var t=this;t.$slider.off("focus.slick blur.slick").on("focus.slick","*",function(i){var e=d(this);setTimeout(function(){t.options.pauseOnFocus&&e.is(":focus")&&(t.focussed=!0,t.autoPlay())},0)}).on("blur.slick","*",function(i){d(this);t.options.pauseOnFocus&&(t.focussed=!1,t.autoPlay())})},l.prototype.getCurrent=l.prototype.slickCurrentSlide=function(){return this.currentSlide},l.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},l.prototype.getLeft=function(i){var e,t,o,s,n=this,l=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),l=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(l=i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,l=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(l=n.slideOffset=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+l,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},l.prototype.getOption=l.prototype.slickGetOption=function(i){return this.options[i]},l.prototype.getNavigableIndexes=function(){for(var i=this,e=0,t=0,o=[],s=!1===i.options.infinite?i.slideCount:(e=-1*i.options.slidesToScroll,t=-1*i.options.slidesToScroll,2*i.slideCount);e<s;)o.push(e),e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;return o},l.prototype.getSlick=function(){return this},l.prototype.getSlideCount=function(){var s,n=this,i=!0===n.options.centerMode?Math.floor(n.$list.width()/2):0,l=-1*n.swipeLeft+i;return!0===n.options.swipeToSlide?(n.$slideTrack.find(".slick-slide").each(function(i,e){var t=d(e).outerWidth(),o=e.offsetLeft;if(!0!==n.options.centerMode&&(o+=t/2),l<o+t)return s=e,!1}),Math.abs(d(s).attr("data-slick-index")-n.currentSlide)||1):n.options.slidesToScroll},l.prototype.goTo=l.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:parseInt(i)}},e)},l.prototype.init=function(i){var e=this;d(e.$slider).hasClass("slick-initialized")||(d(e.$slider).addClass("slick-initialized"),e.buildRows(),e.buildOut(),e.setProps(),e.startLoad(),e.loadSlider(),e.initializeEvents(),e.updateArrows(),e.updateDots(),e.checkResponsive(!0),e.focusHandler()),i&&e.$slider.trigger("init",[e]),e.options.autoplay&&(e.paused=!1,e.autoPlay()),e.updateSlideVisibility(),null!=e.options.accessibility&&console.warn("accessibility setting is no longer supported."),null!=e.options.focusOnChange&&console.warn("focusOnChange is no longer supported."),null!=e.options.focusOnSelect&&console.warn("focusOnSelect is no longer supported.")},l.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide))},l.prototype.initDotEvents=function(){var i=this;!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&d("li",i.$dots).on("click.slick",{message:"index"},i.changeSlide),!0===i.options.dots&&!0===i.options.pauseOnDotsHover&&i.slideCount>i.options.slidesToShow&&d("li",i.$dots).on("mouseenter.slick",d.proxy(i.interrupt,i,!0)).on("mouseleave.slick",d.proxy(i.interrupt,i,!1))},l.prototype.initSlideEvents=function(){var i=this;i.options.pauseOnHover&&(i.$list.on("mouseenter.slick",d.proxy(i.interrupt,i,!0)),i.$list.on("mouseleave.slick",d.proxy(i.interrupt,i,!1)))},l.prototype.initializeEvents=function(){var i=this;i.initArrowEvents(),i.initDotEvents(),i.initSlideEvents(),i.options.autoplay&&i.options.useAutoplayToggleButton&&i.$pauseButton.on("click.slick",i.autoPlayToggleHandler),i.$list.on("touchstart.slick mousedown.slick",{action:"start"},i.swipeHandler),i.$list.on("touchmove.slick mousemove.slick",{action:"move"},i.swipeHandler),i.$list.on("touchend.slick mouseup.slick",{action:"end"},i.swipeHandler),i.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},i.swipeHandler),i.$list.on("click.slick",i.clickHandler),d(document).on(i.visibilityChange,d.proxy(i.visibility,i)),d(window).on("orientationchange.slick.slick-"+i.instanceUid,d.proxy(i.orientationChange,i)),d(window).on("resize.slick.slick-"+i.instanceUid,d.proxy(i.resize,i)),d("[draggable!=true]",i.$slideTrack).on("dragstart",i.preventDefault),d(window).on("load.slick.slick-"+i.instanceUid,i.setPosition),d(i.setPosition)},l.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},l.prototype.lazyLoad=function(){var i,e,t,n=this;function o(i){d("img[data-lazy]",i).each(function(){var i=d(this),e=d(this).attr("data-lazy"),t=d(this).attr("data-srcset"),o=d(this).attr("data-sizes")||n.$slider.attr("data-sizes"),s=document.createElement("img");s.onload=function(){i.animate({opacity:0},100,function(){t&&(i.attr("srcset",t),o&&i.attr("sizes",o)),i.attr("src",e).animate({opacity:1},200,function(){i.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,i,e])})},s.onerror=function(){i.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,i,e])},s.src=e})}if(!0===n.options.centerMode?t=!0===n.options.infinite?(e=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(e=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),n.options.slidesToShow/2+1+2+n.currentSlide):(e=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,t=Math.ceil(e+n.options.slidesToShow),!0===n.options.fade&&(0<e&&e--,t<=n.slideCount&&t++)),i=n.$slider.find(".slick-slide").slice(e,t),"anticipated"===n.options.lazyLoad)for(var s=e-1,l=t,r=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)s<0&&(s=n.slideCount-1),i=(i=i.add(r.eq(s))).add(r.eq(l)),s--,l++;o(i),n.slideCount<=n.options.slidesToShow?o(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?o(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&o(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},l.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},l.prototype.next=l.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},l.prototype.orientationChange=function(){this.checkResponsive(),this.setPosition()},l.prototype.pause=l.prototype.slickPause=function(){this.autoPlayClear(),this.paused=!0},l.prototype.play=l.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},l.prototype.postSlide=function(i){var e=this;e.unslicked||(e.$slider.trigger("afterChange",[e,i]),e.animating=!1,e.slideCount>e.options.slidesToShow&&e.setPosition(),e.swipeLeft=null,e.options.autoplay&&e.autoPlay(),e.updateSlideVisibility())},l.prototype.prev=l.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},l.prototype.preventDefault=function(i){i.preventDefault()},l.prototype.progressiveLazyLoad=function(i){i=i||1;var e,t,o,s,n,l=this,r=d("img[data-lazy]",l.$slider);r.length?(e=r.first(),t=e.attr("data-lazy"),o=e.attr("data-srcset"),s=e.attr("data-sizes")||l.$slider.attr("data-sizes"),(n=document.createElement("img")).onload=function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,e,t]),l.progressiveLazyLoad()},n.onerror=function(){i<3?setTimeout(function(){l.progressiveLazyLoad(i+1)},500):(e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,e,t]),l.progressiveLazyLoad())},n.src=t):l.$slider.trigger("allImagesLoaded",[l])},l.prototype.refresh=function(i){var e,t=this,o=t.slideCount-t.options.slidesToShow;!t.options.infinite&&t.currentSlide>o&&(t.currentSlide=o),t.slideCount<=t.options.slidesToShow&&(t.currentSlide=0),e=t.currentSlide,t.destroy(!0),d.extend(t,t.initials,{currentSlide:e}),t.init(),i||t.changeSlide({data:{message:"index",index:e}},!1)},l.prototype.registerBreakpoints=function(){var i,e,t,o=this,s=o.options.responsive||null;if("array"===d.type(s)&&s.length){for(i in o.respondTo=o.options.respondTo||"window",s)if(t=o.breakpoints.length-1,s.hasOwnProperty(i)){for(e=s[i].breakpoint;0<=t;)o.breakpoints[t]&&o.breakpoints[t]===e&&o.breakpoints.splice(t,1),t--;o.breakpoints.push(e),o.breakpointSettings[e]=s[i].settings}o.breakpoints.sort(function(i,e){return o.options.mobileFirst?i-e:e-i})}},l.prototype.reinit=function(){var i=this;i.$slides=i.$slideTrack.children(i.options.slide).addClass("slick-slide"),i.slideCount=i.$slides.length,i.currentSlide>=i.slideCount&&0!==i.currentSlide&&(i.currentSlide=i.currentSlide-i.options.slidesToScroll),i.slideCount<=i.options.slidesToShow&&(i.currentSlide=0),i.registerBreakpoints(),i.setProps(),i.setupInfinite(),i.buildArrows(),i.updateArrows(),i.initArrowEvents(),i.buildDots(),i.updateDots(),i.initDotEvents(),i.cleanUpSlideEvents(),i.initSlideEvents(),i.checkResponsive(!1,!0),i.setSlideClasses("number"==typeof i.currentSlide?i.currentSlide:0),i.setPosition(),i.focusHandler(),i.paused=!i.options.autoplay,i.autoPlay(),i.$slider.trigger("reInit",[i])},l.prototype.resize=function(){var i=this;d(window).width()!==i.windowWidth&&(clearTimeout(i.windowDelay),i.windowDelay=window.setTimeout(function(){i.windowWidth=d(window).width(),i.checkResponsive(),i.unslicked||i.setPosition()},50))},l.prototype.removeSlide=l.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},l.prototype.setCSS=function(i){var e,t,o=this,s={};!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled||(!(s={})===o.cssTransitions?s[o.animType]="translate("+e+", "+t+")":s[o.animType]="translate3d("+e+", "+t+", 0px)"),o.$slideTrack.css(s)},l.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},l.prototype.setFade=function(){var t,o=this;o.$slides.each(function(i,e){t=o.slideWidth*i*-1,!0===o.options.rtl?d(e).css({position:"relative",right:t,top:0,zIndex:o.options.zIndex-2,opacity:0}):d(e).css({position:"relative",left:t,top:0,zIndex:o.options.zIndex-2,opacity:0})}),o.$slides.eq(o.currentSlide).css({zIndex:o.options.zIndex-1,opacity:1})},l.prototype.setHeight=function(){var i,e=this;1===e.options.slidesToShow&&!0===e.options.adaptiveHeight&&!1===e.options.vertical&&(i=e.$slides.eq(e.currentSlide).outerHeight(!0),e.$list.css("height",i))},l.prototype.setOption=l.prototype.slickSetOption=function(){var i,e,t,o,s,n=this,l=!1;if("object"===d.type(arguments[0])?(t=arguments[0],l=arguments[1],s="multiple"):"string"===d.type(arguments[0])&&(o=arguments[1],l=arguments[2],"responsive"===(t=arguments[0])&&"array"===d.type(arguments[1])?s="responsive":void 0!==arguments[1]&&(s="single")),"single"===s)n.options[t]=o;else if("multiple"===s)d.each(t,function(i,e){n.options[i]=e});else if("responsive"===s)for(e in o)if("array"!==d.type(n.options.responsive))n.options.responsive=[o[e]];else{for(i=n.options.responsive.length-1;0<=i;)n.options.responsive[i].breakpoint===o[e].breakpoint&&n.options.responsive.splice(i,1),i--;n.options.responsive.push(o[e])}l&&(n.unload(),n.reinit())},l.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},l.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},l.prototype.setSlideClasses=function(i){var e,t,o,s,n=this,l=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true").attr("aria-label",function(){return d(this).attr("aria-label").replace(" (centered)","")});n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode?(o=n.options.slidesToShow%2==0?1:0,s=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(s<=i&&i<=n.slideCount-1-s?n.$slides.slice(i-s+o,i+s+1).addClass("slick-active").removeAttr("aria-hidden"):(e=n.options.slidesToShow+i,l.slice(e-s+1+o,e+s+2).addClass("slick-active").removeAttr("aria-hidden")),0===i?l.eq(n.options.slidesToShow+n.slideCount+1).addClass("slick-center").attr("aria-label",function(){return d(this).attr("aria-label")+" (centered)"}):i===n.slideCount-1&&l.eq(n.options.slidesToShow).addClass("slick-center").attr("aria-label",function(){return d(this).attr("aria-label")+" (centered)"})),n.$slides.eq(i).addClass("slick-center").attr("aria-label",function(){return d(this).attr("aria-label")+" (centered)"})):0<=i&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").removeAttr("aria-hidden"):l.length<=n.options.slidesToShow?l.addClass("slick-active").removeAttr("aria-hidden"):(t=n.slideCount%n.options.slidesToShow,e=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?l.slice(e-(n.options.slidesToShow-t),e+t).addClass("slick-active").removeAttr("aria-hidden"):l.slice(e,e+n.options.slidesToShow).addClass("slick-active").removeAttr("aria-hidden")),"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},l.prototype.setupInfinite=function(){var i,e,t,o=this;if(!0===o.options.fade&&(o.options.centerMode=!1),!0===o.options.infinite&&!1===o.options.fade&&(e=null,o.slideCount>o.options.slidesToShow)){for(t=!0===o.options.centerMode?o.options.slidesToShow+1:o.options.slidesToShow,i=o.slideCount;i>o.slideCount-t;--i)e=i-1,d(o.$slides[e]).clone(!0).attr("id","").attr("data-slick-index",e-o.slideCount).prependTo(o.$slideTrack).addClass("slick-cloned");for(i=0;i<t+o.slideCount;i+=1)e=i,d(o.$slides[e]).clone(!0).attr("id","").attr("data-slick-index",e+o.slideCount).appendTo(o.$slideTrack).addClass("slick-cloned");o.$slideTrack.find(".slick-cloned").find("[id]").each(function(){d(this).attr("id","")})}},l.prototype.interrupt=function(i){i||this.autoPlay(),this.interrupted=i},l.prototype.selectHandler=function(i){var e=d(i.target).is(".slick-slide")?d(i.target):d(i.target).parents(".slick-slide"),t=(t=parseInt(e.attr("data-slick-index")))||0;this.slideCount<=this.options.slidesToShow?this.slideHandler(t,!1,!0):this.slideHandler(t)},l.prototype.slideHandler=function(i,e,t){var o,s,n,l,r,a,d=this;if(e=e||!1,!(!0===d.animating&&!0===d.options.waitForAnimate||!0===d.options.fade&&d.currentSlide===i))if(!1===e&&d.asNavFor(i),o=i,r=d.getLeft(o),l=d.getLeft(d.currentSlide),d.currentLeft=null===d.swipeLeft?l:d.swipeLeft,!1===d.options.infinite&&!1===d.options.centerMode&&(i<0||i>d.getDotCount()*d.options.slidesToScroll))!1===d.options.fade&&(o=d.currentSlide,!0!==t&&d.slideCount>d.options.slidesToShow?d.animateSlide(l,function(){d.postSlide(o)}):d.postSlide(o));else if(!1===d.options.infinite&&!0===d.options.centerMode&&(i<0||i>d.slideCount-d.options.slidesToScroll))!1===d.options.fade&&(o=d.currentSlide,!0!==t&&d.slideCount>d.options.slidesToShow?d.animateSlide(l,function(){d.postSlide(o)}):d.postSlide(o));else{if(d.options.autoplay&&clearInterval(d.autoPlayTimer),s=o<0?d.slideCount%d.options.slidesToScroll!=0?d.slideCount-d.slideCount%d.options.slidesToScroll:d.slideCount+o:o>=d.slideCount?d.slideCount%d.options.slidesToScroll!=0?0:o-d.slideCount:o,d.animating=!0,d.$slider.trigger("beforeChange",[d,d.currentSlide,s]),n=d.currentSlide,d.currentSlide=s,d.setSlideClasses(d.currentSlide),d.options.asNavFor&&(a=(a=d.getNavTarget()).slick("getSlick")).slideCount<=a.options.slidesToShow&&a.setSlideClasses(d.currentSlide),d.updateDots(),d.updateArrows(),!0===d.options.fade)return!0!==t?(d.fadeSlideOut(n),d.fadeSlide(s,function(){d.postSlide(s)})):d.postSlide(s),void d.animateHeight();!0!==t&&d.slideCount>d.options.slidesToShow?d.animateSlide(r,function(){d.postSlide(s)}):d.postSlide(s)}},l.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},l.prototype.swipeDirection=function(){var i=this,e=i.touchObject.startX-i.touchObject.curX,t=i.touchObject.startY-i.touchObject.curY,o=Math.atan2(t,e),s=Math.round(180*o/Math.PI);return s<0&&(s=360-Math.abs(s)),s<=45&&0<=s||s<=360&&315<=s?!1===i.options.rtl?"left":"right":135<=s&&s<=225?!1===i.options.rtl?"right":"left":!0===i.options.verticalSwiping?35<=s&&s<=135?"down":"up":"vertical"},l.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1;if(o.interrupted=!1,o.shouldClick=!(10<o.touchObject.swipeLength),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},l.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},l.prototype.swipeMove=function(i){var e,t,o,s,n,l=this,r=void 0!==i.originalEvent?i.originalEvent.touches:null;return!(!l.dragging||l.scrolling||r&&1!==r.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==r?r[0].pageX:i.clientX,l.touchObject.curY=void 0!==r?r[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),n=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&4<n?!(l.scrolling=!0):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=n),t=l.swipeDirection(),void 0!==i.originalEvent&&4<l.touchObject.swipeLength&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,(l.touchObject.edgeHit=!1)===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},l.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return!(t.touchObject={});void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},l.prototype.unfilterSlides=l.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},l.prototype.unload=function(){var i=this;d(".slick-cloned",i.$slider).remove(),i.$dots&&i.$dots.remove(),i.$prevArrow&&i.htmlExpr.test(i.options.prevArrow)&&i.$prevArrow.remove(),i.$nextArrow&&i.htmlExpr.test(i.options.nextArrow)&&i.$nextArrow.remove(),i.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},l.prototype.unslick=function(i){this.$slider.trigger("unslick",[this,i]),this.destroy()},l.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2);!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").prop("disabled",!1),i.$nextArrow.removeClass("slick-disabled").prop("disabled",!1),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").prop("disabled",!0),i.$nextArrow.removeClass("slick-disabled").prop("disabled",!1)):(i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode||i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode)&&(i.$nextArrow.addClass("slick-disabled").prop("disabled",!0),i.$prevArrow.removeClass("slick-disabled").prop("disabled",!1)))},l.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").find("button").removeAttr("aria-current").end().end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active").find("button").attr("aria-current",!0).end().end())},l.prototype.updateSlideVisibility=function(){this.$slideTrack.find(".slick-slide").attr("aria-hidden","true").find("a, input, button, select").attr("tabindex","-1"),this.$slideTrack.find(".slick-active").removeAttr("aria-hidden").find("a, input, button, select").removeAttr("tabindex")},l.prototype.visibility=function(){this.options.autoplay&&(document[this.hidden]?this.interrupted=!0:this.interrupted=!1)},d.fn.slick=function(){for(var i,e=this,t=arguments[0],o=Array.prototype.slice.call(arguments,1),s=e.length,n=0;n<s;n++)if("object"==typeof t||void 0===t?e[n].slick=new l(e[n],t):i=e[n].slick[t].apply(e[n].slick,o),void 0!==i)return i;return e}});
4647 4648/* 4649 * MAIN NAVIGATION 4650 */ 4651 4652$(document).ready(function() { 4653 4654 /* MODE 1 */ 4655 4656 if($("#mainNavbar1").length && $(".dropdown-menu").length){ 4657 4658 //basic functionality 4659 prepareMenu(); 4660 4661 $("#mainNavbar1 .dropdown-toggler").click(function(e) { 4662 $(this).parent().toggleClass("is-open"); 4663 if($(this).attr("aria-expanded") === "false") { 4664 $(this).attr("aria-expanded", "true"); 4665 if(e.originalEvent.pointerType.localeCompare("mouse") != 0) { 4666 let $firstMenuElement = $(this).siblings("ul").children("li")[0]; 4667 $($firstMenuElement).children("a")[0].focus(); 4668 } 4669 } else { 4670 $(this).attr("aria-expanded", "false"); 4671 $(this).parent().find("button").attr("aria-expanded", "false"); 4672 $(this).parent().find(".is-open").toggleClass("is-open"); 4673 } 4674 }); 4675 4676 if(screen.width < 1200) { 4677 $("#mainNavbar1 .current").parents().addClass("is-open").find("> button").attr("aria-expanded","true"); 4678 $(".navigation-shortcut").attr("href","#mainNavigationMenuButton"); 4679 } 4680 4681 //close dropdown with Escape-key 4682 $("#mainNavbar1 .level2").on('keydown', function (e) { 4683 if (e.key === 'Esc' || e.key === 'Escape' || e.Code === 'Escape') { 4684 e.preventDefault(); 4685 let $highestListElement = $(this).parents("li").last(); 4686 $($highestListElement).find(".dropdown-toggler").attr("aria-expanded", "false"); 4687 $($highestListElement).find(".is-open").removeClass("is-open"); 4688 $($highestListElement).removeClass("is-open"); 4689 let $currentPosition = $(this).parents("li").last(); 4690 let currentId = $($currentPosition).attr("id"); 4691 if(!($currentPosition.hasClass("last"))) { 4692 $("#" + currentId + " + li > a")[0].focus(); 4693 } else { 4694 $(".content-wrapper a:not(:disabled), .content-wrapper button:not(:disabled), .content-wrapper input:not(:disabled), .content-wrapper [role='button']:not(:disabled)")[0].focus(); 4695 } 4696 } 4697 }); 4698 4699 //close dropdown on leaving the menu 4700 if(screen.width > 1200) { 4701 $("#mainNavbar1 .dropdown-menu:not(.level2) > li:last-child > *:last-child").on('keydown', function(e) { 4702 if (e.key === 'Tab' || e.Code === 'Tab') { 4703 closeDropdown($(this).parents(".dropdown-menu")[0]); 4704 } 4705 }); 4706 4707 $("#mainNavbar1 .dropdown-menu:not(.level2) > li:first-child > *:first-child").on('keydown', function(e) { 4708 if (e.key === 'Tab' || e.Code === 'Tab') { 4709 if ( e.shiftKey ) { 4710 closeDropdown($(this).parents(".dropdown-menu")[0]); 4711 } 4712 } 4713 }); 4714 } else { 4715 $("#mainNavbar1 .dropdown-menu > li:last-child > *:last-child").on('keydown', function(e) { 4716 if (e.key === 'Tab' || e.Code === 'Tab') { 4717 closeDropdown($(this).parents(".dropdown-menu")[0]); 4718 } 4719 }); 4720 4721 $("#mainNavbar1 .dropdown-menu > li:first-child > *:first-child").on('keydown', function(e) { 4722 if (e.key === 'Tab' || e.Code === 'Tab') { 4723 if ( e.shiftKey ) { 4724 closeDropdown($(this).parents(".dropdown-menu")[0]); 4725 } 4726 } 4727 }); 4728 } 4729 } 4730 4731 /* MODE 2 */ 4732 4733 if($("#mainNavbar2").length){ 4734 prepareMenu(); 4735 prepareBurgerMenu(); 4736 } 4737 4738 /* MODE 3 */ 4739 4740 if($("#mainNavbar3").length){ 4741 prepareMenu(); 4742 prepareBurgerMenu(); 4743 } 4744 4745 /* SEARCH */ 4746 4747 if($("#search-overlay").length){ 4748 $("#search-overlay-btn").click(function() { 4749 $("#search-overlay").slideToggle(200); 4750 $("body").addClass("overflow-hidden"); 4751 }); 4752 $("#search-overlay .overlay-close > button").click(function() { 4753 $("#search-overlay").slideToggle(200); 4754 $("body").removeClass("overflow-hidden"); 4755 }); 4756 } 4757 4758 /* Functions */ 4759 4760 function prepareMenu() { 4761 //give aria-labels to subpage-lists 4762 let subpagesListAriaLabel = $(".navbar-nav .level2").first().attr("aria-label"); 4763 let $subpagesList = $(".navbar-nav ul"); 4764 for(i = 0; i < $subpagesList.length; i++) { 4765 $subpagesList.get(i).setAttribute("aria-label",$subpagesList.get(i).getAttribute("aria-label") + " " + $($subpagesList.get(i)).siblings("a").children("span").html()); 4766 } 4767 } 4768 4769 function prepareBurgerMenu() { 4770 $(".navbar-toggler").click(function() { 4771 $("body").toggleClass("overflow-hidden"); 4772 }); 4773 4774 $(".burgermenu-navigation button").click(function() { 4775 $(this).parent().toggleClass("is-open"); 4776 if($(this).attr("aria-expanded")==="false") { 4777 $(this).attr("aria-expanded", "true"); 4778 let firstMenuElement = $(this).siblings("ul").children("li")[0]; 4779 $(firstMenuElement).children("a")[0].focus(); 4780 } else { 4781 $(this).attr("aria-expanded", "false"); 4782 } 4783 }); 4784 4785 let $subpagesButtonArray = $(".navbar-nav .subpages > button"); 4786 $subpagesButtonArray.each(function(){ 4787 let $expandableList = $(this).siblings("ul"); 4788 let $pageWithSubpages = $(this).parent(); 4789 let submenuId = "submenu-" + $($pageWithSubpages).attr("id").split("-")[2]; 4790 4791 $(this).attr("aria-controls",submenuId); 4792 $($expandableList).attr("id",submenuId); 4793 }); 4794 } 4795 4796 function closeDropdown(dropdownMenu) { 4797 let $targetButton = $(dropdownMenu).siblings("button")[0]; 4798 $($targetButton).attr("aria-expanded", "false"); 4799 $(dropdownMenu).parent().removeClass("is-open"); 4800 } 4801}); 4802 4803/* 4804 * ACCESSIBILITY JS 4805 */ 4806 4807$(window).on('load', function () { 4808 4809 /* disable elements */ 4810 $(".cc-deny")[0].setAttribute("disabled", ""); 4811 4812 /* 4813 * Accessibility for keyboard-users 4814 * Making elements operable by keyboard 4815 * add the class operable-by-keyboard to the non oparable element 4816 */ 4817 4818 const evtClick = new MouseEvent("click", { 4819 view: window, 4820 bubbles: true, 4821 cancelable: true, 4822 }); 4823 4824 const evtTab = new KeyboardEvent("keydown", { 4825 code:'Tab' 4826 }); 4827 4828 let nonOperableManualArray = []; /* use manual only, if it is not possible to give the class to the targeted element */ 4829 let nonOperableAutomaticArray = document.getElementsByClassName("operable-by-keyboard"); 4830 4831 for(let i=0; i < nonOperableManualArray.length; i++) { 4832 makeOperableByKeyboard(nonOperableManualArray[i]); 4833 } 4834 4835 for(let i=0; i < nonOperableAutomaticArray.length; i++) { 4836 makeOperableByKeyboard(nonOperableAutomaticArray[i]); 4837 } 4838 4839 function makeOperableByKeyboard(nonOperableElement){ 4840 if(nonOperableElement!=null) { 4841 nonOperableElement.addEventListener('keydown', function (e) { 4842 if (e.code === 'Enter' || e.key === 'Enter' || e.code === 'Space' || e.key === ' ' || 4843 e.code === 'NumpadEnter' || e.code === 'Backspace' || e.key === 'Backspace') { 4844 nonOperableElement.dispatchEvent(evtClick); 4845 e.preventDefault(); 4846 } 4847 }); 4848 } 4849 } 4850 4851 /* 4852 * shift focus when entering and leaving a dialog, trap focus inside the window 4853 * Give the button, which opens the window, the class open-dialog-(window-id), substitute (window-id) with the id of the opened window, without it the focus will not shift from the open-dialog button to the dialog and the other way around 4854 * Focus will only be shifted inside the window, if the window opens in less than 200ms 4855 * Give the window the class traped-focus, without it nothing happens 4856 * Give the close-buttons the class close-dialog, without it focus will not shift back to the element, which opened the dialog-window 4857 */ 4858
4859 let cookieDialogStartArray = document.getElementsByClassName("cc-revoke"); 4860 let cookieDialogWindowArray = document.getElementsByClassName("cc-window"); 4861 let cookieDialogEndArray = [document.getElementsByClassName("cc-allow")[0], document.getElementsByClassName("cc-allow-all")[0]]; 4862 4863 let shiftDialogFocusManualArray = [[cookieDialogStartArray[0], cookieDialogWindowArray[0], cookieDialogEndArray]]; /* use only, if you cannot give any of those elements the required class */ 4864 let shiftDialogFocusList =document.getElementsByClassName("traped-focus"); 4865 let shiftDialogFocusAutomaticArray = new Array(); 4866 4867 for(let i=0;i<shiftDialogFocusList.length;i++) { 4868 shiftDialogFocusAutomaticArray.push([document.getElementsByClassName("open-dialog-"+shiftDialogFocusList[i].id)[0], shiftDialogFocusList[i], shiftDialogFocusList[i].getElementsByClassName("close-dialog")]); 4869 } 4870 4871 for(let i=0;i<shiftDialogFocusAutomaticArray.length;i++) { 4872 shiftDialogFocus(shiftDialogFocusAutomaticArray[i]); 4873 } 4874 4875 for(let i=0;i<shiftDialogFocusManualArray.length;i++){ 4876 shiftDialogFocus(shiftDialogFocusManualArray[i]); 4877 } 4878 4879 function shiftDialogFocus(dialogArray) { 4880 if(dialogArray!=null && dialogArray[1]!=null) { 4881 let focusableElements = dialogArray[1].querySelectorAll('a:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), input[type="submit"]:not([disabled]), select:not([disabled]), .operable-by-keyboard:not([disabled])'); 4882 let firstFocusable = focusableElements[0]; 4883 let lastFocusable = focusableElements[focusableElements.length - 1]; 4884 4885 if(dialogArray[0]!=null) { 4886 dialogArray[0].addEventListener('keydown', function (e) { 4887 if (e.code === 'Enter' || e.key === 'Enter' || e.code === 'Space' || e.key === ' ' || 4888 e.code === 'NumpadEnter' || e.code === 'Backspace' || e.key === 'Backspace') { 4889 setTimeout(function() {firstFocusable.focus();}, 200); 4890 } 4891 }); 4892 if(dialogArray[2]!=null) { 4893 for(let y=0; y<dialogArray[2].length; y++) { 4894 if(dialogArray[2][y]!=null) { 4895 dialogArray[2][y].addEventListener('keydown', function (e) { 4896 if (e.code === 'Enter' || e.key === 'Enter' || e.code === 'Space' || e.key === ' ' || 4897 e.code === 'NumpadEnter' || e.code === 'Backspace' || e.key === 'Backspace') { 4898 setTimeout(function() {dialogArray[0].focus();}, 200); 4899 } 4900 }); 4901 } 4902 } 4903 } 4904 } 4905 4906 firstFocusable.addEventListener('keydown', function(e) { 4907 if (e.code === 'Tab' || e.key === 'Tab') { 4908 if ( e.shiftKey ) { 4909 if (document.activeElement === firstFocusable) { 4910 lastFocusable.focus(); 4911 e.preventDefault(); 4912 } 4913 } 4914 } 4915 }); 4916 4917 lastFocusable.addEventListener('keydown', function(e) { 4918 if (e.code === 'Tab' || e.key === 'Tab') { 4919 if ( !e.shiftKey ) { 4920 if (document.activeElement === lastFocusable) { 4921 firstFocusable.focus(); 4922 e.preventDefault(); 4923 } 4924 } 4925 } 4926 }); 4927 } 4928 } 4929 4930 /* 4931 * Leaving a menu with escape 4932 * Give the modal-window the class escapable-dialog 4933 * Give the button, which opens the window, the class open-dialog-(window-id), substitute (window-id) with the id of the opened window 4934 * Give the close-button the class close-dialog 4935 */ 4936 4937 let escapableDialogListArray = document.getElementsByClassName("escapable-dialog"); 4938 let escapableDialogAutomaticArray = new Array(); 4939 let escapableDialogManualArray = []; /* use only if it is not possible to give classes to target elements */ 4940 4941 for(let i=0; i < escapableDialogListArray.length; i++) { 4942 escapableDialogAutomaticArray.push([escapableDialogListArray[i], document.getElementsByClassName("open-dialog-"+escapableDialogListArray[i].id)[0], escapableDialogListArray[i].getElementsByClassName("close-dialog")[0]]); 4943 } 4944 4945 for(let i=0; i < escapableDialogAutomaticArray.length; i++) { 4946 makeEscapable(escapableDialogAutomaticArray[i][0], escapableDialogAutomaticArray[i][1], escapableDialogAutomaticArray[i][2]); 4947 } 4948 4949 for(let i=0; i < escapableDialogManualArray.length; i++) { 4950 makeEscapable(escapableDialogManualArray[i][0], escapableDialogManualArray[i][1], escapableDialogManualArray[i][2]); 4951 } 4952 4953 function makeEscapable(nonEscapableDialog, openNonEscapableDialog, closeNonEscapableDialog) { 4954 if(nonEscapableDialog!=null) { 4955 nonEscapableDialog.addEventListener('keydown', function (e) { 4956 if (e.key === 'Esc' || e.key === 'Escape' || e.Code === 'Escape') { 4957 if(closeNonEscapableDialog!=null) { 4958 closeNonEscapableDialog.dispatchEvent(evtClick); 4959 } 4960 if(openNonEscapableDialog!=null) { 4961 openNonEscapableDialog.focus(); 4962 } 4963 } 4964 }); 4965 } 4966 } 4967 4968 /* fixing tabindex */ 4969 $(".cc-btn").each(function() { 4970 $(this).attr("tabindex", "0"); 4971 }); 4972 4973 /* aria-label */
4974 let ccWindowAriaLabel = $(".cc-checkboxes-legend").html(); 4975 cookieDialogWindowArray[0].setAttribute("aria-label", ccWindowAriaLabel); 4976 4977 /* other wai-aria */ 4978 cookieDialogWindowArray[0].setAttribute("aria-modal", "true"); 4979}); 4980 4981 4982/* 4983 * DEFAULT JS 4984 */ 4985 4986$(document).ready(function() { 4987 4988 /*** HEADER ***/ 4989 4990 if($('.header-wrapper').length) { 4991 4992 /*** HEADER WRAPPER HEIGHT ***/ 4993 $header = $('.header-wrapper'); 4994 4995 /* Wenn kein Header-Bild/-Slider vorhanden ist auf einer Seite: */ 4996 if($('.no-content-top').length) { 4997 4998 /* Dem Header folgende Klasse geben */ 4999 $header.addClass('header-default'); 5000 /*$header.addClass('header-fixed header-sticky');*/ 5001 5002 /* Wenn gescrollt wird, Klassen zuweisen/entfernen */ 5003 $(window).bind('scroll', function () { 5004 if($(window).scrollTop() > 300) { 5005 $header.addClass('header-fixed header-small'); 5006 } else if($(window).scrollTop() == 0) { 5007 $header.removeClass('header-fixed header-small'); 5008 } 5009 }); 5010 5011 } else { 5012 5013 /* 5014 * Wenn ein Header-Bild/-Slider vorhanden ist auf einer Seite: 5015 * z.B. beim Seitenneuladen du nicht ganz dicht ...ähh oben bist, die Klasse header-fixed zuweisen 5016 */ 5017 if($(window).scrollTop() > 0) { 5018 $header.addClass('header-fixed'); 5019 } 5020 5021 /* Wenn gescrollt wird, Klassen zuweisen/entfernen */ 5022 $(window).bind('scroll', function () { 5023 if($(window).scrollTop() > 300) { 5024 $header.addClass('header-fixed header-small'); 5025 } else if($(window).scrollTop() == 0) { 5026 $header.removeClass('header-fixed header-small'); 5027 } 5028 }); 5029 } 5030 } 5031 5032 /*** SKIPLINKS ***/ 5033 5034 /* Main */ 5035 5036 /* Meta */ 5037 $("#meta-navigation-skiplink").each(function() { 5038 if($("#meta-navigation a").length > 0) { 5039 $(this).on('click', function(e) { 5040 e.preventDefault(); 5041 $("#meta-navigation a")[0].focus(); 5042 }); 5043 } else { 5044 $(this).addClass("d-none"); 5045 } 5046 }); 5047 5048 /*** TABLE RESPONSIVE ***/ 5049 5050 if($("table.contenttable").length){ 5051 $("table.contenttable").each(function() { 5052 $(this).addClass("table").wrap("<div class='table-responsive'></div>"); 5053 }); 5054 } 5055 5056 5057 5058 /*** GRIDELEMENTS TABS ***/ 5059 5060 if($('.tab-container').length) { 5061 5062 $transition = false; 5063 $('.tab').click(function(e) { 5064 if($transition) { 5065 return false; 5066 } 5067 $transition = true; 5068 $parent = $(this).parent().parent(); 5069 $parent.find('.tab').removeClass('active'); 5070 $(this).addClass('active'); 5071 5072 var tab = $(this).attr('id'); 5073 $parent.find('.tab-content').fadeOut(); 5074 $parent.find('.tab-content').promise().done(function(){ 5075 $parent.find('.' + tab + '-content').fadeIn(); 5076 $transition = false; 5077 }) 5078 }); 5079 5080 $('.tab-container .tab-btn, .tab-container .tab').click(function(){ 5081 $(this).parent().toggleClass("open"); 5082 }); 5083 } 5084 5085 5086 5087 /*** TO-TOP BUTTON ***/ 5088 5089 $(window).scroll(function () { 5090 /* Wenn 100 Pixel gescrolled wurde */ 5091 if ($(this).scrollTop() > 100) { 5092 $('.to-top-btn').addClass("active"); 5093 } else { 5094 $('.to-top-btn').removeClass("active"); 5095 } 5096 }); 5097 5098 /* Klick auf den Button */ 5099 $('.to-top-btn').click(function () { 5100 $('body, html').animate({ 5101 scrollTop: 0 5102 }, 300); 5103 }); 5104}); 5105 5106 5107/*! iFrame Resizer (iframeSizer.min.js ) - v4.2.11 - 2020-09-09 5108 * Desc: Force cross domain iframes to size to content. 5109 * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame. 5110 * Copyright: (c) 2020 David J. Bradshaw - [email protected] 5111 * License: MIT 5112 */ 5113 5114!function(l){if("undefined"!=typeof window){var e,m=0,g=!1,o=!1,v="message".length,I="[iFrameSizer]",x=I.length,F=null,r=window.requestAnimationFrame,h={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},M={}
5114,i=null,w={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,inPageLinks:!1,enablePublicMethods:!0,heightCalculationMethod:"bodyOffset",id:"iFrameResizer",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,resizeFrom:"parent",scrolling:!1,sizeHeight:!0,sizeWidth:!1,warningTimeout:5e3,tolerance:0,widthCalculationMethod:"scroll",onClose:function(){return!0},onClosed:function(){},onInit:function(){},onMessage:function(){E("onMessage function not defined")},onResized:function(){},onScroll:function(){return!0}},k={};window.jQuery&&((e=window.jQuery).fn?e.fn.iFrameResize||(e.fn.iFrameResize=function(i){return this.filter("iframe").each(function(e,n){d(n,i)}).end()}):T("","Unable to bind to jQuery, it is not fully loaded.")),"function"==typeof define&&define.amd?define([],q):"object"==typeof module&&"object"==typeof module.exports&&(module.exports=q()),window.iFrameResize=window.iFrameResize||q()}function p(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function z(e,n,i){e.addEventListener(n,i,!1)}function O(e,n,i){e.removeEventListener(n,i,!1)}function a(e){return I+"["+function(e){var n="Host page: "+e;return window.top!==window.self&&(n=window.parentIFrame&&window.parentIFrame.getId?window.parentIFrame.getId()+": "+e:"Nested host page: "+e),n}(e)+"]"}function t(e){return M[e]?M[e].log:g}function R(e,n){s("log",e,n,t(e))}function T(e,n){s("info",e,n,t(e))}function E(e,n){s("warn",e,n,!0)}function s(e,n,i,t){!0===t&&"object"==typeof window.console&&console[e](a(n),i)}function n(n){function e(){i("Height"),i("Width"),A(function(){P(b),S(y),d("onResized",b)},b,"init")}function i(e){var n=Number(M[y]["max"+e]),i=Number(M[y]["min"+e]),t=e.toLowerCase(),o=Number(b[t]);R(y,"Checking "+t+" is in range "+i+"-"+n),o<i&&(o=i,R(y,"Set "+t+" to min value")),n<o&&(o=n,R(y,"Set "+t+" to max value")),b[t]=""+o}function t(e){return p.substr(p.indexOf(":")+v+e)}function a(e,n){!function(e,n,i){k[i]||(k[i]=setTimeout(function(){k[i]=null,e()},n))}(function(){B("Send Page Info","pageInfo:"+function(){var e=document.body.getBoundingClientRect(),n=b.iframe.getBoundingClientRect();return JSON.stringify({iframeHeight:n.height,iframeWidth:n.width,clientHeight:Math.max(document.documentElement.clientHeight,window.innerHeight||0),clientWidth:Math.max(document.documentElement.clientWidth,window.innerWidth||0),offsetTop:parseInt(n.top-e.top,10),offsetLeft:parseInt(n.left-e.left,10),scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,documentHeight:document.documentElement.clientHeight,documentWidth:document.documentElement.clientWidth,windowHeight:window.innerHeight,windowWidth:window.innerWidth})}(),e,n)},32,n)}function r(e){var n=e.getBoundingClientRect();return N(y),{x:Math.floor(Number(n.left)+Number(F.x)),y:Math.floor(Number(n.top)+Number(F.y))}}function o(e){var n=e?r(b.iframe):{x:0,y:0},i={x:Number(b.width)+n.x,y:Number(b.height)+n.y};R(y,"Reposition requested from iFrame (offset x:"+n.x+" y:"+n.y+")"),window.top!==window.self?window.parentIFrame?window.parentIFrame["scrollTo"+(e?"Offset":"")](i.x,i.y):E(y,"Unable to scroll to requested position, window.parentIFrame not found"):(F=i,s(),R(y,"--"))}function s(){!1!==d("onScroll",F)?S(y):H()}function d(e,n){return W(y,e,n)}var c,u,f,l,m,g,h,w,p=n.data,b={},y=null;"[iFrameResizerChild]Ready"===p?function(){for(var e in M)B("iFrame requested init",L(e),M[e].iframe,e)}():I===(""+p).substr(0,x)&&p.substr(x).split(":")[0]in M?(m=p.substr(x).split(":"),g=m[1]?parseInt(m[1],10):0,h=M[m[0]]&&M[m[0]].iframe,w=getComputedStyle(h),b={iframe:h,id:m[0],height:g+function(e){if("border-box"!==e.boxSizing)return 0;var n=e.paddingTop?parseInt(e.paddingTop,10):0,i=e.paddingBottom?parseInt(e.paddingBottom,10):0;return n+i}(w)+function(e){if("border-box"!==e.boxSizing)return 0;var n=e.borderTopWidth?parseInt(e.borderTopWidth,10):0,i=e.borderBottomWidth?parseInt(e.borderBottomWidth,10):0;return n+i}(w),width:m[2],type:m[3]},y=b.id,M[y]&&(M[y].loaded=!0),(l=b.type in{true:1,false:1,undefined:1})&&R(y,"Ignoring init message from meta parent page"),!l&&(f=!0,M[u=y]||(f=!1,E(b.type+" No settings for "+u+". Message was: "+p)),f)&&(R(y,"Received: "+p),c=!0,null===b.
5114iframe&&(E(y,"IFrame ("+b.id+") not found"),c=!1),c&&function(){var e,i=n.origin,t=M[y]&&M[y].checkOrigin;if(t&&""+i!="null"&&!(t.constructor===Array?function(){var e=0,n=!1;for(R(y,"Checking connection is from allowed list of origins: "+t);e<t.length;e++)if(t[e]===i){n=!0;break}return n}():(e=M[y]&&M[y].remoteHost,R(y,"Checking connection is from: "+e),i===e)))throw new Error("Unexpected message received from: "+i+" for "+b.iframe.id+". Message was: "+n.data+". This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.");return!0}()&&function(){switch(M[y]&&M[y].firstRun&&M[y]&&(M[y].firstRun=!1),b.type){case"close":C(b.iframe);break;case"message":!function(e){R(y,"onMessage passed: {iframe: "+b.iframe.id+", message: "+e+"}"),d("onMessage",{iframe:b.iframe,message:JSON.parse(e)}),R(y,"--")}(t(6));break;case"autoResize":M[y].autoResize=JSON.parse(t(9));break;case"scrollTo":o(!1);break;case"scrollToOffset":o(!0);break;case"pageInfo":a(M[y]&&M[y].iframe,y),function(){function e(n,i){function t(){M[r]?a(M[r].iframe,r):o()}["scroll","resize"].forEach(function(e){R(r,n+e+" listener for sendPageInfo"),i(window,e,t)})}function o(){e("Remove ",O)}var r=y;e("Add ",z),M[r]&&(M[r].stopPageInfo=o)}();break;case"pageInfoStop":M[y]&&M[y].stopPageInfo&&(M[y].stopPageInfo(),delete M[y].stopPageInfo);break;case"inPageLink":!function(e){var n,i=e.split("#")[1]||"",t=decodeURIComponent(i),o=document.getElementById(t)||document.getElementsByName(t)[0];o?(n=r(o),R(y,"Moving to in page link (#"+i+") at x: "+n.x+" y: "+n.y),F={x:n.x,y:n.y},s(),R(y,"--")):window.top!==window.self?window.parentIFrame?window.parentIFrame.moveToAnchor(i):R(y,"In page link #"+i+" not found and window.parentIFrame not found"):R(y,"In page link #"+i+" not found")}(t(9));break;case"reset":j(b);break;case"init":e(),d("onInit",b.iframe);break;default:e()}}())):T(y,"Ignored: "+p)}function W(e,n,i){var t=null,o=null;if(M[e]){if("function"!=typeof(t=M[e][n]))throw new TypeError(n+" on iFrame["+e+"] is not a function");o=t(i)}return o}function b(e){var n=e.id;delete M[n]}function C(e){var n=e.id;if(!1!==W(n,"onClose",n)){R(n,"Removing iFrame: "+n);try{e.parentNode&&e.parentNode.removeChild(e)}catch(e){E(e)}W(n,"onClosed",n),R(n,"--"),b(e)}else R(n,"Close iframe cancelled by onClose event")}function N(e){null===F&&R(e,"Get page position: "+(F={x:window.pageXOffset!==l?window.pageXOffset:document.documentElement.scrollLeft,y:window.pageYOffset!==l?window.pageYOffset:document.documentElement.scrollTop}).x+","+F.y)}function S(e){null!==F&&(window.scrollTo(F.x,F.y),R(e,"Set page position: "+F.x+","+F.y),H())}function H(){F=null}function j(e){R(e.id,"Size reset requested by "+("init"===e.type?"host page":"iFrame")),N(e.id),A(function(){P(e),B("reset","reset",e.iframe,e.id)},e,"reset")}function P(n){function i(e){o||"0"!==n[e]||(o=!0,R(t,"Hidden iFrame detected, creating visibility listener"),function(){function n(){Object.keys(M).forEach(function(e){!function(n){function e(e){return"0px"===(M[n]&&M[n].iframe.style[e])}M[n]&&null!==M[n].iframe.offsetParent&&(e("height")||e("width"))&&B("Visibility change","resize",M[n].iframe,n)}(e)})}function i(e){R("window","Mutation observed: "+e[0].target+" "+e[0].type),c(n,16)}var t=p();t&&function(){var e=document.querySelector("body");new t(i).observe(e,{attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0})}()}())}function e(e){!function(e){n.id?(n.iframe.style[e]=n[e]+"px",R(n.id,"IFrame ("+t+") "+e+" set to "+n[e]+"px")):R("undefined","messageData id not set")}(e),i(e)}var t=n.iframe.id;M[t]&&(M[t].sizeHeight&&e("height"),M[t].sizeWidth&&e("width"))}function A(e,n,i){i!==n.type&&r&&!window.jasmine?(R(n.id,"Requesting animation frame"),r(e)):e()}function B(e,n,i,t,o){var r,a=!1;t=t||i.id,M[t]&&(i&&"contentWindow"in i&&null!==i.contentWindow?(r=M[t]&&M[t].targetOrigin,R(t,"["+e+"] Sending msg to iframe["+t+"] ("+n+") targetOrigin: "+r),i.contentWindow.postMessage(I+n,r)):E(t,"["+e+"] IFrame("+t+") not found"),o&&M[t]&&M[t].warningTimeout&&(M[t].msgTimeout=setTimeout(function(){!M[t]||M[t].loaded||a||(a=!0,E(t,"IFrame has not responded within "+M[t].warningTimeout/1e3+" seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning."))},M[t].warningTimeout)))}function L(e){return e+":"+M[e].bodyMarginV1+":"+M[e].sizeWidth+":"+M[e].log+":"+M[e].interval+":"+M[e].enablePublicMethods+":"+M[e].autoResize+":"+M[e].bodyMargin+":"+M[e].heightCalculationMethod+":"+M[e].bodyBackgroun
5114d+":"+M[e].bodyPadding+":"+M[e].tolerance+":"+M[e].inPageLinks+":"+M[e].resizeFrom+":"+M[e].widthCalculationMethod}function d(i,e){function n(e){var n=e.split("Callback");if(2===n.length){var i="on"+n[0].charAt(0).toUpperCase()+n[0].slice(1);this[i]=this[e],delete this[e],E(c,"Deprecated: '"+e+"' has been renamed '"+i+"'. The old method will be removed in the next major version.")}}var t,o,r,a,s,d,c=(""===(o=i.id)&&(i.id=(t=e&&e.id||w.id+m++,null!==document.getElementById(t)&&(t+=m++),o=t),g=(e||{}).log,R(o,"Added missing iframe ID: "+o+" ("+i.src+")")),o);function u(e){1/0!==M[c][e]&&0!==M[c][e]&&(i.style[e]=M[c][e]+"px",R(c,"Set "+e+" = "+M[c][e]+"px"))}function f(e){if(M[c]["min"+e]>M[c]["max"+e])throw new Error("Value for min"+e+" can not be greater than max"+e)}c in M&&"iFrameResizer"in i?E(c,"Ignored iFrame, already setup."):(d=(d=e)||{},M[c]={firstRun:!0,iframe:i,remoteHost:i.src&&i.src.split("/").slice(0,3).join("/")},function(e){if("object"!=typeof e)throw new TypeError("Options is not an object")}(d),Object.keys(d).forEach(n,d),function(e){for(var n in w)Object.prototype.hasOwnProperty.call(w,n)&&(M[c][n]=Object.prototype.hasOwnProperty.call(e,n)?e[n]:w[n])}(d),M[c]&&(M[c].targetOrigin=!0===M[c].checkOrigin?function(e){return""===e||null!==e.match(/^(about:blank|javascript:|file:\/\/)/)?"*":e}(M[c].remoteHost):"*"),function(){switch(R(c,"IFrame scrolling "+(M[c]&&M[c].scrolling?"enabled":"disabled")+" for "+c),i.style.overflow=!1===(M[c]&&M[c].scrolling)?"hidden":"auto",M[c]&&M[c].scrolling){case"omit":break;case!0:i.scrolling="yes";break;case!1:i.scrolling="no";break;default:i.scrolling=M[c]?M[c].scrolling:"no"}}(),f("Height"),f("Width"),u("maxHeight"),u("minHeight"),u("maxWidth"),u("minWidth"),"number"!=typeof(M[c]&&M[c].bodyMargin)&&"0"!==(M[c]&&M[c].bodyMargin)||(M[c].bodyMarginV1=M[c].bodyMargin,M[c].bodyMargin=M[c].bodyMargin+"px"),r=L(c),(s=p())&&(a=s,i.parentNode&&new a(function(e){e.forEach(function(e){Array.prototype.slice.call(e.removedNodes).forEach(function(e){e===i&&C(i)})})}).observe(i.parentNode,{childList:!0})),z(i,"load",function(){B("iFrame.onload",r,i,l,!0),function(){var e=M[c]&&M[c].firstRun,n=M[c]&&M[c].heightCalculationMethod in h;!e&&n&&j({iframe:i,height:0,width:0,type:"init"})}()}),B("init",r,i,l,!0),M[c]&&(M[c].iframe.iFrameResizer={close:C.bind(null,M[c].iframe),removeListeners:b.bind(null,M[c].iframe),resize:B.bind(null,"Window resize","resize",M[c].iframe),moveToAnchor:function(e){B("Move to anchor","moveToAnchor:"+e,M[c].iframe,c)},sendMessage:function(e){B("Send Message","message:"+(e=JSON.stringify(e)),M[c].iframe,c)}}))}function c(e,n){null===i&&(i=setTimeout(function(){i=null,e()},n))}function u(){"hidden"!==document.visibilityState&&(R("document","Trigger event: Visiblity change"),c(function(){f("Tab Visable","resize")},16))}function f(n,i){Object.keys(M).forEach(function(e){!function(e){return M[e]&&"parent"===M[e].resizeFrom&&M[e].autoResize&&!M[e].firstRun}(e)||B(n,i,M[e].iframe,e)})}function y(){z(window,"message",n),z(window,"resize",function(){!function(e){R("window","Trigger event: "+e),c(function(){f("Window "+e,"resize")},16)}("resize")}),z(document,"visibilitychange",u),z(document,"-webkit-visibilitychange",u)}function q(){function i(e,n){n&&(function(){if(!n.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==n.tagName.toUpperCase())throw new TypeError("Expected <IFRAME> tag, found <"+n.tagName+">")}(),d(n,e),t.push(n))}var t;return function(){var e,n=["moz","webkit","o","ms"];for(e=0;e<n.length&&!r;e+=1)r=window[n[e]+"RequestAnimationFrame"];r?r=r.bind(window):R("setup","RequestAnimationFrame not supported")}(),y(),function(e,n){switch(t=[],function(e){e&&e.enablePublicMethods&&E("enablePublicMethods option has been removed, public methods are now always available in the iFrame")}(e),typeof n){case"undefined":case"string":Array.prototype.forEach.call(document.querySelectorAll(n||"iframe"),i.bind(l,e));break;case"object":i(e,n);break;default:throw new TypeError("Unexpected data type ("+typeof n+")")}return t}}}(); 5115 5116 5117jQuery(document).ready(function(){ 5118 5119 var $modal = jQuery('#iframeModal'); 5120 var $iframe = jQuery('#iframeModalIframe'); 5121 5122 $modal.on('hidden.bs.modal', function (e) { 5123 $iframe.attr('src', ''); 5124 }); 5125 5126 $iframe.iFrameResize({ 5127 //log: true, 5128 onMessage: function(data){ 5129 if(data.message === 'iframeModal.close'){ 5130 $modal.modal('hide'); 5131 } 5132 if(data.message === 'iframeModal.reload'){ 5133 //location.reload(true); 5134 window.location.href = window.location.href; 5135 } 5136 if(data.message === 'iframeModal.contentLoaded'){ 5137 $modal.animate({ scrollTop: 0 }, 'slow'); 5138 $modal.modal('handleUpdate'); 5139 } 5140 } 5141 }); 5142 5143 jQuery('.link-iframemodal-open').each(function(){ 5144 jQuery(this).click(function(){ 5145 var $self = jQuery(this); 5146 var src = $self.attr('href'); 5147 $iframe.attr('src', src); 5148 $modal.modal('show'); 5149 return false;
5150 }); 5151 }); 5152 5153}); 5154/* 5155 * CUSTOM.JS 5156 */ 5157 5158$(document).ready(function () { 5159 5160 /*** TABS ***/ 5161 if($('.tab-container').length) { 5162 5163 $('.tab-container .tab-btn').click(function(){ 5164 $('.tab-container .tab-header-wrapper').addClass("active"); 5165 }); 5166 5167 $('.tab-container .tab').click(function(){ 5168 $('.tab-container .tab-header-wrapper').removeClass("active"); 5169 }); 5170 } 5171 5172 /* Contrast */ 5173 jQuery('.toolbarTop-item-contrast').click(function() { 5174 jQuery('body').toggleClass('high-contrast'); 5175 }); 5176 /* 5177 if(jQuery.cookie('z35contrast')) { 5178 jQuery('body').addClass(jQuery.cookie('z35contrast')); 5179 } 5180 jQuery('.toolbarTop-item-contrast').click(function() { 5181 jQuery('body').toggleClass('high-contrast'); 5182 if(jQuery('body').hasClass('high-contrast')){ 5183 jQuery.cookie('z35contrast', 'high-contrast', { expires: 30 }); 5184 } 5185 if(!jQuery('body').hasClass('high-contrast')){ 5186 jQuery.cookie('z35contrast', '', { expires: 30 }); 5187 } 5188 }); 5189 */ 5190 5191 /* tx_news catmenu */ 5192 $(function(){ 5193 // bind change event to select 5194 $('#selectoptions').on('change', function () { 5195 var url = $(this).val(); // get selected value 5196 if (url) { // require a URL 5197 window.location = url; // redirect 5198 } 5199 return false; 5200 }); 5201 }); 5202 5203 $('.powermail_tab_navigation > button').click(function(){ 5204 $('html, body').animate({scrollTop:$('.tx-powermail').offset().top - 360}, 'slow'); 5205 }); 5206 5207 $('.news-single .lightbox').magnificPopup({type:'image'}); 5208}); 5209 5210 5211$(window).on("load", function() { 5212 var url = window.location.href; 5213 var urlIndex = url.indexOf("tx_powermail_pi1"); 5214 if(urlIndex > -1){ 5215 if($('.tx-powermail').length){ 5216 $('html, body').animate({scrollTop:$('.tx-powermail').offset().top - 420}, 'slow'); 5217 } 5218 } 5219}); 5220 5221/*! Magnific Popup - v1.1.0 - 2016-02-20 5222* http://dimsemenov.com/plugins/magnific-popup/ 5223* Copyright (c) 2016 Dmitry Semenov; */ 5224!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.
5224st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;
5224if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">×</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;
5224var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});
5224var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()}); 5225 5226/* 5227 * CUSTOM.JS 5228 */ 5229 5230$(document).ready(function () { 5231 5232 // Toolbar Sprachswitcher Popup 5233 /* 5234 jQuery('.header-top .toolbar-language').click(function() { 5235 $(this).toggleClass("active"); 5236 }); 5237 */ 5238 5239});
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.