@relax.dev/router
Version:
Router for VKUI
37 lines (30 loc) • 1.05 kB
text/typescript
import { PANEL_MAIN, VIEW_MAIN, ROOT_MAIN } from '../const';
import { RouterGenericBase } from './Types';
export class Page<T extends RouterGenericBase = RouterGenericBase> {
public panelId: T['panelId'];
public viewId: T['viewId'];
public rootId: T['rootId'];
public additionalViews: Array<T['viewId']> = [];
public isInfinityPanel = false;
constructor(panelId?: T['panelId'], viewId?: T['viewId'], rootId?: T['rootId']) {
this.panelId = panelId || PANEL_MAIN;
this.viewId = viewId || VIEW_MAIN;
this.rootId = rootId || ROOT_MAIN;
}
clone() {
const p = new Page(this.panelId, this.viewId, this.rootId).addViews(this.additionalViews);
p.isInfinityPanel = this.isInfinityPanel;
return p;
}
makeInfinity() {
this.isInfinityPanel = true;
return this;
}
addViews(views: Array<T['viewId']>) {
this.additionalViews = [...views];
if (this.additionalViews.length > 0 && !this.additionalViews.includes(this.viewId)) {
this.additionalViews.push(this.viewId);
}
return this;
}
}