import { useLocal } from "@/utils/use-local"; import { FC, useEffect } from "react"; import { FMInternal, FMProps } from "./typings"; import { formReload } from "./utils/reload"; import { formInit } from "./utils/init"; import { createPortal } from "react-dom"; import { Toaster } from "sonner"; export const Form: FC = (props) => { const { PassProp, body } = props; const fm = useLocal({ data: {}, status: "init", reload: async () => { formReload(fm); }, submit: null as any, error: {} as any, internal: { reload: { timeout: null as any, promises: [], done: [], }, }, props: {} as any, }); useEffect(() => { if (fm.status === "init") { formInit(fm, props); fm.reload(); } }, []); if (document.getElementsByClassName("prasi-toaster").length === 0) { const elemDiv = document.createElement("div"); elemDiv.className = "prasi-toaster"; document.body.appendChild(elemDiv); } const toaster_el = document.getElementsByClassName("prasi-toaster")[0]; return ( <> {toaster_el && createPortal(, toaster_el)} {fm.status !== "init" && {body}} ); };