layout/_partials/js/post.ejs
<script type="text/javascript">
themeRuntime.scriptsMap.post = [];
if (document.querySelector('.theme-post__toc-fab__menu > ol') !== null && document.querySelector('.theme-post__toc > ol') !== null) {
tocHighlight()
function tocHighlight() {
var timer;
function doWork() {
listens.forEach(function(value, index) {
value[1]();
value[0].classList.remove("mdui-list-item-active");
})
let actionToc = (listens[listens.reduce(function(r, v, index) {
if (v[2] == true) {
return index;
} else return r;
}, undefined)] || [])[0] || listens[0][0];
actionToc.classList.add("mdui-list-item-active");
if(actionToc.getClientRects().length == 0)return;
showToc(actionToc);
}
function showToc(toc) {
let offsetTop = toc.getClientRects()[0].top - cardToc.getClientRects()[0].top - 40;
let offsetBottom = toc.getClientRects()[0].bottom - cardToc.getClientRects()[0].bottom + 40;
let offset = 0;
if (offsetTop < 0) offset = offsetTop;
if (offsetBottom > 0) offset = offsetBottom;
var targetTop = Math.max(0, Math.min(cardToc.scrollTop + offset, toclist.offsetHeight - cardToc.offsetHeight));
clearInterval(timer);
timer = setInterval(function() {
var now = cardToc.scrollTop;
var speed = (targetTop - now) / 10;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
if (Math.abs(now - targetTop) < 1) {
clearInterval(timer);
}
cardToc.scrollTop = now + speed;
}, 30);
}
var listens = [];
var cardToc = document.querySelector('.theme-post__toc');
var links = cardToc.querySelectorAll(".theme-post__toc__content__link");
var toclist = document.querySelector(".theme-post__toc > ol");
Array.prototype.forEach.call(links, function(value, index) {
var id = (value.getAttribute("href") || "#").slice(1);
var element = document.getElementById(id);
listens.push([value, function() {
var readed = false;
var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
if (element.offsetTop <= scrollTop + element.clientHeight + 64) {
readed = true;
} else {
readed = false;
}
listens[index][2] = readed;
}, false])
})
doWork();
window.addEventListener("scroll", doWork)
var listener = {
function: doWork,
event: 'scroll',
el: window,
removed: false
}
themeRuntime.scriptsMap.post.push(listener)
}
}
</script>
<script type="text/javascript">
(function() {
var postLastModifiedDate = <%= date(page.updated, 'x') %>
var today = (new Date()).getTime()
var difference = Math.floor((today - postLastModifiedDate)/(24*60*60*1000))
if (difference >= 100) {
document.querySelector('.theme-post__card__warning').style.display = 'block'
document.querySelector('#content-warning').textContent = difference
}
})();
</script>
<script type="text/javascript">
var images = document.querySelectorAll('.theme-post__card__content img')
for (i = 0; i < images.length; i++) {
//console.log('image added', i)
images[i].addEventListener("click", openLG);
var listener = {
function: openLG,
event: 'click',
el: images[i],
removed: false
}
themeRuntime.scriptsMap.post.push(listener)
}
function openLG() {
var img_src = this.getAttribute('src');
var img_alt = this.getAttribute('alt');
lightGallery(this, {
dynamic: true,
counter: false,
dynamicEl: [{
"src": img_src,
'subHtml': "<span author><%= config.author %></span><div descr>" + img_alt + "</div>"
}],
});
}
</script>
<% if (page.mathjax === true) { %>
<!-- MathJax Load-->
<%- partial('../../_widget/post_mathjax') %>
<% } %>