/**
* Start reading progress widget script
*/
(function($, elementor) {
'use strict';
var readingProgressWidget = function($scope, $) {
var $readingProgress = $scope.find('.bdt-reading-progress');
if (!$readingProgress.length) {
return;
}
var $settings = $readingProgress.data('settings');
jQuery(document).ready(function(){
var settings = {
borderSize: 10,
mainBgColor: '#E6F4F7',
lightBorderColor: '#A2ECFB',
darkBorderColor: '#39B4CC'
};
var colorBg = $settings.progress_bg; //'red'
var progressColor = $settings.scroll_bg; //'green';
var innerHeight, offsetHeight, netHeight,
self = this,
container = $($readingProgress),
borderContainer = 'bdt-reading-progress-border',
circleContainer = 'bdt-reading-progress-circle',
textContainer = 'bdt-reading-progress-text';
var getHeight = function () {
innerHeight = window.innerHeight;
offsetHeight = document.body.offsetHeight;
netHeight = offsetHeight - innerHeight;
};
var addEvent = function () {
var e = document.createEvent('Event');
e.initEvent('scroll', false, false);
window.dispatchEvent(e);
};
var updateProgress = function (percnt) {
var per = Math.round(100 * percnt);
var deg = per * 360 / 100;
if (deg <= 180) {
$('.' + borderContainer, container).css('background-image', 'linear-gradient(' + (90 + deg) + 'deg, transparent 50%, ' + colorBg + ' 50%),linear-gradient(90deg, ' + colorBg + ' 50%, transparent 50%)');
} else {
$('.' + borderContainer, container).css('background-image', 'linear-gradient(' + (deg - 90) + 'deg, transparent 50%, ' + progressColor + ' 50%),linear-gradient(90deg, ' + colorBg + ' 50%, transparent 50%)');
}
$('.' + textContainer, container).text(per + '%');
};
var prepare = function () {
$(container).html("
");
$('.' + borderContainer, container).css({
'background-color': progressColor,
'background-image': 'linear-gradient(91deg, transparent 50%,' + settings.lightBorderColor + '50%), linear-gradient(90deg,' + settings.lightBorderColor + '50%, transparent 50%'
});
$('.' + circleContainer, container).css({
'width': settings.width - settings.borderSize,
'height': settings.height - settings.borderSize
});
};
var init = function () {
prepare();
$(window).on('scroll', function () {
var getOffset = window.pageYOffset || document.documentElement.scrollTop,
per = Math.max(0, Math.min(1, getOffset / netHeight));
updateProgress(per);
});
$(window).on('resize', function () {
getHeight();
addEvent();
});
$(window).on('load', function () {
getHeight();
addEvent();
});
};
init();
});
};
// start progress with cursor
var readingProgressCursorSkin = function($scope, $) {
var $readingProgress = $scope.find('.bdt-progress-with-cursor');
if (!$readingProgress.length) {
return;
}
document.getElementsByTagName('body')[0].addEventListener('mousemove', function(n) {
t.style.left = n.clientX + 'px';
t.style.top = n.clientY + 'px';
e.style.left = n.clientX + 'px';
e.style.top = n.clientY + 'px';
i.style.left = n.clientX + 'px';
i.style.top = n.clientY + 'px';
});
var t = document.querySelector('.bdt-cursor'),
e = document.querySelector('.bdt-cursor2'),
i = document.querySelector('.bdt-cursor3');
function n(t) {
e.classList.add('hover'), i.classList.add('hover');
}
function s(t) {
e.classList.remove('hover'), i.classList.remove('hover');
}
s();
for (var r = document.querySelectorAll('.hover-target'), a = r.length - 1; a >= 0; a--) {
o(r[a]);
}
function o(t) {
t.addEventListener('mouseover', n);
t.addEventListener('mouseout', s);
}
$(document).ready(function() {
//Scroll indicator
var progressPath = document.querySelector('.bdt-progress-wrap path');
var pathLength = progressPath.getTotalLength();
progressPath.style.transition = progressPath.style.WebkitTransition = 'none';
progressPath.style.strokeDasharray = pathLength + ' ' + pathLength;
progressPath.style.strokeDashoffset = pathLength;
progressPath.getBoundingClientRect();
progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear';
var updateProgress = function() {
var scroll = $(window).scrollTop();
var height = $(document).height() - $(window).height();
var progress = pathLength - (scroll * pathLength / height);
progressPath.style.strokeDashoffset = progress;
};
updateProgress();
jQuery(window).on('scroll', updateProgress);
});
};
// end progress with cursor
// start progress horizontal
var readingProgressHorizontalSkin = function($scope, $) {
var $readingProgress = $scope.find('.bdt-horizontal-progress');
if (!$readingProgress.length) {
return;
}
$('#bdt-progress').progress({ size: '3px', wapperBg: '#eee', innerBg: '#DA4453' });
};
// end progress horizontal
// start progress back to top
var readingProgressBackToTopSkin = function($scope, $) {
var $readingProgress = $scope.find('.bdt-progress-with-top');
if (!$readingProgress.length) {
return;
}
var progressPath = document.querySelector('.bdt-progress-wrap path');
var pathLength = progressPath.getTotalLength();
progressPath.style.transition = progressPath.style.WebkitTransition = 'none';
progressPath.style.strokeDasharray = pathLength + ' ' + pathLength;
progressPath.style.strokeDashoffset = pathLength;
progressPath.getBoundingClientRect();
progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear';
var updateProgress = function() {
var scroll = jQuery(window).scrollTop();
var height = jQuery(document).height() - jQuery(window).height();
var progress = pathLength - (scroll * pathLength / height);
progressPath.style.strokeDashoffset = progress;
};
updateProgress();
jQuery(window).on('scroll', updateProgress);
var offset = 50;
var duration = 550;
jQuery(window).on('scroll', function() {
if (jQuery(this).scrollTop() > offset) {
jQuery('.bdt-progress-wrap').addClass('active-progress');
} else {
jQuery('.bdt-progress-wrap').removeClass('active-progress');
}
});
jQuery('.bdt-progress-wrap').on('click', function(event) {
event.preventDefault();
jQuery('html, body').animate({ scrollTop: 0 }, duration);
return false;
});
};
// end progress back to top
jQuery(window).on('elementor/frontend/init', function() {
elementorFrontend.hooks.addAction('frontend/element_ready/bdt-reading-progress.default', readingProgressWidget);
elementorFrontend.hooks.addAction('frontend/element_ready/bdt-reading-progress.bdt-progress-with-cursor', readingProgressCursorSkin);
elementorFrontend.hooks.addAction('frontend/element_ready/bdt-reading-progress.bdt-horizontal-progress', readingProgressHorizontalSkin);
elementorFrontend.hooks.addAction('frontend/element_ready/bdt-reading-progress.bdt-back-to-top-with-progress', readingProgressBackToTopSkin);
});
}(jQuery, window.elementorFrontend));
/**
* End reading progress widget script
*/