29 lines
835 B
TypeScript
29 lines
835 B
TypeScript
"use client";
|
|
|
|
import type { PropsWithChildren } from "react";
|
|
import { createContext, useContext, useEffect } from "react";
|
|
import { useDisclosure } from "@mantine/hooks";
|
|
|
|
const EditModeContext = createContext<ReturnType<typeof useDisclosure> | null>(null);
|
|
|
|
export const EditModeProvider = ({ children, initialOpen = false }: PropsWithChildren<{ initialOpen?: boolean }>) => {
|
|
const editModeDisclosure = useDisclosure(initialOpen);
|
|
const [, { open }] = editModeDisclosure;
|
|
|
|
useEffect(() => {
|
|
if (initialOpen) open();
|
|
}, [initialOpen, open]);
|
|
|
|
return <EditModeContext.Provider value={editModeDisclosure}>{children}</EditModeContext.Provider>;
|
|
};
|
|
|
|
export const useEditMode = () => {
|
|
const context = useContext(EditModeContext);
|
|
|
|
if (!context) {
|
|
throw new Error("EditMode is required");
|
|
}
|
|
|
|
return context;
|
|
};
|