1import{j as o}from"./jsx-runtime-DbYo8Wuo.js";import{r as l}from"./entry-client-D4F_DRpu.js";import{u as $}from"./useAppSelector-DC5BUDrl.js";var E=(r=>(r.Checkbox="checkbox",r.Radio="radio",r))(E||{});const D=r=>{const n=l.useRef(null);return l.useEffect(()=>{const i=p=>{n.current&&!n.current.contains(p.target)&&r()};return document.addEventListener("click",i),()=>{document.removeEventListener("click",i)}},[r]),n},L=({type:r=E.Checkbox,label:n,name:i,id:p,items:u,selectedCount:g})=>{const h=l.useId(),j=l.useMemo(()=>p||`${i||"select-box"}_${h}`,[p,i,h]),[w,y]=l.useState(!1),C=D(()=>y(!1)),_=()=>{y(a=>!a)};return o.jsxs("div",{className:"filter-select-button",ref:C,children:[o.jsxs("button",{type:"button",className:"filter-select-button__btn button",id:j,onClick:_,"aria-pressed":w,children:[n,g!==0&&o.jsx("span",{className:"filter-select-button__label-count",children:g})]}),u.length>0&&o.jsx("ul",{className:"filter-select-button__dropdown","aria-hidden":!w,children:u.map(a=>{const x=`${j}_${a.value.replace(/\s/g,"_")}`,b=a.label??a.value;return o.jsxs("li",{className:"filter-select-button__dropdown-item",children:[o.jsx("input",{id:x,type:r,defaultChecked:a.selected,disabled:a.disabled,value:a.value,name:i,title:b}),o.jsxs("label",{"data-check-type":r,htmlFor:x,children:[b,typeof a.count=="number"?` (${a.count})`:""]})]},a.value)})})]})},O=l.memo(L),k=r=>r.charAt(0).toLowerCase()+r.slice(1),P=r=>{if(typeof window>"u")return;const n=new URLSearchParams(r),i=`${window.location.origin}${window.location.pathname}?${n.toString()}`;window.history.pushState({},"",i)},J=r=>[...new URLSearchParams(r)],v=(...r)=>r.join("___"),A=()=>{const{i18n:r,filter:n,jobs:i,queryString:p,subscribeButton:u,sortKey:g}=$(e=>e.jobListing),h=l.useMemo(()=>g.toLowerCase(),[g]),j=l.useRef(null),w=l.useMemo(()=>J(p),[p]),[y,C]=l.useState(w),_=l.useMemo(()=>{const e=new Map(Object.entries(n).reduce((t,s)=>(t.push([s[1].queryKey,s[0]]),t),[]));return y.map(t=>[e.get(t[0]),t[1]])},[n,y]),{selectedFilters:a,sortItems:x}=l.useMemo(()=>{const e=[],t=[];return _.forEach(([s,c])=>{if(s===h){e.push(c);return}t.push([s,c])}),{selectedFilters:t,sortItems:e}},[_]),b=l.useCallback((e,t)=>t.reduce((s,[c,d])=>{const f=e[c];if(!f||s[c])return s;const m=d===f;return s[c]=(s[c]??!1)||m,s},{}),[]),N=l.useMemo(()=>{const e=a.length===0?i:i.filter(t=>{const s=b(t,a);return Object.values(s).reduce((c,d)=>c&&d,!0)});return x.length===0?e:e.sort((t,s)=>{var c;for(const d of x){const f=k(d),m=(c=t[f])==null?void 0:c.localeCompare(s[f]);if(m!==0)return m}return 0})},[i,a,x,b]),S=l.useMemo(()=>{const e=new Map;return i.length===0||Object.keys(n).forEach(t=>{t!==h&&i.forEach(s=>{const c=b(s,a);if(!Object.keys(c).filter(m=>m!==t).reduce((m,F)=>m&&c[F],!0))return;const f=v(t,s[t]);e.set(f,(e.get(f)??0)+1)})}),e},[i,h,n,b,a]),M=l.useMemo(()=>Object.keys(n).map(e=>{const t=n[e];let s=0;const c=t.filters.map(d=>{const f=_.findIndex(([F,I])=>F===e&&I===d)!==-1;f&&s++;const m=S.get(v(e,d))??0;return{label:r.sortResources[k(d)],value:d,selected:f,count:e!==h?m:void 0}});return{label:r.defaultResources[t.queryKey],name:e,items:c,type:t.type.toLowerCase(),selectedCount:s}}),[n,r,_,S,h]),R=l.useCallback(()=>{if(!j.current)throw new Error("Form is not available");const t=[...new FormData(j.current)].map(s=>[n[s[0]].queryKey,s[1]]);C(t),P(t)},[n]);return o.jsx(o.Fragment,{children:o.jsxs("div",{className:"job-list-filter__wrapper",children:[o.jsx("form",{ref:j,className:"job-list-filter",onChange:R,children:M.map(e=>l.createElement(O,{...e,key:e.name}))}),o.jsxs("div",{className:"job-list-filter-result",children:[o.jsxs("div",{className:"job-list-filter-result__top",children:[o.jsxs("p",{className:"job-list-filter-result__total",children:[r.defaultResources.totalJob,":"," ",o.jsxs("strong",{children:[N.length," / ",i.length]})]}),u&&u.href&&u.text&&o.jsx("div",{className:"job-list-filter-result__cta-button",children:o.jsx("a",{className:"button button__primary",href:u.href,target:u.target,title:u.title??u.text,children:u.text})})]}),o.jsx("ul",{className:"job-list-filter-result__list",children:N.map((e,t)=>o.jsx("li",{children:o.jsxs("a",{href:e.url,title:e.heading,className:"job-list-filter-result__item","data-background":t%2===0?"gray-light":void 0,children:[o.jsx("span",{className:"job-list-filter-result__item-title",children:e.heading}),o.jsx("span",{className:"job-list-filter-result__item-city",children:e.city}),o.jsx("span",{className:"job-list-filter-result__item-category",children:e.category}),o.jsx("span",{className:"job-list-filter-result__item-date",children:`${r.sortResources.lastDateToApply.toUpperCase()}: ${e.lastDateToApply}`})]})},t))})]})]})})};export{A as default};
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.