PageSourceSearch

https://cyoa.cafe/assets/HomePage-BKQEF7sU.js

js cyoa.cafe collected 2026-10-05 06:38:26 UTC 24,173 bytes, 1 lines download raw bytes

1import{Q as e,V as t,Y as n,h as r}from"./createSimplePaletteValueFilter-Curi4ESi.js";import{t as i}from"./Typography-BWr-0ZXB.js";import{t as a}from"./Box-CrslChRS.js";import{t as o}from"./ButtonBase-Dg0wjZlj.js";import{t as s}from"./TextField-B5fEkzxZ.js";import{t as c}from"./useTheme-1D54sjTr.js";import{t as l}from"./Collapse-B9QZXz_Z.js";import{t as u}from"./Paper-CKv4S7p6.js";import{t as d}from"./CircularProgress-8JeiPKaL.js";import{T as f,n as p,t as ee,u as te,v as m,y as h}from"./pocketbase-DsW1kA2a.js";import{$ as g,An as ne,Bn as re,J as _,Kt as v,Mn as ie,Nn as ae,Q as oe,Sn as se,X as ce,Z as y,Zt as le,at as ue,ct as de,dt as fe,et as pe,ft as me,gn as he,it as ge,jn as _e,lt as ve,mn as ye,mt as be,nn as b,nt as x,on as S,qt as C,rn as w,rt as T,st as xe,tn as Se,ut as Ce,z as we}from"./index-Bz6Bp2Wu.js";import{t as Te}from"./LockOutlined-G22PH5uh.js";var E=e(n(),1),Ee=`catalog-random-decks-v2`,D=[],O=!1;function k(e){for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e}function A(e,t){let n=new Map;return t.forEach((e,t)=>e.forEach(e=>n.set(e,t))),k([...e]).sort((e,t)=>(n.get(e)??-1)-(n.get(t)??-1))}function De(e,t,n=Date.now()){let r=new Set(t);if(!e)return{ids:k([...r]),cursor:0,recent:[],refreshedAt:n};let i=e.ids.slice(0,e.cursor).filter(e=>r.has(e)),a=e.ids.slice(e.cursor).filter(e=>r.has(e)),o=new Set(e.ids),s=k([...r].filter(e=>!o.has(e))),c=[],l=0,u=0;for(;l<a.length||u<s.length;)Math.random()*(a.length-l+s.length-u)<s.length-u?c.push(s[u++]):c.push(a[l++]);return{ids:[...i,...c],cursor:i.length,recent:e.recent.map(e=>[...e]),refreshedAt:n}}async function Oe(e,t,n,r){let i=structuredClone(e),a=[],o=new Set,s=!1;for(;a.length<t&&i.ids.some(e=>!o.has(e));){i.cursor>=i.ids.length&&(i.ids=A(i.ids,[...i.recent,a.map(e=>e.id)]),i.cursor=0);let e=[];for(;i.cursor<i.ids.length&&e.length<t-a.length;){let t=i.ids[i.cursor++];o.has(t)||(o.add(t),e.push(t))}if(!e.length)continue;let c=new Map((await n(e)).map(e=>[e.id,e]));for(let t of e){let e=c.get(t);e&&a.push(e)}e.some(e=>!c.has(e))&&(s?i=De(i,i.ids.filter(t=>!e.includes(t)||c.has(t)),i.refreshedAt):(i=De(i,await r()),s=!0))}return a.length&&(i.recent=[...i.recent,a.map(e=>e.id)].slice(-5)),{deck:i,cards:a}}function j(e){if(!e||typeof e!=`object`)return!1;let t=e,n=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`&&/^[a-z0-9]{15}$/.test(e));return n(t.ids)&&new Set(t.ids).size===t.ids.length&&Number.isInteger(t.cursor)&&t.cursor>=0&&t.cursor<=t.ids.length&&Number.isFinite(t.refreshedAt)&&Array.isArray(t.recent)&&t.recent.length<=5&&t.recent.every(e=>n(e)&&e.length<=20)}function M(){if(O)return D;try{let e=JSON.parse(localStorage.getItem(Ee)??`[]`);if(Array.isArray(e))return e.filter(e=>!!e&&typeof e.key==`string`&&j(e.deck)).slice(-8)}catch{}return D}function ke(e){let t=M().find(t=>t.key===e)?.deck;return t?structuredClone(t):null}function Ae(e,t){D=[...M().filter(t=>t.key!==e),{key:e,deck:structuredClone(t)}].slice(-8);try{localStorage.setItem(Ee,JSON.stringify(D))}catch{O=!0}}var N={all:`All`,week:`Week`,month:`Month`,year:`Year`},P={fresh:[`Newest in the catalogue — no bumps`,`Oldest in the catalogue`],top:[`Most liked`,`Least liked`],talk:[`Discussed`,`Least discussed`]},je=e=>(e.get(`sem`)||``).trim().length>=2?`semantic`:e.get(`seed`)===`random`?`random`:`none`,F=t();function Me({variant:e=`page`,onReroll:t,randomLoading:n=!1}){let i=c(),[o,s]=re(),{user:l}=(0,E.useContext)(ee),u=e===`panel`,d=o.get(`sort`)||`feed`,f=o.get(`dir`)===`asc`?`asc`:`desc`,p=o.get(`period`)||`all`,te=o.get(`format`)||`all`,m=o.get(`liked`)===`1`,h=je(o),g=e=>{let t=new URLSearchParams(o);Object.entries(e).forEach(([e,n])=>{n===null||n===``?t.delete(e):t.set(e,n)}),s(t,{replace:!0})},ne=()=>{n||(h===`random`?t?.():g({seed:`random`}))},ie={"& .MuiToggleButton-root":{borderRadius:`10px`,px:u?1.1:1.5,py:.5,border:0,color:i.palette.text.secondary,textTransform:`none`,bgcolor:r(i.palette.primary.main,.05),"&.Mui-selected":{bgcolor:r(i.palette.primary.main,.15),color:i.palette.text.primary,fontWeight:600},"&:hover":{bgcolor:r(i.palette.primary.main,.1)}}},ae=h===`random`?i.palette.text.primary:f===`asc`?i.palette.error.main:i.palette.success.main,oe={...ie,"& .MuiToggleButton-root.Mui-selected":{color:ae,bgcolor:r(ae,.18),"&:hover":{bgcolor:r(ae,.26)}}},se=u?null:(0,F.jsx)(he,{orientation:`vertical`,flexItem:!0,sx:{height:24,alignSelf:`center`,display:{xs:`none`,sm:`block`}}});return(0,F.jsxs)(a,{sx:{display:`flex`,flexWrap:`wrap`,gap:u?1.25:1,alignItems:`center`,justifyContent:`center`,width:`100%`},children:[h===`semantic`?(0,F.jsx)(_e,{size:`small`,variant:`outlined`,icon:(0,F.jsx)(Te,{}),label:`Order: by match`,onDelete:()=>g({sem:null}),sx:{borderRadius:2}}):(0,F.jsxs)(b,{exclusive:!0,size:`small`,value:h===`random`?`random`:d===`feed`?null:d,onChange:(e,t)=>
1{if(t===`random`){ne();return}if(t){g({sort:t,dir:null,seed:null});return}if(h===`random`){ne();return}g(f===`desc`?{dir:`asc`}:{sort:null,dir:null})},sx:oe,"aria-label":`Order`,children:[[`fresh`,`top`,`talk`].map(e=>{let t=e===`fresh`?ge:e===`top`?T:_,n=h===`none`&&d===e&&f===`asc`,r=P[e][+!!n];return(0,F.jsx)(S,{title:r,children:(0,F.jsx)(w,{value:e,"aria-label":r,children:(0,F.jsx)(t,{fontSize:`small`})})},e)}),(0,F.jsx)(S,{title:h===`random`?`Roll again`:`Random picks within the current filters`,children:(0,F.jsx)(w,{value:`random`,selected:h===`random`,onChange:ne,disabled:n&&h===`random`,"aria-label":h===`random`?`Roll again`:`Random picks`,children:(0,F.jsx)(x,{fontSize:`small`})})})]}),se,(0,F.jsxs)(b,{exclusive:!0,size:`small`,value:p,onChange:(e,t)=>t&&g({period:t===`all`?null:t}),sx:ie,"aria-label":`Period`,children:[(0,F.jsx)(w,{value:`month`,children:N.month}),(0,F.jsx)(w,{value:`year`,children:N.year}),(0,F.jsx)(w,{value:`all`,children:N.all})]}),se,(0,F.jsxs)(b,{exclusive:!0,size:`small`,value:te,onChange:(e,t)=>
1t&&g({format:t===`all`?null:t}),sx:ie,"aria-label":`Format`,children:[(0,F.jsx)(w,{value:`all`,"aria-label":`All formats`,children:(0,F.jsx)(S,{title:`All formats`,children:(0,F.jsx)(ce,{fontSize:`small`})})}),(0,F.jsx)(w,{value:`img`,"aria-label":`Static`,children:(0,F.jsx)(S,{title:`Static`,children:(0,F.jsx)(C,{fontSize:`small`})})}),(0,F.jsx)(w,{value:`link`,"aria-label":`Interactive`,children:(0,F.jsx)(S,{title:`Interactive`,children:(0,F.jsx)(v,{fontSize:`small`})})})]}),l&&(0,F.jsx)(S,{title:`Only what I liked`,children:(0,F.jsx)(w,{value:`liked`,size:`small`,selected:m,onClick:()=>g({liked:m?null:`1`}),sx:{borderRadius:`10px`,px:u?1.1:1.5,py:.5,border:0,color:i.palette.text.secondary,bgcolor:r(i.palette.primary.main,.05),"&.Mui-selected":{color:i.palette.error.main,bgcolor:r(i.palette.error.main,.16),"&:hover":{bgcolor:r(i.palette.error.main,.24)}},"&:hover":{bgcolor:r(i.palette.primary.main,.1)}},"aria-label":`My likes`,children:(0,F.jsx)(y,{fontSize:`small`})})})]})}var I=new Set([`nsfw`,`extreme`]);function L(e){return Array.isArray(e)&&e.length?e:null}function Ne(e,t,n){let r=window,i=e===`sfw`,a=L(r[i?`__CATALOG__`:`__CATALOG_ALL__`]);if(!a)return null;let o=L(r[i?`__CATALOG_PINS__`:`__CATALOG_PINS_ALL__`])??[],s=new Set(t.tags),c=new Set(t.games),l=new Set(t.authors),u=t=>{let n=t.expand?.tags??[];return!(e===`nsfw`&&!n.some(e=>I.has((e.name||``).toLowerCase()))||n.some(e=>s.has(e.id))||c.has(t.id)||(t.expand?.authors??[]).some(e=>l.has(e.id)))},d=o.filter(e=>u(e)&&!n.has(e.id)),f=new Set(d.map(e=>e.id)),p=a.filter(e=>u(e)&&!f.has(e.id));return!p.length&&!d.length?null:{pins:d,games:p}}var Pe=25,Fe=500,Ie=864e5,Le=20,Re=40,ze=350,Be={week:7,month:30,year:365},Ve={feed:`bumped_at`,fresh:`created`,top:`upvotes_count`,talk:`comments_count`},He=(e,t)=>{let n=t===`asc`?`+`:`-`;return Ve[e]===`created`?`${n}created`:`${n}${Ve[e]},-created`},Ue=e=>e.replace(/["\\]/g,``),R=e=>e.replace(/"/g,`\\"`),We=e=>e===`all`?null:new Date(Date.now()-Be[e]*Ie).toISOString().replace(`T`,` `).substring(0,19),z=e=>e.map(e=>{let t=e.expand,n=t?{...t.authors?{authors:Array.isArray(t.authors)?t.authors:[t.authors]}:{},...t.tags?{tags:Array.isArray(t.tags)?t.tags:[t.tags]}:{}}:{};return{...e,expand:n}}),Ge=(e,t)=>(e.expand?.authors?.map(e=>e.id)??e.authors??[]).some(e=>t.has(e));function B({selectedTags:e,selectedAuthors:t,filterMode:n,blockedTags:_}){let v=c(),ce=ye(v.breakpoints.up(`md`),{noSsr:!0}),[y,he]=re(),{user:ge,blockedGameIds:b,blockedAuthorIds:x}=(0,E.useContext)(ee),C=ge?.id??null,w=(0,E.useMemo)(()=>new Set(b),[b]),T=(0,E.useMemo)(()=>new Set(x),[x]),Te=(0,E.useMemo)(()=>(y.get(`tags`)||``).split(`,`).map(e=>e.trim()).filter(Boolean),[y]),Ee=(0,E.useMemo)(()=>(y.get(`authors`)||``).split(`,`).map(e=>e.trim()).filter(Boolean),[y]),D=y.get(`q`)||``,O=y.get(`sort`)||`feed`,k=y.get(`dir`)===`asc`?`asc`:`desc`,A=y.get(`sem`)||``,j=y.get(`period`)||`all`,M=y.get(`format`)||`all`,N=y.get(`liked`)===`1`,P=je(y),I=(0,E.useMemo)(()=>Array.from(new Set([...e,...Te])),[e,Te]),L=(0,E.useMemo)(()=>Array.from(new Set([...t,...Ee])),[t,Ee]),Be=P===`none`&&O===`feed`&&!D&&!N&&I.length===0&&L.length===0&&M===`all`&&j===`all`,Ve=(0,E.useMemo)(()=>[A||D,...L,...I].filter(Boolean).join(` · `),[A,D,L,I]),B=(0,E.useCallback)(e=>{let t=new URLSearchParams(y);Object.entries(e).forEach(([e,n])=>{n===null||n===``?t.delete(e):t.set(e,n)}),he(t,{replace:!0})},[y,he]),[Ke,qe]=(0,E.useState)(D);(0,E.useEffect)(()=>{qe(D)},[D]),(0,E.useEffect)(()=>{let e=setTimeout(()=>{let e=Ke.trim();e!==D&&B({q:e||null})},ze);return()=>clearTimeout(e)},[Ke]);let[Je,Ye]=(0,E.useState)(A);(0,E.useEffect)(()=>{Ye(A)},[A]);let[Xe,Ze]=(0,E.useState)(``),[Qe,$e]=(0,E.useState)(``);(0,E.useEffect)(()=>{let e=()=>{qe(``),Ye(``),Ze(``),$e(``),he({},{replace:!0}),window.scrollTo({top:0,behavior:`smooth`})};return window.addEventListener(me,e),()=>window.removeEventListener(me,e)},[he]);let et=ce,tt=(0,E.useRef)(null),[V,nt]=(0,E.useState)(()=>{let e=Ce();return e?fe(e):new Map}),[rt,it]=(0,E.useState)(()=>Ce()!==null);(0,E.useEffect)(()=>{if(rt)return;let e=!0;return ve().then(t=>{e&&nt(fe(t))}).catch(e=>console.error(e)).finally(()=>
1{e&&it(!0)}),()=>{e=!1}},[]);let at=(0,E.useMemo)(()=>de(),[]),H=(0,E.useMemo)(()=>{for(let[e,t]of V)if(t.name.toLowerCase()===`nsfw`)return e;return at?.nsfw??null},[V,at]),U=(0,E.useMemo)(()=>{for(let[e,t]of V)if(t.name.toLowerCase()===`extreme`)return e;return at?.extreme??null},[V,at]),ot=rt||at!==null&&I.length===0,st=(0,E.useMemo)(()=>{let e=new Map;for(let[t,n]of V)e.set(n.name.toLowerCase(),t);return e},[V]),ct=(0,E.useRef)(new Set),[lt,ut]=(0,E.useState)(!1);(0,E.useEffect)(()=>{xe().then(e=>{ct.current=e}).catch(()=>{}).finally(()=>ut(!0))},[]);let dt=(0,E.useMemo)(()=>{let e=ct.current;return Array.from(V.values()).filter(t=>!e.size||e.has(t.id)).map(e=>e.name).sort((e,t)=>e.localeCompare(t))},[V,lt]),[ft,pt]=(0,E.useState)([]),mt=(0,E.useRef)(0);(0,E.useEffect)(()=>{let e=Ue(Qe.trim());if(e.length<2){pt([]);return}let t=++mt.current,n=setTimeout(()=>{te.getList(1,8,{filter:`(name ~ "${e}" || aliases ~ "${e}")`,fields:`id,name`,skipTotal:!0}).then(e=>{t===mt.current&&pt(e.items.map(e=>e.name))}).catch(()=>{t===mt.current&&pt([])})},ze);return()=>clearTimeout(n)},[Qe]);let[W]=(0,E.useState)(()=>{if(!Be||k!==`desc`||A)return null;let e=Ne(n,{tags:_.map(e=>e.id),games:b,authors:x},f());return e?{games:z(e.games),pins:z(e.pins),seen:f()}:null}),[ht,G]=(0,E.useState)(()=>W?.games??[]),[gt,K]=(0,E.useState)(()=>W!==null),[_t,q]=(0,E.useState)(new Map),[vt,yt]=(0,E.useState)(()=>W?.pins??[]),[bt,xt]=(0,E.useState)(()=>W?.seen??new Set),[J,Y]=(0,E.useState)(()=>W===null),[St]=(0,E.useState)(()=>{let e=window.__PREPAINT__;return W&&e?.grid?`<style>${e.css}</style>${e.grid}`:null}),[Ct,wt]=(0,E.useState)(St===null);(0,E.useEffect)(()=>{Ct||(0,E.startTransition)(()=>wt(!0))},[Ct]);let[Tt,X]=(0,E.useState)(null),[Et,Dt]=(0,E.useState)(1),[Ot,kt]=(0,E.useState)(!0),Z=(0,E.useRef)(0),At=(0,E.useRef)(null),[Q,jt]=(0,E.useState)(null);(0,E.useEffect)(()=>{if(!N||!C){jt(null);return}let e=!1;return m.getList(1,Fe,{filter:`upvotes ?~ "${C}"`,fields:`id`,sort:`-created`,skipTotal:!0}).then(t=>{e||jt(t.items.map(e=>e.id))}).catch(()=>{e||jt([])}),()=>{e=!0}},[N,C]);let Mt=(0,E.useCallback)(e=>{let t=[];if(n===`sfw`)H&&t.push(`tags.id != "${H}"`),U&&t.push(`tags.id != "${U}"`);else if(n===`nsfw`){let e=[];H&&e.push(`tags ~ "${H}"`),U&&e.push(`tags ~ "${U}"`),t.push(e.length?`(${e.join(` || `)})`:`(1=0)`)}if(_.forEach(e=>t.push(`tags.id != "${e.id}"`)),!e.withUserFilters)return t;D&&t.push(`(title ~ "${R(D)}" || aliases ~ "${R(D)}")`),L.length&&t.push(`(${L.map(e=>`authors.name ?~ "${R(e)}"`).join(` || `)})`);let r=[],i=[];I.forEach(e=>{let t=e.startsWith(`-`),n=(t?e.slice(1):e).trim();if(!n)return;let a=st.get(n.toLowerCase());if(!a){t||r.push(`__missing__`);return}(t?i:r).push(a)}),r.includes(`__missing__`)?t.push(`(1=0)`):r.forEach(e=>t.push(`tags ~ "${e}"`)),i.forEach(e=>t.push(`tags.id != "${e}"`));let a=We(j);return a&&t.push(`created >= "${a}"`),M!==`all`&&t.push(`img_or_link = "${M}"`),N&&C&&t.push(Q&&Q.length?`(${Q.map(e=>`id = "${e}"`).join(` || `)})`:`(1=0)`),t},[n,H,U,_,D,L,I,st,j,M,N,C,Q]),Nt=(0,E.useCallback)(e=>{let t=We(j),n=t?new Date(t.replace(` `,`T`)+`Z`).getTime():null,r=[],i=[];return I.forEach(e=>{let t=e.startsWith(`-`),n=(t?e.slice(1):e).trim().toLowerCase();n&&(t?i:r).push(n)}),e.filter(e=>{let t=(e.expand?.tags??[]).map(e=>e.name.toLowerCase());if(r.some(e=>!t.includes(e))||i.some(e=>t.includes(e))||M!==`all`&&e.img_or_link!==M||n&&e.created&&new Date(e.created).getTime()<n)return!1;if(L.length){let t=(e.expand?.authors??[]).map(e=>e.name.toLowerCase());if(!L.some(e=>t.includes(e.toLowerCase())))return!1}return!(D.trim()&&!(e.title||``).toLowerCase().includes(D.trim().toLowerCase()))})},[I,L,j,M,D]),Pt=(0,E.useCallback)(async(e,t)=>{if(!ot)return;if(N&&!C){G([]),K(!1),q(new Map),kt(!1),Y(!1);return}if(N&&Q===null){Y(!0);return}let n=++Z.current;Y(!0),X(null);try{let[r,i]=await Promise.all([m.getList(e,Pe,{sort:He(O,k),expand:`authors,tags`,filter:Mt({withUserFilters:!0}).join(` && `),fields:p}),t&&Be?(async()=>{let e=new Date(Date.now()-5*Ie).toISOString().replace(`T`,` `).substring(0,19),t=z((await m.getList(1,10,{sort:`-created`,expand:`authors,tags`,fields:p,filter:[`original_release = true`,`created >= "${e}"`,...Mt({withUserFilters:!1})].join(` && `)})).items);return{items:t,seen:await h(t.map(e=>e.id))}})():Promise.resolve(null)]);if(n!==Z.current)return;let a=z(r.items);G(e=>{if(t)return a;let n=new Set(e.map(e=>e.id));return[...e,...a.filter(e=>!n.has(e.id))]}),i&&(yt(i.items),xt(i.seen)),K(Be),q(new Map),kt(r.items.length===Pe)}catch(e){if(n!==Z.current)return;console.error(e),X(`Could not load the feed`)}
1finally{n===Z.current&&Y(!1)}},[ot,N,Q,C,O,k,Mt,Be]),Ft=(0,E.useCallback)(async()=>{let e=A.trim();if(e.length<2){G([]),K(!1),q(new Map),Y(!1);return}let t=++Z.current;Y(!0),X(null),kt(!1);try{let n=await fetch(`/api/semantic-search?q=${encodeURIComponent(e)}&mode=mixed`);if(!n.ok)throw Error(`semantic-search ${n.status}`);let r=((await n.json()).results??[]).slice(0,Re);if(t!==Z.current)return;if(!r.length){G([]),K(!1),q(new Map);return}let i=new Map(r.map(e=>[e.id,e.score])),a=await m.getFullList({filter:r.map(e=>`id="${e.id}"`).join(` || `),expand:`authors,tags`,fields:p});if(t!==Z.current)return;let o=new Map(a.map(e=>[e.id,e])),s=r.map(e=>o.get(e.id)).filter(e=>!!e);q(i),K(!1),G(Nt(z(s)))}catch(e){if(t!==Z.current)return;console.error(e),X(`Semantic search did not respond`)}finally{t===Z.current&&Y(!1)}},[A,Nt]),$=(0,E.useRef)(null),It=(0,E.useCallback)(async()=>{let e=++Z.current;Y(!0),X(null),kt(!1);let t=()=>{if(e!==Z.current)throw Error(`Obsolete random draw`)};try{let r=Mt({withUserFilters:!0});b.forEach(e=>r.push(`id != "${R(e)}"`)),x.forEach(e=>r.push(`authors.id != "${R(e)}"`)),N&&!C&&r.push(`(1=0)`);let i=r.join(` && `),a=JSON.stringify({userId:C,period:j,format:M,liked:N,q:D,activeTags:[...I].sort(),activeAuthors:[...L].sort(),filterMode:n,nsfwTagId:H,extremeTagId:U,blocked:_.map(e=>e.id).sort(),blockedGames:[...b].sort(),blockedAuthors:[...x].sort()}),o=async()=>{t();let n=$.current;if(!n||n.key!==a){let t=(async()=>{let e=[];for(let t=1;;t++){let n=await m.getList(t,500,{sort:`id`,filter:i,fields:`id`,skipTotal:!0});if(e.push(...n.items.map(e=>e.id)),n.items.length<500)return e;if($.current?.key!==a||$.current.generation!==Z.current)throw Error(`Obsolete ID scan`)}})();n={key:a,generation:e,promise:t},$.current=n}n.generation=e;try{let e=await n.promise;return t(),e}finally{$.current===n&&($.current=null)}},s=ke(a);(!s||Date.now()-s.refreshedAt>=18e5)&&(s=De(s,await o()));let c=await Oe(s,Le,async e=>{t();let n=`(${e.map(e=>`id="${R(e)}"`).join(` || `)})`,r=await m.getList(1,Le,{filter:[i,n].filter(Boolean).join(` && `),expand:`authors,tags`,fields:p,skipTotal:!0});return t(),z(r.items).filter(e=>!w.has(e.id)&&!Ge(e,T))},o);t(),G(c.cards),K(!1),q(new Map),Ae(a,c.deck)}catch(t){if(e!==Z.current)return;console.error(t),X(`Could not build a random selection`)}finally{e===Z.current&&Y(!1)}},[Mt,C,w,T,b,x,j,M,N,D,I,L,n,H,U,_]),Lt=!N||!C||Q!==null,Rt=JSON.stringify({seed:P,sort:O,dir:k,period:j,format:M,liked:N,q:D,sem:A,activeTags:I,activeAuthors:L,filterMode:n,blocked:_.map(e=>e.id),user:C,filterReady:ot,likedReady:Lt,randomBlocks:P===`random`?[b,x]:null}),zt=(0,E.useRef)(``),[Bt,Vt]=(0,E.useState)(0);(0,E.useEffect)(()=>{if(++Z.current,ot){if(!Lt){Y(!0);return}if(zt.current!==Rt||P===`random`)return zt.current=Rt,Dt(1),kt(!0),P===`semantic`?Ft():P===`random`?It():Pt(1,!0),()=>{++Z.current,zt.current=``}}},[Rt,Bt,ot]),(0,E.useEffect)(()=>{Et!==1&&P===`none`&&Pt(Et,!1)},[Et]);let Ht=(0,E.useCallback)(e=>{!J&&Ot&&P===`none`&&(At.current?.disconnect(),At.current=new IntersectionObserver(e=>{e[0].isIntersecting&&Dt(e=>e+1)},{rootMargin:`0px 0px 1500px 0px`}),e&&At.current.observe(e))},[J,Ot,P]),Ut=(0,E.useMemo)(()=>ht.filter(e=>!w.has(e.id)&&!Ge(e,T)),[ht,w,T]),Wt=(0,E.useMemo)(()=>vt.filter(e=>!w.has(e.id)&&!bt.has(e.id)&&!Ge(e,T)),[vt,w,T,bt]),Gt=(0,E.useMemo)(()=>new Set(Wt.map(e=>e.id)),[Wt]),Kt=(0,E.useMemo)(()=>gt?[...Wt,...Ut.filter(e=>!Gt.has(e.id))]:Ut,[gt,Ut,Wt,Gt]),qt=e=>B({tags:e.join(`,`)||null}),Jt=e=>B({authors:e.join(`,`)||null}),Yt=t=>{qt(Array.from(new Set(t.filter(t=>!e.includes(t)))))},Xt=e=>{Jt(Array.from(new Set(e.filter(e=>!t.includes(e)))))},Zt=e=>{let t=e.trim();if(!t)return null;let n=t.startsWith(`-`),r=n?t.slice(1):t,i=st.get(r.toLowerCase());if(!i)return null;let a=V.get(i)?.name??r;return n?`-${a}`:a},Qt=e=>{let t=e=>(e.startsWith(`-`)?e.slice(1):e).toLowerCase(),n=[];return e.forEach(e=>{let r=n.findIndex(n=>t(n)===t(e));r>=0?n[r]=e:n.push(e)}),n},$t={p:`2px 4px`,display:`flex`,alignItems:`center`,width:`100%`,backgroundColor:v.palette.mode===`dark`?r(v.palette.common.white,.05):r(v.palette.common.black,.03),borderRadius:3,transition:`box-shadow 0.2s, background-color 0.2s`,border:`1px solid transparent`,"&:hover":{backgroundColor:v.palette.mode===`dark`?r(v.palette.common.white,.08):r(v.palette.common.black,.05)},"&:focus-within":{backgroundColor:v.palette.background.paper,boxShadow:v.shadows[2],borderColor:v.palette.primary.main}},en={flex:1,"& .MuiOutlinedInput-root":{"& fieldset":{border:`none`},padding:`0 8px !important`,minHeight:`44px`},"& .MuiInputBase-input":{padding:`8px 0 !important`,fontSize:`1rem`},"& .MuiInputBase-input::placeholder":{fontSize:`0.95rem`,opacity:.6}},tn={ml:1,mr:1,fontSize:`1.2rem`},nn=(e,t)=>({borderColor:e,color:v.palette.text.primary,height:`26px`,fontSize:`0.85rem`,borderRadius:`6px`,m:`3px`,borderWidth:`1px`,textDecoration:t?`line-through`:`none`,"& .MuiChip-label":{px:1,fontWeight:500},"& .MuiChip-deleteIcon":{color:e,opacity:.7,fontSize:`18px`,"&:hover":{color:e,opacity:1}}});return(0,F.jsxs)(se,{maxWidth:!1,disableGutters:!0,sx:{maxWidth:`2200px`,mx:`auto`,px:{xs:1,sm:2,md:3},pb:2},children:[(0,F.jsx)(l,{in:et,unmountOnExit:!0,children:(0,F.jsxs)(a,{sx:{display:`flex`,flexDirection:`column`,gap:1.25,mb:1.5,alignItems:{md:`center`}},children:[(0,F.jsxs)(a,{sx:{display:`flex`,gap:1,width:`100%`,maxWidth:1080,al
1ignItems:{xs:`stretch`,md:`center`},flexDirection:{xs:`column`,md:`row`}},children:[(0,F.jsxs)(u,{elevation:0,sx:$t,children:[(0,F.jsx)(pe,{color:`action`,sx:tn}),(0,F.jsx)(s,{fullWidth:!0,inputRef:tt,value:Ke,onChange:e=>qe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),B({q:Ke.trim()||null}))},placeholder:`Title...`,sx:en})]}),(0,F.jsxs)(u,{elevation:0,sx:$t,children:[(0,F.jsx)(oe,{color:`action`,sx:tn}),(0,F.jsx)(ne,{multiple:!0,freeSolo:!0,fullWidth:!0,disableClearable:!0,options:dt,value:I,inputValue:Xe,onInputChange:(e,t,n)=>{n!==`reset`&&Ze(t)},onChange:(e,t,n,r)=>{let i=Xe.trim().startsWith(`-`),a=n===`selectOption`&&r?.option?String(r.option):null,o=t.map(e=>{if(I.includes(e))return e;let t=a!==null&&e===a&&i&&!e.startsWith(`-`)?`-${e}`:e;return Zt(t)}).filter(e=>!!e);Yt(Qt(o)),Ze(``)},filterOptions:(e,t)=>{let n=t.inputValue.trim(),r=(n.startsWith(`-`)?n.slice(1):n).toLowerCase();return r?e.filter(e=>e.toLowerCase().includes(r)&&!I.includes(e)&&!I.includes(`-${e}`)).slice(0,10):[]},renderTags:(e,t)=>e.map((e,n)=>{let r=e.startsWith(`-`),i=r?v.palette.error.main:v.palette.success.main,{key:a,...o}=t({index:n});return(0,F.jsx)(_e,{...o,size:`small`,variant:`outlined`,label:r?e.slice(1):e,onDelete:Te.includes(e)?o.onDelete:void 0,sx:nn(i,r)},a)}),renderInput:e=>(0,F.jsx)(s,{...e,placeholder:I.length?``:`Tags (e.g. RPG, -Horror)`,sx:en})})]}),(0,F.jsxs)(u,{elevation:0,sx:$t,children:[(0,F.jsx)(g,{color:`action`,sx:tn}),(0,F.jsx)(ne,{multiple:!0,freeSolo:!0,fullWidth:!0,disableClearable:!0,options:ft,filterOptions:e=>e,value:L,inputValue:Qe,onInputChange:(e,t,n)=>{n!==`reset`&&$e(t)},onChange:(e,t)=>
1{Xt(t.map(e=>e.trim()).filter(Boolean)),$e(``)},renderTags:(e,t)=>e.map((e,n)=>{let{key:r,...i}=t({index:n});return(0,F.jsx)(_e,{...i,size:`small`,variant:`outlined`,label:e,onDelete:Ee.includes(e)?i.onDelete:void 0,sx:nn(v.palette.text.secondary,!1)},r)}),renderInput:e=>(0,F.jsx)(s,{...e,placeholder:L.length?``:`Authors...`,sx:en})})]})]}),(0,F.jsx)(a,{sx:{display:`flex`,gap:1,width:`100%`,maxWidth:820,alignItems:`center`},children:(0,F.jsxs)(u,{elevation:0,sx:{...$t,...P===`semantic`?{borderColor:r(v.palette.primary.main,.5)}:{}},children:[(0,F.jsx)(ue,{color:P===`semantic`?`primary`:`action`,sx:tn}),(0,F.jsx)(s,{fullWidth:!0,value:Je,onChange:e=>Ye(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),B({sem:Je.trim()||null,seed:null}))},placeholder:`...or describe what you want and search by meaning`,sx:en,InputProps:{endAdornment:A?(0,F.jsx)(S,{title:`Clear the meaning search`,children:(0,F.jsx)(ae,{size:`small`,onClick:()=>{Ye(``),B({sem:null})},"aria-label":`Clear the meaning search`,children:(0,F.jsx)(le,{fontSize:`small`})})}):null}})]})}),(0,F.jsx)(Me,{randomLoading:J,onReroll:()=>Vt(e=>e+1)})]})}),!et&&(0,F.jsxs)(a,{sx:{display:`flex`,flexDirection:`column`,gap:1,mb:1.5},children:[(0,F.jsxs)(o,{onClick:()=>be(),"aria-label":`Search`,sx:{...$t,justifyContent:`flex-start`,textAlign:`left`},children:[(0,F.jsx)(Se,{color:`action`,sx:tn}),(0,F.jsx)(i,{noWrap:!0,sx:{flex:1,py:`10px`,pr:1,fontSize:`0.95rem`,color:Ve?`text.primary`:`text.secondary`,opacity:Ve?1:.6},children:Ve||`Title, author or tag...`})]}),(0,F.jsx)(Me,{variant:`panel`,randomLoading:J,onReroll:()=>Vt(e=>e+1)})]}),Tt&&(0,F.jsx)(ie,{severity:`error`,sx:{mb:2,borderRadius:2},children:Tt}),_t.size>0&&ht.length>0&&(0,F.jsxs)(i,{variant:`caption`,color:`text.secondary`,sx:{display:`block`,mb:1},children:[ht.length,` closest by meaning · filters applied to the result`]}),Ct||!St?(0,F.jsx)(we,{games:Kt,scores:_t.size?_t:void 0,lastElementRef:Ht}):(0,F.jsx)(`div`,{"aria-hidden":`true`,dangerouslySetInnerHTML:{__html:St}}),J&&(0,F.jsx)(a,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,F.jsx)(d,{size:28})}),!J&&Kt.length===0&&(0,F.jsx)(a,{sx:{textAlign:`center`,py:6},children:(0,F.jsx)(i,{variant:`body2`,color:`text.secondary`,children:N&&!C?`Sign in to see what you liked.`:P===`semantic`&&D.trim().length<2?`Describe what you want and press Enter.`:`Nothing matches these conditions — drop one of the filters.`})})]})}export{B 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.