Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.9 KiB

3 years ago
/*
* https://github.com/morethanwords/tweb
* Copyright (C) 2019-2021 Eduard Kuzmenko
* https://github.com/morethanwords/tweb/blob/master/LICENSE
*/
import Page from "./page";
3 years ago
import lottieLoader from "../lib/rlottie/lottieLoader";
3 years ago
import { horizontalMenu } from "../components/horizontalMenu";
import { MOUNT_CLASS_TO } from "../config/debug";
import fastSmoothScroll from "../helpers/fastSmoothScroll";
import whichChild from "../helpers/dom/whichChild";
class PagesManager {
private pageId = -1;
private page: Page;
private selectTab: ReturnType<typeof horizontalMenu>;
public pagesDiv: HTMLDivElement;
public scrollableDiv: HTMLElement;
constructor() {
this.pagesDiv = document.getElementById('auth-pages') as HTMLDivElement;
this.scrollableDiv = this.pagesDiv.querySelector('.scrollable') as HTMLElement;
this.selectTab = horizontalMenu(null, this.scrollableDiv.querySelector('.tabs-container') as HTMLDivElement, null, () => {
if(this.page?.onShown) {
this.page.onShown();
}
});
}
public setPage(page: Page) {
if(page.isAuthPage) {
this.pagesDiv.style.display = '';
let id = whichChild(page.pageEl);
if(this.pageId === id) return;
this.selectTab(id);
if(this.pageId !== -1 && id > 1) {
lottieLoader.loadLottieWorkers();
}
this.pageId = id;
if(this.scrollableDiv) {
fastSmoothScroll({
container: this.scrollableDiv,
element: this.scrollableDiv.firstElementChild as HTMLElement,
position: 'start'
});
3 years ago
}
} else {
this.pagesDiv.style.display = 'none';
page.pageEl.style.display = '';
this.pageId = -1;
}
this.page = page;
}
}
const pagesManager = new PagesManager();
MOUNT_CLASS_TO.pagesManager = pagesManager;
export default pagesManager;