import React, { useState } from 'react';
import { RenameInput } from './RenameInput';
import { PagehandlerMenu } from './PagehandlerMenu';
import { EditModal } from './EditModal';
import { SettingsModal } from './SettingsModal';
import _ from 'lodash';
import SortableList from '@/_components/SortableList';
import { toast } from 'react-hot-toast';
export const PageHandler = ({
darkMode,
page,
switchPage,
deletePage,
renamePage,
clonePage,
hidePage,
unHidePage,
homePageId,
currentPageId,
updateHomePage,
updatePageHandle,
updateOnPageLoadEvents,
currentState,
apps,
pages,
components,
dataQueries,
}) => {
const isHomePage = page.id === homePageId;
const isSelected = page.id === currentPageId;
const isHidden = page?.hidden ?? false;
const [isEditingPageName, setIsEditingPageName] = useState(false);
const [showEditModal, setShowEditModal] = useState(false);
const [showPagehandlerMenu, setShowPagehandlerMenu] = useState(false);
const [showSettingsModal, setShowSettingsModal] = useState(false);
const [isHovered, setIsHovered] = useState(false);
const handleClose = () => {
setShowEditModal(false);
setShowPagehandlerMenu(true);
};
const handleShow = () => {
setShowEditModal(true);
setShowPagehandlerMenu(false);
};
const showSettings = () => {
setShowSettingsModal(true);
};
const handleCallback = (id) => {
setIsHovered(false);
switch (id) {
case 'delete-page':
deletePage(page.id, isHomePage);
break;
case 'rename-page':
setIsEditingPageName(true);
break;
case 'mark-as-home-page':
updateHomePage(page.id);
break;
case 'edit-page-handle':
handleShow();
break;
case 'settings':
showSettings();
break;
case 'duplicate-page':
clonePage(page.id);
break;
case 'hide-page':
hidePage(page.id);
break;
case 'unhide-page':
unHidePage(page.id);
break;
default:
break;
}
};
React.useEffect(() => {
if (!isHovered && !isSelected && showPagehandlerMenu) {
setShowPagehandlerMenu(false);
}
if (isHovered && currentPageId !== page.id) {
setShowPagehandlerMenu(false);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isHovered]);
if (isEditingPageName) {
return