1(function ($, undefined) { 2 3 'use strict'; 4 5 /** 6 Â Â * Provides enhanced functionality for Pay Portal Paragraphs admin. 7 Â Â * 8 Â Â * @type {Drupal~behavior} 9 Â Â * 10 Â Â * @prop {Drupal~behaviorAttach} attach 11 Â Â *Â Â Adds administrative effects and enhancements for the various 12 * Paragraphs components that act as the base for this module. 13 Â Â */ 14 Drupal.behaviors.payportal_admin = { 15 attach: function (context, settings) { 16 17 var 18 $settings = settings.payportal_admin, 19 $keys = Object.keys($settings) 20 ; 21 22 // The top level object literal is keyed by the deltas for 23 // each Pay Portal paragraph instance. 24 for (var i = 0, c = $keys.length; i < c; i++) { 25 var $delta = $keys[i]; 26 27 // If an Add More set of elements is present for this delta... 28 if ($settings[$delta]['payprovider_add_more'] !== undefined) { 29 30 // Update Add More button text based on the value 31 // selected in the Add More select. 32 $($settings[$delta]['payprovider_add_more']['select']).each(function () { 33 var $this = this; 34 35 // Add event handler only once per element per behaviors attachment. 36 $($this).once('payportal_admin_' + $delta).each(function () { 37 38 // Update button text when pay provider select option changes. 39 $($this).on('change', function () { 40 var $pattern = $settings[$delta]['payprovider_add_more']['pattern']; 41 var $text = Drupal.t($pattern, {'@pp': this[this.selectedIndex].innerHTML}); 42 $($settings[$delta]['payprovider_add_more']['button'], context) 43 .prop('value', $text) 44 .text($text); 45 }); 46 }); 47 }); 48 } 49 } 50 } 51 }; 52})(jQuery);; 53/** 54* DO NOT EDIT THIS FILE. 55* See the following change record for more information, 56* https://www.drupal.org/node/2815083 57* @preserve 58**/ 59Drupal.debounce = function (func, wait, immediate) { 60 var timeout; 61 var result; 62 return function () { 63 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 64 args[_key] = arguments[_key]; 65 } 66 var context = this; 67 var later = function later() { 68 timeout = null; 69 if (!immediate) { 70 result = func.apply(context, args); 71 } 72 }; 73 var callNow = immediate && !timeout; 74 clearTimeout(timeout); 75 timeout = setTimeout(later, wait); 76 if (callNow) { 77 result = func.apply(context, args); 78 } 79 return result; 80 }; 81};; 82/** 83* DO NOT EDIT THIS FILE. 84* See the following change record for more information, 85* https://www.drupal.org/node/2815083 86* @preserve 87**/ 88(function ($, Drupal, debounce) { 89 $.fn.drupalGetSummary = function () { 90 var callback = this.data('summaryCallback'); 91 return this[0] && callback ? callback(this[0]).trim() : ''; 92 }; 93 $.fn.drupalSetSummary = function (callback) { 94 var self = this; 95 if (typeof callback !== 'function') { 96 var val = callback; 97 callback = function callback() { 98 return val; 99 }; 100 } 101 return this.data('summaryCallback', callback).off('formUpdated.summary').on('formUpdated.summary', function () { 102 self.trigger('summaryUpdated'); 103 }).trigger('summaryUpdated'); 104 }; 105 Drupal.behaviors.formSingleSubmit = { 106 attach: function attach() { 107 function onFormSubmit(e) { 108 var $form = $(e.currentTarget); 109 var formValues = $form.serialize(); 110 var previousValues = $form.attr('data-drupal-form-submit-last'); 111 if (previousValues === formValues) { 112 e.preventDefault(); 113 } else { 114 $form.attr('data-drupal-form-submit-last', formValues); 115 } 116 } 117 $(once('form-single-submit', 'body')).on('submit.singleSubmit', 'form:not([method~="GET"])', onFormSubmit); 118 } 119 }; 120 function triggerFormUpdated(element) { 121 $(element).trigger('formUpdated'); 122 } 123 function fieldsList(form) { 124 return [].map.call(form.querySelectorAll('[name][id]'), function (el) { 125 return el.id; 126 }); 127 } 128 Drupal.behaviors.formUpdated = { 129 attach: function attach(context) { 130 var $context = $(context);
131 var contextIsForm = $context.is('form'); 132 var $forms = $(once('form-updated', contextIsForm ? $context : $context.find('form'))); 133 var formFields; 134 if ($forms.length) { 135 $.makeArray($forms).forEach(function (form) { 136 var events = 'change.formUpdated input.formUpdated '; 137 var eventHandler = debounce(function (event) { 138 triggerFormUpdated(event.target); 139 }, 300); 140 formFields = fieldsList(form).join(','); 141 form.setAttribute('data-drupal-form-fields', formFields); 142 $(form).on(events, eventHandler); 143 }); 144 } 145 if (contextIsForm) { 146 formFields = fieldsList(context).join(','); 147 var currentFields = $(context).attr('data-drupal-form-fields'); 148 if (formFields !== currentFields) { 149 triggerFormUpdated(context); 150 } 151 } 152 }, 153 detach: function detach(context, settings, trigger) { 154 var $context = $(context); 155 var contextIsForm = $context.is('form'); 156 if (trigger === 'unload') { 157 once.remove('form-updated', contextIsForm ? $context : $context.find('form')).forEac
157h(function (form) { 158 form.removeAttribute('data-drupal-form-fields'); 159 $(form).off('.formUpdated'); 160 }); 161 } 162 } 163 }; 164 Drupal.behaviors.fillUserInfoFromBrowser = { 165 attach: function attach(context, settings) { 166 var userInfo = ['name', 'mail', 'homepage']; 167 var $forms = $(once('user-info-from-browser', '[data-user-info-from-browser]')); 168 if ($forms.length) { 169 userInfo.forEach(function (info) { 170 var $element = $forms.find("[name=".concat(info, "]")); 171 var browserData = localStorage.getItem("Drupal.visitor.".concat(info)); 172 if (!$element.length) { 173 return; 174 } 175 var emptyValue = $element[0].value === ''; 176 var defaultValue = $element.attr('data-drupal-default-value') === $element[0].value; 177 if (browserData && (emptyValue || defaultValue)) { 178 $element.each(function (index, item) { 179 item.value = browserData; 180 }); 181 } 182 }); 183 } 184 $forms.on('submit', function () { 185 userInfo.forEach(function (info) { 186 var $element = $forms.find("[name=".concat(info, "]")); 187 if ($element.length) { 188 localStorage.setItem("Drupal.visitor.".concat(info), $element[0].value); 189 } 190 }); 191 }); 192 } 193 }; 194 var handleFragmentLinkClickOrHashChange = function handleFragmentLinkClickOrHashChange(e) { 195 var url; 196 if (e.type === 'click') { 197 url = e.currentTarget.location ? e.currentTarget.location : e.currentTarget; 198 } else { 199 url = window.location; 200 } 201 var hash = url.hash.substr(1); 202 if (hash) { 203 var $target = $("#".concat(hash)); 204 $('body').trigger('formFragmentLinkClickOrHashChange', [$target]); 205 setTimeout(function () { 206 return $target.trigger('focus'); 207 }, 300); 208 } 209 }; 210 var debouncedHandleFragmentLinkClickOrHashChange = debounce(handleFragmentLinkClickOrHashChange, 300, true); 211 $(window).on('hashchange.form-fragment', debouncedHandleFragmentLinkClickOrHashChange); 212 $(document).on('click.form-fragment', 'a[href*="#"]', debouncedHandleFragmentLinkClickOrHashChange); 213})(jQuery, Drupal, Drupal.debounce);; 214/** 215 * @file 216 * Webform behaviors. 217 */ 218 219(function ($, Drupal) { 220 221 'use strict'; 222 223 // Trigger Drupal's attaching of behaviors after the page is 224 // completely loaded. 225 // @see https://stackoverflow.com/questions/37838430/detect-if-page-is-load-from-back-button 226 // @see https://stackoverflow.com/questions/20899274/how-to-refresh-page-on-back-button-click/20899422#20899422 227 var isChrome = (/chrom(e|ium)/.test(window.navigator.userAgent.toLowerCase())); 228 if (isChrome) { 229 // Track back button in navigation. 230 // @see https://stackoverflow.com/questions/37838430/detect-if-page-is-load-from-back-button 231 var backButton = false; 232 if (window.performance) { 233 var navEntries = window.performance.getEntriesByType('navigation'); 234 if (navEntries.length > 0 && navEntries[0].type === 'back_forward') { 235 backButton = true; 236 } 237 else if (window.performance.navigation 238 && window.performance.navigation.type === window.performance.navigation.TYPE_BACK_FORWARD) { 239 backButton = true; 240 } 241 } 242 243 // If the back button is pressed, delay Drupal's attaching of behaviors. 244 if (backButton) { 245 var attachBehaviors = Drupal.attachBehaviors; 246 Drupal.attachBehaviors = function (context, settings) { 247 setTimeout(function (context, settings) { 248 attachBehaviors(context, settings); 249 }, 300); 250 }; 251 } 252 } 253 254})(jQuery, Drupal); 255; 256/** 257* DO NOT EDIT THIS FILE. 258* See the following change record for more information, 259* https://www.drupal.org/node/2815083 260* @preserve 261**/ 262(function ($, Drupal) { 263 var states = { 264 postponed: [] 265 }; 266 Drupal.states = states; 267 function invert(a, invertState) { 268 return invertState && typeof a !== 'undefined' ? !a : a; 269 } 270 function _compare2(a, b) { 271 if (a === b) { 272 return typeof a === 'undefined' ? a : true; 273 } 274 return typeof a === 'undefined' || typeof b === 'undefined'; 275 } 276 function ternary(a, b) { 277 if (typeof a === 'undefined') { 278 return b; 279 } 280 if (typeof b === 'undefined') { 281 return a; 282 } 283 return a && b; 284 } 285 Drupal.behaviors.states = { 286 attach: function attach(context, settings) { 287 var $states = $(context).find('[data-drupal-states]'); 288 var il = $states.length; 289 var _loop = function _loop(i) { 290 var config = JSON.parse($states[i].getAttribute('data-drupal-states')); 291 Object.keys(config || {}
291).forEach(function (state) { 292 new states.Dependent({ 293 element: $($states[i]), 294 state: states.State.sanitize(state), 295 constraints: config[state] 296 }); 297 }); 298 }; 299 for (var i = 0; i < il; i++) { 300 _loop(i); 301 } 302 while (states.postponed.length) { 303 states.postponed.shift()(); 304 } 305 } 306 }; 307 states.Dependent = function (args) { 308 var _this = this; 309 $.extend(this, { 310 values: {}, 311 oldValue: null 312 }, args); 313 this.dependees = this.getDependees(); 314 Object.keys(this.dependees || {}).forEach(function (selector) { 315 _this.initializeDependee(selector, _this.dependees[selector]); 316 }); 317 }; 318 states.Dependent.comparisons = { 319 RegExp: function RegExp(reference, value) { 320 return reference.test(value); 321 }, 322 Function: function Function(reference, value) { 323 return reference(value); 324 }, 325 Number: function Number(reference, value) { 326 return typeof value === 'string' ? _compare2(reference.toString(), value) : _compare2(reference, value); 327 } 328 }; 329 states.Dependent.prototype = { 330 initializeDependee: function initializeDependee(selector, dependeeStates) { 331 var _this2 = this; 332 this.values[selector] = {}; 333 Object.keys(dependeeStates).forEach(function (i) { 334 var state = dependeeStates[i]; 335 if ($.inArray(state, dependeeStates) === -1) { 336 return; 337 } 338 state = states.State.sanitize(state); 339 _this2.values[selector][state.name] = null; 340 $(selector).on("state:".concat(state), { 341 selector: selector, 342 state: state 343 }, function (e) { 344 _this2.update(e.data.selector, e.data.state, e.value); 345 }); 346 new states.Trigger({ 347 selector: selector, 348 state: state 349 }); 350 }); 351 }, 352 compare: function compare(reference, selector, state) { 353 var value = this.values[selector][state.name]; 354 if (reference.constructor.name in states.Dependent.comparisons) { 355 return states.Dependent.comparisons[reference.constructor.name](reference, value); 356 } 357 return _compare2(reference, value); 358 }, 359 update: function update(selector, state, value) { 360 if (value !== this.values[selector][state.name]) { 361 this.values[selector][state.name] = value; 362 this.reevaluate(); 363 } 364 }, 365 reevaluate: function reevaluate() { 366 var value = this.verifyConstraints(this.constraints); 367 if (value !== this.oldValue) { 368 this.oldValue = value; 369 value = invert(value, this.state.invert); 370 this.element.trigger({ 371 type: "state:".concat(this.state), 372 value: value, 373 trigger: true 374 }); 375 } 376 }, 377 verifyConstraints: function verifyConstraints(constraints, selector) { 378 var result; 379 if ($.isArray(constraints)) { 380 var hasXor = $.inArray('xor', constraints) === -1; 381 var len = constraints.length; 382 for (var i = 0; i < len; i++) { 383 if (constraints[i] !== 'xor') { 384 var constraint = this.checkConstraints(constraints[i], selector, i); 385 if (constraint && (hasXor || result)) { 386 return hasXor; 387 } 388 result = result || constraint; 389 } 390 } 391 } else if ($.isPlainObject(constraints)) { 392 for (var n in constraints) { 393 if (constraints.hasOwnProperty(n)) { 394 result = ternary(result, this.checkConstraints(constraints[n], selector, n)); 395 if (result === false) { 396 return false; 397 } 398 } 399 } 400 } 401 return result; 402 }, 403 checkConstraints: function checkConstraints(value, selector, state) { 404 if (typeof state !== 'string' || /[0-9]/.test(state[0])) { 405 state = null; 406 } else if (typeof selector === 'undefined') { 407 selector = state; 408 state = null; 409 } 410 if (state !== null) { 411 state = states.State.sanitize(state); 412 return invert(this.compare(value, selector, state), state.invert); 413 } 414 return this.verifyConstraints(value, selector); 415 }, 416 getDependees: function getDependees() { 417 var cache = {}; 418 var _compare = this.compare; 419 this.compare = function (reference, selector, state) { 420 (cache[selector] || (cache[selector] = [])).push(state.name); 421 }; 422 this.verifyConstraints(this.constraints); 423 this.compare = _compare; 424 return cache; 425 } 426 }; 427 states.Trigger = function (args) { 428 $.extend(this, args); 429 if (this.state in states.Trigger.states) { 430 this.element = $(this.selector); 431 if (!this.element.data("trigger:".concat(this.state))) { 432 this.initialize(); 433 } 434 } 435 }; 436 states.Trigger.prototype = { 437 initialize: function initialize() { 438 var _this3 = this; 439 var trigger = states.Trigger.states[this.state]; 440 if (typeof trigger === 'function') { 441 trigger.call(window, this.element); 442 } else { 443 Object.keys(trigger || {}
443).forEach(function (event) { 444 _this3.defaultTrigger(event, trigger[event]); 445 }); 446 } 447 this.element.data("trigger:".concat(this.state), true); 448 }, 449 defaultTrigger: function defaultTrigger(event, valueFn) { 450 var oldValue = valueFn.call(this.element); 451 this.element.on(event, $.proxy(function (e) { 452 var value = valueFn.call(this.element, e); 453 if (oldValue !== value) { 454 this.element.trigger({ 455 type: "state:".concat(this.state), 456 value: value, 457 oldValue: oldValue 458 }); 459 oldValue = value; 460 } 461 }, this)); 462 states.postponed.push($.proxy(function () { 463 this.element.trigger({ 464 type: "state:".concat(this.state), 465 value: oldValue, 466 oldValue: null 467 }); 468 }, this)); 469 } 470 }; 471 states.Trigger.states = { 472 empty: { 473 keyup: function keyup() { 474 return this.val() === ''; 475 }, 476 change: function change() { 477 return this.val() === ''; 478 } 479 }, 480 checked: { 481 change: function change() { 482 var checked = false; 483 this.each(function () { 484 checked = $(this).prop('checked'); 485 return !checked; 486 }); 487 return checked; 488 } 489 }, 490 value: { 491 keyup: function keyup() { 492 if (this.length > 1) { 493 return this.filter(':checked').val() || false; 494 } 495 return this.val(); 496 }, 497 change: function change() { 498 if (this.length > 1) { 499 return this.filter(':checked').val() || false; 500 } 501 return this.val(); 502 } 503 }, 504 collapsed: { 505 collapsed: function collapsed(e) { 506 return typeof e !== 'undefined' && 'value' in e ? e.value : !this.is('[open]'); 507 } 508 } 509 }; 510 states.State = function (state) { 511 this.pristine = state; 512 this.name = state; 513 var process = true; 514 do { 515 while (this.name.charAt(0) === '!') { 516 this.name = this.name.substring(1); 517 this.invert = !this.invert; 518 } 519 if (this.name in states.State.aliases) { 520 this.name = states.State.aliases[this.name]; 521 } else { 522 process = false; 523 } 524 } while (process); 525 }; 526 states.State.sanitize = function (state) { 527 if (state instanceof states.State) { 528 return state; 529 } 530 return new states.State(state); 531 }; 532 states.State.aliases = { 533 enabled: '!disabled', 534 invisible: '!visible', 535 invalid: '!valid', 536 untouched: '!touched', 537 optional: '!required', 538 filled: '!empty', 539 unchecked: '!checked', 540 irrelevant: '!relevant', 541 expanded: '!collapsed', 542 open: '!collapsed', 543 closed: 'collapsed', 544 readwrite: '!readonly' 545 }; 546 states.State.prototype = { 547 invert: false, 548 toString: function toString() { 549 return this.name; 550 } 551 }; 552 var $document = $(document); 553 $document.on('state:disabled', function (e) { 554 if (e.trigger) { 555 $(e.target).closest('.js-form-item, .js-form-submit, .js-form-wrapper').toggleClass('form-disabled', e.value).find('select, input, textarea').prop('disabled', e.value); 556 } 557 }); 558 $document.on('state:required', function (e) { 559 if (e.trigger) { 560 if (e.value) { 561 var label = "label".concat(e.target.id ? "[for=".concat(e.target.id, "]") : ''); 562 var $label = $(e.target).attr({ 563 required: 'required', 564 'aria-required': 'true' 565 }).closest('.js-form-item, .js-form-wrapper').find(label); 566 if (!$label.hasClass('js-form-required').length) { 567 $label.addClass('js-form-required form-required'); 568 } 569 } else { 570 $(e.target).removeAttr('required aria-required').closest('.js-form-item, .js-form-wrapper').find('label.js-form-required').removeClass('js-form-required form-required'); 571 } 572 } 573 }); 574 $document.on('state:visible', function (e) { 575 if (e.trigger) { 576 $(e.target).closest('.js-form-item, .js-form-submit, .js-form-wrapper').toggle(e.value); 577 } 578 }); 579 $document.on('state:checked', function (e) { 580 if (e.trigger) { 581 $(e.target).closest('.js-form-item, .js-form-wrapper').find('input').prop('checked', e.value).trigger('change'); 582 } 583 }); 584 $document.on('state:collapsed', function (e) { 585 if (e.trigger) { 586 if ($(e.target).is('[open]') === e.value) { 587 $(e.target).find('> summary').trigger('click'); 588 } 589 } 590 }); 591})(jQuery, Drupal);; 592/** 593 * @file 594 * JavaScript behaviors for custom webform #states. 595 */ 596 597(function ($, Drupal, once) { 598 599 'use strict'; 600 601 Drupal.webform = Drupal.webform || {}; 602 Drupal.webform.states = Drupal.webform.states || {}; 603 Drupal.webform.states.slideDown = Drupal.webform.states.slideDown || {}; 604 Drupal.webform.states.slideDown.duration = 'slow'; 605 Drupal.webform.states.slideUp = Drupal.webform.states.slideUp || {}; 606 Drupal.webform.states.slideUp.duration = 'fast'; 607 608 /* ************************************************************************ */ 609 // jQuery functions. 610 /* ************************************************************************ */ 611 612 /** 613 * Check if an element has a specified data attribute. 614 * 615 * @param {string} data 616 * The data attribute name. 617 * 618 * @return {boolean} 619 * TRUE if an element has a specified data attribute. 620 */ 621 $.fn.hasData = function (data) { 622 return (typeof this.data(data) !== 'undefined'); 623 }; 624 625 /**
626 * Check if element is within the webform or not. 627 * 628 * @return {boolean} 629 * TRUE if element is within the webform. 630 */ 631 $.fn.isWebform = function () { 632 return $(this).closest('form.webform-submission-form, form[id^="webform"], form[data-is-webform]').length ? true : false; 633 }; 634 635 /** 636 * Check if element is to be treated as a webform element. 637 * 638 * @return {boolean} 639 * TRUE if element is to be treated as a webform element. 640 */ 641 $.fn.isWebformElement = function () { 642 return ($(this).isWebform() || $(this).closest('[data-is-webform-element]').length) ? true : false; 643 }; 644 645 /* ************************************************************************ */ 646 // Trigger. 647 /* ************************************************************************ */ 648 649 // The change event is triggered by cut-n-paste and select menus. 650 // Issue #2445271: #states element empty check not triggered on mouse 651 // based paste. 652 // @see https://www.drupal.org/node/2445271 653 Drupal.states.Trigger.states.empty.change = function change() { 654 return this.val() === ''; 655 }; 656 657 /* ************************************************************************ */ 658 // Dependents. 659 /* ************************************************************************ */ 660 661 // Apply solution included in #1962800 patch. 662 // Issue #1962800: Form #states not working with literal integers as 663 // values in IE11. 664 // @see https://www.drupal.org/project/drupal/issues/1962800 665 // @see https://www.drupal.org/files/issues/core-states-not-working-with-integers-ie11_1962800_46.patch 666 // 667 // This issue causes pattern, less than, and greater than support to break. 668 // @see https://www.drupal.org/project/webform/issues/2981724 669 var states = Drupal.states; 670 Drupal.states.Dependent.prototype.compare = function compare(reference, selector, state) { 671 var value = this.values[selector][state.name]; 672 673 var name = reference.constructor.name; 674 if (!name) { 675 name = $.type(reference); 676 677 name = name.charAt(0).toUpperCase() + name.slice(1); 678 } 679 if (name in states.Dependent.comparisons) { 680 return states.Dependent.comparisons[name](reference, value); 681 } 682 683 if (reference.constructor.name in states.Dependent.comparisons) { 684 return states.Dependent.comparisons[reference.constructor.name](reference, value); 685 } 686 687 return _compare2(reference, value); 688 }; 689 function _compare2(a, b) { 690 if (a === b) { 691 return typeof a === 'undefined' ? a : true; 692 } 693 694 return typeof a === 'undefined' || typeof b === 'undefined'; 695 } 696 697 // Adds pattern, less than, and greater than support to #state API. 698 // @see http://drupalsun.com/julia-evans/2012/03/09/extending-form-api-states-regular-expressions 699 Drupal.states.Dependent.comparisons.Object = function (reference, value) { 700 if ('pattern' in reference) { 701 return (new RegExp(reference['pattern'])).test(value); 702 } 703 else if ('!pattern' in reference) { 704 return !((new RegExp(reference['!pattern'])).test(value)); 705 } 706 else if ('less' in reference) { 707 return (value !== '' && parseFloat(reference['less']) > parseFloat(value)); 708 } 709 else if ('less_equal' in reference) { 710 return (value !== '' && parseFloat(reference['less_equal']) >= parseFloat(value)); 711 } 712 else if ('greater' in reference) { 713 return (value !== '' && parseFloat(reference['greater']) < parseFloat(value)); 714 } 715 else if ('greater_equal' in reference) { 716 return (value !== '' && parseFloat(reference['greater_equal']) <= parseFloat(value)); 717 } 718 else if ('between' in reference || '!between' in reference) { 719 if (value === '') { 720 return false; 721 } 722 723 var between = reference['between'] || reference['!between']; 724 var betweenParts = between.split(':'); 725 var greater = betweenParts[0]; 726 var less = (typeof betweenParts[1] !== 'undefined') ? betweenParts[1] : null; 727 var isGreaterThan = (greater === null || greater === '' || parseFloat(value) >= parseFloat(greater)); 728 var isLessThan = (less === null || less === '' || parseFloat(value) <= parseFloat(less)); 729 var result = (isGreaterThan && isLessThan); 730 return (reference['!between']) ? !result : result; 731 } 732 else { 733 return reference.indexOf(value) !== false; 734 } 735 }; 736 737 /* ************************************************************************ */ 738 // States events. 739 /* ************************************************************************ */ 740 741 var $document = $(document); 742 743 $document.on('state:required', function (e) { 744 if (e.trigger && $(e.target).isWebformElement()) { 745 var $target = $(e.target); 746 // Fix #required file upload. 747 // @see Issue #2860529: Conditional required File upload field don't work. 748 toggleRequired($target.find('input[type="file"]'), e.value); 749 750 // Fix #required for radios and likert. 751 // @see Issue #2856795: If radio buttons are required but not filled form is nevertheless submitted. 752 if ($target.is('.js-form-type-radios, .js-form-type-webform-radios-other, .js-webform-type-radios, .js-webform-type-webform-radios-other, .js-webform-type-webform-entity-radios, .webform-likert-table')) { 753 $target.toggleClass('required', e.value); 754 toggleRequired($target.find('input[type="radio"]'), e.value); 755 } 756 757 // Fix #required for checkboxes. 758 // @see Issue #2938414: Checkboxes don't support #states required. 759 // @see checkboxRequiredhandler 760 if ($target.is('.js-form-type-checkboxes, .js-form-type-webform-checkboxes-other, .js-webform-type-checkboxes, .js-webform-type-webform-checkboxes-other')) { 761 $target.toggleClass('required', e.value); 762 var $checkboxes = $target.find('input[type="checkbox"]'); 763 if (e.value) { 764 // Add event handler. 765 $checkboxes.on('click', statesCheckboxesRequiredEventHandler); 766 // Initialize and add required attribute. 767 checkboxesRequired($target); 768 } 769 else { 770 // Remove event handler. 771 $checkboxes.off('click', statesCheckboxesRequiredEventHandler); 772 // Remove required attribute. 773 toggleRequired($checkboxes, false); 774 } 775 } 776 777 // Fix #required for tableselect. 778 // @see Issue #3212581: Table select does not trigger client side validation 779 if ($target.is('.js-webform-tableselect')) { 780 $target.toggleClass('required', e.value); 781 var isMultiple = $target.is('[multiple]'); 782 if (isMultiple) { 783 // Checkboxes. 784 var $tbody = $target.find('tbody'); 785 var $checkboxes = $tbody.find('input[type="checkbox"]'); 786 copyRequireMessage($target, $checkboxes); 787 if (e.value) { 788 $checkboxes.on('click change', statesCheckboxesRequiredEventHandler); 789 checkboxesRequired($tbody); 790 } 791 else { 792 $checkboxes.off('click change ', statesCheckboxesRequiredEventHandler); 793 toggleRequired($tbody, false); 794 } 795 } 796 else { 797 // Radios. 798 var $radios = $target.find('input[type="radio"]'); 799 copyRequireMessage($target, $radios); 800 toggleRequired($radios, e.value); 801 } 802 } 803 804 // Fix required label for elements without the for attribute. 805 // @see Issue #3145300: Conditional Visible Select Other not working. 806 if ($target.is('.js-form-type-webform-select-other, .js-webform-type-webform-select-other')) { 807 var $select = $target.find('select'); 808 toggleRequired($select, e.value); 809 copyRequireMessage($target, $select); 810 } 811 if ($target.find('> label:not([for])').length) { 812 $target.find('> label').toggleClass('js-form-required form-required', e.value); 813 } 814 815 // Fix required label for checkboxes and radios. 816 // @see Issue #2938414: Checkboxes don't support #states required 817 // @see Issue #2731991: Setting required on radios marks all options required. 818 // @see Issue #2856315: Conditional Logic - Requiring Radios in a Fieldset. 819 // Fix #required for fieldsets. 820 // @see Issue #2977569: Hidden fieldsets that become visible with conditional logic cannot be made required. 821 if ($target.is('.js-webform-type-radios, .js-webform-type-checkboxes, fieldset')) { 822 $target.find('legend span.fieldset-legend:not(.visually-hidden),legend span.fieldset__label:not(.visually-hidden)').toggleClass('js-form-required form-required', e.value); 823 } 824 825 // Issue #2986017: Fieldsets shouldn't have required attribute. 826 if ($target.is('fieldset')) { 827 $target.removeAttr('required aria-required'); 828 } 829 } 830 }); 831 832 $document.on('state:checked', function (e) { 833 if (e.trigger) { 834 $(e.target).trigger('change'); 835 } 836 }); 837 838 $document.on('state:readonly', function (e) { 839 if (e.trigger && $(e.target).isWebformElement()) { 840 $(e.target).prop('readonly', e.value).closest('.js-form-item, .js-form-wrapper').toggleClass('webform-readonly', e.value).find('input, textarea').prop('readonly', e.value); 841 842 // Trigger webform:readonly. 843 $(e.target).trigger('webform:readonly') 844 .find('select, input, textarea, button').trigger('webform:readonly'); 845 } 846 }); 847 848 $document.on('state:visible state:visible-slide', function (e) { 849 if (e.trigger && $(e.target).isWebformElement()) { 850 if (e.value) { 851 $(':input', e.target).addBack().each(function () { 852 restoreValueAndRequired(this); 853 triggerEventHandlers(this); 854 }); 855 } 856 else { 857 // @see https://www.sitepoint.com/jquery-function-clear-form-data/ 858 $(':input', e.target).addBack().each(function () { 859 backupValueAndRequired(this); 860 clearValueAndRequired(this); 861 triggerEventHandlers(this); 862 }); 863 } 864 } 865 }); 866 867 $document.on('state:visible-slide', function (e) { 868 if (e.trigger && $(e.target).isWebformElement()) { 869 var effect = e.value ? 'slideDown' : 'slideUp'; 870 var duration = Drupal.webform.states[effect].duration; 871 $(e.target).closest('.js-form-item, .js-form-submit, .js-form-wrapper')[effect](duration); 872 } 873 }); 874 Drupal.states.State.aliases['invisible-slide'] = '!visible-slide'; 875 876 $document.on('state:disabled', function (e) { 877 if (e.trigger && $(e.target).isWebformElement()) { 878 // Make sure disabled property is set before triggering webform:disabled. 879 // Copied from: core/misc/states.js 880 $(e.target) 881 .prop('disabled', e.value) 882 .closest('.js-form-item, .js-form-submit, .js-form-wrapper').toggleClass('form-disabled', e.value) 883 .find('select, input, textarea, button').prop('disabled', e.value); 884 885 // Never disable hidden file[fids] because the existing values will 886 // be completely lost when the webform is submitted. 887 var fileElements = $(e.target) 888 .find(':input[type="hidden"][name$="[fids]"]'); 889 if (fileElements.length) { 890 // Remove 'disabled' attribute from fieldset which will block 891 // all disabled elements from being submitted. 892 if ($(e.target).is('fieldset')) { 893 $(e.target).prop('disabled', false); 894 } 895 fileElements.removeAttr('disabled'); 896 } 897 898 // Trigger webform:disabled. 899 $(e.target).trigger('webform:disabled') 900 .find('select, input, textarea, button').trigger('webform:disabled'); 901 } 902 }); 903 904 /* ************************************************************************ */ 905 // Behaviors. 906 /* ************************************************************************ */ 907 908 /** 909 * Adds HTML5 validation to required checkboxes. 910 * 911 * @type {Drupal~behavior} 912 * 913 * @see https://www.drupal.org/project/webform/issues/3068998 914 */ 915 Drupal.behaviors.webformCheckboxesRequired = { 916 attach: function (context) { 917 $(once('webform-checkboxes-required', '.js-form-type-checkboxes.required, .js-form-type-webform-checkboxes-other.required, .js-webform-type-checkboxes.required, .js-webform-type-webform-checkboxes-other.required, .js-webform-type-webform-radios-other.checkboxes', context)) 918 .each(function () { 919 var $element = $(this); 920 $element.find('input[type="checkbox"]').on('click', statesCheckboxesRequiredEventHandler); 921 setTimeout(function () {checkboxesRequired($element);}); 922 }); 923 } 924 }; 925 926 /** 927 * Adds HTML5 validation to required radios. 928 * 929 * @type {Drupal~behavior} 930 * 931 * @see https://www.drupal.org/project/webform/issues/2856795 932 */ 933 Drupal.behaviors.webformRadiosRequired = { 934 attach: function (context) { 935 $(once('webform-radios-required', '.js-form-type-radios, .js-form-type-webform-radios-other, .js-webform-type-radios, .js-webform-type-webform-radios-other, .js-webform-type-webform-entity-radios, .js-webform-type-webform-scale', context)) 936 .each(function () { 937 var $element = $(this); 938 setTimeout(function () {radiosRequired($element);}); 939 }); 940 } 941 }; 942 943 /** 944 * Adds HTML5 validation to required table select. 945 * 946 * @type {Drupal~behavior} 947 * 948 * @see https://www.drupal.org/project/webform/issues/2856795 949 */ 950 Drupal.behaviors.webformTableSelectRequired = { 951 attach: function (context) { 952 $(once('webform-tableselect-required','.js-webform-tableselect.required', context)) 953 .each(function () { 954 var $element = $(this); 955 var $tbody = $element.find('tbody'); 956 var isMultiple = $element.is('[multiple]'); 957 958 if (isMultiple) { 959 // Check all checkbox triggers checkbox 'change' event on 960 // select and deselect all. 961 // @see Drupal.tableSelect 962 $tbody.find('input[type="checkbox"]').on('click change', function () { 963 checkboxesRequired($tbody); 964 }); 965 } 966 967 setTimeout(function () { 968 isMultiple ? checkboxesRequired($tbody) : radiosRequired($element); 969 }); 970 }); 971 } 972 }; 973 974 /** 975 * Add HTML5 multiple checkboxes required validation. 976 * 977 * @param {jQuery} $element
978 * An jQuery object containing HTML5 radios. 979 * 980 * @see https://stackoverflow.com/a/37825072/145846 981 */ 982 function checkboxesRequired($element) { 983 var $firstCheckbox = $element.find('input[type="checkbox"]').first(); 984 var isChecked = $element.find('input[type="checkbox"]').is(':checked'); 985 toggleRequired($firstCheckbox, !isChecked); 986 copyRequireMessage($element, $firstCheckbox); 987 } 988 989 /** 990 * Add HTML5 radios required validation. 991 * 992 * @param {jQuery} $element 993 * An jQuery object containing HTML5 radios. 994 * 995 * @see https://www.drupal.org/project/webform/issues/2856795 996 */ 997 function radiosRequired($element) { 998 var $radios = $element.find('input[type="radio"]'); 999 var isRequired = $element.hasClass('required'); 1000 toggleRequired($radios, isRequired); 1001 copyRequireMessage($element, $radios); 1002 } 1003 1004 /* ************************************************************************ */ 1005 // Event handlers. 1006 /* ************************************************************************ */ 1007 1008 /** 1009 * Trigger #states API HTML5 multiple checkboxes required validation. 1010 * 1011 * @see https://stackoverflow.com/a/37825072/145846 1012 */ 1013 function statesCheckboxesRequiredEventHandler() { 1014 var $element = $(this).closest('.js-webform-type-checkboxes, .js-webform-type-webform-checkboxes-other'); 1015 checkboxesRequired($element); 1016 } 1017 1018 /** 1019 * Trigger an input's event handlers. 1020 * 1021 * @param {element} input 1022 * An input. 1023 */ 1024 function triggerEventHandlers(input) { 1025 var $input = $(input); 1026 var type = input.type; 1027 var tag = input.tagName.toLowerCase(); 1028 // Add 'webform.states' as extra parameter to event handlers. 1029 // @see Drupal.behaviors.webformUnsaved 1030 var extraParameters = ['webform.states']; 1031 if (type === 'checkbox' || type === 'radio') { 1032 $input 1033 .trigger('change', extraParameters) 1034 .trigger('blur', extraParameters); 1035 } 1036 else if (tag === 'select') { 1037 // Do not trigger the onchange event for Address element's country code 1038 // when it is initialized. 1039 // @see \Drupal\address\Element\Country 1040 if ($input.closest('.webform-type-address').length) { 1041 if (!$input.data('webform-states-address-initialized') 1042 && $input.attr('autocomplete') === 'country' 1043 && $input.val() === $input.find("option[selected]").attr('value')) { 1044 return; 1045 } 1046 $input.data('webform-states-address-initialized', true); 1047 } 1048 1049 $input 1050 .trigger('change', extraParameters) 1051 .trigger('blur', extraParameters); 1052 } 1053 else if (type !== 'submit' && type !== 'button' && type !== 'file') { 1054 // Make sure input mask is removed and then reset when value is restored. 1055 // @see https://www.drupal.org/project/webform/issues/3124155 1056 // @see https://www.drupal.org/project/webform/issues/3202795 1057 var hasInputMask = ($.fn.inputmask && $input.hasClass('js-webform-input-mask')); 1058 hasInputMask && $input.inputmask('remove'); 1059 1060 $input 1061 .trigger('input', extraParameters) 1062 .trigger('change', extraParameters) 1063 .trigger('keydown', extraParameters) 1064 .trigger('keyup', extraParameters) 1065 .trigger('blur', extraParameters); 1066 1067 hasInputMask && $input.inputmask(); 1068 } 1069 } 1070 1071 /* ************************************************************************ */ 1072 // Backup and restore value functions. 1073 /* ************************************************************************ */ 1074 1075 /** 1076 * Backup an input's current value and required attribute 1077 * 1078 * @param {element} input 1079 * An input. 1080 */ 1081 function backupValueAndRequired(input) { 1082 var $input = $(input); 1083 var type = input.type; 1084 var tag = input.tagName.toLowerCase(); // Normalize case. 1085 1086 // Backup required. 1087 if ($input.prop('required') && !$input.hasData('webform-required')) { 1088 $input.data('webform-required', true); 1089 } 1090 1091 // Backup value. 1092 if (!$input.hasData('webform-value')) { 1093 if (type === 'checkbox' || type === 'radio') { 1094 $input.data('webform-value', $input.prop('checked')); 1095 } 1096 else if (tag === 'select') { 1097 var values = []; 1098 $input.find('option:selected').each(function (i, option) { 1099 values[i] = option.value; 1100 }); 1101 $input.data('webform-value', values); 1102 } 1103 else if (type !== 'submit' && type !== 'button') { 1104 $input.data('webform-value', input.value); 1105 } 1106 } 1107 } 1108 1109 /** 1110 * Restore an input's value and required attribute. 1111 * 1112 * @param {element} input 1113 * An input. 1114 */ 1115 function restoreValueAndRequired(input) { 1116 var $input = $(input); 1117 1118 // Restore value. 1119 var value = $input.data('webform-value'); 1120 if (typeof value !== 'undefined') { 1121 var type = input.type; 1122 var tag = input.tagName.toLowerCase(); // Normalize case. 1123 1124 if (type === 'checkbox' || type === 'radio') { 1125 $input.prop('checked', value); 1126 } 1127 else if (tag === 'select') { 1128 $.each(value, function (i, option_value) { 1129 // Prevent "Syntax error, unrecognized expression" error by 1130 // escaping single quotes. 1131 // @see https://forum.jquery.com/topic/escape-characters-prior-to-using-selector 1132 option_value = option_value.replace(/'/g, "\\\'"); 1133 $input.find("option[value='" + option_value + "']").prop('selected', true); 1134 }); 1135 } 1136 else if (type !== 'submit' && type !== 'button') { 1137 input.value = value; 1138 } 1139 $input.removeData('webform-value'); 1140 } 1141 1142 // Restore required. 1143 var required = $input.data('webform-required'); 1144 if (typeof required !== 'undefined') { 1145 if (required) { 1146 $input.prop('required', true); 1147 } 1148 $input.removeData('webform-required'); 1149 } 1150 } 1151 1152 /** 1153 * Clear an input's value and required attributes. 1154 * 1155 * @param {element} input 1156 * An input. 1157 */ 1158 function clearValueAndRequired(input) { 1159 var $input = $(input); 1160 1161 // Check for #states no clear attribute.
1162 // @see https://css-tricks.com/snippets/jquery/make-an-jquery-hasattr/ 1163 if ($input.closest('[data-webform-states-no-clear]').length) { 1164 return; 1165 } 1166 1167 // Clear value. 1168 var type = input.type; 1169 var tag = input.tagName.toLowerCase(); // Normalize case. 1170 if (type === 'checkbox' || type === 'radio') { 1171 $input.prop('checked', false); 1172 } 1173 else if (tag === 'select') { 1174 if ($input.find('option[value=""]').length) { 1175 $input.val(''); 1176 } 1177 else { 1178 input.selectedIndex = -1; 1179 } 1180 } 1181 else if (type !== 'submit' && type !== 'button') { 1182 input.value = (type === 'color') ? '#000000' : ''; 1183 } 1184 1185 // Clear required. 1186 $input.prop('required', false); 1187 } 1188 1189 /* ************************************************************************ */ 1190 // Helper functions. 1191 /* ************************************************************************ */ 1192 1193 /** 1194 * Toggle an input's required attributes. 1195 * 1196 * @param {element} $input 1197 * An input. 1198 * @param {boolean} required 1199 * Is input required. 1200 */ 1201 function toggleRequired($input, required) { 1202 var isCheckboxOrRadio = ($input.attr('type') === 'radio' || $input.attr('type') === 'checkbox'); 1203 if (required) { 1204 if (isCheckboxOrRadio) { 1205 $input.attr({'required': 'required'}); 1206 } 1207 else { 1208 $input.attr({'required': 'required', 'aria-required': 'true'}); 1209 } 1210 } 1211 else { 1212 if (isCheckboxOrRadio) { 1213 $input.removeAttr('required'); 1214 } 1215 else { 1216 $input.removeAttr('required aria-required'); 1217 } 1218 } 1219 } 1220 1221 /** 1222 * Copy the clientside_validation.module's message. 1223 * 1224 * @param {jQuery} $source 1225 * The source element. 1226 * @param {jQuery} $destination 1227 * The destination element. 1228 */ 1229 function copyRequireMessage($source, $destination) { 1230 if ($source.attr('data-msg-required')) { 1231 $destination.attr('data-msg-required', $source.attr('data-msg-required')); 1232 } 1233 } 1234 1235})(jQuery, Drupal, once); 1236; 1237/** 1238 * @file 1239 * JavaScript behaviors for webforms. 1240 */ 1241 1242(function ($, Drupal, once) { 1243 1244 'use strict'; 1245 1246 /** 1247 * Remove single submit event listener. 1248 * 1249 * @type {Drupal~behavior} 1250 * 1251 * @prop {Drupal~behaviorAttach} attach 1252 * Attaches the behavior for removing single submit event listener. 1253 * 1254 * @see Drupal.behaviors.formSingleSubmit 1255 */ 1256 Drupal.behaviors.webformRemoveFormSingleSubmit = { 1257 attach: function attach() { 1258 function onFormSubmit(e) { 1259 var $form = $(e.currentTarget); 1260 $form.removeAttr('data-drupal-form-submit-last'); 1261 } 1262 $(once('webform-single-submit', 'body')) 1263 .on('submit.singleSubmit', 'form.webform-remove-single-submit', onFormSubmit); 1264 } 1265 }; 1266 1267 /** 1268 * Prevent webform autosubmit on wizard pages. 1269 * 1270 * @type {Drupal~behavior} 1271 * 1272 * @prop {Drupal~behaviorAttach} attach 1273 * Attaches the behavior for disabling webform autosubmit. 1274 * Wizard pages need to be progressed with the Previous or Next buttons, 1275 * not by pressing Enter. 1276 */ 1277 Drupal.behaviors.webformDisableAutoSubmit = { 1278 attach: function (context) { 1279 // Not using context so that inputs loaded via Ajax will have autosubmit 1280 // disabled. 1281 // @see http://stackoverflow.com/questions/11235622/jquery-disable-form-submit-on-enter 1282 $(once('webform-disable-autosubmit', $('.js-webform-disable-autosubmit input').not(':button, :submit, :reset, :image, :file'))) 1283 .on('keyup keypress', function (e) { 1284 if (e.which === 13) { 1285 e.preventDefault(); 1286 return false; 1287 } 1288 }); 1289 } 1290 }; 1291 1292 /** 1293 * Custom required and pattern validation error messages. 1294 * 1295 * @type {Drupal~behavior} 1296 * 1297 * @prop {Drupal~behaviorAttach} attach 1298 * Attaches the behavior for the webform custom required and pattern 1299 * validation error messages. 1300 * 1301 * @see http://stackoverflow.com/questions/5272433/html5-form-required-attribute-set-custom-validation-message 1302 **/ 1303 Drupal.behaviors.webformRequiredError = { 1304 attach: function (context) { 1305 $(once('webform-required-error', $(context).find(':input[data-webform-required-error], :input[data-webform-pattern-error]'))) 1306 .on('invalid', function () { 1307 this.setCustomValidity(''); 1308 if (this.valid) { 1309 return; 1310 } 1311 1312 if (this.validity.patternMismatch && $(this).attr('data-webform-pattern-error')) { 1313 this.setCustomValidity($(this).attr('data-webform-pattern-error')); 1314 } 1315 else if (this.validity.valueMissing && $(this).attr('data-webform-required-error')) { 1316 this.setCustomValidity($(this).attr('data-webform-required-error')); 1317 } 1318 }) 1319 .on('input change', function () { 1320 // Find all related elements by name and reset custom validity. 1321 // This specifically applies to required radios and checkboxes. 1322 var name = $(this).attr('name'); 1323 $(this.form).find(':input[name="' + name + '"]').each(function () { 1324 this.setCustomValidity(''); 1325 }); 1326 }); 1327 } 1328 }; 1329 1330 // When #state:required is triggered we need to reset the target elements 1331 // custom validity. 1332 $(document).on('state:required', function (e) { 1333 $(e.target).filter(':input[data-webform-required-error]') 1334 .each(function () {this.setCustomValidity('');}); 1335 }); 1336 1337})(jQuery, Drupal, once); 1338; 1339/** 1340 * @file 1341 * JavaScript behaviors for details element. 1342 */ 1343 1344(function ($, Drupal, once) { 1345 1346 'use strict'; 1347 1348 // Determine if local storage exists and is enabled. 1349 // This approach is copied from Modernizr. 1350 // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731 1351 var hasLocalStorage = (function () { 1352 try { 1353 localStorage.setItem('webform', 'webform'); 1354 localStorage.removeItem('webform'); 1355 return true; 1356 } 1357 catch (e) { 1358 return false;
1359 } 1360 }()); 1361 1362 /** 1363 * Attach handler to save details open/close state. 1364 * 1365 * @type {Drupal~behavior} 1366 */ 1367 Drupal.behaviors.webformDetailsSave = { 1368 attach: function (context) { 1369 if (!hasLocalStorage) { 1370 return; 1371 } 1372 1373 // Summary click event handler. 1374 $(once('webform-details-summary-save', 'details > summary', context)).on('click', function () { 1375 var $details = $(this).parent(); 1376 1377 // @see https://css-tricks.com/snippets/jquery/make-an-jquery-hasattr/ 1378 if ($details[0].hasAttribute('data-webform-details-nosave')) { 1379 return; 1380 } 1381 1382 var name = Drupal.webformDetailsSaveGetName($details); 1383 if (!name) { 1384 return; 1385 } 1386 1387 var open = ($details.attr('open') !== 'open') ? '1' : '0'; 1388 localStorage.setItem(name, open); 1389 }); 1390 1391 // Initialize details open state via local storage. 1392 $(once('webform-details-save', 'details', context)).each(function () { 1393 var $details = $(this); 1394 1395 var name = Drupal.webformDetailsSaveGetName($details); 1396 if (!name) { 1397 return; 1398 } 1399 1400 var open = localStorage.getItem(name); 1401 if (open === null) { 1402 return; 1403 } 1404 1405 if (open === '1') { 1406 $details.attr('open', 'open'); 1407 } 1408 else { 1409 $details.removeAttr('open'); 1410 } 1411 }); 1412 } 1413 1414 }; 1415 1416 /** 1417 * Get the name used to store the state of details element. 1418 * 1419 * @param {jQuery} $details 1420 * A details element. 1421 * 1422 * @return {string} 1423 * The name used to store the state of details element. 1424 */ 1425 Drupal.webformDetailsSaveGetName = function ($details) { 1426 if (!hasLocalStorage) { 1427 return ''; 1428 } 1429 1430 // Ignore details that are vertical tabs pane. 1431 if ($details.hasClass('vertical-tabs__pane')) { 1432 return ''; 1433 } 1434 1435 // Any details element not included a webform must have define its own id. 1436 var webformId = $details.attr('data-webform-element-id'); 1437 if (webformId) { 1438 return 'Drupal.webform.' + webformId.replace('--', '.'); 1439 } 1440 1441 var detailsId = $details.attr('id'); 1442 if (!detailsId) { 1443 return ''; 1444 } 1445 1446 var $form = $details.parents('form'); 1447 if (!$form.length || !$form.attr('id')) { 1448 return ''; 1449 } 1450 1451 var formId = $form.attr('id'); 1452 if (!formId) { 1453 return ''; 1454 } 1455 1456 // ISSUE: When Drupal renders a webform in a modal dialog it appends a unique 1457 // identifier to webform ids and details ids. (i.e. my-form--FeSFISegTUI) 1458 // WORKAROUND: Remove the unique id that delimited using double dashes. 1459 formId = formId.replace(/--.+?$/, '').replace(/-/g, '_'); 1460 detailsId = detailsId.replace(/--.+?$/, '').replace(/-/g, '_'); 1461 return 'Drupal.webform.' + formId + '.' + detailsId; 1462 }; 1463 1464})(jQuery, Drupal, once); 1465; 1466/** 1467* DO NOT EDIT THIS FILE. 1468* See the following change record for more information, 1469* https://www.drupal.org/node/2815083 1470* @preserve 1471**/ 1472(function (Drupal, debounce) { 1473 var liveElement; 1474 var announcements = []; 1475 Drupal.behaviors.drupalAnnounce = { 1476 attach: function attach(context) { 1477 if (!liveElement) { 1478 liveElement = document.createElement('div'); 1479 liveElement.id = 'drupal-live-announce'; 1480 liveElement.className = 'visually-hidden'; 1481 liveElement.setAttribute('aria-live', 'polite'); 1482 liveElement.setAttribute('aria-busy', 'false'); 1483 document.body.appendChild(liveElement); 1484 } 1485 } 1486 }; 1487 function announce() { 1488 var text = []; 1489 var priority = 'polite'; 1490 var announcement; 1491 var il = announcements.length; 1492 for (var i = 0; i < il; i++) { 1493 announcement = announcements.pop(); 1494 text.unshift(announcement.text); 1495 if (announcement.priority === 'assertive') { 1496 priority = 'assertive'; 1497 } 1498 } 1499 if (text.length) { 1500 liveElement.innerHTML = ''; 1501 liveElement.setAttribute('aria-busy', 'true'); 1502 liveElement.setAttribute('aria-live', priority); 1503 liveElement.innerHTML = text.join('\n'); 1504 liveElement.setAttribute('aria-busy', 'false'); 1505 } 1506 } 1507 Drupal.announce = function (text, priority) { 1508 announcements.push({ 1509 text: text, 1510 priority: priority 1511 }); 1512 return debounce(announce, 200)(); 1513 }; 1514})(Drupal, Drupal.debounce);; 1515/** 1516 * @file 1517 * JavaScript behaviors for details element. 1518 */ 1519 1520(function ($, Drupal, once) { 1521 1522 'use strict'; 1523 1524 Drupal.webform = Drupal.webform || {}; 1525 Drupal.webform.detailsToggle = Drupal.webform.detailsToggle || {}; 1526 Drupal.webform.detailsToggle.options = Drupal.webform.detailsToggle.options || {}; 1527 1528 /** 1529 * Attach handler to toggle details open/close state. 1530 * 1531 * @type {Drupal~behavior} 1532 */ 1533 Drupal.behaviors.webformDetailsToggle = { 1534 attach: function (context) { 1535 $(once('webform-details-toggle', '.js-webform-details-toggle', context)).each(function () { 1536 var $form = $(this); 1537 var $tabs = $form.find('.webform-tabs'); 1538 1539 // Get only the main details elements and ignore all nested details. 1540 var selector = ($tabs.length) ? '.webform-tab' : '.js-webform-details-toggle, .webform-elements'; 1541 var $details = $form.find('details').filter(function () { 1542 var $parents = $(this).parentsUntil(selector); 1543 return ($parents.find('details').length === 0); 1544 }); 1545 1546 // Toggle is only useful when there are two or more details elements. 1547 if ($details.length < 2) { 1548 return; 1549 } 1550 1551 var options = $.extend({ 1552 button: '<button type="button" class="webform-details-toggle-state"></button>' 1553 }, Drupal.webform.detailsToggle.options); 1554 1555 // Create toggle buttons. 1556 var $toggle = $(options.button) 1557 .attr('title', Drupal.t('Toggle details widget state.')) 1558 .on('click', function (e) { 1559 // Get details that are not vertical tabs pane. 1560 var $details = $form.find('details:not(.vertical-tabs__pane)'); 1561 var open; 1562 if (Drupal.webform.detailsToggle.isFormDetailsOpen($form)) { 1563 $details.removeAttr('open'); 1564 open = 0; 1565 } 1566 else { 1567 $details.attr('open', 'open'); 1568 open = 1; 1569 } 1570 Drupal.webform.detailsToggle.setDetailsToggleLabel($form); 1571 1572 // Set the saved states for all the details elements. 1573 // @see webform.element.details.save.js 1574 if (Drupal.webformDetailsSaveGetName) { 1575 $details.each(function () { 1576 // Note: Drupal.webformDetailsSaveGetName checks if localStorage 1577 // exists and is enabled. 1578 // @see webform.element.details.save.js 1579 var name = Drupal.webformDetailsSaveGetName($(this)); 1580 if (name) {
1581 localStorage.setItem(name, open); 1582 } 1583 }); 1584 } 1585 }) 1586 .wrap('<div class="webform-details-toggle-state-wrapper"></div>') 1587 .parent(); 1588 1589 if ($tabs.length) { 1590 // Add toggle state before the tabs. 1591 $tabs.find('.item-list:first-child').eq(0).before($toggle); 1592 } 1593 else { 1594 // Add toggle state link to first details element. 1595 $details.eq(0).before($toggle); 1596 } 1597 1598 Drupal.webform.detailsToggle.setDetailsToggleLabel($form); 1599 }); 1600 } 1601 }; 1602 1603 /** 1604 * Determine if a webform's details are all opened. 1605 * 1606 * @param {jQuery} $form 1607 * A webform. 1608 * 1609 * @return {boolean} 1610 * TRUE if a webform's details are all opened. 1611 */ 1612 Drupal.webform.detailsToggle.isFormDetailsOpen = function ($form) { 1613 return ($form.find('details[open]').length === $form.find('details').length); 1614 }; 1615 1616 /** 1617 * Set a webform's details toggle state widget label. 1618 * 1619 * @param {jQuery} $form 1620 * A webform. 1621 */ 1622 Drupal.webform.detailsToggle.setDetailsToggleLabel = function ($form) { 1623 var isOpen = Drupal.webform.detailsToggle.isFormDetailsOpen($form); 1624 1625 var label = (isOpen) ? Drupal.t('Collapse all') : Drupal.t('Expand all'); 1626 $form.find('.webform-details-toggle-state').html(label); 1627 1628 var text = (isOpen) ? Drupal.t('All details have been expanded.') : Drupal.t('All details have been collapsed.'); 1629 Drupal.announce(text); 1630 }; 1631 1632})(jQuery, Drupal, once); 1633; 1634/** 1635 * @file 1636 * JavaScript behaviors for message element integration. 1637 */ 1638 1639(function ($, Drupal, once) { 1640 1641 'use strict'; 1642 1643 // Determine if local storage exists and is enabled. 1644 // This approach is copied from Modernizr. 1645 // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731 1646 var hasLocalStorage = (function () { 1647 try { 1648 localStorage.setItem('webform', 'webform'); 1649 localStorage.removeItem('webform'); 1650 return true; 1651 } 1652 catch (e) { 1653 return false; 1654 } 1655 }()); 1656 1657 // Determine if session storage exists and is enabled. 1658 // This approach is copied from Modernizr. 1659 // @see https://github.com/Modernizr/Modernizr/blob/c56fb8b09515f629806ca44742932902ac145302/modernizr.js#L696-731 1660 var hasSessionStorage = (function () { 1661 try { 1662 sessionStorage.setItem('webform', 'webform'); 1663 sessionStorage.removeItem('webform'); 1664 return true; 1665 } 1666 catch (e) { 1667 return false; 1668 } 1669 }()); 1670 1671 /** 1672 * Behavior for handler message close. 1673 * 1674 * @type {Drupal~behavior} 1675 */ 1676 Drupal.behaviors.webformMessageClose = { 1677 attach: function (context) { 1678 $(once('webform-message--close', '.js-webform-message--close', context)).each(function () { 1679 var $element = $(this); 1680 1681 var id = $element.attr('data-message-id'); 1682 var storage = $element.attr('data-message-storage'); 1683 var effect = $element.attr('data-message-close-effect') || 'hide'; 1684 switch (effect) { 1685 case 'slide': effect = 'slideUp'; break; 1686 1687 case 'fade': effect = 'fadeOut'; break; 1688 } 1689 1690 // Check storage status. 1691 if (isClosed($element, storage, id)) { 1692 return; 1693 } 1694 1695 // Only show element if it's style is not set to 'display: none' 1696 // and it is not hidden via .js-webform-states-hidden. 1697 if ($element.attr('style') !== 'display: none;' && !$element.hasClass('js-webform-states-hidden')) { 1698 $element.show(); 1699 } 1700 1701 $element.find('.js-webform-message__link').on('click', function (event) { 1702 $element[effect](); 1703 setClosed($element, storage, id); 1704 $element.trigger('close'); 1705 event.preventDefault(); 1706 }); 1707 }); 1708 } 1709 }; 1710 1711 function isClosed($element, storage, id) { 1712 if (!id || !storage) { 1713 return false; 1714 } 1715 1716 switch (storage) { 1717 case 'local': 1718 if (hasLocalStorage) { 1719 return localStorage.getItem('Drupal.webform.message.' + id) || false; 1720 } 1721 return false; 1722 1723 case 'session': 1724 if (hasSessionStorage) { 1725 return sessionStorage.getItem('Drupal.webform.message.' + id) || false; 1726 } 1727 return false;
1728 1729 default: 1730 return false; 1731 } 1732 } 1733 1734 function setClosed($element, storage, id) { 1735 if (!id || !storage) { 1736 return; 1737 } 1738 1739 switch (storage) { 1740 case 'local': 1741 if (hasLocalStorage) { 1742 localStorage.setItem('Drupal.webform.message.' + id, true); 1743 } 1744 break; 1745 1746 case 'session': 1747 if (hasSessionStorage) { 1748 sessionStorage.setItem('Drupal.webform.message.' + id, true); 1749 } 1750 break; 1751 1752 case 'user': 1753 case 'state': 1754 case 'custom': 1755 $.get($element.find('.js-webform-message__link').attr('href')); 1756 return true; 1757 } 1758 } 1759 1760})(jQuery, Drupal, once); 1761; 1762/* 1763 * Superfish v1.4.8 - jQuery menu widget 1764 * Copyright (c) 2008 Joel Birch 1765 * 1766 * Dual licensed under the MIT and GPL licenses: 1767 * http://www.opensource.org/licenses/mit-license.php 1768 * http://www.gnu.org/licenses/gpl.html 1769 */ 1770/* 1771 * This is not the original jQuery Superfish plugin. 1772 * Please refer to the README for more information. 1773 */ 1774 1775(function($){ 1776 $.fn.superfish = function(superfish_options){ 1777 const cssClasses = sf.cssClasses;
1778 const $arrow = $(`<span class="${cssClasses.arrowClass}"> »</span>`); 1779 1780 const over = function(){ 1781 const $$ = $(this); 1782 const menu = getMenu($$); 1783 clearTimeout(menu.sfTimer); 1784 $$.showSuperfishUl().siblings().hideSuperfishUl(); 1785 }; 1786 1787 const out = function(){ 1788 const $$ = $(this); 1789 const menu = getMenu($$); 1790 const options = sf.options; 1791 1792 clearTimeout(menu.sfTimer); 1793 menu.sfTimer = setTimeout(function(){ 1794 if ($$.children('.sf-clicked').length === 0){ 1795 options.retainPath = ($.inArray($$[0], options.$path) > -1); 1796 $$.hideSuperfishUl(); 1797 if (options.$path.length && $$.parents(`li.${cssClasses.hoverClass}`).length < 1){ 1798 over.call(options.$path); 1799 } 1800 } 1801 }, options.delay); 1802 }; 1803 1804 const getMenu = function($menu){ 1805 const menu = $menu.parents(`ul.${cssClasses.menuClass}:first`)[0]; 1806 sf.options = sf.optionsList[menu.serial]; 1807 return menu; 1808 }; 1809 1810 const addArrow = function($a){ 1811 $a.addClass(cssClasses.anchorClass).append($arrow.clone()); 1812 }; 1813 1814 return this.each(function() { 1815 const s = this.serial = sf.optionsList.length; 1816 const options = $.extend({}, sf.defaults, superfish_options); 1817 options.$path = $(`li.${options.pathClass}`, this).slice(0, options.pathLevels); 1818 const path = options.$path; 1819 for (let l = 0; l < path.length; l++){ 1820 path.eq(l).addClass(`${cssClasses.hoverClass} ${cssClasses.bcClass}`).filter('li:has(ul)').removeClass(options.pathClass); 1821 } 1822 sf.optionsList[s] = sf.options = options; 1823 1824 $('li:has(ul)', this)[($.fn.hoverIntent && !options.disableHI) ? 'hoverIntent' : 'hover'](over, out).each(function() { 1825 if (options.autoArrows) { 1826 addArrow( $(this).children('a:first-child, span.nolink:first-child') ); 1827 } 1828 }) 1829 .not('.' + cssClasses.bcClass).hideSuperfishUl(); 1830 1831 const $a = $('a, span.nolink', this); 1832 $a.each(function(i){ 1833 const $li = $a.eq(i).parents('li'); 1834 $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);}); 1835 }); 1836 options.onInit.call(this); 1837 1838 }).each(function() { 1839 const menuClasses = [cssClasses.menuClass]; 1840 if (sf.options.dropShadows){ 1841 menuClasses.push(cssClasses.shadowClass); 1842 } 1843 $(this).addClass(menuClasses.join(' ')); 1844 }); 1845 }; 1846 1847 const sf = $.fn.superfish; 1848 sf.optionsList = []; 1849 sf.options = {}; 1850 1851 sf.cssClasses = { 1852 bcClass: 'sf-breadcrumb', 1853 menuClass: 'sf-js-enabled', 1854 anchorClass: 'sf-with-ul', 1855 arrowClass: 'sf-sub-indicator', 1856 shadowClass: 'sf-shadow', 1857 hiddenClass: 'sf-hidden', 1858 hoverClass: 'sfHover' 1859 }; 1860 1861 sf.defaults = { 1862 pathClass: 'overideThisToUse', 1863 pathLevels: 1, 1864 delay: 800, 1865 animation: {opacity: 'show'}, 1866 speed: 'fast', 1867 autoArrows: true, 1868 dropShadows: true, 1869 disableHI: false, // true disables hoverIntent detection 1870 onInit: function(){}, // callback functions 1871 onBeforeShow: function(){}, 1872 onShow: function(){}, 1873 onHide: function(){} 1874 }; 1875 1876 $.fn.extend({ 1877 hideSuperfishUl : function(){ 1878 const options = sf.options; 1879 const not = options.retainPath === true ? options.$path : ''; 1880 options.retainPath = false; 1881 const $ul = $(`li.${sf.cssClasses.hoverClass}`, this).add(this).not(not).removeClass(sf.cssClasses.hoverClass) 1882 .children('ul').addClass(sf.cssClasses.hiddenClass); 1883 options.onHide.call($ul); 1884 return this; 1885 }, 1886 showSuperfishUl : function(){ 1887 this.removeClass(sf.cssClasses.hiddenClass); 1888 const options = sf.options; 1889 const $ul = this.addClass(sf.cssClasses.hoverClass).children(`ul.${sf.cssClasses.hiddenClass}`).hide().removeClass(sf.cssClasses.hiddenClass); 1890 options.onBeforeShow.call($ul); 1891 $ul.animate(options.animation, options.speed, function(){ options.onShow.call($ul); }); 1892 return this; 1893 } 1894 }); 1895 1896})(jQuery); 1897; 1898/*! 1899 * hoverIntent v1.10.1 // 2019.10.05 // jQuery v1.7.0+ 1900 * http://briancherne.github.io/jquery-hoverIntent/ 1901 * 1902 * You may use hoverIntent under the terms of the MIT license. Basically that 1903 * means you are free to use hoverIntent as long as this header is left intact. 1904 * Copyright 2007-2019 Brian Cherne 1905 */ 1906!function(factory){"use strict";"function"==typeof define&&define.amd?define(["jquery"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("jquery")):jQuery&&!jQuery.fn.hoverIntent&&factory(jQuery)}(function($){"use strict";function track(ev){cX=ev.pageX,cY=ev.pageY}var cX,cY,_cfg={interval:100,sensitivity:6,timeout:0},INSTANCE_COUNT=0,compare=function(ev,$el,s,cfg){if(Math.sqrt((s.pX-cX)*(s.pX-cX)+(s.pY-cY)*(s.pY-cY))<cfg.sensitivity)return $el.off(s.event,track),delete s.timeoutId,s.isActive=!0,ev.pageX=cX,ev.pageY=cY,delete s.pX,delete s.pY,cfg.over.apply($el[0],[ev]);s.pX=cX,s.pY=cY,s.timeoutId=setTimeout(function(){compare(ev,$el,s,cfg)},cfg.interval)};$.fn.hoverIntent=function(handlerIn,handlerOut,selector){var instanceId=INSTANCE_COUNT++,cfg=$.extend({},_cfg);$.isPlainObject(handlerIn)?(cfg=$.extend(cfg,handlerIn),(typeof cfg.out==="function")||(cfg.out=cfg.over)):cfg=(typeof handlerOut==="function")?$.extend(cfg,{over:handlerIn,out:handlerOut,selector:selector}):$.extend(cfg,{over:handlerIn,out:handlerIn,selector:handlerOut});function handleHover(e){var ev=$.extend({},e),$el=$(this),hoverIntentData=$el.data("hoverIntent");hoverIntentData||$el.data("hoverIntent",hoverIntentData={});var state=hoverIntentData[instanceId];state||(hoverIntentData[instanceId]=state={id:instanceId}),state.timeoutId&&(state.timeoutId=clearTimeout(state.timeoutId));
1906var mousemove=state.event="mousemove.hoverIntent.hoverIntent"+instanceId;if("mouseenter"===e.type){if(state.isActive)return;state.pX=ev.pageX,state.pY=ev.pageY,$el.off(mousemove,track).on(mousemove,track),state.timeoutId=setTimeout(function(){compare(ev,$el,state,cfg)},cfg.interval)}else{if(!state.isActive)return;$el.off(mousemove,track),state.timeoutId=setTimeout(function(){!function(ev,$el,s,out){var data=$el.data("hoverIntent");data&&delete data[s.id],out.apply($el[0],[ev])}(ev,$el,state,cfg.out)},cfg.timeout)}}return this.on({"mouseenter.hoverIntent":handleHover,"mouseleave.hoverIntent":handleHover},cfg.selector)}});; 1907/* 1908 * Supposition v0.2 - an optional enhancer for Superfish jQuery menu widget. 1909 * 1910 * Copyright (c) 2008 Joel Birch - based mostly on work by Jesse Klaasse and credit goes largely to him. 1911 * Special thanks to Karl Swedberg for valuable input. 1912 * 1913 * Dual licensed under the MIT and GPL licenses: 1914 * http://www.opensource.org/licenses/mit-license.php 1915 * http://www.gnu.org/licenses/gpl.html 1916 */ 1917/* 1918 * This is not the original jQuery Supposition plugin. 1919 * Please refer to the README for more information. 1920 */ 1921 1922(function($){ 1923 $.fn.supposition = function(){ 1924 const $w = $(window); /*do this once instead of every onBeforeShow call*/ 1925 1926 const _offset = function(dir) { 1927 return window[dir === 'y' ? 'pageYOffset' : 'pageXOffset'] 1928 || document.documentElement && document.documentElement[dir === 'y' ? 'scrollTop' : 'scrollLeft'] 1929 || document.body[dir === 'y' ? 'scrollTop' : 'scrollLeft']; 1930 }; 1931 1932 const onHide = function(){ 1933 this.css({bottom:''}); 1934 }; 1935 1936 const onBeforeShow = function(){ 1937 this.each(function(){ 1938 const $u = $(this); 1939 $u.css('display','block'); 1940 const $mul = $u.closest('.sf-menu'); 1941 const level = $u.parents('ul').length; 1942 const menuWidth = $u.width(); 1943 const menuParentWidth = $u.closest('li').outerWidth(true); 1944 const menuParentLeft = $u.closest('li').offset().left; 1945 const totalRight = $w.width() + _offset('x'); 1946 const menuRight = $u.offset().left + menuWidth; 1947 const exactMenuWidth = menuRight > (menuParentWidth + menuParentLeft) ? menuWidth - (menuRight - (menuParentWidth + menuParentLeft)) : menuWidth; 1948 1949 if ($u.parents('.sf-js-enabled').hasClass('rtl')) { 1950 if (menuParentLeft < exactMenuWidth) { 1951 if ($mul.hasClass('sf-horizontal') && level === 1 || $mul.hasClass('sf-navbar') && level === 2){ 1952 $u.css({left: 0, right: 'auto'}); 1953 } 1954 else { 1955 $u.css({left: menuParentWidth + 'px', right: 'auto'}); 1956 } 1957 $u.parent().addClass('sf-supposition-active'); 1958 } 1959 } 1960 else { 1961 if (menuRight > totalRight && menuParentLeft > menuWidth) { 1962 if ($mul.hasClass('sf-horizontal') && level === 1 || $mul.hasClass('sf-navbar') && level === 2){ 1963 $u.css({right: 0, left: 'auto'}); 1964 } 1965 else { 1966 $u.css({right: menuParentWidth + 'px', left: 'auto'}); 1967 } 1968 $u.parent().addClass('sf-supposition-active'); 1969 } 1970 } 1971 1972 const windowHeight = $w.height(); 1973 const offsetTop = $u.offset().top; 1974 const menuParentShadow = $mul.hasClass('sf-shadow') && $u.css('padding-bottom').length > 0 ? parseInt($u.css('padding-bottom').slice(0,-2)) : 0; 1975 const menuParentHeight = $mul.hasClass('sf-vertical') ? '-' + menuParentShadow : $u.parent().outerHeight(true) - menuParentShadow; 1976 const menuHeight = $u.height(); 1977 const baseline = windowHeight + _offset('y'); 1978 const expandUp = (offsetTop + menuHeight > baseline) && (offsetTop > menuHeight); 1979 if (expandUp) { 1980 $u.css({bottom:menuParentHeight + 'px',top:'auto'}); 1981 } 1982 $u.css('display','none'); 1983 }); 1984 }; 1985 1986 return this.each(function() { 1987 const options = $.fn.superfish.optionsList[this.serial]; /* get this menu's options */ 1988 1989 /* if callbacks already set, store them */ 1990 const _onBeforeShow = options.onBeforeShow; 1991 const _onHide = options.onHide; 1992 1993 $.extend($.fn.superfish.optionsList[this.serial],{ 1994 onBeforeShow: function() { 1995 onBeforeShow.call(this); /* fire our Supposition callback */ 1996 _onBeforeShow.call(this); /* fire stored callbacks */ 1997 }, 1998 onHide: function() { 1999 onHide.call(this); /* fire our Supposition callback */ 2000 _onHide.call(this); /* fire stored callbacks */ 2001 } 2002 }); 2003 }); 2004 }; 2005})(jQuery); 2006; 2007/* 2008 * Supersubs v0.4b - jQuery plugin 2009 * Copyright (c) 2013 Joel Birch 2010 * 2011 * Dual licensed under the MIT and GPL licenses: 2012 * http://www.opensource.org/licenses/mit-license.php 2013 * http://www.gnu.org/licenses/gpl.html 2014 * 2015 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of 2016 * their longest list item children. If you use this, please expect bugs and report them 2017 * to the jQuery Google Group with the word 'Superfish' in the subject line. 2018 * 2019 */ 2020/* 2021 * This is not the original jQuery Supersubs plugin. 2022 * Please refer to the README for more information. 2023 */ 2024 2025(function($){ // $ will refer to jQuery within this closure 2026 $.fn.supersubs = function(options){ 2027 const superfish_options = $.extend({}, $.fn.supersubs.defaults, options); 2028 let size; 2029 let o; 2030
2031 // return an original object to support chaining, 2032 // Although this is unnecessary due to the way the module uses these plugins. 2033 for (let a = 0; a < this.length; a++) { 2034 // cache selections 2035 let $$ = $(this).eq(a); 2036 // support metadata 2037 o = $.meta ? $.extend({}, superfish_options, $$.data()) : superfish_options; 2038 // Jump one level if it's a "NavBar" 2039 if ($$.hasClass('sf-navbar')) { 2040 $$ = $$.children('li').children('ul'); 2041 } 2042 // cache all ul elements 2043 let $ULs = $$.find('ul'); 2044 if ($ULs.length) { 2045 // get the font size of menu. 2046 // .css('fontSize') returns various results cross-browser, so measure an em dash instead 2047 let fontsize = $('<li id="menu-fontsize">—</li>'); 2048 size = fontsize.attr('style','padding:0;position:absolute;top:-99999em;width:auto;') 2049 .appendTo($$)[0].clientWidth; //clientWidth is faster than width() 2050 // remove em dash 2051 fontsize.remove(); 2052 2053 // loop through each ul in a menu 2054 for (let b = 0; b < $ULs.length; b++) { 2055 // cache this ul 2056 let $ul = $ULs.eq(b); 2057 // If a multi-column sub-menu, and only if correctly configured. 2058 if (o.multicolumn && $ul.hasClass('sf-multicolumn') && $ul.find('.sf-multicolumn-column').length > 0){ 2059 // Look through each column. 2060 let $column = $ul.find('div.sf-multicolumn-column > ol'); 2061 // Overall width. 2062 let mwWidth = 0; 2063 for (let d = 0; d < $column.length; d++){ 2064 resize($column.eq(d)); 2065 // New column width, in pixels. 2066 let colWidth = Math.ceil($column.width()); 2067 // Just a trick to convert em unit to px. 2068 $column.css({width:colWidth}) 2069 // Making column parents the same size. 2070 .parents('.sf-multicolumn-column').css({width:colWidth}); 2071 // Overall width. 2072 mwWidth += colWidth; 2073 } 2074 // Resizing the columns' container too. 2075 $ul.add($ul.find('li.sf-multicolumn-wrapper, li.sf-multicolumn-wrapper > ol')).css({width:mwWidth}); 2076 } 2077 else { 2078 resize($ul); 2079 } 2080 } 2081 } 2082 } 2083 function resize($ul){ 2084 // get all (li) children of this ul 2085 const $LIs = $ul.children(); 2086 // get all anchor grand-children 2087 const $As = $LIs.children('a'); 2088 // force content to one line and save current float property 2089 $LIs.css('white-space','nowrap'); 2090 // remove width restrictions and floats so elements remain vertically stacked 2091 $ul.add($LIs).add($As).css({float:'none',width:'auto'}); 2092 // this ul will now be shrink-wrapped to the longest li due to position:absolute 2093 // so save its width as ems. 2094 let emWidth = $ul.get(0).clientWidth / size; 2095 // add more width to ensure lines don't turn over at certain sizes in various browsers 2096 emWidth += o.extraWidth; 2097 // restrict to at least minWidth and at most maxWidth 2098 if (emWidth > o.maxWidth) { 2099 emWidth = o.maxWidth; 2100 } 2101 else if (emWidth < o.minWidth) { 2102 emWidth = o.minWidth; 2103 } 2104 emWidth += 'em'; 2105 // set ul to width in ems 2106 $ul.css({width:emWidth}); 2107 // restore li floats to avoid IE bugs 2108 // set li width to full width of this ul 2109 // revert white-space to normal 2110 $LIs.add($As).css({float:'',width:'',whiteSpace:''}); 2111 // update offset position of descendant ul to reflect new width of parent. 2112 // set it to 100% in case it isn't already set to this in the CSS 2113 for (let c = 0; c < $LIs.length; c++) { 2114 let $childUl = $LIs.eq(c).children('ul'); 2115 let offsetDirection = $childUl.css('left') !== undefined ? 'left' : 'right'; 2116 $childUl.css(offsetDirection,'100%'); 2117 } 2118 } 2119 return this; 2120 }; 2121 2122 // expose defaults 2123 $.fn.supersubs.defaults = { 2124 multicolumn: true, // define width for multi-column sub-menus and their columns. 2125 minWidth: 12, // requires em unit. 2126 maxWidth: 27, // requires em unit. 2127 extraWidth: 1 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values 2128 }; 2129})(jQuery); // plugin code ends 2130; 2131(function ($, Drupal, once) { 2132 Drupal.behaviors.superfish = { 2133 attach(context, drupalSettings) { 2134 // Take a look at each menu to apply Superfish to. 2135 $.each(drupalSettings.superfish || {}, function (index, options) { 2136 $(once('superfish', `ul#${options.id}`, context)).each(function () { 2137 const $menu = $(this); 2138 2139 // Check if we are to apply the Supersubs plug-in to it. 2140 if (options.plugins) { 2141 if (options.plugins.supersubs) { 2142 $menu.supersubs(options.plugins.supersubs); 2143 } 2144 } 2145 2146 // Apply Superfish to the menu. 2147 $menu.superfish(options.sf); 2148 // Check if we are to apply any other plug-in to it. 2149 if (options.plugins) { 2150 if (options.plugins.touchscreen) { 2151 $menu.sftouchscreen(options.plugins.touchscreen); 2152 } 2153 if (options.plugins.smallscreen) { 2154 $menu.sfsmallscreen(options.plugins.smallscreen); 2155 } 2156 if (options.plugins.supposition) { 2157 $menu.supposition(); 2158 } 2159 } 2160 }); 2161 }); 2162 }, 2163 }; 2164})(jQuery, Drupal, once); 2165; 2166/* 2167 * sf-Touchscreen v1.3b - Provides touchscreen compatibility for the jQuery Superfish plugin. 2168 * 2169 * Developer's note: 2170 * Built as a part of the Superfish project for Drupal (http://drupal.org/project/superfish) 2171 * Found any bug? have any cool ideas? contact me right away! http://drupal.org/user/619294/contact 2172 * 2173 * jQuery version: 1.7 or higher. 2174 * 2175 * Dual licensed under the MIT and GPL licenses: 2176 * http://www.opensource.org/licenses/mit-license.php 2177 * http://www.gnu.org/licenses/gpl.html 2178 */ 2179 2180(function($){ 2181 $.fn.sftouchscreen = function(options){ 2182 options = $.extend({ 2183 mode: 'inactive', 2184 breakpoint: 768, 2185 breakpointUnit: 'px', 2186 useragent: '', 2187 behaviour: 2, 2188 disableHover: false 2189 }, options); 2190 2191 function activate(menu){ 2192 const eventHandler = (('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch)) ? ['click touchstart','mouseup touchend'] : ['click','mouseup']; 2193 // Select hyperlinks from parent menu items. 2194 menu.find('li:has(ul)').children('a,span.nolink').each(function(){ 2195 const $item = $(this), 2196 parent = $item.closest('li'); 2197 if (options.disableHover){ 2198 parent.off('mouseenter mouseleave'); 2199 } 2200 if (options.behaviour === 2){ 2201 if (parent.children('a.menuparent,span.nolink.menuparent').length > 0 && parent.children('ul').children('.sf-clone-parent').length === 0){ 2202 // Cloning the hyperlink of the parent menu item. 2203 let cloneLink = parent.children('a.menuparent').clone(); 2204 // Wrapping the hyerplinks in <li>. 2205 cloneLink = $('<li class="sf-clone-parent" />').html(cloneLink); 2206 // Removing unnecessary stuff. 2207 cloneLink.find('.sf-sub-indicator').remove(); 2208 // Adding a helper class and attaching them to the sub-menus. 2209 parent.children('ul').addClass('sf-has-clone-parent').prepend(clone
2209Link); 2210 } 2211 } 2212 // No .toggle() here as it's not possible to reset it. 2213 $item.on(eventHandler[0], function(event){ 2214 // Already clicked? 2215 if ($item.hasClass('sf-clicked')){ 2216 // Depending on the preferred behaviour, either proceed to the URL. 2217 if (options.behaviour === 0){ 2218 url = $item.attr('href'); 2219 if (typeof(url) != 'undefined'){ 2220 window.location = url; 2221 } 2222 } 2223 // or collapse the sub-menu. 2224 else if (options.behaviour === 1 || options.behaviour === 2){ 2225 event.preventDefault(); 2226 $item.removeClass('sf-clicked'); 2227 parent.hideSuperfishUl().find('a,span.nolink').removeClass('sf-clicked'); 2228 } 2229 } 2230 // Prevent the default action otherwise. 2231 else { 2232 event.preventDefault(); 2233 $item.addClass('sf-clicked'); 2234 parent.showSuperfishUl().siblings('li:has(ul)').hideSuperfishUl().find('.sf-clicked').removeClass('sf-clicked'); 2235 } 2236 }); 2237 }); 2238 2239 $(document).on(eventHandler[1], function(event){ 2240 if (menu.not(event.target) && menu.has(event.target).length === 0){ 2241 menu.find('.sf-clicked').removeClass('sf-clicked'); 2242 menu.find('li:has(ul)').hideSuperfishUl(); 2243 } 2244 }); 2245 } 2246 // Return original object to support chaining. 2247 // This is not necessary actually because of the way the module uses these plugins. 2248 for (let b = 0; b < this.length; b++) { 2249 const menu = $(this).eq(b), 2250 mode = options.mode; 2251 // The rest is crystal clear, isn't it? :) 2252 if (mode === 'always_active'){ 2253 activate(menu); 2254 } 2255 else if (mode === 'window_width'){ 2256 const breakpoint = (options.breakpointUnit === 'em') ? (options.breakpoint * parseFloat($('body').css('font-size'))) : options.breakpoint; 2257 const windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 2258 let timer; 2259 if ((typeof Modernizr === 'undefined' || typeof Modernizr.mq !== 'function') && windowWidth < breakpoint){ 2260 activate(menu); 2261 } 2262 else if (typeof Modernizr !== 'undefined' && typeof Modernizr.mq === 'function' && Modernizr.mq('(max-width:' + (breakpoint - 1) + 'px)')) { 2263 activate(menu); 2264 } 2265 $(window).resize(function(){ 2266 clearTimeout(timer); 2267 timer = setTimeout(function(){ 2268 const windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 2269 if ((typeof Modernizr === 'undefined' || typeof Modernizr.mq !== 'function') && windowWidth < breakpoint){ 2270 activate(menu); 2271 } 2272 else if (typeof Modernizr !== 'undefined' && typeof Modernizr.mq === 'function' && Modernizr.mq('(max-width:' + (breakpoint - 1) + 'px)')) { 2273 activate(menu); 2274 } 2275 }, 50); 2276 }); 2277 } 2278 else if (mode === 'useragent_custom'){ 2279 if (options.useragent != ''){ 2280 const ua = RegExp(options.useragent, 'i'); 2281 if (navigator.userAgent.match(ua)){ 2282 activate(menu); 2283 } 2284 } 2285 } 2286 else if (mode === 'useragent_predefined' && navigator.userAgent.match(/(android|bb\d+|meego)|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i)){ 2287 activate(menu); 2288 } 2289 } 2290 return this; 2291 } 2292})(jQuery); 2293; 2294/* 2295 * sf-Smallscreen v1.3b - Provides small-screen compatibility for the jQuery Superfish plugin. 2296 * 2297 * Developer's note: 2298 * Built as a part of the Superfish project for Drupal (http://drupal.org/project/superfish) 2299 * Found any bug? have any cool ideas? contact me right away! http://drupal.org/user/619294/contact 2300 * 2301 * jQuery version: 1.3.x or higher. 2302 * 2303 * Dual licensed under the MIT and GPL licenses: 2304 * http://www.opensource.org/licenses/mit-license.php 2305 * http://www.gnu.org/licenses/gpl.html 2306 */ 2307 2308(function($){ 2309 $.fn.sfsmallscreen = function(options){ 2310 options = $.extend({ 2311 mode: 'inactive', 2312 type: 'accordion', 2313 breakpoint: 768, 2314 breakpointUnit: 'px', 2315 useragent: '', 2316 title: '', 2317 addSelected: false, 2318 menuClasses: false, 2319 hyperlinkClasses: false, 2320 excludeClass_menu: '', 2321 excludeClass_hyperlink: '', 2322 includeClass_menu: '', 2323 includeClass_hyperlink: '', 2324 accordionButton: 1, 2325 expandText: 'Expand', 2326 collapseText: 'Collapse' 2327 }, options); 2328 2329 // We need to clean up the menu from anything unnecessary. 2330 function refine(menu){
2331 const refined = menu.clone(); 2332 // Things that should not be in the small-screen menus. 2333 const rm = refined.find('span.sf-sub-indicator'); 2334 // This is a helper class for those who need to add extra markup that shouldn't exist 2335 // in the small-screen versions. 2336 const rh = refined.find('.sf-smallscreen-remove'); 2337 // Mega-menus have to be removed too. 2338 const mm = refined.find('ul.sf-multicolumn'); 2339 for (let a = 0; a < rh.length; a++){ 2340 rh.eq(a).replaceWith(rh.eq(a).html()); 2341 } 2342 if (options.accordionButton === 2 || options.type === 'select'){ 2343 for (let b = 0; b < rm.length; b++){ 2344 rm.eq(b).remove(); 2345 } 2346 } 2347 if (mm.length > 0){ 2348 mm.removeClass('sf-multicolumn'); 2349 const ol = refined.find('div.sf-multicolumn-column > ol'); 2350 for (let o = 0; o < ol.length; o++){ 2351 ol.eq(o).replaceWith('<ul>' + ol.eq(o).html() + '</ul>'); 2352 } 2353 const elements = [ 2354 'div.sf-multicolumn-column', 2355 '.sf-multicolumn-wrapper > ol', 2356 'li.sf-multicolumn-wrapper' 2357 ]; 2358 for (let i = 0; i < elements.length; i++){ 2359 let obj = refined.find(elements[i]); 2360 for (let t = 0; t < obj.length; t++){ 2361 obj.eq(t).replaceWith(obj.eq(t).html()); 2362 } 2363 } 2364 refined.find('.sf-multicolumn-column').removeClass('sf-multicolumn-column'); 2365 } 2366 refined.add(refined.find('*')).css({width:''}); 2367 return refined; 2368 } 2369 2370 // Creating <option> elements out of the menu. 2371 function toSelect(menu, level){ 2372 let items = ''; 2373 const childLI = $(menu).children('li'); 2374 for (let a = 0; a < childLI.length; a++){ 2375 const list = childLI.eq(a) 2376 const parent = list.children('a, span'); 2377 for (let b = 0; b < parent.length; b++){ 2378 const item = parent.eq(b); 2379 const path = (item.is('a') && !!item.attr('href')) ? item.attr('href') : ''; 2380 // Class names modification. 2381 const itemClone = item.clone(); 2382 let classes = (options.hyperlinkClasses) ? ((options.excludeClass_hyperlink && itemClone.hasClass(options.excludeClass_hyperlink)) ? itemClone.removeClass(options.excludeClass_hyperlink).attr('class') : itemClone.attr('class')) : ''; 2383 classes = (options.includeClass_hyperlink && !itemClone.hasClass(options.includeClass_hyperlink)) ? ((options.hyperlinkClasses) ? itemClone.addClass(options.includeClass_hyperlink).attr('class') : options.includeClass_hyperlink) : classes; 2384 // Retaining the active class if requested. 2385 if (options.addSelected && item.hasClass('active')){ 2386 classes += ' active'; 2387 } 2388 classes = classes ? ' class="' + classes + '"' : ''; 2389 // <option> has to be disabled if the item is not a link. 2390 const disable = path === '' || path === '#' ? ' disabled="disabled"' : ''; 2391 // Crystal clear. 2392 const subIndicator = 1 < level ? Array(level).join('-') + ' ' : ''; 2393 // Preparing the <option> element. 2394 items += '<option value="' + path + '"' + classes + disable + '>' + subIndicator + item.text().trim() +'</option>'; 2395 const childUL = list.find('> ul'); 2396 // Using the function for the sub-menu of this item. 2397 for (let u = 0; u < childUL.length; u++){ 2398 items += toSelect(childUL.eq(u), level + 1); 2399 } 2400 } 2401 } 2402 return items; 2403 } 2404 2405 // Create the new version, hide the original. 2406 function convert(menu){ 2407 const menuID = menu.attr('id'); 2408 // Creating a refined version of the menu. 2409 const refinedMenu = refine(menu); 2410 // Currently, the plugin provides two reactions to small screens. 2411 // Converting the menu to a <select>
2411 element, and converting to an accordion version of the menu. 2412 if (options.type === 'accordion'){ 2413 const toggleID = menuID + '-toggle'; 2414 const accordionID = menuID + '-accordion'; 2415 // Making sure the accordion does not exist. 2416 if ($('#' + accordionID).length !== 0){ 2417 return; 2418 } 2419 2420 // Getting the style class. 2421 const styleClass = menu.attr('class').split(' ').filter(function(item){ 2422 return item.indexOf('sf-style-') > -1 ? item : ''; 2423 }); 2424 // Creating the accordion. 2425 const accordion = $(refinedMenu).attr('id', accordionID); 2426 // Removing unnecessary classes. 2427 accordion.removeClass('sf-horizontal sf-vertical sf-navbar sf-shadow sf-js-enabled'); 2428 // Adding necessary classes. 2429 accordion.addClass('sf-accordion sf-hidden'); 2430 // Removing style attributes and any unnecessary class. 2431 accordion.find('li').each(function(){ 2432 $(this).removeAttr('style').removeClass('sfHover').attr('id', $(this).attr('id') + '-accordion'); 2433 }); 2434 // Doing the same and making sure all the sub-menus are off-screen (hidden). 2435 accordion.children('ul').removeAttr('style').not('.sf-hidden').addClass('sf-hidden'); 2436 accordion.find('ul').each(function(){ 2437 $(this).removeAttr('style').not('.sf-hidden').addClass('sf-hidden'); 2438 }); 2439 2440 // Creating the accordion toggle switch. 2441 const toggle = '<div class="sf-accordion-toggle ' + styleClass + '"><a href="#" id="' + toggleID + '"><span>' + options.title + '</span></a></div>'; 2442 2443 // Adding Expand\Collapse buttons if requested. 2444 if (options.accordionButton === 2){ 2445 accordion.addClass('sf-accordion-with-buttons'); 2446 const parent = accordion.find('li.menuparent'); 2447 for (let i = 0; i < parent.length; i++){ 2448 parent.eq(i).prepend('<a href="#" class="sf-accordion-button">' + options.expandText + '</a>'); 2449 } 2450 } 2451 // Inserting the accordion and hiding the original menu. 2452 menu.before(toggle).before(accordion).hide(); 2453 2454 const $accordionElement = $('#' + accordionID); 2455 // Deciding what should be used as accordion buttons. 2456 const buttonElement = (options.accordionButton < 2) ? 'a.menuparent,span.nolink.menuparent' : 'a.sf-accordion-button'; 2457 const $button = $accordionElement.find(buttonElement); 2458 2459 // Attaching a click event to the toggle switch. 2460 $('#' + toggleID).on('click', function(e){ 2461 // Preventing the click. 2462 e.preventDefault(); 2463 // Adding the sf-expanded class. 2464 $(this).toggleClass('sf-expanded'); 2465 2466 if ($accordionElement.hasClass('sf-expanded')){ 2467 // If the accordion is already expanded: 2468 // Hiding its expanded sub-menus and then the accordion itself as well. 2469 $accordionElement.add($accordionElement.find('li.sf-expanded')).removeClass('sf-expanded') 2470 .end().children('ul').hide() 2471 // This is a bit tricky, it's the same trick that has been in use in the main plugin for some time. 2472 // Basically, we'll add a class that keeps the sub-menu off-screen and still visible, 2473 // and make it invisible and remove the class one moment before showing or hiding it. 2474 // This helps screen reader software access all the menu items. 2475 .end().hide().addClass('sf-hidden').show(); 2476 // Changing the caption of any existing accordion buttons to 'Expand'. 2477 if (options.accordionButton === 2){ 2478 $accordionElement.find('a.sf-accordion-button').text(options.expandText); 2479 } 2480 } 2481 else { 2482 // But if it's collapsed, 2483 $accordionElement.addClass('sf-expanded').hide().removeClass('sf-hidden').show(); 2484 } 2485 }); 2486 2487 // Attaching a click event to the buttons. 2488 $button.on('click', function(e){ 2489 // Making sure the button does not exist already. 2490 if ($(this).closest('li').children('ul').length === 0){ 2491 return; 2492 } 2493 2494 e.preventDefault(); 2495 2496 // Selecting the parent menu items. 2497 const $parent = $(this).closest('li'); 2498 2499 // Creating and inserting Expand\Collapse buttons to the parent menu items, 2500 // of course only if not already happened.
2501 if (options.accordionButton === 1 && 2502 $parent.children('a.menuparent,span.nolink.menuparent').length > 0 && 2503 $parent.children('ul').children('li.sf-clone-parent').length === 0) { 2504 2505 // Cloning the hyperlink of the parent menu item. 2506 let cloneLink = $parent.children('a.menuparent').clone(); 2507 // Removing unnecessary classes and element(s). 2508 cloneLink.removeClass('menuparent sf-with-ul').children('.sf-sub-indicator').remove(); 2509 // Wrapping the hyerplinks in <li>. 2510 cloneLink = $('<li class="sf-clone-parent" />').html(cloneLink); 2511 // Adding a helper class and attaching them to the sub-menus. 2512 $parent.children('ul').addClass('sf-has-clone-parent').prepend(cloneLink); 2513 } 2514 2515 if (options.accordionButton === 0 || options.accordionButton === 1){ 2516 // We want to hide a menu, when we click on the menu item with an anchor. 2517 $accordionElement.find('a.is-active:not(.menuparent)').on('click', function(e){ 2518 $accordionElement.removeClass('sf-expanded').addClass('sf-hidden'); 2519 }); 2520 } 2521 2522 // Changing the caption of the inserted Collapse link to 'Expand', if any is inserted. 2523 if (options.accordionButton === 2){ 2524 // We want to hide a menu, when we click on the menu item with an anchor. 2525 $accordionElement.find('a.is-active').on('click', function(e){ 2526 $accordionElement.removeClass('sf-expanded').addClass('sf-hidden'); 2527 }); 2528 } 2529 2530 // Once the button is clicked, collapse the sub-menu if it's expanded. 2531 if ($parent.hasClass('sf-expanded')){ 2532 $parent.children('ul').slideUp('fast', function(){ 2533 // Doing the accessibility trick after hiding the sub-menu. 2534 $(this).closest('li').removeClass('sf-expanded').end().addClass('sf-hidden').show(); 2535 }); 2536 // Changing the caption of the inserted Collapse link to 'Expand', if any is inserted. 2537 if (options.accordionButton === 2 && $parent.children('.sf-accordion-button').length > 0){ 2538 $parent.children('.sf-accordion-button').text(options.expandText); 2539 } 2540 } 2541 // Otherwise, expand the sub-menu. 2542 else { 2543 // Doing the accessibility trick and then showing the sub-menu. 2544 $parent.children('ul').hide().removeClass('sf-hidden').slideDown('fast') 2545 // Changing the caption of the inserted Expand link to 'Collapse' if any is inserted. 2546 .end().addClass('sf-expanded').children('a.sf-accordion-button').text(options.collapseText) 2547 // Hiding any expanded sub-menu of the same level. 2548 .end().siblings('li.sf-expanded').children('ul') 2549 .slideUp('fast', function(){ 2550 // Doing the accessibility trick after hiding it. 2551 $(this).closest('li').removeClass('sf-expanded').end().addClass('sf-hidden').show(); 2552 }) 2553 // Assuming Expand\Collapse buttons do exist, resetting captions, in those hidden sub-menus. 2554 .parent().children('a.sf-accordion-button').text(options.expandText); 2555 } 2556 }); 2557 } 2558 else { 2559 const menuClone = menu.clone(); 2560 // Class names modification. 2561 let classes = options.menuClasses ? ((options.excludeClass_menu && menuClone.hasClass(options.excludeClass_menu)) ? menuClone.removeClass(options.excludeClass_menu).attr('class') : menuClone.attr('class')) : ''; 2562 classes = options.includeClass_menu && !menuClone.hasClass(options.includeClass_menu) ? ((options.menuClasses) ? menuClone.addClass(options.includeClass_menu).attr('class') : options.includeClass_menu) : classes; 2563 classes = classes ? ' class="' + classes + '"' : ''; 2564 2565 // Making sure the <select> element does not exist already. 2566 if ($('#' + menuID + '-select').length !== 0){ 2567 return; 2568 } 2569 2570 // Creating the <option> elements. 2571 const newMenu = toSelect(refinedMenu, 1); 2572 // Creating the <select>
2572 element and assigning an ID and class name. 2573 const selectList = $('<select ' + classes + ' id="' + menuID + '-select"/>') 2574 // Attaching the title and the items to the <select> element. 2575 .html('<option>' + options.title + '</option>' + newMenu) 2576 // Attaching an event then. 2577 .change(function(){ 2578 // Except for the first option that is the menu title and not a real menu item. 2579 if ($('option:selected', this).index()){ 2580 window.location = selectList.val(); 2581 } 2582 }); 2583 // Applying the addSelected option to it. 2584 if (options.addSelected){ 2585 selectList.find('.active').attr('selected', !0); 2586 } 2587 // Finally inserting the <select> element into the document then hiding the original menu. 2588 menu.before(selectList).hide(); 2589 } 2590 } 2591 2592 // Turn everything back to normal. 2593 function turnBack(menu){ 2594 const id = '#' + menu.attr('id'); 2595 // Removing the small screen version. 2596 $(id + '-' + options.type).remove(); 2597 // Removing the accordion toggle switch as well. 2598 if (options.type === 'accordion'){ 2599 $(id + '-toggle').parent('div').remove(); 2600 } 2601 // Remove inline CSS display property; less clear than simply using .show(), but respects stylesheet 2602 $(id).css('display', ''); 2603 } 2604 2605 // Return an original object to support chaining. 2606 // Although this is unnecessary because of the way the module uses these plugins. 2607 for (let s = 0; s < this.length; s++){ 2608 const menu = $(this).eq(s); 2609 const mode = options.mode; 2610 // The rest is crystal clear, isn't it? :) 2611 if (menu.children('li').length === 0){ 2612 // Skip an empty menu which will not be visible and don't want to suddenly make it visible. 2613 } 2614 else if (mode === 'always_active'){ 2615 convert(menu); 2616 } 2617 else if (mode === 'window_width'){ 2618 const breakpoint = options.breakpointUnit === 'em' ? options.breakpoint * parseFloat($('body').css('font-size')) : options.breakpoint; 2619 const windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 2620 let timer; 2621 if ((typeof Modernizr === 'undefined' || typeof Modernizr.mq !== 'function') && windowWidth < breakpoint){ 2622 convert(menu); 2623 } 2624 else if (typeof Modernizr !== 'undefined' && typeof Modernizr.mq === 'function' && Modernizr.mq('(max-width:' + (breakpoint - 1) + 'px)')) { 2625 convert(menu); 2626 } 2627 2628 $(window).resize(function(){ 2629 clearTimeout(timer); 2630 timer = setTimeout(function(){ 2631 const windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 2632 if ((typeof Modernizr === 'undefined' || typeof Modernizr.mq !== 'function') && windowWidth < breakpoint){ 2633 convert(menu); 2634 } 2635 else if (typeof Modernizr !== 'undefined' && typeof Modernizr.mq === 'function' && Modernizr.mq('(max-width:' + (breakpoint - 1) + 'px)')) { 2636 convert(menu); 2637 } 2638 else { 2639 turnBack(menu); 2640 } 2641 }, 50); 2642 }); 2643 } 2644 else if (mode === 'useragent_custom'){ 2645 if (options.useragent !== ''){ 2646 const ua = RegExp(options.useragent, 'i'); 2647 if (navigator.userAgent.match(ua)){ 2648 convert(menu); 2649 } 2650 } 2651 } 2652 else if (mode === 'useragent_predefined' && navigator.userAgent.match(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i)){ 2653 convert(menu); 2654 } 2655 } 2656 return this; 2657 } 2658})(jQuery); 2659; 2660!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Slideout=t()}}(function(){var t,e,n;return function i(t,e,n){function o(r,a){if(!e[r]){if(!t[r]){var u=typeof require=="function"&&require;if(!a&&u)return u(r,!0);if(s)return s(r,!0);var l=new Error("Cannot find module '"+r+"'");throw l.code="MODULE_NOT_FOUND",l}var f=e[r]={exports:{}};t[r][0].call(f.exports,function(e){var n=t[r][1][e];return o(n?n:e)},f,f.exports,i,t,e,n)}return e[r].exports}var s=typeof require=="function"&&require;for(var r=0;r<n.length;r++)o(n[r]);return o}({1:[function(t,e,n){"use strict";var i=t("decouple");var o=t("emitter");var s;var r=false;var a=window.document;var u=a.documentElement;var l=window.navigator.msPointerEnabled;var f={start:l?"MSPointerDown":"touchstart",move:l?"MSPointerMove":"touchmove",end:l?"MSPointerUp":"touchend"};var h=function v(){var t=/^(Webkit|Khtml|Moz|ms|O)(?=[A-Z])/;var e=a.getElementsByTagName("script")[0].style;for(var n in e){if(t.test(n)){return"-"+n.match(t)[0].toLowerCase()+"-"}}if("WebkitOpacity"in e){return"-webkit-"}if("KhtmlOpacity"in e){return"-khtml-"}return""}();function c(t,e){for(var n in e){if(e[n]){t[n]=e[n]}}return t}function p(t,e){t.prototype=c(t.prototype||{},e.prototype)}function d(t){t=t||{};this._startOffsetX=0;this._currentOffsetX=0;this._opening=false;this._moved=false;this._opened=false;this._preventOpen=false;this._touch=t.touch===undefined?true:t.touch&&true;this.panel=t.panel;this.menu=t.menu;if(this.panel.className.search("slideout-panel")===-1){this.panel.className+=" slideout-panel"}if(this.menu.className.search("slideout-menu")===-1){this.menu.className+=" slideout-menu"}this._fx=t.fx||"ease";this._duration=parseInt(t.duration,10)||300;this._tolerance=parseInt(t.tolerance,10)||70;this._padding=this._translateTo=parseInt(t.padding,10)||256;this._orientation=t.side==="right"?-1:1;this._translateTo*=this._orientation;if(this._touch){this._initTouchEvents()}}p(d,o);d.prototype.open=function(){var t=this;
vendor: 4,552 bytes, line 2660
2660this.emit("beforeopen");if(u.className.search("slideout-open")===-1){u.className+=" slideout-open"}this._setTransition();this._translateXTo(this._translateTo);this._opened=true;setTimeout(function(){t.panel.style.transition=t.panel.style["-webkit-transition"]="";t.emit("open")},this._duration+50);return this};d.prototype.close=function(){var t=this;if(!this.isOpen()&&!this._opening){return this}this.emit("beforeclose");this._setTransition();this._translateXTo(0);this._opened=false;setTimeout(function(){u.className=u.className.replace(/ slideout-open/,"");t.panel.style.transition=t.panel.style["-webkit-transition"]=t.panel.style[h+"transform"]=t.panel.style.transform="";t.emit("close")},this._duration+50);return this};d.prototype.toggle=function(){return this.isOpen()?this.close():this.open()};d.prototype.isOpen=function(){return this._opened};d.prototype._translateXTo=function(t){this._currentOffsetX=t;this.panel.style[h+"transform"]=this.panel.style.transform="translateX("+t+"px)";return this};d.prototype._setTransition=function(){this.panel.style[h+"transition"]=this.panel.style.transition=h+"transform "+this._duration+"ms "+this._fx;return this};d.prototype._initTouchEvents=function(){var t=this;this._onScrollFn=i(a,"scroll",function(){if(!t._moved){clearTimeout(s);r=true;s=setTimeout(function(){r=false},250)}});this._preventMove=function(e){if(t._moved){e.preventDefault()}};a.addEventListener(f.move,this._preventMove);this._resetTouchFn=function(e){if(typeof e.touches==="undefined"){return}t._moved=false;t._opening=false;t._startOffsetX=e.touches[0].pageX;t._preventOpen=!t._touch||!t.isOpen()&&t.menu.clientWidth!==0};this.panel.addEventListener(f.start,this._resetTouchFn);this._onTouchCancelFn=function(){t._moved=false;t._opening=false};this.panel.addEventListener("touchcancel",this._onTouchCancelFn);this._onTouchEndFn=function(){if(t._moved){t._opening&&Math.abs(t._currentOffsetX)>t._tolerance?t.open():t.close()}t._moved=false};this.panel.addEventListener(f.end,this._onTouchEndFn);this._onTouchMoveFn=function(e){if(r||t._preventOpen||typeof e.touches==="undefined"){return}var n=e.touches[0].clientX-t._startOffsetX;var i=t._currentOffsetX=n;if(Math.abs(i)>t._padding){return}if(Math.abs(n)>20){t._opening=true;var o=n*t._orientation;if(t._opened&&o>0||!t._opened&&o<0){return}if(o<=0){i=n+t._padding*t._orientation;t._opening=false}if(!t._moved&&u.className.search("slideout-open")===-1){u.className+=" slideout-open"}t.panel.style[h+"transform"]=t.panel.style.transform="translateX("+i+"px)";t.emit("translate",i);t._moved=true}};this.panel.addEventListener(f.move,this._onTouchMoveFn);return this};d.prototype.enableTouch=function(){this._touch=true;return this};d.prototype.disableTouch=function(){this._touch=false;return this};d.prototype.destroy=function(){this.close();a.removeEventListener(f.move,this._preventMove);this.panel.removeEventListener(f.start,this._resetTouchFn);this.panel.removeEventListener("touchcancel",this._onTouchCancelFn);this.panel.removeEventListener(f.end,this._onTouchEndFn);this.panel.removeEventListener(f.move,this._onTouchMoveFn);a.removeEventListener("scroll",this._onScrollFn);this.open=this.close=function(){};return this};e.exports=d},{decouple:2,emitter:3}],2:[function(t,e,n){"use strict";var i=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}();function o(t,e,n){var o,s=false;function r(t){o=t;a()}function a(){if(!s){i(u);s=true}}function u(){n.call(t,o);s=false}t.addEventListener(e,r,false);return r}e.exports=o},{}],3:[function(t,e,n){"use strict";var i=function(t,e){if(!(t instanceof e)){throw new TypeError("Cannot call a class as a function")}};n.__esModule=true;var o=function(){function t(){i(this,t)}t.prototype.on=function e(t,n){this._eventCollection=this._eventCollection||{};this._eventCollection[t]=this._eventCollection[t]||[];this._eventCollection[t].push(n);return this};t.prototype.once=function n(t,e){var n=this;function i(){n.off(t,i);e.apply(this,arguments)}i.listener=e;this.on(t,i);return this};t.prototype.off=function o(t,e){var n=undefined;if(!this._eventCollection||!(n=this._eventCollection[t])){return this}n.forEach(function(t,i){if(t===e||t.listener===e){n.splice(i,1)}});if(n.length===0){delete this._eventCollection[t]}return this};t.prototype.emit=function s(t){var e=this;for(var n=arguments.length,i=Array(n>1?n-1:0),o=1;o<n;o++){i[o-1]=arguments[o]}var s=undefined;if(!this._eventCollection||!(s=this._eventCollection[t])){return this}s=s.slice(0);
2660s.forEach(function(t){return t.apply(e,i)});return this};return t}();n["default"]=o;e.exports=n["default"]},{}]},{},[1])(1)});; 2661jQuery(document).ready(function($) { 2662 var slideout = new Slideout({ 2663 'panel':document.querySelector('.page-container'), 2664 'menu': document.querySelector('.slideout'), 2665 'padding': 300, 2666 'tolerance': 70, 2667 'side': drupalSettings.flashyplus.slideoutInit.slideoutSide, 2668 'touch': drupalSettings.flashyplus.slideoutInit.slideoutTouchSwipe 2669 }); 2670 2671 $('.slideout-toggle').fadeIn('fast'); 2672 2673 // Toggle button 2674 document.querySelector('.slideout-toggle').addEventListener('click', function() { 2675 slideout.toggle(); 2676 var topValue = $('body').css('padding-top'); 2677 $(".slideout-menu").css("top", topValue); 2678 }); 2679 slideout.on('beforeopen', function() { 2680 document.querySelector('.slideout-toggle--fixed').classList.add('js-slideout-toggle--fixed-open'); 2681 $(".slideout .sf-accordion").addClass("sf-expanded").removeClass("sf-hidden"); 2682 }); 2683 slideout.on('beforeclose', function() { 2684 document.querySelector('.slideout-toggle--fixed').classList.remove('js-slideout-toggle--fixed-open'); 2685 }); 2686}); 2687; 2688jQuery(document).ready(function($) { 2689 $(window).scroll(function() { 2690 if($(this).scrollTop() != 0) { 2691 $(".to-top").addClass("show"); 2692 } else { 2693 $(".to-top").removeClass("show"); 2694 } 2695 }); 2696 2697 $(".to-top").click(function() { 2698 $("body,html").animate({scrollTop:0},800); 2699 }); 2700}); 2701; 2702/*! 2703 * Bootstrap v4.4.1 (https://getbootstrap.com/) 2704 * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 2705 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 2706 */ 2707!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],t):t((e=e||self).bootstrap={},e.jQuery)}(this,function(e,p){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function s(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)}return n}function l(o){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?t(Object(r),!0).forEach(function(e){var t,n,i;t=o,i=r[n=e],n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach(function(e){Object.defineProperty(o,e,Object.getOwnPropertyDescriptor(r,e))})}return o}p=p&&p.hasOwnProperty("default")?p.default:p;var n="transitionend";function o(e){var t=this,n=!1;return p(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(t)},e),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(e){for(;e+=~~(1e6*Math.random()),document.getElementById(e););return e},getSelectorFromElement:function(e){var t=e.getAttribute("data-target");if(!t||"#"===t){var n=e.getAttribute("href");t=n&&"#"!==n?n.trim():""}try{return document.querySelector(t)?t:null}catch(e){return null}},getTransitionDurationFromElement:function(e){if(!e)return 0;var t=p(e).css("transition-duration"),n=p(e).css("transition-delay"),i=parseFloat(t),o=parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(t)+parseFloat(n))):0},reflow:function(e){return e.offsetHeight},triggerTransitionEnd:function(e){p(e).trigger(n)},supportsTransitionEnd:function(){return Boolean(n)},isElement:function(e){return(e[0]||e).nodeType},typeCheckConfig:function(e,t,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=t[i],s=r&&m.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(e.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(e){if(!document.documentElement.attachShadow)return null;if("function"!=typeof e.getRootNode)return e instanceof ShadowRoot?e:e.parentNode?m.findShadowRoot(e.parentNode):null;var t=e.getRootNode();return t instanceof ShadowRoot?t:null},jQueryDetection:function(){if("undefined"==typeof p)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=p.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};m.jQueryDetection(),p.fn.emulateTransitionEnd=o,p.event.special[m.TRANSITION_END]={bindType:n,delegateType:n,handle:function(e){if(p(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}};var r="alert",a="bs.alert",c="."+a,h=p.fn[r],u={CLOSE:"close"+c,CLOSED:"closed"+c,CLICK_DATA_API:"click"+c+".data-api"},f="alert",d="fade",g="show",_=function(){function i(e){this._element=e}var e=i.prototype;return e.close=function(e){var t=this._element;e&&(t=this._getRootElement(e)),this._triggerCloseEvent(t).isDefaultPrevented()||this._removeElement(t)},e.dispose=function(){p.removeData(this._element,a),this._element=null},e._getRootElement=function(e){var t=m.getSelectorFromElement(e),n=!1;return t&&(n=document.querySelector(t)),n=n||p(e).closest("."+f)[0]},e._triggerCloseEvent=function(e){var t=p.Event(u.CLOSE);return p(e).trigger(t),t},e._removeElement=function(t){var n=this;if(p(t).removeClass(g),p(t).hasClass(d)){var e=m.getTransitionDurationFromElement(t);p(t).one(m.TRANSITION_END,function(e){return n._destroyElement(t,e)}).emulateTransitionEnd(e)}else this._destroyElement(t)},e._destroyElement=function(e){p(e).detach().trigger(u.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(a);t||(t=new i(this),e.data(a,t)),"close"===n&&t[n](this)})},i._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',_._handleDismiss(new _)),p.fn[r]=_._jQueryInterface,p.fn[r].Constructor=_,p.fn[r].noConflict=function(){return p.fn[r]=h,_._jQueryInterface};var v="button",y="bs.button",E="."+y,b=".data-api",w=p.fn[v],T="active",C="btn",S="focus",D='[data-toggle^="button"]',I='[data-toggle="buttons"]',A='[data-toggle="button"]',O='[data-toggle="buttons"] .btn',N='input:not([type="hidden"])',k=".active",L=".btn",P={CLICK_DATA_API:"click"+E+b,FOCUS_BLUR_DATA_API:"focus"+E+b+" blur"+E+b,LOAD_DATA_API:"load"+E+b},x=function(){function n(e){this._element=e}var e=n.prototype;return e.toggle=function(){var e=!0,t=!0,n=p(this._element).closest(I)[0];if(n){var i=this._element.querySelector(N);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(T))e=!1;else{var o=n.querySelector(k);o&&p(o).removeClass(T)}else"checkbox"===i.type?"LABEL"===this._element.tagName&&i.checked===this._element.classList.contains(T)&&(e=!1):e=!1;e&&(i.checked=!this._element.classList.contains(T),p(i).trigger("change")),i.focus(),t=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(t&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(T)),e&&p(this._element).toggleClass(T))},e.dispose=function(){p.removeData(this._element,y),this._element=null},n._jQueryInterface=function(t){return this.each(function(){var e=p(this).data(y);e||(e=new n(this),p(this).data(y,e)),"toggle"===t&&e[t]()})},s(n,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),n}();p(document).on(P.CLICK_DATA_API,D,function(e){var t=e.target;if(p(t).hasClass(C)||(t=p(t).closest(L)[0]),!t||t.hasAttribute("disabled")||t.classList.contains("disabled"))e.preventDefault();else{var n=t.querySelector(N);if(n&&(n.hasAttribute("disabled")||n.classList.contains("disabled")))return void e.preventDefault();x._jQueryInterface.call(p(t),"toggle")}}).on(P.FOCUS_BLUR_DATA_API,D,function(e){var t=p(e.target).closest(L)[0];p(t).toggleClass(S,/^focus(in)?$/.test(e.type))}),p(window).on(P.LOAD_DATA_API,function(){for(var e=[].slice.call(document.querySelectorAll(O)),t=0,n=e.length;t<n;t++){var i=e[t],o=i.querySelector(N);o.checked||o.hasAttribute("checked")?i.classList.add(T):i.classList.remove(T)}for(var r=0,s=(e=[].slice.call(document.querySelectorAll(A))).length;r<s;r++){var a=e[r];"true"===a.getAttribute("aria-pressed")?a.classList.add(T):a.classList.remove(T)}}),p.fn[v]=x._jQueryInterface,p.fn[v].Constructor=x,p.fn[v].noConflict=function(){return p.fn[v]=w,x._jQueryInterface};var j="carousel",H="bs.carousel",R="."+H,F=".data-api",M=p.fn[j],W={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},U={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},B="next",q="prev",K="left",Q="right",V={SLIDE:"slide"+R,SLID:"slid"+R,KEYDOWN:"keydown"+R,MOUSEENTER:"mouseenter"+R,MOUSELEAVE:"mouseleave"+R,TOUCHSTART:"touchstart"+R,TOUCHMOVE:"touchmove"+R,TOUCHEND:"touchend"+R,POINTERDOWN:"pointerdown"+R,POINTERUP:"pointerup"+R,DRAG_START:"dragstart"+R,LOAD_DATA_API:"load"+R+F,CLICK_DATA_API:"click"+R+F},Y="carousel",z="active",X="slide",G="carousel-item-right",$="carousel-item-left",J="carousel-item-next",Z="carousel-item-prev",ee="pointer-event",te=".active",ne=".active.carousel-item",ie=".carousel-item",oe=".carousel-item img",re=".carousel-item-next, .carousel-item-prev",se=".carousel-indicators",ae="[data-sli
2707de], [data-slide-to]",le='[data-ride="carousel"]',ce={TOUCH:"touch",PEN:"pen"},he=function(){function r(e,t){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(t),this._element=e,this._indicatorsElement=this._element.querySelector(se),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=r.prototype;return e.next=function(){this._isSliding||this._slide(B)},e.nextWhenVisible=function(){!document.hidden&&p(this._element).is(":visible")&&"hidden"!==p(this._element).css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(q)},e.pause=function(e){e||(this._isPaused=!0),this._element.querySelector(re)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(e){var t=this;this._activeElement=this._element.querySelector(ne);var n=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)p(this._element).one(V.SLID,function(){return t.to(e)});else{if(n===e)return this.pause(),void this.cycle();var i=n<e?B:q;this._slide(i,this._items[e])}},e.dispose=function(){p(this._element).off(R),p.removeData(this._element,H),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(e){return e=l({},W,{},e),m.typeCheckConfig(j,e,U),e},e._handleSwipe=function(){var e=Math.abs(this.touchDeltaX);if(!(e<=40)){var t=e/this.touchDeltaX;(this.touchDeltaX=0)<t&&this.prev(),t<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&p(this._element).on(V.KEYDOWN,function(e){return t._keydown(e)}),"hover"===this._config.pause&&p(this._element).on(V.MOUSEENTER,function(e){return t.pause(e)}).on(V.MOUSELEAVE,function(e){return t.cycle(e)}),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var n=function(e){t._pointerEvent&&ce[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},i=function(e){t._pointerEvent&&ce[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout(function(e){return t.cycle(e)},500+t._config.interval))};p(this._element.querySelectorAll(oe)).on(V.DRAG_START,function(e){return e.preventDefault()}),this._pointerEvent?(p(this._element).on(V.POINTERDOWN,function(e){return n(e)}),p(this._element).on(V.POINTERUP,function(e){return i(e)}),this._element.classList.add(ee)):(p(this._element).on(V.TOUCHSTART,function(e){return n(e)}),p(this._element).on(V.TOUCHMOVE,function(e){return function(e){e.originalEvent.touches&&1<e.originalEvent.touches.length?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)}),p(this._element).on(V.TOUCHEND,function(e){return i(e)}))}},e._keydown=function(e){if(!/input|textarea/i.test(e.target.tagName))switch(e.which){case 37:e.preventDefault(),this.prev();break;case 39:e.preventDefault(),this.next()}},e._getItemIndex=function(e){return this._items=e&&e.parentNode?[].slice.call(e.parentNode.querySelectorAll(ie)):[],this._items.indexOf(e)},e._getItemByDirection=function(e,t){var n=e===B,i=e===q,o=this._getItemIndex(t),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return t;var s=(o+(e===q?-1:1))%this._items.length;return-1==s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(e,t){var n=this._getItemIndex(e),i=this._getItemIndex(this._element.querySelector(ne)),o=p.Event(V.SLIDE,{relatedTarget:e,direction:t,from:i,to:n});return p(this._element).trigger(o),o},e._setActiveIndicatorElement=function(e){if(this._indicatorsElement){var t=[].slice.call(this._indicatorsElement.querySelectorAll(te));p(t).removeClass(z);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&p(n).addClass(z)}},e._slide=function(e,t){var n,i,o,r=this,s=this._element.querySelector(ne),a=this._getItemIndex(s),l=t||s&&this._getItemByDirection(e,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=e===B?(n=$,i=J,K):(n=G,i=Z,Q),l&&p(l).hasClass(z))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=p.Event(V.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(p(this._element).hasClass(X)){p(l).addClass(i),m.reflow(l),p(s).addClass(n),p(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=f):this._config.interval=this._config.defaultInterval||this._config.interval;var d=m.getTransitionDurationFromElement(s);p(s).one(m.TRANSITION_END,function(){p(l).removeClass(n+" "+i).addClass(z),p(s).removeClass(z+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return p(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else p(s).removeClass(z),p(l).addClass(z),this._isSliding=!1,p(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var e=p(this).data(H),t=l({},W,{},p(this).data());"object"==typeof i&&(t=l({},t,{},i));var n="string"==typeof i?i:t.slide;if(e||(e=new r(this,t),p(this).data(H,e)),"number"==typeof i)e.to(i);else if("string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method n
2707amed "'+n+'"');e[n]()}else t.interval&&t.ride&&(e.pause(),e.cycle())})},r._dataApiClickHandler=function(e){var t=m.getSelectorFromElement(this);if(t){var n=p(t)[0];if(n&&p(n).hasClass(Y)){var i=l({},p(n).data(),{},p(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(p(n),i),o&&p(n).data(H).to(o),e.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return W}}]),r}();p(document).on(V.CLICK_DATA_API,ae,he._dataApiClickHandler),p(window).on(V.LOAD_DATA_API,function(){for(var e=[].slice.call(document.querySelectorAll(le)),t=0,n=e.length;t<n;t++){var i=p(e[t]);he._jQueryInterface.call(i,i.data())}}),p.fn[j]=he._jQueryInterface,p.fn[j].Constructor=he,p.fn[j].noConflict=function(){return p.fn[j]=M,he._jQueryInterface};var ue="collapse",fe="bs.collapse",de="."+fe,pe=p.fn[ue],me={toggle:!0,parent:""},ge={toggle:"boolean",parent:"(string|element)"},_e={SHOW:"show"+de,SHOWN:"shown"+de,HIDE:"hide"+de,HIDDEN:"hidden"+de,CLICK_DATA_API:"click"+de+".data-api"},ve="show",ye="collapse",Ee="collapsing",be="collapsed",we="width",Te="height",Ce=".show, .collapsing",Se='[data-toggle="collapse"]',De=function(){function a(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(Se)),i=0,o=n.length;i<o;i++){var r=n[i],s=m.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(e){return e===t});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=a.prototype;return e.toggle=function(){p(this._element).hasClass(ve)?this.hide():this.show()},e.show=function(){var e,t,n=this;if(!this._isTransitioning&&!p(this._element).hasClass(ve)&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(Ce)).filter(function(e){return"string"==typeof n._config.parent?e.getAttribute("data-parent")===n._config.parent:e.classList.contains(ye)})).length&&(e=null),!(e&&(t=p(e).not(this._selector).data(fe))&&t._isTransitioning))){var i=p.Event(_e.SHOW);if(p(this._element).trigger(i),!i.isDefaultPrevented()){e&&(a._jQueryInterface.call(p(e).not(this._selector),"hide"),t||p(e).data(fe,null));var o=this._getDimension();p(this._element).removeClass(ye).addClass(Ee),this._element.style[o]=0,this._triggerArray.length&&p(this._triggerArray).removeClass(be).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){p(n._element).removeClass(Ee).addClass(ye).addClass(ve),n._element.style[o]="",n.setTransitioning(!1),p(n._element).trigger(_e.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},e.hide=function(){var e=this;if(!this._isTransitioning&&p(this._element).hasClass(ve)){var t=p.Event(_e.HIDE);if(p(this._element).trigger(t),!t.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p(this._element).addClass(Ee).removeClass(ye).removeClass(ve);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=m.getSelectorFromElement(r);if(null!==s)p([].slice.call(document.querySelectorAll(s))).hasClass(ve)||p(r).addClass(be).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){e.setTransitioning(!1),p(e._element).removeClass(Ee).addClass(ye).trigger(_e.HIDDEN)}).emulateTransitionEnd(a)}}},e.setTransitioning=function(e){this._isTransitioning=e},e.dispose=function(){p.removeData(this._element,fe),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(e){return(e=l({},me,{},e)).toggle=Boolean(e.toggle),m.typeCheckConfig(ue,e,ge),e},e._getDimension=function(){return p(this._element).hasClass(we)?we:Te},e._getParent=function(){var e,n=this;m.isElement(this._config.parent)?(e=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var t='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(e.querySelectorAll(t));return p(i).each(function(e,t){n._addAriaAndCollapsedClass(a._getTargetFromElement(t),[t])}),e},e._addAriaAndCollapsedClass=function(e,t){var n=p(e).hasClass(ve);t.length&&p(t).toggleClass(be,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(e){var t=m.getSelectorFromElement(e);return t?document.querySelector(t):null},a._jQueryInterface=function(i){return this.each(function(){var e=p(this),t=e.data(fe),n=l({},me,{},e.data(),{},"object"==typeof i&&i?i:{});if(!t&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),t||(t=new a(this,n),e.data(fe,t)),"string"==typeof i){if("undefined"==typeof t[i])throw new TypeError('No method n
2707amed "'+i+'"');t[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return me}}]),a}();p(document).on(_e.CLICK_DATA_API,Se,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var n=p(this),t=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(t));p(i).each(function(){var e=p(this),t=e.data(fe)?"toggle":n.data();De._jQueryInterface.call(e,t)})}),p.fn[ue]=De._jQueryInterface,p.fn[ue].Constructor=De,p.fn[ue].noConflict=function(){return p.fn[ue]=pe,De._jQueryInterface};var Ie="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,Ae=function(){for(var e=["Edge","Trident","Firefox"],t=0;t<e.length;t+=1)if(Ie&&0<=navigator.userAgent.indexOf(e[t]))return 1;return 0}();var Oe=Ie&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},Ae))}};function Ne(e){return e&&"[object Function]"==={}.toString.call(e)}function ke(e,t){if(1!==e.nodeType)return[];var n=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?n[t]:n}function Le(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function Pe(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=ke(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?e:Pe(Le(e))}function xe(e){return e&&e.referenceNode?e.referenceNode:e}var je=Ie&&!(!window.MSInputMethodContext||!document.documentMode),He=Ie&&/MSIE 10/.test(navigator.userAgent);function Re(e){return 11===e?je:10===e?He:je||He}function Fe(e){if(!e)return document.documentElement;for(var t=Re(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===ke(n,"position")?Fe(n):n:e?e.ownerDocument.documentElement:document.documentElement}function Me(e){return null!==e.parentNode?Me(e.parentNode):e}function We(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,o=n?t:e,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s=r.commonAncestorContainer;if(e!==s&&t!==s||i.contains(o))return function(e){var t=e.nodeName;return"BODY"!==t&&("HTML"===t||Fe(e.firstElementChild)===e)}(s)?s:Fe(s);var a=Me(e);return a.host?We(a.host,t):We(e,Me(t).host)}function Ue(e,t){var n="top"===(1<arguments.length&&void 0!==t?t:"top")?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"!==i&&"HTML"!==i)return e[n];var o=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||o)[n]}function Be(e,t){var n="x"===t?"Left":"Top",i="Left"==n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"],10)+parseFloat(e["border"+i+"Width"],10)}function qe(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],Re(10)?parseInt(n["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function Ke(e){var t=e.body,n=e.documentElement,i=Re(10)&&getComputedStyle(n);return{height:qe("Height",t,n,i),width:qe("Width",t,n,i)}}var Qe=function(e,t,n){return t&&Ve(e.prototype,t),n&&Ve(e,n),e};function Ve(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ze=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e};function Xe(e){return ze({},e,{right:e.left+e.width,bottom:e.top+e.height})}function Ge(e){var t={};try{if(Re(10)){t=e.getBoundingClientRect();var n=Ue(e,"top"),i=Ue(e,"left");t.top+=n,t.left+=i,t.bottom+=n,t.right+=i}else t=e.getBoundingClientRect()}catch(e){}var o={left:t.left,top:t.top,width:t.right-t.left,height:t.bottom-t.top}
vendor: 9,063 bytes, line 2707
2707,r="HTML"===e.nodeName?Ke(e.ownerDocument):{},s=r.width||e.clientWidth||o.width,a=r.height||e.clientHeight||o.height,l=e.offsetWidth-s,c=e.offsetHeight-a;if(l||c){var h=ke(e);l-=Be(h,"x"),c-=Be(h,"y"),o.width-=l,o.height-=c}return Xe(o)}function $e(e,t,n){var i=2<arguments.length&&void 0!==n&&n,o=Re(10),r="HTML"===t.nodeName,s=Ge(e),a=Ge(t),l=Pe(e),c=ke(t),h=parseFloat(c.borderTopWidth,10),u=parseFloat(c.borderLeftWidth,10);i&&r&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var f=Xe({top:s.top-a.top-h,left:s.left-a.left-u,width:s.width,height:s.height});if(f.marginTop=0,f.marginLeft=0,!o&&r){var d=parseFloat(c.marginTop,10),p=parseFloat(c.marginLeft,10);f.top-=h-d,f.bottom-=h-d,f.left-=u-p,f.right-=u-p,f.marginTop=d,f.marginLeft=p}return(o&&!i?t.contains(l):t===l&&"BODY"!==l.nodeName)&&(f=function(e,t,n){var i=2<arguments.length&&void 0!==n&&n,o=Ue(t,"top"),r=Ue(t,"left"),s=i?-1:1;return e.top+=o*s,e.bottom+=o*s,e.left+=r*s,e.right+=r*s,e}(f,t)),f}function Je(e){if(!e||!e.parentElement||Re())return document.documentElement;for(var t=e.parentElement;t&&"none"===ke(t,"transform");)t=t.parentElement;return t||document.documentElement}function Ze(e,t,n,i,o){var r=4<arguments.length&&void 0!==o&&o,s={top:0,left:0},a=r?Je(e):We(e,xe(t));if("viewport"===i)s=function(e,t){var n=1<arguments.length&&void 0!==t&&t,i=e.ownerDocument.documentElement,o=$e(e,i),r=Math.max(i.clientWidth,window.innerWidth||0),s=Math.max(i.clientHeight,window.innerHeight||0),a=n?0:Ue(i),l=n?0:Ue(i,"left");return Xe({top:a-o.top+o.marginTop,left:l-o.left+o.marginLeft,width:r,height:s})}(a,r);else{var l=void 0;"scrollParent"===i?"BODY"===(l=Pe(Le(t))).nodeName&&(l=e.ownerDocument.documentElement):l="window"===i?e.ownerDocument.documentElement:i;var c=$e(l,a,r);if("HTML"!==l.nodeName||function e(t){var n=t.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===ke(t,"position"))return!0;var i=Le(t);return!!i&&e(i)}(a))s=c;else{var h=Ke(e.ownerDocument),u=h.height,f=h.width;s.top+=c.top-c.marginTop,s.bottom=u+c.top,s.left+=c.left-c.marginLeft,s.right=f+c.left}}var d="number"==typeof(n=n||0);return s.left+=d?n:n.left||0,s.top+=d?n:n.top||0,s.right-=d?n:n.right||0,s.bottom-=d?n:n.bottom||0,s}function et(e,t,i,n,o,r){var s=5<arguments.length&&void 0!==r?r:0;if(-1===e.indexOf("auto"))return e;var a=Ze(i,n,s,o),l={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},c=Object.keys(l).map(function(e){return ze({key:e},l[e],{area:function(e){return e.width*e.height}(l[e])})}).sort(function(e,t){return t.area-e.area}),h=c.filter(function(e){var t=e.width,n=e.height;return t>=i.clientWidth&&n>=i.clientHeight}),u=0<h.length?h[0].key:c[0].key,f=e.split("-")[1];return u+(f?"-"+f:"")}function tt(e,t,n,i){var o=3<arguments.length&&void 0!==i?i:null;return $e(n,o?Je(t):We(t,xe(n)),o)}function nt(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),i=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function it(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function ot(e,t,n){n=n.split("-")[0];var i=nt(e),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=t[s]+t[l]/2-i[l]/2,o[a]=n===a?t[a]-i[c]:t[it(a)],o}function rt(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function st(e,n,t){return(void 0===t?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=rt(e,function(e){return e[t]===n});return e.indexOf(i)}(e,"name",t))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var t=e.function||e.fn;e.enabled&&Ne(t)&&(n.offsets.popper=Xe(n.offsets.popper),n.offsets.reference=Xe(n.offsets.reference),n=t(n,e))}),n}function at(e,n){return e.some(function(e){var t=e.name;return e.enabled&&t===n})}function lt(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i<t.length;i++){var o=t[i],r=o?""+o+n:e;if("undefined"!=typeof document.body.style[r])return r}return null}function ct(e){var t=e.ownerDocument;return t?t.defaultView:window}function ht(e,t,n,i){n.updateBound=i,ct(e).addEventListener("resize",n.updateBound,{passive:!0});var o=Pe(e);return function e(t,n,i,o){var r="BODY"===t.nodeName,s=r?t.ownerDocument.defaultView:t;s.addEventListener(n,i,{passive:!0}),r||e(Pe(s.parentNode),n,i,o),o.push(s)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function ut(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=function(e,t){return ct(e).removeEventListener("resize",t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}(this.reference,this.state))}function ft(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function dt(n,i){Object.keys(i).forEach(function(e){var t="";-1!==["width","height","top","right","bottom","left"].indexOf(e)&&ft(i[e])&&(t="px"),n.style[e]=i[e]+t})}function pt(e,t){function n(e){return e}var i=e.offsets,o=i.popper,r=i.reference,s=Math.round,a=Math.floor,l=s(r.width),c=s(o.width),h=-1!==["left","right"].indexOf(e.placement),u=-1!==e.placement.indexOf("-"),f=t?h||u||l%2==c%2?s:a:n,d=t?s:n;return{left:f(l%2==1&&c%2==1&&!u&&t?o.left-1:o.left),top:d(o.top),bottom:d(o.bottom),right:f(o.right)}}var mt=Ie&&/Firefox/i.test(navigator.userAgent);function gt(e,t,n){var i=rt(e,function(e){return e.name===t}),o=!!i&&e.some(function(e){return e.name===n&&e.enabled&&e.order<i.order});if(!o){var r="`"+t+"`",s="`"+n+"`";console.warn(s+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")}return o}var _t=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],vt=_t.slice(3);function yt(e,t){var n=1<arguments.length&&void 0!==t&&t,i=vt.indexOf(e),o=vt.slice(i+1).concat(vt.slice(0,i));return n?o.reverse():o}var Et="flip",bt="clockwise",wt="counterclockwise";function Tt(e,o,r,t){var s=[0,0],a=-1!==["right","left"].indexOf(t),n=e.split(/(\+|\-)/).map(function(e){return e.trim()}),i=n.indexOf(rt(n,function(e){return-1!==e.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n];return(c=c.map(function(e,t){var n=(1===t?!a:a)?"height":"width",i=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,i=!0,e):i?(e[e.length-1]+=t,i=!1,e):e.concat(t)},[]).map(function(e){return function(e,t,n,i){var o=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return e;if(0!==s.indexOf("%"))return"vh"!==s&&"vw"!==s?r:("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return Xe(a)[t]/100*r}(e,n,o,r)})})).forEach(function(n,i){n.forEach(function(e,t){ft(e)&&(s[i]+=e*("-"===n[t-1]?-1:1))})}),s}var Ct={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var o=e.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:Ye({},l,r[l]),end:Ye({},l,r[l]+r[c]-s[c])};e.offsets.popper=ze({},s,h[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,i=e.placement,o=e.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=ft(+n)?[+n,0]:Tt(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),e.popper=r,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,i){var t=i.boundariesElement||Fe(e.instance.popper);e.instance.reference===t&&(t=Fe(t));var n=lt("transform"),o=e.instance.popper.style,r=o.top,s=o.left,a=o[n];o.top="",o.left="",o[n]="";var l=Ze(e.instance.popper,e.instance.reference,i.padding,t,e.positionFixed);o.top=r,o.left=s,o[n]=a,i.boundaries=l;var c=i.priority,h=e.offsets.popper,u={primary:function(e){var t=h[e];return h[e]<l[e]&&!i.escapeWithReference&&(t=Math.max(h[e],l[e])),Ye({},e,t)},secondary:function(e){var t="right"===e?"left":"top",n=h[t];return h[e]>l[e]&&!i.escapeWithReference&&(n=Math.min(h[t],l[e]-("right"===e?h.width:h.height))),Ye({},t,n)}};
vendor: 4,348 bytes, line 2707
2707return c.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";h=ze({},h,u[t](e))}),e.offsets.popper=h,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,o=e.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]<r(i[l])&&(e.offsets.popper[l]=r(i[l])-n[c]),n[l]>r(i[a])&&(e.offsets.popper[l]=r(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!gt(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var o=e.placement.split("-")[0],r=e.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=nt(i)[c];a[d]-p<s[u]&&(e.offsets.popper[u]-=s[u]-(a[d]-p)),a[u]+p>s[d]&&(e.offsets.popper[u]+=a[u]+p-s[d]),e.offsets.popper=Xe(e.offsets.popper);var m=a[u]+a[c]/2-p/2,g=ke(e.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-e.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),e.arrowElement=i,e.offsets.arrow=(Ye(n={},u,Math.round(y)),Ye(n,f,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(m,g){if(at(m.instance.modifiers,"inner"))return m;if(m.flipped&&m.placement===m.originalPlacement)return m;var _=Ze(m.instance.popper,m.instance.reference,g.padding,g.boundariesElement,m.positionFixed),v=m.placement.split("-")[0],y=it(v),E=m.placement.split("-")[1]||"",b=[];switch(g.behavior){case Et:b=[v,y];break;case bt:b=yt(v);break;case wt:b=yt(v,!0);break;default:b=g.behavior}return b.forEach(function(e,t){if(v!==e||b.length===t+1)return m;v=m.placement.split("-")[0],y=it(v);var n=m.offsets.popper,i=m.offsets.reference,o=Math.floor,r="left"===v&&o(n.right)>o(i.left)||"right"===v&&o(n.left)<o(i.right)||"top"===v&&o(n.bottom)>o(i.top)||"bottom"===v&&o(n.top)<o(i.bottom),s=o(n.left)<o(_.left),a=o(n.right)>o(_.right),l=o(n.top)<o(_.top),c=o(n.bottom)>o(_.bottom),h="left"===v&&s||"right"===v&&a||"top"===v&&l||"bottom"===v&&c,u=-1!==["top","bottom"].indexOf(v),f=!!g.flipVariations&&(u&&"start"===E&&s||u&&"end"===E&&a||!u&&"start"===E&&l||!u&&"end"===E&&c),d=!!g.flipVariationsByContent&&(u&&"start"===E&&a||u&&"end"===E&&s||!u&&"start"===E&&c||!u&&"end"===E&&l),p=f||d;(r||h||p)&&(m.flipped=!0,(r||h)&&(v=b[t+1]),p&&(E=function(e){return"end"===e?"start":"start"===e?"end":e}(E)),m.placement=v+(E?"-"+E:""),m.offsets.popper=ze({},m.offsets.popper,ot(m.instance.popper,m.offsets.reference,m.placement)),m=st(m.instance.modifiers,m,"flip"))}),m},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=e.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),e.placement=it(t),e.offsets.popper=Xe(o),e}},hide:{order:800,enabled:!0,fn:function(e){if(!gt(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=rt(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottom<n.top||t.left>n.right||t.top>n.bottom||t.right<n.left){if(!0===e.hide)return e;e.hide=!0,e.attributes["x-out-of-boundaries"]=""}else{if(!1===e.hide)return e;e.hide=!1,e.attributes["x-out-of-boundaries"]=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var n=t.x,i=t.y,o=e.offsets.popper,r=rt(e.instance.modifiers,function(e){return"applyStyle"===e.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var s=void 0!==r?r:t.gpuAcceleration,a=Fe(e.instance.popper),l=Ge(a),c={position:o.position},h=pt(e,window.devicePixelRatio<2||!mt),u="bottom"===n?"top":"bottom",f="right"===i?"left":"right",d=lt("transform"),p=void 0,m=void 0;if(m="bottom"==u?"HTML"===a.nodeName?-a.clientHeight+h.bottom:-l.he
2707ight+h.bottom:h.top,p="right"==f?"HTML"===a.nodeName?-a.clientWidth+h.right:-l.width+h.right:h.left,s&&d)c[d]="translate3d("+p+"px, "+m+"px, 0)",c[u]=0,c[f]=0,c.willChange="transform";else{var g="bottom"==u?-1:1,_="right"==f?-1:1;c[u]=m*g,c[f]=p*_,c.willChange=u+", "+f}var v={"x-placement":e.placement};return e.attributes=ze({},v,e.attributes),e.styles=ze({},c,e.styles),e.arrowStyles=ze({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(e){return dt(e.instance.popper,e.styles),function(t,n){Object.keys(n).forEach(function(e){!1!==n[e]?t.setAttribute(e,n[e]):t.removeAttribute(e)})}(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&dt(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,n,i,o){var r=tt(o,t,e,n.positionFixed),s=et(n.placement,r,t,e,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return t.setAttribute("x-placement",s),dt(t,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},St=(Qe(Dt,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=tt(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=et(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=ot(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=st(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,at(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[lt("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ht(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return ut.call(this)}}]),Dt);function Dt(e,t){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Dt),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=Oe(this.update.bind(this)),this.options=ze({},Dt.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(ze({},Dt.Defaults.modifiers,i.modifiers)).forEach(function(e){n.options.modifiers[e]=ze({},Dt.Defaults.modifiers[e]||{},i.modifiers?i.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return ze({name:e},n.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&Ne(e.onLoad)&&e.onLoad(n.reference,n.popper,n.options,e,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}St.Utils=("undefined"!=typeof window?window:global).PopperUtils,St.placements=_t,St.Defaults=Ct;var It="dropdown",At="bs.dropdown",Ot="."+At,Nt=".data-api",kt=p.fn[It],Lt=new RegExp("38|40|27"),Pt={HIDE:"hide"+Ot,HIDDEN:"hidden"+Ot,SHOW:"show"+Ot,SHOWN:"shown"+Ot,CLICK:"click"+Ot,CLICK_DATA_API:"click"+Ot+Nt,KEYDOWN_DATA_API:"keydown"+Ot+Nt,KEYUP_DATA_API:"keyup"+Ot+Nt},xt="disabled",jt="show",Ht="dropup",Rt="dropright",Ft="dropleft",Mt="dropdown-menu-right",Wt="position-static",Ut='[data-toggle="dropdown"]',Bt=".dropdown form",qt=".dropdown-menu",Kt=".navbar-nav",Qt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Vt="top-start",Yt="top-end",zt="bottom-start",Xt="bottom-end",Gt="right-start",$t="left-start",Jt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null}
2707,Zt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},en=function(){function c(e,t){this._element=e,this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=c.prototype;return e.toggle=function(){if(!this._element.disabled&&!p(this._element).hasClass(xt)){var e=p(this._menu).hasClass(jt);c._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||p(this._element).hasClass(xt)||p(this._menu).hasClass(jt))){var t={relatedTarget:this._element},n=p.Event(Pt.SHOW,t),i=c._getParentFromElement(this._element);if(p(i).trigger(n),!n.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof St)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=i:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p(i).addClass(Wt),this._popper=new St(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p(i).closest(Kt).length&&p(document.body).children().on("mouseover",null,p.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p(this._menu).toggleClass(jt),p(i).toggleClass(jt).trigger(p.Event(Pt.SHOWN,t))}}},e.hide=function(){if(!this._element.disabled&&!p(this._element).hasClass(xt)&&p(this._menu).hasClass(jt)){var e={relatedTarget:this._element},t=p.Event(Pt.HIDE,e),n=c._getParentFromElement(this._element);p(n).trigger(t),t.isDefaultPrevented()||(this._popper&&this._popper.destroy(),p(this._menu).toggleClass(jt),p(n).toggleClass(jt).trigger(p.Event(Pt.HIDDEN,e)))}},e.dispose=function(){p.removeData(this._element,At),p(this._element).off(Ot),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;p(this._element).on(Pt.CLICK,function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},e._getConfig=function(e){return e=l({},this.constructor.Default,{},p(this._element).data(),{},e),m.typeCheckConfig(It,e,this.constructor.DefaultType),e},e._getMenuElement=function(){if(!this._menu){var e=c._getParentFromElement(this._element);e&&(this._menu=e.querySelector(qt))}return this._menu},e._getPlacement=function(){var e=p(this._element.parentNode),t=zt;return e.hasClass(Ht)?(t=Vt,p(this._menu).hasClass(Mt)&&(t=Yt)):e.hasClass(Rt)?t=Gt:e.hasClass(Ft)?t=$t:p(this._menu).hasClass(Mt)&&(t=Xt),t},e._detectNavbar=function(){return 0<p(this._element).closest(".navbar").length},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,{},t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var e={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(e.modifiers.applyStyle={enabled:!1}),l({},e,{},this._config.popperConfig)},c._jQueryInterface=function(t){return this.each(function(){var e=p(this).data(At);if(e||(e=new c(this,"object"==typeof t?t:null),p(this).data(At,e)),"string"==typeof t){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},c._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var t=[].slice.call(document.querySelectorAll(Ut)),n=0,i=t.length;n<i;n++){var o=c._getParentFromElement(t[n]),r=p(t[n]).data(At),s={relatedTarget:t[n]};if(e&&"click"===e.type&&(s.clickEvent=e),r){var a=r._menu;if(p(o).hasClass(jt)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&p.contains(o,e.target))){var l=p.Event(Pt.HIDE,s);p(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),t[n].setAttribute("aria-expanded","fal
2707se"),r._popper&&r._popper.destroy(),p(a).removeClass(jt),p(o).removeClass(jt).trigger(p.Event(Pt.HIDDEN,s)))}}}},c._getParentFromElement=function(e){var t,n=m.getSelectorFromElement(e);return n&&(t=document.querySelector(n)),t||e.parentNode},c._dataApiKeydownHandler=function(e){if((/input|textarea/i.test(e.target.tagName)?!(32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||p(e.target).closest(qt).length)):Lt.test(e.which))&&(e.preventDefault(),e.stopPropagation(),!this.disabled&&!p(this).hasClass(xt))){var t=c._getParentFromElement(this),n=p(t).hasClass(jt);if(n||27!==e.which)if(n&&(!n||27!==e.which&&32!==e.which)){var i=[].slice.call(t.querySelectorAll(Qt)).filter(function(e){return p(e).is(":visible")});if(0!==i.length){var o=i.indexOf(e.target);38===e.which&&0<o&&o--,40===e.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===e.which){var r=t.querySelector(Ut);p(r).trigger("focus")}p(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Jt}},{key:"DefaultType",get:function(){return Zt}}]),c}();p(document).on(Pt.KEYDOWN_DATA_API,Ut,en._dataApiKeydownHandler).on(Pt.KEYDOWN_DATA_API,qt,en._dataApiKeydownHandler).on(Pt.CLICK_DATA_API+" "+Pt.KEYUP_DATA_API,en._clearMenus).on(Pt.CLICK_DATA_API,Ut,function(e){e.preventDefault(),e.stopPropagation(),en._jQueryInterface.call(p(this),"toggle")}).on(Pt.CLICK_DATA_API,Bt,function(e){e.stopPropagation()}),p.fn[It]=en._jQueryInterface,p.fn[It].Constructor=en,p.fn[It].noConflict=function(){return p.fn[It]=kt,en._jQueryInterface};var tn="modal",nn="bs.modal",on="."+nn,rn=p.fn[tn],sn={backdrop:!0,keyboard:!0,focus:!0,show:!0},an={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},ln={HIDE:"hide"+on,HIDE_PREVENTED:"hidePrevented"+on,HIDDEN:"hidden"+on,SHOW:"show"+on,SHOWN:"shown"+on,FOCUSIN:"focusin"+on,RESIZE:"resize"+on,CLICK_DISMISS:"click.dismiss"+on,KEYDOWN_DISMISS:"keydown.dismiss"+on,MOUSEUP_DISMISS:"mouseup.dismiss"+on,MOUSEDOWN_DISMISS:"mousedown.dismiss"+on,CLICK_DATA_API:"click"+on+".data-api"},cn="modal-dialog-scrollable",hn="modal-scrollbar-measure",un="modal-backdrop",fn="modal-open",dn="fade",pn="show",mn="modal-static",gn=".modal-dialog",_n=".modal-body",vn='[data-toggle="modal"]',yn='[data-dismiss="modal"]',En=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",bn=".sticky-top",wn=function(){function o(e,t){this._config=this._getConfig(t),this._element=e,this._dialog=e.querySelector(gn),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=o.prototype;return e.toggle=function(e){return this._isShown?this.hide():this.show(e)},e.show=function(e){var t=this;if(!this._isShown&&!this._isTransitioning){p(this._element).hasClass(dn)&&(this._isTransitioning=!0);var n=p.Event(ln.SHOW,{relatedTarget:e});p(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),p(this._element).on(ln.CLICK_DISMISS,yn,function(e){return t.hide(e)}),p(this._dialog).on(ln.MOUSEDOWN_DISMISS,function(){p(t._element).one(ln.MOUSEUP_DISMISS,function(e){p(e.target).is(t._element)&&(t._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return t._showElement(e)}))}},e.hide=function(e){var t=this;if(e&&e.preventDefault(),this._isShown&&!this._isTransitioning){var n=p.Event(ln.HIDE);if(p(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=p(this._element).hasClass(dn);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p(document).off(ln.FOCUSIN),p(this._element).removeClass(pn),p(this._element).off(ln.CLICK_DISMISS),p(this._dialog).off(ln.MOUSEDOWN_DISMISS),i){var o=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(e){return t._hideModal(e)}).emulateTransitionEnd(o)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach(function(e){return p(e).off(on)}),p(document).off(ln.FOCUSIN),p.removeData(this._element,nn),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(e){return e=l({},sn,{},e),m.typeCheckConfig(tn,e,an),e},e._triggerBackdropTransition=function(){var e=this;if("static"===this._config.backdrop){var t=p.Event(ln.HIDE_PREVENTED);if(p(this._element).trigger(t),t.defaultPrevented)return;this._element.classList.add(mn);var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){e._element.classList.remove(mn)}).emulateTransitionEnd(n),this._element.focus()}else this.hide()},e._showElement=function(e){var t=this,n=p(this._element).hasClass(dn),i=this._dialog?this._dialog.querySelector(_n):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),p(this._dialog).hasClass(cn)&&i?i.scrollTop=0:this._element.scrollTop=0,n&&m.reflow(this._element),p(this._element).addClass(pn),this._config.focus&&this._enforceFocus();function o(){t._config.focus&&t._element.focus(),t._isTransitioning=!1,p(t._element).trigger(r)}var r=p.Event(ln.SHOWN,{relatedTarget:e});if(n){var s=m.getTransitionDurationFromElement(this._dialog);p(this._dialog).one(m.TRANSITION_END,o).emulateTransitionEnd(s)}else o()},e._enforceFocus=function(){var t=this;p(document).off(ln.FOCUSIN).on(ln.FOCUSIN,function(e){document!==e.target&&t._element!==e.target&&0===p(t._element).has(e.target).length&&t._element.focus()})},e._setEscapeEvent=function(){var t=this;this._isShown&&this._config.keyboard?p(this._element).on(ln.KEYDOWN_DISMISS,function(e){27===e.which&&t._triggerBackdropTransition()}):this._isShown||p(this._element).off(ln.KEYDOWN_DISMISS)},e._setResizeEvent=function(){var t=this;this._isShown?p(window).on(ln.RESIZE,function(e){return t.handleUpdate(e)}):p(window).off(ln.RESIZE)},e._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){p(document.body).removeClass(fn),e._resetAdjustments(),e._resetScrollbar(),p(e._element).trigger(ln.HIDDEN)})},e._removeBackdrop=function(){this._backdrop&&(p(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(e){var t=this,n=p(this._element).hasClass(dn)?dn:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=un,n&&this._backdrop.classList.add(n),p(this._backdrop).appendTo(document.body),p(this._element).on(ln.CLICK_DISMISS,function(e){t._ignoreBackdropClick?t._ignoreBackdropClick=!1:e.target===e.currentTarget&&t._triggerBackdropTransition()}),n&&m.reflow(this._backdrop),p(this._backdrop).addClass(pn),!e)return;if(!n)return void e();var i=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,e).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){p(this._backdrop).removeClass(pn);var o=function(){t._removeBackdrop(),e&&e()};if(p(this._element).hasClass(dn)){var r=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else e&&e()},e._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=e.left+e.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(En)),t=[].slice.call(document.querySelectorAll(bn));p(e).each(function(e,t){var n=t.style.paddingRight,i=p(t).css("padding-right");p(t).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p(t).each(function(e,t){var n=t.style.marginRight,i=p(t).css("margin-right");p(t).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=p(document.body).css("padding-right");p(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}p(document.body).addClass(fn)},e._resetScrollbar=function(){var e=[].slice.call(document.querySelectorAll(En));p(e).each(function(e,t){var n=p(t).data("padding-right");p(t).removeData("padding-right"),t.style.paddingRight=n||""});var t=[].slice.call(document.querySelectorAll(""+bn));p(t).each(function(e,t){var n=p(t).data("margin-right");"undefined"!=typeof n&&p(t).css("margin-right",n).removeData("margin-right")});var n=p(document.body).data("padding-right");p(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},e._getScrollbarWidth=function(){var e=document.createElement("div");e.className=hn,document.body.appendChild(e);var t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t},o._jQueryInterface=function(n,i){return this.each(function(){var e=p(this).data(nn),t=l({},sn,{},p(this).data(),{},"object"==typeof n&&n?n:{});if(e||(e=new o(this,t),p(this).data(nn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method n
2707amed "'+n+'"');e[n](i)}else t.show&&e.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return sn}}]),o}();p(document).on(ln.CLICK_DATA_API,vn,function(e){var t,n=this,i=m.getSelectorFromElement(this);i&&(t=document.querySelector(i));var o=p(t).data(nn)?"toggle":l({},p(t).data(),{},p(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var r=p(t).one(ln.SHOW,function(e){e.isDefaultPrevented()||r.one(ln.HIDDEN,function(){p(n).is(":visible")&&n.focus()})});wn._jQueryInterface.call(p(t),o,this)}),p.fn[tn]=wn._jQueryInterface,p.fn[tn].Constructor=wn,p.fn[tn].noConflict=function(){return p.fn[tn]=rn,wn._jQueryInterface};var Tn=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Cn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Sn=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Dn=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function In(e,r,t){if(0===e.length)return e;if(t&&"function"==typeof t)return t(e);for(var n=(new window.DOMParser).parseFromString(e,"text/html"),s=Object.keys(r),a=[].slice.call(n.body.querySelectorAll("*")),i=function(e){var t=a[e],n=t.nodeName.toLowerCase();if(-1===s.indexOf(t.nodeName.toLowerCase()))return t.parentNode.removeChild(t),"continue";var i=[].slice.call(t.attributes),o=[].concat(r["*"]||[],r[n]||[]);i.forEach(function(e){!function(e,t){var n=e.nodeName.toLowerCase();if(-1!==t.indexOf(n))return-1===Tn.indexOf(n)||Boolean(e.nodeValue.match(Sn)||e.nodeValue.match(Dn));for(var i=t.filter(function(e){return e instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1}(e,o)&&t.removeAttribute(e.nodeName)})},o=0,l=a.length;o<l;o++)i(o);return n.body.innerHTML}var An="tooltip",On="bs.tooltip",Nn="."+On,kn=p.fn[An],Ln="bs-tooltip",Pn=new RegExp("(^|\\s)"+Ln+"\\S+","g"),xn=["sanitize","whiteList","sanitizeFn"],jn={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Hn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Rn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Cn,popperConfig:null},Fn="show",Mn="out",Wn={HIDE:"hide"+Nn,HIDDEN:"hidden"+Nn,SHOW:"show"+Nn,SHOWN:"shown"+Nn,INSERTED:"inserted"+Nn,CLICK:"click"+Nn,FOCUSIN:"focusin"+Nn,FOCUSOUT:"focusout"+Nn,MOUSEENTER:"mouseenter"+Nn,MOUSELEAVE:"mouseleave"+Nn},Un="fade",Bn="show",qn=".tooltip-inner",Kn=".arrow",Qn="hover",Vn="focus",Yn="click",zn="manual",Xn=function(){function i(e,t){if("undefined"==typeof St)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var e=i.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=p(e.currentTarget).data(t);n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(Bn))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var e=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(e);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Un);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new St(this.element,o,this._getPopperConfig(a)),p(o).addClass(Bn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,p(t.element).trigger(t.constructor.Event.SHOWN),e===Mn&&t._leave(null,t)};if(p(this.tip).hasClass(Un)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(e){function t(){n._hoverState!==Fn&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),p(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()}var n=this,i=this.getTipElement(),o=p.Event(this.constructor.Event.HIDE);
2707if(p(this.element).trigger(o),!o.isDefaultPrevented()){if(p(i).removeClass(Bn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Yn]=!1,this._activeTrigger[Vn]=!1,this._activeTrigger[Qn]=!1,p(this.tip).hasClass(Un)){var r=m.getTransitionDurationFromElement(i);p(i).one(m.TRANSITION_END,t).emulateTransitionEnd(r)}else t();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(e){p(this.getTipElement()).addClass(Ln+"-"+e)},e.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},e.setContent=function(){var e=this.getTipElement();this.setElementContent(p(e.querySelectorAll(qn)),this.getTitle()),p(e).removeClass(Un+" "+Bn)},e.setElementContent=function(e,t){"object"!=typeof t||!t.nodeType&&!t.jquery?this.config.html?(this.config.sanitize&&(t=In(t,this.config.whiteList,this.config.sanitizeFn)),e.html(t)):e.text(t):this.config.html?p(t).parent().is(e)||e.empty().append(t):e.text(p(t).text())},e.getTitle=function(){var e=this.element.getAttribute("data-original-title");return e=e||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},e._getPopperConfig=function(e){var t=this;return l({},{placement:e,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Kn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}},{},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,{},t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},e._getAttachment=function(e){return Hn[e.toUpperCase()]},e._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(e){if("click"===e)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(e){return i.toggle(e)});else if(e!==zn){var t=e===Qn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=e===Qn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(t,i.config.selector,function(e){return i._enter(e)}).on(n,i.config.selector,function(e){return i._leave(e)})}}),this._hideModalHandler=function(){i.element&&i.hide()},p(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var e=typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title")&&"string"==e||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusin"===e.type?Vn:Qn]=!0),p(t.getTipElement()).hasClass(Bn)||t._hoverState===Fn?t._hoverState=Fn:(clearTimeout(t._timeout),t._hoverState=Fn,t.config.delay&&t.config.delay.show?t._timeout=setTimeout(function(){t._hoverState===Fn&&t.show()},t.config.delay.show):t.show())},e._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusout"===e.type?Vn:Qn]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=Mn,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(function(){t._hoverState===Mn&&t.hide()},t.config.delay.hide):t.hide())},e._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},e._getConfig=function(e){var t=p(this.element).data();return Object.keys(t).forEach(function(e){-1!==xn.indexOf(e)&&delete t[e]}),"number"==typeof(e=l({},this.constructor.Default,{},t,{},"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),m.typeCheckConfig(An,e,this.constructor.DefaultType),e.sanitize&&(e.template=In(e.template,e.whiteList,e.sanitizeFn)),e},e._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},e._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr("class").match(Pn);null!==t&&t.length&&e.removeClass(t.join(""))},e._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},e._fixTransition=function(){var e=this.getTipElement(),t=this.config.animation;null===e.getAttribute("x-placement")&&(p(e).removeClass(Un),this.config.animation=!1,this.hide(),this.show(),this.config.animation=t)},i._jQueryInterface=function(n){return this.each(function(){var e=p(this).data(On),t="object"==typeof n&&n;if((e||!/dispose|hide/.test(n))&&(e||(e=new i(this,t),p(this).data(On,e)),"string"==typeof n)){if("undefined"==typeof e[n])throw new TypeError('No method n
2707amed "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return Rn}},{key:"NAME",get:function(){return An}},{key:"DATA_KEY",get:function(){return On}},{key:"Event",get:function(){return Wn}},{key:"EVENT_KEY",get:function(){return Nn}},{key:"DefaultType",get:function(){return jn}}]),i}();p.fn[An]=Xn._jQueryInterface,p.fn[An].Constructor=Xn,p.fn[An].noConflict=function(){return p.fn[An]=kn,Xn._jQueryInterface};var Gn="popover",$n="bs.popover",Jn="."+$n,Zn=p.fn[Gn],ei="bs-popover",ti=new RegExp("(^|\\s)"+ei+"\\S+","g"),ni=l({},Xn.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),ii=l({},Xn.DefaultType,{content:"(string|element|function)"}),oi="fade",ri="show",si=".popover-header",ai=".popover-body",li={HIDE:"hide"+Jn,HIDDEN:"hidden"+Jn,SHOW:"show"+Jn,SHOWN:"shown"+Jn,INSERTED:"inserted"+Jn,CLICK:"click"+Jn,FOCUSIN:"focusin"+Jn,FOCUSOUT:"focusout"+Jn,MOUSEENTER:"mouseenter"+Jn,MOUSELEAVE:"mouseleave"+Jn},ci=function(e){function i(){return e.apply(this,arguments)||this}!function(e,t){e.prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t}(i,e);var t=i.prototype;return t.isWithContent=function(){return this.getTitle()||this._getContent()},t.addAttachmentClass=function(e){p(this.getTipElement()).addClass(ei+"-"+e)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var e=p(this.getTipElement());this.setElementContent(e.find(si),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this.element)),this.setElementContent(e.find(ai),t),e.removeClass(oi+" "+ri)},t._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},t._cleanTipClass=function(){var e=p(this.getTipElement()),t=e.attr("class").match(ti);null!==t&&0<t.length&&e.removeClass(t.join(""))},i._jQueryInterface=function(n){return this.each(function(){var e=p(this).data($n),t="object"==typeof n?n:null;if((e||!/dispose|hide/.test(n))&&(e||(e=new i(this,t),p(this).data($n,e)),"string"==typeof n)){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return ni}},{key:"NAME",get:function(){return Gn}},{key:"DATA_KEY",get:function(){return $n}},{key:"Event",get:function(){return li}},{key:"EVENT_KEY",get:function(){return Jn}},{key:"DefaultType",get:function(){return ii}}]),i}(Xn);p.fn[Gn]=ci._jQueryInterface,p.fn[Gn].Constructor=ci,p.fn[Gn].noConflict=function(){return p.fn[Gn]=Zn,ci._jQueryInterface};var hi="scrollspy",ui="bs.scrollspy",fi="."+ui,di=p.fn[hi],pi={offset:10,method:"auto",target:""},mi={offset:"number",method:"string",target:"(string|element)"},gi={ACTIVATE:"activate"+fi,SCROLL:"scroll"+fi,LOAD_DATA_API:"load"+fi+".data-api"},_i="dropdown-item",vi="active",yi='[data-spy="scroll"]',Ei=".nav, .list-group",bi=".nav-link",wi=".nav-item",Ti=".list-group-item",Ci=".dropdown",Si=".dropdown-item",Di=".dropdown-toggle",Ii="offset",Ai="position",Oi=function(){function n(e,t){var n=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(t),this._selector=this._config.target+" "+bi+","+this._config.target+" "+Ti+","+this._config.target+" "+Si,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p(this._scrollElement).on(gi.SCROLL,function(e){return n._process(e)}),this.refresh(),this._process()}var e=n.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?Ii:Ai,o="auto"===this._config.method?e:this._config.method,r=o===Ai?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(e){var t,n=m.getSelectorFromElement(e);if(n&&(t=document.querySelector(n)),t){var i=t.getBoundingClientRect();if(i.width||i.height)return[p(t)[o]().top+r,n]}return null}).filter(function(e){return e}).sort(function(e,t){return e[0]-t[0]}
2707).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1])})},e.dispose=function(){p.removeData(this._element,ui),p(this._scrollElement).off(fi),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(e){if("string"!=typeof(e=l({},pi,{},"object"==typeof e&&e?e:{})).target){var t=p(e.target).attr("id");t||(t=m.getUID(hi),p(e.target).attr("id",t)),e.target="#"+t}return m.typeCheckConfig(hi,e,mi),e},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),n<=e){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&e<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&e>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||e<this._offsets[o+1])&&this._activate(this._targets[o])}}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map(function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'}),n=p([].slice.call(document.querySelectorAll(e.join(","))));n.hasClass(_i)?(n.closest(Ci).find(Di).addClass(vi),n.addClass(vi)):(n.addClass(vi),n.parents(Ei).prev(bi+", "+Ti).addClass(vi),n.parents(Ei).prev(wi).children(bi).addClass(vi)),p(this._scrollElement).trigger(gi.ACTIVATE,{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(e){return e.classList.contains(vi)}).forEach(function(e){return e.classList.remove(vi)})},n._jQueryInterface=function(t){return this.each(function(){var e=p(this).data(ui);if(e||(e=new n(this,"object"==typeof t&&t),p(this).data(ui,e)),"string"==typeof t){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return pi}}]),n}();p(window).on(gi.LOAD_DATA_API,function(){for(var e=[].slice.call(document.querySelectorAll(yi)),t=e.length;t--;){var n=p(e[t]);Oi._jQueryInterface.call(n,n.data())}}),p.fn[hi]=Oi._jQueryInterface,p.fn[hi].Constructor=Oi,p.fn[hi].noConflict=function(){return p.fn[hi]=di,Oi._jQueryInterface};var Ni="bs.tab",ki="."+Ni,Li=p.fn.tab,Pi={HIDE:"hide"+ki,HIDDEN:"hidden"+ki,SHOW:"show"+ki,SHOWN:"shown"+ki,CLICK_DATA_API:"click"+ki+".data-api"},xi="dropdown-menu",ji="active",Hi="disabled",Ri="fade",Fi="show",Mi=".dropdown",Wi=".nav, .list-group",Ui=".active",Bi="> li > .active",qi='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Ki=".dropdown-toggle",Qi="> .dropdown-menu .active",Vi=function(){function i(e){this._element=e}var e=i.prototype;return e.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(ji)||p(this._element).hasClass(Hi))){var e,i,t=p(this._element).closest(Wi)[0],o=m.getSelectorFromElement(this._element);if(t){var r="UL"===t.nodeName||"OL"===t.nodeName?Bi:Ui;i=(i=p.makeArray(p(t).find(r)))[i.length-1]}var s=p.Event(Pi.HIDE,{relatedTarget:this._element}),a=p.Event(Pi.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(e=document.querySelector(o)),this._activate(this._element,t);var l=function(){var e=p.Event(Pi.HIDDEN,{relatedTarget:n._element}),t=p.Event(Pi.SHOWN,{relatedTarget:i});p(i).trigger(e),p(n._element).trigger(t)};e?this._activate(e,e.parentNode,l):l()}}},e.dispose=function(){p.removeData(this._element,Ni),this._element=null},e._activate=function(e,t,n){function i(){return o._transitionComplete(e,r,n)}var o=this,r=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?p(t).children(Ui):p(t).find(Bi))[0],s=n&&r&&p(r).hasClass(Ri);if(r&&s){var a=m.getTransitionDurationFromElement(r);p(r).removeClass(Fi).one(m.TRANSITION_END,i).emulateTransitionEnd(a)}else i()},e._transitionComplete=function(e,t,n){if(t){p(t).removeClass(ji);var i=p(t.parentNode).find(Qi)[0];i&&p(i).removeClass(ji),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}if(p(e).addClass(ji),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),m.reflow(e),e.classList.contains(Ri)&&e.classList.add(Fi),e.parentNode&&p(e.parentNode).hasClass(xi)){var o=p(e).closest(Mi)[0];if(o){var r=[].slice.call(o.querySelectorAll(Ki));p(r).addClass(ji)}e.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(Ni);if(t||(t=new i(this),e.data(Ni,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method n
2707amed "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}}]),i}();p(document).on(Pi.CLICK_DATA_API,qi,function(e){e.preventDefault(),Vi._jQueryInterface.call(p(this),"show")}),p.fn.tab=Vi._jQueryInterface,p.fn.tab.Constructor=Vi,p.fn.tab.noConflict=function(){return p.fn.tab=Li,Vi._jQueryInterface};var Yi="toast",zi="bs.toast",Xi="."+zi,Gi=p.fn[Yi],$i={CLICK_DISMISS:"click.dismiss"+Xi,HIDE:"hide"+Xi,HIDDEN:"hidden"+Xi,SHOW:"show"+Xi,SHOWN:"shown"+Xi},Ji="fade",Zi="hide",eo="show",to="showing",no={animation:"boolean",autohide:"boolean",delay:"number"},io={animation:!0,autohide:!0,delay:500},oo='[data-dismiss="toast"]',ro=function(){function i(e,t){this._element=e,this._config=this._getConfig(t),this._timeout=null,this._setListeners()}var e=i.prototype;return e.show=function(){var e=this,t=p.Event($i.SHOW);if(p(this._element).trigger(t),!t.isDefaultPrevented()){this._config.animation&&this._element.classList.add(Ji);var n=function(){e._element.classList.remove(to),e._element.classList.add(eo),p(e._element).trigger($i.SHOWN),e._config.autohide&&(e._timeout=setTimeout(function(){e.hide()},e._config.delay))};if(this._element.classList.remove(Zi),m.reflow(this._element),this._element.classList.add(to),this._config.animation){var i=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(eo)){var e=p.Event($i.HIDE);p(this._element).trigger(e),e.isDefaultPrevented()||this._close()}},e.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(eo)&&this._element.classList.remove(eo),p(this._element).off($i.CLICK_DISMISS),p.removeData(this._element,zi),this._element=null,this._config=null},e._getConfig=function(e){return e=l({},io,{},p(this._element).data(),{},"object"==typeof e&&e?e:{}),m.typeCheckConfig(Yi,e,this.constructor.DefaultType),e},e._setListeners=function(){var e=this;p(this._element).on($i.CLICK_DISMISS,oo,function(){return e.hide()})},e._close=function(){function e(){t._element.classList.add(Zi),p(t._element).trigger($i.HIDDEN)}var t=this;if(this._element.classList.remove(eo),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var e=p(this),t=e.data(zi);if(t||(t=new i(this,"object"==typeof n&&n),e.data(zi,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"DefaultType",get:function(){return no}},{key:"Default",get:function(){return io}}]),i}();p.fn[Yi]=ro._jQueryInterface,p.fn[Yi].Constructor=ro,p.fn[Yi].noConflict=function(){return p.fn[Yi]=Gi,ro._jQueryInterface},e.Alert=_,e.Button=x,e.Carousel=he,e.Collapse=De,e.Dropdown=en,e.Modal=wn,e.Popover=ci,e.Scrollspy=Oi,e.Tab=Vi,e.Toast=ro,e.Tooltip=Xn,e.Util=m,Object.defineProperty(e,"__esModule",{value:!0})}); 2708 2709(function ($, Drupal) { 2710 Drupal.behaviors.mtWaypointsAnimations = { 2711 attach: function (context, settings) { 2712 $("body:not(.path-admin) [data-animate-effect]", context).once('mtWaypointsAnimations').each(function() { 2713 var thisObject = $(this); 2714 var animation = thisObject.attr("data-animate-effect"); 2715 if(animation != "no-animation") { 2716 var waypoints = thisObject.waypoint(function(direction) { 2717 var animatedObject = $(this.element); 2718 setTimeout(function() { 2719 animatedObject.addClass("animated " + animation); 2720 animatedObject.removeClass("mt-no-opacity"); 2721 }, 100); 2722 this.destroy(); 2723 },{ 2724 offset: "90%" 2725 }); 2726 } 2727 }); 2728 } 2729 }; 2730})(jQuery, Drupal); 2731; 2732/*! 2733Waypoints Sticky Element Shortcut - 4.0.1 2734Copyright © 2011-2016 Caleb Troughton 2735Licensed under the MIT license. 2736https://github.com/imakewebthings/waypoints/blob/master/licenses.txt 2737*/ 2738!function(){"use strict";function t(s){this.options=e.extend({},i.defaults,t.defaults,s),this.element=this.options.element,this.$element=e(this.element),this.createWrapper(),this.createWaypoint()}var e=window.jQuery,i=window.Waypoint;t.prototype.createWaypoint=function(){var t=this.options.handler;this.waypoint=new i(e.extend({},this.options,{element:this.wrapper,handler:e.proxy(function(e){var i=this.options.direction.indexOf(e)>-1,s=i?this.$element.outerHeight(!0):"";this.$wrapper.height(s),this.$element.toggleClass(this.options.stuckClass,i),t&&t.call(this,e)},this)}))},t.prototype.createWrapper=function(){this.options.wrapper&&this.$element.wrap(this.options.wrapper),this.$wrapper=this.$element.parent(),this.wrapper=this.$wrapper[0]},t.prototype.destroy=function(){this.$element.parent()[0]===this.wrapper&&(this.waypoint.destroy(),this.$element.removeClass(this.options.stuckClass),this.options.wrapper&&this.$element.unwrap())},t.defaults={wrapper:'<div class="sticky-wrapper" />',stuckClass:"stuck",direction:"down right"},i.Sticky=t}();; 2739/*! 2740 * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it 2741 * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js 2742 * License: MIT 2743 */ 2744 2745!function(a,b){"use strict";"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Headroom=b()}(this,function(){"use strict";function a(a){this.callback=a,this.ticking=!1}function b(a){return a&&"undefined"!=typeof window&&(a===window||a.nodeType)}function c(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var d,e,f=a||{};for(e=1;e<arguments.length;e++){var g=arguments[e]||{};for(d in g)"object"!=typeof f[d]||b(f[d])?f[d]=f[d]||g[d]:f[d]=c(f[d],g[d])}return f}function d(a){return a===Object(a)?a:{down:a,up:a}}function e(a,b){b=c(b,e.options),this.lastKnownScrollY=0,this.elem=a,this.tolerance=d(b.tolerance),this.classes=b.classes,this.offset=b.offset,this.scroller=b.scroller,this.initialised=!1,this.onPin=b.onPin,this.onUnpin=b.onUnpin,this.onTop=b.onTop,this.onNotTop=b.onNotTop,this.onBottom=b.onBottom,this.onNotBottom=b.onNotBottom}var f={bind:!!function(){}.bind,classList:"classList"in document.documentElement,rAF:!!(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame)};return window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,a.prototype={constructor:a,update:function(){this.callback&&this.callback(),this.ticking=!1},requestTick:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)},handleEvent:function(){this.requestTick()}},e.prototype={constructor:e,init:function(){if(e.cutsTheMustard)return this.debouncer=new a(this.update.bind(this)),this.elem.classList.add(this.classes.initial),setTimeout(this.attachEvent.bind(this),100),this},destroy:function(){var a=this.classes;this.initialised=!1;for(var b in a)a.hasOwnProperty(b)&&this.elem.classList.remove(a[b]);this.scroller.removeEventListener("scroll",this.debouncer,!1)},attachEvent:function(){this.initialised||(this.lastKnownScrollY=this.getScrollY(),this.initialised=!0,this.scroller.addEventListener("scroll",this.debouncer,!1),this.debouncer.handleEvent())},unpin:function(){var a=this.elem.classList,b=this.classes;!a.contains(b.pinned)&&a.contains(b.unpinned)||(a.add(b.unpinned),a.remove(b.pinned),this.onUnpin&&this.onUnpin.call(this))},pin:function(){var a=this.elem.classList,b=this.classes;a.contains(b.unpinned)&&(a.remove(b.unpinned),a.add(b.pinned),this.onPin&&this.onPin.call(this))},top:function(){var a=this.elem.classList,b=this.classes;
2745a.contains(b.top)||(a.add(b.top),a.remove(b.notTop),this.onTop&&this.onTop.call(this))},notTop:function(){var a=this.elem.classList,b=this.classes;a.contains(b.notTop)||(a.add(b.notTop),a.remove(b.top),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){var a=this.elem.classList,b=this.classes;a.contains(b.bottom)||(a.add(b.bottom),a.remove(b.notBottom),this.onBottom&&this.onBottom.call(this))},notBottom:function(){var a=this.elem.classList,b=this.classes;a.contains(b.notBottom)||(a.add(b.notBottom),a.remove(b.bottom),this.onNotBottom&&this.onNotBottom.call(this))},getScrollY:function(){return void 0!==this.scroller.pageYOffset?this.scroller.pageYOffset:void 0!==this.scroller.scrollTop?this.scroller.scrollTop:(document.documentElement||document.body.parentNode||document.body).scrollTop},getViewportHeight:function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},getElementPhysicalHeight:function(a){return Math.max(a.offsetHeight,a.clientHeight)},getScrollerPhysicalHeight:function(){return this.scroller===window||this.scroller===document.body?this.getViewportHeight():this.getElementPhysicalHeight(this.scroller)},getDocumentHeight:function(){var a=document.body,b=document.documentElement;return Math.max(a.scrollHeight,b.scrollHeight,a.offsetHeight,b.offsetHeight,a.clientHeight,b.clientHeight)},getElementHeight:function(a){return Math.max(a.scrollHeight,a.offsetHeight,a.clientHeight)},getScrollerHeight:function(){return this.scroller===window||this.scroller===document.body?this.getDocumentHeight():this.getElementHeight(this.scroller)},isOutOfBounds:function(a){var b=a<0,c=a+this.getScrollerPhysicalHeight()>this.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=a<this.lastKnownScrollY,d=a<=this.offset;return c&&b||d},update:function(){var a=this.getScrollY(),b=a>this.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),a+this.getViewportHeight()>=this.getScrollerHeight()?this.bottom():this.notBottom(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},e.options={tolerance:{up:0,down:0},offset:0,scroller:window,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},e.cutsTheMustard="undefined"!=typeof f&&f.rAF&&f.bind&&f.classList,e});; 2746/*! 2747 * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it 2748 * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js 2749 * License: MIT 2750 */ 2751 2752!function(a){a&&(a.fn.headroom=function(b){return this.each(function(){var c=a(this),d=c.data("headroom"),e="object"==typeof b&&b;e=a.extend(!0,{},Headroom.options,e),d||(d=new Headroom(this,e),d.init(),c.data("headroom",d)),"string"==typeof b&&(d[b](),"destroy"===b&&c.removeData("headroom"))})},a("[data-headroom]").each(function(){var b=a(this);b.headroom(b.data())}))}(window.Zepto||window.jQuery);; 2753(function ($, Drupal) { 2754 Drupal.behaviors.mtHeadroomGlobal = { 2755 attach: function (context, settings) { 2756 $(context).find("body").once('mtHeadroomGlobalInit').each(function(index, item) { 2757 $(item).headroom({ 2758 classes : { 2759 // when element is initialised 2760 initial : "headroom", 2761 // when scrolling up 2762 pinned : "headroom--scroll-up", 2763 // when scrolling down 2764 unpinned : "headroom--scroll-down", 2765 // when above offset 2766 top : "headroom--top", 2767 // when below offset 2768 notTop : "headroom--not-top", 2769 // when at bottom of scoll area 2770 bottom : "headroom--bottom", 2771 // when not at bottom of scroll area 2772 notBottom : "headroom--not-bottom" 2773 } 2774 }); 2775 }); 2776 } 2777 }; 2778})(jQuery, Drupal); 2779; 2780(function ($, Drupal) { 2781 Drupal.behaviors.mtWaypointsFixedHeader = { 2782 attach: function (context, settings) { 2783 $(context).find(".header-container .header").once('mtWaypointsFixedHeaderInit').each(function(index, item) { 2784 var sticky = new Waypoint.Sticky ({ 2785 element: $('.header-container .header')[0], 2786 stuckClass: 'js-fixed', 2787 handler: function(direction) { 2788 if (Waypoint.viewportWidth() > 752) { 2789 $('body', context).toggleClass('onscroll'); 2790 } else { 2791 $('body', context).removeClass('onscroll'); 2792 } 2793 var topValue = $('body').css('padding-top'); 2794 $(".header.js-fixed").css("top", topValue); 2795 }, 2796 offset: function() { 2797 var offsetValue = parseInt($('body').css('padding-top')) - 1; 2798 return offsetValue; 2799 } 2800 }); 2801 }); 2802 } 2803 }; 2804})(jQuery, Drupal); 2805;
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.