/* Copyright (C) 2024-2025 LibreWeddingPlanner contributors*/ 'use client' import { AbstractApi } from '@/app/api/abstract-api'; import { getSlug } from '@/app/lib/utils'; import { Website, WebsiteSerializer } from '@/app/lib/website'; import { useEffect, useState } from 'react'; import Tiptap from '../../../components/Tiptap'; export default function Page() { const [website, setWebsite] = useState() const api = new AbstractApi(); const serializer = new WebsiteSerializer(); const [slug, setSlug] = useState("default"); useEffect(() => { setSlug(getSlug()) }, []); const [iframeKey, setIframeKey] = useState(Math.random()); const [timeoutId, setTimeoutId] = useState(null); useEffect(() => { api.get(serializer, undefined, (loadedWebsite) => { setWebsite(loadedWebsite); }); }, []); const updateWebsite = (newContent: string) => { // Debounce API update: send after 500ms of no further changes if (timeoutId) { clearTimeout(timeoutId); } setTimeoutId( setTimeout(() => { api.update(serializer, new Website('', newContent), () => { setIframeKey(Math.random()); // Change key to force iframe reload }); }, 500) ); } return (