From 2e5924109ee0b9ae216fc3aab78c5c0aa0c057d9 Mon Sep 17 00:00:00 2001
From: Bryan C Guner <66654881+bgoonz@users.noreply.github.com>
Date: Thu, 25 Feb 2021 12:11:14 -0500
Subject: [PATCH 1/7] Initial commit
---
README.md | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..85e0088
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+# udemy-react-translator
+Created with CodeSandbox
From 4b8389c8ed6444313a4e1884d0ebd32dfde09515 Mon Sep 17 00:00:00 2001
From: Bryan C Guner <66654881+bgoonz@users.noreply.github.com>
Date: Thu, 25 Feb 2021 12:11:15 -0500
Subject: [PATCH 2/7] Initial commit
---
package.json | 47 ++++++++++++++++++++++++++
public/index.html | 52 ++++++++++++++++++++++++++++
src/App.js | 19 +++++++++++
src/components/field.js | 14 ++++++++
src/components/languages.js | 67 +++++++++++++++++++++++++++++++++++++
src/components/translate.js | 46 +++++++++++++++++++++++++
src/index.js | 5 +++
src/styles.css | 15 +++++++++
8 files changed, 265 insertions(+)
create mode 100644 package.json
create mode 100644 public/index.html
create mode 100644 src/App.js
create mode 100644 src/components/field.js
create mode 100644 src/components/languages.js
create mode 100644 src/components/translate.js
create mode 100644 src/index.js
create mode 100644 src/styles.css
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..6d45d6a
--- /dev/null
+++ b/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "react",
+ "version": "1.0.0",
+ "description": "",
+ "keywords": [],
+ "main": "src/index.js",
+ "dependencies": {
+ "axios": "0.19.2",
+ "react": "16.12.0",
+ "react-dom": "16.12.0",
+ "react-scripts": "3.0.1"
+ },
+ "devDependencies": {
+ "typescript": "3.8.3"
+ },
+ "scripts": {
+ "start": "react-scripts start",
+ "build": "react-scripts build",
+ "test": "react-scripts test --env=jsdom",
+ "eject": "react-scripts eject"
+ },
+ "browserslist": [
+ ">0.2%",
+ "not dead",
+ "not ie <= 11",
+ "not op_mini all"
+ ],
+ "eslintConfig": {
+ "extends": [
+ "react-app",
+ "shared-config"
+ ],
+ "rules": {
+ "no-unused-vars": "off"
+ },
+ "overrides": [
+ {
+ "files": [
+ "**/*.ts?(x)"
+ ],
+ "rules": {
+ "no-unused-vars": "off"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..659ce81
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ React App
+
+
+
+
+
+
+
+
diff --git a/src/App.js b/src/App.js
new file mode 100644
index 0000000..1b1536e
--- /dev/null
+++ b/src/App.js
@@ -0,0 +1,19 @@
+import "./styles.css";
+import React, { useState } from "react";
+import Field from "./components/field";
+import Languages from "./components/languages";
+import Translate from "./components/translate";
+
+export default function App() {
+ const [language, setLanguage] = useState("ru");
+ const [text, setText] = useState("");
+
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/src/components/field.js b/src/components/field.js
new file mode 100644
index 0000000..7665523
--- /dev/null
+++ b/src/components/field.js
@@ -0,0 +1,14 @@
+import React from "react";
+
+export default ({ label, value, onChange }) => {
+ return (
+
+
+ onChange(e.target.value)}
+ />
+
+ );
+};
diff --git a/src/components/languages.js b/src/components/languages.js
new file mode 100644
index 0000000..a9f3d49
--- /dev/null
+++ b/src/components/languages.js
@@ -0,0 +1,67 @@
+/* eslint-disable */
+
+import React, { useState } from "react";
+
+const LANGUAGES = [
+ { label: "Afrikaans", value: "af" },
+ { label: "Arabic", value: "ar" },
+ { label: "French", value: "fr" },
+ { label: "Hindi", value: "hi" },
+ { label: "Japanese", value: "ja" },
+ { label: "Portuguese", value: "pt" },
+ { label: "Russian", value: "ru" },
+ { label: "Simplified Chinese", value: "zh-CN" },
+ { label: "Spanish", value: "es" },
+ { label: "Swahili", value: "sw" },
+ { label: "Thai", value: "th" }
+];
+
+const Languages = ({ language, onLanguageChange }) => {
+ if (language === undefined) {
+ language = "es";
+ }
+ const languageConfig = LANGUAGES.find(l => l.value === language);
+ if (!languageConfig) {
+ throw new Error(`Unknown language code '${language}'`);
+ }
+
+ const [open, setOpen] = useState(false);
+
+ const onSelect = language => {
+ setOpen(false);
+ onLanguageChange(language);
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Languages;
diff --git a/src/components/translate.js b/src/components/translate.js
new file mode 100644
index 0000000..ba7fc20
--- /dev/null
+++ b/src/components/translate.js
@@ -0,0 +1,46 @@
+import React, { useEffect, useState } from "react";
+import axios from "axios";
+
+const doTranslation = async (input, languageCode, cancelToken) => {
+ try {
+ const { data } = await axios.post(
+ "https://translation.googleapis.com/language/translate/v2?key=AIzaSyCf0Xy0OnhxlduyEt3K8zP-sOuu-l_u6uA",
+ {
+ q: input,
+ target: languageCode
+ },
+ { cancelToken: cancelToken.token }
+ );
+
+ return data.data.translations[0].translatedText;
+ } catch (err) {
+ return "";
+ }
+};
+
+export default ({ language, text }) => {
+ const [translated, setTranslated] = useState("");
+
+ useEffect(() => {
+ if (!text) {
+ return;
+ }
+
+ const cancelToken = axios.CancelToken.source();
+
+ doTranslation(text, language, cancelToken).then(setTranslated);
+
+ return () => {
+ try {
+ cancelToken.cancel();
+ } catch (err) {}
+ };
+ }, [text, language]);
+
+ return (
+
+
+
{translated}
+
+ );
+};
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..c24e9d8
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,5 @@
+import React from "react";
+import ReactDOM from "react-dom";
+import App from "./App";
+
+ReactDOM.render(, document.getElementById("root"));
diff --git a/src/styles.css b/src/styles.css
new file mode 100644
index 0000000..5cbb438
--- /dev/null
+++ b/src/styles.css
@@ -0,0 +1,15 @@
+.container {
+ margin: 10px 20px;
+}
+
+input {
+ margin: 8px 0;
+}
+
+label {
+ font-weight: 700;
+}
+
+.title {
+ margin-top: 10px;
+}
From b68b7a438c09b1d022803bb15139a8d56a851a6b Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Thu, 25 Feb 2021 17:11:19 +0000
Subject: [PATCH 3/7] Add renovate.json
---
renovate.json | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 renovate.json
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 0000000..f45d8f1
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,5 @@
+{
+ "extends": [
+ "config:base"
+ ]
+}
From 7133e827854812c7fff84030b48c665bcdb5867b Mon Sep 17 00:00:00 2001
From: Bryan C Guner <66654881+bgoonz@users.noreply.github.com>
Date: Thu, 25 Feb 2021 12:28:54 -0500
Subject: [PATCH 4/7] Update README.md
---
README.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/README.md b/README.md
index 85e0088..09b9c66 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,6 @@
# udemy-react-translator
Created with CodeSandbox
+
+
+
+[sandbox](https://codesandbox.io/s/twilight-snow-9c4uk)
From c140078d9ceb85fa9d2ba8f948668bd1f280addd Mon Sep 17 00:00:00 2001
From: Bryan C Guner <66654881+bgoonz@users.noreply.github.com>
Date: Thu, 25 Feb 2021 16:23:03 -0500
Subject: [PATCH 5/7] Update README.md
---
README.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/README.md b/README.md
index 09b9c66..a106e19 100644
--- a/README.md
+++ b/README.md
@@ -4,3 +4,6 @@ Created with CodeSandbox
[sandbox](https://codesandbox.io/s/twilight-snow-9c4uk)
+
+
+[gitbook](https://bryan-guner.gitbook.io/udemy-react-notes/)
From 0ce3db6416e313a4e37296adcb63f27abce3f690 Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Thu, 25 Feb 2021 21:34:00 +0000
Subject: [PATCH 6/7] Update dependency axios to v0.21.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 6d45d6a..81652b7 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"keywords": [],
"main": "src/index.js",
"dependencies": {
- "axios": "0.19.2",
+ "axios": "0.21.1",
"react": "16.12.0",
"react-dom": "16.12.0",
"react-scripts": "3.0.1"
From 1ff30b0cd97d65d42db0e196148ea2fd873b86b4 Mon Sep 17 00:00:00 2001
From: Renovate Bot
Date: Thu, 25 Feb 2021 21:34:08 +0000
Subject: [PATCH 7/7] Update dependency bulma to v0.9.2
---
public/index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/index.html b/public/index.html
index 659ce81..c106ffe 100644
--- a/public/index.html
+++ b/public/index.html
@@ -13,7 +13,7 @@
>