"use client";
import React from "react";
import { useUIState, getEditorPageKey } from "src/useUIState";
import { useSearchParams } from "next/navigation";
import { useEntity } from "src/replicache";
import { useCardBorderHidden } from "./useCardBorderHidden";
import { BookendSpacer, SandwichSpacer } from "components/LeafletLayout";
import { LeafletSidebar } from "app/(app)/[leaflet_id]/Sidebar";
import { Page } from "./Page";
import { IframePageView } from "./IframePageView";
import { PageOptionButton } from "./PageOptions";
import { CloseTiny } from "components/Icons/CloseTiny";
import { scrollIntoViewIfNeeded } from "src/utils/scrollIntoViewIfNeeded";
export function Pages(props: { rootPage: string; flow?: boolean }) {
let rootPage = useEntity(props.rootPage, "root/page")[0];
let pages = useUIState((s) => s.openPages);
let params = useSearchParams();
let queryRoot = params.get("page");
let firstPage = queryRoot || rootPage?.data.value || props.rootPage;
let cardBorderHidden = useCardBorderHidden(rootPage.id);
let firstPageIsCanvas = useEntity(firstPage, "page/type");
let fullPageScroll =
!!cardBorderHidden && pages.length === 0 && !firstPageIsCanvas;
return (
<>
{!fullPageScroll && !props.flow && (
{
e.currentTarget === e.target && blurPage();
}}
/>
)}
{pages.map((page) => {
let key = getEditorPageKey(page);
if (typeof page === "object") {
return (
{
e.currentTarget === e.target && blurPage();
}}
/>
{
useUIState
.getState()
.openPage(page, { type: "iframe", url });
requestAnimationFrame(() => {
requestAnimationFrame(() => {
scrollIntoViewIfNeeded(
document.getElementById(`iframe-page-${url}`),
false,
"smooth",
0.8,
);
});
});
}}
pageOptions={
useUIState.getState().closePage(page)
}
>
}
/>
);
}
return (
{
e.currentTarget === e.target && blurPage();
}}
/>
);
})}
{!fullPageScroll && !props.flow && (
{
e.currentTarget === e.target && blurPage();
}}
/>
)}
>
);
}
const blurPage = () => {
useUIState.setState(() => ({
focusedEntity: null,
selectedBlocks: [],
}));
};