passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
2 lines • 47.4 kB
JavaScript
/*! For license information please see api-account-recovery.js.LICENSE.txt */
(()=>{"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 x;function C(){return C=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},C.apply(null,arguments)}const I=function(e){return r.createElement("svg",C({xmlns:"http://www.w3.org/2000/svg",width:17,height:16,fill:"none",viewBox:"0 0 17 16"},e),x||(x=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(),t=[ee,ne,te];return this.props.context.siteSettings.canIUse("safari")&&t.push(re),t.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 xe=i((0,O.CI)("common")(Ae)),Ce="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,{[Ce]: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([Ce,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(xe,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)})();