passbolt-styleguide 5.10.4 → 5.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/RELEASE_NOTES.md +3 -3
  2. package/build/css/help.min.css +2 -2
  3. package/build/css/public.min.css +2 -2
  4. package/build/css/themes/default/api_authentication.min.css +2 -2
  5. package/build/css/themes/default/api_cloud.min.css +2 -2
  6. package/build/css/themes/default/api_main.min.css +2 -2
  7. package/build/css/themes/default/api_reports.min.css +2 -2
  8. package/build/css/themes/default/api_webinstaller.min.css +2 -2
  9. package/build/css/themes/default/ext_app.min.css +2 -2
  10. package/build/css/themes/default/ext_authentication.min.css +2 -2
  11. package/build/css/themes/default/ext_external.min.css +2 -2
  12. package/build/css/themes/default/ext_in_form_cta.min.css +2 -2
  13. package/build/css/themes/default/ext_in_form_menu.min.css +2 -2
  14. package/build/css/themes/default/ext_quickaccess.min.css +2 -2
  15. package/build/css/themes/midgar/api_authentication.min.css +2 -2
  16. package/build/css/themes/midgar/api_main.min.css +2 -2
  17. package/build/css/themes/midgar/api_reports.min.css +2 -2
  18. package/build/css/themes/midgar/ext_app.min.css +2 -2
  19. package/build/css/themes/midgar/ext_authentication.min.css +2 -2
  20. package/build/css/themes/midgar/ext_in_form_cta.min.css +2 -2
  21. package/build/css/themes/midgar/ext_in_form_menu.min.css +2 -2
  22. package/build/css/themes/midgar/ext_quickaccess.min.css +2 -2
  23. package/build/js/dist/api-account-recovery.js +1 -1
  24. package/build/js/dist/api-recover.js +1 -1
  25. package/build/js/dist/api-setup.js +1 -1
  26. package/package.json +1 -1
  27. package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.js +0 -5
  28. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsPassword.js +6 -8
  29. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTotp.js +6 -9
  30. package/src/react-extension/contexts/ApiRecoverContext.js +2 -13
  31. package/src/react-extension/contexts/ApiSetupContext.js +2 -13
package/RELEASE_NOTES.md CHANGED
@@ -1,3 +1,3 @@
1
- v5.10.4
2
- Provide fixes to:
3
- - Configure MFA dialog is still present even when configured
1
+ v5.10.6
2
+
3
+ This version rollsback the display of Safari support for a later release.
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * @name passbolt-styleguide
3
- * @version v5.10.4
4
- * @date 2026-03-09
3
+ * @version v5.10.6
4
+ * @date 2026-03-10
5
5
  * @copyright Copyright 2023 Passbolt SA
6
6
  * @source https://github.com/passbolt/passbolt_styleguide
7
7
  * @license AGPL-3.0
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see api-account-recovery.js.LICENSE.txt */
2
- (()=>{"use strict";var e,t,n,r={762(e,t,n){var r=n(6540),s=n(5338);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(null,arguments)}const a=r.createContext({user:null,users:null,roles:null,rememberMeOptions:{},resources:null,resource:null,shareResources:null,selectedResources:null,selectedUser:null,folders:null,resourceCommentId:null,mustRefreshComments:!1,siteSettings:null,userSettings:null,onCheckIsAuthenticatedRequested:null});function i(e){return class extends r.Component{render(){return r.createElement(a.Consumer,null,t=>r.createElement(e,o({context:t},this.props)))}}}const l=a;var c=n(5556),u=n.n(c);class h extends Error{constructor(e,t){super(e),this.name="PassboltApiFetchError",this.data=t||{}}}const d=h;class p extends Error{constructor(){super("An internal error occurred. The server response could not be parsed. Please contact your administrator."),this.name="PassboltBadResponseError"}}const m=p;class g extends Error{constructor(e){super(e=e||"The service is unavailable"),this.name="PassboltServiceUnavailableError"}}const E=g,f=["GET","POST","PUT","DELETE"];class v{constructor(e){if(this.options=e,!this.options.getBaseUrl())throw new TypeError("ApiClient constructor error: baseUrl is required.");if(!this.options.getResourceName())throw new TypeError("ApiClient constructor error: resourceName is required.");try{let e=this.options.getBaseUrl().toString();e.endsWith("/")&&(e=e.slice(0,-1));let t=this.options.getResourceName();t.startsWith("/")&&(t=t.slice(1)),t.endsWith("/")&&(t=t.slice(0,-1)),this.baseUrl=`${e}/${t}`,this.baseUrl=new URL(this.baseUrl)}catch(e){throw new TypeError("ApiClient constructor error: b.",{cause:e})}this.apiVersion="api-version=v2"}getDefaultHeaders(){return{Accept:"application/json","content-type":"application/json"}}async buildFetchOptions(){const e=await this.options.getHeaders();return{credentials:"include",headers:{...this.getDefaultHeaders(),...e}}}async get(e,t){this.assertValidId(e);const n=this.buildUrl(`${this.baseUrl}/${e}`,t||{});return this.fetchAndHandleResponse("GET",n)}async delete(e,t,n,r){let s;this.assertValidId(e),void 0===r&&(r=!1),s=r?this.buildUrl(`${this.baseUrl}/${e}/dry-run`,n||{}):this.buildUrl(`${this.baseUrl}/${e}`,n||{});let o=null;return t&&(o=this.buildBody(t)),this.fetchAndHandleResponse("DELETE",s,o)}async findAll(e){const t=this.buildUrl(this.baseUrl.toString(),e||{});return this.fetchAndHandleResponse("GET",t)}async create(e,t){const n=this.buildUrl(this.baseUrl.toString(),t||{}),r=this.buildBody(e);return this.fetchAndHandleResponse("POST",n,r)}async update(e,t,n,r){let s;this.assertValidId(e),void 0===r&&(r=!1),s=r?this.buildUrl(`${this.baseUrl}/${e}/dry-run`,n||{}):this.buildUrl(`${this.baseUrl}/${e}`,n||{});let o=null;return t&&(o=this.buildBody(t)),this.fetchAndHandleResponse("PUT",s,o)}async updateAll(e,t={}){const n=this.buildUrl(this.baseUrl.toString(),t),r=e?this.buildBody(e):null;return this.fetchAndHandleResponse("PUT",n,r)}assertValidId(e){if(!e)throw new TypeError("ApiClient.assertValidId error: id cannot be empty");if("string"!=typeof e)throw new TypeError("ApiClient.assertValidId error: id should be a string")}assertMethod(e){if("string"!=typeof e)throw new TypeError("ApiClient.assertValidMethod method should be a string.");if(f.indexOf(e.toUpperCase())<0)throw new TypeError(`ApiClient.assertValidMethod error: method ${e} is not supported.`)}assertUrl(e){if(!e)throw new TypeError("ApliClient.assertUrl error: url is required.");if(!(e instanceof URL))throw new TypeError("ApliClient.assertUrl error: url should be a valid URL object.");if("https:"!==e.protocol&&"http:"!==e.protocol)throw new TypeError("ApliClient.assertUrl error: url protocol should only be https or http.")}assertBody(e){if(!(e instanceof FormData)&&"string"!=typeof e)throw new TypeError("ApiClient.assertBody error: body should be a string or a FormData.")}buildBody(e){return JSON.stringify(e)}buildUrl(e,t){if("string"!=typeof e)throw new TypeError("ApiClient.buildUrl error: url should be a string.");const n=new URL(`${e}.json?${this.apiVersion}`);t=t||{};for(const[e,r]of Object.entries(t)){if("string"!=typeof e)throw new TypeError("ApiClient.buildUrl error: urlOptions key should be a string.");if("string"==typeof r)n.searchParams.append(e,r);else{if(!Array.isArray(r))throw new TypeError("ApiClient.buildUrl error: urlOptions value should be a string or array.");r.forEach(t=>{n.searchParams.append(e,t)})}}return n}async sendRequest(e,t,n,r){this.assertUrl(t),this.assertMethod(e),n&&this.assertBody(n);const s="undefined"!=typeof customApiClientFetch?customApiClientFetch:fetch,o={...await this.buildFetchOptions(),...r};o.method=e,n&&(o.body=n);try{return await s(t.toString(),o)}catch(e){throw console.error(e),navigator.onLine?new E("Unable to reach the server, an unexpected error occurred"):new E("Unable to reach the server, you are not connected to the network")}}async fetchAndHandleResponse(e,t,n,r){const s=await this.sendRequest(e,t,n,r);return this.parseResponseJson(s)}async parseResponseJson(e){let t;try{t=await e.json()}catch(t){throw console.debug(e.url.toString(),t),new m(t,e)}if(!e.ok){const n=t.header.message;throw new d(n,{code:e.status,body:t.body})}return t}}const y=class{constructor(e){e.setResourceName("auth"),this.apiClient=new v(e)}async logout(){const e=this.apiClient.buildUrl(`${this.apiClient.baseUrl}/logout`,{}),t=await this.apiClient.sendRequest("POST",e,null,{redirect:"manual"});if(!t.ok&&0!==t.status)return this._logoutLegacy()}async _logoutLegacy(){const e=this.apiClient.buildUrl(`${this.apiClient.baseUrl}/logout`,{}),t=await this.apiClient.sendRequest("GET",e,null,{redirect:"manual"});if(!t.ok&&0!==t.status)throw new d("An unexpected error happened during the legacy logout process",{code:t.status})}};function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},b.apply(null,arguments)}const S=r.createContext({userId:null,authenticationToken:null,state:null,unexpectedError:null,onInitializeAccountRecoveryRequested:()=>{},logoutUserAndRefresh:()=>{}});class w extends r.Component{constructor(e){super(e),this.state=Object.assign(this.defaultState,e.value),this.authLogoutService=new y(e.context.getApiClientOptions())}get defaultState(){return{userId:null,authenticationToken:null,state:R.INITIAL_STATE,unexpectedError:null,onInitializeAccountRecoveryRequested:this.onInitializeAccountRecoveryRequested.bind(this),logoutUserAndRefresh:this.logoutUserAndRefresh.bind(this)}}async onInitializeAccountRecoveryRequested(){if(!this.state.userId||!this.state.authenticationToken)return this.setState({state:R.REQUEST_INVITATION_ERROR});try{await this.verifyCanContinueAccountRecovery(),this.setState({state:R.RESTART_FROM_SCRATCH})}catch(e){await this.handleVerifyCanContinueAccountRecoveryError(e)}}async verifyCanContinueAccountRecovery(){const e=this.props.context.getApiClientOptions();e.setResourceName("account-recovery");const t=new v(e);await t.get(`continue/${this.state.userId}/${this.state.authenticationToken}`)}async handleVerifyCanContinueAccountRecoveryError(e){if(e instanceof d){if(403===e.data.code)return this.setState({state:R.ERROR_ALREADY_SIGNED_IN_STATE});const t=Boolean(e?.data?.body?.token?.expired),n=Boolean(e?.data?.body?.token?.isActive);if(t||n)return this.setState({state:R.TOKEN_EXPIRED_STATE})}this.setState({state:R.UNEXPECTED_ERROR_STATE,unexpectedError:e})}async logoutUserAndRefresh(){try{await this.authLogoutService.logout()}catch(e){const t=new E(e.message);return this.setState({unexpectedError:t,state:R.UNEXPECTED_ERROR_STATE})}window.location.reload()}render(){return r.createElement(S.Provider,{value:this.state},this.props.children)}}w.propTypes={context:u().any,value:u().any,children:u().any};const T=i(w),R={INITIAL_STATE:"Initial state",RESTART_FROM_SCRATCH:"Restart from scratch state",TOKEN_EXPIRED_STATE:"Token expired state",ERROR_ALREADY_SIGNED_IN_STATE:"Error, already signed in state",REQUEST_INVITATION_ERROR:"Request inviration error state",UNEXPECTED_ERROR_STATE:"Unexpected error state"};class A{setBaseUrl(e){if(!e)throw new TypeError("ApiClientOption baseUrl is required.");if("string"==typeof e)try{this.baseUrl=new URL(e)}catch(e){throw new TypeError("ApiClientOption baseUrl is invalid.",{cause:e})}else{if(!(e instanceof URL))throw new TypeError("ApiClientOptions baseurl should be a string or URL");this.baseUrl=e}return this}setResourceName(e){if(!e)throw new TypeError("ApiClientOptions.setResourceName resourceName is required.");if("string"!=typeof e)throw new TypeError("ApiClientOptions.setResourceName resourceName should be a valid string.");return this.resourceName=e,this}getBaseUrl(){return this.baseUrl}getResourceName(){return this.resourceName}async getHeaders(){const e=await this.getCsrfToken();if(e)return{"X-CSRF-Token":e}}async getCsrfToken(){if("undefined"==typeof browser||void 0===browser.cookies){const e=document?.cookie?.split("; ")?.find(e=>e.startsWith("csrfToken"))?.split("=");return e&&2===e.length?e[1]:null}const e=this.baseUrl.toString(),t="/"===e.slice(-1)?e:`${e}/`,n=await browser.cookies.get({name:"csrfToken",url:t});return n?.value||null}}var C;function x(){return x=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},x.apply(null,arguments)}const I=function(e){return r.createElement("svg",x({xmlns:"http://www.w3.org/2000/svg",width:17,height:16,fill:"none",viewBox:"0 0 17 16"},e),C||(C=r.createElement("g",{clipPath:"url(#heart_svg__clip0_93_734678)"},r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M13.497 9.333c.993-.973 2-2.14 2-3.666A3.667 3.667 0 0 0 11.83 2c-1.173 0-2 .333-3 1.333-1-1-1.827-1.333-3-1.333a3.667 3.667 0 0 0-3.667 3.667c0 1.533 1 2.7 2 3.666L8.83 14z"}))))};var O=n(2389);class N extends r.Component{render(){return r.createElement("div",{className:"tooltip",tabIndex:"0"},this.props.children,r.createElement("span",{className:`tooltip-text ${this.props.direction}`},this.props.message))}}N.defaultProps={direction:"right"},N.propTypes={children:u().any,message:u().any.isRequired,direction:u().string};const U=N;class L extends r.Component{get privacyUrl(){return this.props.context.siteSettings.privacyLink}get creditsUrl(){return"https://www.passbolt.com/credits"}get unsafeUrl(){return"https://www.passbolt.com/docs/hosting/faq/why-I-see-unsafe-mode-banner/"}get termsUrl(){return this.props.context.siteSettings.termsLink}get versions(){const e=[],t=this.props.context.siteSettings.version;return t&&e.push(`${this.props.t("Server")} ${t}`),this.props.context.extensionVersion&&e.push(`${this.props.t("Client")} ${this.props.context.extensionVersion}`),e.join(" / ")}get isUnsafeMode(){if(!this.props.context.siteSettings)return!1;const e=this.props.context.siteSettings.debug,t=this.props.context.siteSettings.url.startsWith("http://");return e||t}render(){return r.createElement("footer",{className:"footer"},r.createElement("ul",{className:"footer-links"},this.isUnsafeMode&&r.createElement("li",{className:"error-message"},r.createElement("a",{href:this.unsafeUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Unsafe mode"))),this.termsUrl&&r.createElement("li",null,r.createElement("a",{href:this.termsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Terms"))),this.privacyUrl&&r.createElement("li",null,r.createElement("a",{href:this.privacyUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Privacy"))),r.createElement("li",null,r.createElement("a",{href:this.creditsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Credits"))),r.createElement("li",null,this.versions&&r.createElement(U,{message:this.versions,direction:"left"},r.createElement("a",{className:"button button-transparent inline",href:this.creditsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(I,null))),!this.versions&&r.createElement("a",{className:"button button-transparent inline",href:this.creditsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(I,null)))))}}L.propTypes={context:u().any,t:u().func};const _=i((0,O.CI)("common")(L));var D=n(5648);const k=(e,t)=>t.split(".").reduce((e,t)=>e?.[t],e),P=(e,t)=>{if(void 0===e||"string"!=typeof e||!e.length)return!1;if((t=t||{}).whitelistedProtocols&&!Array.isArray(t.whitelistedProtocols))throw new TypeError("The whitelistedProtocols should be an array of string.");if(t.defaultProtocol&&"string"!=typeof t.defaultProtocol)throw new TypeError("The defaultProtocol should be a string.");const n=t.whitelistedProtocols||[j.HTTP,j.HTTPS],r=[j.JAVASCRIPT],s=t.defaultProtocol||"";!/^(?:(?!:\/\/).)*:\/\//.test(e)&&s&&(e=`${s}//${e}`);try{const t=new URL(e);return!r.includes(t.protocol)&&!!n.includes(t.protocol)&&t.href}catch(e){return console.error("Failed to sanitize URL:",e),!1}},j={FTP:"http:",FTPS:"https:",HTTP:"http:",HTTPS:"https:",JAVASCRIPT:"javascript:",SSH:"ssh:"};class F{constructor(e){this.settings=this.sanitizeDto(e)}sanitizeDto(e){const t=JSON.parse(JSON.stringify(e));return this.sanitizeEmailValidateRegex(t),t}sanitizeEmailValidateRegex(e){const t=e?.passbolt?.email?.validate?.regex;t&&"string"==typeof t&&t.trim().length&&(e.passbolt.email.validate.regex=t.trim().replace(/^\/+/,"").replace(/\/+$/,""))}canIUse(e){let t=!1;const n=`passbolt.plugins.${e}`,r=k(this.settings,n)||null;if(r&&"object"==typeof r){const e=k(r,"enabled");void 0!==e&&!0!==e||(t=!0)}return t}isFeatureBeta(e){(0,D.A)(e);const t=`passbolt.plugins.${e}.isInBeta`;return k(this.settings,t)||!1}getPluginSettings(e){const t=`passbolt.plugins.${e}`;return k(this.settings,t)}getRememberMeOptions(){return(this.getPluginSettings("rememberMe")||{}).options||{}}get hasRememberMeUntilILogoutOption(){return void 0!==(this.getRememberMeOptions()||{})[-1]}getServerTimezone(){return k(this.settings,"passbolt.app.server_timezone")}get termsLink(){const e=k(this.settings,"passbolt.legal.terms.url");return!!e&&P(e)}get privacyLink(){const e=k(this.settings,"passbolt.legal.privacy_policy.url");return!!e&&P(e)}get registrationPublic(){return!0===k(this.settings,"passbolt.registration.public")}get debug(){return!0===k(this.settings,"app.debug")}get url(){return k(this.settings,"app.url")||""}get version(){return k(this.settings,"app.version.number")}get isCommunityEdition(){return"ce"===k(this.settings,"passbolt.edition")}get locale(){return k(this.settings,"app.locale")||F.DEFAULT_LOCALE.locale}async setLocale(e){this.settings.app.locale=e}get supportedLocales(){return k(this.settings,"passbolt.plugins.locale.options")||F.DEFAULT_SUPPORTED_LOCALES}get generatorConfiguration(){return k(this.settings,"passbolt.plugins.generator.configuration")}get emailValidateRegex(){return this.settings?.passbolt?.email?.validate?.regex||null}static get DEFAULT_SUPPORTED_LOCALES(){return[F.DEFAULT_LOCALE]}static get DEFAULT_LOCALE(){return{locale:"en-UK",label:"English"}}}var B=n(2635),$=n(1347);class M extends r.Component{constructor(e){super(e),this.state=this.defaultState}get defaultState(){return{ready:!1}}async componentDidMount(){await(0,B.Yx)(O.r9).use($.A).init({lng:this.locale,load:"currentOnly",interpolation:{escapeValue:!1},react:{useSuspense:!1},backend:{loadPath:(e,t)=>this.getTranslationPath(e,t)},supportedLngs:this.supportedLocales,fallbackLng:!1,ns:["common"],defaultNS:"common",keySeparator:!1,nsSeparator:!1,debug:!1}),this.setState({ready:!0})}getTranslationPath(e,t){const n=e[0],r=t[0],s="en-GB"===n?"en-UK":n;return(this.props.loadingPath||"/locales/{{lng}}/{{ns}}.json").replace("{{lng}}",s).replace("{{ns}}",r)}get supportedLocales(){let e=[];return this.props.context.siteSettings?.supportedLocales?e=this.props.context.siteSettings?.supportedLocales.map(e=>e.locale):e.push(this.locale),e.includes("en-UK")&&e.push("en-GB"),e}get locale(){return this.props.context.locale}async componentDidUpdate(e){await this.handleLocaleChange(e.context.locale)}async handleLocaleChange(e){this.locale!==e&&await(0,B.v2)(this.locale)}get isReady(){return this.state.ready}render(){return r.createElement(r.Fragment,null,this.isReady&&this.props.children)}}M.propTypes={context:u().any,loadingPath:u().any,children:u().any};const V=i(M),q=new class{allPropTypes=(...e)=>(...t)=>{const n=e.map(e=>e(...t)).filter(Boolean);if(0===n.length)return;const r=n.map(e=>e.message).join("\n");return new Error(r)}};var z;function H(){return H=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},H.apply(null,arguments)}const X=function(e){return r.createElement("svg",H({width:25,height:24,fill:"none",viewBox:"0 0 25 24"},e),z||(z=r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M11.597 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16M21.597 21l-4.35-4.35"})))};var K;function W(){return W=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},W.apply(null,arguments)}const G=function(e){return r.createElement("svg",W({xmlns:"http://www.w3.org/2000/svg",width:10,height:8,fill:"none",viewBox:"0 0 10 8"},e),K||(K=r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m1 2 4 4 4-4"})))};class Y extends r.Component{constructor(e){super(e),this.state=this.getDefaultState(e),this.bindCallback(),this.createRefs()}getDefaultState(e){return{selectedValue:e.value,search:"",open:!1,style:void 0}}get listItemsFiltered(){const e=this.props.items.filter(e=>e.value!==this.state.selectedValue);return this.props.search&&""!==this.state.search?this.getItemsMatch(e,this.state.search):e}get selectedItemLabel(){const e=this.props.items&&this.props.items.find(e=>e.value===this.state.selectedValue);return e&&e.label||r.createElement(r.Fragment,null," ")}static getDerivedStateFromProps(e,t){return void 0!==e.value&&e.value!==t.selectedValue?{selectedValue:e.value}:null}bindCallback(){this.handleDocumentClickEvent=this.handleDocumentClickEvent.bind(this),this.handleDocumentContextualMenuEvent=this.handleDocumentContextualMenuEvent.bind(this),this.handleDocumentDragStartEvent=this.handleDocumentDragStartEvent.bind(this),this.handleDocumentScrollEvent=this.handleDocumentScrollEvent.bind(this),this.handleSelectClick=this.handleSelectClick.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleItemClick=this.handleItemClick.bind(this),this.handleSelectKeyDown=this.handleSelectKeyDown.bind(this),this.handleItemKeyDown=this.handleItemKeyDown.bind(this),this.handleBlur=this.handleBlur.bind(this)}createRefs(){this.selectedItemRef=r.createRef(),this.selectItemsRef=r.createRef(),this.itemsRef=r.createRef()}componentDidMount(){document.addEventListener("click",this.handleDocumentClickEvent,{capture:!0}),document.addEventListener("contextmenu",this.handleDocumentContextualMenuEvent,{capture:!0}),document.addEventListener("dragstart",this.handleDocumentDragStartEvent,{capture:!0}),document.addEventListener("scroll",this.handleDocumentScrollEvent,{capture:!0})}componentWillUnmount(){document.removeEventListener("click",this.handleDocumentClickEvent,{capture:!0}),document.removeEventListener("contextmenu",this.handleDocumentContextualMenuEvent,{capture:!0}),document.removeEventListener("dragstart",this.handleDocumentDragStartEvent,{capture:!0}),document.removeEventListener("scroll",this.handleDocumentScrollEvent,{capture:!0})}handleDocumentClickEvent(e){this.selectedItemRef.current.contains(e.target)||this.selectItemsRef.current.contains(e.target)||this.closeSelect()}handleDocumentContextualMenuEvent(e){this.selectedItemRef.current.contains(e.target)||this.selectItemsRef.current.contains(e.target)||this.closeSelect()}handleDocumentDragStartEvent(){this.closeSelect()}handleDocumentScrollEvent(e){this.itemsRef.current.contains(e.target)||this.selectItemsRef.current.contains(e.target)||this.closeSelect()}handleSelectClick(){if(this.props.disabled)this.closeSelect();else{const e=!this.state.open;e?this.forceVisibilitySelect():this.resetStyleSelect(),this.setState({open:e})}}getFirstParentWithTransform(){let e=this.selectedItemRef.current.parentElement;for(;null!==e&&""===e.style.getPropertyValue("transform");)e=e.parentElement;return e}forceVisibilitySelect(){const e=this.selectedItemRef.current.getBoundingClientRect(),{width:t,height:n}=e;let{top:r,left:s}=e;const o=this.getFirstParentWithTransform();if(o){const e=o.getBoundingClientRect();r-=e.top,s-=e.left}const a={position:"fixed",zIndex:1,width:t,height:n,top:r,left:s};this.setState({style:a})}handleBlur(e){e.currentTarget.contains(e.relatedTarget)||this.closeSelect()}closeSelect(){this.resetStyleSelect(),this.setState({open:!1})}resetStyleSelect(){this.setState({style:void 0})}handleInputChange(e){const t=e.target,n=t.value,r=t.name;this.setState({[r]:n})}handleItemClick(e){if(this.setState({selectedValue:e.value,open:!1}),"function"==typeof this.props.onChange){const t={target:{value:e.value,name:this.props.name}};this.props.onChange(t)}this.closeSelect()}getItemsMatch(e,t){const n=t&&t.split(/\s+/)||[""];return e.filter(e=>n.every(t=>((e,t)=>(e=>new RegExp((e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))(e),"i"))(e).test(t))(t,e.label)))}handleSelectKeyDown(e){switch(e.keyCode){case 13:return e.stopPropagation(),void this.handleSelectClick();case 40:return e.preventDefault(),e.stopPropagation(),void(this.state.open?this.focusItem(0):this.handleSelectClick());case 38:return e.preventDefault(),e.stopPropagation(),void(this.state.open?this.focusItem(this.listItemsFiltered.length-1):this.handleSelectClick());case 27:return e.stopPropagation(),void this.closeSelect();default:return}}focusItem(e){this.itemsRef.current.childNodes[e]?.focus()}handleItemKeyDown(e,t){switch(e.keyCode){case 13:return e.stopPropagation(),void this.handleItemClick(t);case 40:return e.stopPropagation(),e.preventDefault(),void(e.target.nextSibling?e.target.nextSibling.focus():this.focusItem(0));case 38:return e.stopPropagation(),e.preventDefault(),void(e.target.previousSibling?e.target.previousSibling.focus():this.focusItem(this.listItemsFiltered.length-1));default:return}}hasFilteredItems(){return this.listItemsFiltered.length>0}render(){return r.createElement("div",{className:`select-container ${this.props.className}`,style:{width:this.state.style?.width,height:this.state.style?.height}},r.createElement("div",{onKeyDown:this.handleSelectKeyDown,onBlur:this.handleBlur,id:this.props.id,className:`select ${this.props.direction} ${this.state.open?"open":""}`,style:this.state.style},r.createElement("div",{ref:this.selectedItemRef,className:"selected-value "+(this.props.disabled?"disabled":""),tabIndex:this.props.disabled?-1:0,onClick:this.handleSelectClick},r.createElement("span",{className:"value"},this.selectedItemLabel),r.createElement(G,null)),r.createElement("div",{ref:this.selectItemsRef,className:"select-items "+(this.state.open?"visible":"")},this.props.search&&r.createElement(r.Fragment,null,r.createElement("input",{className:"search-input",name:"search",value:this.state.search,onChange:this.handleInputChange,type:"text"}),r.createElement(X,{className:"search"})),r.createElement("ul",{ref:this.itemsRef,className:"items"},this.hasFilteredItems()&&this.listItemsFiltered.map(e=>r.createElement("li",{tabIndex:e.disabled?-1:0,key:e.value,title:e.title,className:`option ${e.value}`,onKeyDown:t=>this.handleItemKeyDown(t,e),onClick:()=>this.handleItemClick(e)},e.label)),!this.hasFilteredItems()&&this.props.search&&r.createElement("li",{className:"option no-results"},r.createElement(O.x6,null,"No results match")," ",r.createElement("span",null,this.state.search))))))}}Y.defaultProps={id:"",name:"select",className:"",direction:"bottom"},Y.propTypes={id:u().string,name:u().string,className:u().string,direction:u().oneOf(Object.values({top:"top",bottom:"bottom",left:"left",right:"right"})),search:u().bool,items:u().array,value:q.allPropTypes(u().oneOfType([u().string,u().number,u().bool]),(e,t,n)=>{const r=e[t],s=e.items;if(null!==r&&s.length>0&&s.every(e=>e.value!==r))return new Error(`Invalid prop ${t} passed to ${n}. Expected the value ${r} in items.`)}),disabled:u().bool,onChange:u().func};const J=(0,O.CI)("common")(Y);class Q extends r.Component{constructor(e){super(e),this.state=this.defaultState,this.bindHandlers()}componentDidMount(){this.initLocale()}componentDidUpdate(e){this.handleLocaleChange(e.context.locale)}handleLocaleChange(e){this.props.context.locale!==e&&this.setState({locale:this.props.context.locale})}get defaultState(){return{loading:!0,locale:null,processing:!1}}get areActionsAllowed(){return!this.state.processing}bindHandlers(){this.handleLocaleInputChange=this.handleLocaleInputChange.bind(this)}async handleLocaleInputChange(e){const t=e.target.value;this.updateLocale(t)}async updateLocale(e){this.setState({processing:!0}),await this.props.context.onUpdateLocaleRequested(e),this.setState({processing:!1})}initLocale(){this.setState({locale:this.props.context.locale,loading:!1})}isLoading(){return this.state.loading}get supportedLocales(){return this.props.context.siteSettings.supportedLocales?this.props.context.siteSettings.supportedLocales.map(e=>({value:e.locale,label:e.label})):[]}render(){return r.createElement(r.Fragment,null,!this.isLoading()&&r.createElement("div",{className:"select-wrapper input"},r.createElement(J,{id:"user-locale-input",className:"setup-extension",name:"locale",value:this.state.locale,disabled:!this.areActionsAllowed,items:this.supportedLocales,onChange:this.handleLocaleInputChange})))}}Q.propTypes={context:u().any};const Z=i(Q),ee="chrome",te="edge",ne="firefox",re="safari";function se(){const e=window.navigator.userAgent.toLowerCase();let t;return t=e.indexOf("firefox")>-1?ne:e.indexOf("samsungbrowser")>-1?"samsung":e.indexOf("opera")>-1||e.indexOf("opr")>-1?"opera":e.indexOf("trident")>-1?"internet-explorer":e.indexOf("edg")>-1?te:e.indexOf("chrome")>-1?ee:e.indexOf("safari")>-1?re:"unknown",t}function oe(){return oe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},oe.apply(null,arguments)}const ae=r.createContext({userId:null,token:null,state:null,unexpectedError:null,onInitializeRecoverRequested:()=>{},logoutUserAndRefresh:()=>{}});class ie extends r.Component{constructor(e){super(e),this.state=Object.assign(this.defaultState,e.value),this.authLogoutService=new y(e.context.getApiClientOptions())}get defaultState(){return{userId:null,token:null,state:le.INITIAL_STATE,unexpectedError:null,onInitializeRecoverRequested:this.onInitializeRecoverRequested.bind(this),logoutUserAndRefresh:this.logoutUserAndRefresh.bind(this),handleSafariExtensionDownloading:this.handleSafariExtensionDownloading.bind(this),handleSafariExtensionNotDownloaded:this.handleSafariExtensionNotDownloaded.bind(this),handleExtensionAlreadyInstalled:this.handleExtensionAlreadyInstalled.bind(this)}}async onInitializeRecoverRequested(){return this.state.userId&&this.state.token?this.isBrowserSupported()?void await this.startRecover().then(this.handleStartRecoverSuccess.bind(this)).catch(this.handleStartRecoverError.bind(this)):this.setState({state:le.DOWNLOAD_SUPPORTED_BROWSER_STATE}):this.setState({state:le.REQUEST_INVITATION_ERROR})}handleStartRecoverSuccess(){const e=se()===re?le.INSTALL_SAFARI_EXTENSION_STATE:le.INSTALL_EXTENSION_STATE;this.setState({state:e})}handleSafariExtensionDownloading(){const e=le.CONFIGURE_SAFARI_EXTENSION_STATE;this.setState({state:e})}handleSafariExtensionNotDownloaded(){const e=le.INSTALL_SAFARI_EXTENSION_STATE;this.setState({state:e})}handleExtensionAlreadyInstalled(){const e=le.CONFIGURE_SAFARI_EXTENSION_STATE;this.setState({state:e})}handleStartRecoverError(e){if(e instanceof d){if(403===e.data.code)return this.setState({state:le.ERROR_ALREADY_SIGNED_IN_STATE});const t=Boolean(e.data.body?.token?.expired),n=Boolean(e.data.body?.token?.isActive);if(t||n)return this.setState({state:le.TOKEN_EXPIRED_STATE});if(400===e?.data?.code)return this.setState({state:le.REQUEST_INVITATION_ERROR})}return this.setState({state:le.UNEXPECTED_ERROR_STATE})}async logoutUserAndRefresh(){try{await this.authLogoutService.logout()}catch(e){const t=new E(e.message);return this.setState({unexpectedError:t,state:le.UNEXPECTED_ERROR_STATE})}window.location.reload()}isBrowserSupported(){const e=se();return[ee,ne,te,re].includes(e)}async startRecover(){const e=this.props.context.getApiClientOptions();e.setResourceName("setup");const t=new v(e);await t.get(`recover/${this.state.userId}/${this.state.token}`)}render(){return r.createElement(ae.Provider,{value:this.state},this.props.children)}}ie.propTypes={context:u().any,value:u().any,children:u().any},i(ie);const le={INITIAL_STATE:"Initial state",DOWNLOAD_SUPPORTED_BROWSER_STATE:"Download supported browser state",INSTALL_EXTENSION_STATE:"Install extension state",INSTALL_SAFARI_EXTENSION_STATE:"Install Safari extension state",CONFIGURE_SAFARI_EXTENSION_STATE:"Configure Safari extension state",TOKEN_EXPIRED_STATE:"Token expired state",ERROR_ALREADY_SIGNED_IN_STATE:"Error, already signed in state",REQUEST_INVITATION_ERROR:"Request inviration error state",UNEXPECTED_ERROR_STATE:"Unexpected error state"};class ce extends r.Component{get statesToHideLocaleSwitch(){return[le.INITIAL_STATE]}get mustDisplayLocaleSwitch(){return!this.statesToHideLocaleSwitch.includes(this.props.apiRecoverContext.state)}render(){return r.createElement(r.Fragment,null,this.mustDisplayLocaleSwitch&&r.createElement(Z,null))}}ce.propTypes={apiRecoverContext:u().any};const ue=(he=ce,class extends r.Component{render(){return r.createElement(ae.Consumer,null,e=>r.createElement(he,oe({apiRecoverContext:e},this.props)))}});var he,de,pe;function me(){return me=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},me.apply(null,arguments)}const ge=function(e){return r.createElement("svg",me({width:18,height:18,fill:"none",className:"svg-icon spinner",viewBox:"0 0 18 18"},e),de||(de=r.createElement("circle",{id:"background",cx:8,cy:8,r:8,fill:"none",stroke:"var(--spinner-background)",strokeWidth:"var(--spinner-stroke-width)",transform:"translate(1 1)"})),pe||(pe=r.createElement("circle",{id:"loading",r:8,fill:"none",stroke:"var(--spinner-color)",strokeLinecap:"round",strokeWidth:"var(--spinner-stroke-width)",transform:"translate(9 9)"})))};class Ee extends r.Component{render(){return r.createElement("div",{className:"login-processing"},r.createElement("h1",null,this.props.title),r.createElement("div",{className:"processing-wrapper"},r.createElement(ge,null)))}}Ee.propTypes={title:u().oneOfType([u().arrayOf(u().node),u().node,u().string])},Ee.defaultProps={title:r.createElement(O.x6,null,"Please wait...")};const fe=(0,O.CI)("common")(Ee);var ve;function ye(){return ye=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ye.apply(null,arguments)}const be=function(e){return r.createElement("svg",ye({xmlns:"http://www.w3.org/2000/svg",width:8,height:10,fill:"none",viewBox:"0 0 8 10"},e),ve||(ve=r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m2 9 4-4-4-4"})))};class Se extends r.Component{constructor(e){super(e),this.state=this.defaultState,this.bindCallbacks()}get defaultState(){return{showErrorDetails:!1}}bindCallbacks(){this.handleErrorDetailsToggle=this.handleErrorDetailsToggle.bind(this)}onClick(){this.props.context.port?this.props.context.port.request("passbolt.tab.reload"):window.location.reload()}handleErrorDetailsToggle(){this.setState({showErrorDetails:!this.state.showErrorDetails})}get hasErrorDetails(){const e=this.props?.error;return Boolean(e?.details)||Boolean(e?.data?.body)}formatErrors(){const e=this.props.error?.details||this.props.error?.data;return JSON.stringify(e,null,4)}render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,this.props.title),r.createElement("p",null,this.props.message),r.createElement("p",null,this.props.error&&this.props.error.message),this.hasErrorDetails&&r.createElement("div",{className:"accordion error-details"},r.createElement("div",{className:"accordion-header"},r.createElement("button",{className:"no-border",type:"button",onClick:this.handleErrorDetailsToggle},this.state.showErrorDetails?r.createElement(G,{className:"caret-down"}):r.createElement(be,{className:"caret-right"}),r.createElement("span",null,r.createElement(O.x6,null,"Error details")))),this.state.showErrorDetails&&r.createElement("div",{className:"accordion-content"},r.createElement("div",{className:"input text"},r.createElement("label",{htmlFor:"js_field_debug",className:"visuallyhidden"},r.createElement(O.x6,null,"Error details")),r.createElement("textarea",{id:"js_field_debug",defaultValue:`${this.formatErrors()}`,readOnly:!0})))),r.createElement("div",{className:"form-actions"},r.createElement("button",{onClick:this.onClick.bind(this),className:"button primary big full-width",role:"button"},r.createElement(O.x6,null,"Try again"))))}}Se.defaultProps={title:r.createElement(O.x6,null,"Something went wrong!"),message:r.createElement(O.x6,null,"The operation failed with the following error:")},Se.propTypes={context:u().any,title:u().oneOfType([u().arrayOf(u().node),u().node,u().string]),message:u().oneOfType([u().arrayOf(u().node),u().node,u().string]),error:u().any};const we=i((0,O.CI)("common")(Se));class Te extends r.Component{render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,r.createElement(O.x6,null,"Sorry, wrong computer or browser...")),r.createElement("p",null,r.createElement(O.x6,null,"You need to finalize the account recovery process with the same computer you used for the account recovery request."),r.createElement("br",null),r.createElement("br",null),r.createElement(O.x6,null,"If you changed systems, or reinstalled passbolt web extension in the meantime, you will need to start the account recovery process from scratch.")),r.createElement("div",{className:"form-actions"},r.createElement("a",{href:`${this.props.context.trustedDomain}/users/recover`,className:"button primary big full-width",role:"button",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Restart from scratch"))))}}Te.propTypes={context:u().any};const Re=i((0,O.CI)("common")(Te));class Ae extends r.Component{render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,r.createElement(O.x6,null,"The request is expired.")),r.createElement("p",null,r.createElement(O.x6,null,"If you still need to recover your account, you will need to start the process from scratch.")),r.createElement("div",{className:"form-actions"},r.createElement("a",{href:`${this.props.context.trustedDomain}`,className:"button primary big full-width",role:"button",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Continue"))))}}Ae.propTypes={context:u().any};const Ce=i((0,O.CI)("common")(Ae)),xe="setup",Ie="recover",Oe="account-recovery";class Ne extends r.Component{render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,r.createElement(O.x6,null,"Cannot perform the action while being logged in")),r.createElement("p",null,{[xe]:r.createElement(O.x6,null,"It is not possible to perform a setup of a new account as you are still logged in. You need to log out first before continuing."),[Ie]:r.createElement(O.x6,null,"It is not possible to perform the recovery of your account as you are still logged in. You need to log out first before continuing."),[Oe]:r.createElement(O.x6,null,"It is not possible to recover your private key of your account as you are still logged in. You need to log out first before continuing.")}[this.props.displayAs]),r.createElement("div",{className:"form-actions"},r.createElement("button",{onClick:this.props.onLogoutButtonClick.bind(this),className:"button primary big full-width",role:"button"},r.createElement(O.x6,null,"Sign out"))))}}Ne.propTypes={displayAs:u().oneOf([xe,Ie,Oe]).isRequired,onLogoutButtonClick:u().func.isRequired};const Ue=(0,O.CI)("common")(Ne);class Le extends r.Component{componentDidMount(){this.initializeAccountRecovery()}initializeAccountRecovery(){setTimeout(()=>this.props.apiAccountRecoveryContext.onInitializeAccountRecoveryRequested(),1e3)}render(){switch(this.props.apiAccountRecoveryContext.state){case R.RESTART_FROM_SCRATCH:return r.createElement(Re,null);case R.TOKEN_EXPIRED_STATE:return r.createElement(Ce,null);case R.ERROR_ALREADY_SIGNED_IN_STATE:return r.createElement(Ue,{onLogoutButtonClick:this.props.apiAccountRecoveryContext.logoutUserAndRefresh,displayAs:Oe});case R.UNEXPECTED_ERROR_STATE:return r.createElement(we,{error:this.props.apiAccountRecoveryContext.unexpectedError});default:return r.createElement(fe,null)}}}Le.propTypes={apiAccountRecoveryContext:u().object};const _e=function(e){return class extends r.Component{render(){return r.createElement(S.Consumer,null,t=>r.createElement(e,b({apiAccountRecoveryContext:t},this.props)))}}}(Le);var De,ke,Pe,je,Fe;function Be(){return Be=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Be.apply(null,arguments)}const $e=function(e){return r.createElement("svg",Be({xmlns:"http://www.w3.org/2000/svg",width:151,height:27,fill:"none","aria-labelledby":"logo-title logo-description",viewBox:"0 0 151 27"},e),De||(De=r.createElement("title",{id:"logo-title"},"Passbolt logo")),ke||(ke=r.createElement("desc",{id:"logo-description"},"This is the logo of passbolt.")),Pe||(Pe=r.createElement("path",{fill:"var(--icon-color)",d:"M4.648 9.234v8.607h2.48c1.646 0 2.786-.349 3.47-1.012.685-.664 1.013-1.823 1.013-3.395 0-1.52-.305-2.595-.938-3.218-.633-.673-1.695-.972-3.24-.972zM.597 5.963h7.797c2.357 0 4.178.676 5.496 2.048q1.976 2.058 1.974 5.689a8.6 8.6 0 0 1-.406 2.749 7.1 7.1 0 0 1-1.24 2.278 5.9 5.9 0 0 1-2.38 1.773c-.937.349-2.152.524-3.697.524H4.648V26.5H.597zM24.016 18.016h5.064v-3.119h-4.76c-.937 0-1.594.124-1.95.375-.357.25-.517.698-.517 1.321 0 .524.15.899.429 1.122.28.223.848.301 1.734.301M18.649 5.963h8.268c2.103 0 3.672.476 4.736 1.423 1.065.947 1.594 2.347 1.594 4.217v9.456H22.37c-1.52 0-2.708-.375-3.52-1.121-.81-.747-1.2-1.823-1.2-3.22 0-1.722.454-2.945 1.392-3.692s2.483-1.134 4.697-1.134h5.315v-.365c0-.898-.276-1.518-.809-1.896-.532-.377-1.47-.55-2.86-.55H18.65zM36.55 17.915h8.525c.76 0 1.318-.124 1.646-.35.183-.122.328-.29.423-.486.094-.197.134-.414.115-.63a1.2 1.2 0 0 0-.112-.632 1.24 1.24 0 0 0-.42-.492c-.355-.253-.91-.374-1.646-.374h-3.494c-2.067 0-3.467-.325-4.203-.947-.737-.623-1.088-1.747-1.088-3.32 0-1.62.431-2.82 1.318-3.592.886-.772 2.255-1.152 4.064-1.152h8.684v3.142h-7.134q-1.75 0-2.279.301c-.354.198-.532.547-.532 1.071-.017.193.016.387.096.564s.204.332.361.449c.302.223.809.324 1.468.324h3.676c1.672 0 2.961.397 3.824 1.172s1.315 1.871 1.315 3.32c0 1.397-.405 2.53-1.188 3.417-.37.427-.833.768-1.354.996-.522.23-1.09.34-1.661.325H36.549zM53.822 17.915h8.526c.76 0 1.318-.124 1.646-.35a1.23 1.23 0 0 0 .42-.487c.093-.196.132-.413.112-.629a1.2 1.2 0 0 0-.111-.632 1.24 1.24 0 0 0-.421-.492c-.354-.253-.91-.374-1.646-.374h-3.493c-2.067 0-3.467-.325-4.204-.947-.736-.623-1.088-1.752-1.088-3.324 0-1.62.432-2.82 1.318-3.593.886-.772 2.253-1.147 4.075-1.147h8.686v3.142h-7.141q-1.747 0-2.28.301c-.353.198-.531.547-.531 1.071-.017.193.016.387.096.564s.204.332.361.449c.302.223.809.324 1.468.324h3.671c1.672 0 2.963.397 3.824 1.172s1.315 1.871 1.315 3.32c0 1.397-.403 2.53-1.188 3.417-.37.427-.832.767-1.354.996a3.9 3.9 0 0 1-1.66.325H53.769v-3.106zM75.387.5v5.463h3.47c1.55 0 2.759.175 3.694.55.946.362 1.77.976 2.38 1.772a7.2 7.2 0 0 1 1.243 2.296c.281.888.417 1.814.403 2.744q0 3.63-1.974 5.689c-1.315 1.372-3.14 2.046-5.493 2.046h-7.8V.5zm2.462 8.734h-2.483v8.608h2.785c1.55 0 2.633-.324 3.243-.95s.935-1.721.935-3.268-.354-2.694-1.033-3.367c-.68-.673-1.832-1.023-3.447-1.023M92.3 13.525c0 1.445.328 2.532 1.013 3.367s1.62 1.198 2.86 1.198 2.152-.398 2.863-1.198 1.033-1.921 1.033-3.367-.356-2.547-1.033-3.344c-.677-.798-1.62-1.198-2.863-1.198a3.64 3.64 0 0 0-1.57.279 3.6 3.6 0 0 0-1.29.919c-.685.797-1.013 1.921-1.013 3.344m12.002 0q0 3.544-2.202 5.689c-1.47 1.397-3.42 2.121-5.901 2.121s-4.457-.699-5.924-2.121-2.202-3.292-2.202-5.664q0-3.558 2.202-5.69c1.467-1.424 3.444-2.145 5.919-2.145s4.431.724 5.901 2.144 2.207 3.294 2.207 5.666M110.935 21.06h-4.202V.5h4.202zM112.884 5.963h2.86V.5h4.052v5.463h4.278v3.02h-4.278v6.09c0 1.12.204 1.895.581 2.343.377.449 1.064.649 2.026.649h1.671v3.02h-3.72c-1.494 0-2.636-.4-3.444-1.223-.809-.823-1.189-1.995-1.189-3.519v-7.36h-2.863v-3.02z"})),je||(je=r.createElement("path",{fill:"#D40101",d:"m149.951 10.68-9.059-8.36a2.12 2.12 0 0 0-1.421-.543c-.526 0-1.033.194-1.421.544l-5.684 5.268c.745.271 1.414.71 1.952 1.282.539.572.933 1.26 1.149 2.01h7.673a.73.73 0 0 1 .504.204.69.69 0 0 1 .207.494v1.147a.68.68 0 0 1-.207.494.72.72 0 0 1-.504.204h-.886v1.623a.68.68 0 0 1-.205.494.72.72 0 0 1-.503.205h-1.945a.73.73 0 0 1-.503-.205.69.69 0 0 1-.205-.494v-1.623h-3.426a4.84 4.84 0 0 1-1.135 2.033 5 5 0 0 1-1.966 1.287l5.71 5.276c.388.349.895.543 1.421.543a2.12 2.12 0 0 0 1.421-.543l9.043-8.355a2.03 2.03 0 0 0-.01-2.985"})),Fe||(Fe=r.createElement("path",{fill:"#D40101",d:"M130.683 9.867a2.6 2.6 0 0 0-1.064.253c-.371.18-.686.455-.913.794a2.242 2.242 0 0 0-.113 2.305 2.3 2.3 0 0 0 .831.877 2.36 2.36 0 0 0 2.355.059c.362-.197.664-.484.875-.833a2.24 2.24 0 0 0 .324-1.153 2.21 2.21 0 0 0-.653-1.625 2.3 2.3 0 0 0-.751-.5 2.3 2.3 0 0 0-.891-.177"})))};class Me extends r.Component{constructor(e){super(e),this.state=this.defaultState,this.userId=null,this.authenticationToken=null,this.initializeProperties()}get defaultState(){return{siteSettings:null,trustedDomain:this.baseUrl,getApiClientOptions:this.getApiClientOptions.bind(this),locale:null,onUpdateLocaleRequested:this.onUpdateLocaleRequested.bind(this)}}async componentDidMount(){const e=await this.getSiteSettings();this.initLocale(e)}initializeProperties(){const e="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[0-5][a-fA-F0-9]{3}-[089aAbB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}",t=new RegExp(`account-recovery/continue/(${e})/(${e})$`),n=window.location.pathname.match(t);n?(this.userId=n[1],this.authenticationToken=n[2]):console.error("Unable to parse the url.")}get baseUrl(){const e=document.getElementsByTagName("base")&&document.getElementsByTagName("base")[0];return e?e.attributes.href.value.replace(/\/*$/g,""):(console.error("Unable to retrieve the page base tag"),"")}getApiClientOptions(){return(new A).setBaseUrl(this.state.trustedDomain)}async getSiteSettings(){const e=this.getApiClientOptions().setResourceName("settings"),t=new v(e),{body:n}=await t.findAll(),r=new F(n);return this.setState({siteSettings:r}),r}initLocale(e){const t=this.getUrlLocale(e)||this.getBrowserLocale(e)||this.getBrowserSimilarLocale(e)||e.locale;this.setState({locale:t})}getUrlLocale(e){const t=new URL(window.location.href).searchParams.get("locale");if(t){const n=e.supportedLocales.find(e=>t===e.locale);if(n)return n.locale}}getBrowserLocale(e){const t=e.supportedLocales.find(e=>navigator.language===e.locale);if(t)return t.locale}getBrowserSimilarLocale(e){const t=navigator.language.split("-")[0],n=e.supportedLocales.find(e=>t===e.locale.split("-")[0]);if(n)return n.locale}onUpdateLocaleRequested(e){this.setState({locale:e}),this.setUrlLocale(e)}setUrlLocale(e){const t=new URL(window.location.href);t.searchParams.set("locale",e),window.history.replaceState(null,null,t)}isReady(){return null!==this.state.siteSettings&&null!==this.state.locale}render(){return r.createElement(l.Provider,{value:this.state},this.isReady()&&r.createElement(V,{loadingPath:`${this.state.trustedDomain}/locales/{{lng}}/{{ns}}.json`},r.createElement(T,{value:{userId:this.userId,authenticationToken:this.authenticationToken}},r.createElement("div",{id:"container",className:"container page login"},r.createElement("div",{className:"content"},r.createElement("div",{className:"header"},r.createElement("div",{className:"logo-svg"},r.createElement($e,{role:"img",width:"20rem",height:"3.5rem"}))),r.createElement("div",{className:"login-form"},r.createElement(_e,null)),r.createElement(ue,null)),r.createElement(_,null)))))}}const Ve=Me,qe=document.createElement("div");document.body.appendChild(qe),(0,s.H)(qe).render(r.createElement(Ve,null))}},s={};function o(e){var t=s[e];if(void 0!==t)return t.exports;if(void 0===r[e]){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var a=s[e]={exports:{}};return r[e].call(a.exports,a,a.exports,o),a.exports}o.m=r,e=[],o.O=(t,n,r,s)=>{if(!n){var a=1/0;for(u=0;u<e.length;u++){for(var[n,r,s]=e[u],i=!0,l=0;l<n.length;l++)(!1&s||a>=s)&&Object.keys(o.O).every(e=>o.O[e](n[l]))?n.splice(l--,1):(i=!1,s<a&&(a=s));if(i){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}s=s||0;for(var u=e.length;u>0&&e[u-1][2]>s;u--)e[u]=e[u-1];e[u]=[n,r,s]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var s=Object.create(null);o.r(s);var a={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;("object"==typeof i||"function"==typeof i)&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(t=>a[t]=()=>e[t]);return a.default=()=>e,o.d(s,a),s},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.e=()=>Promise.resolve(),o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.j=673,(()=>{var e={673:0};o.O.j=t=>0===e[t];var t=(t,n)=>{var r,s,[a,i,l]=n,c=0;if(a.some(t=>0!==e[t])){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(l)var u=l(o)}for(t&&t(n);c<a.length;c++)s=a[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(u)},n=self.webpackChunkpassbolt_styleguide=self.webpackChunkpassbolt_styleguide||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var a=o.O(void 0,[847],()=>o(762));a=o.O(a)})();
2
+ (()=>{"use strict";var e,t,n,r={762(e,t,n){var r=n(6540),s=n(5338);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(null,arguments)}const a=r.createContext({user:null,users:null,roles:null,rememberMeOptions:{},resources:null,resource:null,shareResources:null,selectedResources:null,selectedUser:null,folders:null,resourceCommentId:null,mustRefreshComments:!1,siteSettings:null,userSettings:null,onCheckIsAuthenticatedRequested:null});function i(e){return class extends r.Component{render(){return r.createElement(a.Consumer,null,t=>r.createElement(e,o({context:t},this.props)))}}}const l=a;var c=n(5556),u=n.n(c);class h extends Error{constructor(e,t){super(e),this.name="PassboltApiFetchError",this.data=t||{}}}const d=h;class p extends Error{constructor(){super("An internal error occurred. The server response could not be parsed. Please contact your administrator."),this.name="PassboltBadResponseError"}}const m=p;class g extends Error{constructor(e){super(e=e||"The service is unavailable"),this.name="PassboltServiceUnavailableError"}}const E=g,f=["GET","POST","PUT","DELETE"];class v{constructor(e){if(this.options=e,!this.options.getBaseUrl())throw new TypeError("ApiClient constructor error: baseUrl is required.");if(!this.options.getResourceName())throw new TypeError("ApiClient constructor error: resourceName is required.");try{let e=this.options.getBaseUrl().toString();e.endsWith("/")&&(e=e.slice(0,-1));let t=this.options.getResourceName();t.startsWith("/")&&(t=t.slice(1)),t.endsWith("/")&&(t=t.slice(0,-1)),this.baseUrl=`${e}/${t}`,this.baseUrl=new URL(this.baseUrl)}catch(e){throw new TypeError("ApiClient constructor error: b.",{cause:e})}this.apiVersion="api-version=v2"}getDefaultHeaders(){return{Accept:"application/json","content-type":"application/json"}}async buildFetchOptions(){const e=await this.options.getHeaders();return{credentials:"include",headers:{...this.getDefaultHeaders(),...e}}}async get(e,t){this.assertValidId(e);const n=this.buildUrl(`${this.baseUrl}/${e}`,t||{});return this.fetchAndHandleResponse("GET",n)}async delete(e,t,n,r){let s;this.assertValidId(e),void 0===r&&(r=!1),s=r?this.buildUrl(`${this.baseUrl}/${e}/dry-run`,n||{}):this.buildUrl(`${this.baseUrl}/${e}`,n||{});let o=null;return t&&(o=this.buildBody(t)),this.fetchAndHandleResponse("DELETE",s,o)}async findAll(e){const t=this.buildUrl(this.baseUrl.toString(),e||{});return this.fetchAndHandleResponse("GET",t)}async create(e,t){const n=this.buildUrl(this.baseUrl.toString(),t||{}),r=this.buildBody(e);return this.fetchAndHandleResponse("POST",n,r)}async update(e,t,n,r){let s;this.assertValidId(e),void 0===r&&(r=!1),s=r?this.buildUrl(`${this.baseUrl}/${e}/dry-run`,n||{}):this.buildUrl(`${this.baseUrl}/${e}`,n||{});let o=null;return t&&(o=this.buildBody(t)),this.fetchAndHandleResponse("PUT",s,o)}async updateAll(e,t={}){const n=this.buildUrl(this.baseUrl.toString(),t),r=e?this.buildBody(e):null;return this.fetchAndHandleResponse("PUT",n,r)}assertValidId(e){if(!e)throw new TypeError("ApiClient.assertValidId error: id cannot be empty");if("string"!=typeof e)throw new TypeError("ApiClient.assertValidId error: id should be a string")}assertMethod(e){if("string"!=typeof e)throw new TypeError("ApiClient.assertValidMethod method should be a string.");if(f.indexOf(e.toUpperCase())<0)throw new TypeError(`ApiClient.assertValidMethod error: method ${e} is not supported.`)}assertUrl(e){if(!e)throw new TypeError("ApliClient.assertUrl error: url is required.");if(!(e instanceof URL))throw new TypeError("ApliClient.assertUrl error: url should be a valid URL object.");if("https:"!==e.protocol&&"http:"!==e.protocol)throw new TypeError("ApliClient.assertUrl error: url protocol should only be https or http.")}assertBody(e){if(!(e instanceof FormData)&&"string"!=typeof e)throw new TypeError("ApiClient.assertBody error: body should be a string or a FormData.")}buildBody(e){return JSON.stringify(e)}buildUrl(e,t){if("string"!=typeof e)throw new TypeError("ApiClient.buildUrl error: url should be a string.");const n=new URL(`${e}.json?${this.apiVersion}`);t=t||{};for(const[e,r]of Object.entries(t)){if("string"!=typeof e)throw new TypeError("ApiClient.buildUrl error: urlOptions key should be a string.");if("string"==typeof r)n.searchParams.append(e,r);else{if(!Array.isArray(r))throw new TypeError("ApiClient.buildUrl error: urlOptions value should be a string or array.");r.forEach(t=>{n.searchParams.append(e,t)})}}return n}async sendRequest(e,t,n,r){this.assertUrl(t),this.assertMethod(e),n&&this.assertBody(n);const s="undefined"!=typeof customApiClientFetch?customApiClientFetch:fetch,o={...await this.buildFetchOptions(),...r};o.method=e,n&&(o.body=n);try{return await s(t.toString(),o)}catch(e){throw console.error(e),navigator.onLine?new E("Unable to reach the server, an unexpected error occurred"):new E("Unable to reach the server, you are not connected to the network")}}async fetchAndHandleResponse(e,t,n,r){const s=await this.sendRequest(e,t,n,r);return this.parseResponseJson(s)}async parseResponseJson(e){let t;try{t=await e.json()}catch(t){throw console.debug(e.url.toString(),t),new m(t,e)}if(!e.ok){const n=t.header.message;throw new d(n,{code:e.status,body:t.body})}return t}}const y=class{constructor(e){e.setResourceName("auth"),this.apiClient=new v(e)}async logout(){const e=this.apiClient.buildUrl(`${this.apiClient.baseUrl}/logout`,{}),t=await this.apiClient.sendRequest("POST",e,null,{redirect:"manual"});if(!t.ok&&0!==t.status)return this._logoutLegacy()}async _logoutLegacy(){const e=this.apiClient.buildUrl(`${this.apiClient.baseUrl}/logout`,{}),t=await this.apiClient.sendRequest("GET",e,null,{redirect:"manual"});if(!t.ok&&0!==t.status)throw new d("An unexpected error happened during the legacy logout process",{code:t.status})}};function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},b.apply(null,arguments)}const S=r.createContext({userId:null,authenticationToken:null,state:null,unexpectedError:null,onInitializeAccountRecoveryRequested:()=>{},logoutUserAndRefresh:()=>{}});class w extends r.Component{constructor(e){super(e),this.state=Object.assign(this.defaultState,e.value),this.authLogoutService=new y(e.context.getApiClientOptions())}get defaultState(){return{userId:null,authenticationToken:null,state:R.INITIAL_STATE,unexpectedError:null,onInitializeAccountRecoveryRequested:this.onInitializeAccountRecoveryRequested.bind(this),logoutUserAndRefresh:this.logoutUserAndRefresh.bind(this)}}async onInitializeAccountRecoveryRequested(){if(!this.state.userId||!this.state.authenticationToken)return this.setState({state:R.REQUEST_INVITATION_ERROR});try{await this.verifyCanContinueAccountRecovery(),this.setState({state:R.RESTART_FROM_SCRATCH})}catch(e){await this.handleVerifyCanContinueAccountRecoveryError(e)}}async verifyCanContinueAccountRecovery(){const e=this.props.context.getApiClientOptions();e.setResourceName("account-recovery");const t=new v(e);await t.get(`continue/${this.state.userId}/${this.state.authenticationToken}`)}async handleVerifyCanContinueAccountRecoveryError(e){if(e instanceof d){if(403===e.data.code)return this.setState({state:R.ERROR_ALREADY_SIGNED_IN_STATE});const t=Boolean(e?.data?.body?.token?.expired),n=Boolean(e?.data?.body?.token?.isActive);if(t||n)return this.setState({state:R.TOKEN_EXPIRED_STATE})}this.setState({state:R.UNEXPECTED_ERROR_STATE,unexpectedError:e})}async logoutUserAndRefresh(){try{await this.authLogoutService.logout()}catch(e){const t=new E(e.message);return this.setState({unexpectedError:t,state:R.UNEXPECTED_ERROR_STATE})}window.location.reload()}render(){return r.createElement(S.Provider,{value:this.state},this.props.children)}}w.propTypes={context:u().any,value:u().any,children:u().any};const T=i(w),R={INITIAL_STATE:"Initial state",RESTART_FROM_SCRATCH:"Restart from scratch state",TOKEN_EXPIRED_STATE:"Token expired state",ERROR_ALREADY_SIGNED_IN_STATE:"Error, already signed in state",REQUEST_INVITATION_ERROR:"Request inviration error state",UNEXPECTED_ERROR_STATE:"Unexpected error state"};class A{setBaseUrl(e){if(!e)throw new TypeError("ApiClientOption baseUrl is required.");if("string"==typeof e)try{this.baseUrl=new URL(e)}catch(e){throw new TypeError("ApiClientOption baseUrl is invalid.",{cause:e})}else{if(!(e instanceof URL))throw new TypeError("ApiClientOptions baseurl should be a string or URL");this.baseUrl=e}return this}setResourceName(e){if(!e)throw new TypeError("ApiClientOptions.setResourceName resourceName is required.");if("string"!=typeof e)throw new TypeError("ApiClientOptions.setResourceName resourceName should be a valid string.");return this.resourceName=e,this}getBaseUrl(){return this.baseUrl}getResourceName(){return this.resourceName}async getHeaders(){const e=await this.getCsrfToken();if(e)return{"X-CSRF-Token":e}}async getCsrfToken(){if("undefined"==typeof browser||void 0===browser.cookies){const e=document?.cookie?.split("; ")?.find(e=>e.startsWith("csrfToken"))?.split("=");return e&&2===e.length?e[1]:null}const e=this.baseUrl.toString(),t="/"===e.slice(-1)?e:`${e}/`,n=await browser.cookies.get({name:"csrfToken",url:t});return n?.value||null}}var C;function x(){return x=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},x.apply(null,arguments)}const I=function(e){return r.createElement("svg",x({xmlns:"http://www.w3.org/2000/svg",width:17,height:16,fill:"none",viewBox:"0 0 17 16"},e),C||(C=r.createElement("g",{clipPath:"url(#heart_svg__clip0_93_734678)"},r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M13.497 9.333c.993-.973 2-2.14 2-3.666A3.667 3.667 0 0 0 11.83 2c-1.173 0-2 .333-3 1.333-1-1-1.827-1.333-3-1.333a3.667 3.667 0 0 0-3.667 3.667c0 1.533 1 2.7 2 3.666L8.83 14z"}))))};var O=n(2389);class N extends r.Component{render(){return r.createElement("div",{className:"tooltip",tabIndex:"0"},this.props.children,r.createElement("span",{className:`tooltip-text ${this.props.direction}`},this.props.message))}}N.defaultProps={direction:"right"},N.propTypes={children:u().any,message:u().any.isRequired,direction:u().string};const U=N;class L extends r.Component{get privacyUrl(){return this.props.context.siteSettings.privacyLink}get creditsUrl(){return"https://www.passbolt.com/credits"}get unsafeUrl(){return"https://www.passbolt.com/docs/hosting/faq/why-I-see-unsafe-mode-banner/"}get termsUrl(){return this.props.context.siteSettings.termsLink}get versions(){const e=[],t=this.props.context.siteSettings.version;return t&&e.push(`${this.props.t("Server")} ${t}`),this.props.context.extensionVersion&&e.push(`${this.props.t("Client")} ${this.props.context.extensionVersion}`),e.join(" / ")}get isUnsafeMode(){if(!this.props.context.siteSettings)return!1;const e=this.props.context.siteSettings.debug,t=this.props.context.siteSettings.url.startsWith("http://");return e||t}render(){return r.createElement("footer",{className:"footer"},r.createElement("ul",{className:"footer-links"},this.isUnsafeMode&&r.createElement("li",{className:"error-message"},r.createElement("a",{href:this.unsafeUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Unsafe mode"))),this.termsUrl&&r.createElement("li",null,r.createElement("a",{href:this.termsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Terms"))),this.privacyUrl&&r.createElement("li",null,r.createElement("a",{href:this.privacyUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Privacy"))),r.createElement("li",null,r.createElement("a",{href:this.creditsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Credits"))),r.createElement("li",null,this.versions&&r.createElement(U,{message:this.versions,direction:"left"},r.createElement("a",{className:"button button-transparent inline",href:this.creditsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(I,null))),!this.versions&&r.createElement("a",{className:"button button-transparent inline",href:this.creditsUrl,target:"_blank",rel:"noopener noreferrer"},r.createElement(I,null)))))}}L.propTypes={context:u().any,t:u().func};const _=i((0,O.CI)("common")(L));var D=n(5648);const k=(e,t)=>t.split(".").reduce((e,t)=>e?.[t],e),P=(e,t)=>{if(void 0===e||"string"!=typeof e||!e.length)return!1;if((t=t||{}).whitelistedProtocols&&!Array.isArray(t.whitelistedProtocols))throw new TypeError("The whitelistedProtocols should be an array of string.");if(t.defaultProtocol&&"string"!=typeof t.defaultProtocol)throw new TypeError("The defaultProtocol should be a string.");const n=t.whitelistedProtocols||[j.HTTP,j.HTTPS],r=[j.JAVASCRIPT],s=t.defaultProtocol||"";!/^(?:(?!:\/\/).)*:\/\//.test(e)&&s&&(e=`${s}//${e}`);try{const t=new URL(e);return!r.includes(t.protocol)&&!!n.includes(t.protocol)&&t.href}catch(e){return console.error("Failed to sanitize URL:",e),!1}},j={FTP:"http:",FTPS:"https:",HTTP:"http:",HTTPS:"https:",JAVASCRIPT:"javascript:",SSH:"ssh:"};class B{constructor(e){this.settings=this.sanitizeDto(e)}sanitizeDto(e){const t=JSON.parse(JSON.stringify(e));return this.sanitizeEmailValidateRegex(t),t}sanitizeEmailValidateRegex(e){const t=e?.passbolt?.email?.validate?.regex;t&&"string"==typeof t&&t.trim().length&&(e.passbolt.email.validate.regex=t.trim().replace(/^\/+/,"").replace(/\/+$/,""))}canIUse(e){let t=!1;const n=`passbolt.plugins.${e}`,r=k(this.settings,n)||null;if(r&&"object"==typeof r){const e=k(r,"enabled");void 0!==e&&!0!==e||(t=!0)}return t}isFeatureBeta(e){(0,D.A)(e);const t=`passbolt.plugins.${e}.isInBeta`;return k(this.settings,t)||!1}getPluginSettings(e){const t=`passbolt.plugins.${e}`;return k(this.settings,t)}getRememberMeOptions(){return(this.getPluginSettings("rememberMe")||{}).options||{}}get hasRememberMeUntilILogoutOption(){return void 0!==(this.getRememberMeOptions()||{})[-1]}getServerTimezone(){return k(this.settings,"passbolt.app.server_timezone")}get termsLink(){const e=k(this.settings,"passbolt.legal.terms.url");return!!e&&P(e)}get privacyLink(){const e=k(this.settings,"passbolt.legal.privacy_policy.url");return!!e&&P(e)}get registrationPublic(){return!0===k(this.settings,"passbolt.registration.public")}get debug(){return!0===k(this.settings,"app.debug")}get url(){return k(this.settings,"app.url")||""}get version(){return k(this.settings,"app.version.number")}get isCommunityEdition(){return"ce"===k(this.settings,"passbolt.edition")}get locale(){return k(this.settings,"app.locale")||B.DEFAULT_LOCALE.locale}async setLocale(e){this.settings.app.locale=e}get supportedLocales(){return k(this.settings,"passbolt.plugins.locale.options")||B.DEFAULT_SUPPORTED_LOCALES}get generatorConfiguration(){return k(this.settings,"passbolt.plugins.generator.configuration")}get emailValidateRegex(){return this.settings?.passbolt?.email?.validate?.regex||null}static get DEFAULT_SUPPORTED_LOCALES(){return[B.DEFAULT_LOCALE]}static get DEFAULT_LOCALE(){return{locale:"en-UK",label:"English"}}}var F=n(2635),$=n(1347);class M extends r.Component{constructor(e){super(e),this.state=this.defaultState}get defaultState(){return{ready:!1}}async componentDidMount(){await(0,F.Yx)(O.r9).use($.A).init({lng:this.locale,load:"currentOnly",interpolation:{escapeValue:!1},react:{useSuspense:!1},backend:{loadPath:(e,t)=>this.getTranslationPath(e,t)},supportedLngs:this.supportedLocales,fallbackLng:!1,ns:["common"],defaultNS:"common",keySeparator:!1,nsSeparator:!1,debug:!1}),this.setState({ready:!0})}getTranslationPath(e,t){const n=e[0],r=t[0],s="en-GB"===n?"en-UK":n;return(this.props.loadingPath||"/locales/{{lng}}/{{ns}}.json").replace("{{lng}}",s).replace("{{ns}}",r)}get supportedLocales(){let e=[];return this.props.context.siteSettings?.supportedLocales?e=this.props.context.siteSettings?.supportedLocales.map(e=>e.locale):e.push(this.locale),e.includes("en-UK")&&e.push("en-GB"),e}get locale(){return this.props.context.locale}async componentDidUpdate(e){await this.handleLocaleChange(e.context.locale)}async handleLocaleChange(e){this.locale!==e&&await(0,F.v2)(this.locale)}get isReady(){return this.state.ready}render(){return r.createElement(r.Fragment,null,this.isReady&&this.props.children)}}M.propTypes={context:u().any,loadingPath:u().any,children:u().any};const V=i(M),q=new class{allPropTypes=(...e)=>(...t)=>{const n=e.map(e=>e(...t)).filter(Boolean);if(0===n.length)return;const r=n.map(e=>e.message).join("\n");return new Error(r)}};var z;function H(){return H=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},H.apply(null,arguments)}const X=function(e){return r.createElement("svg",H({width:25,height:24,fill:"none",viewBox:"0 0 25 24"},e),z||(z=r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M11.597 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16M21.597 21l-4.35-4.35"})))};var K;function W(){return W=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},W.apply(null,arguments)}const G=function(e){return r.createElement("svg",W({xmlns:"http://www.w3.org/2000/svg",width:10,height:8,fill:"none",viewBox:"0 0 10 8"},e),K||(K=r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m1 2 4 4 4-4"})))};class Y extends r.Component{constructor(e){super(e),this.state=this.getDefaultState(e),this.bindCallback(),this.createRefs()}getDefaultState(e){return{selectedValue:e.value,search:"",open:!1,style:void 0}}get listItemsFiltered(){const e=this.props.items.filter(e=>e.value!==this.state.selectedValue);return this.props.search&&""!==this.state.search?this.getItemsMatch(e,this.state.search):e}get selectedItemLabel(){const e=this.props.items&&this.props.items.find(e=>e.value===this.state.selectedValue);return e&&e.label||r.createElement(r.Fragment,null," ")}static getDerivedStateFromProps(e,t){return void 0!==e.value&&e.value!==t.selectedValue?{selectedValue:e.value}:null}bindCallback(){this.handleDocumentClickEvent=this.handleDocumentClickEvent.bind(this),this.handleDocumentContextualMenuEvent=this.handleDocumentContextualMenuEvent.bind(this),this.handleDocumentDragStartEvent=this.handleDocumentDragStartEvent.bind(this),this.handleDocumentScrollEvent=this.handleDocumentScrollEvent.bind(this),this.handleSelectClick=this.handleSelectClick.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleItemClick=this.handleItemClick.bind(this),this.handleSelectKeyDown=this.handleSelectKeyDown.bind(this),this.handleItemKeyDown=this.handleItemKeyDown.bind(this),this.handleBlur=this.handleBlur.bind(this)}createRefs(){this.selectedItemRef=r.createRef(),this.selectItemsRef=r.createRef(),this.itemsRef=r.createRef()}componentDidMount(){document.addEventListener("click",this.handleDocumentClickEvent,{capture:!0}),document.addEventListener("contextmenu",this.handleDocumentContextualMenuEvent,{capture:!0}),document.addEventListener("dragstart",this.handleDocumentDragStartEvent,{capture:!0}),document.addEventListener("scroll",this.handleDocumentScrollEvent,{capture:!0})}componentWillUnmount(){document.removeEventListener("click",this.handleDocumentClickEvent,{capture:!0}),document.removeEventListener("contextmenu",this.handleDocumentContextualMenuEvent,{capture:!0}),document.removeEventListener("dragstart",this.handleDocumentDragStartEvent,{capture:!0}),document.removeEventListener("scroll",this.handleDocumentScrollEvent,{capture:!0})}handleDocumentClickEvent(e){this.selectedItemRef.current.contains(e.target)||this.selectItemsRef.current.contains(e.target)||this.closeSelect()}handleDocumentContextualMenuEvent(e){this.selectedItemRef.current.contains(e.target)||this.selectItemsRef.current.contains(e.target)||this.closeSelect()}handleDocumentDragStartEvent(){this.closeSelect()}handleDocumentScrollEvent(e){this.itemsRef.current.contains(e.target)||this.selectItemsRef.current.contains(e.target)||this.closeSelect()}handleSelectClick(){if(this.props.disabled)this.closeSelect();else{const e=!this.state.open;e?this.forceVisibilitySelect():this.resetStyleSelect(),this.setState({open:e})}}getFirstParentWithTransform(){let e=this.selectedItemRef.current.parentElement;for(;null!==e&&""===e.style.getPropertyValue("transform");)e=e.parentElement;return e}forceVisibilitySelect(){const e=this.selectedItemRef.current.getBoundingClientRect(),{width:t,height:n}=e;let{top:r,left:s}=e;const o=this.getFirstParentWithTransform();if(o){const e=o.getBoundingClientRect();r-=e.top,s-=e.left}const a={position:"fixed",zIndex:1,width:t,height:n,top:r,left:s};this.setState({style:a})}handleBlur(e){e.currentTarget.contains(e.relatedTarget)||this.closeSelect()}closeSelect(){this.resetStyleSelect(),this.setState({open:!1})}resetStyleSelect(){this.setState({style:void 0})}handleInputChange(e){const t=e.target,n=t.value,r=t.name;this.setState({[r]:n})}handleItemClick(e){if(this.setState({selectedValue:e.value,open:!1}),"function"==typeof this.props.onChange){const t={target:{value:e.value,name:this.props.name}};this.props.onChange(t)}this.closeSelect()}getItemsMatch(e,t){const n=t&&t.split(/\s+/)||[""];return e.filter(e=>n.every(t=>((e,t)=>(e=>new RegExp((e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))(e),"i"))(e).test(t))(t,e.label)))}handleSelectKeyDown(e){switch(e.keyCode){case 13:return e.stopPropagation(),void this.handleSelectClick();case 40:return e.preventDefault(),e.stopPropagation(),void(this.state.open?this.focusItem(0):this.handleSelectClick());case 38:return e.preventDefault(),e.stopPropagation(),void(this.state.open?this.focusItem(this.listItemsFiltered.length-1):this.handleSelectClick());case 27:return e.stopPropagation(),void this.closeSelect();default:return}}focusItem(e){this.itemsRef.current.childNodes[e]?.focus()}handleItemKeyDown(e,t){switch(e.keyCode){case 13:return e.stopPropagation(),void this.handleItemClick(t);case 40:return e.stopPropagation(),e.preventDefault(),void(e.target.nextSibling?e.target.nextSibling.focus():this.focusItem(0));case 38:return e.stopPropagation(),e.preventDefault(),void(e.target.previousSibling?e.target.previousSibling.focus():this.focusItem(this.listItemsFiltered.length-1));default:return}}hasFilteredItems(){return this.listItemsFiltered.length>0}render(){return r.createElement("div",{className:`select-container ${this.props.className}`,style:{width:this.state.style?.width,height:this.state.style?.height}},r.createElement("div",{onKeyDown:this.handleSelectKeyDown,onBlur:this.handleBlur,id:this.props.id,className:`select ${this.props.direction} ${this.state.open?"open":""}`,style:this.state.style},r.createElement("div",{ref:this.selectedItemRef,className:"selected-value "+(this.props.disabled?"disabled":""),tabIndex:this.props.disabled?-1:0,onClick:this.handleSelectClick},r.createElement("span",{className:"value"},this.selectedItemLabel),r.createElement(G,null)),r.createElement("div",{ref:this.selectItemsRef,className:"select-items "+(this.state.open?"visible":"")},this.props.search&&r.createElement(r.Fragment,null,r.createElement("input",{className:"search-input",name:"search",value:this.state.search,onChange:this.handleInputChange,type:"text"}),r.createElement(X,{className:"search"})),r.createElement("ul",{ref:this.itemsRef,className:"items"},this.hasFilteredItems()&&this.listItemsFiltered.map(e=>r.createElement("li",{tabIndex:e.disabled?-1:0,key:e.value,title:e.title,className:`option ${e.value}`,onKeyDown:t=>this.handleItemKeyDown(t,e),onClick:()=>this.handleItemClick(e)},e.label)),!this.hasFilteredItems()&&this.props.search&&r.createElement("li",{className:"option no-results"},r.createElement(O.x6,null,"No results match")," ",r.createElement("span",null,this.state.search))))))}}Y.defaultProps={id:"",name:"select",className:"",direction:"bottom"},Y.propTypes={id:u().string,name:u().string,className:u().string,direction:u().oneOf(Object.values({top:"top",bottom:"bottom",left:"left",right:"right"})),search:u().bool,items:u().array,value:q.allPropTypes(u().oneOfType([u().string,u().number,u().bool]),(e,t,n)=>{const r=e[t],s=e.items;if(null!==r&&s.length>0&&s.every(e=>e.value!==r))return new Error(`Invalid prop ${t} passed to ${n}. Expected the value ${r} in items.`)}),disabled:u().bool,onChange:u().func};const J=(0,O.CI)("common")(Y);class Q extends r.Component{constructor(e){super(e),this.state=this.defaultState,this.bindHandlers()}componentDidMount(){this.initLocale()}componentDidUpdate(e){this.handleLocaleChange(e.context.locale)}handleLocaleChange(e){this.props.context.locale!==e&&this.setState({locale:this.props.context.locale})}get defaultState(){return{loading:!0,locale:null,processing:!1}}get areActionsAllowed(){return!this.state.processing}bindHandlers(){this.handleLocaleInputChange=this.handleLocaleInputChange.bind(this)}async handleLocaleInputChange(e){const t=e.target.value;this.updateLocale(t)}async updateLocale(e){this.setState({processing:!0}),await this.props.context.onUpdateLocaleRequested(e),this.setState({processing:!1})}initLocale(){this.setState({locale:this.props.context.locale,loading:!1})}isLoading(){return this.state.loading}get supportedLocales(){return this.props.context.siteSettings.supportedLocales?this.props.context.siteSettings.supportedLocales.map(e=>({value:e.locale,label:e.label})):[]}render(){return r.createElement(r.Fragment,null,!this.isLoading()&&r.createElement("div",{className:"select-wrapper input"},r.createElement(J,{id:"user-locale-input",className:"setup-extension",name:"locale",value:this.state.locale,disabled:!this.areActionsAllowed,items:this.supportedLocales,onChange:this.handleLocaleInputChange})))}}Q.propTypes={context:u().any};const Z=i(Q),ee="chrome",te="edge",ne="firefox";function re(){return re=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},re.apply(null,arguments)}const se=r.createContext({userId:null,token:null,state:null,unexpectedError:null,onInitializeRecoverRequested:()=>{},logoutUserAndRefresh:()=>{}});class oe extends r.Component{constructor(e){super(e),this.state=Object.assign(this.defaultState,e.value),this.authLogoutService=new y(e.context.getApiClientOptions())}get defaultState(){return{userId:null,token:null,state:ae.INITIAL_STATE,unexpectedError:null,onInitializeRecoverRequested:this.onInitializeRecoverRequested.bind(this),logoutUserAndRefresh:this.logoutUserAndRefresh.bind(this),handleSafariExtensionDownloading:this.handleSafariExtensionDownloading.bind(this),handleSafariExtensionNotDownloaded:this.handleSafariExtensionNotDownloaded.bind(this),handleExtensionAlreadyInstalled:this.handleExtensionAlreadyInstalled.bind(this)}}async onInitializeRecoverRequested(){return this.state.userId&&this.state.token?this.isBrowserSupported()?void await this.startRecover().then(this.handleStartRecoverSuccess.bind(this)).catch(this.handleStartRecoverError.bind(this)):this.setState({state:ae.DOWNLOAD_SUPPORTED_BROWSER_STATE}):this.setState({state:ae.REQUEST_INVITATION_ERROR})}handleStartRecoverSuccess(){const e=ae.INSTALL_EXTENSION_STATE;this.setState({state:e})}handleSafariExtensionDownloading(){const e=ae.CONFIGURE_SAFARI_EXTENSION_STATE;this.setState({state:e})}handleSafariExtensionNotDownloaded(){const e=ae.INSTALL_SAFARI_EXTENSION_STATE;this.setState({state:e})}handleExtensionAlreadyInstalled(){const e=ae.CONFIGURE_SAFARI_EXTENSION_STATE;this.setState({state:e})}handleStartRecoverError(e){if(e instanceof d){if(403===e.data.code)return this.setState({state:ae.ERROR_ALREADY_SIGNED_IN_STATE});const t=Boolean(e.data.body?.token?.expired),n=Boolean(e.data.body?.token?.isActive);if(t||n)return this.setState({state:ae.TOKEN_EXPIRED_STATE});if(400===e?.data?.code)return this.setState({state:ae.REQUEST_INVITATION_ERROR})}return this.setState({state:ae.UNEXPECTED_ERROR_STATE})}async logoutUserAndRefresh(){try{await this.authLogoutService.logout()}catch(e){const t=new E(e.message);return this.setState({unexpectedError:t,state:ae.UNEXPECTED_ERROR_STATE})}window.location.reload()}isBrowserSupported(){const e=function(){const e=window.navigator.userAgent.toLowerCase();let t;return t=e.indexOf("firefox")>-1?ne:e.indexOf("samsungbrowser")>-1?"samsung":e.indexOf("opera")>-1||e.indexOf("opr")>-1?"opera":e.indexOf("trident")>-1?"internet-explorer":e.indexOf("edg")>-1?te:e.indexOf("chrome")>-1?ee:e.indexOf("safari")>-1?"safari":"unknown",t}();return[ee,ne,te].includes(e)}async startRecover(){const e=this.props.context.getApiClientOptions();e.setResourceName("setup");const t=new v(e);await t.get(`recover/${this.state.userId}/${this.state.token}`)}render(){return r.createElement(se.Provider,{value:this.state},this.props.children)}}oe.propTypes={context:u().any,value:u().any,children:u().any},i(oe);const ae={INITIAL_STATE:"Initial state",DOWNLOAD_SUPPORTED_BROWSER_STATE:"Download supported browser state",INSTALL_EXTENSION_STATE:"Install extension state",INSTALL_SAFARI_EXTENSION_STATE:"Install Safari extension state",CONFIGURE_SAFARI_EXTENSION_STATE:"Configure Safari extension state",TOKEN_EXPIRED_STATE:"Token expired state",ERROR_ALREADY_SIGNED_IN_STATE:"Error, already signed in state",REQUEST_INVITATION_ERROR:"Request inviration error state",UNEXPECTED_ERROR_STATE:"Unexpected error state"};class ie extends r.Component{get statesToHideLocaleSwitch(){return[ae.INITIAL_STATE]}get mustDisplayLocaleSwitch(){return!this.statesToHideLocaleSwitch.includes(this.props.apiRecoverContext.state)}render(){return r.createElement(r.Fragment,null,this.mustDisplayLocaleSwitch&&r.createElement(Z,null))}}ie.propTypes={apiRecoverContext:u().any};const le=(ce=ie,class extends r.Component{render(){return r.createElement(se.Consumer,null,e=>r.createElement(ce,re({apiRecoverContext:e},this.props)))}});var ce,ue,he;function de(){return de=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},de.apply(null,arguments)}const pe=function(e){return r.createElement("svg",de({width:18,height:18,fill:"none",className:"svg-icon spinner",viewBox:"0 0 18 18"},e),ue||(ue=r.createElement("circle",{id:"background",cx:8,cy:8,r:8,fill:"none",stroke:"var(--spinner-background)",strokeWidth:"var(--spinner-stroke-width)",transform:"translate(1 1)"})),he||(he=r.createElement("circle",{id:"loading",r:8,fill:"none",stroke:"var(--spinner-color)",strokeLinecap:"round",strokeWidth:"var(--spinner-stroke-width)",transform:"translate(9 9)"})))};class me extends r.Component{render(){return r.createElement("div",{className:"login-processing"},r.createElement("h1",null,this.props.title),r.createElement("div",{className:"processing-wrapper"},r.createElement(pe,null)))}}me.propTypes={title:u().oneOfType([u().arrayOf(u().node),u().node,u().string])},me.defaultProps={title:r.createElement(O.x6,null,"Please wait...")};const ge=(0,O.CI)("common")(me);var Ee;function fe(){return fe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fe.apply(null,arguments)}const ve=function(e){return r.createElement("svg",fe({xmlns:"http://www.w3.org/2000/svg",width:8,height:10,fill:"none",viewBox:"0 0 8 10"},e),Ee||(Ee=r.createElement("path",{stroke:"var(--icon-color)",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m2 9 4-4-4-4"})))};class ye extends r.Component{constructor(e){super(e),this.state=this.defaultState,this.bindCallbacks()}get defaultState(){return{showErrorDetails:!1}}bindCallbacks(){this.handleErrorDetailsToggle=this.handleErrorDetailsToggle.bind(this)}onClick(){this.props.context.port?this.props.context.port.request("passbolt.tab.reload"):window.location.reload()}handleErrorDetailsToggle(){this.setState({showErrorDetails:!this.state.showErrorDetails})}get hasErrorDetails(){const e=this.props?.error;return Boolean(e?.details)||Boolean(e?.data?.body)}formatErrors(){const e=this.props.error?.details||this.props.error?.data;return JSON.stringify(e,null,4)}render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,this.props.title),r.createElement("p",null,this.props.message),r.createElement("p",null,this.props.error&&this.props.error.message),this.hasErrorDetails&&r.createElement("div",{className:"accordion error-details"},r.createElement("div",{className:"accordion-header"},r.createElement("button",{className:"no-border",type:"button",onClick:this.handleErrorDetailsToggle},this.state.showErrorDetails?r.createElement(G,{className:"caret-down"}):r.createElement(ve,{className:"caret-right"}),r.createElement("span",null,r.createElement(O.x6,null,"Error details")))),this.state.showErrorDetails&&r.createElement("div",{className:"accordion-content"},r.createElement("div",{className:"input text"},r.createElement("label",{htmlFor:"js_field_debug",className:"visuallyhidden"},r.createElement(O.x6,null,"Error details")),r.createElement("textarea",{id:"js_field_debug",defaultValue:`${this.formatErrors()}`,readOnly:!0})))),r.createElement("div",{className:"form-actions"},r.createElement("button",{onClick:this.onClick.bind(this),className:"button primary big full-width",role:"button"},r.createElement(O.x6,null,"Try again"))))}}ye.defaultProps={title:r.createElement(O.x6,null,"Something went wrong!"),message:r.createElement(O.x6,null,"The operation failed with the following error:")},ye.propTypes={context:u().any,title:u().oneOfType([u().arrayOf(u().node),u().node,u().string]),message:u().oneOfType([u().arrayOf(u().node),u().node,u().string]),error:u().any};const be=i((0,O.CI)("common")(ye));class Se extends r.Component{render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,r.createElement(O.x6,null,"Sorry, wrong computer or browser...")),r.createElement("p",null,r.createElement(O.x6,null,"You need to finalize the account recovery process with the same computer you used for the account recovery request."),r.createElement("br",null),r.createElement("br",null),r.createElement(O.x6,null,"If you changed systems, or reinstalled passbolt web extension in the meantime, you will need to start the account recovery process from scratch.")),r.createElement("div",{className:"form-actions"},r.createElement("a",{href:`${this.props.context.trustedDomain}/users/recover`,className:"button primary big full-width",role:"button",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Restart from scratch"))))}}Se.propTypes={context:u().any};const we=i((0,O.CI)("common")(Se));class Te extends r.Component{render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,r.createElement(O.x6,null,"The request is expired.")),r.createElement("p",null,r.createElement(O.x6,null,"If you still need to recover your account, you will need to start the process from scratch.")),r.createElement("div",{className:"form-actions"},r.createElement("a",{href:`${this.props.context.trustedDomain}`,className:"button primary big full-width",role:"button",rel:"noopener noreferrer"},r.createElement(O.x6,null,"Continue"))))}}Te.propTypes={context:u().any};const Re=i((0,O.CI)("common")(Te)),Ae="setup",Ce="recover",xe="account-recovery";class Ie extends r.Component{render(){return r.createElement("div",{className:"setup-error"},r.createElement("h1",null,r.createElement(O.x6,null,"Cannot perform the action while being logged in")),r.createElement("p",null,{[Ae]:r.createElement(O.x6,null,"It is not possible to perform a setup of a new account as you are still logged in. You need to log out first before continuing."),[Ce]:r.createElement(O.x6,null,"It is not possible to perform the recovery of your account as you are still logged in. You need to log out first before continuing."),[xe]:r.createElement(O.x6,null,"It is not possible to recover your private key of your account as you are still logged in. You need to log out first before continuing.")}[this.props.displayAs]),r.createElement("div",{className:"form-actions"},r.createElement("button",{onClick:this.props.onLogoutButtonClick.bind(this),className:"button primary big full-width",role:"button"},r.createElement(O.x6,null,"Sign out"))))}}Ie.propTypes={displayAs:u().oneOf([Ae,Ce,xe]).isRequired,onLogoutButtonClick:u().func.isRequired};const Oe=(0,O.CI)("common")(Ie);class Ne extends r.Component{componentDidMount(){this.initializeAccountRecovery()}initializeAccountRecovery(){setTimeout(()=>this.props.apiAccountRecoveryContext.onInitializeAccountRecoveryRequested(),1e3)}render(){switch(this.props.apiAccountRecoveryContext.state){case R.RESTART_FROM_SCRATCH:return r.createElement(we,null);case R.TOKEN_EXPIRED_STATE:return r.createElement(Re,null);case R.ERROR_ALREADY_SIGNED_IN_STATE:return r.createElement(Oe,{onLogoutButtonClick:this.props.apiAccountRecoveryContext.logoutUserAndRefresh,displayAs:xe});case R.UNEXPECTED_ERROR_STATE:return r.createElement(be,{error:this.props.apiAccountRecoveryContext.unexpectedError});default:return r.createElement(ge,null)}}}Ne.propTypes={apiAccountRecoveryContext:u().object};const Ue=function(e){return class extends r.Component{render(){return r.createElement(S.Consumer,null,t=>r.createElement(e,b({apiAccountRecoveryContext:t},this.props)))}}}(Ne);var Le,_e,De,ke,Pe;function je(){return je=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},je.apply(null,arguments)}const Be=function(e){return r.createElement("svg",je({xmlns:"http://www.w3.org/2000/svg",width:151,height:27,fill:"none","aria-labelledby":"logo-title logo-description",viewBox:"0 0 151 27"},e),Le||(Le=r.createElement("title",{id:"logo-title"},"Passbolt logo")),_e||(_e=r.createElement("desc",{id:"logo-description"},"This is the logo of passbolt.")),De||(De=r.createElement("path",{fill:"var(--icon-color)",d:"M4.648 9.234v8.607h2.48c1.646 0 2.786-.349 3.47-1.012.685-.664 1.013-1.823 1.013-3.395 0-1.52-.305-2.595-.938-3.218-.633-.673-1.695-.972-3.24-.972zM.597 5.963h7.797c2.357 0 4.178.676 5.496 2.048q1.976 2.058 1.974 5.689a8.6 8.6 0 0 1-.406 2.749 7.1 7.1 0 0 1-1.24 2.278 5.9 5.9 0 0 1-2.38 1.773c-.937.349-2.152.524-3.697.524H4.648V26.5H.597zM24.016 18.016h5.064v-3.119h-4.76c-.937 0-1.594.124-1.95.375-.357.25-.517.698-.517 1.321 0 .524.15.899.429 1.122.28.223.848.301 1.734.301M18.649 5.963h8.268c2.103 0 3.672.476 4.736 1.423 1.065.947 1.594 2.347 1.594 4.217v9.456H22.37c-1.52 0-2.708-.375-3.52-1.121-.81-.747-1.2-1.823-1.2-3.22 0-1.722.454-2.945 1.392-3.692s2.483-1.134 4.697-1.134h5.315v-.365c0-.898-.276-1.518-.809-1.896-.532-.377-1.47-.55-2.86-.55H18.65zM36.55 17.915h8.525c.76 0 1.318-.124 1.646-.35.183-.122.328-.29.423-.486.094-.197.134-.414.115-.63a1.2 1.2 0 0 0-.112-.632 1.24 1.24 0 0 0-.42-.492c-.355-.253-.91-.374-1.646-.374h-3.494c-2.067 0-3.467-.325-4.203-.947-.737-.623-1.088-1.747-1.088-3.32 0-1.62.431-2.82 1.318-3.592.886-.772 2.255-1.152 4.064-1.152h8.684v3.142h-7.134q-1.75 0-2.279.301c-.354.198-.532.547-.532 1.071-.017.193.016.387.096.564s.204.332.361.449c.302.223.809.324 1.468.324h3.676c1.672 0 2.961.397 3.824 1.172s1.315 1.871 1.315 3.32c0 1.397-.405 2.53-1.188 3.417-.37.427-.833.768-1.354.996-.522.23-1.09.34-1.661.325H36.549zM53.822 17.915h8.526c.76 0 1.318-.124 1.646-.35a1.23 1.23 0 0 0 .42-.487c.093-.196.132-.413.112-.629a1.2 1.2 0 0 0-.111-.632 1.24 1.24 0 0 0-.421-.492c-.354-.253-.91-.374-1.646-.374h-3.493c-2.067 0-3.467-.325-4.204-.947-.736-.623-1.088-1.752-1.088-3.324 0-1.62.432-2.82 1.318-3.593.886-.772 2.253-1.147 4.075-1.147h8.686v3.142h-7.141q-1.747 0-2.28.301c-.353.198-.531.547-.531 1.071-.017.193.016.387.096.564s.204.332.361.449c.302.223.809.324 1.468.324h3.671c1.672 0 2.963.397 3.824 1.172s1.315 1.871 1.315 3.32c0 1.397-.403 2.53-1.188 3.417-.37.427-.832.767-1.354.996a3.9 3.9 0 0 1-1.66.325H53.769v-3.106zM75.387.5v5.463h3.47c1.55 0 2.759.175 3.694.55.946.362 1.77.976 2.38 1.772a7.2 7.2 0 0 1 1.243 2.296c.281.888.417 1.814.403 2.744q0 3.63-1.974 5.689c-1.315 1.372-3.14 2.046-5.493 2.046h-7.8V.5zm2.462 8.734h-2.483v8.608h2.785c1.55 0 2.633-.324 3.243-.95s.935-1.721.935-3.268-.354-2.694-1.033-3.367c-.68-.673-1.832-1.023-3.447-1.023M92.3 13.525c0 1.445.328 2.532 1.013 3.367s1.62 1.198 2.86 1.198 2.152-.398 2.863-1.198 1.033-1.921 1.033-3.367-.356-2.547-1.033-3.344c-.677-.798-1.62-1.198-2.863-1.198a3.64 3.64 0 0 0-1.57.279 3.6 3.6 0 0 0-1.29.919c-.685.797-1.013 1.921-1.013 3.344m12.002 0q0 3.544-2.202 5.689c-1.47 1.397-3.42 2.121-5.901 2.121s-4.457-.699-5.924-2.121-2.202-3.292-2.202-5.664q0-3.558 2.202-5.69c1.467-1.424 3.444-2.145 5.919-2.145s4.431.724 5.901 2.144 2.207 3.294 2.207 5.666M110.935 21.06h-4.202V.5h4.202zM112.884 5.963h2.86V.5h4.052v5.463h4.278v3.02h-4.278v6.09c0 1.12.204 1.895.581 2.343.377.449 1.064.649 2.026.649h1.671v3.02h-3.72c-1.494 0-2.636-.4-3.444-1.223-.809-.823-1.189-1.995-1.189-3.519v-7.36h-2.863v-3.02z"})),ke||(ke=r.createElement("path",{fill:"#D40101",d:"m149.951 10.68-9.059-8.36a2.12 2.12 0 0 0-1.421-.543c-.526 0-1.033.194-1.421.544l-5.684 5.268c.745.271 1.414.71 1.952 1.282.539.572.933 1.26 1.149 2.01h7.673a.73.73 0 0 1 .504.204.69.69 0 0 1 .207.494v1.147a.68.68 0 0 1-.207.494.72.72 0 0 1-.504.204h-.886v1.623a.68.68 0 0 1-.205.494.72.72 0 0 1-.503.205h-1.945a.73.73 0 0 1-.503-.205.69.69 0 0 1-.205-.494v-1.623h-3.426a4.84 4.84 0 0 1-1.135 2.033 5 5 0 0 1-1.966 1.287l5.71 5.276c.388.349.895.543 1.421.543a2.12 2.12 0 0 0 1.421-.543l9.043-8.355a2.03 2.03 0 0 0-.01-2.985"})),Pe||(Pe=r.createElement("path",{fill:"#D40101",d:"M130.683 9.867a2.6 2.6 0 0 0-1.064.253c-.371.18-.686.455-.913.794a2.242 2.242 0 0 0-.113 2.305 2.3 2.3 0 0 0 .831.877 2.36 2.36 0 0 0 2.355.059c.362-.197.664-.484.875-.833a2.24 2.24 0 0 0 .324-1.153 2.21 2.21 0 0 0-.653-1.625 2.3 2.3 0 0 0-.751-.5 2.3 2.3 0 0 0-.891-.177"})))};class Fe extends r.Component{constructor(e){super(e),this.state=this.defaultState,this.userId=null,this.authenticationToken=null,this.initializeProperties()}get defaultState(){return{siteSettings:null,trustedDomain:this.baseUrl,getApiClientOptions:this.getApiClientOptions.bind(this),locale:null,onUpdateLocaleRequested:this.onUpdateLocaleRequested.bind(this)}}async componentDidMount(){const e=await this.getSiteSettings();this.initLocale(e)}initializeProperties(){const e="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[0-5][a-fA-F0-9]{3}-[089aAbB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}",t=new RegExp(`account-recovery/continue/(${e})/(${e})$`),n=window.location.pathname.match(t);n?(this.userId=n[1],this.authenticationToken=n[2]):console.error("Unable to parse the url.")}get baseUrl(){const e=document.getElementsByTagName("base")&&document.getElementsByTagName("base")[0];return e?e.attributes.href.value.replace(/\/*$/g,""):(console.error("Unable to retrieve the page base tag"),"")}getApiClientOptions(){return(new A).setBaseUrl(this.state.trustedDomain)}async getSiteSettings(){const e=this.getApiClientOptions().setResourceName("settings"),t=new v(e),{body:n}=await t.findAll(),r=new B(n);return this.setState({siteSettings:r}),r}initLocale(e){const t=this.getUrlLocale(e)||this.getBrowserLocale(e)||this.getBrowserSimilarLocale(e)||e.locale;this.setState({locale:t})}getUrlLocale(e){const t=new URL(window.location.href).searchParams.get("locale");if(t){const n=e.supportedLocales.find(e=>t===e.locale);if(n)return n.locale}}getBrowserLocale(e){const t=e.supportedLocales.find(e=>navigator.language===e.locale);if(t)return t.locale}getBrowserSimilarLocale(e){const t=navigator.language.split("-")[0],n=e.supportedLocales.find(e=>t===e.locale.split("-")[0]);if(n)return n.locale}onUpdateLocaleRequested(e){this.setState({locale:e}),this.setUrlLocale(e)}setUrlLocale(e){const t=new URL(window.location.href);t.searchParams.set("locale",e),window.history.replaceState(null,null,t)}isReady(){return null!==this.state.siteSettings&&null!==this.state.locale}render(){return r.createElement(l.Provider,{value:this.state},this.isReady()&&r.createElement(V,{loadingPath:`${this.state.trustedDomain}/locales/{{lng}}/{{ns}}.json`},r.createElement(T,{value:{userId:this.userId,authenticationToken:this.authenticationToken}},r.createElement("div",{id:"container",className:"container page login"},r.createElement("div",{className:"content"},r.createElement("div",{className:"header"},r.createElement("div",{className:"logo-svg"},r.createElement(Be,{role:"img",width:"20rem",height:"3.5rem"}))),r.createElement("div",{className:"login-form"},r.createElement(Ue,null)),r.createElement(le,null)),r.createElement(_,null)))))}}const $e=Fe,Me=document.createElement("div");document.body.appendChild(Me),(0,s.H)(Me).render(r.createElement($e,null))}},s={};function o(e){var t=s[e];if(void 0!==t)return t.exports;if(void 0===r[e]){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var a=s[e]={exports:{}};return r[e].call(a.exports,a,a.exports,o),a.exports}o.m=r,e=[],o.O=(t,n,r,s)=>{if(!n){var a=1/0;for(u=0;u<e.length;u++){for(var[n,r,s]=e[u],i=!0,l=0;l<n.length;l++)(!1&s||a>=s)&&Object.keys(o.O).every(e=>o.O[e](n[l]))?n.splice(l--,1):(i=!1,s<a&&(a=s));if(i){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}s=s||0;for(var u=e.length;u>0&&e[u-1][2]>s;u--)e[u]=e[u-1];e[u]=[n,r,s]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var s=Object.create(null);o.r(s);var a={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;("object"==typeof i||"function"==typeof i)&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(t=>a[t]=()=>e[t]);return a.default=()=>e,o.d(s,a),s},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.e=()=>Promise.resolve(),o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.j=673,(()=>{var e={673:0};o.O.j=t=>0===e[t];var t=(t,n)=>{var r,s,[a,i,l]=n,c=0;if(a.some(t=>0!==e[t])){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(l)var u=l(o)}for(t&&t(n);c<a.length;c++)s=a[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(u)},n=self.webpackChunkpassbolt_styleguide=self.webpackChunkpassbolt_styleguide||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var a=o.O(void 0,[847],()=>o(762));a=o.O(a)})();