1"use strict";(globalThis.webpackChunk_jobcloud_b2c_frontend=globalThis.webpackChunk_jobcloud_b2c_frontend||[]).push([["src_common_modules_modal_hooks_useModalCloseOnEsc_ts-src_common_modules_profile_hooks_useComp-cb87f6"],{30339(e,t,n){n.d(t,{Z:()=>o});var r=n(36633),a=n(74124);class s extends Error{constructor(e,t){super(e,t),this.name="JwtTokenError"}}class o{static DEFAULT_EXPIRY_LEEWAY_MS=3e4;tokenCache=null;pendingTokenFetch=null;expiryLeewayMs;constructor(e,t,n){this.fetchService=e,this.tokenUrl=t,this.expiryLeewayMs=n?.expiryLeewayMs??o.DEFAULT_EXPIRY_LEEWAY_MS}async getToken(){if(this.tokenCache&&this.isTokenCacheFresh(this.tokenCache))return this.tokenCache.token;if(this.pendingTokenFetch)return this.pendingTokenFetch;this.pendingTokenFetch=this.fetchToken();try{return await this.pendingTokenFetch}finally{this.pendingTokenFetch=null}}isTokenCacheFresh(e){return e.expiresAt>Date.now()+this.expiryLeewayMs}async fetchToken(){const e=await this.fetchService.fetch(this.tokenUrl,{preventNavigateToLogin:!0});if(!e.ok){const t=new s(`Failed to fetch token: HTTP error ${e.statusCode}`);return a.v.error(t),""}const t=e.result?.jwt;if(!t){const e=new s("Failed to fetch token: invalid response payload");return a.v.error(e),""}let n;try{({exp:n}=(0,r.iU)(t))}catch(e){return a.v.error(new s("cannot decode token"),{extras:{error:e}}),t}return"number"!=typeof n||(this.tokenCache={token:t,expiresAt:1e3*n}),t}}},14503(e,t,n){n.d(t,{Q3:()=>y,qv:()=>f,Op:()=>w,Je:()=>S,in:()=>E,F_:()=>v,xh:()=>_,Mw:()=>g,Qg:()=>k,eJ:()=>A,EX:()=>T});n(84775),n(78944),n(97512),n(27025),n(18910);var r=n(6799),a=n(62939),s=n(2390),o=n(8179),i=n(94956),c=n(18474),d=n(18218);const u=(e={})=>{return{id:e.id,mediaApiId:e.media_api_id,mediaApiUrl:e.media_api_url,fileName:e.file_name,fileType:e.file_type,fileSize:e.file_size,updatedAt:e.updated_at,createdAt:e.created_at,tags:(t=e.tags||[],t.map((e=>e.name))),visible:e.visible};var t};var l=n(98398),p=n(4584);const m="user/candidate/document",f=[m],h=async e=>{if(!e.get("query.client").getQueryData(d.qv))throw new Error("User not logged in");const t=e.get("core.fetch");return(0,c.A)(await t.fetch("user/candidate/document?sort[updatedAt]=DESC")).result.map((e=>u(e)))},y={queryKey:f,queryFn:h},g=e=>{const t=(0,r.c)(6),n=(0,i.A)(),{data:s}=(0,d.sg)(),o=!!s;let c,u;return t[0]!==n?(c=()=>h(n),t[0]=n,t[1]=c):c=t[1],t[2]!==e||t[3]!==o||t[4]!==c?(u={enabled:o,queryKey:f,queryFn:c,select:e},t[2]=e,t[3]=o,t[4]=c,t[5]=u):u=t[5],(0,a.I)(u)},k=()=>{const e=(0,r.c)(5),t=(0,i.A)(),{data:n}=(0,d.sg)(),s=!!n;let o,c;return e[0]!==t?(o=()=>h(t),e[0]=t,e[1]=o):o=e[1],e[2]!==s||e[3]!==o?(c={enabled:s,queryKey:f,queryFn:o,select:C},e[2]=s,e[3]=o,e[4]=c):c=e[4],(0,a.I)(c)},A=()=>{const e=(0,r.c)(5),t=(0,i.A)(),{data:n}=(0,d.sg)(),s=!!n;let o,c;return e[0]!==t?(o=()=>h(t),e[0]=t,e[1]=o):o=e[1],e[2]!==s||e[3]!==o?(c={enabled:s,queryKey:f,queryFn:o,select:F,refetchInterval:33e5,refetchOnWindowFocus:!0},e[2]=s,e[3]=o,e[4]=c):c=e[4],(0,a.I)(c)},T=()=>{const e=(0,r.c)(5),t=(0,i.A)(),{data:n}=(0,d.sg)(),s=!!n;let o,c;return e[0]!==t?(o=()=>h(t),e[0]=t,e[1]=o):o=e[1],e[2]!==s||e[3]!==o?(c={enabled:s,queryKey:f,queryFn:o,select:O},e[2]=s,e[3]=o,e[4]=c):c=e[4],(0,a.I)(c)},E=e=>{const t=(0,r.c)(12),n=(0,i.A)(),a=(0,s.jE)();let d;t[0]!==n?(d=n.wire(p.$),t[0]=n,t[1]=d):d=t[1];const{addDocument:l,createDocumentTag:m}=d;let h,y,g;return t[2]!==l||t[3]!==m||t[4]!==e?(h=async t=>{const{file:n,response:r}=t,a=(0,c.A)(await l(r.id,n.name));return e&&a.result?.id&&(0,c.A)(await m(a.result.id,e)),a},t[2]=l,t[3]=m,t[4]=e,t[5]=h):h=t[5],t[6]!==a||t[7]!==e?(y=t=>{a.setQueryData(f,(n=>[{...u(t.result),...e?{tags:[e]}:{}},...n||[]]))},t[6]=a,t[7]=e,t[8]=y):y=t[8],t[9]!==h||t[10]!==y?(g={mutationFn:h,mutationKey:f,onSuccess:y},t[9]=h,t[10]=y,t[11]=g):g=t[11],(0,o.n)(g)},_=()=>{const e=(0,r.c)(10),t=(0,i.A)(),n=(0,s.jE)();let a;e[0]!==t?(a=t.wire(p.$),e[0]=t,e[1]=a):a=e[1];const{updateDocument:c,updateDocumentTag:d}=a;let l,m,h;return e[2]!==c||e[3]!==d?(l=async e=>{const{fileName:t,id:n,tags:r,visible:a}=e;if(n)return Promise.all([c(n,{fileName:t,visible:a}),d(n,{tags:r})])},e[2]=c,e[3]=d,e[4]=l):l=e[4],e[5]!==n?(m=(e,t)=>{const{tags:r}=t;n.setQueryData(f,(t=>{const n={...u(e?.[0].result||{}),tags:r};return[n,...(t||[]).filter((e=>
1e.id!==n.id))]}))},e[5]=n,e[6]=m):m=e[6],e[7]!==l||e[8]!==m?(h={mutationFn:l,mutationKey:f,onSuccess:m},e[7]=l,e[8]=m,e[9]=h):h=e[9],(0,o.n)(h)},v=()=>{const e=(0,r.c)(9),t=(0,i.A)(),n=(0,s.jE)();let a;e[0]!==t?(a=t.wire(p.$),e[0]=t,e[1]=a):a=e[1];const{updateDocumentTag:c}=a;let d,u,l;return e[2]!==c?(d=async e=>{const{id:t,tags:n}=e;if(t)return c(t,{tags:n})},e[2]=c,e[3]=d):d=e[3],e[4]!==n?(u=(e,t)=>{const{id:r,tags:a}=t;n.setQueryData(f,(e=>{const t={...(e||[]).find((e=>e.id===r))||{},tags:a},n=(e||[]).filter((e=>e.id!==t.id));return[t,...n]}))},e[4]=n,e[5]=u):u=e[5],e[6]!==d||e[7]!==u?(l={mutationFn:d,mutationKey:f,onSuccess:u},e[6]=d,e[7]=u,e[8]=l):l=e[8],(0,o.n)(l)},w=()=>{const e=(0,r.c)(10),t=(0,i.A)(),n=(0,s.jE)();let a;e[0]!==t?(a=t.wire(p.$),e[0]=t,e[1]=a):a=e[1];const{addDocument:d,createDocumentTag:l}=a;let m,h,y;return e[2]!==d||e[3]!==l?(m=async e=>{const{file:t,response:n}=e,r=(0,c.A)(await d(n.id,t.name));return r.result?.id&&(0,c.A)(await l(r.result.id,"cv")),r},e[2]=d,e[3]=l,e[4]=m):m=e[4],e[5]!==n?(h=e=>{n.setQueryData(f,(t=>[...t||[],{...u(e.result),tags:["cv"]}]))},e[5]=n,e[6]=h):h=e[6],e[7]!==m||e[8]!==h?(y={mutationFn:m,mutationKey:f,onSuccess:h},e[7]=m,e[8]=h,e[9]=y):y=e[9],(0,o.n)(y)},S=()=>{const e=(0,r.c)(7),t=(0,i.A)(),n=(0,s.jE)();let a,d,u;return e[0]!==t?(a=async e=>(0,c.A)(await t.get("core.fetch").fetch(`${m}/${e}`,{method:"DELETE"})),e[0]=t,e[1]=a):a=e[1],e[2]!==n?(d=(e,t)=>{n.setQueryData(f,(e=>e&&e.filter((e=>e.id!==t))))},e[2]=n,e[3]=d):d=e[3],e[4]!==a||e[5]!==d?(u={mutationFn:a,mutationKey:f,onSuccess:d},e[4]=a,e[5]=d,e[6]=u):u=e[6],(0,o.n)(u)};function P(e){return e.tags?.includes("cv")}function C(e){return e?.find(P)}function D(e){return e.tags?.includes("cv")&&"application/pdf"===e.fileType}function F(e){return e?.find(D)}function I(e){return e.tags?.includes("cv")&&e.fileType&&l.f3.includes(e.fileType)}function O(e){return e?.find(I)}},55082(e,t,n){n.d(t,{d:()=>d});n(78944),n(45853),n(18910);var r=n(97229),a=n(30339),s=n(73128),o=n(18960);class i extends a.Z{constructor(e){super(e,`${o.Ok.PLATFORM}media-api/issue-source-token`)}async getSourceToken(){return this.getToken()}}class c{fetchService;locale;tenant;pendingFileUploads={};sourceTokenService;constructor(e,t,n){this.fetchService=e,this.locale=t,this.tenant=n,this.sourceTokenService=new i(e)}getSourceToken=async()=>this.sourceTokenService.getSourceToken();linkDocumentById=async(e,t)=>
1{const n=await this.getSourceToken();return this.fetchService.fetch(`${o.Ok.MEDIA_API_HOST}media/${e}/link?token=${t}`,{...n?{headers:{"x-source-jwt":n}}:{},method:"POST"})};linkDocument=async e=>{const t=e.mediaApiUrl?(0,r.parseUrl)(e.mediaApiUrl).query.token:"";if(!t)return{ok:!1,result:null};const n=await this.getSourceToken();return await this.fetchService.fetch(`${o.Ok.MEDIA_API_HOST}media/${e.mediaApiId}/link?token=${t}`,{...n?{headers:{"x-source-jwt":n}}:{},method:"POST"})};uploadFiles=async(e,t)=>{let n=0;const r=await this.getSourceToken(),a={Accept:"application/json","Accept-Language":this.locale,"x-source":`${this.tenant}_ch_desktop`,...r?{"x-source-jwt":r}:{}},s=e.length;({...t}).fileProgress=(...e)=>{n++,t&&t.progress&&t.progress(100/s*n),t&&t.fileProgress&&t.fileProgress(...e)},t&&t.start&&t.start(),Promise.all(e.map((e=>this.uploadFile(e,`${o.Ok.MEDIA_API_HOST}media`,a,{private:!0},t)))).then((()=>{t&&t.success&&t.success()})).catch((n=>{t&&t.error&&t.error(n),e.forEach((e=>t&&t.fileError&&t.fileError(e,n)))}))};uploadFile=(e,t,n,r={},a)=>new Promise(((s,o)=>{const i=new XMLHttpRequest;i.open("POST",t),this.pendingFileUploads[e.name]=i,a&&a.fileStart&&a.fileStart(e),Object.keys(n).forEach((e=>i.setRequestHeader(e,n[e]))),i.onload=t=>{const n=t&&t.currentTarget;if(n instanceof XMLHttpRequest){const t=this.decodeResponse(n.responseText);if(n.status&&!isNaN(n.status)&&n.status<300){const r={accessToken:n.getResponseHeader("x-access-token")};a&&a.fileSuccess&&a.fileSuccess(e,t,r),s()}else a&&a.fileError&&a.fileError(e,t),o(t)}delete this.pendingFileUploads[e.name]},i.onerror=t=>{const n=t&&t.currentTarget;if(n instanceof XMLHttpRequest){const t=this.decodeResponse(n.responseText);a&&a.fileError&&a.fileError(e,t),o(t)}delete this.pendingFileUploads[e.name]},i.onabort=()=>delete this.pendingFileUploads[e.name],i.upload&&(i.upload.onprogress=t=>{if(t.lengthComputable){const n=t.loaded/t.total*100;a&&a.fileProgress&&a.fileProgress(e,n)}});const c=new FormData;Object.keys(r).forEach((e=>c.append(e,r[e]))),c.append("file",e),i.send(c)}));decodeResponse=e=>{try{return JSON.parse(e)}catch(t){return e}}}const d=e=>new c(e.get("core.fetch"),e.get("core.locale"),s.j5.get());d.identifier="document.service"},72338(e,t,n){n.d(t,{A:()=>a});var r=n(41711);const a=(e,t)=>{(0,r.useEffect)((()=>{const n=e=>"Escape"===e.key&&t?.();if(e)return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n);document.removeEventListener("keydown",n)}),[e,t])}},98398(e,t,n){n.d(t,{f3:()=>a,sU:()=>r,x7:()=>s});const r=["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/pdf","image/jpg","image/jpeg","image/png"],a=["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/pdf"],s=33554432},5842(e,t,n){n.d(t,{A:()=>o});var r=n(44656),a=n(14503),s=n(29154);const o=()=>{const{data:{candidate:e,careers:t}={},isLoading:n}=(0,s.B9)(),{data:o,isLoading:i}=(0,a.Qg)();return{completenessPercentage:(0,r.P)({hasCv:!!o,candidate:e,careers:t}),isLoading:n||i}}},4584(e,t,n){n.d(t,{$:()=>c});n(78944),n(18910);var r=n(18474),a=n(29154),s=n(39180),o=n(45497),i=n(55082);const c=e=>(e=>{const t=e.get("core.fetch"),n=(e,n)=>t.fetch("user/candidate/document",{body:{media_api_id:e,file_name:n},method:"POST"}),c=(e,n)=>t.fetch(`user/candidate/document/${e}/tag`,{body:{name:n},method:"POST"});return{addDocument:n,createDocumentTag:c,linkAddAndTagDocument:async({fileName:t,id:r,tag:a,token:s})=>{const o=await e.wire(i.d).linkDocumentById(r,s);if(o?.ok&&o.result.id){const e=await n(o.result.id,t);if(e.ok&&e.result.id&&a&&"other"!==a)return c(e.result.id,a)}},patchCandidateDetail:async n=>{const r=e.get("query.client"),o=await t.fetch("user/candidate",{body:n,method:"PATCH"});return o.ok&&r.setQueryData(a.qv,(e=>e&&{...e,candidate:{...e.candidate,...(0,s.kh)(o.result)}})),o},postCareer:async n=>{const r=e.get("query.client"),{id:s,type:i}=n,c=`user/candidate/career/${i}${s?`/${s}`:""}`,d=await t.fetch(c,{body:(0,o.dW)(n),method:s?"PATCH":"POST"});return d.ok&&r.setQueryData(a.qv,(e=>e&&{...e,careers:s?e.careers.map((e=>e.id===s?(0,o.Ay)(d.result):e)):[...e.careers,(0,o.Ay)(d.result)]})),d},updateDocument:async(e,{fileName:n,visible:a})=>(0,r.A)(await t.fetch(`user/candidate/document/${e}
1`,{body:{file_name:n,visible:a},method:"PATCH"})),updateDocumentTag:async(e,{tags:n=[]})=>(0,r.A)(await t.fetch(`user/candidate/document/${e}/tag`,{body:n.map((e=>({name:e}))),method:"PUT"}))}})(e);c.identifier="profile.service"},44656(e,t,n){n.d(t,{P:()=>i,Q:()=>o});n(84775),n(78944),n(83871),n(58968),n(50750);var r=n(31876);const a={cancellationPeriod:10,dateOfBirth:5,firstName:5,gender:5,lastName:5,phone:5,workPermit:10},s={personalData:{candidate:["gender","firstName","lastName","dateOfBirth","phone","zipCode","city","countryCode"]},professionalSituation:{candidate:["cancellationPeriod","workPermit"],careers:[r.J.JOB]}},o=({candidate:e,careers:t,field:n})=>{const r=!!s[n].careers?.length,a=r&&t?.some((e=>s[n].careers?.includes(e.type)));if(s[n].candidate.every((t=>!!e?.[t]))&&(!r||a))return"completed";return s[n].candidate.some((t=>!!e?.[t]))||r&&a?"partial":"none"},i=({candidate:e,careers:t,hasCv:n})=>{if(!e&&!t?.length)return 0;return Object.keys(a).reduce(((t,n)=>t+(e?.[n]&&a[n]||0)),0)+(n?40:0)+(e?.city&&e?.zipCode&&e?.countryCode?5:0)+(t?.some((e=>s.professionalSituation.careers?.includes(e.type)))?10:0)}},33845(e,t,n){n.d(t,{I1:()=>i,OX:()=>u,Q9:()=>s,dG:()=>d,t9:()=>l,tj:()=>c});var r=n(38108),a=n(93565);const s=5e3,o=["COMPANY_INDEX","COMPANY","COMPANY_VACANCIES","COMPANY_REVIEWS","COMPANY_CREATE_REVIEW","COMPANY_CREATE_REVIEW_GUIDELINES"],i={companyPages:o,vacancyPages:["VACANCY_DETAIL"],searchPages:["VACANCY_SEARCH","VACANCY_FILTER","COMPANY_INDEX",...o]},c=(e,t={})=>{const n=t.id||(0,r.A)(),s={type:a.k.ADD,snackType:e,...t,id:n},{timeout:o}=t;if(!o)return s;return[s,e=>{setTimeout((()=>{e(u(n))}),o)}]},d=e=>({type:a.k.DISMISS,id:e}),u=e=>t=>{t({type:a.k.PREPARE_DISMISS,id:e}),setTimeout((()=>t(d(e))),300)},l=e=>({type:a.k.DISMISS_BY_TYPE,snackType:e})},16505(e,t,n){n.d(t,{A:()=>s});var r=n(59033),a=n(52695);const s=e=>(0,a.jsx)(r.In,{...e,children:(0,a.jsx)("path",{d:"M5 19h1.4l8.625-8.625-1.4-1.4L5 17.6zM19.3 8.925l-4.25-4.2 1.4-1.4a1.92 1.92 0 0 1 1.413-.575 1.92 1.92 0 0 1 1.412.575l1.4 1.4q.575.575.6 1.388a1.8 1.8 0 0 1-.55 1.387zM17.85 10.4 7.25 21H3v-4.25l10.6-10.6zm-3.525-.725-.7-.7 1.4 1.4z"})})}}]); 2//# sourceMappingURL=chunk-src_common_modules_modal_hooks_useModalCloseOnEsc_ts-src_common_modules_profile_hooks_useComp-cb87f6.8bdfe05b.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.