Perfect Brands for WooCommerce - Version 1.6.0

Version Description

  • Feature: Migrate brands from the official WooCommerce Brand's plugin (pull request, thanks Chunkford)
  • Feature: Support for the new WooCommerce product importer/exporter
  • Feature: Brand tab in single product page
  • Enhancement: Brands dropdown widget selects the current brand if is a brand archive page
  • Enhancement: Hide the brand name in "Display all brands" shortcode (title_position="none")
  • Enhancement: Important enhancements for the REST API
  • Fix: The brand property is not recognized by Google
  • Fix: No shortcode appeared in some Visual Composer versions
  • Fix: Filter by brand widget fixes
  • Fix: Brand description adds description twice
  • Other minor bug fixes and code improvements
Download this release

Release Info

Developer titodevera
Plugin Icon 128x128 Perfect Brands for WooCommerce
Version 1.6.0
Comparing to
See all releases

Code changes from version 1.5.2 to 1.6.0

assets/css/styles-admin.css CHANGED
@@ -60,6 +60,11 @@
60
  #wc_pwb_admin_tab_tools_system_status{
61
  display: none!important;
62
  }
 
 
 
 
 
63
  /* ----------------------- /Settings page ----------------------- */
64
 
65
  .pwb-display-as-logo{
60
  #wc_pwb_admin_tab_tools_system_status{
61
  display: none!important;
62
  }
63
+ select.pwb-admin-tab-field, input[type="text"].pwb-admin-tab-field{
64
+ min-width:350px;
65
+ display:block;
66
+ height:auto;
67
+ }
68
  /* ----------------------- /Settings page ----------------------- */
69
 
70
  .pwb-display-as-logo{
assets/css/styles-frontend.css CHANGED
@@ -89,6 +89,10 @@
89
  /* ----------------------- /PWB Carousel ----------------------- */
90
 
91
  /* ----------------------- PWB All Brands ----------------------- */
 
 
 
 
92
  .pwb-all-brands .pwb-pagination-wrapper{
93
  margin-top: 20px;
94
  padding-top: 10px;
89
  /* ----------------------- /PWB Carousel ----------------------- */
90
 
91
  /* ----------------------- PWB All Brands ----------------------- */
92
+ .pwb-brands-cols-outer{
93
+ margin-left: -15px;
94
+ margin-right: -15px;
95
+ }
96
  .pwb-all-brands .pwb-pagination-wrapper{
97
  margin-top: 20px;
98
  padding-top: 10px;
assets/js/pwb_frontend_functions.js CHANGED
@@ -97,6 +97,9 @@ jQuery(document).ready(function( $ ) {
97
  //removes previous "pwb-brand" from url
98
  currentUrl = currentUrl.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i, "");
99
 
 
 
 
100
  if( currentUrl.indexOf("?") === -1 ){
101
  currentUrl = currentUrl + '?pwb-brand-filter='+marcas;
102
  }else{
97
  //removes previous "pwb-brand" from url
98
  currentUrl = currentUrl.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i, "");
99
 
100
+ //removes pagination
101
+ currentUrl = currentUrl.replace(/\/page\/\d*\//i, "");
102
+
103
  if( currentUrl.indexOf("?") === -1 ){
104
  currentUrl = currentUrl + '?pwb-brand-filter='+marcas;
105
  }else{
assets/js/slick/slick-theme.css CHANGED
@@ -30,7 +30,6 @@
30
  width: 20px;
31
  height: 20px;
32
  padding: 0;
33
- margin-top: -10px\9; /*lte IE 8*/
34
  -webkit-transform: translate(0, -50%);
35
  -ms-transform: translate(0, -50%);
36
  transform: translate(0, -50%);
@@ -115,7 +114,7 @@
115
  }
116
 
117
  /* Dots */
118
- .slick-slider
119
  {
120
  margin-bottom: 30px;
121
  }
@@ -123,12 +122,13 @@
123
  .slick-dots
124
  {
125
  position: absolute;
126
- bottom: -45px;
127
 
128
  display: block;
129
 
130
  width: 100%;
131
  padding: 0;
 
132
 
133
  list-style: none;
134
 
30
  width: 20px;
31
  height: 20px;
32
  padding: 0;
 
33
  -webkit-transform: translate(0, -50%);
34
  -ms-transform: translate(0, -50%);
35
  transform: translate(0, -50%);
114
  }
115
 
116
  /* Dots */
117
+ .slick-dotted.slick-slider
118
  {
119
  margin-bottom: 30px;
120
  }
122
  .slick-dots
123
  {
124
  position: absolute;
125
+ bottom: -25px;
126
 
127
  display: block;
128
 
129
  width: 100%;
130
  padding: 0;
131
+ margin: 0;
132
 
133
  list-style: none;
134
 
assets/js/slick/slick-theme.less CHANGED
@@ -18,21 +18,10 @@
18
 
19
  /* Slider */
20
  .slick-loading .slick-list{
21
- background: #fff url('./ajax-loader.gif') center center no-repeat;
22
- }
23
-
24
- /* Icons */
25
- @font-face{
26
- font-family: 'slick';
27
- font-weight: normal;
28
- font-style: normal;
29
-
30
- src: url('./fonts/slick.eot');
31
- src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
32
  }
33
 
34
  /* Arrows */
35
-
36
  .slick-prev,
37
  .slick-next {
38
  position: absolute;
@@ -45,7 +34,6 @@
45
  background: transparent;
46
  color: transparent;
47
  top: 50%;
48
- margin-top: -10px~'\9'; /*lte IE 8*/
49
  -webkit-transform: translate(0, -50%);
50
  -ms-transform: translate(0, -50%);
51
  transform: translate(0, -50%);
@@ -73,17 +61,28 @@
73
  opacity: @slick-opacity-default;
74
  -webkit-font-smoothing: antialiased;
75
  -moz-osx-font-smoothing: grayscale;
 
 
 
 
 
 
 
 
 
 
 
76
  }
77
 
78
  .slick-prev {
79
  left: -25px;
80
- &[dir="rtl"] {
81
  left: auto;
82
  right: -25px;
83
  }
84
  &:before {
85
  content: @slick-prev-character;
86
- &[dir="rtl"] {
87
  content: @slick-next-character;
88
  }
89
  }
@@ -91,13 +90,13 @@
91
 
92
  .slick-next {
93
  right: -25px;
94
- &[dir="rtl"] {
95
  left: -25px;
96
  right: auto;
97
  }
98
  &:before {
99
  content: @slick-next-character;
100
- &[dir="rtl"] {
101
  content: @slick-prev-character;
102
  }
103
  }
@@ -105,17 +104,18 @@
105
 
106
  /* Dots */
107
 
108
- .slick-slider {
109
  margin-bottom: 30px;
110
  }
111
 
112
  .slick-dots {
113
  position: absolute;
114
- bottom: -45px;
115
  list-style: none;
116
  display: block;
117
  text-align: center;
118
  padding: 0;
 
119
  width: 100%;
120
  li {
121
  position: relative;
18
 
19
  /* Slider */
20
  .slick-loading .slick-list{
21
+ background: #fff url('@{slick-loader-path}ajax-loader.gif') center center no-repeat;
 
 
 
 
 
 
 
 
 
 
22
  }
23
 
24
  /* Arrows */
 
25
  .slick-prev,
26
  .slick-next {
27
  position: absolute;
34
  background: transparent;
35
  color: transparent;
36
  top: 50%;
 
37
  -webkit-transform: translate(0, -50%);
38
  -ms-transform: translate(0, -50%);
39
  transform: translate(0, -50%);
61
  opacity: @slick-opacity-default;
62
  -webkit-font-smoothing: antialiased;
63
  -moz-osx-font-smoothing: grayscale;
64
+
65
+ & when ( @slick-font-family = 'slick' ) {
66
+ /* Icons */
67
+ @font-face {
68
+ font-family: 'slick';
69
+ font-weight: normal;
70
+ font-style: normal;
71
+ src: url('@{slick-font-path}slick.eot');
72
+ src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg');
73
+ }
74
+ }
75
  }
76
 
77
  .slick-prev {
78
  left: -25px;
79
+ [dir="rtl"] & {
80
  left: auto;
81
  right: -25px;
82
  }
83
  &:before {
84
  content: @slick-prev-character;
85
+ [dir="rtl"] & {
86
  content: @slick-next-character;
87
  }
88
  }
90
 
91
  .slick-next {
92
  right: -25px;
93
+ [dir="rtl"] & {
94
  left: -25px;
95
  right: auto;
96
  }
97
  &:before {
98
  content: @slick-next-character;
99
+ [dir="rtl"] & {
100
  content: @slick-prev-character;
101
  }
102
  }
104
 
105
  /* Dots */
106
 
107
+ .slick-dotted .slick-slider {
108
  margin-bottom: 30px;
109
  }
110
 
111
  .slick-dots {
112
  position: absolute;
113
+ bottom: -25px;
114
  list-style: none;
115
  display: block;
116
  text-align: center;
117
  padding: 0;
118
+ margin: 0;
119
  width: 100%;
120
  li {
121
  position: relative;
assets/js/slick/slick-theme.scss CHANGED
@@ -2,15 +2,20 @@
2
 
3
  // Default Variables
4
 
 
 
 
 
 
5
  $slick-font-path: "./fonts/" !default;
6
  $slick-font-family: "slick" !default;
7
  $slick-loader-path: "./" !default;
8
  $slick-arrow-color: white !default;
9
  $slick-dot-color: black !default;
10
  $slick-dot-color-active: $slick-dot-color !default;
11
- $slick-prev-character: "" !default;
12
- $slick-next-character: "" !default;
13
- $slick-dot-character: "" !default;
14
  $slick-dot-size: 6px !default;
15
  $slick-opacity-default: 0.75 !default;
16
  $slick-opacity-on-hover: 1 !default;
@@ -67,7 +72,6 @@ $slick-opacity-not-active: 0.25 !default;
67
  background: transparent;
68
  color: transparent;
69
  top: 50%;
70
- margin-top: -10px\9; /*lte IE 8*/
71
  -webkit-transform: translate(0, -50%);
72
  -ms-transform: translate(0, -50%);
73
  transform: translate(0, -50%);
@@ -85,16 +89,15 @@ $slick-opacity-not-active: 0.25 !default;
85
  &.slick-disabled:before {
86
  opacity: $slick-opacity-not-active;
87
  }
88
- }
89
-
90
- .slick-prev:before, .slick-next:before {
91
- font-family: $slick-font-family;
92
- font-size: 20px;
93
- line-height: 1;
94
- color: $slick-arrow-color;
95
- opacity: $slick-opacity-default;
96
- -webkit-font-smoothing: antialiased;
97
- -moz-osx-font-smoothing: grayscale;
98
  }
99
 
100
  .slick-prev {
@@ -127,17 +130,18 @@ $slick-opacity-not-active: 0.25 !default;
127
 
128
  /* Dots */
129
 
130
- .slick-slider {
131
  margin-bottom: 30px;
132
  }
133
 
134
  .slick-dots {
135
  position: absolute;
136
- bottom: -45px;
137
  list-style: none;
138
  display: block;
139
  text-align: center;
140
  padding: 0;
 
141
  width: 100%;
142
  li {
143
  position: relative;
2
 
3
  // Default Variables
4
 
5
+ // Slick icon entity codes outputs the following
6
+ // "\2190" outputs ascii character "←"
7
+ // "\2192" outputs ascii character "→"
8
+ // "\2022" outputs ascii character "•"
9
+
10
  $slick-font-path: "./fonts/" !default;
11
  $slick-font-family: "slick" !default;
12
  $slick-loader-path: "./" !default;
13
  $slick-arrow-color: white !default;
14
  $slick-dot-color: black !default;
15
  $slick-dot-color-active: $slick-dot-color !default;
16
+ $slick-prev-character: "\2190" !default;
17
+ $slick-next-character: "\2192" !default;
18
+ $slick-dot-character: "\2022" !default;
19
  $slick-dot-size: 6px !default;
20
  $slick-opacity-default: 0.75 !default;
21
  $slick-opacity-on-hover: 1 !default;
72
  background: transparent;
73
  color: transparent;
74
  top: 50%;
 
75
  -webkit-transform: translate(0, -50%);
76
  -ms-transform: translate(0, -50%);
77
  transform: translate(0, -50%);
89
  &.slick-disabled:before {
90
  opacity: $slick-opacity-not-active;
91
  }
92
+ &:before {
93
+ font-family: $slick-font-family;
94
+ font-size: 20px;
95
+ line-height: 1;
96
+ color: $slick-arrow-color;
97
+ opacity: $slick-opacity-default;
98
+ -webkit-font-smoothing: antialiased;
99
+ -moz-osx-font-smoothing: grayscale;
100
+ }
 
101
  }
102
 
103
  .slick-prev {
130
 
131
  /* Dots */
132
 
133
+ .slick-dotted.slick-slider {
134
  margin-bottom: 30px;
135
  }
136
 
137
  .slick-dots {
138
  position: absolute;
139
+ bottom: -25px;
140
  list-style: none;
141
  display: block;
142
  text-align: center;
143
  padding: 0;
144
+ margin: 0;
145
  width: 100%;
146
  li {
147
  position: relative;
assets/js/slick/slick.css CHANGED
@@ -4,9 +4,7 @@
4
  position: relative;
5
 
6
  display: block;
7
-
8
- -moz-box-sizing: border-box;
9
- box-sizing: border-box;
10
 
11
  -webkit-user-select: none;
12
  -moz-user-select: none;
@@ -57,6 +55,8 @@
57
  left: 0;
58
 
59
  display: block;
 
 
60
  }
61
  .slick-track:before,
62
  .slick-track:after
@@ -116,4 +116,4 @@
116
  }
117
  .slick-arrow.slick-hidden {
118
  display: none;
119
- }
4
  position: relative;
5
 
6
  display: block;
7
+ box-sizing: border-box;
 
 
8
 
9
  -webkit-user-select: none;
10
  -moz-user-select: none;
55
  left: 0;
56
 
57
  display: block;
58
+ margin-left: auto;
59
+ margin-right: auto;
60
  }
61
  .slick-track:before,
62
  .slick-track:after
116
  }
117
  .slick-arrow.slick-hidden {
118
  display: none;
119
+ }
assets/js/slick/slick.js CHANGED
@@ -6,7 +6,7 @@
6
  |___/_|_|\___|_|\_(_)/ |___/
7
  |__/
8
 
9
- Version: 1.5.9
10
  Author: Ken Wheeler
11
  Website: http://kenwheeler.github.io
12
  Docs: http://kenwheeler.github.io/slick
@@ -15,7 +15,7 @@
15
 
16
  */
17
  /* global window, document, define, jQuery, setInterval, clearInterval */
18
- (function(factory) {
19
  'use strict';
20
  if (typeof define === 'function' && define.amd) {
21
  define(['jquery'], factory);
@@ -44,15 +44,15 @@
44
  appendDots: $(element),
45
  arrows: true,
46
  asNavFor: null,
47
- prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
48
- nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
49
  autoplay: false,
50
  autoplaySpeed: 3000,
51
  centerMode: false,
52
  centerPadding: '50px',
53
  cssEase: 'ease',
54
  customPaging: function(slider, i) {
55
- return '<button type="button" data-role="none" role="button" aria-required="false" tabindex="0">' + (i + 1) + '</button>';
56
  },
57
  dots: false,
58
  dotsClass: 'slick-dots',
@@ -61,11 +61,13 @@
61
  edgeFriction: 0.35,
62
  fade: false,
63
  focusOnSelect: false,
 
64
  infinite: true,
65
  initialSlide: 0,
66
  lazyLoad: 'ondemand',
67
  mobileFirst: false,
68
  pauseOnHover: true,
 
69
  pauseOnDotsHover: false,
70
  respondTo: 'window',
71
  responsive: null,
@@ -81,7 +83,7 @@
81
  touchMove: true,
82
  touchThreshold: 5,
83
  useCSS: true,
84
- useTransform: false,
85
  variableWidth: false,
86
  vertical: false,
87
  verticalSwiping: false,
@@ -103,6 +105,7 @@
103
  loadIndex: 0,
104
  $nextArrow: null,
105
  $prevArrow: null,
 
106
  slideCount: null,
107
  slideWidth: null,
108
  $slideTrack: null,
@@ -110,6 +113,7 @@
110
  sliding: false,
111
  slideOffset: 0,
112
  swipeLeft: null,
 
113
  $list: null,
114
  touchObject: {},
115
  transformsEnabled: false,
@@ -124,8 +128,10 @@
124
  _.breakpoints = [];
125
  _.breakpointSettings = [];
126
  _.cssTransitions = false;
 
 
127
  _.hidden = 'hidden';
128
- _.paused = false;
129
  _.positionProp = null;
130
  _.respondTo = null;
131
  _.rowCount = 1;
@@ -140,7 +146,7 @@
140
 
141
  dataSettings = $(element).data('slick') || {};
142
 
143
- _.options = $.extend({}, _.defaults, dataSettings, settings);
144
 
145
  _.currentSlide = _.options.initialSlide;
146
 
@@ -156,6 +162,7 @@
156
 
157
  _.autoPlay = $.proxy(_.autoPlay, _);
158
  _.autoPlayClear = $.proxy(_.autoPlayClear, _);
 
159
  _.changeSlide = $.proxy(_.changeSlide, _);
160
  _.clickHandler = $.proxy(_.clickHandler, _);
161
  _.selectHandler = $.proxy(_.selectHandler, _);
@@ -163,7 +170,6 @@
163
  _.swipeHandler = $.proxy(_.swipeHandler, _);
164
  _.dragHandler = $.proxy(_.dragHandler, _);
165
  _.keyHandler = $.proxy(_.keyHandler, _);
166
- _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
167
 
168
  _.instanceUid = instanceUid++;
169
 
@@ -175,7 +181,6 @@
175
 
176
  _.registerBreakpoints();
177
  _.init(true);
178
- _.checkResponsive(true);
179
 
180
  }
181
 
@@ -183,6 +188,17 @@
183
 
184
  }());
185
 
 
 
 
 
 
 
 
 
 
 
 
186
  Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
187
 
188
  var _ = this;
@@ -318,7 +334,7 @@
318
 
319
  };
320
 
321
- Slick.prototype.asNavFor = function(index) {
322
 
323
  var _ = this,
324
  asNavFor = _.options.asNavFor;
@@ -327,6 +343,15 @@
327
  asNavFor = $(asNavFor).not(_.$slider);
328
  }
329
 
 
 
 
 
 
 
 
 
 
330
  if ( asNavFor !== null && typeof asNavFor === 'object' ) {
331
  asNavFor.each(function() {
332
  var target = $(this).slick('getSlick');
@@ -361,13 +386,10 @@
361
 
362
  var _ = this;
363
 
364
- if (_.autoPlayTimer) {
365
- clearInterval(_.autoPlayTimer);
366
- }
367
 
368
- if (_.slideCount > _.options.slidesToShow && _.paused !== true) {
369
- _.autoPlayTimer = setInterval(_.autoPlayIterator,
370
- _.options.autoplaySpeed);
371
  }
372
 
373
  };
@@ -375,6 +397,7 @@
375
  Slick.prototype.autoPlayClear = function() {
376
 
377
  var _ = this;
 
378
  if (_.autoPlayTimer) {
379
  clearInterval(_.autoPlayTimer);
380
  }
@@ -383,34 +406,30 @@
383
 
384
  Slick.prototype.autoPlayIterator = function() {
385
 
386
- var _ = this;
 
387
 
388
- if (_.options.infinite === false) {
389
 
390
- if (_.direction === 1) {
391
 
392
- if ((_.currentSlide + 1) === _.slideCount -
393
- 1) {
394
  _.direction = 0;
395
  }
396
 
397
- _.slideHandler(_.currentSlide + _.options.slidesToScroll);
398
-
399
- } else {
400
 
401
- if ((_.currentSlide - 1 === 0)) {
402
 
403
- _.direction = 1;
 
 
404
 
405
  }
406
 
407
- _.slideHandler(_.currentSlide - _.options.slidesToScroll);
408
-
409
  }
410
 
411
- } else {
412
-
413
- _.slideHandler(_.currentSlide + _.options.slidesToScroll);
414
 
415
  }
416
 
@@ -463,22 +482,21 @@
463
  Slick.prototype.buildDots = function() {
464
 
465
  var _ = this,
466
- i, dotString;
467
 
468
- if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
469
 
470
- dotString = '<ul class="' + _.options.dotsClass + '">';
 
 
471
 
472
  for (i = 0; i <= _.getDotCount(); i += 1) {
473
- dotString += '<li>' + _.options.customPaging.call(this, _, i) + '</li>';
474
  }
475
 
476
- dotString += '</ul>';
477
-
478
- _.$dots = $(dotString).appendTo(
479
- _.options.appendDots);
480
 
481
- _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false');
482
 
483
  }
484
 
@@ -508,7 +526,7 @@
508
  _.$slides.wrapAll('<div class="slick-track"/>').parent();
509
 
510
  _.$list = _.$slideTrack.wrap(
511
- '<div aria-live="polite" class="slick-list"/>').parent();
512
  _.$slideTrack.css('opacity', 0);
513
 
514
  if (_.options.centerMode === true || _.options.swipeToSlide === true) {
@@ -563,7 +581,7 @@
563
  newSlides.appendChild(slide);
564
  }
565
 
566
- _.$slider.html(newSlides);
567
  _.$slider.children().children().children()
568
  .css({
569
  'width':(100 / _.options.slidesPerRow) + '%',
@@ -665,7 +683,7 @@
665
  Slick.prototype.changeSlide = function(event, dontAnimate) {
666
 
667
  var _ = this,
668
- $target = $(event.target),
669
  indexOffset, slideOffset, unevenOffset;
670
 
671
  // If target is a link, prevent default action.
@@ -739,21 +757,26 @@
739
 
740
  if (_.options.dots && _.$dots !== null) {
741
 
742
- $('li', _.$dots).off('click.slick', _.changeSlide);
743
-
744
- if (_.options.pauseOnDotsHover === true && _.options.autoplay === true) {
745
-
746
- $('li', _.$dots)
747
- .off('mouseenter.slick', $.proxy(_.setPaused, _, true))
748
- .off('mouseleave.slick', $.proxy(_.setPaused, _, false));
749
 
 
 
750
  }
751
-
752
  }
753
 
 
 
754
  if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
755
  _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
756
  _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
 
 
 
 
 
757
  }
758
 
759
  _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
@@ -765,8 +788,7 @@
765
 
766
  $(document).off(_.visibilityChange, _.visibility);
767
 
768
- _.$list.off('mouseenter.slick', $.proxy(_.setPaused, _, true));
769
- _.$list.off('mouseleave.slick', $.proxy(_.setPaused, _, false));
770
 
771
  if (_.options.accessibility === true) {
772
  _.$list.off('keydown.slick', _.keyHandler);
@@ -783,7 +805,16 @@
783
  $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
784
 
785
  $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
786
- $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition);
 
 
 
 
 
 
 
 
 
787
  };
788
 
789
  Slick.prototype.cleanUpRows = function() {
@@ -793,7 +824,7 @@
793
  if(_.options.rows > 1) {
794
  originalSlides = _.$slides.children().children();
795
  originalSlides.removeAttr('style');
796
- _.$slider.html(originalSlides);
797
  }
798
 
799
  };
@@ -826,13 +857,12 @@
826
  _.$dots.remove();
827
  }
828
 
829
-
830
  if ( _.$prevArrow && _.$prevArrow.length ) {
831
 
832
  _.$prevArrow
833
  .removeClass('slick-disabled slick-arrow slick-hidden')
834
  .removeAttr('aria-hidden aria-disabled tabindex')
835
- .css("display","");
836
 
837
  if ( _.htmlExpr.test( _.options.prevArrow )) {
838
  _.$prevArrow.remove();
@@ -844,12 +874,11 @@
844
  _.$nextArrow
845
  .removeClass('slick-disabled slick-arrow slick-hidden')
846
  .removeAttr('aria-hidden aria-disabled tabindex')
847
- .css("display","");
848
 
849
  if ( _.htmlExpr.test( _.options.nextArrow )) {
850
  _.$nextArrow.remove();
851
  }
852
-
853
  }
854
 
855
 
@@ -876,6 +905,7 @@
876
 
877
  _.$slider.removeClass('slick-slider');
878
  _.$slider.removeClass('slick-initialized');
 
879
 
880
  _.unslicked = true;
881
 
@@ -980,6 +1010,29 @@
980
 
981
  };
982
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
983
  Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
984
 
985
  var _ = this;
@@ -996,14 +1049,20 @@
996
  var pagerQty = 0;
997
 
998
  if (_.options.infinite === true) {
999
- while (breakPoint < _.slideCount) {
1000
- ++pagerQty;
1001
- breakPoint = counter + _.options.slidesToScroll;
1002
- counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
 
 
 
 
1003
  }
1004
  } else if (_.options.centerMode === true) {
1005
  pagerQty = _.slideCount;
1006
- } else {
 
 
1007
  while (breakPoint < _.slideCount) {
1008
  ++pagerQty;
1009
  breakPoint = counter + _.options.slidesToScroll;
@@ -1021,7 +1080,8 @@
1021
  targetLeft,
1022
  verticalHeight,
1023
  verticalOffset = 0,
1024
- targetSlide;
 
1025
 
1026
  _.slideOffset = 0;
1027
  verticalHeight = _.$slides.first().outerHeight(true);
@@ -1029,7 +1089,16 @@
1029
  if (_.options.infinite === true) {
1030
  if (_.slideCount > _.options.slidesToShow) {
1031
  _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
1032
- verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;
 
 
 
 
 
 
 
 
 
1033
  }
1034
  if (_.slideCount % _.options.slidesToScroll !== 0) {
1035
  if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
@@ -1054,7 +1123,9 @@
1054
  verticalOffset = 0;
1055
  }
1056
 
1057
- if (_.options.centerMode === true && _.options.infinite === true) {
 
 
1058
  _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
1059
  } else if (_.options.centerMode === true) {
1060
  _.slideOffset = 0;
@@ -1204,6 +1275,8 @@
1204
  _.initializeEvents();
1205
  _.updateArrows();
1206
  _.updateDots();
 
 
1207
 
1208
  }
1209
 
@@ -1215,6 +1288,74 @@
1215
  _.initADA();
1216
  }
1217
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1218
  };
1219
 
1220
  Slick.prototype.initArrowEvents = function() {
@@ -1222,12 +1363,21 @@
1222
  var _ = this;
1223
 
1224
  if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1225
- _.$prevArrow.on('click.slick', {
1226
- message: 'previous'
1227
- }, _.changeSlide);
1228
- _.$nextArrow.on('click.slick', {
1229
- message: 'next'
1230
- }, _.changeSlide);
 
 
 
 
 
 
 
 
 
1231
  }
1232
 
1233
  };
@@ -1236,16 +1386,35 @@
1236
 
1237
  var _ = this;
1238
 
1239
- if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
1240
  $('li', _.$dots).on('click.slick', {
1241
  message: 'index'
1242
  }, _.changeSlide);
 
 
 
 
1243
  }
1244
 
1245
- if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.options.autoplay === true) {
 
1246
  $('li', _.$dots)
1247
- .on('mouseenter.slick', $.proxy(_.setPaused, _, true))
1248
- .on('mouseleave.slick', $.proxy(_.setPaused, _, false));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1249
  }
1250
 
1251
  };
@@ -1257,6 +1426,7 @@
1257
  _.initArrowEvents();
1258
 
1259
  _.initDotEvents();
 
1260
 
1261
  _.$list.on('touchstart.slick mousedown.slick', {
1262
  action: 'start'
@@ -1275,9 +1445,6 @@
1275
 
1276
  $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
1277
 
1278
- _.$list.on('mouseenter.slick', $.proxy(_.setPaused, _, true));
1279
- _.$list.on('mouseleave.slick', $.proxy(_.setPaused, _, false));
1280
-
1281
  if (_.options.accessibility === true) {
1282
  _.$list.on('keydown.slick', _.keyHandler);
1283
  }
@@ -1293,7 +1460,7 @@
1293
  $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
1294
 
1295
  $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
1296
- $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);
1297
 
1298
  };
1299
 
@@ -1314,12 +1481,6 @@
1314
 
1315
  }
1316
 
1317
- if (_.options.autoplay === true) {
1318
-
1319
- _.autoPlay();
1320
-
1321
- }
1322
-
1323
  };
1324
 
1325
  Slick.prototype.keyHandler = function(event) {
@@ -1330,13 +1491,13 @@
1330
  if (event.keyCode === 37 && _.options.accessibility === true) {
1331
  _.changeSlide({
1332
  data: {
1333
- message: 'previous'
1334
  }
1335
  });
1336
  } else if (event.keyCode === 39 && _.options.accessibility === true) {
1337
  _.changeSlide({
1338
  data: {
1339
- message: 'next'
1340
  }
1341
  });
1342
  }
@@ -1350,28 +1511,57 @@
1350
  loadRange, cloneRange, rangeStart, rangeEnd;
1351
 
1352
  function loadImages(imagesScope) {
 
1353
  $('img[data-lazy]', imagesScope).each(function() {
1354
 
1355
  var image = $(this),
1356
  imageSource = $(this).attr('data-lazy'),
 
 
1357
  imageToLoad = document.createElement('img');
1358
 
1359
  imageToLoad.onload = function() {
 
1360
  image
1361
  .animate({ opacity: 0 }, 100, function() {
 
 
 
 
 
 
 
 
 
 
 
1362
  image
1363
  .attr('src', imageSource)
1364
  .animate({ opacity: 1 }, 200, function() {
1365
  image
1366
- .removeAttr('data-lazy')
1367
  .removeClass('slick-loading');
1368
  });
 
1369
  });
 
 
 
 
 
 
 
 
 
 
 
 
1370
  };
1371
 
1372
  imageToLoad.src = imageSource;
1373
 
1374
  });
 
1375
  }
1376
 
1377
  if (_.options.centerMode === true) {
@@ -1384,7 +1574,7 @@
1384
  }
1385
  } else {
1386
  rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
1387
- rangeEnd = rangeStart + _.options.slidesToShow;
1388
  if (_.options.fade === true) {
1389
  if (rangeStart > 0) rangeStart--;
1390
  if (rangeEnd <= _.slideCount) rangeEnd++;
@@ -1392,6 +1582,21 @@
1392
  }
1393
 
1394
  loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1395
  loadImages(loadRange);
1396
 
1397
  if (_.slideCount <= _.options.slidesToShow) {
@@ -1462,8 +1667,11 @@
1462
 
1463
  var _ = this;
1464
 
1465
- _.paused = false;
1466
  _.autoPlay();
 
 
 
 
1467
 
1468
  };
1469
 
@@ -1471,19 +1679,31 @@
1471
 
1472
  var _ = this;
1473
 
1474
- _.$slider.trigger('afterChange', [_, index]);
1475
 
1476
- _.animating = false;
1477
 
1478
- _.setPosition();
1479
 
1480
- _.swipeLeft = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1481
 
1482
- if (_.options.autoplay === true && _.paused === false) {
1483
- _.autoPlay();
1484
- }
1485
- if (_.options.accessibility === true) {
1486
- _.initADA();
1487
  }
1488
 
1489
  };
@@ -1501,53 +1721,114 @@
1501
  };
1502
 
1503
  Slick.prototype.preventDefault = function(event) {
 
1504
  event.preventDefault();
 
1505
  };
1506
 
1507
- Slick.prototype.progressiveLazyLoad = function() {
 
 
1508
 
1509
  var _ = this,
1510
- imgCount, targetImage;
 
 
 
 
 
1511
 
1512
- imgCount = $('img[data-lazy]', _.$slider).length;
1513
 
1514
- if (imgCount > 0) {
1515
- targetImage = $('img[data-lazy]', _.$slider).first();
1516
- targetImage.attr('src', null);
1517
- targetImage.attr('src', targetImage.attr('data-lazy')).removeClass('slick-loading').load(function() {
1518
- targetImage.removeAttr('data-lazy');
1519
- _.progressiveLazyLoad();
 
 
 
 
 
1520
 
1521
- if (_.options.adaptiveHeight === true) {
1522
- _.setPosition();
 
1523
  }
1524
- })
1525
- .error(function() {
1526
- targetImage.removeAttr('data-lazy');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1527
  _.progressiveLazyLoad();
1528
- });
 
 
 
 
 
 
 
 
 
 
1529
  }
1530
 
1531
  };
1532
 
1533
  Slick.prototype.refresh = function( initializing ) {
1534
 
1535
- var _ = this, currentSlide, firstVisible;
1536
 
1537
- firstVisible = _.slideCount - _.options.slidesToShow;
 
 
 
 
 
 
 
 
 
 
1538
 
1539
- // check that the new breakpoint can actually accept the
1540
- // "current slide" as the current slide, otherwise we need
1541
- // to set it to the closest possible value.
1542
- if ( !_.options.infinite ) {
1543
- if ( _.slideCount <= _.options.slidesToShow ) {
1544
- _.currentSlide = 0;
1545
- } else if ( _.currentSlide > firstVisible ) {
1546
- _.currentSlide = firstVisible;
1547
- }
1548
  }
1549
 
1550
- currentSlide = _.currentSlide;
1551
 
1552
  _.destroy(true);
1553
 
@@ -1573,16 +1854,16 @@
1573
  var _ = this, breakpoint, currentBreakpoint, l,
1574
  responsiveSettings = _.options.responsive || null;
1575
 
1576
- if ( $.type(responsiveSettings) === "array" && responsiveSettings.length ) {
1577
 
1578
  _.respondTo = _.options.respondTo || 'window';
1579
 
1580
  for ( breakpoint in responsiveSettings ) {
1581
 
1582
  l = _.breakpoints.length-1;
1583
- currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
1584
 
1585
  if (responsiveSettings.hasOwnProperty(breakpoint)) {
 
1586
 
1587
  // loop through the breakpoints and cut out any existing
1588
  // ones with the same breakpoint number, we don't want dupes.
@@ -1637,6 +1918,8 @@
1637
  _.buildDots();
1638
  _.updateDots();
1639
  _.initDotEvents();
 
 
1640
 
1641
  _.checkResponsive(false, true);
1642
 
@@ -1644,15 +1927,15 @@
1644
  $(_.$slideTrack).children().on('click.slick', _.selectHandler);
1645
  }
1646
 
1647
- _.setSlideClasses(0);
1648
 
1649
  _.setPosition();
 
1650
 
1651
- _.$slider.trigger('reInit', [_]);
 
1652
 
1653
- if (_.options.autoplay === true) {
1654
- _.focusHandler();
1655
- }
1656
 
1657
  };
1658
 
@@ -1817,33 +2100,100 @@
1817
 
1818
  };
1819
 
1820
- Slick.prototype.setOption = Slick.prototype.slickSetOption = function(option, value, refresh) {
 
1821
 
1822
- var _ = this, l, item;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1823
 
1824
- if( option === "responsive" && $.type(value) === "array" ) {
1825
  for ( item in value ) {
1826
- if( $.type( _.options.responsive ) !== "array" ) {
 
 
1827
  _.options.responsive = [ value[item] ];
 
1828
  } else {
 
1829
  l = _.options.responsive.length-1;
 
1830
  // loop through the responsive object and splice out duplicates.
1831
  while( l >= 0 ) {
 
1832
  if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
 
1833
  _.options.responsive.splice(l,1);
 
1834
  }
 
1835
  l--;
 
1836
  }
 
1837
  _.options.responsive.push( value[item] );
 
1838
  }
 
1839
  }
1840
- } else {
1841
- _.options[option] = value;
1842
  }
1843
 
1844
- if (refresh === true) {
 
1845
  _.unload();
1846
  _.reinit();
 
1847
  }
1848
 
1849
  };
@@ -1946,14 +2296,15 @@
1946
 
1947
  if (_.options.centerMode === true) {
1948
 
 
 
1949
  centerOffset = Math.floor(_.options.slidesToShow / 2);
1950
 
1951
  if (_.options.infinite === true) {
1952
 
1953
  if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
1954
-
1955
  _.$slides
1956
- .slice(index - centerOffset, index + centerOffset + 1)
1957
  .addClass('slick-active')
1958
  .attr('aria-hidden', 'false');
1959
 
@@ -1961,7 +2312,7 @@
1961
 
1962
  indexOffset = _.options.slidesToShow + index;
1963
  allSlides
1964
- .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)
1965
  .addClass('slick-active')
1966
  .attr('aria-hidden', 'false');
1967
 
@@ -2027,10 +2378,9 @@
2027
 
2028
  }
2029
 
2030
- if (_.options.lazyLoad === 'ondemand') {
2031
  _.lazyLoad();
2032
  }
2033
-
2034
  };
2035
 
2036
  Slick.prototype.setupInfinite = function() {
@@ -2061,7 +2411,7 @@
2061
  .attr('data-slick-index', slideIndex - _.slideCount)
2062
  .prependTo(_.$slideTrack).addClass('slick-cloned');
2063
  }
2064
- for (i = 0; i < infiniteCount; i += 1) {
2065
  slideIndex = i;
2066
  $(_.$slides[slideIndex]).clone(true).attr('id', '')
2067
  .attr('data-slick-index', slideIndex + _.slideCount)
@@ -2077,18 +2427,15 @@
2077
 
2078
  };
2079
 
2080
- Slick.prototype.setPaused = function(paused) {
2081
 
2082
  var _ = this;
2083
 
2084
- if (_.options.autoplay === true && _.options.pauseOnHover === true) {
2085
- _.paused = paused;
2086
- if (!paused) {
2087
- _.autoPlay();
2088
- } else {
2089
- _.autoPlayClear();
2090
- }
2091
  }
 
 
2092
  };
2093
 
2094
  Slick.prototype.selectHandler = function(event) {
@@ -2106,8 +2453,7 @@
2106
 
2107
  if (_.slideCount <= _.options.slidesToShow) {
2108
 
2109
- _.setSlideClasses(index);
2110
- _.asNavFor(index);
2111
  return;
2112
 
2113
  }
@@ -2119,7 +2465,7 @@
2119
  Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
2120
 
2121
  var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
2122
- _ = this;
2123
 
2124
  sync = sync || false;
2125
 
@@ -2131,10 +2477,6 @@
2131
  return;
2132
  }
2133
 
2134
- if (_.slideCount <= _.options.slidesToShow) {
2135
- return;
2136
- }
2137
-
2138
  if (sync === false) {
2139
  _.asNavFor(index);
2140
  }
@@ -2171,7 +2513,7 @@
2171
  return;
2172
  }
2173
 
2174
- if (_.options.autoplay === true) {
2175
  clearInterval(_.autoPlayTimer);
2176
  }
2177
 
@@ -2200,6 +2542,17 @@
2200
 
2201
  _.setSlideClasses(_.currentSlide);
2202
 
 
 
 
 
 
 
 
 
 
 
 
2203
  _.updateDots();
2204
  _.updateArrows();
2205
 
@@ -2274,9 +2627,9 @@
2274
  }
2275
  if (_.options.verticalSwiping === true) {
2276
  if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
2277
- return 'left';
2278
  } else {
2279
- return 'right';
2280
  }
2281
  }
2282
 
@@ -2287,44 +2640,80 @@
2287
  Slick.prototype.swipeEnd = function(event) {
2288
 
2289
  var _ = this,
2290
- slideCount;
 
2291
 
2292
  _.dragging = false;
 
 
 
 
 
 
2293
 
2294
- _.shouldClick = (_.touchObject.swipeLength > 10) ? false : true;
 
2295
 
2296
- if (_.touchObject.curX === undefined) {
2297
  return false;
2298
  }
2299
 
2300
- if (_.touchObject.edgeHit === true) {
2301
- _.$slider.trigger('edge', [_, _.swipeDirection()]);
2302
  }
2303
 
2304
- if (_.touchObject.swipeLength >= _.touchObject.minSwipe) {
 
 
 
 
2305
 
2306
- switch (_.swipeDirection()) {
2307
  case 'left':
2308
- slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide + _.getSlideCount()) : _.currentSlide + _.getSlideCount();
2309
- _.slideHandler(slideCount);
 
 
 
 
 
2310
  _.currentDirection = 0;
2311
- _.touchObject = {};
2312
- _.$slider.trigger('swipe', [_, 'left']);
2313
  break;
2314
 
2315
  case 'right':
2316
- slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide - _.getSlideCount()) : _.currentSlide - _.getSlideCount();
2317
- _.slideHandler(slideCount);
 
 
 
 
 
2318
  _.currentDirection = 1;
2319
- _.touchObject = {};
2320
- _.$slider.trigger('swipe', [_, 'right']);
2321
  break;
 
 
 
 
2322
  }
 
 
 
 
 
 
 
 
 
2323
  } else {
2324
- if (_.touchObject.startX !== _.touchObject.curX) {
2325
- _.slideHandler(_.currentSlide);
 
 
2326
  _.touchObject = {};
 
2327
  }
 
2328
  }
2329
 
2330
  };
@@ -2372,11 +2761,11 @@
2372
 
2373
  var _ = this,
2374
  edgeWasHit = false,
2375
- curLeft, swipeDirection, swipeLength, positionOffset, touches;
2376
 
2377
  touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
2378
 
2379
- if (!_.dragging || touches && touches.length !== 1) {
2380
  return false;
2381
  }
2382
 
@@ -2388,18 +2777,22 @@
2388
  _.touchObject.swipeLength = Math.round(Math.sqrt(
2389
  Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
2390
 
 
 
 
 
 
 
 
 
2391
  if (_.options.verticalSwiping === true) {
2392
- _.touchObject.swipeLength = Math.round(Math.sqrt(
2393
- Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
2394
  }
2395
 
2396
  swipeDirection = _.swipeDirection();
2397
 
2398
- if (swipeDirection === 'vertical') {
2399
- return;
2400
- }
2401
-
2402
  if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
 
2403
  event.preventDefault();
2404
  }
2405
 
@@ -2447,6 +2840,8 @@
2447
  var _ = this,
2448
  touches;
2449
 
 
 
2450
  if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
2451
  _.touchObject = {};
2452
  return false;
@@ -2557,14 +2952,13 @@
2557
 
2558
  _.$dots
2559
  .find('li')
2560
- .removeClass('slick-active')
2561
- .attr('aria-hidden', 'true');
2562
 
2563
  _.$dots
2564
  .find('li')
2565
  .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
2566
- .addClass('slick-active')
2567
- .attr('aria-hidden', 'false');
2568
 
2569
  }
2570
 
@@ -2574,80 +2968,20 @@
2574
 
2575
  var _ = this;
2576
 
2577
- if (document[_.hidden]) {
2578
- _.paused = true;
2579
- _.autoPlayClear();
2580
- } else {
2581
- if (_.options.autoplay === true) {
2582
- _.paused = false;
2583
- _.autoPlay();
2584
- }
2585
- }
2586
 
2587
- };
2588
- Slick.prototype.initADA = function() {
2589
- var _ = this;
2590
- _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
2591
- 'aria-hidden': 'true',
2592
- 'tabindex': '-1'
2593
- }).find('a, input, button, select').attr({
2594
- 'tabindex': '-1'
2595
- });
2596
 
2597
- _.$slideTrack.attr('role', 'listbox');
2598
-
2599
- _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
2600
- $(this).attr({
2601
- 'role': 'option',
2602
- 'aria-describedby': 'slick-slide' + _.instanceUid + i + ''
2603
- });
2604
- });
2605
-
2606
- if (_.$dots !== null) {
2607
- _.$dots.attr('role', 'tablist').find('li').each(function(i) {
2608
- $(this).attr({
2609
- 'role': 'presentation',
2610
- 'aria-selected': 'false',
2611
- 'aria-controls': 'navigation' + _.instanceUid + i + '',
2612
- 'id': 'slick-slide' + _.instanceUid + i + ''
2613
- });
2614
- })
2615
- .first().attr('aria-selected', 'true').end()
2616
- .find('button').attr('role', 'button').end()
2617
- .closest('div').attr('role', 'toolbar');
2618
- }
2619
- _.activateADA();
2620
 
2621
- };
2622
 
2623
- Slick.prototype.activateADA = function() {
2624
- var _ = this;
2625
 
2626
- _.$slideTrack.find('.slick-active').attr({
2627
- 'aria-hidden': 'false'
2628
- }).find('a, input, button, select').attr({
2629
- 'tabindex': '0'
2630
- });
2631
 
2632
- };
2633
 
2634
- Slick.prototype.focusHandler = function() {
2635
- var _ = this;
2636
- _.$slider.on('focus.slick blur.slick', '*', function(event) {
2637
- event.stopImmediatePropagation();
2638
- var sf = $(this);
2639
- setTimeout(function() {
2640
- if (_.isPlay) {
2641
- if (sf.is(':focus')) {
2642
- _.autoPlayClear();
2643
- _.paused = true;
2644
- } else {
2645
- _.paused = false;
2646
- _.autoPlay();
2647
- }
2648
- }
2649
- }, 0);
2650
- });
2651
  };
2652
 
2653
  $.fn.slick = function() {
6
  |___/_|_|\___|_|\_(_)/ |___/
7
  |__/
8
 
9
+ Version: 1.8.0
10
  Author: Ken Wheeler
11
  Website: http://kenwheeler.github.io
12
  Docs: http://kenwheeler.github.io/slick
15
 
16
  */
17
  /* global window, document, define, jQuery, setInterval, clearInterval */
18
+ ;(function(factory) {
19
  'use strict';
20
  if (typeof define === 'function' && define.amd) {
21
  define(['jquery'], factory);
44
  appendDots: $(element),
45
  arrows: true,
46
  asNavFor: null,
47
+ prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
48
+ nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
49
  autoplay: false,
50
  autoplaySpeed: 3000,
51
  centerMode: false,
52
  centerPadding: '50px',
53
  cssEase: 'ease',
54
  customPaging: function(slider, i) {
55
+ return $('<button type="button" />').text(i + 1);
56
  },
57
  dots: false,
58
  dotsClass: 'slick-dots',
61
  edgeFriction: 0.35,
62
  fade: false,
63
  focusOnSelect: false,
64
+ focusOnChange: false,
65
  infinite: true,
66
  initialSlide: 0,
67
  lazyLoad: 'ondemand',
68
  mobileFirst: false,
69
  pauseOnHover: true,
70
+ pauseOnFocus: true,
71
  pauseOnDotsHover: false,
72
  respondTo: 'window',
73
  responsive: null,
83
  touchMove: true,
84
  touchThreshold: 5,
85
  useCSS: true,
86
+ useTransform: true,
87
  variableWidth: false,
88
  vertical: false,
89
  verticalSwiping: false,
105
  loadIndex: 0,
106
  $nextArrow: null,
107
  $prevArrow: null,
108
+ scrolling: false,
109
  slideCount: null,
110
  slideWidth: null,
111
  $slideTrack: null,
113
  sliding: false,
114
  slideOffset: 0,
115
  swipeLeft: null,
116
+ swiping: false,
117
  $list: null,
118
  touchObject: {},
119
  transformsEnabled: false,
128
  _.breakpoints = [];
129
  _.breakpointSettings = [];
130
  _.cssTransitions = false;
131
+ _.focussed = false;
132
+ _.interrupted = false;
133
  _.hidden = 'hidden';
134
+ _.paused = true;
135
  _.positionProp = null;
136
  _.respondTo = null;
137
  _.rowCount = 1;
146
 
147
  dataSettings = $(element).data('slick') || {};
148
 
149
+ _.options = $.extend({}, _.defaults, settings, dataSettings);
150
 
151
  _.currentSlide = _.options.initialSlide;
152
 
162
 
163
  _.autoPlay = $.proxy(_.autoPlay, _);
164
  _.autoPlayClear = $.proxy(_.autoPlayClear, _);
165
+ _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
166
  _.changeSlide = $.proxy(_.changeSlide, _);
167
  _.clickHandler = $.proxy(_.clickHandler, _);
168
  _.selectHandler = $.proxy(_.selectHandler, _);
170
  _.swipeHandler = $.proxy(_.swipeHandler, _);
171
  _.dragHandler = $.proxy(_.dragHandler, _);
172
  _.keyHandler = $.proxy(_.keyHandler, _);
 
173
 
174
  _.instanceUid = instanceUid++;
175
 
181
 
182
  _.registerBreakpoints();
183
  _.init(true);
 
184
 
185
  }
186
 
188
 
189
  }());
190
 
191
+ Slick.prototype.activateADA = function() {
192
+ var _ = this;
193
+
194
+ _.$slideTrack.find('.slick-active').attr({
195
+ 'aria-hidden': 'false'
196
+ }).find('a, input, button, select').attr({
197
+ 'tabindex': '0'
198
+ });
199
+
200
+ };
201
+
202
  Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
203
 
204
  var _ = this;
334
 
335
  };
336
 
337
+ Slick.prototype.getNavTarget = function() {
338
 
339
  var _ = this,
340
  asNavFor = _.options.asNavFor;
343
  asNavFor = $(asNavFor).not(_.$slider);
344
  }
345
 
346
+ return asNavFor;
347
+
348
+ };
349
+
350
+ Slick.prototype.asNavFor = function(index) {
351
+
352
+ var _ = this,
353
+ asNavFor = _.getNavTarget();
354
+
355
  if ( asNavFor !== null && typeof asNavFor === 'object' ) {
356
  asNavFor.each(function() {
357
  var target = $(this).slick('getSlick');
386
 
387
  var _ = this;
388
 
389
+ _.autoPlayClear();
 
 
390
 
391
+ if ( _.slideCount > _.options.slidesToShow ) {
392
+ _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
 
393
  }
394
 
395
  };
397
  Slick.prototype.autoPlayClear = function() {
398
 
399
  var _ = this;
400
+
401
  if (_.autoPlayTimer) {
402
  clearInterval(_.autoPlayTimer);
403
  }
406
 
407
  Slick.prototype.autoPlayIterator = function() {
408
 
409
+ var _ = this,
410
+ slideTo = _.currentSlide + _.options.slidesToScroll;
411
 
412
+ if ( !_.paused && !_.interrupted && !_.focussed ) {
413
 
414
+ if ( _.options.infinite === false ) {
415
 
416
+ if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
 
417
  _.direction = 0;
418
  }
419
 
420
+ else if ( _.direction === 0 ) {
 
 
421
 
422
+ slideTo = _.currentSlide - _.options.slidesToScroll;
423
 
424
+ if ( _.currentSlide - 1 === 0 ) {
425
+ _.direction = 1;
426
+ }
427
 
428
  }
429
 
 
 
430
  }
431
 
432
+ _.slideHandler( slideTo );
 
 
433
 
434
  }
435
 
482
  Slick.prototype.buildDots = function() {
483
 
484
  var _ = this,
485
+ i, dot;
486
 
487
+ if (_.options.dots === true) {
488
 
489
+ _.$slider.addClass('slick-dotted');
490
+
491
+ dot = $('<ul />').addClass(_.options.dotsClass);
492
 
493
  for (i = 0; i <= _.getDotCount(); i += 1) {
494
+ dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
495
  }
496
 
497
+ _.$dots = dot.appendTo(_.options.appendDots);
 
 
 
498
 
499
+ _.$dots.find('li').first().addClass('slick-active');
500
 
501
  }
502
 
526
  _.$slides.wrapAll('<div class="slick-track"/>').parent();
527
 
528
  _.$list = _.$slideTrack.wrap(
529
+ '<div class="slick-list"/>').parent();
530
  _.$slideTrack.css('opacity', 0);
531
 
532
  if (_.options.centerMode === true || _.options.swipeToSlide === true) {
581
  newSlides.appendChild(slide);
582
  }
583
 
584
+ _.$slider.empty().append(newSlides);
585
  _.$slider.children().children().children()
586
  .css({
587
  'width':(100 / _.options.slidesPerRow) + '%',
683
  Slick.prototype.changeSlide = function(event, dontAnimate) {
684
 
685
  var _ = this,
686
+ $target = $(event.currentTarget),
687
  indexOffset, slideOffset, unevenOffset;
688
 
689
  // If target is a link, prevent default action.
757
 
758
  if (_.options.dots && _.$dots !== null) {
759
 
760
+ $('li', _.$dots)
761
+ .off('click.slick', _.changeSlide)
762
+ .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
763
+ .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
 
 
 
764
 
765
+ if (_.options.accessibility === true) {
766
+ _.$dots.off('keydown.slick', _.keyHandler);
767
  }
 
768
  }
769
 
770
+ _.$slider.off('focus.slick blur.slick');
771
+
772
  if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
773
  _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
774
  _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
775
+
776
+ if (_.options.accessibility === true) {
777
+ _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);
778
+ _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);
779
+ }
780
  }
781
 
782
  _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
788
 
789
  $(document).off(_.visibilityChange, _.visibility);
790
 
791
+ _.cleanUpSlideEvents();
 
792
 
793
  if (_.options.accessibility === true) {
794
  _.$list.off('keydown.slick', _.keyHandler);
805
  $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
806
 
807
  $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
808
+
809
+ };
810
+
811
+ Slick.prototype.cleanUpSlideEvents = function() {
812
+
813
+ var _ = this;
814
+
815
+ _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
816
+ _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
817
+
818
  };
819
 
820
  Slick.prototype.cleanUpRows = function() {
824
  if(_.options.rows > 1) {
825
  originalSlides = _.$slides.children().children();
826
  originalSlides.removeAttr('style');
827
+ _.$slider.empty().append(originalSlides);
828
  }
829
 
830
  };
857
  _.$dots.remove();
858
  }
859
 
 
860
  if ( _.$prevArrow && _.$prevArrow.length ) {
861
 
862
  _.$prevArrow
863
  .removeClass('slick-disabled slick-arrow slick-hidden')
864
  .removeAttr('aria-hidden aria-disabled tabindex')
865
+ .css('display','');
866
 
867
  if ( _.htmlExpr.test( _.options.prevArrow )) {
868
  _.$prevArrow.remove();
874
  _.$nextArrow
875
  .removeClass('slick-disabled slick-arrow slick-hidden')
876
  .removeAttr('aria-hidden aria-disabled tabindex')
877
+ .css('display','');
878
 
879
  if ( _.htmlExpr.test( _.options.nextArrow )) {
880
  _.$nextArrow.remove();
881
  }
 
882
  }
883
 
884
 
905
 
906
  _.$slider.removeClass('slick-slider');
907
  _.$slider.removeClass('slick-initialized');
908
+ _.$slider.removeClass('slick-dotted');
909
 
910
  _.unslicked = true;
911
 
1010
 
1011
  };
1012
 
1013
+ Slick.prototype.focusHandler = function() {
1014
+
1015
+ var _ = this;
1016
+
1017
+ _.$slider
1018
+ .off('focus.slick blur.slick')
1019
+ .on('focus.slick blur.slick', '*', function(event) {
1020
+
1021
+ event.stopImmediatePropagation();
1022
+ var $sf = $(this);
1023
+
1024
+ setTimeout(function() {
1025
+
1026
+ if( _.options.pauseOnFocus ) {
1027
+ _.focussed = $sf.is(':focus');
1028
+ _.autoPlay();
1029
+ }
1030
+
1031
+ }, 0);
1032
+
1033
+ });
1034
+ };
1035
+
1036
  Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
1037
 
1038
  var _ = this;
1049
  var pagerQty = 0;
1050
 
1051
  if (_.options.infinite === true) {
1052
+ if (_.slideCount <= _.options.slidesToShow) {
1053
+ ++pagerQty;
1054
+ } else {
1055
+ while (breakPoint < _.slideCount) {
1056
+ ++pagerQty;
1057
+ breakPoint = counter + _.options.slidesToScroll;
1058
+ counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1059
+ }
1060
  }
1061
  } else if (_.options.centerMode === true) {
1062
  pagerQty = _.slideCount;
1063
+ } else if(!_.options.asNavFor) {
1064
+ pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
1065
+ }else {
1066
  while (breakPoint < _.slideCount) {
1067
  ++pagerQty;
1068
  breakPoint = counter + _.options.slidesToScroll;
1080
  targetLeft,
1081
  verticalHeight,
1082
  verticalOffset = 0,
1083
+ targetSlide,
1084
+ coef;
1085
 
1086
  _.slideOffset = 0;
1087
  verticalHeight = _.$slides.first().outerHeight(true);
1089
  if (_.options.infinite === true) {
1090
  if (_.slideCount > _.options.slidesToShow) {
1091
  _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
1092
+ coef = -1
1093
+
1094
+ if (_.options.vertical === true && _.options.centerMode === true) {
1095
+ if (_.options.slidesToShow === 2) {
1096
+ coef = -1.5;
1097
+ } else if (_.options.slidesToShow === 1) {
1098
+ coef = -2
1099
+ }
1100
+ }
1101
+ verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;
1102
  }
1103
  if (_.slideCount % _.options.slidesToScroll !== 0) {
1104
  if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
1123
  verticalOffset = 0;
1124
  }
1125
 
1126
+ if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {
1127
+ _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);
1128
+ } else if (_.options.centerMode === true && _.options.infinite === true) {
1129
  _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
1130
  } else if (_.options.centerMode === true) {
1131
  _.slideOffset = 0;
1275
  _.initializeEvents();
1276
  _.updateArrows();
1277
  _.updateDots();
1278
+ _.checkResponsive(true);
1279
+ _.focusHandler();
1280
 
1281
  }
1282
 
1288
  _.initADA();
1289
  }
1290
 
1291
+ if ( _.options.autoplay ) {
1292
+
1293
+ _.paused = false;
1294
+ _.autoPlay();
1295
+
1296
+ }
1297
+
1298
+ };
1299
+
1300
+ Slick.prototype.initADA = function() {
1301
+ var _ = this,
1302
+ numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),
1303
+ tabControlIndexes = _.getNavigableIndexes().filter(function(val) {
1304
+ return (val >= 0) && (val < _.slideCount);
1305
+ });
1306
+
1307
+ _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
1308
+ 'aria-hidden': 'true',
1309
+ 'tabindex': '-1'
1310
+ }).find('a, input, button, select').attr({
1311
+ 'tabindex': '-1'
1312
+ });
1313
+
1314
+ if (_.$dots !== null) {
1315
+ _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
1316
+ var slideControlIndex = tabControlIndexes.indexOf(i);
1317
+
1318
+ $(this).attr({
1319
+ 'role': 'tabpanel',
1320
+ 'id': 'slick-slide' + _.instanceUid + i,
1321
+ 'tabindex': -1
1322
+ });
1323
+
1324
+ if (slideControlIndex !== -1) {
1325
+ $(this).attr({
1326
+ 'aria-describedby': 'slick-slide-control' + _.instanceUid + slideControlIndex
1327
+ });
1328
+ }
1329
+ });
1330
+
1331
+ _.$dots.attr('role', 'tablist').find('li').each(function(i) {
1332
+ var mappedSlideIndex = tabControlIndexes[i];
1333
+
1334
+ $(this).attr({
1335
+ 'role': 'presentation'
1336
+ });
1337
+
1338
+ $(this).find('button').first().attr({
1339
+ 'role': 'tab',
1340
+ 'id': 'slick-slide-control' + _.instanceUid + i,
1341
+ 'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,
1342
+ 'aria-label': (i + 1) + ' of ' + numDotGroups,
1343
+ 'aria-selected': null,
1344
+ 'tabindex': '-1'
1345
+ });
1346
+
1347
+ }).eq(_.currentSlide).find('button').attr({
1348
+ 'aria-selected': 'true',
1349
+ 'tabindex': '0'
1350
+ }).end();
1351
+ }
1352
+
1353
+ for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {
1354
+ _.$slides.eq(i).attr('tabindex', 0);
1355
+ }
1356
+
1357
+ _.activateADA();
1358
+
1359
  };
1360
 
1361
  Slick.prototype.initArrowEvents = function() {
1363
  var _ = this;
1364
 
1365
  if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1366
+ _.$prevArrow
1367
+ .off('click.slick')
1368
+ .on('click.slick', {
1369
+ message: 'previous'
1370
+ }, _.changeSlide);
1371
+ _.$nextArrow
1372
+ .off('click.slick')
1373
+ .on('click.slick', {
1374
+ message: 'next'
1375
+ }, _.changeSlide);
1376
+
1377
+ if (_.options.accessibility === true) {
1378
+ _.$prevArrow.on('keydown.slick', _.keyHandler);
1379
+ _.$nextArrow.on('keydown.slick', _.keyHandler);
1380
+ }
1381
  }
1382
 
1383
  };
1386
 
1387
  var _ = this;
1388
 
1389
+ if (_.options.dots === true) {
1390
  $('li', _.$dots).on('click.slick', {
1391
  message: 'index'
1392
  }, _.changeSlide);
1393
+
1394
+ if (_.options.accessibility === true) {
1395
+ _.$dots.on('keydown.slick', _.keyHandler);
1396
+ }
1397
  }
1398
 
1399
+ if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {
1400
+
1401
  $('li', _.$dots)
1402
+ .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
1403
+ .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
1404
+
1405
+ }
1406
+
1407
+ };
1408
+
1409
+ Slick.prototype.initSlideEvents = function() {
1410
+
1411
+ var _ = this;
1412
+
1413
+ if ( _.options.pauseOnHover ) {
1414
+
1415
+ _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
1416
+ _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
1417
+
1418
  }
1419
 
1420
  };
1426
  _.initArrowEvents();
1427
 
1428
  _.initDotEvents();
1429
+ _.initSlideEvents();
1430
 
1431
  _.$list.on('touchstart.slick mousedown.slick', {
1432
  action: 'start'
1445
 
1446
  $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
1447
 
 
 
 
1448
  if (_.options.accessibility === true) {
1449
  _.$list.on('keydown.slick', _.keyHandler);
1450
  }
1460
  $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
1461
 
1462
  $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
1463
+ $(_.setPosition);
1464
 
1465
  };
1466
 
1481
 
1482
  }
1483
 
 
 
 
 
 
 
1484
  };
1485
 
1486
  Slick.prototype.keyHandler = function(event) {
1491
  if (event.keyCode === 37 && _.options.accessibility === true) {
1492
  _.changeSlide({
1493
  data: {
1494
+ message: _.options.rtl === true ? 'next' : 'previous'
1495
  }
1496
  });
1497
  } else if (event.keyCode === 39 && _.options.accessibility === true) {
1498
  _.changeSlide({
1499
  data: {
1500
+ message: _.options.rtl === true ? 'previous' : 'next'
1501
  }
1502
  });
1503
  }
1511
  loadRange, cloneRange, rangeStart, rangeEnd;
1512
 
1513
  function loadImages(imagesScope) {
1514
+
1515
  $('img[data-lazy]', imagesScope).each(function() {
1516
 
1517
  var image = $(this),
1518
  imageSource = $(this).attr('data-lazy'),
1519
+ imageSrcSet = $(this).attr('data-srcset'),
1520
+ imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),
1521
  imageToLoad = document.createElement('img');
1522
 
1523
  imageToLoad.onload = function() {
1524
+
1525
  image
1526
  .animate({ opacity: 0 }, 100, function() {
1527
+
1528
+ if (imageSrcSet) {
1529
+ image
1530
+ .attr('srcset', imageSrcSet );
1531
+
1532
+ if (imageSizes) {
1533
+ image
1534
+ .attr('sizes', imageSizes );
1535
+ }
1536
+ }
1537
+
1538
  image
1539
  .attr('src', imageSource)
1540
  .animate({ opacity: 1 }, 200, function() {
1541
  image
1542
+ .removeAttr('data-lazy data-srcset data-sizes')
1543
  .removeClass('slick-loading');
1544
  });
1545
+ _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
1546
  });
1547
+
1548
+ };
1549
+
1550
+ imageToLoad.onerror = function() {
1551
+
1552
+ image
1553
+ .removeAttr( 'data-lazy' )
1554
+ .removeClass( 'slick-loading' )
1555
+ .addClass( 'slick-lazyload-error' );
1556
+
1557
+ _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
1558
+
1559
  };
1560
 
1561
  imageToLoad.src = imageSource;
1562
 
1563
  });
1564
+
1565
  }
1566
 
1567
  if (_.options.centerMode === true) {
1574
  }
1575
  } else {
1576
  rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
1577
+ rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
1578
  if (_.options.fade === true) {
1579
  if (rangeStart > 0) rangeStart--;
1580
  if (rangeEnd <= _.slideCount) rangeEnd++;
1582
  }
1583
 
1584
  loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
1585
+
1586
+ if (_.options.lazyLoad === 'anticipated') {
1587
+ var prevSlide = rangeStart - 1,
1588
+ nextSlide = rangeEnd,
1589
+ $slides = _.$slider.find('.slick-slide');
1590
+
1591
+ for (var i = 0; i < _.options.slidesToScroll; i++) {
1592
+ if (prevSlide < 0) prevSlide = _.slideCount - 1;
1593
+ loadRange = loadRange.add($slides.eq(prevSlide));
1594
+ loadRange = loadRange.add($slides.eq(nextSlide));
1595
+ prevSlide--;
1596
+ nextSlide++;
1597
+ }
1598
+ }
1599
+
1600
  loadImages(loadRange);
1601
 
1602
  if (_.slideCount <= _.options.slidesToShow) {
1667
 
1668
  var _ = this;
1669
 
 
1670
  _.autoPlay();
1671
+ _.options.autoplay = true;
1672
+ _.paused = false;
1673
+ _.focussed = false;
1674
+ _.interrupted = false;
1675
 
1676
  };
1677
 
1679
 
1680
  var _ = this;
1681
 
1682
+ if( !_.unslicked ) {
1683
 
1684
+ _.$slider.trigger('afterChange', [_, index]);
1685
 
1686
+ _.animating = false;
1687
 
1688
+ if (_.slideCount > _.options.slidesToShow) {
1689
+ _.setPosition();
1690
+ }
1691
+
1692
+ _.swipeLeft = null;
1693
+
1694
+ if ( _.options.autoplay ) {
1695
+ _.autoPlay();
1696
+ }
1697
+
1698
+ if (_.options.accessibility === true) {
1699
+ _.initADA();
1700
+
1701
+ if (_.options.focusOnChange) {
1702
+ var $currentSlide = $(_.$slides.get(_.currentSlide));
1703
+ $currentSlide.attr('tabindex', 0).focus();
1704
+ }
1705
+ }
1706
 
 
 
 
 
 
1707
  }
1708
 
1709
  };
1721
  };
1722
 
1723
  Slick.prototype.preventDefault = function(event) {
1724
+
1725
  event.preventDefault();
1726
+
1727
  };
1728
 
1729
+ Slick.prototype.progressiveLazyLoad = function( tryCount ) {
1730
+
1731
+ tryCount = tryCount || 1;
1732
 
1733
  var _ = this,
1734
+ $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
1735
+ image,
1736
+ imageSource,
1737
+ imageSrcSet,
1738
+ imageSizes,
1739
+ imageToLoad;
1740
 
1741
+ if ( $imgsToLoad.length ) {
1742
 
1743
+ image = $imgsToLoad.first();
1744
+ imageSource = image.attr('data-lazy');
1745
+ imageSrcSet = image.attr('data-srcset');
1746
+ imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes');
1747
+ imageToLoad = document.createElement('img');
1748
+
1749
+ imageToLoad.onload = function() {
1750
+
1751
+ if (imageSrcSet) {
1752
+ image
1753
+ .attr('srcset', imageSrcSet );
1754
 
1755
+ if (imageSizes) {
1756
+ image
1757
+ .attr('sizes', imageSizes );
1758
  }
1759
+ }
1760
+
1761
+ image
1762
+ .attr( 'src', imageSource )
1763
+ .removeAttr('data-lazy data-srcset data-sizes')
1764
+ .removeClass('slick-loading');
1765
+
1766
+ if ( _.options.adaptiveHeight === true ) {
1767
+ _.setPosition();
1768
+ }
1769
+
1770
+ _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
1771
+ _.progressiveLazyLoad();
1772
+
1773
+ };
1774
+
1775
+ imageToLoad.onerror = function() {
1776
+
1777
+ if ( tryCount < 3 ) {
1778
+
1779
+ /**
1780
+ * try to load the image 3 times,
1781
+ * leave a slight delay so we don't get
1782
+ * servers blocking the request.
1783
+ */
1784
+ setTimeout( function() {
1785
+ _.progressiveLazyLoad( tryCount + 1 );
1786
+ }, 500 );
1787
+
1788
+ } else {
1789
+
1790
+ image
1791
+ .removeAttr( 'data-lazy' )
1792
+ .removeClass( 'slick-loading' )
1793
+ .addClass( 'slick-lazyload-error' );
1794
+
1795
+ _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
1796
+
1797
  _.progressiveLazyLoad();
1798
+
1799
+ }
1800
+
1801
+ };
1802
+
1803
+ imageToLoad.src = imageSource;
1804
+
1805
+ } else {
1806
+
1807
+ _.$slider.trigger('allImagesLoaded', [ _ ]);
1808
+
1809
  }
1810
 
1811
  };
1812
 
1813
  Slick.prototype.refresh = function( initializing ) {
1814
 
1815
+ var _ = this, currentSlide, lastVisibleIndex;
1816
 
1817
+ lastVisibleIndex = _.slideCount - _.options.slidesToShow;
1818
+
1819
+ // in non-infinite sliders, we don't want to go past the
1820
+ // last visible index.
1821
+ if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
1822
+ _.currentSlide = lastVisibleIndex;
1823
+ }
1824
+
1825
+ // if less slides than to show, go to start.
1826
+ if ( _.slideCount <= _.options.slidesToShow ) {
1827
+ _.currentSlide = 0;
1828
 
 
 
 
 
 
 
 
 
 
1829
  }
1830
 
1831
+ currentSlide = _.currentSlide;
1832
 
1833
  _.destroy(true);
1834
 
1854
  var _ = this, breakpoint, currentBreakpoint, l,
1855
  responsiveSettings = _.options.responsive || null;
1856
 
1857
+ if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
1858
 
1859
  _.respondTo = _.options.respondTo || 'window';
1860
 
1861
  for ( breakpoint in responsiveSettings ) {
1862
 
1863
  l = _.breakpoints.length-1;
 
1864
 
1865
  if (responsiveSettings.hasOwnProperty(breakpoint)) {
1866
+ currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
1867
 
1868
  // loop through the breakpoints and cut out any existing
1869
  // ones with the same breakpoint number, we don't want dupes.
1918
  _.buildDots();
1919
  _.updateDots();
1920
  _.initDotEvents();
1921
+ _.cleanUpSlideEvents();
1922
+ _.initSlideEvents();
1923
 
1924
  _.checkResponsive(false, true);
1925
 
1927
  $(_.$slideTrack).children().on('click.slick', _.selectHandler);
1928
  }
1929
 
1930
+ _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
1931
 
1932
  _.setPosition();
1933
+ _.focusHandler();
1934
 
1935
+ _.paused = !_.options.autoplay;
1936
+ _.autoPlay();
1937
 
1938
+ _.$slider.trigger('reInit', [_]);
 
 
1939
 
1940
  };
1941
 
2100
 
2101
  };
2102
 
2103
+ Slick.prototype.setOption =
2104
+ Slick.prototype.slickSetOption = function() {
2105
 
2106
+ /**
2107
+ * accepts arguments in format of:
2108
+ *
2109
+ * - for changing a single option's value:
2110
+ * .slick("setOption", option, value, refresh )
2111
+ *
2112
+ * - for changing a set of responsive options:
2113
+ * .slick("setOption", 'responsive', [{}, ...], refresh )
2114
+ *
2115
+ * - for updating multiple values at once (not responsive)
2116
+ * .slick("setOption", { 'option': value, ... }, refresh )
2117
+ */
2118
+
2119
+ var _ = this, l, item, option, value, refresh = false, type;
2120
+
2121
+ if( $.type( arguments[0] ) === 'object' ) {
2122
+
2123
+ option = arguments[0];
2124
+ refresh = arguments[1];
2125
+ type = 'multiple';
2126
+
2127
+ } else if ( $.type( arguments[0] ) === 'string' ) {
2128
+
2129
+ option = arguments[0];
2130
+ value = arguments[1];
2131
+ refresh = arguments[2];
2132
+
2133
+ if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
2134
+
2135
+ type = 'responsive';
2136
+
2137
+ } else if ( typeof arguments[1] !== 'undefined' ) {
2138
+
2139
+ type = 'single';
2140
+
2141
+ }
2142
+
2143
+ }
2144
+
2145
+ if ( type === 'single' ) {
2146
+
2147
+ _.options[option] = value;
2148
+
2149
+
2150
+ } else if ( type === 'multiple' ) {
2151
+
2152
+ $.each( option , function( opt, val ) {
2153
+
2154
+ _.options[opt] = val;
2155
+
2156
+ });
2157
+
2158
+
2159
+ } else if ( type === 'responsive' ) {
2160
 
 
2161
  for ( item in value ) {
2162
+
2163
+ if( $.type( _.options.responsive ) !== 'array' ) {
2164
+
2165
  _.options.responsive = [ value[item] ];
2166
+
2167
  } else {
2168
+
2169
  l = _.options.responsive.length-1;
2170
+
2171
  // loop through the responsive object and splice out duplicates.
2172
  while( l >= 0 ) {
2173
+
2174
  if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
2175
+
2176
  _.options.responsive.splice(l,1);
2177
+
2178
  }
2179
+
2180
  l--;
2181
+
2182
  }
2183
+
2184
  _.options.responsive.push( value[item] );
2185
+
2186
  }
2187
+
2188
  }
2189
+
 
2190
  }
2191
 
2192
+ if ( refresh ) {
2193
+
2194
  _.unload();
2195
  _.reinit();
2196
+
2197
  }
2198
 
2199
  };
2296
 
2297
  if (_.options.centerMode === true) {
2298
 
2299
+ var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;
2300
+
2301
  centerOffset = Math.floor(_.options.slidesToShow / 2);
2302
 
2303
  if (_.options.infinite === true) {
2304
 
2305
  if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
 
2306
  _.$slides
2307
+ .slice(index - centerOffset + evenCoef, index + centerOffset + 1)
2308
  .addClass('slick-active')
2309
  .attr('aria-hidden', 'false');
2310
 
2312
 
2313
  indexOffset = _.options.slidesToShow + index;
2314
  allSlides
2315
+ .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)
2316
  .addClass('slick-active')
2317
  .attr('aria-hidden', 'false');
2318
 
2378
 
2379
  }
2380
 
2381
+ if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {
2382
  _.lazyLoad();
2383
  }
 
2384
  };
2385
 
2386
  Slick.prototype.setupInfinite = function() {
2411
  .attr('data-slick-index', slideIndex - _.slideCount)
2412
  .prependTo(_.$slideTrack).addClass('slick-cloned');
2413
  }
2414
+ for (i = 0; i < infiniteCount + _.slideCount; i += 1) {
2415
  slideIndex = i;
2416
  $(_.$slides[slideIndex]).clone(true).attr('id', '')
2417
  .attr('data-slick-index', slideIndex + _.slideCount)
2427
 
2428
  };
2429
 
2430
+ Slick.prototype.interrupt = function( toggle ) {
2431
 
2432
  var _ = this;
2433
 
2434
+ if( !toggle ) {
2435
+ _.autoPlay();
 
 
 
 
 
2436
  }
2437
+ _.interrupted = toggle;
2438
+
2439
  };
2440
 
2441
  Slick.prototype.selectHandler = function(event) {
2453
 
2454
  if (_.slideCount <= _.options.slidesToShow) {
2455
 
2456
+ _.slideHandler(index, false, true);
 
2457
  return;
2458
 
2459
  }
2465
  Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
2466
 
2467
  var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
2468
+ _ = this, navTarget;
2469
 
2470
  sync = sync || false;
2471
 
2477
  return;
2478
  }
2479
 
 
 
 
 
2480
  if (sync === false) {
2481
  _.asNavFor(index);
2482
  }
2513
  return;
2514
  }
2515
 
2516
+ if ( _.options.autoplay ) {
2517
  clearInterval(_.autoPlayTimer);
2518
  }
2519
 
2542
 
2543
  _.setSlideClasses(_.currentSlide);
2544
 
2545
+ if ( _.options.asNavFor ) {
2546
+
2547
+ navTarget = _.getNavTarget();
2548
+ navTarget = navTarget.slick('getSlick');
2549
+
2550
+ if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
2551
+ navTarget.setSlideClasses(_.currentSlide);
2552
+ }
2553
+
2554
+ }
2555
+
2556
  _.updateDots();
2557
  _.updateArrows();
2558
 
2627
  }
2628
  if (_.options.verticalSwiping === true) {
2629
  if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
2630
+ return 'down';
2631
  } else {
2632
+ return 'up';
2633
  }
2634
  }
2635
 
2640
  Slick.prototype.swipeEnd = function(event) {
2641
 
2642
  var _ = this,
2643
+ slideCount,
2644
+ direction;
2645
 
2646
  _.dragging = false;
2647
+ _.swiping = false;
2648
+
2649
+ if (_.scrolling) {
2650
+ _.scrolling = false;
2651
+ return false;
2652
+ }
2653
 
2654
+ _.interrupted = false;
2655
+ _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
2656
 
2657
+ if ( _.touchObject.curX === undefined ) {
2658
  return false;
2659
  }
2660
 
2661
+ if ( _.touchObject.edgeHit === true ) {
2662
+ _.$slider.trigger('edge', [_, _.swipeDirection() ]);
2663
  }
2664
 
2665
+ if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
2666
+
2667
+ direction = _.swipeDirection();
2668
+
2669
+ switch ( direction ) {
2670
 
 
2671
  case 'left':
2672
+ case 'down':
2673
+
2674
+ slideCount =
2675
+ _.options.swipeToSlide ?
2676
+ _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
2677
+ _.currentSlide + _.getSlideCount();
2678
+
2679
  _.currentDirection = 0;
2680
+
 
2681
  break;
2682
 
2683
  case 'right':
2684
+ case 'up':
2685
+
2686
+ slideCount =
2687
+ _.options.swipeToSlide ?
2688
+ _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
2689
+ _.currentSlide - _.getSlideCount();
2690
+
2691
  _.currentDirection = 1;
2692
+
 
2693
  break;
2694
+
2695
+ default:
2696
+
2697
+
2698
  }
2699
+
2700
+ if( direction != 'vertical' ) {
2701
+
2702
+ _.slideHandler( slideCount );
2703
+ _.touchObject = {};
2704
+ _.$slider.trigger('swipe', [_, direction ]);
2705
+
2706
+ }
2707
+
2708
  } else {
2709
+
2710
+ if ( _.touchObject.startX !== _.touchObject.curX ) {
2711
+
2712
+ _.slideHandler( _.currentSlide );
2713
  _.touchObject = {};
2714
+
2715
  }
2716
+
2717
  }
2718
 
2719
  };
2761
 
2762
  var _ = this,
2763
  edgeWasHit = false,
2764
+ curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;
2765
 
2766
  touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
2767
 
2768
+ if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
2769
  return false;
2770
  }
2771
 
2777
  _.touchObject.swipeLength = Math.round(Math.sqrt(
2778
  Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
2779
 
2780
+ verticalSwipeLength = Math.round(Math.sqrt(
2781
+ Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
2782
+
2783
+ if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {
2784
+ _.scrolling = true;
2785
+ return false;
2786
+ }
2787
+
2788
  if (_.options.verticalSwiping === true) {
2789
+ _.touchObject.swipeLength = verticalSwipeLength;
 
2790
  }
2791
 
2792
  swipeDirection = _.swipeDirection();
2793
 
 
 
 
 
2794
  if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
2795
+ _.swiping = true;
2796
  event.preventDefault();
2797
  }
2798
 
2840
  var _ = this,
2841
  touches;
2842
 
2843
+ _.interrupted = true;
2844
+
2845
  if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
2846
  _.touchObject = {};
2847
  return false;
2952
 
2953
  _.$dots
2954
  .find('li')
2955
+ .removeClass('slick-active')
2956
+ .end();
2957
 
2958
  _.$dots
2959
  .find('li')
2960
  .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
2961
+ .addClass('slick-active');
 
2962
 
2963
  }
2964
 
2968
 
2969
  var _ = this;
2970
 
2971
+ if ( _.options.autoplay ) {
 
 
 
 
 
 
 
 
2972
 
2973
+ if ( document[_.hidden] ) {
 
 
 
 
 
 
 
 
2974
 
2975
+ _.interrupted = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2976
 
2977
+ } else {
2978
 
2979
+ _.interrupted = false;
 
2980
 
2981
+ }
 
 
 
 
2982
 
2983
+ }
2984
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2985
  };
2986
 
2987
  $.fn.slick = function() {
assets/js/slick/slick.less CHANGED
@@ -3,7 +3,6 @@
3
  .slick-slider {
4
  position: relative;
5
  display: block;
6
- -moz-box-sizing: border-box;
7
  box-sizing: border-box;
8
  -webkit-touch-callout: none;
9
  -webkit-user-select: none;
@@ -45,6 +44,8 @@
45
  left: 0;
46
  top: 0;
47
  display: block;
 
 
48
 
49
  &:before,
50
  &:after {
3
  .slick-slider {
4
  position: relative;
5
  display: block;
 
6
  box-sizing: border-box;
7
  -webkit-touch-callout: none;
8
  -webkit-user-select: none;
44
  left: 0;
45
  top: 0;
46
  display: block;
47
+ margin-left: auto;
48
+ margin-right: auto;
49
 
50
  &:before,
51
  &:after {
assets/js/slick/slick.min.js CHANGED
@@ -1,18 +1 @@
1
- /*
2
- _ _ _ _
3
- ___| (_) ___| | __ (_)___
4
- / __| | |/ __| |/ / | / __|
5
- \__ \ | | (__| < _ | \__ \
6
- |___/_|_|\___|_|\_(_)/ |___/
7
- |__/
8
-
9
- Version: 1.5.9
10
- Author: Ken Wheeler
11
- Website: http://kenwheeler.github.io
12
- Docs: http://kenwheeler.github.io/slick
13
- Repo: http://github.com/kenwheeler/slick
14
- Issues: http://github.com/kenwheeler/slick/issues
15
-
16
- */
17
- !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',nextArrow:'<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'<button type="button" data-role="none" role="button" aria-required="false" tabindex="0">'+(b+1)+"</button>"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!1,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]="translate3d("+b+"px, 0px, 0px)":d[e.animType]="translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:c[b.transitionType]="opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(a.currentSlide-1===0&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='<ul class="'+b.options.dotsClass+'">',c=0;c<=b.getDotCount();c+=1)d+="<li>"+b.options.customPaging.call(this,b,c)+"</li>";d+="</ul>",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('<div class="slick-track"/>').appendTo(b.$slider):b.$slides.wrapAll('<div class="slick-track"/>').parent(),b.$list=b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c<a.options.rows;c++){var j=document.createElement("div");for(d=0;d<a.options.slidesPerRow;d++){var k=b*h+(c*a.options.slidesPerRow+d);g.get(k)&&j.appendChild(g.get(k))}i.appendChild(j)}e.appendChild(i)}a.$slider.html(e),a.$slider.children().children().children().css({width:100/a.options.slidesPerRow+"%",display:"inline-block"})}},b.prototype.checkResponsive=function(b,c){var e,f,g,d=this,h=!1,i=d.$slider.width(),j=window.innerWidth||a(window).width();if("window"===d.respondTo?g=j:"slider"===d.respondTo?g=i:"min"===d.respondTo&&(g=Math.min(j,i)),d.options.responsive&&d.options.responsive.length&&null!==d.options.responsive){f=null;for(e in d.breakpoints)d.breakpoints.hasOwnProperty(e)&&(d.originalSettings.mobileFirst===!1?g<d.breakpoints[e]&&(f=d.breakpoints[e]):g>d.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(a<c[e]){a=d;break}d=c[e]}return a},b.prototype.cleanUpEvents=function(){var b=this;b.options.dots&&null!==b.$dots&&(a("li",b.$dots).off("click.slick",b.changeSlide),b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).off("mouseenter.slick",a.proxy(b.setPaused,b,!0)).off("mouseleave.slick",a.proxy(b.setPaused,b,!1))),b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;else if(a.options.centerMode===!0)d=a.slideCount;else for(;b<a.slideCount;)++d,b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d-1},b.prototype.getLeft=function(a){var c,d,f,b=this,e=0;return b.slideOffset=0,d=b.$slides.first().outerHeight(!0),b.options.infinite===!0?(b.slideCount>b.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}}))},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:0},100,function(){b.attr("src",c).animate({opacity:1},200,function(){b.removeAttr("data-lazy").removeClass("slick-loading")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",null),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,c.options.infinite||(c.slideCount<=c.options.slidesToShow?c.currentSlide=0:c.currentSlide>e&&(c.currentSlide=e)),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if("responsive"===b&&"array"===a.type(c))for(g in c)if("array"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-a<b.options.slidesToShow?d.slice(e-(b.options.slidesToShow-f),e+f).addClass("slick-active").attr("aria-hidden","false"):d.slice(e,e+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false")),"ondemand"===b.options.lazyLoad&&b.lazyLoad()},b.prototype.setupInfinite=function(){var c,d,e,b=this;if(b.options.fade===!0&&(b.options.centerMode=!1),b.options.infinite===!0&&b.options.fade===!1&&(d=null,b.slideCount>b.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d);
18
- }):i.postSlide(d))):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?i.slideCount%i.options.slidesToScroll!==0?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?i.slideCount%i.options.slidesToScroll!==0?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e)})):i.postSlide(e),void i.animateHeight()):void(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e))))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"left":"right":"vertical"},b.prototype.swipeEnd=function(a){var c,b=this;if(b.dragging=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe)switch(b.swipeDirection()){case"left":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.slideHandler(c),b.currentDirection=0,b.touchObject={},b.$slider.trigger("swipe",[b,"left"]);break;case"right":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.slideHandler(c),b.currentDirection=1,b.touchObject={},b.$slider.trigger("swipe",[b,"right"])}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.options.vertical===!1?b.swipeLeft=d+f*g:b.swipeLeft=d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):void b.setCSS(b.swipeLeft)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return 1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,void(b.dragging=!0))},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;document[a.hidden]?(a.paused=!0,a.autoPlayClear()):a.options.autoplay===!0&&(a.paused=!1,a.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.activateADA=function(){var a=this;a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},b.prototype.focusHandler=function(){var b=this;b.$slider.on("focus.slick blur.slick","*",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.isPlay&&(d.is(":focus")?(b.autoPlayClear(),b.paused=!0):(b.paused=!1,b.autoPlay()))},0)})},a.fn.slick=function(){var f,g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length;for(f=0;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}});
1
+ !function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.options.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"},e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0},100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/slick/slick.scss CHANGED
@@ -3,7 +3,6 @@
3
  .slick-slider {
4
  position: relative;
5
  display: block;
6
- -moz-box-sizing: border-box;
7
  box-sizing: border-box;
8
  -webkit-touch-callout: none;
9
  -webkit-user-select: none;
@@ -45,6 +44,8 @@
45
  left: 0;
46
  top: 0;
47
  display: block;
 
 
48
 
49
  &:before,
50
  &:after {
3
  .slick-slider {
4
  position: relative;
5
  display: block;
 
6
  box-sizing: border-box;
7
  -webkit-touch-callout: none;
8
  -webkit-user-select: none;
44
  left: 0;
45
  top: 0;
46
  display: block;
47
+ margin-left: auto;
48
+ margin-right: auto;
49
 
50
  &:before,
51
  &:after {
classes/admin/class-pwb-admin-tab.php CHANGED
@@ -77,7 +77,7 @@
77
  'slug' => array(
78
  'name' => __( 'Slug', 'perfect-woocommerce-brands' ),
79
  'type' => 'text',
80
- 'css' => 'min-width:350px;display:block;',
81
  'desc' => __( 'Brands taxonomy slug', 'perfect-woocommerce-brands' ),
82
  'id' => 'wc_pwb_admin_tab_slug',
83
  'placeholder' => get_taxonomy('pwb-brand')->rewrite['slug']
@@ -89,10 +89,17 @@
89
  'desc' => __( 'Show brand description (if is set) on brand archive page', 'perfect-woocommerce-brands' ),
90
  'id' => 'wc_pwb_admin_tab_brand_desc'
91
  ),
 
 
 
 
 
 
 
92
  'show_brand_on_loop' => array(
93
  'name' => __( 'Show brands in loop', 'perfect-woocommerce-brands' ),
94
  'type' => 'select',
95
- 'css' => 'min-width:350px;display:block;',
96
  'desc' => __( 'Show brand logo (or name) in product loop', 'perfect-woocommerce-brands' ),
97
  'id' => 'wc_pwb_admin_tab_brands_in_loop',
98
  'options' => array(
@@ -104,7 +111,7 @@
104
  'show_brand_in_single' => array(
105
  'name' => __( 'Show brands in single product', 'perfect-woocommerce-brands' ),
106
  'type' => 'select',
107
- 'css' => 'min-width:350px;display:block;',
108
  'desc' => __( 'Show brand logo (or name) in single product', 'perfect-woocommerce-brands' ),
109
  'default' => 'brand_image',
110
  'id' => 'wc_pwb_admin_tab_brands_in_single',
@@ -117,7 +124,7 @@
117
  'brand_logo_size' => array(
118
  'name' => __( 'Brand logo size', 'perfect-woocommerce-brands' ),
119
  'type' => 'select',
120
- 'css' => 'min-width:350px;display:block;',
121
  'desc' => __( 'Brand logo size for single product view', 'perfect-woocommerce-brands' ),
122
  'id' => 'wc_pwb_admin_tab_brand_logo_size',
123
  'options' => $available_image_sizes_adapted
@@ -125,7 +132,7 @@
125
  'brand_single_position' => array(
126
  'name' => __( 'Brand position', 'perfect-woocommerce-brands' ),
127
  'type' => 'select',
128
- 'css' => 'min-width:350px;display:block;',
129
  'desc' => __( 'For single product', 'perfect-woocommerce-brands' ),
130
  'id' => 'wc_pwb_admin_tab_brand_single_position',
131
  'options' => array(
@@ -160,7 +167,7 @@
160
  'brand_import' => array(
161
  'name' => __( 'Import brands', 'perfect-woocommerce-brands' ),
162
  'type' => 'select',
163
- 'css' => 'min-width:350px;display:block;',
164
  'desc' => sprintf(
165
  __( 'Import brands from other brand plugin. <a href="%s" target="_blank">Click here for more details</a>', 'perfect-woocommerce-brands' ),
166
  'https://github.com/titodevera/perfect-woocommerce-brands/wiki/How-to-import-brands-from-other-brands-plugin'
@@ -169,13 +176,14 @@
169
  'options' => array(
170
  '-' => __( '-', 'perfect-woocommerce-brands' ),
171
  'yith' => __( 'YITH WooCommerce Brands Add-On', 'perfect-woocommerce-brands' ),
172
- 'ultimate' => __( 'Ultimate WooCommerce Brands', 'perfect-woocommerce-brands' )
 
173
  )
174
  ),
175
  'brand_dummy_data' => array(
176
  'name' => __( 'Dummy data', 'perfect-woocommerce-brands' ),
177
  'type' => 'select',
178
- 'css' => 'min-width:350px;display:block;',
179
  'desc' => __( 'Import generic brands and assign it to products randomly', 'perfect-woocommerce-brands' ),
180
  'id' => 'wc_pwb_admin_tab_tools_dummy_data',
181
  'options' => array(
77
  'slug' => array(
78
  'name' => __( 'Slug', 'perfect-woocommerce-brands' ),
79
  'type' => 'text',
80
+ 'class' => 'pwb-admin-tab-field',
81
  'desc' => __( 'Brands taxonomy slug', 'perfect-woocommerce-brands' ),
82
  'id' => 'wc_pwb_admin_tab_slug',
83
  'placeholder' => get_taxonomy('pwb-brand')->rewrite['slug']
89
  'desc' => __( 'Show brand description (if is set) on brand archive page', 'perfect-woocommerce-brands' ),
90
  'id' => 'wc_pwb_admin_tab_brand_desc'
91
  ),
92
+ 'brand_single_product_tab' => array(
93
+ 'name' => __( 'Single product tab', 'perfect-woocommerce-brands' ),
94
+ 'type' => 'checkbox',
95
+ 'default' => 'yes',
96
+ 'desc' => __( 'Show brand tab in single product page', 'perfect-woocommerce-brands' ),
97
+ 'id' => 'wc_pwb_admin_tab_brand_single_product_tab'
98
+ ),
99
  'show_brand_on_loop' => array(
100
  'name' => __( 'Show brands in loop', 'perfect-woocommerce-brands' ),
101
  'type' => 'select',
102
+ 'class' => 'pwb-admin-tab-field',
103
  'desc' => __( 'Show brand logo (or name) in product loop', 'perfect-woocommerce-brands' ),
104
  'id' => 'wc_pwb_admin_tab_brands_in_loop',
105
  'options' => array(
111
  'show_brand_in_single' => array(
112
  'name' => __( 'Show brands in single product', 'perfect-woocommerce-brands' ),
113
  'type' => 'select',
114
+ 'class' => 'pwb-admin-tab-field',
115
  'desc' => __( 'Show brand logo (or name) in single product', 'perfect-woocommerce-brands' ),
116
  'default' => 'brand_image',
117
  'id' => 'wc_pwb_admin_tab_brands_in_single',
124
  'brand_logo_size' => array(
125
  'name' => __( 'Brand logo size', 'perfect-woocommerce-brands' ),
126
  'type' => 'select',
127
+ 'class' => 'pwb-admin-tab-field',
128
  'desc' => __( 'Brand logo size for single product view', 'perfect-woocommerce-brands' ),
129
  'id' => 'wc_pwb_admin_tab_brand_logo_size',
130
  'options' => $available_image_sizes_adapted
132
  'brand_single_position' => array(
133
  'name' => __( 'Brand position', 'perfect-woocommerce-brands' ),
134
  'type' => 'select',
135
+ 'class' => 'pwb-admin-tab-field',
136
  'desc' => __( 'For single product', 'perfect-woocommerce-brands' ),
137
  'id' => 'wc_pwb_admin_tab_brand_single_position',
138
  'options' => array(
167
  'brand_import' => array(
168
  'name' => __( 'Import brands', 'perfect-woocommerce-brands' ),
169
  'type' => 'select',
170
+ 'class' => 'pwb-admin-tab-field',
171
  'desc' => sprintf(
172
  __( 'Import brands from other brand plugin. <a href="%s" target="_blank">Click here for more details</a>', 'perfect-woocommerce-brands' ),
173
  'https://github.com/titodevera/perfect-woocommerce-brands/wiki/How-to-import-brands-from-other-brands-plugin'
176
  'options' => array(
177
  '-' => __( '-', 'perfect-woocommerce-brands' ),
178
  'yith' => __( 'YITH WooCommerce Brands Add-On', 'perfect-woocommerce-brands' ),
179
+ 'ultimate' => __( 'Ultimate WooCommerce Brands', 'perfect-woocommerce-brands' ),
180
+ 'woobrands' => __( 'Offical WooCommerce Brands', 'perfect-woocommerce-brands' )
181
  )
182
  ),
183
  'brand_dummy_data' => array(
184
  'name' => __( 'Dummy data', 'perfect-woocommerce-brands' ),
185
  'type' => 'select',
186
+ 'class' => 'pwb-admin-tab-field',
187
  'desc' => __( 'Import generic brands and assign it to products randomly', 'perfect-woocommerce-brands' ),
188
  'id' => 'wc_pwb_admin_tab_tools_dummy_data',
189
  'options' => array(
classes/admin/class-pwb-coupon.php CHANGED
@@ -16,6 +16,7 @@
16
  $thepostid = empty( $thepostid ) ? $post->get_ID() : $thepostid;
17
 
18
  $selected_brands = get_post_meta( $thepostid, '_pwb_coupon_restriction', true );
 
19
 
20
  ob_start();
21
  ?>
16
  $thepostid = empty( $thepostid ) ? $post->get_ID() : $thepostid;
17
 
18
  $selected_brands = get_post_meta( $thepostid, '_pwb_coupon_restriction', true );
19
+ if( $selected_brands == '' ) $selected_brands = array();
20
 
21
  ob_start();
22
  ?>
classes/admin/class-pwb-dummy-data.php CHANGED
@@ -49,12 +49,23 @@
49
 
50
  }
51
 
 
 
 
 
 
 
 
 
 
 
52
  public function dummy_data(){
53
 
54
  for( $i=1; $i<11; $i++ ) {
 
55
  $brand_name = 'brand'.$i;
56
  $attachment_id = self::upload_image( false, PWB_PLUGIN . '/assets/img/dummy-data/'.$brand_name.'.png' );
57
- $inserted_brand = wp_insert_term( ucfirst( $brand_name ), 'pwb-brand' );
58
  if( !is_wp_error( $inserted_brand ) && isset( $inserted_brand['term_id'] ) ){
59
  add_term_meta( $inserted_brand['term_id'], 'pwb_brand_image', $attachment_id );
60
  }
49
 
50
  }
51
 
52
+ private function build_description(){
53
+ $desc = 'lorem ipsum dolor sit amet consectetur adipiscing elit etiam mollis faucibus aliquet';
54
+ $desc.= 'sed risus turpis dapibus vel rhoncus a vestibulum sed lectus in hac habitasse platea dictumst';
55
+ $desc.= 'suspendisse non luctus felis morbi id volutpat ligula quisque rutrum arcu at erat lobortis';
56
+ $exploded_desc = explode( ' ', $desc );
57
+ shuffle( $exploded_desc );
58
+ $desc = implode( ' ', $exploded_desc );
59
+ return ucfirst( $desc );
60
+ }
61
+
62
  public function dummy_data(){
63
 
64
  for( $i=1; $i<11; $i++ ) {
65
+ $term_desc = $this->build_description();
66
  $brand_name = 'brand'.$i;
67
  $attachment_id = self::upload_image( false, PWB_PLUGIN . '/assets/img/dummy-data/'.$brand_name.'.png' );
68
+ $inserted_brand = wp_insert_term( ucfirst( $brand_name ), 'pwb-brand', array( "description" => $term_desc ) );
69
  if( !is_wp_error( $inserted_brand ) && isset( $inserted_brand['term_id'] ) ){
70
  add_term_meta( $inserted_brand['term_id'], 'pwb_brand_image', $attachment_id );
71
  }
classes/admin/class-pwb-migrate.php CHANGED
@@ -20,6 +20,9 @@
20
  case 'ultimate':
21
  $this->migrate_from_ultimate();
22
  break;
 
 
 
23
  }
24
 
25
 
@@ -92,4 +95,30 @@
92
 
93
  }
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
20
  case 'ultimate':
21
  $this->migrate_from_ultimate();
22
  break;
23
+ case 'woobrands':
24
+ $this->migrate_from_woobrands();
25
+ break;
26
  }
27
 
28
 
95
 
96
  }
97
 
98
+ public function migrate_from_woobrands(){
99
+
100
+ global $wpdb;
101
+ $terms = $wpdb->get_col( 'SELECT term_id FROM '.$wpdb->prefix.'term_taxonomy WHERE taxonomy LIKE "product_brand"' );
102
+
103
+ foreach( $terms as $term_id ) {
104
+
105
+ // change taxonomy
106
+ $wpdb->update(
107
+ $wpdb->prefix . 'term_taxonomy',
108
+ array(
109
+ 'taxonomy' => 'pwb-brand'
110
+ ),
111
+ array(
112
+ 'term_id' => $term_id
113
+ )
114
+ );
115
+
116
+ // add the logo id
117
+ if( $thumb_id = get_woocommerce_term_meta( $term_id, 'thumbnail_id', true ) )
118
+ add_term_meta( $term_id, 'pwb_brand_image', $thumb_id );
119
+
120
+ }
121
+
122
+ }
123
+
124
  }
classes/admin/class-pwb-system-status.php CHANGED
@@ -45,14 +45,16 @@
45
 
46
  private function pwb_options(){
47
  return array(
48
- 'wc_pwb_admin_tab_brand_single_position' => get_option( 'wc_pwb_admin_tab_brand_single_position' ),
49
- 'old_wc_pwb_admin_tab_slug' => get_option( 'old_wc_pwb_admin_tab_slug' ),
50
- 'wc_pwb_notice_plugin_review' => get_option( 'wc_pwb_notice_plugin_review' ),
51
- 'wc_pwb_admin_tab_slug' => get_option( 'wc_pwb_admin_tab_slug' ),
52
- 'wc_pwb_admin_tab_brand_desc' => get_option( 'wc_pwb_admin_tab_brand_desc' ),
53
- 'wc_pwb_admin_tab_brands_in_loop' => get_option( 'wc_pwb_admin_tab_brands_in_loop' ),
54
- 'wc_pwb_admin_tab_brands_in_single' => get_option( 'wc_pwb_admin_tab_brands_in_single' ),
55
- 'wc_pwb_admin_tab_brand_logo_size' => get_option( 'wc_pwb_admin_tab_brand_logo_size' )
 
 
56
  );
57
  }
58
 
45
 
46
  private function pwb_options(){
47
  return array(
48
+ 'version' => PWB_PLUGIN_VERSION,
49
+ 'wc_pwb_admin_tab_brand_single_position' => get_option( 'wc_pwb_admin_tab_brand_single_position' ),
50
+ 'old_wc_pwb_admin_tab_slug' => get_option( 'old_wc_pwb_admin_tab_slug' ),
51
+ 'wc_pwb_notice_plugin_review' => get_option( 'wc_pwb_notice_plugin_review' ),
52
+ 'wc_pwb_admin_tab_slug' => get_option( 'wc_pwb_admin_tab_slug' ),
53
+ 'wc_pwb_admin_tab_brand_desc' => get_option( 'wc_pwb_admin_tab_brand_desc' ),
54
+ 'wc_pwb_admin_tab_brand_single_product_tab' => get_option( 'wc_pwb_admin_tab_brand_single_product_tab' ),
55
+ 'wc_pwb_admin_tab_brands_in_loop' => get_option( 'wc_pwb_admin_tab_brands_in_loop' ),
56
+ 'wc_pwb_admin_tab_brands_in_single' => get_option( 'wc_pwb_admin_tab_brands_in_single' ),
57
+ 'wc_pwb_admin_tab_brand_logo_size' => get_option( 'wc_pwb_admin_tab_brand_logo_size' )
58
  );
59
  }
60
 
classes/class-perfect-woocommerce-brands.php CHANGED
@@ -20,14 +20,26 @@
20
  add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
21
  if( !is_admin() ) add_action( 'init', array( $this, 'register_frontend_scripts' ) );
22
  $this->add_shortcodes();
23
- if( is_plugin_active('js_composer/js_composer.php') ) add_action( 'vc_before_init', array( $this,'vc_map_shortcodes' ) );
 
 
24
  add_action( 'widgets_init', array( $this, 'register_widgets' ) );
25
- add_action( 'woocommerce_after_single_product_summary' , array( $this, 'product_microdata' ), 40 );
 
 
 
 
 
 
26
  add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
27
  add_filter( 'plugin_action_links_' . PWB_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
28
  add_action( 'wp_ajax_dismiss_pwb_notice', array( $this, 'dismiss_pwb_notice' ) );
29
  add_action( 'admin_notices', array( $this, 'review_notice' ) );
30
- add_filter( 'term_description', array( $this, 'filter_default_brand_desc' ), 10, 1 );
 
 
 
 
31
  }
32
 
33
  public function review_notice(){
@@ -103,16 +115,33 @@
103
  }
104
 
105
  /*
106
- * Adds microdata (brands) to single products
107
  */
108
- public function product_microdata(){
109
- global $product;
110
- $brands = wp_get_post_terms( $product->get_id(), 'pwb-brand');
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
 
 
112
  foreach ($brands as $brand) {
113
- echo '<meta itemprop="brand" content="'.$brand->name.'">';
114
  }
115
 
 
 
116
  }
117
 
118
  public function add_shortcodes(){
@@ -238,7 +267,7 @@
238
  "base" => "pwb-product-carousel",
239
  "class" => "",
240
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
241
- "category" => "WooCommerce",
242
  "params" => array(
243
  array(
244
  "type" => "dropdown",
@@ -294,7 +323,7 @@
294
  "base" => "pwb-carousel",
295
  "class" => "",
296
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
297
- "category" => "WooCommerce",
298
  "params" => array(
299
  array(
300
  "type" => "textfield",
@@ -352,7 +381,7 @@
352
  "base" => "pwb-all-brands",
353
  "class" => "",
354
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
355
- "category" => "WooCommerce",
356
  "params" => array(
357
  array(
358
  "type" => "textfield",
@@ -400,7 +429,8 @@
400
  "admin_label" => true,
401
  "value" => array(
402
  __( "Before image", "perfect-woocommerce-brands" ) => 'before',
403
- __( "After image", "perfect-woocommerce-brands" ) => 'after'
 
404
  )
405
  ),
406
  array(
@@ -421,7 +451,7 @@
421
  "base" => "pwb-brand",
422
  "class" => "",
423
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
424
- "category" => "WooCommerce",
425
 
426
  "params" => array(
427
  array(
@@ -496,20 +526,20 @@
496
  'pwb_slick_lib',
497
  PWB_PLUGIN . '/assets/js/slick/slick.min.js',
498
  array('jquery'),
499
- '1.5.9',
500
  true
501
  );
502
  wp_enqueue_script('pwb_frontend_functions');
503
 
504
- wp_enqueue_style (
505
  'pwb_slick_lib',
506
  PWB_PLUGIN . '/assets/js/slick/slick.css',
507
  array(),
508
- '1.5.9',
509
  'all'
510
  );
511
 
512
- wp_enqueue_style (
513
  'pwb_frontend_styles',
514
  PWB_PLUGIN . '/assets/css/styles-frontend.css',
515
  array('pwb_slick_lib'),
@@ -745,15 +775,22 @@
745
  }
746
 
747
  public function brand_taxonomy_columns_head($defaults) {
748
- $newColumns = array(
749
- 'cb' => $defaults['cb'],
750
- 'logo' => __( 'Logo', 'perfect-woocommerce-brands' )
751
- );
752
 
753
- unset($defaults['description']);
754
- unset($defaults['cb']);
 
 
 
 
 
 
 
 
 
 
 
 
755
 
756
- return array_merge($newColumns,$defaults);
757
  }
758
 
759
  public function brand_taxonomy_columns($c, $column_name, $term_id){
@@ -853,7 +890,7 @@
853
  public function archive_page_banner(){
854
  $queried_object = get_queried_object();
855
 
856
- if( self::is_brand_archive_page() ){
857
 
858
  $brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
859
  $brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
@@ -889,19 +926,4 @@
889
 
890
  }
891
 
892
- public function filter_default_brand_desc( $desc_kses ){
893
- if( self::is_brand_archive_page() ){
894
- return false;
895
- }
896
- return $desc_kses;
897
- }
898
-
899
- public static function is_brand_archive_page(){
900
- $queried_object = get_queried_object();
901
- if( is_a( $queried_object,'WP_Term' ) && $queried_object->taxonomy == 'pwb-brand' ){
902
- return true;
903
- }
904
- return false;
905
- }
906
-
907
  }
20
  add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
21
  if( !is_admin() ) add_action( 'init', array( $this, 'register_frontend_scripts' ) );
22
  $this->add_shortcodes();
23
+ if( is_plugin_active('js_composer/js_composer.php') || is_plugin_active('visual_composer/js_composer.php') ){
24
+ add_action( 'vc_before_init', array( $this,'vc_map_shortcodes' ) );
25
+ }
26
  add_action( 'widgets_init', array( $this, 'register_widgets' ) );
27
+
28
+ if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.0.0', '>=' ) ){
29
+ add_filter( 'woocommerce_structured_data_product', array( $this, 'product_microdata' ), 10, 2 );
30
+ }else{
31
+ add_action( 'wp_head' , array( $this, 'product_microdata_legacy' ), 40 );
32
+ }
33
+
34
  add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
35
  add_filter( 'plugin_action_links_' . PWB_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
36
  add_action( 'wp_ajax_dismiss_pwb_notice', array( $this, 'dismiss_pwb_notice' ) );
37
  add_action( 'admin_notices', array( $this, 'review_notice' ) );
38
+
39
+ add_action( 'pre_get_posts', function(){
40
+ if( is_tax('pwb-brand') )
41
+ remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
42
+ });
43
  }
44
 
45
  public function review_notice(){
115
  }
116
 
117
  /*
118
+ * Adds microdata (brands) to single products (WooCommerce < 3.0.0)
119
  */
120
+ public function product_microdata_legacy(){
121
+ global $post;
122
+
123
+ if( isset( $post->post_type ) && $post->post_type==='product' ){
124
+ $brands = wp_get_post_terms( $post->ID, 'pwb-brand');
125
+ foreach ($brands as $brand) {
126
+ echo '<meta itemprop="brand" content="'.$brand->name.'">';
127
+ }
128
+ }
129
+
130
+ }
131
+
132
+ /*
133
+ * Adds microdata (brands) to single products (WooCommerce > 3.0.0)
134
+ */
135
+ public function product_microdata( $markup, $product ){
136
 
137
+ $new_markup = array();
138
+ $brands = wp_get_post_terms( $product->get_id(), 'pwb-brand');
139
  foreach ($brands as $brand) {
140
+ $new_markup['brand'][] = $brand->name;
141
  }
142
 
143
+ return array_merge( $markup, $new_markup );
144
+
145
  }
146
 
147
  public function add_shortcodes(){
267
  "base" => "pwb-product-carousel",
268
  "class" => "",
269
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
270
+ "category" => "Woocommerce",
271
  "params" => array(
272
  array(
273
  "type" => "dropdown",
323
  "base" => "pwb-carousel",
324
  "class" => "",
325
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
326
+ "category" => "Woocommerce",
327
  "params" => array(
328
  array(
329
  "type" => "textfield",
381
  "base" => "pwb-all-brands",
382
  "class" => "",
383
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
384
+ "category" => "Woocommerce",
385
  "params" => array(
386
  array(
387
  "type" => "textfield",
429
  "admin_label" => true,
430
  "value" => array(
431
  __( "Before image", "perfect-woocommerce-brands" ) => 'before',
432
+ __( "After image", "perfect-woocommerce-brands" ) => 'after',
433
+ __( "Hide", "perfect-woocommerce-brands" ) => 'none'
434
  )
435
  ),
436
  array(
451
  "base" => "pwb-brand",
452
  "class" => "",
453
  "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
454
+ "category" => "Woocommerce",
455
 
456
  "params" => array(
457
  array(
526
  'pwb_slick_lib',
527
  PWB_PLUGIN . '/assets/js/slick/slick.min.js',
528
  array('jquery'),
529
+ '1.8.0',
530
  true
531
  );
532
  wp_enqueue_script('pwb_frontend_functions');
533
 
534
+ wp_enqueue_style(
535
  'pwb_slick_lib',
536
  PWB_PLUGIN . '/assets/js/slick/slick.css',
537
  array(),
538
+ '1.8.0',
539
  'all'
540
  );
541
 
542
+ wp_enqueue_style(
543
  'pwb_frontend_styles',
544
  PWB_PLUGIN . '/assets/css/styles-frontend.css',
545
  array('pwb_slick_lib'),
775
  }
776
 
777
  public function brand_taxonomy_columns_head($defaults) {
 
 
 
 
778
 
779
+ global $pagenow;
780
+
781
+ if( $pagenow == 'edit-tags.php' ){
782
+ $newColumns = array(
783
+ 'cb' => $defaults['cb'],
784
+ 'logo' => __( 'Logo', 'perfect-woocommerce-brands' )
785
+ );
786
+
787
+ unset($defaults['description']);
788
+ unset($defaults['cb']);
789
+
790
+ return array_merge($newColumns,$defaults);
791
+ }
792
+ return $defaults;
793
 
 
794
  }
795
 
796
  public function brand_taxonomy_columns($c, $column_name, $term_id){
890
  public function archive_page_banner(){
891
  $queried_object = get_queried_object();
892
 
893
+ if( is_tax('pwb-brand') ){
894
 
895
  $brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
896
  $brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
926
 
927
  }
928
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
929
  }
classes/class-pwb-api-support.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
 
3
  namespace Perfect_Woocommerce_Brands;
 
4
 
5
  defined('ABSPATH') or die('No script kiddies please!');
6
 
@@ -10,6 +11,7 @@ class PWB_API_Support{
10
  "wc/v1",
11
  "wc/v2",
12
  );
 
13
 
14
  function __construct(){
15
  add_action('rest_api_init', array($this, 'register_endpoints'));
@@ -27,27 +29,53 @@ class PWB_API_Support{
27
  * Registers the endpoint for all possible $namespaces
28
  */
29
  public function register_endpoints(){
30
- foreach ($this->namespaces as $namespace) {
31
- register_rest_route($namespace, '/brands', array(
32
- // By using this constant we ensure that when the WP_REST_Server changes our readable endpoints will work as intended.
33
- 'methods' => \WP_REST_Server::READABLE,
34
  'callback' => function () {
35
  return rest_ensure_response(
36
  Perfect_Woocommerce_Brands::get_brands()
37
  );
38
  }
 
 
 
 
 
 
 
 
 
39
  ));
40
  }
41
  }
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  /**
44
  * Entry point for all rest field settings
45
  */
46
  public function register_fields(){
47
  register_rest_field('product', 'brands', array(
48
- 'get_callback' => array($this, "get_callback"),
49
  'update_callback' => array($this, "update_callback"),
50
- 'schema' => $this->get_schema(),
51
  ));
52
  }
53
 
@@ -78,7 +106,11 @@ class PWB_API_Support{
78
 
79
  $result_brands_array = array();
80
  foreach ($brands as $brand) {
81
- $result_brands_array[$brand->term_id] = $brand->name;
 
 
 
 
82
  }
83
 
84
  return $result_brands_array;
@@ -90,11 +122,8 @@ class PWB_API_Support{
90
  * @param $product
91
  */
92
  public function update_callback($brands, $product){
93
- if (empty($brands)) {
94
- $this->removeBrands($product);
95
- return; //done
96
- }
97
- $this->addBrands($brands, $product);
98
  }
99
 
100
 
@@ -102,7 +131,7 @@ class PWB_API_Support{
102
  * Detaches all brands from a product
103
  * @param \WC_Product $product
104
  */
105
- private function removeBrands($product){
106
  $brands = wp_get_post_terms($product->get_id(), 'pwb-brand');
107
  if (!empty($brands)) {
108
  wp_set_post_terms($product->get_id(), array(), 'pwb-brand');
@@ -114,7 +143,7 @@ class PWB_API_Support{
114
  * @param array $brands
115
  * @param \WC_Product $product
116
  */
117
- private function addBrands($brands, $product){
118
  wp_set_post_terms($product->get_id(), $brands, "pwb-brand");
119
  }
120
 
1
  <?php
2
 
3
  namespace Perfect_Woocommerce_Brands;
4
+ use WP_Error, WP_REST_Server;
5
 
6
  defined('ABSPATH') or die('No script kiddies please!');
7
 
11
  "wc/v1",
12
  "wc/v2",
13
  );
14
+ private $base = 'brands';
15
 
16
  function __construct(){
17
  add_action('rest_api_init', array($this, 'register_endpoints'));
29
  * Registers the endpoint for all possible $namespaces
30
  */
31
  public function register_endpoints(){
32
+ foreach( $this->namespaces as $namespace ) {
33
+ register_rest_route($namespace, '/'.$this->base, array(
34
+ array(
35
+ 'methods' => WP_REST_Server::READABLE,
36
  'callback' => function () {
37
  return rest_ensure_response(
38
  Perfect_Woocommerce_Brands::get_brands()
39
  );
40
  }
41
+ ),
42
+ array(
43
+ 'methods' => WP_REST_Server::CREATABLE,
44
+ 'callback' => array( $this, 'create_brand' )
45
+ ),
46
+ array(
47
+ 'methods' => WP_REST_Server::DELETABLE,
48
+ 'callback' => array( $this, 'delete_brand' )
49
+ )
50
  ));
51
  }
52
  }
53
 
54
+ public function delete_brand( $request ){
55
+ foreach( $request['brands'] as $brand ){
56
+ $delete_result = wp_delete_term( $brand, 'pwb-brand' );
57
+ if( is_wp_error( $delete_result ) ) return $delete_result;
58
+ }
59
+ return true;
60
+ }
61
+
62
+ public function create_brand( $request ){
63
+ $new_brand = wp_insert_term( $request['name'], 'pwb-brand', array( 'slug' => $request['slug'] ) );
64
+ if( !is_wp_error( $new_brand ) ){
65
+ return true;
66
+ }else{
67
+ return $new_brand;
68
+ }
69
+ }
70
+
71
  /**
72
  * Entry point for all rest field settings
73
  */
74
  public function register_fields(){
75
  register_rest_field('product', 'brands', array(
76
+ 'get_callback' => array($this, "get_callback"),
77
  'update_callback' => array($this, "update_callback"),
78
+ 'schema' => $this->get_schema(),
79
  ));
80
  }
81
 
106
 
107
  $result_brands_array = array();
108
  foreach ($brands as $brand) {
109
+ $result_brands_array[] = array(
110
+ 'id' => $brand->term_id,
111
+ 'name' => $brand->name,
112
+ 'slug' => $brand->slug
113
+ );
114
  }
115
 
116
  return $result_brands_array;
122
  * @param $product
123
  */
124
  public function update_callback($brands, $product){
125
+ $this->remove_brands($product);
126
+ $this->add_brands($brands, $product);
 
 
 
127
  }
128
 
129
 
131
  * Detaches all brands from a product
132
  * @param \WC_Product $product
133
  */
134
+ private function remove_brands($product){
135
  $brands = wp_get_post_terms($product->get_id(), 'pwb-brand');
136
  if (!empty($brands)) {
137
  wp_set_post_terms($product->get_id(), array(), 'pwb-brand');
143
  * @param array $brands
144
  * @param \WC_Product $product
145
  */
146
+ private function add_brands($brands, $product){
147
  wp_set_post_terms($product->get_id(), $brands, "pwb-brand");
148
  }
149
 
classes/class-pwb-exporter-support.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Perfect_Woocommerce_Brands;
4
+
5
+ defined('ABSPATH') or die('No script kiddies please!');
6
+
7
+ class PWB_Exporter_Support{
8
+
9
+ function __construct(){
10
+ add_filter( 'woocommerce_product_export_column_names', array( $this, 'add_export_column' ) );
11
+ add_filter( 'woocommerce_product_export_product_default_columns', array( $this, 'add_export_column' ) );
12
+ add_filter( 'woocommerce_product_export_product_column_pwb-brand', array( $this, 'add_export_data' ), 10, 2 );
13
+ }
14
+
15
+ /**
16
+ * Add the custom column to the exporter and the exporter column menu.
17
+ *
18
+ * @param array $columns
19
+ * @return array $columns
20
+ */
21
+ public function add_export_column( $columns ) {
22
+ $columns['pwb-brand'] = __('Brand', 'perfect-woocommerce-brands');
23
+ return $columns;
24
+ }
25
+
26
+ /**
27
+ * Provide the data to be exported for one item in the column.
28
+ *
29
+ * @param mixed $value (default: '')
30
+ * @param WC_Product $product
31
+ * @return mixed $value - Should be in a format that can be output into a text file (string, numeric, etc).
32
+ */
33
+ public function add_export_data( $value, $product ) {
34
+ $brands = wp_get_post_terms( $product->get_id(), 'pwb-brand' );
35
+ $brand_names = array();
36
+ foreach( $brands as $brand ) $brand_names[] = $brand->name;
37
+ return implode( ',', $brand_names );
38
+ }
39
+
40
+ }
classes/class-pwb-importer-support.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Perfect_Woocommerce_Brands;
4
+
5
+ defined('ABSPATH') or die('No script kiddies please!');
6
+
7
+ class PWB_Importer_Support{
8
+
9
+ function __construct(){
10
+ add_filter( 'woocommerce_csv_product_import_mapping_options', array( $this, 'add_column_to_importer' ) );
11
+ add_filter( 'woocommerce_csv_product_import_mapping_default_columns', array( $this, 'add_column_to_mapping_screen' ) );
12
+ add_filter( 'woocommerce_product_import_pre_insert_product_object', array( $this, 'process_import' ), 10, 2 );
13
+ }
14
+
15
+ /**
16
+ * Register the 'Custom Column' column in the importer.
17
+ *
18
+ * @param array $options
19
+ * @return array $options
20
+ */
21
+ public function add_column_to_importer( $options ) {
22
+ $options['pwb-brand'] = __('Brand', 'perfect-woocommerce-brands');
23
+ return $options;
24
+ }
25
+
26
+ /**
27
+ * Add automatic mapping support for 'Custom Column'.
28
+ * This will automatically select the correct mapping for columns named 'Custom Column' or 'custom column'.
29
+ *
30
+ * @param array $columns
31
+ * @return array $columns
32
+ */
33
+ public function add_column_to_mapping_screen( $columns ) {
34
+ $columns['pwb-brand'] = __('Brand', 'perfect-woocommerce-brands');
35
+ return $columns;
36
+ }
37
+
38
+ /**
39
+ * Process the data read from the CSV file.
40
+ * This just saves the value in meta data, but you can do anything you want here with the data.
41
+ *
42
+ * @param WC_Product $object - Product being imported or updated.
43
+ * @param array $data - CSV data read for the product.
44
+ * @return WC_Product $object
45
+ */
46
+ public function process_import( $object, $data ) {
47
+ $brands = explode( ',', $data['pwb-brand'] );
48
+ foreach( $brands as $brand ){
49
+ $brand_id = term_exists( $brand, 'pwb-brand' );
50
+ if( $brand_id !== 0 && $brand_id !== null ) {
51
+ //brand exists
52
+ wp_set_object_terms( $object->get_id(), $brand, 'pwb-brand' );
53
+ }else{
54
+ //insert new brand and assign it to the product
55
+ $new_brand = wp_insert_term( $brand, 'pwb-brand' );
56
+ if( !is_wp_error( $new_brand ) ) wp_set_object_terms( $object->get_id(), $new_brand->term_id, 'pwb-brand' );
57
+ }
58
+ }
59
+ return $object;
60
+ }
61
+
62
+ }
classes/class-pwb-product-tab.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Perfect_Woocommerce_Brands;
4
+
5
+ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
6
+
7
+ class PWB_Product_Tab{
8
+
9
+ function __construct(){
10
+ add_filter( 'woocommerce_product_tabs', array( $this, 'product_tab' ) );
11
+ }
12
+
13
+ public function product_tab( $tabs ) {
14
+
15
+ $show_brand_tab = get_option( 'wc_pwb_admin_tab_brand_single_product_tab' );
16
+ if( $show_brand_tab == 'yes' || !$show_brand_tab ){
17
+ $tabs['pwb_tab'] = array(
18
+ 'title' => __( 'Brand', 'perfect-woocommerce-brands' ),
19
+ 'priority' => 20,
20
+ 'callback' => array( $this, 'product_tab_content' )
21
+ );
22
+ }
23
+ return $tabs;
24
+
25
+ }
26
+
27
+ public function product_tab_content() {
28
+
29
+ global $product;
30
+ $brands = wp_get_object_terms( $product->get_id(), 'pwb-brand' );
31
+
32
+ ob_start();
33
+ ?>
34
+
35
+ <h2><?php echo __('Brand', 'perfect-woocommerce-brands'); ?></h2>
36
+ <?php foreach( $brands as $brand ): ?>
37
+
38
+ <?php
39
+ $brand_logo = get_term_meta( $brand->term_id, 'pwb_brand_image', true );
40
+ $brand_logo = wp_get_attachment_image( $brand_logo, 'thumbnail' );
41
+ ?>
42
+
43
+ <div id="tab-pwb_tab-content">
44
+ <h3><?php echo $brand->name;?></h3>
45
+ <?php if( !empty($brand->description) ) echo '<div>'.$brand->description.'</div>';?>
46
+ <?php if( !empty($brand_logo) ) echo '<span>'.$brand_logo.'</span>';?>
47
+ </div>
48
+
49
+ <?php endforeach; ?>
50
+
51
+ <?php
52
+ echo ob_get_clean();
53
+
54
+ }
55
+
56
+ }
classes/shortcodes/class-pwb-all-brands.php CHANGED
@@ -79,7 +79,7 @@
79
  ?>
80
  <div class="pwb-brands-col3">
81
 
82
- <?php if( $title_position != 'after' ): ?>
83
  <p>
84
  <?php echo $brand_name;?>
85
  <small>(<?php echo $brand->count;?>)</small>
@@ -90,7 +90,7 @@
90
  <a href="<?php echo $brand_link;?>" title="<?php _e( 'View brand', 'perfect-woocommerce-brands' );?>"><?php echo $attachment_html;?></a>
91
  </div>
92
 
93
- <?php if( $title_position == 'after' ): ?>
94
  <p>
95
  <?php echo $brand_name;?>
96
  <small>(<?php echo $brand->count;?>)</small>
79
  ?>
80
  <div class="pwb-brands-col3">
81
 
82
+ <?php if( $title_position != 'none' && $title_position != 'after' ): ?>
83
  <p>
84
  <?php echo $brand_name;?>
85
  <small>(<?php echo $brand->count;?>)</small>
90
  <a href="<?php echo $brand_link;?>" title="<?php _e( 'View brand', 'perfect-woocommerce-brands' );?>"><?php echo $attachment_html;?></a>
91
  </div>
92
 
93
+ <?php if( $title_position != 'none' && $title_position == 'after' ): ?>
94
  <p>
95
  <?php echo $brand_name;?>
96
  <small>(<?php echo $brand->count;?>)</small>
classes/widgets/class-pwb-dropdown.php CHANGED
@@ -51,13 +51,17 @@
51
  'hide_empty' => false
52
  ));
53
 
54
- if(is_array($brands) && count($brands)>0){
 
 
 
55
  echo '<select class="pwb-dropdown-widget">';
56
  echo '<option selected="true" disabled="disabled">'.__( 'Brands', 'perfect-woocommerce-brands' ).'</option>';
57
  foreach ($brands as $brand) {
58
  $brand_name = $brand->name;
59
- $brand_link = get_term_link($brand->term_id);
60
- echo '<option value="'.$brand_link.'">'.$brand->name.'</option>';
 
61
  }
62
  echo '</select>';
63
  }else{
51
  'hide_empty' => false
52
  ));
53
 
54
+ $queried_obj = get_queried_object();
55
+ $queried_brand_id = ( isset( $queried_obj->term_id ) ) ? $queried_obj->term_id : false;
56
+
57
+ if( is_array($brands) && count($brands)>0 ){
58
  echo '<select class="pwb-dropdown-widget">';
59
  echo '<option selected="true" disabled="disabled">'.__( 'Brands', 'perfect-woocommerce-brands' ).'</option>';
60
  foreach ($brands as $brand) {
61
  $brand_name = $brand->name;
62
+ $brand_link = get_term_link( $brand->term_id );
63
+ $selected = ( $brand->term_id == $queried_brand_id ) ? 'selected="selected"' : '';
64
+ echo '<option value="'.$brand_link.'" '.$selected.'>'.$brand->name.'</option>';
65
  }
66
  echo '</select>';
67
  }else{
classes/widgets/class-pwb-filter-by-brand.php CHANGED
@@ -104,15 +104,17 @@
104
  global $wp;
105
  $current_url = home_url(add_query_arg(array(),$wp->request));
106
 
107
- echo '<div class="pwb-filter-products" data-cat-url="'.$cate_url.'">';
108
- echo '<ul>';
109
- foreach (array_unique($result_brands) as $brand) {
110
- $term = get_term($brand);
111
- echo '<li><input type="checkbox" data-brand="'.$brand.'" value="'.$term->slug.'">' . $term->name . '</li>';
112
- }
113
- echo '</ul>';
114
- echo '<button>'.__('Apply filter','perfect-woocommerce-brands').'</button>';
115
- echo '</div>';
 
 
116
 
117
  }
118
 
104
  global $wp;
105
  $current_url = home_url(add_query_arg(array(),$wp->request));
106
 
107
+ if( !empty( $result_brands ) ){
108
+ echo '<div class="pwb-filter-products" data-cat-url="'.$cate_url.'">';
109
+ echo '<ul>';
110
+ foreach( array_unique($result_brands) as $brand ) {
111
+ $term = get_term($brand);
112
+ echo '<li><label><input type="checkbox" data-brand="'.$brand.'" value="'.$term->slug.'">' . $term->name . '</label></li>';
113
+ }
114
+ echo '</ul>';
115
+ echo '<button>'.__('Apply filter','perfect-woocommerce-brands').'</button>';
116
+ echo '</div>';
117
+ }
118
 
119
  }
120
 
lang/perfect-woocommerce-brands-es_ES.mo CHANGED
Binary file
lang/perfect-woocommerce-brands-es_ES.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Perfect WooCommerce Brands\n"
4
- "POT-Creation-Date: 2017-07-24 23:20+0200\n"
5
- "PO-Revision-Date: 2017-07-24 23:20+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: es_ES\n"
@@ -10,7 +10,7 @@ msgstr ""
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
- "X-Generator: Poedit 2.0.1\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-WPHeader: main.php\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
@@ -21,9 +21,9 @@ msgstr ""
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
  #: classes/admin/class-pwb-admin-tab.php:21
24
- #: classes/class-perfect-woocommerce-brands.php:559
25
- #: classes/class-perfect-woocommerce-brands.php:561
26
- #: classes/widgets/class-pwb-dropdown.php:56
27
  #: classes/widgets/class-pwb-filter-by-brand.php:17
28
  #: classes/widgets/class-pwb-filter-by-brand.php:28
29
  msgid "Brands"
@@ -50,92 +50,100 @@ msgid "Show brand description (if is set) on brand archive page"
50
  msgstr "Mostrar descripción de la marca en la página de archivo"
51
 
52
  #: classes/admin/class-pwb-admin-tab.php:93
 
 
 
 
 
 
 
 
53
  msgid "Show brands in loop"
54
  msgstr "Mostrar marcas en el loop"
55
 
56
- #: classes/admin/class-pwb-admin-tab.php:96
57
  msgid "Show brand logo (or name) in product loop"
58
  msgstr "Mostrar el logo de la marca (o el nombre) en el loop"
59
 
60
- #: classes/admin/class-pwb-admin-tab.php:99
61
- #: classes/admin/class-pwb-admin-tab.php:112
62
  msgid "No"
63
  msgstr "No"
64
 
65
- #: classes/admin/class-pwb-admin-tab.php:100
66
- #: classes/admin/class-pwb-admin-tab.php:113
67
  msgid "Show brand link"
68
  msgstr "Mostrar el link de la marca"
69
 
70
- #: classes/admin/class-pwb-admin-tab.php:101
71
- #: classes/admin/class-pwb-admin-tab.php:114
72
  msgid "Show brand image (if is set)"
73
  msgstr "Mostrar el logo de la marca (si tiene uno asignado)"
74
 
75
- #: classes/admin/class-pwb-admin-tab.php:105
76
  msgid "Show brands in single product"
77
  msgstr "Mostrar marcas en la página del producto"
78
 
79
- #: classes/admin/class-pwb-admin-tab.php:108
80
  msgid "Show brand logo (or name) in single product"
81
  msgstr "Mostrar el logo de la marca (o el nombre) en la página del producto"
82
 
83
- #: classes/admin/class-pwb-admin-tab.php:118
84
- #: classes/class-perfect-woocommerce-brands.php:339
85
- #: classes/class-perfect-woocommerce-brands.php:367
86
- #: classes/class-perfect-woocommerce-brands.php:437
87
  msgid "Brand logo size"
88
  msgstr "Tamaño del logo de la marca"
89
 
90
- #: classes/admin/class-pwb-admin-tab.php:121
91
  msgid "Brand logo size for single product view"
92
  msgstr "Tamaño del logo para la vista individual de producto"
93
 
94
- #: classes/admin/class-pwb-admin-tab.php:126
95
  msgid "Brand position"
96
  msgstr "Posición de la marca"
97
 
98
- #: classes/admin/class-pwb-admin-tab.php:129
99
  msgid "For single product"
100
  msgstr "En la página individual de cada producto"
101
 
102
- #: classes/admin/class-pwb-admin-tab.php:132
103
  msgid "Before title"
104
  msgstr "Antes del título"
105
 
106
- #: classes/admin/class-pwb-admin-tab.php:133
107
  msgid "After title"
108
  msgstr "Después del título"
109
 
110
- #: classes/admin/class-pwb-admin-tab.php:134
111
  msgid "After price"
112
  msgstr "Después del precio"
113
 
114
- #: classes/admin/class-pwb-admin-tab.php:135
115
  msgid "After excerpt"
116
  msgstr "Después de la descripción corta"
117
 
118
- #: classes/admin/class-pwb-admin-tab.php:136
119
  msgid "After add to cart"
120
  msgstr "Después del botón de comprar"
121
 
122
- #: classes/admin/class-pwb-admin-tab.php:137
123
  msgid "After meta"
124
  msgstr "Después del meta"
125
 
126
- #: classes/admin/class-pwb-admin-tab.php:138
127
  msgid "After sharing"
128
  msgstr "Después de compartir"
129
 
130
- #: classes/admin/class-pwb-admin-tab.php:155
131
  msgid "Tools"
132
  msgstr "Herramientas"
133
 
134
- #: classes/admin/class-pwb-admin-tab.php:161
135
  msgid "Import brands"
136
  msgstr "Importar marcas"
137
 
138
- #: classes/admin/class-pwb-admin-tab.php:165
139
  #, php-format
140
  msgid ""
141
  "Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
@@ -144,38 +152,42 @@ msgstr ""
144
  "Importar marcas de producto de otro plugin de marcas. <a href=\"%s\" target="
145
  "\"_blank\">Pulsa aquí para ver la documentación</a>"
146
 
147
- #: classes/admin/class-pwb-admin-tab.php:170
148
- #: classes/admin/class-pwb-admin-tab.php:182
149
  msgid "-"
150
  msgstr "-"
151
 
152
- #: classes/admin/class-pwb-admin-tab.php:171
153
  msgid "YITH WooCommerce Brands Add-On"
154
  msgstr "YITH WooCommerce Brands Add-On"
155
 
156
- #: classes/admin/class-pwb-admin-tab.php:172
157
  msgid "Ultimate WooCommerce Brands"
158
  msgstr "Ultimate WooCommerce Brands"
159
 
160
- #: classes/admin/class-pwb-admin-tab.php:176
 
 
 
 
161
  msgid "Dummy data"
162
  msgstr "Datos ficticios"
163
 
164
- #: classes/admin/class-pwb-admin-tab.php:179
165
  msgid "Import generic brands and assign it to products randomly"
166
  msgstr ""
167
  "Importar marcas genéricas y asignarlas a los productos existentes de forma "
168
  "aleatoria"
169
 
170
- #: classes/admin/class-pwb-admin-tab.php:183
171
  msgid "Start import"
172
  msgstr "Comenzar importación"
173
 
174
- #: classes/admin/class-pwb-admin-tab.php:187
175
  msgid "System status"
176
  msgstr "Estado del sistema"
177
 
178
- #: classes/admin/class-pwb-admin-tab.php:189
179
  msgid "Show system status"
180
  msgstr "Ver estado del sistema"
181
 
@@ -195,7 +207,7 @@ msgstr ""
195
  "El cupón será válido si existe al menos un producto de la marca señalada en "
196
  "el carrito"
197
 
198
- #: classes/class-perfect-woocommerce-brands.php:43
199
  msgid ""
200
  "We know that you´re in love with Perfect WooCommerce Brands, you can help us "
201
  "making it a bit better. Thanks a lot!"
@@ -203,7 +215,7 @@ msgstr ""
203
  "Sabemos que Perfect WooCommerce Brands te encanta, puedes ayudarnos a "
204
  "hacerlo un poco mejor. ¡Muchas gracias!"
205
 
206
- #: classes/class-perfect-woocommerce-brands.php:45
207
  msgid ""
208
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
209
  "reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
@@ -211,7 +223,7 @@ msgstr ""
211
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
212
  "reviews/?rate=5#new-post\" target=\"_blank\">Dejar una review</a>"
213
 
214
- #: classes/class-perfect-woocommerce-brands.php:46
215
  msgid ""
216
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
217
  "woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
@@ -219,7 +231,7 @@ msgstr ""
219
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
220
  "woocommerce-brands\" target=\"_blank\">Traducir el plugin</a>"
221
 
222
- #: classes/class-perfect-woocommerce-brands.php:47
223
  msgid ""
224
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
225
  "\"_blank\">View on GitHub</a>"
@@ -227,161 +239,165 @@ msgstr ""
227
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
228
  "\"_blank\">Ver en GitHub</a>"
229
 
230
- #: classes/class-perfect-woocommerce-brands.php:70
231
  msgid "Settings"
232
  msgstr "Ajustes"
233
 
234
- #: classes/class-perfect-woocommerce-brands.php:236
235
  msgid "PWB Product carousel"
236
  msgstr "PWB Carrusel de productos"
237
 
238
- #: classes/class-perfect-woocommerce-brands.php:237
239
  msgid "Product carousel by brand or by category"
240
  msgstr "Carrusel de productos por marca o categoría"
241
 
242
- #: classes/class-perfect-woocommerce-brands.php:245
243
- #: classes/class-perfect-woocommerce-brands.php:560
 
 
 
 
244
  msgid "Brand"
245
  msgstr "Marca"
246
 
247
- #: classes/class-perfect-woocommerce-brands.php:253
248
  msgid "Products"
249
  msgstr "Productos"
250
 
251
- #: classes/class-perfect-woocommerce-brands.php:256
252
  msgid "Number of products to load"
253
  msgstr "Número de productos que cargar"
254
 
255
- #: classes/class-perfect-woocommerce-brands.php:261
256
  msgid "Products to show"
257
  msgstr "Productos a mostrar"
258
 
259
- #: classes/class-perfect-woocommerce-brands.php:264
260
  msgid "Number of products to show"
261
  msgstr "Número de productos que mostrar"
262
 
263
- #: classes/class-perfect-woocommerce-brands.php:269
264
  msgid "Products to scroll"
265
  msgstr "Número de productos por scroll"
266
 
267
- #: classes/class-perfect-woocommerce-brands.php:272
268
  msgid "Number of products to scroll"
269
  msgstr "Número de productos por cada scroll"
270
 
271
- #: classes/class-perfect-woocommerce-brands.php:277
272
- #: classes/class-perfect-woocommerce-brands.php:326
273
  msgid "Autoplay"
274
  msgstr "Modo automático"
275
 
276
- #: classes/class-perfect-woocommerce-brands.php:279
277
- #: classes/class-perfect-woocommerce-brands.php:328
278
  msgid "Autoplay carousel"
279
  msgstr "Modo automático para el carrusel"
280
 
281
- #: classes/class-perfect-woocommerce-brands.php:284
282
- #: classes/class-perfect-woocommerce-brands.php:333
283
  msgid "Arrows"
284
  msgstr "Flechas de navegación"
285
 
286
- #: classes/class-perfect-woocommerce-brands.php:286
287
- #: classes/class-perfect-woocommerce-brands.php:335
288
  msgid "Display prev and next arrows"
289
  msgstr "Mostrar flechas de navegación"
290
 
291
- #: classes/class-perfect-woocommerce-brands.php:292
292
  msgid "PWB Brands carousel"
293
  msgstr "PWB Carrusel de marcas"
294
 
295
- #: classes/class-perfect-woocommerce-brands.php:293
296
  msgid "Brands carousel"
297
  msgstr "Carrusel de marcas"
298
 
299
- #: classes/class-perfect-woocommerce-brands.php:302
300
  msgid "Items"
301
  msgstr "Elementos"
302
 
303
- #: classes/class-perfect-woocommerce-brands.php:305
304
  msgid "Number of items to load"
305
  msgstr "Número de elementos que cargar"
306
 
307
- #: classes/class-perfect-woocommerce-brands.php:310
308
  msgid "Items to show"
309
  msgstr "Elementos a mostrar"
310
 
311
- #: classes/class-perfect-woocommerce-brands.php:313
312
  msgid "Number of items to show"
313
  msgstr "Número de elementos a mostrar"
314
 
315
- #: classes/class-perfect-woocommerce-brands.php:318
316
  msgid "Items to scroll"
317
  msgstr "Número de elementos por scroll"
318
 
319
- #: classes/class-perfect-woocommerce-brands.php:321
320
  msgid "Number of items to scroll"
321
  msgstr "Número de elementos por cada scroll"
322
 
323
- #: classes/class-perfect-woocommerce-brands.php:350
324
  msgid "PWB All brands"
325
  msgstr "PWB Todas las marcas"
326
 
327
- #: classes/class-perfect-woocommerce-brands.php:351
328
  msgid "Show all brands"
329
  msgstr "Mostrar todas las marcas"
330
 
331
- #: classes/class-perfect-woocommerce-brands.php:360
332
  msgid "Brands per page"
333
  msgstr "Marcas por página"
334
 
335
- #: classes/class-perfect-woocommerce-brands.php:363
336
  msgid "Show x brands per page"
337
  msgstr "Mostrar x marcas por página"
338
 
339
- #: classes/class-perfect-woocommerce-brands.php:374
340
  msgid "Order by"
341
  msgstr "Ordenar por"
342
 
343
- #: classes/class-perfect-woocommerce-brands.php:388
344
  msgid "Order"
345
  msgstr "Orden"
346
 
347
- #: classes/class-perfect-woocommerce-brands.php:398
348
  msgid "Title position"
349
  msgstr "Posición del título"
350
 
351
- #: classes/class-perfect-woocommerce-brands.php:402
352
  msgid "Before image"
353
  msgstr "Antes de la imagen"
354
 
355
- #: classes/class-perfect-woocommerce-brands.php:403
356
  msgid "After image"
357
  msgstr "Después de la imagen"
358
 
359
- #: classes/class-perfect-woocommerce-brands.php:409
360
  msgid "Hide empty"
361
  msgstr "Ocultar vacías"
362
 
363
- #: classes/class-perfect-woocommerce-brands.php:411
364
  msgid "Hide brands that have not been assigned to any product"
365
  msgstr "Ocultar marcas que no han sido asignadas a ningún producto"
366
 
367
- #: classes/class-perfect-woocommerce-brands.php:419
368
  msgid "PWB brand"
369
  msgstr "PWB Marca"
370
 
371
- #: classes/class-perfect-woocommerce-brands.php:420
372
  msgid "Show brand for a specific product"
373
  msgstr "Ver marcas de un producto específico"
374
 
375
- #: classes/class-perfect-woocommerce-brands.php:430
376
  msgid "Product id"
377
  msgstr "Id del producto"
378
 
379
- #: classes/class-perfect-woocommerce-brands.php:433
380
  msgid "Product id (post id)"
381
  msgstr "Id del producto (id del post)"
382
 
383
- #: classes/class-perfect-woocommerce-brands.php:476
384
- #: classes/class-perfect-woocommerce-brands.php:478
385
  #: classes/shortcodes/class-pwb-all-brands.php:90
386
  #: classes/shortcodes/class-pwb-brand.php:29
387
  #: classes/shortcodes/class-pwb-brand.php:31
@@ -389,11 +405,11 @@ msgstr "Id del producto (id del post)"
389
  msgid "View brand"
390
  msgstr "Ver marca"
391
 
392
- #: classes/class-perfect-woocommerce-brands.php:548
393
  msgid "¿Start migration?"
394
  msgstr "¿Comenzar la migración?"
395
 
396
- #: classes/class-perfect-woocommerce-brands.php:549
397
  msgid ""
398
  "We are migrating the product brands. ¡Don´t close this window until the "
399
  "process is finished!"
@@ -401,11 +417,11 @@ msgstr ""
401
  "Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
402
  "el proceso finalice!"
403
 
404
- #: classes/class-perfect-woocommerce-brands.php:550
405
  msgid "¿Start loading dummy data?"
406
  msgstr "¿Comenzar con la importación?"
407
 
408
- #: classes/class-perfect-woocommerce-brands.php:551
409
  msgid ""
410
  "We are importing the dummy data. ¡Don´t close this window until the process "
411
  "is finished!"
@@ -413,109 +429,109 @@ msgstr ""
413
  "En este momento estamos importando las marcas ficticias. ¡No cierre esta "
414
  "ventana hasta que termine el proceso!"
415
 
416
- #: classes/class-perfect-woocommerce-brands.php:562
417
  msgid "All Brands"
418
  msgstr "Todas las marcas"
419
 
420
- #: classes/class-perfect-woocommerce-brands.php:563
421
  msgid "Edit Brand"
422
  msgstr "Editar marca"
423
 
424
- #: classes/class-perfect-woocommerce-brands.php:564
425
  msgid "View Brand"
426
  msgstr "Ver marca"
427
 
428
- #: classes/class-perfect-woocommerce-brands.php:565
429
  msgid "Update Brand"
430
  msgstr "Actualizar marca"
431
 
432
- #: classes/class-perfect-woocommerce-brands.php:566
433
  msgid "Add New Brand"
434
  msgstr "Añadir nueva marca"
435
 
436
- #: classes/class-perfect-woocommerce-brands.php:567
437
  msgid "New Brand Name"
438
  msgstr "Nuevo nombre de marca"
439
 
440
- #: classes/class-perfect-woocommerce-brands.php:568
441
  msgid "Parent Brand"
442
  msgstr "Marca Padre"
443
 
444
- #: classes/class-perfect-woocommerce-brands.php:569
445
  msgid "Parent Brand:"
446
  msgstr "Marca Padre:"
447
 
448
- #: classes/class-perfect-woocommerce-brands.php:570
449
  msgid "Search Brands"
450
  msgstr "Buscar Marcas"
451
 
452
- #: classes/class-perfect-woocommerce-brands.php:571
453
  msgid "Popular Brands"
454
  msgstr "Marcas Populares"
455
 
456
- #: classes/class-perfect-woocommerce-brands.php:572
457
  msgid "Separate brands with commas"
458
  msgstr "Separar marcas con comas"
459
 
460
- #: classes/class-perfect-woocommerce-brands.php:573
461
  msgid "Add or remove brands"
462
  msgstr "Añadir o eliminar marcas"
463
 
464
- #: classes/class-perfect-woocommerce-brands.php:574
465
  msgid "Choose from the most used brands"
466
  msgstr "Seleccionar de las marcas más utilizadas"
467
 
468
- #: classes/class-perfect-woocommerce-brands.php:575
469
  msgid "No brands found"
470
  msgstr "No se han encontrado marcas"
471
 
472
- #: classes/class-perfect-woocommerce-brands.php:619
473
- #: classes/class-perfect-woocommerce-brands.php:652
474
  #: classes/widgets/class-pwb-list.php:39
475
  msgid "Brand logo"
476
  msgstr "Logo de la marca"
477
 
478
- #: classes/class-perfect-woocommerce-brands.php:621
479
- #: classes/class-perfect-woocommerce-brands.php:627
480
- #: classes/class-perfect-woocommerce-brands.php:656
481
- #: classes/class-perfect-woocommerce-brands.php:676
482
  msgid "Select image"
483
  msgstr "Seleccionar imagen"
484
 
485
- #: classes/class-perfect-woocommerce-brands.php:625
486
- #: classes/class-perfect-woocommerce-brands.php:672
487
  msgid "Brand banner"
488
  msgstr "Banner de la marca"
489
 
490
- #: classes/class-perfect-woocommerce-brands.php:628
491
  msgid "This image will be shown on brand page"
492
  msgstr "Esta imagen se mostrará en la página de la marca"
493
 
494
- #: classes/class-perfect-woocommerce-brands.php:632
495
- #: classes/class-perfect-woocommerce-brands.php:692
496
  msgid "Brand banner link"
497
  msgstr "Enlace para el banner de la marca"
498
 
499
- #: classes/class-perfect-woocommerce-brands.php:634
500
- #: classes/class-perfect-woocommerce-brands.php:696
501
  msgid "This link should be relative to site url. Example: product/product-name"
502
  msgstr ""
503
  "Este enlace ha de ser relativo a la url del sitio web. Ejemplo: producto/"
504
  "nombre-del-producto"
505
 
506
- #: classes/class-perfect-woocommerce-brands.php:750
507
  msgid "Logo"
508
  msgstr "Logo"
509
 
510
- #: classes/class-perfect-woocommerce-brands.php:790
511
  msgid "All"
512
  msgstr "Todas"
513
 
514
- #: classes/class-perfect-woocommerce-brands.php:845
515
  msgid "No products found"
516
  msgstr "No se han encontrado productos"
517
 
518
- #: classes/class-pwb-api-support.php:67
519
  msgid "Product brands"
520
  msgstr "Marcas del producto"
521
 
@@ -551,7 +567,7 @@ msgstr "Desplegable de marcas"
551
  msgid "Title"
552
  msgstr "Título"
553
 
554
- #: classes/widgets/class-pwb-dropdown.php:64
555
  #: classes/widgets/class-pwb-list.php:105
556
  msgid "There is not available brands"
557
  msgstr "No se encuentran marcas disponibles"
@@ -569,7 +585,7 @@ msgstr "Filtrar productos por marca"
569
  msgid "Title:"
570
  msgstr "Título:"
571
 
572
- #: classes/widgets/class-pwb-filter-by-brand.php:114
573
  msgid "Apply filter"
574
  msgstr "Filtrar"
575
 
@@ -597,7 +613,7 @@ msgstr "Columnas:"
597
  msgid "Go to"
598
  msgstr "Ir a"
599
 
600
- #: main.php:90
601
  msgid ""
602
  "Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
603
  "active WooCommerce plugin."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Perfect WooCommerce Brands\n"
4
+ "POT-Creation-Date: 2017-10-09 19:47+0200\n"
5
+ "PO-Revision-Date: 2017-10-09 19:48+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: es_ES\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
+ "X-Generator: Poedit 2.0.4\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-WPHeader: main.php\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
  #: classes/admin/class-pwb-admin-tab.php:21
24
+ #: classes/class-perfect-woocommerce-brands.php:584
25
+ #: classes/class-perfect-woocommerce-brands.php:586
26
+ #: classes/widgets/class-pwb-dropdown.php:58
27
  #: classes/widgets/class-pwb-filter-by-brand.php:17
28
  #: classes/widgets/class-pwb-filter-by-brand.php:28
29
  msgid "Brands"
50
  msgstr "Mostrar descripción de la marca en la página de archivo"
51
 
52
  #: classes/admin/class-pwb-admin-tab.php:93
53
+ msgid "Single product tab"
54
+ msgstr "Tab en la página del producto"
55
+
56
+ #: classes/admin/class-pwb-admin-tab.php:96
57
+ msgid "Show brand tab in single product page"
58
+ msgstr "Mostrar pestaña con información de la marca en la página del producto"
59
+
60
+ #: classes/admin/class-pwb-admin-tab.php:100
61
  msgid "Show brands in loop"
62
  msgstr "Mostrar marcas en el loop"
63
 
64
+ #: classes/admin/class-pwb-admin-tab.php:103
65
  msgid "Show brand logo (or name) in product loop"
66
  msgstr "Mostrar el logo de la marca (o el nombre) en el loop"
67
 
68
+ #: classes/admin/class-pwb-admin-tab.php:106
69
+ #: classes/admin/class-pwb-admin-tab.php:119
70
  msgid "No"
71
  msgstr "No"
72
 
73
+ #: classes/admin/class-pwb-admin-tab.php:107
74
+ #: classes/admin/class-pwb-admin-tab.php:120
75
  msgid "Show brand link"
76
  msgstr "Mostrar el link de la marca"
77
 
78
+ #: classes/admin/class-pwb-admin-tab.php:108
79
+ #: classes/admin/class-pwb-admin-tab.php:121
80
  msgid "Show brand image (if is set)"
81
  msgstr "Mostrar el logo de la marca (si tiene uno asignado)"
82
 
83
+ #: classes/admin/class-pwb-admin-tab.php:112
84
  msgid "Show brands in single product"
85
  msgstr "Mostrar marcas en la página del producto"
86
 
87
+ #: classes/admin/class-pwb-admin-tab.php:115
88
  msgid "Show brand logo (or name) in single product"
89
  msgstr "Mostrar el logo de la marca (o el nombre) en la página del producto"
90
 
91
+ #: classes/admin/class-pwb-admin-tab.php:125
92
+ #: classes/class-perfect-woocommerce-brands.php:364
93
+ #: classes/class-perfect-woocommerce-brands.php:392
94
+ #: classes/class-perfect-woocommerce-brands.php:462
95
  msgid "Brand logo size"
96
  msgstr "Tamaño del logo de la marca"
97
 
98
+ #: classes/admin/class-pwb-admin-tab.php:128
99
  msgid "Brand logo size for single product view"
100
  msgstr "Tamaño del logo para la vista individual de producto"
101
 
102
+ #: classes/admin/class-pwb-admin-tab.php:133
103
  msgid "Brand position"
104
  msgstr "Posición de la marca"
105
 
106
+ #: classes/admin/class-pwb-admin-tab.php:136
107
  msgid "For single product"
108
  msgstr "En la página individual de cada producto"
109
 
110
+ #: classes/admin/class-pwb-admin-tab.php:139
111
  msgid "Before title"
112
  msgstr "Antes del título"
113
 
114
+ #: classes/admin/class-pwb-admin-tab.php:140
115
  msgid "After title"
116
  msgstr "Después del título"
117
 
118
+ #: classes/admin/class-pwb-admin-tab.php:141
119
  msgid "After price"
120
  msgstr "Después del precio"
121
 
122
+ #: classes/admin/class-pwb-admin-tab.php:142
123
  msgid "After excerpt"
124
  msgstr "Después de la descripción corta"
125
 
126
+ #: classes/admin/class-pwb-admin-tab.php:143
127
  msgid "After add to cart"
128
  msgstr "Después del botón de comprar"
129
 
130
+ #: classes/admin/class-pwb-admin-tab.php:144
131
  msgid "After meta"
132
  msgstr "Después del meta"
133
 
134
+ #: classes/admin/class-pwb-admin-tab.php:145
135
  msgid "After sharing"
136
  msgstr "Después de compartir"
137
 
138
+ #: classes/admin/class-pwb-admin-tab.php:162
139
  msgid "Tools"
140
  msgstr "Herramientas"
141
 
142
+ #: classes/admin/class-pwb-admin-tab.php:168
143
  msgid "Import brands"
144
  msgstr "Importar marcas"
145
 
146
+ #: classes/admin/class-pwb-admin-tab.php:172
147
  #, php-format
148
  msgid ""
149
  "Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
152
  "Importar marcas de producto de otro plugin de marcas. <a href=\"%s\" target="
153
  "\"_blank\">Pulsa aquí para ver la documentación</a>"
154
 
155
+ #: classes/admin/class-pwb-admin-tab.php:177
156
+ #: classes/admin/class-pwb-admin-tab.php:190
157
  msgid "-"
158
  msgstr "-"
159
 
160
+ #: classes/admin/class-pwb-admin-tab.php:178
161
  msgid "YITH WooCommerce Brands Add-On"
162
  msgstr "YITH WooCommerce Brands Add-On"
163
 
164
+ #: classes/admin/class-pwb-admin-tab.php:179
165
  msgid "Ultimate WooCommerce Brands"
166
  msgstr "Ultimate WooCommerce Brands"
167
 
168
+ #: classes/admin/class-pwb-admin-tab.php:180
169
+ msgid "Offical WooCommerce Brands"
170
+ msgstr "Offical WooCommerce Brands"
171
+
172
+ #: classes/admin/class-pwb-admin-tab.php:184
173
  msgid "Dummy data"
174
  msgstr "Datos ficticios"
175
 
176
+ #: classes/admin/class-pwb-admin-tab.php:187
177
  msgid "Import generic brands and assign it to products randomly"
178
  msgstr ""
179
  "Importar marcas genéricas y asignarlas a los productos existentes de forma "
180
  "aleatoria"
181
 
182
+ #: classes/admin/class-pwb-admin-tab.php:191
183
  msgid "Start import"
184
  msgstr "Comenzar importación"
185
 
186
+ #: classes/admin/class-pwb-admin-tab.php:195
187
  msgid "System status"
188
  msgstr "Estado del sistema"
189
 
190
+ #: classes/admin/class-pwb-admin-tab.php:197
191
  msgid "Show system status"
192
  msgstr "Ver estado del sistema"
193
 
207
  "El cupón será válido si existe al menos un producto de la marca señalada en "
208
  "el carrito"
209
 
210
+ #: classes/class-perfect-woocommerce-brands.php:51
211
  msgid ""
212
  "We know that you´re in love with Perfect WooCommerce Brands, you can help us "
213
  "making it a bit better. Thanks a lot!"
215
  "Sabemos que Perfect WooCommerce Brands te encanta, puedes ayudarnos a "
216
  "hacerlo un poco mejor. ¡Muchas gracias!"
217
 
218
+ #: classes/class-perfect-woocommerce-brands.php:53
219
  msgid ""
220
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
221
  "reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
223
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
224
  "reviews/?rate=5#new-post\" target=\"_blank\">Dejar una review</a>"
225
 
226
+ #: classes/class-perfect-woocommerce-brands.php:54
227
  msgid ""
228
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
229
  "woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
231
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
232
  "woocommerce-brands\" target=\"_blank\">Traducir el plugin</a>"
233
 
234
+ #: classes/class-perfect-woocommerce-brands.php:55
235
  msgid ""
236
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
237
  "\"_blank\">View on GitHub</a>"
239
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
240
  "\"_blank\">Ver en GitHub</a>"
241
 
242
+ #: classes/class-perfect-woocommerce-brands.php:78
243
  msgid "Settings"
244
  msgstr "Ajustes"
245
 
246
+ #: classes/class-perfect-woocommerce-brands.php:261
247
  msgid "PWB Product carousel"
248
  msgstr "PWB Carrusel de productos"
249
 
250
+ #: classes/class-perfect-woocommerce-brands.php:262
251
  msgid "Product carousel by brand or by category"
252
  msgstr "Carrusel de productos por marca o categoría"
253
 
254
+ #: classes/class-perfect-woocommerce-brands.php:270
255
+ #: classes/class-perfect-woocommerce-brands.php:585
256
+ #: classes/class-pwb-exporter-support.php:22
257
+ #: classes/class-pwb-importer-support.php:22
258
+ #: classes/class-pwb-importer-support.php:34
259
+ #: classes/class-pwb-product-tab.php:18 classes/class-pwb-product-tab.php:35
260
  msgid "Brand"
261
  msgstr "Marca"
262
 
263
+ #: classes/class-perfect-woocommerce-brands.php:278
264
  msgid "Products"
265
  msgstr "Productos"
266
 
267
+ #: classes/class-perfect-woocommerce-brands.php:281
268
  msgid "Number of products to load"
269
  msgstr "Número de productos que cargar"
270
 
271
+ #: classes/class-perfect-woocommerce-brands.php:286
272
  msgid "Products to show"
273
  msgstr "Productos a mostrar"
274
 
275
+ #: classes/class-perfect-woocommerce-brands.php:289
276
  msgid "Number of products to show"
277
  msgstr "Número de productos que mostrar"
278
 
279
+ #: classes/class-perfect-woocommerce-brands.php:294
280
  msgid "Products to scroll"
281
  msgstr "Número de productos por scroll"
282
 
283
+ #: classes/class-perfect-woocommerce-brands.php:297
284
  msgid "Number of products to scroll"
285
  msgstr "Número de productos por cada scroll"
286
 
287
+ #: classes/class-perfect-woocommerce-brands.php:302
288
+ #: classes/class-perfect-woocommerce-brands.php:351
289
  msgid "Autoplay"
290
  msgstr "Modo automático"
291
 
292
+ #: classes/class-perfect-woocommerce-brands.php:304
293
+ #: classes/class-perfect-woocommerce-brands.php:353
294
  msgid "Autoplay carousel"
295
  msgstr "Modo automático para el carrusel"
296
 
297
+ #: classes/class-perfect-woocommerce-brands.php:309
298
+ #: classes/class-perfect-woocommerce-brands.php:358
299
  msgid "Arrows"
300
  msgstr "Flechas de navegación"
301
 
302
+ #: classes/class-perfect-woocommerce-brands.php:311
303
+ #: classes/class-perfect-woocommerce-brands.php:360
304
  msgid "Display prev and next arrows"
305
  msgstr "Mostrar flechas de navegación"
306
 
307
+ #: classes/class-perfect-woocommerce-brands.php:317
308
  msgid "PWB Brands carousel"
309
  msgstr "PWB Carrusel de marcas"
310
 
311
+ #: classes/class-perfect-woocommerce-brands.php:318
312
  msgid "Brands carousel"
313
  msgstr "Carrusel de marcas"
314
 
315
+ #: classes/class-perfect-woocommerce-brands.php:327
316
  msgid "Items"
317
  msgstr "Elementos"
318
 
319
+ #: classes/class-perfect-woocommerce-brands.php:330
320
  msgid "Number of items to load"
321
  msgstr "Número de elementos que cargar"
322
 
323
+ #: classes/class-perfect-woocommerce-brands.php:335
324
  msgid "Items to show"
325
  msgstr "Elementos a mostrar"
326
 
327
+ #: classes/class-perfect-woocommerce-brands.php:338
328
  msgid "Number of items to show"
329
  msgstr "Número de elementos a mostrar"
330
 
331
+ #: classes/class-perfect-woocommerce-brands.php:343
332
  msgid "Items to scroll"
333
  msgstr "Número de elementos por scroll"
334
 
335
+ #: classes/class-perfect-woocommerce-brands.php:346
336
  msgid "Number of items to scroll"
337
  msgstr "Número de elementos por cada scroll"
338
 
339
+ #: classes/class-perfect-woocommerce-brands.php:375
340
  msgid "PWB All brands"
341
  msgstr "PWB Todas las marcas"
342
 
343
+ #: classes/class-perfect-woocommerce-brands.php:376
344
  msgid "Show all brands"
345
  msgstr "Mostrar todas las marcas"
346
 
347
+ #: classes/class-perfect-woocommerce-brands.php:385
348
  msgid "Brands per page"
349
  msgstr "Marcas por página"
350
 
351
+ #: classes/class-perfect-woocommerce-brands.php:388
352
  msgid "Show x brands per page"
353
  msgstr "Mostrar x marcas por página"
354
 
355
+ #: classes/class-perfect-woocommerce-brands.php:399
356
  msgid "Order by"
357
  msgstr "Ordenar por"
358
 
359
+ #: classes/class-perfect-woocommerce-brands.php:413
360
  msgid "Order"
361
  msgstr "Orden"
362
 
363
+ #: classes/class-perfect-woocommerce-brands.php:423
364
  msgid "Title position"
365
  msgstr "Posición del título"
366
 
367
+ #: classes/class-perfect-woocommerce-brands.php:427
368
  msgid "Before image"
369
  msgstr "Antes de la imagen"
370
 
371
+ #: classes/class-perfect-woocommerce-brands.php:428
372
  msgid "After image"
373
  msgstr "Después de la imagen"
374
 
375
+ #: classes/class-perfect-woocommerce-brands.php:434
376
  msgid "Hide empty"
377
  msgstr "Ocultar vacías"
378
 
379
+ #: classes/class-perfect-woocommerce-brands.php:436
380
  msgid "Hide brands that have not been assigned to any product"
381
  msgstr "Ocultar marcas que no han sido asignadas a ningún producto"
382
 
383
+ #: classes/class-perfect-woocommerce-brands.php:444
384
  msgid "PWB brand"
385
  msgstr "PWB Marca"
386
 
387
+ #: classes/class-perfect-woocommerce-brands.php:445
388
  msgid "Show brand for a specific product"
389
  msgstr "Ver marcas de un producto específico"
390
 
391
+ #: classes/class-perfect-woocommerce-brands.php:455
392
  msgid "Product id"
393
  msgstr "Id del producto"
394
 
395
+ #: classes/class-perfect-woocommerce-brands.php:458
396
  msgid "Product id (post id)"
397
  msgstr "Id del producto (id del post)"
398
 
399
+ #: classes/class-perfect-woocommerce-brands.php:501
400
+ #: classes/class-perfect-woocommerce-brands.php:503
401
  #: classes/shortcodes/class-pwb-all-brands.php:90
402
  #: classes/shortcodes/class-pwb-brand.php:29
403
  #: classes/shortcodes/class-pwb-brand.php:31
405
  msgid "View brand"
406
  msgstr "Ver marca"
407
 
408
+ #: classes/class-perfect-woocommerce-brands.php:573
409
  msgid "¿Start migration?"
410
  msgstr "¿Comenzar la migración?"
411
 
412
+ #: classes/class-perfect-woocommerce-brands.php:574
413
  msgid ""
414
  "We are migrating the product brands. ¡Don´t close this window until the "
415
  "process is finished!"
417
  "Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
418
  "el proceso finalice!"
419
 
420
+ #: classes/class-perfect-woocommerce-brands.php:575
421
  msgid "¿Start loading dummy data?"
422
  msgstr "¿Comenzar con la importación?"
423
 
424
+ #: classes/class-perfect-woocommerce-brands.php:576
425
  msgid ""
426
  "We are importing the dummy data. ¡Don´t close this window until the process "
427
  "is finished!"
429
  "En este momento estamos importando las marcas ficticias. ¡No cierre esta "
430
  "ventana hasta que termine el proceso!"
431
 
432
+ #: classes/class-perfect-woocommerce-brands.php:587
433
  msgid "All Brands"
434
  msgstr "Todas las marcas"
435
 
436
+ #: classes/class-perfect-woocommerce-brands.php:588
437
  msgid "Edit Brand"
438
  msgstr "Editar marca"
439
 
440
+ #: classes/class-perfect-woocommerce-brands.php:589
441
  msgid "View Brand"
442
  msgstr "Ver marca"
443
 
444
+ #: classes/class-perfect-woocommerce-brands.php:590
445
  msgid "Update Brand"
446
  msgstr "Actualizar marca"
447
 
448
+ #: classes/class-perfect-woocommerce-brands.php:591
449
  msgid "Add New Brand"
450
  msgstr "Añadir nueva marca"
451
 
452
+ #: classes/class-perfect-woocommerce-brands.php:592
453
  msgid "New Brand Name"
454
  msgstr "Nuevo nombre de marca"
455
 
456
+ #: classes/class-perfect-woocommerce-brands.php:593
457
  msgid "Parent Brand"
458
  msgstr "Marca Padre"
459
 
460
+ #: classes/class-perfect-woocommerce-brands.php:594
461
  msgid "Parent Brand:"
462
  msgstr "Marca Padre:"
463
 
464
+ #: classes/class-perfect-woocommerce-brands.php:595
465
  msgid "Search Brands"
466
  msgstr "Buscar Marcas"
467
 
468
+ #: classes/class-perfect-woocommerce-brands.php:596
469
  msgid "Popular Brands"
470
  msgstr "Marcas Populares"
471
 
472
+ #: classes/class-perfect-woocommerce-brands.php:597
473
  msgid "Separate brands with commas"
474
  msgstr "Separar marcas con comas"
475
 
476
+ #: classes/class-perfect-woocommerce-brands.php:598
477
  msgid "Add or remove brands"
478
  msgstr "Añadir o eliminar marcas"
479
 
480
+ #: classes/class-perfect-woocommerce-brands.php:599
481
  msgid "Choose from the most used brands"
482
  msgstr "Seleccionar de las marcas más utilizadas"
483
 
484
+ #: classes/class-perfect-woocommerce-brands.php:600
485
  msgid "No brands found"
486
  msgstr "No se han encontrado marcas"
487
 
488
+ #: classes/class-perfect-woocommerce-brands.php:644
489
+ #: classes/class-perfect-woocommerce-brands.php:677
490
  #: classes/widgets/class-pwb-list.php:39
491
  msgid "Brand logo"
492
  msgstr "Logo de la marca"
493
 
494
+ #: classes/class-perfect-woocommerce-brands.php:646
495
+ #: classes/class-perfect-woocommerce-brands.php:652
496
+ #: classes/class-perfect-woocommerce-brands.php:681
497
+ #: classes/class-perfect-woocommerce-brands.php:701
498
  msgid "Select image"
499
  msgstr "Seleccionar imagen"
500
 
501
+ #: classes/class-perfect-woocommerce-brands.php:650
502
+ #: classes/class-perfect-woocommerce-brands.php:697
503
  msgid "Brand banner"
504
  msgstr "Banner de la marca"
505
 
506
+ #: classes/class-perfect-woocommerce-brands.php:653
507
  msgid "This image will be shown on brand page"
508
  msgstr "Esta imagen se mostrará en la página de la marca"
509
 
510
+ #: classes/class-perfect-woocommerce-brands.php:657
511
+ #: classes/class-perfect-woocommerce-brands.php:717
512
  msgid "Brand banner link"
513
  msgstr "Enlace para el banner de la marca"
514
 
515
+ #: classes/class-perfect-woocommerce-brands.php:659
516
+ #: classes/class-perfect-woocommerce-brands.php:721
517
  msgid "This link should be relative to site url. Example: product/product-name"
518
  msgstr ""
519
  "Este enlace ha de ser relativo a la url del sitio web. Ejemplo: producto/"
520
  "nombre-del-producto"
521
 
522
+ #: classes/class-perfect-woocommerce-brands.php:775
523
  msgid "Logo"
524
  msgstr "Logo"
525
 
526
+ #: classes/class-perfect-woocommerce-brands.php:815
527
  msgid "All"
528
  msgstr "Todas"
529
 
530
+ #: classes/class-perfect-woocommerce-brands.php:870
531
  msgid "No products found"
532
  msgstr "No se han encontrado productos"
533
 
534
+ #: classes/class-pwb-api-support.php:62
535
  msgid "Product brands"
536
  msgstr "Marcas del producto"
537
 
567
  msgid "Title"
568
  msgstr "Título"
569
 
570
+ #: classes/widgets/class-pwb-dropdown.php:67
571
  #: classes/widgets/class-pwb-list.php:105
572
  msgid "There is not available brands"
573
  msgstr "No se encuentran marcas disponibles"
585
  msgid "Title:"
586
  msgstr "Título:"
587
 
588
+ #: classes/widgets/class-pwb-filter-by-brand.php:115
589
  msgid "Apply filter"
590
  msgstr "Filtrar"
591
 
613
  msgid "Go to"
614
  msgstr "Ir a"
615
 
616
+ #: main.php:102
617
  msgid ""
618
  "Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
619
  "active WooCommerce plugin."
main.php CHANGED
@@ -3,14 +3,14 @@
3
  Plugin Name: Perfect WooCommerce Brands
4
  Plugin URI: https://wordpress.org/plugins/perfect-woocommerce-brands/
5
  Description: Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store.
6
- Version: 1.5.2
7
  Author: Alberto de Vera Sevilla
8
  Author URI: https://profiles.wordpress.org/titodevera/
9
  Text Domain: perfect-woocommerce-brands
10
  Domain Path: /lang
11
  License: GPL3
12
 
13
- Perfect WooCommerce Brands version 1.5.2, Copyright (C) 2016 Alberto de Vera Sevilla
14
 
15
  Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
16
  it under the terms of the GNU General Public License as published by
@@ -35,7 +35,7 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
35
  define( 'PWB_PLUGIN', plugins_url( '', __FILE__ ) );
36
  define( 'PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ) );
37
  define( 'PWB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
38
- define( 'PWB_PLUGIN_VERSION', '1.5.2' );
39
  define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
40
  define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
41
 
@@ -73,6 +73,7 @@ if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
73
  }
74
 
75
  if( is_admin() ){
 
76
  require 'classes/admin/class-pwb-system-status.php';
77
  new Admin\PWB_System_Status();
78
  require 'classes/admin/class-pwb-admin-tab.php';
@@ -80,6 +81,17 @@ if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
80
  new Admin\PWB_Migrate();
81
  require 'classes/admin/class-pwb-dummy-data.php';
82
  new Admin\PWB_Dummy_Data();
 
 
 
 
 
 
 
 
 
 
 
83
  }
84
 
85
  new \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands();
3
  Plugin Name: Perfect WooCommerce Brands
4
  Plugin URI: https://wordpress.org/plugins/perfect-woocommerce-brands/
5
  Description: Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store.
6
+ Version: 1.6.0
7
  Author: Alberto de Vera Sevilla
8
  Author URI: https://profiles.wordpress.org/titodevera/
9
  Text Domain: perfect-woocommerce-brands
10
  Domain Path: /lang
11
  License: GPL3
12
 
13
+ Perfect WooCommerce Brands version 1.6.0, Copyright (C) 2016 Alberto de Vera Sevilla
14
 
15
  Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
16
  it under the terms of the GNU General Public License as published by
35
  define( 'PWB_PLUGIN', plugins_url( '', __FILE__ ) );
36
  define( 'PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ) );
37
  define( 'PWB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
38
+ define( 'PWB_PLUGIN_VERSION', '1.6.0' );
39
  define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
40
  define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
41
 
73
  }
74
 
75
  if( is_admin() ){
76
+
77
  require 'classes/admin/class-pwb-system-status.php';
78
  new Admin\PWB_System_Status();
79
  require 'classes/admin/class-pwb-admin-tab.php';
81
  new Admin\PWB_Migrate();
82
  require 'classes/admin/class-pwb-dummy-data.php';
83
  new Admin\PWB_Dummy_Data();
84
+
85
+ if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.1.0', '>=' ) ){
86
+ require 'classes/class-pwb-importer-support.php';
87
+ new PWB_Importer_Support();
88
+ require 'classes/class-pwb-exporter-support.php';
89
+ new PWB_Exporter_Support();
90
+ }
91
+
92
+ }else{
93
+ include_once 'classes/class-pwb-product-tab.php';
94
+ new PWB_Product_Tab();
95
  }
96
 
97
  new \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands();
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: titodevera
3
  Donate link: mailto:hola@albertodevera.es
4
  Tags: woocommerce, brands, brand taxonomy, product brands, woocommerce manufacturer, woocommerce supplier, e-commerce
5
  Requires at least: 4.4
6
- Tested up to: 4.8
7
- Stable tag: 1.5.2
8
  License: GPL3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
10
 
@@ -41,6 +41,8 @@ With this extension you can add product brands to your WooCommerce site.
41
  > * Import brands (migrate) from other brands plugins
42
  > * Dummy data installer (logos by heroturko)
43
  > * WooCommerce REST API support
 
 
44
  > * And much more!
45
 
46
 
@@ -62,6 +64,9 @@ Go to `WooCommerce/Settings/` and click on `Brands` tab
62
  = How to import brands from other brands plugin? =
63
  [Click here](https://github.com/titodevera/perfect-woocommerce-brands/wiki/How-to-import-brands-from-other-brands-plugin)
64
 
 
 
 
65
 
66
  == Screenshots ==
67
  1. Brands carousel
@@ -72,6 +77,18 @@ Go to `WooCommerce/Settings/` and click on `Brands` tab
72
 
73
 
74
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
75
  = 1.5.2 =
76
  * Dev: Adding brands to a products via the REST API + updating namespaces to include v2 (pull request, thanks doekenorg)
77
  = 1.5.1 =
3
  Donate link: mailto:hola@albertodevera.es
4
  Tags: woocommerce, brands, brand taxonomy, product brands, woocommerce manufacturer, woocommerce supplier, e-commerce
5
  Requires at least: 4.4
6
+ Tested up to: 4.9
7
+ Stable tag: 1.6.0
8
  License: GPL3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
10
 
41
  > * Import brands (migrate) from other brands plugins
42
  > * Dummy data installer (logos by heroturko)
43
  > * WooCommerce REST API support
44
+ > * WooCommerce built-in product importer/exporter support (WooCommerce 3.1.0+)
45
+ > * Brand tab for single product page
46
  > * And much more!
47
 
48
 
64
  = How to import brands from other brands plugin? =
65
  [Click here](https://github.com/titodevera/perfect-woocommerce-brands/wiki/How-to-import-brands-from-other-brands-plugin)
66
 
67
+ = REST API docs =
68
+ [Click here](https://github.com/titodevera/perfect-woocommerce-brands/wiki/REST-API-docs)
69
+
70
 
71
  == Screenshots ==
72
  1. Brands carousel
77
 
78
 
79
  == Changelog ==
80
+ = 1.6.0 =
81
+ * Feature: Migrate brands from the official WooCommerce Brand's plugin (pull request, thanks Chunkford)
82
+ * Feature: Support for the new WooCommerce product importer/exporter
83
+ * Feature: Brand tab in single product page
84
+ * Enhancement: Brands dropdown widget selects the current brand if is a brand archive page
85
+ * Enhancement: Hide the brand name in "Display all brands" shortcode (title_position="none")
86
+ * Enhancement: Important enhancements for the REST API
87
+ * Fix: The brand property is not recognized by Google
88
+ * Fix: No shortcode appeared in some Visual Composer versions
89
+ * Fix: Filter by brand widget fixes
90
+ * Fix: Brand description adds description twice
91
+ * Other minor bug fixes and code improvements
92
  = 1.5.2 =
93
  * Dev: Adding brands to a products via the REST API + updating namespaces to include v2 (pull request, thanks doekenorg)
94
  = 1.5.1 =
uninstall.php CHANGED
@@ -7,6 +7,7 @@
7
  delete_option('wc_pwb_admin_tab_slug');
8
  delete_option('wc_pwb_admin_tab_brand_logo_size');
9
  delete_option('wc_pwb_admin_tab_brand_single_position');
 
10
  delete_option('wc_pwb_admin_tab_brand_desc');
11
  delete_option('wc_pwb_admin_tab_section_end');
12
  delete_option('wc_pwb_notice_plugin_review');
7
  delete_option('wc_pwb_admin_tab_slug');
8
  delete_option('wc_pwb_admin_tab_brand_logo_size');
9
  delete_option('wc_pwb_admin_tab_brand_single_position');
10
+ delete_option('wc_pwb_admin_tab_brand_single_product_tab');
11
  delete_option('wc_pwb_admin_tab_brand_desc');
12
  delete_option('wc_pwb_admin_tab_section_end');
13
  delete_option('wc_pwb_notice_plugin_review');