import{j as e,r as l,v as W,k as he,B as U,K as ee,W as Y,J as pe,V as te,D as de,U as ne}from"./index-B0l7MJae.js";import{S as E}from"./Skeleton-Co_BiD55.js";import{S as se}from"./SearchBar-B7fCnw--.js";import{I as Ee}from"./InputRadio-CGndXS2B.js";import{S as Se,f as oe,p as ae}from"./formatters-CUqYEqQZ.js";const Ve=()=>e.jsxs("li",{className:"vacancy__item","aria-hidden":"true",children:[e.jsxs("div",{className:"vacancy__item-header",children:[e.jsx(E,{width:"50%",height:"28px"}),e.jsx(E,{variant:"circle",width:"30px"})]}),e.jsxs("div",{className:"vacancy__info",style:{gap:"8px"},children:[e.jsx(E,{width:"30%",height:"16px"}),e.jsx(E,{width:"50%",height:"16px"}),e.jsx(E,{width:"60%",height:"16px"})]}),e.jsx(E,{width:"45%",height:"14px",style:{marginBottom:"16px"}}),e.jsx(E,{width:"100%",height:"40px"})]}),fe="_vacancyFilter_3e2nj_1",be="_filterTitle_3e2nj_6",ye="_filterLabel_3e2nj_11",ge="_desktopTitle_3e2nj_18",Ie="_mobileSheetGrabber_3e2nj_22",Ce="_closeIcon_3e2nj_26",ve="_filterHeader_3e2nj_30",Re="_mobileResetButton_3e2nj_37",Te="_vacancyFilter_mobile_3e2nj_47",xe="_mobileSheetHeader_3e2nj_54",Ne="_mobileSheetTitle_3e2nj_62",je="_buttonContainer_3e2nj_68",Fe="_filterButton_3e2nj_77",Oe="_mobileSheetCloseButton_3e2nj_88",ke="_mobileFilterScrollableContent_3e2nj_108",Be="_filterButton_mobileSticky_3e2nj_120",we="_desktopResetButton_3e2nj_137",Le="_resetFilterButton_3e2nj_143",s={vacancyFilter:fe,filterTitle:be,filterLabel:ye,desktopTitle:ge,mobileSheetGrabber:Ie,closeIcon:Ce,filterHeader:ve,mobileResetButton:Re,vacancyFilter_mobile:Te,mobileSheetHeader:xe,mobileSheetTitle:Ne,buttonContainer:je,filterButton:Fe,mobileSheetCloseButton:Oe,mobileFilterScrollableContent:ke,filterButton_mobileSticky:Be,desktopResetButton:we,resetFilterButton:Le},Pe=t=>{const c=Math.abs(t),p=c%10,r=c%100;return r>=11&&r<=19?"вакансий":p===1?"вакансию":[2,3,4].includes(p)?"вакансии":"вакансий"},le=t=>{var p,r,d;const c={};return t.searchField&&(c.searchField=t.searchField),t.city&&(c.city=t.city),t.company&&(c.company=t.company),t.income&&(c.salaryFrom=String(t.income)),t.sorting&&(c.sorting=t.sorting),t.employer_id&&(c.employer_id=t.employer_id),((p=t.experience)==null?void 0:p.length)>0&&(c.workingExperience=t.experience.map(u=>({no_experience:"EXPERIENCE_WITHOUT","1_3_years":"EXPERIENCE_1_TO_3_YEARS","3_6_years":"EXPERIENCE_3_TO_6_YEARS","6_plus_years":"EXPERIENCE_6_YEARS"})[u])),((r=t.schedule)==null?void 0:r.length)>0&&(c.workingSchedule=t.schedule.map(u=>({full_time:"WORKING_SCHEDULE_FULL_TIME",part_time:"WORKING_SCHEDULE_PART_TIME",internship:"WORKING_SCHEDULE_INTERNSHIP",watch:"WORKING_SCHEDULE_WATCH",project_work:"WORKING_SCHEDULE_PROJECT_WORK"})[u])),((d=t.format)==null?void 0:d.length)>0&&(c.officeType=t.format.map(u=>({office:"OFFICE_TYPE_OFFICE",hybrid:"OFFICE_TYPE_HYBRID",remote:"OFFICE_TYPE_REMOTE",field_work:"OFFICE_TYPE_FIELD_WORK"})[u])),c},K=t=>{t.preventDefault()},De=[{value:"no_experience",label:"Без опыта"},{value:"1_3_years",label:"От 1 года до 3 лет"},{value:"3_6_years",label:"От 3 до 6 лет"},{value:"6_plus_years",label:"Более 6 лет"}],Ae=[{value:"full_time",label:"Полная занятость"},{value:"part_time",label:"Частичная занятость"},{value:"internship",label:"Стажировка"},{value:"watch",label:"Вахта"},{value:"project_work",label:"Проектная работа"}],He=[{value:"office",label:"Офис"},{value:"hybrid",label:"Гибрид"},{value:"remote",label:"Удалённая работа"},{value:"field_work",label:"Полевая работа"}],Ge=[{value:"FILTER_SORTING_UNSPECIFIED",label:"По соответствию"},{value:"FILTER_SORTING_BY_DATE",label:"По дате изменения"},{value:"FILTER_SORTING_BY_SALARY_DESC",label:"По убыванию зарплаты"},{value:"FILTER_SORTING_BY_SALARY_ASC",label:"По возрастанию зарплаты"}],Xe=l.forwardRef(({isMobileView:t=!1,onApplyFilters:c,onCloseMobileView:p,initialFilters:r={},baseFilters:d={},hideCompanyFilter:u=!1},g)=>{const[S,I]=l.useState(""),[C,B]=l.useState(""),[f,v]=l.useState(""),[R,w]=l.useState(""),[T,L]=l.useState("FILTER_SORTING_UNSPECIFIED"),[x,P]=l.useState([]),[N,D]=l.useState([]),[j,A]=l.useState([]),[ce,F]=l.useState([]),[ie,O]=l.useState([]),$=W(S,500),V=W(f,500),[X,J]=l.useState(0),[M,q]=l.useState(!0),H=(n,o)=>{if(!n)return[];const a=Array.isArray(n)?n:[n],_=[],m=Object.fromEntries(Object.entries(o).map(h=>h.reverse()));return a.forEach(h=>{m[h]&&_.push(m[h])}),_};l.useEffect(()=>{I(r.searchField||""),B(r.city||""),v(r.company||""),w(r.salaryFrom||""),L(r.sorting||"FILTER_SORTING_UNSPECIFIED");const n={no_experience:"EXPERIENCE_WITHOUT","1_3_years":"EXPERIENCE_1_TO_3_YEARS","3_6_years":"EXPERIENCE_3_TO_6_YEARS","6_plus_years":"EXPERIENCE_6_YEARS"};P(H(r.workingExperience,n));const o={full_time:"WORKING_SCHEDULE_FULL_TIME",part_time:"WORKING_SCHEDULE_PART_TIME",internship:"WORKING_SCHEDULE_INTERNSHIP",watch:"WORKING_SCHEDULE_WATCH",project_work:"WORKING_SCHEDULE_PROJECT_WORK"};D(H(r.workingSchedule,o));const a={office:"OFFICE_TYPE_OFFICE",hybrid:"OFFICE_TYPE_HYBRID",remote:"OFFICE_TYPE_REMOTE",field_work:"OFFICE_TYPE_FIELD_WORK"};A(H(r.officeType,a))},[r]);const z=l.useMemo(()=>{const n={...d};return S.trim()&&(n.searchField=S.trim()),C.trim()&&(n.city=C.trim()),f.trim()&&!u&&(n.company=f.trim()),R.trim()&&(n.income=R.trim()),x.length>0&&(n.experience=x),N.length>0&&(n.schedule=N),j.length>0&&(n.format=j),T!=="FILTER_SORTING_UNSPECIFIED"&&(n.sorting=T),n},[d,S,C,f,R,x,N,j,T,u]),Q=W(JSON.stringify(z),500);l.useEffect(()=>{(async()=>{const o=JSON.parse(Q);q(!0);try{const a=le(o),_=await te.fetchVacanciesTotal(a);J(_)}catch{J(0)}finally{q(!1)}})()},[Q]),l.useEffect(()=>{if(u)return;(async()=>{const o=V.trim();if(o.length<2){O([]);return}try{const a=await de.listCompaniesWithSearch(o);if(a!=null&&a.companies){const _=a.companies.map(m=>({label:m.companyName||"",value:m.companyName||""}));O(_)}}catch{O([])}})()},[V,u]),l.useEffect(()=>{(async()=>{const o=$.trim();if(o.length<2){F([]);return}try{const[a,_,m]=await Promise.all([ne.fetchAvailableSkills(o),ne.fetchAvailablePersonalQualities(o),te.fetchVacancies({...d,searchField:o,pageSize:5})]),h=a.slice(0,3).map(i=>({label:i.skillName,value:i.skillName})),b=_.slice(0,3).map(i=>({label:i.qualityName,value:i.qualityName})),k=o.toLowerCase(),y=Array.from(new Set((m.vacancies||[]).map(i=>i.title).filter(i=>typeof i=="string"&&i.toLowerCase().includes(k)))).map(i=>({label:i,value:i}));F([...y,...h,...b])}catch(a){console.error("Error fetching suggestions for filter:",a),F([])}})()},[$,JSON.stringify(d)]);const Z=()=>{if(c){const n=le(z);c(n)}};l.useImperativeHandle(g,()=>({applyFilters:Z}));const G=()=>{I(""),B(""),v(""),w(""),P([]),D([]),A([]),L("FILTER_SORTING_UNSPECIFIED")},re=n=>{I(n.label),F([])},ue=n=>{v(n.label),O([])},_e=n=>{const o=n.target,{value:a,selectionStart:_}=o,m=a.substring(0,_??0),h=ae(m).length,b=ae(a);b.length>18||(w(b),setTimeout(()=>{const k=oe(b);let y=0,i=0;for(const me of k){if(i===h)break;y++,/[0-9]/.test(me)&&i++}o&&(o.value=k,o.setSelectionRange(y,y))},0))};return e.jsxs("div",{className:`${s.vacancyFilter} ${t?s.vacancyFilter_mobile:""}`,children:[t&&e.jsxs("div",{className:s.mobileSheetHeader,children:[e.jsx(Se,{className:s.mobileSheetGrabber}),e.jsx("button",{onClick:p,className:s.mobileSheetCloseButton,"aria-label":"Закрыть фильтры",children:e.jsx(he,{className:s.closeIcon})})]}),e.jsxs("div",{className:s.filterHeader,children:[e.jsx("h1",{className:`h1 ${s.desktopTitle}`,children:"Фильтры"}),e.jsx("h2",{className:`h2 ${s.mobileSheetTitle}`,children:"Фильтры"}),e.jsx(U,{variant:"rounded-outlined",className:s.desktopResetButton,onClick:G,children:"Сбросить"}),e.jsx("button",{onClick:G,className:`body-1 ${s.mobileResetButton}`,children:"Сбросить"})]}),e.jsxs("div",{className:t?s.mobileFilterScrollableContent:"",children:[e.jsx("h3",{className:`h3 ${s.filterTitle}`,children:"Ключевые слова"}),e.jsx(se,{placeholder:"Поиск вакансий по названию, сферам, ключевым навыкам",type:"reverse",filter:"none",noBtn:!0,value:S,searchIconWithBackground:!1,allowClear:!0,onInputValueChange:I,suggestions:ce,onSuggestionSelect:re}),e.jsxs("label",{className:`body-2 ${s.filterLabel}`,onClick:K,children:["Город",e.jsx(ee,{type:"text",name:"city",placeholder:"Москва",value:C,onInputValueChange:B,validation:!0,validationType:"textOnly"})]}),!u&&e.jsxs("label",{className:`body-2 ${s.filterLabel}`,onClick:K,children:["Компания",e.jsx(se,{placeholder:"Компания",type:"reverse",filter:"none",noBtn:!0,value:f,searchIconWithBackground:!1,allowClear:!0,onInputValueChange:v,suggestions:ie,onSuggestionSelect:ue})]}),e.jsxs("label",{className:`body-2 ${s.filterLabel}`,onClick:K,children:["Уровень дохода от",e.jsx(ee,{type:"text",name:"income",placeholder:"100 000 ₽",value:oe(R),onChange:_e,validation:!0})]}),e.jsx("h3",{className:`h3 ${s.filterTitle}`,children:"Опыт работы"}),e.jsx(Y,{name:"experience",options:De,value:x,onChange:P,type:t?"mobile":"classic"}),e.jsx("h3",{className:`h3 ${s.filterTitle}`,children:"График работы"}),e.jsx(Y,{name:"schedule",options:Ae,value:N,onChange:D,type:t?"mobile":"classic"}),e.jsx("h3",{className:`h3 ${s.filterTitle}`,children:"Формат"}),e.jsx(Y,{name:"format",options:He,value:j,onChange:A,type:t?"mobile":"classic"}),e.jsx("h3",{className:`h3 ${s.filterTitle}`,children:"Сортировка"}),e.jsx(Ee,{name:"sorting",options:Ge,value:T,onChange:L})]}),e.jsxs("div",{className:s.buttonContainer,children:[e.jsx(U,{type:"button",className:`${s.filterButton} ${t?s.filterButton_mobileSticky:""}`,onClick:Z,disabled:M,children:M?e.jsx(pe,{size:"small"}):`Показать ${X} ${Pe(X)}`}),e.jsx(U,{onClick:G,className:s.resetFilterButton,variant:"outlined",children:"Сбросить"})]})]})});export{Xe as V,Ve as a};