feat: editor layout

This commit is contained in:
Carlos Valente
2026-01-21 19:56:52 +01:00
committed by Carlos Valente
parent 967e92e2c8
commit da02ecd113
77 changed files with 2267 additions and 788 deletions
@@ -0,0 +1,33 @@
import { useSearchParams } from 'react-router';
import { isValueOfEnum } from 'ontime-utils';
const layoutParam = 'layout';
export enum EditorLayoutMode {
CONTROL = 'control',
PLANNING = 'planning',
TRACKING = 'tracking',
}
/**
* Resolves the current editor layout mode from a nullable string value
*/
function getEditorLayout(value: string | null): EditorLayoutMode {
if (isValueOfEnum(EditorLayoutMode, value)) {
return value;
}
return EditorLayoutMode.CONTROL;
}
export function useEditorLayout() {
const [searchParams, setSearchParams] = useSearchParams();
const layoutMode = getEditorLayout(searchParams.get(layoutParam));
const setLayoutMode = (mode: EditorLayoutMode) => {
const nextParams = new URLSearchParams(searchParams);
nextParams.set(layoutParam, mode);
setSearchParams(nextParams, { replace: true });
};
return { layoutMode, setLayoutMode };
}