import{r as n,v as $,j as s,e as Ie,B as K,I as ne,Z as j,f as Te,V as le,$ as ve,U as ce}from"./index-DAC_nvu_.js";import{S as re}from"./SearchBar-Dc7XFObO.js";import{S as Ne,f as ie,p as ue}from"./formatters-CnUSUV7p.js";const Re="_vacancyFilter_15aq8_1",Fe="_filterTitle_15aq8_6",Oe="_filterLabel_15aq8_11",xe="_desktopTitle_15aq8_18",ke="_mobileSheetGrabber_15aq8_22",je="_closeIcon_15aq8_26",Be="_filterHeader_15aq8_30",Pe="_filterCard_15aq8_38",Le="_mobileResetButton_15aq8_49",we="_vacancyFilter_mobile_15aq8_59",He="_mobileSheetHeader_15aq8_66",De="_mobileSheetTitle_15aq8_74",qe="_buttonContainer_15aq8_80",Ae="_filterButton_15aq8_89",We="_mobileSheetCloseButton_15aq8_100",Ue="_mobileFilterScrollableContent_15aq8_120",Ge="_filterButton_mobileSticky_15aq8_132",$e="_desktopResetButton_15aq8_151",Ke="_resetFilterButton_15aq8_159",o={vacancyFilter:Re,filterTitle:Fe,filterLabel:Oe,desktopTitle:xe,mobileSheetGrabber:ke,closeIcon:je,filterHeader:Be,filterCard:Pe,mobileResetButton:Le,vacancyFilter_mobile:we,mobileSheetHeader:He,mobileSheetTitle:De,buttonContainer:qe,filterButton:Ae,mobileSheetCloseButton:We,mobileFilterScrollableContent:Ue,filterButton_mobileSticky:Ge,desktopResetButton:$e,resetFilterButton:Ke},Ye=e=>{const l=Math.abs(e),d=l%10,i=l%100;return i>=11&&i<=19?"вакансий":d===1?"вакансию":[2,3,4].includes(d)?"вакансии":"вакансий"},me=e=>{var d,i,S,p,b;const l={};return e.searchField&&(l.searchField=e.searchField),e.city&&(l.city=e.city),e.company&&(l.company=e.company),e.income&&(l.salaryFrom=String(e.income)),e.sorting&&(l.sorting=e.sorting),e.employer_id&&(l.employer_id=e.employer_id),((d=e.experience)==null?void 0:d.length)>0&&(l.workingExperience=e.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])),((i=e.schedule)==null?void 0:i.length)>0&&(l.workingSchedule=e.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])),((S=e.format)==null?void 0:S.length)>0&&(l.officeType=e.format.map(u=>({office:"OFFICE_TYPE_OFFICE",hybrid:"OFFICE_TYPE_HYBRID",remote:"OFFICE_TYPE_REMOTE",field_work:"OFFICE_TYPE_FIELD_WORK"})[u])),typeof e.completenessFrom=="number"&&(l.completenessFrom=e.completenessFrom),((p=e.tags)==null?void 0:p.length)>0&&(l.tags=e.tags),((b=e.metroStations)==null?void 0:b.length)>0&&(l.metroStations=e.metroStations),e.hasTestTask&&(l.hasTestTask=!0),e.salaryOnNegotiation&&(l.salaryOnNegotiation=!0),l},Me={any:void 0,high:70,medium:40,low:0},Y=e=>{e.preventDefault()},Xe=[{value:"no_experience",label:"Без опыта"},{value:"1_3_years",label:"От 1 года до 3 лет"},{value:"3_6_years",label:"От 3 до 6 лет"},{value:"6_plus_years",label:"Более 6 лет"}],Ve=[{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:"Полевая работа"}],ze=[{value:"any",label:"Любая"},{value:"high",label:"Высокая"},{value:"medium",label:"Средняя"},{value:"low",label:"Низкая"}],tt=n.forwardRef(({isMobileView:e=!1,onApplyFilters:l,onCloseMobileView:d,initialFilters:i={},baseFilters:S={},hideCompanyFilter:p=!1},b)=>{const[u,f]=n.useState(""),[C,B]=n.useState(""),[E,I]=n.useState(""),[T,P]=n.useState(""),[L,M]=n.useState("FILTER_SORTING_UNSPECIFIED"),[v,w]=n.useState([]),[N,H]=n.useState([]),[R,D]=n.useState([]),[F,q]=n.useState(["any"]),[A,_e]=n.useState([]),[W,pe]=n.useState([]),[X,he]=n.useState(!1),[V,de]=n.useState(!1),[Se,O]=n.useState([]),[fe,x]=n.useState([]),J=$(u,500),z=$(E,500),[Q,Z]=n.useState(0),[ee,te]=n.useState(!0),U=(t,a)=>{if(!t)return[];const c=Array.isArray(t)?t:[t],m=[],_=Object.fromEntries(Object.entries(a).map(h=>h.reverse()));return c.forEach(h=>{_[h]&&m.push(_[h])}),m};n.useEffect(()=>{f(i.searchField||""),B(i.city||""),I(i.company||""),P(i.salaryFrom||""),M(i.sorting||"FILTER_SORTING_UNSPECIFIED");const t={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"};w(U(i.workingExperience,t));const a={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"};H(U(i.workingSchedule,a));const c={office:"OFFICE_TYPE_OFFICE",hybrid:"OFFICE_TYPE_HYBRID",remote:"OFFICE_TYPE_REMOTE",field_work:"OFFICE_TYPE_FIELD_WORK"};D(U(i.officeType,c))},[i]);const se=n.useMemo(()=>{const t={...S};u.trim()&&(t.searchField=u.trim()),C.trim()&&(t.city=C.trim()),E.trim()&&!p&&(t.company=E.trim()),T.trim()&&(t.income=T.trim()),v.length>0&&(t.experience=v),N.length>0&&(t.schedule=N),R.length>0&&(t.format=R),L!=="FILTER_SORTING_UNSPECIFIED"&&(t.sorting=L);const a=Me[F[0]];return typeof a=="number"&&(t.completenessFrom=a),A.length>0&&(t.tags=A),W.length>0&&(t.metroStations=W),X&&(t.hasTestTask=!0),V&&(t.salaryOnNegotiation=!0),t},[S,u,C,E,T,v,N,R,L,F,A,W,X,V,p]),ae=$(JSON.stringify(se),500);n.useEffect(()=>{(async()=>{const a=JSON.parse(ae);te(!0);try{const c=me(a),m=await le.fetchVacanciesTotal(c);Z(m)}catch{Z(0)}finally{te(!1)}})()},[ae]),n.useEffect(()=>{if(p)return;(async()=>{const a=z.trim();if(a.length<2){x([]);return}try{const c=await ve.listCompaniesWithSearch(a);if(c!=null&&c.companies){const m=c.companies.map(_=>({label:_.companyName||"",value:_.companyName||""}));x(m)}}catch{x([])}})()},[z,p]),n.useEffect(()=>{(async()=>{const a=J.trim();if(a.length<2){O([]);return}try{const[c,m,_]=await Promise.all([ce.fetchAvailableSkills(a),ce.fetchAvailablePersonalQualities(a),le.fetchVacancies({...S,searchField:a,pageSize:5})]),h=c.slice(0,3).map(r=>({label:r.skillName,value:r.skillName})),g=m.slice(0,3).map(r=>({label:r.qualityName,value:r.qualityName})),k=a.toLowerCase(),y=Array.from(new Set((_.vacancies||[]).map(r=>r.title).filter(r=>typeof r=="string"&&r.toLowerCase().includes(k)))).map(r=>({label:r,value:r}));O([...y,...h,...g])}catch(c){console.error("Error fetching suggestions for filter:",c),O([])}})()},[J,JSON.stringify(S)]);const oe=()=>{if(l){const t=me(se);l(t)}};n.useImperativeHandle(b,()=>({applyFilters:oe}));const G=()=>{f(""),B(""),I(""),P(""),w([]),H([]),D([]),q(["any"]),M("FILTER_SORTING_UNSPECIFIED"),_e([]),pe([]),he(!1),de(!1)},Ee=t=>{const a=t.find(c=>!F.includes(c));a?q([a]):t.length===0&&q(["any"])},ge=t=>{f(t.label),O([])},ye=t=>{I(t.label),x([])},be=t=>{const a=t.target,{value:c,selectionStart:m}=a,_=c.substring(0,m??0),h=ue(_).length,g=ue(c);g.length>18||(P(g),setTimeout(()=>{const k=ie(g);let y=0,r=0;for(const Ce of k){if(r===h)break;y++,/[0-9]/.test(Ce)&&r++}a&&(a.value=k,a.setSelectionRange(y,y))},0))};return s.jsxs("div",{className:`${o.vacancyFilter} ${e?o.vacancyFilter_mobile:""}`,children:[e&&s.jsxs("div",{className:o.mobileSheetHeader,children:[s.jsx(Ne,{className:o.mobileSheetGrabber}),s.jsx("button",{onClick:d,className:o.mobileSheetCloseButton,"aria-label":"Закрыть фильтры",children:s.jsx(Ie,{className:o.closeIcon})})]}),s.jsxs("div",{className:o.filterHeader,children:[s.jsx("h1",{className:`h1 ${o.desktopTitle}`,children:"Фильтры"}),s.jsx("h2",{className:`h2 ${o.mobileSheetTitle}`,children:"Фильтры"}),s.jsx(K,{variant:"rounded-outlined",className:o.desktopResetButton,onClick:G,children:"Сбросить"}),s.jsx("button",{onClick:G,className:`body-1 ${o.mobileResetButton}`,children:"Сбросить"})]}),s.jsxs("div",{className:e?o.mobileFilterScrollableContent:o.filterCard,children:[s.jsx("h3",{className:`h3 ${o.filterTitle}`,children:"Ключевые слова"}),s.jsx(re,{placeholder:"Поиск вакансий по названию, сферам, ключевым навыкам",type:"reverse",filter:"none",noBtn:!0,value:u,searchIconWithBackground:!1,allowClear:!0,onInputValueChange:f,suggestions:Se,onSuggestionSelect:ge}),s.jsxs("label",{className:`body-2 ${o.filterLabel}`,onClick:Y,children:["Город",s.jsx(ne,{type:"text",name:"city",placeholder:"Москва",value:C,onInputValueChange:B,validation:!0,validationType:"textOnly"})]}),!p&&s.jsxs("label",{className:`body-2 ${o.filterLabel}`,onClick:Y,children:["Компания",s.jsx(re,{placeholder:"Компания",type:"reverse",filter:"none",noBtn:!0,value:E,searchIconWithBackground:!1,allowClear:!0,onInputValueChange:I,suggestions:fe,onSuggestionSelect:ye})]}),s.jsxs("label",{className:`body-2 ${o.filterLabel}`,onClick:Y,children:["Уровень дохода от",s.jsx(ne,{type:"text",name:"income",placeholder:"100 000 ₽",value:ie(T),onChange:be,validation:!0})]}),s.jsx("h3",{className:`h3 ${o.filterTitle}`,children:"Опыт работы"}),s.jsx(j,{name:"experience",options:Xe,value:v,onChange:w,type:e?"mobile":"classic"}),s.jsx("h3",{className:`h3 ${o.filterTitle}`,children:"График работы"}),s.jsx(j,{name:"schedule",options:Ve,value:N,onChange:H,type:e?"mobile":"classic"}),s.jsx("h3",{className:`h3 ${o.filterTitle}`,children:"Формат"}),s.jsx(j,{name:"format",options:Je,value:R,onChange:D,type:e?"mobile":"classic"}),s.jsx("h3",{className:`h3 ${o.filterTitle}`,children:"Полнота вакансии"}),s.jsx(j,{name:"completeness",options:ze,value:F,onChange:Ee,type:e?"mobile":"classic"})]}),s.jsxs("div",{className:o.buttonContainer,children:[s.jsx(K,{type:"button",className:`${o.filterButton} ${e?o.filterButton_mobileSticky:""}`,onClick:oe,disabled:ee,children:ee?s.jsx(Te,{size:"small"}):`Показать ${Q} ${Ye(Q)}`}),s.jsx(K,{onClick:G,className:o.resetFilterButton,variant:"outlined",children:"Сбросить"})]})]})});export{tt as V};