1(function(window,document){"use strict";function skGetEnvironmentUrls(folder_name){var scripts=document.getElementsByTagName("script");var scripts_length=scripts.length;var search_result=-1;var other_result=-1;var app_url="https://widgets.sociablekit.com/";var app_backend_url="https://api.accentapi.com/v1/";var app_file_server_url="https://data.accentapi.com/feed/";var sk_app_url="https://sociablekit.com/app/";var sk_api_url="https://api.sociablekit.com/";var sk_img_url="https://images.sociablekit.com/";var sk_fb_sync_url="https://facebook-sync.sociablekit.com/";for(var i=0;i<scripts_length;i++){var src_str=scripts[i].getAttribute('src');if(src_str!=null){var other_folder="";if(folder_name=='facebook-page-playlists'){other_folder='facebook-page-playlist'}else if(folder_name=='linkedin-page-posts'){other_folder='linkedin-page-post'}else if(folder_name=='linkedin-profile-posts'){other_folder='linkedin-profile-post'}else if(folder_name=='facebook-hashtag-posts'){other_folder='facebook-hashtag-feed'}else if(folder_name=='facebook-page-events'){other_folder='facebook-events'}else if(folder_name=='facebook-page-posts'){other_folder='facebook-feed';if(document.querySelector(".sk-ww-facebook-feed")){var element=document.getElementsByClassName("sk-ww-facebook-feed")[0];element.classList.add("sk-ww-facebook-page-posts")}} 2other_result=src_str.search(other_folder);search_result=src_str.search(folder_name);if(search_result>=1||other_result>=1){var src_arr=src_str.split(folder_name);app_url=src_arr[0];app_url=app_url.replace("displaysocialmedia.com","sociablekit.com");if(app_url.search("local")>=1){app_backend_url="http://localhost:3000/v1/";app_url="https://localtesting.com/SociableKIT_Widgets/";app_file_server_url="https://localtesting.com/SociableKIT_FileServer/feed/";sk_app_url="https://localtesting.com/SociableKIT/";sk_api_url="http://127.0.0.1:8000/";sk_img_url="https://localtesting.com/SociableKIT_Images/";sk_fb_sync_url="https://localtesting.com/SociableKIT_Facebook_Sync/"}else{app_url="https://widgets.sociablekit.com/"}}}} 3return{"app_url":app_url,"app_backend_url":app_backend_url,"app_file_server_url":app_file_server_url,"sk_api_url":sk_api_url,"sk_app_url":sk_app_url,"sk_img_url":sk_img_url,"sk_fb_sync_url":sk_fb_sync_url}} 4function applySearchFeature(data_storage,search_term){var new_posts_lists=[];jQuery.each(data_storage,function(index,value){if(value.message&&value.message.toLowerCase().indexOf(search_term.toLowerCase())!=-1){new_posts_lists.push(value)}else if(value.post_id&&value.post_id.indexOf(search_term)!=-1){new_posts_lists.push(value)}});return new_posts_lists} 5function showOnlyOwnData(sk_facebook_feed,posts,bio){var new_posts_lists=[];var post_ids=[];jQuery.each(posts,function(index,value){if(post_ids.includes(value.id)==!1&&value.page_id&&value.page_id==getDsmSetting(sk_facebook_feed,'fb_page_id')){post_ids.push(value.id);new_posts_lists.push(value)}else if(post_ids.includes(value.id)==!1&&value.id&&value.id.includes(getDsmSetting(sk_facebook_feed,'fb_page_id'))){post_ids.push(value.id);new_posts_lists.push(value)}else if(post_ids.includes(value.id)==!1&&value.id.includes(bio.id)){post_ids.push(value.id);new_posts_lists.push(value)}});return new_posts_lists} 6function removeBlankContent(sk_facebook_feed,posts){var new_posts_lists=[];jQuery.each(posts,function(index,value){if((!value.media_attachments||value.media_attachments.length==0)&&!value.message&&!value.full_picture&&!value.video_url){}else{new_posts_lists.push(value)}});return new_posts_lists} 7function customCssChecker(){var url=window.location.href;if(url&&url.indexOf("kalix.se")>-1){return} 8loadCssFile("https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css")} 9async function showSharedPosts(sk_facebook_feed,to_sync){sk_facebook_feed.find('.sk-meta-data').each(async function(){var object_element=jQuery(this);if(!object_element.hasClass('sk-meta-done')){var parent_id=object_element.attr('id');var object_id=object_element.attr('data-id');var embed_id=getDsmEmbedId(sk_facebook_feed);var json_url=sk_fb_sync_url+"sync_post.php?parent_id="+parent_id+"&embed_id="+embed_id;jQuery.getJSON(json_url,function(data){if(data.id&&data.from){object_element.addClass('sk-meta-done');var post_items="<div>";post_items+="<div class='sk-meta-data-info'>";post_items+="<img loading='lazy' src='https://graph.facebook.com/v5.0/"+data.from.id+"/picture/?type=large&access_token='/>";post_items+="<div><b>"+data.from.name+"</b></div>";
9post_items+="</div>";if(data.message){post_items+="<div class='sk-meta-data-content'>";post_items+=data.message;post_items+="</div>"} 10if(data.full_picture){post_items+="<div class='sk-meta-data-media' onclick=\"window.open('"+data.permalink_url+"');\">";post_items+="<img loading='lazy' src='"+data.full_picture+"'/>";post_items+="</div>"} 11post_items+="</div>";object_element.html(post_items)}else{var item=data_storage.find(item=>item.id===object_id);if(item&&item.media_attachments&&item.media_attachments[0]&&item.media_attachments[0].thumbnail){var one_data=item.media_attachments[0];object_element.addClass('sk-meta-done');var post_items="<div>";if(one_data.description){post_items+="<div class='sk-meta-data-content'>";post_items+=one_data.description;post_items+="</div>"}else if(one_data.title){post_items+="<div class='sk-meta-data-content'>";post_items+=one_data.title;post_items+="</div>"} 12if(one_data.thumbnail){post_items+="<div class='sk-meta-data-media' onclick=\"window.open('"+one_data.url+"');\">";post_items+="<img loading='lazy' src='"+one_data.thumbnail+"'/>";post_items+="</div>"} 13post_items+="</div>";object_element.html(post_items)}else{object_element.remove()}} 14var elements=object_element.find(".sk-meta-data-content");for(var i=0;i<elements.length;i++){replaceContentWithLinks(jQuery(elements[i]),sk_facebook_feed)}}).fail(function(e){console.log("Shared content is missing.")})}})} 15function applyDateFormat(sk_facebook_feed,data_storage){var date_format=getDsmSetting(sk_facebook_feed,'date_format');var use_24_hour_clock=getDsmSetting(sk_facebook_feed,'use_24_hour_clock');var timezone=getDsmSetting(sk_facebook_feed,'timezone');var show_time_posted=getDsmSetting(sk_facebook_feed,'show_time_posted');var show_post_date=getDsmSetting(sk_facebook_feed,'show_post_date');var format='MMM D, YYYY';if(date_format=='M d, Y'){format='MMM D, YYYY'}else if(date_format=='jS M Y'){format='Do MMM YYYY'}else if(date_format=='Y M jS'){format='YYYY MMM Do'}else if(date_format=='Y-m-d'){format='YYYY-MM-D'}else if(date_format=='m/d/Y'){format='MM/D/YYYY'}else if(date_format=='d/m/Y'){format='D/MM/YYYY'}else if(date_format=='d.m.Y'){format='D.MM.YYYY'}else if(date_format=='d-m-Y'){format='D-MM-YYYY'} 16if(use_24_hour_clock==1&&show_time_posted==1){format=format+' HH:mm'}else if(show_time_posted==1){format=format+' hh:mm A'} 17var new_posts_lists=[];jQuery.each(data_storage,function(index,value){if(data_storage[index]&&data_storage[index].created_time){var date_time=data_storage[index].backdated_time?data_storage[index].backdated_time:data_storage[index].created_time;if(date_time&&show_time_posted!=1){date_time=date_time.split("T")[0]} 18if(show_post_date==1&&timezone){try{data_storage[index].post_date_time=moment(date_time).tz(timezone).format(format)}catch{data_storage[index].post_date_time=moment(date_time).format(format)}}else{data_storage[index].post_date_time=moment(date_time).format(format)}}});return data_storage} 19function predefinedPostFeature(data_storage,predefined_search_keyword){var keywords=predefined_search_keyword.split(",");var new_posts_list=[];for(let item of data_storage){if(item){for(var i=0;i<keywords.length;i++){if(item.message&&item.message.toLowerCase().indexOf(keywords[i].trim().toLowerCase())!=-1){new_posts_list.push(item);break}else if(item.description&&item.description.toLowerCase().indexOf(keywords[i].trim().toLowerCase())!=-1){new_posts_list.push(item);break}else if(item.name&&item.name.toLowerCase().indexOf(keywords[i].trim().toLowerCase())!=-1){new_posts_list.push(item);break}}}};return new_posts_list} 20function moderationTabFeature(sk_facebook_feed,data_storage,turnon_preapproval_posts){var preapproved_posts=[];var excluded_posts=[];if(turnon_preapproval_posts==1){if(getDsmSetting(sk_facebook_feed,"preapproved_posts")!=""){preapproved_posts=getDsmSetting(sk_facebook_feed,"preapproved_posts").split(",")}}else if(getDsmSetting(sk_facebook_feed,"excluded_posts")!=""){excluded_posts=getDsmSetting(sk_facebook_feed,"excluded_posts").split(",")} 21var new_posts_list=[];for(let item of data_storage){if(item){if(["106330322743688_479124244255671","106330322743688_478210624347033","106330322743688_477298584438237"].includes(item.id)){item.media_attachments=[{"thumbnail":"https://external-ord5-1.xx.fbcdn.net/emg1/v/t13/17436627457658256848?url=https%3A%2F%2Fwww.kalix.se%2Fcontentassets%2Fa2544fcc5e67452aa68428023fc8c1b3%2F304808120_110394221803604_7568028101721080709_n.jpg&fb_obo=1&utld=kalix.se&stp=c0.5000x0.5000f_dst-emg0_p360x360_q75&ccb=13-1&oh=06_AaokQwVvgz9JSNRLmKVsq_-7OCuvVfoXi45SvQAoWUrpKg&oe=6349130D&_nc_sid=834697","type":"share","description":"Den 10â13 oktober 2022 kan du som vill lära dig mer om psykisk hälsa ta del av en rad intressanta föreläsningar â helt kostnadsfritt.","title":"Norrbottens digitala vecka för psykisk hälsa","source":"","url":"https://l.facebook.com/l.php?u=https%3A%2F%2Fwww.kalix.se%2FAktuellt%2FOmsorg-och-raddning%2Fnorrbottens-digitala-vecka-for-psykisk-halsa%2F&h=AT3D0MDblxZM5hCTmBPGdhq-JDUukHsbGYh9nXDQecR1rurkrVGOxLp3U7wBqMLAItC4rOzATj00oM1PorL5dLETawOzJnUPEn--SJa02H47Zx081idrUQPbE2MhipgH&s=1"}]} 22if(turnon_preapproval_posts==1){if(preapproved_posts.includes(item.id)){new_posts_list.push(item)}}else{if(turnon_preapproval_posts==0&&excluded_posts.includes(item.id)){}else{app_url="https://widgets.sociablekit.com/"}}}} 23return{"app_url":app_url,"app_backend_url":app_backend_url,"app_file_server_url":app_file_server_url,"sk_api_url":sk_api_url,"sk_app_url":sk_app_url,"sk_img_url":sk_img_url,"sk_fb_sync_url":sk_fb_sync_url}} 24function getDsmEmbedId(sk_linkedin_page_post){var embed_id=sk_linkedin_page_post.getAttribute('embed-id');if(embed_id==undefined){embed_id=sk_linkedin_page_post.getAttribute('data-embed-id')} 25return embed_id} 26function slugifyString(str){str=str.replace(/^\s+|\s+$/g,'');str=str.toLowerCase();var from="ÃÃÃÃÃà ÄÃÄÄÃÄÃÃÃẼÄÈÃÃÃÃÅÃÃÃÃÃÃÃÅÅŠŤÃÅ®ÃÃÃߎáäâà ãåÄçÄÄéÄëèêẽÄÈÃìîïÅñóöòôõøðÅÅšťúůüùûýÿžþÃÄÄÃÃa·/_,:;";var to="AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa------";
26for(var i=0,l=from.length;i<l;i++){str=str.replace(new RegExp(from.charAt(i),'g'),to.charAt(i))} 27str=str.replace(/[^a-z0-9 -]/g,'').replace(/\s+/g,'-').replace(/-+/g,'-');return str} 28function generateBlueMessage(_sk,user_info){var tutorial_link="";var sk_error_message="";if(user_info.solution_name){var slugify_string=slugifyString(user_info.solution_name);tutorial_link="https://www.sociablekit.com/tutorials/embed-"+slugify_string+"-website/"} 29if(user_info.type==9){tutorial_link="https://www.sociablekit.com/sync-facebook-page-events-to-google-calendar/"}else if(user_info.type==26){tutorial_link="https://www.sociablekit.com/how-to-sync-facebook-group-events-to-google-calendar-on-website/"} 30if(user_info.widget_status==1){var sk_error_message="<div class='sk_error_message'>";sk_error_message+="<p style='text-align: center !important; margin: 1rem'> The widget does not exist. If you think this is a mistake, please contact support</a></p>";sk_error_message+="</div>";return sk_error_message} 31if(user_info.show_feed==!1){if(!user_info.message||user_info.message==""){var sk_error_message="<ul class='sk_error_message'>";sk_error_message+="<li><a href='"+tutorial_link+"' target='_blank'>"+user_info.solution_name+" powered by SociableKIT</a></li>";sk_error_message+="<li>If youâre the owner of this website or SociableKIT account used, we found some errors with your account.</li>";sk_error_message+="<li>Please login your SociableKIT account to fix it.</li>";sk_error_message+="</ul>";user_info.message=sk_error_message} 32sk_error_message=user_info.message}else if(user_info.solution_name==null&&user_info.type==null&&user_info.start_date==null){sk_error_message="<p class='sk_error_message'>";sk_error_message+="The SociableKIT solution does not exist. If you think this is a mistake, please contact support.";sk_error_message+="</p>"}else{sk_error_message="<div class='sk_error_message'>";sk_error_message+="<div style='display: inline-flex;width:100%;'>";sk_error_message+="<div>";sk_error_message+="<h4>SociableKIT is currently syncing your <a href='"+tutorial_link+"' target='_blank'>"+user_info.solution_name+" widget.</a></h4>";sk_error_message+=` 33 <svg height="20" style="width: 100%; border-radius: 55px !important; overflow: hidden;"> 34 <rect x="0" y="0" width="480" height="20" fill="#f0f0f0" rx="10" ry="10" /> 35 <pattern id="stripes" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"> 36 <rect x="0" y="0" width="10" height="20" fill="#007bff" /> 37 </pattern> 38 <rect id="progressBar" x="0" y="0" width="0" height="20" fill="url(#stripes)" rx="10" ry="10"> 39 <animate attributeName="width" attributeType="XML" from="0" to="480" dur="2s" repeatCount="indefinite" /> 40 </rect> 41 </svg>`;sk_error_message+="<p>While waiting there are a few things you need to know:</p>";sk_error_message+="<ul>";sk_error_message+="<li>It usually takes only a few minutes. We appreciate your patience.</li>";sk_error_message+="<li>We will notify you via email once your "+user_info.solution_name+" feed is ready.</li>";if(user_info.type==5){sk_error_message+="<li>Make sure your instagram account <a target='_blank' href='https://www.instagram.com/"+getDsmSetting(_sk,'username')+"' target='_blank'><b>@"+getDsmSetting(_sk,'username')+"</b></a> is connected.</li>"}else if(user_info.type==22||user_info.type==39){sk_error_message+="<li>Please make sure that you selected the correct Google Place or that the <a href='https://www.sociablekit.com/how-to-identify-google-place-id/' target='blank'><b> Google Place ID </b></a> you entered is correct.</li>"}else if(user_info.type==101){sk_error_message+="<li>Please make sure that you have <a href='https://www.sociablekit.com/add-sociablekit-as-your-contact-on-whatsapp/' target='blank'><b> added SociableKIT as your contact on WhatsApp</b></a>.</li>"}else{sk_error_message+="<li>Please make sure that the <b> Source ID/Username </b> you enter is correct.</li>"} 42sk_error_message+="<li>If you think there is a problem, <a target='_blank' href='https://go.crisp.chat/chat/embed/?website_id=2e3a484e-b418-4643-8dd2-2355d8eddc6b'>chat with support here</a>. We will solve it for you.</li>";sk_error_message+="</ul>";sk_error_message+="</div>";sk_error_message+="</div>";sk_error_message+="</div>"} 43return sk_error_message} 44async function fetchEmbedInfo(embed_id,sk_api_url){let jsonUrl=sk_api_url+"api/user_embed/info/"+embed_id;try{const response=await fetch(jsonUrl,{method:"GET"});const data=response.json();return data}catch(err){throw Error("Failed to fetch embed info")}}function getNocache(){const now=new Date();const threeMin=Math.floor(now.getMinutes()/5)*5;return `${now.getFullYear()}.${(now.getMonth() + 1).toString().padStart(2, '0')}.${now.getDate().toString().padStart(2, '0')}.${now.getHours().toString().padStart(2, '0')}.${threeMin.toString().padStart(2, '0')}`} 45function getWidgetLayoutWidth(widget){const rw=widget.getBoundingClientRect().width;if(rw>=2){return rw} 46if(widget.offsetWidth>=2){return widget.offsetWidth} 47let el=widget.parentElement;for(let depth=0;el&&depth<8;depth++){const pw=el.getBoundingClientRect().width;if(pw>=2){return pw} 48el=el.parentElement} 49return window.innerWidth} 50function getMediaColumn(widget,widgetState,settings){let columns;const innerWidth=getWidgetLayoutWidth(widget);let tablet_size=767;if(widget.parentElement&&widget.parentElement.id==='embed-code-container'){tablet_size=1500} 51if(innerWidth<=575){columns=widgetState.column_count_small}else if(innerWidth<=tablet_size){columns=Number(settings.column_count)>2?widgetState.column_count_medium:Number(settings.column_count)||1}else{columns=Number(settings.column_count)||widgetState.column_count_large||3} 52if(innerWidth<=1250&&Number(settings.column_count)>3){columns=Math.min(columns,3)} 53columns=Math.max(1,Math.min(12,parseInt(columns,10)||1));return columns} 54function getMediaColumnCarousel(widget,widgetState,settings){let columns;const innerWidth=getWidgetLayoutWidth(widget);let tablet_size=900;if(widget.parentElement&&widget.parentElement.id==='embed-code-container'){tablet_size=1500} 55if(innerWidth<=520){columns=widgetState.column_count_small}else if(innerWidth<=tablet_size){columns=widgetState.column_count_medium}else{columns=Number(settings.column_count)||widgetState.column_count_large||3} 56if(Number(settings.column_count)<columns){columns=Number(settings.column_count)} 57if(innerWidth<=1250&&Number(settings.column_count)>3){columns=Math.min(columns,3)} 58return columns} 59async function skIncreaseView(widgetState){const solution_info=widgetState.widget_data.user_info;if(solution_info&&solution_info.status&&![1,6,7].includes(parseInt(solution_info.status))){return!1} 60try{const user_id=solution_info.user_id;const status=solution_info.status;const widgetId=solution_info.embed_id;var sk_views_url="https://views.sociablekit.com/";if(document.URL.includes("local")){sk_views_url="https://localtesting.com/WidgetAnalytics/views/"} 61const uniqueId=sessionStorage.getItem('unique_id')||generateUniqueId();if(!sessionStorage.getItem('unique_id')){sessionStorage.setItem('unique_id',uniqueId)} 62const ipAddress=uniqueId;const payload={widgetId,userId:user_id,viewsCount:1,url:getCurrentUrl(),ipAddress,status,};const trackResponse=await fetch(sk_views_url+'track-widget-views.php',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload),});const responseData=await trackResponse.json();console.log('Server Response:',responseData)}catch(error){console.error('Error in renderViews:',error)}} 63function isTooDarkColor(hexColor){let r,g,b;if(hexColor.startsWith('#')){r=parseInt(hexColor.substr(1,2),16);g=parseInt(hexColor.substr(3,2),16);b=parseInt(hexColor.substr(5,2),16)} 64if(hexColor.indexOf('rgb')!==-1){const rgbValues=getRGB(hexColor);[r,g,b]=rgbValues} 65b=isNaN(b)?0:b;const yiq=((r*299)+(g*587)+(b*114))/1000;return yiq<60} 66function getRGB(rgbstr){return rgbstr.substring(4,rgbstr.length-1).replace(/ /g,'').replace('(','').split(',')} 67function getTutorialLinkNew(userInfo){const d=new Date(userInfo.createdAt);const date=d.getDate();let tutorialLink="";if(userInfo.solution_name){let slug=slugifyString(userInfo.solution_name);tutorialLink="https://www.sociablekit.com/tutorials/embed-"+slug+"-website/";if(userInfo.website_builder){slug=slug+"-"+slugifyString(userInfo.website_builder);tutorialLink="https://www.sociablekit.com/tutorials/embed-"+slug+"/"}} 68if(date%5!==0){switch(userInfo.type){case 4:tutorialLink="https://www.sociablekit.com/tutorials/embed-facebook-feed-website/";break;case 5:tutorialLink="https://www.sociablekit.com/tutorials/embed-instagram-feed-website/";break;case 33:tutorialLink="https://www.sociablekit.com/tutorials/embed-linkedin-feed-website/";break;case 16:tutorialLink="https://www.sociablekit.com/tutorials/embed-youtube-playlist-website/";break}} 69return tutorialLink} 70function getTutorialLink(userInfo){let tutorialLink="";if(userInfo.solution_name){let slug=slugifyString(userInfo.solution_name);tutorialLink="https://www.sociablekit.com/tutorials/embed-"+slug+"-website/";if(userInfo.website_builder){slug=slugifyString(userInfo.website_builder);tutorialLink="https://www.sociablekit.com/tutorials/embed-"+slug}} 71if(userInfo.type===9){tutorialLink="https://www.sociablekit.com/sync-facebook-page-events-to-google-calendar/"}else if(userInfo.type===26){tutorialLink="https://www.sociablekit.com/how-to-sync-facebook-group-events-to-google-calendar-on-website/"} 72if(tutorialLink&&!tutorialLink.endsWith("/")){tutorialLink+="/"} 73const linkedinWidgets=[33,34,44,58,75,99,100,103];const facebookWidgets=[1,4,9,10,11,36,38,43,12,24,26,49,2,8,3,18,19,28,30,61];const threadsWidgets=[110];if(linkedinWidgets.includes(userInfo.type)&&userInfo.embed_id%2===1){let websiteBuilder=userInfo.website_builder?slugifyString(userInfo.website_builder):"website";tutorialLink="https://www.sociablekit.com/tutorials/embed-linkedin-feed-"+websiteBuilder+"/"}else if(facebookWidgets.includes(userInfo.type)&&userInfo.embed_id%2===1){let websiteBuilder=userInfo.website_builder?slugifyString(userInfo.website_builder):"website";tutorialLink="https://www.sociablekit.com/tutorials/embed-facebook-feed-"+websiteBuilder+"/"}else if(threadsWidgets.includes(userInfo.type)&&userInfo.embed_id%2===0){let websiteBuilder=userInfo.website_builder?slugifyString(userInfo.website_builder):"website";tutorialLink="https://www.sociablekit.com/tutorials/embed-threads-"+websiteBuilder+"/"} 74if(userInfo.type===5&&userInfo.embed_id%2===1){tutorialLink=tutorialLink.replace("profile","feed")} 75return tutorialLink} 76const errorCSS=` 77:root {
78 --sk-primary: #1972f5; 79 --sk-text-light: #ffffff; 80 --sk-radius: 12px; 81 --sk-padding: 30px; 82 --sk-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif; 83} 84 85/* Error Container */ 86.sk_error_message { 87 font-family: var(--sk-font); 88 font-size: 16px; 89 line-height: 24px; 90 background-color: var(--sk-primary); 91 color: var(--sk-text-light); 92 padding: var(--sk-padding); 93 border-radius: var(--sk-radius); 94 box-sizing: border-box; 95} 96 97/* Ensure children inherit cleanly */ 98.sk_error_message * { 99 font-family: inherit; 100 box-sizing: inherit; 101} 102 103/* Links */ 104.sk_error_message a { 105 color: var(--sk-text-light); 106 text-decoration: underline; 107 font-weight: 500; 108 transition: opacity 0.2s ease; 109} 110 111.sk_error_message a:hover { 112 opacity: 0.85; 113} 114 115/* Lists */ 116.sk_error_message ul { 117 padding-left: 18px; 118 margin: 10px 0 0; 119} 120 121.sk_error_message li { 122 margin-bottom: 6px; 123} 124 125/* Headings */ 126.sk_error_message h4 { 127 margin: 0 0 10px; 128 font-size: 17px; 129 font-weight: 600; 130} 131 132/* Paragraphs */ 133.sk_error_message p { 134 margin: 10px 0; 135} 136 137/* Empty Jobs State */ 138.sk-jobs-none { 139 min-height: 300px; 140 display: flex; 141 flex-direction: column; 142 justify-content: center; 143 align-items: center; 144 gap: 6px; 145 text-align: center; 146} 147 148.sk-jobs-none p { 149 font-weight: 600; 150 font-size: 18px; 151 margin: 0; 152} 153 154/* Responsive */ 155@media (max-width: 480px) { 156 .sk_error_message { 157 padding: 16px; 158 font-size: 14px; 159 } 160 161 .sk_error_message h4 { 162 font-size: 16px; 163 } 164 165 .sk-jobs-none p { 166 font-size: 16px; 167 } 168} 169 170.sk_error_message{ 171 font-family: Inter, Arial, Helvetica, sans-serif !important; 172 font-size: 16px; 173 line-height: 30px; 174 background-color: #DCEBFE; 175 color: #404040; 176 padding: 20px 45px; 177 border-radius: 16px; 178 max-width: 770px; 179 padding: 32px; 180} 181 182.sk_error_message * { 183 font-family: Inter, Arial, Helvetica, sans-serif !important; 184} 185 186.sk_error_header { 187 display: flex; 188 align-items: center; 189 gap: 10px; 190 padding: 24px; 191} 192 193.sk_error_message_text { 194 padding: 24px; 195 margin: 0 !important; 196 padding-top: 0; 197} 198 199.sk_error_header h4 { 200 font-size: 30px; 201 font-weight: 600; 202 color: #0C1736; 203 margin-left: 16px; 204 letter-spacing: -1px; 205 line-height: 1.2; 206} 207 208@keyframes spin { 209 from { 210 transform: rotate(0deg); 211 } 212 to { 213 transform: rotate(360deg); 214 } 215} 216 217.sk_error_message a{ 218 color: #1559EA !important; 219 text-decoration: underline !important; 220 font-weight: normal !important; 221} 222 223.sk_error_message_loader { 224 width: 58px; 225 height: 58px; 226 animation: spin 2s linear infinite; 227} 228 229.sk-jobs-none { 230 min-height: 300px; 231 display: flex; 232 justify-content: center; 233 align-items: center; 234 gap: 8px; 235} 236 237.sk-jobs-none p { 238 font-weight: bold; 239 font-size: 21px; 240 color: inherit; 241 font-family: "Arial"; 242} 243 244.sk_error_progress_label { 245 font-size: 14px; 246 color: #404040; 247 margin-bottom: 10px; 248 font-weight: 600; 249} 250 251.sk_error_progress_bar { 252 width: 100%; 253 height: 22px; 254 background-color: #BEDBFE; 255 border-radius: 55px; 256} 257 258@keyframes fill { 259 from { 260 width: 0; 261 } 262 to { 263 width: 70%%; 264 } 265} 266 267.sk_error_progress_bar_fill { 268 height: 100%; 269 background-color: #1447E6; 270 animation: fill 1s ease-in-out; 271 display: flex; 272 align-items: center; 273 justify-content: center; 274 border-radius: 55px; 275} 276 277.sk_error_progress_bar_fill_text { 278 font-size: 16px; 279 color: #fff; 280 font-weight: 500; 281} 282 283.sk_error_estimation { 284 display: flex; 285 align-items: center; 286 font-size: 18px; 287 margin-top: 10px; 288 color: #404040; 289 margin-bottom: 10px; 290 font-weight: 500; 291} 292 293.sk_error_estimation span { 294 width: 18px; 295 height: 18px; 296 margin-right: 5px; 297 display: inline-flex; 298} 299 300.sk_error_estimation img { 301 width: 100%; 302 height: 100%; 303} 304 305.sk_error_status { 306 display: flex; 307 flex-direction: column; 308} 309 310.sk_error_status > p { 311 font-size: 14px; 312 color: #404040; 313 margin-bottom: 10px; 314 font-weight: 600; 315} 316 317.sk_error_status_row { 318 display: flex; 319 align-items: center; 320 justify-content: space-between; 321 gap: 10px; 322 margin-bottom: 20px; 323} 324 325.sk_error_status_row > p { 326 line-height: 1; 327 margin: 0; 328 padding: 0; 329} 330 331.sk_error_status_row img { 332 margin-right: 10px; 333 width: 18px; 334 height: 18px; 335} 336 337.sk_error_status_row > div { 338 display: flex; 339 align-items: center; 340 341} 342 343.sk_error_connection img { 344 margin-left: 2px; 345 width: 16px; 346 height: 16px; 347} 348 349.sk_error_connection { 350 font-weight: 500; 351 font-size: 18px; 352 line-height: 20px; 353 color: #149041; 354} 355 356.sk_error_fetching { 357 font-weight: 500; 358 font-size: 18px; 359 line-height: 20px; 360 color: #1559EA; 361} 362 363.sk_error_final { 364 font-weight: 500; 365 font-size: 18px; 366 line-height: 20px; 367 color: #A3A3A3; 368 margin-bottom: 0 !important; 369} 370 371.sk_error_fetching img { 372 animation: spin 2s linear infinite; 373} 374 375.sk_error_footer { 376 margin-top: 32px !important; 377 text-align: center; 378 display: flex; 379 align-items: center; 380 justify-content: center; 381 gap: 10px; 382 border-top: 1px solid #BEDBFE; 383 padding-top: 32px !important; 384 padding-top: 0px; 385} 386 387.sk_error_footer p { 388 font-size: 16px; 389 color: #404040; 390 line-height: 20px; 391 margin: 0 !important; 392} 393 394.sk_error_footer button { 395 background: none; 396 border: none; 397 color: #1559EA; 398 font-weight: 500; 399 font-size: 16px; 400 line-height: 20px; 401 margin: 0; 402 padding: 0; 403} 404 405.sk_error_footer button:hover { 406 cursor: pointer; 407 color:rgb(94, 134, 222); 408} 409 410@media (max-width: 768px) { 411 .sk_error_message { 412 padding: 2rem; 413 } 414 .sk_error_header { 415 flex-direction: column; 416 align-items: flex-start; 417 padding: 0; 418 } 419 .sk_error_header h4 { 420 padding: 0; 421 margin: 0; 422 margin-top: 1rem; 423 } 424 .sk_error_message_text { 425 padding: 0; 426 } 427 .sk_error_footer { 428 padding-top: 1rem; 429 border-top: 1px solid #BEDBFE; 430 justify-content: flex-start; 431 align-items: flex-start; 432 } 433 .sk_error_footer p { 434 text-align: left; 435 margin: 0; 436 padding: 0; 437 } 438} 439`;function injectStylesOnce(){if(!document.getElementById('sk-error-style')){const style=document.createElement('style');style.id='sk-error-style';style.textContent=errorCSS;document.head.appendChild(style)}} 440function getTutorialLink(user_info){if(user_info.type==9){return"https://www.sociablekit.com/sync-facebook-page-events-to-google-calendar/"} 441if(user_info.type==26){return"https://www.sociablekit.com/how-to-sync-facebook-group-events-to-google-calendar-on-website/"} 442if(user_info.solution_name){return'https://www.sociablekit.com/tutorials/embed-'+slugifyString(user_info.solution_name)+'-website/'} 443return"#"} 444function generateBlueMessage(_sk,user_info){const tutorialLink=getTutorialLink(user_info);if(user_info.widget_status==1){return'<div class="sk_error_message">'+'<p style="text-align:center;margin:1rem;">The widget does not exist. If you think this is a mistake, please contact support.</p>'+'</div>'} 445if(!user_info.show_feed){if(user_info.message)return user_info.message;return'<ul class="sk_error_message">'+'<li><a href="'+tutorialLink+'" target="_blank">'+user_info.solution_name+' powered by SociableKIT</a></li>'+'<li>If youâre the owner of this website or SociableKIT account used, we found some errors with your account.</li>'+'<li>Please login your SociableKIT account to fix it.</li>'+'</ul>'} 446if(!user_info.solution_name&&!user_info.type&&!user_info.start_date){return'<p class="sk_error_message">The SociableKIT solution does not exist. If you think this is a mistake, please contact support.</p>'} 447let sk_app_images="https://sociablekit.com/app/images/";if(document.URL.includes("local")){sk_app_images="https://localtesting.com/SociableKIT_App/images/"} 448let social_platform=user_info.solution_name?user_info.solution_name.split(" ")[0]:user_info.category_name;let sk_error_message='<div class="sk_error_message">'+'<div style="display: inline-flex;width:100%;">'+'<div>'+'<div class="sk_error_header">'+'<img class="sk_error_message_loader" src="'+sk_app_images+'loader-2.svg" alt="SociableKIT Spinner">'+'<h4>Syncing your '+user_info.solution_name+' widget.</h4>'+'</div>'+'<p class="sk_error_message_text">We\'re currently syncing your <a href="'+tutorialLink+'" target="_blank">'+user_info.solution_name+' widget</a>. This usually takes a few minutes. We appreciate your patience while we make sure everything is up to date.</p>'+'<p class="sk_error_progress_label">PROGRESS</p>'+'<div class="sk_error_progress_bar">'+'<div class="sk_error_progress_bar_fill" style="width: 70%;"><span class="sk_error_progress_bar_fill_text">70%</span></div>'+'</div>'+'<div class="sk_error_estimation"><span><img src="'+sk_app_images+'clock.svg" alt="Clock"> </span>
448A couple of minutes remaining</div>'+'<div class="sk_error_status">'+'<p>SYNC PROGRESS</p>'+'<div class="sk_error_connection sk_error_status_row">'+'<div><img src="'+sk_app_images+'success.svg" alt="Successful Process">Connected to '+social_platform+'</div>'+'<p>Done</p>'+'</div>'+'<div class="sk_error_fetching sk_error_status_row">'+'<div><img src="'+sk_app_images+'current.svg" alt="Current process"> </span>Fetching Data</div>'+'<p>In Progress</p>'+'</div>'+'<div class="sk_error_final sk_error_status_row">'+'<div><img src="'+sk_app_images+'waiting.svg" alt="Waiting Process"> </span>Finalizing sync</div>'+'<p></p>'+'</div>'+'</div>'+'<div class="sk_error_footer">'+'<span><img src="'+sk_app_images+'support.svg" alt="Support"> </span>'+'<p>If you think there is a problem, <button>Chat with support</button> here. we will solve it for you.</p>'+'</div>'+'</div>'+'</div>'+'</div>';return sk_error_message} 449function generateExtraTips(_sk,user_info){switch(user_info.type){case 5:const username=getDsmSetting(_sk,'username');return'<li>Make sure your Instagram account <a href="https://www.instagram.com/'+username+'" target="_blank"><b>@'+username+'</b></a> is connected.</li>';case 22:case 39:return'<li>Make sure you selected the correct Google Place or the <a href="https://www.sociablekit.com/how-to-identify-google-place-id/" target="_blank"><b>Google Place ID</b></a> is correct.</li>';case 101:return'<li>Make sure you have <a href="https://www.sociablekit.com/add-sociablekit-as-your-contact-on-whatsapp/" target="_blank"><b>added SociableKIT as your contact on WhatsApp</b></a>.</li>';default:return'<li>Please make sure that the <b>Source ID/Username</b> you entered is correct.</li>'}} 450function handleSupportButtonClick(){if((document.URL.includes("localtesting.com")&&!document.URL.includes("localtesting.com/SociableKIT_Widgets"))||document.URL.includes("sociablekit.com")){$crisp.push(['do','chat:open']) 451return} 452window.open('https://www.sociablekit.com/support/','_blank')} 453function generateSolutionMessage(container,embed_id,sk_api_url){injectStylesOnce();fetchEmbedInfo(embed_id,sk_api_url).then((data)=>{if(Boolean(data.encoded)&&data.type=="33"){container.innerHTML='<div class="sk-jobs-none">'+'<p>No posts yet.</p>'+'<p>Please try again later.</p>'+'</div>';return} 454container.innerHTML=generateBlueMessage(container,data);const supportButton=container.querySelector('.sk_error_footer button');if(supportButton){supportButton.addEventListener('click',handleSupportButtonClick)}}).catch(console.error)} 455async function fetchEmbedInfo(embed_id,sk_api_url){let jsonUrl=sk_api_url+"api/user_embed/info/"+embed_id;try{const response=await fetch(jsonUrl,{method:"GET"});const data=response.json();return data}catch(err){throw Error("Failed to fetch embed info")}} 456function slugifyString(str){if(typeof str==='string'&&str!==null){str=str.replace(/^\s+|\s+$/g,'')}else{str=''} 457str=str.toLowerCase();var from="ÃÃÃÃÃà ÄÃÄÄÃÄÃÃÃẼÄÈÃÃÃÃÅÃÃÃÃÃÃÃÅÅŠŤÃÅ®ÃÃÃߎáäâà ãåÄçÄÄéÄëèêẽÄÈÃìîïÅñóöòôõøðÅÅšťúůüùûýÿžþÃÄÄÃÃa·/_,:;";var to="AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa------";for(var i=0,l=from.length;i<l;i++){str=str.replace(new RegExp(from.charAt(i),'g'),to.charAt(i))} 458str=str.replace(/[^a-z0-9 -]/g,'').replace(/\s+/g,'-').replace(/-+/g,'-');return str} 459function skGetEnvironmentUrls(folder_name){var scripts=document.getElementsByTagName("script");var scripts_length=scripts.length;var search_result=-1;var other_result=-1;var app_url="https://widgets.sociablekit.com/";var app_backend_url="https://api.accentapi.com/v1/";var app_file_server_url="https://data.accentapi.com/feed/";var sk_app_url="https://sociablekit.com/app/";var sk_api_url="https://api.sociablekit.com/";var sk_img_url="https://data-image.sociablekit.com/";var sk_clicks_url="https://clicks.sociablekit.com/";var sk_scrolls_url="https://scrolls.sociablekit.com/";var sk_views_url="https://views.sociablekit.com/";var sk_fb_sync_url="https://facebook-sync.sociablekit.com/";var sk_yt_syc_url="https://youtube-sync.sociablekit.com/";
459for(var i=0;i<scripts_length;i++){var src_str=scripts[i].getAttribute('src');if(src_str!=null){var other_folder="";if(folder_name=='facebook-page-playlists'){other_folder='facebook-page-playlist'}else if(folder_name=='linkedin-page-posts'){other_folder='linkedin-page-post'}else if(folder_name=='linkedin-profile-posts'){other_folder='linkedin-profile-post'}else if(folder_name=='facebook-hashtag-posts'){other_folder='facebook-hashtag-feed'}else if(folder_name=='facebook-page-events'){other_folder='facebook-events'}else if(folder_name=='facebook-page-posts'){other_folder='facebook-feed';if(document.querySelector(".sk-ww-facebook-feed")){var element=document.getElementsByClassName("sk-ww-facebook-feed")[0];element.classList.add("sk-ww-facebook-page-posts")}} 460other_result=src_str.search(other_folder);search_result=src_str.search(folder_name);if(search_result>=1||other_result>=1){var src_arr=src_str.split(folder_name);app_url=src_arr[0];app_url=app_url.replace("displaysocialmedia.com","sociablekit.com");if(app_url.search("local")>=1){app_backend_url="http://localhost:3000/v1/";app_url="https://localtesting.com/SociableKIT_Widgets/";app_file_server_url="https://localtesting.com/SociableKIT_FileServer/feed/";sk_app_url="https://localtesting.com/SociableKIT/";sk_api_url="http://127.0.0.1:8000/";sk_img_url="https://localtesting.com/SociableKIT_Data_Image/";sk_fb_sync_url="https://localtesting.com/SociableKIT_Facebook_Sync/";sk_scrolls_url="https://localtesting.com/WidgetAnalytics/scrolls/";sk_views_url="https://localtesting.com/WidgetAnalytics/views/";sk_clicks_url="https://localtesting.com/WidgetAnalytics/clicks/";sk_yt_syc_url="https://localtesting.com/SociableKIT_YouTube_Sync/"}else{app_url="https://widgets.sociablekit.com/";sk_scrolls_url="https://scrolls.sociablekit.com/";sk_views_url="https://views.sociablekit.com/";sk_clicks_url="https://clicks.sociablekit.com/"}}}} 461var current_host=(window.location.hostname||"").toLowerCase();if(current_host==="localtesting.com"||current_host.indexOf("localtesting")!==-1){app_url="https://localtesting.com/SociableKIT_Widgets/";app_file_server_url="https://localtesting.com/SociableKIT_FileServer/feed/"}else if(current_host==="localhost"||current_host==="127.0.0.1"){app_url=window.location.protocol+"//"+window.location.host+"/SociableKIT_Widgets/"} 462return{"app_url":app_url,"app_backend_url":app_backend_url,"app_file_server_url":app_file_server_url,"sk_api_url":sk_api_url,"sk_app_url":sk_app_url,"sk_img_url":sk_img_url,"sk_scrolls_url":sk_scrolls_url,"sk_views_url":sk_views_url,"sk_clicks_url":sk_clicks_url,"sk_yt_syc_url":sk_yt_syc_url,"sk_fb_sync_url":sk_fb_sync_url}} 463function getEnvironmentUrls(widgetState,key){const env_urls=skGetEnvironmentUrls(key);widgetState.app_url=env_urls.app_url;widgetState.app_backend_url=env_urls.app_backend_url;widgetState.app_file_server_url=env_urls.app_file_server_url;widgetState.sk_img_url=env_urls.sk_img_url;widgetState.sk_app_url=env_urls.sk_app_url;widgetState.sk_api_url=env_urls.sk_api_url;widgetState.sk_clicks_url=env_urls.sk_clicks_url;widgetState.sk_scrolls_url=env_urls.sk_scrolls_url;widgetState.sk_views_url=env_urls.sk_views_url;widgetState.sk_yt_syc_url=env_urls.sk_yt_syc_url} 464function renderClick(widget,widgetState){const{sk_clicks_url,widget_data}=widgetState;const{solution_info,settings,user_info}=widget_data;let user_id=(solution_info&&solution_info.user_id)||(settings&&settings.user_id)||(user_info&&user_info.user_id);if(solution_info&&solution_info.status&&![1,6,7].includes(parseInt(solution_info.status))){return!1} 465widget.addEventListener('click',(event)=>{const target=event.target;let elementType='';let elementContent='';elementType=target.tagName.toLowerCase();if(target.tagName==='BUTTON'||target.tagName==='A'){elementContent=target.innerText.trim()||target.getAttribute('href')||'Unnamed Element'}else if(target.tagName==='IMG'){elementContent=target.getAttribute('alt')||target.getAttribute('src')||'Unnamed Image'}else if(target.tagName==='VIDEO'||target.tagName==='AUDIO'){elementContent=target.getAttribute('src')||'Unnamed Media'}else if(target.tagName==='INPUT'||target.tagName==='TEXTAREA'){elementContent=target.value||'Unnamed Input'}else{elementContent=(target.innerText?target.innerText.trim():'')||target.className||('Unnamed '+elementType)} 466const widgetId=widget.getAttribute('data-embed-id');if(elementType){fetch(sk_clicks_url+'track-widget-click.php',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({widgetId:widgetId,userId:user_id,url:getCurrentUrl(),elementType,elementContent,}),}).then((response)=>response.json()).then((data)=>console.log('Click logged:',data)).catch((error)=>console.error('Error logging click:',error))}})}
467function renderScroll(widget,widgetState){const{sk_scrolls_url,widget_data}=widgetState;const{solution_info,settings,user_info}=widget_data;let user_id=(solution_info&&solution_info.user_id)||(settings&&settings.user_id)||(user_info&&user_info.user_id);if(solution_info&&solution_info.status&&![1,6,7].includes(parseInt(solution_info.status))){return!1} 468let scrollCount=0;let scrollTimeout;let uniqueId=null;const widgetId=widget.getAttribute('data-embed-id');try{uniqueId=sessionStorage.getItem('unique_id')||generateUniqueId();if(!sessionStorage.getItem('unique_id')){sessionStorage.setItem('unique_id',uniqueId)}}catch(e){uniqueId=generateUniqueId()} 469window.addEventListener('scroll',()=>{scrollCount++;clearTimeout(scrollTimeout);scrollTimeout=setTimeout(sendScrollData,2000)});function sendScrollData(){if(scrollCount>0){fetch(sk_scrolls_url+'track-widget-scroll.php',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({widgetId:widgetId,userId:user_id,scrollCount:scrollCount,url:getCurrentUrl(),uniqueId:uniqueId})}).then(response=>response.json()).then(data=>console.log('Scroll Server Response:',data)).catch(error=>console.error('Error:',error));scrollCount=0}}} 470function generateUniqueId(){const currentDate=new Date().toISOString().split('T')[0];return'USER:'+(Math.random().toString(36).substr(2,16)).toUpperCase()+currentDate} 471async function renderViews(widget,widgetState){const embedId=widgetState&&widgetState.embedId;if(!embedId)return;if(window.__skViewsTracked==null)window.__skViewsTracked=new Set();if(window.__skViewsInflight==null)window.__skViewsInflight=new Set();if(window.__skViewsTracked.has(embedId))return;if(window.__skViewsInflight.has(embedId))return;window.__skViewsInflight.add(embedId);try{window.__skViewsTracked.add(embedId);const{sk_views_url,widget_data}=widgetState;const{solution_info,settings,user_info}=widget_data;let user_id=(solution_info&&solution_info.user_id)||(settings&&settings.user_id)||(user_info&&user_info.user_id);let status=(solution_info&&solution_info.status)||(settings&&settings.status)||(user_info&&user_info.status);if(solution_info&&solution_info.status&&![1,6,7].includes(parseInt(solution_info.status))){return!1} 472let uniqueId=null;const widgetId=widget.getAttribute('data-embed-id');try{uniqueId=sessionStorage.getItem('unique_id')||generateUniqueId();if(!sessionStorage.getItem('unique_id')){sessionStorage.setItem('unique_id',uniqueId)}}catch(e){uniqueId=generateUniqueId()} 473const ipAddress=uniqueId;const payload={widgetId,userId:user_id,viewsCount:1,url:getCurrentUrl(),ipAddress,status,};const trackResponse=await fetch(sk_views_url+'track-widget-views.php',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload),});const responseData=await trackResponse.json();console.log('Views Server Response:',responseData)}catch(error){console.error('Error in renderViews:',error)}finally{window.__skViewsInflight.delete(embedId)}} 474function skLoader(container){const loaderHTML='<div class=\'sk-widget-loader\' style=\'text-align:center; width:100%; height:auto;\'>'+'<svg xmlns="http://www.w3.org/2000/svg" style="margin: auto; display: block; shape-rendering: auto;" width="138px" height="138px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">'+'<circle cx="50" cy="50" fill="none" stroke="#1F67ED" stroke-width="5" r="23" stroke-dasharray="108.38 38.13">'+'<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1.6s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>'+'</circle>'+'</svg>'+'</div>';const showLoader=()=>{const loader=container.querySelector('.sk-widget-loader');if(!loader){container.insertAdjacentHTML('afterbegin',loaderHTML)}} 475const hideLoader=({offset}={})=>{const loader=container.querySelector('.sk-widget-loader');if(loader){if(offset){setTimeout(()=>{loader.style.display='none'},offset)}else{loader.style.display='none'}}} 476return{showLoader,hideLoader}} 477function addLoader(widget,widgetState){widget.insertAdjacentHTML('beforeend','<div class=\'first_loading_animation\' style=\'text-align:center; width:100%;\'><img src=\''+widgetState.sk_app_url+'images/loader.svg\' class=\'loading-img\' style=\'width:auto !important; display: inline-block !important;\' /></div>')} 478function trackImageLoadErrors(widget,widgetState,title='Image load failed'){if(!widget)return;const widget_data=(widgetState&&widgetState.widget_data)||{};const solution_info=widget_data.solution_info||{};const settings=widget_data.settings||{};const user_info=widget_data.user_info||{};const embed_id=solution_info.embed_id||settings.embed_id||user_info.embed_id||widget.getAttribute('data-embed-id');if(solution_info.status&&![1,6,7,13].includes(parseInt(solution_info.status))){return!1} 479if(widget.__skImageErrorTracked)return;widget.__skImageErrorTracked=!0;const current_url=getCurrentUrl();const sk_api_url=current_url.indexOf('local')!==-1?"http:localhost:8000/":"https://api.sociablekit.com/";const failedSrcs=new Set();const failedImages=new Set();let alertTimeout;const PROBE_LIMIT=5;const PROBE_TIMEOUT_MS=8000;const getTrackableImageSrc=(img)=>{const src=(img.currentSrc||img.src||'').trim();if(!src)return'';try{const pathname=new URL(src,document.baseURI).pathname;return/\.(jpe?g|png|webp)$/i.test(pathname)?src:''}catch(e){const pathname=src.split(/[?#]/)[0];return/\.(jpe?g|png|webp)$/i.test(pathname)?src:''}};const allowsRangeProbe=(src)=>{try{const host=new URL(src,document.baseURI).hostname;return host===window.location.hostname||/(^|\.)sociablekit\.com$/i.test(host)}catch(e){return!1}};const probeIsStillBroken=(src)=>new Promise((resolve)=>{let settled=!1;let timer;const finish=(broken)=>{if(settled)return;settled=!0;clearTimeout(timer);resolve(broken)};timer=setTimeout(()=>finish(!1),PROBE_TIMEOUT_MS);const imageProbe=()=>{const probe=new Image();probe.onload=()=>finish(!1);probe.onerror=()=>finish(!0);probe.src=src};if(!allowsRangeProbe(src)){imageProbe();return} 480try{fetch(src,{method:'GET',headers:{Range:'bytes=0-0'},cache:'no-store'}).then((response)=>finish(response.status>=400)).catch(imageProbe)}catch(e){imageProbe()}});const sendAlert=async()=>{const candidates=[];
480failedImages.forEach((img)=>{const stillBroken=img.complete&&img.naturalWidth===0;if(!stillBroken||!img.isConnected||!widget.contains(img))return;const src=getTrackableImageSrc(img);if(src&&!candidates.includes(src)){candidates.push(src)}});failedImages.clear();if(candidates.length===0)return;if(navigator.onLine===!1)return;const probed=candidates.slice(0,PROBE_LIMIT);const results=await Promise.all(probed.map(probeIsStillBroken));const confirmed=probed.filter((src,index)=>results[index]);if(confirmed.length===0)return;const failedCount=confirmed.length===probed.length?candidates.length:confirmed.length;const brokenImages=confirmed.slice(0,3);const message="Broken Images:\n"+brokenImages.join("\n");const store_image_error_url=sk_api_url+"api/devs/loading-image-error?"+new URLSearchParams({message:message,image_count:failedCount,broken_images:JSON.stringify(brokenImages),page_location:current_url,type_name:title||'Image load failed',embed_id:embed_id||'',}).toString();try{fetch(store_image_error_url,{method:'GET',keepalive:!0}).catch(()=>{})}catch(e){}};const handleImageError=(event)=>{const target=event.target;if(!target||target.tagName!=='IMG'||!widget.contains(target))return;const src=getTrackableImageSrc(target);if(!src)return;if(src&&failedSrcs.has(src))return;if(src)failedSrcs.add(src);failedImages.add(target);clearTimeout(alertTimeout);alertTimeout=setTimeout(()=>{sendAlert().catch(()=>{})},3000)};widget.addEventListener('error',handleImageError,!0)} 481async function sendGchatAlert(payload,widgetState){const{sk_app_url,widget_data}=widgetState;const{embed_id}=widget_data.solution_info;let baseUrl="https://alert.sociablekit.com/google-alert.php";const localIdentifiers=["localhost","127.0.0.1","localtesting"];if(localIdentifiers.some(id=>window.location.hostname.includes(id))){baseUrl="https://localtesting.com/Codalify_Alerts/google-alert.php"} 482try{const response=await fetch(baseUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload)});const result=await response.text();return result}catch(error){console.error("Error sending GChat alert:",error)}} 483function fixMasonryListener(widget,widgetState,realignMasonry){const wrapper=widget.querySelector('.sk-posts-masonry, .sk-events-masonry');if(!wrapper)return;let resizeTimeout;const debounceRealign=()=>{clearTimeout(resizeTimeout);resizeTimeout=setTimeout(()=>{realignMasonry(widget,widgetState)},100)};const resizeObserver=new ResizeObserver(()=>debounceRealign());const observeItems=()=>{wrapper.querySelectorAll('.sk-post-item').forEach(item=>{resizeObserver.observe(item)})};const mutationObserver=new MutationObserver(()=>{observeItems();debounceRealign()});resizeObserver.observe(wrapper);observeItems();mutationObserver.observe(wrapper,{childList:!0,subtree:!0})} 484function layoutOrderedMasonryItems(widget,widgetState,options={}){const wrapperSelector=options.wrapperSelector||'.sk-events-masonry, .sk-posts-masonry';const itemSelector=options.itemSelector||'.sk-event-item, .sk-post-item';const masonry=widget.querySelector(wrapperSelector);if(!masonry)return;const{settings}=widgetState.widget_data;const columns=typeof options.getColumns==='function'?options.getColumns(widget,widgetState):getMediaColumn(widget,widgetState,settings);widget.style.setProperty("--column-count",columns);const items=Array.from(masonry.querySelectorAll(itemSelector));if(!items.length){masonry.style.height="0px";return} 485const gap=options.gap!=null?options.gap:Math.max(16,parseInt(getComputedStyle(widget).getPropertyValue("--space-between-events"),10)||16);const width=masonry.getBoundingClientRect().width;const columnWidth=columns>1?(width-(columns-1)*gap)/columns:width;const columnHeights=Array(columns).fill(0);items.forEach((item)=>{item.style.position="absolute";item.style.width=columnWidth+"px";item.style.left="0";item.style.top="0"});items.forEach((item,index)=>{const columnIndex=index%columns;item.style.top=columnHeights[columnIndex]+"px";item.style.left=columns>1?columnIndex*(columnWidth+gap)+"px":"0px";item.style.transform="";item.style.opacity="";columnHeights[columnIndex]+=item.offsetHeight+gap});masonry.style.height=Math.max(...columnHeights)+"px"} 486function fixOrderedMasonryListener(widget,widgetState,options={}){const wrapperSelector=options.wrapperSelector||'.sk-events-masonry, .sk-posts-masonry';
486const itemSelector=options.itemSelector||'.sk-event-item, .sk-post-item';const wrapper=widget.querySelector(wrapperSelector);if(!wrapper)return;if(typeof widgetState.orderedMasonryCleanup==='function'){widgetState.orderedMasonryCleanup()} 487let resizeTimeout;let isLayouting=!1;const observedItems=new WeakSet();const relayout=()=>{if(isLayouting)return;isLayouting=!0;layoutOrderedMasonryItems(widget,widgetState,options);requestAnimationFrame(()=>{isLayouting=!1})};const debounceRealign=()=>{clearTimeout(resizeTimeout);resizeTimeout=setTimeout(relayout,100)};const resizeObserver=new ResizeObserver(()=>{debounceRealign()});const observeItems=()=>{wrapper.querySelectorAll(itemSelector).forEach((item)=>{if(!observedItems.has(item)){resizeObserver.observe(item);observedItems.add(item)}})};const mutationObserver=new MutationObserver((mutations)=>{const hasChildChanges=mutations.some((mutation)=>mutation.type==='childList');if(!hasChildChanges)return;observeItems();debounceRealign()});resizeObserver.observe(wrapper);observeItems();mutationObserver.observe(wrapper,{childList:!0,subtree:!1,});widgetState.orderedMasonryCleanup=()=>{clearTimeout(resizeTimeout);resizeObserver.disconnect();mutationObserver.disconnect();widgetState.orderedMasonryCleanup=null}} 488function observeImages(img,callback){if(img.tagName==='IMG'){if(img.complete){callback()}else{img.addEventListener('load',callback)}}};function debounceGlobal(func,delay){let timeoutId;return function(...args){const context=this;clearTimeout(timeoutId);timeoutId=setTimeout(()=>{func.apply(context,args)},delay)}} 489function fixMasonryGlobal(widget,widgetState){const timeouts=[0,1000,3000,5000,8000,10000];timeouts.forEach(delay=>{setTimeout(()=>realignMasonry(widget,widgetState),delay)})} 490function decodeHtmlEntities(str){const txt=document.createElement("textarea");txt.innerHTML=str;return txt.value} 491function initUpdatePreview(widget,widgetState,renderLayout,applySettings,classNames={}){const{body='.sk-posts-body',header='.sk-posts-header',footer='.sk-posts-footer'}=classNames;window.addEventListener("previewDataUpdated",(event)=>{const previewData=event.detail.previewData;widgetState.widget_data.settings={...widgetState.widget_data.settings,...previewData.settings,};if(widget){widget.innerHTML=""} 492if(widgetState.currentPage&&widgetState.currentPage>1){widgetState.currentPage=1} 493widgetState.hasBeenEdited=!0 494const popupNodes=document.querySelectorAll('.sk-posts-popup, .sk-events-popup, .sk-popup');if(popupNodes.length>0){popupNodes.forEach((el)=>{el.remove()});document.body.classList.remove('sk-widget-popup-open','sk-ln-rec-popup-open','sk-ln-profile-popup-open','sk-ln-jobs-popup-open')} 495document.body.style.overflow='';renderLayout(widget,widgetState);applySettings(widget,widgetState);const postsBody=widget.querySelector(body);if(postsBody)postsBody.style.visibility="visible";const postsHeader=widget.querySelector(header);if(postsHeader)postsHeader.style.visibility="visible";const postsFooter=widget.querySelector(footer);if(postsFooter)postsFooter.style.visibility="visible";if(window.location.pathname.includes('widgets/update')){widget.classList.add('--sk-disable-anim')}})} 496function renderedCharCount(htmlString){const tempDiv=document.createElement("div");tempDiv.innerHTML=htmlString;const renderedText=tempDiv.textContent||tempDiv.innerText||"";return renderedText.length} 497function getCurrentUrl(){const isInIframe=window.self!==window.top;let embedUrl=isInIframe?(document.referrer||window.location.href):window.location.href;embedUrl=(embedUrl||"").split('?')[0];return embedUrl} 498function applyImageFallback(img,sources){const validSources=sources.filter(Boolean);if(!img||validSources.length===0)return;let index=0;img.src=validSources[index];img.onerror=()=>{index++;if(index<validSources.length){img.src=validSources[index]}else{img.onerror=null}}} 499function decodeFontString(font){const textarea=document.createElement('textarea');textarea.innerHTML=font;return textarea.value} 500function isSafeFont(font){const decodedFont=decodeFontString(font);var web_safe_fonts=["Arial","Inherit","Impact, Charcoal, sans-serif","'Palatino Linotype', 'Book Antiqua', Palatino, serif","Century Gothic, sans-serif","'Lucida Sans Unicode', 'Lucida Grande', sans-serif","Verdana, Geneva, sans-serif","Copperplate, 'Copperplate Gothic Light', fantasy","'Courier New', C
500ourier, monospace","Georgia, Serif"];return web_safe_fonts.indexOf(decodedFont)!==-1} 501function getTwitchPlayerParents(){console.log('getTwitchPlayerParents');let parentDomain="";try{const hostname=new URL(window.location.href).hostname||"";const parts=hostname.split(".").filter(Boolean);if(parts.length>=2){parentDomain=parts.slice(-2).join(".")}else{parentDomain=hostname}}catch(e){parentDomain=""} 502const wwwParentDomain=parentDomain?"www."+parentDomain:"";return Array.from(new Set(["widgets.sociablekit.com","www.widgets.sociablekit.com","sociablekit.com","www.sociablekit.com","da.sociablekit.com","www.twitch.tv","twitch.tv","twitchmetrics.net","www.twitchmetrics.net",parentDomain,wwwParentDomain,"www.takingitpersonally.net","www.globalmusicradio.co.uk","sites.google.com","gstatic.com","www.gstatic.com","www.thetadpoleexperiment.org","thetadpoleexperiment.org","www.aquaticgenlab.com","www.gnosisgod.com","www.lovepuppygames.com","882023065-atari-embeds.googleusercontent.com","localhost",].filter(Boolean)))} 503async function updateWidgetLayoutValues(embed_id,sk_api_url){try{const response=await fetch(sk_api_url+"api/toggle-layout",{method:"POST",headers:{"Content-Type":"application/json",},body:JSON.stringify({embed_id:embed_id,layout:1})});if(!response.ok){throw new Error("Network response was not ok")} 504const data=await response.json();if(!data.embed_id||!data.embed){throw new Error(`Toggle layout failed: embed_id or embed is null. Response: ${JSON.stringify(data)}`)} 505return data}catch(err){throw Error("Failed to toggle layout: "+err.message)}}function skGetBranding(sk,widgetState){let userInfo="";let widgetSettings="";if(widgetState.widget_data){userInfo=widgetState.widget_data.user_info;widgetSettings=widgetState.widget_data.settings}else{var embed_id="";if(sk&&typeof sk.attr==="function"){embed_id=sk.attr("embed-id")||sk.attr("data-embed-id")||""} 506if(!embed_id&&sk&&sk.getAttribute){embed_id=sk.getAttribute("embed-id")||sk.getAttribute("data-embed-id")||""} 507if(typeof original_data==="undefined"||!original_data){return''} 508let originalData=original_data[embed_id]!=null?original_data[embed_id]:original_data;if(original_data.settings){userInfo=original_data.user_info;widgetSettings=original_data.settings}else if(originalData.settings){userInfo=originalData.user_info;widgetSettings=originalData.settings}} 509if(sk&&sk.querySelector&&sk.querySelector('.sk_branding')!==null){return""} 510if(sk&&sk.find&&sk.find('.sk_branding').length>0){return""} 511if(!userInfo)return"";if(userInfo.show_branding===1||userInfo.show_branding==="true"||userInfo.show_branding===!0){const fontFamily=widgetSettings.font_family;let linkColor=widgetSettings.details_link_color||"rgb(52, 128, 220)";const detailsBgColor=widgetSettings.details_bg_color;let widget_type_slug=slugifyStringBranding(userInfo.solution_name);let website_builder_slug=slugifyStringBranding(userInfo.website_builder||'website');const supportedBuilders=["wordpress","wix","squarespace","google-sites","shopify","sharepoint","webflow","godaddy","weebly","adobe-portfolio","html"];let website_builder_for_link="website";for(let b of supportedBuilders){if(website_builder_slug.includes(b)){website_builder_for_link=website_builder_slug;break}} 512let widget_type_name_for_link=userInfo.solution_name;if(widget_type_slug.includes("linkedin")){widget_type_slug="linkedin-feed";widget_type_name_for_link="LinkedIn Feed"}else if(widget_type_slug.includes("facebook")){widget_type_slug="facebook-feed";widget_type_name_for_link="Facebook Feed"}else if(widget_type_slug.includes("instagram")){widget_type_slug="instagram-feed";widget_type_name_for_link="Instagram Feed"}else if(widget_type_slug==="x"||widget_type_slug.includes("twitter")){widget_type_slug="x-feed";widget_type_name_for_link="X Feed"}else if(widget_type_slug.includes("tiktok")){widget_type_slug="tiktok-feed";widget_type_name_for_link="TikTok Feed"} 513const builderIsSupported=supportedBuilders.includes(website_builder_slug);let widgetId=userInfo.embed_id!=null?userInfo.embed_id:embed_id;let widgetIdStr=String(widgetId!=null?widgetId:"");let lastDigit=parseInt(widgetIdStr.slice(-1),10);if(isNaN(lastDigit))lastDigit=0;const productUrl="https://www.sociablekit.com/"+widget_type_slug+"-widget/";const tutorialUrl=builderIsSupported?"https://www.sociablekit.com/tutorials/embed-"+widget_type_slug+"-"+website_builder_for_link+"/":"https://www.sociablekit.com/tutorials/embed-"+widget_type_slug+"-website/";const freeUrl="https://www.sociablekit.com/free-widgets/free-"+widget_type_slug+"-widget-website/";let linkUrl,tutorial_link_text;if(lastDigit<=2){linkUrl=productUrl;tutorial_link_text=widget_type_name_for_link+" Widget by SociableKIT"}else if(lastDigit<=4){linkUrl=productUrl;tutorial_link_text="SociableKIT "+widget_type_name_for_link+" Widget"}else if(lastDigit<=8){linkUrl=tutorialUrl;tutorial_link_text=builderIsSupported?"Embed "+widget_type_name_for_link+" on "+userInfo.website_builder+" with SociableKIT":"Embed "+widget_type_name_for_link+" on your website with SociableKIT"}else{linkUrl=freeUrl;tutorial_link_text="Free "+widget_type_name_for_link+" Widget by SociableKIT"} 514userInfo.tutorial_link=linkUrl;let sk_branding_css="margin-top:20px; padding:10px; display:block !important; text-align:center; text-decoration: none !important; color:#555; font-family:"+fontFamily+"; font-size:15px; visibility: visible;";let tutorial_link_css="text-underline-position:under; color:"+linkColor+";font-size:15px;
514display:block !important;";let html="<div class='sk_branding' style='"+sk_branding_css+"'>"+"<a class='tutorial_link --custom-branding' href='"+userInfo.tutorial_link+"' target='_blank' style='"+tutorial_link_css+"'>"+tutorial_link_text+"</a>"+"</div>";return html} 515return""} 516function slugifyStringBranding(str){str=str.replace(/^\s+|\s+$/g,"");str=str.toLowerCase();var from="ÃÃÃÃÃà ÄÃÄÄÃÄÃÃÃẼÄÈÃÃÃÃÅÃÃÃÃÃÃÃÅÅŠŤÃÅ®ÃÃÃߎáäâà ãåÄçÄÄéÄëèêẽÄÈÃìîïÅñóöòôõøðÅÅšťúůüùûýÿžþÃÄÄÃÃa·/_,:;";var to="AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa------";for(var i=0,l=from.length;i<l;i++){str=str.replace(new RegExp(from.charAt(i),"g"),to.charAt(i))} 517str=str.replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-");return str}var env_urls=skGetEnvironmentUrls('facebook-page-posts');var app_url=env_urls.app_url;var app_backend_url=env_urls.app_backend_url;var app_file_server_url=env_urls.app_file_server_url;var sk_img_url=env_urls.sk_img_url;var sk_app_url=env_urls.sk_app_url;var sk_api_url=env_urls.sk_api_url;var sk_fb_sync_url=env_urls.sk_fb_sync_url;var eventLoaded=0;function loadScript(src,callback){let scriptName=src.split("/").slice(-3).join('/');let scriptIsLoaded=document.querySelectorAll(`script[src*="${scriptName}"]`) 518if(scriptIsLoaded.length>0){return} 519const script=document.createElement('script');script.src=src;script.type='text/javascript';if(callback){script.onload=function(){callback()}} 520document.body.appendChild(script)} 521window.addEventListener("DOMContentLoaded",function(){initializeWidget()});setTimeout(function(){if(eventLoaded==0){initializeWidget()}},3000);function initializeWidget(){let url="https://widgets.sociablekit.com/";const localHost=['127.0.0.1',"::1"];if(window.location.hostname.includes('localtesting')||window.location.hostname.includes('localhost')||window.location.hostname.includes('127.0.0.1')){url="https://localtesting.com/SociableKIT_Widgets/"} 522document.querySelectorAll('.sk-ww-facebook-page-posts').forEach(function(el){eventLoaded=1;let fb_event=el;let embed_id=getDsmEmbedId(fb_event);const{showLoader,hideLoader}=skLoader(fb_event);showLoader();if(!embed_id){const canonicalHref=document.querySelector('[rel="canonical"]')?.getAttribute('href');if(canonicalHref&&canonicalHref.indexOf("sti29.fr")!==-1){embed_id=108211}} 523let new_fb_event_width=window.innerHeight+100;fb_event.height=new_fb_event_width;var json_settings_url=app_file_server_url.replace('feed','')+"settings/"+embed_id+"/settings.json?nocache="+(new Date()).getTime();var json_feed_url=app_file_server_url+embed_id+".json?nocache="+(new Date()).getTime();const loader=fb_event.querySelector('.first_loading_animation');fetch(json_feed_url,{method:'get'}).then(function(response){if(!response.ok){console.error("Failed to fetch data");loader.remove();return} 524return response.json().catch((error)=>{loader.remove();return{}})}).then(function(data){const{embed_id}=data.settings 525if(!window.sk_embed_data){window.sk_embed_data={};window.sk_embed_data[embed_id]=data}else{window.sk_embed_data[embed_id]=data} 526if(data&&data.solution_info&&data.bio){if(data.solution_info.use_new_layout==1){el.setAttribute('data-ui','new') 527loadScript(url+'facebook-page-posts/new/widget.js')}else{el.setAttribute('data-ui','old');loadScript(url+'facebook-page-posts-old/widget.js',hideLoader)}}else{hideLoader();generateSolutionMessage(fb_event,embed_id,sk_api_url)}}).catch(function(err){hideLoader();generateSolutionMessage(fb_event,embed_id,sk_api_url)})})};function getDsmEmbedId(sk_fb_event){var embed_id=sk_fb_event.getAttribute('embed-id');if(embed_id==undefined){embed_id=sk_fb_event.getAttribute('data-embed-id')} 528return embed_id}}(window,document))
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.