PageSourceSearch

https://gwangju-morning.onrender.com/assets/LocalCornerSection-DqLTTNXc.js

js gwangju-morning.onrender.com collected 2026-10-03 11:40:42 UTC 3,030 bytes, 3 lines download raw bytes

1import{r,j as o,d as b}from"./index-B5vA2KtO.js";const n=[{id:"corner-sports",icon:o.jsx(b,{size:13}),label:"지역 스포츠",color:"oklch(0.38 0.12 230)",title:"KIA·광주FC 공식 일정 확인",desc:"당일 경기 여부와 시간은 구단 공식 일정 기준으로 확인합니다.",sub:"출처: KIA 타이거즈 · 광주FC 공식 채널"}];function f(s,e){return{...s,id:`${s.id}-${e.id}`,title:e.title,desc:e.summary,sub:`${e.source} · ${e.publishedAt}`,body:e.body,source:e.source,sourceUrl:e.sourceUrl,publishedAt:e.publishedAt}}function h(s){return`https://search.naver.com/search.naver?query=${encodeURIComponent(`${s.title} ${s.source??""}`.trim())}`}function y(s){const e=s.body&&s.body.length>0?s.body.join(`
2
3`):s.desc;return{id:s.id,category:s.label,categoryColor:s.color,title:s.title,summary:s.desc,description:e,orgName:s.source,url:s.sourceUrl||h(s),urlLabel:s.sourceUrl?"원문 보기":"원문 검색 결과 보기",source:s.source||s.sub,updatedAt:s.publishedAt||s.sub}}function x(s){const e=`${s.category} ${s.title} ${s.summary} ${(s.body??[]).join(" ")} ${s.source}`;return s.source.includes("KBO")?!0:/예고|일정|티켓|예매|팬\s*사인|이벤트|응원|프로모션|경기장|중계|편성표/.test(e)&&!/\d+\s*[-:]\s*\d+|결과|승리|패배|무승부|연승|연패|분석|리뷰|총평|관전평/.test(e)?!1:/\d+\s*[-:]\s*\d+|경기\s*결과|결과|승리|패배|무승부|연승|연패|완승|역전승|대승|석패|득점|실점|홈런|타점|안타|골|스코어|비평|평가|분석|리뷰|총평|관전평|최종\s*결과/.test(e)}function $({region:s,onItemClick:e}){const[d,u]=r.useState(n);return r.useEffect(()=>{let t=!1;async function l(){try{const[a]=await Promise.all([fetch(`/api/news-feed?${new URLSearchParams({kind:"sports",region:s}).toString()}`,{cache:"no-store"})]),c=a.ok?(await a.json()).articles??[]:[],i=c.find(x)??c[0],p=[i?f(n[0],i):n[0]];t||u(p)}catch(a){console.warn("[local-corner] keeping fallback data:",a)}}l();const m=setInterval(()=>void l(),600*1e3);return()=>{t=!0,clearInterval(m)}},[s]),o.jsxs("div",{className:"flex flex-col gap-3 animate-card-enter",style:{animationDelay:"0.06s"},children:[o.jsx("div",{className:"section-label px-1",children:"지역 스포츠"}),d.map((t,l)=>o.jsxs("button",{type:"button","data-testid":"local-corner-item",className:"news-card p-4 w-full text-left transition-colors",style:{cursor:"pointer"},onClick:()=>e?.(y(t)),children:[o.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[o.jsx("span",{style:{color:t.color},children:t.icon}),o.jsx("span",{className:"section-label",style:{color:t.color},children:t.label})]}),o.jsx("p",{className:"text-base font-bold mb-1.5 leading-snug",style:{fontFamily:"Noto Serif KR, serif",color:"oklch(0.13 0.05 255)"},children:t.title}),o.jsx("p",{className:"text-sm mb-2",style:{color:"oklch(0.42 0.01 240)",lineHeight:1.62},children:t.desc}),o.jsx("p",{className:"text-xs",style:{color:"oklch(0.62 0.01 240)"},children:t.sub})]},t.id||l))]})}export{$ 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.