define([
'jquery',
'jquery-ui-modules/widget',
'Magezon_Core/js/owl.carousel.min'
], function ($) {
'use strict';
/**
* Animate Plugin
* @version 2.3.4
* @author Bartosz Wojciechowski
* @author David Deutsch
* @license The MIT License (MIT)
*/
;(function($, window, document, undefined) {
/**
* Creates the animate plugin.
* @class The Navigation Plugin
* @param {Owl} scope - The Owl Carousel
*/
var Animate = function(scope) {
this.core = scope;
this.core.options = $.extend({}, Animate.Defaults, this.core.options);
this.swapping = true;
this.previous = undefined;
this.next = undefined;
this.handlers = {
'change.owl.carousel': $.proxy(function(e) {
if (e.namespace && e.property.name == 'position') {
this.previous = this.core.current();
this.next = e.property.value;
}
}, this),
'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {
if (e.namespace) {
this.swapping = e.type == 'translated';
}
}, this),
'translate.owl.carousel': $.proxy(function(e) {
if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {
this.swap();
}
}, this)
};
this.core.$element.on(this.handlers);
};
/**
* Default options.
* @public
*/
Animate.Defaults = {
animateOut: false,
animateIn: false
};
/**
* Toggles the animation classes whenever an translations starts.
* @protected
* @returns {Boolean|undefined}
*/
Animate.prototype.swap = function() {
if (this.core.settings.items !== 1) {
return;
}
if (!$.support.animation || !$.support.transition) {
return;
}
this.core.speed(0);
var left,
clear = $.proxy(this.clear, this),
previous = this.core.$stage.children().eq(this.previous),
next = this.core.$stage.children().eq(this.next),
incoming = this.core.settings.animateIn,
outgoing = this.core.settings.animateOut;
if (this.core.current() === this.previous) {
return;
}
if (outgoing) {
left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);
previous.one($.support.animation.end, clear)
.css( { 'left': left + 'px' } )
.addClass('animated owl-animated-out')
.addClass(outgoing);
}
if (incoming) {
next.one($.support.animation.end, clear)
.addClass('animated owl-animated-in')
.addClass(incoming);
}
};
Animate.prototype.clear = function(e) {
$(e.currentTarget).css( { 'left': '' } )
.removeClass('animated owl-animated-out owl-animated-in')
.removeClass(this.core.settings.animateIn)
.removeClass(this.core.settings.animateOut);
this.core.onTransitionEnd();
};
/**
* Destroys the plugin.
* @public
*/
Animate.prototype.destroy = function() {
var handler, property;
for (handler in this.handlers) {
this.core.$element.off(handler, this.handlers[handler]);
}
for (property in Object.getOwnPropertyNames(this)) {
typeof this[property] != 'function' && (this[property] = null);
}
};
$.fn.owlCarousel.Constructor.Plugins.Animate = Animate;
})(window.Zepto || window.jQuery, window, document);
$.widget('magezon.slider', {
options: {
item_xs: 1,
item_sm: 1,
item_md: 1,
item_lg: 1,
item_xl: 1,
items: 3,
// loop: false,
// center: false,
// rewind: false,
// checkVisibility: true,
// mouseDrag: true,
// touchDrag: true,
// pullDrag: true,
// freeDrag: false,
// margin: 0,
// stagePadding: 0,
// merge: false,
// mergeFit: true,
// autoWidth: false,
// startPosition: 0,
// rtl: false,
// smartSpeed: 250,
// fluidSpeed: false,
// dragEndSpeed: false,
// responsive: {},
// responsiveRefreshRate: 200,
// responsiveBaseElement: window,
// fallbackEasing: 'swing',
// slideTransition: '',
// info: false,
// nestedItemSelector: false,
// itemElement: 'div',
// stageElement: 'div',
// refreshClass: 'owl-refresh',
// loadedClass: 'owl-loaded',
// loadingClass: 'owl-loading',
// rtlClass: 'owl-rtl',
responsiveClass: 'owl-responsive',
// dragClass: 'owl-drag',
// itemClass: 'owl-item',
// stageClass: 'owl-stage',
// stageOuterClass: 'owl-stage-outer',
// grabClass: 'owl-grab',
// autoHeight: true,
navText: ['',''],
// animateOut: '',
// animateIn: ''
},
_create: function () {
var self = this;
var options = this.options;
var calculateHeights = function() {
var sliderWidth = self.element.width();
var sliderWidth = 1240;
if (self.element.data( 'slider_width' )) {
sliderWidth = self.element.data( 'slider_width' );
}
var sliderHeight = parseInt( self.element.data( 'slider_height' ) );
var aspectRatio = sliderHeight / sliderWidth;
if ( aspectRatio < 0.5 ) aspectRatio = 0.5;
var compareWidth = $('#maincontent').width();
var compareWidth = self.element.closest('.mgz-element').width();
sliderHeight = aspectRatio * compareWidth;
if ( sliderHeight > parseInt( self.element.data( 'slider_height' ) ) ) {
sliderHeight = parseInt( self.element.data( 'slider_height' ) );
}
if ( sliderHeight < 200 ) {
sliderHeight = 200;
}
self.element.find('.mgz-carousel-item').height(sliderHeight);
}
calculateHeights();
$( window ).on( 'resize orientationchange', calculateHeights );
options['responsive'] = {
0: {'items': parseInt(options.item_xs)},
544: {'items': parseInt(options.item_sm)},
768: {'items': parseInt(options.item_md)},
992: {'items': parseInt(options.item_lg)},
1200: {'items': parseInt(options.item_xl)}
};
function setAnimation ( _elem, _InOut ) {
var animationEndEvent = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
_elem.each(function() {
var $elem = $(this);
var $animationType = 'animated ' + $elem.data( 'animate-' + _InOut );
var $animationDelay = $elem.data('animate-delay') ? $elem.data('animate-delay') + 's' : 0;
$elem.css('-webkit-animation-delay', $animationDelay)
.css('-moz-animation-delay', $animationDelay)
.css('-ms-animation-delay', $animationDelay)
.css('-o-animation-delay', $animationDelay)
.css('animation-delay', $animationDelay);
$elem.addClass($animationType).one(animationEndEvent, function () {
$elem.removeClass($animationType);
});
});
}
var firstSlide = this.element.find('.item:eq(0)');
var $elemsToanim = firstSlide.find("[data-animate-in]");
setAnimation ($elemsToanim, 'in');
var playVideo = function() {
var video = self.element.find(".active video");
if (video.length && video.data('autoplay')) {
video.trigger('play');
}
}
this.element.on('initialized.owl.carousel', function() {
playVideo();
});
var owl = this.element.owlCarousel(options);
owl.on('change.owl.carousel', function(event) {
var $currentItem = $('.owl-item', owl).eq(event.item.index);
var $elemsToanim = $currentItem.find("[data-animate-out]");
setAnimation ($elemsToanim, 'out');
});
owl.on('changed.owl.carousel', function(event) {
var $currentItem = $('.owl-item', owl).eq(event.item.index);
var $elemsToanim = $currentItem.find("[data-animate-in]");
setAnimation ($elemsToanim, 'in');
self.element.find('.owl-item').removeClass('owl-fadeUp-out');
playVideo();
});
if (options.owl_active) {
owl.trigger("to.owl.carousel", [options.owl_active - 1, 0]);
}
}
});
return $.magezon.slider;
});