mirror of
https://github.com/ClaperCo/Claper.git
synced 2025-12-15 19:37:53 +01:00
78 lines
1.8 KiB
JavaScript
78 lines
1.8 KiB
JavaScript
import { tns } from "tiny-slider"
|
|
|
|
export class Manager {
|
|
|
|
constructor(context) {
|
|
this.context = context
|
|
this.currentPage = parseInt(context.el.dataset.currentPage)
|
|
this.maxPage = parseInt(context.el.dataset.maxPage)
|
|
}
|
|
|
|
init() {
|
|
|
|
this.context.handleEvent('page-manage', data => {
|
|
var el = document.getElementById("slide-preview-" + data.current_page)
|
|
|
|
if (el) {
|
|
setTimeout(() => {
|
|
document.getElementById("slide-preview-" + data.current_page).scrollIntoView({
|
|
block: 'center',
|
|
behavior: 'smooth'
|
|
});
|
|
}, data.timeout ? data.timeout : 0)
|
|
}
|
|
})
|
|
|
|
window.addEventListener('keydown', (e) => {
|
|
|
|
if (e.target.tagName.toLowerCase() != "input") {
|
|
e.preventDefault()
|
|
|
|
switch (e.key) {
|
|
case 'ArrowUp':
|
|
this.prevPage()
|
|
break
|
|
case 'ArrowLeft':
|
|
this.prevPage()
|
|
break
|
|
case 'ArrowRight':
|
|
this.nextPage()
|
|
break
|
|
case 'ArrowDown':
|
|
this.nextPage()
|
|
break
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
update() {
|
|
this.currentPage = parseInt(this.context.el.dataset.currentPage)
|
|
var el = document.getElementById("slide-preview-" + this.currentPage)
|
|
|
|
if (el) {
|
|
document.getElementById("slide-preview-" + this.currentPage).scrollIntoView({
|
|
block: 'center',
|
|
behavior: 'smooth'
|
|
});
|
|
}
|
|
}
|
|
|
|
nextPage() {
|
|
if(this.currentPage == this.maxPage - 1)
|
|
return;
|
|
|
|
this.currentPage += 1;
|
|
this.context.pushEventTo(this.context.el, "current-page", {"page": this.currentPage.toString()});
|
|
}
|
|
|
|
prevPage() {
|
|
if(this.currentPage == 0)
|
|
return;
|
|
|
|
this.currentPage -= 1;
|
|
this.context.pushEventTo(this.context.el, "current-page", {"page": this.currentPage.toString()});
|
|
|
|
}
|
|
|
|
} |