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