Something went wrong. Try again.
Starship Simulator Controls thoriumsim.com
Something went wrong. Try again.
1.4 kB · 59 lines
TSX
at develop
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960import { useLocalStorage } from "@thorium/hooks/useLocalStorage";import { type IJsonModel, Model } from "@thorium/utils/FlexLayout";import { createContext, type ReactNode, useMemo, useState } from "react";
export const CoreFlexLayoutContext = createContext<{ layoutModel: Model; setLayoutModel: (newModel: Model) => void; setInitialModel: (newModel: IJsonModel) => void;}>(null!);
export const CoreFlexLayoutProvider = ({ children }: { children: ReactNode }) => { const [initialModel, setInitialModel] = useLocalStorage<IJsonModel>( "core-flexLayout", defaultJson, ); const [layoutModel, setLayoutModel] = useState(() => Model.fromJson(initialModel)); const value = useMemo( () => ({ layoutModel, setLayoutModel, setInitialModel }), [layoutModel, setInitialModel], );
return <CoreFlexLayoutContext.Provider value={value}>{children}</CoreFlexLayoutContext.Provider>;};
export const defaultJson: IJsonModel = { global: { splitterSize: 1, splitterExtra: 4, tabEnablePopout: true, tabSetEnableClose: true, tabSetMinWidth: 100, tabSetMinHeight: 100, borderMinSize: 100, borderEnableAutoHide: true, enableEdgeDock: true, }, borders: [ { type: "border", location: "bottom", children: [], }, { type: "border", location: "left", children: [], }, { type: "border", location: "right", children: [], }, ], layout: { type: "row",
children: [], },};