Current File : /home/quantums/bodyguardslosangeles.net/wp-content/plugins/embedpress/assets/js/instafeed.js |
/**
* @package EmbedPress
* @author EmbedPress <help@embedpress.com>
* @copyright Copyright (C) 2023 EmbedPress. All rights reserved.
* @license GPLv2 or later
* @since 1.7.0
*/
let instaGlobals = {};
(function ($) {
'use strict';
// Get the insta-gallery container element
const getPopupTemplate = (instPost) => {
let instaPostData = JSON.parse(instPost);
let likeIcon = '<svg aria-label="Like" class="x1lliihq x1n2onr6" color="#262626" fill="#262626" height="24" viewBox="0 0 24 24" width="24"><path d="M16.792 3.904A4.989 4.989 0 0 1 21.5 9.122c0 3.072-2.652 4.959-5.197 7.222-2.512 2.243-3.865 3.469-4.303 3.752-.477-.309-2.143-1.823-4.303-3.752C5.141 14.072 2.5 12.167 2.5 9.122a4.989 4.989 0 0 1 4.708-5.218 4.21 4.21 0 0 1 3.675 1.941c.84 1.175.98 1.763 1.12 1.763s.278-.588 1.11-1.766a4.17 4.17 0 0 1 3.679-1.938m0-2a6.04 6.04 0 0 0-4.797 2.127 6.052 6.052 0 0 0-4.787-2.127A6.985 6.985 0 0 0 .5 9.122c0 3.61 2.55 5.827 5.015 7.97.283.246.569.494.853.747l1.027.918a44.998 44.998 0 0 0 3.518 3.018 2 2 0 0 0 2.174 0 45.263 45.263 0 0 0 3.626-3.115l.922-.824c.293-.26.59-.519.885-.774 2.334-2.025 4.98-4.32 4.98-7.94a6.985 6.985 0 0 0-6.708-7.218Z"/></svg>';
if (instaPostData.like_count > 0) {
likeIcon = '<svg aria-label="Unlike" class="x1lliihq x1n2onr6" color="#FF3040" fill="#FF3040" height="24" viewBox="0 0 48 48" width="24"><path d="M34.6 3.1c-4.5 0-7.9 1.8-10.6 5.6-2.7-3.7-6.1-5.5-10.6-5.5C6 3.1 0 9.6 0 17.6c0 7.3 5.4 12 10.6 16.5.6.5 1.3 1.1 1.9 1.7l2.3 2c4.4 3.9 6.6 5.9 7.6 6.5.5.3 1.1.5 1.6.5s1.1-.2 1.6-.5c1-.6 2.8-2.2 7.8-6.8l2-1.8c.7-.6 1.3-1.2 2-1.7C42.7 29.6 48 25 48 17.6c0-8-6-14.5-13.4-14.5z"/></svg>';
}
const commentsIcon = '<svg aria-label="Comment" class="x1lliihq x1n2onr6" color="#000" height="24" viewBox="0 0 24 24" width="24"><path d="M20.656 17.008a9.993 9.993 0 1 0-3.59 3.615L22 22Z" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="2"/></svg>';
const shareIcon = '<svg aria-label="Share Post" class="x1lliihq x1n2onr6" color="#000" fill="#737373" height="24" viewBox="0 0 24 24" width="24"><path fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="2" d="M22 3 9.218 10.083m2.48 10.251L22 3.001H2l7.218 7.083 2.48 10.25z"/></svg>';
const instaIcon = '<svg version="1.1" id="Icons" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" xml:space="preserve" width="20" height="20"><style>.st0{fill:none;stroke:#000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style><path class="st0" d="M14.375 19.375h-8.75c-2.75 0-5-2.25-5-5v-8.75c0-2.75 2.25-5 5-5h8.75c2.75 0 5 2.25 5 5v8.75c0 2.75-2.25 5-5 5z"/><path class="st0" d="M14.375 10A4.375 4.375 0 0 1 10 14.375 4.375 4.375 0 0 1 5.625 10a4.375 4.375 0 0 1 8.75 0zm1.25-5.625A.625.625 0 0 1 15 5a.625.625 0 0 1-.625-.625.625.625 0 0 1 1.25 0z"/></svg>';
const instaUserInfo = instPost.user_info;
let getDate = new Date(instaPostData.timestamp);
getDate = getDate.toLocaleString('en-US', { day: 'numeric', month: 'short', year: 'numeric' });
let getTime = new Date(instaPostData.timestamp);
getTime = getTime.toLocaleString('en-US', { hour12: false, hour: 'numeric', minute: 'numeric', second: 'numeric' });
let captionText = instaPostData.caption ? instaPostData.caption : '';
const tagRegex = /(#\w+)/g;
let tagUrl = 'https://www.instagram.com/explore/tags/$1';
tagUrl = tagUrl.replace(/#/g, '');
const wrapTag = `<span class="tag-wrapper"><a target="_blank" href="${tagUrl}">$1</a></span>`;
captionText = captionText.replace(tagRegex, wrapTag);
let carouselTemplate = '';
if (instaPostData.media_type === 'CAROUSEL_ALBUM') {
carouselTemplate += `<div class="popup-carousel"><div class="cg-carousel__track js-carousel__track">`;
instaPostData.children.data?.map((item) => {
console.log(item);
if (item.media_type?.toLowerCase() === 'video') {
carouselTemplate += `<video width="630" class="popup-media-image cg-carousel__slide js-carousel__slide" controls src="${item.media_url || ''}" alt="${item.caption || ''}" controlsList="nodownload"></video>`;
}
else {
carouselTemplate += `<img width="630" class="popup-media-image cg-carousel__slide js-carousel__slide" src="${item.media_url || ''}" alt="${item.caption || ''}" />`;
console.log(item);
}
});
carouselTemplate += `</div></div>`;
carouselTemplate += `<div class="cg-carousel__btns">
<button class="cg-carousel__btn js-carousel__prev-1"><svg width="20" height="30" viewBox="-5 0 23 23" xmlns="http://www.w3.org/2000/svg"><path d="M11.24.29.361 10.742l-.06.054a.97.97 0 0 0-.301.642v.124a.97.97 0 0 0 .3.642l.054.044L11.239 22.71a1.061 1.061 0 0 0 1.459 0 .964.964 0 0 0 0-1.402l-10.15-9.746 10.15-9.87a.964.964 0 0 0 0-1.402 1.061 1.061 0 0 0-1.459 0Z" fill="#fff"/></svg></button>
<button class="cg-carousel__btn js-carousel__next-1"><svg width="20" height="30" viewBox="-5 0 23 23" xmlns="http://www.w3.org/2000/svg"><path d="m1.76.29 10.879 10.452.06.054a.97.97 0 0 1 .301.642v.124a.97.97 0 0 1-.3.642l-.054.044L1.761 22.71a1.061 1.061 0 0 1-1.459 0 .964.964 0 0 1 0-1.402l10.15-9.746-10.15-9.87a.964.964 0 0 1 0-1.402 1.061 1.061 0 0 1 1.459 0Z" fill="#fff"/></svg></button>
</div>`
}
else {
if (instaPostData.media_type?.toLowerCase() === 'video') {
carouselTemplate += `<video width="630" class="popup-media-image" controls src="${instaPostData.media_url || ''}" alt="${instaPostData.caption || ''}"></video>`;
}
else {
carouselTemplate += `<img width="630" class="popup-media-image" src="${instaPostData.media_url || ''}" alt="${instaPostData.caption || ''}" />`;
}
}
let popupHtml = '';
popupHtml += `
<div class="popup-container">
<div class="popup-md-9 white">
<div class="embedpress-popup-block embedpress-popup-img" id="post-${instaPostData.id}">
${carouselTemplate}
</div>
</div>
<div class="popup-md-3 red">
<div class="embedpress-popup-block embedpress-popup-info">
<div class="embedpress-popup-header">
<div class="embedpress-popup-header-img"> <a target="_blank" href="https://www.instagram.com/${instaPostData.username}/"
target="_blank" class="embedpress-href"> <img decoding="async" loading="lazy"
class="embedpress-popup-round"
src="http://2.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?s=150&d=mm&r=g"
width="30" height="30"> <span class="embedpress-popup-username">${instaPostData.username}</span>
</a>
</div>
<div class="insta-followbtn">
<a target="_new" href="https://www.instagram.com/${instaPostData.username}/" type="button" class="btn btn-primary">Follow</a>
</div>
</div>
<div class="embedpress-popup-text">${captionText}</div>
<div class="embedpress-popup-stats">
<div class="embedpress-inline"><a target="_blank" href="${instaPostData.permalink}">${likeIcon} ${instaPostData.like_count || 0}</a></div> <div
class="embedpress-inline"><a target="_blank" href="${instaPostData.permalink}">${commentsIcon} ${instaPostData.comments_count || 0}</a></div><div class="embedpress-inline">
<p class="embedpress-popup-share-buttons hidden"> <a
href="https://www.facebook.com/sharer/sharer.php?u=${instaPostData.permalink}"><span
class="fa fa-facebook-square shr-btn shr-btn-fcbk"></span></a> <a
href="https://twitter.com/home?status=${instaPostData.permalink}"
target="_blank"><span class="fa fa-twitter-square shr-btn"></span></a> <a
href="https://plus.google.com/share?url=${instaPostData.permalink}"
target="_blank"><span class="fa fa-google-plus-square shr-btn"></span></a> <a
href="https://www.linkedin.com/shareArticle?mini=true&url=${instaPostData.permalink}"
target="_blank"><span class="fa fa-linkedin-square shr-btn"></span></a> <a
href="https://pinterest.com/pin/create/button/?url=${instaPostData.permalink}"
target="_blank"><span class="fa fa-pinterest-square shr-btn"></span></a></p>
<div class="embedpress-href embedpress-popup-share">${shareIcon}</div>
</div><div class="embedpress-inline"><a
href="${instaPostData.permalink}" target="_blank"
class="embedpress-href">${instaIcon}</a></div>
</div>
</div>
</div>
</div>
`;
// INIT CAROUSEL
return popupHtml;
}
// Add a click event listener to the insta-gallery container
instaGlobals.instaPopup = (container) => {
container?.addEventListener('click', function (event) {
// Check if the clicked element has the class insta-gallery-item
const instaItem = event.target.closest('.insta-gallery-item');
if (instaItem) {
const postData = instaItem.dataset.postdata;
const postid = instaItem.getAttribute('data-insta-postid');
const postIndex = instaItem.getAttribute('data-postindex');
const tkey = instaItem.parentElement.parentElement.getAttribute('data-tkey');
const closestPopup = event.target.closest('.ose-instagram-feed').querySelector('.insta-popup');
closestPopup.style.display = 'block';
event.target.closest('.ose-instagram-feed').querySelector('.popup-is-initialized').innerHTML = getPopupTemplate(postData);
if (!document.querySelector(`#post-${postid}`).classList.contains('carousel-is-initialized')) {
const carousel = new CgCarousel(`#post-${postid}`, { slidesPerView: 1, loop: true }, {});
// const plyer = new Plyr(`#post-${postid} video`);
// console.log(plyer);
const next = document.querySelector(`#post-${postid} .js-carousel__next-1`);
next?.addEventListener('click', () => carousel.next());
const prev = document.querySelector(`#post-${postid} .js-carousel__prev-1`);
prev?.addEventListener('click', () => carousel.prev());
document.querySelector(`#post-${postid}`).classList.add('carousel-is-initialized');
}
}
});
}
const instaContainers = document.querySelectorAll('.embedpress-gutenberg-wrapper .insta-gallery');
if (instaContainers.length > 0) {
instaContainers.forEach((container) => {
instaGlobals.instaPopup(container);
});
}
$('.popup-close').click(function (e) {
// Hide the popup by setting display to none
$('.insta-popup').hide();
$('.popup-container').remove();
});
const instafeeds = document.querySelectorAll('.ose-instagram-feed');
instaGlobals.initializeTabs = (containerEl) => {
// Initial tab selection
showItems('ALL');
containerEl.addEventListener('click', function (event) {
const clickedElement = event.target;
if (!clickedElement) {
return; // No element clicked, ignore the event
}
// Handle tab click
if (clickedElement.matches('.tabs li')) {
if (clickedElement.classList.contains('active')) {
return;
} else {
const mediaType = clickedElement.getAttribute('data-media-type');
showItems(mediaType);
const tabs = containerEl.querySelectorAll('.tabs li');
tabs.forEach(t => t.classList.remove('active'));
clickedElement.classList.add('active');
}
}
});
function showItems(mediaType) {
const items = containerEl.getElementsByClassName('insta-gallery-item');
for (let i = 0; i < items.length; i++) {
const item = items[i];
if (mediaType === 'ALL' || item.getAttribute('data-media-type') === mediaType) {
console.log(item.getAttribute('data-media-type'));
console.log(mediaType);
item.style.display = 'block';
} else {
item.style.display = 'none';
}
}
}
}
instaGlobals.instaLoadMore = () => {
$('.insta-load-more-button').on('click', function (e) {
const loadmoreBtn = $(this).closest('.load-more-button-container');
const tkey = loadmoreBtn.data('loadmorekey');
const connectedAccount = $(`[data-tkey="${tkey}"]`).data('connected-acc-type');
const feedType = $(`[data-tkey="${tkey}"]`).data('feed-type');
const hashtagId = $(`[data-tkey="${tkey}"]`).data('hashtag-id');
const userId = $(`[data-tkey="${tkey}"]`).data('uid');
let loadedPosts = loadmoreBtn.data('loaded-posts') || 0;
let postsPerPage = loadmoreBtn.data('posts-per-page') || 0;
const spinicon = `<svg class="insta-loadmore-spinicon" width="18" height="18" fill="${'#fff'}" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_GuJz{transform-origin:center;animation:spinner_STY6 1.5s linear infinite}@keyframes spinner_STY6{100%{transform:rotate(360deg)}}</style><g class="spinner_GuJz"><circle cx="3" cy="12" r="2"/><circle cx="21" cy="12" r="2"/><circle cx="12" cy="21" r="2"/><circle cx="12" cy="3" r="2"/><circle cx="5.64" cy="5.64" r="2"/><circle cx="18.36" cy="18.36" r="2"/><circle cx="5.64" cy="18.36" r="2"/><circle cx="18.36" cy="5.64" r="2"/></g></svg>`;
$(this).append(spinicon);
var data = {
'action': 'loadmore_data_handler',
'insta_transient_key': tkey,
'loaded_posts': loadedPosts,
'user_id': userId,
'posts_per_page': postsPerPage,
'feed_type': feedType,
'connected_account_type': connectedAccount
};
if (feedType === 'hashtag_type') {
data.hashtag_id = hashtagId;
}
jQuery.post(eplocalize.ajaxurl, data, function (response) {
if (response.total_feed_posts >= response.next_post_index) {
var $responseHtml = $(response.html);//
$(`[data-tkey="${tkey}"] .insta-gallery`).append($responseHtml);
$responseHtml.animate({ opacity: 1 }, 1000);
$('.insta-loadmore-spinicon').remove();
loadedPosts = response.next_post_index;
loadmoreBtn.data('loaded-posts', loadedPosts);
// After loading more items, reinitialize the tabs for the specific container
const containerEl = loadmoreBtn.closest('.ose-instagram-feed')[0];
console.log(containerEl);
instaGlobals.initializeTabs(containerEl);
if (response.total_feed_posts == response.next_post_index) {
loadmoreBtn.hide();
}
} else {
loadmoreBtn.hide();
}
});
});
}
if (instafeeds.length > 0) {
instafeeds.forEach(function (feed) {
instaGlobals.initializeTabs(feed);
});
}
instaGlobals.instaLoadMore();
})(jQuery);
document.addEventListener('DOMContentLoaded', function () {
instaGlobals.initCarousel = (carouselSelector, options, carouselId) => {
const carouselOptions = {
slidesPerView: options.slideshow,
spacing: options.spacing,
loop: options.loop,
autoplay: options.autoplay,
transitionSpeed: options.transitionspeed,
autoplaySpeed: options.autoplayspeed,
arrows: options.arrows,
breakpoints: {
768: {
slidesPerView: parseInt(options.slideshow) - 1
},
1024: {
slidesPerView: parseInt(options.slideshow)
}
}
};
// INIT CAROUSEL
const carousel = new CgCarousel(carouselSelector, carouselOptions, {});
// Navigation
const next = document.querySelector(`[data-carouselid="${carouselId}"] #js-carousel__next-1`);
next.addEventListener('click', () => carousel.next());
const prev = document.querySelector(`[data-carouselid="${carouselId}"] #js-carousel__prev-1`);
prev.addEventListener('click', () => carousel.prev());
}
const instaWrappers = document.querySelectorAll('.ep-embed-content-wraper');
if (instaWrappers.length > 0) {
instaWrappers.forEach((wrapper) => {
const carouselId = wrapper.getAttribute('data-carouselid');
if (!carouselId) return;
let options = wrapper.getAttribute(`data-carousel-options`);
options = JSON.parse(options);
const carouselSelector = `[data-carouselid="${carouselId}"] .embedpress-insta-container`;
if (options.arrows) {
document.querySelector(`[data-carouselid="${carouselId}"] .cg-carousel__btns`).classList.remove('hidden');
}
instaGlobals.initCarousel(carouselSelector, options, carouselId);
});
}
});
jQuery(window).on("elementor/frontend/init", function () {
var filterableGalleryHandler = function ($scope, $) {
const instaWrappers = document.querySelectorAll('.ep-embed-content-wraper');
if (instaWrappers.length > 0) {
instaWrappers.forEach((wrapper) => {
const carouselId = wrapper.getAttribute('data-carouselid');
if (!carouselId) return;
let options = wrapper.getAttribute(`data-carousel-options`);
options = JSON.parse(options);
const carouselSelector = `[data-carouselid="${carouselId}"] .embedpress-insta-container`;
if (options.arrows) {
document.querySelector(`[data-carouselid="${carouselId}"] .cg-carousel__btns`).classList.remove('hidden');
}
instaGlobals.initCarousel(carouselSelector, options, carouselId);
});
}
const instaFeed = document.querySelector(`${selectorEl} .ose-instagram-feed`);
const instaGallery = document.querySelector(`${selectorEl} .insta-gallery`);
if (instaFeed) {
instaGlobals.initializeTabs(instaFeed);
}
if (instaFeed) {
instaGlobals.instaPopup(instaFeed);
}
};
elementorFrontend.hooks.addAction("frontend/element_ready/embedpres_elementor.default", filterableGalleryHandler);
});;