1!function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){t.exports=n(1)},function(t,e,n){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}n.r(e);var r=jQuery,a=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.value=e,r.fn.sendGTMData=function(e){t.GTMIsActive()&&t.me().send(e)}}var e,n,a;return e=t,a=[{key:"me",value:function(e){return void 0===t._me&&(t._me=new t(e),window.GTMToolsClass=t),t._me}},{key:"GTMIsActive",value:function(){return"undefined"==typeof tarteaucitron||"undefined"!=typeof TacHelpers&&TacHelpers.checkCookie("googletagmanager")}}],(n=[{key:"attach",value:function(e){var n=this;this.isInit=!1,this.prefix="data-gtm",this.$body=r("body"),this.sendProd=this.sendProd.bind(this),this.sendTest=this.sendTest.bind(this),"undefined"!=typeof tarteaucitron?r(document).on(tarteaucitronEvents.TARTEAUCITRON_READY+", "+tarteaucitronEvents.TARTEAUCITRON_SERVICE_UPDATE_STATUS,(function(){t.GTMIsActive()&&!n.isInit&&n.init(e)})):this.isInit||this.init(e)}},{key:"init",value:function(t){var e=this;this.isInit=!0,this.clickCallback=this.isTestMode()?this.sendTest:this.sendProd,this.$body.on("click","["+this.prefix+"]",this.clickCallback),this.onSubmitForm=this.onSubmitForm.bind(this),r(t).find("[data-gtm-form-submit]").each((function(t,n){r(n).removeAttr("data-gtm-form-submit");var i=r(n).closest("form");i.on("submit",(function(t){return e.onSubmitForm(t,{button:n,$form:i})}))}))}},{key:"onSubmitForm",value:function(t,e){this.isTestMode()&&t.preventDefault();var n=[],i=[];e.$form.find('[type="checkbox"]').each((function(t,e){if(r(e).is(":checked")){var a=r(e).attr("name"),o=r(e).next("label").text();a.indexOf("event_type")>-1&&i.push(o),a.indexOf("service_provider_category")>-1&&n.push(o)}})),r(e.button).attr("data-gtm-event-action",i.join(";")).attr("data-gtm-event-label",n.join(";"));var a=this.getTagData(e.button,"data-gtm");this.send(a)}},{key:"isTestMode",value:function(){return"development"===drupalSettings.env}},{key:"sendProd",value:function(t){this.unbindObfuscateValue(r(t.currentTarget)),this.send(this.getTagData(t.currentTarget,this.prefix))}},{key:"sendTest",value:function(t){return t.preventDefault(),this.unbindObfuscateValue(r(t.currentTarget)),this.send(this.getTagData(t.currentTarget,this.prefix)),!1}},{key:"unbindObfuscateValue",value:function(t){t.hasClass("js-obfuscate-value")&&(t.removeAttr("data-gtm"),this.$body.off("click","["+this.prefix+"]",this.clickCallback),this.$body.on("click","["+this.prefix+"]",this.clickCallback))}},{key:"send",value:function(t){window.dataLayer=window.dataLayer||[],window.dataLayer.push(t),this.isTestMode()&&console.log("gtmData",t)}},{key:"getTagData",value:function(t,e){var n={};for(var i in t.attributes){var r=t.attributes[i].nodeName;if(r&&r.indexOf(e)>-1&&r!==e){var a=r.split("-").slice(2).map((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})).join("");a=a.charAt(0).toLocaleLowerCase()+a.slice(1);var o=t.getAttribute(r);n[a]=o}}return n}}])&&i(e.prototype,n),a&&i(e,a),t}();!function(t,e){t.behaviors.gtm_tools=a.me(e)}(Drupal,drupalSettings)}]);;
vendor: 17,050 bytes, lines 2-23
2/*! 3 * jQuery Form Plugin 4 * version: 4.3.0 5 * Requires jQuery v1.7.2 or later 6 * Project repository: https://github.com/jquery-form/form 7 8 * Copyright 2017 Kevin Morris 9 * Copyright 2006 M. Alsup 10 11 * Dual licensed under the LGPL-2.1+ or MIT licenses 12 * https://github.com/jquery-form/form#license 13 14 * This library is free software; you can redistribute it and/or 15 * modify it under the terms of the GNU Lesser General Public 16 * License as published by the Free Software Foundation; either 17 * version 2.1 of the License, or (at your option) any later version. 18 * This library is distributed in the hope that it will be useful, 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 * Lesser General Public License for more details. 22 */ 23!function(r){"function"==typeof define&&define.amd?define(["jquery"],r):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),r(t),t}:r(jQuery)}(function(q){"use strict";var m=/\r?\n/g,S={};S.fileapi=void 0!==q('<input type="file">').get(0).files,S.formdata=void 0!==window.FormData;var _=!!q.fn.prop;function o(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),q(e.target).closest("form").ajaxSubmit(t))}function i(e){var t=e.target,r=q(t);if(!r.is("[type=submit],[type=image]")){var a=r.closest("[type=submit]");if(0===a.length)return;t=a[0]}var n,o=t.form;"image"===(o.clk=t).type&&(void 0!==e.offsetX?(o.clk_x=e.offsetX,o.clk_y=e.offsetY):"function"==typeof q.fn.offset?(n=r.offset(),o.clk_x=e.pageX-n.left,o.clk_y=e.pageY-n.top):(o.clk_x=e.pageX-t.offsetLeft,o.clk_y=e.pageY-t.offsetTop)),setTimeout(function(){o.clk=o.clk_x=o.clk_y=null},100)}function N(){var e;q.fn.ajaxSubmit.debug&&(e="[jquery.form] "+Array.prototype.join.call(arguments,""),window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e))}q.fn.attr2=function(){if(!_)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},q.fn.ajaxSubmit=function(M,e,t,r){if(!this.length)return N("ajaxSubmit: skipping submit process - no element selected"),this;var O,a,n,o,X=this;"function"==typeof M?M={success:M}:"string"==typeof M||!1===M&&0<arguments.length?(M={url:M,data:e,dataType:t},"function"==typeof r&&(M.success=r)):void 0===M&&(M={}),O=M.method||M.type||this.attr2("method"),n=(n=(n="string"==typeof(a=M.url||this.attr2("action"))?q.trim(a):"")||window.location.href||"")&&(n.match(/^([^#]+)/)||[])[1],o=/(MSIE|Trident)/.test(navigator.userAgent||"")&&/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",M=q.extend(!0,{url:n,success:q.ajaxSettings.success,type:O||q.ajaxSettings.type,iframeSrc:o},M);var i={};if(this.trigger("form-pre-serialize",[this,M,i]),i.veto)return N("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(M.beforeSerialize&&!1===M.beforeSerialize(this,M))return N("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var s=M.traditional;void 0===s&&(s=q.ajaxSettings.traditional);var u,c,C=[],l=this.formToArray(M.semantic,C,M.filtering);if(M.data&&(c=q.isFunction(M.data)?M.data(l):M.data,M.extraData=c,u=q.param(c,s)),M.beforeSubmit&&!1===M.beforeSubmit(l,this,M))return N("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[l,this,M,i]),i.veto)return N("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var f=q.param(l,s);u&&(f=f?f+"&"+u:u),"GET"===M.type.toUpperCase()?(M.url+=(0<=M.url.indexOf("?")?"&":"?")+f,M.data=null):M.data=f;var d,m,p,h=[];M.resetForm&&h.push(function(){X.resetForm()}),M.clearForm&&h.push(function(){X.clearForm(M.includeHidden)}),!M.dataType&&M.target?(d=M.success||function(){},h.push(function(e,t,r){var a=arguments,n=M.replaceTarget?"replaceWith":"html";q(M.target)[n](e).each(function(){d.apply(this,a)})})):M.success&&(q.isArray(M.success)?q.merge(h,M.success):h.push(M.success)),M.success=function(e,t,r){for(var a=M.context||this,n=0,o=h.length;n<o;n++)h[n].apply(a,[e,t,r||X,X])},M.error&&(m=M.error,M.error=function(e,t,r){var a=M.context||this;m.apply(a,[e,t,r,X])}),M.complete&&(p=M.complete,M.complete=function(e,t){var r=M.context||this;p.apply(r,[e,t,X])});var v=0<q("input[type=file]:enabled",this).filter(function(){return""!==q(this).val()}).length,g="multipart/form-data",x=X.attr("enctype")===g||X.attr("encoding")===g,y=S.fileapi&&S.formdata;N("fileAPI :"+y);var b,T=(v||x)&&!y;!1!==M.iframe&&(M.iframe||T)?M.closeKeepAlive?q.get(M.closeKeepAlive,function(){b=w(l)}):b=w(l):b=(v||x)&&y?function(e){for(var r=new FormData,t=0;t<e.length;t++)r.append(e[t].name,e[t].value);if(M.extraData){var a=function(e){var t,r,a=q.param(e,M.traditional).split("&"),n=a.length,o=[];for(t=0;t<n;t++)a[t]=a[t].replace(/\+/g," "),r=a[t].split("="),o.push([decodeURIComponent(r[0]),decodeURIComponent(r[1])]);return o}(M.extraData);for(t=0;t<a.length;t++)a[t]&&r.append(a[t][0],a[t][1])}M.data=null;var n=q.extend(!0,{},q.ajaxSettings,M,{contentType:!1,processData:!1,cache:!1,type:O||"POST"});M.uploadProgress&&(n.xhr=function(){var e=q.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",function(e){var t=0,r=e.loaded||e.position,a=e.total;e.lengthComputable&&(t=Math.ceil(r/a*100)),M.uploadProgress(e,r,a,t)},!1),e});n.data=null;var o=n.beforeSend;return n.beforeSend=function(e,t){M.formData?t.data=M.formData:t.data=r,o&&o.call(this,e,t)},q.ajax(n)}(l):q.ajax(M),X.removeData("jqxhr").data("jqxhr",b);for(var j=0;j<C.length;j++)C[j]=null;return this.trigger("form-submit-notify",[this,M]),this;function w(e){var t,r,l,f,o,d,m,p,a,n,h,v,i=X[0],g=q.Deferred();if(g.abort=function(e){p.abort(e)},e)for(r=0;r<C.length;r++)t=q(C[r]),_?t.prop("disabled",!1):t.removeAttr("disabled");(l=q.extend(!0,{},q.ajaxSettings,M)).context=l.context||l,o="jqFormIO"+(new Date).getTime();var s=i.ownerDocument,u=X.closest("body");if(l.iframeTarget?(n=(d=q(l.iframeTarget,s)).attr2("name"))?o=n:d.attr2("name",o):(d=q('<iframe name="'+o+'" src="'+l.iframeSrc+'" />',s)).css({position:"absolute",top:"-1000px",left:"-1000px"}),m=d[0],p={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t="timeout"===e?"timeout":"aborted";N("aborting upload... "+t),this.aborted=1;try{m.contentWindow.document.execCommand&&m.contentWindow.document.execCommand("Stop")}catch(e){}d.attr("src",l.iframeSrc),p.error=t,l.error&&l.error.call(l.context,p,t,e),f&&q.event.trigger("ajaxError",[p,l,t]),l.complete&&l.complete.call(l.context,p,t)}},(f=l.global)&&0==q.active++&&q.event.trigger("ajaxStart"),f&&q.event.trigger("ajaxSend",[p,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,p,l))return l.global&&q.active--,g.reject(),g;if(p.aborted)return g.reject(),g;(a=i.clk)&&(n=a.name)&&!a.disabled&&(l.extraData=l.extraData||{},l.extraData[n]=a.value,"image"===a.type&&(l.extraData[n+".x"]=i.clk_x,l.extraData[n+".y"]=i.clk_y));var x=1,y=2;function b(t){var r=null;try{t.contentWindow&&(r=t.contentWindow.document)}catch(e){N("cannot get iframe.contentWindow document: "+e)}if(r)return r;try{r=t.contentDocument?t.contentDocument:t.document}catch(e){N("cannot get iframe.contentDocument: "+e),r=t.document}return r}var c=q("meta[name=csrf-token]").attr("content"),T=q("meta[name=csrf-param]").attr("content");function j(){var e=X.attr2("target"),t=X.attr2("action"),r=X.attr("enctype")||X.attr("encoding")||"multipart/form-data";i.setAttribute("target",o),O&&!/post/i.test(O)||i.setAttribute("method","POST"),t!==l.url&&i.setAttribute("action",l.url),l.skipEncodingOverride||O&&!/post/i.test(O)||X.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),l.timeout&&(v=setTimeout(function(){h=!0,A(x)},l.timeout));var a=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(q.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty("name")&&l.extraData[n].hasOwnProperty("value")?a.push(q('<input type="hidden" name="'+l.extraData[n].name+'">',s).val(l.extraData[n].value).appendTo(i)[0]):a.push(q('<input type="hidden" name="'+n+'">',s).val(l.extraData[n]).appendTo(i)[0]));l.iframeTarget||d.appendTo(u),m.attachEvent?m.attachEvent("onload",A):m.addEventListener("load",A,!1),setTimeout(function e(){try{var t=b(m).readyState;N("state = "+t),t&&"uninitialized"===t.toLowerCase()&&setTimeout(e,50)}catch(e){N("Server abort: ",e," (",e.name,")"),A(y),v&&clearTimeout(v),v=void 0}},15);try{i.submit()}catch(e){document.createElement("form").submit.apply(i)}}finally{i.setAttribute("action",t),i.setAttribute("enctype",r),e?i.setAttribute("target",e):X.removeAttr("target"),q(a).remove()}}T&&c&&(l.extraData=l.extraData||{},l.extraData[T]=c),l.forceSync?j():setTimeout(j,10);var w,S,k,D=50;function A(e){if(!p.aborted&&!k){if((S=b(m))||(N("cannot access response document"),e=y),e===x&&p)return p.abort("timeout"),void g.reject(p,"timeout");if(e===y&&p)return p.abort("server abort"),void g.reject(p,"error","server abort");if(S&&S.location.href!==l.iframeSrc||h){m.detachEvent?m.detachEvent("onload",A):m.removeEventListener("load",A,!1);var t,r="success";try{if(h)throw"timeout";var a="xml"===l.dataType||S.XMLDocument||q.isXMLDoc(S);if(N("isXml="+a),!a&&window.opera&&(null===S.body||!S.body.innerHTML)&&--D)return N("requeing onLoad callback, DOM not available"),void setTimeout(A,250);var n=S.body?S.body:S.documentElement;p.responseText=n?n.innerHTML:null,p.responseXML=S.XMLDocument?S.XMLDocument:S,a&&(l.dataType="xml"),p.getResponseHeader=function(e){return{"content-type":l.dataType}[e.toLowerCase()]},n&&(p.status=Number(n.getAttribute("status"))||p.status,p.statusText=n.getAttribute("statusText")||p.statusText);var o,i,s,u=(l.dataType||"").toLowerCase(),c=/(json|script|text)/.test(u);c||l.textarea?(o=S.getElementsByTagName("textarea")[0])?(p.responseText=o.value,p.status=Number(o.getAttribute("status"))||p.status,p.statusText=o.getAttribute("statusText")||p.statusText):c&&(i=S.getElementsByTagName("pre")[0],s=S.getElementsByTagName("body")[0],i?p.responseText=i.textContent?i.textContent:i.innerText:s&&(p.responseText=s.textContent?s.textContent:s.innerText)):"xml"===u&&!p.responseXML&&p.responseText&&(p.responseXML=F(p.responseText));try{w=E(p,u,l)}catch(e){r="parsererror",p.error=t=e||r}}catch(e){N("error caught: ",e),r="error",p.error=t=e||r}p.aborted&&(N("upload aborted"),r=null),p.status&&(r=200<=p.status&&p.status<300||304===p.status?"success":"error"),"success"===r?(l.success&&l.success.call(l.context,w,"success",p),g.resolve(p.responseText,"success",p),f&&q.event.trigger("ajaxSuccess",[p,l])):r&&(void 0===t&&(t=p.statusText),l.error&&l.error.call(l.context,p,r,t),g.reject(p,"error",t),f&&q.event.trigger("ajaxError",[p,l,t])),f&&q.event.trigger("ajaxComplete",[p,l]),f&&!--q.active&&q.event.trigger("ajaxStop"),l.complete&&l.complete.call(l.context,p,r),k=!0,l.timeout&&clearTimeout(v),setTimeout(function(){l.iframeTarget?d.attr("src",l.iframeSrc):d.remove(),p.responseXML=null},100)}}}var F=q.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!==t.documentElement.nodeName?t:null},L=q.parseJSON||function(e){return window.eval("("+e+")")},E=function(e,t,r){var a=e.getResponseHeader("content-type")||"",n=("xml"===t||!t)&&0<=a.indexOf("xml"),o=n?e.responseXML:e.responseText;return n&&"parsererror"===o.documentElement.nodeName&&q.error&&q.error("parsererror"),r&&r.dataFilter&&(o=r.dataFilter(o,t)),"string"==typeof o&&(("json"===t||!t)&&0<=a.indexOf("json")?o=L(o):("script"===t||!t)&&0<=a.indexOf("javascript")&&q.globalEval(o)),o};return g}},q.fn.ajaxForm=function(e,t,r,a){if(("string"==typeof e||!1===e&&0<arguments.length)&&(e={url:e,data:t,dataType:r},"function"==typeof a&&(e.success=a)),(e=e||{}).delegation=e.delegation&&q.isFunction(q.fn.on),e.delegation||0!==this.length)return e.delegation?(q(document).off("submit.form-plugin",this.selector,o).off("click.form-plugin",this.selector,i).on("submit.form-plugin",this.selector,e,o).on("click.form-plugin",this.selector,e,i),this):(e.beforeFormUnbind&&e.beforeFormUnbind(this,e),this.ajaxFormUnbind().on("submit.form-plugin",e,o).on("click.form-plugin",e,i));var n={s:this.selector,c:this.context};return!q.isReady&&n.s?(N("DOM not ready, queuing ajaxForm"),q(function(){q(n.s,n.c).ajaxForm(e)})):N("terminating; zero elements found by selector"+(q.isReady?"":" (DOM not ready)")),this},q.fn.ajaxFormUnbind=function(){return this.off("submit.form-plugin click.form-plugin")},q.fn.formToArray=function(e,t,r){var a=[];if(0===this.length)return a;var n,o,i,s,u,c,l,f,d,m,p=this[0],h=this.attr("id"),v=(v=e||void 0===p.elements?p.getElementsByTagName("*"):p.elements)&&q.makeArray(v);if(h&&(e||/(Edge|Trident)\//.test(navigator.userAgent))&&(n=q(':input[form="'+h+'"]').get()).length&&(v=(v||[]).concat(n)),!v||!v.length)return a;for(q.isFunction(r)&&(v=q.map(v,r)),o=0,c=v.length;o<c;o++)if((m=(u=v[o]).name)&&!u.disabled)if(e&&p.clk&&"image"===u.type)p.clk===u&&(a.push({name:m,value:q(u).val(),type:u.type}),a.push({name:m+".x",value:p.clk_x},{name:m+".y",value:p.clk_y}));else if((s=q.fieldValue(u,!0))&&s.constructor===Array)for(t&&t.push(u),i=0,l=s.length;i<l;i++)a.push({name:m,value:s[i]});else if(S.fileapi&&"file"===u.type){t&&t.push(u);var g=u.files;if(g.length)for(i=0;i<g.length;i++)a.push({name:m,value:g[i],type:u.type});else a.push({name:m,value:"",type:u.type})}else null!=s&&(t&&t.push(u),a.push({name:m,value:s,type:u.type,required:u.required}));return e||!p.clk||(m=(d=(f=q(p.clk))[0]).name)&&!d.disabled&&"image"===d.type&&(a.push({name:m,value:f.val()}),a.push({name:m+".x",value:p.clk_x},{name:m+".y",value:p.clk_y})),a},q.fn.formSerialize=function(e){return q.param(this.formToArray(e))},q.fn.fieldSerialize=function(n){var o=[];return this.each(function(){var e=this.name;if(e){var t=q.fieldValue(this,n);if(t&&t.constructor===Array)for(var r=0,a=t.length;r<a;r++)o.push({name:e,value:t[r]});else null!=t&&o.push({name:this.name,value:t})}}),q.param(o)},q.fn.fieldValue=function(e){for(var t=[],r=0,a=this.length;r<a;r++){var n=this[r],o=q.fieldValue(n,e);null==o||o.constructor===Array&&!o.length||(o.constructor===Array?q.merge(t,o):t.push(o))}return t},q.fieldValue=function(e,t){var r=e.name,a=e.type,n=e.tagName.toLowerCase();if(void 0===t&&(t=!0),t&&(!r||e.disabled||"reset"===a||"button"===a||("checkbox"===a||"radio"===a)&&!e.checked||("submit"===a||"image"===a)&&e.form&&e.form.clk!==e||"select"===n&&-1===e.selectedIndex))return null;if("select"!==n)return q(e).val().replace(m,"\r\n");var o=e.selectedIndex;if(o<0)return null;for(var i=[],s=e.options,u="select-one"===a,c=u?o+1:s.length,l=u?o:0;l<c;l++){var f=s[l];if(f.selected&&!f.disabled){var d=(d=f.value)||(f.attributes&&f.attributes.value&&!f.attributes.value.specified?f.text:f.value);if(u)return d;i.push(d)}}return i},q.fn.clearForm=function(e){return this.each(function(){q("input,select,textarea",this).clearFields(e)})},q.fn.clearFields=q.fn.clearInputs=function(r){var a=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var e=this.type,t=this.tagName.toLowerCase();a.test(e)||"textarea"===t?this.value="":"checkbox"===e||"radio"===e?this.checked=!1:"select"===t?this.selectedIndex=-1:"file"===e?/MSIE/.test(navigator.userAgent)?q(this).replaceWith(q(this).clone(!0)):q(this).val(""):r&&(!0===r&&/hidden/.test(e)||"string"==typeof r&&q(this).is(r))&&(this.value="")})},q.fn.resetForm=function(){return this.each(function(){var t=q(this),e=this.tagName.toLowerCase();switch(e){case"input":this.checked=this.defaultChecked;case"textarea":return this.value=this.defaultValue,!0;case"option":case"optgroup":var r=t.parents("select");return r.length&&r[0].multiple?"option"===e?this.selected=this.defaultSelected:t.find("option").resetForm():r.resetForm(),!0;case"select":return t.find("option").each(function(e){if(this.selected=this.defaultSelected,this.defaultSelected&&!t[0].multiple)return t[0].selectedIndex=e,!1}),!0;case"label":var a=q(t.attr("for")),n=t.find("input,select,textarea");return a[0]&&n.unshift(a[0]),n.resetForm(),!0;case"form":return"function"!=typeof this.reset&&("object"!=typeof this.reset||this.reset.nodeType)||this.reset(),!0;default:return t.find("form,input,label,select,textarea").resetForm(),!0}})},q.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},q.fn.selected=function(r){return void 0===r&&(r=!0),this.each(function(){var e,t=this.type;"checkbox"===t||"radio"===t?this.checked=r:"option"===this.tagName.toLowerCase()&&(e=q(this).parent("select"),r&&e[0]&&"select-one"===e[0].type&&e.find("option").selected(!1),this.selected=r)})},q.fn.ajaxSubmit.debug=!1});
24 25; 26/** 27* DO NOT EDIT THIS FILE. 28* See the following change record for more information, 29* https://www.drupal.org/node/2815083 30* @preserve 31**/ 32(function ($, Drupal) { 33 Drupal.theme.progressBar = function (id) { 34 return "<div id=\"".concat(id, "\" class=\"progress\" aria-live=\"polite\">") + '<div class="progress__label"> </div>' + '<div class="progress__track"><div class="progress__bar"></div></div>' + '<div class="progress__percentage"></div>' + '<div class="progress__description"> </div>' + '</div>'; 35 }; 36 Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) { 37 this.id = id; 38 this.method = method || 'GET'; 39 this.updateCallback = updateCallback; 40 this.errorCallback = errorCallback; 41 this.element = $(Drupal.theme('progressBar', id)); 42 }; 43 $.extend(Drupal.ProgressBar.prototype, { 44 setProgress: function setProgress(percentage, message, label) { 45 if (percentage >= 0 && percentage <= 100) { 46 $(this.element).find('div.progress__bar').css('width', "".concat(percentage, "%")); 47 $(this.element).find('div.progress__percentage').html("".concat(percentage, "%")); 48 } 49 $('div.progress__description', this.element).html(message); 50 $('div.progress__label', this.element).html(label); 51 if (this.updateCallback) { 52 this.updateCallback(percentage, message, this); 53 } 54 }, 55 startMonitoring: function startMonitoring(uri, delay) { 56 this.delay = delay; 57 this.uri = uri; 58 this.sendPing(); 59 }, 60 stopMonitoring: function stopMonitoring() { 61 clearTimeout(this.timer); 62 this.uri = null; 63 }, 64 sendPing: function sendPing() { 65 if (this.timer) { 66 clearTimeout(this.timer); 67 } 68 if (this.uri) { 69 var pb = this; 70 var uri = this.uri; 71 if (uri.indexOf('?') === -1) { 72 uri += '?'; 73 } else { 74 uri += '&'; 75 } 76 uri += '_format=json'; 77 $.ajax({ 78 type: this.method, 79 url: uri, 80 data: '', 81 dataType: 'json', 82 success: function success(progress) { 83 if (progress.status === 0) { 84 pb.displayError(progress.data); 85 return; 86 } 87 pb.setProgress(progress.percentage, progress.message, progress.label); 88 pb.timer = setTimeout(function () { 89 pb.sendPing(); 90 }, pb.delay); 91 }, 92 error: function error(xmlhttp) { 93 var e = new Drupal.AjaxError(xmlhttp, pb.uri); 94 pb.displayError("<pre>".concat(e.message, "</pre>")); 95 } 96 }); 97 } 98 }, 99 displayError: function displayError(string) { 100 var error = $('<div class="messages messages--error"></div>').html(string); 101 $(this.element).before(error).hide(); 102 if (this.errorCallback) { 103 this.errorCallback(this); 104 } 105 } 106 }); 107})(jQuery, Drupal);; 108/** 109* DO NOT EDIT THIS FILE. 110* See the following change record for more information, 111* https://www.drupal.org/node/2815083 112* @preserve 113**/ 114(function ($, once) {
115 var deprecatedMessageSuffix = "is deprecated in Drupal 9.3.0 and will be removed in Drupal 10.0.0. Use the core/once library instead. See https://www.drupal.org/node/3158256"; 116 var originalJQOnce = $.fn.once; 117 var originalJQRemoveOnce = $.fn.removeOnce; 118 $.fn.once = function jQueryOnce(id) { 119 Drupal.deprecationError({ 120 message: "jQuery.once() ".concat(deprecatedMessageSuffix) 121 }); 122 return originalJQOnce.apply(this, [id]); 123 }; 124 $.fn.removeOnce = function jQueryRemoveOnce(id) { 125 Drupal.deprecationError({ 126 message: "jQuery.removeOnce() ".concat(deprecatedMessageSuffix) 127 }); 128 return originalJQRemoveOnce.apply(this, [id]); 129 }; 130 var drupalOnce = once; 131 function augmentedOnce(id, selector, context) { 132 originalJQOnce.apply($(selector, context), [id]); 133 return drupalOnce(id, selector, context); 134 } 135 function remove(id, selector, context) { 136 originalJQRemoveOnce.apply($(selector, context), [id]); 137 return drupalOnce.remove(id, selector, context); 138 } 139 window.once = Object.assign(augmentedOnce, drupalOnce, { 140 remove: remove 141 }); 142})(jQuery, once);; 143loadjs=function(){var h=function(){},c={},u={},f={};function o(e,n){if(e){var r=f[e];if(u[e]=n,r)for(;r.length;)r[0](e,n),r.splice(0,1)}}function l(e,n){e.call&&(e={success:e}),n.length?(e.error||h)(n):(e.success||h)(e)}function d(r,t,s,i){var c,o,e=document,n=s.async,u=(s.numRetries||0)+1,f=s.before||h,l=r.replace(/[\?|#].*$/,""),a=r.replace(/^(css|img)!/,"");i=i||0,/(^css!|\.css$)/.test(l)?((o=e.createElement("link")).rel="stylesheet",o.href=a,(c="hideFocus"in o)&&o.relList&&(c=0,o.rel="preload",o.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(l)?(o=e.createElement("img")).src=a:((o=e.createElement("script")).src=r,o.async=void 0===n||n),!(o.onload=o.onerror=o.onbeforeload=function(e){var n=e.type[0];if(c)try{o.sheet.cssText.length||(n="e")}catch(e){18!=e.code&&(n="e")}if("e"==n){if((i+=1)<u)return d(r,t,s,i)}else if("preload"==o.rel&&"style"==o.as)return o.rel="stylesheet";t(r,n,e.defaultPrevented)})!==f(r,o)&&e.head.appendChild(o)}function r(e,n,r){var t,s;if(n&&n.trim&&(t=n),s=(t?r:n)||{},t){if(t in c)throw"LoadJS";c[t]=!0}function i(n,r){!function(e,t,n){var r,s,i=(e=e.push?e:[e]).length,c=i,o=[];for(r=function(e,n,r){if("e"==n&&o.push(e),"b"==n){if(!r)return;o.push(e)}--i||t(o)},s=0;s<c;s++)d(e[s],r,n)}(e,function(e){l(s,e),n&&l({success:n,error:r},e),o(t,e)},s)}if(s.returnPromise)return new Promise(i);i()}return r.ready=function(e,n){return function(e,r){e=e.push?e:[e];var n,t,s,i=[],c=e.length,o=c;
143for(n=function(e,n){n.length&&i.push(e),--o||r(i)};c--;)t=e[c],(s=u[t])?n(t,s):(f[t]=f[t]||[]).push(n)}(e,function(e){l(n,e)}),r},r.done=function(e){o(e,[])},r.reset=function(){c={},u={},f={}},r.isDefined=function(e){return e in c},r}();; 144/** 145* DO NOT EDIT THIS FILE. 146* See the following change record for more information, 147* https://www.drupal.org/node/2815083 148* @preserve 149**/ 150(function (Drupal) { 151 Drupal.behaviors.responsiveImageAJAX = { 152 attach: function attach() { 153 if (window.picturefill) { 154 window.picturefill(); 155 } 156 } 157 }; 158})(Drupal);; 159/** 160* DO NOT EDIT THIS FILE. 161* See the following change record for more information, 162* https://www.drupal.org/node/2815083 163* @preserve 164**/ 165function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } 166function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 167function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 168function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } 169function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } 170function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 171(function ($, window, Drupal, drupalSettings, loadjs, _ref) { 172 var isFocusable = _ref.isFocusable, 173 tabbable = _ref.tabbable; 174 Drupal.behaviors.AJAX = { 175 attach: function attach(context, settings) { 176 function loadAjaxBehavior(base) { 177 var elementSettings = settings.ajax[base]; 178 if (typeof elementSettings.selector === 'undefined') { 179 elementSettings.selector = "#".concat(base); 180 } 181 once('drupal-ajax', $(elementSettings.selector)).forEach(function (el) { 182 elementSettings.element = el; 183 elementSettings.base = base; 184 Drupal.ajax(elementSettings); 185 }); 186 } 187 Object.keys(settings.ajax || {}).forEach(function (base) { 188 return loadAjaxBehavior(base); 189 }); 190 Drupal.ajax.bindAjaxLinks(document.body); 191 once('ajax', '.use-ajax-submit').forEach(function (el) { 192 var elementSettings = {}; 193 elementSettings.url = $(el.form).attr('action'); 194 elementSettings.setClick = true; 195 elementSettings.event = 'click'; 196 elementSettings.progress = { 197 type: 'throbber' 198 }; 199 elementSettings.base = el.id; 200 elementSettings.element = el; 201 Drupal.ajax(elementSettings); 202 }); 203 }, 204 detach: function detach(context, settings, trigger) { 205 if (trigger === 'unload') { 206 Drupal.ajax.expired().forEach(function (instance) { 207 Drupal.ajax.instances[instance.instanceIndex] = null; 208 }); 209 } 210 } 211 }; 212 Drupal.AjaxError = function (xmlhttp, uri, customMessage) { 213 var statusCode; 214 var statusText; 215 var responseText; 216 if (xmlhttp.status) { 217 statusCode = "\n".concat(Drupal.t('An AJAX HTTP error occurred.'), "\n").concat(Drupal.t('HTTP Result Code: !status', { 218 '!status': xmlhttp.status 219 })); 220 } else { 221 statusCode = "\n".concat(Drupal.t('An AJAX HTTP request terminated abnormally.')); 222 } 223 statusCode += "\n".concat(Drupal.t('Debugging information follows.')); 224 var pathText = "\n".concat(Drupal.t('Path: !uri', { 225 '!uri': uri 226 })); 227 statusText = ''; 228 try { 229 statusText = "\n".concat(Drupal.t('StatusText: !statusText', { 230 '!statusText': xmlhttp.statusText.trim() 231 })); 232 } catch (e) {} 233 responseText = ''; 234 try { 235 responseText = "\n".concat(Drupal.t('ResponseText: !responseText', { 236 '!responseText': xmlhttp.responseText.trim() 237 })); 238 } catch (e) {} 239 responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, ''); 240 responseText = responseText.replace(/[\n]+\s+/g, '\n'); 241 var readyStateText = xmlhttp.status === 0 ? "\n".concat(Drupal.t('ReadyState: !readyState', { 242 '!readyState': xmlhttp.readyState 243 })) : ''; 244 customMessage = customMessage ? "\n".concat(Drupal.t('CustomMessage: !customMessage', { 245 '!customMessage': customMessage 246 })) : ''; 247 this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText; 248 this.name = 'AjaxError'; 249 }; 250 Drupal.AjaxError.prototype = new Error(); 251 Drupal.AjaxError.prototype.constructor = Drupal.AjaxError; 252 Drupal.ajax = function (settings) { 253 if (arguments.length !== 1) { 254 throw new Error('Drupal.ajax() function must be called with one configuration object only'); 255 } 256 var base = settings.base || false; 257 var element = settings.element || false; 258 delete settings.base; 259 delete settings.element; 260 if (!settings.progress && !element) { 261 settings.progress = false;
262 } 263 var ajax = new Drupal.Ajax(base, element, settings); 264 ajax.instanceIndex = Drupal.ajax.instances.length; 265 Drupal.ajax.instances.push(ajax); 266 return ajax; 267 }; 268 Drupal.ajax.instances = []; 269 Drupal.ajax.expired = function () { 270 return Drupal.ajax.instances.filter(function (instance) { 271 return instance && instance.element !== false && !document.body.contains(instance.element); 272 }); 273 }; 274 Drupal.ajax.bindAjaxLinks = function (element) { 275 once('ajax', '.use-ajax', element).forEach(function (ajaxLink) { 276 var $linkElement = $(ajaxLink); 277 var elementSettings = { 278 progress: { 279 type: 'throbber' 280 }, 281 dialogType: $linkElement.data('dialog-type'), 282 dialog: $linkElement.data('dialog-options'), 283 dialogRenderer: $linkElement.data('dialog-renderer'), 284 base: $linkElement.attr('id'), 285 element: ajaxLink 286 }; 287 var href = $linkElement.attr('href'); 288 if (href) { 289 elementSettings.url = href; 290 elementSettings.event = 'click'; 291 } 292 Drupal.ajax(elementSettings); 293 }); 294 }; 295 Drupal.Ajax = function (base, element, elementSettings) { 296 var defaults = { 297 event: element ? 'mousedown' : null, 298 keypress: true, 299 selector: base ? "#".concat(base) : null, 300 effect: 'none', 301 speed: 'none', 302 method: 'replaceWith', 303 progress: { 304 type: 'throbber', 305 message: Drupal.t('Please wait...') 306 }, 307 submit: { 308 js: true 309 } 310 }; 311 $.extend(this, defaults, elementSettings); 312 this.commands = new Drupal.AjaxCommands(); 313 this.instanceIndex = false; 314 if (this.wrapper) { 315 this.wrapper = "#".concat(this.wrapper); 316 } 317 this.element = element; 318 this.element_settings = elementSettings; 319 this.elementSettings = elementSettings; 320 if (this.element && this.element.form) { 321 this.$form = $(this.element.form); 322 } 323 if (!this.url) { 324 var $element = $(this.element); 325 if ($element.is('a')) { 326 this.url = $element.attr('href'); 327 } else if (this.element && element.form) { 328 this.url = this.$form.attr('action'); 329 } 330 } 331 var originalUrl = this.url; 332 this.url = this.url.replace(/\/nojs(\/|$|\?|#)/, '/ajax$1'); 333 if (drupalSettings.ajaxTrustedUrl[originalUrl]) { 334 drupalSettings.ajaxTrustedUrl[this.url] = true; 335 } 336 var ajax = this; 337 ajax.options = { 338 url: ajax.url, 339 data: ajax.submit, 340 isInProgress: function isInProgress() { 341 return ajax.ajaxing; 342 }, 343 beforeSerialize: function beforeSerialize(elementSettings, options) { 344 return ajax.beforeSerialize(elementSettings, options); 345 }, 346 beforeSubmit: function beforeSubmit(formValues, elementSettings, options) { 347 ajax.ajaxing = true; 348 return ajax.beforeSubmit(formValues, elementSettings, options); 349 }, 350 beforeSend: function beforeSend(xmlhttprequest, options) { 351 ajax.ajaxing = true; 352 return ajax.beforeSend(xmlhttprequest, options); 353 }, 354 success: function success(response, status, xmlhttprequest) { 355 var _this = this; 356 if (typeof response === 'string') { 357 response = $.parseJSON(response); 358 } 359 if (response !== null && !drupalSettings.ajaxTrustedUrl[ajax.url]) { 360 if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') { 361 var customMessage = Drupal.t('The response failed verification so will not be processed.'); 362 return ajax.error(xmlhttprequest, ajax.url, customMessage); 363 } 364 } 365 return Promise.resolve(ajax.success(response, status)).then(function () { 366 ajax.ajaxing = false; 367 $(document).trigger('ajaxSuccess', [xmlhttprequest, _this]); 368 $(document).trigger('ajaxComplete', [xmlhttprequest, _this]); 369 if (--$.active === 0) { 370 $(document).trigger('ajaxStop'); 371 } 372 }); 373 }, 374 error: function error(xmlhttprequest, status, _error) { 375 ajax.ajaxing = false; 376 }, 377 complete: function complete(xmlhttprequest, status) { 378 if (status === 'error' || status === 'parsererror') { 379 return ajax.error(xmlhttprequest, ajax.url); 380 } 381 }, 382 dataType: 'json', 383 jsonp: false, 384 type: 'POST' 385 }; 386 if (elementSettings.dialog) { 387 ajax.options.data.dialogOptions = elementSettings.dialog; 388 } 389 if (ajax.options.url.indexOf('?') === -1) { 390 ajax.options.url += '?'; 391 } else { 392 ajax.options.url += '&'; 393 } 394 var wrapper = "drupal_".concat(elementSettings.dialogType || 'ajax'); 395 if (elementSettings.dialogRenderer) { 396 wrapper += ".".concat(elementSettings.dialogRenderer); 397 } 398 ajax.options.url += "".concat(Drupal.ajax.WRAPPER_FORMAT, "=").concat(wrapper); 399 $(ajax.element).on(elementSettings.event, function (event) { 400 if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) { 401 throw new Error(Drupal.t('The callback URL is not local and n
401ot trusted: !url', { 402 '!url': ajax.url 403 })); 404 } 405 return ajax.eventResponse(this, event); 406 }); 407 if (elementSettings.keypress) { 408 $(ajax.element).on('keypress', function (event) { 409 return ajax.keypressResponse(this, event); 410 }); 411 } 412 if (elementSettings.prevent) { 413 $(ajax.element).on(elementSettings.prevent, false); 414 } 415 }; 416 Drupal.ajax.WRAPPER_FORMAT = '_wrapper_format'; 417 Drupal.Ajax.AJAX_REQUEST_PARAMETER = '_drupal_ajax'; 418 Drupal.Ajax.prototype.execute = function () { 419 if (this.ajaxing) { 420 return; 421 } 422 try { 423 this.beforeSerialize(this.element, this.options); 424 return $.ajax(this.options); 425 } catch (e) { 426 this.ajaxing = false; 427 window.alert("An error occurred while attempting to process ".concat(this.options.url, ": ").concat(e.message)); 428 return $.Deferred().reject(); 429 } 430 }; 431 Drupal.Ajax.prototype.keypressResponse = function (element, event) { 432 var ajax = this; 433 if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') { 434 event.preventDefault(); 435 event.stopPropagation(); 436 $(element).trigger(ajax.elementSettings.event); 437 } 438 }; 439 Drupal.Ajax.prototype.eventResponse = function (element, event) { 440 event.preventDefault(); 441 event.stopPropagation(); 442 var ajax = this; 443 if (ajax.ajaxing) { 444 return; 445 } 446 try { 447 if (ajax.$form) { 448 if (ajax.setClick) { 449 element.form.clk = element; 450 } 451 ajax.$form.ajaxSubmit(ajax.options); 452 } else { 453 ajax.beforeSerialize(ajax.element, ajax.options); 454 $.ajax(ajax.options); 455 } 456 } catch (e) { 457 ajax.ajaxing = false; 458 window.alert("An error occurred while attempting to process ".concat(ajax.options.url, ": ").concat(e.message)); 459 } 460 }; 461 Drupal.Ajax.prototype.beforeSerialize = function (element, options) { 462 if (this.$form && document.body.contains(this.$form.get(0))) { 463 var settings = this.settings || drupalSettings; 464 Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize'); 465 } 466 options.data[Drupal.Ajax.AJAX_REQUEST_PARAMETER] = 1; 467 var pageState = drupalSettings.ajaxPageState; 468 options.data['ajax_page_state[theme]'] = pageState.theme; 469 options.data['ajax_page_state[theme_token]'] = pageState.theme_token; 470 options.data['ajax_page_state[libraries]'] = pageState.libraries; 471 }; 472 Drupal.Ajax.prototype.beforeSubmit = function (formValues, element, options) {}; 473 Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) { 474 if (this.$form) { 475 options.extraData = options.extraData || {}; 476 options.extraData.ajax_iframe_upload = '1'; 477 var v = $.fieldValue(this.element); 478 if (v !== null) { 479 options.extraData[this.element.name] = v; 480 } 481 } 482 $(this.element).prop('disabled', true); 483 if (!this.progress || !this.progress.type) { 484 return; 485 } 486 var progressIndicatorMethod = "setProgressIndicator".concat(this.progress.type.slice(0, 1).toUpperCase()).concat(this.progress.type.slice(1).toLowerCase()); 487 if (progressIndicatorMethod in this && typeof this[progressIndicatorMethod] === 'function') { 488 this[progressIndicatorMethod].call(this); 489 } 490 }; 491 Drupal.theme.ajaxProgressThrobber = function (message) { 492 var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : ''; 493 var throbber = '<div class="throbber"> </div>'; 494 return "<div class=\"ajax-progress ajax-progress-throbber\">".concat(throbber).concat(messageMarkup, "</div>"); 495 }; 496 Drupal.theme.ajaxProgressIndicatorFullscreen = function () { 497 return '<div class="ajax-progress ajax-progress-fullscreen"> </div>'; 498 }; 499 Drupal.theme.ajaxProgressMessage = function (message) { 500 return "<div class=\"message\">".concat(message, "</div>"); 501 }; 502 Drupal.theme.ajaxProgressBar = function ($element) { 503 return $('<div class="ajax-progress ajax-progress-bar"></div>').append($element); 504 }; 505 Drupal.Ajax.prototype.setProgressIndicatorBar = function () { 506 var progressBar = new Drupal.ProgressBar("ajax-progress-".concat(this.element.i
506d), $.noop, this.progress.method, $.noop); 507 if (this.progress.message) { 508 progressBar.setProgress(-1, this.progress.message); 509 } 510 if (this.progress.url) { 511 progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500); 512 } 513 this.progress.element = $(Drupal.theme('ajaxProgressBar', progressBar.element)); 514 this.progress.object = progressBar; 515 $(this.element).after(this.progress.element); 516 }; 517 Drupal.Ajax.prototype.setProgressIndicatorThrobber = function () { 518 this.progress.element = $(Drupal.theme('ajaxProgressThrobber', this.progress.message)); 519 $(this.element).after(this.progress.element); 520 }; 521 Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () { 522 this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen')); 523 $('body').append(this.progress.element); 524 }; 525 Drupal.Ajax.prototype.commandExecutionQueue = function (response, status) { 526 var _this2 = this; 527 var ajaxCommands = this.commands; 528 return Object.keys(response || {}).reduce(function (executionQueue, key) { 529 return executionQueue.then(function () { 530 var command = response[key].command; 531 if (command && ajaxCommands[command]) { 532 return ajaxCommands[command](_this2, response[key], status); 533 } 534 }); 535 }, Promise.resolve()); 536 }; 537 Drupal.Ajax.prototype.success = function (response, status) { 538 var _this3 = this; 539 if (this.progress.element) { 540 $(this.progress.element).remove(); 541 } 542 if (this.progress.object) { 543 this.progress.object.stopMonitoring(); 544 } 545 $(this.element).prop('disabled', false); 546 var elementParents = $(this.element).parents('[data-drupal-selector]').addBack().toArray(); 547 var focusChanged = Object.keys(response || {}).some(function (key) { 548 var _response$key = response[key], 549 command = _response$key.command, 550 method = _response$key.method; 551 return command === 'focusFirst' || command === 'invoke' && method === 'focus'; 552 }); 553 return this.commandExecutionQueue(response, status).then(function () { 554 if (!focusChanged && _this3.element && !$(_this3.element).data('disable-refocus')) { 555 var target = false;
556 for (var n = elementParents.length - 1; !target && n >= 0; n--) { 557 target = document.querySelector("[data-drupal-selector=\"".concat(elementParents[n].getAttribute('data-drupal-selector'), "\"]")); 558 } 559 if (target) { 560 $(target).trigger('focus'); 561 } 562 } 563 if (_this3.$form && document.body.contains(_this3.$form.get(0))) { 564 var settings = _this3.settings || drupalSettings; 565 Drupal.attachBehaviors(_this3.$form.get(0), settings); 566 } 567 _this3.settings = null; 568 }).catch(function (error) { 569 return console.error(Drupal.t('An error occurred during the execution of the Ajax response: !error', { 570 '!error': error 571 })); 572 }); 573 }; 574 Drupal.Ajax.prototype.getEffect = function (response) { 575 var type = response.effect || this.effect; 576 var speed = response.speed || this.speed; 577 var effect = {}; 578 if (type === 'none') { 579 effect.showEffect = 'show'; 580 effect.hideEffect = 'hide'; 581 effect.showSpeed = ''; 582 } else if (type === 'fade') { 583 effect.showEffect = 'fadeIn'; 584 effect.hideEffect = 'fadeOut'; 585 effect.showSpeed = speed; 586 } else { 587 effect.showEffect = "".concat(type, "Toggle"); 588 effect.hideEffect = "".concat(type, "Toggle"); 589 effect.showSpeed = speed; 590 } 591 return effect; 592 }; 593 Drupal.Ajax.prototype.error = function (xmlhttprequest, uri, customMessage) { 594 if (this.progress.element) { 595 $(this.progress.element).remove(); 596 } 597 if (this.progress.object) { 598 this.progress.object.stopMonitoring(); 599 } 600 $(this.wrapper).show(); 601 $(this.element).prop('disabled', false); 602 if (this.$form && document.body.contains(this.$form.get(0))) { 603 var settings = this.settings || drupalSettings; 604 Drupal.attachBehaviors(this.$form.get(0), settings); 605 } 606 throw new Drupal.AjaxError(xmlhttprequest, uri, customMessage); 607 }; 608 Drupal.theme.ajaxWrapperNewContent = function ($newContent, ajax, response) { 609 return (response.effect || ajax.effect) !== 'none' && $newContent.filter(function (i) { 610 return !($newContent[i].nodeName === '#comment' || $newContent[i].nodeName === '#text' && /^(\s|\n|\r)*$/.test($newContent[i].textContent)); 611 }).length > 1 ? Drupal.theme('ajaxWrapperMultipleRootElements', $newContent) : $newContent; 612 }; 613 Drupal.theme.ajaxWrapperMultipleRootElements = function ($elements) { 614 return $('<div></div>').append($elements); 615 }; 616 Drupal.AjaxCommands = function () {}; 617 Drupal.AjaxCommands.prototype = { 618 insert: function insert(ajax, response) { 619 var $wrapper = response.selector ? $(response.selector) : $(ajax.wrapper); 620 var method = response.method || ajax.method; 621 var effect = ajax.getEffect(response); 622 var settings = response.settings || ajax.settings || drupalSettings; 623 var $newContent = $($.parseHTML(response.data, document, true)); 624 $newContent = Drupal.theme('ajaxWrapperNewContent', $newContent, ajax, response); 625 switch (method) { 626 case 'html': 627 case 'replaceWith': 628 case 'replaceAll': 629 case 'empty': 630 case 'remove': 631 Drupal.detachBehaviors($wrapper.get(0), settings); 632 break; 633 default: 634 break; 635 } 636 $wrapper[method]($newContent); 637 if (effect.showEffect !== 'show') { 638 $newContent.hide(); 639 } 640 var $ajaxNewContent = $newContent.find('.ajax-new-content'); 641 if ($ajaxNewContent.length) { 642 $ajaxNewContent.hide(); 643 $newContent.show(); 644 $ajaxNewContent[effect.showEffect](effect.showSpeed); 645 } else if (effect.showEffect !== 'show') { 646 $newContent[effect.showEffect](effect.showSpeed); 647 } 648 if ($newContent.parents('html').length) { 649 $newContent.each(function (index, element) { 650 if (element.nodeType === Node.ELEMENT_NODE) { 651 Drupal.attachBehaviors(element, settings); 652 } 653 }); 654 } 655 }, 656 remove: function remove(ajax, response, status) { 657 var settings = response.settings || ajax.settings || drupalSettings; 658 $(response.selector).each(function () { 659 Drupal.detachBehaviors(this, settings); 660 }).remove(); 661 }, 662 changed: function changed(ajax, response, status) { 663 var $element = $(response.selector); 664 if (!$element.hasClass('ajax-changed')) { 665 $element.addClass('ajax-changed'); 666 if (response.asterisk) { 667 $element.find(response.asterisk).append(" <abbr class=\"ajax-changed\" title=\"".concat(Drupal.t('Changed'), "\">*</abbr> ")); 668 } 669 } 670 }, 671 alert: function alert(ajax, response, status) { 672 window.alert(response.text); 673 }, 674 announce: function announce(ajax, response) { 675 if (response.priority) { 676 Drupal.announce(response.text, response.priority); 677 } else { 678 Drupal.announce(response.text); 679 } 680 }, 681 redirect: function redirect(ajax, response, status) { 682 window.location = response.url; 683 }, 684 css: function css(ajax, response, status) { 685 $(response.selector).css(response.argument); 686 }, 687 settings: function settings(ajax, response, status) { 688 var ajaxSettings = drupalSettings.ajax; 689 if (ajaxSettings) {
690 Drupal.ajax.expired().forEach(function (instance) { 691 if (instance.selector) { 692 var selector = instance.selector.replace('#', ''); 693 if (selector in ajaxSettings) { 694 delete ajaxSettings[selector]; 695 } 696 } 697 }); 698 } 699 if (response.merge) { 700 $.extend(true, drupalSettings, response.settings); 701 } else { 702 ajax.settings = response.settings; 703 } 704 }, 705 data: function data(ajax, response, status) { 706 $(response.selector).data(response.name, response.value); 707 }, 708 focusFirst: function focusFirst(ajax, response, status) { 709 var focusChanged = false; 710 var container = document.querySelector(response.selector); 711 if (container) { 712 var tabbableElements = tabbable(container); 713 if (tabbableElements.length) { 714 tabbableElements[0].focus(); 715 focusChanged = true; 716 } else if (isFocusable(container)) { 717 container.focus(); 718 focusChanged = true; 719 } 720 } 721 if (ajax.hasOwnProperty('element') && !focusChanged) { 722 ajax.element.focus(); 723 } 724 }, 725 invoke: function invoke(ajax, response, status) { 726 var $element = $(response.selector); 727 $element[response.method].apply($element, _toConsumableArray(response.args)); 728 }, 729 restripe: function restripe(ajax, response, status) { 730 $(response.selector).find('> tbody > tr:visible, > tr:visible').removeClass('odd even').filter(':even').addClass('odd').end().filter(':odd').addClass('even'); 731 }, 732 update_build_id: function update_build_id(ajax, response, status) { 733 document.querySelectorAll("input[name=\"form_build_id\"][value=\"".concat(response.old, "\"]")).forEach(function (item) { 734 item.value = response.new; 735 }); 736 }, 737 add_css: function add_css(ajax, response, status) { 738 $('head').prepend(response.data); 739 }, 740 message: function message(ajax, response) { 741 var messages = new Drupal.Message(document.querySelector(response.messageWrapperQuerySelector)); 742 if (response.clearPrevious) { 743 messages.clear(); 744 } 745 messages.add(response.message, response.messageOptions); 746 }, 747 add_js: function add_js(ajax, response, status) { 748 var parentEl = document.querySelector(response.selector || 'body'); 749 var settings = ajax.settings || drupalSettings; 750 var allUniqueBundleIds = response.data.map(function (script) { 751 var uniqueBundleId = script.src + ajax.instanceIndex; 752 loadjs(script.src, uniqueBundleId, { 753 async: false, 754 before: function before(path, scriptEl) { 755 Object.keys(script).forEach(function (attributeKey) { 756 scriptEl.setAttribute(attributeKey, script[attributeKey]); 757 }); 758 parentEl.appendChild(scriptEl); 759 return false; 760 } 761 }); 762 return uniqueBundleId; 763 }); 764 return new Promise(function (resolve, reject) { 765 loadjs.ready(allUniqueBundleIds, { 766 success: function success() { 767 Drupal.attachBehaviors(parentEl, settings); 768 resolve(); 769 }, 770 error: function error(depsNotFound) { 771 var message = Drupal.t("The following files could not be loaded: @dependencies", { 772 '@dependencies': depsNotFound.join(', ') 773 }); 774 reject(message); 775 } 776 }); 777 }); 778 } 779 }; 780 var stopEvent = function stopEvent(xhr, settings) { 781 return xhr.getResponseHeader('X-Drupal-Ajax-Token') === '1' && settings.isInProgress && settings.isInProgress(); 782 }; 783 $.extend(true, $.event.special, { 784 ajaxSuccess: { 785 trigger: function trigger(event, xhr, settings) { 786 if (stopEvent(xhr, settings)) { 787 return false; 788 } 789 } 790 }, 791 ajaxComplete: { 792 trigger: function trigger(event, xhr, settings) { 793 if (stopEvent(xhr, settings)) { 794 $.active++; 795 return false; 796 } 797 } 798 } 799 }); 800})(jQuery, window, Drupal, drupalSettings, loadjs, window.tabbable);; 801/** 802* DO NOT EDIT THIS FILE. 803* See the following change record for more information, 804* https://www.drupal.org/node/2815083 805* @preserve 806**/ 807(function ($, Drupal, _ref) { 808 var isTabbable = _ref.isTabbable; 809 $.extend($.expr[':'], { 810 tabbable: function tabbable(element) { 811 Drupal.deprecationError({
812 message: 'The :tabbable selector is deprecated in Drupal 9.2.0 and will be removed in Drupal 11.0.0. Use the core/tabbable library instead. See https://www.drupal.org/node/3183730' 813 }); 814 if (element.tagName === 'SUMMARY' || element.tagName === 'DETAILS') { 815 var tabIndex = element.getAttribute('tabIndex'); 816 if (tabIndex === null || tabIndex < 0) { 817 return false; 818 } 819 } 820 return isTabbable(element); 821 } 822 }); 823})(jQuery, Drupal, window.tabbable);; 824/** 825* DO NOT EDIT THIS FILE. 826* See the following change record for more information, 827* https://www.drupal.org/node/2815083 828* @preserve 829**/ 830(function ($) { 831 var cachedScrollbarWidth = null; 832 var max = Math.max, 833 abs = Math.abs; 834 var regexHorizontal = /left|center|right/; 835 var regexVertical = /top|center|bottom/; 836 var regexOffset = /[+-]\d+(\.[\d]+)?%?/; 837 var regexPosition = /^\w+/; 838 var regexPercent = /%$/; 839 var _position = $.fn.position; 840 function getOffsets(offsets, width, height) { 841 return [parseFloat(offsets[0]) * (regexPercent.test(offsets[0]) ? width / 100 : 1), parseFloat(offsets[1]) * (regexPercent.test(offsets[1]) ? height / 100 : 1)]; 842 } 843 function parseCss(element, property) { 844 return parseInt($.css(element, property), 10) || 0; 845 } 846 function getDimensions(elem) { 847 var raw = elem[0]; 848 if (raw.nodeType === 9) { 849 return { 850 width: elem.width(), 851 height: elem.height(), 852 offset: { 853 top: 0, 854 left: 0 855 } 856 }; 857 } 858 if ($.isWindow(raw)) { 859 return { 860 width: elem.width(), 861 height: elem.height(), 862 offset: { 863 top: elem.scrollTop(), 864 left: elem.scrollLeft() 865 } 866 }; 867 } 868 if (raw.preventDefault) { 869 return { 870 width: 0, 871 height: 0, 872 offset: { 873 top: raw.pageY, 874 left: raw.pageX 875 } 876 }; 877 } 878 return { 879 width: elem.outerWidth(), 880 height: elem.outerHeight(), 881 offset: elem.offset() 882 }; 883 } 884 var collisions = { 885 fit: { 886 left: function left(position, data) { 887 var within = data.within; 888 var withinOffset = within.isWindow ? within.scrollLeft : within.offset.left; 889 var outerWidth = within.width; 890 var collisionPosLeft = position.left - data.collisionPosition.marginLeft; 891 var overLeft = withinOffset - collisionPosLeft; 892 var overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset; 893 var newOverRight; 894 if (data.collisionWidth > outerWidth) { 895 if (overLeft > 0 && overRight <= 0) { 896 newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; 897 position.left += overLeft - newOverRight; 898 } else if (overRight > 0 && overLeft <= 0) { 899 position.left = withinOffset; 900 } else if (overLeft > overRight) { 901 position.left = withinOffset + outerWidth - data.collisionWidth; 902 } else { 903 position.left = withinOffset; 904 } 905 } else if (overLeft > 0) { 906 position.left += overLeft; 907 } else if (overRight > 0) { 908 position.left -= overRight; 909 } else { 910 position.left = max(position.left - collisionPosLeft, position.left); 911 } 912 },
913 top: function top(position, data) { 914 var within = data.within; 915 var withinOffset = within.isWindow ? within.scrollTop : within.offset.top; 916 var outerHeight = data.within.height; 917 var collisionPosTop = position.top - data.collisionPosition.marginTop; 918 var overTop = withinOffset - collisionPosTop; 919 var overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset; 920 var newOverBottom; 921 if (data.collisionHeight > outerHeight) { 922 if (overTop > 0 && overBottom <= 0) { 923 newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; 924 position.top += overTop - newOverBottom; 925 } else if (overBottom > 0 && overTop <= 0) { 926 position.top = withinOffset; 927 } else if (overTop > overBottom) { 928 position.top = withinOffset + outerHeight - data.collisionHeight; 929 } else { 930 position.top = withinOffset; 931 } 932 } else if (overTop > 0) { 933 position.top += overTop; 934 } else if (overBottom > 0) { 935 position.top -= overBottom; 936 } else { 937 position.top = max(position.top - collisionPosTop, position.top); 938 } 939 } 940 }, 941 flip: { 942 left: function left(position, data) { 943 var within = data.within; 944 var withinOffset = within.offset.left + within.scrollLeft; 945 var outerWidth = within.width; 946 var offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left; 947 var collisionPosLeft = position.left - data.collisionPosition.marginLeft; 948 var overLeft = collisionPosLeft - offsetLeft; 949 var overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft; 950 var myOffset = data.my[0] === 'left' ? -data.elemWidth : data.my[0] === 'right' ? data.elemWidth : 0; 951 var atOffset = data.at[0] === 'left' ? data.targetWidth : data.at[0] === 'right' ? -data.targetWidth : 0; 952 var offset = -2 * data.offset[0]; 953 var newOverRight; 954 var newOverLeft; 955 if (overLeft < 0) { 956 newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; 957 if (newOverRight < 0 || newOverRight < abs(overLeft)) { 958 position.left += myOffset + atOffset + offset; 959 } 960 } else if (overRight > 0) { 961 newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; 962 if (newOverLeft > 0 || abs(newOverLeft) < overRight) { 963 position.left += myOffset + atOffset + offset; 964 } 965 } 966 },
967 top: function top(position, data) { 968 var within = data.within; 969 var withinOffset = within.offset.top + within.scrollTop; 970 var outerHeight = within.height; 971 var offsetTop = within.isWindow ? within.scrollTop : within.offset.top; 972 var collisionPosTop = position.top - data.collisionPosition.marginTop; 973 var overTop = collisionPosTop - offsetTop; 974 var overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop; 975 var top = data.my[1] === 'top'; 976 var myOffset = top ? -data.elemHeight : data.my[1] === 'bottom' ? data.elemHeight : 0; 977 var atOffset = data.at[1] === 'top' ? data.targetHeight : data.at[1] === 'bottom' ? -data.targetHeight : 0; 978 var offset = -2 * data.offset[1]; 979 var newOverTop; 980 var newOverBottom; 981 if (overTop < 0) { 982 newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; 983 if (newOverBottom < 0 || newOverBottom < abs(overTop)) { 984 position.top += myOffset + atOffset + offset; 985 } 986 } else if (overBottom > 0) { 987 newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; 988 if (newOverTop > 0 || abs(newOverTop) < overBottom) { 989 position.top += myOffset + atOffset + offset; 990 } 991 } 992 } 993 }, 994 flipfit: { 995 left: function left() { 996 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 997 args[_key] = arguments[_key]; 998 } 999 collisions.flip.left.apply(this, args); 1000 collisions.fit.left.apply(this, args); 1001 },
1002 top: function top() { 1003 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 1004 args[_key2] = arguments[_key2]; 1005 } 1006 collisions.flip.top.apply(this, args); 1007 collisions.fit.top.apply(this, args); 1008 } 1009 } 1010 }; 1011 $.position = { 1012 scrollbarWidth: function scrollbarWidth() { 1013 if (cachedScrollbarWidth !== undefined) { 1014 return cachedScrollbarWidth; 1015 } 1016 var div = $('<div ' + "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" + "<div style='height:100px;width:auto;'></div></div>"); 1017 var innerDiv = div.children()[0]; 1018 $('body').append(div); 1019 var w1 = innerDiv.offsetWidth; 1020 div.css('overflow', 'scroll'); 1021 var w2 = innerDiv.offsetWidth; 1022 if (w1 === w2) { 1023 w2 = div[0].clientWidth; 1024 } 1025 div.remove(); 1026 cachedScrollbarWidth = w1 - w2; 1027 return cachedScrollbarWidth; 1028 }, 1029 getScrollInfo: function getScrollInfo(within) { 1030 var overflowX = within.isWindow || within.isDocument ? '' : within.element.css('overflow-x'); 1031 var overflowY = within.isWindow || within.isDocument ? '' : within.element.css('overflow-y'); 1032 var hasOverflowX = overflowX === 'scroll' || overflowX === 'auto' && within.width < within.element[0].scrollWidth; 1033 var hasOverflowY = overflowY === 'scroll' || overflowY === 'auto' && within.height < within.element[0].scrollHeight; 1034 return { 1035 width: hasOverflowY ? $.position.scrollbarWidth() : 0, 1036 height: hasOverflowX ? $.position.scrollbarWidth() : 0 1037 }; 1038 }, 1039 getWithinInfo: function getWithinInfo(element) { 1040 var withinElement = $(element || window); 1041 var isWindow = $.isWindow(withinElement[0]); 1042 var isDocument = !!withinElement[0] && withinElement[0].nodeType === 9; 1043 var hasOffset = !isWindow && !isDocument; 1044 return { 1045 element: withinElement, 1046 isWindow: isWindow, 1047 isDocument: isDocument, 1048 offset: hasOffset ? $(element).offset() : { 1049 left: 0, 1050 top: 0 1051 }, 1052 scrollLeft: withinElement.scrollLeft(), 1053 scrollTop: withinElement.scrollTop(), 1054 width: withinElement.outerWidth(), 1055 height: withinElement.outerHeight() 1056 }; 1057 } 1058 }; 1059 $.fn.position = function (options) { 1060 if (!options || !options.of) { 1061 return _position.apply(this, arguments); 1062 } 1063 options = $.extend({}, options); 1064 var within = $.position.getWithinInfo(options.within); 1065 var scrollInfo = $.position.getScrollInfo(within); 1066 var collision = (options.collision || 'flip').split(' '); 1067 var offsets = {}; 1068 var target = typeof options.of === 'string' ? $(document).find(options.of) : $(options.of); 1069 var dimensions = getDimensions(target); 1070 var targetWidth = dimensions.width; 1071 var targetHeight = dimensions.height; 1072 var targetOffset = dimensions.offset; 1073 if (target[0].preventDefault) { 1074 options.at = 'left top'; 1075 } 1076 var basePosition = $.extend({}, targetOffset); 1077 $.each(['my', 'at'], function () { 1078 var pos = (options[this] || '').split(' '); 1079 if (pos.length === 1) { 1080 pos = regexHorizontal.test(pos[0]) ? pos.concat(['center']) : regexVertical.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center']; 1081 } 1082 pos[0] = regexHorizontal.test(pos[0]) ? pos[0] : 'center'; 1083 pos[1] = regexVertical.test(pos[1]) ? pos[1] : 'center'; 1084 var horizontalOffset = regexOffset.exec(pos[0]); 1085 var verticalOffset = regexOffset.exec(pos[1]); 1086 offsets[this] = [horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0]; 1087 options[this] = [regexPosition.exec(pos[0])[0], regexPosition.exec(pos[1])[0]]; 1088 }); 1089 if (collision.length === 1) { 1090 collision[1] = collision[0]; 1091 } 1092 if (options.at[0] === 'right') { 1093 basePosition.left += targetWidth; 1094 } else if (options.at[0] === 'center') { 1095 basePosition.left += targetWidth / 2; 1096 } 1097 if (options.at[1] === 'bottom') { 1098 basePosition.top += targetHeight; 1099 } else if (options.at[1] === 'center') { 1100 basePosition.top += targetHeight / 2; 1101 } 1102 var atOffset = getOffsets(offsets.at, targetWidth, targetHeight); 1103 basePosition.left += atOffset[0]; 1104 basePosition.top += atOffset[1]; 1105 return this.each(function () { 1106 var using; 1107 var elem = $(this); 1108 var elemWidth = elem.outerWidth(); 1109 var elemHeight = elem.outerHeight(); 1110 var marginLeft = parseCss(this, 'marginLeft'); 1111 var marginTop = parseCss(this, 'marginTop'); 1112 var collisionWidth = elemWidth + marginLeft + parseCss(this, 'marginRight') + scrollInfo.width; 1113 var collisionHeight = elemHeight + marginTop + parseCss(this, 'marginBottom') + scrollInfo.height; 1114 var position = $.extend({}, basePosition); 1115 var myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight()); 1116 if (options.my[0] === 'right') { 1117 position.left -= elemWidth; 1118 } else if (options.my[0] === 'center') { 1119 position.left -= elemWidth / 2; 1120 } 1121 if (options.my[1] === 'bottom') { 1122 position.top -= elemHeight; 1123 } else if (options.my[1] === 'center') { 1124 position.top -= elemHeight / 2; 1125 } 1126 position.left += myOffset[0]; 1127 position.top += myOffset[1]; 1128 var collisionPosition = { 1129 marginLeft: marginLeft, 1130 marginTop: marginTop 1131 }; 1132 $.each(['left', 'top'], function (i, dir) { 1133 if (collisions[collision[i]]) { 1134 collisions[collision[i]][dir](position, { 1135 targetWidth: targetWidth, 1136 targetHeight: targetHeight, 1137 elemWidth: elemWidth, 1138 elemHeight: elemHeight, 1139 collisionPosition: collisionPosition, 1140 collisionWidth: collisionWidth, 1141 collisionHeight: collisionHeight, 1142 offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]], 1143 my: options.my, 1144 at: options.at, 1145 within: within, 1146 elem: elem 1147 }); 1148 } 1149 }); 1150 if (options.using) { 1151 using = function using(props) { 1152 var left = targetOffset.left - position.left; 1153 var right = left + targetWidth - elemWidth; 1154 var top = targetOffset.top - position.top; 1155 var bottom = top + targetHeight - elemHeight; 1156 var feedback = { 1157 target: { 1158 element: target, 1159 left: targetOffset.left, 1160 top: targetOffset.top, 1161 width: targetWidth, 1162 height: targetHeight 1163 }, 1164 element: { 1165 element: elem, 1166 left: position.left, 1167 top: position.top, 1168 width: elemWidth, 1169 height: elemHeight 1170 }, 1171 horizontal: right < 0 ? 'left' : left > 0 ? 'right' : 'center', 1172 vertical: bottom < 0 ? 'top' : top > 0 ? 'bottom' : 'middle' 1173 }; 1174 if (targetWidth < elemWidth && abs(left + right) < targetWidth) { 1175 feedback.horizontal = 'center'; 1176 } 1177 if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) { 1178 feedback.vertical = 'middle'; 1179 } 1180 if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) { 1181 feedback.important = 'horizontal'; 1182 } else { 1183 feedback.important = 'vertical'; 1184 } 1185 options.using.call(this, props, feedback); 1186 }; 1187 } 1188 elem.offset($.extend(position, { 1189 using: using 1190 })); 1191 }); 1192 }; 1193 if (!$.hasOwnProperty('ui')) { 1194 $.ui = {}; 1195 } 1196 $.ui.position = collisions; 1197})(jQuery);; 1198/** 1199 * @file 1200 * Expands the behaviour of the default autocompletion. 1201 */ 1202 1203(function ($, Drupal, drupalSettings, once) { 1204 1205 'use strict'; 1206 1207 // As a safety precaution, bail if the Drupal Core autocomplete framework is 1208 // not present. 1209 if (!Drupal.autocomplete) { 1210 return; 1211 } 1212 1213 var autocomplete = {}; 1214 1215 /** 1216 * Retrieves the custom settings for an autocomplete-enabled input field. 1217 * 1218 * @param {HTMLElement} input 1219 * The input field. 1220 * @param {object} globalSettings
1221 * The object containing global settings. If none is passed, drupalSettings 1222 * is used instead. 1223 * 1224 * @return {object} 1225 * The effective settings for the given input fields, with defaults set if 1226 * applicable. 1227 */ 1228 autocomplete.getSettings = function (input, globalSettings) { 1229 globalSettings = globalSettings || drupalSettings || {}; 1230 // Set defaults for all known settings. 1231 var settings = { 1232 auto_submit: false, 1233 delay: 0, 1234 min_length: 1, 1235 selector: ':submit', 1236 }; 1237 var search = $(input).data('search-api-autocomplete-search'); 1238 if (search 1239 && globalSettings.search_api_autocomplete 1240 && globalSettings.search_api_autocomplete[search]) { 1241 $.extend(settings, globalSettings.search_api_autocomplete[search]); 1242 } 1243 return settings; 1244 }; 1245 1246 /** 1247 * Attaches our custom autocomplete settings to all affected fields. 1248 * 1249 * @type {Drupal~behavior} 1250 * 1251 * @prop {Drupal~behaviorAttach} attach 1252 * Attaches the autocomplete behaviors. 1253 */ 1254 Drupal.behaviors.searchApiAutocomplete = { 1255 attach: function (context, settings) { 1256 // Find all our fields with autocomplete settings. 1257 $(once('search-api-autocomplete', 1258 '.ui-autocomplete-input[data-search-api-autocomplete-search]', 1259 context)).each(function () { 1260 var uiAutocomplete = $(this).data('ui-autocomplete'); 1261 if (!uiAutocomplete) { 1262 return; 1263 } 1264 var $element = uiAutocomplete.menu.element; 1265 $element.data('search-api-autocomplete-input-id', this.id); 1266 $element.addClass('search-api-autocomplete-search'); 1267 var elementSettings = autocomplete.getSettings(this, settings); 1268 if (elementSettings['delay']) { 1269 uiAutocomplete.options['delay'] = elementSettings['delay']; 1270 } 1271 if (elementSettings['min_length']) { 1272 uiAutocomplete.options['minLength'] = elementSettings['min_length']; 1273 } 1274 // Override the "select" callback of the jQuery UI autocomplete. 1275 var oldSelect = uiAutocomplete.options.select; 1276 uiAutocomplete.options.select = function (event, ui) { 1277 // If this is a URL suggestion, instead of autocompleting we 1278 // redirect the user to that URL. 1279 if (ui.item.url) { 1280 location.href = ui.item.url; 1281 return false; 1282 } 1283 1284 var ret = oldSelect.apply(this, arguments); 1285 1286 // If auto-submit is enabled, submit the form. 1287 if (elementSettings['auto_submit'] && elementSettings['selector']) { 1288 $(elementSettings['selector'], this.form).trigger('click'); 1289 } 1290 1291 return ret; 1292 }; 1293 }); 1294 } 1295 }; 1296 1297 Drupal.SearchApiAutocomplete = autocomplete; 1298 1299})(jQuery, Drupal, drupalSettings, once); 1300;
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.