import { QueryKey } from "@tanstack/react-query"; import { JsModal, devToolsStorageKeys } from "@react-buoy/shared-ui"; import type { ModalMode } from "@react-buoy/shared-ui"; import { useGetQueryByQueryKeyWithVersion } from "../../hooks/useSelectedQuery"; import { ReactQueryModalHeader } from "./ReactQueryModalHeader"; import { DataEditorMode, DataEditorActionsFooter } from "../DataEditorMode"; import { useState, useCallback } from "react"; interface DataEditorModalProps { visible: boolean; selectedQueryKey?: QueryKey; onQuerySelect: (query: any) => void; onClose: () => void; onMinimize?: (modalState: any) => void; enableSharedModalDimensions?: boolean; onTabChange: (tab: "queries" | "mutations") => void; } /** * Specialized modal for data editing following "Decompose by Responsibility" * Single purpose: Display data editor when a query is selected */ export function DataEditorModal({ visible, selectedQueryKey, onQuerySelect, onClose, onMinimize, enableSharedModalDimensions = false, onTabChange, }: DataEditorModalProps) { const { query: selectedQuery, version: queryVersion } = useGetQueryByQueryKeyWithVersion(selectedQueryKey); const [modalMode, setModalMode] = useState("bottomSheet"); const handleModeChange = useCallback((mode: ModalMode) => { setModalMode(mode); }, []); const renderHeaderContent = () => ( onQuerySelect(undefined)} /> ); const storagePrefix = enableSharedModalDimensions ? devToolsStorageKeys.reactQuery.modal() : `${devToolsStorageKeys.reactQuery.modal()}_data_editor`; if (!visible || !selectedQuery) return null; const footerNode = ( ); return ( ); }