Compare commits
No commits in common. "108a2bc033b482b1b3233f211af16e733c61c63e" and "5c7da5850b427f103ed0b7069994d6c8131bfe49" have entirely different histories.
108a2bc033
...
5c7da5850b
76
slidify.js
76
slidify.js
@ -2,7 +2,6 @@ window.addEventListener('load', init);
|
|||||||
|
|
||||||
let slides;
|
let slides;
|
||||||
let currentSlide;
|
let currentSlide;
|
||||||
let topicList;
|
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
slides = Array.from(document.querySelectorAll('article'));
|
slides = Array.from(document.querySelectorAll('article'));
|
||||||
@ -10,7 +9,6 @@ function init() {
|
|||||||
slides[i].id = `slide${i}`;
|
slides[i].id = `slide${i}`;
|
||||||
}
|
}
|
||||||
resumeOrGoToStart();
|
resumeOrGoToStart();
|
||||||
topicList = createTopicList();
|
|
||||||
document.addEventListener('keydown', onKeyPressed);
|
document.addEventListener('keydown', onKeyPressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,9 +66,6 @@ function onKeyPressed(event) {
|
|||||||
case 35: // end
|
case 35: // end
|
||||||
goToLastSlide();
|
goToLastSlide();
|
||||||
break;
|
break;
|
||||||
case 17: // ctrl
|
|
||||||
toggleTopicList();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,74 +91,3 @@ function showPreviousFragment() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTopicListContent() {
|
|
||||||
let results = [...document.querySelectorAll('h1, h2, h3, h4, h5, h6')];
|
|
||||||
let resultHtml = '<ul>';
|
|
||||||
let currentLevel = 1;
|
|
||||||
|
|
||||||
results.forEach(element => {
|
|
||||||
let node = element.nodeName;
|
|
||||||
let level = parseInt(node[node.length - 1]);
|
|
||||||
|
|
||||||
let parentElement = element.parentElement
|
|
||||||
while (parentElement.nodeName.toLowerCase() != 'article') {
|
|
||||||
parentElement = parentElement.parentElement;
|
|
||||||
}
|
|
||||||
let parentSlideID = parentElement.id;
|
|
||||||
|
|
||||||
if (level > currentLevel) {
|
|
||||||
resultHtml += `<ul><li><a href="#${parentSlideID}">${element.textContent}</a></li>`;
|
|
||||||
currentLevel = level;
|
|
||||||
} else if (level < currentLevel) {
|
|
||||||
resultHtml += `</ul></li><li><a href="#${parentSlideID}">${element.textContent}</a></li></li>`;
|
|
||||||
currentLevel = level;
|
|
||||||
} else {
|
|
||||||
resultHtml += `<li><a href="#${parentSlideID}">${element.textContent}</a>`;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return resultHtml + '</ul>';
|
|
||||||
}
|
|
||||||
|
|
||||||
function createTopicList() {
|
|
||||||
let topicList = document.createElement(`div`);
|
|
||||||
topicList.innerHTML = getTopicListContent();
|
|
||||||
topicList.classList.add('topic-list')
|
|
||||||
document.body.appendChild(topicList);
|
|
||||||
topicList.style.position = 'fixed';
|
|
||||||
topicList.style.top = '4rem';
|
|
||||||
topicList.style.left = '50%';
|
|
||||||
topicList.style.transform = 'translateX(-50%)';
|
|
||||||
topicList.style.backgroundColor = 'white';
|
|
||||||
topicList.style.padding = '2rem';
|
|
||||||
topicList.style.width = '800px';
|
|
||||||
topicList.style.boxShadow = '0 5px 15px rgba(0, 0, 0, 0.3)';
|
|
||||||
topicList.style.maxHeight = 'calc(100vh - 8rem)';
|
|
||||||
topicList.style.visibility = 'hidden';
|
|
||||||
|
|
||||||
topicList.querySelectorAll('a').forEach(link => {
|
|
||||||
link.addEventListener('click', e => topicList.style.visibility = 'hidden');
|
|
||||||
})
|
|
||||||
return topicList;
|
|
||||||
}
|
|
||||||
|
|
||||||
let lastCtrlPress = null;
|
|
||||||
|
|
||||||
function toggleTopicList() {
|
|
||||||
if (lastCtrlPress == null) {
|
|
||||||
lastCtrlPress = Date.now();
|
|
||||||
} else {
|
|
||||||
let now = Date.now();
|
|
||||||
if (now - lastCtrlPress < 400) {
|
|
||||||
lastCtrlPress = null;
|
|
||||||
if (topicList.style.visibility === 'visible') {
|
|
||||||
topicList.style.visibility = 'hidden';
|
|
||||||
} else {
|
|
||||||
topicList.style.visibility = 'visible';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
lastCtrlPress = Date.now();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user