diff --git a/package.json b/package.json index 5b508c6..3f80a1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kevins-data-toolbox", - "version": "2.2.4", + "version": "2.3.0", "private": true, "dependencies": { "@loadable/component": "^5.15.0", diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index 733f482..d445707 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -49,6 +49,10 @@ "octal": "Oktal", "hexadecimal": "Hexadezimal", "nanWarning": "Die Eingabe ist keine gültige Zahl!" + }, + "urlencode": { + "title": "URL-Kodierung", + "description": "Kodiere und dekodiere URL-kodierte (or Prozent-kodierte) Zeichenfolgen." } } }, diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 06d6413..6dfa661 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -49,6 +49,10 @@ "octal": "Octal", "hexadecimal": "Hexadecimal", "nanWarning": "The input is not a valid number!" + }, + "urlencode": { + "title": "URL-Encoding", + "description": "Encode and decode strings to and from URL-encoding (or Percent-encoding)." } } }, diff --git a/src/tools/ToolLoader.tsx b/src/tools/ToolLoader.tsx index d279383..c2f9ed4 100644 --- a/src/tools/ToolLoader.tsx +++ b/src/tools/ToolLoader.tsx @@ -14,6 +14,7 @@ const HomePage = prerenderedLoadable(() => import('../pages/Home')); const RotTool = prerenderedLoadable(() => import('./cyphers_and_cryptography/rot/RotTool')); const Base64Tool = prerenderedLoadable(() => import('./encodings/base64/Base64Tool')); const NumberBaseTool = prerenderedLoadable(() => import('./encodings/numberbase/NumberBaseTool')); +const URLEncodeTool = prerenderedLoadable(() => import('./encodings/urlencode/URLEncodeTool')); type ErrorBoundaryProps = { resetFunction: () => void @@ -72,6 +73,9 @@ const ToolLoader = () => { case "numberbase": return ; + case "urlencode": + return ; + default: return ; } diff --git a/src/tools/encodings/urlencode/URLEncodeTool.module.scss b/src/tools/encodings/urlencode/URLEncodeTool.module.scss new file mode 100644 index 0000000..8b82604 --- /dev/null +++ b/src/tools/encodings/urlencode/URLEncodeTool.module.scss @@ -0,0 +1 @@ +@import "../../../common"; \ No newline at end of file diff --git a/src/tools/encodings/urlencode/URLEncodeTool.module.scss.d.ts b/src/tools/encodings/urlencode/URLEncodeTool.module.scss.d.ts new file mode 100644 index 0000000..cb4acd1 --- /dev/null +++ b/src/tools/encodings/urlencode/URLEncodeTool.module.scss.d.ts @@ -0,0 +1,4 @@ +export const center: string; +export const flexList: string; +export const layoutBox: string; +export const title: string; diff --git a/src/tools/encodings/urlencode/URLEncodeTool.tsx b/src/tools/encodings/urlencode/URLEncodeTool.tsx new file mode 100644 index 0000000..3636855 --- /dev/null +++ b/src/tools/encodings/urlencode/URLEncodeTool.tsx @@ -0,0 +1,45 @@ +import React, { useEffect, useState } from "react"; +import { useTranslation, Trans } from "react-i18next"; +import * as styles from "./URLEncodeTool.module.scss" +import { Helmet } from "react-helmet"; + +const URLEncodeTool = () => { + const { t } = useTranslation(); + + let [input, setInput] = useState(""); + let [output, setOutput] = useState(""); + let [reversed, setReversed] = useState(false) + + useEffect(() => { + if(!reversed) { + setOutput(encodeURIComponent(input)) + } + + if(reversed) { + setInput(decodeURIComponent(output)) + } + + }, [input, output, reversed]) + + return ( +
+ + {t("tools.encodings.urlencode.title")} | {t("site.title")} + + +
+

{t("tools.encodings.urlencode.title")}

+ +

xxx, pre:

}} />

+ + + + + + +
+
+ ) +} + +export default URLEncodeTool; \ No newline at end of file diff --git a/src/tools/tools.ts b/src/tools/tools.ts index d09d565..be3472f 100644 --- a/src/tools/tools.ts +++ b/src/tools/tools.ts @@ -1,4 +1,4 @@ -import {Smile, PlusSquare, Binary, Hash} from "lucide-react" +import {Smile, PlusSquare, Binary, Hash, Globe} from "lucide-react" const tools = [ { @@ -35,6 +35,15 @@ const tools = [ "category": "encodings", "hidden": false, "keywords": "binary, base, base6, base10, base2, binary, hex, hexadecimal, oct, bin, dec, encodings, encoding, decoding" + }, + { + "name": "tools.encodings.urlencode.title", + "external": false, + "urlname": "urlencode", + "icon": Globe, + "category": "encodings", + "hidden": false, + "keywords": "URL, urlencode, urldecode, URI, uriencode, uridecode, encoding, decoding, encoder, decoder, tool" } ]