1;(function(factory) { 2 'use strict'; 3 if (typeof define === 'function' && define.amd) { 4 define(['jquery'], factory); 5 } else if (typeof exports !== 'undefined') { 6 module.exports = factory(require('jquery')); 7 } else { 8 factory(jQuery); 9 } 10 11}(function($) { 12 'use strict'; 13 var Slick = window.Slick || {}; 14 15 Slick = (function() { 16 17 var instanceUid = 0; 18 19 function Slick(element, settings) { 20 21 var _ = this, dataSettings; 22 23 _.defaults = { 24 accessibility: true, 25 adaptiveHeight: false, 26 appendArrows: $(element), 27 appendDots: $(element), 28 arrows: true, 29 asNavFor: null, 30 prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>', 31 nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>', 32 autoplay: false, 33 autoplaySpeed: 3000, 34 centerMode: false, 35 centerPadding: '50px', 36 cssEase: 'ease', 37 customPaging: function(slider, i) { 38 return $('<button type="button" />').text(i + 1); 39 }, 40 dots: false, 41 dotsClass: 'slick-dots', 42 draggable: true, 43 easing: 'linear', 44 edgeFriction: 0.35, 45 fade: false, 46 focusOnSelect: false, 47 focusOnChange: false, 48 infinite: true, 49 initialSlide: 0, 50 lazyLoad: 'ondemand', 51 mobileFirst: false, 52 pauseOnHover: true, 53 pauseOnFocus: true, 54 pauseOnDotsHover: false, 55 respondTo: 'window', 56 responsive: null, 57 rows: 1, 58 rtl: false, 59 slide: '', 60 slidesPerRow: 1, 61 slidesToShow: 1, 62 slidesToScroll: 1, 63 speed: 500, 64 swipe: true, 65 swipeToSlide: false, 66 touchMove: true, 67 touchThreshold: 5, 68 useCSS: true, 69 useTransform: true, 70 variableWidth: false, 71 vertical: false, 72 verticalSwiping: false, 73 waitForAnimate: true, 74 zIndex: 1000 75 }; 76 77 _.initials = { 78 animating: false, 79 dragging: false, 80 autoPlayTimer: null, 81 currentDirection: 0, 82 currentLeft: null, 83 currentSlide: 0, 84 direction: 1, 85 $dots: null, 86 listWidth: null, 87 listHeight: null, 88 loadIndex: 0, 89 $nextArrow: null, 90 $prevArrow: null, 91 scrolling: false, 92 slideCount: null, 93 slideWidth: null, 94 $slideTrack: null, 95 $slides: null, 96 sliding: false, 97 slideOffset: 0, 98 swipeLeft: null, 99 swiping: false, 100 $list: null, 101 touchObject: {}, 102 transformsEnabled: false, 103 unslicked: false 104 }; 105 106 $.extend(_, _.initials); 107 108 _.activeBreakpoint = null; 109 _.animType = null; 110 _.animProp = null; 111 _.breakpoints = []; 112 _.breakpointSettings = []; 113 _.cssTransitions = false; 114 _.focussed = false; 115 _.interrupted = false; 116 _.hidden = 'hidden'; 117 _.paused = true; 118 _.positionProp = null; 119 _.respondTo = null; 120 _.rowCount = 1; 121 _.shouldClick = true; 122 _.$slider = $(element); 123 _.$slidesCache = null; 124 _.transformType = null; 125 _.transitionType = null; 126 _.visibilityChange = 'visibilitychange'; 127 _.windowWidth = 0; 128 _.windowTimer = null; 129 130 dataSettings = $(element).data('slick') || {}; 131
132 _.options = $.extend({}, _.defaults, settings, dataSettings); 133 134 _.currentSlide = _.options.initialSlide; 135 136 _.originalSettings = _.options; 137 138 if (typeof document.mozHidden !== 'undefined') { 139 _.hidden = 'mozHidden'; 140 _.visibilityChange = 'mozvisibilitychange'; 141 } else if (typeof document.webkitHidden !== 'undefined') { 142 _.hidden = 'webkitHidden'; 143 _.visibilityChange = 'webkitvisibilitychange'; 144 } 145 146 _.autoPlay = $.proxy(_.autoPlay, _); 147 _.autoPlayClear = $.proxy(_.autoPlayClear, _); 148 _.autoPlayIterator = $.proxy(_.autoPlayIterator, _); 149 _.changeSlide = $.proxy(_.changeSlide, _); 150 _.clickHandler = $.proxy(_.clickHandler, _); 151 _.selectHandler = $.proxy(_.selectHandler, _); 152 _.setPosition = $.proxy(_.setPosition, _); 153 _.swipeHandler = $.proxy(_.swipeHandler, _); 154 _.dragHandler = $.proxy(_.dragHandler, _); 155 _.keyHandler = $.proxy(_.keyHandler, _); 156 157 _.instanceUid = instanceUid++;
vendor: 15,120 bytes, lines 158-655
158 159 _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; 160 161 162 _.registerBreakpoints(); 163 _.init(true); 164 165 } 166 167 return Slick; 168 169 }()); 170 171 Slick.prototype.activateADA = function() { 172 var _ = this; 173 174 _.$slideTrack.find('.slick-active').attr({ 175 'aria-hidden': 'false' 176 }).find('a, input, button, select').attr({ 177 'tabindex': '0' 178 }); 179 180 }; 181 182 Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { 183 184 var _ = this; 185 186 if (typeof(index) === 'boolean') { 187 addBefore = index; 188 index = null; 189 } else if (index < 0 || (index >= _.slideCount)) { 190 return false; 191 } 192 193 _.unload(); 194 195 if (typeof(index) === 'number') { 196 if (index === 0 && _.$slides.length === 0) { 197 $(markup).appendTo(_.$slideTrack); 198 } else if (addBefore) { 199 $(markup).insertBefore(_.$slides.eq(index)); 200 } else { 201 $(markup).insertAfter(_.$slides.eq(index)); 202 } 203 } else { 204 if (addBefore === true) { 205 $(markup).prependTo(_.$slideTrack); 206 } else { 207 $(markup).appendTo(_.$slideTrack); 208 } 209 } 210 211 _.$slides = _.$slideTrack.children(this.options.slide); 212 213 _.$slideTrack.children(this.options.slide).detach(); 214 215 _.$slideTrack.append(_.$slides); 216 217 _.$slides.each(function(index, element) { 218 $(element).attr('data-slick-index', index); 219 }); 220 221 _.$slidesCache = _.$slides; 222 223 _.reinit(); 224 225 }; 226 227 Slick.prototype.animateHeight = function() { 228 var _ = this; 229 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 230 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 231 _.$list.animate({ 232 height: targetHeight 233 }, _.options.speed); 234 } 235 }; 236 237 Slick.prototype.animateSlide = function(targetLeft, callback) { 238 239 var animProps = {}, 240 _ = this; 241 242 _.animateHeight(); 243 244 if (_.options.rtl === true && _.options.vertical === false) { 245 targetLeft = -targetLeft; 246 } 247 if (_.transformsEnabled === false) { 248 if (_.options.vertical === false) { 249 _.$slideTrack.animate({ 250 left: targetLeft 251 }, _.options.speed, _.options.easing, callback); 252 } else { 253 _.$slideTrack.animate({ 254 top: targetLeft 255 }, _.options.speed, _.options.easing, callback); 256 } 257 258 } else { 259 260 if (_.cssTransitions === false) { 261 if (_.options.rtl === true) { 262 _.currentLeft = -(_.currentLeft); 263 } 264 $({ 265 animStart: _.currentLeft 266 }).animate({ 267 animStart: targetLeft 268 }, { 269 duration: _.options.speed, 270 easing: _.options.easing, 271 step: function(now) { 272 now = Math.ceil(now); 273 if (_.options.vertical === false) { 274 animProps[_.animType] = 'translate(' + 275 now + 'px, 0px)'; 276 _.$slideTrack.css(animProps); 277 } else { 278 animProps[_.animType] = 'translate(0px,' + 279 now + 'px)'; 280 _.$slideTrack.css(animProps); 281 } 282 }, 283 complete: function() { 284 if (callback) { 285 callback.call(); 286 } 287 } 288 }); 289 290 } else { 291 292 _.applyTransition(); 293 targetLeft = Math.ceil(targetLeft); 294 295 if (_.options.vertical === false) { 296 animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)'; 297 } else { 298 animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)'; 299 } 300 _.$slideTrack.css(animProps); 301 302 if (callback) { 303 setTimeout(function() { 304 305 _.disableTransition(); 306 307 callback.call(); 308 }, _.options.speed); 309 } 310 311 } 312 313 } 314 315 }; 316 317 Slick.prototype.getNavTarget = function() { 318 319 var _ = this, 320 asNavFor = _.options.asNavFor; 321 322 if ( asNavFor && asNavFor !== null ) { 323 asNavFor = $(asNavFor).not(_.$slider); 324 } 325 326 return asNavFor; 327 328 }; 329 330 Slick.prototype.asNavFor = function(index) { 331 332 var _ = this, 333 asNavFor = _.getNavTarget(); 334 335 if ( asNavFor !== null && typeof asNavFor === 'object' ) { 336 asNavFor.each(function() { 337 var target = $(this).slick('getSlick'); 338 if(!target.unslicked) { 339 target.slideHandler(index, true); 340 } 341 }); 342 } 343 344 }; 345 346 Slick.prototype.applyTransition = function(slide) { 347 348 var _ = this, 349 transition = {}; 350 351 if (_.options.fade === false) { 352 transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase; 353 } else { 354 transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase; 355 } 356 357 if (_.options.fade === false) { 358 _.$slideTrack.css(transition); 359 } else { 360 _.$slides.eq(slide).css(transition); 361 } 362 363 }; 364 365 Slick.prototype.autoPlay = function() { 366 367 var _ = this; 368 369 _.autoPlayClear(); 370 371 if ( _.slideCount > _.options.slidesToShow ) { 372 _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed ); 373 } 374 375 }; 376 377 Slick.prototype.autoPlayClear = function() { 378 379 var _ = this; 380 381 if (_.autoPlayTimer) { 382 clearInterval(_.autoPlayTimer); 383 } 384 385 }; 386 387 Slick.prototype.autoPlayIterator = function() { 388 389 var _ = this, 390 slideTo = _.currentSlide + _.options.slidesToScroll; 391 392 if ( !_.paused && !_.interrupted && !_.focussed ) { 393 394 if ( _.options.infinite === false ) { 395 396 if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) { 397 _.direction = 0; 398 } 399 400 else if ( _.direction === 0 ) { 401 402 slideTo = _.currentSlide - _.options.slidesToScroll; 403 404 if ( _.currentSlide - 1 === 0 ) { 405 _.direction = 1; 406 } 407 408 } 409 410 } 411 412 _.slideHandler( slideTo ); 413 414 } 415 416 }; 417 418 Slick.prototype.buildArrows = function() { 419 420 var _ = this; 421 422 if (_.options.arrows === true ) { 423 424 _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow'); 425 _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow'); 426 427 if( _.slideCount > _.options.slidesToShow ) { 428 429 _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 430 _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 431 432 if (_.htmlExpr.test(_.options.prevArrow)) { 433 _.$prevArrow.prependTo(_.options.appendArrows); 434 } 435 436 if (_.htmlExpr.test(_.options.nextArrow)) { 437 _.$nextArrow.appendTo(_.options.appendArrows); 438 } 439 440 if (_.options.infinite !== true) { 441 _.$prevArrow 442 .addClass('slick-disabled') 443 .attr('aria-disabled', 'true'); 444 } 445 446 } else { 447 448 _.$prevArrow.add( _.$nextArrow ) 449 450 .addClass('slick-hidden') 451 .attr({ 452 'aria-disabled': 'true', 453 'tabindex': '-1' 454 }); 455 456 } 457 458 } 459 460 }; 461 462 Slick.prototype.buildDots = function() { 463 464 var _ = this, 465 i, dot; 466 467 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 468 469 _.$slider.addClass('slick-dotted'); 470 471 dot = $('<ul />').addClass(_.options.dotsClass); 472 473 for (i = 0; i <= _.getDotCount(); i += 1) { 474 dot.append($('<li />').append(_.options.customPaging.call(this, _, i))); 475 } 476 477 _.$dots = dot.appendTo(_.options.appendDots); 478 479 _.$dots.find('li').first().addClass('slick-active'); 480 481 } 482 483 }; 484 485 Slick.prototype.buildOut = function() { 486 487 var _ = this; 488 489 _.$slides = 490 _.$slider 491 .children( _.options.slide + ':not(.slick-cloned)') 492 .addClass('slick-slide'); 493 494 _.slideCount = _.$slides.length; 495 496 _.$slides.each(function(index, element) { 497 $(element) 498 .attr('data-slick-index', index) 499 .data('originalStyling', $(element).attr('style') || ''); 500 }); 501 502 _.$slider.addClass('slick-slider'); 503 504 _.$slideTrack = (_.slideCount === 0) ? 505 $('<div class="slick-track"/>').appendTo(_.$slider) : 506 _.$slides.wrapAll('<div class="slick-track"/>').parent(); 507 508 _.$list = _.$slideTrack.wrap( 509 '<div class="slick-list"/>').parent(); 510 _.$slideTrack.css('opacity', 0); 511 512 if (_.options.centerMode === true || _.options.swipeToSlide === true) { 513 _.options.slidesToScroll = 1; 514 } 515 516 $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading'); 517 518 _.setupInfinite(); 519 520 _.buildArrows(); 521 522 _.buildDots(); 523 524 _.updateDots(); 525 526 527 _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 528 529 if (_.options.draggable === true) { 530 _.$list.addClass('draggable'); 531 } 532 533 }; 534 535 Slick.prototype.buildRows = function() { 536 537 var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection; 538 539 newSlides = document.createDocumentFragment(); 540 originalSlides = _.$slider.children(); 541 542 if(_.options.rows > 0) { 543 544 slidesPerSection = _.options.slidesPerRow * _.options.rows; 545 numOfSlides = Math.ceil( 546 originalSlides.length / slidesPerSection 547 ); 548 549 for(a = 0; a < numOfSlides; a++){ 550 var slide = document.createElement('div'); 551 for(b = 0; b < _.options.rows; b++) { 552 var row = document.createElement('div'); 553 for(c = 0; c < _.options.slidesPerRow; c++) { 554 var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c)); 555 if (originalSlides.get(target)) { 556 row.appendChild(originalSlides.get(target)); 557 } 558 } 559 slide.appendChild(row); 560 } 561 newSlides.appendChild(slide); 562 } 563 564 _.$slider.empty().append(newSlides); 565 _.$slider.children().children().children() 566 .css({ 567 'width':(100 / _.options.slidesPerRow) + '%', 568 'display': 'inline-block' 569 }); 570 571 } 572 573 }; 574 575 Slick.prototype.checkResponsive = function(initial, forceUpdate) { 576 577 var _ = this, 578 breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; 579 var sliderWidth = _.$slider.width(); 580 var windowWidth = window.innerWidth || $(window).width(); 581 582 if (_.respondTo === 'window') { 583 respondToWidth = windowWidth; 584 } else if (_.respondTo === 'slider') { 585 respondToWidth = sliderWidth; 586 } else if (_.respondTo === 'min') { 587 respondToWidth = Math.min(windowWidth, sliderWidth); 588 } 589 590 if ( _.options.responsive && 591 _.options.responsive.length && 592 _.options.responsive !== null) { 593 594 targetBreakpoint = null; 595 596 for (breakpoint in _.breakpoints) { 597 if (_.breakpoints.hasOwnProperty(breakpoint)) { 598 if (_.originalSettings.mobileFirst === false) { 599 if (respondToWidth < _.breakpoints[breakpoint]) { 600 targetBreakpoint = _.breakpoints[breakpoint]; 601 } 602 } else { 603 if (respondToWidth > _.breakpoints[breakpoint]) { 604 targetBreakpoint = _.breakpoints[breakpoint]; 605 } 606 } 607 } 608 } 609 610 if (targetBreakpoint !== null) { 611 if (_.activeBreakpoint !== null) { 612 if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) { 613 _.activeBreakpoint = 614 targetBreakpoint; 615 if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 616 _.unslick(targetBreakpoint); 617 } else { 618 _.options = $.extend({}, _.originalSettings, 619 _.breakpointSettings[ 620 targetBreakpoint]); 621 if (initial === true) { 622 _.currentSlide = _.options.initialSlide; 623 } 624 _.refresh(initial); 625 } 626 triggerBreakpoint = targetBreakpoint; 627 } 628 } else { 629 _.activeBreakpoint = targetBreakpoint; 630 if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 631 _.unslick(targetBreakpoint); 632 } else { 633 _.options = $.extend({}, _.originalSettings, 634 _.breakpointSettings[ 635 targetBreakpoint]); 636 if (initial === true) { 637 _.currentSlide = _.options.initialSlide; 638 } 639 _.refresh(initial); 640 } 641 triggerBreakpoint = targetBreakpoint; 642 } 643 } else { 644 if (_.activeBreakpoint !== null) { 645 _.activeBreakpoint = null; 646 _.options = _.originalSettings; 647 if (initial === true) { 648 _.currentSlide = _.options.initialSlide; 649 } 650 _.refresh(initial); 651 triggerBreakpoint = targetBreakpoint; 652 } 653 } 654 655
655if( !initial && triggerBreakpoint !== false ) { 656 _.$slider.trigger('breakpoint', [_, triggerBreakpoint]); 657 } 658 } 659 660 }; 661 662 Slick.prototype.changeSlide = function(event, dontAnimate) { 663 664 var _ = this, 665 $target = $(event.currentTarget), 666 indexOffset, slideOffset, unevenOffset; 667 668 if($target.is('a')) { 669 event.preventDefault(); 670 }
vendor: 10,980 bytes, lines 671-1069
671 672 if(!$target.is('li')) { 673 $target = $target.closest('li'); 674 } 675 676 unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0); 677 indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; 678 679 switch (event.data.message) { 680 681 case 'previous': 682 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; 683 if (_.slideCount > _.options.slidesToShow) { 684 _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); 685 } 686 break; 687 688 case 'next': 689 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; 690 if (_.slideCount > _.options.slidesToShow) { 691 _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); 692 } 693 break; 694 695 case 'index': 696 var index = event.data.index === 0 ? 0 : 697 event.data.index || $target.index() * _.options.slidesToScroll; 698 699 _.slideHandler(_.checkNavigable(index), false, dontAnimate); 700 $target.children().trigger('focus'); 701 break; 702 703 default: 704 return; 705 } 706 707 }; 708 709 Slick.prototype.checkNavigable = function(index) { 710 711 var _ = this, 712 navigables, prevNavigable; 713 714 navigables = _.getNavigableIndexes(); 715 prevNavigable = 0; 716 if (index > navigables[navigables.length - 1]) { 717 index = navigables[navigables.length - 1]; 718 } else { 719 for (var n in navigables) { 720 if (index < navigables[n]) { 721 index = prevNavigable; 722 break; 723 } 724 prevNavigable = navigables[n]; 725 } 726 } 727 728 return index; 729 }; 730 731 Slick.prototype.cleanUpEvents = function() { 732 733 var _ = this; 734 735 if (_.options.dots && _.$dots !== null) { 736 737 $('li', _.$dots) 738 .off('click.slick', _.changeSlide) 739 .off('mouseenter.slick', $.proxy(_.interrupt, _, true)) 740 .off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 741 742 if (_.options.accessibility === true) { 743 _.$dots.off('keydown.slick', _.keyHandler); 744 } 745 } 746 747 _.$slider.off('focus.slick blur.slick'); 748 749 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 750 _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide); 751 _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide); 752 753 if (_.options.accessibility === true) { 754 _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler); 755 _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler); 756 } 757 } 758 759 _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler); 760 _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler); 761 _.$list.off('touchend.slick mouseup.slick', _.swipeHandler); 762 _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler); 763 764 _.$list.off('click.slick', _.clickHandler); 765 766 $(document).off(_.visibilityChange, _.visibility); 767 768 _.cleanUpSlideEvents(); 769 770 if (_.options.accessibility === true) { 771 _.$list.off('keydown.slick', _.keyHandler); 772 } 773 774 if (_.options.focusOnSelect === true) { 775 $(_.$slideTrack).children().off('click.slick', _.selectHandler); 776 } 777 778 $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange); 779 780 $(window).off('resize.slick.slick-' + _.instanceUid, _.resize); 781 782 $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault); 783 784 $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition); 785 786 }; 787 788 Slick.prototype.cleanUpSlideEvents = function() { 789 790 var _ = this; 791 792 _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true)); 793 _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 794 795 }; 796 797 Slick.prototype.cleanUpRows = function() { 798 799 var _ = this, originalSlides; 800 801 if(_.options.rows > 0) { 802 originalSlides = _.$slides.children().children(); 803 originalSlides.removeAttr('style'); 804 _.$slider.empty().append(originalSlides); 805 } 806 807 }; 808 809 Slick.prototype.clickHandler = function(event) { 810 811 var _ = this; 812 813 if (_.shouldClick === false) { 814 event.stopImmediatePropagation(); 815 event.stopPropagation(); 816 event.preventDefault(); 817 } 818 819 }; 820 821 Slick.prototype.destroy = function(refresh) { 822 823 var _ = this; 824 825 _.autoPlayClear(); 826 827 _.touchObject = {}; 828 829 _.cleanUpEvents(); 830 831 $('.slick-cloned', _.$slider).detach(); 832 833 if (_.$dots) { 834 _.$dots.remove(); 835 } 836 837 if ( _.$prevArrow && _.$prevArrow.length ) { 838 839 _.$prevArrow 840 .removeClass('slick-disabled slick-arrow slick-hidden') 841 .removeAttr('aria-hidden aria-disabled tabindex') 842 .css('display',''); 843 844 if ( _.htmlExpr.test( _.options.prevArrow )) { 845 _.$prevArrow.remove(); 846 } 847 } 848 849 if ( _.$nextArrow && _.$nextArrow.length ) { 850 851 _.$nextArrow 852 .removeClass('slick-disabled slick-arrow slick-hidden') 853 .removeAttr('aria-hidden aria-disabled tabindex') 854 .css('display',''); 855 856 if ( _.htmlExpr.test( _.options.nextArrow )) { 857 _.$nextArrow.remove(); 858 } 859 } 860 861 862 if (_.$slides) { 863 864 _.$slides 865 .removeClass('slick-slide slick-active slick-center slick-visible slick-current') 866 .removeAttr('aria-hidden') 867 .removeAttr('data-slick-index') 868 .each(function(){ 869 $(this).attr('style', $(this).data('originalStyling')); 870 }); 871 872 _.$slideTrack.children(this.options.slide).detach(); 873 874 _.$slideTrack.detach(); 875 876 _.$list.detach(); 877 878 _.$slider.append(_.$slides); 879 } 880 881 _.cleanUpRows(); 882 883 _.$slider.removeClass('slick-slider'); 884 _.$slider.removeClass('slick-initialized'); 885 _.$slider.removeClass('slick-dotted'); 886 887 _.unslicked = true; 888 889 if(!refresh) { 890 _.$slider.trigger('destroy', [_]); 891 } 892 893 }; 894 895 Slick.prototype.disableTransition = function(slide) { 896 897 var _ = this, 898 transition = {}; 899 900 transition[_.transitionType] = ''; 901 902 if (_.options.fade === false) { 903 _.$slideTrack.css(transition); 904 } else { 905 _.$slides.eq(slide).css(transition); 906 } 907 908 }; 909 910 Slick.prototype.fadeSlide = function(slideIndex, callback) { 911 912 var _ = this; 913 914 if (_.cssTransitions === false) { 915 916 _.$slides.eq(slideIndex).css({ 917 zIndex: _.options.zIndex 918 }); 919 920 _.$slides.eq(slideIndex).animate({ 921 opacity: 1 922 }, _.options.speed, _.options.easing, callback); 923 924 } else { 925 926 _.applyTransition(slideIndex); 927 928 _.$slides.eq(slideIndex).css({ 929 opacity: 1, 930 zIndex: _.options.zIndex 931 }); 932 933 if (callback) { 934 setTimeout(function() { 935 936 _.disableTransition(slideIndex); 937 938 callback.call(); 939 }, _.options.speed); 940 } 941 942 } 943 944 }; 945 946 Slick.prototype.fadeSlideOut = function(slideIndex) { 947 948 var _ = this; 949 950 if (_.cssTransitions === false) { 951 952 _.$slides.eq(slideIndex).animate({ 953 opacity: 0, 954 zIndex: _.options.zIndex - 2 955 }, _.options.speed, _.options.easing); 956 957 } else { 958 959 _.applyTransition(slideIndex); 960 961 _.$slides.eq(slideIndex).css({ 962 opacity: 0, 963 zIndex: _.options.zIndex - 2 964 }); 965 966 } 967 968 }; 969 970 Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { 971 972 var _ = this; 973 974 if (filter !== null) { 975 976 _.$slidesCache = _.$slides; 977 978 _.unload(); 979 980 _.$slideTrack.children(this.options.slide).detach(); 981 982 _.$slidesCache.filter(filter).appendTo(_.$slideTrack); 983 984 _.reinit(); 985 986 } 987 988 }; 989 990 Slick.prototype.focusHandler = function() { 991 992 var _ = this; 993 994 _.$slider 995 .off('focus.slick blur.slick') 996 .on('focus.slick blur.slick', '*', function(event) { 997 998 event.stopImmediatePropagation(); 999 var $sf = $(this); 1000 1001 setTimeout(function() { 1002 1003 if( _.options.pauseOnFocus ) { 1004 _.focussed = $sf.is(':focus'); 1005 _.autoPlay(); 1006 } 1007 1008 }, 0); 1009 1010 }); 1011 }; 1012 1013 Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { 1014 1015 var _ = this; 1016 return _.currentSlide; 1017 1018 }; 1019 1020 Slick.prototype.getDotCount = function() { 1021 1022 var _ = this; 1023 1024 var breakPoint = 0; 1025 var counter = 0; 1026 var pagerQty = 0; 1027 1028 if (_.options.infinite === true) { 1029 if (_.slideCount <= _.options.slidesToShow) { 1030 ++pagerQty; 1031 } else { 1032 while (breakPoint < _.slideCount) { 1033 ++pagerQty; 1034 breakPoint = counter + _.options.slidesToScroll; 1035 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 1036 } 1037 } 1038 } else if (_.options.centerMode === true) { 1039 pagerQty = _.slideCount; 1040 } else if(!_.options.asNavFor) { 1041 pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll); 1042 }else { 1043 while (breakPoint < _.slideCount) { 1044 ++pagerQty; 1045 breakPoint = counter + _.options.slidesToScroll; 1046 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 1047 } 1048 } 1049 1050 return pagerQty - 1; 1051 1052 }; 1053 1054 Slick.prototype.getLeft = function(slideIndex) { 1055 1056 var _ = this, 1057 targetLeft, 1058 verticalHeight, 1059 verticalOffset = 0, 1060 targetSlide, 1061 coef; 1062 1063 _.slideOffset = 0; 1064 verticalHeight = _.$slides.first().outerHeight(true); 1065 1066 if (_.options.infinite === true) { 1067 if (_.slideCount > _.options.slidesToShow) { 1068 _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1; 1069 coef = -1
1069 1070 1071 if (_.options.vertical === true && _.options.centerMode === true) { 1072 if (_.options.slidesToShow === 2) { 1073 coef = -1.5; 1074 } else if (_.options.slidesToShow === 1) { 1075 coef = -2
vendor: 7,744 bytes, lines 1075-1302
1075 1076 } 1077 } 1078 verticalOffset = (verticalHeight * _.options.slidesToShow) * coef; 1079 } 1080 if (_.slideCount % _.options.slidesToScroll !== 0) { 1081 if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { 1082 if (slideIndex > _.slideCount) { 1083 _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1; 1084 verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1; 1085 } else { 1086 _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1; 1087 verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1; 1088 } 1089 } 1090 } 1091 } else { 1092 if (slideIndex + _.options.slidesToShow > _.slideCount) { 1093 _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth; 1094 verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight; 1095 } 1096 } 1097 1098 if (_.slideCount <= _.options.slidesToShow) { 1099 _.slideOffset = 0; 1100 verticalOffset = 0; 1101 } 1102 1103 if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) { 1104 _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2); 1105 } else if (_.options.centerMode === true && _.options.infinite === true) { 1106 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; 1107 } else if (_.options.centerMode === true) { 1108 _.slideOffset = 0; 1109 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); 1110 } 1111 1112 if (_.options.vertical === false) { 1113 targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset; 1114 } else { 1115 targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset; 1116 } 1117 1118 if (_.options.variableWidth === true) { 1119 1120 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 1121 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 1122 } else { 1123 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow); 1124 } 1125 1126 if (_.options.rtl === true) { 1127 if (targetSlide[0]) { 1128 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 1129 } else { 1130 targetLeft = 0; 1131 } 1132 } else { 1133 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 1134 } 1135 1136 if (_.options.centerMode === true) { 1137 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 1138 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 1139 } else { 1140 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1); 1141 } 1142 1143 if (_.options.rtl === true) { 1144 if (targetSlide[0]) { 1145 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 1146 } else { 1147 targetLeft = 0; 1148 } 1149 } else { 1150 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 1151 } 1152 1153 targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; 1154 } 1155 } 1156 1157 return targetLeft; 1158 1159 }; 1160 1161 Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { 1162 1163 var _ = this; 1164 1165 return _.options[option]; 1166 1167 }; 1168 1169 Slick.prototype.getNavigableIndexes = function() { 1170 1171 var _ = this, 1172 breakPoint = 0, 1173 counter = 0, 1174 indexes = [], 1175 max; 1176 1177 if (_.options.infinite === false) { 1178 max = _.slideCount; 1179 } else { 1180 breakPoint = _.options.slidesToScroll * -1; 1181 counter = _.options.slidesToScroll * -1; 1182 max = _.slideCount * 2; 1183 } 1184 1185 while (breakPoint < max) { 1186 indexes.push(breakPoint); 1187 breakPoint = counter + _.options.slidesToScroll; 1188 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 1189 } 1190 1191 return indexes; 1192 1193 }; 1194 1195 Slick.prototype.getSlick = function() { 1196 1197 return this; 1198 1199 }; 1200 1201 Slick.prototype.getSlideCount = function() { 1202 1203 var _ = this, 1204 slidesTraversed, swipedSlide, centerOffset; 1205 1206 centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; 1207 1208 if (_.options.swipeToSlide === true) { 1209 _.$slideTrack.find('.slick-slide').each(function(index, slide) { 1210 if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) { 1211 swipedSlide = slide; 1212 return false; 1213 } 1214 }); 1215 1216 slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1; 1217 1218 return slidesTraversed; 1219 1220 } else { 1221 return _.options.slidesToScroll; 1222 } 1223 1224 }; 1225 1226 Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { 1227 1228 var _ = this; 1229 1230 _.changeSlide({ 1231 data: { 1232 message: 'index', 1233 index: parseInt(slide) 1234 } 1235 }, dontAnimate); 1236 1237 }; 1238 1239 Slick.prototype.init = function(creation) { 1240 1241 var _ = this; 1242 1243 if (!$(_.$slider).hasClass('slick-initialized')) { 1244 1245 $(_.$slider).addClass('slick-initialized'); 1246 1247 _.buildRows(); 1248 _.buildOut(); 1249 _.setProps(); 1250 _.startLoad(); 1251 _.loadSlider(); 1252 _.initializeEvents(); 1253 _.updateArrows(); 1254 _.updateDots(); 1255 _.checkResponsive(true); 1256 _.focusHandler(); 1257 1258 } 1259 1260 if (creation) { 1261 _.$slider.trigger('init', [_]); 1262 } 1263 1264 if (_.options.accessibility === true) { 1265 _.initADA(); 1266 } 1267 1268 if ( _.options.autoplay ) { 1269 1270 _.paused = false; 1271 _.autoPlay(); 1272 1273 } 1274 1275 }; 1276 1277 Slick.prototype.initADA = function() { 1278 var _ = this, 1279 numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow), 1280 tabControlIndexes = _.getNavigableIndexes().filter(function(val) { 1281 return (val >= 0) && (val < _.slideCount); 1282 }); 1283 1284 _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({ 1285 'aria-hidden': 'true', 1286 'tabindex': '-1' 1287 }).find('a, input, button, select').attr({ 1288 'tabindex': '-1' 1289 }); 1290 1291 if (_.$dots !== null) { 1292 _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) { 1293 var slideControlIndex = tabControlIndexes.indexOf(i); 1294 1295 $(this).attr({ 1296 'role': 'tabpanel', 1297 'id': 'slick-slide' + _.instanceUid + i, 1298 'tabindex': -1 1299 }); 1300 1301 if (slideControlIndex !== -1) { 1302 var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex
vendor: 23,162 bytes, lines 1302-2129
1302 1303 if ($('#' + ariaButtonControl).length) { 1304 $(this).attr({ 1305 'aria-describedby': ariaButtonControl 1306 }); 1307 } 1308 } 1309 }); 1310 1311 _.$dots.attr('role', 'tablist').find('li').each(function(i) { 1312 var mappedSlideIndex = tabControlIndexes[i]; 1313 1314 $(this).attr({ 1315 'role': 'presentation' 1316 }); 1317 1318 $(this).find('button').first().attr({ 1319 'role': 'tab', 1320 'id': 'slick-slide-control' + _.instanceUid + i, 1321 'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex, 1322 'aria-label': (i + 1) + ' of ' + numDotGroups, 1323 'aria-selected': null, 1324 'tabindex': '-1' 1325 }); 1326 1327 }).eq(_.currentSlide).find('button').attr({ 1328 'aria-selected': 'true', 1329 'tabindex': '0' 1330 }).end(); 1331 } 1332 1333 for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) { 1334 if (_.options.focusOnChange) { 1335 _.$slides.eq(i).attr({'tabindex': '0'}); 1336 } else { 1337 _.$slides.eq(i).removeAttr('tabindex'); 1338 } 1339 } 1340 1341 _.activateADA(); 1342 1343 }; 1344 1345 Slick.prototype.initArrowEvents = function() { 1346 1347 var _ = this; 1348 1349 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 1350 _.$prevArrow 1351 .off('click.slick') 1352 .on('click.slick', { 1353 message: 'previous' 1354 }, _.changeSlide); 1355 _.$nextArrow 1356 .off('click.slick') 1357 .on('click.slick', { 1358 message: 'next' 1359 }, _.changeSlide); 1360 1361 if (_.options.accessibility === true) { 1362 _.$prevArrow.on('keydown.slick', _.keyHandler); 1363 _.$nextArrow.on('keydown.slick', _.keyHandler); 1364 } 1365 } 1366 1367 }; 1368 1369 Slick.prototype.initDotEvents = function() { 1370 1371 var _ = this; 1372 1373 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 1374 $('li', _.$dots).on('click.slick', { 1375 message: 'index' 1376 }, _.changeSlide); 1377 1378 if (_.options.accessibility === true) { 1379 _.$dots.on('keydown.slick', _.keyHandler); 1380 } 1381 } 1382 1383 if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) { 1384 1385 $('li', _.$dots) 1386 .on('mouseenter.slick', $.proxy(_.interrupt, _, true)) 1387 .on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 1388 1389 } 1390 1391 }; 1392 1393 Slick.prototype.initSlideEvents = function() { 1394 1395 var _ = this; 1396 1397 if ( _.options.pauseOnHover ) { 1398 1399 _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true)); 1400 _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 1401 1402 } 1403 1404 }; 1405 1406 Slick.prototype.initializeEvents = function() { 1407 1408 var _ = this; 1409 1410 _.initArrowEvents(); 1411 1412 _.initDotEvents(); 1413 _.initSlideEvents(); 1414 1415 _.$list.on('touchstart.slick mousedown.slick', { 1416 action: 'start' 1417 }, _.swipeHandler); 1418 _.$list.on('touchmove.slick mousemove.slick', { 1419 action: 'move' 1420 }, _.swipeHandler); 1421 _.$list.on('touchend.slick mouseup.slick', { 1422 action: 'end' 1423 }, _.swipeHandler); 1424 _.$list.on('touchcancel.slick mouseleave.slick', { 1425 action: 'end' 1426 }, _.swipeHandler); 1427 1428 _.$list.on('click.slick', _.clickHandler); 1429 1430 $(document).on(_.visibilityChange, $.proxy(_.visibility, _)); 1431 1432 if (_.options.accessibility === true) { 1433 _.$list.on('keydown.slick', _.keyHandler); 1434 } 1435 1436 if (_.options.focusOnSelect === true) { 1437 $(_.$slideTrack).children().on('click.slick', _.selectHandler); 1438 } 1439 1440 $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _)); 1441 1442 $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _)); 1443 1444 $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault); 1445 1446 $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition); 1447 $(_.setPosition); 1448 1449 }; 1450 1451 Slick.prototype.initUI = function() { 1452 1453 var _ = this; 1454 1455 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 1456 1457 _.$prevArrow.show(); 1458 _.$nextArrow.show(); 1459 1460 } 1461 1462 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 1463 1464 _.$dots.show(); 1465 1466 } 1467 1468 }; 1469 1470 Slick.prototype.keyHandler = function(event) { 1471 1472 var _ = this; 1473 if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) { 1474 if (event.keyCode === 37 && _.options.accessibility === true) { 1475 _.changeSlide({ 1476 data: { 1477 message: _.options.rtl === true ? 'next' : 'previous' 1478 } 1479 }); 1480 } else if (event.keyCode === 39 && _.options.accessibility === true) { 1481 _.changeSlide({ 1482 data: { 1483 message: _.options.rtl === true ? 'previous' : 'next' 1484 } 1485 }); 1486 } 1487 } 1488 1489 }; 1490 1491 Slick.prototype.lazyLoad = function() { 1492 1493 var _ = this, 1494 loadRange, cloneRange, rangeStart, rangeEnd; 1495 1496 function loadImages(imagesScope) { 1497 1498 $('img[data-lazy]', imagesScope).each(function() { 1499 1500 var image = $(this), 1501 imageSource = $(this).attr('data-lazy'), 1502 imageSrcSet = $(this).attr('data-srcset'), 1503 imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'), 1504 imageToLoad = document.createElement('img'); 1505 1506 imageToLoad.onload = function() { 1507 1508 image 1509 .animate({ opacity: 0 }, 100, function() { 1510 1511 if (imageSrcSet) { 1512 image 1513 .attr('srcset', imageSrcSet ); 1514 1515 if (imageSizes) { 1516 image 1517 .attr('sizes', imageSizes ); 1518 } 1519 } 1520 1521 image 1522 .attr('src', imageSource) 1523 .animate({ opacity: 1 }, 200, function() { 1524 image 1525 .removeAttr('data-lazy data-srcset data-sizes') 1526 .removeClass('slick-loading'); 1527 }); 1528 _.$slider.trigger('lazyLoaded', [_, image, imageSource]); 1529 }); 1530 1531 }; 1532 1533 imageToLoad.onerror = function() { 1534 1535 image 1536 .removeAttr( 'data-lazy' ) 1537 .removeClass( 'slick-loading' ) 1538 .addClass( 'slick-lazyload-error' ); 1539 1540 _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); 1541 1542 }; 1543 1544 imageToLoad.src = imageSource; 1545 1546 }); 1547 1548 } 1549 1550 if (_.options.centerMode === true) { 1551 if (_.options.infinite === true) { 1552 rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); 1553 rangeEnd = rangeStart + _.options.slidesToShow + 2; 1554 } else { 1555 rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); 1556 rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; 1557 } 1558 } else { 1559 rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; 1560 rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow); 1561 if (_.options.fade === true) { 1562 if (rangeStart > 0) rangeStart--; 1563 if (rangeEnd <= _.slideCount) rangeEnd++; 1564 } 1565 } 1566 1567 loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd); 1568 1569 if (_.options.lazyLoad === 'anticipated') { 1570 var prevSlide = rangeStart - 1, 1571 nextSlide = rangeEnd, 1572 $slides = _.$slider.find('.slick-slide'); 1573 1574 for (var i = 0; i < _.options.slidesToScroll; i++) { 1575 if (prevSlide < 0) prevSlide = _.slideCount - 1; 1576 loadRange = loadRange.add($slides.eq(prevSlide)); 1577 loadRange = loadRange.add($slides.eq(nextSlide)); 1578 prevSlide--; 1579 nextSlide++; 1580 } 1581 } 1582 1583 loadImages(loadRange); 1584 1585 if (_.slideCount <= _.options.slidesToShow) { 1586 cloneRange = _.$slider.find('.slick-slide'); 1587 loadImages(cloneRange); 1588 } else 1589 if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { 1590 cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow); 1591 loadImages(cloneRange); 1592 } else if (_.currentSlide === 0) { 1593 cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1); 1594 loadImages(cloneRange); 1595 } 1596 1597 }; 1598 1599 Slick.prototype.loadSlider = function() { 1600 1601 var _ = this; 1602 1603 _.setPosition(); 1604 1605 _.$slideTrack.css({ 1606 opacity: 1 1607 }); 1608 1609 _.$slider.removeClass('slick-loading'); 1610 1611 _.initUI(); 1612 1613 if (_.options.lazyLoad === 'progressive') { 1614 _.progressiveLazyLoad(); 1615 } 1616 1617 }; 1618 1619 Slick.prototype.next = Slick.prototype.slickNext = function() { 1620 1621 var _ = this; 1622 1623 _.changeSlide({ 1624 data: { 1625 message: 'next' 1626 } 1627 }); 1628 1629 }; 1630 1631 Slick.prototype.orientationChange = function() { 1632 1633 var _ = this; 1634 1635 _.checkResponsive(); 1636 _.setPosition(); 1637 1638 }; 1639 1640 Slick.prototype.pause = Slick.prototype.slickPause = function() { 1641 1642 var _ = this; 1643 1644 _.autoPlayClear(); 1645 _.paused = true; 1646 1647 }; 1648 1649 Slick.prototype.play = Slick.prototype.slickPlay = function() { 1650 1651 var _ = this; 1652 1653 _.autoPlay(); 1654 _.options.autoplay = true; 1655 _.paused = false; 1656 _.focussed = false; 1657 _.interrupted = false; 1658 1659 }; 1660 1661 Slick.prototype.postSlide = function(index) { 1662 1663 var _ = this; 1664 1665 if( !_.unslicked ) { 1666 1667 _.$slider.trigger('afterChange', [_, index]); 1668 1669 _.animating = false; 1670 1671 if (_.slideCount > _.options.slidesToShow) { 1672 _.setPosition(); 1673 } 1674 1675 _.swipeLeft = null; 1676 1677 if ( _.options.autoplay ) { 1678 _.autoPlay(); 1679 } 1680 1681 if (_.options.accessibility === true) { 1682 _.initADA(); 1683 1684 if (_.options.focusOnChange) { 1685 var $currentSlide = $(_.$slides.get(_.currentSlide)); 1686 $currentSlide.attr('tabindex', 0).focus(); 1687 } 1688 } 1689 1690 } 1691 1692 }; 1693 1694 Slick.prototype.prev = Slick.prototype.slickPrev = function() { 1695 1696 var _ = this; 1697 1698 _.changeSlide({ 1699 data: { 1700 message: 'previous' 1701 } 1702 }); 1703 1704 }; 1705 1706 Slick.prototype.preventDefault = function(event) { 1707 1708 event.preventDefault(); 1709 1710 }; 1711 1712 Slick.prototype.progressiveLazyLoad = function( tryCount ) { 1713 1714 tryCount = tryCount || 1; 1715 1716 var _ = this, 1717 $imgsToLoad = $( 'img[data-lazy]', _.$slider ), 1718 image, 1719 imageSource, 1720 imageSrcSet, 1721 imageSizes, 1722 imageToLoad; 1723 1724 if ( $imgsToLoad.length ) { 1725 1726 image = $imgsToLoad.first(); 1727 imageSource = image.attr('data-lazy'); 1728 imageSrcSet = image.attr('data-srcset'); 1729 imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes'); 1730 imageToLoad = document.createElement('img'); 1731 1732 imageToLoad.onload = function() { 1733 1734 if (imageSrcSet) { 1735 image 1736 .attr('srcset', imageSrcSet ); 1737 1738 if (imageSizes) { 1739 image 1740 .attr('sizes', imageSizes ); 1741 } 1742 } 1743 1744 image 1745 .attr( 'src', imageSource ) 1746 .removeAttr('data-lazy data-srcset data-sizes') 1747 .removeClass('slick-loading'); 1748 1749 if ( _.options.adaptiveHeight === true ) { 1750 _.setPosition(); 1751 } 1752 1753 _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]); 1754 _.progressiveLazyLoad(); 1755 1756 }; 1757 1758 imageToLoad.onerror = function() { 1759 1760 if ( tryCount < 3 ) { 1761 1762 setTimeout( function() { 1763 _.progressiveLazyLoad( tryCount + 1 ); 1764 }, 500 ); 1765 1766 } else { 1767 1768 image 1769 .removeAttr( 'data-lazy' ) 1770 .removeClass( 'slick-loading' ) 1771 .addClass( 'slick-lazyload-error' ); 1772 1773 _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); 1774 1775 _.progressiveLazyLoad(); 1776 1777 } 1778 1779 }; 1780 1781 imageToLoad.src = imageSource; 1782 1783 } else { 1784 1785 _.$slider.trigger('allImagesLoaded', [ _ ]); 1786 1787 } 1788 1789 }; 1790 1791 Slick.prototype.refresh = function( initializing ) { 1792 1793 var _ = this, currentSlide, lastVisibleIndex; 1794 1795 lastVisibleIndex = _.slideCount - _.options.slidesToShow; 1796 1797 if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) { 1798 _.currentSlide = lastVisibleIndex; 1799 } 1800 1801 if ( _.slideCount <= _.options.slidesToShow ) { 1802 _.currentSlide = 0; 1803 1804 } 1805 1806 currentSlide = _.currentSlide; 1807 1808 _.destroy(true); 1809 1810 $.extend(_, _.initials, { currentSlide: currentSlide }); 1811 1812 _.init(); 1813 1814 if( !initializing ) { 1815 1816 _.changeSlide({ 1817 data: { 1818 message: 'index', 1819 index: currentSlide 1820 } 1821 }, false); 1822 1823 } 1824 1825 }; 1826 1827 Slick.prototype.registerBreakpoints = function() { 1828 1829 var _ = this, breakpoint, currentBreakpoint, l, 1830 responsiveSettings = _.options.responsive || null; 1831 1832 if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) { 1833 1834 _.respondTo = _.options.respondTo || 'window'; 1835 1836 for ( breakpoint in responsiveSettings ) { 1837 1838 l = _.breakpoints.length-1; 1839 1840 if (responsiveSettings.hasOwnProperty(breakpoint)) { 1841 currentBreakpoint = responsiveSettings[breakpoint].breakpoint; 1842 1843 while( l >= 0 ) { 1844 if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) { 1845 _.breakpoints.splice(l,1); 1846 } 1847 l--; 1848 } 1849 1850 _.breakpoints.push(currentBreakpoint); 1851 _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings; 1852 1853 } 1854 1855 } 1856 1857 _.breakpoints.sort(function(a, b) { 1858 return ( _.options.mobileFirst ) ? a-b : b-a; 1859 }); 1860 1861 } 1862 1863 }; 1864 1865 Slick.prototype.reinit = function() { 1866 1867 var _ = this; 1868 1869 _.$slides = 1870 _.$slideTrack 1871 .children(_.options.slide) 1872 .addClass('slick-slide'); 1873 1874 _.slideCount = _.$slides.length; 1875 1876 if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { 1877 _.currentSlide = _.currentSlide - _.options.slidesToScroll; 1878 } 1879 1880 if (_.slideCount <= _.options.slidesToShow) { 1881 _.currentSlide = 0; 1882 } 1883 1884 _.registerBreakpoints(); 1885 1886 _.setProps(); 1887 _.setupInfinite(); 1888 _.buildArrows(); 1889 _.updateArrows(); 1890 _.initArrowEvents(); 1891 _.buildDots(); 1892 _.updateDots(); 1893 _.initDotEvents(); 1894 _.cleanUpSlideEvents(); 1895 _.initSlideEvents(); 1896 1897 _.checkResponsive(false, true); 1898 1899 if (_.options.focusOnSelect === true) { 1900 $(_.$slideTrack).children().on('click.slick', _.selectHandler); 1901 } 1902 1903 _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 1904 1905 _.setPosition(); 1906 _.focusHandler(); 1907 1908 _.paused = !_.options.autoplay; 1909 _.autoPlay(); 1910 1911 _.$slider.trigger('reInit', [_]); 1912 1913 }; 1914 1915 Slick.prototype.resize = function() { 1916 1917 var _ = this; 1918 1919 if ($(window).width() !== _.windowWidth) { 1920 clearTimeout(_.windowDelay); 1921 _.windowDelay = window.setTimeout(function() { 1922 _.windowWidth = $(window).width(); 1923 _.checkResponsive(); 1924 if( !_.unslicked ) { _.setPosition(); } 1925 }, 50); 1926 } 1927 }; 1928 1929 Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { 1930 1931 var _ = this; 1932 1933 if (typeof(index) === 'boolean') { 1934 removeBefore = index; 1935 index = removeBefore === true ? 0 : _.slideCount - 1; 1936 } else { 1937 index = removeBefore === true ? --index : index; 1938 } 1939 1940 if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { 1941 return false; 1942 } 1943 1944 _.unload(); 1945 1946 if (removeAll === true) { 1947 _.$slideTrack.children().remove(); 1948 } else { 1949 _.$slideTrack.children(this.options.slide).eq(index).remove(); 1950 } 1951 1952 _.$slides = _.$slideTrack.children(this.options.slide); 1953 1954 _.$slideTrack.children(this.options.slide).detach(); 1955 1956 _.$slideTrack.append(_.$slides); 1957 1958 _.$slidesCache = _.$slides; 1959 1960 _.reinit(); 1961 1962 }; 1963 1964 Slick.prototype.setCSS = function(position) { 1965 1966 var _ = this, 1967 positionProps = {}, 1968 x, y; 1969 1970 if (_.options.rtl === true) { 1971 position = -position; 1972 } 1973 x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px'; 1974 y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px'; 1975 1976 positionProps[_.positionProp] = position; 1977 1978 if (_.transformsEnabled === false) { 1979 _.$slideTrack.css(positionProps); 1980 } else { 1981 positionProps = {}; 1982 if (_.cssTransitions === false) { 1983 positionProps[_.animType] = 'translate(' + x + ', ' + y + ')'; 1984 _.$slideTrack.css(positionProps); 1985 } else { 1986 positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)'; 1987 _.$slideTrack.css(positionProps); 1988 } 1989 } 1990 1991 }; 1992 1993 Slick.prototype.setDimensions = function() { 1994 1995 var _ = this; 1996 1997 if (_.options.vertical === false) { 1998 if (_.options.centerMode === true) { 1999 _.$list.css({ 2000 padding: ('0px ' + _.options.centerPadding) 2001 }); 2002 } 2003 } else { 2004 _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); 2005 if (_.options.centerMode === true) { 2006 _.$list.css({ 2007 padding: (_.options.centerPadding + ' 0px') 2008 }); 2009 } 2010 } 2011 2012 _.listWidth = _.$list.width(); 2013 _.listHeight = _.$list.height(); 2014 2015 2016 if (_.options.vertical === false && _.options.variableWidth === false) { 2017 _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); 2018 _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length))); 2019 2020 } else if (_.options.variableWidth === true) { 2021 _.$slideTrack.width(5000 * _.slideCount); 2022 } else { 2023 _.slideWidth = Math.ceil(_.listWidth); 2024 _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length))); 2025 } 2026 2027 var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); 2028 if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset); 2029 2030 }; 2031 2032 Slick.prototype.setFade = function() { 2033 2034 var _ = this, 2035 targetLeft; 2036 2037 _.$slides.each(function(index, element) { 2038 targetLeft = (_.slideWidth * index) * -1; 2039 if (_.options.rtl === true) { 2040 $(element).css({ 2041 position: 'relative', 2042 right: targetLeft, 2043 top: 0, 2044 zIndex: _.options.zIndex - 2, 2045 opacity: 0 2046 }); 2047 } else { 2048 $(element).css({ 2049 position: 'relative', 2050 left: targetLeft, 2051 top: 0, 2052 zIndex: _.options.zIndex - 2, 2053 opacity: 0 2054 }); 2055 } 2056 }); 2057 2058 _.$slides.eq(_.currentSlide).css({ 2059 zIndex: _.options.zIndex - 1, 2060 opacity: 1 2061 }); 2062 2063 }; 2064 2065 Slick.prototype.setHeight = function() { 2066 2067 var _ = this; 2068 2069 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 2070 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 2071 _.$list.css('height', targetHeight); 2072 } 2073 2074 }; 2075 2076 Slick.prototype.setOption = 2077 Slick.prototype.slickSetOption = function() { 2078 2079 var _ = this, l, item, option, value, refresh = false, type; 2080 2081 if( $.type( arguments[0] ) === 'object' ) { 2082 2083 option = arguments[0]; 2084 refresh = arguments[1]; 2085 type = 'multiple'; 2086 2087 } else if ( $.type( arguments[0] ) === 'string' ) { 2088 2089 option = arguments[0]; 2090 value = arguments[1]; 2091 refresh = arguments[2]; 2092 2093 if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) { 2094 2095 type = 'responsive'; 2096 2097 } else if ( typeof arguments[1] !== 'undefined' ) { 2098 2099 type = 'single'; 2100 2101 } 2102 2103 } 2104 2105 if ( type === 'single' ) { 2106 2107 _.options[option] = value; 2108 2109 2110 } else if ( type === 'multiple' ) { 2111 2112 $.each( option , function( opt, val ) { 2113 2114 _.options[opt] = val; 2115 2116 }); 2117 2118 2119 } else if ( type === 'responsive' ) { 2120 2121 for ( item in value ) { 2122 2123 if( $.type( _.options.responsive ) !== 'array' ) { 2124 2125 _.options.responsive = [ value[item] ]; 2126 2127 } else { 2128 2129 l = _.options.responsive.length-1;
vendor: 15,436 bytes, lines 2130-2653
2130 2131 while( l >= 0 ) { 2132 2133 if( _.options.responsive[l].breakpoint === value[item].breakpoint ) { 2134 2135 _.options.responsive.splice(l,1); 2136 2137 } 2138 2139 l--; 2140 2141 } 2142 2143 _.options.responsive.push( value[item] ); 2144 2145 } 2146 2147 } 2148 2149 } 2150 2151 if ( refresh ) { 2152 2153 _.unload(); 2154 _.reinit(); 2155 2156 } 2157 2158 }; 2159 2160 Slick.prototype.setPosition = function() { 2161 2162 var _ = this; 2163 2164 _.setDimensions(); 2165 2166 _.setHeight(); 2167 2168 if (_.options.fade === false) { 2169 _.setCSS(_.getLeft(_.currentSlide)); 2170 } else { 2171 _.setFade(); 2172 } 2173 2174 _.$slider.trigger('setPosition', [_]); 2175 2176 }; 2177 2178 Slick.prototype.setProps = function() { 2179 2180 var _ = this, 2181 bodyStyle = document.body.style; 2182 2183 _.positionProp = _.options.vertical === true ? 'top' : 'left'; 2184 2185 if (_.positionProp === 'top') { 2186 _.$slider.addClass('slick-vertical'); 2187 } else { 2188 _.$slider.removeClass('slick-vertical'); 2189 } 2190 2191 if (bodyStyle.WebkitTransition !== undefined || 2192 bodyStyle.MozTransition !== undefined || 2193 bodyStyle.msTransition !== undefined) { 2194 if (_.options.useCSS === true) { 2195 _.cssTransitions = true; 2196 } 2197 } 2198 2199 if ( _.options.fade ) { 2200 if ( typeof _.options.zIndex === 'number' ) { 2201 if( _.options.zIndex < 3 ) { 2202 _.options.zIndex = 3; 2203 } 2204 } else { 2205 _.options.zIndex = _.defaults.zIndex; 2206 } 2207 } 2208 2209 if (bodyStyle.OTransform !== undefined) { 2210 _.animType = 'OTransform'; 2211 _.transformType = '-o-transform'; 2212 _.transitionType = 'OTransition'; 2213 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; 2214 } 2215 if (bodyStyle.MozTransform !== undefined) { 2216 _.animType = 'MozTransform'; 2217 _.transformType = '-moz-transform'; 2218 _.transitionType = 'MozTransition'; 2219 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false; 2220 } 2221 if (bodyStyle.webkitTransform !== undefined) { 2222 _.animType = 'webkitTransform'; 2223 _.transformType = '-webkit-transform'; 2224 _.transitionType = 'webkitTransition'; 2225 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; 2226 } 2227 if (bodyStyle.msTransform !== undefined) { 2228 _.animType = 'msTransform'; 2229 _.transformType = '-ms-transform'; 2230 _.transitionType = 'msTransition'; 2231 if (bodyStyle.msTransform === undefined) _.animType = false; 2232 } 2233 if (bodyStyle.transform !== undefined && _.animType !== false) { 2234 _.animType = 'transform'; 2235 _.transformType = 'transform'; 2236 _.transitionType = 'transition'; 2237 } 2238 _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false); 2239 }; 2240 2241 2242 Slick.prototype.setSlideClasses = function(index) { 2243 2244 var _ = this, 2245 centerOffset, allSlides, indexOffset, remainder; 2246 2247 allSlides = _.$slider 2248 .find('.slick-slide') 2249 .removeClass('slick-active slick-center slick-current') 2250 .attr('aria-hidden', 'true'); 2251 2252 _.$slides 2253 .eq(index) 2254 .addClass('slick-current'); 2255 2256 if (_.options.centerMode === true) { 2257 2258 var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0; 2259 2260 centerOffset = Math.floor(_.options.slidesToShow / 2); 2261 2262 if (_.options.infinite === true) { 2263 2264 if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) { 2265 _.$slides 2266 .slice(index - centerOffset + evenCoef, index + centerOffset + 1) 2267 .addClass('slick-active') 2268 .attr('aria-hidden', 'false'); 2269 2270 } else { 2271 2272 indexOffset = _.options.slidesToShow + index; 2273 allSlides 2274 .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2) 2275 .addClass('slick-active') 2276 .attr('aria-hidden', 'false'); 2277 2278 } 2279 2280 if (index === 0) { 2281 2282 allSlides 2283 .eq(allSlides.length - 1 - _.options.slidesToShow) 2284 .addClass('slick-center'); 2285 2286 } else if (index === _.slideCount - 1) { 2287 2288 allSlides 2289 .eq(_.options.slidesToShow) 2290 .addClass('slick-center'); 2291 2292 } 2293 2294 } 2295 2296 _.$slides 2297 .eq(index) 2298 .addClass('slick-center'); 2299 2300 } else { 2301 2302 if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) { 2303 2304 _.$slides 2305 .slice(index, index + _.options.slidesToShow) 2306 .addClass('slick-active') 2307 .attr('aria-hidden', 'false'); 2308 2309 } else if (allSlides.length <= _.options.slidesToShow) { 2310 2311 allSlides 2312 .addClass('slick-active') 2313 .attr('aria-hidden', 'false'); 2314 2315 } else { 2316 2317 remainder = _.slideCount % _.options.slidesToShow; 2318 indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; 2319 2320 if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) { 2321 2322 allSlides 2323 .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder) 2324 .addClass('slick-active') 2325 .attr('aria-hidden', 'false'); 2326 2327 } else { 2328 2329 allSlides 2330 .slice(indexOffset, indexOffset + _.options.slidesToShow) 2331 .addClass('slick-active') 2332 .attr('aria-hidden', 'false'); 2333 2334 } 2335 2336 } 2337 2338 } 2339 2340 if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') { 2341 _.lazyLoad(); 2342 } 2343 }; 2344 2345 Slick.prototype.setupInfinite = function() { 2346 2347 var _ = this, 2348 i, slideIndex, infiniteCount; 2349 2350 if (_.options.fade === true) { 2351 _.options.centerMode = false; 2352 } 2353 2354 if (_.options.infinite === true && _.options.fade === false) { 2355 2356 slideIndex = null; 2357 2358 if (_.slideCount > _.options.slidesToShow) { 2359 2360 if (_.options.centerMode === true) { 2361 infiniteCount = _.options.slidesToShow + 1; 2362 } else { 2363 infiniteCount = _.options.slidesToShow; 2364 } 2365 2366 for (i = _.slideCount; i > (_.slideCount - 2367 infiniteCount); i -= 1) { 2368 slideIndex = i - 1; 2369 $(_.$slides[slideIndex]).clone(true).attr('id', '') 2370 .attr('data-slick-index', slideIndex - _.slideCount) 2371 .prependTo(_.$slideTrack).addClass('slick-cloned'); 2372 } 2373 for (i = 0; i < infiniteCount + _.slideCount; i += 1) { 2374 slideIndex = i; 2375 $(_.$slides[slideIndex]).clone(true).attr('id', '') 2376 .attr('data-slick-index', slideIndex + _.slideCount) 2377 .appendTo(_.$slideTrack).addClass('slick-cloned'); 2378 } 2379 _.$slideTrack.find('.slick-cloned').find('[id]').each(function() { 2380 $(this).attr('id', ''); 2381 }); 2382 2383 } 2384 2385 } 2386 2387 }; 2388 2389 Slick.prototype.interrupt = function( toggle ) { 2390 2391 var _ = this; 2392 2393 if( !toggle ) { 2394 _.autoPlay(); 2395 } 2396 _.interrupted = toggle; 2397 2398 }; 2399 2400 Slick.prototype.selectHandler = function(event) { 2401 2402 var _ = this; 2403 2404 var targetElement = 2405 $(event.target).is('.slick-slide') ? 2406 $(event.target) : 2407 $(event.target).parents('.slick-slide'); 2408 2409 var index = parseInt(targetElement.attr('data-slick-index')); 2410 2411 if (!index) index = 0; 2412 2413 if (_.slideCount <= _.options.slidesToShow) { 2414 2415 _.slideHandler(index, false, true); 2416 return; 2417 2418 } 2419 2420 _.slideHandler(index); 2421 2422 }; 2423 2424 Slick.prototype.slideHandler = function(index, sync, dontAnimate) { 2425 2426 var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, 2427 _ = this, navTarget; 2428 2429 sync = sync || false; 2430 2431 if (_.animating === true && _.options.waitForAnimate === true) { 2432 return; 2433 } 2434 2435 if (_.options.fade === true && _.currentSlide === index) { 2436 return; 2437 } 2438 2439 if (sync === false) { 2440 _.asNavFor(index); 2441 } 2442 2443 targetSlide = index; 2444 targetLeft = _.getLeft(targetSlide); 2445 slideLeft = _.getLeft(_.currentSlide); 2446 2447 _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; 2448 2449 if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { 2450 if (_.options.fade === false) { 2451 targetSlide = _.currentSlide; 2452 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 2453 _.animateSlide(slideLeft, function() { 2454 _.postSlide(targetSlide); 2455 }); 2456 } else { 2457 _.postSlide(targetSlide); 2458 } 2459 } 2460 return; 2461 } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) { 2462 if (_.options.fade === false) { 2463 targetSlide = _.currentSlide; 2464 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 2465 _.animateSlide(slideLeft, function() { 2466 _.postSlide(targetSlide); 2467 }); 2468 } else { 2469 _.postSlide(targetSlide); 2470 } 2471 } 2472 return; 2473 } 2474 2475 if ( _.options.autoplay ) { 2476 clearInterval(_.autoPlayTimer); 2477 } 2478 2479 if (targetSlide < 0) { 2480 if (_.slideCount % _.options.slidesToScroll !== 0) { 2481 animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll); 2482 } else { 2483 animSlide = _.slideCount + targetSlide; 2484 } 2485 } else if (targetSlide >= _.slideCount) { 2486 if (_.slideCount % _.options.slidesToScroll !== 0) { 2487 animSlide = 0; 2488 } else { 2489 animSlide = targetSlide - _.slideCount; 2490 } 2491 } else { 2492 animSlide = targetSlide; 2493 } 2494 2495 _.animating = true; 2496 2497 _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]); 2498 2499 oldSlide = _.currentSlide; 2500 _.currentSlide = animSlide; 2501 2502 _.setSlideClasses(_.currentSlide); 2503 2504 if ( _.options.asNavFor ) { 2505 2506 navTarget = _.getNavTarget(); 2507 navTarget = navTarget.slick('getSlick'); 2508 2509 if ( navTarget.slideCount <= navTarget.options.slidesToShow ) { 2510 navTarget.setSlideClasses(_.currentSlide); 2511 } 2512 2513 } 2514 2515 _.updateDots(); 2516 _.updateArrows(); 2517 2518 if (_.options.fade === true) { 2519 if (dontAnimate !== true) { 2520 2521 _.fadeSlideOut(oldSlide); 2522 2523 _.fadeSlide(animSlide, function() { 2524 _.postSlide(animSlide); 2525 }); 2526 2527 } else { 2528 _.postSlide(animSlide); 2529 } 2530 _.animateHeight(); 2531 return; 2532 } 2533 2534 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 2535 _.animateSlide(targetLeft, function() { 2536 _.postSlide(animSlide); 2537 }); 2538 } else { 2539 _.postSlide(animSlide); 2540 } 2541 2542 }; 2543 2544 Slick.prototype.startLoad = function() { 2545 2546 var _ = this; 2547 2548 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 2549 2550 _.$prevArrow.hide(); 2551 _.$nextArrow.hide(); 2552 2553 } 2554 2555 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 2556 2557 _.$dots.hide(); 2558 2559 } 2560 2561 _.$slider.addClass('slick-loading'); 2562 2563 }; 2564 2565 Slick.prototype.swipeDirection = function() { 2566 2567 var xDist, yDist, r, swipeAngle, _ = this; 2568 2569 xDist = _.touchObject.startX - _.touchObject.curX; 2570 yDist = _.touchObject.startY - _.touchObject.curY; 2571 r = Math.atan2(yDist, xDist); 2572 2573 swipeAngle = Math.round(r * 180 / Math.PI); 2574 if (swipeAngle < 0) { 2575 swipeAngle = 360 - Math.abs(swipeAngle); 2576 } 2577 2578 if ((swipeAngle <= 45) && (swipeAngle >= 0)) { 2579 return (_.options.rtl === false ? 'left' : 'right'); 2580 } 2581 if ((swipeAngle <= 360) && (swipeAngle >= 315)) { 2582 return (_.options.rtl === false ? 'left' : 'right'); 2583 } 2584 if ((swipeAngle >= 135) && (swipeAngle <= 225)) { 2585 return (_.options.rtl === false ? 'right' : 'left'); 2586 } 2587 if (_.options.verticalSwiping === true) { 2588 if ((swipeAngle >= 35) && (swipeAngle <= 135)) { 2589 return 'down'; 2590 } else { 2591 return 'up'; 2592 } 2593 } 2594 2595 return 'vertical'; 2596 2597 }; 2598 2599 Slick.prototype.swipeEnd = function(event) { 2600 2601 var _ = this, 2602 slideCount, 2603 direction; 2604 2605 _.dragging = false; 2606 _.swiping = false; 2607 2608 if (_.scrolling) { 2609 _.scrolling = false; 2610 return false; 2611 } 2612 2613 _.interrupted = false; 2614 _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true; 2615 2616 if ( _.touchObject.curX === undefined ) { 2617 return false; 2618 } 2619 2620 if ( _.touchObject.edgeHit === true ) { 2621 _.$slider.trigger('edge', [_, _.swipeDirection() ]); 2622 } 2623 2624 if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) { 2625 2626 direction = _.swipeDirection(); 2627 2628 switch ( direction ) { 2629 2630 case 'left': 2631 case 'down': 2632 2633 slideCount = 2634 _.options.swipeToSlide ? 2635 _.checkNavigable( _.currentSlide + _.getSlideCount() ) : 2636 _.currentSlide + _.getSlideCount(); 2637 2638 _.currentDirection = 0; 2639 2640 break; 2641 2642 case 'right': 2643 case 'up': 2644 2645 slideCount = 2646 _.options.swipeToSlide ? 2647 _.checkNavigable( _.currentSlide - _.getSlideCount() ) : 2648 _.currentSlide - _.getSlideCount(); 2649 2650 _.currentDirection = 1; 2651 2652 break; 2653
vendor: 3,992 bytes, lines 2654-2785
2654 default: 2655 2656 2657 } 2658 2659 if( direction != 'vertical' ) { 2660 2661 _.slideHandler( slideCount ); 2662 _.touchObject = {}; 2663 _.$slider.trigger('swipe', [_, direction ]); 2664 2665 } 2666 2667 } else { 2668 2669 if ( _.touchObject.startX !== _.touchObject.curX ) { 2670 2671 _.slideHandler( _.currentSlide ); 2672 _.touchObject = {}; 2673 2674 } 2675 2676 } 2677 2678 }; 2679 2680 Slick.prototype.swipeHandler = function(event) { 2681 2682 var _ = this; 2683 2684 if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) { 2685 return; 2686 } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) { 2687 return; 2688 } 2689 2690 _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? 2691 event.originalEvent.touches.length : 1; 2692 2693 _.touchObject.minSwipe = _.listWidth / _.options 2694 .touchThreshold; 2695 2696 if (_.options.verticalSwiping === true) { 2697 _.touchObject.minSwipe = _.listHeight / _.options 2698 .touchThreshold; 2699 } 2700 2701 switch (event.data.action) { 2702 2703 case 'start': 2704 _.swipeStart(event); 2705 break; 2706 2707 case 'move': 2708 _.swipeMove(event); 2709 break; 2710 2711 case 'end': 2712 _.swipeEnd(event); 2713 break; 2714 2715 } 2716 2717 }; 2718 2719 Slick.prototype.swipeMove = function(event) { 2720 2721 var _ = this, 2722 edgeWasHit = false, 2723 curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength; 2724 2725 touches = event.originalEvent !== undefined ? event.originalEvent.touches : null; 2726 2727 if (!_.dragging || _.scrolling || touches && touches.length !== 1) { 2728 return false; 2729 } 2730 2731 curLeft = _.getLeft(_.currentSlide); 2732 2733 _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX; 2734 _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY; 2735 2736 _.touchObject.swipeLength = Math.round(Math.sqrt( 2737 Math.pow(_.touchObject.curX - _.touchObject.startX, 2))); 2738 2739 verticalSwipeLength = Math.round(Math.sqrt( 2740 Math.pow(_.touchObject.curY - _.touchObject.startY, 2))); 2741 2742 if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) { 2743 _.scrolling = true; 2744 return false; 2745 } 2746 2747 if (_.options.verticalSwiping === true) { 2748 _.touchObject.swipeLength = verticalSwipeLength; 2749 } 2750 2751 swipeDirection = _.swipeDirection(); 2752 2753 if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) { 2754 _.swiping = true; 2755 event.preventDefault(); 2756 } 2757 2758 positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); 2759 if (_.options.verticalSwiping === true) { 2760 positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; 2761 } 2762 2763 2764 swipeLength = _.touchObject.swipeLength; 2765 2766 _.touchObject.edgeHit = false; 2767 2768 if (_.options.infinite === false) { 2769 if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) { 2770 swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; 2771 _.touchObject.edgeHit = true; 2772 } 2773 } 2774 2775 if (_.options.vertical === false) { 2776 _.swipeLeft = curLeft + swipeLength * positionOffset; 2777 } else { 2778 _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset; 2779 } 2780 if (_.options.verticalSwiping === true) { 2781 _.swipeLeft = curLeft + swipeLength * positionOffset; 2782 } 2783 2784 if (_.options.fade === true || _.options.touchMove === false) { 2785 return false;
2786 } 2787 2788 if (_.animating === true) { 2789 _.swipeLeft = null; 2790 return false; 2791 } 2792 2793 _.setCSS(_.swipeLeft); 2794 2795 }; 2796 2797 Slick.prototype.swipeStart = function(event) { 2798 2799 var _ = this, 2800 touches; 2801 2802 _.interrupted = true; 2803 2804 if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { 2805 _.touchObject = {}; 2806 return false; 2807 } 2808 2809 if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) { 2810 touches = event.originalEvent.touches[0]; 2811 } 2812 2813 _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX; 2814 _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY; 2815 2816 _.dragging = true; 2817 2818 }; 2819 2820 Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { 2821 2822 var _ = this; 2823 2824 if (_.$slidesCache !== null) { 2825 2826 _.unload(); 2827 2828 _.$slideTrack.children(this.options.slide).detach(); 2829 2830 _.$slidesCache.appendTo(_.$slideTrack); 2831 2832 _.reinit(); 2833 2834 } 2835 2836 }; 2837 2838 Slick.prototype.unload = function() { 2839 2840 var _ = this; 2841 2842 $('.slick-cloned', _.$slider).remove(); 2843 2844 if (_.$dots) { 2845 _.$dots.remove(); 2846 } 2847 2848 if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) { 2849 _.$prevArrow.remove(); 2850 } 2851 2852 if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) { 2853 _.$nextArrow.remove(); 2854 } 2855 2856 _.$slides 2857 .removeClass('slick-slide slick-active slick-visible slick-current') 2858 .attr('aria-hidden', 'true') 2859 .css('width', ''); 2860 2861 }; 2862 2863 Slick.prototype.unslick = function(fromBreakpoint) { 2864 2865 var _ = this; 2866 _.$slider.trigger('unslick', [_, fromBreakpoint]); 2867 _.destroy(); 2868 2869 }; 2870 2871 Slick.prototype.updateArrows = function() { 2872 2873 var _ = this, 2874 centerOffset; 2875 2876 centerOffset = Math.floor(_.options.slidesToShow / 2); 2877 2878 if ( _.options.arrows === true && 2879 _.slideCount > _.options.slidesToShow && 2880 !_.options.infinite ) { 2881 2882 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 2883 _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 2884 2885 if (_.currentSlide === 0) { 2886 2887 _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 2888 _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 2889 2890 } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { 2891 2892 _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 2893 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 2894 2895 } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { 2896 2897 _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 2898 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 2899 2900 } 2901 2902 } 2903 2904 }; 2905 2906 Slick.prototype.updateDots = function() { 2907 2908 var _ = this; 2909 2910 if (_.$dots !== null) { 2911 2912 _.$dots 2913 .find('li') 2914 .removeClass('slick-active') 2915 .end(); 2916 2917 _.$dots 2918 .find('li') 2919 .eq(Math.floor(_.currentSlide / _.options.slidesToScroll)) 2920 .addClass('slick-active'); 2921 2922 } 2923 2924 }; 2925 2926 Slick.prototype.visibility = function() { 2927 2928 var _ = this; 2929 2930 if ( _.options.autoplay ) { 2931 2932 if ( document[_.hidden] ) { 2933 2934 _.interrupted = true; 2935 2936 } else { 2937 2938 _.interrupted = false; 2939 2940 } 2941 2942 } 2943 2944 }; 2945 2946 $.fn.slick = function() { 2947 var _ = this, 2948 opt = arguments[0], 2949 args = Array.prototype.slice.call(arguments, 1), 2950 l = _.length, 2951 i, 2952 ret; 2953 for (i = 0; i < l; i++) { 2954 if (typeof opt == 'object' || typeof opt == 'undefined') 2955 _[i].slick = new Slick(_[i], opt); 2956 else 2957 ret = _[i].slick[opt].apply(_[i].slick, args); 2958 if (typeof ret != 'undefined') return ret; 2959 } 2960 return _; 2961 }; 2962 2963})); 2964 2965/*! 2966 * Masonry PACKAGED v4.2.2 2967 * Cascading grid layout library 2968 * https://masonry.desandro.com 2969 * MIT License 2970 * by David DeSandro 2971 */ 2972 2973( function( window, factory ) { 2974 if ( typeof define == 'function' && define.amd ) { 2975 define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) { 2976 return factory( window, jQuery ); 2977 }); 2978 } else if ( typeof module == 'object' && module.exports ) { 2979 module.exports = factory( 2980 window, 2981 require('jquery') 2982 ); 2983 } else { 2984 window.jQueryBridget = factory( 2985 window, 2986 window.jQuery 2987 ); 2988 } 2989 2990}( window, function factory( window, jQuery ) { 2991'use strict'; 2992 2993var arraySlice = Array.prototype.slice; 2994 2995var console = window.console; 2996var logError = typeof console == 'undefined' ? function() {} : 2997 function( message ) { 2998 console.error( message ); 2999 }; 3000 3001function jQueryBridget( namespace, PluginClass, $ ) { 3002 $ = $ || jQuery || window.jQuery; 3003 if ( !$ ) { 3004 return; 3005 } 3006 3007 if ( !PluginClass.prototype.option ) { 3008 PluginClass.prototype.option = function( opts ) { 3009 if ( !$.isPlainObject( opts ) ){ 3010 return; 3011 } 3012 this.options = $.extend( true, this.options, opts ); 3013 }; 3014 } 3015 3016 $.fn[ namespace ] = function( arg0 ) { 3017 if ( typeof arg0 == 'string' ) { 3018 var args = arraySlice.call( arguments, 1 ); 3019 return methodCall( this, arg0, args ); 3020 } 3021 plainCall( this, arg0 ); 3022 return this; 3023 }; 3024 3025 function methodCall( $elems, methodName, args ) { 3026 var returnValue; 3027 var pluginMethodStr = '$().' + namespace + '("' + methodName + '")'; 3028 3029 $elems.each( function( i, elem ) { 3030 var instance = $.data( elem, namespace ); 3031 if ( !instance ) { 3032 logError( namespace + ' not initialized. Cannot call methods, i.e. ' + 3033 pluginMethodStr ); 3034 return; 3035 } 3036 3037 var method = instance[ methodName ]; 3038 if ( !method || methodName.charAt(0) == '_' ) { 3039 logError( pluginMethodStr + ' is not a valid method' ); 3040 return; 3041 } 3042 3043 var value = method.apply( instance, args ); 3044 returnValue = returnValue === undefined ? value : returnValue; 3045 }); 3046 3047 return returnValue !== undefined ? returnValue : $elems; 3048 } 3049 3050 function plainCall( $elems, options ) { 3051 $elems.each( function( i, elem ) { 3052 var instance = $.data( elem, namespace ); 3053 if ( instance ) { 3054 instance.option( options ); 3055 instance._init(); 3056 } else { 3057 instance = new PluginClass( elem, options ); 3058 $.data( elem, namespace, instance ); 3059 } 3060 }); 3061 } 3062 3063 updateJQuery( $ ); 3064 3065} 3066 3067function updateJQuery( $ ) { 3068 if ( !$ || ( $ && $.bridget ) ) { 3069 return; 3070 } 3071 $.bridget = jQueryBridget; 3072} 3073 3074updateJQuery( jQuery || window.jQuery ); 3075 3076return jQueryBridget; 3077 3078})); 3079 3080( function( global, factory ) { 3081 if ( typeof define == 'function' && define.amd ) { 3082 define( 'ev-emitter/ev-emitter',factory ); 3083 } else if ( typeof module == 'object' && module.exports ) { 3084 module.exports = factory(); 3085 } else { 3086 global.EvEmitter = factory(); 3087 } 3088 3089}( typeof window != 'undefined' ? window : this, function() { 3090 3091 3092 3093function EvEmitter() {} 3094 3095var proto = EvEmitter.prototype; 3096 3097proto.on = function( eventName, listener ) { 3098 if ( !eventName || !listener ) { 3099 return; 3100 } 3101 var events = this._events = this._events || {}; 3102 var listeners = events[ eventName ] = events[ eventName ] || []; 3103 if ( listeners.indexOf( listener ) == -1 ) { 3104 listeners.push( listener ); 3105 } 3106 3107 return this; 3108}; 3109 3110proto.once = function( eventName, listener ) { 3111 if ( !eventName || !listener ) { 3112 return; 3113 } 3114 this.on( eventName, listener ); 3115 var onceEvents = this._onceEvents = this._onceEvents || {}; 3116 var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; 3117 onceListeners[ listener ] = true; 3118 3119 return this; 3120}; 3121 3122proto.off = function( eventName, listener ) { 3123 var listeners = this._events && this._events[ eventName ]; 3124 if ( !listeners || !listeners.length ) { 3125 return; 3126 } 3127 var index = listeners.indexOf( listener ); 3128 if ( index != -1 ) { 3129 listeners.splice( index, 1 ); 3130 } 3131 3132 return this; 3133}; 3134 3135proto.emitEvent = function( eventName, args ) { 3136 var listeners = this._events && this._events[ eventName ]; 3137 if ( !listeners || !listeners.length ) { 3138 return; 3139 } 3140 listeners = listeners.slice(0); 3141 args = args || []; 3142 var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; 3143 3144 for ( var i=0; i < listeners.length; i++ ) { 3145 var listener = listeners[i] 3146 var isOnce = onceListeners && onceListeners[ listener ]; 3147 if ( isOnce ) { 3148 this.off( eventName, listener ); 3149 delete onceListeners[ listener ]; 3150 } 3151 listener.apply( this, args ); 3152 } 3153 3154 return this; 3155}; 3156 3157proto.allOff = function() { 3158 delete this._events; 3159 delete this._onceEvents; 3160}; 3161 3162return EvEmitter; 3163 3164})); 3165 3166/*! 3167 * getSize v2.0.3 3168 * measure size of elements 3169 * MIT license 3170 */ 3171 3172( function( window, factory ) { 3173 if ( typeof define == 'function' && define.amd ) { 3174 define( 'get-size/get-size',factory ); 3175 } else if ( typeof module == 'object' && module.exports ) { 3176 module.exports = factory(); 3177 } else { 3178 window.getSize = factory(); 3179 } 3180 3181})( window, function factory() { 3182'use strict'; 3183 3184function getStyleSize( value ) { 3185 var num = parseFloat( value ); 3186 var isValid = value.indexOf('%') == -1 && !isNaN( num ); 3187 return isValid && num; 3188} 3189 3190function noop() {} 3191 3192var logError = typeof console == 'undefined' ? noop : 3193 function( message ) { 3194 console.error( message ); 3195 }; 3196 3197var measurements = [ 3198 'paddingLeft', 3199 'paddingRight', 3200 'paddingTop', 3201 'paddingBottom', 3202 'marginLeft', 3203 'marginRight', 3204 'marginTop', 3205 'marginBottom', 3206 'borderLeftWidth', 3207 'borderRightWidth', 3208 'borderTopWidth', 3209 'borderBottomWidth' 3210]; 3211 3212var measurementsLength = measurements.length; 3213 3214function getZeroSize() { 3215 var size = { 3216 width: 0, 3217 height: 0, 3218 innerWidth: 0, 3219 innerHeight: 0, 3220 outerWidth: 0, 3221 outerHeight: 0 3222 }; 3223 for ( var i=0; i < measurementsLength; i++ ) { 3224 var measurement = measurements[i]; 3225 size[ measurement ] = 0; 3226 } 3227 return size; 3228} 3229 3230function getStyle( elem ) { 3231 var style = getComputedStyle( elem ); 3232 if ( !style ) { 3233 logError( 'Style returned ' + style + 3234 '. Are you running this code in a hidden iframe on Firefox? ' + 3235 'See https://bit.ly/getsizebug1' ); 3236 } 3237 return style; 3238} 3239 3240var isSetup = false;
vendor: 22,268 bytes, lines 3241-4158
3241 3242var isBoxSizeOuter; 3243 3244function setup() { 3245 if ( isSetup ) { 3246 return; 3247 } 3248 isSetup = true; 3249 3250 var div = document.createElement('div'); 3251 div.style.width = '200px'; 3252 div.style.padding = '1px 2px 3px 4px'; 3253 div.style.borderStyle = 'solid'; 3254 div.style.borderWidth = '1px 2px 3px 4px'; 3255 div.style.boxSizing = 'border-box'; 3256 3257 var body = document.body || document.documentElement; 3258 body.appendChild( div ); 3259 var style = getStyle( div ); 3260 isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200; 3261 getSize.isBoxSizeOuter = isBoxSizeOuter; 3262 3263 body.removeChild( div ); 3264} 3265 3266function getSize( elem ) { 3267 setup(); 3268 3269 if ( typeof elem == 'string' ) { 3270 elem = document.querySelector( elem ); 3271 } 3272 3273 if ( !elem || typeof elem != 'object' || !elem.nodeType ) { 3274 return; 3275 } 3276 3277 var style = getStyle( elem ); 3278 3279 if ( style.display == 'none' ) { 3280 return getZeroSize(); 3281 } 3282 3283 var size = {}; 3284 size.width = elem.offsetWidth; 3285 size.height = elem.offsetHeight; 3286 3287 var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; 3288 3289 for ( var i=0; i < measurementsLength; i++ ) { 3290 var measurement = measurements[i]; 3291 var value = style[ measurement ]; 3292 var num = parseFloat( value ); 3293 size[ measurement ] = !isNaN( num ) ? num : 0; 3294 } 3295 3296 var paddingWidth = size.paddingLeft + size.paddingRight; 3297 var paddingHeight = size.paddingTop + size.paddingBottom; 3298 var marginWidth = size.marginLeft + size.marginRight; 3299 var marginHeight = size.marginTop + size.marginBottom; 3300 var borderWidth = size.borderLeftWidth + size.borderRightWidth; 3301 var borderHeight = size.borderTopWidth + size.borderBottomWidth; 3302 3303 var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; 3304 3305 var styleWidth = getStyleSize( style.width ); 3306 if ( styleWidth !== false ) { 3307 size.width = styleWidth + 3308 ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth ); 3309 } 3310 3311 var styleHeight = getStyleSize( style.height ); 3312 if ( styleHeight !== false ) { 3313 size.height = styleHeight + 3314 ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight ); 3315 } 3316 3317 size.innerWidth = size.width - ( paddingWidth + borderWidth ); 3318 size.innerHeight = size.height - ( paddingHeight + borderHeight ); 3319 3320 size.outerWidth = size.width + marginWidth; 3321 size.outerHeight = size.height + marginHeight; 3322 3323 return size; 3324} 3325 3326return getSize; 3327 3328}); 3329 3330( function( window, factory ) { 3331 'use strict'; 3332 if ( typeof define == 'function' && define.amd ) { 3333 define( 'desandro-matches-selector/matches-selector',factory ); 3334 } else if ( typeof module == 'object' && module.exports ) { 3335 module.exports = factory(); 3336 } else { 3337 window.matchesSelector = factory(); 3338 } 3339 3340}( window, function factory() { 3341 'use strict'; 3342 3343 var matchesMethod = ( function() { 3344 var ElemProto = window.Element.prototype; 3345 if ( ElemProto.matches ) { 3346 return 'matches'; 3347 } 3348 if ( ElemProto.matchesSelector ) { 3349 return 'matchesSelector'; 3350 } 3351 var prefixes = [ 'webkit', 'moz', 'ms', 'o' ]; 3352 3353 for ( var i=0; i < prefixes.length; i++ ) { 3354 var prefix = prefixes[i]; 3355 var method = prefix + 'MatchesSelector'; 3356 if ( ElemProto[ method ] ) { 3357 return method; 3358 } 3359 } 3360 })(); 3361 3362 return function matchesSelector( elem, selector ) { 3363 return elem[ matchesMethod ]( selector ); 3364 }; 3365 3366})); 3367 3368( function( window, factory ) { 3369 if ( typeof define == 'function' && define.amd ) { 3370 define( 'fizzy-ui-utils/utils',[ 3371 'desandro-matches-selector/matches-selector' 3372 ], function( matchesSelector ) { 3373 return factory( window, matchesSelector ); 3374 }); 3375 } else if ( typeof module == 'object' && module.exports ) { 3376 module.exports = factory( 3377 window, 3378 require('desandro-matches-selector') 3379 ); 3380 } else { 3381 window.fizzyUIUtils = factory( 3382 window, 3383 window.matchesSelector 3384 ); 3385 } 3386 3387}( window, function factory( window, matchesSelector ) { 3388 3389 3390 3391var utils = {}; 3392 3393utils.extend = function( a, b ) { 3394 for ( var prop in b ) { 3395 a[ prop ] = b[ prop ]; 3396 } 3397 return a; 3398}; 3399 3400utils.modulo = function( num, div ) { 3401 return ( ( num % div ) + div ) % div; 3402}; 3403 3404var arraySlice = Array.prototype.slice; 3405 3406utils.makeArray = function( obj ) { 3407 if ( Array.isArray( obj ) ) { 3408 return obj; 3409 } 3410 if ( obj === null || obj === undefined ) { 3411 return []; 3412 } 3413 3414 var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number'; 3415 if ( isArrayLike ) { 3416 return arraySlice.call( obj ); 3417 } 3418 3419 return [ obj ]; 3420}; 3421 3422utils.removeFrom = function( ary, obj ) { 3423 var index = ary.indexOf( obj ); 3424 if ( index != -1 ) { 3425 ary.splice( index, 1 ); 3426 } 3427}; 3428 3429utils.getParent = function( elem, selector ) { 3430 while ( elem.parentNode && elem != document.body ) { 3431 elem = elem.parentNode; 3432 if ( matchesSelector( elem, selector ) ) { 3433 return elem; 3434 } 3435 } 3436}; 3437 3438utils.getQueryElement = function( elem ) { 3439 if ( typeof elem == 'string' ) { 3440 return document.querySelector( elem ); 3441 } 3442 return elem; 3443}; 3444 3445utils.handleEvent = function( event ) { 3446 var method = 'on' + event.type; 3447 if ( this[ method ] ) { 3448 this[ method ]( event ); 3449 } 3450}; 3451 3452utils.filterFindElements = function( elems, selector ) { 3453 elems = utils.makeArray( elems ); 3454 var ffElems = []; 3455 3456 elems.forEach( function( elem ) { 3457 if ( !( elem instanceof HTMLElement ) ) { 3458 return; 3459 } 3460 if ( !selector ) { 3461 ffElems.push( elem ); 3462 return; 3463 } 3464 if ( matchesSelector( elem, selector ) ) { 3465 ffElems.push( elem ); 3466 } 3467 var childElems = elem.querySelectorAll( selector ); 3468 for ( var i=0; i < childElems.length; i++ ) { 3469 ffElems.push( childElems[i] ); 3470 } 3471 }); 3472 3473 return ffElems; 3474}; 3475 3476utils.debounceMethod = function( _class, methodName, threshold ) { 3477 threshold = threshold || 100; 3478 var method = _class.prototype[ methodName ]; 3479 var timeoutName = methodName + 'Timeout'; 3480 3481 _class.prototype[ methodName ] = function() { 3482 var timeout = this[ timeoutName ]; 3483 clearTimeout( timeout ); 3484 3485 var args = arguments; 3486 var _this = this; 3487 this[ timeoutName ] = setTimeout( function() { 3488 method.apply( _this, args ); 3489 delete _this[ timeoutName ]; 3490 }, threshold ); 3491 }; 3492}; 3493 3494utils.docReady = function( callback ) { 3495 var readyState = document.readyState; 3496 if ( readyState == 'complete' || readyState == 'interactive' ) { 3497 setTimeout( callback ); 3498 } else { 3499 document.addEventListener( 'DOMContentLoaded', callback ); 3500 } 3501}; 3502 3503utils.toDashed = function( str ) { 3504 return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) { 3505 return $1 + '-' + $2; 3506 }).toLowerCase(); 3507}; 3508 3509var console = window.console; 3510utils.htmlInit = function( WidgetClass, namespace ) { 3511 utils.docReady( function() { 3512 var dashedNamespace = utils.toDashed( namespace ); 3513 var dataAttr = 'data-' + dashedNamespace; 3514 var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' ); 3515 var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace ); 3516 var elems = utils.makeArray( dataAttrElems ) 3517 .concat( utils.makeArray( jsDashElems ) ); 3518 var dataOptionsAttr = dataAttr + '-options'; 3519 var jQuery = window.jQuery; 3520 3521 elems.forEach( function( elem ) { 3522 var attr = elem.getAttribute( dataAttr ) || 3523 elem.getAttribute( dataOptionsAttr ); 3524 var options; 3525 try { 3526 options = attr && JSON.parse( attr ); 3527 } catch ( error ) { 3528 if ( console ) { 3529 console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className + 3530 ': ' + error ); 3531 } 3532 return; 3533 } 3534 var instance = new WidgetClass( elem, options ); 3535 if ( jQuery ) { 3536 jQuery.data( elem, namespace, instance ); 3537 } 3538 }); 3539 3540 }); 3541}; 3542 3543return utils; 3544 3545})); 3546 3547( function( window, factory ) { 3548 if ( typeof define == 'function' && define.amd ) { 3549 define( 'outlayer/item',[ 3550 'ev-emitter/ev-emitter', 3551 'get-size/get-size' 3552 ], 3553 factory 3554 ); 3555 } else if ( typeof module == 'object' && module.exports ) { 3556 module.exports = factory( 3557 require('ev-emitter'), 3558 require('get-size') 3559 ); 3560 } else { 3561 window.Outlayer = {}; 3562 window.Outlayer.Item = factory( 3563 window.EvEmitter, 3564 window.getSize 3565 ); 3566 } 3567 3568}( window, function factory( EvEmitter, getSize ) { 3569'use strict'; 3570 3571function isEmptyObj( obj ) { 3572 for ( var prop in obj ) { 3573 return false; 3574 } 3575 prop = null; 3576 return true; 3577} 3578 3579var docElemStyle = document.documentElement.style; 3580 3581var transitionProperty = typeof docElemStyle.transition == 'string' ? 3582 'transition' : 'WebkitTransition'; 3583var transformProperty = typeof docElemStyle.transform == 'string' ? 3584 'transform' : 'WebkitTransform'; 3585 3586var transitionEndEvent = { 3587 WebkitTransition: 'webkitTransitionEnd', 3588 transition: 'transitionend' 3589}[ transitionProperty ]; 3590 3591var vendorProperties = { 3592 transform: transformProperty, 3593 transition: transitionProperty, 3594 transitionDuration: transitionProperty + 'Duration', 3595 transitionProperty: transitionProperty + 'Property', 3596 transitionDelay: transitionProperty + 'Delay' 3597}; 3598 3599function Item( element, layout ) { 3600 if ( !element ) { 3601 return; 3602 } 3603 3604 this.element = element; 3605 this.layout = layout; 3606 this.position = { 3607 x: 0, 3608 y: 0 3609 }; 3610 3611 this._create(); 3612} 3613 3614var proto = Item.prototype = Object.create( EvEmitter.prototype ); 3615proto.constructor = Item; 3616 3617proto._create = function() { 3618 this._transn = { 3619 ingProperties: {}, 3620 clean: {}, 3621 onEnd: {} 3622 }; 3623 3624 this.css({ 3625 position: 'absolute' 3626 }); 3627}; 3628 3629proto.handleEvent = function( event ) { 3630 var method = 'on' + event.type; 3631 if ( this[ method ] ) { 3632 this[ method ]( event ); 3633 } 3634}; 3635 3636proto.getSize = function() { 3637 this.size = getSize( this.element ); 3638}; 3639 3640proto.css = function( style ) { 3641 var elemStyle = this.element.style; 3642 3643 for ( var prop in style ) { 3644 var supportedProp = vendorProperties[ prop ] || prop; 3645 elemStyle[ supportedProp ] = style[ prop ]; 3646 } 3647}; 3648 3649proto.getPosition = function() { 3650 var style = getComputedStyle( this.element ); 3651 var isOriginLeft = this.layout._getOption('originLeft'); 3652 var isOriginTop = this.layout._getOption('originTop'); 3653 var xValue = style[ isOriginLeft ? 'left' : 'right' ]; 3654 var yValue = style[ isOriginTop ? 'top' : 'bottom' ]; 3655 var x = parseFloat( xValue ); 3656 var y = parseFloat( yValue ); 3657 var layoutSize = this.layout.size; 3658 if ( xValue.indexOf('%') != -1 ) { 3659 x = ( x / 100 ) * layoutSize.width; 3660 } 3661 if ( yValue.indexOf('%') != -1 ) { 3662 y = ( y / 100 ) * layoutSize.height; 3663 } 3664 x = isNaN( x ) ? 0 : x; 3665 y = isNaN( y ) ? 0 : y; 3666 x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight; 3667 y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom; 3668 3669 this.position.x = x; 3670 this.position.y = y; 3671}; 3672 3673proto.layoutPosition = function() { 3674 var layoutSize = this.layout.size; 3675 var style = {}; 3676 var isOriginLeft = this.layout._getOption('originLeft'); 3677 var isOriginTop = this.layout._getOption('originTop'); 3678 3679 var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight'; 3680 var xProperty = isOriginLeft ? 'left' : 'right'; 3681 var xResetProperty = isOriginLeft ? 'right' : 'left'; 3682 3683 var x = this.position.x + layoutSize[ xPadding ]; 3684 style[ xProperty ] = this.getXValue( x ); 3685 style[ xResetProperty ] = ''; 3686 3687 var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom'; 3688 var yProperty = isOriginTop ? 'top' : 'bottom'; 3689 var yResetProperty = isOriginTop ? 'bottom' : 'top'; 3690 3691 var y = this.position.y + layoutSize[ yPadding ]; 3692 style[ yProperty ] = this.getYValue( y ); 3693 style[ yResetProperty ] = ''; 3694 3695 this.css( style ); 3696 this.emitEvent( 'layout', [ this ] ); 3697}; 3698 3699proto.getXValue = function( x ) { 3700 var isHorizontal = this.layout._getOption('horizontal'); 3701 return this.layout.options.percentPosition && !isHorizontal ? 3702 ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px'; 3703}; 3704 3705proto.getYValue = function( y ) { 3706 var isHorizontal = this.layout._getOption('horizontal'); 3707 return this.layout.options.percentPosition && isHorizontal ? 3708 ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px'; 3709}; 3710 3711proto._transitionTo = function( x, y ) { 3712 this.getPosition(); 3713 var curX = this.position.x; 3714 var curY = this.position.y; 3715 3716 var didNotMove = x == this.position.x && y == this.position.y; 3717 3718 this.setPosition( x, y ); 3719 3720 if ( didNotMove && !this.isTransitioning ) { 3721 this.layoutPosition(); 3722 return; 3723 } 3724 3725 var transX = x - curX; 3726 var transY = y - curY; 3727 var transitionStyle = {}; 3728 transitionStyle.transform = this.getTranslate( transX, transY ); 3729 3730 this.transition({ 3731 to: transitionStyle, 3732 onTransitionEnd: { 3733 transform: this.layoutPosition 3734 }, 3735 isCleaning: true 3736 }); 3737}; 3738 3739proto.getTranslate = function( x, y ) { 3740 var isOriginLeft = this.layout._getOption('originLeft'); 3741 var isOriginTop = this.layout._getOption('originTop'); 3742 x = isOriginLeft ? x : -x; 3743 y = isOriginTop ? y : -y; 3744 return 'translate3d(' + x + 'px, ' + y + 'px, 0)'; 3745}; 3746 3747proto.goTo = function( x, y ) { 3748 this.setPosition( x, y ); 3749 this.layoutPosition(); 3750}; 3751 3752proto.moveTo = proto._transitionTo; 3753 3754proto.setPosition = function( x, y ) { 3755 this.position.x = parseFloat( x ); 3756 this.position.y = parseFloat( y ); 3757}; 3758 3759proto._nonTransition = function( args ) { 3760 this.css( args.to ); 3761 if ( args.isCleaning ) { 3762 this._removeStyles( args.to ); 3763 } 3764 for ( var prop in args.onTransitionEnd ) { 3765 args.onTransitionEnd[ prop ].call( this ); 3766 } 3767}; 3768 3769proto.transition = function( args ) { 3770 if ( !parseFloat( this.layout.options.transitionDuration ) ) { 3771 this._nonTransition( args ); 3772 return; 3773 } 3774 3775 var _transition = this._transn; 3776 for ( var prop in args.onTransitionEnd ) { 3777 _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ]; 3778 } 3779 for ( prop in args.to ) { 3780 _transition.ingProperties[ prop ] = true; 3781 if ( args.isCleaning ) { 3782 _transition.clean[ prop ] = true; 3783 } 3784 } 3785 3786 if ( args.from ) { 3787 this.css( args.from ); 3788 var h = this.element.offsetHeight; 3789 h = null; 3790 } 3791 this.enableTransition( args.to ); 3792 this.css( args.to ); 3793 3794 this.isTransitioning = true; 3795 3796}; 3797 3798function toDashedAll( str ) { 3799 return str.replace( /([A-Z])/g, function( $1 ) { 3800 return '-' + $1.toLowerCase(); 3801 }); 3802} 3803 3804var transitionProps = 'opacity,' + toDashedAll( transformProperty ); 3805 3806proto.enableTransition = function() { 3807 if ( this.isTransitioning ) { 3808 return; 3809 } 3810 3811 var duration = this.layout.options.transitionDuration; 3812 duration = typeof duration == 'number' ? duration + 'ms' : duration; 3813 this.css({ 3814 transitionProperty: transitionProps, 3815 transitionDuration: duration, 3816 transitionDelay: this.staggerDelay || 0 3817 }); 3818 this.element.addEventListener( transitionEndEvent, this, false ); 3819}; 3820 3821proto.onwebkitTransitionEnd = function( event ) { 3822 this.ontransitionend( event ); 3823}; 3824 3825proto.onotransitionend = function( event ) { 3826 this.ontransitionend( event ); 3827}; 3828 3829var dashedVendorProperties = { 3830 '-webkit-transform': 'transform' 3831}; 3832 3833proto.ontransitionend = function( event ) { 3834 if ( event.target !== this.element ) { 3835 return; 3836 } 3837 var _transition = this._transn; 3838 var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName; 3839 3840 delete _transition.ingProperties[ propertyName ]; 3841 if ( isEmptyObj( _transition.ingProperties ) ) { 3842 this.disableTransition(); 3843 } 3844 if ( propertyName in _transition.clean ) { 3845 this.element.style[ event.propertyName ] = ''; 3846 delete _transition.clean[ propertyName ]; 3847 } 3848 if ( propertyName in _transition.onEnd ) { 3849 var onTransitionEnd = _transition.onEnd[ propertyName ]; 3850 onTransitionEnd.call( this ); 3851 delete _transition.onEnd[ propertyName ]; 3852 } 3853 3854 this.emitEvent( 'transitionEnd', [ this ] ); 3855}; 3856 3857proto.disableTransition = function() { 3858 this.removeTransitionStyles(); 3859 this.element.removeEventListener( transitionEndEvent, this, false ); 3860 this.isTransitioning = false; 3861}; 3862 3863proto._removeStyles = function( style ) { 3864 var cleanStyle = {}; 3865 for ( var prop in style ) { 3866 cleanStyle[ prop ] = ''; 3867 } 3868 this.css( cleanStyle ); 3869}; 3870 3871var cleanTransitionStyle = { 3872 transitionProperty: '', 3873 transitionDuration: '', 3874 transitionDelay: '' 3875}; 3876 3877proto.removeTransitionStyles = function() { 3878 this.css( cleanTransitionStyle ); 3879}; 3880 3881proto.stagger = function( delay ) { 3882 delay = isNaN( delay ) ? 0 : delay; 3883 this.staggerDelay = delay + 'ms'; 3884}; 3885 3886proto.removeElem = function() { 3887 this.element.parentNode.removeChild( this.element ); 3888 this.css({ display: '' }); 3889 this.emitEvent( 'remove', [ this ] ); 3890}; 3891 3892proto.remove = function() { 3893 if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) { 3894 this.removeElem(); 3895 return; 3896 } 3897 3898 this.once( 'transitionEnd', function() { 3899 this.removeElem(); 3900 }); 3901 this.hide(); 3902}; 3903 3904proto.reveal = function() { 3905 delete this.isHidden; 3906 this.css({ display: '' }); 3907 3908 var options = this.layout.options; 3909 3910 var onTransitionEnd = {}; 3911 var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle'); 3912 onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd; 3913 3914 this.transition({ 3915 from: options.hiddenStyle, 3916 to: options.visibleStyle, 3917 isCleaning: true, 3918 onTransitionEnd: onTransitionEnd 3919 }); 3920}; 3921 3922proto.onRevealTransitionEnd = function() { 3923 if ( !this.isHidden ) { 3924 this.emitEvent('reveal'); 3925 } 3926}; 3927 3928proto.getHideRevealTransitionEndProperty = function( styleProperty ) { 3929 var optionStyle = this.layout.options[ styleProperty ]; 3930 if ( optionStyle.opacity ) { 3931 return 'opacity'; 3932 } 3933 for ( var prop in optionStyle ) { 3934 return prop; 3935 } 3936}; 3937 3938proto.hide = function() { 3939 this.isHidden = true; 3940 this.css({ display: '' }); 3941 3942 var options = this.layout.options; 3943 3944 var onTransitionEnd = {}; 3945 var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle'); 3946 onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd; 3947 3948 this.transition({ 3949 from: options.visibleStyle, 3950 to: options.hiddenStyle, 3951 isCleaning: true, 3952 onTransitionEnd: onTransitionEnd 3953 }); 3954}; 3955 3956proto.onHideTransitionEnd = function() { 3957 if ( this.isHidden ) { 3958 this.css({ display: 'none' }); 3959 this.emitEvent('hide'); 3960 } 3961}; 3962 3963proto.destroy = function() { 3964 this.css({ 3965 position: '', 3966 left: '', 3967 right: '', 3968 top: '', 3969 bottom: '', 3970 transition: '', 3971 transform: '' 3972 }); 3973}; 3974 3975return Item; 3976 3977})); 3978 3979/*! 3980 * Outlayer v2.1.1 3981 * the brains and guts of a layout library 3982 * MIT license 3983 */ 3984 3985( function( window, factory ) { 3986 'use strict'; 3987 if ( typeof define == 'function' && define.amd ) { 3988 define( 'outlayer/outlayer',[ 3989 'ev-emitter/ev-emitter', 3990 'get-size/get-size', 3991 'fizzy-ui-utils/utils', 3992 './item' 3993 ], 3994 function( EvEmitter, getSize, utils, Item ) { 3995 return factory( window, EvEmitter, getSize, utils, Item); 3996 } 3997 ); 3998 } else if ( typeof module == 'object' && module.exports ) { 3999 module.exports = factory( 4000 window, 4001 require('ev-emitter'), 4002 require('get-size'), 4003 require('fizzy-ui-utils'), 4004 require('./item') 4005 ); 4006 } else { 4007 window.Outlayer = factory( 4008 window, 4009 window.EvEmitter, 4010 window.getSize, 4011 window.fizzyUIUtils, 4012 window.Outlayer.Item 4013 ); 4014 } 4015 4016}( window, function factory( window, EvEmitter, getSize, utils, Item ) { 4017'use strict'; 4018 4019var console = window.console; 4020var jQuery = window.jQuery; 4021var noop = function() {}; 4022 4023var GUID = 0; 4024var instances = {}; 4025 4026 4027function Outlayer( element, options ) { 4028 var queryElement = utils.getQueryElement( element ); 4029 if ( !queryElement ) { 4030 if ( console ) { 4031 console.error( 'Bad element for ' + this.constructor.namespace + 4032 ': ' + ( queryElement || element ) ); 4033 } 4034 return; 4035 } 4036 this.element = queryElement; 4037 if ( jQuery ) { 4038 this.$element = jQuery( this.element ); 4039 } 4040 4041 this.options = utils.extend( {}, this.constructor.defaults ); 4042 this.option( options ); 4043 4044 var id = ++GUID; 4045 this.element.outlayerGUID = id; 4046 instances[ id ] = this; 4047 4048 this._create(); 4049 4050 var isInitLayout = this._getOption('initLayout'); 4051 if ( isInitLayout ) { 4052 this.layout(); 4053 } 4054} 4055 4056Outlayer.namespace = 'outlayer'; 4057Outlayer.Item = Item; 4058 4059Outlayer.defaults = { 4060 containerStyle: { 4061 position: 'relative' 4062 }, 4063 initLayout: true, 4064 originLeft: true, 4065 originTop: true, 4066 resize: true, 4067 resizeContainer: true, 4068 transitionDuration: '0.4s', 4069 hiddenStyle: { 4070 opacity: 0, 4071 transform: 'scale(0.001)' 4072 }, 4073 visibleStyle: { 4074 opacity: 1, 4075 transform: 'scale(1)' 4076 } 4077}; 4078 4079var proto = Outlayer.prototype; 4080utils.extend( proto, EvEmitter.prototype ); 4081 4082proto.option = function( opts ) { 4083 utils.extend( this.options, opts ); 4084}; 4085 4086proto._getOption = function( option ) { 4087 var oldOption = this.constructor.compatOptions[ option ]; 4088 return oldOption && this.options[ oldOption ] !== undefined ? 4089 this.options[ oldOption ] : this.options[ option ]; 4090}; 4091 4092Outlayer.compatOptions = { 4093 initLayout: 'isInitLayout', 4094 horizontal: 'isHorizontal', 4095 layoutInstant: 'isLayoutInstant', 4096 originLeft: 'isOriginLeft', 4097 originTop: 'isOriginTop', 4098 resize: 'isResizeBound', 4099 resizeContainer: 'isResizingContainer' 4100}; 4101 4102proto._create = function() { 4103 this.reloadItems(); 4104 this.stamps = []; 4105 this.stamp( this.options.stamp ); 4106 utils.extend( this.element.style, this.options.containerStyle ); 4107 4108 var canBindResize = this._getOption('resize'); 4109 if ( canBindResize ) { 4110 this.bindResize(); 4111 } 4112}; 4113 4114proto.reloadItems = function() { 4115 this.items = this._itemize( this.element.children ); 4116}; 4117 4118 4119proto._itemize = function( elems ) { 4120 4121 var itemElems = this._filterFindItemElements( elems ); 4122 var Item = this.constructor.Item; 4123 4124 var items = []; 4125 for ( var i=0; i < itemElems.length; i++ ) { 4126 var elem = itemElems[i]; 4127 var item = new Item( elem, this ); 4128 items.push( item ); 4129 } 4130 4131 return items; 4132}; 4133 4134proto._filterFindItemElements = function( elems ) { 4135 return utils.filterFindElements( elems, this.options.itemSelector ); 4136}; 4137 4138proto.getItemElements = function() { 4139 return this.items.map( function( item ) { 4140 return item.element; 4141 }); 4142}; 4143 4144proto.layout = function() { 4145 this._resetLayout(); 4146 this._manageStamps(); 4147 4148 var layoutInstant = this._getOption('layoutInstant'); 4149 var isInstant = layoutInstant !== undefined ? 4150 layoutInstant : !this._isLayoutInited; 4151 this.layoutItems( this.items, isInstant ); 4152 4153 this._isLayoutInited = true; 4154}; 4155 4156proto._init = proto.layout; 4157 4158proto._resetLayout = function() {
vendor: 8,541 bytes, lines 4159-4534
4159 this.getSize(); 4160}; 4161 4162 4163proto.getSize = function() { 4164 this.size = getSize( this.element ); 4165}; 4166 4167proto._getMeasurement = function( measurement, size ) { 4168 var option = this.options[ measurement ]; 4169 var elem; 4170 if ( !option ) { 4171 this[ measurement ] = 0; 4172 } else { 4173 if ( typeof option == 'string' ) { 4174 elem = this.element.querySelector( option ); 4175 } else if ( option instanceof HTMLElement ) { 4176 elem = option; 4177 } 4178 this[ measurement ] = elem ? getSize( elem )[ size ] : option; 4179 } 4180}; 4181 4182proto.layoutItems = function( items, isInstant ) { 4183 items = this._getItemsForLayout( items ); 4184 4185 this._layoutItems( items, isInstant ); 4186 4187 this._postLayout(); 4188}; 4189 4190proto._getItemsForLayout = function( items ) { 4191 return items.filter( function( item ) { 4192 return !item.isIgnored; 4193 }); 4194}; 4195 4196proto._layoutItems = function( items, isInstant ) { 4197 this._emitCompleteOnItems( 'layout', items ); 4198 4199 if ( !items || !items.length ) { 4200 return; 4201 } 4202 4203 var queue = []; 4204 4205 items.forEach( function( item ) { 4206 var position = this._getItemLayoutPosition( item ); 4207 position.item = item; 4208 position.isInstant = isInstant || item.isLayoutInstant; 4209 queue.push( position ); 4210 }, this ); 4211 4212 this._processLayoutQueue( queue ); 4213}; 4214 4215proto._getItemLayoutPosition = function( ) { 4216 return { 4217 x: 0, 4218 y: 0 4219 }; 4220}; 4221 4222proto._processLayoutQueue = function( queue ) { 4223 this.updateStagger(); 4224 queue.forEach( function( obj, i ) { 4225 this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i ); 4226 }, this ); 4227}; 4228 4229proto.updateStagger = function() { 4230 var stagger = this.options.stagger; 4231 if ( stagger === null || stagger === undefined ) { 4232 this.stagger = 0; 4233 return; 4234 } 4235 this.stagger = getMilliseconds( stagger ); 4236 return this.stagger; 4237}; 4238 4239proto._positionItem = function( item, x, y, isInstant, i ) { 4240 if ( isInstant ) { 4241 item.goTo( x, y ); 4242 } else { 4243 item.stagger( i * this.stagger ); 4244 item.moveTo( x, y ); 4245 } 4246}; 4247 4248proto._postLayout = function() { 4249 this.resizeContainer(); 4250}; 4251 4252proto.resizeContainer = function() { 4253 var isResizingContainer = this._getOption('resizeContainer'); 4254 if ( !isResizingContainer ) { 4255 return; 4256 } 4257 var size = this._getContainerSize(); 4258 if ( size ) { 4259 this._setContainerMeasure( size.width, true ); 4260 this._setContainerMeasure( size.height, false ); 4261 } 4262}; 4263 4264proto._getContainerSize = noop; 4265 4266proto._setContainerMeasure = function( measure, isWidth ) { 4267 if ( measure === undefined ) { 4268 return; 4269 } 4270 4271 var elemSize = this.size; 4272 if ( elemSize.isBorderBox ) { 4273 measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight + 4274 elemSize.borderLeftWidth + elemSize.borderRightWidth : 4275 elemSize.paddingBottom + elemSize.paddingTop + 4276 elemSize.borderTopWidth + elemSize.borderBottomWidth; 4277 } 4278 4279 measure = Math.max( measure, 0 ); 4280 this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px'; 4281}; 4282 4283proto._emitCompleteOnItems = function( eventName, items ) { 4284 var _this = this; 4285 function onComplete() { 4286 _this.dispatchEvent( eventName + 'Complete', null, [ items ] ); 4287 } 4288 4289 var count = items.length; 4290 if ( !items || !count ) { 4291 onComplete(); 4292 return; 4293 } 4294 4295 var doneCount = 0; 4296 function tick() { 4297 doneCount++; 4298 if ( doneCount == count ) { 4299 onComplete(); 4300 } 4301 } 4302 4303 items.forEach( function( item ) { 4304 item.once( eventName, tick ); 4305 }); 4306}; 4307 4308proto.dispatchEvent = function( type, event, args ) { 4309 var emitArgs = event ? [ event ].concat( args ) : args; 4310 this.emitEvent( type, emitArgs ); 4311 4312 if ( jQuery ) { 4313 this.$element = this.$element || jQuery( this.element ); 4314 if ( event ) { 4315 var $event = jQuery.Event( event ); 4316 $event.type = type; 4317 this.$element.trigger( $event, args ); 4318 } else { 4319 this.$element.trigger( type, args ); 4320 } 4321 } 4322}; 4323 4324proto.ignore = function( elem ) { 4325 var item = this.getItem( elem ); 4326 if ( item ) { 4327 item.isIgnored = true; 4328 } 4329}; 4330 4331proto.unignore = function( elem ) { 4332 var item = this.getItem( elem ); 4333 if ( item ) { 4334 delete item.isIgnored; 4335 } 4336}; 4337 4338proto.stamp = function( elems ) { 4339 elems = this._find( elems ); 4340 if ( !elems ) { 4341 return; 4342 } 4343 4344 this.stamps = this.stamps.concat( elems ); 4345 elems.forEach( this.ignore, this ); 4346}; 4347 4348proto.unstamp = function( elems ) { 4349 elems = this._find( elems ); 4350 if ( !elems ){ 4351 return; 4352 } 4353 4354 elems.forEach( function( elem ) { 4355 utils.removeFrom( this.stamps, elem ); 4356 this.unignore( elem ); 4357 }, this ); 4358}; 4359 4360proto._find = function( elems ) { 4361 if ( !elems ) { 4362 return; 4363 } 4364 if ( typeof elems == 'string' ) { 4365 elems = this.element.querySelectorAll( elems ); 4366 } 4367 elems = utils.makeArray( elems ); 4368 return elems; 4369}; 4370 4371proto._manageStamps = function() { 4372 if ( !this.stamps || !this.stamps.length ) { 4373 return; 4374 } 4375 4376 this._getBoundingRect(); 4377 4378 this.stamps.forEach( this._manageStamp, this ); 4379}; 4380 4381proto._getBoundingRect = function() { 4382 var boundingRect = this.element.getBoundingClientRect(); 4383 var size = this.size; 4384 this._boundingRect = { 4385 left: boundingRect.left + size.paddingLeft + size.borderLeftWidth, 4386 top: boundingRect.top + size.paddingTop + size.borderTopWidth, 4387 right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ), 4388 bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth ) 4389 }; 4390}; 4391 4392proto._manageStamp = noop; 4393 4394proto._getElementOffset = function( elem ) { 4395 var boundingRect = elem.getBoundingClientRect(); 4396 var thisRect = this._boundingRect; 4397 var size = getSize( elem ); 4398 var offset = { 4399 left: boundingRect.left - thisRect.left - size.marginLeft, 4400 top: boundingRect.top - thisRect.top - size.marginTop, 4401 right: thisRect.right - boundingRect.right - size.marginRight, 4402 bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom 4403 }; 4404 return offset; 4405}; 4406 4407proto.handleEvent = utils.handleEvent; 4408 4409proto.bindResize = function() { 4410 window.addEventListener( 'resize', this ); 4411 this.isResizeBound = true; 4412}; 4413 4414proto.unbindResize = function() { 4415 window.removeEventListener( 'resize', this ); 4416 this.isResizeBound = false; 4417}; 4418 4419proto.onresize = function() { 4420 this.resize(); 4421}; 4422 4423utils.debounceMethod( Outlayer, 'onresize', 100 ); 4424 4425proto.resize = function() { 4426 if ( !this.isResizeBound || !this.needsResizeLayout() ) { 4427 return; 4428 } 4429 4430 this.layout(); 4431}; 4432 4433proto.needsResizeLayout = function() { 4434 var size = getSize( this.element ); 4435 var hasSizes = this.size && size; 4436 return hasSizes && size.innerWidth !== this.size.innerWidth; 4437}; 4438 4439proto.addItems = function( elems ) { 4440 var items = this._itemize( elems ); 4441 if ( items.length ) { 4442 this.items = this.items.concat( items ); 4443 } 4444 return items; 4445}; 4446 4447proto.appended = function( elems ) { 4448 var items = this.addItems( elems ); 4449 if ( !items.length ) { 4450 return; 4451 } 4452 this.layoutItems( items, true ); 4453 this.reveal( items ); 4454}; 4455 4456proto.prepended = function( elems ) { 4457 var items = this._itemize( elems ); 4458 if ( !items.length ) { 4459 return; 4460 } 4461 var previousItems = this.items.slice(0); 4462 this.items = items.concat( previousItems ); 4463 this._resetLayout(); 4464 this._manageStamps(); 4465 this.layoutItems( items, true ); 4466 this.reveal( items ); 4467 this.layoutItems( previousItems ); 4468}; 4469 4470proto.reveal = function( items ) { 4471 this._emitCompleteOnItems( 'reveal', items ); 4472 if ( !items || !items.length ) { 4473 return; 4474 } 4475 var stagger = this.updateStagger(); 4476 items.forEach( function( item, i ) { 4477 item.stagger( i * stagger ); 4478 item.reveal(); 4479 }); 4480}; 4481 4482proto.hide = function( items ) { 4483 this._emitCompleteOnItems( 'hide', items ); 4484 if ( !items || !items.length ) { 4485 return; 4486 } 4487 var stagger = this.updateStagger(); 4488 items.forEach( function( item, i ) { 4489 item.stagger( i * stagger ); 4490 item.hide(); 4491 }); 4492}; 4493 4494proto.revealItemElements = function( elems ) { 4495 var items = this.getItems( elems ); 4496 this.reveal( items ); 4497}; 4498 4499proto.hideItemElements = function( elems ) { 4500 var items = this.getItems( elems ); 4501 this.hide( items ); 4502}; 4503 4504proto.getItem = function( elem ) { 4505 for ( var i=0; i < this.items.length; i++ ) { 4506 var item = this.items[i]; 4507 if ( item.element == elem ) { 4508 return item; 4509 } 4510 } 4511}; 4512 4513proto.getItems = function( elems ) { 4514 elems = utils.makeArray( elems ); 4515 var items = []; 4516 elems.forEach( function( elem ) { 4517 var item = this.getItem( elem ); 4518 if ( item ) { 4519 items.push( item ); 4520 } 4521 }, this ); 4522 4523 return items; 4524}; 4525 4526proto.remove = function( elems ) { 4527 var removeItems = this.getItems( elems ); 4528 4529 this._emitCompleteOnItems( 'remove', removeItems ); 4530 4531 if ( !removeItems || !removeItems.length ) { 4532 return; 4533 } 4534
vendor: 2,494 bytes, lines 4535-4657
4535 removeItems.forEach( function( item ) { 4536 item.remove(); 4537 utils.removeFrom( this.items, item ); 4538 }, this ); 4539}; 4540 4541proto.destroy = function() { 4542 var style = this.element.style; 4543 style.height = ''; 4544 style.position = ''; 4545 style.width = ''; 4546 this.items.forEach( function( item ) { 4547 item.destroy(); 4548 }); 4549 4550 this.unbindResize(); 4551 4552 var id = this.element.outlayerGUID; 4553 delete instances[ id ]; 4554 delete this.element.outlayerGUID; 4555 if ( jQuery ) { 4556 jQuery.removeData( this.element, this.constructor.namespace ); 4557 } 4558 4559}; 4560 4561Outlayer.data = function( elem ) { 4562 elem = utils.getQueryElement( elem ); 4563 var id = elem && elem.outlayerGUID; 4564 return id && instances[ id ]; 4565}; 4566 4567 4568Outlayer.create = function( namespace, options ) { 4569 var Layout = subclass( Outlayer ); 4570 Layout.defaults = utils.extend( {}, Outlayer.defaults ); 4571 utils.extend( Layout.defaults, options ); 4572 Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions ); 4573 4574 Layout.namespace = namespace; 4575 4576 Layout.data = Outlayer.data; 4577 4578 Layout.Item = subclass( Item ); 4579 4580 utils.htmlInit( Layout, namespace ); 4581 4582 if ( jQuery && jQuery.bridget ) { 4583 jQuery.bridget( namespace, Layout ); 4584 } 4585 4586 return Layout; 4587}; 4588 4589function subclass( Parent ) { 4590 function SubClass() { 4591 Parent.apply( this, arguments ); 4592 } 4593 4594 SubClass.prototype = Object.create( Parent.prototype ); 4595 SubClass.prototype.constructor = SubClass; 4596 4597 return SubClass; 4598} 4599 4600var msUnits = { 4601 ms: 1, 4602 s: 1000 4603}; 4604 4605function getMilliseconds( time ) { 4606 if ( typeof time == 'number' ) { 4607 return time; 4608 } 4609 var matches = time.match( /(^\d*\.?\d*)(\w*)/ ); 4610 var num = matches && matches[1]; 4611 var unit = matches && matches[2]; 4612 if ( !num.length ) { 4613 return 0; 4614 } 4615 num = parseFloat( num ); 4616 var mult = msUnits[ unit ] || 1; 4617 return num * mult; 4618} 4619 4620Outlayer.Item = Item; 4621 4622return Outlayer; 4623 4624})); 4625 4626/*! 4627 * Masonry v4.2.2 4628 * Cascading grid layout library 4629 * https://masonry.desandro.com 4630 * MIT License 4631 * by David DeSandro 4632 */ 4633 4634( function( window, factory ) { 4635 if ( typeof define == 'function' && define.amd ) { 4636 define( [ 4637 'outlayer/outlayer', 4638 'get-size/get-size' 4639 ], 4640 factory ); 4641 } else if ( typeof module == 'object' && module.exports ) { 4642 module.exports = factory( 4643 require('outlayer'), 4644 require('get-size') 4645 ); 4646 } else { 4647 window.Masonry = factory( 4648 window.Outlayer, 4649 window.getSize 4650 ); 4651 } 4652 4653}( window, function factory( Outlayer, getSize ) { 4654 4655 4656 4657 var Masonry = Outlayer.create('masonry');
vendor: 9,161 bytes, lines 4658-5012
4658 Masonry.compatOptions.fitWidth = 'isFitWidth'; 4659 4660 var proto = Masonry.prototype; 4661 4662 proto._resetLayout = function() { 4663 this.getSize(); 4664 this._getMeasurement( 'columnWidth', 'outerWidth' ); 4665 this._getMeasurement( 'gutter', 'outerWidth' ); 4666 this.measureColumns(); 4667 4668 this.colYs = []; 4669 for ( var i=0; i < this.cols; i++ ) { 4670 this.colYs.push( 0 ); 4671 } 4672 4673 this.maxY = 0; 4674 this.horizontalColIndex = 0; 4675 }; 4676 4677 proto.measureColumns = function() { 4678 this.getContainerWidth(); 4679 if ( !this.columnWidth ) { 4680 var firstItem = this.items[0]; 4681 var firstItemElem = firstItem && firstItem.element; 4682 this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth || 4683 this.containerWidth; 4684 } 4685 4686 var columnWidth = this.columnWidth += this.gutter; 4687 4688 var containerWidth = this.containerWidth + this.gutter; 4689 var cols = containerWidth / columnWidth; 4690 var excess = columnWidth - containerWidth % columnWidth; 4691 var mathMethod = excess && excess < 1 ? 'round' : 'floor'; 4692 cols = Math[ mathMethod ]( cols ); 4693 this.cols = Math.max( cols, 1 ); 4694 }; 4695 4696 proto.getContainerWidth = function() { 4697 var isFitWidth = this._getOption('fitWidth'); 4698 var container = isFitWidth ? this.element.parentNode : this.element; 4699 var size = getSize( container ); 4700 this.containerWidth = size && size.innerWidth; 4701 }; 4702 4703 proto._getItemLayoutPosition = function( item ) { 4704 item.getSize(); 4705 var remainder = item.size.outerWidth % this.columnWidth; 4706 var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil'; 4707 var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth ); 4708 colSpan = Math.min( colSpan, this.cols ); 4709 var colPosMethod = this.options.horizontalOrder ? 4710 '_getHorizontalColPosition' : '_getTopColPosition'; 4711 var colPosition = this[ colPosMethod ]( colSpan, item ); 4712 var position = { 4713 x: this.columnWidth * colPosition.col, 4714 y: colPosition.y 4715 }; 4716 var setHeight = colPosition.y + item.size.outerHeight; 4717 var setMax = colSpan + colPosition.col; 4718 for ( var i = colPosition.col; i < setMax; i++ ) { 4719 this.colYs[i] = setHeight; 4720 } 4721 4722 return position; 4723 }; 4724 4725 proto._getTopColPosition = function( colSpan ) { 4726 var colGroup = this._getTopColGroup( colSpan ); 4727 var minimumY = Math.min.apply( Math, colGroup ); 4728 4729 return { 4730 col: colGroup.indexOf( minimumY ), 4731 y: minimumY, 4732 }; 4733 }; 4734 4735 proto._getTopColGroup = function( colSpan ) { 4736 if ( colSpan < 2 ) { 4737 return this.colYs; 4738 } 4739 4740 var colGroup = []; 4741 var groupCount = this.cols + 1 - colSpan; 4742 for ( var i = 0; i < groupCount; i++ ) { 4743 colGroup[i] = this._getColGroupY( i, colSpan ); 4744 } 4745 return colGroup; 4746 }; 4747 4748 proto._getColGroupY = function( col, colSpan ) { 4749 if ( colSpan < 2 ) { 4750 return this.colYs[ col ]; 4751 } 4752 var groupColYs = this.colYs.slice( col, col + colSpan ); 4753 return Math.max.apply( Math, groupColYs ); 4754 }; 4755 4756 proto._getHorizontalColPosition = function( colSpan, item ) { 4757 var col = this.horizontalColIndex % this.cols; 4758 var isOver = colSpan > 1 && col + colSpan > this.cols; 4759 col = isOver ? 0 : col; 4760 var hasSize = item.size.outerWidth && item.size.outerHeight; 4761 this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex; 4762 4763 return { 4764 col: col, 4765 y: this._getColGroupY( col, colSpan ), 4766 }; 4767 }; 4768 4769 proto._manageStamp = function( stamp ) { 4770 var stampSize = getSize( stamp ); 4771 var offset = this._getElementOffset( stamp ); 4772 var isOriginLeft = this._getOption('originLeft'); 4773 var firstX = isOriginLeft ? offset.left : offset.right; 4774 var lastX = firstX + stampSize.outerWidth; 4775 var firstCol = Math.floor( firstX / this.columnWidth ); 4776 firstCol = Math.max( 0, firstCol ); 4777 var lastCol = Math.floor( lastX / this.columnWidth ); 4778 lastCol -= lastX % this.columnWidth ? 0 : 1; 4779 lastCol = Math.min( this.cols - 1, lastCol ); 4780 var isOriginTop = this._getOption('originTop'); 4781 var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) + 4782 stampSize.outerHeight; 4783 for ( var i = firstCol; i <= lastCol; i++ ) { 4784 this.colYs[i] = Math.max( stampMaxY, this.colYs[i] ); 4785 } 4786 }; 4787 4788 proto._getContainerSize = function() { 4789 this.maxY = Math.max.apply( Math, this.colYs ); 4790 var size = { 4791 height: this.maxY 4792 }; 4793 4794 if ( this._getOption('fitWidth') ) { 4795 size.width = this._getContainerFitWidth(); 4796 } 4797 4798 return size; 4799 }; 4800 4801 proto._getContainerFitWidth = function() { 4802 var unusedCols = 0; 4803 var i = this.cols; 4804 while ( --i ) { 4805 if ( this.colYs[i] !== 0 ) { 4806 break; 4807 } 4808 unusedCols++; 4809 } 4810 return ( this.cols - unusedCols ) * this.columnWidth - this.gutter; 4811 }; 4812 4813 proto.needsResizeLayout = function() { 4814 var previousWidth = this.containerWidth; 4815 this.getContainerWidth(); 4816 return previousWidth != this.containerWidth; 4817 }; 4818 4819 return Masonry; 4820 4821})); 4822 4823 4824/*! 4825 * imagesLoaded PACKAGED v4.1.4 4826 * JavaScript is all like "You images are done yet or what?" 4827 * MIT License 4828 */ 4829 4830( function( global, factory ) { 4831 if ( typeof define == 'function' && define.amd ) { 4832 define( 'ev-emitter/ev-emitter',factory ); 4833 } else if ( typeof module == 'object' && module.exports ) { 4834 module.exports = factory(); 4835 } else { 4836 global.EvEmitter = factory(); 4837 } 4838 4839}( typeof window != 'undefined' ? window : this, function() { 4840 4841 4842 4843function EvEmitter() {} 4844 4845var proto = EvEmitter.prototype; 4846 4847proto.on = function( eventName, listener ) { 4848 if ( !eventName || !listener ) { 4849 return; 4850 } 4851 var events = this._events = this._events || {}; 4852 var listeners = events[ eventName ] = events[ eventName ] || []; 4853 if ( listeners.indexOf( listener ) == -1 ) { 4854 listeners.push( listener ); 4855 } 4856 4857 return this; 4858}; 4859 4860proto.once = function( eventName, listener ) { 4861 if ( !eventName || !listener ) { 4862 return; 4863 } 4864 this.on( eventName, listener ); 4865 var onceEvents = this._onceEvents = this._onceEvents || {}; 4866 var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; 4867 onceListeners[ listener ] = true; 4868 4869 return this; 4870}; 4871 4872proto.off = function( eventName, listener ) { 4873 var listeners = this._events && this._events[ eventName ]; 4874 if ( !listeners || !listeners.length ) { 4875 return; 4876 } 4877 var index = listeners.indexOf( listener ); 4878 if ( index != -1 ) { 4879 listeners.splice( index, 1 ); 4880 } 4881 4882 return this; 4883}; 4884 4885proto.emitEvent = function( eventName, args ) { 4886 var listeners = this._events && this._events[ eventName ]; 4887 if ( !listeners || !listeners.length ) { 4888 return; 4889 } 4890 listeners = listeners.slice(0); 4891 args = args || []; 4892 var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; 4893 4894 for ( var i=0; i < listeners.length; i++ ) { 4895 var listener = listeners[i] 4896 var isOnce = onceListeners && onceListeners[ listener ]; 4897 if ( isOnce ) { 4898 this.off( eventName, listener ); 4899 delete onceListeners[ listener ]; 4900 } 4901 listener.apply( this, args ); 4902 } 4903 4904 return this; 4905}; 4906 4907proto.allOff = function() { 4908 delete this._events; 4909 delete this._onceEvents; 4910}; 4911 4912return EvEmitter; 4913 4914})); 4915 4916/*! 4917 * imagesLoaded v4.1.4 4918 * JavaScript is all like "You images are done yet or what?" 4919 * MIT License 4920 */ 4921 4922( function( window, factory ) { 'use strict'; 4923 if ( typeof define == 'function' && define.amd ) { 4924 define( [ 4925 'ev-emitter/ev-emitter' 4926 ], function( EvEmitter ) { 4927 return factory( window, EvEmitter ); 4928 }); 4929 } else if ( typeof module == 'object' && module.exports ) { 4930 module.exports = factory( 4931 window, 4932 require('ev-emitter') 4933 ); 4934 } else { 4935 window.imagesLoaded = factory( 4936 window, 4937 window.EvEmitter 4938 ); 4939 } 4940 4941})( typeof window !== 'undefined' ? window : this, 4942 4943function factory( window, EvEmitter ) { 4944 4945 4946 4947var $ = window.jQuery; 4948var console = window.console; 4949 4950function extend( a, b ) { 4951 for ( var prop in b ) { 4952 a[ prop ] = b[ prop ]; 4953 } 4954 return a; 4955} 4956 4957var arraySlice = Array.prototype.slice; 4958 4959function makeArray( obj ) { 4960 if ( Array.isArray( obj ) ) { 4961 return obj; 4962 } 4963 4964 var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number'; 4965 if ( isArrayLike ) { 4966 return arraySlice.call( obj ); 4967 } 4968 4969 return [ obj ]; 4970} 4971 4972function ImagesLoaded( elem, options, onAlways ) { 4973 if ( !( this instanceof ImagesLoaded ) ) { 4974 return new ImagesLoaded( elem, options, onAlways ); 4975 } 4976 var queryElem = elem; 4977 if ( typeof elem == 'string' ) { 4978 queryElem = document.querySelectorAll( elem ); 4979 } 4980 if ( !queryElem ) { 4981 console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) ); 4982 return; 4983 } 4984 4985 this.elements = makeArray( queryElem ); 4986 this.options = extend( {}, this.options ); 4987 if ( typeof options == 'function' ) { 4988 onAlways = options; 4989 } else { 4990 extend( this.options, options ); 4991 } 4992 4993 if ( onAlways ) { 4994 this.on( 'always', onAlways ); 4995 } 4996 4997 this.getImages(); 4998 4999 if ( $ ) { 5000 this.jqDeferred = new $.Deferred(); 5001 } 5002 5003 setTimeout( this.check.bind( this ) ); 5004} 5005 5006ImagesLoaded.prototype = Object.create( EvEmitter.prototype ); 5007 5008ImagesLoaded.prototype.options = {}; 5009 5010ImagesLoaded.prototype.getImages = function() { 5011 this.images = []; 5012
vendor: 4,360 bytes, lines 5013-5176
5013 this.elements.forEach( this.addElementImages, this ); 5014}; 5015 5016ImagesLoaded.prototype.addElementImages = function( elem ) { 5017 if ( elem.nodeName == 'IMG' ) { 5018 this.addImage( elem ); 5019 } 5020 if ( this.options.background === true ) { 5021 this.addElementBackgroundImages( elem ); 5022 } 5023 5024 var nodeType = elem.nodeType; 5025 if ( !nodeType || !elementNodeTypes[ nodeType ] ) { 5026 return; 5027 } 5028 var childImgs = elem.querySelectorAll('img'); 5029 for ( var i=0; i < childImgs.length; i++ ) { 5030 var img = childImgs[i]; 5031 this.addImage( img ); 5032 } 5033 5034 if ( typeof this.options.background == 'string' ) { 5035 var children = elem.querySelectorAll( this.options.background ); 5036 for ( i=0; i < children.length; i++ ) { 5037 var child = children[i]; 5038 this.addElementBackgroundImages( child ); 5039 } 5040 } 5041}; 5042 5043var elementNodeTypes = { 5044 1: true, 5045 9: true, 5046 11: true 5047}; 5048 5049ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) { 5050 var style = getComputedStyle( elem ); 5051 if ( !style ) { 5052 return; 5053 } 5054 var reURL = /url\((['"])?(.*?)\1\)/gi; 5055 var matches = reURL.exec( style.backgroundImage ); 5056 while ( matches !== null ) { 5057 var url = matches && matches[2]; 5058 if ( url ) { 5059 this.addBackground( url, elem ); 5060 } 5061 matches = reURL.exec( style.backgroundImage ); 5062 } 5063}; 5064 5065ImagesLoaded.prototype.addImage = function( img ) { 5066 var loadingImage = new LoadingImage( img ); 5067 this.images.push( loadingImage ); 5068}; 5069 5070ImagesLoaded.prototype.addBackground = function( url, elem ) { 5071 var background = new Background( url, elem ); 5072 this.images.push( background ); 5073}; 5074 5075ImagesLoaded.prototype.check = function() { 5076 var _this = this; 5077 this.progressedCount = 0; 5078 this.hasAnyBroken = false; 5079 if ( !this.images.length ) { 5080 this.complete(); 5081 return; 5082 } 5083 5084 function onProgress( image, elem, message ) { 5085 setTimeout( function() { 5086 _this.progress( image, elem, message ); 5087 }); 5088 } 5089 5090 this.images.forEach( function( loadingImage ) { 5091 loadingImage.once( 'progress', onProgress ); 5092 loadingImage.check(); 5093 }); 5094}; 5095 5096ImagesLoaded.prototype.progress = function( image, elem, message ) { 5097 this.progressedCount++; 5098 this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; 5099 this.emitEvent( 'progress', [ this, image, elem ] ); 5100 if ( this.jqDeferred && this.jqDeferred.notify ) { 5101 this.jqDeferred.notify( this, image ); 5102 } 5103 if ( this.progressedCount == this.images.length ) { 5104 this.complete(); 5105 } 5106 5107 if ( this.options.debug && console ) { 5108 console.log( 'progress: ' + message, image, elem ); 5109 } 5110}; 5111 5112ImagesLoaded.prototype.complete = function() { 5113 var eventName = this.hasAnyBroken ? 'fail' : 'done'; 5114 this.isComplete = true; 5115 this.emitEvent( eventName, [ this ] ); 5116 this.emitEvent( 'always', [ this ] ); 5117 if ( this.jqDeferred ) { 5118 var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve'; 5119 this.jqDeferred[ jqMethod ]( this ); 5120 } 5121}; 5122 5123function LoadingImage( img ) { 5124 this.img = img; 5125} 5126 5127LoadingImage.prototype = Object.create( EvEmitter.prototype ); 5128 5129LoadingImage.prototype.check = function() { 5130 var isComplete = this.getIsImageComplete(); 5131 if ( isComplete ) { 5132 this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); 5133 return; 5134 } 5135 5136 this.proxyImage = new Image(); 5137 this.proxyImage.addEventListener( 'load', this ); 5138 this.proxyImage.addEventListener( 'error', this ); 5139 this.img.addEventListener( 'load', this ); 5140 this.img.addEventListener( 'error', this ); 5141 this.proxyImage.src = this.img.src; 5142}; 5143 5144LoadingImage.prototype.getIsImageComplete = function() { 5145 return this.img.complete && this.img.naturalWidth; 5146}; 5147 5148LoadingImage.prototype.confirm = function( isLoaded, message ) { 5149 this.isLoaded = isLoaded; 5150 this.emitEvent( 'progress', [ this, this.img, message ] ); 5151}; 5152 5153LoadingImage.prototype.handleEvent = function( event ) { 5154 var method = 'on' + event.type; 5155 if ( this[ method ] ) { 5156 this[ method ]( event ); 5157 } 5158}; 5159 5160LoadingImage.prototype.onload = function() { 5161 this.confirm( true, 'onload' ); 5162 this.unbindEvents(); 5163}; 5164 5165LoadingImage.prototype.onerror = function() { 5166 this.confirm( false, 'onerror' ); 5167 this.unbindEvents(); 5168}; 5169 5170LoadingImage.prototype.unbindEvents = function() { 5171 this.proxyImage.removeEventListener( 'load', this ); 5172 this.proxyImage.removeEventListener( 'error', this ); 5173 this.img.removeEventListener( 'load', this ); 5174 this.img.removeEventListener( 'error', this ); 5175}; 5176
5177function Background( url, element ) { 5178 this.url = url; 5179 this.element = element; 5180 this.img = new Image(); 5181} 5182 5183Background.prototype = Object.create( LoadingImage.prototype ); 5184 5185Background.prototype.check = function() { 5186 this.img.addEventListener( 'load', this ); 5187 this.img.addEventListener( 'error', this ); 5188 this.img.src = this.url; 5189 var isComplete = this.getIsImageComplete(); 5190 if ( isComplete ) { 5191 this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); 5192 this.unbindEvents(); 5193 } 5194}; 5195 5196Background.prototype.unbindEvents = function() { 5197 this.img.removeEventListener( 'load', this ); 5198 this.img.removeEventListener( 'error', this ); 5199}; 5200 5201Background.prototype.confirm = function( isLoaded, message ) { 5202 this.isLoaded = isLoaded; 5203 this.emitEvent( 'progress', [ this, this.element, message ] ); 5204}; 5205 5206ImagesLoaded.makeJQueryPlugin = function( jQuery ) { 5207 jQuery = jQuery || window.jQuery; 5208 if ( !jQuery ) { 5209 return; 5210 } 5211 $ = jQuery; 5212 $.fn.imagesLoaded = function( options, callback ) { 5213 var instance = new ImagesLoaded( this, options, callback ); 5214 return instance.jqDeferred.promise( $(this) ); 5215 }; 5216}; 5217ImagesLoaded.makeJQueryPlugin(); 5218 5219return ImagesLoaded; 5220 5221}); 5222 5223 5224/*! 5225 * @author yomotsu 5226 * MatchHeight 5227 * https://github.com/yomotsu/MatchHeight 5228 * Released under the MIT License. 5229 */ 5230!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.MatchHeight=e()}(this,function(){"use strict";function t(){i.forEach(function(t){var e=t.el.getBoundingClientRect();t.top=e.top,t.height=e.height}),i.sort(function(t,e){return t.top-e.top});var o=i[0].top,n=i.filter(function(t){return Math.abs(t.top-o)<=e}),r=Math.max.apply(Math,n.map(function(t){return t.height}));n.forEach(function(t){var n=o-t.top+e,i=parseFloat(window.getComputedStyle(t.el).getPropertyValue("padding-top"),10)+parseFloat(window.getComputedStyle(t.el).getPropertyValue("padding-bottom"),10)+parseFloat(window.getComputedStyle(t.el).getPropertyValue("border-top-width"),10)+parseFloat(window.getComputedStyle(t.el).getPropertyValue("border-bottom-width"),10);t.el.style.minHeight=r-i+n+"px"}),i.splice(0,n.length),0<i.length&&t()}var e=1,o=!1,n=void 0,i=void 0,r={init:function(){o=!0,n=document.querySelectorAll("[data-mh]"),r.update(
5230)},update:function(){if(!o)return void r.init();0!==n.length&&(i=Array.prototype.map.call(n,function(t){return{el:t}}),i.forEach(function(t){t.el.style.minHeight=""}),t())}},d=function(t,e){var o=void 0,n=void 0;return function(){var i=Date.now();o&&i<o+e?(clearTimeout(n),n=setTimeout(function(){o=i,t()},e)):(o=i,t())}}(r.update,200);return window.addEventListener("DOMContentLoaded",function t(){r.init(),window.removeEventListener("DOMContentLoaded",t)}),window.addEventListener("load",function t(){r.update(),window.removeEventListener("load",t)}),window.addEventListener("resize",d),r}); 5231 5232( function( $, window, document, undefined ) { 5233 5234 'use strict'; 5235 5236 var offCanvas = function() { 5237 5238 var $canvas = $('#offcanvas'), 5239 buttons = ['.mobile-menu-reveal', '.search-reveal', '.shopping-cart-reveal', '.offcanvas-close']; 5240 5241 var detectClick = function(idClicked) { 5242 5243 if ( idClicked.hasClass('mobile-menu-reveal') ) { 5244 $canvas.addClass('show-offcanvas-menu'); 5245 } else if ( idClicked.hasClass('shopping-cart-reveal') ) { 5246 $canvas.addClass('show-offcanvas-cart'); 5247 } else if ( idClicked.hasClass('search-reveal') ) { 5248 $canvas.addClass('show-offcanvas-search offcanvas--modal'); 5249 } 5250 5251 }; 5252 5253 var toggleOffCanvas = function() { 5254 5255 $canvas.addClass('offcanvas--animatable'); 5256 5257 if ( !$canvas.hasClass('offcanvas--visible') ) { 5258 $canvas.addClass('offcanvas--visible'); 5259 } else { 5260 removeCanvas(); 5261 } 5262 5263 }; 5264 5265 var removeCanvas = function () { 5266 $canvas.removeClass('offcanvas--visible show-offcanvas-menu show-offcanvas-cart show-offcanvas-search offcanvas--modal'); 5267 }; 5268 5269 var onTransitionEnd = function() { 5270 $canvas.removeClass('offcanvas--animatable'); 5271 }; 5272 5273 $canvas.on('transitionend webkitTransitionEnd oTransitionEnd', function() { 5274 onTransitionEnd(); 5275 }); 5276 5277 $(buttons.join()).on('click', function() { 5278 var idClicked = $(this); 5279 detectClick(idClicked); 5280 toggleOffCanvas(); 5281 }); 5282 5283 $canvas.on('click', function(e) { 5284 if ( e.target == this ) { 5285 toggleOffCanvas(); 5286 } 5287 }); 5288 5289 $(document).keyup(function(e) { 5290 if ( e.keyCode === 27 ) { 5291 removeCanvas(); 5292 } 5293 }); 5294 5295 }; offCanvas(); 5296 5297 5298})( jQuery, window, document ); 5299jQuery(document).ready(function ($) { 5300 5301 'use strict'; 5302 5303 $(function () { 5304 5305 $('.menu .sub-links').not($('.sub-menu .sub-links')).wrap('<div class="sub-menu" />'); 5306 5307 var $main_menu = $('.main-menu'); 5308 5309 $main_menu.find('> ul > li > .sub-menu').each(function (index, element) { 5310 if ($(element).children().hasClass('sub-posts') && $(element).children().hasClass('sub-links')) { 5311 $(element).parent().addClass('sub-menu-two-columns menu-item-has-mega-menu'); 5312 } else if ($(element).children().hasClass('sub-posts') && (!$(element).children().hasClass('sub-links'))) { 5313 $(element).parent().addClass('sub-menu-full-width menu-item-has-mega-menu'); 5314 } else if ($(element).parent().hasClass('columns-menu')) { 5315 $(element).parent().addClass('sub-menu-columns'); 5316 } else { 5317 $(element).parent().addClass('sub-links-only'); 5318 } 5319 5320 if ($(element).children().length) { 5321 $(element).parent().addClass('link-arrow'); 5322 } 5323 }); 5324 5325 $('.sub-menu-columns > .sub-menu > .sub-links').each(function (index, element) { 5326 var count = $(element).children().length; 5327 $(element).parents('.sub-menu-columns').addClass('sub-menu-columns-' + count); 5328 }); 5329 5330 $('.sub-menu').each(function (index, element) { 5331 if ($(element).children().length === 0) { 5332 $(element).remove(); 5333 } 5334 }); 5335 5336 }); 5337 5338 var mobileMenu = function() { 5339 5340 var $mobile_menu = $('#offcanvas-menu'); 5341 5342 $.each($mobile_menu.find('.menu li'), function () { 5343 $(this).find('> .sub-menu').before('<span class="sub-menu-arrow"><i class="sm-chevron-right"></i></span>'); 5344 }); 5345 5346 $mobile_menu.find('.menu li .sub-menu').prepend('<span class="sub-menu-back"><svg class="sm-svg-icon icon-arrow-left" width="24" height="24" aria-hidden="true" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
5346<path d="M31.106 15H3.278l8.325-8.293a.999.999 0 1 0-1.414-1.414l-9.9 9.899a1.01 1.01 0 0 0 0 1.414l9.9 9.9a.999.999 0 1 0 1.414-1.414L3.278 17h27.828a1 1 0 0 0 0-2z"></path></svg></span>'); 5347 5348 var $sub_parent = $mobile_menu.find('.sub-menu-arrow'); 5349 5350 $sub_parent.on('click', function () { 5351 var $this = $(this); 5352 var $parent_menu = $this.parents('.menu'); 5353 var $current_item = $this.next('.sub-menu'); 5354 $parent_menu.addClass('sub-level-open'); 5355 $current_item.addClass('sub-menu-open'); 5356 }); 5357 5358 var $sub_back = $('.sub-menu-back'); 5359 5360 $sub_back.on('click', function () { 5361 var $this = $(this); 5362 var $currentItem = $this.parent('.sub-menu'); 5363 var $parent_menu = $this.parents('.menu'); 5364 $currentItem.removeClass('sub-menu-open'); 5365 $parent_menu.removeClass('sub-level-open'); 5366 }); 5367 5368 }; mobileMenu(); 5369 5370 var modalWindowSearch = function() { 5371 5372 var $searchbox = $('.modal--search-form'); 5373 5374 $('#search-reveal').on( 'click', function() { 5375 $searchbox.find('.search-field').focus(); 5376 }); 5377 5378 var $input = $searchbox.find('.search-field'), 5379 $span = $('<span></span>', {'class': 'input-highlight'}); 5380 5381 $input.after($span); 5382 5383 $input.on('input', function(e) { 5384 $span.text(e.target.value); 5385 }); 5386 5387 }; modalWindowSearch(); 5388 5389 var accordionMenu = function() { 5390 5391 var $menu = $('.sidebar .widget_nav_menu, .footer-sidebar .widget_nav_menu'), 5392 $animationSpeed = 350, 5393 $arrowIcon = '', 5394 $arrowClass = 'sub-menu-arrow', 5395 $activeClass = 'sub-menu--opened', 5396 $arrow = $( '<span></span>', { 'class': $arrowClass, 'text': $arrowIcon }); 5397 5398 $arrow.insertAfter($menu.find('.sub-menu').siblings()); 5399 5400 $menu.on('click touch', '.' + $arrowClass, function() { 5401 5402 var $this = $(this), 5403 subMenu = $this.next(), 5404 parentEl = $this.parent(), 5405 parentNext = parentEl.parent().find('.sub-menu'); 5406 5407 if ( parentEl.hasClass($activeClass) ) { 5408 5409 parentEl.removeClass($activeClass); 5410 subMenu.slideUp($animationSpeed); 5411 5412 } else { 5413 5414 parentNext.parent().removeClass($activeClass); 5415 parentNext.slideUp($animationSpeed); 5416 5417 parentEl.toggleClass($activeClass); 5418 subMenu.slideToggle($animationSpeed); 5419 5420 } 5421 5422 }); 5423 5424 }; accordionMenu(); 5425 5426 5427 $(function () { 5428 5429 var $slider_arrows = { 5430 prevArrow: '<a heref="#" class="slider-nav-arrow prev-arrow"></a>', 5431 nextArrow: '<a heref="#" class="slider-nav-arrow next-arrow"></a>' 5432 }; 5433 5434 $(function () { 5435 $('.posts-slider').slick( 5436 $.extend({ 5437 rows: 0, 5438 dots: true, 5439 autoplay: true, 5440 autoplaySpeed: 5000, 5441 adaptiveHeight: true 5442 }, $slider_arrows) 5443 ); 5444 5445 $('.posts-slider .slick-dots').each(function () { 5446 var slider_image_count = $(this).children().length; 5447 $(this).append('<li class="slider-image-count">' + slider_image_count + '</li>'); 5448 }); 5449 5450 }); 5451 5452 $('.widget-slider').slick( 5453 $.extend({ 5454 rows: 0, 5455 autoplay: true, 5456 autoplaySpeed: 5000 5457 }, $slider_arrows) 5458 ); 5459 5460 $('.featured-carousel').slick( 5461 $.extend({ 5462 rows: 2, 5463 vertical: true, 5464 slidesToShow: 2, 5465 slidesToScroll: 2, 5466 infinite: false, 5467 verticalSwiping: true, 5468 appendArrows: $('.featured-posts .carousel-navigation'), 5469 responsive: [{ 5470 breakpoint: 750, 5471 settings: { 5472 vertical: false, 5473 slidesToShow: 1, 5474 slidesToScroll: 1, 5475 infinite: true, 5476 adaptiveHeight: true, 5477 verticalSwiping: false 5478 } 5479 }] 5480 }, $slider_arrows) 5481 ); 5482 5483 5484 $(function () { 5485 5486 var $FullWidthCarousel = $('.full-width-media .gallery-carousel'), 5487 $AboveContentCarousel = $('.above-content-media .gallery-carousel'); 5488 5489 var $GalleryCaption = $('.gallery-caption'); 5490 5491 $FullWidthCarousel.slick( 5492 $.extend({ 5493 rows: 0, 5494 dots: true, 5495 variableWidth: true, 5496 responsive: [{ 5497 breakpoint: 480, 5498 settings: { 5499 slidesToShow: 1, 5500 variableWidth: false, 5501 adaptiveHeight: true 5502 } 5503 }] 5504 }, $slider_arrows) 5505 ); 5506 5507 $AboveContentCarousel.slick({ 5508 rows: 0,
5509 arrows: false, 5510 adaptiveHeight: true, 5511 asNavFor: $GalleryCaption 5512 }); 5513 5514 $GalleryCaption.slick( 5515 $.extend({ 5516 rows: 0, 5517 dots: true, 5518 fade: true, 5519 adaptiveHeight: true, 5520 asNavFor: $AboveContentCarousel 5521 }, $slider_arrows) 5522 ); 5523 5524 $([$FullWidthCarousel, $GalleryCaption]).each(function () { 5525 var $slider_image_count = $(this).find('.slick-dots li').length; 5526 $(this).find('.slick-dots').append('<li class="slider-image-count">' + $slider_image_count + '</li>'); 5527 }); 5528 5529 }); 5530 5531 $(function () { 5532 var $carousel = $('.related-posts').find('.carousel'); 5533 $carousel.slick( 5534 $.extend({ 5535 rows: 0, 5536 slidesToShow: 3, 5537 adaptiveHeight: true, 5538 responsive: [{ 5539 breakpoint: 750, 5540 settings: { 5541 slidesToShow: 1 5542 } 5543 }] 5544 }, $slider_arrows) 5545 ); 5546 }); 5547 5548 $(function () { 5549 5550 var $carousel = $('.widget_ti_site_authors .carousel'); 5551 var n = $carousel.find('.item').length; 5552 if (n > 10) { 5553 5554 $carousel.slick( 5555 $.extend({ 5556 rows: 2, 5557 slidesToShow: 5, 5558 variableWidth: true 5559 }, $slider_arrows) 5560 ); 5561 5562 $carousel.addClass('with-arrows'); 5563 5564 } 5565 5566 }); 5567 5568 $(function () { 5569 5570 var $carousel = $('.latest-reviews-carousel'); 5571 5572 var $flag = $('#content').find('> .wrapper'), 5573 number_slides = 4; 5574 if ($flag.hasClass('with-sidebar')) { 5575 number_slides = 3; 5576 } 5577 5578 $carousel.on('init', function () { 5579 $(this).addClass('carousel-initialized'); 5580 }); 5581 5582 $carousel.slick({ 5583 rows: 0, 5584 dots: true, 5585 arrows: false, 5586 infinite: false, 5587 slidesToShow: number_slides, 5588 slidesToScroll: number_slides, 5589 adaptiveHeight: true, 5590 responsive: [{ 5591 breakpoint: 960, 5592 settings: { 5593 slidesToShow: 2, 5594 slidesToScroll: 2 5595 } 5596 }, { 5597 breakpoint: 750, 5598 settings: { 5599 slidesToShow: 1, 5600 slidesToScroll: 1 5601 } 5602 }] 5603 }); 5604 5605 }); 5606 5607 $(function LatestFormatSlider() { 5608 5609 var Container = $('.media-posts'); 5610 5611 $(Container).each(function () { 5612 5613 var Slides = $(this).find('.media-post-slides'), 5614 Thumbs = $(this).find('.media-post-thumbs'), 5615 Details = $(this).find('.media-post-details'), 5616 BgImage = $(this).find('.media-post-bg'); 5617 5618 Slides.on('init', function () { 5619 $(this).parents().eq(1).addClass('section-init'); 5620 }); 5621 5622 Slides.on('beforeChange', function () { 5623 $(this).find('.media-content').empty(); 5624 $(this).find('.entry-image').removeClass('content-loading content-added'); 5625 }); 5626 5627 Slides.slick( 5628 $.extend({ 5629 rows: 0, 5630 slidesToShow: 1, 5631 fade: true, 5632 asNavFor: Thumbs.add(Details).add(BgImage), 5633 responsive: [{ 5634 breakpoint: 750, 5635 settings: { 5636 fade: false, 5637 adaptiveHeight: true 5638 } 5639 }] 5640 }, $slider_arrows) 5641 ); 5642 5643 Details.slick({ 5644 rows: 0, 5645 slidesToShow: 1, 5646 fade: true,
5647 arrows: false, 5648 asNavFor: Slides.add(Thumbs) 5649 }); 5650 5651 Thumbs.slick({ 5652 rows: 0, 5653 slidesToShow: 3, 5654 slidesToScroll: 1, 5655 centerMode: true, 5656 centerPadding: 0, 5657 focusOnSelect: true, 5658 dots: true, 5659 arrows: false, 5660 asNavFor: Slides.add(Details).add(BgImage) 5661 }); 5662 5663 BgImage.slick({ 5664 rows: 0, 5665 slidesToShow: 1, 5666 fade: true, 5667 arrows: false, 5668 asNavFor: Slides.add(Thumbs) 5669 }); 5670 5671 }); 5672 5673 }); 5674 5675 $('.rating-labels').slick( 5676 $.extend({ 5677 rows: 0, 5678 slidesToShow: 7, 5679 responsive: [{ 5680 breakpoint: 960, 5681 settings: { 5682 slidesToShow: 3 5683 } 5684 }] 5685 }, $slider_arrows) 5686 ); 5687 5688 }); 5689 5690 5691 $(function () { 5692 var $m_container = $('.ltr .masonry-layout'); 5693 $m_container.imagesLoaded(function () { 5694 $m_container.masonry({ 5695 itemSelector: '.post-item' 5696 }); 5697 }); 5698 }); 5699 5700 $(function () { 5701 var $m_container = $('.rtl .masonry-layout'); 5702 $m_container.imagesLoaded(function () { 5703 $m_container.masonry({ 5704 itemSelector: '.post-item', 5705 isOriginLeft: false 5706 }); 5707 }); 5708 }); 5709 5710 5711 var tabContainers = $('.tab-box .tab-box-content > div'); 5712 tabContainers.addClass('tab-hidden').filter(':first').addClass('tab-visible'); 5713 5714 $('.tab-box .tab-box-button a').click(function (e) { 5715 e.preventDefault(); 5716 tabContainers.addClass('tab-hidden').removeClass('tab-visible'); 5717 tabContainers.filter(this.hash).addClass('tab-visible').removeClass('tab-hidden'); 5718 $('.tab-box .tab-box-button a').removeClass('active'); 5719 $(this).addClass('active'); 5720 }).filter(':first').click(); 5721 5722 $('.sitemap .row .trigger').click(function (e) { 5723 e.preventDefault(); 5724 $(this).toggleClass('active').next().slideToggle('fast'); 5725 }); 5726 5727 5728 $('.share-more').click(function () { 5729 $(this).toggleClass('share-more-opened'); 5730 }); 5731 5732 5733 $('[href^="#comments"]').click(function (e) { 5734 e.preventDefault(); 5735 $('html, body').animate({ 5736 scrollTop: $('#comments').offset().top 5737 }, 700); 5738 }); 5739 5740 $('.back-top').click(function (e) { 5741 e.preventDefault(); 5742 $('html, body').animate({ 5743 scrollTop: 0 5744 }, 'fast'); 5745 }); 5746 5747});
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.