1import{_ as ne}from"./DSgtGwva.js";import le from"./CPlI_u3E.js";import{_ as ie}from"./C6rlaVS-.js";import{e as X,l as ce,L as ue,o as p,c as v,M as I,N as A,a as r,i as t,F as G,r as J,d as Q,t as z,b as L,n as de,h as N,O as me,x as B,I as W,J as se,v as U,T as pe,p as E,j as h,D as oe,C as j,w as fe,P as he,z as ve,G as be,f as ye,H as ge}from"./CxfkTsMZ.js";import{_ as xe}from"./BrbT_udb.js";import{u as ae,f as _e,_ as we}from"./CGXeGhAB.js";import{_ as ke}from"./Cn9j91r8.js";import{p as $e,a as Se,b as Ce,c as Fe}from"./peYz8fB-.js";import{u as Ve}from"./BbBv2DJj.js";import{a as Te}from"./CJPaHQq2.js";import"./D6O94bD-.js";import"./lFQbjToB.js";import"./CaJGW173.js";import"./CUXkHbv6.js";import"./DYwTeo--.js";import"./BDYRfUTR.js";import"./z4P8Yf4K.js";import"./DlAUqK2U.js";import"./BsQBRbyB.js";const Ee=["id","aria-expanded","aria-controls","aria-label","onKeydown"],Le=["onClick"],qe={key:1,class:"text-charcoal-light"},Re=["id","aria-label"],ze={class:"mb-3 flex items-center gap-2"},Me={class:"relative min-w-0 flex-1"},Ue=["for"],Be=["id","placeholder","aria-label"],Pe={class:"sr-only","aria-live":"polite"},Ae={key:0,class:"m-0 max-h-64 overflow-auto",style:{"list-style-type":"none",padding:"0",margin:"0"}},Ne={class:"block cursor-pointer rounded-md text-body-sm transition-colors hover:bg-charcoal-50 focus-within:bg-charcoal-50"},Oe=["checked","onChange"],De={class:"flex items-start justify-between gap-3 px-2 py-2 text-charcoal"},Ie={class:"min-w-0 break-words"},Qe={key:1,class:"rounded-md bg-charcoal-50 px-3 py-2 text-body-sm text-charcoal-light"},je=X({__name:"SearchableMultiSelect",props:{id:{default:void 0},modelValue:{},options:{},label:{},placeholder:{default:"Select options"},searchPlaceholder:{default:"Searchâ¦"},emptyText:{default:"No options found."}},emits:["update:modelValue"],setup(w,{emit:m}){const f=w,M=m,k=E(null),c=E(null),F=E(null),i=E(null),u=E(!1),g=E(""),y=E(null),_=h(()=>f.id?`${f.id}-panel`:void 0),S=h(()=>f.id?`${f.id}-search`:void 0),q=h(()=>g.value.trim().toLowerCase()),R=h(()=>new Set(f.modelValue)),o=h(()=>f.options.filter(n=>R.value.has(n.value))),a=h(()=>q.value?f.options.filter(n=>n.label.toLowerCase().includes(q.value)):f.options),$=h(()=>o.value.length===0?f.placeholder:o.value.length===1?o.value[0].label:`${o.value.length} selected`),e=h(()=>o.value.length===0?`No ${f.label.toLowerCase()} selected.`:`${o.value.length} ${f.label.toLowerCase()} selected: ${o.value.map(n=>n.label).join(", ")}.`),l=h(()=>`${f.label}: ${$.value}`),d=()=>{if(!c.value){y.value=null;return}const n=c.value.getBoundingClientRect();y.value={top:n.bottom+8,left:n.left,width:n.width}},s=async()=>{await oe(),i.value?.focus()},b=async()=>{u.value||(u.value=!0,d(),await s())},V=async(n=!1)=>{u.value&&(u.value=!1,g.value="",n&&(await oe(),c.value?.focus()))},P=async()=>{if(u.value){await V(!0);return}await b()},O=(n,C)=>{if(C){if(R.value.has(n))return;M("update:modelValue",[...f.modelValue,n]);return}M("update:modelValue",f.modelValue.filter(T=>T!==n))},K=()=>{M("update:modelValue",[])},H=n=>{O(n,!1)},re=(n,C)=>{const T=C.target;T instanceof HTMLInputElement&&O(n,T.checked)},Y=n=>n instanceof Node?!!(k.value?.contains(n)||F.value?.contains(n)):!1,Z=n=>{u.value&&(Y(n.target)||V(!1))},ee=n=>{u.value&&(Y(n.target)||V(!1))},D=()=>{u.value&&d()};return ce(()=>{document.addEventListener("pointerdown",Z),document.addEventListener("focusin",ee),window.addEventListener("scroll",D,{passive:!0}),window.addEventListener("resize",D,{passive:!0})}),ue(()=>{document.removeEventListener("pointerdown",Z),document.removeEventListener("focusin",ee),window.removeEventListener("scroll",D),window.removeEventListener("resize",D)}),(n,C)=>{const T=le;return p(),v("div",{ref_key:"rootRef",ref:k,onKeydown:C[2]||(C[2]=I(A(x=>V(!0),["stop","prevent"]),["esc"]))},[r("div",{id:w.id,ref_key:"triggerRef",ref:c,role:"button",tabindex:"0",class:"flex min-h-10 w-full flex-wrap items-center gap-1.5 rounded-md border border-charcoal bg-white px-3 py-2 text-left text-body-sm transition-colors focus-within:border-green-dark focus-within:outline-none","aria-expanded":t(u),"aria-controls":t(_),"aria-label":t(l),"aria-haspopup":"dialog",onClick:P,onKeydown:[I(A(P,["prevent"]),["enter"]),I(A(P,["prevent"]),["space"])]},[t(o).length?(p(!0),v(G,{key:0},J(t(o),x=>(p(),v("span",{key:x.value,class:"inline-flex items-center gap-1 rounded-full bg-charcoal-50 px-2.5 py-0.5 text-charcoal",onClick:A(te=>H(x.value),["stop"])},[Q(z(x.label)+" ",1),L(T,{name:"mdi:close-circle",size:"14px",class:"text-charcoal-light"})],8,Le))),128)):(p(),v("span",qe,z(w.placeholder),1)),L(T,{name:"mdi:chevron-down",size:"20px",class:de(["ml-auto shrink-0 text-charcoal transition-transform",t(u)?"rotate-180":""])},null,8,["class"])],40,Ee),(p(),N(pe,{to:"body"},[t(u)&&t(y)?(p(),v("div",{key:0,ref_key:"panelRef",ref:F,id:t(_),class:"fixed z-40 rounded-md border border-charcoal bg-white p-3 shadow-lg",style:me({top:`${t(y).top}px`,left:`${t(y).left}px`,width:`${t(y).width}px`}),role:"dialog","aria-label":`${w.label} options`,onKeydown:C[1]||(C[1]=I(A(x=>V(!0),["stop","prevent"]),["esc"]))},[r("div",ze,[r("div",Me,[t(S)?(p(),v("label",{key:0,for:t(S),class:"sr-only"}," Search "+z(w.label.toLowerCase()),9,Ue)):B("",!0),W(r("input",{id:t(S),ref_key:"searchInputRef",ref:i,"onUpdate:modelValue":C[0]||(C[0]=x=>U(g)?g.value=x:null),type:"search",class:"w-full rounded-md border border-charcoal bg-white py-2 pl-3 pr-10 text-body-sm placeholder:text-charcoal-200 focus:border-green-dark focus:outline-none",placeholder:w.searchPlaceholder,"aria-label":t(S)?void 0:`Search ${w.label.toLowerCase()}`},null,8,Be),[[se,t(g)]]),L(T,{name:"mdi:search",size:"20px",class:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-charcoal-light"}
1)]),w.modelValue.length?(p(),v("button",{key:0,type:"button",class:"shrink-0 rounded-md border border-charcoal px-3 py-2 text-body-sm transition-colors hover:bg-charcoal-50 focus:border-green-dark focus:outline-none",onClick:K}," Clear ")):B("",!0)]),r("p",Pe,z(t(e)),1),t(a).length?(p(),v("ul",Ae,[(p(!0),v(G,null,J(t(a),x=>(p(),v("li",{key:x.value,class:"m-0 p-0"},[r("label",Ne,[r("input",{type:"checkbox",class:"sr-only",checked:t(R).has(x.value),onChange:te=>re(x.value,te)},null,40,Oe),r("span",De,[r("span",Ie,z(x.label),1),t(R).has(x.value)?(p(),N(T,{key:0,name:"mdi:check",size:"16px",class:"mt-0.5 shrink-0 text-charcoal"})):B("",!0)])])]))),128))])):(p(),v("p",Qe,z(w.emptyText),1))],44,Re)):B("",!0)]))],544)}}}),Ke={class:"mb-4"},He={class:"flex flex-col items-end gap-y-8 p-4 bg-charcoal-50"},Ge={class:"flex flex-col lg:flex-row w-full items-start gap-8"},Je={class:"w-full"},We={class:"relative"},Xe={class:"w-full"},Ye={class:"flex gap-2 flex-wrap"},Ze={class:"w-full lg:w-auto lg:min-w-48"},et={class:"inline-flex items-center gap-2 rounded-md border border-charcoal bg-white px-3 py-2 text-body-sm hover:bg-charcoal-50 hover:cursor-pointer"},tt={class:"flex flex-col sm:flex-row w-full items-end gap-4"},ot={class:"w-full sm:flex-1"},lt={class:"w-full sm:flex-1"},st=["disabled"],at={key:0,class:"w-full flex justify-between items-center text-charcoal-light mb-8 mt-2"},rt=["disabled"],nt=X({__name:"Filters",setup(w){const m=ae(),f=h(()=>m.rooms.value.map(o=>({value:o,label:o}))),M=h(()=>m.tracks.value.map(o=>({value:o,label:o}))),k=h(()=>m.entryTypes.value.filter(o=>o!=="smb-event"&&o!=="esmtb-event").map(o=>({id:o,title:_e(o)}))),c=h({get:()=>m.showSmbEsmtbEvents.value,set:o=>{m.showSmbEsmtbEvents.value=o}}),F=E(!0),i=E({}),u=h({get:()=>m.roomFilters.value,set:o=>{m.roomFilters.value=o}}),g=h({get:()=>m.trackFilters.value,set:o=>{m.trackFilters.value=o}}),y=h({get:()=>m.searchFilter.value,set:o=>{m.searchFilter.value=o}});j([()=>m.typeFilters.value,k],([o])=>{for(const a of k.value)i.value[a.id]=o.includes(a.id)},{immediate:!0});const _=()=>{i.value={},m.resetFilters()},S=h(()=>q.value===0),q=h(()=>(y.value.trim()!==""?1:0)+u.value.length+g.value.length+Object.values(i.value).filter(Boolean).length+(c.value?1:0)),R=(o,a)=>{i.value[o]=a;const $=[...m.typeFilters.value];if(a)$.includes(o)||$.push(o);else{const e=$.indexOf(o);e>-1&&$.splice(e,1)}m.typeFilters.value=$};return(o,a)=>{const $=le,e=ie,l=je,d=xe;return p(),v("div",Ke,[L(d,{modelValue:t(F),"onUpdate:modelValue":a[4]||(a[4]=s=>U(F)?F.value=s:null),title:"Filters",id:"filters","border-bottom":!0,"no-padding":!0},{default:fe(()=>[r("div",He,[r("div",Ge,[r("div",Je,[a[5]||(a[5]=r("label",{for:"search-input",class:"font-medium"},"Search",-1)),r("div",We,[W(r("input",{id:"search-input","onUpdate:modelValue":a[0]||(a[0]=s=>U(y)?y.value=s:null),class:"w-full border border-charcoal rounded-md py-1.5 px-2 pr-8 bg-white text-body-sm",placeholder:"Search by session title, presenting author or talk title...","aria-describedby":"search-input-help"},null,512),[[se,t(y)]]),L($,{name:"mdi:search",size:"24px",class:"absolute right-2 top-2"})]),a[6]||(a[6]=r("p",{id:"search-input-help",class:"mt-1 text-body-sm text-charcoal-light"},[Q(" Use "),r("code",{class:"text-xs"},"|"),Q(" to search alternatives, e.g. "),r("code",{class:"text-xs"},"geometry | brain"),Q(". ")],-1))]),r("div",Xe,[a[7]||(a[7]=r("h4",null,"Session types",-1)),r("div",Ye,[(p(!0),v(G,null,J(t(k),s=>(p(),N(e,{key:s.id,text:s.title,modelValue:t(i)[s.id],"onUpdate:modelValue":[b=>t(i)[s.id]=b,b=>R(s.id,b)]},null,8,["text","modelValue","onUpdate:modelValue"]))),128))])]),r("div",Ze,[a[9]||(a[9]=r("h4",null,"Extras",-1)),r("label",et,[W(r("input",{"onUpdate:modelValue":a[1]||(a[1]=s=>U(c)?c.value=s:null),type:"checkbox",class:"h-4 w-4"},null,512),[[he,t(c)]]),a[8]||(a[8]=r("span",null,"SMB/ESMTB Events",-1))])])]),r("div",tt,[r("div",ot,[a[10]||(a[10]=r("h4",{class:"mb-2"},"Rooms",-1)),L(l,{id:"calendar-room-filter",modelValue:t(u),"onUpdate:modelValue":a[2]||(a[2]=s=>U(u)?u.value=s:null),options:t(f),label:"Rooms",placeholder:"All rooms","search-placeholder":"Search rooms...","empty-text":"No rooms match your search."},null,8,["modelValue","options"])]),r("div",lt,[a[11]||(a[11]=r("h4",{class:"mb-2"},"Tracks",-1)),L(l,{id:"calendar-track-filter",modelValue:t(g),"onUpdate:modelValue":a[3]||(a[3]=s=>U(g)?g.value=s:null),options:t(M),label:"Tracks",placeholder:"All tracks","search-placeholder":"Search tracks...","empty-text":"No tracks match your search."},null,8,["modelValue","options"])]),r("button",{class:"btn secondary font-normal icon
1w-full sm:w-auto sm:shrink-0",onClick:_,disabled:t(S)}," Clear all filters ",8,st)])])]),_:1},8,["modelValue"]),t(S)?B("",!0):(p(),v("div",at,[r("span",null,z(t(q))+" active filter"+z(t(q)===1?"":"s")+".",1),t(F)?(p(),v("button",{key:0,class:"btn secondary font-normal icon w-full sm:w-auto sm:shrink-0",onClick:_,disabled:t(S)}," Clear all filters ",8,rt)):B("",!0)]))])}}}),it={class:"application-padding"},ct={class:"container-padding pr-6 pl-2"},ut={key:1,class:"rounded-lg border-4 border-charcoal-light bg-white px-6 py-8 text-charcoal-light"},Et=X({__name:"index",async setup(w){let m,f;const k=ge().public.programmeDataBase;Ve({title:"Programme",description:"Browse the ECMTB 2026 timetable, sessions, talks, posters, plenary lectures, breaks, and conference events."});const c=ve(),F=be(),i=ae(),u=e=>Array.isArray(e)?e.filter(l=>typeof l=="string"&&l.length>0):typeof e=="string"&&e.length>0?[e]:[],g=e=>typeof e=="string"?e:"",y=e=>Array.isArray(e)?e.some(l=>l==="1"||l==="true"):e==="1"||e==="true",_=(e,l)=>e.length===l.length&&e.every((d,s)=>d===l[s]),S=e=>{const l=new URLSearchParams;for(const[d,s]of Object.entries(e)){if(Array.isArray(s)){s.forEach(b=>{b!==null&&l.append(d,b)});continue}s!=null&&l.append(d,s)}return l.toString()},q=e=>{const l={...c.query};"q"in e&&(e.q?l.q=e.q:delete l.q),"type"in e&&(e.type?.length?l.type=[...e.type]:delete l.type),"room"in e&&(e.room?.length?l.room=[...e.room]:delete l.room),"track"in e&&(e.track?.length?l.track=[...e.track]:delete l.track),"smb"in e&&(e.smb?l.smb="1":delete l.smb);const d=S(l);F.replace(`${c.path}${d?`?${d}`:""}${c.hash}`)},R=()=>{const e=g(c.query.q),l=u(c.query.type),d=u(c.query.room),s=u(c.query.track),b=y(c.query.smb);i.searchFilter.value!==e&&(i.searchFilter.value=e),_(i.typeFilters.value,l)||(i.typeFilters.value=l),_(i.roomFilters.value,d)||(i.roomFilters.value=d),_(i.trackFilters.value,s)||(i.trackFilters.value=s),i.showSmbEsmtbEvents.value!==b&&(i.showSmbEsmtbEvents.value=b)},{data:o,pending:a,error:$}=([m,f]=ye(async()=>Te("programme-timetable",async()=>{const[e,l,d,s]=await Promise.all([$fetch($e(k)),$fetch(Se(k)),$fetch(Ce(k)),$fetch(Fe(k))]);return{meta:e,timetable:l,contributions:d,minisymposia:s}},{server:!1,default:()=>({meta:null,timetable:[],contributions:{schema_version:1,items:[]},minisymposia:{schema_version:1,items:[]}})})),m=await m,f(),m);return j(()=>c.query,R,{immediate:!0}),j([()=>i.searchFilter.value,()=>i.typeFilters.value,()=>i.roomFilters.value,()=>i.trackFilters.value,()=>i.showSmbEsmtbEvents.value],([e,l,d,s,b])=>{const V=g(c.query.q),P=u(c.query.type),O=u(c.query.room),K=u(c.query.track),H=y(c.query.smb);V===e&&_(P,l)&&_(O,d)&&_(K,s)&&H===b||q({q:e.trim()||void 0,type:l.length?l:void 0,room:d.length?d:void 0,track:s.length?s:void 0,smb:b})},{deep:!0}),j(o,e=>{e&&(i.setProgrammeData(e),i.setPersonalScheduleFriendlyIds(null))},{immediate:!0}),(e,l)=>{const d=ne,s=nt,b=ke,V=we;return p(),v("div",null,[L(d,{heading:"Timetable"}),r("div",it,[r("div",ct,[L(s,{class:"mb-10"}),t(a)?(p(),N(b,{key:0,label:"Loading timetable dataâ¦"})):t($)?(p(),v("p",ut," Timetable data could not be loaded. ")):(p(),N(V,{key:2}))])])])}}});export{Et 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.