mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-11 02:13:48 +00:00
1849b4d39f
* chore: migrate eslint to oxlint * chore: migrate prettier to oxfmt * chore: migrate typescript * chore: toThrow should have a expected value * chore: cast test value as Day * chore: small title fix * chore: mocks should be hoisted * chore: incorrect async useage * chore: test should be inside description * chore: test sohuld include an expeced * chore: oxfmt --------- Co-authored-by: alex-Arc <omnivox@LAPTOP-RC5SNBVV.localdomain>
34 lines
906 B
TypeScript
34 lines
906 B
TypeScript
import { isValueOfEnum } from 'ontime-utils';
|
|
import { useSearchParams } from 'react-router';
|
|
|
|
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 };
|
|
}
|