ProzillaOS/packages/core/src/features/z-index/zIndexManager.ts
2024-06-16 21:46:44 +02:00

46 lines
No EOL
973 B
TypeScript

import { EventEmitter } from "../_utils/event.utils";
import { ZIndexGroup } from "./zIndexGroup";
const ZIndexManagerEvents = {
indexChange: "indexChange",
} as const;
export class ZIndexManager extends EventEmitter<typeof ZIndexManagerEvents> {
static GROUPS = {
WINDOWS: 0,
TASKBAR: 1,
MODALS: 2,
};
static EVENT_NAMES = ZIndexManagerEvents;
groups: ZIndexGroup[] = [];
constructor() {
super();
for (let i = 0; i < Object.keys(ZIndexManager.GROUPS).length; i++) {
const group = new ZIndexGroup(this);
this.groups.push(group);
}
}
update() {
let offset = 0;
let changed = false;
for (let i = 0; i < this.groups.length; i++) {
const group = this.groups[i];
if (group.offset !== offset) {
changed = true;
group.setOffset(offset);
}
offset += group.length;
}
if (changed) {
this.emit("indexChange");
}
}
getIndex(groupIndex: number, index: number) {
return this.groups[groupIndex].getIndex(index);
}
}