';
//jEle.find('.pagelayer-sitemap-section').html(html_element);
el.atts['sitemap_html'] = html_element;
}
});
}
};
// Render the fb button
function pagelayer_render_pl_fb_btn(el){
jEle = el.$;
if(el.atts['link_type'] == "current"){
el.atts['custom-url'] = pagelayer_post_permalink;
}
pagelayer_fb_apps(el.$);
};
// Render the fb embed
function pagelayer_render_pl_fb_embed(el){
pagelayer_fb_apps(el.$);
};
// Render the fb page
function pagelayer_render_pl_fb_page(el){
pagelayer_fb_apps(el.$);
};
// Render the fb comments
function pagelayer_render_pl_fb_comments(el){
jEle = el.$;
if(el.atts['link_type'] == "current"){
el.atts['custom-url'] = pagelayer_post_permalink;
}
pagelayer_fb_apps(el.$);
};
// Render the slides
function pagelayer_render_end_pl_slides(el){
pagelayer_owl_destroy(el.$, '.pagelayer-slides-holder');
pagelayer_pl_slides(el.$);
}
// Render the Single Review
function pagelayer_render_end_pl_review(el){
var jEle = el.$.find('.pagelayer-stars-container');
pagelayer_stars(jEle);
}
// Render the Review Slider
function pagelayer_render_end_pl_review_slider(el){
pagelayer_owl_destroy(el.$, '.pagelayer-reviews-holder');
pagelayer_reviews_slider(el.$);
}
// Render the template content
function pagelayer_render_pl_templates(el){
el.atts['template_content'] = '';
if( !pagelayer_empty(el.atts['templates']) ){
jQuery.ajax({
url: pagelayer_ajax_url+'&action=pagelayer_apply_revision&revisionID='+el.atts['templates'],
type: 'post',
data: {
pagelayer_nonce: pagelayer_ajax_nonce,
'pagelayer-live' : 1,
},
success: function(response, status, xhr){
var obj = jQuery.parseJSON(response);
if(obj['error']){
pagelayer_show_msg(obj['error'], 'error');
el.CSS.css.push({'sel': '{{element}} .pagelayer-template-content', 'val': 'min-height:20px;background-color:#e3e3e3;'});
}else{
el.$.find('.pagelayer-template-content').html(obj['content']);
var selector = el.$.find('.pagelayer-template-content .pagelayer-ele');
//pagelayer_element_setup(selector, true);
//selector.find('.pagelayer-ele-overlay').remove();
// Unwrap the wraps
if(selector.parent().is('.pagelayer-ele-wrap')){
selector.unwrap();
}
}
}
});
}else{
el.CSS.css.push({'sel': '{{element}} .pagelayer-template-content', 'val': 'min-height:20px;background-color:#e3e3e3;'});
}
}
/////////////////////////////
////WooCommerce Shortcode Js
/////////////////////////////
var product_data_timer = {};
function pagelayer_ajax_do_shortcodes(el, success){
var jEle = el.$;
var shortcode_data = pagelayer_generate_sc(jEle, true);
// Clear any previous timeout
clearTimeout(product_data_timer[el.id]);
// Set a timer for constant change
product_data_timer[el.id] = setTimeout(function(){
// Make the call
jQuery.ajax({
url: pagelayer_ajax_url+'&action=pagelayer_do_shortcodes',
type: 'POST',
data: {
pagelayer_nonce: pagelayer_ajax_nonce,
shortcode_data: shortcode_data
},
success: function(data){
if(typeof success == 'function'){
success(data);
return;
}
var container = jQuery(data).find(success);
if(container.length > 0){
data = container.html();
}
el.$.find(success).html(data);
}
});
}, 200);
}
// Render the product image
function pagelayer_render_pl_product_images(el){
el.atts['product_images_templ'] = '';
var success = function(data){
var container = jQuery(data).find('.pagelayer-product-images-container');
if(container.length > 0){
data = container.html();
}
el.$.find('.pagelayer-product-images-container').html(data);
jQuery(".woocommerce-product-gallery").each( function() {
jQuery(this).wc_product_gallery();
});
}
pagelayer_ajax_do_shortcodes(el, success);
}
// Render product price
function pagelayer_render_pl_product_price(el){
pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-price-container');
}
function pagelayer_render_pl_product_short_desc(el) {
pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-short-desc');
}
// Render product add to cart
function pagelayer_render_pl_add_to_cart(el){
pagelayer_ajax_do_shortcodes(el, '.pagelayer-add-to-cart-holder');
}
// Render product product meta
function pagelayer_render_pl_product_meta(el){
pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-meta');
}
// Render product product meta
function pagelayer_render_pl_product_addi_info(el){
pagelayer_ajax_do_shortcodes(el, '.pagelayer-addi-info-container');
}
// Render product product meta
function pagelayer_render_pl_product_data_tabs(el){
pagelayer_ajax_do_shortcodes(el, '.pagelayer-data-tabs-container');
}
// Render product product rating
function pagelayer_render_pl_product_rating(el){
pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-rating');
}
// Render the related product
function pagelayer_render_pl_product_related(el){
el.atts['related_products'] = '';
pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-related-container');
}
// Render the WooCommerce pages
function pagelayer_render_pl_woo_pages(el){
el.atts['page_content'] = '';
var shortcode ='';
// if is not empty
if( !pagelayer_empty(el.atts['pages']) ){
shortcode = '['+ el.atts['pages'] +']';
}
jQuery.ajax({
url: pagelayer_ajax_url+'&action=pagelayer_do_shortcodes',
type: 'post',
data: {
pagelayer_nonce: pagelayer_ajax_nonce,
shortcode_data: shortcode,
},
success: function(response){
// If the content is empty
if(pagelayer_empty(response)){
response = '
Content not found
';
}
// if is checkout page
if ( 'woocommerce_checkout' === el.atts['pages'] && '' == $content ) {
response = '
Your cart is currently empty.
';
}
el.$.find('.pagelayer-woo-pages-container').html(response);
}
});
}
// Render the WooCommerce pages
function pagelayer_render_pl_product_categories(el){
el.atts['product_categories'] = '';
// Clear any previous timeout
clearTimeout(product_data_timer[el.id]);
// Set a timer for constant change
product_data_timer[el.id] = setTimeout(function(){
jQuery.ajax({
url: pagelayer_ajax_url+'&action=pagelayer_product_categories',
type: 'post',
data: {
pagelayer_nonce: pagelayer_ajax_nonce,
atts: el.atts,
},
success: function(response){
el.$.find('.pagelayer-product-categories-container').html(response);
}
});
}, 200);
}
// Render the archive products
function pagelayer_render_pl_product_archives(el){
el.atts['product_archives'] = '';
pagelayer_ajax_do_shortcodes(el, '.pagelayer-product-archives-container');
}
// Render the products
function pagelayer_render_pl_products(el){
el.atts['products_content'] = '';
// Clear any previous timeout
clearTimeout(product_data_timer[el.id]);
// Set a timer for constant change
product_data_timer[el.id] = setTimeout(function(){
jQuery.ajax({
url: pagelayer_ajax_url+'&action=pagelayer_products_ajax',
type: 'post',
data: {
pagelayer_nonce: pagelayer_ajax_nonce,
atts: el.atts,
},
success: function(response){
el.$.find('.pagelayer-products-container').html(response);
}
});
}, 200);
}
// Render the products
function pagelayer_render_end_pl_woo_menu_cart(el){
var success = function(data){
var html = jQuery(data).find('.pagelayer-woo-menu-cart-container').html();
el.$.find('.pagelayer-woo-menu-cart-container').html(html);
pagelayer_woo_menu_cart(el.$);
}
pagelayer_ajax_do_shortcodes(el, success);
}
// Function to sticky the element on render, if sticky attr is set
pagelayer_add_action('pagelayer_sc_render_end', function(e, el){
// Is there any adding_attribute attribute then initialize in editor
if(el.atts['ele_attributes']){
pagelayer_add_attributes(el);
}
// Is there any scrolling effects then initialize in editor
if(el.atts['ele_scrolling_effects']){
pagelayer_scrolling_effects(el.$);
}
// Is there any mouse effects then initialize in editor
if(el.atts['ele_mouse_effects']){
pagelayer_mouse_effects(el.$);
}
//console.log(el);
if(pagelayer_empty(el.atts['ele_sticky_pos'])){return;}
// Do sticky the elemen
pagelayer_ele_sticky_handler(el.$);
});
// Adding Custom Attributes
var pagelayer_custom_attr = {};
function pagelayer_add_attributes(el){
// Remove all attributes first
if(el.id in pagelayer_custom_attr){
pagelayer_custom_attr[el.id].forEach(function(item, index){
el.$.removeAttr(item);
});
}
pagelayer_custom_attr[el.id] = [];
// Then create attributes
var val = pagelayer_trim(el.atts['ele_attributes'].split(';'));
val.forEach(function(item, index){
// Split from first equal only
var splitValue = item.split(/=(.*)/);
var attKey = pagelayer_trim(splitValue[0]);
pagelayer_custom_attr[el.id].push(attKey);
if(attKey.length < 1 || pagelayer_empty(attKey.match(/^[a-z_]+[\w:.-]*$/i))){
return;
}
if(splitValue.length < 2){
el.$.attr(attKey, '');
return;
}
el.$.attr(attKey, splitValue[1]);
});
}
// Function to always show Popup when editing the popup
pagelayer_add_action('pagelayer_setup_history', function(){
if(!('pagelayer_template_type' in pagelayer_post && pagelayer_post['pagelayer_template_type'] == 'popup')){
return;
}
jQuery(pagelayer_editable).wrap('
'+
'
'+
'
'+
'
'+
'
'+
'
');
pagelayer.$$('.pagelayer-settings-icon, .pagelayer-settings').attr('pagelayer-tag', 'pl_popup');
pagelayer.$$('.pagelayer-settings').click();
pagelayer_popup_setup(jQuery('[pagelayer-popup-editor="1"]'));
});
pagelayer_last_popup = {anim:'', close: ''};
// Render the pop-up
function pagelayer_render_end_pl_popup(el){
// If the anim is same dont render animation again
if(pagelayer_last_popup.anim == el.atts['popup_animation'] && pagelayer_last_popup.close == el.atts['popup_cbtn_position']){
return;
}
// Set the new type
pagelayer_last_popup.anim = el.atts['popup_animation'];
pagelayer_last_popup.close = el.atts['popup_cbtn_position'];
var modal = el.$.closest('.pagelayer-popup-modal');
if(modal.length > 0){
pagelayer_popup_setup(modal);
}
}
// Render the call to action widget
function pagelayer_render_pl_call(el){
el.tmp['cta_image-url'] = el.tmp['cta_image-url'] || el.atts['cta_image'];
}
//Render before after slider
function pagelayer_render_pl_before_after(el){
el.tmp['before_image-url'] = el.tmp['before_image-url'] || el.atts['before_image'];
el.tmp['after_image-url'] = el.tmp['after_image-url'] || el.atts['after_image'];
}
function pagelayer_render_end_pl_before_after(el){
pagelayer_before_after_slider(el.$);
}
// Render the image map
function pagelayer_render_pl_image_map(el){
el.atts['map_img_id'] = el.tmp['img_map-id-'+el.atts['img_map-size']+'-url'] || el.tmp['map_img-id-url'];
el.atts['map_img_id'] = el.atts['map_img_id'] || el.atts['map_img-id'];
el.atts['pagelayer-srcset'] = el.atts['map_img_id']+', '+el.atts['map_img_id']+' 1x, ';
if (el.atts['pagelayer_image_map']) {
el.atts['pagelayer_map_path'] = '';
for (const key in el.atts['pagelayer_image_map']) {
const data_cord = el.atts['pagelayer_image_map'][key]?.path || '';
const data_id = key;
const data_link = el.atts['pagelayer_image_map'][key]?.link || '';
el.atts['pagelayer_map_path'] += ``;
}
}
var image_atts = {
name : 'map_img-id',
size : 'img_map-size'
};
pagelayer_get_img_src(el, image_atts);
}
function pagelayer_render_end_pl_image_map(el){
// Re-render image maps
pagelayer_pl_image_map(el.$);
// Re-render image map handler
pagelayer_imgmap_handler(el.$);
}
// Image Map handler
function pagelayer_imgmap_handler(jEle){
var mapObj = pagelayer_get_att(jEle,'pagelayer_image_map') || {},
sEle = jEle.find('svg'),
cordWrap = jEle.find('.pagelayer-imgmap-coordinates-wraper'),
toolbar = jEle.find('.pagelayer-imgmap-toolbar'),
wrap = jEle.find('.pagelayer-imgmap-wrapper');
// Cords drag handler
var handle_cord_drag = function(jEle){
var cordEle = jEle.find('.pagelayer-imgmap-coord');
var isDragging = false;
const stopDragging = () => {
isDragging = false;
cordEle.removeClass('pagelayer-mapele-dragging').off('mouseup click');
jQuery(document).off('mouseup.imgmap');
};
cordEle.off('mousedown').on('mousedown', function (e) {
e.stopPropagation();
e.preventDefault();
if (jQuery(e.target).hasClass('pagelayer-imgmap-remove-cord')) return;
isDragging = true;
jQuery(this).addClass('pagelayer-mapele-dragging').mouseup(stopDragging).click(stopDragging);
jQuery(document).on('mouseup.imgmap', stopDragging);
sEle.off('mouseup mousemove');
sEle.mouseup(function(e){
isdragging = false;
});
sEle.mousemove(function (e) {
if (!isDragging) return;
const dragEle = jEle.find('.pagelayer-imgmap-coord.pagelayer-mapele-dragging');
if (!dragEle.length) return;
const xPer = ((e.offsetX / wrap.width()) * 100).toFixed(2);
const yPer = ((e.offsetY / wrap.height()) * 100).toFixed(2);
dragEle.css({ left: `${xPer}%`, top: `${yPer}%` });
update_active_element_coordinates(xPer, yPer, dragEle.data('id'));
});
});
}
// Update active element's coordinates
var update_active_element_coordinates = function(x, y, id){
const activeEle = jEle.find('.pagelayer-imgmap-item.pagelayer-map-item-active');
const coords = activeEle.attr('data-cord').split(',');
coords.splice(id * 2, 2, x, y);
activeEle.attr('data-cord', coords.join(','));
pagelayer_resize_imgmap(jEle);
};
// Delete cord handler
var cord_delete_handler = function(e){
e.stopPropagation();
const parent = jQuery(this).parent();
const cordPos = parent.attr('data-id');
const activeEle = sEle.find('.pagelayer-map-item-active');
const activeEleId = activeEle.attr('data-id');
// Remove coordinates
const cords = activeEle.attr('data-cord').split(',');
cords.splice(cordPos * 2, 2);
activeEle.attr('data-cord', cords.join(','));
parent.remove();
// Reindex coordinates and resize the image map
jEle.find(`.pl-cord-${activeEleId}`).each((index, elem) => {
jQuery(elem).attr('data-id', index);
});
pagelayer_resize_imgmap(jEle);
}
// Map items click handler
var handleClick = function(){
if(sEle.find('.pagelayer-map-item-active').length > 0){
return;
}
sEle.find('.pagelayer-map-item-active_is_editable').removeClass('pagelayer-map-item-active_is_editable')
var imageMapItem = jQuery(this).addClass('pagelayer-map-item-active_is_editable');
set_toolbar_editable(true, 'selected');
// Edit map item
toolbar.find('.pagelayer-map_edit').off('click').on('click', function (e){
e.preventDefault();
editItem(imageMapItem);
});
jEle.on('click.handleOutsideClick', function(event){
event.preventDefault();
if(sEle.find('.pagelayer-map-item-active').length > 0){
return;
}
if(!jQuery(event.target).hasClass('pagelayer-imgmap-item')){
imageMapItem.removeClass('pagelayer-map-item-active_is_editable');
set_toolbar_editable(false, 'selected');
set_toolbar_editable(false);
jEle.off('click.handleOutsideClick');
}
});
}
// Remove image map item
var remove_map_item = function(id){
if(id in mapObj) delete mapObj[id];
pagelayer_set_atts(jEle, 'pagelayer_image_map', mapObj);
handle_navigator(id, 'delete');
cordWrap.find('.pl-cord-'+id).remove();
jEle.find('.pagelayer-imgmap-item[data-id="'+id+'"]').remove();
}
// Edit Map Item
var editItem = function(imageMapItem){
setTimeout(() => {
set_toolbar_editable(true);
imageMapItem.removeClass('pagelayer-map-item-active_is_editable').addClass('pagelayer-map-item-active');
sEle.css('cursor', 'crosshair');
var updatedActId = imageMapItem.attr('data-id');
var link = (mapObj[updatedActId] && mapObj[updatedActId].link && mapObj[updatedActId].link.length > 0) ? mapObj[updatedActId].link : '';
if (link.length > 0) toolbar.find('.pagelayer-map_href').css('color', 'blue');
cordWrap.find(`.pl-cord-${updatedActId}`).show();
toolbar.find('.pagelayer-imgmap-toolbar-link input[type=text]').val(link);
handle_navigator(updatedActId, 'set_active');
handle_cord_drag(jEle);
cordWrap.find('.pagelayer-imgmap-remove-cord').off('click').on('click', cord_delete_handler);
}, 100);
}
// Add Toolbar
if(toolbar.length < 1){
var toolbarHtml = `