stear/utils.js

69 lines
1.8 KiB
JavaScript
Raw Normal View History

2022-06-09 15:29:53 +02:00
export const wait = (ms) => {
return new Promise((res, rej) => {
setTimeout(res, ms);
});
}
export const fadeout = async (elems, ms = 200, force = false) => {
2022-06-10 15:01:23 +02:00
var oldTrans = [];
2022-06-09 15:29:53 +02:00
if (!Array.isArray(elems)) elems = [elems];
for (let i = 0; i < elems.length; i++) {
2022-06-10 15:01:23 +02:00
oldTrans[i] = elems[i].style.transition;
2022-06-09 15:29:53 +02:00
elems[i].style.transition = `opacity ${ms}ms`;
if(force){
elems[i].style.opacity = "1";
elems[i].style.display = "";
}
}
await wait(10);
for (let i = 0; i < elems.length; i++) {
elems[i].style.opacity = "0";
}
await wait(ms);
for (let i = 0; i < elems.length; i++) {
elems[i].style.display = "none";
2022-06-10 15:01:23 +02:00
elems[i].style.transition = oldTrans[i];
2022-06-09 15:29:53 +02:00
}
}
2022-06-10 15:01:23 +02:00
export const fadein = async (elems, ms = 200, force = false, display="") => {
var oldTrans = [];
2022-06-09 15:29:53 +02:00
if (!Array.isArray(elems)) elems = [elems];
for (let i = 0; i < elems.length; i++) {
2022-06-10 15:01:23 +02:00
oldTrans[i] = elems[i].style.transition
2022-06-09 15:29:53 +02:00
elems[i].style.transition = `opacity ${ms}ms`;
2022-06-10 15:01:23 +02:00
elems[i].style.display = display;
2022-06-09 15:29:53 +02:00
if (force) {
elems[i].style.opacity = "0";
}
}
await wait(10);
for (let i = 0; i < elems.length; i++) {
elems[i].style.opacity = "1";
}
2022-06-10 15:01:23 +02:00
await wait(ms+1);
for (let i = 0; i < elems.length; i++) {
elems[i].style.transition = oldTrans[i];
}
2022-06-09 15:29:53 +02:00
}
2022-06-10 01:07:55 +02:00
var bStack = [];
export const subCancel = (callback) => {
bStack.push(callback);
return ()=>{
var id;
if ((id = bStack.indexOf(callback)) >= 0) {
bStack.splice(id, 1);
}
}
}
function back() {
if (bStack.length) {
bStack.pop()();
}
}
document.addEventListener("backbutton", back, false);
document.addEventListener('keyup', (e)=>{
if (e.code == "Escape")back();
});