{"version":3,"sources":["hooks/useQueryParams.js","hoc/withStore.js","constants/index.js","i18n.js","translations/en/common.js","translations/nl/common.js","components/shared/PrivateRoute.js","components/Auth/ForgotPassword3PApp.jsx","components/Auth/LoginView.jsx","components/Auth/AppLogin.jsx","components/Auth/SetPassword3PApp.jsx","components/Auth/NewPasswordWrapper.jsx","App.js","serviceWorker.js","index.js","hooks/useStore.js","common/helper.js","api/index.js","stores/AuthStore.js","stores/ApplicationStore.js","stores/AuthApp.js","stores/storeContexts.js","api/api-client.js","components/shared/LanguageSwitcher.js"],"names":["useQueryParams","search","useLocation","useMemo","URLSearchParams","withStore","Component","props","Consumer","store","DEFAULT_APP_ICON","resources","en","common","Dashboard","Logout","Login","Email","Password","ResetPassword","Logs","nl","i18n","use","LanguageDetector","initReactI18next","init","detection","order","lookupQuerystring","fallbackLng","debug","defaultNS","interpolation","escapeValue","PrivateRoute","component","children","rest","auth","useStores","render","isAuthenticated","to","pathname","state","from","location","schema","object","shape","email","string","required","ForgotPasswordForm3PAppWrapper","withRouter","withFormik","mapPropsToValues","validationSchema","handleSubmit","values","setSubmitting","setStatus","apiClient","method","body","then","data","catch","response","displayName","handleChange","handleBlur","status","isSubmitting","t","useTranslation","themeCss","appInfo","loginThemeCss","useLayoutEffect","styleInject","id","authContainerStyle","display","flexDirection","justifyContent","minHeight","padding","maxWidth","style","alt","className","src","width","height","data-testid","backgroundColor","icon","faCheckCircle","size","onSubmit","fontSize","color","name","type","placeholder","onChange","onBlur","value","disabled","alignItems","marginLeft","aria-label","faSpinner","spin","LoginForm","showForgotPassword","showPassword","toggleForgotPassword","setState","inputStyle","border","borderRadius","marginBottom","inputDisabledStyle","errorMessageStyle","this","touched","errors","isValid","dirty","showLogin","authApp","logo","indexOf","e","disableEmail","isUnderBubl","marginTop","password","onClick","faEye","faEyeSlash","React","LoginFormWithTs","withTranslation","LoginViewFormWrapper","setFieldError","resetForm","serviceId","currentAppId","res","console","log","preLogin","skipPreCheck","closeView","toast","error","AppLogin","observer","params","useParams","queryParams","useEffect","appId","get","setCurrentApp","decodeURI","position","top","zIndex","LanguageSwitcher","isStatic","isTransparent","fontWeight","paddingTop","decodeURIComponent","includes","borderTop","bottom","opacity","min","confirmPassword","oneOf","ref","SetPassword3PAppFormWrapper","headers","Authorization","initialToken","err","htmlFor","paddingRight","NewPasswordFormWrapper","HomeWrapper","lazy","EmailVerifyLazy","ResetPasswordFormWrapperLazy","EmailConfirmLazy","DashboardLazy","LogsLazy","CheckPreLogin","setInitialLoader","App","useState","initialLoader","basename","process","fallback","exact","path","match","window","opener","postAppActivation","focus","setTimeout","close","Boolean","hostname","require","cb","scriptElm","document","createElement","Date","getTime","onload","appendChild","loadConfig","ReactDOM","StrictMode","getElementById","navigator","serviceWorker","ready","registration","unregister","message","useContext","StoreContext","getAppURL","app","appLogo","startsWith","css","existingStyle","parentNode","removeChild","head","getElementsByTagName","styleSheet","cssText","createTextNode","Error","AuthStore","isUnderDevelopment","uuid","token","clearUser","browserCookies","expires","domain","host","runInAction","setApiToken","userBubl","assign","makeAutoObservable","bubl","APP_CONFIG","bublDomain","Promise","resolve","reject","accessToken","ApplicationStore","theme","themes","currentMenu","showSearch","apps","loadingApps","env","developerTerminalURL","menuName","isActive","some","classList","remove","add","String","activating","updateAll","success","autoClose","closeButton","oldStatus","getApps","completeActivation","bind","redirect","open","activationError","opening","href","developerURL","AuthAppStore","redirectUrl","redirectPath","customTheme","appBgColor","appTextColor","appTextErrorColor","appHeadingColor","appHeadingFontWeight","appHeadingFontSize","appInputLabelColor","appInputLabelFontSize","appInputLabelFontWeight","appInputFieldBgColor","appInputFieldColor","appInputFieldFontSize","appInputFieldShadow","appInputErrorFontSize","appInputErrorBgColor","appInputErrorColor","appInputBtnBgColor","appInputBtnColor","appInputBtnFontWeight","appInputBtnFontSize","Object","keys","forEach","key","customLoginCustomizations","loginCustomizations","JSON","parse","length","mapTheme","baseTheme","getLoginThemeCss","url","URL","getBublBaseUrl","createContext","StoreProvider","application","Provider","apiToken","instance","replace","endpoint","isBublManager","additionalHeaders","customConfig","config","credentials","stringify","urlPrefix","apiBaseUrl","fetch","a","json","ok","isOnNavbar","Switcher","resolvedLanguage","changeLanguage"],"mappings":"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","file":"static/js/main.4c9c4bb0.chunk.js","sourcesContent":["import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n \n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import React from 'react';\nimport {StoreContext} from '../stores/storeContexts'\nexport function withStore(Component) {\n\treturn function storeComponent(props) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{store => }\n\t\t\t\n\t\t)\n\t}\n}\n","\nexport const DEFAULT_APP_ICON = `data:image/png;base64,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`","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\n\nimport LanguageDetector from 'i18next-browser-languagedetector';\n// don't want to use this?\n// have a look at the Quick start guide \n// for passing in lng and translations on init\n\nimport CommonTranslationEn from './translations/en/common'\nimport CommonTranslationNl from './translations/nl/common'\n\nconst resources = {\n en: {\n // Namspaces\n common: CommonTranslationEn,\n },\n nl: {\n common: CommonTranslationNl,\n }\n };\n\ni18n\n // load translation using http -> see /public/locales (i.e. https://github.com/i18next/react-i18next/tree/master/example/react/public/locales)\n // learn more: https://github.com/i18next/i18next-http-backend\n // want your translations to be loaded from a professional CDN? => https://github.com/locize/react-tutorial#step-2---use-the-locize-cdn\n// .use(Backend)\n // detect user language\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(LanguageDetector)\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n resources,\n detection: {\n // order and from where user language should be detected\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag', 'path', 'subdomain'],\n\n // keys or params to lookup language from\n lookupQuerystring: 'locale',\n },\n fallbackLng: 'en',\n debug: true,\n defaultNS: \"common\",\n\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n }\n });\n\n\nexport default i18n;","export default {\n\t'Please check your email. We have sent you a verification link. Click on email link to verify your account.':\n\t\t'Please check your email. We have sent you a verification link. Click on email link to verify your account.',\n\t'Login or Sign Up to start your contact sharing journey':\n\t\t'Login or Sign Up to start your contact sharing journey',\n\t'I am new here': 'I am new here',\n\t'Already a Member': 'Already a Member',\n\t'Forgot password?': 'Forgot password?',\n\t'Change Password': 'Change Password',\n\t'Change Email': 'Change Email',\n\tDashboard: 'Dashboard',\n\tLogout: 'Logout',\n\t'Sign Up': 'Sign Up',\n\tLogin: 'Log In',\n\tEmail: 'Email',\n\tPassword: 'Password',\n\t'Confirm Password': 'Confirm Password',\n\t'Set Password': 'Set Password',\n\t'Email is required': 'Email is required',\n\t'Valid Email is required': 'Valid Email is required',\n\t'Password is required': 'Password is required',\n\t'Password should be 12 characters minimum':\n\t\t'Password should be 12 characters minimum',\n\t'Confirm Password is required': 'Confirm Password is required',\n\t'Password does not match': 'Password does not match',\n\t'Powered by': 'Powered by',\n\t'Data protection':\n\t\t'Our data protection is checked and certified according to the rules of the GDPR.',\n\t'Something went wrong, Please try again!':\n\t\t'Something went wrong, Please try again!',\n\t'Oops something went wrong, please try again after some time!':\n\t\t'Oops something went wrong, please try again after some time!',\n\t'Login failed: please check your email':\n\t\t'Login failed: please check your email',\n\t'Login failed: please check your email and password':\n\t\t'Login failed: please check your email and password',\n\t'Oops something went wrong, please try again in few mins!':\n\t\t'Oops something went wrong, please try again in few mins!',\n\tResetPassword:\n\t\t'Please check your email. We have sent a verification link to {{email}}. Click on email link to reset the password.',\n\t'Reset password': 'Reset password',\n\t'Password success':\n\t\t'Password changed successfully. Please proceed to login now.',\n\tLogs: 'Logs',\n};\n","export default {\n\t'Please check your email. We have sent you a verification link. Click on email link to verify your account.':\n\t\t'Controleer alstublieft uw e-mail. We hebben u een verificatielink gestuurd. Klik op de link in de e-mail om uw account te verifiëren.',\n\t'Login or Sign Up to start your contact sharing journey':\n\t\t'Inloggen of registreren om aan uw contactendelen reis te beginnen',\n\t'I am new here': 'Ik ben nieuw hier',\n\t'Already a Member': 'Ik ben al lid',\n\t'Forgot password?': 'Wachtwoord vergeten?',\n\t'Change Password': 'Wachtwoord wijzigen',\n\t'Change Email': 'E-mail wijzigen',\n\tDashboard: 'Dashboard',\n\tLogout: 'Uitloggen',\n\t'Sign Up': 'Registreren',\n\tLogin: 'Inloggen',\n\tEmail: 'E-mail',\n\tPassword: 'Wachtwoord',\n\t'Confirm Password': 'Bevestig uw wachtwoord',\n\t'Set Password': 'Wachtwoord instellen',\n\t'Email is required': 'E-mail is verplicht',\n\t'Valid Email is required': 'Geldige e-mail is vereist',\n\t'Password is required': 'Wachtwoord is verplicht',\n\t'Password should be 12 characters minimum':\n\t\t'Wachtwoord moet minimaal 12 tekens zijn',\n\t'Confirm Password is required': 'Bevestig wachtwoord is verplicht',\n\t'Password does not match': 'Wachtwoord komt niet overeen',\n\t'Powered by': 'Powered by',\n\t'Data protection':\n\t\t'Onze gegevensbescherming wordt gecontroleerd en gecertificeerd volgens de regels van de AVG',\n\t'Something went wrong, Please try again!':\n\t\t'Er is iets fout gegaan, probeer het opnieuw!',\n\t'Oops something went wrong, please try again after some time!':\n\t\t'Oeps, er is iets fout gegaan, probeer het later opnieuw!',\n\t'Login failed: please check your email':\n\t\t'Inloggen mislukt: controleer uw e-mail',\n\t'Login failed: please check your email and password':\n\t\t'Inloggen mislukt: controleer uw e-mail en wachtwoord',\n\t'Oops something went wrong, please try again in few mins!':\n\t\t'Oeps, er is iets fout gegaan, probeer het over een paar minuten opnieuw!',\n\tResetPassword:\n\t\t'Controleer uw e-mail. We hebben een verificatielink gestuurd naar {{email}}. Click op e-mail link om het wachtwoord opnieuw in te stellen.',\n\t'Reset password': 'Wachtwoord resetten',\n\t'Password success':\n\t\t'Wachtwoord succesvol veranderd. Ga nu verder met inloggen.',\n\tLogs: 'Logboeken',\n};\n","import React from 'react'\nimport { Route, Redirect } from 'react-router-dom'\nimport { useStores } from '../../hooks/useStore'\n\n// import { observer } from 'mobx-react'\n\nexport function PrivateRoute ({ component:Component, children, ...rest }) {\n let { auth } = useStores()\n return (\n {\n return auth.isAuthenticated ? (\n Component ? (\n \n ) : (\n children\n )\n ) : (\n \n )\n }}\n />\n )\n}\n","import React, { useLayoutEffect } from \"react\";\nimport { withFormik } from \"formik\";\nimport { withRouter } from \"react-router-dom\";\nimport { string, object } from \"yup\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner, faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\n\nimport { apiClient } from \"../../api\";\nimport { styleInject } from \"../../common/helper\";\nimport { useTranslation } from \"react-i18next\";\n\nfunction ForgotPasswordForm(props) {\n const {\n values,\n handleChange,\n handleBlur,\n handleSubmit,\n status,\n isSubmitting,\n } = props;\n\n const {t} = useTranslation()\n\n const themeCss = props.auth?.appInfo?.loginThemeCss\n useLayoutEffect(()=>{\n styleInject(themeCss, {id:'appTheme'})\n },[themeCss])\n\n const authContainerStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n minHeight: \"85vh\",\n padding: \"2rem\",\n maxWidth: \"600px\"\n };\n \n return status === 'SUCCESS' ? (\n
\n
\n \n
\n \n
\n
\n \n
\n
\n {t(\"ResetPassword\", { email: values.email})}\n
\n
\n
\n \n ) :(\n
\n
\n \n
\n
\n
\n \n
\n
\n \n {t(\"Powered by\")} test\n \"logo\"\n \n \n {t(\"Data protection\")}\n \n
\n
\n \n {t(\"Reset password\")}\n {isSubmitting ? : null}\n \n
\n
\n
\n
\n );\n}\n\nconst schema = object().shape({\n email: string()\n .required(\"Email is required\")\n .email(\"Valid Email is required\")\n});\n\nexport const ForgotPasswordForm3PAppWrapper = withRouter(\n withFormik({\n mapPropsToValues: (props) => {\n return {\n email: props.email ?? \"\"\n };\n },\n validationSchema: (props) => {\n return schema;\n },\n handleSubmit: (\n values,\n { setSubmitting, setStatus}\n ) => {\n let promise = apiClient(`co-nect/v1/forgotpassword`, {\n method: \"POST\",\n body: {\n email: values.email\n },\n }).then(({ data }) => {\n setStatus(\"SUCCESS\");\n setSubmitting(false);\n });\n\n promise.catch(({ data, response }) => {\n setStatus(\"SERVER_ERROR\");\n setSubmitting(false);\n });\n },\n\n displayName: \"ForgotPasswordForm\",\n })(ForgotPasswordForm)\n);\n","import React from \"react\";\nimport { withFormik } from \"formik\";\nimport { withRouter } from \"react-router-dom\";\nimport { string, object } from \"yup\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\n\nimport { apiClient } from \"../../api\";\nimport { withTranslation } from \"react-i18next\";\nimport { ForgotPasswordForm3PAppWrapper } from \"./ForgotPassword3PApp\";\nimport {\n\n faEye,\n faEyeSlash,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { toast } from \"react-toastify\";\n\nclass LoginForm extends React.Component {\n state = {\n showForgotPassword: false,\n showPassword:false,\n };\n toggleForgotPassword = () => {\n this.setState({ showForgotPassword: !this.state.showForgotPassword });\n };\n getErrorMessage(status) {\n if (status === \"EMAIL_PASSWORD_ERROR\")\n return `Login failed: please check your email${\n this.props.email ? ` and password` : ``\n }`;\n\n if (status === \"SERVER_ERROR\") {\n return \"Oops something went wrong, please try again in few mins!\";\n }\n }\n authContainerStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n minHeight: \"85vh\",\n padding: \"2rem\",\n maxWidth: \"600px\",\n };\n\n inputStyle = {\n backgroundColor: \"#FFFFFF\",\n border: \"none\",\n borderRadius: \"20px\",\n marginBottom: \"0.5rem\",\n padding: \"12px\",\n width: \"100%\",\n color: \"#000\",\n };\n\n inputDisabledStyle = {\n backgroundColor: \"#DCDCDC\",\n border: \"none\",\n borderRadius: \"20px\",\n marginBottom: \"0.5rem\",\n padding: \"12px\",\n width: \"100%\",\n color: \"#000\",\n };\n\n errorMessageStyle = {\n color: \"rgb(255, 95, 144)\",\n };\n\n render() {\n const {\n values,\n touched,\n errors,\n handleChange,\n handleBlur,\n handleSubmit,\n isValid,\n dirty,\n isSubmitting,\n t,\n } = this.props;\n if (this.state.showForgotPassword) {\n return (\n \n );\n }\n\n \n return (\n
\n
\n {this.props.authApp.appInfo.logo ? (\n \n ) : null}\n

{this.props.authApp.appInfo.name}

\n
\n
\n
\n
\n {\n handleBlur(e);\n }}\n disabled={!!this.props.disableEmail}\n value={values.email}\n data-testid=\"email-input\"\n style={this.inputDisabledStyle}\n />\n \n {errors.email && touched.email ? (\n \n {t(errors.email)}\n \n ) : null}\n
\n {this.props.email || this.props.auth.isUnderBubl ? (\n
\n
\n {\n handleBlur(e);\n }}\n value={values.password}\n data-testid=\"password-input\"\n style={this.inputStyle}\n />\n {\n this.setState({ showPassword: !this.state.showPassword });\n }}\n >\n {this.state.showPassword ? (\n \n ) : (\n \n )}\n
\n \n
\n {errors.password && touched.password ? (\n \n {t(errors.password)}\n \n ) : null}\n
\n ) : null}\n {this.props.email || this.props.auth.isUnderBubl ? (\n
\n \n {t(\"Forgot password?\")}\n \n
\n ) : null}\n
\n \n {t(\"Powered by\")}\n \n \n {t(\"Data protection\")}\n
\n
\n
\n
\n \n {t(\"Login\")}\n {isSubmitting ? (\n \n ) : null}\n \n
\n \n
\n \n );\n }\n}\n\nconst schema = object().shape({\n email: string()\n .required(\"Email is required\")\n .email(\"Valid Email is required\"),\n password: string().required(\"Password is required\"),\n});\n\nconst LoginFormWithTs = withTranslation()(LoginForm);\nexport const LoginViewFormWrapper = withRouter(\n withFormik({\n mapPropsToValues: (props) => {\n return { email: props.email ?? \"\", password: \"\" };\n },\n validationSchema: (props) => {\n return schema;\n },\n handleSubmit: (\n values,\n { setSubmitting, props, setFieldError, setStatus, resetForm }\n ) => {\n let promise;\n promise = apiClient(`co-nect/v1/login`, {\n method: \"POST\",\n body: {\n email: values.email,\n password: values.password,\n serviceId: props.authApp.currentAppId,\n },\n })\n .then((res) => {\n console.log(res, props, props.auth, props.authApp);\n // props.auth.setUser({token: data.accessToken})\n return props.auth.preLogin(props.skipPreCheck || false);\n })\n .then(() => {\n console.log(\"In close view\");\n props.authApp.closeView();\n });\n\n promise.catch(({ data, response }) => {\n toast.error(data.error);\n if (\n response &&\n (response.status === 404 ||\n response.status === 401 ||\n response.status === 400)\n ){\n setStatus(\"EMAIL_PASSWORD_ERROR\");\n \n }else{\n setStatus(\"SERVER_ERROR\");\n }\n\n setSubmitting(false);\n });\n },\n\n displayName: \"LoginForm\",\n })(LoginFormWithTs)\n);\n","import { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { observer } from \"mobx-react\";\nimport React, { useEffect } from \"react\";\nimport { useLayoutEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useParams } from \"react-router-dom\";\nimport { styleInject } from \"../../common/helper\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\nimport { useStores } from \"../../hooks/useStore\";\nimport { LanguageSwitcher } from \"../shared/LanguageSwitcher\";\nimport { LoginViewFormWrapper } from \"./LoginView\";\n\nexport const AppLogin = observer((props) => {\n const params = useParams();\n const {t} = useTranslation()\n const queryParams = useQueryParams();\n const { auth, authApp } = useStores();\n useEffect(() => {\n console.log(params.appId,queryParams.get('redirect') );\n authApp.setCurrentApp(params.appId, decodeURI(queryParams.get('redirect') ?? \"\"), decodeURI(queryParams.get('redirectPath') ?? \"\"));\n // eslint-disable-next-line\n }, []);\n const themeCss = authApp?.appInfo?.loginThemeCss\n useLayoutEffect(()=>{\n styleInject(themeCss, {id:'appTheme'})\n },[themeCss])\n\n const mainContainerStyle = {\n backgroundColor: \"#e9e9e9\",\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\"\n };\n\n const mainHeaderStyle = {\n alignItems: 'center',\n //backgroundColor: '#bfbfbf',\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'space-between',\n padding: '0.5rem',\n position: 'absolute',\n top: '1rem',\n width: '100%',\n zIndex: 2000,\n color:\"#28282B\"\n }; \n\n const mainContentStyle = {\n paddingTop: \"3rem\",\n display: \"flex\",\n justifyContent: \"center\"\n };\n\n const pinkBorderStyle = {\n borderTop: \"1px solid #ff5f90\",\n bottom: \"1rem\",\n marginBottom: \"1rem\",\n marginTop: \"1rem\",\n opacity: \"1\",\n position: \"relative\",\n width: \"100%\"\n };\n\n return (\n
\n
\n \n

Log in

\n
\n
\n
\n {authApp?.status === \"loading\" ? (\n \n ) : null}\n {authApp?.status === \"loaded\" ? (\n \n ) : null}\n {[\"redirection_failed\",\"failedToLoadApp\"].includes(authApp?.status) ? (\n

ERR: {t(authApp.error)}

\n ) : null}\n
\n
\n
\n );\n});\n","import React from \"react\";\nimport { withFormik } from \"formik\";\nimport { string, object, ref } from \"yup\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport { apiClient } from \"../../api\";\nimport { withStore } from \"../../hoc/withStore\";\nimport { useTranslation } from \"react-i18next\";\n\nfunction SetPasswordForm(props) {\n const {\n values,\n touched,\n errors,\n handleChange,\n handleBlur,\n handleSubmit,\n isValid,\n dirty,\n status,\n isSubmitting,\n } = props;\n const {t} = useTranslation()\n return (\n
\n
\n {props.authApp?.appInfo?.logo?:null}\n

{props.authApp?.appInfo?.name||\"\"}

\n
\n \n
\n \n {t(\"Email\")}\n \n {\n handleBlur(e)\n }}\n data-testid=\"email-input\"\n />\n \n {errors.email && touched.email ? t(errors.email) : \"\"}\n

\n
\n
\n \n {t(\"Password\")}\n \n

*{t(\"Password should be 12 characters minimum\")}

\n {\n handleBlur(e)\n }}\n />\n \n {errors.password && touched.password ? t(errors.password) : \"\"}\n

\n
\n
\n \n {t(\"Confirm Password\")}\n \n {\n handleBlur(e)\n }}\n />\n \n {errors.confirmPassword ? t(errors.confirmPassword) : \"\"}\n

\n
\n \n {status === \"SERVER_ERROR\"\n ? t(\"Oops something went wrong, please try again after some time!\")\n : \"\"}\n

\n
\n \n {t('Set Password')}\n {isSubmitting ? : null}\n \n
\n

\n {t(\"Powered by\")}\n \"logo\"

\n \n
\n );\n}\n\nconst schema = object().shape({\n email: string()\n .required(\"Email is required\")\n .email(\"Valid Email is required\"),\n password: string()\n .required(\"Password is required\")\n .min(12, \"Password should be 12 characters minimum\"),\n confirmPassword: string()\n .required(\"Confirm Password is required\")\n .oneOf([ref(\"password\")], \"Password does not match\"),\n});\n\nexport const SetPassword3PAppFormWrapper = withStore(\n withFormik({\n mapPropsToValues: (props) => ({\n email: props.data.email,\n password: \"\",\n confirmPassword: \"\",\n }),\n validationSchema: schema,\n handleSubmit: (\n values,\n { setSubmitting, props, setFieldError, setStatus, resetForm }\n ) => {\n apiClient(\"co-nect/v1/setnewpassword\", {\n method: \"POST\",\n body: {\n email: values.email,\n password: values.password,\n },\n headers: {\n Authorization: `Bearer ${props.data.initialToken}`,\n },\n })\n .then((res) => {\n console.log(\"In close view\")\n props.authApp.closeView()\n setStatus(\"SUCCESS\");\n })\n .catch((err) => {\n setStatus(\"SERVER_ERROR\");\n setSubmitting(false);\n });\n },\n\n displayName: \"SignUpForm\",\n })(SetPasswordForm)\n);\n","import { observer } from \"mobx-react\";\nimport React, { useEffect, useLayoutEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\nimport { useStores } from \"../../hooks/useStore\";\nimport { SetPassword3PAppFormWrapper } from \"./SetPassword3PApp\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { styleInject } from \"../../common/helper\";\nimport { useTranslation } from \"react-i18next\";\nimport { LanguageSwitcher } from \"../shared/LanguageSwitcher\";\n\n\n// https://local-dev.dev.bubl.cloud/auth/new-password/92f2e365-fe04-4657-8993-c02510d29e9b?redirectPath=%2Fservice%2Fv1%2F92f2e365-fe04-4657-8993-c02510d29e9b%2F&email=gurpreetseedhar%2B101%40gmail.com\n\nexport const NewPasswordFormWrapper = observer(() => {\n const params = useParams();\n const queryParams = useQueryParams();\n const { authApp } = useStores();\n const {t} = useTranslation()\n useEffect(() => {\n authApp.setCurrentApp(\n params.appId,\n null,\n decodeURI(queryParams.get(\"redirectPath\") ?? \"\")\n );\n // eslint-disable-next-line\n }, []);\n const themeCss = authApp?.appInfo?.loginThemeCss\n useLayoutEffect(()=>{\n styleInject(themeCss, {id:'appTheme'})\n },[themeCss])\n return (\n \n \n
\n {authApp?.status === \"loading\" ? (\n \n ) : null}\n {authApp?.status === \"loaded\" ? (\n \n ) : null}\n {[\"redirection_failed\",\"failedToLoadApp\"].includes(authApp?.status) ? (\n

ERR: {t(authApp.error)}

\n ) : null}\n
\n \n );\n});\n","import React, { lazy, Suspense, useState } from \"react\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { ToastContainer } from \"react-toastify\";\nimport { PrivateRoute } from \"./components/shared/PrivateRoute\";\nimport { StoreProvider } from \"./stores/storeContexts\";\nimport { useStores } from \"./hooks/useStore\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport { AppLogin } from \"./components/Auth/AppLogin\";\nimport { NewPasswordFormWrapper } from \"./components/Auth/NewPasswordWrapper\";\n\nconst HomeWrapper = lazy(() => import(\"./components/Home\"));\nconst EmailVerifyLazy = lazy(() => import(\"./components/Auth/EmailVerify\"));\nconst ResetPasswordFormWrapperLazy = lazy(() =>\n import(\"./components/Auth/ResetPassword\")\n);\nconst EmailConfirmLazy = lazy(() => import(\"./components/Auth/EmailConfirm\"));\nconst DashboardLazy = lazy(() => import(\"./components/Dashboard/Dashboard\"));\nconst LogsLazy = lazy(() => import(\"./components/Logs/Logs\"));\n\nfunction CheckPreLogin(props) {\n let { auth } = useStores();\n auth\n .preLogin()\n .then(() => {\n props.setInitialLoader(false);\n })\n .catch((err) => {\n props.setInitialLoader(false);\n });\n return (\n \n
\n \n
\n \n );\n}\n\nfunction App() {\n let [initialLoader, setInitialLoader] = useState(true);\n return (\n
\n \n {initialLoader ? (\n \n ) : (\n \n Loading...}>\n \n \n \n \n \n {\n let appId = props.match.params.appId;\n if (window.opener && window.opener.postAppActivation) {\n window.opener.postAppActivation(appId);\n window.opener.focus();\n setTimeout(() => {\n window.close();\n }, 1000);\n } else {\n window.location = \"/dashboard\";\n }\n\n return
redirecting...
;\n }}\n />\n \n \n \n \n \n
\n
\n
\n )} \n \n \n
\n
\n );\n}\n\nexport default App;\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.0/8 are 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 headers: { 'Service-Worker': 'script' },\n })\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\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import 'core-js/es/promise';\nimport 'core-js/es/set';\nimport 'core-js/es/map';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './i18n';\n// import 'mobx-react-lite/batchingForReactDom'\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nrequire('./index.css');\n\nfunction bootstrap() {\n ReactDOM.render(\n \n \n ,\n 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\n serviceWorker.unregister();\n}\n\n// if (process.env.NODE_ENV === 'development') {\n // const { worker } = require('./mocks/browser')\n // worker.start()\n// }\nfunction loadConfig(cb) {\n var scriptElm = document.createElement('script');\n scriptElm.id = 'config-script';\n scriptElm.src = `${\n process.env.PUBLIC_URL\n }/config.js?t=${new Date().getTime()}`;\n scriptElm.onload = cb;\n document.body.appendChild(scriptElm);\n}\n\nloadConfig(bootstrap);\n","import React from 'react'\nimport { StoreContext } from '../stores/storeContexts'\n\nexport const useStores = () => React.useContext(StoreContext)\n","const { DEFAULT_APP_ICON } = require(\"../constants\")\n\nexport function getAppURL(app) {\n if(app.appLogo) {\n if(app.appLogo.startsWith('data')) {\n return app.appLogo\n }\n return `data:image/png;base64,${app.appLogo}`\n }\n return DEFAULT_APP_ICON\n}\n\nexport function styleInject(css, { id } = {}) {\n if (!css || typeof document === 'undefined') return\n \n let existingStyle = document.getElementById(id);\n if(existingStyle) {\n existingStyle.parentNode.removeChild(existingStyle);\n }\n\n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.id = id;\n style.type = 'text/css'\n\n head.appendChild(style)\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}","import { apiClient, setApiToken } from './api-client';\n\nclass ApiError extends Error {\n constructor(response, data, message) {\n super(message)\n this.response = response;\n this.data = data\n }\n}\nexport { apiClient, setApiToken, ApiError };\n","import { makeAutoObservable, runInAction } from 'mobx';\nimport { setApiToken, apiClient } from '../api'\nimport * as browserCookies from 'browser-cookies'\n// const localStorageTokenKey = '__bubl_token__'\nexport class AuthStore {\n constructor () {\n\n makeAutoObservable(this)\n // let tokenData = localStorage.getItem(localStorageTokenKey)\n let host = window.location.host\n if (process.env.NODE_ENV ==='development' || host.indexOf('local-dev.') !== -1) {\n this.isUnderDevelopment = true\n let bubl = browserCookies.get('user-bubl')\n if (bubl) {\n this.uuid = bubl\n window.APP_CONFIG.bublDomain = browserCookies.get('user-bubl-domain')\n }\n } else if(process.env.REACT_APP_IS_BUBL_FRONTEND) {\n // const uuid5Regex = /^(.*\\.)?([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})\\.(.*)/\n // let matches = host.match(uuid5Regex)\n // if (matches && matches.length) {\n // this.uuid = matches[matches.length - 2]\n // window.APP_CONFIG.bublCloud = matches[matches.length - 1]\n // }\n window.APP_CONFIG.bublDomain = window.location.host \n this.isUnderBubl = true\n }\n\n if(this.uuid) {\n window.userBubl = this.uuid\n }\n }\n\n \n isUnderBubl = false\n\n \n isUnderDevelopment = false\n\n \n uuid = null\n\n \n token = null\n\n \n isAuthenticated = false\n\n setAuthenticated(isAuthenticated) {\n this.isAuthenticated = isAuthenticated\n }\n\n preLogin(skipPreCheck = false) {\n return new Promise((resolve, reject) => {\n if (!skipPreCheck && this.isAuthenticated) {\n return reject('Already authenticated')\n }\n // if (!!this.uuid) {\n // return reject('TokenNotFound')\n // }\n\n // this.token = browserCookies.get(`bublauth-${this.uuid}`)\n // setApiToken(this.token)\n\n apiClient('co-nect/v1/auth', {\n method: 'POST'\n })\n .then(({ data }) => {\n setApiToken(data.accessToken)\n runInAction(() => {\n this.isAuthenticated = true\n })\n resolve('LoggedIn')\n })\n .catch(err => {\n setApiToken('')\n reject('api failed')\n })\n })\n }\n\n // \n // setUser ({ token }) {\n // browserCookies.set(`bublauth-${this.uuid}`, token, {\n // path: '/',\n // expires: new Date(Date.now() + 7 * 24 * 3600 * 1000)\n // })\n // if (this.isUnderBubl || this.isUnderDevelopment) {\n // this.token = token\n // setApiToken(this.token)\n // this.isAuthenticated = true\n // }\n // return false;\n // }\n\n clearUser = () => {\n browserCookies.set('user-bubl','', {\n path: '/',\n expires: new Date(),\n domain: `.${window.location.host}`\n })\n browserCookies.set('user-bubl-domain','', {\n path: '/',\n expires: new Date(),\n domain: `.${window.location.host}`\n })\n browserCookies.set('bubl-access','', {\n path: '/',\n expires: new Date(),\n domain: `.${window.location.host}`\n })\n\n runInAction(() => {\n this.isAuthenticated = false\n this.token = null\n this.uuid = null\n })\n setApiToken(null)\n window.userBubl = null\n window.location.assign('/')\n // localStorage.removeItem(localStorageTokenKey)\n };\n}\n","import { runInAction, makeAutoObservable } from 'mobx';\nimport { apiClient } from '../api';\nimport { toast } from 'react-toastify';\n\nexport class ApplicationStore {\n\tconstructor() {\n\t\tmakeAutoObservable(this);\n\t}\n\ttheme = 'light';\n\n\tthemes = ['light', 'dark'];\n\n\tcurrentMenu = null;\n\n\tshowSearch = false;\n\n\tapps = null;\n\n\tloadingApps = false;\n\n\tenv = {};\n\n\tdeveloperTerminalURL = null;\n\n\tgetApps() {\n\t\tthis.loadingApps = true;\n\t\tapiClient('co-nect/v1/externalapps', {\n\t\t\tmethod: 'GET',\n\t\t})\n\t\t\t.then(({ data }) => {\n\t\t\t\trunInAction(() => {\n\t\t\t\t\tthis.apps = data;\n\t\t\t\t\tthis.loadingApps = false;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(({ response, data }) => {\n\t\t\t\trunInAction(() => {\n\t\t\t\t\tthis.loadingApps = false;\n\t\t\t\t\tthis.apps = [];\n\t\t\t\t});\n\t\t\t\tconsole.error('application load failed', response);\n\t\t\t\t// throw new ApiError(response, data, 'application load failed')\n\t\t\t});\n\t}\n\n\tsetCurrentMenu(menuName) {\n\t\tthis.currentMenu = menuName ? menuName : null;\n\t}\n\n\tsetSearchState(state) {\n\t\tthis.showSearch = state;\n\t}\n\n\tsetAppStatus(appId, isActive) {\n\t\tthis.apps.some((app) => {\n\t\t\tif (appId === app.id) {\n\t\t\t\tapp.status = 'ACTIVE';\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tchangeTheme(theme) {\n\t\tconsole.log('changing theme');\n\t\tdocument.body.classList.remove(...this.themes);\n\t\tif (theme) {\n\t\t\tdocument.body.classList.add(theme);\n\t\t\tthis.theme = theme;\n\t\t}\n\t}\n\n\tcompleteActivation(appId) {\n\t\tthis.apps.some((app) => {\n\t\t\tif (String(app.id) === String(appId)) {\n\t\t\t\tapp.activating = false;\n\t\t\t\tapp.status = 'ACTIVE';\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tupdateApps() {\n\t\tapiClient(`co-nect/v1/externalapps/update`, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: {\n\t\t\t\tupdateAll: true,\n\t\t\t},\n\t\t})\n\t\t\t.then(() => {\n\t\t\t\ttoast.success('Apps will be updated soon!!', {\n\t\t\t\t\tautoClose: true,\n\t\t\t\t\tcloseButton: true,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\ttoast.error('Apps update failed, please re-try after sometime', {\n\t\t\t\t\tautoClose: true,\n\t\t\t\t\tcloseButton: true,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tinstallApp(app) {\n\t\tlet oldStatus = app.status;\n\t\tapp.status = 'INSTALLING';\n\t\tapiClient(`co-nect/v1/externalapps/install/${app.id}`, {\n\t\t\tmethod: 'POST',\n\t\t})\n\t\t\t.then(({ data, response }) => {\n\t\t\t\tthis.getApps();\n\t\t\t})\n\t\t\t.catch(({ response }) => {\n\t\t\t\trunInAction(() => {\n\t\t\t\t\tapp.status = oldStatus;\n\t\t\t\t});\n\t\t\t\tconsole.error('installation error', response);\n\t\t\t\ttoast.error(\n\t\t\t\t\t'App installation failed, please try again after some time.',\n\t\t\t\t\t{\n\t\t\t\t\t\tautoClose: true,\n\t\t\t\t\t\tcloseButton: true,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tactivateApp(app) {\n\t\tapp.activating = true;\n\t\tapiClient('externalapps/activate', {\n\t\t\tmethod: 'POST',\n\t\t\tbody: {\n\t\t\t\tid: app.id,\n\t\t\t},\n\t\t})\n\t\t\t.then(({ data, response }) => {\n\t\t\t\tif (!window.postAppActivation) {\n\t\t\t\t\twindow.postAppActivation = this.completeActivation.bind(this);\n\t\t\t\t}\n\t\t\t\t// window.open(`http://${window.location.host}/auth-complete/1`,'Authenticate'+app.name, 'menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes')\n\t\t\t\tif (data.redirect) {\n\t\t\t\t\twindow.open(\n\t\t\t\t\t\tdata.redirect,\n\t\t\t\t\t\t'Authenticate' + app.name,\n\t\t\t\t\t\t'menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.completeActivation(app.id);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(({ response }) => {\n\t\t\t\tapp.activationError = 'Error Occurred';\n\t\t\t\tconsole.error('activation error', response);\n\t\t\t});\n\t}\n\n\topenWebApp(app) {\n\t\tapp.opening = true;\n\t\twindow.location.href = `https://${window.APP_CONFIG.bublDomain}/service/v1/${app.id}/`;\n\n\t\t// apiClient(`externalapps/webapps/${app.id}`, {\n\t\t// method: 'GET'\n\t\t// }).then(({data, response})=>{\n\t\t// //${data.appDomain}\n\t\t// let url = `https://${window.APP_CONFIG.bublDomain}/redirect?token=${data.tempToken}`\n\t\t// var appWindow = window.open();\n\t\t// //prevent access of window.opener https://mathiasbynens.github.io/rel-noopener/\n\t\t// appWindow.opener = null;\n\t\t// appWindow.location = url;\n\t\t// app.opening = false\n\t\t// }).catch(({response})=>{\n\t\t// app.opening = false\n\t\t// toast.error('failed to fetch temporary token, please try again after some time.', {\n\t\t// autoClose: true,\n\t\t// closeButton: true\n\t\t// })\n\t\t// console.error('app open error', response)\n\t\t// })\n\t}\n\n\tgetEnvironment() {\n\t\tapiClient('environment', {\n\t\t\tmethod: 'GET',\n\t\t})\n\t\t\t.then(({ data, response }) => {\n\t\t\t\trunInAction(() => {\n\t\t\t\t\tthis.env = data;\n\t\t\t\t});\n\t\t\t\treturn apiClient('developerconfig', {\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t});\n\t\t\t})\n\t\t\t.then(({ data, response }) => {\n\t\t\t\tconsole.log('terminal', data);\n\t\t\t\trunInAction(() => {\n\t\t\t\t\tthis.developerTerminalURL = data.developerURL;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(({ response }) => {\n\t\t\t\tconsole.error('terminal api error', response);\n\t\t\t});\n\t}\n}\n","import { runInAction, makeAutoObservable } from 'mobx';\nimport { apiClient } from '../api'\nimport { getBublBaseUrl } from '../api/api-client';\n\nexport class AuthAppStore {\n\n constructor() {\n \n makeAutoObservable(this)\n }\n\n currentAppId = null;\n status = 'loading';\n appInfo = null;\n redirectUrl = null;\n redirectPath = null;\n error = null;\n\n mapTheme(customTheme) {\n const theme = {\n appBgColor: \"rgb(var(--color-surface))\",\n appTextColor: \"rgb(var(--color-on-surface))\",\n appTextErrorColor: \"rgb(var(--color-error))\",\n appHeadingColor: \"rgb(var(--color-primary))\",\n appHeadingFontWeight: 700,\n appHeadingFontSize: '1.25rem',\n appInputLabelColor: \"rgba(var(--color-on-surface)\",\n appInputLabelFontSize: '0.875rem',\n appInputLabelFontWeight: '500',\n appInputFieldBgColor: 'rgb(var(--color-surface))',\n appInputFieldColor: 'rgb(var(--color-on-surface))',\n appInputFieldFontSize: '1.125rem',\n appInputFieldShadow: \"var(--box-shadow-outline)\",\n appInputErrorFontSize: '0.875rem',\n appInputErrorBgColor: 'trasnparent',\n appInputErrorColor: 'rgb(var(--color-error))',\n appInputBtnBgColor: 'rgba(var(--color-primary))',\n appInputBtnColor: \"rgb(var(--color-on-primary))\",\n appInputBtnFontWeight: 700,\n appInputBtnFontSize: '1rem',\n }\n Object.keys(theme).forEach(key=>{\n if(customTheme[key]) {\n theme[key] = customTheme[key] \n }\n })\n return theme\n }\n mapLoginCustomization(customLoginCustomizations) {\n let loginCustomizations = customLoginCustomizations\n if(typeof loginCustomizations ==='string' && loginCustomizations) {\n try {\n loginCustomizations = JSON.parse(loginCustomizations)\n }catch(e) {\n loginCustomizations = null\n }\n if(typeof loginCustomizations === 'object' && Object.keys(loginCustomizations).length) {\n return this.mapTheme(loginCustomizations) \n }\n }\n return this.mapTheme({})\n }\n\n // Dermatologist Theme\n // #auth-page-container {background-color: #fff;color: #000;width: 100%;height: 100%;justify-content: center;align-items: center;flex-direction: column;display: flex;}#auth-laoder-wrapper {justify-content: center;align-items: center;flex-direction: column;display: flex;}#error-text {color: #ff5f90;}#loader-spinner {color: #ff5f90;}#auth-full-container {display: flex;flex-direction: column;justify-content: center;flex-grow: 1;padding-left: 0.5rem;padding-right: 0.5rem;width: 100%;}#auth-header {display: flex;flex-direction: row;align-items: center;justify-content: center;}#auth-app-logo {width: 100%;height: auto;}#auth-header-heading {display: none;}#auth-app-form {padding-left: 0.5rem;padding-right: 0.5rem;margin-bottom: 1rem;padding-top: 1.5rem;padding-bottom: 2rem;}.auth-form-row {margin-bottom: 1.5rem;}#auth-form-error {color: #ff5f90;font-size: 0.875rem;font-style: italic;margin-bottom: 1.5rem;height: 0.5rem;}#auth-submit-wrapper {justify-content: space-between;align-items: center;flex-direction: column;display: flex;}#auth-app-submit {color: #000;font-size: 1rem;font-weight: 400;background-color: #ff5f90;background-color: #ffeaf0 !important;border: 4px solid #ff5f90 !important;border-radius: 3rem !important;color: #000 !important;padding: 0.5rem 1rem !important;width: 10rem;outline: none;}@media only screen and (min-device-width: 768px) {#auth-app-submit {border: 4px solid #ff5f90 !important;border-radius: 3.5rem !important;padding: 1rem 1.4rem !important;width: 14rem;background-color: #ffeaf0 !important;}}.auth-app-submit-disabled {cursor: not-allowed;}#auth-app-btn-spinner {color: #ff5f90;}#auth-app-powered-by {text-align: center;margin-top: 1rem;font-size: 0.875rem;height: 2rem;justify-content: center;align-items: center;display: flex;}.auth-app-input-label {display: none;}.auth-app-input-field {border: 2px solid #ff5f90;border-radius: 20px;font-size: 18px;padding: 1rem;background-color: #fff;cursor: auto;width: 100%;box-shadow: none;margin-bottom: 0.25rem;line-height: 1.25;border-width: 1px;-webkit-appearance: none;appearance: none;}.auth-app-input-field:focus {outline: 0;border: 2px solid #000;box-shadow: none;}.auth-app-input-error {color: #ff5f90;font-size: 0.875rem;font-style: italic;height: 0.5rem;}@media (min-width: 1024px) {#auth-laoder-wrapper {min-width: 520px;}#auth-full-container {padding-left: 2rem;padding-right: 2rem;}#auth-app-form {padding-left: 2rem;padding-right: 2rem;}}\n getLoginThemeCss(customLoginCustomizations) {\n const baseTheme = `\n #auth-page-container {\n background-color: rgb(var(--color-surface));\n color: rgb(var(--color-on-surface));\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n display: flex;\n }\n #auth-laoder-wrapper {\n justify-content: center;\n align-items: center;\n flex-direction: column;\n display: flex;\n }\n #error-text {\n color: rgb(var(--color-error))\n }\n #loader-spinner {\n color: rgb(var(--color-primary));\n }\n \n #auth-full-container{\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-grow: 1;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n width: 100%;\n }\n \n #auth-header {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n }\n \n #auth-app-logo {\n width: 2rem;\n height: 2rem;\n }\n \n #auth-header-heading {\n color: rgb(var(--color-primary));\n font-weight: 700;\n font-size: 1.25rem;\n padding-left: 1rem;\n }\n \n #auth-app-form {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n margin-bottom: 1rem;\n padding-top: 1.5rem;\n padding-bottom: 2rem;\n }\n \n .auth-form-row {\n margin-bottom: 1.5rem;\n }\n \n #auth-form-error {\n color: rgb(var(--color-error));\n font-size: 0.875rem;\n font-style: italic;\n margin-bottom: 1.5rem;\n height: 0.5rem;\n }\n \n #auth-submit-wrapper {\n justify-content: space-between;\n align-items: center;\n flex-direction: column;\n display: flex;\n }\n \n #auth-app-submit{\n color: rgb(var(--color-on-primary));\n font-size: 1rem;\n font-weight: 700;\n background-color: rgba(var(--color-primary));\n width: 100%;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-radius: 0.25rem;\n }\n \n .auth-app-submit-disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n \n #auth-app-btn-spinner {\n color: rgb(var(--color-primary));\n }\n \n #auth-app-powered-by{\n text-align: center;\n margin-top: 1rem;\n font-size: 0.875rem;\n height: 2rem;\n justify-content: center;\n align-items: center;\n display: flex;\n }\n \n .auth-app-input-label {\n color: rgba(var(--color-on-surface));\n font-size: 0.875rem;\n font-weight: 500;\n margin-bottom: 0.5rem;\n display: block;\n }\n \n .auth-app-input-field {\n color: rgb(var(--color-on-surface));\n font-size: 1.125rem;\n background-color: rgb(var(--color-surface));\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAPhJREFUOBHlU70KgzAQPlMhEvoQTg6OPoOjT+JWOnRqkUKHgqWP4OQbOPokTk6OTkVULNSLVc62oJmbIdzd95NcuGjX2/3YVI/Ts+t0WLE2ut5xsQ0O+90F6UxFjAI8qNcEGONia08e6MNONYwCS7EQAizLmtGUDEzTBNd1fxsYhjEBnHPQNG3KKTYV34F8ec/zwHEciOMYyrIE3/ehKAqIoggo9inGXKmFXwbyBkmSQJqmUNe15IRhCG3byphitm1/eUzDM4qR0TTNjEixGdAnSi3keS5vSk2UDKqqgizLqB4YzvassiKhGtZ/jDMtLOnHz7TE+yf8BaDZXA509yeBAAAAAElFTkSuQmCC);\n background-repeat: no-repeat;\n background-attachment: scroll;\n background-size: 16px 18px;\n background-position: 98% 50%;\n cursor: auto;\n width: 100%;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0.25rem;\n line-height: 1.25;\n border-width: 1px;\n border-radius: 0.25rem;\n -webkit-appearance: none;\n appearance: none;\n }\n .auth-app-input-field:focus {\n outline: 0;\n box-shadow: var(--box-shadow-outline);\n }\n \n .auth-app-input-error {\n color: rgb(var(--color-error));\n font-size: 0.875rem;\n font-style: italic;\n height: 0.5rem;\n }\n \n @media (min-width: 1024px) {\n #auth-laoder-wrapper {\n min-width: 520px;\n }\n #auth-full-container {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n #auth-app-form {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n }\n \n \n `\n if(customLoginCustomizations && typeof customLoginCustomizations === 'string') {\n try {\n JSON.parse(customLoginCustomizations)\n // handle older version customization where we supported JSON,fallback to default\n return baseTheme;\n }catch(e) {\n return customLoginCustomizations;\n }\n }\n return baseTheme;\n }\n\n setCurrentApp(id, redirectUrl, redirectPath){\n this.currentAppId = id\n this.redirectUrl = redirectUrl\n this.redirectPath = redirectPath\n this.status = 'loading';\n apiClient(`co-nect/v1/appinfo/${id}`, {\n method: \"GET\",\n }).then(res=>{\n console.log(\"res \", res)\n runInAction(()=>{\n this.status = 'loaded';\n this.appInfo = {...res.data, loginThemeCss: this.getLoginThemeCss(res?.data?.loginCustomizations)};\n })\n }).catch(res=>{\n runInAction(()=>{\n this.status = 'failedToLoadApp';\n this.error=res?.data?.error ?? 'Something went wrong, Please try again!'\n })\n console.log(\"app err\", res)\n })\n \n }\n\n closeView(){\n if(this.redirectUrl) {\n window.location.href = this.redirectUrl\n }else if(this.redirectPath){\n let url = new URL(this.redirectPath, getBublBaseUrl())?.href\n if(url) {\n window.location.href = url; \n }\n }else {\n this.status = 'redirection_failed'\n this.error = 'Redirection URL not found:'\n }\n //\"http://testlocal.com:5000/success.html\"\n console.log(\"close this window\")\n }\n\n}","import React, { useState } from 'react'\nimport { observer } from 'mobx-react' // 6.x or mobx-react-lite@1.4.0\nimport {AuthStore} from './AuthStore'\nimport {ApplicationStore} from './ApplicationStore'\nimport { AuthAppStore } from './AuthApp'\n\nfunction createStore() {\n return {\n auth: new AuthStore(),\n application: new ApplicationStore(),\n authApp: new AuthAppStore()\n }\n}\nexport const StoreContext = React.createContext(null)\n\nexport const StoreProvider = observer(({ children }) => {\n const [store] = useState(()=>createStore())\n return {children}\n})\n","import 'whatwg-fetch';\n\nlet token = null;\nexport function setApiToken(apiToken) {\n\ttoken = apiToken;\n}\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nexport function getBublBaseUrl(instance = null) {\n\tif (instance !== null) {\n\t\treturn `https://${instance}-${window.APP_CONFIG.bublDomain.replace(\n\t\t\t'.0.',\n\t\t\t'.1.'\n\t\t)}`;\n\t}\n\t//${window.APP_CONFIG.bublApiBaseUrl}\n\treturn `https://${window.APP_CONFIG.bublDomain}`;\n}\nexport function apiClient(\n\tendpoint,\n\t{\n\t\tisBublManager,\n\t\tbody,\n\t\tmethod,\n\t\theaders: additionalHeaders,\n\t\t...customConfig\n\t} = {},\n\tinstance = null\n) {\n\tconst headers = { 'content-type': 'application/json' };\n\tif (token) {\n\t\theaders.Authorization = `Bearer ${token}`;\n\t}\n\tconst config = {\n\t\t...(isBublManager\n\t\t\t? {}\n\t\t\t: { credentials: IS_DEV ? 'include' : 'same-origin' }),\n\t\tmethod: method,\n\t\t...customConfig,\n\t\theaders: {\n\t\t\t...headers,\n\t\t\t...additionalHeaders,\n\t\t},\n\t};\n\tif (body) {\n\t\tconfig.body = JSON.stringify(body);\n\t}\n\tlet urlPrefix = isBublManager\n\t\t? window.APP_CONFIG.apiBaseUrl\n\t\t: getBublBaseUrl(instance);\n\treturn window\n\t\t.fetch(`${urlPrefix}/${endpoint}`, config)\n\t\t.then(async (response) => {\n\t\t\tlet data;\n\t\t\ttry {\n\t\t\t\tdata = await response.json();\n\t\t\t} catch (e) {\n\t\t\t\t//\n\t\t\t}\n\t\t\tif (response.ok) {\n\t\t\t\treturn { data, response };\n\t\t\t} else {\n\t\t\t\treturn Promise.reject({ response: response, data: data });\n\t\t\t}\n\t\t});\n}\n","import React from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { observer } from \"mobx-react\";\n\nexport const LanguageSwitcher = observer(({ isOnNavbar, isStatic , isTransparent}) => {\n let { i18n } = useTranslation();\n const Switcher = (\n
\n {\n i18n.changeLanguage(\"en-US\");\n }}\n >\n
EN
\n \n |\n {\n i18n.changeLanguage(\"nl-NL\");\n }}\n >\n
NL
\n \n
\n );\n \n if (isStatic)\n return
{Switcher}
;\n\n return Switcher;\n});\n"],"sourceRoot":""}