"use client"; import { useEffect, useRef } from "react"; import useEmbed from "./useEmbed"; type CalProps = { calOrigin?: string; calLink: string; initConfig?: { debug?: boolean; uiDebug?: boolean; }; config?: Record; embedJsUrl?: string; } & React.HTMLAttributes; const Cal = function Cal(props: CalProps) { const { calLink, calOrigin, config, initConfig = {}, embedJsUrl, ...restProps } = props; if (!calLink) { throw new Error("calLink is required"); } const initializedRef = useRef(false); const Cal = useEmbed(embedJsUrl); const ref = useRef(null); useEffect(() => { if (!Cal || initializedRef.current || !ref.current) { return; } initializedRef.current = true; const element = ref.current; Cal("init", { ...initConfig, origin: calOrigin, }); Cal("inline", { elementOrSelector: element, calLink, config, }); }, [Cal, calLink, config, calOrigin, initConfig]); if (!Cal) { return null; } return
; }; export default Cal;