1(function(global, factory) { 2 if (typeof define == "function" && define.amd) { 3 define("ev-emitter/ev-emitter", factory); 4 } else if (typeof module == "object" && module.exports) { 5 module.exports = factory(); 6 } else { 7 global.EvEmitter = factory(); 8 } 9})(typeof window != "undefined" ? window : this, function() { 10 function EvEmitter() {} 11 var proto = EvEmitter.prototype; 12 proto.on = function(eventName, listener) { 13 if (!eventName || !listener) { 14 return; 15 } 16 var events = this._events = this._events || {}; 17 var listeners = events[eventName] = events[eventName] || []; 18 if (listeners.indexOf(listener) == -1) { 19 listeners.push(listener); 20 } 21 return this; 22 }; 23 proto.once = function(eventName, listener) { 24 if (!eventName || !listener) { 25 return; 26 } 27 this.on(eventName, listener); 28 var onceEvents = this._onceEvents = this._onceEvents || {}; 29 var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {}; 30 onceListeners[listener] = true; 31 return this; 32 }; 33 proto.off = function(eventName, listener) { 34 var listeners = this._events && this._events[eventName]; 35 if (!listeners || !listeners.length) { 36 return; 37 } 38 var index = listeners.indexOf(listener); 39 if (index != -1) { 40 listeners.splice(index, 1); 41 } 42 return this; 43 }; 44 proto.emitEvent = function(eventName, args) { 45 var listeners = this._events && this._events[eventName]; 46 if (!listeners || !listeners.length) { 47 return; 48 } 49 var i = 0; 50 var listener = listeners[i]; 51 args = args || []; 52 var onceListeners = this._onceEvents && this._onceEvents[eventName]; 53 while (listener) { 54 var isOnce = onceListeners && onceListeners[listener]; 55 if (isOnce) { 56 this.off(eventName, listener); 57 delete onceListeners[listener]; 58 } 59 listener.apply(this, args); 60 i += isOnce ? 0 : 1; 61 listener = listeners[i]; 62 } 63 return this; 64 }; 65 proto.allOff = proto.removeAllListeners = function() { 66 delete this._events; 67 delete this._onceEvents; 68 }; 69 return EvEmitter; 70}); 71 72(function(window, factory) { 73 "use strict"; 74 if (typeof define == "function" && define.amd) { 75 define([ "ev-emitter/ev-emitter" ], function(EvEmitter) { 76 return factory(window, EvEmitter); 77 }); 78 } else if (typeof module == "object" && module.exports) { 79 module.exports = factory(window, require("ev-emitter")); 80 } else { 81 window.imagesLoaded = factory(window, window.EvEmitter); 82 } 83})(typeof window !== "undefined" ? window : this, function factory(window, EvEmitter) { 84 var $ = window.jQuery; 85 var console = window.console; 86 function extend(a, b) { 87 for (var prop in b) { 88 a[prop] = b[prop]; 89 } 90 return a; 91 } 92 function makeArray(obj) { 93 var ary = []; 94 if (Array.isArray(obj)) { 95 ary = obj; 96 } else if (typeof obj.length == "number") { 97 for (var i = 0; i < obj.length; i++) { 98 ary.push(obj[i]); 99 } 100 } else { 101 ary.push(obj); 102 } 103 return ary; 104 } 105 function ImagesLoaded(elem, options, onAlways) { 106 if (!(this instanceof ImagesLoaded)) { 107 return new ImagesLoaded(elem, options, onAlways); 108 } 109 if (typeof elem == "string") { 110 elem = document.querySelectorAll(elem); 111 } 112 this.elements = makeArray(elem); 113 this.options = extend({}, this.options); 114 if (typeof options == "function") { 115 onAlways = options; 116 } else { 117 extend(this.options, options); 118 } 119 if (onAlways) { 120 this.on("always", onAlways); 121 } 122 this.getImages(); 123 if ($) { 124 this.jqDeferred = new $.Deferred(); 125 } 126 setTimeout(function() { 127 this.check(); 128 }.bind(this)); 129 } 130 ImagesLoaded.prototype = Object.create(EvEmitter.prototype); 131 ImagesLoaded.prototype.options = {}; 132 ImagesLoaded.prototype.getImages = function() { 133 this.images = [];
vendor: 4,097 bytes, lines 134-247
134 this.elements.forEach(this.addElementImages, this); 135 }; 136 ImagesLoaded.prototype.addElementImages = function(elem) { 137 if (elem.nodeName == "IMG") { 138 this.addImage(elem); 139 } 140 if (this.options.background === true) { 141 this.addElementBackgroundImages(elem); 142 } 143 var nodeType = elem.nodeType; 144 if (!nodeType || !elementNodeTypes[nodeType]) { 145 return; 146 } 147 var childImgs = elem.querySelectorAll("img"); 148 for (var i = 0; i < childImgs.length; i++) { 149 var img = childImgs[i]; 150 this.addImage(img); 151 } 152 if (typeof this.options.background == "string") { 153 var children = elem.querySelectorAll(this.options.background); 154 for (i = 0; i < children.length; i++) { 155 var child = children[i]; 156 this.addElementBackgroundImages(child); 157 } 158 } 159 }; 160 var elementNodeTypes = { 161 1: true, 162 9: true, 163 11: true 164 }; 165 ImagesLoaded.prototype.addElementBackgroundImages = function(elem) { 166 var style = getComputedStyle(elem); 167 if (!style) { 168 return; 169 } 170 var reURL = /url\((['"])?(.*?)\1\)/gi; 171 var matches = reURL.exec(style.backgroundImage); 172 while (matches !== null) { 173 var url = matches && matches[2]; 174 if (url) { 175 this.addBackground(url, elem); 176 } 177 matches = reURL.exec(style.backgroundImage); 178 } 179 }; 180 ImagesLoaded.prototype.addImage = function(img) { 181 var loadingImage = new LoadingImage(img); 182 this.images.push(loadingImage); 183 }; 184 ImagesLoaded.prototype.addBackground = function(url, elem) { 185 var background = new Background(url, elem); 186 this.images.push(background); 187 }; 188 ImagesLoaded.prototype.check = function() { 189 var _this = this; 190 this.progressedCount = 0; 191 this.hasAnyBroken = false; 192 if (!this.images.length) { 193 this.complete(); 194 return; 195 } 196 function onProgress(image, elem, message) { 197 setTimeout(function() { 198 _this.progress(image, elem, message); 199 }); 200 } 201 this.images.forEach(function(loadingImage) { 202 loadingImage.once("progress", onProgress); 203 loadingImage.check(); 204 }); 205 }; 206 ImagesLoaded.prototype.progress = function(image, elem, message) { 207 this.progressedCount++; 208 this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; 209 this.emitEvent("progress", [ this, image, elem ]); 210 if (this.jqDeferred && this.jqDeferred.notify) { 211 this.jqDeferred.notify(this, image); 212 } 213 if (this.progressedCount == this.images.length) { 214 this.complete(); 215 } 216 if (this.options.debug && console) { 217 console.log("progress: " + message, image, elem); 218 } 219 }; 220 ImagesLoaded.prototype.complete = function() { 221 var eventName = this.hasAnyBroken ? "fail" : "done"; 222 this.isComplete = true; 223 this.emitEvent(eventName, [ this ]); 224 this.emitEvent("always", [ this ]); 225 if (this.jqDeferred) { 226 var jqMethod = this.hasAnyBroken ? "reject" : "resolve"; 227 this.jqDeferred[jqMethod](this); 228 } 229 }; 230 function LoadingImage(img) { 231 this.img = img; 232 } 233 LoadingImage.prototype = Object.create(EvEmitter.prototype); 234 LoadingImage.prototype.check = function() { 235 var isComplete = this.getIsImageComplete(); 236 if (isComplete) { 237 this.confirm(this.img.naturalWidth !== 0, "naturalWidth"); 238 return; 239 } 240 this.proxyImage = new Image(); 241 this.proxyImage.addEventListener("load", this); 242 this.proxyImage.addEventListener("error", this); 243 this.img.addEventListener("load", this); 244 this.img.addEventListener("error", this); 245 this.proxyImage.src = this.img.src; 246 }; 247 LoadingImage.prototype.getIsImageComplete = function() {
248 return this.img.complete && this.img.naturalWidth !== undefined; 249 }; 250 LoadingImage.prototype.confirm = function(isLoaded, message) { 251 this.isLoaded = isLoaded; 252 this.emitEvent("progress", [ this, this.img, message ]); 253 }; 254 LoadingImage.prototype.handleEvent = function(event) { 255 var method = "on" + event.type; 256 if (this[method]) { 257 this[method](event); 258 } 259 }; 260 LoadingImage.prototype.onload = function() { 261 this.confirm(true, "onload"); 262 this.unbindEvents(); 263 }; 264 LoadingImage.prototype.onerror = function() { 265 this.confirm(false, "onerror"); 266 this.unbindEvents(); 267 }; 268 LoadingImage.prototype.unbindEvents = function() { 269 this.proxyImage.removeEventListener("load", this); 270 this.proxyImage.removeEventListener("error", this); 271 this.img.removeEventListener("load", this); 272 this.img.removeEventListener("error", this); 273 }; 274 function Background(url, element) { 275 this.url = url; 276 this.element = element; 277 this.img = new Image(); 278 } 279 Background.prototype = Object.create(LoadingImage.prototype); 280 Background.prototype.check = function() { 281 this.img.addEventListener("load", this); 282 this.img.addEventListener("error", this); 283 this.img.src = this.url; 284 var isComplete = this.getIsImageComplete(); 285 if (isComplete) { 286 this.confirm(this.img.naturalWidth !== 0, "naturalWidth"); 287 this.unbindEvents(); 288 } 289 }; 290 Background.prototype.unbindEvents = function() { 291 this.img.removeEventListener("load", this); 292 this.img.removeEventListener("error", this); 293 }; 294 Background.prototype.confirm = function(isLoaded, message) { 295 this.isLoaded = isLoaded; 296 this.emitEvent("progress", [ this, this.element, message ]); 297 }; 298 ImagesLoaded.makeJQueryPlugin = function(jQuery) { 299 jQuery = jQuery || window.jQuery; 300 if (!jQuery) { 301 return; 302 } 303 $ = jQuery; 304 $.fn.imagesLoaded = function(options, callback) { 305 var instance = new ImagesLoaded(this, options, callback); 306 return instance.jqDeferred.promise($(this)); 307 }; 308 }; 309 ImagesLoaded.makeJQueryPlugin(); 310 return ImagesLoaded; 311}); 312 313(function($, undef) { 314 "use strict"; 315 if ($.fn.dotdotdot) { 316 return; 317 } 318 $.fn.dotdotdot = function(o) { 319 if (this.length === 0) { 320 $.fn.dotdotdot.debug('No element found for "' + this.selector + '".'); 321 return this; 322 } 323 if (this.length > 1) { 324 return this.each(function() { 325 $(this).dotdotdot(o); 326 }); 327 } 328 var $dot = this; 329 var orgContent = $dot.contents(); 330 if ($dot.data("dotdotdot")) { 331 $dot.trigger("destroy.dot"); 332 } 333 $dot.data("dotdotdot-style", $dot.attr("style") || ""); 334 $dot.css("word-wrap", "break-word"); 335 if ($dot.css("white-space") === "nowrap") { 336 $dot.css("white-space", "normal"); 337 } 338 $dot.bind_events = function() { 339 $dot.bind("update.dot", function(e, c) { 340 $dot.removeClass("is-truncated"); 341 e.preventDefault(); 342 e.stopPropagation(); 343 switch (typeof opts.height) { 344 case "number": 345 opts.maxHeight = opts.height; 346 break; 347 348 case "function": 349 opts.maxHeight = opts.height.call($dot[0]); 350 break; 351 352 default: 353 opts.maxHeight = getTrueInnerHeight($dot); 354 break; 355 } 356 opts.maxHeight += opts.tolerance; 357 if (typeof c != "undefined") { 358 if (typeof c == "string" || "nodeType" in c && c.nodeType === 1) { 359 c = $("<div />").append(c).contents(); 360 } 361 if (c instanceof $) { 362 orgContent = c; 363 } 364 } 365 $inr = $dot.wrapInner('<div class="dotdotdot" />').children(); 366 $inr.contents().detach().end().append(orgContent.clone(true)).find("br").replaceWith(" <br /> ").end().css({ 367 height: "auto", 368 width: "auto", 369 border: "none", 370 padding: 0, 371 margin: 0 372 }); 373 var after = false, trunc = false;
374 if (conf.afterElement) { 375 after = conf.afterElement.clone(true); 376 after.show(); 377 conf.afterElement.detach(); 378 } 379 if (test($inr, opts)) { 380 if (opts.wrap == "children") { 381 trunc = children($inr, opts, after); 382 } else { 383 trunc = ellipsis($inr, $dot, $inr, opts, after); 384 } 385 } 386 $inr.replaceWith($inr.contents()); 387 $inr = null; 388 if ($.isFunction(opts.callback)) { 389 opts.callback.call($dot[0], trunc, orgContent); 390 } 391 conf.isTruncated = trunc; 392 return trunc; 393 }).bind("isTruncated.dot", function(e, fn) { 394 e.preventDefault(); 395 e.stopPropagation(); 396 if (typeof fn == "function") { 397 fn.call($dot[0], conf.isTruncated); 398 } 399 return conf.isTruncated; 400 }).bind("originalContent.dot", function(e, fn) { 401 e.preventDefault(); 402 e.stopPropagation(); 403 if (typeof fn == "function") { 404 fn.call($dot[0], orgContent); 405 } 406 return orgContent; 407 }).bind("destroy.dot", function(e) { 408 e.preventDefault(); 409 e.stopPropagation(); 410 $dot.unwatch().unbind_events().contents().detach().end().append(orgContent).attr("style", $dot.data("dotdotdot-style") || "").removeClass("is-truncated").data("dotdotdot", false); 411 }); 412 return $dot; 413 }; 414 $dot.unbind_events = function() { 415 $dot.unbind(".dot"); 416 return $dot; 417 }; 418 $dot.watch = function() { 419 $dot.unwatch(); 420 if (opts.watch == "window") { 421 var $window = $(window), _wWidth = $window.width(), _wHeight = $window.height(); 422 $window.bind("resize.dot" + conf.dotId, function() { 423 if (_wWidth != $window.width() || _wHeight != $window.height() || !opts.windowResizeFix) { 424 _wWidth = $window.width(); 425 _wHeight = $window.height(); 426 if (watchInt) { 427 clearInterval(watchInt); 428 } 429 watchInt = setTimeout(function() { 430 $dot.trigger("update.dot"); 431 }, 100); 432 } 433 }); 434 } else { 435 watchOrg = getSizes($dot); 436 watchInt = setInterval(function() { 437 if ($dot.is(":visible")) { 438 var watchNew = getSizes($dot); 439 if (watchOrg.width != watchNew.width || watchOrg.height != watchNew.height) { 440 $dot.trigger("update.dot"); 441 watchOrg = watchNew; 442 } 443 } 444 }, 500); 445 } 446 return $dot; 447 }; 448 $dot.unwatch = function() { 449 $(window).unbind("resize.dot" + conf.dotId); 450 if (watchInt) { 451 clearInterval(watchInt); 452 } 453 return $dot; 454 }; 455 var opts = $.extend(true, {}, $.fn.dotdotdot.defaults, o), conf = {}, watchOrg = {}, watchInt = null, $inr = null; 456 if (!(opts.lastCharacter.remove instanceof Array)) { 457 opts.lastCharacter.remove = $.fn.dotdotdot.defaultArrays.lastCharacter.remove; 458 } 459 if (!(opts.lastCharacter.noEllipsis instanceof Array)) { 460 opts.lastCharacter.noEllipsis = $.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis; 461 } 462 conf.afterElement = getElement(opts.after, $dot); 463 conf.isTruncated = false; 464 conf.dotId = dotId++; 465 $dot.data("dotdotdot", true).bind_events().trigger("update.dot"); 466 if (opts.watch) { 467 $dot.watch(); 468 } 469 return $dot; 470 }; 471 $.fn.dotdotdot.defaults = { 472 ellipsis: "... ", 473 wrap: "word", 474 fallbackToLetter: true, 475 lastCharacter: {}, 476 tolerance: 0, 477 callback: null, 478 after: null, 479 height: null, 480 watch: false, 481 windowResizeFix: true, 482 maxLength: null 483 }; 484 $.fn.dotdotdot.defaultArrays = { 485 lastCharacter: { 486 remove: [ " ", "ã", ",", ";", ".", "!", "?" ], 487 noEllipsis: [] 488 } 489 }; 490 $.fn.dotdotdot.debug = function(msg) {}; 491 var dotId = 1; 492 function children($elem, o, after) { 493 var $elements = $elem.children(), isTruncated = false;
494 $elem.empty(); 495 for (var a = 0, l = $elements.length; a < l; a++) { 496 var $e = $elements.eq(a); 497 $elem.append($e); 498 if (after) { 499 $elem.append(after); 500 } 501 if (test($elem, o)) { 502 $e.remove(); 503 isTruncated = true; 504 break; 505 } else { 506 if (after) { 507 after.detach(); 508 } 509 } 510 } 511 return isTruncated; 512 } 513 function ellipsis($elem, $d, $i, o, after) { 514 var isTruncated = false; 515 var notx = "a, table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style"; 516 var noty = "script, .dotdotdot-keep"; 517 $elem.contents().detach().each(function() { 518 var e = this, $e = $(e); 519 if (typeof e == "undefined") { 520 return true; 521 } else if ($e.is(noty)) { 522 $elem.append($e); 523 } else if (isTruncated) { 524 return true; 525 } else {
526 $elem.append($e); 527 if (after && !$e.is(o.after) && !$e.find(o.after).length) { 528 $elem[$elem.is(notx) ? "after" : "append"](after); 529 } 530 if (test($i, o)) { 531 if (e.nodeType == 3) { 532 isTruncated = ellipsisElement($e, $d, $i, o, after); 533 } else { 534 isTruncated = ellipsis($e, $d, $i, o, after); 535 } 536 } 537 if (!isTruncated) { 538 if (after) { 539 after.detach(); 540 } 541 } 542 } 543 }); 544 $d.addClass("is-truncated"); 545 return isTruncated; 546 } 547 function ellipsisElement($e, $d, $i, o, after) { 548 var e = $e[0]; 549 if (!e) { 550 return false; 551 } 552 var txt = getTextContent(e), space = txt.indexOf(" ") !== -1 ? " " : "ã", separator = o.wrap == "letter" ? "" : space, textArr = txt.split(separator), position = -1, midPos = -1, startPos = 0, endPos = textArr.length - 1; 553 if (o.fallbackToLetter && startPos === 0 && endPos === 0) { 554 separator = ""; 555 textArr = txt.split(separator); 556 endPos = textArr.length - 1; 557 } 558 if (o.maxLength) { 559 txt = addEllipsis(txt.trim().substr(0, o.maxLength), o); 560 setTextContent(e, txt); 561 } else { 562 while (startPos <= endPos && !(startPos === 0 && endPos === 0)) { 563 var m = Math.floor((startPos + endPos) / 2); 564 if (m == midPos) { 565 break; 566 } 567 midPos = m; 568 setTextContent(e, textArr.slice(0, midPos + 1).join(separator) + o.ellipsis); 569 $i.children().each(function() { 570 $(this).toggle().toggle(); 571 }); 572 if (!test($i, o)) { 573 position = midPos; 574 startPos = midPos; 575 } else { 576 endPos = midPos; 577 if (o.fallbackToLetter && startPos === 0 && endPos === 0) { 578 separator = ""; 579 textArr = textArr[0].split(separator); 580 position = -1; 581 midPos = -1; 582 startPos = 0; 583 endPos = textArr.length - 1; 584 } 585 } 586 } 587 if (position != -1 && !(textArr.length === 1 && textArr[0].length === 0)) { 588 txt = addEllipsis(textArr.slice(0, position + 1).join(separator), o); 589 setTextContent(e, txt); 590 } else { 591 var $w = $e.parent(); 592 $e.detach(); 593 var afterLength = after && after.closest($w).length ? after.length : 0; 594 if ($w.contents().length > afterLength) { 595 e = findLastTextNode($w.contents().eq(-1 - afterLength), $d); 596 } else { 597 e = findLastTextNode($w, $d, true); 598 if (!afterLength) { 599 $w.detach(); 600 } 601 } 602 if (e) { 603 txt = addEllipsis(getTextContent(e), o); 604 setTextContent(e, txt); 605 if (afterLength && after) { 606 var $parent = after.parent(); 607 $(e).parent().append(after); 608 if (!$.trim($parent.html())) { 609 $parent.remove(); 610 } 611 } 612 } 613 } 614 } 615 return true; 616 } 617 function test($i, o) { 618 return $i.innerHeight() > o.maxHeight || o.maxLength && $i.text().trim().length > o.maxLength; 619 } 620 function addEllipsis(txt, o) { 621 while ($.inArray(txt.slice(-1), o.lastCharacter.remove) > -1) { 622 txt = txt.slice(0, -1); 623 } 624 if ($.inArray(txt.slice(-1), o.lastCharacter.noEllipsis) < 0) { 625 txt += o.ellipsis; 626 } 627 return txt; 628 } 629 function getSizes($d) { 630 return { 631 width: $d.innerWidth(), 632 height: $d.innerHeight() 633 }; 634 } 635 function setTextContent(e, content) { 636 if (e.innerText) { 637 e.innerText = content; 638 } else if (e.nodeValue) { 639 e.nodeValue = content; 640 } else if (e.textContent) { 641 e.textContent = content; 642 } 643 } 644 function getTextContent(e) { 645 if (e.innerText) { 646 return e.innerText; 647 } else if (e.nodeValue) {
648 return e.nodeValue; 649 } else if (e.textContent) { 650 return e.textContent; 651 } else { 652 return ""; 653 } 654 } 655 function getPrevNode(n) { 656 do { 657 n = n.previousSibling; 658 } while (n && n.nodeType !== 1 && n.nodeType !== 3); 659 return n; 660 } 661 function findLastTextNode($el, $top, excludeCurrent) { 662 var e = $el && $el[0], p; 663 if (e) { 664 if (!excludeCurrent) { 665 if (e.nodeType === 3) { 666 return e; 667 } 668 if ($.trim($el.text())) { 669 return findLastTextNode($el.contents().last(), $top); 670 } 671 } 672 p = getPrevNode(e); 673 while (!p) { 674 $el = $el.parent(); 675 if ($el.is($top) || !$el.length) { 676 return false; 677 } 678 p = getPrevNode($el[0]); 679 } 680 if (p) { 681 return findLastTextNode($(p), $top); 682 } 683 } 684 return false; 685 } 686 function getElement(e, $i) { 687 if (!e) { 688 return false; 689 } 690 if (typeof e === "string") { 691 e = $(e, $i); 692 return e.length ? e : false; 693 } 694 return !e.jquery ? false : e; 695 } 696 function getTrueInnerHeight($el) { 697 var h = $el.innerHeight(), a = [ "paddingTop", "paddingBottom" ]; 698 for (var z = 0, l = a.length; z < l; z++) { 699 var m = parseInt($el.css(a[z]), 10); 700 if (isNaN(m)) { 701 m = 0; 702 } 703 h -= m; 704 } 705 return h; 706 } 707 var _orgHtml = $.fn.html; 708 $.fn.html = function(str) { 709 if (str != undef && !$.isFunction(str) && this.data("dotdotdot")) { 710 return this.trigger("update", [ str ]); 711 } 712 return _orgHtml.apply(this, arguments); 713 }; 714 var _orgText = $.fn.text; 715 $.fn.text = function(str) { 716 if (str != undef && !$.isFunction(str) && this.data("dotdotdot")) { 717 str = $("<div />").text(str).html(); 718 return this.trigger("update", [ str ]); 719 } 720 return _orgText.apply(this, arguments); 721 }; 722})(jQuery); 723 724(function(e, t) { 725 "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.Popper = t(); 726})(this, function() { 727 "use strict"; 728 function e(e) { 729 return e && "[object Function]" === {}.toString.call(e); 730 } 731 function t(e, t) { 732 if (1 !== e.nodeType) return []; 733 var o = window.getComputedStyle(e, null); 734 return t ? o[t] : o; 735 } 736 function o(e) { 737 return "HTML" === e.nodeName ? e : e.parentNode || e.host; 738 } 739 function n(e) { 740 if (!e || -1 !== [ "HTML", "BODY", "#document" ].indexOf(e.nodeName)) return window.document.body; 741 var i = t(e), r = i.overflow, p = i.overflowX, s = i.overflowY; 742 return /(auto|scroll)/.test(r + s + p) ? e : n(o(e)); 743 } 744 function r(e) { 745 var o = e && e.offsetParent, i = o && o.nodeName; 746 return i && "BODY" !== i && "HTML" !== i ? -1 !== [ "TD", "TABLE" ].indexOf(o.nodeName) && "static" === t(o, "position") ? r(o) : o : window.document.documentElement; 747 } 748 function p(e) { 749 var t = e.nodeName; 750 return "BODY" !== t && ("HTML" === t || r(e.firstElementChild) === e); 751 } 752 function s(e) { 753 return null === e.parentNode ? e : s(e.parentNode); 754 } 755 function d(e, t) { 756 if (!e || !e.nodeType || !t || !t.nodeType) return window.document.documentElement; 757 var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, i = o ? e : t, n = o ? t : e, a = document.createRange(); 758 a.setStart(i, 0), a.setEnd(n, 0); 759 var l = a.commonAncestorContainer; 760 if (e !== l && t !== l || i.contains(n)) return p(l) ? l : r(l); 761 var f = s(e); 762 return f.host ? d(f.host, t) : d(e, s(t).host); 763 } 764 function a(e) { 765 var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "top", o = "top" === t ? "scrollTop" : "scrollLeft", i = e.nodeName; 766 if ("BODY" === i || "HTML" === i) { 767 var n = window.document.documentElement, r = window.document.scrollingElement || n; 768 return r[o]; 769 } 770 return e[o]; 771 } 772 function l(e, t) { 773 var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], i = a(t, "top"), n = a(t, "left"), r = o ? -1 : 1; 774 return e.top += i * r, e.bottom += i * r, e.left += n * r, e.right += n * r, e; 775 } 776 function f(e, t) { 777 var o = "x" === t ? "Left" : "Top", i = "Left" == o ? "Right" : "Bottom"; 778 return +e["border" + o + "Width"].split("px")[0] + +e["border" + i + "Width"].split("px")[0]; 779 } 780 function m(e, t, o, i) { 781 return X(t["offset" + e], t["scroll" + e], o["client" + e], o["offset" + e], o["scroll" + e], ne() ? o["offset" + e] + i["margin" + ("Height" === e ? "Top" : "Left")] + i["margin" + ("Height" === e ? "Bottom" : "Right")] : 0); 782 } 783 function c() { 784 var e = window.document.body, t = window.document.documentElement, o = ne() && window.getComputedStyle(t); 785 return { 786 height: m("Height", e, t, o), 787 width: m("Width", e, t, o) 788 }; 789 } 790 function h(e) { 791 return de({}, e, { 792 right: e.left + e.width, 793 bottom: e.top + e.height 794 }); 795 } 796 function g(e) { 797 var o = {}; 798 if (ne()) try { 799 o = e.getBoundingClientRect(); 800 var i = a(e, "top"), n = a(e, "left"); 801 o.top += i, o.left += n, o.bottom += i, o.right += n; 802 } catch (e) {} else o = e.getBoundingClientRect(); 803 var r = { 804 left: o.left, 805 top: o.top, 806 width: o.right - o.left, 807 height: o.bottom - o.top 808 }
vendor: 5,049 bytes, lines 808-942
808, p = "HTML" === e.nodeName ? c() : {}, s = p.width || e.clientWidth || r.right - r.left, d = p.height || e.clientHeight || r.bottom - r.top, l = e.offsetWidth - s, m = e.offsetHeight - d; 809 if (l || m) { 810 var g = t(e); 811 l -= f(g, "x"), m -= f(g, "y"), r.width -= l, r.height -= m; 812 } 813 return h(r); 814 } 815 function u(e, o) { 816 var i = ne(), r = "HTML" === o.nodeName, p = g(e), s = g(o), d = n(e), a = t(o), f = +a.borderTopWidth.split("px")[0], m = +a.borderLeftWidth.split("px")[0], c = h({ 817 top: p.top - s.top - f, 818 left: p.left - s.left - m, 819 width: p.width, 820 height: p.height 821 }); 822 if (c.marginTop = 0, c.marginLeft = 0, !i && r) { 823 var u = +a.marginTop.split("px")[0], b = +a.marginLeft.split("px")[0]; 824 c.top -= f - u, c.bottom -= f - u, c.left -= m - b, c.right -= m - b, c.marginTop = u, 825 c.marginLeft = b; 826 } 827 return (i ? o.contains(d) : o === d && "BODY" !== d.nodeName) && (c = l(c, o)), 828 c; 829 } 830 function b(e) { 831 var t = window.document.documentElement, o = u(e, t), i = X(t.clientWidth, window.innerWidth || 0), n = X(t.clientHeight, window.innerHeight || 0), r = a(t), p = a(t, "left"), s = { 832 top: r - o.top + o.marginTop, 833 left: p - o.left + o.marginLeft, 834 width: i, 835 height: n 836 }; 837 return h(s); 838 } 839 function y(e) { 840 var i = e.nodeName; 841 return "BODY" === i || "HTML" === i ? !1 : "fixed" === t(e, "position") || y(o(e)); 842 } 843 function w(e, t, i, r) { 844 var p = { 845 top: 0, 846 left: 0 847 }, s = d(e, t); 848 if ("viewport" === r) p = b(s); else { 849 var a; 850 "scrollParent" === r ? (a = n(o(e)), "BODY" === a.nodeName && (a = window.document.documentElement)) : "window" === r ? a = window.document.documentElement : a = r; 851 var l = u(a, s); 852 if ("HTML" === a.nodeName && !y(s)) { 853 var f = c(), m = f.height, h = f.width; 854 p.top += l.top - l.marginTop, p.bottom = m + l.top, p.left += l.left - l.marginLeft, 855 p.right = h + l.left; 856 } else p = l; 857 } 858 return p.left += i, p.top += i, p.right -= i, p.bottom -= i, p; 859 } 860 function E(e) { 861 var t = e.width, o = e.height; 862 return t * o; 863 } 864 function v(e, t, o, i, n) { 865 var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0; 866 if (-1 === e.indexOf("auto")) return e; 867 var p = w(o, i, r, n), s = { 868 top: { 869 width: p.width, 870 height: t.top - p.top 871 }, 872 right: { 873 width: p.right - t.right, 874 height: p.height 875 }, 876 bottom: { 877 width: p.width, 878 height: p.bottom - t.bottom 879 }, 880 left: { 881 width: t.left - p.left, 882 height: p.height 883 } 884 }, d = Object.keys(s).map(function(e) { 885 return de({ 886 key: e 887 }, s[e], { 888 area: E(s[e]) 889 }); 890 }).sort(function(e, t) { 891 return t.area - e.area; 892 }), a = d.filter(function(e) { 893 var t = e.width, i = e.height; 894 return t >= o.clientWidth && i >= o.clientHeight; 895 }), l = 0 < a.length ? a[0].key : d[0].key, f = e.split("-")[1]; 896 return l + (f ? "-" + f : ""); 897 } 898 function x(e, t, o) { 899 var i = d(t, o); 900 return u(o, i); 901 } 902 function O(e) { 903 var t = window.getComputedStyle(e), o = parseFloat(t.marginTop) + parseFloat(t.marginBottom), i = parseFloat(t.marginLeft) + parseFloat(t.marginRight), n = { 904 width: e.offsetWidth + i, 905 height: e.offsetHeight + o 906 }; 907 return n; 908 } 909 function L(e) { 910 var t = { 911 left: "right", 912 right: "left", 913 bottom: "top", 914 top: "bottom" 915 }; 916 return e.replace(/left|right|bottom|top/g, function(e) { 917 return t[e]; 918 }); 919 } 920 function S(e, t, o) { 921 o = o.split("-")[0]; 922 var i = O(e), n = { 923 width: i.width, 924 height: i.height 925 }, r = -1 !== [ "right", "left" ].indexOf(o), p = r ? "top" : "left", s = r ? "left" : "top", d = r ? "height" : "width", a = r ? "width" : "height"; 926 return n[p] = t[p] + t[d] / 2 - i[d] / 2, n[s] = o === s ? t[s] - i[a] : t[L(s)], 927 n; 928 } 929 function T(e, t) { 930 return Array.prototype.find ? e.find(t) : e.filter(t)[0]; 931 } 932 function C(e, t, o) { 933 if (Array.prototype.findIndex) return e.findIndex(function(e) { 934 return e[t] === o; 935 }); 936 var i = T(e, function(e) { 937 return e[t] === o; 938 }); 939 return e.indexOf(i); 940 } 941 function N(t, o, i) { 942 var n = void 0 === i ? t : t.slice(0, C(t, "name", i));
943 return n.forEach(function(t) { 944 t.function && console.warn("`modifier.function` is deprecated, use `modifier.fn`!"); 945 var i = t.function || t.fn; 946 t.enabled && e(i) && (o.offsets.popper = h(o.offsets.popper), o.offsets.reference = h(o.offsets.reference), 947 o = i(o, t)); 948 }), o; 949 } 950 function k() { 951 if (!this.state.isDestroyed) { 952 var e = { 953 instance: this, 954 styles: {}, 955 arrowStyles: {}, 956 attributes: {}, 957 flipped: !1, 958 offsets: {} 959 }; 960 e.offsets.reference = x(this.state, this.popper, this.reference), e.placement = v(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), 961 e.originalPlacement = e.placement, e.offsets.popper = S(this.popper, e.offsets.reference, e.placement), 962 e.offsets.popper.position = "absolute", e = N(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, 963 this.options.onCreate(e)); 964 } 965 } 966 function W(e, t) { 967 return e.some(function(e) { 968 var o = e.name, i = e.enabled; 969 return i && o === t; 970 }); 971 } 972 function B(e) { 973 for (var t = [ !1, "ms", "Webkit", "Moz", "O" ], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; n < t.length - 1; n++) { 974 var i = t[n], r = i ? "" + i + o : e; 975 if ("undefined" != typeof window.document.body.style[r]) return r; 976 } 977 return null; 978 } 979 function P() { 980 return this.state.isDestroyed = !0, W(this.modifiers, "applyStyle") && (this.popper.removeAttribute("x-placement"), 981 this.popper.style.left = "", this.popper.style.position = "", this.popper.style.top = "", 982 this.popper.style[B("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), 983 this; 984 } 985 function D(e, t, o, i) { 986 var r = "BODY" === e.nodeName, p = r ? window : e; 987 p.addEventListener(t, o, { 988 passive: !0 989 }), r || D(n(p.parentNode), t, o, i), i.push(p); 990 } 991 function H(e, t, o, i) { 992 o.updateBound = i, window.addEventListener("resize", o.updateBound, { 993 passive: !0 994 }); 995 var r = n(e); 996 return D(r, "scroll", o.updateBound, o.scrollParents), o.scrollElement = r, o.eventsEnabled = !0, 997 o; 998 } 999 function A() { 1000 this.state.eventsEnabled || (this.state = H(this.reference, this.options, this.state, this.scheduleUpdate)); 1001 } 1002 function M(e, t) { 1003 return window.removeEventListener("resize", t.updateBound), t.scrollParents.forEach(function(e) { 1004 e.removeEventListener("scroll", t.updateBound); 1005 }), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, 1006 t; 1007 } 1008 function I() { 1009 this.state.eventsEnabled && (window.cancelAnimationFrame(this.scheduleUpdate), this.state = M(this.reference, this.state)); 1010 } 1011 function R(e) { 1012 return "" !== e && !isNaN(parseFloat(e)) && isFinite(e); 1013 } 1014 function U(e, t) { 1015 Object.keys(t).forEach(function(o) { 1016 var i = ""; 1017 -1 !== [ "width", "height", "top", "right", "bottom", "left" ].indexOf(o) && R(t[o]) && (i = "px"), 1018 e.style[o] = t[o] + i; 1019 }); 1020 } 1021 function Y(e, t) { 1022 Object.keys(t).forEach(function(o) { 1023 var i = t[o]; 1024 !1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o]); 1025 }); 1026 } 1027 function F(e, t, o) { 1028 var i = T(e, function(e) { 1029 var o = e.name; 1030 return o === t; 1031 }), n = !!i && e.some(function(e) { 1032 return e.name === o && e.enabled && e.order < i.order; 1033 }); 1034 if (!n) { 1035 var r = "`" + t + "`"; 1036 console.warn("`" + o + "`" + " modifier is required by " + r + " modifier in order to work, be sure to include it before " + r + "!"); 1037 } 1038 return n; 1039 } 1040 function j(e) { 1041 return "end" === e ? "start" : "start" === e ? "end" : e; 1042 } 1043 function K(e) { 1044 var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], o = le.indexOf(e), i = le.slice(o + 1).concat(le.slice(0, o)); 1045 return t ? i.reverse() : i; 1046 } 1047 function q(e, t, o, i) { 1048 var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), r = +n[1], p = n[2]; 1049 if (!r) return e; 1050 if (0 === p.indexOf("%")) { 1051 var s; 1052 switch (p) { 1053 case "%p": 1054 s = o; 1055 break; 1056 1057 case "%": 1058 case "%r": 1059 default: 1060 s = i; 1061 } 1062 var d = h(s); 1063 return d[t] / 100 * r; 1064 } 1065 if ("vh" === p || "vw" === p) { 1066 var a; 1067 return a = "vh" === p ? X(document.documentElement.clientHeight, window.innerHeight || 0
1067) : X(document.documentElement.clientWidth, window.innerWidth || 0), 1068 a / 100 * r; 1069 } 1070 return r; 1071 } 1072 function G(e, t, o, i) { 1073 var n = [ 0, 0 ], r = -1 !== [ "right", "left" ].indexOf(i), p = e.split(/(\+|\-)/).map(function(e) { 1074 return e.trim(); 1075 }), s = p.indexOf(T(p, function(e) { 1076 return -1 !== e.search(/,|\s/); 1077 })); 1078 p[s] && -1 === p[s].indexOf(",") && console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead."); 1079 var d = /\s*,\s*|\s+/, a = -1 === s ? [ p ] : [ p.slice(0, s).concat([ p[s].split(d)[0] ]), [ p[s].split(d)[1] ].concat(p.slice(s + 1)) ]; 1080 return a = a.map(function(e, i) { 1081 var n = (1 === i ? !r : r) ? "height" : "width", p = !1; 1082 return e.reduce(function(e, t) { 1083 return "" === e[e.length - 1] && -1 !== [ "+", "-" ].indexOf(t) ? (e[e.length - 1] = t, 1084 p = !0, e) : p ? (e[e.length - 1] += t, p = !1, e) : e.concat(t); 1085 }, []).map(function(e) { 1086 return q(e, n, t, o); 1087 }); 1088 }), a.forEach(function(e, t) { 1089 e.forEach(function(o, i) { 1090 R(o) && (n[t] += o * ("-" === e[i - 1] ? -1 : 1)); 1091 }); 1092 }), n; 1093 } 1094 function z(e, t) { 1095 var o, i = t.offset, n = e.placement, r = e.offsets, p = r.popper, s = r.reference, d = n.split("-")[0]; 1096 return o = R(+i) ? [ +i, 0 ] : G(i, p, s, d), "left" === d ? (p.top += o[0], p.left -= o[1]) : "right" === d ? (p.top += o[0], 1097 p.left += o[1]) : "top" === d ? (p.left += o[0], p.top -= o[1]) : "bottom" === d && (p.left += o[0], 1098 p.top += o[1]), e.popper = p, e; 1099 } 1100 for (var V = Math.min, _ = Math.floor, X = Math.max, Q = [ "native code", "[object MutationObserverConstructor]" ], J = function(e) { 1101 return Q.some(function(t) { 1102 return -1 < (e || "").toString().indexOf(t); 1103 }); 1104 }, Z = "undefined" != typeof window, $ = [ "Edge", "Trident", "Firefox" ], ee = 0, te = 0; te < $.length; te += 1) if (Z && 0 <= navigator.userAgent.indexOf($[te])) { 1105 ee = 1; 1106 break; 1107 } 1108 var i, oe = Z && J(window.MutationObserver), ie = oe ? function(e) { 1109 var t = !1, o = 0, i = document.createElement("span"), n = new MutationObserver(function() { 1110 e(), t = !1; 1111 }); 1112 return n.observe(i, { 1113 attributes: !0 1114 }), function() { 1115 t || (t = !0, i.setAttribute("x-index", o), ++o); 1116 }; 1117 } : function(e) { 1118 var t = !1; 1119 return function() { 1120 t || (t = !0, setTimeout(function() { 1121 t = !1, e(); 1122 }, ee)); 1123 }; 1124 }, ne = function() { 1125 return void 0 == i && (i = -1 !== navigator.appVersion.indexOf("MSIE 10")), i; 1126 }, re = function(e, t) { 1127 if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function"); 1128 }, pe = function() { 1129 function e(e, t) { 1130 for (var o, n = 0; n < t.length; n++) o = t[n], o.enumerable = o.enumerable || !1, 1131 o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o); 1132 } 1133 return function(t, o, i) { 1134 return o && e(t.prototype, o), i && e(t, i), t; 1135 }; 1136 }(), se = function(e, t, o) { 1137 return t in e ? Object.defineProperty(e, t, { 1138 value: o, 1139 enumerable: !0, 1140 configurable: !0, 1141 writable: !0 1142 }) : e[t] = o, e; 1143 }, de = Object.assign || function(e) { 1144 for (var t, o = 1; o < arguments.length; o++) for (var i in t = arguments[o], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); 1145 return e; 1146 }, ae = [ "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" ], le = ae.slice(3), fe = { 1147 FLIP: "flip", 1148 CLOCKWISE: "clockwise", 1149 COUNTERCLOCKWISE: "counterclockwise" 1150 }, me = function() { 1151 function t(o, i) { 1152 var n = this, r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}; 1153 re(this, t), this.scheduleUpdate = function() { 1154 return requestAnimationFrame(n.update); 1155 }, this.update = ie(this.update.bind(this)), this.options = de({}, t.Defaults, r), 1156 this.state = { 1157 isDestroyed: !1, 1158 isCreated: !1, 1159 scrollParents: [] 1160 }, this.reference = o.jquery ? o[0] : o, this.popper = i.jquery ? i[0] : i, this.options.modifiers = {}, 1161 Object.keys(de({}
1161, t.Defaults.modifiers, r.modifiers)).forEach(function(e) { 1162 n.options.modifiers[e] = de({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {}); 1163 }), this.modifiers = Object.keys(this.options.modifiers).map(function(e) { 1164 return de({ 1165 name: e 1166 }, n.options.modifiers[e]); 1167 }).sort(function(e, t) { 1168 return e.order - t.order; 1169 }), this.modifiers.forEach(function(t) { 1170 t.enabled && e(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state); 1171 }), this.update(); 1172 var p = this.options.eventsEnabled; 1173 p && this.enableEventListeners(), this.state.eventsEnabled = p; 1174 } 1175 return pe(t, [ { 1176 key: "update", 1177 value: function() { 1178 return k.call(this); 1179 } 1180 }, { 1181 key: "destroy", 1182 value: function() { 1183 return P.call(this); 1184 } 1185 }, { 1186 key: "enableEventListeners", 1187 value: function() { 1188 return A.call(this); 1189 } 1190 }, { 1191 key: "disableEventListeners", 1192 value: function() { 1193 return I.call(this); 1194 } 1195 } ]), t; 1196 }(); 1197 return me.Utils = ("undefined" == typeof window ? global : window).PopperUtils, 1198 me.placements = ae, me.Defaults = { 1199 placement: "bottom", 1200 eventsEnabled: !0, 1201 removeOnDestroy: !1, 1202 onCreate: function() {}, 1203 onUpdate: function() {}, 1204 modifiers: { 1205 shift: { 1206 order: 100, 1207 enabled: !0, 1208 fn: function(e) { 1209 var t = e.placement, o = t.split("-")[0], i = t.split("-")[1]; 1210 if (i) { 1211 var n = e.offsets, r = n.reference, p = n.popper, s = -1 !== [ "bottom", "top" ].indexOf(o), d = s ? "left" : "top", a = s ? "width" : "height", l = { 1212 start: se({}, d, r[d]), 1213 end: se({}, d, r[d] + r[a] - p[a]) 1214 }; 1215 e.offsets.popper = de({}, p, l[i]); 1216 } 1217 return e; 1218 } 1219 }, 1220 offset: { 1221 order: 200, 1222 enabled: !0, 1223 fn: z, 1224 offset: 0 1225 }, 1226 preventOverflow: { 1227 order: 300, 1228 enabled: !0, 1229 fn: function(e, t) { 1230 var o = t.boundariesElement || r(e.instance.popper); 1231 e.instance.reference === o && (o = r(o)); 1232 var i = w(e.instance.popper, e.instance.reference, t.padding, o); 1233 t.boundaries = i; 1234 var n = t.priority, p = e.offsets.popper, s = { 1235 primary: function(e) { 1236 var o = p[e]; 1237 return p[e] < i[e] && !t.escapeWithReference && (o = X(p[e], i[e])), se({}, e, o); 1238 }, 1239 secondary: function(e) { 1240 var o = "right" === e ? "left" : "top", n = p[o]; 1241 return p[e] > i[e] && !t.escapeWithReference && (n = V(p[o], i[e] - ("right" === e ? p.width : p.height))), 1242 se({}, o, n); 1243 } 1244 }; 1245 return n.forEach(function(e) { 1246 var t = -1 === [ "left", "top" ].indexOf(e) ? "secondary" : "primary"; 1247 p = de({}, p, s[t](e)); 1248 }), e.offsets.popper = p, e; 1249 }, 1250 priority: [ "left", "right", "top", "bottom" ], 1251 padding: 5, 1252 boundariesElement: "scrollParent" 1253 }, 1254 keepTogether: { 1255 order: 400, 1256 enabled: !0, 1257 fn: function(e) { 1258 var t = e.offsets, o = t.popper, i = t.reference, n = e.placement.split("-")[0], r = _, p = -1 !== [ "top", "bottom" ].indexOf(n), s = p ? "right" : "bottom", d = p ? "left" : "top", a = p ? "width" : "height"; 1259 return o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), 1260 e; 1261 } 1262 }, 1263 arrow: { 1264 order: 500, 1265 enabled: !0, 1266 fn: function(e, o) { 1267 if (!F(e.instance.modifiers, "arrow", "keepTogether")) return e; 1268 var i = o.element; 1269 if ("string" == typeof i) { 1270 if (i = e.instance.popper.querySelector(i), !i) return e; 1271 } else if (!e.instance.popper.contains(i)) return console.warn("WARNING: `arrow.element` must be child of its popper element!"), 1272 e; 1273 var n = e.placement.split("-")[0], r = e.offsets, p = r.popper, s = r.reference, d = -1 !== [ "left", "right" ].indexOf(n), a = d ? "he
vendor: 6,341 bytes, lines 1273-1379
1273ight" : "width", l = d ? "Top" : "Left", f = l.toLowerCase(), m = d ? "left" : "top", c = d ? "bottom" : "right", g = O(i)[a]; 1274 s[c] - g < p[f] && (e.offsets.popper[f] -= p[f] - (s[c] - g)), s[f] + g > p[c] && (e.offsets.popper[f] += s[f] + g - p[c]); 1275 var u = s[f] + s[a] / 2 - g / 2, b = t(e.instance.popper, "margin" + l).replace("px", ""), y = u - h(e.offsets.popper)[f] - b; 1276 return y = X(V(p[a] - g, y), 0), e.arrowElement = i, e.offsets.arrow = {}, e.offsets.arrow[f] = Math.round(y), 1277 e.offsets.arrow[m] = "", e; 1278 }, 1279 element: "[x-arrow]" 1280 }, 1281 flip: { 1282 order: 600, 1283 enabled: !0, 1284 fn: function(e, t) { 1285 if (W(e.instance.modifiers, "inner")) return e; 1286 if (e.flipped && e.placement === e.originalPlacement) return e; 1287 var o = w(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement), i = e.placement.split("-")[0], n = L(i), r = e.placement.split("-")[1] || "", p = []; 1288 switch (t.behavior) { 1289 case fe.FLIP: 1290 p = [ i, n ]; 1291 break; 1292 1293 case fe.CLOCKWISE: 1294 p = K(i); 1295 break; 1296 1297 case fe.COUNTERCLOCKWISE: 1298 p = K(i, !0); 1299 break; 1300 1301 default: 1302 p = t.behavior; 1303 } 1304 return p.forEach(function(s, d) { 1305 if (i !== s || p.length === d + 1) return e; 1306 i = e.placement.split("-")[0], n = L(i); 1307 var a = e.offsets.popper, l = e.offsets.reference, f = _, m = "left" === i && f(a.right) > f(l.left) || "right" === i && f(a.left) < f(l.right) || "top" === i && f(a.bottom) > f(l.top) || "bottom" === i && f(a.top) < f(l.bottom), c = f(a.left) < f(o.left), h = f(a.right) > f(o.right), g = f(a.top) < f(o.top), u = f(a.bottom) > f(o.bottom), b = "left" === i && c || "right" === i && h || "top" === i && g || "bottom" === i && u, y = -1 !== [ "top", "bottom" ].indexOf(i), w = !!t.flipVariations && (y && "start" === r && c || y && "end" === r && h || !y && "start" === r && g || !y && "end" === r && u); 1308 (m || b || w) && (e.flipped = !0, (m || b) && (i = p[d + 1]), w && (r = j(r)), e.placement = i + (r ? "-" + r : ""), 1309 e.offsets.popper = de({}, e.offsets.popper, S(e.instance.popper, e.offsets.reference, e.placement)), 1310 e = N(e.instance.modifiers, e, "flip")); 1311 }), e; 1312 }, 1313 behavior: "flip", 1314 padding: 5, 1315 boundariesElement: "viewport" 1316 }, 1317 inner: { 1318 order: 700, 1319 enabled: !1, 1320 fn: function(e) { 1321 var t = e.placement, o = t.split("-")[0], i = e.offsets, n = i.popper, r = i.reference, p = -1 !== [ "left", "right" ].indexOf(o), s = -1 === [ "top", "left" ].indexOf(o); 1322 return n[p ? "left" : "top"] = r[o] - (s ? n[p ? "width" : "height"] : 0), e.placement = L(t), 1323 e.offsets.popper = h(n), e; 1324 } 1325 }, 1326 hide: { 1327 order: 800, 1328 enabled: !0, 1329 fn: function(e) { 1330 if (!F(e.instance.modifiers, "hide", "preventOverflow")) return e; 1331 var t = e.offsets.reference, o = T(e.instance.modifiers, function(e) { 1332 return "preventOverflow" === e.name; 1333 }).boundaries; 1334 if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) { 1335 if (!0 === e.hide) return e; 1336 e.hide = !0, e.attributes["x-out-of-boundaries"] = ""; 1337 } else { 1338 if (!1 === e.hide) return e; 1339 e.hide = !1, e.attributes["x-out-of-boundaries"] = !1; 1340 } 1341 return e; 1342 } 1343 }, 1344 computeStyle: { 1345 order: 850, 1346 enabled: !0, 1347 fn: function(e, t) { 1348 var o = t.x, i = t.y, n = e.offsets.popper, p = T(e.instance.modifiers, function(e) { 1349 return "applyStyle" === e.name; 1350 }).gpuAcceleration; 1351 void 0 !== p && console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!"); 1352 var s, d, a = void 0 === p ? t.gpuAcceleration : p, l = r(e.instance.popper), f = g(l), m = { 1353 position: n.position 1354 }, c = { 1355 left: _(n.left), 1356 top: _(n.top), 1357 bottom: _(n.bottom), 1358 right: _(n.right) 1359 }, h = "bottom" === o ? "top" : "bottom", u = "right" === i ? "left" : "right", b = B("transform"); 1360 if (d = "bottom" == h ? -f.height + c.bottom : c.top, s = "right" == u ? -f.width + c.right : c.left, 1361 a && b) m[b] = "translate3d(" + s + "px, " + d + "px, 0)", m[h] = 0, m[u] = 0, m.willChange = "transform"; else { 1362 var y = "bottom" == h ? -1 : 1, w = "right" == u ? -1 : 1; 1363 m[h] = d * y, m[u] = s * w, m.willChange = h + ", " + u; 1364 } 1365 var E = { 1366 "x-placement": e.placement 1367 }; 1368 return e.attributes = de({}, E, e.attributes), e.styles = de({}, m, e.styles), e.arrowStyles = de({}, e.offsets.arrow, e.arrowStyles), 1369 e; 1370 }, 1371 gpuAcceleration: !0, 1372 x: "bottom", 1373 y: "right" 1374 }, 1375 applyStyle: { 1376 order: 900, 1377 enabled: !0, 1378 fn: function(e) { 1379 return U(e.instance.popper, e.styles), Y(e.instance.popper, e.attributes), e.arrowElement && Ob
1379ject.keys(e.arrowStyles).length && U(e.arrowElement, e.arrowStyles), 1380 e; 1381 }, 1382 onLoad: function(e, t, o, i, n) { 1383 var r = x(n, t, e), p = v(o.placement, r, t, e, o.modifiers.flip.boundariesElement, o.modifiers.flip.padding); 1384 return t.setAttribute("x-placement", p), U(t, { 1385 position: "absolute" 1386 }), o; 1387 }, 1388 gpuAcceleration: void 0 1389 } 1390 } 1391 }, me; 1392}); 1393 1394var Util = function($) { 1395 var transition = false; 1396 var MAX_UID = 1e6; 1397 function toType(obj) { 1398 return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); 1399 } 1400 function getSpecialTransitionEndEvent() { 1401 return { 1402 bindType: transition.end, 1403 delegateType: transition.end, 1404 handle: function handle(event) { 1405 if ($(event.target).is(this)) { 1406 return event.handleObj.handler.apply(this, arguments); 1407 } 1408 return undefined; 1409 } 1410 }; 1411 } 1412 function transitionEndTest() { 1413 if (typeof window !== "undefined" && window.QUnit) { 1414 return false; 1415 } 1416 return { 1417 end: "transitionend" 1418 }; 1419 } 1420 function transitionEndEmulator(duration) { 1421 var _this = this; 1422 var called = false; 1423 $(this).one(Util.TRANSITION_END, function() { 1424 called = true; 1425 }); 1426 setTimeout(function() { 1427 if (!called) { 1428 Util.triggerTransitionEnd(_this); 1429 } 1430 }, duration); 1431 return this; 1432 } 1433 function setTransitionEndSupport() { 1434 transition = transitionEndTest(); 1435 $.fn.emulateTransitionEnd = transitionEndEmulator; 1436 if (Util.supportsTransitionEnd()) { 1437 $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); 1438 } 1439 } 1440 function escapeId(selector) { 1441 selector = typeof $.escapeSelector === "function" ? $.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, "\\$1"); 1442 return selector; 1443 } 1444 var Util = { 1445 TRANSITION_END: "bsTransitionEnd", 1446 getUID: function getUID(prefix) { 1447 do { 1448 prefix += ~~(Math.random() * MAX_UID); 1449 } while (document.getElementById(prefix)); 1450 return prefix; 1451 }, 1452 getSelectorFromElement: function getSelectorFromElement(element) { 1453 var selector = element.getAttribute("data-target"); 1454 if (!selector || selector === "#") { 1455 selector = element.getAttribute("href") || ""; 1456 } 1457 if (selector.charAt(0) === "#") { 1458 selector = escapeId(selector); 1459 } 1460 try { 1461 var $selector = $(document).find(selector); 1462 return $selector.length > 0 ? selector : null; 1463 } catch (err) { 1464 return null; 1465 } 1466 }, 1467 reflow: function reflow(element) { 1468 return element.offsetHeight; 1469 }, 1470 triggerTransitionEnd: function triggerTransitionEnd(element) { 1471 $(element).trigger(transition.end); 1472 }, 1473 supportsTransitionEnd: function supportsTransitionEnd() { 1474 return Boolean(transition); 1475 }, 1476 isElement: function isElement(obj) { 1477 return (obj[0] || obj).nodeType; 1478 }, 1479 typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { 1480 for (var property in configTypes) { 1481 if (Object.prototype.hasOwnProperty.call(configTypes, property)) { 1482 var expectedTypes = configTypes[property]; 1483 var value = config[property]; 1484 var valueType = value && Util.isElement(value) ? "element" : toType(value); 1485 if (!new RegExp(expectedTypes).test(valueType)) { 1486 throw new Error(componentName.toUpperCase() + ": " + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); 1487 } 1488 } 1489 } 1490 } 1491 }; 1492 setTransitionEndSupport(); 1493 return Util; 1494}($); 1495 1496function _extends() { 1497 _extends = Object.assign || function(target) { 1498 for (var i = 1; i < arguments.length; i++) { 1499 var source = arguments[i]; 1500 for (var key in source) { 1501 if (Object.prototype.hasOwnProperty.call(source, key)) { 1502 target[key] = source[key]; 1503 } 1504 } 1505 } 1506 return target; 1507 }; 1508 return _extends.apply(this, arguments); 1509} 1510 1511function _defineProperties(target, props) { 1512 for (var i = 0; i < props.length; i++) { 1513 var descriptor = props[i]; 1514 descriptor.enumerable = descriptor.enumerable || false; 1515 descriptor.configurable = true; 1516 if ("value" in descriptor) descriptor.writable = true; 1517 Object.defineProperty(target, descriptor.key, descriptor); 1518 } 1519} 1520 1521function _createClass(Constructor, protoProps, staticProps) { 1522 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 1523 if (staticProps) _defineProperties(Constructor, staticProps); 1524 return Constructor; 1525} 1526 1527var Collapse = function($) { 1528 var NAME = "collapse"; 1529 var VERSION = "4.0.0"; 1530 var DATA_KEY = "bs.collapse"; 1531 var EVENT_KEY = "." + DATA_KEY; 1532 var DATA_API_KEY = ".data-api"; 1533 var JQUERY_NO_CONFLICT = $.fn[NAME]; 1534 var TRANSITION_DURATION = 600; 1535 var Default = { 1536 toggle: true, 1537 parent: "" 1538 }; 1539 var DefaultType = { 1540 toggle: "boolean", 1541 parent: "(string|element)" 1542 }; 1543 var Event = { 1544 SHOW: "show" + EVENT_KEY, 1545 SHOWN: "shown" + EVENT_KEY, 1546 HIDE: "hide" + EVENT_KEY, 1547 HIDDEN: "hidden" + EVENT_KEY, 1548 CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY 1549 }; 1550 var ClassName = { 1551 SHOW: "show", 1552 COLLAPSE: "collapse", 1553 COLLAPSING: "collapsing", 1554 COLLAPSED: "collapsed" 1555 }; 1556 var Dimension = { 1557 WIDTH: "width", 1558 HEIGHT: "height" 1559 }; 1560 var Selector = { 1561 ACTIVES: ".show, .collapsing", 1562 DATA_TOGGLE: '[data-toggle="collapse"]' 1563 }; 1564 var Collapse = function() { 1565 function Collapse(element, config) { 1566 this._isTransitioning = false;
1567 this._element = element; 1568 this._config = this._getConfig(config); 1569 this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); 1570 var tabToggles = $(Selector.DATA_TOGGLE); 1571 for (var i = 0; i < tabToggles.length; i++) { 1572 var elem = tabToggles[i]; 1573 var selector = Util.getSelectorFromElement(elem); 1574 if (selector !== null && $(selector).filter(element).length > 0) { 1575 this._selector = selector; 1576 this._triggerArray.push(elem); 1577 } 1578 } 1579 this._parent = this._config.parent ? this._getParent() : null; 1580 if (!this._config.parent) { 1581 this._addAriaAndCollapsedClass(this._element, this._triggerArray); 1582 } 1583 if (this._config.toggle) { 1584 this.toggle(); 1585 } 1586 } 1587 var _proto = Collapse.prototype; 1588 _proto.toggle = function toggle() { 1589 if ($(this._element).hasClass(ClassName.SHOW)) { 1590 this.hide(); 1591 } else { 1592 this.show(); 1593 } 1594 }; 1595 _proto.show = function show() { 1596 var _this = this; 1597 if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) { 1598 return; 1599 } 1600 var actives; 1601 var activesData; 1602 if (this._parent) { 1603 actives = $.makeArray($(this._parent).find(Selector.ACTIVES).filter('[data-parent="' + this._config.parent + '"]')); 1604 if (actives.length === 0) { 1605 actives = null; 1606 } 1607 } 1608 if (actives) { 1609 activesData = $(actives).not(this._selector).data(DATA_KEY); 1610 if (activesData && activesData._isTransitioning) { 1611 return; 1612 } 1613 } 1614 var startEvent = $.Event(Event.SHOW); 1615 $(this._element).trigger(startEvent); 1616 if (startEvent.isDefaultPrevented()) { 1617 return; 1618 } 1619 if (actives) { 1620 Collapse._jQueryInterface.call($(actives).not(this._selector), "hide"); 1621 if (!activesData) { 1622 $(actives).data(DATA_KEY, null); 1623 } 1624 } 1625 var dimension = this._getDimension(); 1626 $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); 1627 this._element.style[dimension] = 0; 1628 if (this._triggerArray.length > 0) { 1629 $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr("aria-expanded", true); 1630 } 1631 this.setTransitioning(true); 1632 var complete = function complete() { 1633 $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); 1634 _this._element.style[dimension] = ""; 1635 _this.setTransitioning(false); 1636 $(_this._element).trigger(Event.SHOWN); 1637 }; 1638 if (!Util.supportsTransitionEnd()) { 1639 complete(); 1640 return; 1641 } 1642 var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 1643 var scrollSize = "scroll" + capitalizedDimension; 1644 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); 1645 this._element.style[dimension] = this._element[scrollSize] + "px"; 1646 }; 1647 _proto.hide = function hide() { 1648 var _this2 = this; 1649 if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) { 1650 return; 1651 } 1652 var startEvent = $.Event(Event.HIDE); 1653 $(this._element).trigger(startEvent); 1654 if (startEvent.isDefaultPrevented()) { 1655 return; 1656 } 1657 var dimension = this._getDimension(); 1658 this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; 1659 Util.reflow(this._element); 1660 $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); 1661 if (this._triggerArray.length > 0) { 1662 for (var i = 0; i < this._triggerArray.length; i++) { 1663 var trigger = this._triggerArray[i]; 1664 var selector = Util.getSelectorFromElement(trigger); 1665 if (selector !== null) { 1666 var $elem = $(selector); 1667 if (!$elem.hasClass(ClassName.SHOW)) { 1668 $(trigger).addClass(ClassName.COLLAPSED).attr("aria-expanded", false); 1669 } 1670 } 1671 } 1672 } 1673 this.setTransitioning(true); 1674 var complete = function complete() { 1675 _this2.setTransitioning(false); 1676 $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); 1677 }; 1678 this._element.style[dimension] = ""; 1679 if (!Util.supportsTransitionEnd()) { 1680 complete(); 1681 return; 1682 } 1683 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); 1684 }; 1685 _proto.setTransitioning = function setTransitioning(isTransitioning) { 1686 this._isTransitioning = isTransitioning; 1687 }; 1688 _proto.dispose = function dispose() { 1689 $.removeData(this._element, DATA_KEY); 1690 this._config = null; 1691 this._parent = null; 1692 this._element = null; 1693 this._triggerArray = null; 1694 this._isTransitioning = null; 1695 }; 1696 _proto._getConfig = function _getConfig(config) { 1697 config = _extends({}, Default, config); 1698 config.toggle = Boolean(config.toggle); 1699 Util.typeCheckConfig(NAME, config, DefaultType); 1700 return config; 1701 }; 1702 _proto._getDimension = function _getDimension() { 1703 var hasWidth = $(this._element).hasClass(Dimension.WIDTH); 1704 return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; 1705 }; 1706 _proto._getParent = function _getParent() { 1707 var _this3 = this; 1708 var parent = null; 1709 if (Util.isElement(this._config.parent)) { 1710 parent = this._config.parent; 1711 if (typeof this._config.parent.jquery !== "undefined") { 1712 parent = this._config.parent[0]; 1713 } 1714 } else { 1715 parent = $(this._config.parent)[0]; 1716 } 1717 var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; 1718 $(parent).find(selector).each(function(i, element) { 1719 _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [ element ]); 1720 }); 1721 return parent; 1722 }; 1723 _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { 1724 if (element) { 1725 var isOpen = $(element).hasClass(ClassName.SHOW); 1726 if (triggerArray.length > 0) { 1727 $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr("aria-expanded", isOpen); 1728 } 1729 } 1730 }; 1731 Collapse._getTargetFromElement = function _getTargetFromElement(element) { 1732 var selector = Util.getSelectorFromElement(element); 1733 return selector ? $(selector)[0] : null; 1734 }; 1735 Collapse._jQueryInterface = function _jQueryInterface(config) { 1736 return this.each(function() { 1737 var $this = $(this); 1738 var data = $this.data(DATA_KEY); 1739 var _config = _extends({}, Default, $this.data(), typeof config === "object" && config); 1740 if (!data && _config.toggle && /show|hide/.test(config)) { 1741 _config.toggle = false;
1742 } 1743 if (!data) { 1744 data = new Collapse(this, _config); 1745 $this.data(DATA_KEY, data); 1746 } 1747 if (typeof config === "string") { 1748 if (typeof data[config] === "undefined") { 1749 throw new TypeError('No method named "' + config + '"'); 1750 } 1751 data[config](); 1752 } 1753 }); 1754 }; 1755 _createClass(Collapse, null, [ { 1756 key: "VERSION", 1757 get: function get() { 1758 return VERSION; 1759 } 1760 }, { 1761 key: "Default", 1762 get: function get() { 1763 return Default; 1764 } 1765 } ]); 1766 return Collapse; 1767 }(); 1768 $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) { 1769 if (event.currentTarget.tagName === "A") { 1770 event.preventDefault(); 1771 } 1772 var $trigger = $(this); 1773 var selector = Util.getSelectorFromElement(this); 1774 $(selector).each(function() { 1775 var $target = $(this); 1776 var data = $target.data(DATA_KEY); 1777 var config = data ? "toggle" : $trigger.data(); 1778 Collapse._jQueryInterface.call($target, config); 1779 }); 1780 }); 1781 $.fn[NAME] = Collapse._jQueryInterface; 1782 $.fn[NAME].Constructor = Collapse; 1783 $.fn[NAME].noConflict = function() { 1784 $.fn[NAME] = JQUERY_NO_CONFLICT; 1785 return Collapse._jQueryInterface; 1786 }; 1787 return Collapse; 1788}($); 1789 1790function _defineProperties(target, props) { 1791 for (var i = 0; i < props.length; i++) { 1792 var descriptor = props[i]; 1793 descriptor.enumerable = descriptor.enumerable || false; 1794 descriptor.configurable = true; 1795 if ("value" in descriptor) descriptor.writable = true; 1796 Object.defineProperty(target, descriptor.key, descriptor); 1797 } 1798} 1799 1800function _createClass(Constructor, protoProps, staticProps) { 1801 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 1802 if (staticProps) _defineProperties(Constructor, staticProps); 1803 return Constructor; 1804} 1805 1806var Tab = function($) { 1807 var NAME = "tab"; 1808 var VERSION = "4.0.0"; 1809 var DATA_KEY = "bs.tab"; 1810 var EVENT_KEY = "." + DATA_KEY; 1811 var DATA_API_KEY = ".data-api"; 1812 var JQUERY_NO_CONFLICT = $.fn[NAME]; 1813 var TRANSITION_DURATION = 150; 1814 var Event = { 1815 HIDE: "hide" + EVENT_KEY, 1816 HIDDEN: "hidden" + EVENT_KEY, 1817 SHOW: "show" + EVENT_KEY, 1818 SHOWN: "shown" + EVENT_KEY, 1819 CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY 1820 }; 1821 var ClassName = { 1822 DROPDOWN_MENU: "dropdown-menu", 1823 ACTIVE: "active", 1824 DISABLED: "disabled", 1825 FADE: "fade", 1826 SHOW: "show" 1827 }; 1828 var Selector = { 1829 DROPDOWN: ".dropdown", 1830 NAV_LIST_GROUP: ".nav, .list-group", 1831 ACTIVE: ".active", 1832 ACTIVE_UL: "> li > .active", 1833 DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', 1834 DROPDOWN_TOGGLE: ".dropdown-toggle", 1835 DROPDOWN_ACTIVE_CHILD: "> .dropdown-menu .active" 1836 }; 1837 var Tab = function() { 1838 function Tab(element) { 1839 this._element = element; 1840 } 1841 var _proto = Tab.prototype; 1842 _proto.show = function show() { 1843 var _this = this; 1844 if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) { 1845 return; 1846 } 1847 var target; 1848 var previous; 1849 var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]; 1850 var selector = Util.getSelectorFromElement(this._element); 1851 if (listElement) { 1852 var itemSelector = listElement.nodeName === "UL" ? Selector.ACTIVE_UL : Selector.ACTIVE; 1853 previous = $.makeArray($(listElement).find(itemSelector)); 1854 previous = previous[previous.length - 1]; 1855 } 1856 var hideEvent = $.Event(Event.HIDE, { 1857 relatedTarget: this._element 1858 }); 1859 var showEvent = $.Event(Event.SHOW, { 1860 relatedTarget: previous 1861 }); 1862 if (previous) { 1863 $(previous).trigger(hideEvent); 1864 } 1865 $(this._element).trigger(showEvent); 1866 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { 1867 return; 1868 } 1869 if (selector) { 1870 target = $(selector)[0]; 1871 } 1872 this._activate(this._element, listElement); 1873 var complete = function complete() { 1874 var hiddenEvent = $.Event(Event.HIDDEN, { 1875 relatedTarget: _this._element 1876 }); 1877 var shownEvent = $.Event(Event.SHOWN, { 1878 relatedTarget: previous 1879 }); 1880 $(previous).trigger(hiddenEvent); 1881 $(_this._element).trigger(shownEvent); 1882 }; 1883 if (target) { 1884 this._activate(target, target.parentNode, complete); 1885 } else { 1886 complete(); 1887 } 1888 }; 1889 _proto.dispose = function dispose() { 1890 $.removeData(this._element, DATA_KEY); 1891 this._element = null; 1892 }; 1893 _proto._activate = function _activate(element, container, callback) { 1894 var _this2 = this; 1895 var activeElements; 1896 if (container.nodeName === "UL") { 1897 activeElements = $(container).find(Selector.ACTIVE_UL); 1898 } else { 1899 activeElements = $(container).children(Selector.ACTIVE); 1900 } 1901 var active = activeElements[0]; 1902 var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE); 1903 var complete = function complete() { 1904 return _this2._transitionComplete(element, active, callback); 1905 }; 1906 if (active && isTransitioning) { 1907 $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); 1908 } else { 1909 complete(); 1910 } 1911 }; 1912 _proto._transitionComplete = function _transitionComplete(element, active, callback) { 1913 if (active) { 1914 $(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
1915 var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; 1916 if (dropdownChild) { 1917 $(dropdownChild).removeClass(ClassName.ACTIVE); 1918 } 1919 if (active.getAttribute("role") === "tab") { 1920 active.setAttribute("aria-selected", false); 1921 } 1922 } 1923 $(element).addClass(ClassName.ACTIVE); 1924 if (element.getAttribute("role") === "tab") { 1925 element.setAttribute("aria-selected", true); 1926 } 1927 Util.reflow(element); 1928 $(element).addClass(ClassName.SHOW); 1929 if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { 1930 var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; 1931 if (dropdownElement) { 1932 $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); 1933 } 1934 element.setAttribute("aria-expanded", true); 1935 } 1936 if (callback) { 1937 callback(); 1938 } 1939 }; 1940 Tab._jQueryInterface = function _jQueryInterface(config) { 1941 return this.each(function() { 1942 var $this = $(this); 1943 var data = $this.data(DATA_KEY); 1944 if (!data) { 1945 data = new Tab(this); 1946 $this.data(DATA_KEY, data); 1947 } 1948 if (typeof config === "string") { 1949 if (typeof data[config] === "undefined") { 1950 throw new TypeError('No method named "' + config + '"'); 1951 } 1952 data[config](); 1953 } 1954 }); 1955 }; 1956 _createClass(Tab, null, [ { 1957 key: "VERSION", 1958 get: function get() { 1959 return VERSION; 1960 } 1961 } ]); 1962 return Tab; 1963 }(); 1964 $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) { 1965 event.preventDefault(); 1966 Tab._jQueryInterface.call($(this), "show"); 1967 }); 1968 $.fn[NAME] = Tab._jQueryInterface; 1969 $.fn[NAME].Constructor = Tab; 1970 $.fn[NAME].noConflict = function() { 1971 $.fn[NAME] = JQUERY_NO_CONFLICT; 1972 return Tab._jQueryInterface; 1973 }; 1974 return Tab; 1975}($); 1976 1977function _extends() { 1978 _extends = Object.assign || function(target) { 1979 for (var i = 1; i < arguments.length; i++) { 1980 var source = arguments[i]; 1981 for (var key in source) { 1982 if (Object.prototype.hasOwnProperty.call(source, key)) { 1983 target[key] = source[key]; 1984 } 1985 } 1986 } 1987 return target; 1988 }; 1989 return _extends.apply(this, arguments); 1990} 1991 1992function _defineProperties(target, props) { 1993 for (var i = 0; i < props.length; i++) { 1994 var descriptor = props[i]; 1995 descriptor.enumerable = descriptor.enumerable || false; 1996 descriptor.configurable = true; 1997 if ("value" in descriptor) descriptor.writable = true; 1998 Object.defineProperty(target, descriptor.key, descriptor); 1999 } 2000} 2001 2002function _createClass(Constructor, protoProps, staticProps) { 2003 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 2004 if (staticProps) _defineProperties(Constructor, staticProps); 2005 return Constructor; 2006} 2007 2008var Modal = function($) { 2009 var NAME = "modal"; 2010 var VERSION = "4.0.0"; 2011 var DATA_KEY = "bs.modal"; 2012 var EVENT_KEY = "." + DATA_KEY; 2013 var DATA_API_KEY = ".data-api"; 2014 var JQUERY_NO_CONFLICT = $.fn[NAME]; 2015 var TRANSITION_DURATION = 300; 2016 var BACKDROP_TRANSITION_DURATION = 150; 2017 var ESCAPE_KEYCODE = 27; 2018 var Default = { 2019 backdrop: true, 2020 keyboard: true, 2021 focus: true, 2022 show: true 2023 }; 2024 var DefaultType = { 2025 backdrop: "(boolean|string)", 2026 keyboard: "boolean", 2027 focus: "boolean", 2028 show: "boolean" 2029 }; 2030 var Event = { 2031 HIDE: "hide" + EVENT_KEY, 2032 HIDDEN: "hidden" + EVENT_KEY, 2033 SHOW: "show" + EVENT_KEY, 2034 SHOWN: "shown" + EVENT_KEY, 2035 FOCUSIN: "focusin" + EVENT_KEY, 2036 RESIZE: "resize" + EVENT_KEY, 2037 CLICK_DISMISS: "click.dismiss" + EVENT_KEY, 2038 KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, 2039 MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, 2040 MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, 2041 CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY 2042 }; 2043 var ClassName = { 2044 SCROLLBAR_MEASURER: "modal-scrollbar-measure",
2045 BACKDROP: "modal-backdrop", 2046 OPEN: "modal-open", 2047 FADE: "fade", 2048 SHOW: "show" 2049 }; 2050 var Selector = { 2051 DIALOG: ".modal-dialog", 2052 DATA_TOGGLE: '[data-toggle="modal"]', 2053 DATA_DISMISS: '[data-dismiss="modal"]', 2054 FIXED_CONTENT: ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", 2055 STICKY_CONTENT: ".sticky-top", 2056 NAVBAR_TOGGLER: ".navbar-toggler" 2057 }; 2058 var Modal = function() { 2059 function Modal(element, config) { 2060 this._config = this._getConfig(config); 2061 this._element = element; 2062 this._dialog = $(element).find(Selector.DIALOG)[0]; 2063 this._backdrop = null; 2064 this._isShown = false; 2065 this._isBodyOverflowing = false; 2066 this._ignoreBackdropClick = false; 2067 this._originalBodyPadding = 0; 2068 this._scrollbarWidth = 0; 2069 } 2070 var _proto = Modal.prototype; 2071 _proto.toggle = function toggle(relatedTarget) { 2072 return this._isShown ? this.hide() : this.show(relatedTarget); 2073 }; 2074 _proto.show = function show(relatedTarget) { 2075 var _this = this; 2076 if (this._isTransitioning || this._isShown) { 2077 return; 2078 } 2079 if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { 2080 this._isTransitioning = true; 2081 } 2082 var showEvent = $.Event(Event.SHOW, { 2083 relatedTarget: relatedTarget 2084 }); 2085 $(this._element).trigger(showEvent); 2086 if (this._isShown || showEvent.isDefaultPrevented()) { 2087 return; 2088 } 2089 this._isShown = true; 2090 this._checkScrollbar(); 2091 this._setScrollbar(); 2092 this._adjustDialog(); 2093 $(document.body).addClass(ClassName.OPEN); 2094 this._setEscapeEvent(); 2095 this._setResizeEvent(); 2096 $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function(event) { 2097 return _this.hide(event); 2098 }); 2099 $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function() { 2100 $(_this._element).one(Event.MOUSEUP_DISMISS, function(event) { 2101 if ($(event.target).is(_this._element)) { 2102 _this._ignoreBackdropClick = true; 2103 } 2104 }); 2105 }); 2106 this._showBackdrop(function() { 2107 return _this._showElement(relatedTarget); 2108 }); 2109 }; 2110 _proto.hide = function hide(event) { 2111 var _this2 = this; 2112 if (event) { 2113 event.preventDefault(); 2114 } 2115 if (this._isTransitioning || !this._isShown) { 2116 return; 2117 } 2118 var hideEvent = $.Event(Event.HIDE); 2119 $(this._element).trigger(hideEvent); 2120 if (!this._isShown || hideEvent.isDefaultPrevented()) { 2121 return; 2122 } 2123 this._isShown = false; 2124 var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); 2125 if (transition) { 2126 this._isTransitioning = true; 2127 } 2128 this._setEscapeEvent(); 2129 this._setResizeEvent(); 2130 $(document).off(Event.FOCUSIN); 2131 $(this._element).removeClass(ClassName.SHOW); 2132 $(this._element).off(Event.CLICK_DISMISS); 2133 $(this._dialog).off(Event.MOUSEDOWN_DISMISS); 2134 if (transition) { 2135 $(this._element).one(Util.TRANSITION_END, function(event) { 2136 return _this2._hideModal(event); 2137 }).emulateTransitionEnd(TRANSITION_DURATION); 2138 } else { 2139 this._hideModal(); 2140 } 2141 }; 2142 _proto.dispose = function dispose() { 2143 $.removeData(this._element, DATA_KEY); 2144 $(window, document, this._element, this._backdrop).off(EVENT_KEY); 2145 this._config = null; 2146 this._element = null; 2147 this._dialog = null; 2148 this._backdrop = null; 2149 this._isShown = null; 2150 this._isBodyOverflowing = null; 2151 this._ignoreBackdropClick = null; 2152 this._scrollbarWidth = null; 2153 }; 2154 _proto.handleUpdate = function handleUpdate() { 2155 this._adjustDialog(); 2156 }; 2157 _proto._getConfig = function _getConfig(config) { 2158 config = _extends({}, Default, config); 2159 Util.typeCheckConfig(NAME, config, DefaultType); 2160 return config; 2161 }; 2162 _proto._showElement = function _showElement(relatedTarget) { 2163 var _this3 = this; 2164 var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); 2165 if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { 2166 document.body.appendChild(this._element); 2167 } 2168 this._element.style.display = "block"; 2169 this._element.removeAttribute("aria-hidden"); 2170 this._element.scrollTop = 0; 2171 if (transition) { 2172 Util.reflow(this._element); 2173 } 2174 $(this._element).addClass(ClassName.SHOW); 2175 if (this._config.focus) { 2176 this._enforceFocus(); 2177 } 2178 var shownEvent = $.Event(Event.SHOWN, { 2179 relatedTarget: relatedTarget 2180 }); 2181 var transitionComplete = function transitionComplete() { 2182 if (_this3._config.focus) { 2183 _this3._element.focus(); 2184 } 2185 _this3._isTransitioning = false;
2186 $(_this3._element).trigger(shownEvent); 2187 }; 2188 if (transition) { 2189 $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); 2190 } else { 2191 transitionComplete(); 2192 } 2193 }; 2194 _proto._enforceFocus = function _enforceFocus() { 2195 var _this4 = this; 2196 $(document).off(Event.FOCUSIN).on(Event.FOCUSIN, function(event) { 2197 if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) { 2198 _this4._element.focus(); 2199 } 2200 }); 2201 }; 2202 _proto._setEscapeEvent = function _setEscapeEvent() { 2203 var _this5 = this; 2204 if (this._isShown && this._config.keyboard) { 2205 $(this._element).on(Event.KEYDOWN_DISMISS, function(event) { 2206 if (event.which === ESCAPE_KEYCODE) { 2207 event.preventDefault(); 2208 _this5.hide(); 2209 } 2210 }); 2211 } else if (!this._isShown) { 2212 $(this._element).off(Event.KEYDOWN_DISMISS); 2213 } 2214 }; 2215 _proto._setResizeEvent = function _setResizeEvent() { 2216 var _this6 = this; 2217 if (this._isShown) { 2218 $(window).on(Event.RESIZE, function(event) { 2219 return _this6.handleUpdate(event); 2220 }); 2221 } else { 2222 $(window).off(Event.RESIZE); 2223 } 2224 }; 2225 _proto._hideModal = function _hideModal() { 2226 var _this7 = this; 2227 this._element.style.display = "none"; 2228 this._element.setAttribute("aria-hidden", true); 2229 this._isTransitioning = false; 2230 this._showBackdrop(function() { 2231 $(document.body).removeClass(ClassName.OPEN); 2232 _this7._resetAdjustments(); 2233 _this7._resetScrollbar(); 2234 $(_this7._element).trigger(Event.HIDDEN); 2235 }); 2236 }; 2237 _proto._removeBackdrop = function _removeBackdrop() { 2238 if (this._backdrop) { 2239 $(this._backdrop).remove(); 2240 this._backdrop = null; 2241 } 2242 }; 2243 _proto._showBackdrop = function _showBackdrop(callback) { 2244 var _this8 = this; 2245 var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ""; 2246 if (this._isShown && this._config.backdrop) { 2247 var doAnimate = Util.supportsTransitionEnd() && animate; 2248 this._backdrop = document.createElement("div"); 2249 this._backdrop.className = ClassName.BACKDROP; 2250 if (animate) { 2251 $(this._backdrop).addClass(animate); 2252 } 2253 $(this._backdrop).appendTo(document.body); 2254 $(this._element).on(Event.CLICK_DISMISS, function(event) { 2255 if (_this8._ignoreBackdropClick) { 2256 _this8._ignoreBackdropClick = false; 2257 return; 2258 } 2259 if (event.target !== event.currentTarget) { 2260 return; 2261 } 2262 if (_this8._config.backdrop === "static") { 2263 _this8._element.focus(); 2264 } else { 2265 _this8.hide(); 2266 } 2267 }); 2268 if (doAnimate) { 2269 Util.reflow(this._backdrop); 2270 } 2271 $(this._backdrop).addClass(ClassName.SHOW); 2272 if (!callback) { 2273 return; 2274 } 2275 if (!doAnimate) { 2276 callback(); 2277 return; 2278 } 2279 $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); 2280 } else if (!this._isShown && this._backdrop) { 2281 $(this._backdrop).removeClass(ClassName.SHOW); 2282 var callbackRemove = function callbackRemove() { 2283 _this8._removeBackdrop(); 2284 if (callback) { 2285 callback(); 2286 } 2287 }; 2288 if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { 2289 $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); 2290 } else { 2291 callbackRemove(); 2292 } 2293 } else if (callback) { 2294 callback(); 2295 } 2296 };
2297 _proto._adjustDialog = function _adjustDialog() { 2298 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 2299 if (!this._isBodyOverflowing && isModalOverflowing) { 2300 this._element.style.paddingLeft = this._scrollbarWidth + "px"; 2301 } 2302 if (this._isBodyOverflowing && !isModalOverflowing) { 2303 this._element.style.paddingRight = this._scrollbarWidth + "px"; 2304 } 2305 }; 2306 _proto._resetAdjustments = function _resetAdjustments() { 2307 this._element.style.paddingLeft = ""; 2308 this._element.style.paddingRight = ""; 2309 }; 2310 _proto._checkScrollbar = function _checkScrollbar() { 2311 var rect = document.body.getBoundingClientRect(); 2312 this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; 2313 this._scrollbarWidth = this._getScrollbarWidth(); 2314 }; 2315 _proto._setScrollbar = function _setScrollbar() { 2316 var _this9 = this; 2317 if (this._isBodyOverflowing) { 2318 $(Selector.FIXED_CONTENT).each(function(index, element) { 2319 var actualPadding = $(element)[0].style.paddingRight; 2320 var calculatedPadding = $(element).css("padding-right"); 2321 $(element).data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); 2322 }); 2323 $(Selector.STICKY_CONTENT).each(function(index, element) { 2324 var actualMargin = $(element)[0].style.marginRight; 2325 var calculatedMargin = $(element).css("margin-right"); 2326 $(element).data("margin-right", actualMargin).css("margin-right", parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); 2327 }); 2328 $(Selector.NAVBAR_TOGGLER).each(function(index, element) { 2329 var actualMargin = $(element)[0].style.marginRight; 2330 var calculatedMargin = $(element).css("margin-right"); 2331 $(element).data("margin-right", actualMargin).css("margin-right", parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); 2332 }); 2333 var actualPadding = document.body.style.paddingRight; 2334 var calculatedPadding = $("body").css("padding-right"); 2335 $("body").data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); 2336 } 2337 }; 2338 _proto._resetScrollbar = function _resetScrollbar() { 2339 $(Selector.FIXED_CONTENT).each(function(index, element) { 2340 var padding = $(element).data("padding-right"); 2341 if (typeof padding !== "undefined") { 2342 $(element).css("padding-right", padding).removeData("padding-right"); 2343 } 2344 }); 2345 $(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function(index, element) { 2346 var margin = $(element).data("margin-right"); 2347 if (typeof margin !== "undefined") { 2348 $(element).css("margin-right", margin).removeData("margin-right"); 2349 } 2350 }); 2351 var padding = $("body").data("padding-right"); 2352 if (typeof padding !== "undefined") { 2353 $("body").css("padding-right", padding).removeData("padding-right"); 2354 } 2355 }; 2356 _proto._getScrollbarWidth = function _getScrollbarWidth() { 2357 var scrollDiv = document.createElement("div"); 2358 scrollDiv.className = ClassName.SCROLLBAR_MEASURER; 2359 document.body.appendChild(scrollDiv); 2360 var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; 2361 document.body.removeChild(scrollDiv); 2362 return scrollbarWidth; 2363 }; 2364 Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { 2365 return this.each(function() { 2366 var data = $(this).data(DATA_KEY); 2367 var _config = _extends({}, Modal.Default, $(this).data(), typeof config === "object" && config); 2368 if (!data) { 2369 data = new Modal(this, _config); 2370 $(this).data(DATA_KEY, data); 2371 } 2372 if (typeof config === "string") { 2373 if (typeof data[config] === "undefined") {
2374 throw new TypeError('No method named "' + config + '"'); 2375 } 2376 data[config](relatedTarget); 2377 } else if (_config.show) { 2378 data.show(relatedTarget); 2379 } 2380 }); 2381 }; 2382 _createClass(Modal, null, [ { 2383 key: "VERSION", 2384 get: function get() { 2385 return VERSION; 2386 } 2387 }, { 2388 key: "Default", 2389 get: function get() { 2390 return Default; 2391 } 2392 } ]); 2393 return Modal; 2394 }(); 2395 $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) { 2396 var _this10 = this; 2397 var target; 2398 var selector = Util.getSelectorFromElement(this); 2399 if (selector) { 2400 target = $(selector)[0]; 2401 } 2402 var config = $(target).data(DATA_KEY) ? "toggle" : _extends({}, $(target).data(), $(this).data()); 2403 if (this.tagName === "A" || this.tagName === "AREA") { 2404 event.preventDefault(); 2405 } 2406 var $target = $(target).one(Event.SHOW, function(showEvent) { 2407 if (showEvent.isDefaultPrevented()) { 2408 return; 2409 } 2410 $target.one(Event.HIDDEN, function() { 2411 if ($(_this10).is(":visible")) { 2412 _this10.focus(); 2413 } 2414 }); 2415 }); 2416 Modal._jQueryInterface.call($(target), config, this); 2417 }); 2418 $.fn[NAME] = Modal._jQueryInterface; 2419 $.fn[NAME].Constructor = Modal; 2420 $.fn[NAME].noConflict = function() { 2421 $.fn[NAME] = JQUERY_NO_CONFLICT; 2422 return Modal._jQueryInterface; 2423 }; 2424 return Modal; 2425}($); 2426 2427function _extends() { 2428 _extends = Object.assign || function(target) { 2429 for (var i = 1; i < arguments.length; i++) { 2430 var source = arguments[i]; 2431 for (var key in source) { 2432 if (Object.prototype.hasOwnProperty.call(source, key)) { 2433 target[key] = source[key]; 2434 } 2435 } 2436 } 2437 return target; 2438 }; 2439 return _extends.apply(this, arguments); 2440} 2441 2442function _defineProperties(target, props) { 2443 for (var i = 0; i < props.length; i++) { 2444 var descriptor = props[i]; 2445 descriptor.enumerable = descriptor.enumerable || false; 2446 descriptor.configurable = true; 2447 if ("value" in descriptor) descriptor.writable = true; 2448 Object.defineProperty(target, descriptor.key, descriptor); 2449 } 2450} 2451 2452function _createClass(Constructor, protoProps, staticProps) { 2453 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 2454 if (staticProps) _defineProperties(Constructor, staticProps); 2455 return Constructor; 2456} 2457 2458var Dropdown = function($) { 2459 var NAME = "dropdown"; 2460 var VERSION = "4.0.0"; 2461 var DATA_KEY = "bs.dropdown"; 2462 var EVENT_KEY = "." + DATA_KEY; 2463 var DATA_API_KEY = ".data-api"; 2464 var JQUERY_NO_CONFLICT = $.fn[NAME]; 2465 var ESCAPE_KEYCODE = 27; 2466 var SPACE_KEYCODE = 32; 2467 var TAB_KEYCODE = 9; 2468 var ARROW_UP_KEYCODE = 38; 2469 var ARROW_DOWN_KEYCODE = 40; 2470 var RIGHT_MOUSE_BUTTON_WHICH = 3; 2471 var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); 2472 var Event = { 2473 HIDE: "hide" + EVENT_KEY, 2474 HIDDEN: "hidden" + EVENT_KEY, 2475 SHOW: "show" + EVENT_KEY, 2476 SHOWN: "shown" + EVENT_KEY, 2477 CLICK: "click" + EVENT_KEY, 2478 CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, 2479 KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, 2480 KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY 2481 }; 2482 var ClassName = { 2483 DISABLED: "disabled", 2484 SHOW: "show", 2485 DROPUP: "dropup", 2486 DROPRIGHT: "dropright", 2487 DROPLEFT: "dropleft", 2488 MENURIGHT: "dropdown-menu-right", 2489 MENULEFT: "dropdown-menu-left", 2490 POSITION_STATIC: "position-static" 2491 }; 2492 var Selector = { 2493 DATA_TOGGLE: '[data-toggle="dropdown"]', 2494 FORM_CHILD: ".dropdown form", 2495 MENU: ".dropdown-menu", 2496 NAVBAR_NAV: ".navbar-nav", 2497 VISIBLE_ITEMS: ".dropdown-menu .dropdown-item:not(.disabled)" 2498 }; 2499 var AttachmentMap = { 2500 TOP: "top-start", 2501 TOPEND: "top-end", 2502 BOTTOM: "bottom-start", 2503 BOTTOMEND: "bottom-end", 2504 RIGHT: "right-start", 2505 RIGHTEND: "right-end", 2506 LEFT: "left-start", 2507 LEFTEND: "left-end" 2508 }; 2509 var Default = { 2510 offset: 0, 2511 flip: true, 2512 boundary: "scrollParent" 2513 }; 2514 var DefaultType = { 2515 offset: "(number|string|function)", 2516 flip: "boolean", 2517 boundary: "(string|element)" 2518 }; 2519 var Dropdown = function() { 2520 function Dropdown(element, config) { 2521 this._element = element; 2522 this._popper = null; 2523 this._config = this._getConfig(config); 2524 this._menu = this._getMenuElement(); 2525 this._inNavbar = this._detectNavbar(); 2526 this._addEventListeners(); 2527 } 2528 var _proto = Dropdown.prototype;
2529 _proto.toggle = function toggle() { 2530 if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) { 2531 return; 2532 } 2533 var parent = Dropdown._getParentFromElement(this._element); 2534 var isActive = $(this._menu).hasClass(ClassName.SHOW); 2535 Dropdown._clearMenus(); 2536 if (isActive) { 2537 return; 2538 } 2539 var relatedTarget = { 2540 relatedTarget: this._element 2541 }; 2542 var showEvent = $.Event(Event.SHOW, relatedTarget); 2543 $(parent).trigger(showEvent); 2544 if (showEvent.isDefaultPrevented()) { 2545 return; 2546 } 2547 if (!this._inNavbar) { 2548 if (typeof Popper === "undefined") { 2549 throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)"); 2550 } 2551 var element = this._element; 2552 if ($(parent).hasClass(ClassName.DROPUP)) { 2553 if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) { 2554 element = parent; 2555 } 2556 } 2557 if (this._config.boundary !== "scrollParent") { 2558 $(parent).addClass(ClassName.POSITION_STATIC); 2559 } 2560 this._popper = new Popper(element, this._menu, this._getPopperConfig()); 2561 } 2562 if ("ontouchstart" in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) { 2563 $("body").children().on("mouseover", null, $.noop); 2564 } 2565 this._element.focus(); 2566 this._element.setAttribute("aria-expanded", true); 2567 $(this._menu).toggleClass(ClassName.SHOW); 2568 $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget)); 2569 }; 2570 _proto.dispose = function dispose() { 2571 $.removeData(this._element, DATA_KEY); 2572 $(this._element).off(EVENT_KEY); 2573 this._element = null; 2574 this._menu = null; 2575 if (this._popper !== null) { 2576 this._popper.destroy(); 2577 this._popper = null; 2578 } 2579 }; 2580 _proto.update = function update() { 2581 this._inNavbar = this._detectNavbar(); 2582 if (this._popper !== null) { 2583 this._popper.scheduleUpdate(); 2584 } 2585 }; 2586 _proto._addEventListeners = function _addEventListeners() { 2587 var _this = this; 2588 $(this._element).on(Event.CLICK, function(event) { 2589 event.preventDefault(); 2590 event.stopPropagation(); 2591 _this.toggle(); 2592 }); 2593 }; 2594 _proto._getConfig = function _getConfig(config) { 2595 config = _extends({}, this.constructor.Default, $(this._element).data(), config); 2596 Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); 2597 return config; 2598 }; 2599 _proto._getMenuElement = function _getMenuElement() { 2600 if (!this._menu) { 2601 var parent = Dropdown._getParentFromElement(this._element); 2602 this._menu = $(parent).find(Selector.MENU)[0]; 2603 } 2604 return this._menu; 2605 }; 2606 _proto._getPlacement = function _getPlacement() { 2607 var $parentDropdown = $(this._element).parent(); 2608 var placement = AttachmentMap.BOTTOM; 2609 if ($parentDropdown.hasClass(ClassName.DROPUP)) { 2610 placement = AttachmentMap.TOP; 2611 if ($(this._menu).hasClass(ClassName.MENURIGHT)) { 2612 placement = AttachmentMap.TOPEND; 2613 } 2614 } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { 2615 placement = AttachmentMap.RIGHT; 2616 } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { 2617 placement = AttachmentMap.LEFT; 2618 } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) { 2619 placement = AttachmentMap.BOTTOMEND; 2620 } 2621 return placement; 2622 }; 2623 _proto._detectNavbar = function _detectNavbar() {
2624 return $(this._element).closest(".navbar").length > 0; 2625 }; 2626 _proto._getPopperConfig = function _getPopperConfig() { 2627 var _this2 = this; 2628 var offsetConf = {}; 2629 if (typeof this._config.offset === "function") { 2630 offsetConf.fn = function(data) { 2631 data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {}); 2632 return data; 2633 }; 2634 } else { 2635 offsetConf.offset = this._config.offset; 2636 } 2637 var popperConfig = { 2638 placement: this._getPlacement(), 2639 modifiers: { 2640 offset: offsetConf, 2641 flip: { 2642 enabled: this._config.flip 2643 }, 2644 preventOverflow: { 2645 boundariesElement: this._config.boundary 2646 } 2647 } 2648 }; 2649 return popperConfig; 2650 }; 2651 Dropdown._jQueryInterface = function _jQueryInterface(config) { 2652 return this.each(function() { 2653 var data = $(this).data(DATA_KEY); 2654 var _config = typeof config === "object" ? config : null; 2655 if (!data) { 2656 data = new Dropdown(this, _config); 2657 $(this).data(DATA_KEY, data); 2658 } 2659 if (typeof config === "string") { 2660 if (typeof data[config] === "undefined") { 2661 throw new TypeError('No method named "' + config + '"'); 2662 } 2663 data[config](); 2664 } 2665 }); 2666 }; 2667 Dropdown._clearMenus = function _clearMenus(event) { 2668 if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === "keyup" && event.which !== TAB_KEYCODE)) { 2669 return; 2670 } 2671 var toggles = $.makeArray($(Selector.DATA_TOGGLE)); 2672 for (var i = 0; i < toggles.length; i++) { 2673 var parent = Dropdown._getParentFromElement(toggles[i]); 2674 var context = $(toggles[i]).data(DATA_KEY); 2675 var relatedTarget = { 2676 relatedTarget: toggles[i] 2677 }; 2678 if (!context) { 2679 continue; 2680 } 2681 var dropdownMenu = context._menu; 2682 if (!$(parent).hasClass(ClassName.SHOW)) { 2683 continue; 2684 } 2685 if (event && (event.type === "click" && /input|textarea/i.test(event.target.tagName) || event.type === "keyup" && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) { 2686 continue; 2687 } 2688 var hideEvent = $.Event(Event.HIDE, relatedTarget); 2689 $(parent).trigger(hideEvent); 2690 if (hideEvent.isDefaultPrevented()) { 2691 continue; 2692 } 2693 if ("ontouchstart" in document.documentElement) { 2694 $("body").children().off("mouseover", null, $.noop); 2695 } 2696 toggles[i].setAttribute("aria-expanded", "false"); 2697 $(dropdownMenu).removeClass(ClassName.SHOW); 2698 $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget)); 2699 } 2700 }; 2701 Dropdown._getParentFromElement = function _getParentFromElement(element) { 2702 var parent; 2703 var selector = Util.getSelectorFromElement(element); 2704 if (selector) { 2705 parent = $(selector)[0]; 2706 } 2707 return parent || element.parentNode; 2708 }; 2709 Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { 2710 if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { 2711 return; 2712 } 2713 event.preventDefault(); 2714 event.stopPropagation(); 2715 if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { 2716 return; 2717 } 2718 var parent = Dropdown._getParentFromElement(this); 2719 var isActive = $(parent).hasClass(ClassName.SHOW); 2720 if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { 2721 if (event.which === ESCAPE_KEYCODE) { 2722 var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; 2723 $(toggle).trigger("focus"); 2724 } 2725 $(this).trigger("click"); 2726 return; 2727 } 2728 var items = $(parent).find(Selector.VISIBLE_ITEMS).get(); 2729 if (items.length === 0) { 2730 return; 2731 } 2732 var index = items.indexOf(event.target); 2733 if (event.which === ARROW_UP_KEYCODE && index > 0) { 2734 index--; 2735 } 2736 if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { 2737 index++; 2738 } 2739 if (index < 0) { 2740 index = 0; 2741 } 2742 items[index].focus(); 2743 }; 2744 _createClass(Dropdown, null, [ { 2745 key: "VERSION", 2746 get: function get() { 2747 return VERSION; 2748 } 2749 }, { 2750 key: "Default", 2751 get: function get() { 2752 return Default; 2753 } 2754 }, { 2755 key: "DefaultType", 2756 get: function get() { 2757 return DefaultType; 2758 } 2759 } ]); 2760 return Dropdown; 2761 }(); 2762 $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) { 2763 event.preventDefault(); 2764 event.stopPropagation(); 2765 Dropdown._jQueryInterface.call($(this), "toggle"); 2766 }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function(e) { 2767 e.stopPropagation(); 2768 }); 2769 $.fn[NAME] = Dropdown._jQueryInterface; 2770 $.fn[NAME].Constructor = Dropdown; 2771 $.fn[NAME].noConflict = function() { 2772 $.fn[NAME] = JQUERY_NO_CONFLICT; 2773 return Dropdown._jQueryInterface; 2774 }; 2775 return Dropdown; 2776}($, Popper);
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.