"use client"; import React, { JSX, useState } from "react"; import { useUIState } from "src/useUIState"; import { useEntitySetContext } from "../EntitySetProvider"; import { useReplicache } from "src/replicache"; import { Media } from "../Media"; import { MenuItem, Menu } from "../Menu"; import { PageThemeSetter } from "../ThemeManager/PageThemeSetter"; import { PageShareMenu } from "./PageShareMenu"; import { useUndoState } from "src/undoManager"; import { CloseTiny } from "components/Icons/CloseTiny"; import { MoreOptionsTiny } from "components/Icons/MoreOptionsTiny"; import { PaintSmall } from "components/Icons/PaintSmall"; import { ShareSmall } from "components/Icons/ShareSmall"; import { useCardBorderHidden } from "./useCardBorderHidden"; import { useLeafletPublicationData } from "components/PageSWRDataProvider"; export const PageOptionButton = ({ children, secondary, className, disabled, ...props }: { children: React.ReactNode; secondary?: boolean; className?: string; disabled?: boolean; } & Omit) => { const cardBorderHidden = useCardBorderHidden(); return ( ); }; export const PageOptions = (props: { entityID: string; first: boolean | undefined; isFocused: boolean; }) => { return (
{!props.first && ( { useUIState.getState().closePage(props.entityID); }} > )}
); }; export const UndoButtons = () => { let undoState = useUndoState(); let { undoManager } = useReplicache(); return ( {undoState.canUndo && (
undoManager.undo()}> undoManager.redo()} disabled={!undoState.canRedo} >
)}
); }; export const OptionsMenu = (props: { entityID: string; first: boolean }) => { let [state, setState] = useState<"normal" | "theme" | "share">("normal"); let { permissions } = useEntitySetContext(); if (!permissions.write) return null; let { data: pub, mutate } = useLeafletPublicationData(); if (pub && props.first) return; return ( { if (!open) setState("normal"); }} trigger={ } > {state === "normal" ? ( <> {!props.first && ( { e.preventDefault(); setState("share"); }} > Share Page )} {!pub && ( { e.preventDefault(); setState("theme"); }} > Theme Page )} ) : state === "theme" ? ( ) : state === "share" ? ( ) : null} ); }; const UndoTiny = () => { return ( ); }; const RedoTiny = () => { return ( ); };