Created the Encoder.jsx

This commit is contained in:
Mathias Wagner 2023-05-30 21:33:57 +02:00
parent a5707b9bc2
commit d8f5ceb598
Signed by: Mathias
GPG Key ID: B8DC354B0A1F5B44

View File

@ -0,0 +1,44 @@
import {useEffect, useState} from "react";
import {useSearchParams} from "react-router-dom";
import {Buffer} from "buffer";
import Button from "@/common/components/Button";
import {faCopy, faShare} from "@fortawesome/free-solid-svg-icons";
import InfoArea from "@/common/components/InfoArea/index.js";
import "./styles.sass";
export const Encoder = () => {
const [searchParams] = useSearchParams();
const [inputString, setInputString] = useState(searchParams.get("input") || "");
const [outputString, setOutputString] = useState("");
useEffect(() => {
setOutputString(Buffer.from(inputString).toString("base64"));
}, [inputString]);
const shareLink = () => {
const url = new URL(window.location.href);
url.searchParams.set("input", inputString);
navigator.clipboard.writeText(url.href);
}
const copyToClipboard = () => outputString !== "" ? navigator.clipboard.writeText(outputString) : "";
return (
<>
<InfoArea title="Base64 Encoder" description="Gib in das Textfeld einen Text ein und das Tool konvertiert es in ein Base64-Text">
<Button icon={faShare} text="Teilen" onClick={shareLink} />
<Button icon={faCopy} text="Kopieren" onClick={copyToClipboard} />
</InfoArea>
<div className="base64-encoder">
<h2>Eingabe-Text</h2>
<textarea className="area" rows="10" value={inputString} onChange={(e) => setInputString(e.target.value)} />
{outputString !== "" && <>
<h2>Ausgabe-Text</h2>
<textarea className="area" rows="10" value={outputString} readOnly />
</>}
</div>
</>
);
}