(function ($) {
'use strict';
var getElementSettings = function( $element ) {
var elementSettings = {},
modelCID = $element.data( 'model-cid' );
if ( isEditMode && modelCID ) {
var settings = elementorFrontend.config.elements.data[ modelCID ],
settingsKeys = elementorFrontend.config.elements.keys[ settings.attributes.widgetType || settings.attributes.elType ];
jQuery.each( settings.getActiveControls(), function( controlKey ) {
if ( -1 !== settingsKeys.indexOf( controlKey ) ) {
elementSettings[ controlKey ] = settings.attributes[ controlKey ];
}
} );
} else {
elementSettings = $element.data('settings') || {};
}
return elementSettings;
};
var isEditMode = false;
var ppSwiperSliderinit = function (carousel, carouselWrap, elementSettings, sliderOptions) {
if ( 'undefined' === typeof Swiper ) {
var asyncSwiper = elementorFrontend.utils.swiper;
new asyncSwiper( carousel, sliderOptions ).then( function( newSwiperInstance ) {
var mySwiper = newSwiperInstance;
ppSwiperSliderAfterinit( carousel, carouselWrap, elementSettings, mySwiper );
} );
} else {
var mySwiper = new Swiper(carousel, sliderOptions);
ppSwiperSliderAfterinit( carousel, carouselWrap, elementSettings, mySwiper );
}
};
var ppSwiperSliderAfterinit = function (carousel, carouselWrap, elementSettings, mySwiper) {
if ( 'yes' === elementSettings.pause_on_hover ) {
carousel.on( 'mouseover', function() {
mySwiper.autoplay.stop();
});
carousel.on( 'mouseout', function() {
mySwiper.autoplay.start();
});
}
if ( isEditMode ) {
carouselWrap.resize( function() {
mySwiper.update();
});
}
ppWidgetUpdate( mySwiper, '.pp-swiper-slider', 'swiper' );
};
var ppSwiperSliderHandler = function ($scope, $) {
var elementSettings = getElementSettings( $scope ),
carouselWrap = $scope.find('.swiper-container-wrap'),
carousel = $scope.find('.pp-swiper-slider'),
sliderOptions = JSON.parse( carousel.attr('data-slider-settings') );
ppSwiperSliderinit(carousel, carouselWrap, elementSettings, sliderOptions);
};
var ppWidgetUpdate = function (slider, selector, type) {
if( 'undefined' === typeof type ){
type = 'swiper';
}
var $triggers = [
'ppe-tabs-switched',
'ppe-toggle-switched',
'ppe-accordion-switched',
'ppe-popup-opened',
];
$triggers.forEach(function(trigger) {
if ( 'undefined' !== typeof trigger ) {
$(document).on(trigger, function(e, wrap) {
if ( trigger == 'ppe-popup-opened' ) {
wrap = $('.pp-modal-popup-' + wrap);
}
if ( wrap.find( selector ).length > 0 ) {
setTimeout(function() {
if ( 'slick' === type ) {
slider.slick( 'setPosition' );
} else if ( 'swiper' === type ) {
slider.update();
} else if ( 'gallery' === type ) {
var $gallery = wrap.find('.pp-image-gallery').eq(0);
$gallery.isotope( 'layout' );
}
}, 100);
}
});
}
});
};
var ImageHotspotHandler = function ($scope, $) {
var id = $scope.data('id'),
hotspotsWrap = $scope.find('.pp-image-hotspots'),
tooltipOptions = JSON.parse( hotspotsWrap.attr('data-tooltip-options') ),
ppclass = 'pp-tooltip' + ' pp-tooltip-' + id,
ttArrow = tooltipOptions.arrow,
ttAlwaysOpen = tooltipOptions.always_open,
ttTrigger = tooltipOptions.trigger,
ttDistance = tooltipOptions.distance,
animation = tooltipOptions.animation,
minWidth = tooltipOptions.width,
tooltipSize = tooltipOptions.size,
tooltipZindex = tooltipOptions.zindex;
if ( '' !== tooltipSize && undefined !== tooltipSize ) {
ppclass += ' pp-tooltip-size-' + tooltipSize;
}
$('.pp-hot-spot-wrap[data-tooltip]').each(function () {
var ttPosition = $(this).data('tooltip-position');
$( this ).pptooltipster({
trigger : ttTrigger,
animation : animation,
minWidth: minWidth,
ppclass : ppclass,
side : ttPosition,
arrow : ( 'yes' === ttArrow ),
distance : ttDistance,
interactive : true,
positionTracker : true,
zIndex : tooltipZindex,
});
if ( ttAlwaysOpen === 'yes' ) {
$(this).pptooltipster();
$(this).pptooltipster('show');
}
});
};
var ImageComparisonHandler = function ($scope) {
if ( 'undefined' === typeof $scope ) {
return;
}
var imageComparisonElem = $scope.find('.pp-image-comparison').eq(0),
settings = imageComparisonElem.data('settings');
$scope.imagesLoaded( function() {
imageComparisonElem.twentytwenty({
default_offset_pct: settings.visible_ratio,
orientation: settings.orientation,
before_label: settings.before_label,
after_label: settings.after_label,
move_slider_on_hover: settings.slider_on_hover,
move_with_handle_only: settings.slider_with_handle,
click_to_move: settings.slider_with_click,
no_overlay: settings.no_overlay
});
} );
};
var CounterHandler = function ($scope, $) {
var counterElem = $scope.find('.pp-counter').eq(0),
target = counterElem.data('target'),
separator = $scope.find('.pp-counter-number').data('separator'),
separatorChar = $scope.find('.pp-counter-number').data('separator-char'),
format = ( separatorChar !== '' ) ? '(' + separatorChar + 'ddd).dd' : '(,ddd).dd';
var counter = function () {
$(target).each(function () {
var to = $(this).data('to'),
speed = $(this).data('speed'),
od = new Odometer({
el: this,
value: 0,
duration: speed,
format: (separator === 'yes') ? format : ''
});
od.render();
setInterval(function () {
od.update(to);
});
})
}
if ( 'undefined' !== typeof elementorFrontend.waypoint ) {
elementorFrontend.waypoint(
counterElem,
counter,
{ offset: '80%', triggerOnce: true }
);
}
};
var infoBoxEqualHeight = function($scope, $) {
var maxHeight = 0;
$scope.find('.swiper-slide').each( function() {
if($(this).height() > maxHeight){
maxHeight = $(this).height();
}
});
$scope.find('.pp-info-box-content-wrap').css('min-height',maxHeight);
};
var InfoBoxCarouselHandler = function ($scope, $) {
var elementSettings = getElementSettings( $scope ),
carouselWrap = $scope.find('.swiper-container-wrap'),
carousel = $scope.find('.pp-info-box-carousel'),
sliderOptions = JSON.parse( carousel.attr('data-slider-settings') ),
equalHeight = elementSettings.equal_height_boxes;
ppSwiperSliderinit(carousel, carouselWrap, elementSettings, sliderOptions);
if ( equalHeight === 'yes' ) {
infoBoxEqualHeight($scope, $);
$(window).resize(infoBoxEqualHeight($scope, $));
}
};
var InstaFeedHandler = function ($scope, $) {
var widgetId = $scope.data('id'),
elementSettings = getElementSettings( $scope ),
feed = $scope.find('.pp-instagram-feed').eq(0),
layout = elementSettings.feed_layout;
if ( ! feed.length ) {
return;
}
if ( layout === 'carousel' ) {
var carouselWrap = $scope.find('.swiper-container-wrap'),
carousel = $scope.find('.swiper-container').eq(0),
sliderOptions = JSON.parse( carousel.attr('data-slider-settings') );
ppSwiperSliderinit(carousel, carouselWrap, elementSettings, sliderOptions);
} else if (layout === 'masonry') {
var grid = $('#pp-instafeed-' + widgetId).imagesLoaded( function() {
grid.masonry({
itemSelector: '.pp-feed-item',
percentPosition: true
});
});
}
};
var ImageSliderAfter = function (carousel, carouselWrap, elementSettings, mySwiper, thumbsNav) {
if ( 'yes' === elementSettings.pause_on_hover ) {
carousel.on( 'mouseover', function() {
mySwiper.autoplay.stop();
});
carousel.on( 'mouseout', function() {
mySwiper.autoplay.start();
});
}
if ( elementSettings.skin === 'slideshow' ) {
thumbsNav.removeClass('pp-active-slide');
thumbsNav.eq(0).addClass('pp-active-slide');
mySwiper.on('slideChange', function () {
var activeSlide = ( elementSettings.infinite_loop == 'yes' ) ? mySwiper.realIndex : mySwiper.activeIndex;
thumbsNav.removeClass('pp-active-slide');
thumbsNav.eq( activeSlide ).addClass('pp-active-slide');
});
var offset = elementSettings.infinite_loop ? 1 : 0;
$(thumbsNav).on('click', function(){
mySwiper.slideTo($(this).index() + offset, 500);
});
}
if ( isEditMode ) {
carouselWrap.resize( function() {
mySwiper.update();
});
}
ppWidgetUpdate( mySwiper, '.pp-image-slider', 'swiper' );
};
var ImageSliderHandler = function ( $scope, $ ) {
var carousel = $scope.find( '.pp-image-slider' ).eq( 0 ),
slider_id = carousel.attr( 'id' ),
sliderOptions = carousel.data('slider-settings'),
fancyboxSettings = carousel.data('fancybox-settings'),
carouselWrap = $scope.find( '.pp-image-slider-wrap' ),
thumbsNav = $scope.find( '.pp-image-slider-container .pp-image-slider-thumb-item-wrap' ),
elementSettings = getElementSettings( $scope );
if ( 'undefined' === typeof Swiper ) {
var asyncSwiper = elementorFrontend.utils.swiper;
new asyncSwiper( carousel, sliderOptions ).then( function( newSwiperInstance ) {
var mySwiper = newSwiperInstance;
ImageSliderAfter(carousel, carouselWrap, elementSettings, mySwiper, thumbsNav);
} );
} else {
var mySwiper = new Swiper( carousel, sliderOptions );
ImageSliderAfter(carousel, carouselWrap, elementSettings, mySwiper, thumbsNav);
}
var $lightbox_selector = '.pp-image-slider-slide:not(.swiper-slide-duplicate) .pp-image-slider-slide-link[data-fancybox="' + slider_id + '"]';
$($lightbox_selector).fancybox( fancyboxSettings );
};
var ModalPopupHandler = function ($scope, $) {
if ( $scope.hasClass('pp-visibility-hidden') ) {
return;
}
var popupElem = $scope.find('.pp-modal-popup').eq(0),
widgetId = $scope.data('id'),
elementSettings = getElementSettings( $scope ),
overlay = elementSettings.overlay_switch,
popupLayout = 'pp-modal-popup-' + elementSettings.layout_type,
closeButtonPos = elementSettings.close_button_position,
effect = 'animated' + ' ' + elementSettings.popup_animation_in,
popupType = popupElem.data('type'),
iframeClass = popupElem.data('iframe-class'),
src = popupElem.data('src'),
triggerElement = popupElem.data('trigger-element'),
delay = popupElem.data('delay'),
popupDisableOn = popupElem.data('disable-on'),
trigger = elementSettings.trigger,
preventScroll = (elementSettings.prevent_scroll === 'yes') ? true : false,
enableUrlTrigger = elementSettings.enable_url_trigger,
popupId = 'popup_' + widgetId,
displayAfter = popupElem.data('display-after'),
mainClass = ' ' + 'pp-modal-popup-' + widgetId + ' ' + popupLayout + ' ' + closeButtonPos + ' ' + effect,
popupArgs = {
disableOn : popupDisableOn,
showCloseBtn : (elementSettings.close_button === 'yes') ? true : false,
enableEscapeKey : (elementSettings.esc_exit === 'yes') ? true : false,
closeOnBgClick : (elementSettings.click_exit === 'yes') ? true : false,
closeOnContentClick : (elementSettings.content_close === 'yes') ? true : false,
closeMarkup : '<div class="mfp-close">×</div>',
closeBtnInside : (closeButtonPos === 'win-top-left' || closeButtonPos === 'win-top-right') ? false : true,
removalDelay : 500,
callbacks : {
open : function() {
$(document).trigger('ppe-popup-opened', [ widgetId ]);
if ( !preventScroll ) {
$('html').css({ 'overflow' : '' });
}
},
close : function() {
if ( !preventScroll ) {
$('html').css({ 'overflow' : 'hidden' });
}
}
}
};
if ( elementorFrontend.isEditMode() ) {
$.magnificPopup.close();
if ( $( '#pp-modal-popup-wrap-' + widgetId ).hasClass( 'pp-popup-preview' ) ) {
popupArgs.items = {
src: src,
type: popupType
};
popupArgs.mainClass = mainClass;
$.magnificPopup.open( popupArgs );
}
}
if ( overlay !== 'yes' ) {
mainClass += ' ' + 'pp-no-overlay';
}
$( window ).on( "load", function() {
if ( 'yes' === enableUrlTrigger ) {
var urlLink = window.location.href,
hashPopupId = urlLink.split('#')[1];
if ( '' !== hashPopupId && undefined !== hashPopupId ) {
src = $( "[data-url-identifier='" + hashPopupId + "']" ).data('src');
if ( '' !== src && undefined !== src ) {
popupArgs.items = {
src: src,
type: popupType
};
popupArgs.mainClass = mainClass;
$.magnificPopup.open( popupArgs );
}
}
}
} );
var triggerButtonElement = $( '.pp-modal-popup-link' );
// if is not disabled for particular device size then show the popup button.
if ( ( undefined !== popupArgs.disableOn && $(window).width() > popupArgs.disableOn ) || ( undefined === popupArgs.disableOn ) ) {
triggerButtonElement.show(); //show button when device disabled off.
if ( trigger === 'exit-intent' ) {
var mouseY = 0,
topValue = 0;
if ( displayAfter === 0 ) {
$.removeCookie(popupId, { path: '/' });
}
popupArgs.items = {
src: src
};
popupArgs.type = popupType;
popupArgs.mainClass = 'mfp-fade mfp-fade-side';
$(document).on( 'mouseleave', function( e ) {
mouseY = e.clientY;
if (mouseY < topValue && !$.cookie(popupId) ) {
$.magnificPopup.open( popupArgs );
if ( displayAfter > 0 ) {
$.cookie(popupId, displayAfter, { expires: displayAfter, path: '/' });
} else {
$.removeCookie( popupId );
}
}
} );
}
else if ( trigger === 'page-load' ) {
if ( displayAfter === 0 ) {
$.removeCookie(popupId, { path: '/' });
}
popupArgs.items = {
src: src
};
popupArgs.type = popupType;
if ( !$.cookie(popupId) ) {
setTimeout(function() {
$.magnificPopup.open( popupArgs );
if ( displayAfter > 0 ) {
$.cookie(popupId, displayAfter, { expires: displayAfter, path: '/' });
} else {
$.removeCookie( popupId );
}
}, delay);
}
} else {
if (typeof triggerElement === 'undefined' || triggerElement === '') {
triggerElement = '.pp-modal-popup-link';
}
popupArgs.iframe = {
markup: '<div class="' + iframeClass + '">'+
'<div class="modal-popup-window-inner">'+
'<div class="mfp-iframe-scaler">'+
'<div class="mfp-close"></div>'+
'<iframe class="mfp-iframe" frameborder="0" allowfullscreen></iframe>'+
'</div>'+
'</div>'+
'</div>'
};
popupArgs.items = {
src: src,
type: popupType
};
popupArgs.mainClass = mainClass;
$(triggerElement).magnificPopup(popupArgs);
/* $(triggerElement).on('click', function () {
src = $(this).parent().data('src'),
popupType = $(this).parent().data('type'),
popupArgs.items = {
src: src,
type: popupType
};
popupArgs.mainClass = mainClass;
$.magnificPopup.open(popupArgs);
}); */
}
} else {
triggerButtonElement.hide(); // hide button when device disabled on.
}
};
var TableHandler = function ($scope, $) {
var table_elem = $scope.find('.pp-table').eq(0),
elementSettings = getElementSettings( $scope );
if ( elementSettings.table_type === 'responsive' ) {
if ( elementSettings.scrollable === 'yes' && elementSettings.breakpoint > 0 ) {
if ( jQuery(window).width() >= elementSettings.breakpoint ) {
jQuery( table_elem ).removeAttr('data-tablesaw-mode');
}
}
$( document ).trigger( 'enhance.tablesaw' );
}
};
var AdvancedTabsHandler = function ($scope, $) {
new PPAdvancedTabs( $scope, $ );
};
var PPCountdownHandler = function ($scope, $) {
var settings = JSON.parse( $scope.find('[name=pp-countdown-settings]').val() );
new PPCountdown( settings, $scope, $ );
};
var ToggleHandler = function ($scope, $) {
var toggleElem = $scope.find('.pp-toggle-container').eq(0),
toggleSwitchContainer = $(toggleElem).find('.pp-toggle-switch-container'),
toggleSwitch = $(toggleElem).find('.pp-toggle-switch'),
labelPrimary = $(toggleElem).find('.pp-primary-toggle-label'),
labelSecondary = $(toggleElem).find('.pp-secondary-toggle-label'),
sectionPrimary = $(toggleElem).find('.pp-toggle-section-primary'),
sectionSecondary = $(toggleElem).find('.pp-toggle-section-secondary');
toggleSwitch.on('click', function() {
sectionPrimary.toggle(0, 'swing', function() {
toggleSwitchContainer.toggleClass('pp-toggle-switch-on');
});
sectionSecondary.toggle();
if ( labelPrimary.hasClass('pp-toggle-active') ) {
labelPrimary.removeClass('pp-toggle-active');
labelSecondary.addClass('pp-toggle-active');
} else {
labelPrimary.addClass('pp-toggle-active');
labelSecondary.removeClass('pp-toggle-active');
}
if ( sectionPrimary.is(":visible") ) {
$(document).trigger('ppe-toggle-switched', [ sectionPrimary ]);
} else {
$(document).trigger('ppe-toggle-switched', [ sectionSecondary ]);
}
});
/* Primary Label Click */
labelPrimary.on('click', function() {
toggleSwitch.prop('checked', false);
toggleSwitchContainer.removeClass('pp-toggle-switch-on');
$(this).addClass('pp-toggle-active');
labelSecondary.removeClass('pp-toggle-active');
sectionPrimary.show();
sectionSecondary.hide();
$(document).trigger('ppe-toggle-switched', [ sectionPrimary ]);
});
/* Secondary Label Click */
labelSecondary.on('click', function() {
toggleSwitch.prop('checked', true);
toggleSwitchContainer.addClass('pp-toggle-switch-on');
$(this).addClass('pp-toggle-active');
labelPrimary.removeClass('pp-toggle-active');
sectionSecondary.show();
sectionPrimary.hide();
$(document).trigger('ppe-toggle-switched', [ sectionSecondary ]);
});
};
var AdvancedMenuHandler = function ($scope) {
new PPAdvancedMenu( $scope );
};
var ImageGalleryHandler = function ($scope, $) {
var galleryContainer = $scope.find('.pp-image-gallery-container').eq(0),
gallery = $scope.find('.pp-image-gallery').eq(0),
elementSettings = getElementSettings( $scope ),
justifiedGallery = $scope.find('.pp-image-gallery-justified').eq(0),
widgetId = $scope.data( 'id' ),
galleryId = gallery.attr( 'id' ),
lightboxLibrary = elementSettings.lightbox_library,
settings = galleryContainer.data('settings'),
cachedItems = [],
cachedIds = [];
if ( ! isEditMode ) {
if ( gallery.hasClass('pp-image-gallery-masonry') || gallery.hasClass('pp-image-gallery-filter-enabled') || settings.pagination === 'yes' ) {
var layoutMode = 'fitRows';
if ( gallery.hasClass('pp-image-gallery-masonry') ) {
layoutMode = 'masonry';
}
var filterItems = $scope.find( '.pp-gallery-filters .pp-gallery-filter' ),
defaultFilter = '';
$(filterItems).each(function() {
if ( defaultFilter === '' || defaultFilter === undefined ) {
defaultFilter = $(this).attr('data-default');
}
});
var $isotope_args = {
itemSelector : '.pp-grid-item-wrap',
layoutMode : layoutMode,
percentPosition : true,
filter : defaultFilter,
},
isotopeGallery = {};
$scope.imagesLoaded( function() {
isotopeGallery = gallery.isotope( $isotope_args );
gallery.find('.pp-gallery-slide-image').on('load', function() {
if ( $(this).hasClass('lazyloaded') ) {
return;
}
setTimeout(function() {
gallery.isotope( 'layout' );
}, 1000);
});
});
$scope.on( 'click', '.pp-gallery-filter', function() {
var $this = $(this),
filterValue = $this.attr('data-filter'),
filterIndex = $this.attr('data-gallery-index'),
galleryItems = gallery.find(filterValue);
if ( filterValue === '*' ) {
galleryItems = gallery.find('.pp-grid-item-wrap');
}
$(galleryItems).each(function() {
var imgLink = $(this).find('.pp-image-gallery-item-link');
if ( lightboxLibrary === 'fancybox' ) {
imgLink.attr('data-fancybox', filterIndex + '_' + widgetId);
} else {
imgLink.attr('data-elementor-lightbox-slideshow', filterIndex + '_' + widgetId);
}
});
$this.siblings().removeClass('pp-active');
$this.addClass('pp-active');
isotopeGallery.isotope({ filter: filterValue });
});
$('.pp-filters-dropdown').on( 'change', function() {
// get filter value from option value
var filterValue = this.value;
isotopeGallery.isotope({ filter: filterValue });
});
ppWidgetUpdate(gallery, '.pp-image-gallery', 'gallery');
}
}
var tiltEnable = (settings.tilt_enable !== undefined) ? settings.tilt_enable : '';
if ( tiltEnable === 'yes' ) {
$( gallery ).find('.pp-image-gallery-thumbnail-wrap').tilt({
disableAxis: settings.tilt_axis,
maxTilt: settings.tilt_amount,
scale: settings.tilt_scale,
speed: settings.tilt_speed,
perspective: 1000
});
}
if ( justifiedGallery.length > 0 ) {
justifiedGallery.imagesLoaded( function() {
})
.done(function( instance ) {
justifiedGallery.justifiedGallery({
rowHeight : settings.row_height,
lastRow : settings.last_row,
selector : 'div',
waitThumbnailsLoad : true,
margins : 0,
border : 0
});
});
}
var lightboxSelector = '.pp-grid-item-wrap .pp-image-gallery-item-link[data-fancybox="'+galleryId+'"]',
fancyboxThumbs = gallery.data('fancybox-class'),
fancyboxAxis = gallery.data('fancybox-axis');
$(lightboxSelector).fancybox({
loop: 'yes' === elementSettings.loop,
arrows: 'yes' === elementSettings.arrows,
infobar: 'yes' === elementSettings.slides_counter,
keyboard: 'yes' === elementSettings.keyboard,
toolbar: 'yes' === elementSettings.toolbar,
buttons: elementSettings.toolbar_buttons,
animationEffect: elementSettings.lightbox_animation,
transitionEffect: elementSettings.transition_effect,
baseClass: fancyboxThumbs,
thumbs: {
autoStart: 'yes' === elementSettings.thumbs_auto_start,
axis: fancyboxAxis
}
});
gallery.find('.pp-grid-item-wrap').each(function() {
cachedIds.push( $(this).data('item-id') );
});
// Load More
$scope.find('.pp-gallery-load-more').on('click', function(e) {
e.preventDefault();
var $this = $(this);
$this.addClass('disabled pp-loading');
if ( cachedItems.length > 0 ) {
gallery_render_items();
} else {
var data = {
action: 'pp_gallery_get_images',
pp_action: 'pp_gallery_get_images',
settings: settings
};
$.ajax({
type: 'post',
url: window.location.href.split( '#' ).shift(),
data: data,
success: function(response) {
if ( response.success ) {
var items = response.data.items;
if ( items ) {
$(items).each(function() {
if ( $(this).hasClass('pp-grid-item-wrap') ) {
cachedItems.push( this );
}
});
}
gallery_render_items();
}
},
error: function(xhr, desc) {
console.log(desc);
}
});
}
});
function gallery_render_items() {
$scope.find('.pp-gallery-load-more').removeClass( 'disabled pp-loading' );
if ( cachedItems.length > 0 ) {
var count = 1;
var items = [];
$(cachedItems).each(function() {
var id = $(this).data('item-id');
if ( -1 === $.inArray( id, cachedIds ) ) {
if ( count <= parseInt( settings.per_page, 10 ) ) {
cachedIds.push( id );
items.push( this );
count++;
} else {
return false;
}
}
});
if ( items.length > 0 ) {
items = $(items);
items.imagesLoaded( function() {
gallery.isotope('insert', items);
setTimeout(function() {
gallery.isotope('layout');
}, 500);
if ( tiltEnable === 'yes' ) {
$( gallery ).find('.pp-grid-item').tilt({
disableAxis: settings.tilt_axis,
maxTilt: settings.tilt_amount,
scale: settings.tilt_scale,
speed: settings.tilt_speed
});
}
});
}
if ( cachedItems.length === cachedIds.length ) {
$scope.find('.pp-gallery-pagination').hide();
}
var lightboxSelector = '.pp-grid-item-wrap .pp-image-gallery-item-link[data-fancybox="'+galleryId+'"]';
$(lightboxSelector).fancybox({
loop: true
});
}
}
};
var OffCanvasContentHandler = function ($scope, $) {
var content_wrap = $scope.find('.pp-offcanvas-content-wrap');
if ( $(content_wrap).length > 0 ) {
new PPOffcanvasContent( $scope );
}
};
var PPButtonHandler = function ( $scope ) {
var id = $scope.data('id'),
ppclass = 'pp-tooltip' + ' pp-tooltip-' + id,
ttipPosition = $scope.find('.pp-button[data-tooltip]').data('tooltip-position'),
elementorBreakpoints = elementorFrontend.config.breakpoints;
// tablet
if ( window.innerWidth <= elementorBreakpoints.lg && window.innerWidth >= elementorBreakpoints.md ) {
ttipPosition = $scope.find('.pp-button[data-tooltip]').data('tooltip-position-tablet');
}
// mobile
if ( window.innerWidth < elementorBreakpoints.md ) {
ttipPosition = $scope.find('.pp-button[data-tooltip]').data('tooltip-position-mobile');
}
$scope.find('.pp-button[data-tooltip]').pptooltipster({
trigger : 'hover',
animation : 'fade',
ppclass : ppclass,
side : ttipPosition,
interactive : true,
positionTracker : true,
});
};
var PPVideo = {
/**
* Auto Play Video
*/
_play: function( $selector, outerWrap ) {
var $iframe = $( '<iframe/>' ),
$vidSrc = $selector.data( 'src' );
if ( 0 === $selector.find( 'iframe' ).length ) {
$iframe.attr( 'src', $vidSrc );
$iframe.attr( 'frameborder', '0' );
$iframe.attr( 'allowfullscreen', '1' );
$iframe.attr( 'allow', 'autoplay;encrypted-media;' );
$selector.html( $iframe );
if ( outerWrap.hasClass( 'pp-video-type-hosted' ) ) {
var hostedVideoHtml = JSON.parse( outerWrap.data( 'hosted-html' ) );
$iframe.on( 'load', function() {
var hostedVideoIframe = $iframe.contents().find( 'body' );
hostedVideoIframe.html( hostedVideoHtml );
$iframe.contents().find( 'video' ).css( {"width":"100%", "height":"100%"} );
$iframe.contents().find( 'video' ).attr( 'autoplay','autoplay' );
});
}
}
}
};
var ShowcaseHandler = function ( $scope, $ ) {
var $carousel = $scope.find( '.pp-showcase-preview' ).eq( 0 ),
showcaseId = $carousel.attr( 'id' ),
$rtl = $carousel.data( 'rtl' ),
$slider_wrap = $scope.find( '.pp-showcase-preview-wrap' ),
$nav_wrap = $scope.find( '.pp-showcase-navigation-items' ),
$nav = $scope.find( '.pp-showcase .pp-showcase-navigation-item-wrap' ),
$video_play = $scope.find( '.pp-showcase .pp-video-play' ),
elementSettings = getElementSettings( $scope ),
$arrow_next = ( 'undefined' !== typeof elementSettings.select_arrow ) ? elementSettings.select_arrow.value : '',
$arrow_prev = ( $arrow_next !== undefined ) ? $arrow_next.replace( 'right', 'left' ) : '',
scrollableNav = elementSettings.scrollable_nav,
previewPosition = elementSettings.preview_position,
stackOn = elementSettings.preview_stack,
elementorBreakpoints = elementorFrontend.config.breakpoints;
$carousel.slick({
slidesToShow: 1,
slidesToScroll: 1,
autoplay: 'yes' === elementSettings.autoplay,
autoplaySpeed: elementSettings.autoplay_speed,
arrows: 'yes' === elementSettings.arrows,
prevArrow: '<div class="pp-slider-arrow pp-arrow pp-arrow-prev"><i class="' + $arrow_prev + '"></i></div>',
nextArrow: '<div class="pp-slider-arrow pp-arrow pp-arrow-next"><i class="' + $arrow_next + '"></i></div>',
dots: 'yes' === elementSettings.dots,
fade: 'fade' === elementSettings.effect,
speed: elementSettings.animation_speed,
infinite: 'yes' === elementSettings.infinite_loop,
pauseOnHover: 'yes' === elementSettings.pause_on_hover,
adaptiveHeight: 'yes' === elementSettings.adaptive_height,
rtl: 'yes' === $rtl,
asNavFor: ( scrollableNav === 'yes' ) ? $nav_wrap : ''
});
$carousel.slick( 'setPosition' );
if ( scrollableNav === 'yes' ) {
$nav_wrap.slick({
slidesToShow: ( elementSettings.nav_items !== undefined && elementSettings.nav_items !== '' ) ? parseInt( elementSettings.nav_items , 10) : 5,
slidesToScroll: 1,
asNavFor: $carousel,
arrows: false,
dots: false,
infinite: 'yes' === elementSettings.infinite_loop,
focusOnSelect: true,
vertical: (previewPosition === 'top' || previewPosition === 'bottom') ? false : true,
centerMode: 'yes' === elementSettings.nav_center_mode,
centerPadding: '0px',
responsive: [
{
breakpoint: elementorBreakpoints.lg,
settings: {
slidesToShow: ( elementSettings.nav_items_tablet !== undefined && elementSettings.nav_items_tablet !== '' ) ? parseInt( elementSettings.nav_items_tablet, 10 ) : 3,
slidesToScroll: 1,
vertical: (stackOn === 'tablet') ? false : true
}
},
{
breakpoint: elementorBreakpoints.md,
settings: {
slidesToShow: ( elementSettings.nav_items_mobile !== undefined && elementSettings.nav_items_mobile !== '' ) ? parseInt( elementSettings.nav_items_mobile, 10 ) : 2,
slidesToScroll: 1,
vertical: false
}
}
]
});
} else {
$nav.removeClass('pp-active-slide');
$nav.eq(0).addClass('pp-active-slide');
$carousel.on('beforeChange', function ( event, slick, currentSlide, nextSlide ) {
currentSlide = nextSlide;
$nav.removeClass('pp-active-slide');
$nav.eq( currentSlide ).addClass('pp-active-slide');
});
$nav.each( function( currentSlide ) {
$(this).on( 'click', function ( e ) {
e.preventDefault();
$carousel.slick( 'slickGoTo', currentSlide );
});
});
}
ppWidgetUpdate( $carousel, '.pp-showcase', 'slick' );
if ( isEditMode ) {
$slider_wrap.resize( function() {
$carousel.slick( 'setPosition' );
});
}
var $lightbox_selector = '.slick-slide:not(.slick-cloned) .pp-showcase-item-link[data-fancybox="' + showcaseId + '"]';
$($lightbox_selector).fancybox({
loop: true
});
$video_play.off( 'click' ).on( 'click', function( e ) {
e.preventDefault();
var $video_player = $( this ).find( '.pp-video-player' );
PPVideo._play( $video_player );
});
};
var TimelineHandler = function ( $scope, $ ) {
var $carousel = $scope.find( '.pp-timeline-horizontal .pp-timeline-items' ).eq( 0 ),
$slider_wrap = $scope.find( '.pp-timeline-wrapper' ),
$rtl = $slider_wrap.data( 'rtl' ),
$slider_nav = $scope.find( '.pp-timeline-navigation' ),
elementSettings = getElementSettings( $scope ),
$arrow_next = elementSettings.arrow,
$arrow_prev = ( $arrow_next !== undefined ) ? $arrow_next.replace( 'right', 'left' ) : '',
$items = ( elementSettings.columns !== undefined && elementSettings.columns !== '' ) ? parseInt( elementSettings.columns, 10 ) : 3,
$items_tablet = ( elementSettings.columns_tablet !== undefined && elementSettings.columns_tablet !== '' ) ? parseInt( elementSettings.columns_tablet, 10 ) : 2,
$items_mobile = ( elementSettings.columns_mobile !== undefined && elementSettings.columns_mobile !== '' ) ? parseInt( elementSettings.columns_mobile, 10 ) : 1,
slidesToScroll = ( elementSettings.slides_to_scroll !== undefined && elementSettings.slides_to_scroll !== '' ) ? parseInt( elementSettings.slides_to_scroll, 10 ) : 3,
slidesToScrollTablet = ( elementSettings.slides_to_scroll_tablet !== undefined && elementSettings.slides_to_scroll_tablet !== '' ) ? parseInt( elementSettings.slides_to_scroll_tablet, 10 ) : 2,
slidesToScrollMobile = ( elementSettings.slides_to_scroll_mobile !== undefined && elementSettings.slides_to_scroll_mobile !== '' ) ? parseInt( elementSettings.slides_to_scroll_mobile, 10 ) : 1,
elementorBreakpoints = elementorFrontend.config.breakpoints;
if ( elementSettings.layout === 'horizontal' ) {
var $center_mode = false;
if ( 'yes' === elementSettings.infinite_loop && 'yes' === elementSettings.center_mode ) {
$center_mode = true;
}
$carousel.slick({
slidesToShow: $items,
slidesToScroll: slidesToScroll,
autoplay: 'yes' === elementSettings.autoplay,
autoplaySpeed: elementSettings.autoplay_speed,
arrows: false,
pauseOnHover: 'yes' === elementSettings.pause_on_hover,
pauseOnFocus: 'yes' === elementSettings.pause_on_hover,
dots: 'yes' === elementSettings.dots,
centerMode: $center_mode,
speed: elementSettings.animation_speed,
infinite: 'yes' === elementSettings.infinite_loop,
rtl: 'yes' === $rtl,
asNavFor: $slider_nav,
responsive: [
{
breakpoint: elementorBreakpoints.lg,
settings: {
slidesToShow: $items_tablet,
slidesToScroll: slidesToScrollTablet
}
},
{
breakpoint: elementorBreakpoints.md,
settings: {
slidesToShow: $items_mobile,
slidesToScroll: slidesToScrollMobile
}
}
]
});
$slider_nav.slick({
slidesToShow: $items,
slidesToScroll: slidesToScroll,
autoplay: 'yes' === elementSettings.autoplay,
autoplaySpeed: elementSettings.autoplay_speed,
asNavFor: $carousel,
arrows: 'yes' === elementSettings.arrows,
pauseOnHover: 'yes' === elementSettings.pause_on_hover,
pauseOnFocus: 'yes' === elementSettings.pause_on_hover,
prevArrow: '<div class="pp-slider-arrow pp-arrow pp-arrow-prev"><i class="' + $arrow_prev + '"></i></div>',
nextArrow: '<div class="pp-slider-arrow pp-arrow pp-arrow-next"><i class="' + $arrow_next + '"></i></div>',
centerMode: 'yes' === elementSettings.center_mode,
infinite: 'yes' === elementSettings.infinite_loop,
rtl: 'yes' === $rtl,
focusOnSelect: true,
responsive: [
{
breakpoint: elementorBreakpoints.lg,
settings: {
slidesToShow: $items_tablet,
slidesToScroll: slidesToScrollTablet
}
},
{
breakpoint: elementorBreakpoints.md,
settings: {
slidesToShow: $items_mobile,
slidesToScroll: slidesToScrollMobile
}
}
]
});
$carousel.slick( 'setPosition' );
if ( isEditMode ) {
$slider_wrap.resize( function() {
$carousel.slick( 'setPosition' );
});
}
// When user hover then pause and after hover start Slider.
if ( 'yes' === elementSettings.pause_on_hover ) {
$scope.find( '.pp-timeline-card' ).mouseover(function() {
$carousel.slick( 'slickPause' );
$slider_nav.slick( 'slickPause' );
});
$scope.find( '.pp-timeline-card' ).mouseleave(function() {
$carousel.slick( 'slickPlay' );
$slider_nav.slick( 'slickPlay' );
});
}
ppWidgetUpdate( $carousel, '.pp-timeline-horizontal .pp-timeline-items', 'slick' );
ppWidgetUpdate( $slider_nav, '.pp-timeline-navigation', 'slick' );
}
// PPTimeline
var settings = {};
if ( isEditMode ) {
settings.window = elementor.$previewContents;
}
var timeline = new PPTimeline( settings, $scope );
};
var ImageAccordionHandler = function ($scope, $) {
var imageAccordion = $scope.find('.pp-image-accordion').eq(0),
elementSettings = getElementSettings( $scope ),
$action = elementSettings.accordion_action,
$id = imageAccordion.attr( 'id' ),
$item = $('#'+ $id +' .pp-image-accordion-item');
if ( 'on-hover' === $action ) {
$item.hover(
function ImageAccordionHover() {
$item.css('flex', '1');
$item.removeClass('pp-image-accordion-active');
$(this).addClass('pp-image-accordion-active');
$item.find('.pp-image-accordion-content-wrap').removeClass('pp-image-accordion-content-active');
$(this).find('.pp-image-accordion-content-wrap').addClass('pp-image-accordion-content-active');
$(this).css('flex', '3');
},
function() {
$item.css('flex', '1');
$item.find('.pp-image-accordion-content-wrap').removeClass('pp-image-accordion-content-active');
$item.removeClass('pp-image-accordion-active');
}
);
}
else if ( 'on-click' === $action ) {
$item.click( function(e) {
e.stopPropagation(); // when you click the button, it stops the page from seeing it as clicking the body too
$item.css('flex', '1');
$item.removeClass('pp-image-accordion-active');
$(this).addClass('pp-image-accordion-active');
$item.find('.pp-image-accordion-content-wrap').removeClass('pp-image-accordion-content-active');
$(this).find('.pp-image-accordion-content-wrap').addClass('pp-image-accordion-content-active');
$(this).css('flex', '3');
});
$('#'+ $id).click( function(e) {
e.stopPropagation(); // when you click within the content area, it stops the page from seeing it as clicking the body too
});
$('body').click( function() {
$item.css('flex', '1');
$item.find('.pp-image-accordion-content-wrap').removeClass('pp-image-accordion-content-active');
$item.removeClass('pp-image-accordion-active');
});
}
};
var AdvancedAccordionHandler = function ($scope, $) {
var accordionTitle = $scope.find('.pp-accordion-tab-title'),
elementSettings = getElementSettings( $scope ),
accordionType = elementSettings.accordion_type,
accordionSpeed = elementSettings.toggle_speed;
// Open default actived tab
accordionTitle.each(function(){
if ( $(this).hasClass('pp-accordion-tab-active-default') ) {
$(this).addClass('pp-accordion-tab-show pp-accordion-tab-active');
$(this).next().slideDown(accordionSpeed);
}
});
// Remove multiple click event for nested accordion
accordionTitle.unbind('click');
accordionTitle.click(function(e) {
e.preventDefault();
var $this = $(this),
$item = $this.parent();
$(document).trigger('ppe-accordion-switched', [ $item ]);
if ( accordionType === 'accordion' ) {
if ( $this.hasClass('pp-accordion-tab-show') ) {
$this.closest('.pp-accordion-item').removeClass('pp-accordion-item-active');
$this.removeClass('pp-accordion-tab-show pp-accordion-tab-active');
$this.next().slideUp(accordionSpeed);
} else {
$this.closest('.pp-advanced-accordion').find('.pp-accordion-item').removeClass('pp-accordion-item-active');
$this.closest('.pp-advanced-accordion').find('.pp-accordion-tab-title').removeClass('pp-accordion-tab-show pp-accordion-tab-active');
$this.closest('.pp-advanced-accordion').find('.pp-accordion-tab-title').removeClass('pp-accordion-tab-active-default');
$this.closest('.pp-advanced-accordion').find('.pp-accordion-tab-content').slideUp(accordionSpeed);
$this.toggleClass('pp-accordion-tab-show pp-accordion-tab-active');
$this.closest('.pp-accordion-item').toggleClass('pp-accordion-item-active');
$this.next().slideToggle(accordionSpeed);
}
} else {
// For acccordion type 'toggle'
if ( $this.hasClass('pp-accordion-tab-show') ) {
$this.removeClass('pp-accordion-tab-show pp-accordion-tab-active');
$this.next().slideUp(accordionSpeed);
} else {
$this.addClass('pp-accordion-tab-show pp-accordion-tab-active');
$this.next().slideDown(accordionSpeed);
}
}
});
};
var MagazineSliderHandler = function ( $scope, $ ) {
var carousel = $scope.find( '.pp-magazine-slider' ).eq( 0 ),
carouselWrap = $scope.find( '.pp-magazine-slider-wrap' ),
sliderOptions = carousel.data( 'slider-settings' ),
elementSettings = getElementSettings( $scope );
ppSwiperSliderinit(carousel, carouselWrap, elementSettings, sliderOptions);
};
var VideoHandler = function ($scope, $) {
var outerWrap = $scope.find( '.pp-video' ),
videoPlay = $scope.find( '.pp-video-play' ),
isLightbox = videoPlay.hasClass( 'pp-video-play-lightbox' );
videoPlay.off( 'click' ).on( 'click', function( e ) {
e.preventDefault();
var $selector = $( this ).find( '.pp-video-player' );
if( ! isLightbox ) {
PPVideo._play( $selector, outerWrap );
}
});
if ( videoPlay.data( 'autoplay' ) == '1' && ! isLightbox ) {
PPVideo._play( $scope.find( '.pp-video-player' ), outerWrap );
}
};
var VideoGalleryHandler = function ($scope, $) {
var $gallery = $scope.find('.pp-video-gallery').eq(0),
elementSettings = getElementSettings( $scope ),
videoPlay = $scope.find( '.pp-video-play' ),
$action = $gallery.data( 'action' );
if ( $action === 'inline') {
videoPlay.off( 'click' ).on( 'click', function( e ) {
e.preventDefault();
var $iframe = $( '<iframe/>' ),
$vid_src = $( this ).data( 'src' ),
$player = $( this ).find( '.pp-video-player' );
$iframe.attr( 'src', $vid_src );
$iframe.attr( 'frameborder', '0' );
$iframe.attr( 'allowfullscreen', '1' );
$iframe.attr( 'allow', 'autoplay;encrypted-media;' );
$player.html( $iframe );
});
}
if ( ! isEditMode ) {
if ( elementSettings.layout === 'grid' ) {
if ( $gallery.hasClass('pp-video-gallery-filter-enabled') ) {
var $isotope_args = {
itemSelector : '.pp-grid-item-wrap',
layoutMode : 'fitRows',
percentPosition : true
},
$isotope_gallery = {};
$scope.imagesLoaded( function() {
$isotope_gallery = $gallery.isotope( $isotope_args );
});
$scope.on( 'click', '.pp-gallery-filter', function() {
var $this = $(this),
filterValue = $this.attr('data-filter');
$this.siblings().removeClass('pp-active');
$this.addClass('pp-active');
$isotope_gallery.isotope({ filter: filterValue });
});
}
}
}
if ( $action === 'lightbox') {
$.fancybox.defaults.media.dailymotion = {
matcher : /dailymotion.com\/video\/(.*)\/?(.*)/,
params : {
additionalInfos : 0,
autoStart : 1
},
type : 'iframe',
url : '//www.dailymotion.com/embed/video/$1'
};
}
if ( elementSettings.layout === 'carousel' ) {
var carouselWrap = $scope.find('.pp-video-gallery-wrapper').eq(0),
carousel = $scope.find('.pp-video-gallery').eq(0),
sliderOptions = JSON.parse( carouselWrap.attr('data-slider-settings') );
ppSwiperSliderinit(carousel, carouselWrap, elementSettings, sliderOptions);
}
};
var AlbumHandler = function ($scope, $) {
var $album = $scope.find('.pp-album').eq(0),
$id = $album.data('id'),
fancyboxThumbs = $album.data('fancybox-class'),
fancyboxAxis = $album.data('fancybox-axis'),
elementSettings = getElementSettings( $scope ),
lightboxSelector = '[data-fancybox="'+$id+'"]';
if ( elementSettings.lightbox_library === 'fancybox' ) {
$(lightboxSelector).fancybox({
loop: 'yes' === elementSettings.loop,
arrows: 'yes' === elementSettings.arrows,
infobar: 'yes' === elementSettings.slides_counter,
keyboard: 'yes' === elementSettings.keyboard,
toolbar: 'yes' === elementSettings.toolbar,
buttons: elementSettings.toolbar_buttons,
animationEffect: elementSettings.lightbox_animation,
transitionEffect: elementSettings.transition_effect,
baseClass: fancyboxThumbs,
thumbs: {
autoStart: 'yes' === elementSettings.thumbs_auto_start,
axis: fancyboxAxis
}
});
}
};
var TestimonialsCarouselHandler = function ( $scope, $ ) {
var $testimonials = $scope.find( '.pp-testimonials' ).eq( 0 ),
testimonialsWrap = $scope.find( '.pp-testimonials-wrap' ),
testimonialsLayout = $testimonials.data( 'layout' );
if ( testimonialsLayout === 'carousel' || testimonialsLayout === 'slideshow' ) {
var $slider_options = JSON.parse( $testimonials.attr('data-slider-settings') ),
$thumbs_nav = $scope.find( '.pp-testimonials-thumb-item-wrap' ),
elementSettings = getElementSettings( $scope );
$testimonials.slick( $slider_options );
if ( testimonialsLayout === 'slideshow' && elementSettings.thumbnail_nav === 'yes' ) {
$thumbs_nav.removeClass('pp-active-slide');
$thumbs_nav.eq(0).addClass('pp-active-slide');
$testimonials.on('beforeChange', function ( event, slick, currentSlide, nextSlide ) {
currentSlide = nextSlide;
$thumbs_nav.removeClass('pp-active-slide');
$thumbs_nav.eq( currentSlide ).addClass('pp-active-slide');
});
$thumbs_nav.each( function( currentSlide ) {
$(this).on( 'click', function ( e ) {
e.preventDefault();
$testimonials.slick( 'slickGoTo', currentSlide );
});
});
}
$testimonials.slick( 'setPosition' );
ppWidgetUpdate( $testimonials, '.pp-testimonials', 'slick' );
if ( isEditMode ) {
testimonialsWrap.resize( function() {
$testimonials.slick( 'setPosition' );
});
}
}
};
var ImageScrollHandler = function($scope) {
var elementSettings = getElementSettings( $scope ),
scrollElement = $scope.find('.pp-image-scroll-container'),
scrollOverlay = scrollElement.find('.pp-image-scroll-overlay'),
scrollVertical = scrollElement.find('.pp-image-scroll-vertical'),
imageScroll = scrollElement.find('.pp-image-scroll-image img'),
direction = elementSettings.direction_type,
reverse = elementSettings.reverse,
trigger = elementSettings.trigger_type,
transformOffset = null;
function startTransform() {
imageScroll.css('transform', (direction === 'vertical' ? 'translateY' : 'translateX') + '( -' + transformOffset + 'px)');
}
function endTransform() {
imageScroll.css('transform', (direction === 'vertical' ? 'translateY' : 'translateX') + '(0px)');
}
function setTransform() {
if( direction === 'vertical' ) {
transformOffset = imageScroll.height() - scrollElement.height();
} else {
transformOffset = imageScroll.width() - scrollElement.width();
}
}
if ( trigger === 'scroll' ) {
scrollElement.addClass('pp-container-scroll');
if ( direction === 'vertical' ) {
scrollVertical.addClass('pp-image-scroll-ver');
} else {
scrollElement.imagesLoaded(function() {
scrollOverlay.css( { 'width': imageScroll.width(), 'height': imageScroll.height() } );
});
}
} else {
if ( reverse === 'yes' ) {
scrollElement.imagesLoaded(function() {
scrollElement.addClass('pp-container-scroll-instant');
setTransform();
startTransform();
});
}
if ( direction === 'vertical' ) {
scrollVertical.removeClass('pp-image-scroll-ver');
}
scrollElement.mouseenter(function() {
scrollElement.removeClass('pp-container-scroll-instant');
setTransform();
reverse === 'yes' ? endTransform() : startTransform();
});
scrollElement.mouseleave(function() {
reverse === 'yes' ? startTransform() : endTransform();
});
}
};
var TwitterTimelineHandler = function ($scope, $) {
$(document).ready(function () {
if ('undefined' !== twttr) {
twttr.widgets.load();
}
});
};
var TabbedGalleryHandler = function ( $scope, $ ) {
var $carousel = $scope.find( '.pp-tabbed-carousel' ).eq( 0 ),
$slider_id = $carousel.attr( 'id' ),
$carousel_settings = $carousel.data('slider-settings'),
$slider_wrap = $scope.find( '.pp-tabbed-gallery-wrapper' ),
$tabs_nav = $scope.find( '.pp-gallery-filters .pp-gallery-filter' );
$carousel.slick( $carousel_settings );
$carousel.slick( 'setPosition' );
$tabs_nav.removeClass('pp-active-slide');
$tabs_nav.eq(0).addClass('pp-active-slide');
$carousel.on('beforeChange', function ( event, slick, currentSlide, nextSlide ) {
var $tab_group_c = $tabs_nav.eq( currentSlide ).data('group'),
$tab_group_n = $tabs_nav.eq( nextSlide ).data('group');
if ( $tab_group_c !== $tab_group_n ) {
$tabs_nav.removeClass('pp-active-slide');
var $group = $tabs_nav.eq( nextSlide ).data('group');
$tabs_nav.filter('[data-group="' + $group + '"]').addClass('pp-active-slide');
}
});
$tabs_nav.each( function() {
$(this).on( 'click', function ( e ) {
var $current_slide = $(this).data('index');
e.preventDefault();
$carousel.slick( 'slickGoTo', $current_slide );
});
});
if ( isEditMode ) {
$slider_wrap.resize( function() {
$carousel.slick( 'setPosition' );
});
}
var $lightbox_selector = '.slick-slide:not(.slick-cloned) .pp-image-slider-slide-link[data-fancybox="'+$slider_id+'"]';
$($lightbox_selector).fancybox({
loop: true
});
};
var CouponsHandler = function ($scope) {
var elementSettings = getElementSettings( $scope );
if ( 'carousel' === elementSettings.layout ) {
var carouselWrap = $scope.find('.swiper-container-wrap').eq(0),
carousel = carouselWrap.find('.pp-coupons-carousel'),
sliderOptions = JSON.parse( carouselWrap.attr('data-slider-settings') );
ppSwiperSliderinit(carousel, carouselWrap, elementSettings, sliderOptions);
}
$scope.find('.pp-coupon-wrap').each(function () {
var couponCode = $(this).find('.pp-coupon-code').attr('data-coupon-code');
$(this).find('.pp-coupon-code').not('.pp-copied').on('click', function(){
var clicked = $(this);
var tempInput = '<input type="text" value="' + couponCode + '" id="ppCouponInput">';
clicked.append(tempInput);
var copyText = document.getElementById('ppCouponInput');
copyText.select();
document.execCommand('copy');
$('#ppCouponInput').remove();
if ('copy' === elementSettings.coupon_style) {
clicked.addClass('pp-copied');
clicked.find('.pp-coupon-copy-text').fadeOut().text('Copied').fadeIn();
} else {
clicked.find('.pp-coupon-reveal-wrap').css({
'transform': 'translate(200px, 0px)'
});
setTimeout(function () {
clicked.find('.pp-coupon-code-text-wrap').removeClass('pp-unreavel');
clicked.find('.pp-coupon-code-text').text(couponCode);
clicked.find('.pp-coupon-reveal-wrap').remove();
}, 150);
setTimeout(function () {
clicked.addClass('pp-copied');
clicked.find('.pp-coupon-copy-text').fadeOut().text('Copied').fadeIn();
}, 500);
}
});
});
};
var CategoriesHandler = function ($scope, $) {
var elementSettings = getElementSettings( $scope ),
catBoxWrap = $scope.find('.pp-category-wrap'),
catBox = catBoxWrap.find('.pp-category'),
list = $scope.find('.pp-categories-list > ul'),
skin = elementSettings.skin,
tree = elementSettings.list_tree,
style = elementSettings.list_tree_style;
if ('list' === skin && 'yes' === tree) {
if ('plus_circle' === style) {
list.treed();
}
else if ('caret' === style) {
list.treed({ openedClass: 'fa-caret-down', closedClass: 'fa-caret-right' });
}
else if ('plus' === style) {
list.treed({ openedClass: 'fa-minus', closedClass: 'fa-plus' });
}
else if ('folder' === style) {
list.treed({ openedClass: 'fa-folder-open', closedClass: 'fa-folder' });
}
}
if ( elementSettings.equal_height === 'yes' ) {
var highestBox = 0;
catBoxWrap.each(function () {
if ( $( this ).outerHeight() > highestBox) {
highestBox = $( this ).outerHeight();
}
});
catBox.css( 'height', highestBox+'px' );
}
if ( 'carousel' === elementSettings.layout ) {
var carouselWrap = $scope.find('.swiper-container-wrap').eq(0),
carousel = carouselWrap.find('.pp-categories-carousel'),
sliderOptions = JSON.parse( carouselWrap.attr('data-slider-settings') );
ppSwiperSliderinit(carousel, carouselWrap, elementSettings, sliderOptions);
}
};
var GFormsHandler = function( $scope, $ ) {
if ( 'undefined' === typeof $scope ) {
return;
}
$scope.find('select:not([multiple])').each(function() {
var gf_select_field = $( this );
if( gf_select_field.next().hasClass('chosen-container') ) {
gf_select_field.next().wrap( '<span class="pp-gf-select-custom"></span>' );
} else {
gf_select_field.wrap( '<span class="pp-gf-select-custom"></span>' );
}
});
};
var SitemapHandler = function( $scope ) {
var elementSettings = getElementSettings($scope),
list = $scope.find('.pp-sitemap-list'),
tree = elementSettings.sitemap_tree,
style = elementSettings.sitemap_tree_style;
if ( 'yes' === tree ) {
if ( 'plus_circle' === style ) {
list.treed();
}
else if ( 'caret' === style ) {
list.treed({ openedClass: 'fa-caret-down', closedClass: 'fa-caret-right' });
}
else if ( 'plus' === style ) {
list.treed({ openedClass: 'fa-minus', closedClass: 'fa-plus' });
}
else if ( 'folder' === style ) {
list.treed({ openedClass: 'fa-folder-open', closedClass: 'fa-folder' });
}
}
}
var BreadcrumbsHandler = function( $scope ) {
var elementSettings = getElementSettings( $scope ),
breadcrumbsType = elementSettings.breadcrumbs_type;
if ( breadcrumbsType !== 'powerpack' ) {
$scope.find('.pp-breadcrumbs a' ).parent().css({'padding' : '0', 'background-color' : 'transparent', 'border' : '0', 'margin' : '0', 'box-shadow' : 'none'});
}
if ( breadcrumbsType === 'yoast' || breadcrumbsType === 'rankmath' ) {
$scope.find('.pp-breadcrumbs a' ).parent().parent().css({'padding' : '0', 'background-color' : 'transparent', 'border' : '0', 'margin' : '0', 'box-shadow' : 'none'});
}
}
var LoginHandler = function( $scope, $ ) {
var LoginForm = $scope.find('.pp-login-form'),
LoginFormWrap = $scope.find('.pp-login-form-wrap'),
pageUrl = LoginFormWrap.data('page-url'),
elementSettings = getElementSettings( $scope ),
fbButton = $scope.find( '.pp-fb-login-button' ),
fbAppId = fbButton.data( 'appid' ),
googleButton = $scope.find( '.pp-google-login-button' ),
googleClientId = googleButton.data( 'clientid' );
if ( $(LoginForm).length > 0 ) {
new PPLoginForm($scope, elementSettings, {
id: $scope.data('id'),
messages: {
empty_username: ppLogin.empty_username,
empty_password: ppLogin.empty_password,
empty_password_1: ppLogin.empty_password_1,
empty_password_2: ppLogin.empty_password_2,
empty_recaptcha: ppLogin.empty_recaptcha,
email_sent: ppLogin.email_sent,
reset_success: ppLogin.reset_success,
},
page_url: pageUrl,
facebook_login: ( 'yes' === elementSettings.facebook_login ) ? 'true' : 'false',
facebook_app_id: fbAppId,
facebook_sdk_url: '',
google_login: ( 'yes' === elementSettings.google_login ) ? 'true' : 'false',
enable_recaptcha: ( 'yes' === elementSettings.enable_recaptcha ) ? 'true' : 'false',
google_client_id: googleClientId,
});
}
}
var PricingTableHandler = function( $scope, $ ) {
var id = $scope.data('id'),
toolTopElm = $scope.find('.pp-pricing-table-tooptip[data-tooltip]'),
elementSettings = getElementSettings( $scope ),
ppclass = 'pp-tooltip' + ' pp-tooltip-' + id,
ttArrow = elementSettings.tooltip_arrow,
ttTrigger = elementSettings.tooltip_trigger,
animation = elementSettings.tooltip_animation,
tooltipSize = elementSettings.tooltip_size,
tooltipZindex = elementSettings.tooltip_zindex,
elementorBreakpoints = elementorFrontend.config.breakpoints;
if ( '' !== tooltipSize && undefined !== tooltipSize ) {
ppclass += ' pp-tooltip-size-' + tooltipSize;
}
toolTopElm.each(function () {
var ttPosition = $(this).data('tooltip-position'),
minWidth = $(this).data('tooltip-width'),
ttDistance = $(this).data('tooltip-distance');
// tablet
if ( window.innerWidth <= elementorBreakpoints.lg && window.innerWidth >= elementorBreakpoints.md ) {
ttPosition = $scope.find('.pp-pricing-table-tooptip[data-tooltip]').data('tooltip-position-tablet');
}
// mobile
if ( window.innerWidth < elementorBreakpoints.md ) {
ttPosition = $scope.find('.pp-pricing-table-tooptip[data-tooltip]').data('tooltip-position-mobile');
}
$( this ).pptooltipster({
trigger : ttTrigger,
animation : animation,
minWidth: minWidth,
ppclass : ppclass,
side : ttPosition,
arrow : ( 'yes' === ttArrow ),
distance : ttDistance,
interactive : true,
positionTracker : true,
zIndex : tooltipZindex,
});
});
}
var RegistrationHandler = function( $scope, $ ) {
var registration_form = $scope.find('.pp-registration-form'),
elementSettings = getElementSettings( $scope );
if ( $(registration_form).length > 0 ) {
new PPRegistrationForm($scope, {
id: $scope.data('id'),
min_pass_length: registration_form.data('password-length'),
pws_meter: ('yes' === elementSettings.enable_pws_meter),
i18n: {
messages: {
error: {
invalid_username: ppRegistration.invalid_username,
username_exists: ppRegistration.username_exists,
empty_email: ppRegistration.empty_email,
invalid_email: ppRegistration.invalid_email,
email_exists: ppRegistration.email_exists,
password: ppRegistration.password,
password_length: ppRegistration.password_length,
password_mismatch: ppRegistration.password_mismatch,
invalid_url: ppRegistration.invalid_url,
recaptcha_php_ver: ppRegistration.recaptcha_php_ver,
recaptcha_missing_key: ppRegistration.recaptcha_missing_key,
},
success: elementSettings.success_message,
},
pw_toggle_text: {
show: ppRegistration.show_password,
hide: ppRegistration.hide_password,
},
},
ajaxurl: ppRegistration.ajax_url
});
}
}
$(window).on('elementor/frontend/init', function () {
if ( elementorFrontend.isEditMode() ) {
isEditMode = true;
}
var widgets = {
'pp-image-hotspots.default': ImageHotspotHandler,
'pp-image-comparison.default': ImageComparisonHandler,
'pp-counter.default': CounterHandler,
'pp-logo-carousel.default': ppSwiperSliderHandler,
'pp-info-box-carousel.default': InfoBoxCarouselHandler,
'pp-instafeed.default': InstaFeedHandler,
'pp-team-member-carousel.default': ppSwiperSliderHandler,
'pp-modal-popup.default': ModalPopupHandler,
'pp-table.default': TableHandler,
'pp-toggle.default': ToggleHandler,
'pp-countdown.default': PPCountdownHandler,
'pp-image-gallery.default': ImageGalleryHandler,
'pp-image-slider.default': ImageSliderHandler,
'pp-advanced-menu.default': AdvancedMenuHandler,
'pp-advanced-tabs.default': AdvancedTabsHandler,
'pp-offcanvas-content.default': OffCanvasContentHandler,
'pp-buttons.default': PPButtonHandler,
'pp-showcase.default': ShowcaseHandler,
'pp-timeline.default': TimelineHandler,
'pp-card-slider.default': ppSwiperSliderHandler,
'pp-image-accordion.default': ImageAccordionHandler,
'pp-advanced-accordion.default': AdvancedAccordionHandler,
'pp-content-ticker.default': ppSwiperSliderHandler,
'pp-magazine-slider.default': MagazineSliderHandler,
'pp-video.default': VideoHandler,
'pp-video-gallery.default': VideoGalleryHandler,
'pp-testimonials.default': TestimonialsCarouselHandler,
'pp-scroll-image.default': ImageScrollHandler,
'pp-album.default': AlbumHandler,
'pp-twitter-timeline.default': TwitterTimelineHandler,
'pp-twitter-tweet.default': TwitterTimelineHandler,
'pp-tabbed-gallery.default': TabbedGalleryHandler,
'pp-faq.default': AdvancedAccordionHandler,
'pp-coupons.default': CouponsHandler,
'pp-categories.default': CategoriesHandler,
'pp-gravity-forms.default': GFormsHandler,
'pp-sitemap.default': SitemapHandler,
'pp-breadcrumbs.default': BreadcrumbsHandler,
'pp-login-form.default': LoginHandler,
'pp-registration-form.default': RegistrationHandler,
'pp-pricing-table.default': PricingTableHandler,
};
$.each( widgets, function( widget, callback ) {
elementorFrontend.hooks.addAction( 'frontend/element_ready/' + widget, callback );
});
});
}(jQuery));