vendor: 4,574 bytes, lines 1-5
1/*! 2* tabbable 5.3.3 3* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE 4*/ 5!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.tabbable,o=e.tabbable={};t(o),o.noConflict=function(){return e.tabbable=n,o}}())}(this,(function(e){"use strict";var t=["input","select","textarea","a[href]","button","[tabindex]:not(slot)","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],n=t.join(","),o="undefined"==typeof Element,r=o?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,i=!o&&Element.prototype.getRootNode?function(e){return e.getRootNode()}:function(e){return e.ownerDocument},a=function(e,t,o){var i=Array.prototype.slice.apply(e.querySelectorAll(n));return t&&r.call(e,n)&&i.unshift(e),i=i.filter(o)},l=function e(t,o,i){for(var a=[],l=Array.from(t);l.length;){var u=l.shift();if("SLOT"===u.tagName){var c=u.assignedElements(),d=e(c.length?c:u.children,!0,i);i.flatten?a.push.apply(a,d):a.push({scope:u,candidates:d})}else{r.call(u,n)&&i.filter(u)&&(o||!t.includes(u))&&a.push(u);var f=u.shadowRoot||"function"==typeof i.getShadowRoot&&i.getShadowRoot(u),s=!i.shadowRootFilter||i.shadowRootFilter(u);if(f&&s){var p=e(!0===f?u.children:f.children,!0,i);i.flatten?a.push.apply(a,p):a.push({scope:u,candidates:p})}else l.unshift.apply(l,u.children)}}return a},u=function(e,t){return e.tabIndex<0&&(t||/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||e.isContentEditable)&&isNaN(parseInt(e.getAttribute("tabindex"),10))?0:e.tabIndex},c=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},d=function(e){return"INPUT"===e.tagName},f=function(e){return function(e){return d(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||i(e),o=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=o(window.CSS.escape(e.name));else try{t=o(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var r=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!r||r===e}(e)},s=function(e){var t=e.getBoundingClientRect(),n=t.width,o=t.height;return 0===n&&0===o},p=function(e,t){return!(t.disabled||function(e){return d(e)&&"hidden"===e.type}(t)||function(e,t){var n=t.displayCheck,o=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var a=r.call(e,"details>summary:first-of-type")?e.parentElement:e;if(r.call(a,"details:not([open]) *"))return!0;var l=i(e).host,u=(null==l?void 0:l.ownerDocument.contains(l))||e.ownerDocument.contains(e);if(n&&"full"!==n){if("non-zero-area"===n)return s(e)}else{if("function"==typeof o){for(var c=e;e;){var d=e.parentElement,f=i(e);if(d&&!d.shadowRoot&&!0===o(d))return s(e);e=e.assignedSlot?e.assignedSlot:d||f===e.ownerDocument?d:f.host}e=c}if(u)return!e.getClientRects().length}return!1}(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n<t.children.length;n++){var o=t.children.item(n);if("LEGEND"===o.tagName)return!!r.call(t,"fieldset[disabled] *")||!o.contains(e)}return!0}t=t.parentElement}return!1}(t))},h=function(e,t){return!(f(t)||u(t)<0||!p(e,t))},b=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},m=t.concat("iframe").join(",");e.focusable=function(e,t){return(t=t||{}).getShadowRoot?l([e],t.includeContainer,{filter:p.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):a(e,t.includeContainer,p.bind(null,t))},e.isFocusable=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==r.call(e,m)&&p(t,e)},e.isTabbable=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==r.call(e,n)&&h(t,e)},e.tabbable=function(e,t){return function e(t){var n=[],o=[];return t.forEach((function(t,r){var i=!!t.scope,a=i?t.scope:t,l=u(a,i),c=i?e(t.candidates):a;0===l?i?n.push.apply(n,c):n.push(a):o.push({documentOrder:r,tabIndex:l,item:t,
5isScope:i,content:c})})),o.sort(c).reduce((function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e}),[]).concat(n)}((t=t||{}).getShadowRoot?l([e],t.includeContainer,{filter:h.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:b}):a(e,t.includeContainer,h.bind(null,t)))},Object.defineProperty(e,"__esModule",{value:!0})})); 6 7; 8/** 9* DO NOT EDIT THIS FILE. 10* See the following change record for more information, 11* https://www.drupal.org/node/2815083 12* @preserve 13**/ 14(function ($, once) { 15 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"; 16 var originalJQOnce = $.fn.once; 17 var originalJQRemoveOnce = $.fn.removeOnce; 18 $.fn.once = function jQueryOnce(id) { 19 Drupal.deprecationError({ 20 message: "jQuery.once() ".concat(deprecatedMessageSuffix) 21 }); 22 return originalJQOnce.apply(this, [id]); 23 }; 24 $.fn.removeOnce = function jQueryRemoveOnce(id) { 25 Drupal.deprecationError({ 26 message: "jQuery.removeOnce() ".concat(deprecatedMessageSuffix) 27 }); 28 return originalJQRemoveOnce.apply(this, [id]); 29 }; 30 var drupalOnce = once; 31 function augmentedOnce(id, selector, context) { 32 originalJQOnce.apply($(selector, context), [id]); 33 return drupalOnce(id, selector, context); 34 } 35 function remove(id, selector, context) { 36 originalJQRemoveOnce.apply($(selector, context), [id]); 37 return drupalOnce.remove(id, selector, context); 38 } 39 window.once = Object.assign(augmentedOnce, drupalOnce, { 40 remove: remove 41 }); 42})(jQuery, once);; 43/*! js-cookie v3.0.1 | MIT */ 44!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}return function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(o[u]=n.read(c,u),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})})); 45; 46/** 47* DO NOT EDIT THIS FILE. 48* See the following change record for more information, 49* https://www.drupal.org/node/2815083 50* @preserve 51**/ 52(function ($, Drupal) { 53 Drupal.theme.progressBar = function (id) { 54 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>'; 55 }; 56 Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) { 57 this.id = id; 58 this.method = method || 'GET'; 59 this.updateCallback = updateCallback; 60 this.errorCallback = errorCallback;
61 this.element = $(Drupal.theme('progressBar', id)); 62 }; 63 $.extend(Drupal.ProgressBar.prototype, { 64 setProgress: function setProgress(percentage, message, label) { 65 if (percentage >= 0 && percentage <= 100) { 66 $(this.element).find('div.progress__bar').css('width', "".concat(percentage, "%")); 67 $(this.element).find('div.progress__percentage').html("".concat(percentage, "%")); 68 } 69 $('div.progress__description', this.element).html(message); 70 $('div.progress__label', this.element).html(label); 71 if (this.updateCallback) { 72 this.updateCallback(percentage, message, this); 73 } 74 }, 75 startMonitoring: function startMonitoring(uri, delay) { 76 this.delay = delay; 77 this.uri = uri; 78 this.sendPing(); 79 }, 80 stopMonitoring: function stopMonitoring() { 81 clearTimeout(this.timer); 82 this.uri = null; 83 }, 84 sendPing: function sendPing() { 85 if (this.timer) { 86 clearTimeout(this.timer); 87 } 88 if (this.uri) { 89 var pb = this; 90 var uri = this.uri; 91 if (uri.indexOf('?') === -1) { 92 uri += '?'; 93 } else { 94 uri += '&'; 95 } 96 uri += '_format=json'; 97 $.ajax({ 98 type: this.method, 99 url: uri, 100 data: '', 101 dataType: 'json', 102 success: function success(progress) { 103 if (progress.status === 0) { 104 pb.displayError(progress.data); 105 return; 106 } 107 pb.setProgress(progress.percentage, progress.message, progress.label); 108 pb.timer = setTimeout(function () { 109 pb.sendPing(); 110 }, pb.delay); 111 }, 112 error: function error(xmlhttp) { 113 var e = new Drupal.AjaxError(xmlhttp, pb.uri); 114 pb.displayError("<pre>".concat(e.message, "</pre>")); 115 } 116 }); 117 } 118 }, 119 displayError: function displayError(string) { 120 var error = $('<div class="messages messages--error"></div>').html(string); 121 $(this.element).before(error).hide(); 122 if (this.errorCallback) { 123 this.errorCallback(this); 124 } 125 } 126 }); 127})(jQuery, Drupal);; 128loadjs=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;
128for(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}();; 129/** 130* DO NOT EDIT THIS FILE. 131* See the following change record for more information, 132* https://www.drupal.org/node/2815083 133* @preserve 134**/ 135function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } 136function _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."); } 137function _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); } 138function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } 139function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } 140function _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; } 141(function ($, window, Drupal, drupalSettings, loadjs, _ref) { 142 var isFocusable = _ref.isFocusable, 143 tabbable = _ref.tabbable; 144 Drupal.behaviors.AJAX = { 145 attach: function attach(context, settings) { 146 function loadAjaxBehavior(base) { 147 var elementSettings = settings.ajax[base]; 148 if (typeof elementSettings.selector === 'undefined') { 149 elementSettings.selector = "#".concat(base); 150 } 151 once('drupal-ajax', $(elementSettings.selector)).forEach(function (el) { 152 elementSettings.element = el; 153 elementSettings.base = base; 154 Drupal.ajax(elementSettings); 155 }); 156 } 157 Object.keys(settings.ajax || {}).forEach(function (base) { 158 return loadAjaxBehavior(base); 159 }); 160 Drupal.ajax.bindAjaxLinks(document.body); 161 once('ajax', '.use-ajax-submit').forEach(function (el) { 162 var elementSettings = {}; 163 elementSettings.url = $(el.form).attr('action'); 164 elementSettings.setClick = true; 165 elementSettings.event = 'click'; 166 elementSettings.progress = { 167 type: 'throbber' 168 }; 169 elementSettings.base = el.id; 170 elementSettings.element = el; 171 Drupal.ajax(elementSettings); 172 }); 173 }, 174 detach: function detach(context, settings, trigger) { 175 if (trigger === 'unload') { 176 Drupal.ajax.expired().forEach(function (instance) { 177 Drupal.ajax.instances[instance.instanceIndex] = null; 178 }); 179 } 180 } 181 }; 182 Drupal.AjaxError = function (xmlhttp, uri, customMessage) { 183 var statusCode; 184 var statusText; 185 var responseText; 186 if (xmlhttp.status) { 187 statusCode = "\n".concat(Drupal.t('An AJAX HTTP error occurred.'), "\n").concat(Drupal.t('HTTP Result Code: !status', { 188 '!status': xmlhttp.status 189 })); 190 } else { 191 statusCode = "\n".concat(Drupal.t('An AJAX HTTP request terminated abnormally.')); 192 } 193 statusCode += "\n".concat(Drupal.t('Debugging information follows.')); 194 var pathText = "\n".concat(Drupal.t('Path: !uri', { 195 '!uri': uri 196 })); 197 statusText = ''; 198 try { 199 statusText = "\n".concat(Drupal.t('StatusText: !statusText', { 200 '!statusText': xmlhttp.statusText.trim() 201 })); 202 } catch (e) {} 203 responseText = ''; 204 try { 205 responseText = "\n".concat(Drupal.t('ResponseText: !responseText', { 206 '!responseText': xmlhttp.responseText.trim() 207 })); 208 } catch (e) {} 209 responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, ''); 210 responseText = responseText.replace(/[\n]+\s+/g, '\n'); 211 var readyStateText = xmlhttp.status === 0 ? "\n".concat(Drupal.t('ReadyState: !readyState', { 212 '!readyState': xmlhttp.readyState 213 })) : ''; 214 customMessage = customMessage ? "\n".concat(Drupal.t('CustomMessage: !customMessage', { 215 '!customMessage': customMessage 216 })) : ''; 217 this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText; 218 this.name = 'AjaxError'; 219 }; 220 Drupal.AjaxError.prototype = new Error(); 221 Drupal.AjaxError.prototype.constructor = Drupal.AjaxError; 222 Drupal.ajax = function (settings) { 223 if (arguments.length !== 1) { 224 throw new Error('Drupal.ajax() function must be called with one configuration object only'); 225 } 226 var base = settings.base || false; 227 var element = settings.element || false; 228 delete settings.base; 229 delete settings.element; 230 if (!settings.progress && !element) { 231 settings.progress = false;
232 } 233 var ajax = new Drupal.Ajax(base, element, settings); 234 ajax.instanceIndex = Drupal.ajax.instances.length; 235 Drupal.ajax.instances.push(ajax); 236 return ajax; 237 }; 238 Drupal.ajax.instances = []; 239 Drupal.ajax.expired = function () { 240 return Drupal.ajax.instances.filter(function (instance) { 241 return instance && instance.element !== false && !document.body.contains(instance.element); 242 }); 243 }; 244 Drupal.ajax.bindAjaxLinks = function (element) { 245 once('ajax', '.use-ajax', element).forEach(function (ajaxLink) { 246 var $linkElement = $(ajaxLink); 247 var elementSettings = { 248 progress: { 249 type: 'throbber' 250 }, 251 dialogType: $linkElement.data('dialog-type'), 252 dialog: $linkElement.data('dialog-options'), 253 dialogRenderer: $linkElement.data('dialog-renderer'), 254 base: $linkElement.attr('id'), 255 element: ajaxLink 256 }; 257 var href = $linkElement.attr('href'); 258 if (href) { 259 elementSettings.url = href; 260 elementSettings.event = 'click'; 261 } 262 Drupal.ajax(elementSettings); 263 }); 264 }; 265 Drupal.Ajax = function (base, element, elementSettings) { 266 var defaults = { 267 event: element ? 'mousedown' : null, 268 keypress: true, 269 selector: base ? "#".concat(base) : null, 270 effect: 'none', 271 speed: 'none', 272 method: 'replaceWith', 273 progress: { 274 type: 'throbber', 275 message: Drupal.t('Please wait...') 276 }, 277 submit: { 278 js: true 279 } 280 }; 281 $.extend(this, defaults, elementSettings); 282 this.commands = new Drupal.AjaxCommands(); 283 this.instanceIndex = false; 284 if (this.wrapper) { 285 this.wrapper = "#".concat(this.wrapper); 286 } 287 this.element = element; 288 this.element_settings = elementSettings; 289 this.elementSettings = elementSettings; 290 if (this.element && this.element.form) { 291 this.$form = $(this.element.form); 292 } 293 if (!this.url) { 294 var $element = $(this.element); 295 if ($element.is('a')) { 296 this.url = $element.attr('href'); 297 } else if (this.element && element.form) { 298 this.url = this.$form.attr('action'); 299 } 300 } 301 var originalUrl = this.url; 302 this.url = this.url.replace(/\/nojs(\/|$|\?|#)/, '/ajax$1'); 303 if (drupalSettings.ajaxTrustedUrl[originalUrl]) { 304 drupalSettings.ajaxTrustedUrl[this.url] = true; 305 } 306 var ajax = this; 307 ajax.options = { 308 url: ajax.url, 309 data: ajax.submit, 310 isInProgress: function isInProgress() { 311 return ajax.ajaxing; 312 }, 313 beforeSerialize: function beforeSerialize(elementSettings, options) { 314 return ajax.beforeSerialize(elementSettings, options); 315 }, 316 beforeSubmit: function beforeSubmit(formValues, elementSettings, options) { 317 ajax.ajaxing = true; 318 return ajax.beforeSubmit(formValues, elementSettings, options); 319 }, 320 beforeSend: function beforeSend(xmlhttprequest, options) { 321 ajax.ajaxing = true; 322 return ajax.beforeSend(xmlhttprequest, options); 323 }, 324 success: function success(response, status, xmlhttprequest) { 325 var _this = this; 326 if (typeof response === 'string') { 327 response = $.parseJSON(response); 328 } 329 if (response !== null && !drupalSettings.ajaxTrustedUrl[ajax.url]) { 330 if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') { 331 var customMessage = Drupal.t('The response failed verification so will not be processed.'); 332 return ajax.error(xmlhttprequest, ajax.url, customMessage); 333 } 334 } 335 return Promise.resolve(ajax.success(response, status)).then(function () { 336 ajax.ajaxing = false; 337 $(document).trigger('ajaxSuccess', [xmlhttprequest, _this]); 338 $(document).trigger('ajaxComplete', [xmlhttprequest, _this]); 339 if (--$.active === 0) { 340 $(document).trigger('ajaxStop'); 341 } 342 }); 343 }, 344 error: function error(xmlhttprequest, status, _error) { 345 ajax.ajaxing = false; 346 }, 347 complete: function complete(xmlhttprequest, status) { 348 if (status === 'error' || status === 'parsererror') { 349 return ajax.error(xmlhttprequest, ajax.url); 350 } 351 }, 352 dataType: 'json', 353 jsonp: false, 354 type: 'POST' 355 }; 356 if (elementSettings.dialog) { 357 ajax.options.data.dialogOptions = elementSettings.dialog; 358 } 359 if (ajax.options.url.indexOf('?') === -1) { 360 ajax.options.url += '?'; 361 } else { 362 ajax.options.url += '&'; 363 } 364 var wrapper = "drupal_".concat(elementSettings.dialogType || 'ajax'); 365 if (elementSettings.dialogRenderer) { 366 wrapper += ".".concat(elementSettings.dialogRenderer); 367 } 368 ajax.options.url += "".concat(Drupal.ajax.WRAPPER_FORMAT, "=").concat(wrapper); 369 $(ajax.element).on(elementSettings.event, function (event) { 370 if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) { 371 throw new Error(Drupal.t('The callback URL is not local and n
371ot trusted: !url', { 372 '!url': ajax.url 373 })); 374 } 375 return ajax.eventResponse(this, event); 376 }); 377 if (elementSettings.keypress) { 378 $(ajax.element).on('keypress', function (event) { 379 return ajax.keypressResponse(this, event); 380 }); 381 } 382 if (elementSettings.prevent) { 383 $(ajax.element).on(elementSettings.prevent, false); 384 } 385 }; 386 Drupal.ajax.WRAPPER_FORMAT = '_wrapper_format'; 387 Drupal.Ajax.AJAX_REQUEST_PARAMETER = '_drupal_ajax'; 388 Drupal.Ajax.prototype.execute = function () { 389 if (this.ajaxing) { 390 return; 391 } 392 try { 393 this.beforeSerialize(this.element, this.options); 394 return $.ajax(this.options); 395 } catch (e) { 396 this.ajaxing = false; 397 window.alert("An error occurred while attempting to process ".concat(this.options.url, ": ").concat(e.message)); 398 return $.Deferred().reject(); 399 } 400 }; 401 Drupal.Ajax.prototype.keypressResponse = function (element, event) { 402 var ajax = this; 403 if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') { 404 event.preventDefault(); 405 event.stopPropagation(); 406 $(element).trigger(ajax.elementSettings.event); 407 } 408 }; 409 Drupal.Ajax.prototype.eventResponse = function (element, event) { 410 event.preventDefault(); 411 event.stopPropagation(); 412 var ajax = this; 413 if (ajax.ajaxing) { 414 return; 415 } 416 try { 417 if (ajax.$form) { 418 if (ajax.setClick) { 419 element.form.clk = element; 420 } 421 ajax.$form.ajaxSubmit(ajax.options); 422 } else { 423 ajax.beforeSerialize(ajax.element, ajax.options); 424 $.ajax(ajax.options); 425 } 426 } catch (e) { 427 ajax.ajaxing = false; 428 window.alert("An error occurred while attempting to process ".concat(ajax.options.url, ": ").concat(e.message)); 429 } 430 }; 431 Drupal.Ajax.prototype.beforeSerialize = function (element, options) { 432 if (this.$form && document.body.contains(this.$form.get(0))) { 433 var settings = this.settings || drupalSettings; 434 Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize'); 435 } 436 options.data[Drupal.Ajax.AJAX_REQUEST_PARAMETER] = 1; 437 var pageState = drupalSettings.ajaxPageState; 438 options.data['ajax_page_state[theme]'] = pageState.theme; 439 options.data['ajax_page_state[theme_token]'] = pageState.theme_token; 440 options.data['ajax_page_state[libraries]'] = pageState.libraries; 441 }; 442 Drupal.Ajax.prototype.beforeSubmit = function (formValues, element, options) {}; 443 Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) { 444 if (this.$form) { 445 options.extraData = options.extraData || {}; 446 options.extraData.ajax_iframe_upload = '1'; 447 var v = $.fieldValue(this.element); 448 if (v !== null) { 449 options.extraData[this.element.name] = v; 450 } 451 } 452 $(this.element).prop('disabled', true); 453 if (!this.progress || !this.progress.type) { 454 return; 455 } 456 var progressIndicatorMethod = "setProgressIndicator".concat(this.progress.type.slice(0, 1).toUpperCase()).concat(this.progress.type.slice(1).toLowerCase()); 457 if (progressIndicatorMethod in this && typeof this[progressIndicatorMethod] === 'function') { 458 this[progressIndicatorMethod].call(this); 459 } 460 }; 461 Drupal.theme.ajaxProgressThrobber = function (message) { 462 var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : ''; 463 var throbber = '<div class="throbber"> </div>'; 464 return "<div class=\"ajax-progress ajax-progress-throbber\">".concat(throbber).concat(messageMarkup, "</div>"); 465 }; 466 Drupal.theme.ajaxProgressIndicatorFullscreen = function () { 467 return '<div class="ajax-progress ajax-progress-fullscreen"> </div>'; 468 }; 469 Drupal.theme.ajaxProgressMessage = function (message) { 470 return "<div class=\"message\">".concat(message, "</div>"); 471 }; 472 Drupal.theme.ajaxProgressBar = function ($element) { 473 return $('<div class="ajax-progress ajax-progress-bar"></div>').append($element); 474 }; 475 Drupal.Ajax.prototype.setProgressIndicatorBar = function () { 476 var progressBar = new Drupal.ProgressBar("ajax-progress-".concat(this.element.i
476d), $.noop, this.progress.method, $.noop); 477 if (this.progress.message) { 478 progressBar.setProgress(-1, this.progress.message); 479 } 480 if (this.progress.url) { 481 progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500); 482 } 483 this.progress.element = $(Drupal.theme('ajaxProgressBar', progressBar.element)); 484 this.progress.object = progressBar; 485 $(this.element).after(this.progress.element); 486 }; 487 Drupal.Ajax.prototype.setProgressIndicatorThrobber = function () { 488 this.progress.element = $(Drupal.theme('ajaxProgressThrobber', this.progress.message)); 489 $(this.element).after(this.progress.element); 490 }; 491 Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () { 492 this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen')); 493 $('body').append(this.progress.element); 494 }; 495 Drupal.Ajax.prototype.commandExecutionQueue = function (response, status) { 496 var _this2 = this; 497 var ajaxCommands = this.commands; 498 return Object.keys(response || {}).reduce(function (executionQueue, key) { 499 return executionQueue.then(function () { 500 var command = response[key].command; 501 if (command && ajaxCommands[command]) { 502 return ajaxCommands[command](_this2, response[key], status); 503 } 504 }); 505 }, Promise.resolve()); 506 }; 507 Drupal.Ajax.prototype.success = function (response, status) { 508 var _this3 = this; 509 if (this.progress.element) { 510 $(this.progress.element).remove(); 511 } 512 if (this.progress.object) { 513 this.progress.object.stopMonitoring(); 514 } 515 $(this.element).prop('disabled', false); 516 var elementParents = $(this.element).parents('[data-drupal-selector]').addBack().toArray(); 517 var focusChanged = Object.keys(response || {}).some(function (key) { 518 var _response$key = response[key], 519 command = _response$key.command, 520 method = _response$key.method; 521 return command === 'focusFirst' || command === 'invoke' && method === 'focus'; 522 }); 523 return this.commandExecutionQueue(response, status).then(function () { 524 if (!focusChanged && _this3.element && !$(_this3.element).data('disable-refocus')) { 525 var target = false;
526 for (var n = elementParents.length - 1; !target && n >= 0; n--) { 527 target = document.querySelector("[data-drupal-selector=\"".concat(elementParents[n].getAttribute('data-drupal-selector'), "\"]")); 528 } 529 if (target) { 530 $(target).trigger('focus'); 531 } 532 } 533 if (_this3.$form && document.body.contains(_this3.$form.get(0))) { 534 var settings = _this3.settings || drupalSettings; 535 Drupal.attachBehaviors(_this3.$form.get(0), settings); 536 } 537 _this3.settings = null; 538 }).catch(function (error) { 539 return console.error(Drupal.t('An error occurred during the execution of the Ajax response: !error', { 540 '!error': error 541 })); 542 }); 543 }; 544 Drupal.Ajax.prototype.getEffect = function (response) { 545 var type = response.effect || this.effect; 546 var speed = response.speed || this.speed; 547 var effect = {}; 548 if (type === 'none') { 549 effect.showEffect = 'show'; 550 effect.hideEffect = 'hide'; 551 effect.showSpeed = ''; 552 } else if (type === 'fade') { 553 effect.showEffect = 'fadeIn'; 554 effect.hideEffect = 'fadeOut'; 555 effect.showSpeed = speed; 556 } else { 557 effect.showEffect = "".concat(type, "Toggle"); 558 effect.hideEffect = "".concat(type, "Toggle"); 559 effect.showSpeed = speed; 560 } 561 return effect; 562 }; 563 Drupal.Ajax.prototype.error = function (xmlhttprequest, uri, customMessage) { 564 if (this.progress.element) { 565 $(this.progress.element).remove(); 566 } 567 if (this.progress.object) { 568 this.progress.object.stopMonitoring(); 569 } 570 $(this.wrapper).show(); 571 $(this.element).prop('disabled', false); 572 if (this.$form && document.body.contains(this.$form.get(0))) { 573 var settings = this.settings || drupalSettings; 574 Drupal.attachBehaviors(this.$form.get(0), settings); 575 } 576 throw new Drupal.AjaxError(xmlhttprequest, uri, customMessage); 577 }; 578 Drupal.theme.ajaxWrapperNewContent = function ($newContent, ajax, response) { 579 return (response.effect || ajax.effect) !== 'none' && $newContent.filter(function (i) { 580 return !($newContent[i].nodeName === '#comment' || $newContent[i].nodeName === '#text' && /^(\s|\n|\r)*$/.test($newContent[i].textContent)); 581 }).length > 1 ? Drupal.theme('ajaxWrapperMultipleRootElements', $newContent) : $newContent; 582 }; 583 Drupal.theme.ajaxWrapperMultipleRootElements = function ($elements) { 584 return $('<div></div>').append($elements); 585 }; 586 Drupal.AjaxCommands = function () {}; 587 Drupal.AjaxCommands.prototype = { 588 insert: function insert(ajax, response) { 589 var $wrapper = response.selector ? $(response.selector) : $(ajax.wrapper); 590 var method = response.method || ajax.method; 591 var effect = ajax.getEffect(response); 592 var settings = response.settings || ajax.settings || drupalSettings; 593 var $newContent = $($.parseHTML(response.data, document, true)); 594 $newContent = Drupal.theme('ajaxWrapperNewContent', $newContent, ajax, response); 595 switch (method) { 596 case 'html': 597 case 'replaceWith': 598 case 'replaceAll': 599 case 'empty': 600 case 'remove': 601 Drupal.detachBehaviors($wrapper.get(0), settings); 602 break; 603 default: 604 break; 605 } 606 $wrapper[method]($newContent); 607 if (effect.showEffect !== 'show') { 608 $newContent.hide(); 609 } 610 var $ajaxNewContent = $newContent.find('.ajax-new-content'); 611 if ($ajaxNewContent.length) { 612 $ajaxNewContent.hide(); 613 $newContent.show(); 614 $ajaxNewContent[effect.showEffect](effect.showSpeed); 615 } else if (effect.showEffect !== 'show') { 616 $newContent[effect.showEffect](effect.showSpeed); 617 } 618 if ($newContent.parents('html').length) { 619 $newContent.each(function (index, element) { 620 if (element.nodeType === Node.ELEMENT_NODE) { 621 Drupal.attachBehaviors(element, settings); 622 } 623 }); 624 } 625 }, 626 remove: function remove(ajax, response, status) { 627 var settings = response.settings || ajax.settings || drupalSettings; 628 $(response.selector).each(function () { 629 Drupal.detachBehaviors(this, settings); 630 }).remove(); 631 }, 632 changed: function changed(ajax, response, status) { 633 var $element = $(response.selector); 634 if (!$element.hasClass('ajax-changed')) { 635 $element.addClass('ajax-changed'); 636 if (response.asterisk) { 637 $element.find(response.asterisk).append(" <abbr class=\"ajax-changed\" title=\"".concat(Drupal.t('Changed'), "\">*</abbr> ")); 638 } 639 } 640 }, 641 alert: function alert(ajax, response, status) { 642 window.alert(response.text); 643 }, 644 announce: function announce(ajax, response) { 645 if (response.priority) { 646 Drupal.announce(response.text, response.priority); 647 } else { 648 Drupal.announce(response.text); 649 } 650 }, 651 redirect: function redirect(ajax, response, status) { 652 window.location = response.url; 653 }, 654 css: function css(ajax, response, status) { 655 $(response.selector).css(response.argument); 656 }, 657 settings: function settings(ajax, response, status) { 658 var ajaxSettings = drupalSettings.ajax; 659 if (ajaxSettings) {
660 Drupal.ajax.expired().forEach(function (instance) { 661 if (instance.selector) { 662 var selector = instance.selector.replace('#', ''); 663 if (selector in ajaxSettings) { 664 delete ajaxSettings[selector]; 665 } 666 } 667 }); 668 } 669 if (response.merge) { 670 $.extend(true, drupalSettings, response.settings); 671 } else { 672 ajax.settings = response.settings; 673 } 674 }, 675 data: function data(ajax, response, status) { 676 $(response.selector).data(response.name, response.value); 677 }, 678 focusFirst: function focusFirst(ajax, response, status) { 679 var focusChanged = false; 680 var container = document.querySelector(response.selector); 681 if (container) { 682 var tabbableElements = tabbable(container); 683 if (tabbableElements.length) { 684 tabbableElements[0].focus(); 685 focusChanged = true; 686 } else if (isFocusable(container)) { 687 container.focus(); 688 focusChanged = true; 689 } 690 } 691 if (ajax.hasOwnProperty('element') && !focusChanged) { 692 ajax.element.focus(); 693 } 694 }, 695 invoke: function invoke(ajax, response, status) { 696 var $element = $(response.selector); 697 $element[response.method].apply($element, _toConsumableArray(response.args)); 698 }, 699 restripe: function restripe(ajax, response, status) { 700 $(response.selector).find('> tbody > tr:visible, > tr:visible').removeClass('odd even').filter(':even').addClass('odd').end().filter(':odd').addClass('even'); 701 }, 702 update_build_id: function update_build_id(ajax, response, status) { 703 document.querySelectorAll("input[name=\"form_build_id\"][value=\"".concat(response.old, "\"]")).forEach(function (item) { 704 item.value = response.new; 705 }); 706 }, 707 add_css: function add_css(ajax, response, status) { 708 $('head').prepend(response.data); 709 }, 710 message: function message(ajax, response) { 711 var messages = new Drupal.Message(document.querySelector(response.messageWrapperQuerySelector)); 712 if (response.clearPrevious) { 713 messages.clear(); 714 } 715 messages.add(response.message, response.messageOptions); 716 }, 717 add_js: function add_js(ajax, response, status) { 718 var parentEl = document.querySelector(response.selector || 'body'); 719 var settings = ajax.settings || drupalSettings; 720 var allUniqueBundleIds = response.data.map(function (script) { 721 var uniqueBundleId = script.src + ajax.instanceIndex; 722 loadjs(script.src, uniqueBundleId, { 723 async: false, 724 before: function before(path, scriptEl) { 725 Object.keys(script).forEach(function (attributeKey) { 726 scriptEl.setAttribute(attributeKey, script[attributeKey]); 727 }); 728 parentEl.appendChild(scriptEl); 729 return false; 730 } 731 }); 732 return uniqueBundleId; 733 }); 734 return new Promise(function (resolve, reject) { 735 loadjs.ready(allUniqueBundleIds, { 736 success: function success() { 737 Drupal.attachBehaviors(parentEl, settings); 738 resolve(); 739 }, 740 error: function error(depsNotFound) { 741 var message = Drupal.t("The following files could not be loaded: @dependencies", { 742 '@dependencies': depsNotFound.join(', ') 743 }); 744 reject(message); 745 } 746 }); 747 }); 748 } 749 }; 750 var stopEvent = function stopEvent(xhr, settings) { 751 return xhr.getResponseHeader('X-Drupal-Ajax-Token') === '1' && settings.isInProgress && settings.isInProgress(); 752 }; 753 $.extend(true, $.event.special, { 754 ajaxSuccess: { 755 trigger: function trigger(event, xhr, settings) { 756 if (stopEvent(xhr, settings)) { 757 return false; 758 } 759 } 760 }, 761 ajaxComplete: { 762 trigger: function trigger(event, xhr, settings) { 763 if (stopEvent(xhr, settings)) { 764 $.active++; 765 return false; 766 } 767 } 768 } 769 }); 770})(jQuery, window, Drupal, drupalSettings, loadjs, window.tabbable);; 771/** 772* DO NOT EDIT THIS FILE. 773* See the following change record for more information, 774* https://www.drupal.org/node/2815083 775* @preserve 776**/ 777(function (Drupal) { 778 Drupal.theme.ajaxProgressBar = function ($element) { 779 return $element.addClass('ajax-progress ajax-progress-bar'); 780 }; 781})(Drupal);; 782/** 783* DO NOT EDIT THIS FILE. 784* See the following change record for more information, 785* https://www.drupal.org/node/2815083 786* @preserve 787**/ 788Drupal.debounce = function (func, wait, immediate) { 789 var timeout; 790 var result; 791 return function () { 792 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 793 args[_key] = arguments[_key]; 794 } 795 var context = this; 796 var later = function later() { 797 timeout = null; 798 if (!immediate) {
799 result = func.apply(context, args); 800 } 801 }; 802 var callNow = immediate && !timeout; 803 clearTimeout(timeout); 804 timeout = setTimeout(later, wait); 805 if (callNow) { 806 result = func.apply(context, args); 807 } 808 return result; 809 }; 810};; 811/** 812* DO NOT EDIT THIS FILE. 813* See the following change record for more information, 814* https://www.drupal.org/node/2815083 815* @preserve 816**/ 817(function ($, Drupal, debounce) { 818 var offsets = { 819 top: 0, 820 right: 0, 821 bottom: 0, 822 left: 0 823 }; 824 function getRawOffset(el, edge) { 825 var $el = $(el); 826 var documentElement = document.documentElement; 827 var displacement = 0; 828 var horizontal = edge === 'left' || edge === 'right'; 829 var placement = $el.offset()[horizontal ? 'left' : 'top']; 830 placement -= window["scroll".concat(horizontal ? 'X' : 'Y')] || document.documentElement["scroll".concat(horizontal ? 'Left' : 'Top')] || 0; 831 switch (edge) { 832 case 'top': 833 displacement = placement + $el.outerHeight(); 834 break; 835 case 'left': 836 displacement = placement + $el.outerWidth(); 837 break; 838 case 'bottom': 839 displacement = documentElement.clientHeight - placement; 840 break; 841 case 'right': 842 displacement = documentElement.clientWidth - placement; 843 break; 844 default: 845 displacement = 0; 846 } 847 return displacement; 848 } 849 function calculateOffset(edge) { 850 var edgeOffset = 0; 851 var displacingElements = document.querySelectorAll("[data-offset-".concat(edge, "]")); 852 var n = displacingElements.length; 853 for (var i = 0; i < n; i++) { 854 var el = displacingElements[i]; 855 if (el.style.display === 'none') { 856 continue; 857 } 858 var displacement = parseInt(el.getAttribute("data-offset-".concat(edge)), 10); 859 if (isNaN(displacement)) { 860 displacement = getRawOffset(el, edge); 861 } 862 edgeOffset = Math.max(edgeOffset, displacement); 863 } 864 return edgeOffset; 865 } 866 function calculateOffsets() { 867 return { 868 top: calculateOffset('top'), 869 right: calculateOffset('right'), 870 bottom: calculateOffset('bottom'), 871 left: calculateOffset('left') 872 }; 873 } 874 function displace(broadcast) { 875 offsets = calculateOffsets(); 876 Drupal.displace.offsets = offsets; 877 if (typeof broadcast === 'undefined' || broadcast) { 878 $(document).trigger('drupalViewportOffsetChange', offsets); 879 } 880 return offsets; 881 } 882 Drupal.behaviors.drupalDisplace = { 883 attach: function attach() { 884 if (this.displaceProcessed) { 885 return; 886 } 887 this.displaceProcessed = true; 888 $(window).on('resize.drupalDisplace', debounce(displace, 200)); 889 } 890 }; 891 Drupal.displace = displace; 892 $.extend(Drupal.displace, { 893 offsets: offsets, 894 calculateOffset: calculateOffset 895 }); 896})(jQuery, Drupal, Drupal.debounce);; 897/** 898* DO NOT EDIT THIS FILE. 899* See the following change record for more information, 900* https://www.drupal.org/node/2815083 901* @preserve 902**/ 903(function ($, Drupal, _ref) { 904 var isTabbable = _ref.isTabbable; 905 $.extend($.expr[':'], { 906 tabbable: function tabbable(element) { 907 Drupal.deprecationError({ 908 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' 909 }); 910 if (element.tagName === 'SUMMARY' || element.tagName === 'DETAILS') { 911 var tabIndex = element.getAttribute('tabIndex'); 912 if (tabIndex === null || tabIndex < 0) { 913 return false; 914 } 915 } 916 return isTabbable(element); 917 } 918 }); 919})(jQuery, Drupal, window.tabbable);; 920/** 921* DO NOT EDIT THIS FILE. 922* See the following change record for more information, 923* https://www.drupal.org/node/2815083 924* @preserve 925**/ 926(function ($) { 927 var cachedScrollbarWidth = null; 928 var max = Math.max, 929 abs = Math.abs; 930 var regexHorizontal = /left|center|right/; 931 var regexVertical = /top|center|bottom/; 932 var regexOffset = /[+-]\d+(\.[\d]+)?%?/; 933 var regexPosition = /^\w+/; 934 var regexPercent = /%$/; 935 var _position = $.fn.position; 936 function getOffsets(offsets, width, height) { 937 return [parseFloat(offsets[0]) * (regexPercent.test(offsets[0]) ? width / 100 : 1), parseFloat(offsets[1]) * (regexPercent.test(offsets[1]) ? height / 100 : 1)]; 938 } 939 function parseCss(element, property) { 940 return parseInt($.css(element, property), 10) || 0; 941 } 942 function getDimensions(elem) { 943 var raw = elem[0]; 944 if (raw.nodeType === 9) { 945 return { 946 width: elem.width(), 947 height: elem.height(), 948 offset: { 949 top: 0, 950 left: 0 951 } 952 }; 953 } 954 if ($.isWindow(raw)) { 955 return { 956 width: elem.width(), 957 height: elem.height(), 958 offset: { 959 top: elem.scrollTop(), 960 left: elem.scrollLeft() 961 } 962 }; 963 } 964 if (raw.preventDefault) { 965 return { 966 width: 0, 967 height: 0, 968 offset: { 969 top: raw.pageY, 970 left: raw.pageX 971 } 972 }; 973 } 974 return { 975 width: elem.outerWidth(), 976 height: elem.outerHeight(), 977 offset: elem.offset() 978 }; 979 } 980 var collisions = { 981 fit: { 982 left: function left(position, data) { 983 var within = data.within; 984 var withinOffset = within.isWindow ? within.scrollLeft : within.offset.left; 985 var outerWidth = within.width; 986 var collisionPosLeft = position.left - data.collisionPosition.marginLeft; 987 var overLeft = withinOffset - collisionPosLeft; 988 var overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset; 989 var newOverRight; 990 if (data.collisionWidth > outerWidth) { 991 if (overLeft > 0 && overRight <= 0) { 992 newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; 993 position.left += overLeft - newOverRight; 994 } else if (overRight > 0 && overLeft <= 0) { 995 position.left = withinOffset; 996 } else if (overLeft > overRight) { 997 position.left = withinOffset + outerWidth - data.collisionWidth; 998 } else { 999 position.left = withinOffset; 1000 } 1001 } else if (overLeft > 0) { 1002 position.left += overLeft; 1003 } else if (overRight > 0) { 1004 position.left -= overRight; 1005 } else { 1006 position.left = max(position.left - collisionPosLeft, position.left); 1007 } 1008 },
1009 top: function top(position, data) { 1010 var within = data.within; 1011 var withinOffset = within.isWindow ? within.scrollTop : within.offset.top; 1012 var outerHeight = data.within.height; 1013 var collisionPosTop = position.top - data.collisionPosition.marginTop; 1014 var overTop = withinOffset - collisionPosTop; 1015 var overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset; 1016 var newOverBottom; 1017 if (data.collisionHeight > outerHeight) { 1018 if (overTop > 0 && overBottom <= 0) { 1019 newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; 1020 position.top += overTop - newOverBottom; 1021 } else if (overBottom > 0 && overTop <= 0) { 1022 position.top = withinOffset; 1023 } else if (overTop > overBottom) { 1024 position.top = withinOffset + outerHeight - data.collisionHeight; 1025 } else { 1026 position.top = withinOffset; 1027 } 1028 } else if (overTop > 0) { 1029 position.top += overTop; 1030 } else if (overBottom > 0) { 1031 position.top -= overBottom; 1032 } else { 1033 position.top = max(position.top - collisionPosTop, position.top); 1034 } 1035 } 1036 }, 1037 flip: { 1038 left: function left(position, data) { 1039 var within = data.within; 1040 var withinOffset = within.offset.left + within.scrollLeft; 1041 var outerWidth = within.width; 1042 var offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left; 1043 var collisionPosLeft = position.left - data.collisionPosition.marginLeft; 1044 var overLeft = collisionPosLeft - offsetLeft; 1045 var overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft; 1046 var myOffset = data.my[0] === 'left' ? -data.elemWidth : data.my[0] === 'right' ? data.elemWidth : 0; 1047 var atOffset = data.at[0] === 'left' ? data.targetWidth : data.at[0] === 'right' ? -data.targetWidth : 0; 1048 var offset = -2 * data.offset[0]; 1049 var newOverRight; 1050 var newOverLeft; 1051 if (overLeft < 0) { 1052 newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; 1053 if (newOverRight < 0 || newOverRight < abs(overLeft)) { 1054 position.left += myOffset + atOffset + offset; 1055 } 1056 } else if (overRight > 0) { 1057 newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; 1058 if (newOverLeft > 0 || abs(newOverLeft) < overRight) { 1059 position.left += myOffset + atOffset + offset; 1060 } 1061 } 1062 },
1063 top: function top(position, data) { 1064 var within = data.within; 1065 var withinOffset = within.offset.top + within.scrollTop; 1066 var outerHeight = within.height; 1067 var offsetTop = within.isWindow ? within.scrollTop : within.offset.top; 1068 var collisionPosTop = position.top - data.collisionPosition.marginTop; 1069 var overTop = collisionPosTop - offsetTop; 1070 var overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop; 1071 var top = data.my[1] === 'top'; 1072 var myOffset = top ? -data.elemHeight : data.my[1] === 'bottom' ? data.elemHeight : 0; 1073 var atOffset = data.at[1] === 'top' ? data.targetHeight : data.at[1] === 'bottom' ? -data.targetHeight : 0; 1074 var offset = -2 * data.offset[1]; 1075 var newOverTop; 1076 var newOverBottom; 1077 if (overTop < 0) { 1078 newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; 1079 if (newOverBottom < 0 || newOverBottom < abs(overTop)) { 1080 position.top += myOffset + atOffset + offset; 1081 } 1082 } else if (overBottom > 0) { 1083 newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; 1084 if (newOverTop > 0 || abs(newOverTop) < overBottom) { 1085 position.top += myOffset + atOffset + offset; 1086 } 1087 } 1088 } 1089 }, 1090 flipfit: { 1091 left: function left() { 1092 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 1093 args[_key] = arguments[_key]; 1094 } 1095 collisions.flip.left.apply(this, args); 1096 collisions.fit.left.apply(this, args); 1097 },
1098 top: function top() { 1099 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 1100 args[_key2] = arguments[_key2]; 1101 } 1102 collisions.flip.top.apply(this, args); 1103 collisions.fit.top.apply(this, args); 1104 } 1105 } 1106 }; 1107 $.position = { 1108 scrollbarWidth: function scrollbarWidth() { 1109 if (cachedScrollbarWidth !== undefined) { 1110 return cachedScrollbarWidth; 1111 } 1112 var div = $('<div ' + "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" + "<div style='height:100px;width:auto;'></div></div>"); 1113 var innerDiv = div.children()[0]; 1114 $('body').append(div); 1115 var w1 = innerDiv.offsetWidth; 1116 div.css('overflow', 'scroll'); 1117 var w2 = innerDiv.offsetWidth; 1118 if (w1 === w2) { 1119 w2 = div[0].clientWidth; 1120 } 1121 div.remove(); 1122 cachedScrollbarWidth = w1 - w2; 1123 return cachedScrollbarWidth; 1124 }, 1125 getScrollInfo: function getScrollInfo(within) { 1126 var overflowX = within.isWindow || within.isDocument ? '' : within.element.css('overflow-x'); 1127 var overflowY = within.isWindow || within.isDocument ? '' : within.element.css('overflow-y'); 1128 var hasOverflowX = overflowX === 'scroll' || overflowX === 'auto' && within.width < within.element[0].scrollWidth; 1129 var hasOverflowY = overflowY === 'scroll' || overflowY === 'auto' && within.height < within.element[0].scrollHeight; 1130 return { 1131 width: hasOverflowY ? $.position.scrollbarWidth() : 0, 1132 height: hasOverflowX ? $.position.scrollbarWidth() : 0 1133 }; 1134 }, 1135 getWithinInfo: function getWithinInfo(element) { 1136 var withinElement = $(element || window); 1137 var isWindow = $.isWindow(withinElement[0]); 1138 var isDocument = !!withinElement[0] && withinElement[0].nodeType === 9; 1139 var hasOffset = !isWindow && !isDocument; 1140 return { 1141 element: withinElement, 1142 isWindow: isWindow, 1143 isDocument: isDocument, 1144 offset: hasOffset ? $(element).offset() : { 1145 left: 0, 1146 top: 0 1147 }, 1148 scrollLeft: withinElement.scrollLeft(), 1149 scrollTop: withinElement.scrollTop(), 1150 width: withinElement.outerWidth(), 1151 height: withinElement.outerHeight() 1152 }; 1153 } 1154 }; 1155 $.fn.position = function (options) { 1156 if (!options || !options.of) { 1157 return _position.apply(this, arguments); 1158 } 1159 options = $.extend({}, options); 1160 var within = $.position.getWithinInfo(options.within); 1161 var scrollInfo = $.position.getScrollInfo(within); 1162 var collision = (options.collision || 'flip').split(' '); 1163 var offsets = {}; 1164 var target = typeof options.of === 'string' ? $(document).find(options.of) : $(options.of); 1165 var dimensions = getDimensions(target); 1166 var targetWidth = dimensions.width; 1167 var targetHeight = dimensions.height; 1168 var targetOffset = dimensions.offset; 1169 if (target[0].preventDefault) { 1170 options.at = 'left top'; 1171 } 1172 var basePosition = $.extend({}, targetOffset); 1173 $.each(['my', 'at'], function () { 1174 var pos = (options[this] || '').split(' '); 1175 if (pos.length === 1) { 1176 pos = regexHorizontal.test(pos[0]) ? pos.concat(['center']) : regexVertical.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center']; 1177 } 1178 pos[0] = regexHorizontal.test(pos[0]) ? pos[0] : 'center'; 1179 pos[1] = regexVertical.test(pos[1]) ? pos[1] : 'center'; 1180 var horizontalOffset = regexOffset.exec(pos[0]); 1181 var verticalOffset = regexOffset.exec(pos[1]); 1182 offsets[this] = [horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0]; 1183 options[this] = [regexPosition.exec(pos[0])[0], regexPosition.exec(pos[1])[0]]; 1184 }); 1185 if (collision.length === 1) { 1186 collision[1] = collision[0]; 1187 } 1188 if (options.at[0] === 'right') { 1189 basePosition.left += targetWidth; 1190 } else if (options.at[0] === 'center') { 1191 basePosition.left += targetWidth / 2; 1192 } 1193 if (options.at[1] === 'bottom') { 1194 basePosition.top += targetHeight; 1195 } else if (options.at[1] === 'center') { 1196 basePosition.top += targetHeight / 2; 1197 } 1198 var atOffset = getOffsets(offsets.at, targetWidth, targetHeight); 1199 basePosition.left += atOffset[0]; 1200 basePosition.top += atOffset[1]; 1201 return this.each(function () { 1202 var using; 1203 var elem = $(this); 1204 var elemWidth = elem.outerWidth(); 1205 var elemHeight = elem.outerHeight(); 1206 var marginLeft = parseCss(this, 'marginLeft'); 1207 var marginTop = parseCss(this, 'marginTop'); 1208 var collisionWidth = elemWidth + marginLeft + parseCss(this, 'marginRight') + scrollInfo.width; 1209 var collisionHeight = elemHeight + marginTop + parseCss(this, 'marginBottom') + scrollInfo.height; 1210 var position = $.extend({}, basePosition); 1211 var myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight()); 1212 if (options.my[0] === 'right') { 1213 position.left -= elemWidth; 1214 } else if (options.my[0] === 'center') { 1215 position.left -= elemWidth / 2; 1216 } 1217 if (options.my[1] === 'bottom') { 1218 position.top -= elemHeight; 1219 } else if (options.my[1] === 'center') { 1220 position.top -= elemHeight / 2; 1221 } 1222 position.left += myOffset[0]; 1223 position.top += myOffset[1]; 1224 var collisionPosition = { 1225 marginLeft: marginLeft, 1226 marginTop: marginTop 1227 }; 1228 $.each(['left', 'top'], function (i, dir) { 1229 if (collisions[collision[i]]) { 1230 collisions[collision[i]][dir](position, { 1231 targetWidth: targetWidth, 1232 targetHeight: targetHeight, 1233 elemWidth: elemWidth, 1234 elemHeight: elemHeight, 1235 collisionPosition: collisionPosition, 1236 collisionWidth: collisionWidth, 1237 collisionHeight: collisionHeight, 1238 offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]], 1239 my: options.my, 1240 at: options.at, 1241 within: within, 1242 elem: elem 1243 }); 1244 } 1245 }); 1246 if (options.using) { 1247 using = function using(props) { 1248 var left = targetOffset.left - position.left; 1249 var right = left + targetWidth - elemWidth; 1250 var top = targetOffset.top - position.top; 1251 var bottom = top + targetHeight - elemHeight; 1252 var feedback = { 1253 target: { 1254 element: target, 1255 left: targetOffset.left, 1256 top: targetOffset.top, 1257 width: targetWidth, 1258 height: targetHeight 1259 }, 1260 element: { 1261 element: elem, 1262 left: position.left, 1263 top: position.top, 1264 width: elemWidth, 1265 height: elemHeight 1266 }, 1267 horizontal: right < 0 ? 'left' : left > 0 ? 'right' : 'center', 1268 vertical: bottom < 0 ? 'top' : top > 0 ? 'bottom' : 'middle' 1269 }; 1270 if (targetWidth < elemWidth && abs(left + right) < targetWidth) { 1271 feedback.horizontal = 'center'; 1272 } 1273 if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) { 1274 feedback.vertical = 'middle'; 1275 } 1276 if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) { 1277 feedback.important = 'horizontal'; 1278 } else { 1279 feedback.important = 'vertical'; 1280 } 1281 options.using.call(this, props, feedback); 1282 }; 1283 } 1284 elem.offset($.extend(position, { 1285 using: using 1286 })); 1287 }); 1288 }; 1289 if (!$.hasOwnProperty('ui')) { 1290 $.ui = {}; 1291 } 1292 $.ui.position = collisions; 1293})(jQuery);; 1294/** 1295* DO NOT EDIT THIS FILE. 1296* See the following change record for more information, 1297* https://www.drupal.org/node/2815083 1298* @preserve 1299**/ 1300(function ($, Drupal, drupalSettings) { 1301 drupalSettings.dialog = { 1302 autoOpen: true, 1303 dialogClass: '', 1304 buttonClass: 'button', 1305 buttonPrimaryClass: 'button--primary', 1306 close: function close(event) { 1307 Drupal.dialog(event.target).close(); 1308 Drupal.detachBehaviors(event.target, null, 'unload'); 1309 } 1310 }; 1311 Drupal.dialog = function (element, options) { 1312 var undef; 1313 var $element = $(element); 1314 var dialog = { 1315 open: false, 1316 returnValue: undef 1317 };
1318 function openDialog(settings) { 1319 settings = $.extend({}, drupalSettings.dialog, options, settings); 1320 $(window).trigger('dialog:beforecreate', [dialog, $element, settings]); 1321 $element.dialog(settings); 1322 dialog.open = true; 1323 $(window).trigger('dialog:aftercreate', [dialog, $element, settings]); 1324 } 1325 function closeDialog(value) { 1326 $(window).trigger('dialog:beforeclose', [dialog, $element]); 1327 $element.dialog('close'); 1328 dialog.returnValue = value; 1329 dialog.open = false; 1330 $(window).trigger('dialog:afterclose', [dialog, $element]); 1331 } 1332 dialog.show = function () { 1333 openDialog({ 1334 modal: false 1335 }); 1336 }; 1337 dialog.showModal = function () { 1338 openDialog({ 1339 modal: true 1340 }); 1341 }; 1342 dialog.close = closeDialog; 1343 return dialog; 1344 }; 1345})(jQuery, Drupal, drupalSettings);; 1346/** 1347* DO NOT EDIT THIS FILE. 1348* See the following change record for more information, 1349* https://www.drupal.org/node/2815083 1350* @preserve 1351**/ 1352(function ($, Drupal, drupalSettings, debounce, displace) { 1353 drupalSettings.dialog = $.extend({ 1354 autoResize: true, 1355 maxHeight: '95%' 1356 }, drupalSettings.dialog); 1357 function resetPosition(options) { 1358 var offsets = displace.offsets; 1359 var left = offsets.left - offsets.right; 1360 var top = offsets.top - offsets.bottom; 1361 var leftString = "".concat((left > 0 ? '+' : '-') + Math.abs(Math.round(left / 2)), "px"); 1362 var topString = "".concat((top > 0 ? '+' : '-') + Math.abs(Math.round(top / 2)), "px"); 1363 options.position = { 1364 my: "center".concat(left !== 0 ? leftString : '', " center").concat(top !== 0 ? topString : ''), 1365 of: window 1366 }; 1367 return options; 1368 } 1369 function resetSize(event) { 1370 var positionOptions = ['width', 'height', 'minWidth', 'minHeight', 'maxHeight', 'maxWidth', 'position']; 1371 var adjustedOptions = {}; 1372 var windowHeight = $(window).height(); 1373 var option; 1374 var optionValue; 1375 var adjustedValue; 1376 for (var n = 0; n < positionOptions.length; n++) { 1377 option = positionOptions[n]; 1378 optionValue = event.data.settings[option]; 1379 if (optionValue) { 1380 if (typeof optionValue === 'string' && /%$/.test(optionValue) && /height/i.test(option)) { 1381 windowHeight -= displace.offsets.top + displace.offsets.bottom; 1382 adjustedValue = parseInt(0.01 * parseInt(optionValue, 10) * windowHeight, 10); 1383 if (option === 'height' && event.data.$element.parent().outerHeight() < adjustedValue) { 1384 adjustedValue = 'auto'; 1385 } 1386 adjustedOptions[option] = adjustedValue; 1387 } 1388 } 1389 } 1390 if (!event.data.settings.modal) { 1391 adjustedOptions = resetPosition(adjustedOptions); 1392 } 1393 event.data.$element.dialog('option', adjustedOptions).trigger('dialogContentResize'); 1394 } 1395 $(window).on({ 1396 'dialog:aftercreate': function dialogAftercreate(event, dialog, $element, settings) { 1397 var autoResize = debounce(resetSize, 20); 1398 var eventData = { 1399 settings: settings, 1400 $element: $element 1401 }; 1402 if (settings.autoResize === true || settings.autoResize === 'true') { 1403 $element.dialog('option', { 1404 resizable: false, 1405 draggable: false 1406 }).dialog('widget').css('position', 'fixed'); 1407 $(window).on('resize.dialogResize scroll.dialogResize', eventData, autoResize).trigger('resize.dialogResize'); 1408 $(document).on('drupalViewportOffsetChange.dialogResize', eventData, autoResize); 1409 } 1410 }, 1411 'dialog:beforeclose': function dialogBeforeclose(event, dialog, $element) { 1412 $(window).off('.dialogResize'); 1413 $(document).off('.dialogResize'); 1414 } 1415 }); 1416})(jQuery, Drupal, drupalSettings, Drupal.debounce, Drupal.displace);; 1417/** 1418* DO NOT EDIT THIS FILE. 1419* See the following change record for more information, 1420* https://www.drupal.org/node/2815083 1421* @preserve 1422**/ 1423(function ($, _ref) { 1424 var tabbable = _ref.tabbable, 1425 isTabbable = _ref.isTabbable; 1426 $.widget('ui.dialog', $.ui.dialog, { 1427 options: { 1428 buttonClass: 'button', 1429 buttonPrimaryClass: 'button--primary' 1430 }, 1431 _createButtons: function _createButtons() { 1432 var opts = this.options; 1433 var primaryIndex; 1434 var index; 1435 var il = opts.buttons.length; 1436 for (index = 0; index < il; index++) { 1437 if (opts.buttons[index].primary && opts.buttons[index].primary === true) { 1438 primaryIndex = index; 1439 delete opts.buttons[index].primary; 1440 break; 1441 } 1442 } 1443 this._super(); 1444 var $buttons = this.uiButtonSet.children().addClass(opts.buttonClass); 1445 if (typeof primaryIndex !== 'undefined') { 1446 $buttons.eq(index).addClass(opts.buttonPrimaryClass); 1447 } 1448 }, 1449 _focusTabbable: function _focusTabbable() { 1450 var hasFocus = this._focusedElement ? this._focusedElement.get(0) : null; 1451 if (!hasFocus) { 1452 hasFocus = this.element.find('[autofocus]').get(0); 1453 } 1454 if (!hasFocus) { 1455 var $elements = [this.element, this.uiDialogButtonPane]; 1456 for (var i = 0; i < $elements.length; i++) { 1457 var element = $elements[i].get(0); 1458 if (element) { 1459 var elementTabbable = tabbable(element); 1460 hasFocus = elementTabbable.length ? elementTabbable[0] : null; 1461 } 1462 if (hasFocus) { 1463 break; 1464 } 1465 } 1466 } 1467 if (!hasFocus) { 1468 var closeBtn = this.uiDialogTitlebarClose.get(0); 1469 hasFocus = closeBtn && isTabbable(closeBtn) ? closeBtn : null; 1470 } 1471 if (!hasFocus) { 1472 hasFocus = this.uiDialog.get(0); 1473 } 1474 $(hasFocus).eq(0).trigger('focus'); 1475 } 1476 }); 1477})(jQuery, window.tabbable);; 1478/** 1479* DO NOT EDIT THIS FILE. 1480* See the following change record for more information, 1481* https://www.drupal.org/node/2815083 1482* @preserve 1483**/ 1484(function ($, Drupal) { 1485 Drupal.behaviors.dialog = { 1486 attach: function attach(context, settings) { 1487 var $context = $(context); 1488 if (!$('#drupal-modal').length) { 1489 $('<div id="drupal-modal" class="ui-front"></div>').hide().appendTo('body'); 1490 } 1491 var $dialog = $context.closest('.ui-dialog-content'); 1492 if ($dialog.length) { 1493 if ($dialog.dialog('option', 'drupalAutoButtons')) { 1494 $dialog.trigger('dialogButtonsChange'); 1495 } 1496 $dialog.dialog('widget').trigger('focus'); 1497 } 1498 var originalClose = settings.dialog.close; 1499 settings.dialog.close = function (event) { 1500 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 1501 args[_key - 1] = arguments[_key]; 1502 } 1503 originalClose.apply(settings.dialog, [event].concat(args)); 1504 $(event.target).remove(); 1505 }; 1506 }, 1507 prepareDialogButtons: function prepareDialogButtons($dialog) { 1508 var buttons = []; 1509 var $buttons = $dialog.find('.form-actions input[type=submit], .form-actions a.button'); 1510 $buttons.each(function () { 1511 var $originalButton = $(this).css({ 1512 display: 'none' 1513 }); 1514 buttons.push({ 1515 text: $originalButton.html() || $originalButton.attr('value'), 1516 class: $originalButton.attr('class'), 1517 click: function click(e) { 1518 if ($originalButton.is('a')) { 1519 $originalButton[0].click(); 1520 } else { 1521 $originalButton.trigger('mousedown').trigger('mouseup').trigger('click'); 1522 e.preventDefault(); 1523 } 1524 } 1525 }); 1526 }); 1527 return buttons; 1528 } 1529 }; 1530 Drupal.AjaxCommands.prototype.openDialog = function (ajax, response, status) { 1531 if (!response.selector) { 1532 return false;
1533 } 1534 var $dialog = $(response.selector); 1535 if (!$dialog.length) { 1536 $dialog = $("<div id=\"".concat(response.selector.replace(/^#/, ''), "\" class=\"ui-front\"></div>")).appendTo('body'); 1537 } 1538 if (!ajax.wrapper) { 1539 ajax.wrapper = $dialog.attr('id'); 1540 } 1541 response.command = 'insert'; 1542 response.method = 'html'; 1543 ajax.commands.insert(ajax, response, status); 1544 if (!response.dialogOptions.buttons) { 1545 response.dialogOptions.drupalAutoButtons = true; 1546 response.dialogOptions.buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog); 1547 } 1548 $dialog.on('dialogButtonsChange', function () { 1549 var buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog); 1550 $dialog.dialog('option', 'buttons', buttons); 1551 }); 1552 response.dialogOptions = response.dialogOptions || {}; 1553 var dialog = Drupal.dialog($dialog.get(0), response.dialogOptions); 1554 if (response.dialogOptions.modal) { 1555 dialog.showModal(); 1556 } else { 1557 dialog.show(); 1558 } 1559 $dialog.parent().find('.ui-dialog-buttonset').addClass('form-actions'); 1560 }; 1561 Drupal.AjaxCommands.prototype.closeDialog = function (ajax, response, status) { 1562 var $dialog = $(response.selector); 1563 if ($dialog.length) { 1564 Drupal.dialog($dialog.get(0)).close(); 1565 if (!response.persist) { 1566 $dialog.remove(); 1567 } 1568 } 1569 $dialog.off('dialogButtonsChange'); 1570 }; 1571 Drupal.AjaxCommands.prototype.setDialogOption = function (ajax, response, status) { 1572 var $dialog = $(response.selector); 1573 if ($dialog.length) { 1574 $dialog.dialog('option', response.optionName, response.optionValue); 1575 } 1576 }; 1577 $(window).on('dialog:aftercreate', function (e, dialog, $element, settings) { 1578 $element.on('click.dialog', '.dialog-cancel', function (e) { 1579 dialog.close('cancel'); 1580 e.preventDefault(); 1581 e.stopPropagation(); 1582 }); 1583 }); 1584 $(window).on('dialog:beforeclose', function (e, dialog, $element) { 1585 $element.off('.dialog'); 1586 }); 1587})(jQuery, Drupal);;
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.