"use client"; import Switcher from "@/components/switcher"; import Notice from "@/components/tools/notice"; import base64ToHex from "@/lib/base64ToHex"; import copyToClipboard from "@/lib/copy"; import normalizeHex from "@/lib/normalizeHex"; import { validBase64 } from "@/lib/onesearch/baseCheck"; import { useTranslations } from "next-intl"; import { useEffect, useState } from "react"; //@ts-ignore import { utoa, atou } from "unicode-encode"; export default function Base64() { const t = useTranslations("tools.base64"); const [mode, setMode] = useState(t("encode")); const [message, setMessage] = useState(""); const [messageResult, setMessageResult] = useState(""); const [isHex, setHex] = useState(false); const [info, setInfo] = useState(""); const [type, setType] = useState(""); useEffect(() => { setType(""); setInfo(""); setHex(false); if (mode == t("encode")) { setMessageResult(utoa(message)); } else { if (validBase64(message)) { try { setMessageResult(atou(message)); } catch (e) { setMessageResult(normalizeHex(base64ToHex(message))); setHex(true); setType("info"); setInfo("Showing HEX result."); } } else if (message.trim() !== "") { setMessageResult(""); setType("warning"); setInfo("Invalid Base64."); } else { setMessageResult(""); } } }, [mode, message]); return (