/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import type { Editor } from "@tiptap/react"; import type { CSSProperties } from "react"; import { useEffect, useState } from "react"; // components import { LinkEditView, LinkPreview } from "@/components/links"; export type LinkViews = "LinkPreview" | "LinkEditView"; export type LinkViewProps = { view?: LinkViews; editor: Editor; from: number; to: number; url: string; text?: string; closeLinkView: () => void; }; export function LinkView(props: LinkViewProps & { style: CSSProperties }) { const [currentView, setCurrentView] = useState(props.view ?? "LinkPreview"); const [prevFrom, setPrevFrom] = useState(props.from); const switchView = (view: LinkViews) => { setCurrentView(view); }; useEffect(() => { if (props.from !== prevFrom) { setCurrentView("LinkPreview"); setPrevFrom(props.from); } }, [prevFrom, props.from]); return ( <> {currentView === "LinkPreview" && } {currentView === "LinkEditView" && } ); }