diff --git a/README.md b/README.md index 763fdd6..609bb4a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ ### Download - [Linux](https://github.com/Qolzam/telar-cli/releases/download/v0.1.0/telar) - [Mac](https://github.com/Qolzam/telar-cli/releases/download/v0.1.0/telar-darwin) -- [Windows](https://github.com/Qolzam/telar-cli/releases/download/v0.1.0/telar.exe) ### Setup Options diff --git a/bin/telar b/bin/telar index 2f08998..1373da0 100755 Binary files a/bin/telar and b/bin/telar differ diff --git a/bin/telar-darwin b/bin/telar-darwin index a7ab72c..36b37ee 100755 Binary files a/bin/telar-darwin and b/bin/telar-darwin differ diff --git a/cmd/ofcc.go b/cmd/ofcc.go index 8b3d63e..b88744c 100644 --- a/cmd/ofcc.go +++ b/cmd/ofcc.go @@ -170,7 +170,7 @@ func OFCAccessSetting() { echoStep(2) } func CheckIngredient(projectPath string, githubUsername string) { - helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/2.md" + helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md" echoInput("loadingCheckIngredients", true) // Check telar-web repository @@ -216,7 +216,7 @@ func CheckIngredient(projectPath string, githubUsername string) { } func CheckStorage(projectPath string, bucketName string) { - helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md" + helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md" echoInput("loadingFirebaseStorage", true) // Check serviceAccount.json file for Firebase @@ -244,7 +244,7 @@ func CheckStorage(projectPath string, bucketName string) { } func CheckDatabase(mongoDBHost, MongoDBPassword string) { - helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md" + helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/5.md" echoInput("loadingMongoDB", true) @@ -270,7 +270,7 @@ func CheckOAuth() { } func CheckUserManagement(ofGateway string) { - helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/7.md" + helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md" payloadSecret, err := generatePayloadSecret() if isError(err) { @@ -284,7 +284,7 @@ func CheckUserManagement(ofGateway string) { } func CheckWebsocket(clientInput ClientInputs) { - helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md" + helpURL := "https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/9.md" echoInput("loadingWebsocket", true) err := pingWebsocket(clientInput.WebsocketURL) diff --git a/docs/ofcc-setup/1.md b/docs/ofcc-setup/1.md index 136adea..dc308eb 100644 --- a/docs/ofcc-setup/1.md +++ b/docs/ofcc-setup/1.md @@ -1,15 +1,7 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) +# Telar CLI - Setup Telar Social on OpenFaaS ## Step 1 (Let's start) -### 1. Enter your valid Github username +### 1. Enter the project directory path -Register you Github account on OpenFaaS [from here](https://github.com/openfaas/community-cluster#apply-for-access). -> OpenFaaS introduces an automated build and management system for your Serverless functions with native integrations into your source-control management system whether that is GitHub or GitLab. With OpenFaaS functions are managed through typing `git push` which reduces the tooling and learning curve required to operate functions for your team. As soon as OpenFaaS receives a push event from `git` it will run through a build-workflow which clones your repo, builds a Docker image, pushes it to a registry and then deploys your functions to your cluster. - -We use Github to manage Telar Social source code and get advantage of automates CI/CD triggered by `git push`. - - -### 2. Enter the project directory path - -Telar CLI will clone all Telar Social source code inside this directory. \ No newline at end of file +Telar CLI will clone all Telar Social source code inside this directory and create some files which are required for installation. \ No newline at end of file diff --git a/docs/ofcc-setup/2.md b/docs/ofcc-setup/2.md index 752c429..5855c36 100644 --- a/docs/ofcc-setup/2.md +++ b/docs/ofcc-setup/2.md @@ -1,30 +1,31 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) +# Telar CLI - Setup Telar Social on OpenFaaS -## Step 2 (Check ingredients) +## Step 2 (General settings) -### 1. The OpenFaaS Github app is installed +### 1. Enter your social network app ID -Following [document](https://github.com/openfaas/community-cluster#2-after-you-receive-your-confirmation-email) after you receive your confirmation email to access OpenFaaS , you should Send your PR to the [CUSTOMERS](https://github.com/openfaas/openfaas-cloud/blob/master/CUSTOMERS) file. Then you need to install [OpenFaaS Github app](https://github.com/apps/openfaas-cloud-community-cluster). +We use this identifier to detect social network functions in the cluster. -### 2. Add repositories in the OpenFaaS Github app +### 2. Enter OpenFaaS username. Default is `admin`. -- Make sure you already foked [telar-web](https://github.com/red-gold/telar-web), [ts-serverless](https://github.com/red-gold/ts-serverless) and [ts-ui](https://github.com/red-gold/ts-ui). +We use OpenFaaS username to login with to handle some OpenFaaS functionalities like delete or deploy function. -![Fork Example](https://miro.medium.com/max/3155/1*R4YdE6yz_HLVVW9DK8nWMQ.png) +### 3. Enter OpenFaaS gateway e.g. `domain.com` or `localhost.com:31112` -- From Github page, in the upper-right corner of any page, click your profile photo, then click Settings. - - ![Github Setting](https://help.github.com/assets/images/help/settings/userbar-account-settings.png) +This is the [OpenFaaS gateway](https://docs.openfaas.com/architecture/gateway/) address to interact with OpenFaaS. -- From Github Application/Installed Github Apps menu click on OpenFaaS `Configure`. +### 4. Enter your social network URL e.g. https://social.com -![Github Application](https://miro.medium.com/max/2726/1*vWuo8177iw8rgXNe2V2-qw.png) +The URL can access to social network UI and api which could be different with OpenFaaS gateway. -- In Repository access select [telar-web](https://github.com/red-gold/telar-web), [ts-serverless](https://github.com/red-gold/ts-serverless) and [ts-ui](https://github.com/red-gold/ts-ui). +### 5. Enter OpenFaaS funtion namespace. Default is `openfaas-fn` -- Click on Save +Enter functions namespace, in the case your OpenFaaS functions are in different K8S namespace . -### 3. Adding SSH key to Github +### 6. Enter secret name that will be created on your K8S cluster. Default is `secrets` -- [Generating a new SSH key and adding it to the ssh-agent](https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) -- [Adding a new SSH key to your GitHub account](https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account) +Enter secret name that you want to create in K8S cluster for social network. + +### 7. Enter your KUBECONFIG path + +In the case you want to use KUBECONFIG path instead of default context, enter the kube config path. If not let the textbox empty. \ No newline at end of file diff --git a/docs/ofcc-setup/3.md b/docs/ofcc-setup/3.md index 28cee66..d9b3093 100644 --- a/docs/ofcc-setup/3.md +++ b/docs/ofcc-setup/3.md @@ -1,20 +1,5 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) +# Telar CLI - Setup Telar Social on OpenFaaS -## Step 3 (Firebase Storage) +## Step 3 (Check ingredients) -- Make sure you alread have a Firebase account and project ready to use. - -### 1. Copy Firebase Service Account file in your project directory - -- In the Firebase console, open Settings > [Service Accounts](https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk). -![Firebase Project Settings](https://miro.medium.com/max/2812/1*snYuDB4IOOCtBv7s2dt2KQ.png) -- Click Generate New Private Key, then confirm by clicking Generate Key. -![Generate Firebase Key](https://miro.medium.com/max/2534/1*D7pVdJhsrYJllAqks6DyrQ.png) -- Change the file name to `serviceAccountKey.json`. -- Copy `serviceAccountKey.json` file in your project directory. - -### 2. Enter Firebase Storage Bucket name - -- [Create a default Storage bucket](https://firebase.google.com/docs/storage/web/start#create-default-bucket) -- From Firebase Storage menu you can find your bucket name. -![Bucket Name](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/firebase-storage.PNG) \ No newline at end of file +### 1. Click on next to chack and prepare the ingredients for installation. \ No newline at end of file diff --git a/docs/ofcc-setup/4.md b/docs/ofcc-setup/4.md index 83a5c67..0971984 100644 --- a/docs/ofcc-setup/4.md +++ b/docs/ofcc-setup/4.md @@ -1,26 +1,20 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) +# Telar CLI - Setup Telar Social on OpenFaaS -## Step 4 (MongoDB) +## Step 4 (Firebase Storage) -- [Create a MongoDB Account](https://account.mongodb.com/account/register) -- [Create a Free tire Cluster](https://docs.atlas.mongodb.com/tutorial/deploy-free-tier-cluster/) +- Make sure you alread have a Firebase account and project ready to use. -### 1. Add a New User for Database Access -- From `Database Access` menu, click on ` Add New Database User`. -![Database Access](https://github.com/Qolzam/telar-cli/blob/master/docs/images/mongo-1.PNG) -- Enter username and click on `Autogenerate secure password` then click on `Add User`. -![Autogenerate secure password](https://github.com/Qolzam/telar-cli/blob/master/docs/images/mongo-2.PNG) -- Back in the Telar CLI copy password in Telar CLI `Password` field. -### 2. Enter connection string -- From Cluster menu click on `CONNECT`. -![CONNECT](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/mongo-5.PNG) -- From Connect window click on `Connect your application`. Then copy connection string using `Copy` button then back in the Telar CLI paste it in `Host` field. -> Note: The connection string should follow the pattern mongodb+srv://amir:``@cluster0-luefk.mongodb.net/test?retryWrites=true&w=majority. If you created more that one database user the connection string will change to mongodb+srv://``:``@cluster0-luefk.mongodb.net/test?retryWrites=true&w=majority. In this case you need to replace one of database username with ``. -![connection string](https://github.com/Qolzam/telar-cli/blob/master/docs/images/mongo-7.PNG) +### 1. Copy Firebase Service Account file in your project directory -### 3. Enable Network Access -- From `Network Access` menu, click on `Add IP Address`. -![Add IP Address](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/mongo-3.PNG) -- From the open window click on `Allow Access from Anywhere` then `Confirm`. -![Allow Access from Anywhere](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/mongo-4.PNG) - \ No newline at end of file +- In the Firebase console, open Settings > [Service Accounts](https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk). +![Firebase Project Settings](https://miro.medium.com/max/2812/1*snYuDB4IOOCtBv7s2dt2KQ.png) +- Click Generate New Private Key, then confirm by clicking Generate Key. +![Generate Firebase Key](https://miro.medium.com/max/2534/1*D7pVdJhsrYJllAqks6DyrQ.png) +- Change the file name to `serviceAccountKey.json`. +- Copy `serviceAccountKey.json` file in your project directory. + +### 2. Enter Firebase Storage Bucket name + +- [Create a default Storage bucket](https://firebase.google.com/docs/storage/web/start#create-default-bucket) +- From Firebase Storage menu you can find your bucket name. +![Bucket Name](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/firebase-storage.PNG) \ No newline at end of file diff --git a/docs/ofcc-setup/5.md b/docs/ofcc-setup/5.md index 4de8ff7..7a8acf4 100644 --- a/docs/ofcc-setup/5.md +++ b/docs/ofcc-setup/5.md @@ -1,23 +1,26 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) - -## Step 5 ([Google reCaptcha](https://support.google.com/recaptcha/?hl=enhttps://support.google.com/recaptcha/?hl=en)) - -Google reCAPTCHA prompts visitors to check a box to prove that they’re not a robot before they submit their information. -To enable reCAPTCHA, you'll need a Google account. This integration uses reCAPTCHA V2. - -### 1. In the site Settings panel, click Advanced, then click External API Keys. -### 2. Scroll down to Google reCAPTCHA. -### 3. Click the link to get your Google reCAPTCHA API Keys. The link will open in a new tab. -### 4. Click Admin Console, then select reCAPTCHA V2. Telar Social doesn't support reCAPTCHA V3. -### 5. Select "I'm not a robot" Checkbox. The other options aren't supported. -### 6. Enter your built-in domain and click the + icon. Use the format [your-github-username].[ofc-domain], excluding https:// from the beginning. In my case the [your-github-username] is red-gold (red-gold.cloud.telar.dev). - -![reCaptcha](https://miro.medium.com/max/1839/1*QwDRyFRk7Z9i2bp-UXKc_Q.png) - -### 7. Click Submit. -### 8. Copy your Site Key and Secret Key. -![The Site Key and Secret Key in the reCAPTCHA dashboard](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/recaptcha.png) -### 9. Back in the Telar CLI, paste your keys. - - - +# Telar CLI - Setup Telar Social on OpenFaaS + +## Step 5 (MongoDB) + +- [Create a MongoDB Account](https://account.mongodb.com/account/register) +- [Create a Free tire Cluster](https://docs.atlas.mongodb.com/tutorial/deploy-free-tier-cluster/) + +### 1. Add a New User for Database Access +- From `Database Access` menu, click on ` Add New Database User`. +![Database Access](https://github.com/Qolzam/telar-cli/blob/master/docs/images/mongo-1.PNG) +- Enter username and click on `Autogenerate secure password` then click on `Add User`. +![Autogenerate secure password](https://github.com/Qolzam/telar-cli/blob/master/docs/images/mongo-2.PNG) +- Back in the Telar CLI copy password in Telar CLI `Password` field. +### 2. Enter connection string +- From Cluster menu click on `CONNECT`. +![CONNECT](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/mongo-5.PNG) +- From Connect window click on `Connect your application`. Then copy connection string using `Copy` button then back in the Telar CLI paste it in `Host` field. +> Note: The connection string should follow the pattern mongodb+srv://amir:``@cluster0-luefk.mongodb.net/test?retryWrites=true&w=majority. If you created more that one database user the connection string will change to mongodb+srv://``:``@cluster0-luefk.mongodb.net/test?retryWrites=true&w=majority. In this case you need to replace one of database username with ``. +![connection string](https://github.com/Qolzam/telar-cli/blob/master/docs/images/mongo-7.PNG) + +### 3. Enable Network Access +- From `Network Access` menu, click on `Add IP Address`. +![Add IP Address](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/mongo-3.PNG) +- From the open window click on `Allow Access from Anywhere` then `Confirm`. +![Allow Access from Anywhere](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/mongo-4.PNG) + \ No newline at end of file diff --git a/docs/ofcc-setup/6.md b/docs/ofcc-setup/6.md index a90fffa..1835ecc 100644 --- a/docs/ofcc-setup/6.md +++ b/docs/ofcc-setup/6.md @@ -1,11 +1,23 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) +# Telar CLI - Setup Telar Social on OpenFaaS -## Step 6 (Github OAuth) +## Step 6 ([Google reCaptcha](https://support.google.com/recaptcha/?hl=enhttps://support.google.com/recaptcha/?hl=en)) -Following [Github document](https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/) register your Github OAuth application. +Google reCAPTCHA prompts visitors to check a box to prove that they’re not a robot before they submit their information. +To enable reCAPTCHA, you'll need a Google account. This integration uses reCAPTCHA V2. + +### 1. In the site Settings panel, click Advanced, then click External API Keys. +### 2. Scroll down to Google reCAPTCHA. +### 3. Click the link to get your Google reCAPTCHA API Keys. The link will open in a new tab. +### 4. Click Admin Console, then select reCAPTCHA V2. Telar Social doesn't support reCAPTCHA V3. +### 5. Select "I'm not a robot" Checkbox. The other options aren't supported. +### 6. Enter your built-in domain and click the + icon. Use the format [your-github-username].[ofc-domain], excluding https:// from the beginning. In my case the [your-github-username] is red-gold (red-gold.cloud.telar.dev). + +![reCaptcha](https://miro.medium.com/max/1839/1*QwDRyFRk7Z9i2bp-UXKc_Q.png) + +### 7. Click Submit. +### 8. Copy your Site Key and Secret Key. +![The Site Key and Secret Key in the reCAPTCHA dashboard](https://raw.githubusercontent.com/Qolzam/telar-cli/master/docs/images/recaptcha.png) +### 9. Back in the Telar CLI, paste your keys. -### 1. Set Authorization callback URL to https://[your_github_username].[ofc-domain]/auth` in my case https://red-gold.cloud.telar.dev/auth. -![Github OAuth](https://miro.medium.com/max/1872/1*X2IEBxVNE1xs-24hjQB8uA.png) -### 2. Back in the Telar CLI, after registering Github application, enter client ID and client secret from your Github application page. diff --git a/docs/ofcc-setup/7.md b/docs/ofcc-setup/7.md index f7b3601..8b3d305 100644 --- a/docs/ofcc-setup/7.md +++ b/docs/ofcc-setup/7.md @@ -1,9 +1,11 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) +# Telar CLI - Setup Telar Social on OpenFaaS -## Step 7 (User Management) +## Step 7 (Github OAuth) -### 1. Enter your Telar Social admin email and password. +Following [Github document](https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/) register your Github OAuth application. + +### 1. Set Authorization callback URL to https://[your_github_username].[ofc-domain]/auth` in my case https://red-gold.cloud.telar.dev/auth. +![Github OAuth](https://miro.medium.com/max/1872/1*X2IEBxVNE1xs-24hjQB8uA.png) +### 2. Back in the Telar CLI, after registering Github application, enter client ID and client secret from your Github application page. -### 2. Enter your valid Gmail and password for sending signup/reset password verfication code to Telar Social users. -> Note: In some cases you need do some configurations to enable this feature for Gmail. Please follow [nodemailer instruction](https://nodemailer.com/usage/using-gmail/) enabling access to the email. \ No newline at end of file diff --git a/docs/ofcc-setup/8.md b/docs/ofcc-setup/8.md index 05ef36e..25859c5 100644 --- a/docs/ofcc-setup/8.md +++ b/docs/ofcc-setup/8.md @@ -1,14 +1,9 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tire) +# Telar CLI - Setup Telar Social on OpenFaaS -## Step 8 (Websocket) -We are using socket.io to handle realtime data. We provided a websocket server running on Heroku. Setup websocket server following bellow steps. We assumed you have Heroku account logged in already. +## Step 8 (User Management) -#### 1. Go to [ts-websocket](https://github.com/Qolzam/ts-websocket) repository and click on `Deploy to Heroku`. -#### 2. You will be redirected to Heroku website. Type your app name and click on Deploy app. -#### 3. Click on Manage App then click on Settings tab. Find Config Vars and click on Reveal Config Vars. -#### 4. Add following Key/Value in your app. Copy your payload secret from Telar CLI. -- [ ] Key: GATEWAY , Value: https://[your-github-username].[ofc-domain] -- [ ] Key: PAYLOAD_SECRET , Value: your_payload_secret -- [ ] Key: PRETTY_URL , Value: true +### 1. Enter your Telar Social admin email and password. -#### 5. Back in the Telar CLI, enter your Heroku websoket app URL. \ No newline at end of file +### 2. Enter your valid Gmail and password for sending signup/reset password verfication code to Telar Social users. + +> Note: In some cases you need do some configurations to enable this feature for Gmail. Please follow [nodemailer instruction](https://nodemailer.com/usage/using-gmail/) enabling access to the email. \ No newline at end of file diff --git a/docs/ofcc-setup/9.md b/docs/ofcc-setup/9.md new file mode 100644 index 0000000..535149a --- /dev/null +++ b/docs/ofcc-setup/9.md @@ -0,0 +1,14 @@ +# Telar CLI - Setup Telar Social on OpenFaaS + +## Step 9 (Websocket) +We are using socket.io to handle realtime data. We provided a websocket server running on Heroku. Setup websocket server following bellow steps. We assumed you have Heroku account logged in already. + +#### 1. Go to [ts-websocket](https://github.com/Qolzam/ts-websocket) repository and click on `Deploy to Heroku`. +#### 2. You will be redirected to Heroku website. Type your app name and click on Deploy app. +#### 3. Click on Manage App then click on Settings tab. Find Config Vars and click on Reveal Config Vars. +#### 4. Add following Key/Value in your app. Copy your payload secret from Telar CLI. +- [ ] Key: GATEWAY , Value: https://[your-github-username].[ofc-domain] +- [ ] Key: PAYLOAD_SECRET , Value: your_payload_secret +- [ ] Key: PRETTY_URL , Value: true + +#### 5. Back in the Telar CLI, enter your Heroku websoket app URL. \ No newline at end of file diff --git a/docs/ofcc-setup/README.md b/docs/ofcc-setup/README.md index bd42075..ebb9f33 100644 --- a/docs/ofcc-setup/README.md +++ b/docs/ofcc-setup/README.md @@ -1,17 +1,19 @@ -# Telar CLI - Setup Telar Social on OpenFaaS (Free Tier) +# Telar CLI - Setup Telar Social on OpenFaaS ### [Step 1 (Let's start)](1.md) -### [Step 2 (Check ingredients)](2.md) +### [Step 2 (General settings)](2.md) -### [Step 3 (Firebase Storage)](3.md) +### [Step 3 (Check ingredients)](3.md) -### [Step 4 (MongoDB)](4.md) +### [Step 4 (Firebase Storage)](4.md) -### [Step 5 (Google reCaptcha)](5.md) +### [Step 5 (MongoDB)](5.md) -### [Step 6 (Github OAuth)](6.md) +### [Step 6 (Google reCaptcha)](6.md) -### [Step 7 (User Management)](7.md) +### [Step 7 (Github OAuth)](7.md) -### [Step 8 (Websocket)](8.md) +### [Step 8 (User Management)](8.md) + +### [Step 9 (Websocket)](9.md) diff --git a/ui/build/asset-manifest.json b/ui/build/asset-manifest.json index d637296..be5966b 100644 --- a/ui/build/asset-manifest.json +++ b/ui/build/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { "main.css": "./static/css/main.ab2c6aa1.chunk.css", - "main.js": "./static/js/main.79acc3ac.chunk.js", - "main.js.map": "./static/js/main.79acc3ac.chunk.js.map", + "main.js": "./static/js/main.3e4bea54.chunk.js", + "main.js.map": "./static/js/main.3e4bea54.chunk.js.map", "runtime-main.js": "./static/js/runtime-main.dc788c77.js", "runtime-main.js.map": "./static/js/runtime-main.dc788c77.js.map", "static/js/2.77dc9639.chunk.js": "./static/js/2.77dc9639.chunk.js", "static/js/2.77dc9639.chunk.js.map": "./static/js/2.77dc9639.chunk.js.map", "index.html": "./index.html", - "precache-manifest.cf849ef0c58b0b5df6f4415659178a51.js": "./precache-manifest.cf849ef0c58b0b5df6f4415659178a51.js", + "precache-manifest.b1ba63d6a2d0be7e7abb6b63c74dc280.js": "./precache-manifest.b1ba63d6a2d0be7e7abb6b63c74dc280.js", "service-worker.js": "./service-worker.js", "static/css/main.ab2c6aa1.chunk.css.map": "./static/css/main.ab2c6aa1.chunk.css.map", "static/js/2.77dc9639.chunk.js.LICENSE.txt": "./static/js/2.77dc9639.chunk.js.LICENSE.txt" @@ -17,6 +17,6 @@ "static/js/runtime-main.dc788c77.js", "static/js/2.77dc9639.chunk.js", "static/css/main.ab2c6aa1.chunk.css", - "static/js/main.79acc3ac.chunk.js" + "static/js/main.3e4bea54.chunk.js" ] } \ No newline at end of file diff --git a/ui/build/index.html b/ui/build/index.html index 88d240f..39dd30a 100644 --- a/ui/build/index.html +++ b/ui/build/index.html @@ -1 +1 @@ -Telar
\ No newline at end of file +Telar
\ No newline at end of file diff --git a/ui/build/precache-manifest.cf849ef0c58b0b5df6f4415659178a51.js b/ui/build/precache-manifest.b1ba63d6a2d0be7e7abb6b63c74dc280.js similarity index 72% rename from ui/build/precache-manifest.cf849ef0c58b0b5df6f4415659178a51.js rename to ui/build/precache-manifest.b1ba63d6a2d0be7e7abb6b63c74dc280.js index 9935be4..7765d33 100644 --- a/ui/build/precache-manifest.cf849ef0c58b0b5df6f4415659178a51.js +++ b/ui/build/precache-manifest.b1ba63d6a2d0be7e7abb6b63c74dc280.js @@ -1,10 +1,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "7c276bf7650707e0ec1540182dfabed2", + "revision": "4ba72c39715338a6f4a3d6f311b57d93", "url": "./index.html" }, { - "revision": "eac05a9bd9abf3681968", + "revision": "54dc45f1c5766ed44a84", "url": "./static/css/main.ab2c6aa1.chunk.css" }, { @@ -16,8 +16,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "./static/js/2.77dc9639.chunk.js.LICENSE.txt" }, { - "revision": "eac05a9bd9abf3681968", - "url": "./static/js/main.79acc3ac.chunk.js" + "revision": "54dc45f1c5766ed44a84", + "url": "./static/js/main.3e4bea54.chunk.js" }, { "revision": "c4bd6c38242608470894", diff --git a/ui/build/service-worker.js b/ui/build/service-worker.js index 3e40f6e..a149865 100644 --- a/ui/build/service-worker.js +++ b/ui/build/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "./precache-manifest.cf849ef0c58b0b5df6f4415659178a51.js" + "./precache-manifest.b1ba63d6a2d0be7e7abb6b63c74dc280.js" ); self.addEventListener('message', (event) => { diff --git a/ui/build/static/js/main.79acc3ac.chunk.js b/ui/build/static/js/main.3e4bea54.chunk.js similarity index 56% rename from ui/build/static/js/main.79acc3ac.chunk.js rename to ui/build/static/js/main.3e4bea54.chunk.js index 0a1068b..82c9a9d 100644 --- a/ui/build/static/js/main.79acc3ac.chunk.js +++ b/ui/build/static/js/main.3e4bea54.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonptsup-app"]=this["webpackJsonptsup-app"]||[]).push([[0],{255:function(e,t,a){e.exports=a(324)},260:function(e,t,a){},265:function(e,t,a){},266:function(e,t,a){},324:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),l=a(13),o=a.n(l),c=(a(260),a(6)),i=a(17),u=a(32),s=a(388),m=a(323),d=a(235),p=a(249),b=a.n(p),E=a(250),g=a(9),f="#FFFFFF",h={black:"#000000",white:f,primary:{contrastText:f,dark:g.a.orange[900],main:g.a.orange[500],light:g.a.orange[100]},secondary:{contrastText:f,dark:g.a.blue[900],main:g.a.blue.A400,light:g.a.blue.A400},success:{contrastText:f,dark:g.a.green[900],main:g.a.green[600],light:g.a.green[400]},info:{contrastText:f,dark:g.a.blue[900],main:g.a.blue[600],light:g.a.blue[400]},warning:{contrastText:f,dark:g.a.orange[900],main:g.a.orange[600],light:g.a.orange[400]},error:{contrastText:f,dark:g.a.red[900],main:g.a.red[600],light:g.a.red[400]},text:{primary:g.a.blueGrey[900],secondary:g.a.blueGrey[600],link:g.a.blue[600]},background:{default:"#F4F6F8",paper:f},icon:g.a.blueGrey[600],divider:g.a.grey[200]},y={h1:{color:h.text.primary,fontWeight:500,fontSize:"35px",letterSpacing:"-0.24px",lineHeight:"40px"},h2:{color:h.text.primary,fontWeight:500,fontSize:"29px",letterSpacing:"-0.24px",lineHeight:"32px"},h3:{color:h.text.primary,fontWeight:500,fontSize:"24px",letterSpacing:"-0.06px",lineHeight:"28px"},h4:{color:h.text.primary,fontWeight:500,fontSize:"20px",letterSpacing:"-0.06px",lineHeight:"24px"},h5:{color:h.text.primary,fontWeight:500,fontSize:"16px",letterSpacing:"-0.05px",lineHeight:"20px"},h6:{color:h.text.primary,fontWeight:500,fontSize:"14px",letterSpacing:"-0.05px",lineHeight:"20px"},subtitle1:{color:h.text.primary,fontSize:"16px",letterSpacing:"-0.05px",lineHeight:"25px"},subtitle2:{color:h.text.secondary,fontWeight:400,fontSize:"14px",letterSpacing:"-0.05px",lineHeight:"21px"},body1:{color:h.text.primary,fontSize:"14px",letterSpacing:"-0.05px",lineHeight:"21px"},body2:{color:h.text.secondary,fontSize:"12px",letterSpacing:"-0.04px",lineHeight:"18px"},button:{color:h.text.primary,fontSize:"14px"},caption:{color:h.text.secondary,fontSize:"11px",letterSpacing:"0.33px",lineHeight:"13px"},overline:{color:h.text.secondary,fontSize:"11px",fontWeight:500,letterSpacing:"0.33px",lineHeight:"13px",textTransform:"uppercase"}},v={root:{color:h.icon,"&:hover":{backgroundColor:"rgba(0, 0, 0, 0.03)"}}},O=a(26),S={MuiButton:{contained:{boxShadow:"0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.20)",backgroundColor:"#FFFFFF"}},MuiIconButton:v,MuiPaper:{elevation1:{boxShadow:"0 0 0 1px rgba(63,63,68,0.05), 0 1px 3px 0 rgba(63,63,68,0.15)"}},MuiTableCell:{root:Object(O.a)({},y.body1,{borderBottom:"1px solid ".concat(h.divider)})},MuiTableHead:{root:{backgroundColor:g.a.grey[50]}},MuiTypography:{gutterBottom:{marginBottom:8}},MuiListItem:{container:{listStyleType:"none",paddingTop:5}}},j=Object(E.a)({palette:h,typography:y,overrides:S,zIndex:{appBar:1200,drawer:1100}}),x=(a(265),a(266),a(2)),k=function(e){var t=e.layout,a=e.component,n=Object(x.a)(e,["layout","component"]);return r.a.createElement(i.b,Object.assign({},n,{render:function(e){return r.a.createElement(t,null,r.a.createElement(a,e))}}))},N=a(387),C=a(299),T=a(300),w=a(301),P=a(302),D=a(274),B=a(10),_=a(293),I=a(295),W=a(294),F=a(45),A=a(296),U={SET_SETUP_STATE:"SET_SETUP_STATE",SET_SETUP_STEP:"SET_SETUP_STEP",SET_INPUT:"SET_INPUT",SET_DEPLOY_OPEN:"SET_DEPLOY_OPEN",SET_SETUP_DEFAULT_VALUES:"SET_SETUP_DEFAULT_VALUES",POP_MESSAGE:"POP_MESSAGE",SET_STEP_CONDITION:"SET_STEP_CONDITION",SHOW_INFO_DIALOG:"SHOW_INFO_DIALOG",HIDE_INFO_DIALOG:"HIDE_INFO_DIALOG",REMOVE_SOCIAL_FROM_CLUSTER:"REMOVE_SOCIAL_FROM_CLUSTER",START_STEP:"START_STEP",CHECK_STEP:"CHECK_STEP"},z=function(e){return{type:U.SET_SETUP_STATE,payload:{state:e}}},G=function(e,t){return{type:U.SET_INPUT,payload:{key:e,value:t}}},H=function(e){return{type:U.POP_MESSAGE,payload:{message:e}}},L=function(){return{type:U.HIDE_INFO_DIALOG,payload:{}}},M=function(){return{type:U.START_STEP,payload:{}}},q=function(e){return{type:U.REMOVE_SOCIAL_FROM_CLUSTER,payload:{projectDirectory:e}}},R=function(e){return{type:U.CHECK_STEP,payload:e}},K=a(268),Q=a(273),V=a(271),Y=a(272),$=a(270);function J(e){var t=r.a.useState("paper"),a=Object(B.a)(t,2),n=a[0],l=(a[1],e.open),o=e.onClose,c=r.a.useRef(null);return r.a.useEffect((function(){if(l){var e=c.current;null!==e&&e.focus()}}),[l]),r.a.createElement("div",null,r.a.createElement(K.a,{open:l,onClose:o,scroll:"paper","aria-labelledby":"scroll-dialog-title","aria-describedby":"scroll-dialog-description"},r.a.createElement($.a,{id:"scroll-dialog-title"},e.title),r.a.createElement(V.a,{dividers:"paper"===n},r.a.createElement(Y.a,{id:"scroll-dialog-description",ref:c,tabIndex:-1},e.text),e.children),r.a.createElement(Q.a,null,r.a.createElement(D.a,{onClick:o,color:"primary"},"OK"))))}var X=a(144),Z=a.n(X),ee=function(e){Z.a.post("/dispatch",e).then((function(e){return console.log(e.data)})).catch((function(e){return console.log(e)}))},te=function(e){Z.a.post("/open-url",{url:e}).then((function(e){return console.log(e.data)})).catch((function(e){return console.log(e)}))},ae=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function ne(){var e,t=ae(),a=(r.a.createElement("span",{className:t.bullet},"\u2022"),Object(c.b)()),n=Object(c.c)((function(e){return e.inputs.projectDirectory})),l=r.a.useState(!1),o=Object(B.a)(l,2),i=o[0],u=o[1];return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/1.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Enter your project directory"),r.a.createElement(A.a,{className:t.address,fullWidth:!0,required:!0,id:"outlined-required",label:"Project Directory",value:n,onChange:(e="projectDirectory",function(t){var n=t.currentTarget.value;a(G(e,n))}),variant:"outlined"})),r.a.createElement(J,{open:i,onClose:function(){u(!1)},title:"Instruction"},r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var re=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function le(){var e=re(),t=(r.a.createElement("span",{className:e.bullet},"\u2022"),Object(c.b)()),a=Object(c.c)((function(e){return e.inputs.appID})),n=Object(c.c)((function(e){return e.inputs.ofUsername})),l=Object(c.c)((function(e){return e.inputs.ofGateway})),o=Object(c.c)((function(e){return e.inputs.socialDomain})),i=Object(c.c)((function(e){return e.inputs.secretName})),u=Object(c.c)((function(e){return e.inputs.namespace})),s=Object(c.c)((function(e){return e.inputs.kubeconfigPath})),m=function(e){return function(a){var n=a.currentTarget.value;t(G(e,n))}},d=r.a.useState(!1),p=Object(B.a)(d,2),b=p[0],E=p[1];return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/1.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter social network identifier. Default is `my-social-network`."),r.a.createElement(A.a,{required:!0,id:"social-id",label:"Scoial Network ID",onChange:m("appID"),value:a,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter OpenFaaS username. Default is `admin`."),r.a.createElement(A.a,{required:!0,id:"of-username",label:"OpenFaaS username",onChange:m("ofUsername"),value:n,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter OpenFaaS gateway e.g. `domain.com` or `localhost.com:31112`"),r.a.createElement(A.a,{required:!0,id:"ofc-domain",label:"OpenFaaS gateway",onChange:m("ofGateway"),value:l,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your social network URL e.g. https://social.com or https://social.com/function"),r.a.createElement(A.a,{required:!0,id:"social-domain",label:"Social URL",onChange:m("socialDomain"),value:o,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter OpenFaaS funtion namespace. Default is `openfaas-fn`"),r.a.createElement(A.a,{required:!0,id:"openfaas-namespace",label:"OpenFaaS namespace",onChange:m("namespace"),value:u,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter secret name that will be created on your K8S cluster. Default is `secrets`"),r.a.createElement(A.a,{required:!0,id:"secret-name",label:"Secret name",onChange:m("secretName"),value:i,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"In the case you want to use KUBECONFIG path instead of default context, enter the kube config path. If not let the textbox empty"),r.a.createElement(A.a,{id:"kubeconfig-path",label:"Kubeconfig path",onChange:m("kubeconfigPath"),value:s,variant:"outlined",fullWidth:!0})),r.a.createElement(J,{open:b,onClose:function(){E(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var oe=a(4),ce=a(70),ie=a(230),ue=a(228),se=a(236),me=a(298),de=a(326),pe=a(297),be=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),Ee=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function ge(){Object(c.b)();var e=Object(c.c)((function(e){return e.inputs.loadingCheckIngredients})),t=Object(c.c)((function(e){return e.inputs.cloneTelarWeb})),a=Object(c.c)((function(e){return e.inputs.cloneTsServerless})),n=Object(c.c)((function(e){return e.inputs.cloneTsUi})),l=Ee(),o=r.a.useState(!1),i=Object(B.a)(o,2),u=i[0],s=i[1],m=function(e){return e?r.a.createElement(be,{checked:!0}):r.a.createElement(pe.a,{className:l.progress,size:17,color:"secondary"})};return r.a.createElement(_.a,{className:l.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/2.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(ue.a,{component:"fieldset",className:l.formControl},r.a.createElement(ie.a,{component:"legend"},"Prepare ingredients"),r.a.createElement(F.a,{className:l.title,color:"textPrimary",gutterBottom:!0},"Clean on next to start preparation"),r.a.createElement(se.a,null,e&&r.a.createElement(r.a.Fragment,null,r.a.createElement(me.a,{control:m(t),checked:t,label:r.a.createElement("span",null,"Clone telar-web repository.")}),r.a.createElement(me.a,{control:m(a),checked:a,label:r.a.createElement("span",null,"Clone ts-serverless repository.")}),r.a.createElement(me.a,{control:m(n),checked:n,label:r.a.createElement("span",null,"Clone ts-ui repository.")}))))),r.a.createElement(I.a,null),r.a.createElement(J,{open:u,onClose:function(){s(!1)},title:"Instruction"},r.a.createElement(_.a,{className:l.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"This step check the ingredients!"),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var fe=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),he=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function ye(){var e,t=he(),a=Object(c.b)(),n=Object(c.c)((function(e){return e.inputs.bucketName})),l=(Object(c.c)((function(e){return e.inputs.firebaseServiceAccount})),Object(c.c)((function(e){return e.inputs.firebaseStorage}))),o=Object(c.c)((function(e){return e.inputs.loadingFirebaseStorage})),i=(r.a.createElement("span",{className:t.bullet},"\u2022"),r.a.useState({gilad:!0,jason:!1,antoine:!1})),u=Object(B.a)(i,2),s=(u[0],u[1],r.a.useState(!1)),m=Object(B.a)(s,2),d=m[0],p=m[1],b=r.a.useState(0),E=Object(B.a)(b,2),g=E[0],f=(E[1],function(e){return e?r.a.createElement(fe,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})});return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Enter bucket name and download service account file in project directory"),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,onChange:(e="bucketName",function(t){a(G(e,t.currentTarget.value))}),value:n,id:"outlined-required",label:"Bucket Name",variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),o&&r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:f(l),label:"Check serviceAccount.json file",checked:l}),r.a.createElement(me.a,{control:f(l),label:"Check firebase storage",checked:l})))),r.a.createElement(I.a,null),r.a.createElement(J,{open:d,onClose:function(){p(!1)},title:0===g?"Instruction":"\u26a0\ufe0fWarning \u26a0\ufe0f"},0===g?r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null)):r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"\u26a0\ufe0f We strictly recommend you to use your own Firebase Storage. Public Firebase Storage only use for testing, because everybody can see your data and also there is no garanty for data persistance. Public Firebase Storage is a free and shared Firebase Storage account!"),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var ve=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function Oe(){var e=ve(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.inputs.adminUsername})),n=Object(c.c)((function(e){return e.inputs.adminPassword})),l=Object(c.c)((function(e){return e.inputs.gmail})),o=Object(c.c)((function(e){return e.inputs.gmailPassword})),i=r.a.useState(!1),u=Object(B.a)(i,2),s=u[0],m=u[1],d=(r.a.createElement("span",{className:e.bullet},"\u2022"),function(e){return function(a){t(G(e,a.currentTarget.value))}});return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/7.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter Admin user information."),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Admin Email",variant:"outlined",value:a,onChange:d("adminUsername")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Password",variant:"outlined",value:n,onChange:d("adminPassword")})),r.a.createElement(W.a,null,r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your Gmail information."),r.a.createElement(F.a,{variant:"body2",component:"p"},"It will be used for sending confirmation and verification email to users.",r.a.createElement("br",null)),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Email",variant:"outlined",value:l,onChange:d("gmail")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Password",variant:"outlined",value:o,onChange:d("gmailPassword")})),r.a.createElement(I.a,null),r.a.createElement(J,{open:s,onClose:function(){m(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Se=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),je=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function xe(){var e,t=je(),a=Object(c.b)(),n=Object(c.c)((function(e){return e.inputs.gateway})),l=Object(c.c)((function(e){return e.inputs.payloadSecret})),o=Object(c.c)((function(e){return e.inputs.websocketURL})),i=Object(c.c)((function(e){return e.inputs.websocketConnection})),u=Object(c.c)((function(e){return e.inputs.loadingWebsocket})),s=(r.a.createElement("span",{className:t.bullet},"\u2022"),r.a.useState({gilad:!0,jason:!1,antoine:!1})),m=Object(B.a)(s,2),d=(m[0],m[1],r.a.useState(!1)),p=Object(B.a)(d,2),b=p[0],E=p[1],g=function(e){return function(t){a(G(e,t.currentTarget.value))}};return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Enter Websocket server information and telar server gateway"),r.a.createElement(A.a,{onChange:g("gateway"),label:"Gateway",value:n,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{InputProps:{readonly:!0},label:"Payload Secret",value:l,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,onChange:g("websocketURL"),label:"Websocket URL",value:o,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),u&&r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:(e=i,e?r.a.createElement(Se,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})),checked:i,label:"Check websocket server connection"})))),r.a.createElement(I.a,null),r.a.createElement(J,{open:b,onClose:function(){E(!1)},title:"Instruction"},r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var ke=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),Ne=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function Ce(){var e,t=Ne(),a=Object(c.b)(),n=Object(c.c)((function(e){return e.inputs.mongoDBHost})),l=Object(c.c)((function(e){return e.inputs.mongoDBPassword})),o=Object(c.c)((function(e){return e.inputs.mongoDBName})),i=Object(c.c)((function(e){return e.inputs.mongoDBConnection})),u=Object(c.c)((function(e){return e.inputs.loadingMongoDB})),s=(r.a.createElement("span",{className:t.bullet},"\u2022"),r.a.useState({gilad:!0,jason:!1,antoine:!1})),m=Object(B.a)(s,2),d=(m[0],m[1],r.a.useState(!1)),p=Object(B.a)(d,2),b=p[0],E=p[1],g=r.a.useState(0),f=Object(B.a)(g,2),h=f[0],y=(f[1],function(e){return function(t){a(G(e,t.currentTarget.value))}});return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Fill the field for MongoDB database"),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Host",value:n,onChange:y("mongoDBHost"),variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Database Name",value:o,onChange:y("mongoDBName"),variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Password",value:l,onChange:y("mongoDBPassword"),variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),u&&r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:(e=i,e?r.a.createElement(ke,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})),checked:i,label:"Check MongoDB connection"})))),r.a.createElement(I.a,null),r.a.createElement(J,{open:b,onClose:function(){E(!1)},title:0===h?"Instruction":"\u26a0\ufe0fWarning \u26a0\ufe0f"},0===h?r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null)):r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"\u26a0\ufe0f We strictly recommend you to use your own MongoDB. Public MongoDB only use for testing, because everybody can see your data and also there is no garanty for data persistance. Public MongoDB is a free and shared MongoDB account!"),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Te=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function we(){var e=Te(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.inputs.siteKeyRecaptcha})),n=Object(c.c)((function(e){return e.inputs.recaptchaKey})),l=(r.a.createElement("span",{className:e.bullet},"\u2022"),r.a.useState(!1)),o=Object(B.a)(l,2),i=o[0],u=o[1],s=r.a.useState(0),m=Object(B.a)(s,2),d=(m[0],m[1],function(e){return function(a){t(G(e,a.currentTarget.value))}});return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/5.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your valid Google reCaptcha site key and secret key"),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Site Key",variant:"outlined",value:a,onChange:d("siteKeyRecaptcha")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{className:e.address,required:!0,id:"outlined-required",label:"Secret Key",variant:"outlined",value:n,onChange:d("recaptchaKey")})),r.a.createElement(I.a,null),r.a.createElement(J,{open:i,onClose:function(){u(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Pe=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function De(){var e=Pe(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.inputs.githubOAuthSecret})),n=Object(c.c)((function(e){return e.inputs.githubOAuthClientID})),l=(r.a.createElement("span",{className:e.bullet},"\u2022"),r.a.useState(!1)),o=Object(B.a)(l,2),i=o[0],u=o[1],s=function(e){return function(a){t(G(e,a.currentTarget.value))}};return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your valid Github OAuth client ID and secret key."),r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/6.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Github OAuth Client ID",variant:"outlined",value:n,onChange:s("githubOAuthClientID")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Github OAuth Client Secret",variant:"outlined",value:a,onChange:s("githubOAuthSecret")}),r.a.createElement("br",null),r.a.createElement("br",null)),r.a.createElement(I.a,null),r.a.createElement(J,{open:i,onClose:function(){u(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Be=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),_e=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function Ie(e){var t=_e(),a=e.open,n=e.onClose,l=Object(c.c)((function(e){return e.inputs.loadingStackYaml})),o=Object(c.c)((function(e){return e.inputs.loadingCreateSecret})),i=(Object(c.c)((function(e){return e.inputs.loadingPublicPrivateKey})),Object(c.c)((function(e){return e.inputs.deployTelarWeb}))),u=Object(c.c)((function(e){return e.inputs.deployTsServerless})),s=Object(c.c)((function(e){return e.inputs.deploySocialUi})),m=function(e){return e?r.a.createElement(Be,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})};return r.a.createElement(K.a,{open:a,disableBackdropClick:!0,disableEscapeKeyDown:!0,onClose:function(){n()},"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},r.a.createElement($.a,{id:"alert-dialog-title"},"Deploying"),r.a.createElement(V.a,null,r.a.createElement(Y.a,{id:"alert-dialog-description"},"Deploying the project to OpenFaaS"),r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:m(l),checked:l,label:"Creating Configurations"}),r.a.createElement(me.a,{control:m(o),checked:o,label:"Creating Secrets"}),r.a.createElement(me.a,{control:m(i),checked:i,label:"Deploying Telar Web"}),r.a.createElement(me.a,{control:m(u),checked:u,label:"Deploying Telar Social Serverless"}),r.a.createElement(me.a,{control:m(s),checked:s,label:"Deploying Telar Social User Interface"})))),r.a.createElement(Q.a,null))}var We=Object(N.a)((function(e){return{root:{width:"100%"},button:{marginTop:e.spacing(1),marginRight:e.spacing(1)},actionsContainer:{marginBottom:e.spacing(2)},resetContainer:{padding:e.spacing(3)}}}));var Fe=function(e,t){var a,n=!0,r=!1,l=void 0;try{for(var o,c=t[Symbol.iterator]();!(n=(o=c.next()).done);n=!0){var i=o.value;if(!!(!(a=e.inputs[i])||""===a.trim()))return!1}}catch(u){r=!0,l=u}finally{try{n||null==c.return||c.return()}finally{if(r)throw l}}return!0},Ae=function(e,t){var a=!0,n=!1,r=void 0;try{for(var l,o=t[Symbol.iterator]();!(a=(l=o.next()).done);a=!0){var c=l.value;if(!e.inputs[c])return!1}}catch(i){n=!0,r=i}finally{try{a||null==o.return||o.return()}finally{if(n)throw r}}return!0};function Ue(){var e=We(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.setupStep})),n=Object(c.c)((function(e){return e.deployOpen})),l={},o=["Let's start","General settings","Check ingredients","Firebase Storage","MongoDB","Google reCAPTCHA","Github OAuth","User Manegement","Websocket"],i=Object(c.c)((function(e){return e}));l[0]=Fe(i,["projectDirectory"]),l[1]=Fe(i,["appID","ofGateway","ofUsername","socialDomain","secretName","namespace"]),l[2]=!Ae(i,["loadingCheckIngredients"]),l[3]=!Ae(i,["loadingFirebaseStorage"])&&!0===Fe(i,["bucketName"]),l[4]=!Ae(i,["loadingMongoDB"])&&!0===Fe(i,["mongoDBHost","mongoDBPassword","mongoDBName"]),l[5]=Fe(i,["siteKeyRecaptcha","recaptchaKey"]),l[6]=Fe(i,["githubOAuthSecret"]),l[7]=Fe(i,["adminUsername","adminPassword","gmail","gmailPassword"]),l[8]=(!Ae(i,["loadingWebsocket"])||Ae(i,["websocketConnection"]))&&!0===Fe(i,["gateway","payloadSecret","websocketURL"]);var u=function(){ee(R(i))};return r.a.createElement("div",{className:e.root},r.a.createElement(C.a,{activeStep:a,orientation:"vertical"},o.map((function(t,n){return r.a.createElement(T.a,{key:t},r.a.createElement(w.a,null,t),r.a.createElement(P.a,null,function(e){switch(e){case 0:return r.a.createElement(ne,null);case 1:return r.a.createElement(le,null);case 2:return r.a.createElement(ge,null);case 3:return r.a.createElement(ye,null);case 4:return r.a.createElement(Ce,null);case 5:return r.a.createElement(we,null);case 6:return r.a.createElement(De,null);case 7:return r.a.createElement(Oe,null);case 8:return r.a.createElement(xe,null);default:return"Unknown step"}}(n),r.a.createElement("div",{className:e.actionsContainer},r.a.createElement("div",null,r.a.createElement(D.a,{variant:"contained",color:"primary",onClick:u,className:e.button,disabled:!0!==l[a]},a===o.length-1?"Deploy":"Next")))))}))),r.a.createElement(Ie,{open:n,onClose:function(){t(G("deployOpen",!1))}}))}var ze=a(325),Ge=a(305),He=a(303),Le=a(304),Me=Object(N.a)((function(e){return{formControl:{margin:e.spacing(3)},cardActions:{justifyContent:"flex-end"}}}));function qe(){var e=Object(c.b)(),t=Me(),a=r.a.useState("ofc"),n=Object(B.a)(a,2),l=n[0],o=n[1];return r.a.createElement(_.a,{className:t.root},r.a.createElement(He.a,null,r.a.createElement(Le.a,{component:"img",alt:"Contemplative Reptile",height:"140",image:"https://image.slidesharecdn.com/2019-01-openfaas-when-functions-collide-docks-amsterdam-190128104130/95/docker-and-serverless-randstad-jan-2019-openfaas-serverless-when-functions-and-gitops-collide-47-638.jpg?cb=1548672210",title:"Contemplative Reptile"})),r.a.createElement(W.a,null,r.a.createElement(F.a,{gutterBottom:!0,variant:"h5",component:"h2"},"OpenFaaS"),r.a.createElement(F.a,{variant:"body2",color:"textSecondary"},"The ",r.a.createElement("a",{href:"https://www.openfaas.com/",target:"_blank"},"OpenFaaS")," makes it simple to deploy both functions and existing code on Kubernetes."),r.a.createElement("br",null),r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(ie.a,{component:"legend"},"Choose your setup"),r.a.createElement(Ge.a,{"aria-label":"setup-select",name:"setup-select",value:l,onChange:function(e){o(e.target.value)}},r.a.createElement(me.a,{value:"ofc",control:r.a.createElement(ze.a,null),label:"OpenFaaS"}),r.a.createElement(me.a,{disabled:!0,value:"eks",control:r.a.createElement(ze.a,null),label:"AWS EKS"}),r.a.createElement(me.a,{disabled:!0,value:"gke",control:r.a.createElement(ze.a,null),label:"Google Kubernetes Engine"}),r.a.createElement(me.a,{disabled:!0,value:"aks",control:r.a.createElement(ze.a,null),label:"Azure Kubernetes Service"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Self-host OpenFaaS"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Kubernetes on Bare-metal"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"K3S on Bare-meta"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Local Kind"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Local Minikube"}))),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{variant:"body2",color:"textSecondary",component:"p"},"Vote for your favorite option to enable for the next version. ",r.a.createElement("a",{href:"#",onClick:function(e){e.preventDefault(),te("https://github.com/Qolzam/feedback/issues/1")}},"Click here to vote"))),r.a.createElement(I.a,{className:t.cardActions},r.a.createElement(D.a,{onClick:function(t){ee(M()),e(z("progress"))},size:"small",color:"primary"},"Next")))}var Re=a(8),Ke=a(3),Qe=a(329),Ve=a(150),Ye=a(242),$e=a(306),Je=Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)}}})),Xe=function(e){var t=e.className,a=Object(x.a)(e,["className"]),n=Je();return r.a.createElement("div",Object.assign({},a,{className:Object(Ke.a)(n.root,t)}),r.a.createElement(F.a,{variant:"body1"},"\xa9"," ",r.a.createElement($e.a,{component:"a",href:"#",onClick:function(e){e.preventDefault(),te("https://telar.dev/")}},"Telar")," "," 2020"))},Ze=a(309),et=a(239),tt=a.n(et),at=a(240),nt=a.n(at),rt=a(34),lt=a(328),ot=Object(Qe.a)((function(e){return{root:{display:"flex",flexDirection:"column",alignItems:"center",minHeight:"fit-content"},avatar:{width:60,height:60},name:{marginTop:e.spacing(1)}}})),ct=(Object(i.g)((function(e){var t=e.className,a=Object(x.a)(e,["className"]),n=e.history.location.pathname,l=Object(i.f)(n,{path:"/:user",strict:!0});l&&l.params.user.toLowerCase();var o=ot(),c={name:"Amirhossein Movahedi",avatar:"/images/avatars/amir.JPG",bio:"Distributed System Eng."};return r.a.createElement("div",Object.assign({},a,{className:Object(Ke.a)(o.root,t)}),r.a.createElement(lt.a,{alt:"Person",className:o.avatar,component:rt.a,src:c.avatar,to:"/settings"}),r.a.createElement(F.a,{className:o.name,variant:"h4"},c.name),r.a.createElement(F.a,{variant:"body2"},c.bio))})),a(233)),it=a(307),ut=Object(Qe.a)((function(e){return{root:{},item:{display:"flex",paddingTop:0,paddingBottom:0},button:{color:g.a.blueGrey[800],padding:"10px 8px",justifyContent:"flex-start",textTransform:"none",letterSpacing:0,width:"100%",fontWeight:e.typography.fontWeightMedium},icon:{color:e.palette.icon,width:24,height:24,display:"flex",alignItems:"center",marginRight:e.spacing(1)},active:{color:e.palette.primary.main,fontWeight:e.typography.fontWeightMedium,"& $icon":{color:e.palette.primary.main}}}})),st=Object(n.forwardRef)((function(e,t){return r.a.createElement("div",{ref:t,style:{flexGrow:1}},r.a.createElement(rt.b,e))})),mt=function(e){var t=e.pages,a=e.className,n=Object(x.a)(e,["pages","className"]),l=ut();return r.a.createElement(ct.a,Object.assign({},n,{className:Object(Ke.a)(l.root,a)}),t.map((function(e){return r.a.createElement(it.a,{className:l.item,disableGutters:!0,key:e.title},r.a.createElement(D.a,{activeClassName:l.active,className:l.button,component:st,to:e.href},r.a.createElement("div",{className:l.icon},e.icon),e.title))})))},dt=(Object(Qe.a)((function(e){return{root:{backgroundColor:g.a.grey[50]},media:{paddingTop:e.spacing(2),height:80,textAlign:"center","& > img":{height:"100%",width:"auto"}},content:{padding:e.spacing(1,2)},actions:{padding:e.spacing(1,2),display:"flex",justifyContent:"center"}}})),Object(Qe.a)((function(e){return{drawer:Object(Re.a)({width:240},e.breakpoints.up("lg"),{marginTop:64,height:"calc(100% - 64px)"}),root:{backgroundColor:e.palette.white,display:"flex",flexDirection:"column",height:"100%",padding:e.spacing(2)},divider:{margin:e.spacing(2,0)},nav:{marginBottom:e.spacing(2)}}}))),pt=Object(i.g)((function(e){var t=e.open,a=e.variant,n=e.onClose,l=e.className,o=Object(x.a)(e,["open","variant","onClose","className"]),c=e.history.location.pathname,u=Object(i.f)(c,{path:"/:user",strict:!0});u&&u.params.user;var s=dt(),m=[{title:"Installation",href:"/setup",icon:r.a.createElement(tt.a,null)},{title:"Settings",href:"/settings",icon:r.a.createElement(nt.a,null)}];return r.a.createElement(Ze.a,{anchor:"left",classes:{paper:s.drawer},onClose:n,open:t,variant:a},r.a.createElement("div",Object.assign({},o,{className:Object(Ke.a)(s.root,l)}),r.a.createElement(mt,{className:s.nav,pages:m})))})),bt=a(310),Et=a(311),gt=a(327),ft=a(313),ht=a(245),yt=a.n(ht),vt=a(243),Ot=a.n(vt),St=a(244),jt=a.n(St),xt=Object(Qe.a)((function(e){return{root:{boxShadow:"none"},flexGrow:{flexGrow:1},signOutButton:{marginLeft:e.spacing(1)}}})),kt=function(e){var t=e.className,a=e.onSidebarOpen,l=Object(x.a)(e,["className","onSidebarOpen"]),o=xt(),c=Object(n.useState)([]),i=Object(B.a)(c,1)[0];return r.a.createElement(bt.a,Object.assign({},l,{className:Object(Ke.a)(o.root,t)}),r.a.createElement(Et.a,null,r.a.createElement(rt.a,{to:"/"},r.a.createElement("h1",{style:{color:"white"}},"Telar")),r.a.createElement("div",{className:o.flexGrow}),r.a.createElement(gt.a,{mdDown:!0},r.a.createElement(d.a,{color:"inherit"},r.a.createElement(ft.a,{badgeContent:i.length,color:"primary",variant:"dot"},r.a.createElement(Ot.a,null))),r.a.createElement(d.a,{className:o.signOutButton,color:"inherit"},r.a.createElement(jt.a,null))),r.a.createElement(gt.a,{lgUp:!0},r.a.createElement(d.a,{color:"inherit",onClick:a},r.a.createElement(yt.a,null)))))},Nt=Object(Qe.a)((function(e){return{root:Object(Re.a)({paddingTop:56,height:"100%"},e.breakpoints.up("sm"),{paddingTop:64}),shiftContent:{paddingLeft:240},content:{height:"100%"}}})),Ct=function(e){var t,a=e.children,l=Nt(),o=Object(Ve.a)(),c=Object(Ye.a)(o.breakpoints.up("lg"),{defaultMatches:!0}),i=Object(n.useState)(!1),u=Object(B.a)(i,2),s=u[0],m=u[1],d=!!c||s;return r.a.createElement("div",{className:Object(Ke.a)((t={},Object(Re.a)(t,l.root,!0),Object(Re.a)(t,l.shiftContent,c),t))},r.a.createElement(kt,{onSidebarOpen:function(){m(!0)}}),r.a.createElement(pt,{onClose:function(){m(!1)},open:d,variant:c?"persistent":"temporary"}),r.a.createElement("main",{className:l.content},a,r.a.createElement(Xe,null)))},Tt=Object(Qe.a)((function(){return{root:{boxShadow:"none"}}})),wt=function(e){var t=e.className,a=Object(x.a)(e,["className"]),n=Tt();return r.a.createElement(bt.a,Object.assign({},a,{className:Object(Ke.a)(n.root,t),color:"primary",position:"fixed"}),r.a.createElement(Et.a,null,r.a.createElement(rt.a,{to:"/"},r.a.createElement("img",{alt:"Logo",src:"/images/logos/logo.png"}))))},Pt=Object(Qe.a)((function(){return{root:{paddingTop:64,height:"100%"},content:{height:"100%"}}})),Dt=function(e){var t=e.children,a=Pt();return r.a.createElement("div",{className:a.root},r.a.createElement(wt,null),r.a.createElement("main",{className:a.content},t))},Bt=(Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)},iframe:{width:"100%",minHeight:640,border:0}}})),a(314)),_t=Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)},content:{paddingTop:150,textAlign:"center"},image:{marginTop:50,display:"inline-block",maxWidth:"100%",width:560}}})),It=function(){var e=_t();return r.a.createElement("div",{className:e.root},r.a.createElement(Bt.a,{container:!0,justify:"center",spacing:4},r.a.createElement(Bt.a,{item:!0,lg:6,xs:12},r.a.createElement("div",{className:e.content},r.a.createElement(F.a,{variant:"h1"},"404: The page you are looking for isn\u2019t here"),r.a.createElement(F.a,{variant:"subtitle2"},"You either tried some shady route or you came here by mistake. Whichever it is, try using the navigation"),r.a.createElement("img",{alt:"Under development",className:e.image,src:"/images/undraw_page_not_found_su7k.svg"})))))},Wt=(a(315),a(316),Object(Qe.a)((function(){return{root:{},item:{display:"flex",flexDirection:"column"}}})),Object(Qe.a)((function(){return{root:{}}})),Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)}}})),Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)}}})),a(317)),Ft=Object(N.a)({root:{maxWidth:645},media:{height:277}});function At(){var e=Ft(),t=Object(c.c)((function(e){return e.inputs.socialDomain}));return r.a.createElement(_.a,{className:e.root},r.a.createElement(He.a,null,r.a.createElement(Le.a,{className:e.media,image:"https://miro.medium.com/max/5748/1*M_jDiQwGmGvrKH_H1peKWQ.png",title:"We are done!"}),r.a.createElement(W.a,null,r.a.createElement(F.a,{gutterBottom:!0,variant:"h5",component:"h2"},"Done"),r.a.createElement(F.a,{variant:"body2",color:"textSecondary"},"Wait until the build and deployment is done. To start login into admin page ","".concat(t,"/admin/login"),". Wait until you seen welcome page. Now your Telar social is ready to use!\ud83d\ude0d\ud83c\udfc6 - Signup page: ","".concat(t,"/auth/signup"),"- Login page: ","".concat(t,"/auth/login")))),r.a.createElement(I.a,null,r.a.createElement(D.a,{size:"small",onClick:function(){te("https://telar.dev")},color:"primary"},"Learn More")))}var Ut=Object(N.a)((function(e){return{root:{"& .MuiTextField-root":{margin:e.spacing(1),width:200}}}}));function zt(){var e=Object(c.c)((function(e){return e.setupState})),t=(Ut(),r.a.useState("Controlled")),a=Object(B.a)(t,2);a[0],a[1];return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{marginTop:20}}),r.a.createElement(Wt.a,{maxWidth:"sm"},"init"===e?r.a.createElement(qe,null):"progress"===e?r.a.createElement(Ue,null):r.a.createElement(At,null)))}var Gt=Object(N.a)((function(e){return{formControl:{margin:e.spacing(3)},cardActions:{justifyContent:"flex-end"}}}));function Ht(){var e,t=Object(c.b)(),a=Gt(),n=Object(c.c)((function(e){return e.inputs.projectDirectory}));return r.a.createElement(_.a,{className:a.root},r.a.createElement(W.a,null,r.a.createElement(F.a,{gutterBottom:!0,variant:"h5",component:"h2"},"Settings"),r.a.createElement("br",null),r.a.createElement(F.a,{className:a.title,color:"textPrimary",gutterBottom:!0},"Enter your project directory that includes `setup.yml` file"),r.a.createElement(A.a,{className:a.address,fullWidth:!0,required:!0,id:"outlined-required",label:"Project Directory",value:n,onChange:(e="projectDirectory",function(a){var n=a.currentTarget.value;t(G(e,n))}),variant:"outlined"})),r.a.createElement(I.a,{className:a.cardActions},r.a.createElement(D.a,{onClick:function(e){ee(q(n))},size:"small",color:"primary"},"Remove Social Network from your cluster")))}function Lt(){return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{marginTop:20}}),r.a.createElement(Wt.a,{maxWidth:"m"},r.a.createElement(Ht,null)))}var Mt=function(){return r.a.createElement(i.d,null,r.a.createElement(i.a,{exact:!0,from:"/",to:"/setup"}),r.a.createElement(k,{component:zt,exact:!0,layout:Ct,path:"/setup"}),r.a.createElement(k,{component:Lt,exact:!0,layout:Ct,path:"/settings"}),r.a.createElement(k,{component:It,exact:!0,layout:Dt,path:"/not-found"}),r.a.createElement(i.a,{to:"/not-found"}))},qt=a(38),Rt=a(148),Kt=function(e){return function(t,a,n){return e((function(e,a){var n,r=performance.now(),l=t(e,a),o=performance.now(),c=(n=o-r,Math.round(100*n)/100);return console.log("reducer process time:",c),l}),a,n)}},Qt=function(e){return function(t){return function(a){console.group(a.type),console.info("dispatching",a);var n=t(a);return console.log("next state",e.getState()),console.groupEnd(),n}}},Vt={inputs:{},infoDialog:{message:"",url:"",open:!1}};var Yt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Vt,t=arguments.length>1?arguments[1]:void 0,a=t.payload;switch(t.type){case U.SET_SETUP_STATE:return Object(O.a)({},e,{setupState:a.state});case U.SET_SETUP_STEP:return Object(O.a)({},e,{setupStep:a.step});case U.SET_STEP_CONDITION:return Object(O.a)({},e,{stepCondition:Object(Re.a)({},a.step,a.valid)});case U.SET_INPUT:return Object(O.a)({},e,{inputs:Object(O.a)({},e.inputs,Object(Re.a)({},a.key,a.value))});case U.SET_DEPLOY_OPEN:return Object(O.a)({},e,{deployOpen:a.open});case U.SET_SETUP_DEFAULT_VALUES:return Object(O.a)({},e,{inputs:Object(O.a)({},e.inputs,{},a.clientInputs)});case U.POP_MESSAGE:return Object(O.a)({},e,{popMessage:a.message});case U.SHOW_INFO_DIALOG:return Object(O.a)({},e,{infoDialog:{message:a.message,url:a.url,open:!0}});case U.HIDE_INFO_DIALOG:return Object(O.a)({},e,{infoDialog:{message:"",url:"",open:!1}});default:return e}};function $t(){var e=Object(c.b)(),t=Object(c.c)((function(e){return e.infoDialog.open})),a=Object(c.c)((function(e){return e.infoDialog.message})),n=Object(c.c)((function(e){return e.infoDialog.url})),l=function(){e(L())};return r.a.createElement(K.a,{open:t,onClose:l,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},r.a.createElement($.a,{id:"alert-dialog-title"},"Info"),r.a.createElement(V.a,null,r.a.createElement(Y.a,{id:"alert-dialog-description"},a&&"".concat(a[0].toUpperCase()).concat(a.slice(1)))),r.a.createElement(Q.a,null,r.a.createElement(D.a,{onClick:l,color:"primary"},"Close"),n&&""!==n&&r.a.createElement(D.a,{onClick:function(){return function(t){te(t),e(L())}(n)},color:"primary",autoFocus:!0},"Instruction")))}var Jt,Xt=Object(u.a)(),Zt=(Jt={inputs:{appID:"my-social-network",ofUsername:"admin",ofGateway:"openfaas.example.com",socialDomain:"https://mysocial.com",secretName:"secrets",namespace:"openfaas-fn",projectDirectory:"",bucketName:"",mongoDBHost:"",mongoDBPassword:"",mongoDBName:"test",siteKeyRecaptcha:"",recaptchaKey:"",githubOAuthSecret:"",githubOAuthClientID:"",adminUsername:"",adminPassword:"",gmail:"",gmailPassword:"",gateway:"",payloadSecret:"",websocketURL:"",installGit:!1,installKubeseal:!1,cloneTelarWeb:!1,cloneTsServerless:!1,cloneTsUi:!1,openFaaSApp:!1,openFaaSAppHasRepos:!1,githubSSHKey:!1,firebaseServiceAccount:!1,firebaseStorage:!1,mongoDBConnection:!1,websocketConnection:!1,loadingCheckIngredients:!1,loadingFirebaseStorage:!1,loadingMongoDB:!1,loadingWebsocket:!1,loadingStackYaml:!1,loadingCreateSecret:!1,loadingPublicPrivateKey:!1,deployTelarWeb:!1,deployTsServerless:!1,deploySocialUi:!1,deployOpen:!1},setupState:"init",setupStep:0,stepCondition:{},infoDialog:{message:"",url:"",open:!1}},Object(Rt.a)({reducer:Yt,middleware:[Qt].concat(Object(qt.a)(Object(Rt.b)())),preloadedState:Jt,enhancers:[Kt]}));function ea(){var e=Object(c.b)(),t=Object(c.c)((function(e){return e.popMessage})),a=function(t,a){"clickaway"!==a&&e(H(""))};return r.a.createElement(m.a,{anchorOrigin:{vertical:"bottom",horizontal:"left"},open:""!==t,autoHideDuration:6e3,onClose:a,message:t,action:r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,{size:"small","aria-label":"close",color:"inherit",onClick:a},r.a.createElement(b.a,{fontSize:"small"})))})}void 0===window.WebSocket?alert("Your browser does not support WebSockets"):function(){var e=new WebSocket("ws://localhost:31115/ws");e.onopen=function(){Zt.dispatch(H("Ready!"))},e.onmessage=function(e){var t=JSON.parse(e.data);console.log("action",t),console.log("e.data",e.data),Zt.dispatch(t)},e.onclose=function(){Zt.dispatch(H("Socket closed"))}}();var ta=function(){return Object(n.useEffect)((function(){})),r.a.createElement(i.c,{history:Xt},r.a.createElement(c.a,{store:Zt},r.a.createElement(s.a,{theme:j},r.a.createElement(Mt,null),r.a.createElement(ea,null),r.a.createElement($t,null))))};Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));o.a.render(r.a.createElement(ta,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()}))}},[[255,1,2]]]); -//# sourceMappingURL=main.79acc3ac.chunk.js.map \ No newline at end of file +(this["webpackJsonptsup-app"]=this["webpackJsonptsup-app"]||[]).push([[0],{255:function(e,t,a){e.exports=a(324)},260:function(e,t,a){},265:function(e,t,a){},266:function(e,t,a){},324:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),l=a(13),o=a.n(l),c=(a(260),a(6)),i=a(17),u=a(32),s=a(388),m=a(323),d=a(235),p=a(249),b=a.n(p),E=a(250),g=a(9),f="#FFFFFF",h={black:"#000000",white:f,primary:{contrastText:f,dark:g.a.orange[900],main:g.a.orange[500],light:g.a.orange[100]},secondary:{contrastText:f,dark:g.a.blue[900],main:g.a.blue.A400,light:g.a.blue.A400},success:{contrastText:f,dark:g.a.green[900],main:g.a.green[600],light:g.a.green[400]},info:{contrastText:f,dark:g.a.blue[900],main:g.a.blue[600],light:g.a.blue[400]},warning:{contrastText:f,dark:g.a.orange[900],main:g.a.orange[600],light:g.a.orange[400]},error:{contrastText:f,dark:g.a.red[900],main:g.a.red[600],light:g.a.red[400]},text:{primary:g.a.blueGrey[900],secondary:g.a.blueGrey[600],link:g.a.blue[600]},background:{default:"#F4F6F8",paper:f},icon:g.a.blueGrey[600],divider:g.a.grey[200]},y={h1:{color:h.text.primary,fontWeight:500,fontSize:"35px",letterSpacing:"-0.24px",lineHeight:"40px"},h2:{color:h.text.primary,fontWeight:500,fontSize:"29px",letterSpacing:"-0.24px",lineHeight:"32px"},h3:{color:h.text.primary,fontWeight:500,fontSize:"24px",letterSpacing:"-0.06px",lineHeight:"28px"},h4:{color:h.text.primary,fontWeight:500,fontSize:"20px",letterSpacing:"-0.06px",lineHeight:"24px"},h5:{color:h.text.primary,fontWeight:500,fontSize:"16px",letterSpacing:"-0.05px",lineHeight:"20px"},h6:{color:h.text.primary,fontWeight:500,fontSize:"14px",letterSpacing:"-0.05px",lineHeight:"20px"},subtitle1:{color:h.text.primary,fontSize:"16px",letterSpacing:"-0.05px",lineHeight:"25px"},subtitle2:{color:h.text.secondary,fontWeight:400,fontSize:"14px",letterSpacing:"-0.05px",lineHeight:"21px"},body1:{color:h.text.primary,fontSize:"14px",letterSpacing:"-0.05px",lineHeight:"21px"},body2:{color:h.text.secondary,fontSize:"12px",letterSpacing:"-0.04px",lineHeight:"18px"},button:{color:h.text.primary,fontSize:"14px"},caption:{color:h.text.secondary,fontSize:"11px",letterSpacing:"0.33px",lineHeight:"13px"},overline:{color:h.text.secondary,fontSize:"11px",fontWeight:500,letterSpacing:"0.33px",lineHeight:"13px",textTransform:"uppercase"}},v={root:{color:h.icon,"&:hover":{backgroundColor:"rgba(0, 0, 0, 0.03)"}}},O=a(26),S={MuiButton:{contained:{boxShadow:"0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.20)",backgroundColor:"#FFFFFF"}},MuiIconButton:v,MuiPaper:{elevation1:{boxShadow:"0 0 0 1px rgba(63,63,68,0.05), 0 1px 3px 0 rgba(63,63,68,0.15)"}},MuiTableCell:{root:Object(O.a)({},y.body1,{borderBottom:"1px solid ".concat(h.divider)})},MuiTableHead:{root:{backgroundColor:g.a.grey[50]}},MuiTypography:{gutterBottom:{marginBottom:8}},MuiListItem:{container:{listStyleType:"none",paddingTop:5}}},j=Object(E.a)({palette:h,typography:y,overrides:S,zIndex:{appBar:1200,drawer:1100}}),x=(a(265),a(266),a(2)),k=function(e){var t=e.layout,a=e.component,n=Object(x.a)(e,["layout","component"]);return r.a.createElement(i.b,Object.assign({},n,{render:function(e){return r.a.createElement(t,null,r.a.createElement(a,e))}}))},N=a(387),C=a(299),T=a(300),w=a(301),P=a(302),D=a(274),B=a(10),_=a(293),I=a(295),W=a(294),F=a(45),A=a(296),U={SET_SETUP_STATE:"SET_SETUP_STATE",SET_SETUP_STEP:"SET_SETUP_STEP",SET_INPUT:"SET_INPUT",SET_DEPLOY_OPEN:"SET_DEPLOY_OPEN",SET_SETUP_DEFAULT_VALUES:"SET_SETUP_DEFAULT_VALUES",POP_MESSAGE:"POP_MESSAGE",SET_STEP_CONDITION:"SET_STEP_CONDITION",SHOW_INFO_DIALOG:"SHOW_INFO_DIALOG",HIDE_INFO_DIALOG:"HIDE_INFO_DIALOG",REMOVE_SOCIAL_FROM_CLUSTER:"REMOVE_SOCIAL_FROM_CLUSTER",START_STEP:"START_STEP",CHECK_STEP:"CHECK_STEP"},z=function(e){return{type:U.SET_SETUP_STATE,payload:{state:e}}},G=function(e,t){return{type:U.SET_INPUT,payload:{key:e,value:t}}},H=function(e){return{type:U.POP_MESSAGE,payload:{message:e}}},L=function(){return{type:U.HIDE_INFO_DIALOG,payload:{}}},M=function(){return{type:U.START_STEP,payload:{}}},q=function(e){return{type:U.REMOVE_SOCIAL_FROM_CLUSTER,payload:{projectDirectory:e}}},R=function(e){return{type:U.CHECK_STEP,payload:e}},K=a(268),Q=a(273),V=a(271),Y=a(272),$=a(270);function J(e){var t=r.a.useState("paper"),a=Object(B.a)(t,2),n=a[0],l=(a[1],e.open),o=e.onClose,c=r.a.useRef(null);return r.a.useEffect((function(){if(l){var e=c.current;null!==e&&e.focus()}}),[l]),r.a.createElement("div",null,r.a.createElement(K.a,{open:l,onClose:o,scroll:"paper","aria-labelledby":"scroll-dialog-title","aria-describedby":"scroll-dialog-description"},r.a.createElement($.a,{id:"scroll-dialog-title"},e.title),r.a.createElement(V.a,{dividers:"paper"===n},r.a.createElement(Y.a,{id:"scroll-dialog-description",ref:c,tabIndex:-1},e.text),e.children),r.a.createElement(Q.a,null,r.a.createElement(D.a,{onClick:o,color:"primary"},"OK"))))}var X=a(144),Z=a.n(X),ee=function(e){Z.a.post("/dispatch",e).then((function(e){return console.log(e.data)})).catch((function(e){return console.log(e)}))},te=function(e){Z.a.post("/open-url",{url:e}).then((function(e){return console.log(e.data)})).catch((function(e){return console.log(e)}))},ae=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function ne(){var e,t=ae(),a=(r.a.createElement("span",{className:t.bullet},"\u2022"),Object(c.b)()),n=Object(c.c)((function(e){return e.inputs.projectDirectory})),l=r.a.useState(!1),o=Object(B.a)(l,2),i=o[0],u=o[1];return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/1.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Enter your project directory"),r.a.createElement(A.a,{className:t.address,fullWidth:!0,required:!0,id:"outlined-required",label:"Project Directory",value:n,onChange:(e="projectDirectory",function(t){var n=t.currentTarget.value;a(G(e,n))}),variant:"outlined"})),r.a.createElement(J,{open:i,onClose:function(){u(!1)},title:"Instruction"},r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var re=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function le(){var e=re(),t=(r.a.createElement("span",{className:e.bullet},"\u2022"),Object(c.b)()),a=Object(c.c)((function(e){return e.inputs.appID})),n=Object(c.c)((function(e){return e.inputs.ofUsername})),l=Object(c.c)((function(e){return e.inputs.ofGateway})),o=Object(c.c)((function(e){return e.inputs.socialDomain})),i=Object(c.c)((function(e){return e.inputs.secretName})),u=Object(c.c)((function(e){return e.inputs.namespace})),s=Object(c.c)((function(e){return e.inputs.kubeconfigPath})),m=function(e){return function(a){var n=a.currentTarget.value;t(G(e,n))}},d=r.a.useState(!1),p=Object(B.a)(d,2),b=p[0],E=p[1];return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/2.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter social network identifier. Default is `my-social-network`."),r.a.createElement(A.a,{required:!0,id:"social-id",label:"Scoial Network ID",onChange:m("appID"),value:a,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter OpenFaaS username. Default is `admin`."),r.a.createElement(A.a,{required:!0,id:"of-username",label:"OpenFaaS username",onChange:m("ofUsername"),value:n,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter OpenFaaS gateway e.g. `domain.com` or `localhost.com:31112`"),r.a.createElement(A.a,{required:!0,id:"ofc-domain",label:"OpenFaaS gateway",onChange:m("ofGateway"),value:l,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your social network URL e.g. https://social.com or https://social.com/function"),r.a.createElement(A.a,{required:!0,id:"social-domain",label:"Social URL",onChange:m("socialDomain"),value:o,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter OpenFaaS funtion namespace. Default is `openfaas-fn`"),r.a.createElement(A.a,{required:!0,id:"openfaas-namespace",label:"OpenFaaS namespace",onChange:m("namespace"),value:u,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter secret name that will be created on your K8S cluster. Default is `secrets`"),r.a.createElement(A.a,{required:!0,id:"secret-name",label:"Secret name",onChange:m("secretName"),value:i,variant:"outlined",fullWidth:!0}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"In the case you want to use KUBECONFIG path instead of default context, enter the kube config path. If not let the textbox empty"),r.a.createElement(A.a,{id:"kubeconfig-path",label:"Kubeconfig path",onChange:m("kubeconfigPath"),value:s,variant:"outlined",fullWidth:!0})),r.a.createElement(J,{open:b,onClose:function(){E(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var oe=a(4),ce=a(70),ie=a(230),ue=a(228),se=a(236),me=a(298),de=a(326),pe=a(297),be=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),Ee=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function ge(){Object(c.b)();var e=Object(c.c)((function(e){return e.inputs.loadingCheckIngredients})),t=Object(c.c)((function(e){return e.inputs.cloneTelarWeb})),a=Object(c.c)((function(e){return e.inputs.cloneTsServerless})),n=Object(c.c)((function(e){return e.inputs.cloneTsUi})),l=Ee(),o=r.a.useState(!1),i=Object(B.a)(o,2),u=i[0],s=i[1],m=function(e){return e?r.a.createElement(be,{checked:!0}):r.a.createElement(pe.a,{className:l.progress,size:17,color:"secondary"})};return r.a.createElement(_.a,{className:l.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(ue.a,{component:"fieldset",className:l.formControl},r.a.createElement(ie.a,{component:"legend"},"Prepare ingredients"),r.a.createElement(F.a,{className:l.title,color:"textPrimary",gutterBottom:!0},"Clean on next to start preparation"),r.a.createElement(se.a,null,e&&r.a.createElement(r.a.Fragment,null,r.a.createElement(me.a,{control:m(t),checked:t,label:r.a.createElement("span",null,"Clone telar-web repository.")}),r.a.createElement(me.a,{control:m(a),checked:a,label:r.a.createElement("span",null,"Clone ts-serverless repository.")}),r.a.createElement(me.a,{control:m(n),checked:n,label:r.a.createElement("span",null,"Clone ts-ui repository.")}))))),r.a.createElement(I.a,null),r.a.createElement(J,{open:u,onClose:function(){s(!1)},title:"Instruction"},r.a.createElement(_.a,{className:l.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"This step check the ingredients!"),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var fe=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),he=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function ye(){var e,t=he(),a=Object(c.b)(),n=Object(c.c)((function(e){return e.inputs.bucketName})),l=(Object(c.c)((function(e){return e.inputs.firebaseServiceAccount})),Object(c.c)((function(e){return e.inputs.firebaseStorage}))),o=Object(c.c)((function(e){return e.inputs.loadingFirebaseStorage})),i=(r.a.createElement("span",{className:t.bullet},"\u2022"),r.a.useState({gilad:!0,jason:!1,antoine:!1})),u=Object(B.a)(i,2),s=(u[0],u[1],r.a.useState(!1)),m=Object(B.a)(s,2),d=m[0],p=m[1],b=r.a.useState(0),E=Object(B.a)(b,2),g=E[0],f=(E[1],function(e){return e?r.a.createElement(fe,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})});return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Enter bucket name and download service account file in project directory"),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,onChange:(e="bucketName",function(t){a(G(e,t.currentTarget.value))}),value:n,id:"outlined-required",label:"Bucket Name",variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),o&&r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:f(l),label:"Check serviceAccount.json file",checked:l}),r.a.createElement(me.a,{control:f(l),label:"Check firebase storage",checked:l})))),r.a.createElement(I.a,null),r.a.createElement(J,{open:d,onClose:function(){p(!1)},title:0===g?"Instruction":"\u26a0\ufe0fWarning \u26a0\ufe0f"},0===g?r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null)):r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"\u26a0\ufe0f We strictly recommend you to use your own Firebase Storage. Public Firebase Storage only use for testing, because everybody can see your data and also there is no garanty for data persistance. Public Firebase Storage is a free and shared Firebase Storage account!"),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var ve=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function Oe(){var e=ve(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.inputs.adminUsername})),n=Object(c.c)((function(e){return e.inputs.adminPassword})),l=Object(c.c)((function(e){return e.inputs.gmail})),o=Object(c.c)((function(e){return e.inputs.gmailPassword})),i=r.a.useState(!1),u=Object(B.a)(i,2),s=u[0],m=u[1],d=(r.a.createElement("span",{className:e.bullet},"\u2022"),function(e){return function(a){t(G(e,a.currentTarget.value))}});return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter Admin user information."),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Admin Email",variant:"outlined",value:a,onChange:d("adminUsername")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Password",variant:"outlined",value:n,onChange:d("adminPassword")})),r.a.createElement(W.a,null,r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your Gmail information."),r.a.createElement(F.a,{variant:"body2",component:"p"},"It will be used for sending confirmation and verification email to users.",r.a.createElement("br",null)),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Email",variant:"outlined",value:l,onChange:d("gmail")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Password",variant:"outlined",value:o,onChange:d("gmailPassword")})),r.a.createElement(I.a,null),r.a.createElement(J,{open:s,onClose:function(){m(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Se=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),je=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function xe(){var e,t=je(),a=Object(c.b)(),n=Object(c.c)((function(e){return e.inputs.gateway})),l=Object(c.c)((function(e){return e.inputs.payloadSecret})),o=Object(c.c)((function(e){return e.inputs.websocketURL})),i=Object(c.c)((function(e){return e.inputs.websocketConnection})),u=Object(c.c)((function(e){return e.inputs.loadingWebsocket})),s=(r.a.createElement("span",{className:t.bullet},"\u2022"),r.a.useState({gilad:!0,jason:!1,antoine:!1})),m=Object(B.a)(s,2),d=(m[0],m[1],r.a.useState(!1)),p=Object(B.a)(d,2),b=p[0],E=p[1],g=function(e){return function(t){a(G(e,t.currentTarget.value))}};return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/9.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Enter Websocket server information and telar server gateway"),r.a.createElement(A.a,{onChange:g("gateway"),label:"Gateway",value:n,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{InputProps:{readonly:!0},label:"Payload Secret",value:l,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,onChange:g("websocketURL"),label:"Websocket URL",value:o,variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),u&&r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:(e=i,e?r.a.createElement(Se,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})),checked:i,label:"Check websocket server connection"})))),r.a.createElement(I.a,null),r.a.createElement(J,{open:b,onClose:function(){E(!1)},title:"Instruction"},r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var ke=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),Ne=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function Ce(){var e,t=Ne(),a=Object(c.b)(),n=Object(c.c)((function(e){return e.inputs.mongoDBHost})),l=Object(c.c)((function(e){return e.inputs.mongoDBPassword})),o=Object(c.c)((function(e){return e.inputs.mongoDBName})),i=Object(c.c)((function(e){return e.inputs.mongoDBConnection})),u=Object(c.c)((function(e){return e.inputs.loadingMongoDB})),s=(r.a.createElement("span",{className:t.bullet},"\u2022"),r.a.useState({gilad:!0,jason:!1,antoine:!1})),m=Object(B.a)(s,2),d=(m[0],m[1],r.a.useState(!1)),p=Object(B.a)(d,2),b=p[0],E=p[1],g=r.a.useState(0),f=Object(B.a)(g,2),h=f[0],y=(f[1],function(e){return function(t){a(G(e,t.currentTarget.value))}});return r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/5.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:t.title,color:"textPrimary",gutterBottom:!0},"Fill the field for MongoDB database"),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Host",value:n,onChange:y("mongoDBHost"),variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Database Name",value:o,onChange:y("mongoDBName"),variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Password",value:l,onChange:y("mongoDBPassword"),variant:"outlined"}),r.a.createElement("br",null),r.a.createElement("br",null),u&&r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:(e=i,e?r.a.createElement(ke,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})),checked:i,label:"Check MongoDB connection"})))),r.a.createElement(I.a,null),r.a.createElement(J,{open:b,onClose:function(){E(!1)},title:0===h?"Instruction":"\u26a0\ufe0fWarning \u26a0\ufe0f"},0===h?r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null)):r.a.createElement(_.a,{className:t.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"\u26a0\ufe0f We strictly recommend you to use your own MongoDB. Public MongoDB only use for testing, because everybody can see your data and also there is no garanty for data persistance. Public MongoDB is a free and shared MongoDB account!"),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Te=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function we(){var e=Te(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.inputs.siteKeyRecaptcha})),n=Object(c.c)((function(e){return e.inputs.recaptchaKey})),l=(r.a.createElement("span",{className:e.bullet},"\u2022"),r.a.useState(!1)),o=Object(B.a)(l,2),i=o[0],u=o[1],s=r.a.useState(0),m=Object(B.a)(s,2),d=(m[0],m[1],function(e){return function(a){t(G(e,a.currentTarget.value))}});return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/6.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your valid Google reCaptcha site key and secret key"),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Site Key",variant:"outlined",value:a,onChange:d("siteKeyRecaptcha")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{className:e.address,required:!0,id:"outlined-required",label:"Secret Key",variant:"outlined",value:n,onChange:d("recaptchaKey")})),r.a.createElement(I.a,null),r.a.createElement(J,{open:i,onClose:function(){u(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Pe=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},address:{height:"100%"}});function De(){var e=Pe(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.inputs.githubOAuthSecret})),n=Object(c.c)((function(e){return e.inputs.githubOAuthClientID})),l=(r.a.createElement("span",{className:e.bullet},"\u2022"),r.a.useState(!1)),o=Object(B.a)(l,2),i=o[0],u=o[1],s=function(e){return function(a){t(G(e,a.currentTarget.value))}};return r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{className:e.title,color:"textPrimary",gutterBottom:!0},"Enter your valid Github OAuth client ID and secret key."),r.a.createElement(D.a,{variant:"outlined",color:"secondary",onClick:function(){te("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/7.md")}},"Need Help?"),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Github OAuth Client ID",variant:"outlined",value:n,onChange:s("githubOAuthClientID")}),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(A.a,{required:!0,id:"outlined-required",label:"Github OAuth Client Secret",variant:"outlined",value:a,onChange:s("githubOAuthSecret")}),r.a.createElement("br",null),r.a.createElement("br",null)),r.a.createElement(I.a,null),r.a.createElement(J,{open:i,onClose:function(){u(!1)},title:"Instruction"},r.a.createElement(_.a,{className:e.root,variant:"outlined"},r.a.createElement(W.a,null,r.a.createElement(F.a,{variant:"h5",color:"textPrimary",gutterBottom:!0},"In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code."),r.a.createElement("br",null)),r.a.createElement(I.a,null))))}var Be=Object(oe.a)({root:{color:ce.a[400],"&$checked":{color:ce.a[600]}},checked:{}})((function(e){return r.a.createElement(de.a,Object.assign({color:"default"},e))})),_e=Object(N.a)({root:{minWidth:275},bullet:{display:"inline-block",margin:"0 2px",transform:"scale(0.8)"},title:{fontSize:14},pos:{marginBottom:12},progress:{margin:"10px"}});function Ie(e){var t=_e(),a=e.open,n=e.onClose,l=Object(c.c)((function(e){return e.inputs.loadingStackYaml})),o=Object(c.c)((function(e){return e.inputs.loadingCreateSecret})),i=Object(c.c)((function(e){return e.inputs.deployTelarWeb})),u=Object(c.c)((function(e){return e.inputs.deployTsServerless})),s=Object(c.c)((function(e){return e.inputs.deploySocialUi})),m=function(e){return e?r.a.createElement(Be,{checked:!0}):r.a.createElement(pe.a,{className:t.progress,size:17,color:"secondary"})};return r.a.createElement(K.a,{open:a,disableBackdropClick:!0,disableEscapeKeyDown:!0,onClose:function(){n()},"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},r.a.createElement($.a,{id:"alert-dialog-title"},"Deploying"),r.a.createElement(V.a,null,r.a.createElement(Y.a,{id:"alert-dialog-description"},"Deploying the project to OpenFaaS"),r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(se.a,null,r.a.createElement(me.a,{control:m(l),checked:l,label:"Creating Configurations"}),r.a.createElement(me.a,{control:m(o),checked:o,label:"Creating Secrets"}),r.a.createElement(me.a,{control:m(i),checked:i,label:"Deploying Telar Web"}),r.a.createElement(me.a,{control:m(u),checked:u,label:"Deploying Telar Social Serverless"}),r.a.createElement(me.a,{control:m(s),checked:s,label:"Deploying Telar Social User Interface"})))),r.a.createElement(Q.a,null))}var We=Object(N.a)((function(e){return{root:{width:"100%"},button:{marginTop:e.spacing(1),marginRight:e.spacing(1)},actionsContainer:{marginBottom:e.spacing(2)},resetContainer:{padding:e.spacing(3)}}}));var Fe=function(e,t){var a,n=!0,r=!1,l=void 0;try{for(var o,c=t[Symbol.iterator]();!(n=(o=c.next()).done);n=!0){var i=o.value;if(!!(!(a=e.inputs[i])||""===a.trim()))return!1}}catch(u){r=!0,l=u}finally{try{n||null==c.return||c.return()}finally{if(r)throw l}}return!0},Ae=function(e,t){var a=!0,n=!1,r=void 0;try{for(var l,o=t[Symbol.iterator]();!(a=(l=o.next()).done);a=!0){var c=l.value;if(!e.inputs[c])return!1}}catch(i){n=!0,r=i}finally{try{a||null==o.return||o.return()}finally{if(n)throw r}}return!0};function Ue(){var e=We(),t=Object(c.b)(),a=Object(c.c)((function(e){return e.setupStep})),n=Object(c.c)((function(e){return e.deployOpen})),l={},o=["Let's start","General settings","Check ingredients","Firebase Storage","MongoDB","Google reCAPTCHA","Github OAuth","User Manegement","Websocket"],i=Object(c.c)((function(e){return e}));l[0]=Fe(i,["projectDirectory"]),l[1]=Fe(i,["appID","ofGateway","ofUsername","socialDomain","secretName","namespace"]),l[2]=!Ae(i,["loadingCheckIngredients"]),l[3]=!Ae(i,["loadingFirebaseStorage"])&&!0===Fe(i,["bucketName"]),l[4]=!Ae(i,["loadingMongoDB"])&&!0===Fe(i,["mongoDBHost","mongoDBPassword","mongoDBName"]),l[5]=Fe(i,["siteKeyRecaptcha","recaptchaKey"]),l[6]=Fe(i,["githubOAuthSecret"]),l[7]=Fe(i,["adminUsername","adminPassword","gmail","gmailPassword"]),l[8]=(!Ae(i,["loadingWebsocket"])||Ae(i,["websocketConnection"]))&&!0===Fe(i,["gateway","payloadSecret","websocketURL"]);var u=function(){ee(R(i))};return r.a.createElement("div",{className:e.root},r.a.createElement(C.a,{activeStep:a,orientation:"vertical"},o.map((function(t,n){return r.a.createElement(T.a,{key:t},r.a.createElement(w.a,null,t),r.a.createElement(P.a,null,function(e){switch(e){case 0:return r.a.createElement(ne,null);case 1:return r.a.createElement(le,null);case 2:return r.a.createElement(ge,null);case 3:return r.a.createElement(ye,null);case 4:return r.a.createElement(Ce,null);case 5:return r.a.createElement(we,null);case 6:return r.a.createElement(De,null);case 7:return r.a.createElement(Oe,null);case 8:return r.a.createElement(xe,null);default:return"Unknown step"}}(n),r.a.createElement("div",{className:e.actionsContainer},r.a.createElement("div",null,r.a.createElement(D.a,{variant:"contained",color:"primary",onClick:u,className:e.button,disabled:!0!==l[a]},a===o.length-1?"Deploy":"Next")))))}))),r.a.createElement(Ie,{open:n,onClose:function(){t(G("deployOpen",!1))}}))}var ze=a(325),Ge=a(305),He=a(303),Le=a(304),Me=Object(N.a)((function(e){return{formControl:{margin:e.spacing(3)},cardActions:{justifyContent:"flex-end"}}}));function qe(){var e=Object(c.b)(),t=Me(),a=r.a.useState("ofc"),n=Object(B.a)(a,2),l=n[0],o=n[1];return r.a.createElement(_.a,{className:t.root},r.a.createElement(He.a,null,r.a.createElement(Le.a,{component:"img",alt:"Contemplative Reptile",height:"140",image:"https://image.slidesharecdn.com/2019-01-openfaas-when-functions-collide-docks-amsterdam-190128104130/95/docker-and-serverless-randstad-jan-2019-openfaas-serverless-when-functions-and-gitops-collide-47-638.jpg?cb=1548672210",title:"Contemplative Reptile"})),r.a.createElement(W.a,null,r.a.createElement(F.a,{gutterBottom:!0,variant:"h5",component:"h2"},"OpenFaaS"),r.a.createElement(F.a,{variant:"body2",color:"textSecondary"},"The ",r.a.createElement("a",{href:"https://www.openfaas.com/",target:"_blank"},"OpenFaaS")," makes it simple to deploy both functions and existing code on Kubernetes."),r.a.createElement("br",null),r.a.createElement(ue.a,{component:"fieldset",className:t.formControl},r.a.createElement(ie.a,{component:"legend"},"Choose your setup"),r.a.createElement(Ge.a,{"aria-label":"setup-select",name:"setup-select",value:l,onChange:function(e){o(e.target.value)}},r.a.createElement(me.a,{value:"ofc",control:r.a.createElement(ze.a,null),label:"OpenFaaS"}),r.a.createElement(me.a,{disabled:!0,value:"eks",control:r.a.createElement(ze.a,null),label:"AWS EKS"}),r.a.createElement(me.a,{disabled:!0,value:"gke",control:r.a.createElement(ze.a,null),label:"Google Kubernetes Engine"}),r.a.createElement(me.a,{disabled:!0,value:"aks",control:r.a.createElement(ze.a,null),label:"Azure Kubernetes Service"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Self-host OpenFaaS"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Kubernetes on Bare-metal"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"K3S on Bare-meta"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Local Kind"}),r.a.createElement(me.a,{disabled:!0,value:"local",control:r.a.createElement(ze.a,null),label:"Local Minikube"}))),r.a.createElement("br",null),r.a.createElement("br",null),r.a.createElement(F.a,{variant:"body2",color:"textSecondary",component:"p"},"Vote for your favorite option to enable for the next version. ",r.a.createElement("a",{href:"#",onClick:function(e){e.preventDefault(),te("https://github.com/Qolzam/feedback/issues/1")}},"Click here to vote"))),r.a.createElement(I.a,{className:t.cardActions},r.a.createElement(D.a,{onClick:function(t){ee(M()),e(z("progress"))},size:"small",color:"primary"},"Next")))}var Re=a(8),Ke=a(3),Qe=a(329),Ve=a(150),Ye=a(242),$e=a(306),Je=Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)}}})),Xe=function(e){var t=e.className,a=Object(x.a)(e,["className"]),n=Je();return r.a.createElement("div",Object.assign({},a,{className:Object(Ke.a)(n.root,t)}),r.a.createElement(F.a,{variant:"body1"},"\xa9"," ",r.a.createElement($e.a,{component:"a",href:"#",onClick:function(e){e.preventDefault(),te("https://telar.dev/")}},"Telar")," "," 2020"))},Ze=a(309),et=a(239),tt=a.n(et),at=a(240),nt=a.n(at),rt=a(34),lt=a(328),ot=Object(Qe.a)((function(e){return{root:{display:"flex",flexDirection:"column",alignItems:"center",minHeight:"fit-content"},avatar:{width:60,height:60},name:{marginTop:e.spacing(1)}}})),ct=(Object(i.g)((function(e){var t=e.className,a=Object(x.a)(e,["className"]),n=e.history.location.pathname,l=Object(i.f)(n,{path:"/:user",strict:!0});l&&l.params.user.toLowerCase();var o=ot(),c={name:"Amirhossein Movahedi",avatar:"/images/avatars/amir.JPG",bio:"Distributed System Eng."};return r.a.createElement("div",Object.assign({},a,{className:Object(Ke.a)(o.root,t)}),r.a.createElement(lt.a,{alt:"Person",className:o.avatar,component:rt.a,src:c.avatar,to:"/settings"}),r.a.createElement(F.a,{className:o.name,variant:"h4"},c.name),r.a.createElement(F.a,{variant:"body2"},c.bio))})),a(233)),it=a(307),ut=Object(Qe.a)((function(e){return{root:{},item:{display:"flex",paddingTop:0,paddingBottom:0},button:{color:g.a.blueGrey[800],padding:"10px 8px",justifyContent:"flex-start",textTransform:"none",letterSpacing:0,width:"100%",fontWeight:e.typography.fontWeightMedium},icon:{color:e.palette.icon,width:24,height:24,display:"flex",alignItems:"center",marginRight:e.spacing(1)},active:{color:e.palette.primary.main,fontWeight:e.typography.fontWeightMedium,"& $icon":{color:e.palette.primary.main}}}})),st=Object(n.forwardRef)((function(e,t){return r.a.createElement("div",{ref:t,style:{flexGrow:1}},r.a.createElement(rt.b,e))})),mt=function(e){var t=e.pages,a=e.className,n=Object(x.a)(e,["pages","className"]),l=ut();return r.a.createElement(ct.a,Object.assign({},n,{className:Object(Ke.a)(l.root,a)}),t.map((function(e){return r.a.createElement(it.a,{className:l.item,disableGutters:!0,key:e.title},r.a.createElement(D.a,{activeClassName:l.active,className:l.button,component:st,to:e.href},r.a.createElement("div",{className:l.icon},e.icon),e.title))})))},dt=(Object(Qe.a)((function(e){return{root:{backgroundColor:g.a.grey[50]},media:{paddingTop:e.spacing(2),height:80,textAlign:"center","& > img":{height:"100%",width:"auto"}},content:{padding:e.spacing(1,2)},actions:{padding:e.spacing(1,2),display:"flex",justifyContent:"center"}}})),Object(Qe.a)((function(e){return{drawer:Object(Re.a)({width:240},e.breakpoints.up("lg"),{marginTop:64,height:"calc(100% - 64px)"}),root:{backgroundColor:e.palette.white,display:"flex",flexDirection:"column",height:"100%",padding:e.spacing(2)},divider:{margin:e.spacing(2,0)},nav:{marginBottom:e.spacing(2)}}}))),pt=Object(i.g)((function(e){var t=e.open,a=e.variant,n=e.onClose,l=e.className,o=Object(x.a)(e,["open","variant","onClose","className"]),c=e.history.location.pathname,u=Object(i.f)(c,{path:"/:user",strict:!0});u&&u.params.user;var s=dt(),m=[{title:"Installation",href:"/setup",icon:r.a.createElement(tt.a,null)},{title:"Settings",href:"/settings",icon:r.a.createElement(nt.a,null)}];return r.a.createElement(Ze.a,{anchor:"left",classes:{paper:s.drawer},onClose:n,open:t,variant:a},r.a.createElement("div",Object.assign({},o,{className:Object(Ke.a)(s.root,l)}),r.a.createElement(mt,{className:s.nav,pages:m})))})),bt=a(310),Et=a(311),gt=a(327),ft=a(313),ht=a(245),yt=a.n(ht),vt=a(243),Ot=a.n(vt),St=a(244),jt=a.n(St),xt=Object(Qe.a)((function(e){return{root:{boxShadow:"none"},flexGrow:{flexGrow:1},signOutButton:{marginLeft:e.spacing(1)}}})),kt=function(e){var t=e.className,a=e.onSidebarOpen,l=Object(x.a)(e,["className","onSidebarOpen"]),o=xt(),c=Object(n.useState)([]),i=Object(B.a)(c,1)[0];return r.a.createElement(bt.a,Object.assign({},l,{className:Object(Ke.a)(o.root,t)}),r.a.createElement(Et.a,null,r.a.createElement(rt.a,{to:"/"},r.a.createElement("h1",{style:{color:"white"}},"Telar")),r.a.createElement("div",{className:o.flexGrow}),r.a.createElement(gt.a,{mdDown:!0},r.a.createElement(d.a,{color:"inherit"},r.a.createElement(ft.a,{badgeContent:i.length,color:"primary",variant:"dot"},r.a.createElement(Ot.a,null))),r.a.createElement(d.a,{className:o.signOutButton,color:"inherit"},r.a.createElement(jt.a,null))),r.a.createElement(gt.a,{lgUp:!0},r.a.createElement(d.a,{color:"inherit",onClick:a},r.a.createElement(yt.a,null)))))},Nt=Object(Qe.a)((function(e){return{root:Object(Re.a)({paddingTop:56,height:"100%"},e.breakpoints.up("sm"),{paddingTop:64}),shiftContent:{paddingLeft:240},content:{height:"100%"}}})),Ct=function(e){var t,a=e.children,l=Nt(),o=Object(Ve.a)(),c=Object(Ye.a)(o.breakpoints.up("lg"),{defaultMatches:!0}),i=Object(n.useState)(!1),u=Object(B.a)(i,2),s=u[0],m=u[1],d=!!c||s;return r.a.createElement("div",{className:Object(Ke.a)((t={},Object(Re.a)(t,l.root,!0),Object(Re.a)(t,l.shiftContent,c),t))},r.a.createElement(kt,{onSidebarOpen:function(){m(!0)}}),r.a.createElement(pt,{onClose:function(){m(!1)},open:d,variant:c?"persistent":"temporary"}),r.a.createElement("main",{className:l.content},a,r.a.createElement(Xe,null)))},Tt=Object(Qe.a)((function(){return{root:{boxShadow:"none"}}})),wt=function(e){var t=e.className,a=Object(x.a)(e,["className"]),n=Tt();return r.a.createElement(bt.a,Object.assign({},a,{className:Object(Ke.a)(n.root,t),color:"primary",position:"fixed"}),r.a.createElement(Et.a,null,r.a.createElement(rt.a,{to:"/"},r.a.createElement("img",{alt:"Logo",src:"/images/logos/logo.png"}))))},Pt=Object(Qe.a)((function(){return{root:{paddingTop:64,height:"100%"},content:{height:"100%"}}})),Dt=function(e){var t=e.children,a=Pt();return r.a.createElement("div",{className:a.root},r.a.createElement(wt,null),r.a.createElement("main",{className:a.content},t))},Bt=(Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)},iframe:{width:"100%",minHeight:640,border:0}}})),a(314)),_t=Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)},content:{paddingTop:150,textAlign:"center"},image:{marginTop:50,display:"inline-block",maxWidth:"100%",width:560}}})),It=function(){var e=_t();return r.a.createElement("div",{className:e.root},r.a.createElement(Bt.a,{container:!0,justify:"center",spacing:4},r.a.createElement(Bt.a,{item:!0,lg:6,xs:12},r.a.createElement("div",{className:e.content},r.a.createElement(F.a,{variant:"h1"},"404: The page you are looking for isn\u2019t here"),r.a.createElement(F.a,{variant:"subtitle2"},"You either tried some shady route or you came here by mistake. Whichever it is, try using the navigation"),r.a.createElement("img",{alt:"Under development",className:e.image,src:"/images/undraw_page_not_found_su7k.svg"})))))},Wt=(a(315),a(316),Object(Qe.a)((function(){return{root:{},item:{display:"flex",flexDirection:"column"}}})),Object(Qe.a)((function(){return{root:{}}})),Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)}}})),Object(Qe.a)((function(e){return{root:{padding:e.spacing(4)}}})),a(317)),Ft=Object(N.a)({root:{maxWidth:645},media:{height:277}});function At(){var e=Ft(),t=Object(c.c)((function(e){return e.inputs.socialDomain}));return r.a.createElement(_.a,{className:e.root},r.a.createElement(He.a,null,r.a.createElement(Le.a,{className:e.media,image:"https://miro.medium.com/max/5748/1*M_jDiQwGmGvrKH_H1peKWQ.png",title:"We are done!"}),r.a.createElement(W.a,null,r.a.createElement(F.a,{gutterBottom:!0,variant:"h5",component:"h2"},"Done"),r.a.createElement(F.a,{variant:"body2",color:"textSecondary"},"Wait until the build and deployment is done. To start login into admin page ","".concat(t,"/admin/login"),". Wait until you seen welcome page. Now your Telar social is ready to use!\ud83d\ude0d\ud83c\udfc6 - Signup page: ","".concat(t,"/auth/signup"),"- Login page: ","".concat(t,"/auth/login")))),r.a.createElement(I.a,null,r.a.createElement(D.a,{size:"small",onClick:function(){te("https://telar.dev")},color:"primary"},"Learn More")))}var Ut=Object(N.a)((function(e){return{root:{"& .MuiTextField-root":{margin:e.spacing(1),width:200}}}}));function zt(){var e=Object(c.c)((function(e){return e.setupState})),t=(Ut(),r.a.useState("Controlled")),a=Object(B.a)(t,2);a[0],a[1];return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{marginTop:20}}),r.a.createElement(Wt.a,{maxWidth:"sm"},"init"===e?r.a.createElement(qe,null):"progress"===e?r.a.createElement(Ue,null):r.a.createElement(At,null)))}var Gt=Object(N.a)((function(e){return{formControl:{margin:e.spacing(3)},cardActions:{justifyContent:"flex-end"}}}));function Ht(){var e,t=Object(c.b)(),a=Gt(),n=Object(c.c)((function(e){return e.inputs.projectDirectory}));return r.a.createElement(_.a,{className:a.root},r.a.createElement(W.a,null,r.a.createElement(F.a,{gutterBottom:!0,variant:"h5",component:"h2"},"Settings"),r.a.createElement("br",null),r.a.createElement(F.a,{className:a.title,color:"textPrimary",gutterBottom:!0},"Enter your project directory that includes `setup.yml` file"),r.a.createElement(A.a,{className:a.address,fullWidth:!0,required:!0,id:"outlined-required",label:"Project Directory",value:n,onChange:(e="projectDirectory",function(a){var n=a.currentTarget.value;t(G(e,n))}),variant:"outlined"})),r.a.createElement(I.a,{className:a.cardActions},r.a.createElement(D.a,{onClick:function(e){ee(q(n))},size:"small",color:"primary"},"Remove Social Network from your cluster")))}function Lt(){return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{style:{marginTop:20}}),r.a.createElement(Wt.a,{maxWidth:"m"},r.a.createElement(Ht,null)))}var Mt=function(){return r.a.createElement(i.d,null,r.a.createElement(i.a,{exact:!0,from:"/",to:"/setup"}),r.a.createElement(k,{component:zt,exact:!0,layout:Ct,path:"/setup"}),r.a.createElement(k,{component:Lt,exact:!0,layout:Ct,path:"/settings"}),r.a.createElement(k,{component:It,exact:!0,layout:Dt,path:"/not-found"}),r.a.createElement(i.a,{to:"/not-found"}))},qt=a(38),Rt=a(148),Kt=function(e){return function(t,a,n){return e((function(e,a){var n,r=performance.now(),l=t(e,a),o=performance.now(),c=(n=o-r,Math.round(100*n)/100);return console.log("reducer process time:",c),l}),a,n)}},Qt=function(e){return function(t){return function(a){console.group(a.type),console.info("dispatching",a);var n=t(a);return console.log("next state",e.getState()),console.groupEnd(),n}}},Vt={inputs:{},infoDialog:{message:"",url:"",open:!1}};var Yt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Vt,t=arguments.length>1?arguments[1]:void 0,a=t.payload;switch(t.type){case U.SET_SETUP_STATE:return Object(O.a)({},e,{setupState:a.state});case U.SET_SETUP_STEP:return Object(O.a)({},e,{setupStep:a.step});case U.SET_STEP_CONDITION:return Object(O.a)({},e,{stepCondition:Object(Re.a)({},a.step,a.valid)});case U.SET_INPUT:return Object(O.a)({},e,{inputs:Object(O.a)({},e.inputs,Object(Re.a)({},a.key,a.value))});case U.SET_DEPLOY_OPEN:return Object(O.a)({},e,{deployOpen:a.open});case U.SET_SETUP_DEFAULT_VALUES:return Object(O.a)({},e,{inputs:Object(O.a)({},e.inputs,{},a.clientInputs)});case U.POP_MESSAGE:return Object(O.a)({},e,{popMessage:a.message});case U.SHOW_INFO_DIALOG:return Object(O.a)({},e,{infoDialog:{message:a.message,url:a.url,open:!0}});case U.HIDE_INFO_DIALOG:return Object(O.a)({},e,{infoDialog:{message:"",url:"",open:!1}});default:return e}};function $t(){var e=Object(c.b)(),t=Object(c.c)((function(e){return e.infoDialog.open})),a=Object(c.c)((function(e){return e.infoDialog.message})),n=Object(c.c)((function(e){return e.infoDialog.url})),l=function(){e(L())};return r.a.createElement(K.a,{open:t,onClose:l,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},r.a.createElement($.a,{id:"alert-dialog-title"},"Info"),r.a.createElement(V.a,null,r.a.createElement(Y.a,{id:"alert-dialog-description"},a&&"".concat(a[0].toUpperCase()).concat(a.slice(1)))),r.a.createElement(Q.a,null,r.a.createElement(D.a,{onClick:l,color:"primary"},"Close"),n&&""!==n&&r.a.createElement(D.a,{onClick:function(){return function(t){te(t),e(L())}(n)},color:"primary",autoFocus:!0},"Instruction")))}var Jt,Xt=Object(u.a)(),Zt=(Jt={inputs:{appID:"my-social-network",ofUsername:"admin",ofGateway:"openfaas.example.com",socialDomain:"https://mysocial.com",secretName:"secrets",namespace:"openfaas-fn",projectDirectory:"",bucketName:"",mongoDBHost:"",mongoDBPassword:"",mongoDBName:"test",siteKeyRecaptcha:"",recaptchaKey:"",githubOAuthSecret:"",githubOAuthClientID:"",adminUsername:"",adminPassword:"",gmail:"",gmailPassword:"",gateway:"",payloadSecret:"",websocketURL:"",installGit:!1,installKubeseal:!1,cloneTelarWeb:!1,cloneTsServerless:!1,cloneTsUi:!1,openFaaSApp:!1,openFaaSAppHasRepos:!1,githubSSHKey:!1,firebaseServiceAccount:!1,firebaseStorage:!1,mongoDBConnection:!1,websocketConnection:!1,loadingCheckIngredients:!1,loadingFirebaseStorage:!1,loadingMongoDB:!1,loadingWebsocket:!1,loadingStackYaml:!1,loadingCreateSecret:!1,loadingPublicPrivateKey:!1,deployTelarWeb:!1,deployTsServerless:!1,deploySocialUi:!1,deployOpen:!1},setupState:"init",setupStep:0,stepCondition:{},infoDialog:{message:"",url:"",open:!1}},Object(Rt.a)({reducer:Yt,middleware:[Qt].concat(Object(qt.a)(Object(Rt.b)())),preloadedState:Jt,enhancers:[Kt]}));function ea(){var e=Object(c.b)(),t=Object(c.c)((function(e){return e.popMessage})),a=function(t,a){"clickaway"!==a&&e(H(""))};return r.a.createElement(m.a,{anchorOrigin:{vertical:"bottom",horizontal:"left"},open:""!==t,autoHideDuration:6e3,onClose:a,message:t,action:r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,{size:"small","aria-label":"close",color:"inherit",onClick:a},r.a.createElement(b.a,{fontSize:"small"})))})}void 0===window.WebSocket?alert("Your browser does not support WebSockets"):function(){var e=new WebSocket("ws://localhost:31115/ws");e.onopen=function(){Zt.dispatch(H("Ready!"))},e.onmessage=function(e){var t=JSON.parse(e.data);console.log("action",t),console.log("e.data",e.data),Zt.dispatch(t)},e.onclose=function(){Zt.dispatch(H("Socket closed"))}}();var ta=function(){return Object(n.useEffect)((function(){})),r.a.createElement(i.c,{history:Xt},r.a.createElement(c.a,{store:Zt},r.a.createElement(s.a,{theme:j},r.a.createElement(Mt,null),r.a.createElement(ea,null),r.a.createElement($t,null))))};Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));o.a.render(r.a.createElement(ta,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()}))}},[[255,1,2]]]); +//# sourceMappingURL=main.3e4bea54.chunk.js.map \ No newline at end of file diff --git a/ui/build/static/js/main.3e4bea54.chunk.js.map b/ui/build/static/js/main.3e4bea54.chunk.js.map new file mode 100644 index 0000000..927a322 --- /dev/null +++ b/ui/build/static/js/main.3e4bea54.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["theme/palette.js","theme/typography.js","theme/overrides/MuiIconButton.js","theme/overrides/index.js","theme/overrides/MuiButton.js","theme/overrides/MuiPaper.js","theme/overrides/MuiTableCell.js","theme/overrides/MuiTableHead.js","theme/overrides/MuiTypography.js","theme/overrides/MuiListItem.js","theme/index.js","components/RouteWithLayout/RouteWithLayout.js","store/actionTypes.js","store/actions.js","components/HelpDialog/index.jsx","services.js","components/InitialStep/index.jsx","components/OFCInfo/index.jsx","components/CheckIngredients/index.jsx","components/FirebaseStorage/index.jsx","components/UserManagement/index.jsx","components/Websocket/index.jsx","components/Database/index.jsx","components/GoogleReCaptcha/index.jsx","components/OAuth/index.jsx","components/DepolyDialog/index.jsx","components/OFCC/index.js","components/SelectSetup/index.js","layouts/Main/components/Footer/Footer.js","layouts/Main/components/Sidebar/components/Profile/Profile.js","layouts/Main/components/Sidebar/components/SidebarNav/SidebarNav.js","layouts/Main/components/Sidebar/Sidebar.js","layouts/Main/components/Sidebar/components/UpgradePlan/UpgradePlan.js","layouts/Main/components/Topbar/Topbar.js","layouts/Main/Main.js","layouts/Minimal/components/Topbar/Topbar.js","layouts/Minimal/Minimal.js","views/Icons/Icons.js","views/NotFound/NotFound.js","views/Settings/components/Notifications/Notifications.js","views/Settings/components/Password/Password.js","views/Settings/Settings.js","views/Typography/Typography.js","components/StepDone/index.js","pages/Setup/index.jsx","components/OFSetting/index.js","pages/Settings/index.jsx","Routes.js","store/enhancers/monitorReducer.js","store/middleware/logger.js","store/reducers.js","components/DialogInfo/index.jsx","App.js","store/index.js","serviceWorker.js","index.js"],"names":["white","black","primary","contrastText","dark","colors","orange","main","light","secondary","blue","success","green","info","warning","error","red","text","blueGrey","link","background","default","paper","icon","divider","grey","h1","color","palette","fontWeight","fontSize","letterSpacing","lineHeight","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","textTransform","root","backgroundColor","MuiButton","contained","boxShadow","MuiIconButton","MuiPaper","elevation1","MuiTableCell","typography","borderBottom","MuiTableHead","MuiTypography","gutterBottom","marginBottom","MuiListItem","container","listStyleType","paddingTop","theme","createMuiTheme","overrides","zIndex","appBar","drawer","RouteWithLayout","props","Layout","layout","Component","component","rest","render","matchProps","actionTypes","SET_SETUP_STATE","SET_SETUP_STEP","SET_INPUT","SET_DEPLOY_OPEN","SET_SETUP_DEFAULT_VALUES","POP_MESSAGE","SET_STEP_CONDITION","SHOW_INFO_DIALOG","HIDE_INFO_DIALOG","REMOVE_SOCIAL_FROM_CLUSTER","START_STEP","CHECK_STEP","state","type","payload","key","value","message","projectDirectory","HelpDialog","React","useState","scroll","open","onClose","descriptionElementRef","useRef","useEffect","descriptionElement","current","focus","Dialog","aria-labelledby","aria-describedby","DialogTitle","id","title","DialogContent","dividers","DialogContentText","ref","tabIndex","children","DialogActions","Button","onClick","action","axios","post","then","resp","console","log","data","catch","err","url","useStyles","makeStyles","minWidth","bullet","display","margin","transform","pos","address","height","InitialStep","name","classes","dispatch","className","useDispatch","useSelector","helpOpen","setHelpOpen","Card","variant","CardContent","services","TextField","fullWidth","required","label","onChange","event","currentTarget","actions","CardActions","OFCInfo","appID","ofUsername","ofGateway","socialDomain","secretName","namespace","kubeconfigPath","handleInputChange","GreenCheckbox","withStyles","checked","Checkbox","progress","CheckIngredients","loadingCheckIngredients","cloneTelarWeb","cloneTsServerless","cloneTsUi","checkBox","CircularProgress","size","FormControl","formControl","FormLabel","FormGroup","FormControlLabel","control","FirebaseStorage","bucketName","firebaseStorage","loadingFirebaseStorage","gilad","jason","antoine","helpType","UserManagement","adminUsername","adminPassword","gmail","gmailPassword","handleChange","Websocket","gateway","payloadSecret","websocketURL","websocketConnection","loadingWebsocket","InputProps","readonly","Database","mongoDBHost","mongoDBPassword","mongoDBName","mongoDBConnection","loadingMongoDB","GoogleReCaptcha","siteKeyRecaptcha","recaptchaKey","OAuth","githubOAuthSecret","githubOAuthClientID","DeployDialog","loadingStackYaml","loadingCreateSecret","deployTelarWeb","deployTsServerless","deploySocialUi","disableBackdropClick","disableEscapeKeyDown","width","marginTop","spacing","marginRight","actionsContainer","resetContainer","padding","validInputs","inputs","input","trim","validCheckbox","OFCC","setupStep","deployOpen","stepCondition","steps","handleNext","Stepper","activeStep","orientation","map","index","Step","StepLabel","StepContent","step","getStepContent","disabled","length","cardActions","justifyContent","SelectSetup","setValue","CardActionArea","CardMedia","alt","image","href","target","RadioGroup","aria-label","Radio","preventDefault","Footer","clsx","Link","flexDirection","alignItems","minHeight","avatar","withRouter","pathname","history","location","matchFunction","matchPath","path","strict","params","user","toLowerCase","bio","Avatar","RouterLink","src","to","item","paddingBottom","fontWeightMedium","active","CustomRouterLink","forwardRef","style","flexGrow","SidebarNav","pages","List","page","ListItem","disableGutters","activeClassName","media","textAlign","content","breakpoints","up","nav","Drawer","anchor","signOutButton","marginLeft","Topbar","onSidebarOpen","notifications","AppBar","Toolbar","Hidden","mdDown","IconButton","Badge","badgeContent","lgUp","shiftContent","paddingLeft","Main","useTheme","isDesktop","useMediaQuery","defaultMatches","openSidebar","setOpenSidebar","shouldOpenSidebar","position","Minimal","iframe","border","maxWidth","NotFound","Grid","justify","lg","xs","StepDone","SetupComponent","setupState","Container","OFSetting","SettingsComponent","Routes","exact","from","MainLayout","NotFoundView","MinimalLayout","monitorReducerEnhancer","createStore","reducer","initialState","enhancer","number","start","performance","now","newState","end","diff","Math","round","logger","store","next","group","result","getState","groupEnd","infoDialog","appReducer","valid","clientInputs","popMessage","DialogInfo","handleClose","toUpperCase","slice","handleOpenURL","autoFocus","preloadedState","browserHistory","createBrowserHistory","installGit","installKubeseal","openFaaSApp","openFaaSAppHasRepos","githubSSHKey","firebaseServiceAccount","loadingPublicPrivateKey","configureStore","rootReducer","middleware","loggerMiddleware","getDefaultMiddleware","enhancers","monitorReducersEnhancer","AppSnackbar","reason","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","Fragment","undefined","window","WebSocket","alert","socket","onopen","onmessage","e","JSON","parse","onclose","initWS","App","ThemeProvider","Boolean","hostname","match","ReactDOM","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.3e4bea54.chunk.js","sourcesContent":["import { colors } from '@material-ui/core';\n\nconst white = '#FFFFFF';\nconst black = '#000000';\n\nexport default {\n black,\n white,\n primary: {\n contrastText: white,\n dark: colors.orange[900],\n main: colors.orange[500],\n light: colors.orange[100]\n },\n secondary: {\n contrastText: white,\n dark: colors.blue[900],\n main: colors.blue['A400'],\n light: colors.blue['A400']\n },\n success: {\n contrastText: white,\n dark: colors.green[900],\n main: colors.green[600],\n light: colors.green[400]\n },\n info: {\n contrastText: white,\n dark: colors.blue[900],\n main: colors.blue[600],\n light: colors.blue[400]\n },\n warning: {\n contrastText: white,\n dark: colors.orange[900],\n main: colors.orange[600],\n light: colors.orange[400]\n },\n error: {\n contrastText: white,\n dark: colors.red[900],\n main: colors.red[600],\n light: colors.red[400]\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600],\n link: colors.blue[600]\n },\n background: {\n default: '#F4F6F8',\n paper: white\n },\n icon: colors.blueGrey[600],\n divider: colors.grey[200]\n};\n","import palette from './palette';\n\nexport default {\n h1: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '35px',\n letterSpacing: '-0.24px',\n lineHeight: '40px'\n },\n h2: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '29px',\n letterSpacing: '-0.24px',\n lineHeight: '32px'\n },\n h3: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '24px',\n letterSpacing: '-0.06px',\n lineHeight: '28px'\n },\n h4: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '20px',\n letterSpacing: '-0.06px',\n lineHeight: '24px'\n },\n h5: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '16px',\n letterSpacing: '-0.05px',\n lineHeight: '20px'\n },\n h6: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '14px',\n letterSpacing: '-0.05px',\n lineHeight: '20px'\n },\n subtitle1: {\n color: palette.text.primary,\n fontSize: '16px',\n letterSpacing: '-0.05px',\n lineHeight: '25px'\n },\n subtitle2: {\n color: palette.text.secondary,\n fontWeight: 400,\n fontSize: '14px',\n letterSpacing: '-0.05px',\n lineHeight: '21px'\n },\n body1: {\n color: palette.text.primary,\n fontSize: '14px',\n letterSpacing: '-0.05px',\n lineHeight: '21px'\n },\n body2: {\n color: palette.text.secondary,\n fontSize: '12px',\n letterSpacing: '-0.04px',\n lineHeight: '18px'\n },\n button: {\n color: palette.text.primary,\n fontSize: '14px'\n },\n caption: {\n color: palette.text.secondary,\n fontSize: '11px',\n letterSpacing: '0.33px',\n lineHeight: '13px'\n },\n overline: {\n color: palette.text.secondary,\n fontSize: '11px',\n fontWeight: 500,\n letterSpacing: '0.33px',\n lineHeight: '13px',\n textTransform: 'uppercase'\n }\n};\n","import palette from '../palette';\n\nexport default {\n root: {\n color: palette.icon,\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n }\n }\n};\n","import MuiButton from './MuiButton';\nimport MuiIconButton from './MuiIconButton';\nimport MuiPaper from './MuiPaper';\nimport MuiTableCell from './MuiTableCell';\nimport MuiTableHead from './MuiTableHead';\nimport MuiTypography from './MuiTypography';\nimport MuiListItem from './MuiListItem';\n\nexport default {\n MuiButton,\n MuiIconButton,\n MuiPaper,\n MuiTableCell,\n MuiTableHead,\n MuiTypography,\n MuiListItem\n};\n","export default {\n contained: {\n boxShadow:\n '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.20)',\n backgroundColor: '#FFFFFF'\n }\n};\n","export default {\n elevation1: {\n boxShadow: '0 0 0 1px rgba(63,63,68,0.05), 0 1px 3px 0 rgba(63,63,68,0.15)'\n }\n};\n","import palette from '../palette';\nimport typography from '../typography';\n\nexport default {\n root: {\n ...typography.body1,\n borderBottom: `1px solid ${palette.divider}`\n }\n};\n","import { colors } from '@material-ui/core';\n\nexport default {\n root: {\n backgroundColor: colors.grey[50]\n }\n};\n","export default {\n gutterBottom: {\n marginBottom: 8\n }\n};\n","\n\nexport default {\n container: {\n listStyleType: 'none',\n paddingTop: 5\n\n }\n};\n","import { createMuiTheme } from '@material-ui/core';\n\nimport palette from './palette';\nimport typography from './typography';\nimport overrides from './overrides';\n\nconst theme = createMuiTheme({\n palette,\n typography,\n overrides,\n zIndex: {\n appBar: 1200,\n drawer: 1100\n }\n});\n\nexport default theme;\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nconst RouteWithLayout = props => {\n const { layout: Layout, component: Component, ...rest } = props;\n\n return (\n (\n \n \n \n )}\n />\n );\n};\n\nRouteWithLayout.propTypes = {\n component: PropTypes.any.isRequired,\n layout: PropTypes.any.isRequired,\n path: PropTypes.string\n};\n\nexport default RouteWithLayout;\n","const actionTypes = {\n\n // Client Actions\n SET_SETUP_STATE: 'SET_SETUP_STATE',\n SET_SETUP_STEP: 'SET_SETUP_STEP',\n SET_INPUT: 'SET_INPUT',\n SET_DEPLOY_OPEN: 'SET_DEPLOY_OPEN',\n SET_SETUP_DEFAULT_VALUES: 'SET_SETUP_DEFAULT_VALUES',\n POP_MESSAGE: 'POP_MESSAGE',\n SET_STEP_CONDITION: 'SET_STEP_CONDITION',\n SHOW_INFO_DIALOG: 'SHOW_INFO_DIALOG',\n HIDE_INFO_DIALOG: 'HIDE_INFO_DIALOG',\n \n // Server HTTP Actions\n REMOVE_SOCIAL_FROM_CLUSTER: \"REMOVE_SOCIAL_FROM_CLUSTER\",\n START_STEP : \"START_STEP\",\n CHECK_STEP : \"CHECK_STEP\",\n}\n\nexport default actionTypes","import actionTypes from './actionTypes'\n\n\n// ******* Client Actions ******* //\nconst setSetupState = (state) => {\n return {\n type: actionTypes.SET_SETUP_STATE,\n payload: {state}\n }\n}\n\nconst setSetupStep = (step) => {\n return {\n type: actionTypes.SET_SETUP_STEP,\n payload: {step}\n }\n}\n\nconst setStepCondition = (step, valid) => {\n return {\n type: actionTypes.SET_STEP_CONDITION,\n payload: {step, valid}\n }\n}\n\nconst setInput = (key,value) => {\n return {\n type: actionTypes.SET_INPUT,\n payload: {key, value}\n }\n}\n\nconst setDeployOpen = (open) => {\n return {\n type: actionTypes.SET_DEPLOY_OPEN,\n payload: {open}\n }\n}\n\nconst setSetupDefaultValues = (payload) => {\n return {\n type: actionTypes.SET_SETUP_DEFAULT_VALUES,\n payload\n }\n}\n\nconst popMessage = (message) => {\n return {\n type: actionTypes.POP_MESSAGE,\n payload: {message}\n }\n}\n\nconst showInfoDialog = (message, url) => {\n return {\n type: actionTypes.SHOW_INFO_DIALOG,\n payload: {message, url}\n }\n}\n\nconst hideInfoDialog = () => {\n return {\n type: actionTypes.HIDE_INFO_DIALOG,\n payload: {}\n }\n}\n\n\n// ******* Server HTTP Actions ******* //\nconst startStep = () => {\n return {\n type: actionTypes.START_STEP,\n payload: {}\n }\n}\n\nconst removeSocialFromCluster = (projectDirectory) => {\n return {\n type: actionTypes.REMOVE_SOCIAL_FROM_CLUSTER,\n payload: {projectDirectory}\n }\n}\n\nconst checkStep = (payload) => {\n return {\n type: actionTypes.CHECK_STEP,\n payload\n }\n}\n\nexport default {\n setSetupState,\n setSetupStep,\n setStepCondition,\n setInput,\n setDeployOpen,\n setSetupDefaultValues,\n popMessage,\n showInfoDialog,\n hideInfoDialog,\n startStep,\n removeSocialFromCluster,\n checkStep\n}","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\n\nexport default function HelpDialog(props) {\n\n const [scroll, setScroll] = React.useState('paper');\n const {open, onClose} = props\n const descriptionElementRef = React.useRef(null);\n React.useEffect(() => {\n if (open) {\n const { current: descriptionElement } = descriptionElementRef;\n if (descriptionElement !== null) {\n descriptionElement.focus();\n }\n }\n }, [open]);\n\n return (\n
\n \n {props.title}\n \n \n {props.text}\n \n {props.children}\n \n \n \n \n \n
\n );\n}","import axios from \"axios\";\nconst dispatchServer = (action) => {\n\n axios\n .post(\"/dispatch\", action) // GET request to URL /hello\n .then(resp => console.log(resp.data)) // save response to state\n .catch(err => console.log(err)); // catch error\n}\n\nconst openURL = (url) => {\n\n axios\n .post(\"/open-url\", {url}) // GET request to URL /hello\n .then(resp => console.log(resp.data)) // save response to state\n .catch(err => console.log(err)); // catch error\n}\n\n\nexport default {\n dispatchServer,\n openURL\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function InitialStep() {\n const classes = useStyles();\n const bull = ;\n const dispatch = useDispatch()\n const projectDirectory = useSelector(state => state['inputs']['projectDirectory'])\n const handleInputChange = (name) => (event) => {\n const {value} = event.currentTarget\n dispatch(actions.setInput(name, value))\n }\n\n\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/1.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code. \n \n
\n
\n \n \n
\n )\n\n return (\n \n \n \n
\n
\n \n Enter your project directory\n \n \n
\n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function OFCInfo() {\n const classes = useStyles();\n const bull = ;\n const dispatch = useDispatch()\n const appID = useSelector(state => state['inputs']['appID'])\n const ofUsername = useSelector(state => state['inputs']['ofUsername'])\n const ofGateway = useSelector(state => state['inputs']['ofGateway'])\n const socialDomain = useSelector(state => state['inputs']['socialDomain'])\n const secretName = useSelector(state => state['inputs']['secretName'])\n const namespace = useSelector(state => state['inputs']['namespace'])\n const kubeconfigPath = useSelector(state => state['inputs']['kubeconfigPath'])\n const handleInputChange = (name) => (event) => {\n const {value} = event.currentTarget\n dispatch(actions.setInput(name, value))\n }\n\n\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/2.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code. \n \n
\n
\n \n \n
\n )\n\n return (\n \n \n \n
\n
\n \n Enter social network identifier. Default is `my-social-network`.\n \n \n
\n
\n \n Enter OpenFaaS username. Default is `admin`.\n \n \n
\n
\n \n Enter OpenFaaS gateway e.g. `domain.com` or `localhost.com:31112`\n \n \n
\n
\n \n Enter your social network URL e.g. https://social.com or https://social.com/function\n \n \n
\n
\n \n Enter OpenFaaS funtion namespace. Default is `openfaas-fn`\n \n \n
\n
\n \n Enter secret name that will be created on your K8S cluster. Default is `secrets`\n \n \n
\n
\n \n In the case you want to use KUBECONFIG path instead of default context, enter the kube config path. If not let the textbox empty\n \n \n
\n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function CheckIngredients() {\n const dispatch = useDispatch()\n\n\n const loadingCheckIngredients = useSelector(state => state['inputs']['loadingCheckIngredients'])\n\n const cloneTelarWeb = useSelector(state => state['inputs']['cloneTelarWeb'])\n const cloneTsServerless = useSelector(state => state['inputs']['cloneTsServerless'])\n const cloneTsUi = useSelector(state => state['inputs']['cloneTsUi'])\n\n const classes = useStyles();\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n\n const helpContent = () => (\n \n \n \n This step check the ingredients!\n \n
\n
\n \n \n
\n )\n\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n return (\n \n \n \n
\n
\n \n Prepare ingredients\n \n Clean on next to start preparation\n \n \n\n {\n loadingCheckIngredients && (\n <>\n Clone telar-web repository.}\n />\n Clone ts-serverless repository.}\n />\n Clone ts-ui repository.}\n />\n \n )\n }\n \n \n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function FirebaseStorage() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const bucketName = useSelector(state => state['inputs']['bucketName'])\n const firebaseServiceAccount = useSelector(state => state['inputs']['firebaseServiceAccount'])\n const firebaseStorage = useSelector(state => state['inputs']['firebaseStorage'])\n\n const loadingFirebaseStorage = useSelector(state => state['inputs']['loadingFirebaseStorage'])\n\n const bull = ;\n const [state, setState] = React.useState({\n gilad: true,\n jason: false,\n antoine: false,\n });\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n // 0 : instruction\n // 1 : warning\n const [helpType, setHelpType] = React.useState(0);\n\n const handleHelp = (helpType) => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n\n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code.\n \n
\n
\n \n \n
\n )\n\n const warningContent = () => (\n \n \n \n ⚠️ We strictly recommend you to use your own Firebase Storage. \n Public Firebase Storage only use for testing, because everybody can see your data and also there is no garanty for data persistance. \n Public Firebase Storage is a free and shared Firebase Storage account! \n \n
\n
\n \n \n
\n )\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name, event.currentTarget.value))\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n return (\n \n \n \n
\n
\n \n Enter bucket name and download service account file in project directory\n \n
\n \n
\n
\n\n { loadingFirebaseStorage && (\n \n \n\n \n \n\n \n\n \n )}\n
\n \n \n \n {helpType === 0 ? helpContent() : warningContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function UserManagement() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const adminUsername = useSelector(state => state['inputs']['adminUsername'])\n const adminPassword = useSelector(state => state['inputs']['adminPassword'])\n const gmail = useSelector(state => state['inputs']['gmail'])\n const gmailPassword = useSelector(state => state['inputs']['gmailPassword'])\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n const bull = ;\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n\n\n return (\n \n \n \n\n
\n
\n \n Enter Admin user information.\n \n \n
\n
\n \n
\n \n \n Enter your Gmail information.\n \n \n It will be used for sending confirmation and verification email to users.\n
\n
\n
\n
\n \n
\n
\n \n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function Websocket() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const gateway = useSelector(state => state['inputs']['gateway'])\n const payloadSecret = useSelector(state => state['inputs']['payloadSecret'])\n const websocketURL = useSelector(state => state['inputs']['websocketURL'])\n const websocketConnection = useSelector(state => state['inputs']['websocketConnection'])\n\n const loadingWebsocket = useSelector(state => state['inputs']['loadingWebsocket'])\n\n const bull = ;\n const [state, setState] = React.useState({\n gilad: true,\n jason: false,\n antoine: false,\n });\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/9.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n\n return (\n \n \n \n
\n
\n \n Enter Websocket server information and telar server gateway\n \n \n \n
\n
\n \n
\n
\n \n
\n
\n \n {loadingWebsocket && (\n\n \n \n \n \n \n )}\n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function Database() {\n const classes = useStyles();\n\n const dispatch = useDispatch()\n const mongoDBHost = useSelector(state => state['inputs']['mongoDBHost'])\n const mongoDBPassword = useSelector(state => state['inputs']['mongoDBPassword'])\n const mongoDBName = useSelector(state => state['inputs']['mongoDBName'])\n const mongoDBConnection = useSelector(state => state['inputs']['mongoDBConnection'])\n\n const loadingMongoDB = useSelector(state => state['inputs']['loadingMongoDB'])\n\n const bull = ;\n const [state, setState] = React.useState({\n gilad: true,\n jason: false,\n antoine: false,\n });\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n // 0 : instruction\n // 1 : warning\n const [helpType, setHelpType] = React.useState(0);\n\n const handleHelp = (helpType) => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/5.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n\n const warningContent = () => (\n \n \n \n ⚠️ We strictly recommend you to use your own MongoDB. \n Public MongoDB only use for testing, because everybody can see your data and also there is no garanty for data persistance. \n Public MongoDB is a free and shared MongoDB account! \n \n
\n
\n \n \n
\n )\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n return (\n \n \n \n
\n
\n \n Fill the field for MongoDB database\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n {loadingMongoDB && (\n\n \n \n \n\n \n \n )}\n
\n \n \n \n {helpType === 0 ? helpContent() : warningContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function GoogleReCaptcha() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const siteKeyRecaptcha = useSelector(state => state['inputs']['siteKeyRecaptcha'])\n const recaptchaKey = useSelector(state => state['inputs']['recaptchaKey'])\n const bull = ;\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n // 0 : instruction\n // 1 : warning\n const [helpType, setHelpType] = React.useState(0);\n\n const handleHelp = (helpType) => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/6.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n return (\n \n \n \n
\n
\n \n Enter your valid Google reCaptcha site key and secret key\n \n \n
\n
\n \n
\n \n \n \n { helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function OAuth() {\n const classes = useStyles();\n\n const dispatch = useDispatch()\n const githubOAuthSecret = useSelector(state => state['inputs']['githubOAuthSecret'])\n const githubOAuthClientID = useSelector(state => state['inputs']['githubOAuthClientID'])\n const bull = ;\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/7.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n\n return (\n \n \n \n Enter your valid Github OAuth client ID and secret key.\n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green } from '@material-ui/core/colors';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n });\n \nexport default function DeployDialog(props) {\n const classes = useStyles();\n const {open, onClose} = props\n\n const loadingStackYaml = useSelector(state => state['inputs']['loadingStackYaml'])\n const loadingCreateSecret = useSelector(state => state['inputs']['loadingCreateSecret'])\n const deployTelarWeb = useSelector(state => state['inputs']['deployTelarWeb'])\n const deployTsServerless = useSelector(state => state['inputs']['deployTsServerless'])\n const deploySocialUi = useSelector(state => state['inputs']['deploySocialUi'])\n\n const handleClose = () => {\n onClose()\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n\n return (\n \n {\"Deploying\"}\n \n \n Deploying the project to OpenFaaS\n \n \n \n\n\n \n\n \n\n \n\n \n\n \n \n \n \n \n \n \n \n \n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport StepContent from '@material-ui/core/StepContent';\nimport Button from '@material-ui/core/Button';\nimport InitialStep from '../InitialStep';\nimport OFCInfo from '../OFCInfo';\nimport CheckIngredients from '../CheckIngredients';\nimport FirebaseStorage from '../FirebaseStorage';\nimport UserManagement from '../UserManagement';\nimport WebSocket from '../Websocket';\nimport Database from '../Database';\nimport GoogleReCaptcha from '../GoogleReCaptcha';\nimport OAuth from '../OAuth';\nimport DeployDialog from '../DepolyDialog';\nimport actions from '../../store/actions'\nimport services from '../../services';\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n },\n button: {\n marginTop: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n actionsContainer: {\n marginBottom: theme.spacing(2),\n },\n resetContainer: {\n padding: theme.spacing(3),\n },\n}));\n\nfunction getSteps() {\n return [\n `Let's start`, \n `General settings`, \n 'Check ingredients', \n 'Firebase Storage', \n 'MongoDB', \n 'Google reCAPTCHA', \n 'Github OAuth',\n 'User Manegement',\n 'Websocket' \n];\n}\n\nfunction getStepContent(step) {\n switch (step) {\n case 0:\n return ;\n case 1:\n return ;\n case 2:\n return ;\n case 3:\n return ;\n case 4:\n return ;\n case 5:\n return ;\n case 6:\n return ;\n case 7:\n return ;\n case 8:\n return ;\n default:\n return 'Unknown step';\n }\n}\n\nconst validInput = (value) => {\n if(value && value.trim() !== \"\") {\n return true\n }\n return false\n}\n\nconst validInputs = (state, inputs) => {\n for (const input of inputs) {\n const isValid = validInput(state['inputs'][input])\n if (!isValid) {\n return false\n }\n }\n return true\n\n}\n\nconst validCheckbox = (state, inputs) => {\n for (const input of inputs) {\n if (!state['inputs'][input]) {\n return false\n }\n }\n \n return true\n}\n\n\n\nexport default function OFCC() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const setupStep = useSelector(state => state['setupStep'])\n const deployOpen = useSelector(state => state['deployOpen'])\n const stepCondition = {}\n const steps = getSteps();\n\n\n // ***** Conditions ***** //\n\n const state = useSelector(state => state) \n\n // Init step\n stepCondition[0]= (validInputs(state, ['projectDirectory']))\n\n // Init step\n stepCondition[1]= (validInputs(state, ['appID','ofGateway', 'ofUsername', 'socialDomain', 'secretName', 'namespace']))\n \n // Check ingredients\n stepCondition[2] = !validCheckbox(state,['loadingCheckIngredients'])\n\n // Firebase storage\n stepCondition[3] = (!validCheckbox(state, ['loadingFirebaseStorage'] ) && validInputs(state, ['bucketName']) === true)\n\n // Database\n stepCondition[4] = (!validCheckbox(state, ['loadingMongoDB'] ) && validInputs(state, ['mongoDBHost', 'mongoDBPassword', 'mongoDBName']) === true)\n\n // Firebase storage\n stepCondition[5] = (validInputs(state, ['siteKeyRecaptcha', 'recaptchaKey']))\n\n // OAuth\n stepCondition[6] = (validInputs(state, ['githubOAuthSecret']))\n\n // User management\n stepCondition[7] = (validInputs(state, ['adminUsername', 'adminPassword', 'gmail', 'gmailPassword']))\n\n // Websocket\n stepCondition[8] = ((!validCheckbox(state, ['loadingWebsocket'] ) || validCheckbox(state, ['websocketConnection'] )) && validInputs(state, ['gateway', 'payloadSecret', 'websocketURL']) === true)\n\n const handleCloseDeploy = () => {\n dispatch(actions.setInput('deployOpen', false))\n };\n\n const handleNext = () => {\n\n services.dispatchServer(actions.checkStep(state))\n \n };\n\n\n\n return (\n
\n \n {steps.map((label, index) => (\n \n {label}\n \n {getStepContent(index)}\n
\n
\n \n {setupStep === steps.length - 1 ? 'Deploy' : 'Next'}\n \n
\n
\n
\n
\n ))}\n
\n \n\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport Card from '@material-ui/core/Card';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport actions from '../../store/actions'\nimport services from '../../services';\n\nconst useStyles = makeStyles(theme => ({\n formControl: {\n margin: theme.spacing(3),\n },\n cardActions: {\n justifyContent: \"flex-end\"\n }\n}));\n\nexport default function SelectSetup() {\n const dispatch = useDispatch()\n const classes = useStyles();\n const [value, setValue] = React.useState('ofc');\n\n const handleChange = event => {\n \n setValue(event.target.value);\n };\n\n const handleNext = event => {\n services.dispatchServer(actions.startStep())\n dispatch(actions.setSetupState('progress'))\n };\n\n const handleVote = event => {\n event.preventDefault()\n services.openURL('https://github.com/Qolzam/feedback/issues/1')\n };\n\n return (\n \n \n \n \n \n \n OpenFaaS\n \n \n The OpenFaaS makes it simple to deploy both functions and existing code on Kubernetes.\n \n
\n\n \n Choose your setup\n \n } label=\"OpenFaaS\" />\n } label=\"AWS EKS\" />\n } label=\"Google Kubernetes Engine\" />\n } label=\"Azure Kubernetes Service\" />\n } label=\"Self-host OpenFaaS\" />\n } label=\"Kubernetes on Bare-metal\" />\n } label=\"K3S on Bare-meta\" />\n } label=\"Local Kind\" />\n } label=\"Local Minikube\" />\n \n \n
\n
\n \n Vote for your favorite option to enable for the next version. Click here to vote\n \n \n
\n \n \n \n
\n );\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport { Typography, Link } from '@material-ui/core';\nimport services from '../../../../services';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n }\n}));\n\nconst Footer = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n \n const handleTelarLink = (event) => {\n\n event.preventDefault()\n services.openURL('https://telar.dev/')\n }\n\n return (\n \n \n ©{' '}\n \n Telar\n \n {' '} 2020\n \n \n );\n};\n\nFooter.propTypes = {\n className: PropTypes.string\n};\n\nexport default Footer;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Avatar, Typography } from '@material-ui/core';\nimport { withRouter, matchPath } from 'react-router-dom';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n minHeight: 'fit-content'\n },\n avatar: {\n width: 60,\n height: 60\n },\n name: {\n marginTop: theme.spacing(1)\n }\n}));\n\nconst Profile = props => {\n const { className, ...rest } = props;\n let userLogin = 'de-amir'\n const { pathname } = props.history.location;\n const matchFunction = matchPath(pathname, {\n path: '/:user',\n strict: true,\n });\n\n if(matchFunction) {\n userLogin = matchFunction.params.user.toLowerCase()\n }\n const classes = useStyles();\n const users = {\n 'de-amir': { \n name: 'Amirhossein Movahedi',\n avatar: '/images/avatars/amir.JPG',\n bio: 'Distributed System Eng.'\n },\n 'de-minhnguyen': { \n name: 'Minh Tuan Nguyen',\n avatar: '/images/avatars/minh.JPG',\n bio: 'AI Eng.'\n }\n };\n const user = users['de-amir']\n\n return (\n \n \n \n {user.name}\n \n {user.bio}\n \n );\n};\n\nProfile.propTypes = {\n className: PropTypes.string\n};\n\nexport default withRouter(Profile);\n","/* eslint-disable react/no-multi-comp */\n/* eslint-disable react/display-name */\nimport React, { forwardRef } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { List, ListItem, Button, colors } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n item: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: colors.blueGrey[800],\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightMedium\n },\n icon: {\n color: theme.palette.icon,\n width: 24,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n active: {\n color: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium,\n '& $icon': {\n color: theme.palette.primary.main\n }\n }\n}));\n\nconst CustomRouterLink = forwardRef((props, ref) => (\n \n \n \n));\n\nconst SidebarNav = props => {\n const { pages, className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n {pages.map(page => (\n \n \n
{page.icon}
\n {page.title}\n \n \n ))}\n \n );\n};\n\nSidebarNav.propTypes = {\n className: PropTypes.string,\n pages: PropTypes.array.isRequired\n};\n\nexport default SidebarNav;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Drawer } from '@material-ui/core';\nimport SetupIcon from '@material-ui/icons/Build';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport { withRouter, matchPath } from 'react-router-dom';\nimport { SidebarNav } from './components';\n\nconst useStyles = makeStyles(theme => ({\n drawer: {\n width: 240,\n [theme.breakpoints.up('lg')]: {\n marginTop: 64,\n height: 'calc(100% - 64px)'\n }\n },\n root: {\n backgroundColor: theme.palette.white,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n padding: theme.spacing(2)\n },\n divider: {\n margin: theme.spacing(2, 0)\n },\n nav: {\n marginBottom: theme.spacing(2)\n }\n}));\n\nconst Sidebar = props => {\n const { open, variant, onClose, className, ...rest } = props;\n let user = ''\n const { pathname } = props.history.location;\n const matchFunction = matchPath(pathname, {\n path: '/:user',\n strict: true,\n });\n\n if(matchFunction) {\n user = matchFunction.params.user\n }\n const classes = useStyles();\n\n const pages = [\n {\n title: 'Installation',\n href: `/setup`,\n icon: \n },\n {\n title: 'Settings',\n href: `/settings`,\n icon: \n }\n ];\n\n return (\n \n \n \n \n \n );\n};\n\nSidebar.propTypes = {\n className: PropTypes.string,\n onClose: PropTypes.func,\n open: PropTypes.bool.isRequired,\n variant: PropTypes.string.isRequired\n};\n\nexport default withRouter(Sidebar);\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Typography, Button, colors } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: colors.grey[50]\n },\n media: {\n paddingTop: theme.spacing(2),\n height: 80,\n textAlign: 'center',\n '& > img': {\n height: '100%',\n width: 'auto'\n }\n },\n content: {\n padding: theme.spacing(1, 2)\n },\n actions: {\n padding: theme.spacing(1, 2),\n display: 'flex',\n justifyContent: 'center'\n }\n}));\n\nconst UpgradePlan = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n
\n \n
\n
\n \n Upgrade to PRO\n \n \n Upgrade to TelarKit PRO and get even more components\n \n
\n
\n \n Upgrade\n \n
\n \n );\n};\n\nUpgradePlan.propTypes = {\n className: PropTypes.string\n};\n\nexport default UpgradePlan;\n","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { AppBar, Toolbar, Badge, Hidden, IconButton } from '@material-ui/core';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport NotificationsIcon from '@material-ui/icons/NotificationsOutlined';\nimport InputIcon from '@material-ui/icons/Input';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n boxShadow: 'none'\n },\n flexGrow: {\n flexGrow: 1\n },\n signOutButton: {\n marginLeft: theme.spacing(1)\n }\n}));\n\nconst Topbar = props => {\n const { className, onSidebarOpen, ...rest } = props;\n\n const classes = useStyles();\n\n const [notifications] = useState([]);\n\n return (\n \n \n \n

Telar

\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nTopbar.propTypes = {\n className: PropTypes.string,\n onSidebarOpen: PropTypes.func\n};\n\nexport default Topbar;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles, useTheme } from '@material-ui/styles';\nimport { useMediaQuery } from '@material-ui/core';\n\nimport { Sidebar, Topbar, Footer } from './components';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n paddingTop: 56,\n height: '100%',\n [theme.breakpoints.up('sm')]: {\n paddingTop: 64\n }\n },\n shiftContent: {\n paddingLeft: 240\n },\n content: {\n height: '100%'\n }\n}));\n\nconst Main = props => {\n const { children } = props;\n\n const classes = useStyles();\n const theme = useTheme();\n const isDesktop = useMediaQuery(theme.breakpoints.up('lg'), {\n defaultMatches: true\n });\n\n const [openSidebar, setOpenSidebar] = useState(false);\n\n const handleSidebarOpen = () => {\n setOpenSidebar(true);\n };\n\n const handleSidebarClose = () => {\n setOpenSidebar(false);\n };\n\n const shouldOpenSidebar = isDesktop ? true : openSidebar;\n\n return (\n \n \n \n
\n {children}\n
\n
\n
\n );\n};\n\nMain.propTypes = {\n children: PropTypes.node\n};\n\nexport default Main;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { AppBar, Toolbar } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n boxShadow: 'none'\n }\n}));\n\nconst Topbar = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nTopbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Topbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\n\nimport { Topbar } from './components';\n\nconst useStyles = makeStyles(() => ({\n root: {\n paddingTop: 64,\n height: '100%'\n },\n content: {\n height: '100%'\n }\n}));\n\nconst Minimal = props => {\n const { children } = props;\n\n const classes = useStyles();\n\n return (\n
\n \n
{children}
\n
\n );\n};\n\nMinimal.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default Minimal;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n },\n iframe: {\n width: '100%',\n minHeight: 640,\n border: 0\n }\n}));\n\nconst Icons = () => {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n};\n\nexport default Icons;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n },\n content: {\n paddingTop: 150,\n textAlign: 'center'\n },\n image: {\n marginTop: 50,\n display: 'inline-block',\n maxWidth: '100%',\n width: 560\n }\n}));\n\nconst NotFound = () => {\n const classes = useStyles();\n\n return (\n
\n \n \n
\n \n 404: The page you are looking for isn’t here\n \n \n You either tried some shady route or you came here by mistake.\n Whichever it is, try using the navigation\n \n \n
\n \n \n
\n );\n};\n\nexport default NotFound;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n Card,\n CardHeader,\n CardContent,\n CardActions,\n Grid,\n Divider,\n FormControlLabel,\n Checkbox,\n Typography,\n Button\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {},\n item: {\n display: 'flex',\n flexDirection: 'column'\n }\n}));\n\nconst Notifications = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n
\n \n \n \n \n \n \n Notifications\n \n \n }\n label=\"Email\"\n />\n \n }\n label=\"Push Notifications\"\n />\n }\n label=\"Text Messages\"\n />\n \n }\n label=\"Phone calls\"\n />\n \n \n \n Messages\n \n \n }\n label=\"Email\"\n />\n }\n label=\"Push Notifications\"\n />\n \n }\n label=\"Phone calls\"\n />\n \n \n \n \n \n \n Save\n \n \n \n \n );\n};\n\nNotifications.propTypes = {\n className: PropTypes.string\n};\n\nexport default Notifications;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n Card,\n CardHeader,\n CardContent,\n CardActions,\n Divider,\n Button,\n TextField\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {}\n}));\n\nconst Password = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n const [values, setValues] = useState({\n password: '',\n confirm: ''\n });\n\n const handleChange = event => {\n setValues({\n ...values,\n [event.target.name]: event.target.value\n });\n };\n\n return (\n \n
\n \n \n \n \n \n \n \n \n \n Update\n \n \n \n \n );\n};\n\nPassword.propTypes = {\n className: PropTypes.string\n};\n\nexport default Password;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid } from '@material-ui/core';\n\nimport { Notifications, Password } from './components';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n }\n}));\n\nconst Settings = () => {\n const classes = useStyles();\n\n return (\n
\n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport default Settings;\n","import React, { Fragment } from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid, Typography as MuiTypography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n }\n}));\n\nconst variants = {\n h1: 'Nisi euismod ante senectus consequat phasellus ut',\n h2: 'Nisi euismod ante senectus consequat phasellus ut',\n h3: 'Nisi euismod ante senectus consequat phasellus ut',\n h4: 'Nisi euismod ante senectus consequat phasellus ut',\n h5: 'Nisi euismod ante senectus consequat phasellus ut',\n h6: 'Nisi euismod ante senectus consequat phasellus ut',\n subtitle1: 'Leo varius justo aptent arcu urna felis pede nisl',\n subtitle2: 'Leo varius justo aptent arcu urna felis pede nisl',\n body1:\n 'Justo proin curabitur dictumst semper auctor, consequat tempor, nostra aenean neque turpis nunc. Leo. Sapien aliquet facilisi turpis, elit facilisi praesent porta metus leo. Dignissim amet dis nec ac integer inceptos erat dis Turpis sodales ad torquent. Dolor, erat convallis.Laoreet velit a fames commodo tristique hendrerit sociosqu rhoncus vel sapien penatibus facilisis faucibus ad. Mus purus vehicula imperdiet tempor lectus, feugiat Sapien erat viverra netus potenti mattis purus turpis. Interdum curabitur potenti tristique. Porta velit dignissim tristique ultrices primis.',\n body2:\n 'Justo proin curabitur dictumst semper auctor, consequat tempor, nostra aenean neque turpis nunc. Leo. Sapien aliquet facilisi turpis, elit facilisi praesent porta metus leo. Dignissim amet dis nec ac integer inceptos erat dis Turpis sodales ad torquent. Dolor, erat convallis.',\n caption: 'Accumsan leo pretium conubia ullamcorper.',\n overline: 'Accumsan leo pretium conubia ullamcorper.',\n button: 'Vivamus ultrices rutrum fames dictumst'\n};\n\nconst Typography = () => {\n const classes = useStyles();\n\n return (\n
\n \n {Object.keys(variants).map((key, i) => (\n \n \n {key}\n \n \n {variants[key]}\n \n \n ))}\n \n
\n );\n};\n\nexport default Typography;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useDispatch, useSelector } from 'react-redux'\nimport Card from '@material-ui/core/Card';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n maxWidth: 645,\n },\n media: {\n height: 277,\n },\n});\n\nexport default function StepDone() {\n const classes = useStyles();\n const socialDomain = useSelector(state => state['inputs']['socialDomain'])\n\n const handleLearnMore = () => {\n services.openURL(\"https://telar.dev\")\n }\n\n return (\n \n \n \n \n \n Done\n \n \n Wait until the build and deployment is done. To start login into admin page {`${socialDomain}/admin/login`}. Wait until you seen welcome page.\n Now your Telar social is ready to use!😍🏆\n - Signup page: {`${socialDomain}/auth/signup`}\n - Login page: {`${socialDomain}/auth/login`}\n \n \n \n \n \n \n \n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport { SelectSetup } from '../../components'\nimport { OFCC } from '../../components'\nimport Container from '@material-ui/core/Container';\nimport StepDone from '../../components/StepDone';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n '& .MuiTextField-root': {\n margin: theme.spacing(1),\n width: 200,\n },\n },\n}));\n\nexport default function SetupComponent() {\n const setupState = useSelector(state => state['setupState'])\n const classes = useStyles();\n const [value, setValue] = React.useState('Controlled');\n\n const handleChange = event => {\n setValue(event.target.value);\n };\n\n return (\n <>\n
\n \n { setupState === 'init' ? \n : (setupState === 'progress' ? : )}\n \n \n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport actions from '../../store/actions'\nimport TextField from '@material-ui/core/TextField';\nimport services from '../../services';\n\nconst useStyles = makeStyles(theme => ({\n formControl: {\n margin: theme.spacing(3),\n },\n cardActions: {\n justifyContent: \"flex-end\"\n }\n}));\n\nexport default function OFSetting() {\n const dispatch = useDispatch()\n const classes = useStyles();\n const projectDirectory = useSelector(state => state['inputs']['projectDirectory'])\n\n const handleInputChange = (name) => (event) => {\n const {value} = event.currentTarget\n dispatch(actions.setInput(name, value))\n }\n\n const handleRemoveSocialFromCluster = event => {\n services.dispatchServer(actions.removeSocialFromCluster(projectDirectory))\n };\n\n\n return (\n \n \n \n \n Settings\n \n \n
\n\n \n Enter your project directory that includes `setup.yml` file\n \n \n
\n \n \n \n
\n );\n}","import React from 'react';\nimport Container from '@material-ui/core/Container';\nimport OFSetting from '../../components/OFSetting';\n\n\nexport default function SettingsComponent() {\n\n\n return (\n <>\n
\n \n \n \n \n );\n}","import React from 'react';\nimport { Switch, Redirect } from 'react-router-dom';\n\nimport { RouteWithLayout } from './components';\nimport { Main as MainLayout, Minimal as MinimalLayout } from './layouts';\nimport {\n NotFound as NotFoundView\n} from './views';\n\nimport SetupComponent from './pages/Setup';\nimport SettingsComponent from './pages/Settings';\n\nconst Routes = () => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default Routes;\n","const round = number => Math.round(number * 100) / 100\nconst monitorReducerEnhancer = createStore => (\n reducer,\n initialState,\n enhancer\n) => {\n const monitoredReducer = (state, action) => {\n const start = performance.now()\n const newState = reducer(state, action)\n const end = performance.now()\n const diff = round(end - start)\n console.log('reducer process time:', diff)\n return newState\n }\n return createStore(monitoredReducer, initialState, enhancer)\n}\nexport default monitorReducerEnhancer","const logger = store => next => action => {\n console.group(action.type)\n console.info('dispatching', action)\n let result = next(action)\n console.log('next state', store.getState())\n console.groupEnd()\n return result\n }\n export default logger","import actionTypes from './actionTypes'\n\nconst initialState = {\n inputs: {},\n infoDialog: {message: \"\", url: \"\", open: false}\n}\n\n function appReducer(state = initialState, action) {\n const {payload} = action\n switch (action.type) {\n case actionTypes.SET_SETUP_STATE:\n return {...state, setupState: payload.state}\n case actionTypes.SET_SETUP_STEP:\n return {...state, setupStep: payload.step}\n case actionTypes.SET_STEP_CONDITION:\n return {...state, stepCondition: {[payload.step]: payload.valid}}\n case actionTypes.SET_INPUT:\n return {...state, inputs: {...state.inputs, [payload.key]: payload.value}}\n case actionTypes.SET_DEPLOY_OPEN:\n return {...state, deployOpen: payload.open}\n case actionTypes.SET_SETUP_DEFAULT_VALUES:\n return {...state, inputs: {...state.inputs, ...payload.clientInputs}}\n case actionTypes.POP_MESSAGE:\n return {...state, popMessage: payload.message}\n case actionTypes.SHOW_INFO_DIALOG:\n return {...state, infoDialog: {message: payload.message, url: payload.url, open: true }}\n case actionTypes.HIDE_INFO_DIALOG:\n return {...state, infoDialog: {message: \"\", url: \"\", open: false }}\n default:\n return state\n }\n }\n\nexport default appReducer","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport actions from '../../store/actions';\nimport services from '../../services';\n\nexport default function DialogInfo() {\n const dispatch = useDispatch()\n const open = useSelector(state => state.infoDialog.open)\n const message = useSelector(state => state.infoDialog.message)\n const url = useSelector(state => state.infoDialog.url)\n\n const handleClose = () => {\n dispatch(actions.hideInfoDialog())\n };\n\n const handleOpenURL = (url) => {\n services.openURL(url)\n dispatch(actions.hideInfoDialog())\n\n };\n\n return (\n \n \n {\"Info\"}\n \n \n {message && `${message[0].toUpperCase()}${message.slice(1)}`}\n \n \n \n \n {(url && url !== \"\") && }\n \n \n );\n}","\nimport React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Router } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport { ThemeProvider } from '@material-ui/styles';\nimport Button from '@material-ui/core/Button';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport theme from './theme';\nimport './assets/scss/index.scss';\nimport './App.css';\nimport Routes from './Routes';\nimport configureAppStore from './store'\nimport { Provider } from 'react-redux'\nimport actions from './store/actions';\nimport DialogInfo from './components/DialogInfo'\nconst browserHistory = createBrowserHistory();\n\n\n\nconst store = configureAppStore({\n inputs: {\n appID: 'my-social-network',\n ofUsername: 'admin',\n ofGateway: 'openfaas.example.com',\n socialDomain: 'https://mysocial.com',\n secretName: 'secrets',\n namespace: 'openfaas-fn',\n projectDirectory: \"\",\n bucketName: \"\",\n mongoDBHost: \"\",\n mongoDBPassword: \"\",\n mongoDBName: \"test\",\n siteKeyRecaptcha: \"\",\n recaptchaKey: \"\",\n githubOAuthSecret: \"\",\n githubOAuthClientID: \"\",\n adminUsername: \"\",\n adminPassword: \"\",\n gmail: \"\",\n gmailPassword: \"\",\n gateway: \"\",\n payloadSecret: \"\",\n websocketURL: \"\",\n installGit: false,\n installKubeseal: false,\n cloneTelarWeb: false,\n cloneTsServerless: false,\n cloneTsUi: false,\n openFaaSApp: false,\n openFaaSAppHasRepos: false,\n githubSSHKey: false,\n firebaseServiceAccount: false,\n firebaseStorage: false,\n mongoDBConnection: false,\n websocketConnection: false,\n loadingCheckIngredients: false,\n loadingFirebaseStorage: false,\n loadingMongoDB: false,\n loadingWebsocket: false,\n loadingStackYaml: false,\n loadingCreateSecret: false,\n loadingPublicPrivateKey: false,\n deployTelarWeb: false,\n deployTsServerless: false,\n deploySocialUi: false,\n deployOpen: false,\n }, setupState: 'init', setupStep: 0, stepCondition: {}, infoDialog: {message: \"\", url: \"\", open: false}\n})\n\nlet ws;\n\nif (window.WebSocket === undefined) {\n alert(\"Your browser does not support WebSockets\");\n \n} else {\n ws = initWS();\n}\n\nfunction initWS() {\n let socket = new WebSocket(\"ws://localhost:31115/ws\")\n \n socket.onopen = function() {\n store.dispatch(actions.popMessage(\"Ready!\"))\n };\n socket.onmessage = function (e) {\n const action = JSON.parse(e.data)\n console.log('action', action)\n console.log('e.data', e.data)\n store.dispatch(action)\n }\n socket.onclose = function () {\n store.dispatch(actions.popMessage(\"Socket closed\"))\n }\n\n return socket;\n}\n\nfunction AppSnackbar() {\n const dispatch = useDispatch()\n\n const popMessage = useSelector(state => state['popMessage'])\n\n const handleClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n dispatch(actions.popMessage(\"\"))\n };\n\n return (\n \n \n \n \n \n }\n />\n )\n}\n\n\nfunction App() {\n\n // Retrieving data from an AJAX request.\n // Remember that the function passed to useEffect will run,\n // after render is fixed on the screen.\n // See https://reactjs.org/docs/hooks-reference.html#useeffect\n useEffect(() => {\n \n });\n\n \n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'\nimport monitorReducersEnhancer from './enhancers/monitorReducer'\nimport loggerMiddleware from './middleware/logger'\nimport rootReducer from './reducers'\nexport default function configureAppStore(preloadedState) {\n const store = configureStore({\n reducer: rootReducer,\n middleware: [loggerMiddleware, ...getDefaultMiddleware()],\n preloadedState,\n enhancers: [monitorReducersEnhancer]\n })\n if (process.env.NODE_ENV !== 'production' && module.hot) {\n module.hot.accept('./reducers', () => store.replaceReducer(rootReducer))\n }\n return store\n}","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(, document.getElementById(\"root\"));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/ui/build/static/js/main.79acc3ac.chunk.js.map b/ui/build/static/js/main.79acc3ac.chunk.js.map deleted file mode 100644 index 2cb011e..0000000 --- a/ui/build/static/js/main.79acc3ac.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["theme/palette.js","theme/typography.js","theme/overrides/MuiIconButton.js","theme/overrides/index.js","theme/overrides/MuiButton.js","theme/overrides/MuiPaper.js","theme/overrides/MuiTableCell.js","theme/overrides/MuiTableHead.js","theme/overrides/MuiTypography.js","theme/overrides/MuiListItem.js","theme/index.js","components/RouteWithLayout/RouteWithLayout.js","store/actionTypes.js","store/actions.js","components/HelpDialog/index.jsx","services.js","components/InitialStep/index.jsx","components/OFCInfo/index.jsx","components/CheckIngredients/index.jsx","components/FirebaseStorage/index.jsx","components/UserManagement/index.jsx","components/Websocket/index.jsx","components/Database/index.jsx","components/GoogleReCaptcha/index.jsx","components/OAuth/index.jsx","components/DepolyDialog/index.jsx","components/OFCC/index.js","components/SelectSetup/index.js","layouts/Main/components/Footer/Footer.js","layouts/Main/components/Sidebar/components/Profile/Profile.js","layouts/Main/components/Sidebar/components/SidebarNav/SidebarNav.js","layouts/Main/components/Sidebar/Sidebar.js","layouts/Main/components/Sidebar/components/UpgradePlan/UpgradePlan.js","layouts/Main/components/Topbar/Topbar.js","layouts/Main/Main.js","layouts/Minimal/components/Topbar/Topbar.js","layouts/Minimal/Minimal.js","views/Icons/Icons.js","views/NotFound/NotFound.js","views/Settings/components/Notifications/Notifications.js","views/Settings/components/Password/Password.js","views/Settings/Settings.js","views/Typography/Typography.js","components/StepDone/index.js","pages/Setup/index.jsx","components/OFSetting/index.js","pages/Settings/index.jsx","Routes.js","store/enhancers/monitorReducer.js","store/middleware/logger.js","store/reducers.js","components/DialogInfo/index.jsx","App.js","store/index.js","serviceWorker.js","index.js"],"names":["white","black","primary","contrastText","dark","colors","orange","main","light","secondary","blue","success","green","info","warning","error","red","text","blueGrey","link","background","default","paper","icon","divider","grey","h1","color","palette","fontWeight","fontSize","letterSpacing","lineHeight","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","textTransform","root","backgroundColor","MuiButton","contained","boxShadow","MuiIconButton","MuiPaper","elevation1","MuiTableCell","typography","borderBottom","MuiTableHead","MuiTypography","gutterBottom","marginBottom","MuiListItem","container","listStyleType","paddingTop","theme","createMuiTheme","overrides","zIndex","appBar","drawer","RouteWithLayout","props","Layout","layout","Component","component","rest","render","matchProps","actionTypes","SET_SETUP_STATE","SET_SETUP_STEP","SET_INPUT","SET_DEPLOY_OPEN","SET_SETUP_DEFAULT_VALUES","POP_MESSAGE","SET_STEP_CONDITION","SHOW_INFO_DIALOG","HIDE_INFO_DIALOG","REMOVE_SOCIAL_FROM_CLUSTER","START_STEP","CHECK_STEP","state","type","payload","key","value","message","projectDirectory","HelpDialog","React","useState","scroll","open","onClose","descriptionElementRef","useRef","useEffect","descriptionElement","current","focus","Dialog","aria-labelledby","aria-describedby","DialogTitle","id","title","DialogContent","dividers","DialogContentText","ref","tabIndex","children","DialogActions","Button","onClick","action","axios","post","then","resp","console","log","data","catch","err","url","useStyles","makeStyles","minWidth","bullet","display","margin","transform","pos","address","height","InitialStep","name","classes","dispatch","className","useDispatch","useSelector","helpOpen","setHelpOpen","Card","variant","CardContent","services","TextField","fullWidth","required","label","onChange","event","currentTarget","actions","CardActions","OFCInfo","appID","ofUsername","ofGateway","socialDomain","secretName","namespace","kubeconfigPath","handleInputChange","GreenCheckbox","withStyles","checked","Checkbox","progress","CheckIngredients","loadingCheckIngredients","cloneTelarWeb","cloneTsServerless","cloneTsUi","checkBox","CircularProgress","size","FormControl","formControl","FormLabel","FormGroup","FormControlLabel","control","FirebaseStorage","bucketName","firebaseStorage","loadingFirebaseStorage","gilad","jason","antoine","helpType","UserManagement","adminUsername","adminPassword","gmail","gmailPassword","handleChange","Websocket","gateway","payloadSecret","websocketURL","websocketConnection","loadingWebsocket","InputProps","readonly","Database","mongoDBHost","mongoDBPassword","mongoDBName","mongoDBConnection","loadingMongoDB","GoogleReCaptcha","siteKeyRecaptcha","recaptchaKey","OAuth","githubOAuthSecret","githubOAuthClientID","DeployDialog","loadingStackYaml","loadingCreateSecret","deployTelarWeb","deployTsServerless","deploySocialUi","disableBackdropClick","disableEscapeKeyDown","width","marginTop","spacing","marginRight","actionsContainer","resetContainer","padding","validInputs","inputs","input","trim","validCheckbox","OFCC","setupStep","deployOpen","stepCondition","steps","handleNext","Stepper","activeStep","orientation","map","index","Step","StepLabel","StepContent","step","getStepContent","disabled","length","cardActions","justifyContent","SelectSetup","setValue","CardActionArea","CardMedia","alt","image","href","target","RadioGroup","aria-label","Radio","preventDefault","Footer","clsx","Link","flexDirection","alignItems","minHeight","avatar","withRouter","pathname","history","location","matchFunction","matchPath","path","strict","params","user","toLowerCase","bio","Avatar","RouterLink","src","to","item","paddingBottom","fontWeightMedium","active","CustomRouterLink","forwardRef","style","flexGrow","SidebarNav","pages","List","page","ListItem","disableGutters","activeClassName","media","textAlign","content","breakpoints","up","nav","Drawer","anchor","signOutButton","marginLeft","Topbar","onSidebarOpen","notifications","AppBar","Toolbar","Hidden","mdDown","IconButton","Badge","badgeContent","lgUp","shiftContent","paddingLeft","Main","useTheme","isDesktop","useMediaQuery","defaultMatches","openSidebar","setOpenSidebar","shouldOpenSidebar","position","Minimal","iframe","border","maxWidth","NotFound","Grid","justify","lg","xs","StepDone","SetupComponent","setupState","Container","OFSetting","SettingsComponent","Routes","exact","from","MainLayout","NotFoundView","MinimalLayout","monitorReducerEnhancer","createStore","reducer","initialState","enhancer","number","start","performance","now","newState","end","diff","Math","round","logger","store","next","group","result","getState","groupEnd","infoDialog","appReducer","valid","clientInputs","popMessage","DialogInfo","handleClose","toUpperCase","slice","handleOpenURL","autoFocus","preloadedState","browserHistory","createBrowserHistory","installGit","installKubeseal","openFaaSApp","openFaaSAppHasRepos","githubSSHKey","firebaseServiceAccount","loadingPublicPrivateKey","configureStore","rootReducer","middleware","loggerMiddleware","getDefaultMiddleware","enhancers","monitorReducersEnhancer","AppSnackbar","reason","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","Fragment","undefined","window","WebSocket","alert","socket","onopen","onmessage","e","JSON","parse","onclose","initWS","App","ThemeProvider","Boolean","hostname","match","ReactDOM","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.79acc3ac.chunk.js","sourcesContent":["import { colors } from '@material-ui/core';\n\nconst white = '#FFFFFF';\nconst black = '#000000';\n\nexport default {\n black,\n white,\n primary: {\n contrastText: white,\n dark: colors.orange[900],\n main: colors.orange[500],\n light: colors.orange[100]\n },\n secondary: {\n contrastText: white,\n dark: colors.blue[900],\n main: colors.blue['A400'],\n light: colors.blue['A400']\n },\n success: {\n contrastText: white,\n dark: colors.green[900],\n main: colors.green[600],\n light: colors.green[400]\n },\n info: {\n contrastText: white,\n dark: colors.blue[900],\n main: colors.blue[600],\n light: colors.blue[400]\n },\n warning: {\n contrastText: white,\n dark: colors.orange[900],\n main: colors.orange[600],\n light: colors.orange[400]\n },\n error: {\n contrastText: white,\n dark: colors.red[900],\n main: colors.red[600],\n light: colors.red[400]\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600],\n link: colors.blue[600]\n },\n background: {\n default: '#F4F6F8',\n paper: white\n },\n icon: colors.blueGrey[600],\n divider: colors.grey[200]\n};\n","import palette from './palette';\n\nexport default {\n h1: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '35px',\n letterSpacing: '-0.24px',\n lineHeight: '40px'\n },\n h2: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '29px',\n letterSpacing: '-0.24px',\n lineHeight: '32px'\n },\n h3: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '24px',\n letterSpacing: '-0.06px',\n lineHeight: '28px'\n },\n h4: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '20px',\n letterSpacing: '-0.06px',\n lineHeight: '24px'\n },\n h5: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '16px',\n letterSpacing: '-0.05px',\n lineHeight: '20px'\n },\n h6: {\n color: palette.text.primary,\n fontWeight: 500,\n fontSize: '14px',\n letterSpacing: '-0.05px',\n lineHeight: '20px'\n },\n subtitle1: {\n color: palette.text.primary,\n fontSize: '16px',\n letterSpacing: '-0.05px',\n lineHeight: '25px'\n },\n subtitle2: {\n color: palette.text.secondary,\n fontWeight: 400,\n fontSize: '14px',\n letterSpacing: '-0.05px',\n lineHeight: '21px'\n },\n body1: {\n color: palette.text.primary,\n fontSize: '14px',\n letterSpacing: '-0.05px',\n lineHeight: '21px'\n },\n body2: {\n color: palette.text.secondary,\n fontSize: '12px',\n letterSpacing: '-0.04px',\n lineHeight: '18px'\n },\n button: {\n color: palette.text.primary,\n fontSize: '14px'\n },\n caption: {\n color: palette.text.secondary,\n fontSize: '11px',\n letterSpacing: '0.33px',\n lineHeight: '13px'\n },\n overline: {\n color: palette.text.secondary,\n fontSize: '11px',\n fontWeight: 500,\n letterSpacing: '0.33px',\n lineHeight: '13px',\n textTransform: 'uppercase'\n }\n};\n","import palette from '../palette';\n\nexport default {\n root: {\n color: palette.icon,\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n }\n }\n};\n","import MuiButton from './MuiButton';\nimport MuiIconButton from './MuiIconButton';\nimport MuiPaper from './MuiPaper';\nimport MuiTableCell from './MuiTableCell';\nimport MuiTableHead from './MuiTableHead';\nimport MuiTypography from './MuiTypography';\nimport MuiListItem from './MuiListItem';\n\nexport default {\n MuiButton,\n MuiIconButton,\n MuiPaper,\n MuiTableCell,\n MuiTableHead,\n MuiTypography,\n MuiListItem\n};\n","export default {\n contained: {\n boxShadow:\n '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.20)',\n backgroundColor: '#FFFFFF'\n }\n};\n","export default {\n elevation1: {\n boxShadow: '0 0 0 1px rgba(63,63,68,0.05), 0 1px 3px 0 rgba(63,63,68,0.15)'\n }\n};\n","import palette from '../palette';\nimport typography from '../typography';\n\nexport default {\n root: {\n ...typography.body1,\n borderBottom: `1px solid ${palette.divider}`\n }\n};\n","import { colors } from '@material-ui/core';\n\nexport default {\n root: {\n backgroundColor: colors.grey[50]\n }\n};\n","export default {\n gutterBottom: {\n marginBottom: 8\n }\n};\n","\n\nexport default {\n container: {\n listStyleType: 'none',\n paddingTop: 5\n\n }\n};\n","import { createMuiTheme } from '@material-ui/core';\n\nimport palette from './palette';\nimport typography from './typography';\nimport overrides from './overrides';\n\nconst theme = createMuiTheme({\n palette,\n typography,\n overrides,\n zIndex: {\n appBar: 1200,\n drawer: 1100\n }\n});\n\nexport default theme;\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nconst RouteWithLayout = props => {\n const { layout: Layout, component: Component, ...rest } = props;\n\n return (\n (\n \n \n \n )}\n />\n );\n};\n\nRouteWithLayout.propTypes = {\n component: PropTypes.any.isRequired,\n layout: PropTypes.any.isRequired,\n path: PropTypes.string\n};\n\nexport default RouteWithLayout;\n","const actionTypes = {\n\n // Client Actions\n SET_SETUP_STATE: 'SET_SETUP_STATE',\n SET_SETUP_STEP: 'SET_SETUP_STEP',\n SET_INPUT: 'SET_INPUT',\n SET_DEPLOY_OPEN: 'SET_DEPLOY_OPEN',\n SET_SETUP_DEFAULT_VALUES: 'SET_SETUP_DEFAULT_VALUES',\n POP_MESSAGE: 'POP_MESSAGE',\n SET_STEP_CONDITION: 'SET_STEP_CONDITION',\n SHOW_INFO_DIALOG: 'SHOW_INFO_DIALOG',\n HIDE_INFO_DIALOG: 'HIDE_INFO_DIALOG',\n \n // Server HTTP Actions\n REMOVE_SOCIAL_FROM_CLUSTER: \"REMOVE_SOCIAL_FROM_CLUSTER\",\n START_STEP : \"START_STEP\",\n CHECK_STEP : \"CHECK_STEP\",\n}\n\nexport default actionTypes","import actionTypes from './actionTypes'\n\n\n// ******* Client Actions ******* //\nconst setSetupState = (state) => {\n return {\n type: actionTypes.SET_SETUP_STATE,\n payload: {state}\n }\n}\n\nconst setSetupStep = (step) => {\n return {\n type: actionTypes.SET_SETUP_STEP,\n payload: {step}\n }\n}\n\nconst setStepCondition = (step, valid) => {\n return {\n type: actionTypes.SET_STEP_CONDITION,\n payload: {step, valid}\n }\n}\n\nconst setInput = (key,value) => {\n return {\n type: actionTypes.SET_INPUT,\n payload: {key, value}\n }\n}\n\nconst setDeployOpen = (open) => {\n return {\n type: actionTypes.SET_DEPLOY_OPEN,\n payload: {open}\n }\n}\n\nconst setSetupDefaultValues = (payload) => {\n return {\n type: actionTypes.SET_SETUP_DEFAULT_VALUES,\n payload\n }\n}\n\nconst popMessage = (message) => {\n return {\n type: actionTypes.POP_MESSAGE,\n payload: {message}\n }\n}\n\nconst showInfoDialog = (message, url) => {\n return {\n type: actionTypes.SHOW_INFO_DIALOG,\n payload: {message, url}\n }\n}\n\nconst hideInfoDialog = () => {\n return {\n type: actionTypes.HIDE_INFO_DIALOG,\n payload: {}\n }\n}\n\n\n// ******* Server HTTP Actions ******* //\nconst startStep = () => {\n return {\n type: actionTypes.START_STEP,\n payload: {}\n }\n}\n\nconst removeSocialFromCluster = (projectDirectory) => {\n return {\n type: actionTypes.REMOVE_SOCIAL_FROM_CLUSTER,\n payload: {projectDirectory}\n }\n}\n\nconst checkStep = (payload) => {\n return {\n type: actionTypes.CHECK_STEP,\n payload\n }\n}\n\nexport default {\n setSetupState,\n setSetupStep,\n setStepCondition,\n setInput,\n setDeployOpen,\n setSetupDefaultValues,\n popMessage,\n showInfoDialog,\n hideInfoDialog,\n startStep,\n removeSocialFromCluster,\n checkStep\n}","import React from 'react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\n\nexport default function HelpDialog(props) {\n\n const [scroll, setScroll] = React.useState('paper');\n const {open, onClose} = props\n const descriptionElementRef = React.useRef(null);\n React.useEffect(() => {\n if (open) {\n const { current: descriptionElement } = descriptionElementRef;\n if (descriptionElement !== null) {\n descriptionElement.focus();\n }\n }\n }, [open]);\n\n return (\n
\n \n {props.title}\n \n \n {props.text}\n \n {props.children}\n \n \n \n \n \n
\n );\n}","import axios from \"axios\";\nconst dispatchServer = (action) => {\n\n axios\n .post(\"/dispatch\", action) // GET request to URL /hello\n .then(resp => console.log(resp.data)) // save response to state\n .catch(err => console.log(err)); // catch error\n}\n\nconst openURL = (url) => {\n\n axios\n .post(\"/open-url\", {url}) // GET request to URL /hello\n .then(resp => console.log(resp.data)) // save response to state\n .catch(err => console.log(err)); // catch error\n}\n\n\nexport default {\n dispatchServer,\n openURL\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function InitialStep() {\n const classes = useStyles();\n const bull = ;\n const dispatch = useDispatch()\n const projectDirectory = useSelector(state => state['inputs']['projectDirectory'])\n const handleInputChange = (name) => (event) => {\n const {value} = event.currentTarget\n dispatch(actions.setInput(name, value))\n }\n\n\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/1.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code. \n \n
\n
\n \n \n
\n )\n\n return (\n \n \n \n
\n
\n \n Enter your project directory\n \n \n
\n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function OFCInfo() {\n const classes = useStyles();\n const bull = ;\n const dispatch = useDispatch()\n const appID = useSelector(state => state['inputs']['appID'])\n const ofUsername = useSelector(state => state['inputs']['ofUsername'])\n const ofGateway = useSelector(state => state['inputs']['ofGateway'])\n const socialDomain = useSelector(state => state['inputs']['socialDomain'])\n const secretName = useSelector(state => state['inputs']['secretName'])\n const namespace = useSelector(state => state['inputs']['namespace'])\n const kubeconfigPath = useSelector(state => state['inputs']['kubeconfigPath'])\n const handleInputChange = (name) => (event) => {\n const {value} = event.currentTarget\n dispatch(actions.setInput(name, value))\n }\n\n\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/1.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Domain that can access to OpenFaaS gateway and a directory path where you want to keep your project source code. \n \n
\n
\n \n \n
\n )\n\n return (\n \n \n \n
\n
\n \n Enter social network identifier. Default is `my-social-network`.\n \n \n
\n
\n \n Enter OpenFaaS username. Default is `admin`.\n \n \n
\n
\n \n Enter OpenFaaS gateway e.g. `domain.com` or `localhost.com:31112`\n \n \n
\n
\n \n Enter your social network URL e.g. https://social.com or https://social.com/function\n \n \n
\n
\n \n Enter OpenFaaS funtion namespace. Default is `openfaas-fn`\n \n \n
\n
\n \n Enter secret name that will be created on your K8S cluster. Default is `secrets`\n \n \n
\n
\n \n In the case you want to use KUBECONFIG path instead of default context, enter the kube config path. If not let the textbox empty\n \n \n
\n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function CheckIngredients() {\n const dispatch = useDispatch()\n\n\n const loadingCheckIngredients = useSelector(state => state['inputs']['loadingCheckIngredients'])\n\n const cloneTelarWeb = useSelector(state => state['inputs']['cloneTelarWeb'])\n const cloneTsServerless = useSelector(state => state['inputs']['cloneTsServerless'])\n const cloneTsUi = useSelector(state => state['inputs']['cloneTsUi'])\n\n const classes = useStyles();\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/2.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n\n const helpContent = () => (\n \n \n \n This step check the ingredients!\n \n
\n
\n \n \n
\n )\n\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n return (\n \n \n \n
\n
\n \n Prepare ingredients\n \n Clean on next to start preparation\n \n \n\n {\n loadingCheckIngredients && (\n <>\n Clone telar-web repository.}\n />\n Clone ts-serverless repository.}\n />\n Clone ts-ui repository.}\n />\n \n )\n }\n \n \n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport Button from '@material-ui/core/Button';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function FirebaseStorage() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const bucketName = useSelector(state => state['inputs']['bucketName'])\n const firebaseServiceAccount = useSelector(state => state['inputs']['firebaseServiceAccount'])\n const firebaseStorage = useSelector(state => state['inputs']['firebaseStorage'])\n\n const loadingFirebaseStorage = useSelector(state => state['inputs']['loadingFirebaseStorage'])\n\n const bull = ;\n const [state, setState] = React.useState({\n gilad: true,\n jason: false,\n antoine: false,\n });\n\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n // 0 : instruction\n // 1 : warning\n const [helpType, setHelpType] = React.useState(0);\n\n const handleHelp = (helpType) => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n\n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code.\n \n
\n
\n \n \n
\n )\n\n const warningContent = () => (\n \n \n \n ⚠️ We strictly recommend you to use your own Firebase Storage. \n Public Firebase Storage only use for testing, because everybody can see your data and also there is no garanty for data persistance. \n Public Firebase Storage is a free and shared Firebase Storage account! \n \n
\n
\n \n \n
\n )\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name, event.currentTarget.value))\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n return (\n \n \n \n
\n
\n \n Enter bucket name and download service account file in project directory\n \n
\n \n
\n
\n\n { loadingFirebaseStorage && (\n \n \n\n \n \n\n \n\n \n )}\n
\n \n \n \n {helpType === 0 ? helpContent() : warningContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function UserManagement() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const adminUsername = useSelector(state => state['inputs']['adminUsername'])\n const adminPassword = useSelector(state => state['inputs']['adminPassword'])\n const gmail = useSelector(state => state['inputs']['gmail'])\n const gmailPassword = useSelector(state => state['inputs']['gmailPassword'])\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/7.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n const bull = ;\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n\n\n return (\n \n \n \n\n
\n
\n \n Enter Admin user information.\n \n \n
\n
\n \n
\n \n \n Enter your Gmail information.\n \n \n It will be used for sending confirmation and verification email to users.\n
\n
\n
\n
\n \n
\n
\n \n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function Websocket() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const gateway = useSelector(state => state['inputs']['gateway'])\n const payloadSecret = useSelector(state => state['inputs']['payloadSecret'])\n const websocketURL = useSelector(state => state['inputs']['websocketURL'])\n const websocketConnection = useSelector(state => state['inputs']['websocketConnection'])\n\n const loadingWebsocket = useSelector(state => state['inputs']['loadingWebsocket'])\n\n const bull = ;\n const [state, setState] = React.useState({\n gilad: true,\n jason: false,\n antoine: false,\n });\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n\n return (\n \n \n \n
\n
\n \n Enter Websocket server information and telar server gateway\n \n \n \n
\n
\n \n
\n
\n \n
\n
\n \n {loadingWebsocket && (\n\n \n \n \n \n \n )}\n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { green } from '@material-ui/core/colors';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n});\n\nexport default function Database() {\n const classes = useStyles();\n\n const dispatch = useDispatch()\n const mongoDBHost = useSelector(state => state['inputs']['mongoDBHost'])\n const mongoDBPassword = useSelector(state => state['inputs']['mongoDBPassword'])\n const mongoDBName = useSelector(state => state['inputs']['mongoDBName'])\n const mongoDBConnection = useSelector(state => state['inputs']['mongoDBConnection'])\n\n const loadingMongoDB = useSelector(state => state['inputs']['loadingMongoDB'])\n\n const bull = ;\n const [state, setState] = React.useState({\n gilad: true,\n jason: false,\n antoine: false,\n });\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n // 0 : instruction\n // 1 : warning\n const [helpType, setHelpType] = React.useState(0);\n\n const handleHelp = (helpType) => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n\n const warningContent = () => (\n \n \n \n ⚠️ We strictly recommend you to use your own MongoDB. \n Public MongoDB only use for testing, because everybody can see your data and also there is no garanty for data persistance. \n Public MongoDB is a free and shared MongoDB account! \n \n
\n
\n \n \n
\n )\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n return (\n \n \n \n
\n
\n \n Fill the field for MongoDB database\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n {loadingMongoDB && (\n\n \n \n \n\n \n \n )}\n
\n \n \n \n {helpType === 0 ? helpContent() : warningContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function GoogleReCaptcha() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const siteKeyRecaptcha = useSelector(state => state['inputs']['siteKeyRecaptcha'])\n const recaptchaKey = useSelector(state => state['inputs']['recaptchaKey'])\n const bull = ;\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n // 0 : instruction\n // 1 : warning\n const [helpType, setHelpType] = React.useState(0);\n\n const handleHelp = (helpType) => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/5.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n return (\n \n \n \n
\n
\n \n Enter your valid Google reCaptcha site key and secret key\n \n \n
\n
\n \n
\n \n \n \n { helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\nimport { Divider } from '@material-ui/core';\nimport actions from '../../store/actions'\nimport HelpDialog from '../HelpDialog';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n address: {\n height: '100%'\n }\n});\n\nexport default function OAuth() {\n const classes = useStyles();\n\n const dispatch = useDispatch()\n const githubOAuthSecret = useSelector(state => state['inputs']['githubOAuthSecret'])\n const githubOAuthClientID = useSelector(state => state['inputs']['githubOAuthClientID'])\n const bull = ;\n const [helpOpen, setHelpOpen] = React.useState(false);\n\n const handleHelp = () => {\n services.openURL(\"https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/6.md\")\n };\n\n const handleCloseHelp = () => {\n setHelpOpen(false);\n };\n \n const helpContent = () => (\n \n \n \n In this step you need to enter your Github account username and a directory path where you want to keep Telar Social project source code. \n \n
\n
\n \n \n
\n )\n const handleChange = name => event => {\n dispatch(actions.setInput(name,event.currentTarget.value))\n };\n\n return (\n \n \n \n Enter your valid Github OAuth client ID and secret key.\n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n {helpContent()}\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green } from '@material-ui/core/colors';\n\nconst GreenCheckbox = withStyles({\n root: {\n color: green[400],\n '&$checked': {\n color: green[600],\n },\n },\n checked: {},\n})(props => );\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n },\n bullet: {\n display: 'inline-block',\n margin: '0 2px',\n transform: 'scale(0.8)',\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n progress: {\n margin: '10px'\n }\n });\n \nexport default function DeployDialog(props) {\n const classes = useStyles();\n const {open, onClose} = props\n\n const loadingStackYaml = useSelector(state => state['inputs']['loadingStackYaml'])\n const loadingCreateSecret = useSelector(state => state['inputs']['loadingCreateSecret'])\n const loadingPublicPrivateKey = useSelector(state => state['inputs']['loadingPublicPrivateKey'])\n const deployTelarWeb = useSelector(state => state['inputs']['deployTelarWeb'])\n const deployTsServerless = useSelector(state => state['inputs']['deployTsServerless'])\n const deploySocialUi = useSelector(state => state['inputs']['deploySocialUi'])\n\n const handleClose = () => {\n onClose()\n };\n const checkBox = (checked) => {\n if (checked) {\n return \n }\n return \n }\n\n return (\n \n {\"Deploying\"}\n \n \n Deploying the project to OpenFaaS\n \n \n \n\n\n \n\n \n\n \n\n \n\n \n \n \n \n \n \n \n \n \n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport StepContent from '@material-ui/core/StepContent';\nimport Button from '@material-ui/core/Button';\nimport InitialStep from '../InitialStep';\nimport OFCInfo from '../OFCInfo';\nimport CheckIngredients from '../CheckIngredients';\nimport FirebaseStorage from '../FirebaseStorage';\nimport UserManagement from '../UserManagement';\nimport WebSocket from '../Websocket';\nimport Database from '../Database';\nimport GoogleReCaptcha from '../GoogleReCaptcha';\nimport OAuth from '../OAuth';\nimport DeployDialog from '../DepolyDialog';\nimport actions from '../../store/actions'\nimport services from '../../services';\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n },\n button: {\n marginTop: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n actionsContainer: {\n marginBottom: theme.spacing(2),\n },\n resetContainer: {\n padding: theme.spacing(3),\n },\n}));\n\nfunction getSteps() {\n return [\n `Let's start`, \n `General settings`, \n 'Check ingredients', \n 'Firebase Storage', \n 'MongoDB', \n 'Google reCAPTCHA', \n 'Github OAuth',\n 'User Manegement',\n 'Websocket' \n];\n}\n\nfunction getStepContent(step) {\n switch (step) {\n case 0:\n return ;\n case 1:\n return ;\n case 2:\n return ;\n case 3:\n return ;\n case 4:\n return ;\n case 5:\n return ;\n case 6:\n return ;\n case 7:\n return ;\n case 8:\n return ;\n default:\n return 'Unknown step';\n }\n}\n\nconst validInput = (value) => {\n if(value && value.trim() !== \"\") {\n return true\n }\n return false\n}\n\nconst validInputs = (state, inputs) => {\n for (const input of inputs) {\n const isValid = validInput(state['inputs'][input])\n if (!isValid) {\n return false\n }\n }\n return true\n\n}\n\nconst validCheckbox = (state, inputs) => {\n for (const input of inputs) {\n if (!state['inputs'][input]) {\n return false\n }\n }\n \n return true\n}\n\n\n\nexport default function OFCC() {\n const classes = useStyles();\n const dispatch = useDispatch()\n const setupStep = useSelector(state => state['setupStep'])\n const deployOpen = useSelector(state => state['deployOpen'])\n const stepCondition = {}\n const steps = getSteps();\n\n\n // ***** Conditions ***** //\n\n const state = useSelector(state => state) \n\n // Init step\n stepCondition[0]= (validInputs(state, ['projectDirectory']))\n\n // Init step\n stepCondition[1]= (validInputs(state, ['appID','ofGateway', 'ofUsername', 'socialDomain', 'secretName', 'namespace']))\n \n // Check ingredients\n stepCondition[2] = !validCheckbox(state,['loadingCheckIngredients'])\n\n // Firebase storage\n stepCondition[3] = (!validCheckbox(state, ['loadingFirebaseStorage'] ) && validInputs(state, ['bucketName']) === true)\n\n // Database\n stepCondition[4] = (!validCheckbox(state, ['loadingMongoDB'] ) && validInputs(state, ['mongoDBHost', 'mongoDBPassword', 'mongoDBName']) === true)\n\n // Firebase storage\n stepCondition[5] = (validInputs(state, ['siteKeyRecaptcha', 'recaptchaKey']))\n\n // OAuth\n stepCondition[6] = (validInputs(state, ['githubOAuthSecret']))\n\n // User management\n stepCondition[7] = (validInputs(state, ['adminUsername', 'adminPassword', 'gmail', 'gmailPassword']))\n\n // Websocket\n stepCondition[8] = ((!validCheckbox(state, ['loadingWebsocket'] ) || validCheckbox(state, ['websocketConnection'] )) && validInputs(state, ['gateway', 'payloadSecret', 'websocketURL']) === true)\n\n const handleCloseDeploy = () => {\n dispatch(actions.setInput('deployOpen', false))\n };\n\n const handleNext = () => {\n\n services.dispatchServer(actions.checkStep(state))\n \n };\n\n\n\n return (\n
\n \n {steps.map((label, index) => (\n \n {label}\n \n {getStepContent(index)}\n
\n
\n \n {setupStep === steps.length - 1 ? 'Deploy' : 'Next'}\n \n
\n
\n
\n
\n ))}\n
\n \n\n \n
\n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormHelperText from '@material-ui/core/FormHelperText';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport Card from '@material-ui/core/Card';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport actions from '../../store/actions'\nimport services from '../../services';\n\nconst useStyles = makeStyles(theme => ({\n formControl: {\n margin: theme.spacing(3),\n },\n cardActions: {\n justifyContent: \"flex-end\"\n }\n}));\n\nexport default function SelectSetup() {\n const dispatch = useDispatch()\n const classes = useStyles();\n const [value, setValue] = React.useState('ofc');\n\n const handleChange = event => {\n \n setValue(event.target.value);\n };\n\n const handleNext = event => {\n services.dispatchServer(actions.startStep())\n dispatch(actions.setSetupState('progress'))\n };\n\n const handleVote = event => {\n event.preventDefault()\n services.openURL('https://github.com/Qolzam/feedback/issues/1')\n };\n\n return (\n \n \n \n \n \n \n OpenFaaS\n \n \n The OpenFaaS makes it simple to deploy both functions and existing code on Kubernetes.\n \n
\n\n \n Choose your setup\n \n } label=\"OpenFaaS\" />\n } label=\"AWS EKS\" />\n } label=\"Google Kubernetes Engine\" />\n } label=\"Azure Kubernetes Service\" />\n } label=\"Self-host OpenFaaS\" />\n } label=\"Kubernetes on Bare-metal\" />\n } label=\"K3S on Bare-meta\" />\n } label=\"Local Kind\" />\n } label=\"Local Minikube\" />\n \n \n
\n
\n \n Vote for your favorite option to enable for the next version. Click here to vote\n \n \n
\n \n \n \n
\n );\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport { Typography, Link } from '@material-ui/core';\nimport services from '../../../../services';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n }\n}));\n\nconst Footer = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n \n const handleTelarLink = (event) => {\n\n event.preventDefault()\n services.openURL('https://telar.dev/')\n }\n\n return (\n \n \n ©{' '}\n \n Telar\n \n {' '} 2020\n \n \n );\n};\n\nFooter.propTypes = {\n className: PropTypes.string\n};\n\nexport default Footer;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Avatar, Typography } from '@material-ui/core';\nimport { withRouter, matchPath } from 'react-router-dom';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n minHeight: 'fit-content'\n },\n avatar: {\n width: 60,\n height: 60\n },\n name: {\n marginTop: theme.spacing(1)\n }\n}));\n\nconst Profile = props => {\n const { className, ...rest } = props;\n let userLogin = 'de-amir'\n const { pathname } = props.history.location;\n const matchFunction = matchPath(pathname, {\n path: '/:user',\n strict: true,\n });\n\n if(matchFunction) {\n userLogin = matchFunction.params.user.toLowerCase()\n }\n const classes = useStyles();\n const users = {\n 'de-amir': { \n name: 'Amirhossein Movahedi',\n avatar: '/images/avatars/amir.JPG',\n bio: 'Distributed System Eng.'\n },\n 'de-minhnguyen': { \n name: 'Minh Tuan Nguyen',\n avatar: '/images/avatars/minh.JPG',\n bio: 'AI Eng.'\n }\n };\n const user = users['de-amir']\n\n return (\n \n \n \n {user.name}\n \n {user.bio}\n \n );\n};\n\nProfile.propTypes = {\n className: PropTypes.string\n};\n\nexport default withRouter(Profile);\n","/* eslint-disable react/no-multi-comp */\n/* eslint-disable react/display-name */\nimport React, { forwardRef } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { List, ListItem, Button, colors } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {},\n item: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: colors.blueGrey[800],\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightMedium\n },\n icon: {\n color: theme.palette.icon,\n width: 24,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n active: {\n color: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium,\n '& $icon': {\n color: theme.palette.primary.main\n }\n }\n}));\n\nconst CustomRouterLink = forwardRef((props, ref) => (\n \n \n \n));\n\nconst SidebarNav = props => {\n const { pages, className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n {pages.map(page => (\n \n \n
{page.icon}
\n {page.title}\n \n \n ))}\n \n );\n};\n\nSidebarNav.propTypes = {\n className: PropTypes.string,\n pages: PropTypes.array.isRequired\n};\n\nexport default SidebarNav;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Drawer } from '@material-ui/core';\nimport SetupIcon from '@material-ui/icons/Build';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport { withRouter, matchPath } from 'react-router-dom';\nimport { SidebarNav } from './components';\n\nconst useStyles = makeStyles(theme => ({\n drawer: {\n width: 240,\n [theme.breakpoints.up('lg')]: {\n marginTop: 64,\n height: 'calc(100% - 64px)'\n }\n },\n root: {\n backgroundColor: theme.palette.white,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n padding: theme.spacing(2)\n },\n divider: {\n margin: theme.spacing(2, 0)\n },\n nav: {\n marginBottom: theme.spacing(2)\n }\n}));\n\nconst Sidebar = props => {\n const { open, variant, onClose, className, ...rest } = props;\n let user = ''\n const { pathname } = props.history.location;\n const matchFunction = matchPath(pathname, {\n path: '/:user',\n strict: true,\n });\n\n if(matchFunction) {\n user = matchFunction.params.user\n }\n const classes = useStyles();\n\n const pages = [\n {\n title: 'Installation',\n href: `/setup`,\n icon: \n },\n {\n title: 'Settings',\n href: `/settings`,\n icon: \n }\n ];\n\n return (\n \n \n \n \n \n );\n};\n\nSidebar.propTypes = {\n className: PropTypes.string,\n onClose: PropTypes.func,\n open: PropTypes.bool.isRequired,\n variant: PropTypes.string.isRequired\n};\n\nexport default withRouter(Sidebar);\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Typography, Button, colors } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n backgroundColor: colors.grey[50]\n },\n media: {\n paddingTop: theme.spacing(2),\n height: 80,\n textAlign: 'center',\n '& > img': {\n height: '100%',\n width: 'auto'\n }\n },\n content: {\n padding: theme.spacing(1, 2)\n },\n actions: {\n padding: theme.spacing(1, 2),\n display: 'flex',\n justifyContent: 'center'\n }\n}));\n\nconst UpgradePlan = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n
\n \n
\n
\n \n Upgrade to PRO\n \n \n Upgrade to TelarKit PRO and get even more components\n \n
\n
\n \n Upgrade\n \n
\n \n );\n};\n\nUpgradePlan.propTypes = {\n className: PropTypes.string\n};\n\nexport default UpgradePlan;\n","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { AppBar, Toolbar, Badge, Hidden, IconButton } from '@material-ui/core';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport NotificationsIcon from '@material-ui/icons/NotificationsOutlined';\nimport InputIcon from '@material-ui/icons/Input';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n boxShadow: 'none'\n },\n flexGrow: {\n flexGrow: 1\n },\n signOutButton: {\n marginLeft: theme.spacing(1)\n }\n}));\n\nconst Topbar = props => {\n const { className, onSidebarOpen, ...rest } = props;\n\n const classes = useStyles();\n\n const [notifications] = useState([]);\n\n return (\n \n \n \n

Telar

\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nTopbar.propTypes = {\n className: PropTypes.string,\n onSidebarOpen: PropTypes.func\n};\n\nexport default Topbar;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles, useTheme } from '@material-ui/styles';\nimport { useMediaQuery } from '@material-ui/core';\n\nimport { Sidebar, Topbar, Footer } from './components';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n paddingTop: 56,\n height: '100%',\n [theme.breakpoints.up('sm')]: {\n paddingTop: 64\n }\n },\n shiftContent: {\n paddingLeft: 240\n },\n content: {\n height: '100%'\n }\n}));\n\nconst Main = props => {\n const { children } = props;\n\n const classes = useStyles();\n const theme = useTheme();\n const isDesktop = useMediaQuery(theme.breakpoints.up('lg'), {\n defaultMatches: true\n });\n\n const [openSidebar, setOpenSidebar] = useState(false);\n\n const handleSidebarOpen = () => {\n setOpenSidebar(true);\n };\n\n const handleSidebarClose = () => {\n setOpenSidebar(false);\n };\n\n const shouldOpenSidebar = isDesktop ? true : openSidebar;\n\n return (\n \n \n \n
\n {children}\n
\n
\n
\n );\n};\n\nMain.propTypes = {\n children: PropTypes.node\n};\n\nexport default Main;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { AppBar, Toolbar } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n boxShadow: 'none'\n }\n}));\n\nconst Topbar = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nTopbar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Topbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\n\nimport { Topbar } from './components';\n\nconst useStyles = makeStyles(() => ({\n root: {\n paddingTop: 64,\n height: '100%'\n },\n content: {\n height: '100%'\n }\n}));\n\nconst Minimal = props => {\n const { children } = props;\n\n const classes = useStyles();\n\n return (\n
\n \n
{children}
\n
\n );\n};\n\nMinimal.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default Minimal;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n },\n iframe: {\n width: '100%',\n minHeight: 640,\n border: 0\n }\n}));\n\nconst Icons = () => {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n};\n\nexport default Icons;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n },\n content: {\n paddingTop: 150,\n textAlign: 'center'\n },\n image: {\n marginTop: 50,\n display: 'inline-block',\n maxWidth: '100%',\n width: 560\n }\n}));\n\nconst NotFound = () => {\n const classes = useStyles();\n\n return (\n
\n \n \n
\n \n 404: The page you are looking for isn’t here\n \n \n You either tried some shady route or you came here by mistake.\n Whichever it is, try using the navigation\n \n \n
\n \n \n
\n );\n};\n\nexport default NotFound;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n Card,\n CardHeader,\n CardContent,\n CardActions,\n Grid,\n Divider,\n FormControlLabel,\n Checkbox,\n Typography,\n Button\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {},\n item: {\n display: 'flex',\n flexDirection: 'column'\n }\n}));\n\nconst Notifications = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n return (\n \n
\n \n \n \n \n \n \n Notifications\n \n \n }\n label=\"Email\"\n />\n \n }\n label=\"Push Notifications\"\n />\n }\n label=\"Text Messages\"\n />\n \n }\n label=\"Phone calls\"\n />\n \n \n \n Messages\n \n \n }\n label=\"Email\"\n />\n }\n label=\"Push Notifications\"\n />\n \n }\n label=\"Phone calls\"\n />\n \n \n \n \n \n \n Save\n \n \n \n \n );\n};\n\nNotifications.propTypes = {\n className: PropTypes.string\n};\n\nexport default Notifications;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n Card,\n CardHeader,\n CardContent,\n CardActions,\n Divider,\n Button,\n TextField\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {}\n}));\n\nconst Password = props => {\n const { className, ...rest } = props;\n\n const classes = useStyles();\n\n const [values, setValues] = useState({\n password: '',\n confirm: ''\n });\n\n const handleChange = event => {\n setValues({\n ...values,\n [event.target.name]: event.target.value\n });\n };\n\n return (\n \n
\n \n \n \n \n \n \n \n \n \n Update\n \n \n \n \n );\n};\n\nPassword.propTypes = {\n className: PropTypes.string\n};\n\nexport default Password;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid } from '@material-ui/core';\n\nimport { Notifications, Password } from './components';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n }\n}));\n\nconst Settings = () => {\n const classes = useStyles();\n\n return (\n
\n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport default Settings;\n","import React, { Fragment } from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid, Typography as MuiTypography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(4)\n }\n}));\n\nconst variants = {\n h1: 'Nisi euismod ante senectus consequat phasellus ut',\n h2: 'Nisi euismod ante senectus consequat phasellus ut',\n h3: 'Nisi euismod ante senectus consequat phasellus ut',\n h4: 'Nisi euismod ante senectus consequat phasellus ut',\n h5: 'Nisi euismod ante senectus consequat phasellus ut',\n h6: 'Nisi euismod ante senectus consequat phasellus ut',\n subtitle1: 'Leo varius justo aptent arcu urna felis pede nisl',\n subtitle2: 'Leo varius justo aptent arcu urna felis pede nisl',\n body1:\n 'Justo proin curabitur dictumst semper auctor, consequat tempor, nostra aenean neque turpis nunc. Leo. Sapien aliquet facilisi turpis, elit facilisi praesent porta metus leo. Dignissim amet dis nec ac integer inceptos erat dis Turpis sodales ad torquent. Dolor, erat convallis.Laoreet velit a fames commodo tristique hendrerit sociosqu rhoncus vel sapien penatibus facilisis faucibus ad. Mus purus vehicula imperdiet tempor lectus, feugiat Sapien erat viverra netus potenti mattis purus turpis. Interdum curabitur potenti tristique. Porta velit dignissim tristique ultrices primis.',\n body2:\n 'Justo proin curabitur dictumst semper auctor, consequat tempor, nostra aenean neque turpis nunc. Leo. Sapien aliquet facilisi turpis, elit facilisi praesent porta metus leo. Dignissim amet dis nec ac integer inceptos erat dis Turpis sodales ad torquent. Dolor, erat convallis.',\n caption: 'Accumsan leo pretium conubia ullamcorper.',\n overline: 'Accumsan leo pretium conubia ullamcorper.',\n button: 'Vivamus ultrices rutrum fames dictumst'\n};\n\nconst Typography = () => {\n const classes = useStyles();\n\n return (\n
\n \n {Object.keys(variants).map((key, i) => (\n \n \n {key}\n \n \n {variants[key]}\n \n \n ))}\n \n
\n );\n};\n\nexport default Typography;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useDispatch, useSelector } from 'react-redux'\nimport Card from '@material-ui/core/Card';\nimport CardActionArea from '@material-ui/core/CardActionArea';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport services from '../../services';\n\nconst useStyles = makeStyles({\n root: {\n maxWidth: 645,\n },\n media: {\n height: 277,\n },\n});\n\nexport default function StepDone() {\n const classes = useStyles();\n const socialDomain = useSelector(state => state['inputs']['socialDomain'])\n\n const handleLearnMore = () => {\n services.openURL(\"https://telar.dev\")\n }\n\n return (\n \n \n \n \n \n Done\n \n \n Wait until the build and deployment is done. To start login into admin page {`${socialDomain}/admin/login`}. Wait until you seen welcome page.\n Now your Telar social is ready to use!😍🏆\n - Signup page: {`${socialDomain}/auth/signup`}\n - Login page: {`${socialDomain}/auth/login`}\n \n \n \n \n \n \n \n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport { SelectSetup } from '../../components'\nimport { OFCC } from '../../components'\nimport Container from '@material-ui/core/Container';\nimport StepDone from '../../components/StepDone';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n '& .MuiTextField-root': {\n margin: theme.spacing(1),\n width: 200,\n },\n },\n}));\n\nexport default function SetupComponent() {\n const setupState = useSelector(state => state['setupState'])\n const classes = useStyles();\n const [value, setValue] = React.useState('Controlled');\n\n const handleChange = event => {\n setValue(event.target.value);\n };\n\n return (\n <>\n
\n \n { setupState === 'init' ? \n : (setupState === 'progress' ? : )}\n \n \n );\n}","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport actions from '../../store/actions'\nimport TextField from '@material-ui/core/TextField';\nimport services from '../../services';\n\nconst useStyles = makeStyles(theme => ({\n formControl: {\n margin: theme.spacing(3),\n },\n cardActions: {\n justifyContent: \"flex-end\"\n }\n}));\n\nexport default function OFSetting() {\n const dispatch = useDispatch()\n const classes = useStyles();\n const projectDirectory = useSelector(state => state['inputs']['projectDirectory'])\n\n const handleInputChange = (name) => (event) => {\n const {value} = event.currentTarget\n dispatch(actions.setInput(name, value))\n }\n\n const handleRemoveSocialFromCluster = event => {\n services.dispatchServer(actions.removeSocialFromCluster(projectDirectory))\n };\n\n\n return (\n \n \n \n \n Settings\n \n \n
\n\n \n Enter your project directory that includes `setup.yml` file\n \n \n
\n \n \n \n
\n );\n}","import React from 'react';\nimport Container from '@material-ui/core/Container';\nimport OFSetting from '../../components/OFSetting';\n\n\nexport default function SettingsComponent() {\n\n\n return (\n <>\n
\n \n \n \n \n );\n}","import React from 'react';\nimport { Switch, Redirect } from 'react-router-dom';\n\nimport { RouteWithLayout } from './components';\nimport { Main as MainLayout, Minimal as MinimalLayout } from './layouts';\nimport {\n NotFound as NotFoundView\n} from './views';\n\nimport SetupComponent from './pages/Setup';\nimport SettingsComponent from './pages/Settings';\n\nconst Routes = () => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default Routes;\n","const round = number => Math.round(number * 100) / 100\nconst monitorReducerEnhancer = createStore => (\n reducer,\n initialState,\n enhancer\n) => {\n const monitoredReducer = (state, action) => {\n const start = performance.now()\n const newState = reducer(state, action)\n const end = performance.now()\n const diff = round(end - start)\n console.log('reducer process time:', diff)\n return newState\n }\n return createStore(monitoredReducer, initialState, enhancer)\n}\nexport default monitorReducerEnhancer","const logger = store => next => action => {\n console.group(action.type)\n console.info('dispatching', action)\n let result = next(action)\n console.log('next state', store.getState())\n console.groupEnd()\n return result\n }\n export default logger","import actionTypes from './actionTypes'\n\nconst initialState = {\n inputs: {},\n infoDialog: {message: \"\", url: \"\", open: false}\n}\n\n function appReducer(state = initialState, action) {\n const {payload} = action\n switch (action.type) {\n case actionTypes.SET_SETUP_STATE:\n return {...state, setupState: payload.state}\n case actionTypes.SET_SETUP_STEP:\n return {...state, setupStep: payload.step}\n case actionTypes.SET_STEP_CONDITION:\n return {...state, stepCondition: {[payload.step]: payload.valid}}\n case actionTypes.SET_INPUT:\n return {...state, inputs: {...state.inputs, [payload.key]: payload.value}}\n case actionTypes.SET_DEPLOY_OPEN:\n return {...state, deployOpen: payload.open}\n case actionTypes.SET_SETUP_DEFAULT_VALUES:\n return {...state, inputs: {...state.inputs, ...payload.clientInputs}}\n case actionTypes.POP_MESSAGE:\n return {...state, popMessage: payload.message}\n case actionTypes.SHOW_INFO_DIALOG:\n return {...state, infoDialog: {message: payload.message, url: payload.url, open: true }}\n case actionTypes.HIDE_INFO_DIALOG:\n return {...state, infoDialog: {message: \"\", url: \"\", open: false }}\n default:\n return state\n }\n }\n\nexport default appReducer","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport actions from '../../store/actions';\nimport services from '../../services';\n\nexport default function DialogInfo() {\n const dispatch = useDispatch()\n const open = useSelector(state => state.infoDialog.open)\n const message = useSelector(state => state.infoDialog.message)\n const url = useSelector(state => state.infoDialog.url)\n\n const handleClose = () => {\n dispatch(actions.hideInfoDialog())\n };\n\n const handleOpenURL = (url) => {\n services.openURL(url)\n dispatch(actions.hideInfoDialog())\n\n };\n\n return (\n \n \n {\"Info\"}\n \n \n {message && `${message[0].toUpperCase()}${message.slice(1)}`}\n \n \n \n \n {(url && url !== \"\") && }\n \n \n );\n}","\nimport React, { useState, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Router } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport { ThemeProvider } from '@material-ui/styles';\nimport Button from '@material-ui/core/Button';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport theme from './theme';\nimport './assets/scss/index.scss';\nimport './App.css';\nimport Routes from './Routes';\nimport configureAppStore from './store'\nimport { Provider } from 'react-redux'\nimport actions from './store/actions';\nimport DialogInfo from './components/DialogInfo'\nconst browserHistory = createBrowserHistory();\n\n\n\nconst store = configureAppStore({\n inputs: {\n appID: 'my-social-network',\n ofUsername: 'admin',\n ofGateway: 'openfaas.example.com',\n socialDomain: 'https://mysocial.com',\n secretName: 'secrets',\n namespace: 'openfaas-fn',\n projectDirectory: \"\",\n bucketName: \"\",\n mongoDBHost: \"\",\n mongoDBPassword: \"\",\n mongoDBName: \"test\",\n siteKeyRecaptcha: \"\",\n recaptchaKey: \"\",\n githubOAuthSecret: \"\",\n githubOAuthClientID: \"\",\n adminUsername: \"\",\n adminPassword: \"\",\n gmail: \"\",\n gmailPassword: \"\",\n gateway: \"\",\n payloadSecret: \"\",\n websocketURL: \"\",\n installGit: false,\n installKubeseal: false,\n cloneTelarWeb: false,\n cloneTsServerless: false,\n cloneTsUi: false,\n openFaaSApp: false,\n openFaaSAppHasRepos: false,\n githubSSHKey: false,\n firebaseServiceAccount: false,\n firebaseStorage: false,\n mongoDBConnection: false,\n websocketConnection: false,\n loadingCheckIngredients: false,\n loadingFirebaseStorage: false,\n loadingMongoDB: false,\n loadingWebsocket: false,\n loadingStackYaml: false,\n loadingCreateSecret: false,\n loadingPublicPrivateKey: false,\n deployTelarWeb: false,\n deployTsServerless: false,\n deploySocialUi: false,\n deployOpen: false,\n }, setupState: 'init', setupStep: 0, stepCondition: {}, infoDialog: {message: \"\", url: \"\", open: false}\n})\n\nlet ws;\n\nif (window.WebSocket === undefined) {\n alert(\"Your browser does not support WebSockets\");\n \n} else {\n ws = initWS();\n}\n\nfunction initWS() {\n let socket = new WebSocket(\"ws://localhost:31115/ws\")\n \n socket.onopen = function() {\n store.dispatch(actions.popMessage(\"Ready!\"))\n };\n socket.onmessage = function (e) {\n const action = JSON.parse(e.data)\n console.log('action', action)\n console.log('e.data', e.data)\n store.dispatch(action)\n }\n socket.onclose = function () {\n store.dispatch(actions.popMessage(\"Socket closed\"))\n }\n\n return socket;\n}\n\nfunction AppSnackbar() {\n const dispatch = useDispatch()\n\n const popMessage = useSelector(state => state['popMessage'])\n\n const handleClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n dispatch(actions.popMessage(\"\"))\n };\n\n return (\n \n \n \n \n \n }\n />\n )\n}\n\n\nfunction App() {\n\n // Retrieving data from an AJAX request.\n // Remember that the function passed to useEffect will run,\n // after render is fixed on the screen.\n // See https://reactjs.org/docs/hooks-reference.html#useeffect\n useEffect(() => {\n \n });\n\n \n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'\nimport monitorReducersEnhancer from './enhancers/monitorReducer'\nimport loggerMiddleware from './middleware/logger'\nimport rootReducer from './reducers'\nexport default function configureAppStore(preloadedState) {\n const store = configureStore({\n reducer: rootReducer,\n middleware: [loggerMiddleware, ...getDefaultMiddleware()],\n preloadedState,\n enhancers: [monitorReducersEnhancer]\n })\n if (process.env.NODE_ENV !== 'production' && module.hot) {\n module.hot.accept('./reducers', () => store.replaceReducer(rootReducer))\n }\n return store\n}","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(, document.getElementById(\"root\"));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/ui/src/components/CheckIngredients/index.jsx b/ui/src/components/CheckIngredients/index.jsx index 3aeb06e..37ad881 100644 --- a/ui/src/components/CheckIngredients/index.jsx +++ b/ui/src/components/CheckIngredients/index.jsx @@ -61,7 +61,7 @@ export default function CheckIngredients() { const [helpOpen, setHelpOpen] = React.useState(false); const handleHelp = () => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/2.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md") }; const handleCloseHelp = () => { diff --git a/ui/src/components/Database/index.jsx b/ui/src/components/Database/index.jsx index 8472af8..eb9acbf 100644 --- a/ui/src/components/Database/index.jsx +++ b/ui/src/components/Database/index.jsx @@ -73,7 +73,7 @@ export default function Database() { const [helpType, setHelpType] = React.useState(0); const handleHelp = (helpType) => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/5.md") }; const handleCloseHelp = () => { diff --git a/ui/src/components/FirebaseStorage/index.jsx b/ui/src/components/FirebaseStorage/index.jsx index 4697071..0936b88 100644 --- a/ui/src/components/FirebaseStorage/index.jsx +++ b/ui/src/components/FirebaseStorage/index.jsx @@ -70,7 +70,7 @@ export default function FirebaseStorage() { const [helpType, setHelpType] = React.useState(0); const handleHelp = (helpType) => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/3.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/4.md") }; const handleCloseHelp = () => { diff --git a/ui/src/components/GoogleReCaptcha/index.jsx b/ui/src/components/GoogleReCaptcha/index.jsx index 706665a..72633e5 100644 --- a/ui/src/components/GoogleReCaptcha/index.jsx +++ b/ui/src/components/GoogleReCaptcha/index.jsx @@ -44,7 +44,7 @@ export default function GoogleReCaptcha() { const [helpType, setHelpType] = React.useState(0); const handleHelp = (helpType) => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/5.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/6.md") }; const handleCloseHelp = () => { diff --git a/ui/src/components/OAuth/index.jsx b/ui/src/components/OAuth/index.jsx index 72123e8..a2973be 100644 --- a/ui/src/components/OAuth/index.jsx +++ b/ui/src/components/OAuth/index.jsx @@ -42,7 +42,7 @@ export default function OAuth() { const [helpOpen, setHelpOpen] = React.useState(false); const handleHelp = () => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/6.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/7.md") }; const handleCloseHelp = () => { diff --git a/ui/src/components/OFCInfo/index.jsx b/ui/src/components/OFCInfo/index.jsx index 08a71f1..edaff51 100644 --- a/ui/src/components/OFCInfo/index.jsx +++ b/ui/src/components/OFCInfo/index.jsx @@ -53,7 +53,7 @@ export default function OFCInfo() { const [helpOpen, setHelpOpen] = React.useState(false); const handleHelp = () => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/1.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/2.md") }; const handleCloseHelp = () => { diff --git a/ui/src/components/UserManagement/index.jsx b/ui/src/components/UserManagement/index.jsx index b3d05f3..fff6f59 100644 --- a/ui/src/components/UserManagement/index.jsx +++ b/ui/src/components/UserManagement/index.jsx @@ -42,7 +42,7 @@ export default function UserManagement() { const [helpOpen, setHelpOpen] = React.useState(false); const handleHelp = () => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/7.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md") }; const handleCloseHelp = () => { diff --git a/ui/src/components/Websocket/index.jsx b/ui/src/components/Websocket/index.jsx index 1efa533..570aab6 100644 --- a/ui/src/components/Websocket/index.jsx +++ b/ui/src/components/Websocket/index.jsx @@ -68,7 +68,7 @@ export default function Websocket() { const [helpOpen, setHelpOpen] = React.useState(false); const handleHelp = () => { - services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/8.md") + services.openURL("https://github.com/Qolzam/telar-cli/blob/master/docs/ofcc-setup/9.md") }; const handleCloseHelp = () => {