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.
69 lines
1.9 KiB
69 lines
1.9 KiB
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
*/ |
|
|
|
import Page from "./page"; |
|
import lottieLoader from "../lib/rlottie/lottieLoader"; |
|
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' |
|
}); |
|
} |
|
} 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;
|
|
|