jQuery(function (){
if(jQuery(".bwg-container").length){
var html='<div class="twb_admin_bar_menu_header">';
html +='<img class="twb_menu_logo" src="' + twb.plugin_url + '/assets/images/logo_white.svg" />';
html +='<div class="twb_menu_logo">Optimize Images</div>';
html +='</div>';
jQuery(".twb_admin_bar_menu").html(html).on("click", function (){
window.open(twb.href, '_blank');
});
jQuery(".twb_admin_bar_menu_main").remove();
}
twb_inprogress=false;
jQuery(".twb-notoptimized").each(function (){
if(jQuery(this).data("status")=='inprogress'){
twb_disable_check();
}});
jQuery(".twb-notoptimized .twb_check_score_button").on("click", function (){
if(!twb_inprogress){
twb_check_score(this);
}});
jQuery("th[id^='twb-speed-']").hover(function (){
jQuery(this).find(".twb-dismiss-container").removeClass("twb-hidden");
},
function (){
jQuery(this).find(".twb-dismiss-container").addClass("twb-hidden");
});
jQuery(".twb-see-score").hover(function (){
jQuery(this).parent().parent().find(".twb-score-container").removeClass("twb-hidden");
},
function (){
jQuery(this).parent().parent().find(".twb-score-container").addClass("twb-hidden");
});
jQuery(".twb-score-container:not(.twb_admin_bar_menu_content .twb-score-container), .twb-score-disabled-container").hover(function (){
jQuery(this).removeClass("twb-hidden");
},
function (){
jQuery(this).addClass("twb-hidden");
});
jQuery(".twb-score-circle").each(function (){
twb_draw_score_circle(this);
});
jQuery("#wp-admin-bar-twb_adminbar_info").mouseenter(function(){
jQuery(".twb_admin_bar_menu_main .twb-score-container").removeClass("twb-hidden");
jQuery(".twb_admin_bar_menu_main").removeClass("twb-hidden");
}).mouseleave(function(){
jQuery(".twb_admin_bar_menu_main").addClass("twb-hidden");
});
jQuery('.twb-score-circle').each(function (){
twb_draw_score_circle(this);
});
if(jQuery(".twb_admin_bar_menu.twb_backend span").hasClass("twb_backend_optimizing_logo")){
twb_run_notif_check=setInterval(twb_run_notif_check, 30000);
}});
function twb_run_notif_check(){
jQuery.ajax({
type: "POST",
url: twb.ajax_url,
data: {
action: "twb_notif_check",
twb_nonce: twb.nonce,
}}).success(function (results){
var result=jQuery.parseJSON(results);
if(result.html!=""){
if(result.changeLogo==1){
jQuery(".twb_admin_bar_menu_header span").addClass("twb_counted");
}
jQuery("#wp-admin-bar-twb_adminbar_info").append(result.html);
jQuery(".twb_admin_bar_menu_content .twb-score-container").removeClass("twb-hidden");
jQuery(".twb_admin_bar_menu_content .twb-score-container .twb-score-circle").each(function (){
twb_draw_score_circle(this);
});
clearInterval(twb_run_notif_check);
}}).error(function (){
clearInterval(twb_run_notif_check);
});
}
function twb_disable_check(){
twb_inprogress=true;
jQuery(".twb-notoptimized").hover(function (){
jQuery(this).parent().find(".twb-score-disabled-container").removeClass("twb-hidden");
},
function (){
jQuery(this).parent().find(".twb-score-disabled-container").addClass("twb-hidden");
});
}
function twb_check_score(that){
var post_id=jQuery(that).data("post_id");
var parent=jQuery(that).parent().parent().parent();
jQuery(".twb_admin_bar_menu.twb_frontend").addClass("twb_score_inprogress");
if(parent.find(".twb-optimized").hasClass("twb-hidden")){
parent.find(".twb-optimizing").removeClass("twb-hidden");
}else{
parent.find(".twb-score-overlay").removeClass("twb-hidden");
parent.find(".twb-score-overlay div").removeClass("twb-reload").addClass("twb-loader");
}
parent.find(".twb-notoptimized").addClass("twb-hidden");
if(parent.hasClass("twb_elementor_settings_content")){
jQuery(".twb_elementor_control_title").text(twb.checking).removeClass("twb_not_optimized").prepend("<span class='twb_inprogress'></span>");
}
twb_disable_check();
jQuery.ajax({
url: twb.ajax_url,
type: "POST",
dataType: 'json',
data: {
action: "twb_check_score",
post_id: post_id,
twb_nonce: twb.nonce
},
success: function (data){
if(data.error){
parent.find(".twb-score-overlay").removeClass("twb-hidden");
parent.find(".twb-score-overlay div").removeClass("twb-loader").addClass("twb-reload");
}else{
parent.find(".twb-score-overlay").addClass("twb-hidden");
var desktop=parent.find(".twb-score-desktop").find(".twb-score-circle");
desktop.data({
"score": data.desktop_score,
"tti": data.desktop_tti,
});
twb_draw_score_circle(desktop);
var mobile=parent.find(".twb-score-mobile").find(".twb-score-circle");
mobile.data({
"score": data.mobile_score,
"tti": data.mobile_tti,
});
twb_draw_score_circle(mobile);
}},
error: function (xhr, textStatus, errorThrown){
parent.find(".twb-score-overlay").removeClass("twb-hidden");
parent.find(".twb-score-overlay div").removeClass("twb-loader").addClass("twb-reload");
},
complete: function (xhr, textStatus){
parent.find(".twb-optimizing").addClass("twb-hidden");
parent.find(".twb-optimized").removeClass("twb-hidden");
jQuery("#wpadminbar .twb-optimized .twb-score-container").removeClass("twb-hidden");
jQuery("#wpadminbar .twb_admin_bar_menu").removeClass("twb_score_inprogress");
jQuery("#wpadminbar .twb_menu_logo").remove();
jQuery("#wpadminbar .twb_not_optimized_logo").removeClass("twb-hidden");
jQuery("#wpadminbar .twb_admin_bar_menu_header").addClass("twb_not_optimized");
twb_inprogress=false;
jQuery(".twb-notoptimized").hover(function (){
jQuery(this).parent().find(".twb-score-disabled-container").addClass("twb-hidden");
});
if(parent.hasClass("twb_elementor_settings_content")){
jQuery(".twb_elementor_control_title").text(twb.notoptimized).remove("span.twb_inprogress").addClass("twb_not_optimized");
}}
});
}
function twb_draw_score_circle(that){
var score=parseInt(jQuery(that).data('score'));
var size=parseInt(jQuery(that).data('size'));
var thickness=parseInt(jQuery(that).data('thickness'));
var color=score <=49 ? "rgb(253, 60, 49)":(score >=90 ? "rgb(12, 206, 107)":"rgb(255, 164, 0)");
jQuery(that).parent().find('.twb-load-time').html(jQuery(that).data('tti'));
var _this=that;
if(typeof jQuery(_this).circleProgress!='function'){
return;
}
jQuery(_this).circleProgress({
value: score / 100,
size: size,
startAngle: -Math.PI / 4 * 2,
lineCap: 'round',
emptyFill: "rgba(255, 255, 255, 0)",
thickness: thickness,
fill: {
color: color
}}).on('circle-animation-progress', function (event, progress){
var content='<span class="twb-score0"></span>';
if(score!=0){
content=Math.round(score * progress);
}
jQuery(that).find('.twb-score-circle-animated').html(content).css({"color": color});
jQuery(that).find('canvas').html(Math.round(score * progress));
});
}
function twb_add_elementor_button(){
window.elementor.modules.layouts.panel.pages.menu.Menu.addItem({
name: twb.title,
icon: "twb-element-menu-icon",
title: twb.title,
type: "page",
callback: ()=> {
try {
window.$e.route("panel/page-settings/twb_optimize")
} catch (e){
window.$e.route("panel/page-settings/settings"), window.$e.route("panel/page-settings/twb_optimize")
}}
}, "more")
}
jQuery(window).on("elementor:init", ()=> {
window.elementor.on("panel:init", ()=> {
setTimeout(twb_add_elementor_button)
})
});
(function($){
'use strict';
/**
* All of the code for your public-facing JavaScript source
* should reside in this file.
*
* Note: It has been assumed you will write jQuery code here, so the
* $ function reference has been prepared for usage within the scope
* of this function.
*
* This enables you to define handlers, for when the DOM is ready:
*
* $(function(){
*
* });
*
* When the window is loaded:
*
* $(window).load(function(){
*
* });
*
* ...and/or other possibilities.
*
* Ideally, it is not considered best practise to attach more than a
* single DOM-ready or window-load handler for a particular page.
* Although scripts in the WordPress core, Plugins and Themes may be
* practising this, we should strive to set a better example in our own work.
*/
})(jQuery);
!function(t,e){"use strict";function r(r,a,i,u,l){function f(){L=t.devicePixelRatio>1,i=c(i),a.delay>=0&&setTimeout(function(){s(!0)},a.delay),(a.delay<0||a.combined)&&(u.e=v(a.throttle,function(t){"resize"===t.type&&(w=B=-1),s(t.all)}),u.a=function(t){t=c(t),i.push.apply(i,t)},u.g=function(){return i=n(i).filter(function(){return!n(this).data(a.loadedName)})},u.f=function(t){for(var e=0;e<t.length;e++){var r=i.filter(function(){return this===t[e]});r.length&&s(!1,r)}},s(),n(a.appendScroll).on("scroll."+l+" resize."+l,u.e))}function c(t){var i=a.defaultImage,o=a.placeholder,u=a.imageBase,l=a.srcsetAttribute,f=a.loaderAttribute,c=a._f||{};t=n(t).filter(function(){var t=n(this),r=m(this);return!t.data(a.handledName)&&(t.attr(a.attribute)||t.attr(l)||t.attr(f)||c[r]!==e)}).data("plugin_"+a.name,r);for(var s=0,d=t.length;s<d;s++){var A=n(t[s]),g=m(t[s]),h=A.attr(a.imageBaseAttribute)||u;g===N&&h&&A.attr(l)&&A.attr(l,b(A.attr(l),h)),c[g]===e||A.attr(f)||A.attr(f,c[g]),g===N&&i&&!A.attr(E)?A.attr(E,i):g===N||!o||A.css(O)&&"none"!==A.css(O)||A.css(O,"url('"+o+"')")}return t}function s(t,e){if(!i.length)return void(a.autoDestroy&&r.destroy());for(var o=e||i,u=!1,l=a.imageBase||"",f=a.srcsetAttribute,c=a.handledName,s=0;s<o.length;s++)if(t||e||A(o[s])){var g=n(o[s]),h=m(o[s]),b=g.attr(a.attribute),v=g.attr(a.imageBaseAttribute)||l,p=g.attr(a.loaderAttribute);g.data(c)||a.visibleOnly&&!g.is(":visible")||!((b||g.attr(f))&&(h===N&&(v+b!==g.attr(E)||g.attr(f)!==g.attr(F))||h!==N&&v+b!==g.css(O))||p)||(u=!0,g.data(c,!0),d(g,h,v,p))}u&&(i=n(i).filter(function(){return!n(this).data(c)}))}function d(t,e,r,i){++z;var o=function(){y("onError",t),p(),o=n.noop};y("beforeLoad",t);var u=a.attribute,l=a.srcsetAttribute,f=a.sizesAttribute,c=a.retinaAttribute,s=a.removeAttribute,d=a.loadedName,A=t.attr(c);if(i){var g=function(){s&&t.removeAttr(a.loaderAttribute),t.data(d,!0),y(T,t),setTimeout(p,1),g=n.noop};t.off(I).one(I,o).one(D,g),y(i,t,function(e){e?(t.off(D),g()):(t.off(I),o())})||t.trigger(I)}else{var h=n(new Image);h.one(I,o).one(D,function(){t.hide(),e===N?t.attr(C,h.attr(C)).attr(F,h.attr(F)).attr(E,h.attr(E)):t.css(O,"url('"+h.attr(E)+"')"),t[a.effect](a.effectTime),s&&(t.removeAttr(u+" "+l+" "+c+" "+a.imageBaseAttribute),f!==C&&t.removeAttr(f)),t.data(d,!0),y(T,t),h.remove(),p()});var m=(L&&A?A:t.attr(u))||"";h.attr(C,t.attr(f)).attr(F,t.attr(l)).attr(E,m?r+m:null),h.complete&&h.trigger(D)}}function A(t){var e=t.getBoundingClientRect(),r=a.scrollDirection,n=a.threshold,i=h()+n>e.top&&-n<e.bottom,o=g()+n>e.left&&-n<e.right;return"vertical"===r?i:"horizontal"===r?o:i&&o}function g(){return w>=0?w:w=n(t).width()}function h(){return B>=0?B:B=n(t).height()}function m(t){return t.tagName.toLowerCase()}function b(t,e){if(e){var r=t.split(",");t="";for(var a=0,n=r.length;a<n;a++)t+=e+r[a].trim()+(a!==n-1?",":"")}return t}function v(t,e){var n,i=0;return function(o,u){function l(){i=+new Date,e.call(r,o)}var f=+new Date-i;n&&clearTimeout(n),f>t||!a.enableThrottle||u?l():n=setTimeout(l,t-f)}}function p(){--z,i.length||z||y("onFinishedAll")}function y(t,e,n){return!!(t=a[t])&&(t.apply(r,[].slice.call(arguments,1)),!0)}var z=0,w=-1,B=-1,L=!1,T="afterLoad",D="load",I="error",N="img",E="src",F="srcset",C="sizes",O="background-image";"event"===a.bind||o?f():n(t).on(D+"."+l,f)}function a(a,o){var u=this,l=n.extend({},u.config,o),f={},c=l.name+"-"+ ++i;return u.config=function(t,r){return r===e?l[t]:(l[t]=r,u)},u.addItems=function(t){return f.a&&f.a("string"===n.type(t)?n(t):t),u},u.getItems=function(){return f.g?f.g():{}},u.update=function(t){return f.e&&f.e({},!t),u},u.force=function(t){return f.f&&f.f("string"===n.type(t)?n(t):t),u},u.loadAll=function(){return f.e&&f.e({all:!0},!0),u},u.destroy=function(){return n(l.appendScroll).off("."+c,f.e),n(t).off("."+c),f={},e},r(u,l,a,f,c),l.chainable?a:u}var n=t.jQuery||t.Zepto,i=0,o=!1;n.fn.Lazy=n.fn.lazy=function(t){return new a(this,t)},n.Lazy=n.lazy=function(t,r,i){if(n.isFunction(r)&&(i=r,r=[]),n.isFunction(i)){t=n.isArray(t)?t:[t],r=n.isArray(r)?r:[r];for(var o=a.prototype.config,u=o._f||(o._f={}),l=0,f=t.length;l<f;l++)(o[t[l]]===e||n.isFunction(o[t[l]]))&&(o[t[l]]=i);for(var c=0,s=r.length;c<s;c++)u[r[c]]=t[0]}},a.prototype.config={name:"lazy",chainable:!0,autoDestroy:!0,bind:"load",threshold:500,visibleOnly:!1,appendScroll:t,scrollDirection:"both",imageBase:null,defaultImage:"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",placeholder:null,delay:-1,combined:!1,attribute:"data-src",srcsetAttribute:"data-srcset",sizesAttribute:"data-sizes",retinaAttribute:"data-retina",loaderAttribute:"data-loader",imageBaseAttribute:"data-imagebase",removeAttribute:!0,handledName:"handled",loadedName:"loaded",effect:"show",effectTime:0,enableThrottle:!0,throttle:250,beforeLoad:e,afterLoad:e,onError:e,onFinishedAll:e},n(t).on("load",function(){o=!0})}(window);