PageSourceSearch

https://ideaevolver.com/assets/LeaderboardFood-BxgeLA4w.js

js ideaevolver.com collected 2026-09-24 13:59:46 UTC 5,682 bytes, 1 lines download raw bytes

1import{a as e}from"./rolldown-runtime-BEU_UCik.js";import{r}from"./vendor-auth-DAuWozuU.js";import{t}from"./chunk-62JRHF6Z-D9puh-us.js";import{t as s}from"./index.esm-BEieHnny.js";import{_ as o,a,i as c,n as i}from"./vendor-query-Ct_3YD9H.js";import{t as n}from"./useDebounceValue-CxtyEK5e.js";import{t as l}from"./Pagination-CHq3HjTr.js";import{t as d}from"./SortHeader-CvmsXzZL.js";import{t as u}from"./foodService-CbcIyaDU.js";var h=e(r()),g=async({page:e,search:r,sortKey:t,sortDirection:s,signal:o})=>{const a={page:String(e),search:r||"",sort_key:t||"score",sort_direction:s||"asc"},c=await u.list(a,o);return{foods:c?.results??[],count:c?.count??0}};var m=a(),p=()=>{const{foods:e,loading:r,fetching:a,error:u,sortKey:p,setSortKey:x,sortDirection:b,setSortDirection:y,search:j,setSearch:v,hasMore:S,currentPage:D,setCurrentPage:K,totalPages:N}=function(){const[e,r]=(0,h.useState)(""),[t,s]=(0,h.useState)("score"),[a,l]=(0,h.useState)("asc"),[d,u]=(0,h.useState)(1),m=n(e,500);(0,h.useEffect)(()=>{sessionStorage.removeItem("foodSearch")},[]);const p=c(),f=(0,h.useMemo)(()=>({page:d,search:m,sortKey:t,sortDirection:a}),[d,m,t,a]),{data:x,isPending:b,isError:y,error:j,isFetching:v,isPlaceholderData:S}=i({queryKey:["foods",f],queryFn:({signal:e})=>g({page:f.page,search:f.search,sortKey:f.sortKey,sortDirection:f.sortDirection,signal:e}),placeholderData:o,staleTime:1e4}),D=(0,h.useRef)("");(0,h.useEffect)(()=>{const e=JSON.stringify({debouncedSearch:m,sortKey:t,sortDirection:a});D.current&&D.current!==e&&u(1),D.current=e},[m,t,a]);const K=x?.foods??[],N=x?.count??0,w=Math.ceil(N/10)||0,P=d<w;return(0,h.useEffect)(()=>{if(!S&&P){const e={page:d+1,search:m,sortKey:t,sortDirection:a};p.prefetchQuery({queryKey:["foods",e],queryFn:({signal:r})=>g({page:e.page,search:e.search,sortKey:e.sortKey,sortDirection:e.sortDirection,signal:r})})}},[p,S,P,d,m,t,a]),{foods:K,loading:b&&!S,fetching:v,error:y?j:null,totalPages:w,currentPage:d,setCurrentPage:u,search:e,setSearch:r,sortKey:t,setSortKey:s,sortDirection:a,setSortDirection:l,hasMore:P,isPlaceholderData:S}}(),w=(0,h.useRef)(null),P=(0,h.useCallback)(()=>window.scrollTo({top:0,behavior:"smooth"}),[]);function C(e){p===e?y("asc"===b?"desc":"asc"):(x(e),y("asc"))}return(0,h.useEffect)(()=>{"ontouchstart"in window||w.current?.focus()},[]),(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(s,{children:(0,m.jsx)("title",{children:"Food Leaderboard"})}),(0,m.jsxs)("div",{className:"leaderboard-food page-base",children:[(0,m.jsx)("h1",{className:"section-header-2 text-2xl md:text-4xl p-0",children:"Food Leaderboard"}),(0,m.jsx)("div",{className:"flex flex-col mb-2 md:mb-12 md:flex-row gap-2",children:(0,m.jsxs)("form",{className:"relative search-bar flex-1",onSubmit:e=>e.preventDefault(),children:[(0,m.jsx)("label",{className:"mb-2 text-xs opacity-0",htmlFor:"search",children:"Food Search"}),(0,m.jsx)("div",{className:"relative",children:(0,m.jsx)("input",{className:"step-4 w-full p-4 rounded border border-trusty-blue/25 dark:border-trusty-blue/50 focus:ring focus:ring-trusty-blue/50 focus:dark:ring-trusty-blue}",name:"search",id:"search",type:"search",value:j,onChange:async e=>{e.target.value.startsWith(" ")||(v(e.target.value),K(1))},autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",autoComplete:"off","aria-autocomplete":"none","data-lpignore":"true","data-form-type":"other",placeholder:"Search for Food Products or Companies",ref:w})})]})}),(0,m.jsx)("div",{className:"page-section-3 overflow-x-scroll",children:(0,m.jsxs)("table",{id:"food-table",className:`food-table ${r||a?"animate-pulse pointer-events-none":null}`,children:[(0,m.jsx)("thead",{children:(0,m.jsxs)("tr",{children:[(0,m.jsx)("th",{className:"p-4",children:(0,m.jsx)(d,{label:"AI",sortKey:"score",activeKey:p,activeDir:b,onSort:C,loading:r||a})}),(0,m.jsx)("th",{className:"p-4 text-left",children:(0,m.jsx)(d,{label:"Product",sortKey:"product",activeKey:p,activeDir:b,onSort:C,loading:r||a})}),(0,m.jsx)("th",{className:"p-4 text-left",children:(0,m.jsx)(d,{label:"Brand",sortKey:"brand",activeKey:p,activeDir:b,onSort:C,loading:r||a})}),(0,m.jsx)("th",{className:"p-4 text-left",children:(0,m.jsx)(d,{label:"Rating",sortKey:"rating",activeKey:p,activeDir:b,onSort:C,loading:r||a})}),(0,m.jsx)("th",{className:"p-4",children:(0,m.jsx)(d,{label:"Publication",sortKey:"publication_date",activeKey:p,activeDir:b,onSort:C,loading:r||a})})]})}),(0,m.jsx)("tbody",{children:e.map(e=>(0,m.jsxs)("tr",{className:"cursor-pointer group",children:[(0,m.jsx)("td",{className:"p-4 text-lg text-left group-hover:bg-white/20",children:(0,m.jsx)("div",{className:"w-full rounded grid place-items-center font-bold",style:{backgroundColor:f(e.score,.2),border:`1px dotted ${f(e.score,1)}`},children:e.score})}),(0,m.jsxs)("td",{className:"p-4 grid grid-rows-[auto_1fr] group-hover:bg-white/20",children:[(0,m.jsx)(t,{to:`/product/${e.uuid}`,children:e.description}),e.brand_name&&(0,m.jsx)("span",{className:"w-fit px-1 py-0.5 inline-block text-xs bg-trusty-blue/20 dark:bg-watermelon-500/20 border border-dotted border-deep-space dark:border-watermelon-500 rounded",children:e.brand_name})]}),(0,m.jsx)("td",{className:"p-4 group-hover:bg-white/20",children:e.brand_owner}),(0,m.jsx)("td",{className:"p-4 group-hover:bg-white/20",children:e.rating}),(0,m.jsx)("td",{className:"p-4 group-hover:bg-white/20 text-center",children:new Date(e.publication_date).toLocaleDateString()})]},e.uuid))})]})}),N>1&&(0,m.jsx)(l,{loading:r,error:u,currentPage:D,totalPages:N,setCurrentPage:K,onPageChange:P})]})]})};function f(e,r){let t;return t=(e=Math.max(0,Math.min(100,e)))<=50?0+e/50*60:60+(e-50)/50*60,`hsl(${t} 100% 50% / ${r})`}export{p 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.