"use client"; import { useCallback, useMemo, useState } from "react"; import * as O from "fp-ts/lib/Option"; import { toolGroups } from "@/config/tools"; import { safeJsonParse } from "@/lib/json"; import { Editor, EditorProps } from "@/components/ui/editor"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { ClearButton } from "@/components/buttons/clear"; import { CopyButton } from "@/components/buttons/copy"; import { FileButton } from "@/components/buttons/file"; import { PasteButton } from "@/components/buttons/paste"; import { Configuration } from "@/components/configuration"; import { Configurations } from "@/components/configurations"; import { ControlMenu } from "@/components/control-menu"; import { icons } from "@/components/icons"; import { PageRootSection } from "@/components/page-root-section"; import { PageSection } from "@/components/page-section"; const two = " "; const four = " "; const zero = ""; const tab = "\t"; export default function Page() { const [indentation, setIndentation] = useState(two); const [input, setInput] = useState('{\n"foo":"bar"\n}'); const parsed = safeJsonParse(input); const output = O.isNone(parsed) ? "" : JSON.stringify(parsed.value, null, indentation); const clearInput = useCallback(() => setInput(""), []); const onJsonChange: EditorProps["onChange"] = value => setInput(value ?? ""); const indentationIcon = useMemo(() => , []); const indentationConfig = useMemo( () => ( 2 spaces 4 spaces 1 tab minified } /> ), [indentation, indentationIcon] ); const inputPasteButton = useMemo(() => , []); const inputFileButton = useMemo( () => ( ), [] ); const inputClearButton = useMemo( () => , [clearInput] ); const outputCopyButton = useMemo(() => , [output]); const inputControl = ; const outputControl = ; return (
); }