2026-04-13 22:11:49 +00:00
|
|
|
import * as React from "bloatless-react";
|
|
|
|
|
|
|
|
|
|
class PageTracker {
|
|
|
|
|
pages: React.State<HTMLElement | undefined> | undefined;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class PageTrackerMap {
|
|
|
|
|
trackers = new Map<string, PageTracker>();
|
|
|
|
|
|
|
|
|
|
private register = (key: string): PageTracker => {
|
|
|
|
|
if (this.trackers.has(key)) {
|
|
|
|
|
return this.trackers.get(key);
|
2026-04-14 09:20:44 +00:00
|
|
|
}
|
2026-04-13 22:11:49 +00:00
|
|
|
const tracker = new PageTracker();
|
|
|
|
|
this.trackers.set(key, tracker);
|
2026-04-14 09:20:44 +00:00
|
|
|
return tracker;
|
|
|
|
|
};
|
2026-04-13 22:11:49 +00:00
|
|
|
|
2026-04-14 09:20:44 +00:00
|
|
|
setPages = (
|
|
|
|
|
key: string,
|
|
|
|
|
pages: () => React.State<HTMLElement>,
|
|
|
|
|
): React.State<HTMLElement | undefined> | undefined => {
|
2026-04-13 22:11:49 +00:00
|
|
|
const tracker: PageTracker = this.register(key);
|
|
|
|
|
|
|
|
|
|
if (tracker.pages != undefined) {
|
|
|
|
|
return tracker.pages;
|
|
|
|
|
} else {
|
|
|
|
|
tracker.pages = pages();
|
|
|
|
|
return tracker.pages;
|
|
|
|
|
}
|
2026-04-14 09:20:44 +00:00
|
|
|
};
|
2026-04-13 22:11:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export class ViewPersistence {
|
|
|
|
|
static readonly chatPages = new PageTracker();
|
|
|
|
|
static readonly taskPages = new PageTrackerMap();
|
|
|
|
|
static readonly boardPages = new PageTrackerMap();
|
2026-04-14 09:20:44 +00:00
|
|
|
}
|