PageSourceSearch

https://utilzip.com/_next/static/chunks/4825.89a382f0eddf3c52.js

js utilzip.com collected 2026-10-02 01:49:56 UTC 27,182 bytes, 46 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4825],{24124:(e,t,r)=>{function n(e,t,r,n){let a=e=>e*Math.PI/180,s=a(r-e),l=a(n-t),o=Math.sin(s/2)**2+Math.cos(a(e))*Math.cos(a(r))*Math.sin(l/2)**2;return 12742*Math.atan2(Math.sqrt(o),Math.sqrt(1-o))}function a(e){return e<1?`${Math.round(1e3*e)}m`:`${e.toFixed(1)}km`}r.d(t,{B:()=>a,q:()=>n})},28224:(e,t,r)=>{r.d(t,{j:()=>u});let n=[[1,1],[3,1],[5,5],[6,6],[8,15],[10,3],[10,9],[12,25]],a=[[3,1],[5,5],[8,15],[10,3],[10,9],[12,25]],s=e=>{let{y:t,m:r,d:n}=e;return`${t}-${String(r).padStart(2,"0")}-${String(n).padStart(2,"0")}`};function l(e){let{y:t,m:r,d:n}=e;return new Date(Date.UTC(t,r-1,n))}let o=new Intl.DateTimeFormat("en-u-ca-chinese",{year:"numeric",month:"numeric",day:"numeric",timeZone:"UTC"});function i(e,t,r){let n=[],a=Date.UTC(e,11,31);for(let s=Date.UTC(e,0,1);s<=a;s+=864e5){let e=new Date(s),a=function(e){let t=o.formatToParts(e),r=0,n=0;for(let e of t)"month"===e.type?r=parseInt(e.value,10):"day"===e.type&&(n=parseInt(e.value,10));return{m:r,d:n}}(e);a.m===t&&a.d===r&&n.push({y:e.getUTCFullYear(),m:e.getUTCMonth()+1,d:e.getUTCDate()})}return n}function d(e,t){let r=new Date(l(e).getTime()+864e5*t);return{y:r.getUTCFullYear(),m:r.getUTCMonth()+1,d:r.getUTCDate()}}let c=new Map;function u(e){let t={y:e.getFullYear(),m:e.getMonth()+1,d:e.getDate()};return(function(e){let t=c.get(e);if(t)return t;let r=[];for(let[t,a]of n)r.push({y:e,m:t,d:a});for(let t of[e-1,e,e+1]){for(let e of i(t,1,1))[-1,0,1].forEach(t=>r.push(d(e,t)));for(let e of i(t,8,15))[-1,0,1].forEach(t=>r.push(d(e,t)))}let o=i(e,4,8);for(let e of o)r.push(e);let u=new Set(r.map(s)),p=e=>{let t=l(e).getUTCDay();return 0===t||6===t||u.has(s(e))},m=e=>{let t=d(e,1);for(;p(t);)t=d(t,1);return t},x=e=>{let t=l(e).getUTCDay();return 0===t||6===t||r.filter(t=>s(t)===s(e)).length>1},h=new Map;for(let[t,r]of a)h.set(s({y:e,m:t,d:r}),{y:e,m:t,d:r});for(let e of o)h.set(s(e),e);for(let e of h.values())x(e)&&u.add(s(m(e)));for(let t of[...i(e,1,1),...i(e,8,15)]){let e=[-1,0,1].map(e=>d(t,e));e.some(e=>0===l(e).getUTCDay())&&u.add(s(m(e[2])))}return c.set(e,u),u})(t.y).has(s(t))}},62423:(e,t,r)=>{r.d(t,{h:()=>s});var n=r(12115);let a=null;function s(){let[e,t]=(0,n.useState)(!1),[r,s]=(0,n.useState)(!1),[l,o]=(0,n.useState)(null),i=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(window.kakao?.maps)return void t(!0);let e="24c1b055464aaf546a84c95b65716ccc".trim();if(!e){s(!0),o("지도를 불러오지 못했습니다. 잠시 뒤 다시 시도해 주세요."),console.error("[kakao-map] NEXT_PUBLIC_KAKAO_MAP_KEY 가 없습니다. 호스트 환경 변수에 넣고 다시 빌드\xb7배포하세요 (NEXT_PUBLIC_ 변수는 빌드 시점에 주입됩니다).");return}if(!document.querySelector('link[href="https://dapi.kakao.com"]')){let e=document.createElement("link");e.rel="preconnect",e.href="https://dapi.kakao.com",e.crossOrigin="anonymous",document.head.appendChild(e);let t=document.createElement("link");t.rel="preconnect",t.href="https://t1.daumcdn.net",t.crossOrigin="anonymous",document.head.appendChild(t)}a||(a=new Promise((t,r)=>{let n=document.createElement("script");n.src=`https://dapi.kakao.com/v2/maps/sdk.js?appkey=${encodeURIComponent(e)}&autoload=false&libraries=clusterer`,n.async=!0,n.onload=()=>window.kakao.maps.load(()=>t()),n.onerror=()=>r(Error("sdk-load-failed")),document.head.appendChild(n),i.current=n})),a.then(()=>t(!0)).catch(e=>{s(!0),o("지도를 불러오지 못했습니다. 광고 차단 확장 기능을 끄거나 잠시 뒤 다시 시도해 주세요."),console.error("[kakao-map] SDK 로드 실패 —",e.message,"\xb7 API 키와 도메인 허용(카카오 디벨로퍼스)을 확인하세요.")})},[]),{sdkLoaded:e,sdkBlocked:r,sdkError:l}}},79134:(e,t,r)=>{r.d(t,{K:()=>s});var n=r(12115),a=r(86612);
1function s(e,t,r){let[s,l]=(0,n.useState)([]),[o,i]=(0,n.useState)(null),[d,c]=(0,n.useState)(!0),[u,p]=(0,n.useState)("");return(0,n.useEffect)(()=>{let n=!1,s=new Worker("/workers/map-parser.worker.js"),o=[];return s.onmessage=e=>{if(n)return;let t=e.data;if(t.error){p(t.error),c(!1);return}t.meta&&i(t.meta),t.data&&o.push(...t.data),t.done&&(l(o),c(!1))},s.onerror=()=>{n||(p("자료를 푸는 데 실패했습니다."),c(!1))},(0,a.b)(t,r).then(t=>{n||s.postMessage({type:e,buffer:t},[t])}).catch(e=>{n||(p(e.message||"자료를 불러오는 데 실패했습니다."),c(!1))}),()=>{n=!0,s.terminate()}},[e,t,r]),{items:s,meta:o,loading:d,error:u}}},84825:(e,t,r)=>{r.r(t),r.d(t,{default:()=>j});var n=r(95155),a=r(94801),s=r(93974),l=r(12115),o=r(46339),i=r(62423),d=r(24124),c=r(97926),u=r(79134),p=r(28224);let m=[{bit:1,label:"휠체어 이용 가능"},{bit:2,label:"시각장애인 음성안내"},{bit:4,label:"점자 라벨"},{bit:8,label:"청각장애인 화면안내"},{bit:16,label:"이어폰 잭"}],x={관공서·주민센터:"\uD83C\uDFDB️",공공시설:"\uD83C\uDFE2",민간시설:"\uD83C\uDFEC",교통시설:"\uD83D\uDE8C",기타:"\uD83D\uDCCD"},h='<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',f=e=>`${e.lat},${e.lng},${e.name}`;function g(e){return String(e??"").replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}function b(e){return e>=1440?"24:00":`${String(Math.floor(e/60)).padStart(2,"0")}:${String(e%60).padStart(2,"0")}`}let w=e=>!!e&&0===e[0]&&e[1]>=1440;function k(e,t){let r=t.getDay();return 0===r||6===r||(0,p.j)(t)?e.hldy:e.wkdy}function y(e,t){let r=k(e,t);if(!r)return!1;let[n,a]=r;if(w(r))return!0;let s=60*t.getHours()+t.getMinutes();return a>n?s>=n&&s<a:s>=n||s<a}function v(e,t){let r=k(e,t);return r?w(r)?"24시간 운영":`${b(r[0])} ~ ${b(r[1])}`:"오늘은 쉽니다"}function j(){let e=(0,l.useRef)(null),t=(0,l.useRef)(null),r=(0,l.useRef)(null),p=(0,l.useRef)(null),k=(0,l.useRef)([]),j=(0,l.useRef)(null),$=(0,l.useRef)(new Map),C=(0,l.useRef)(new Set),S=(0,l.useRef)([]),M=(0,l.useRef)([]),L=(0,l.useRef)(new Set),E=(0,l.useRef)(!1),z=(0,l.useRef)(new Date),[T,_]=(0,l.useState)(null),[D,A]=(0,l.useState)([]),[I,B]=(0,l.useState)(new Set),[R,P]=(0,l.useState)(!1),[U,F]=(0,l.useState)(null),{sdkLoaded:H,sdkBlocked:q,sdkError:O}=(0,i.h)(),{items:K,meta:W,loading:Y,error:X}=(0,u.K)("kiosk","/kiosk/kiosk.slim.json.gz","kiosk.json"),V=[X,O].filter(Boolean).join("\n\n"),[Z,G]=(0,l.useState)(!1),[J,Q]=(0,l.useState)(!1),[ee,et]=(0,l.useState)(""),[er,en]=(0,l.useState)(!1);(0,l.useEffect)(()=>{let e=()=>{let e=new Date;z.current=e,F(e)};e();let t=setInterval(e,6e4);return()=>clearInterval(t)},[]);let ea=(0,l.useMemo)(()=>{let e=new Map;return K.forEach(t=>e.set(t.group||"기타",(e.get(t.group||"기타")??0)+1)),[...e.entries()].sort((e,t)=>t[1]-e[1])},[K]),es=(0,l.useMemo)(()=>U?K.filter(e=>y(e,U)).length:0,[K,U]),el=(0,l.useCallback)(()=>{if(!navigator.geolocation)return void et("이 브라우저는 위치 정보를 지원하지 않습니다.");Q(!0),et("");let e=e=>{let r=e.coords.latitude,n=e.coords.longitude;if(_({lat:r,lng:n}),(0,a.sx)("kiosk_my_location_found"),Q(!1),!t.current)return;let{kakao:s}=window,l=new s.maps.LatLng(r,n);p.current&&p.current.setMap(null);let o=new s.maps.CustomOverlay({position:l,content:`
2          <div style="
3            width: 16px; height: 16px;
4            background: #3b82f6;
5            border: 3px solid white;
6            border-radius: 50%;
7            box-shadow: 0 2px 6px rgba(59,130,246,0.6);
8          "></div>
9        `,yAnchor:.5,xAnchor:.5});o.setMap(t.current),p.current=o,t.current.setCenter(l),t.current.getLevel()>4&&t.current.setLevel(4)};navigator.geolocation.getCurrentPosition(e,t=>{if(1===t.code){Q(!1),et("위치 권한이 거부되었습니다. 브라우저 설정에서 위치 허용 후 다시 시도하세요.");return}navigator.geolocation.getCurrentPosition(e,()=>{Q(!1),et("위치 정보를 가져올 수 없습니다. 잠시 후 다시 시도하세요.")},{enableHighAccuracy:!1,timeout:15e3,maximumAge:3e4})},{enableHighAccuracy:!1,timeout:15e3,maximumAge:3e4})},[]);(0,l.useEffect)(()=>{let e=e=>{let t=e.target;if(t.closest("[data-close]")){r.current&&(r.current.setMap(null),r.current=null);return}let n=t.closest('[id^="popup-"]');
9if(n&&t.closest(".popup-copy-addr")){e.stopPropagation();let t=n.querySelector(".popup-address")?.textContent?.trim()??"",r=n.querySelector(".popup-copy-addr");(0,s.D)(t).then(e=>{if(!e){r&&(r.innerHTML=`<span style="font-size:9px;font-weight:700;color:#d97706;white-space:nowrap;">복사 실패</span>`,setTimeout(()=>{r.innerHTML='<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>'},2e3));return}(0,a.sx)("kiosk_address_copied"),r&&(r.innerHTML='<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>',setTimeout(()=>{r.innerHTML=h},1500))})}};return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[]),(0,l.useEffect)(()=>{if(!H||!e.current)return;let{kakao:r}=window,n=new r.maps.Map(e.current,{center:new r.maps.LatLng(37.5665,126.978),level:8});t.current=n;let a={width:"40px",height:"40px",background:"#0369a1",color:"#ffffff",textAlign:"center",fontWeight:"800",fontSize:"14px",lineHeight:"40px",borderRadius:"50%",border:"2.5px solid white",boxShadow:"0 2px 6px rgba(0,0,0,0.2)"};j.current=new r.maps.MarkerClusterer({map:n,averageCenter:!0,minLevel:6,gridSize:100,minClusterSize:2,styles:[a,a,a,a]}),G(!0),el()},[H,el]),(0,l.useEffect)(()=>{if(!Z||!j.current)return;let{kakao:e}=window,n=new e.maps.MarkerImage("/kiosk/icon/kiosk.svg",new e.maps.Size(34,34),{offset:new e.maps.Point(17,17)}),s=new e.maps.MarkerImage("/kiosk/icon/kiosk-closed.svg",new e.maps.Size(30,30),{offset:new e.maps.Point(15,15)}),l=()=>{let l=t.current;if(!l)return;S.current.forEach(e=>e()),S.current=[];
9let o=l.getBounds(),i=o.getSouthWest(),d=o.getNorthEast(),u=i.getLat(),p=d.getLat(),k=i.getLng(),N=d.getLng(),T=(p-u)*.2,_=(N-k)*.2,D=L.current,A=E.current,I=z.current,B=M.current.filter(e=>!D.has(e.group||"기타")&&(!A||y(e,I))&&e.lat>=u-T&&e.lat<=p+T&&e.lng>=k-_&&e.lng<=N+_),R=new Set(B.map(e=>`${f(e)}|${y(e,I)?"o":"c"}`)),P=[];C.current.forEach(e=>{if(!R.has(e)){let t=$.current.get(e);t&&P.push(t),C.current.delete(e)}}),P.length&&j.current.removeMarkers(P);let U=[],F=new Set;if(B.forEach(e=>{let t=`${f(e)}|${y(e,I)?"o":"c"}`;C.current.has(t)||F.has(t)||(F.add(t),U.push({key:t,item:e}))}),U.length){let l=o=>{let i=U.slice(o,o+400);j.current.addMarkers(i.map(l=>{let{item:o}=l,i=y(o,z.current),d=`${f(o)}|${i?"o":"c"}`;if($.current.has(d))return $.current.get(d);let c=new e.maps.LatLng(o.lat,o.lng),u=new e.maps.Marker({position:c,image:i?n:s,zIndex:i?3:1});return e.maps.event.addListener(u,"click",()=>{(0,a.sx)("kiosk_marker_clicked",{place:o.group,open:i}),r.current&&(r.current.setMap(null),r.current=null);let n=`popup-${Date.now()}`,s=document.createElement("div"),l=m.filter(e=>o.access&e.bit).map(e=>e.label);s.innerHTML=`
10          <div id="${n}" style="pointer-events:auto;position:relative;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px 16px;width:312px;box-sizing:border-box;box-shadow:0 4px 16px rgba(0,0,0,0.15);font-size:13px;line-height:1.5;word-break:keep-all;overflow-wrap:break-word;margin-bottom:12px;">
11            <button data-close="${n}" style="position:absolute;top:4px;right:4px;background:none;border:none;cursor:pointer;font-size:16px;color:#9ca3af;line-height:1;padding:6px 8px;">\xd7</button>
12            <div style="display:flex;align-items:center;gap:6px;padding-right:28px;">
13              <span style="flex-shrink:0;line-height:1;">${x[o.group]??"\uD83D\uDCCD"}</span>
14              <span style="font-weight:700;color:#1a1a1a;flex:1;min-width:0;word-break:break-all;">${g(o.name)}</span>
15              <span style="flex-shrink:0;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;${i?"background:#dcfce7;color:#15803d;":"background:#f3f4f6;color:#6b7280;"}">${i?"지금 열림":"지금 쉼"}</span>
16            </div>
17            ${o.detail?`<div style="color:#6b7280;font-size:11px;margin-top:4px;">${g(o.detail)}</div>`:""}
18            <div style="display:flex;align-items:center;gap:6px;margin-top:8px;">
19              <span style="flex-shrink:0;font-size:13px;">📍</span>
20              <span class="popup-address" style="color:#6b7280;font-size:12px;flex:1;min-width:0;word-break:break-all;">${g(o.addr)}</span>
21              <button class="popup-copy-addr" title="주소 복사" style="flex-shrink:0;background:none;border:none;cursor:pointer;padding:7px;margin:-5px;color:#9ca3af;display:flex;align-items:center;">${h}</button>
22            </div>
23            <div style="margin-top:8px;padding:7px 9px;background:${i?"#f0f9ff":"#f9fafb"};border-radius:8px;font-size:12px;">
24              <div style="color:#0369a1;font-weight:700;">오늘 ${g(v(o,z.current))}</div>
25              <div style="color:#9ca3af;font-size:11px;margin-top:3px;">
26                평일 ${o.wkdy?w(o.wkdy)?"24시간":`${b(o.wkdy[0])}~${b(o.wkdy[1])}`:"자료 없음"}
27                \xb7 공휴일 ${o.hldy?w(o.hldy)?"24시간":`${b(o.hldy[0])}~${b(o.hldy[1])}`:"쉼"}
28              </div>
29            </div>
30            ${o.note?`<div style="margin-top:6px;padding:6px 8px;background:#fffbeb;border-radius:8px;color:#a16207;font-size:11px;line-height:1.45;">⚠ ${g(o.note)}</div>`:""}
31            ${l.length?`<div style="color:#6b7280;font-size:11px;margin-top:7px;">${g(l.join(" \xb7 "))}</div>`:""}
32            <div style="color:#9ca3af;font-size:11px;margin-top:6px;">${g([o.place,o.agency].filter(Boolean).join(" \xb7 "))}</div>
33          </div>`;let d=new e.maps.CustomOverlay({position:c,content:s.firstElementChild,yAnchor:1.15,xAnchor:.5,zIndex:9999,clickable:!0});d.setMap(t.current),r.current=d,requestAnimationFrame(()=>{let r=t.current;if(!r)return;let a=document.getElementById(n)?.getBoundingClientRect().height??0,s=r.getProjection(),l=s.containerPointFromCoords(c),o=s.coordsFromContainerPoint(new e.maps.Point(l.x,l.y-(1.15*a-17)
33/2));r.panTo(o)})}),$.current.set(d,u),u})),i.forEach(e=>{let{key:t}=e;return C.current.add(t)}),o+400<U.length&&S.current.push((0,c.I)(()=>l(o+400)))};l(0)}};return e.maps.event.addListener(t.current,"idle",l),e.maps.event.addListener(t.current,"click",()=>{r.current&&(r.current.setMap(null),r.current=null)}),M.current.length>0&&l(),()=>{e.maps.event.removeListener(t.current,"idle",l),S.current.forEach(e=>e()),S.current=[]}},[Z]),(0,l.useEffect)(()=>{M.current=K,L.current=I,E.current=R,Z&&t.current&&j.current&&0!==K.length&&window.kakao.maps.event.trigger(t.current,"idle")},[K,I,R,U,Z]);let eo=(0,l.useCallback)(e=>{B(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),(0,a.sx)("kiosk_filter_toggled",{group:e,enabled:!r.has(e)}),r})},[]),ei=(0,l.useCallback)(()=>{if(!T)return void et('먼저 "내 위치 찾기" 버튼을 눌러주세요.');r.current&&(r.current.setMap(null),r.current=null),et("");let e=z.current,n=new Set,s=K.filter(t=>!I.has(t.group||"기타")&&(!R||y(t,e))).map(e=>({...e,distance:(0,d.q)(T.lat,T.lng,e.lat,e.lng)})).filter(e=>!isNaN(e.distance)).sort((e,t)=>e.distance-t.distance).filter(e=>{let t=`${e.lat},${e.lng}`,r=`${e.name}|${e.sigungu}`;return!(n.has(t)||n.has(r))&&(n.add(t),n.add(r),!0)}).slice(0,3);if(A(s),(0,a.sx)("kiosk_find_nearest",{count:s.length,open_only:R}),!t.current||0===s.length)return;let{kakao:l}=window;k.current.forEach(e=>e.setMap(null)),k.current=[];let o=[{bg:"#FFD700",border:"#FFA500",shadow:"rgba(255,215,0,0.6)"},{bg:"#C0C0C0",border:"#A0A0A0",shadow:"rgba(192,192,192,0.6)"},{bg:"#CD7F32",border:"#A0522D",shadow:"rgba(205,127,50,0.6)"}];s.forEach((e,r)=>{let{bg:n,border:a,shadow:s}=o[r],i=new l.maps.CustomOverlay({position:new l.maps.LatLng(e.lat,e.lng),content:`
34          <div style="
35            width: 28px; height: 28px;
36            background: ${n};
37            color: white; font-weight: 900; font-size: 13px;
38            border-radius: 50%;
39            display: flex; align-items: center; justify-content: center;
40            border: 2.5px solid ${a};
41            box-shadow: 0 2px 8px ${s};
42            text-shadow: 0 1px 2px rgba(0,0,0,0.3);
43          ">${r+1}</div>
44        `,yAnchor:1.8,xAnchor:.5,zIndex:999});i.setMap(t.current),k.current.push(i)});let i=new l.maps.LatLngBounds;i.extend(new l.maps.LatLng(T.lat,T.lng)),s.forEach(e=>i.extend(new l.maps.LatLng(e.lat,e.lng))),t.current.setBounds(i,70,70,90,70)},[T,K,I,R]),ed=(0,l.useMemo)(()=>K.filter(e=>!I.has(e.group||"기타")&&(!R||!U||y(e,U))).length,[K,I,R,U]);return(0,n.jsxs)("div",{className:"space-y-4",children:[V&&(0,n.jsxs)("div",{className:"bg-red-50 border border-red-200 text-red-700 rounded-xl px-4 py-3 text-sm whitespace-pre-line",children:[(0,n.jsx)(o.id,{size:14,className:"inline mr-1 align-top shrink-0"})," ",V]}),ee&&(0,n.jsxs)("p",{className:"text-sm text-red-700 bg-red-50 border border-red-200 rounded-xl px-3 py-2",children:[(0,n.jsx)(o.id,{size:14,className:"inline mr-1"})," ",ee]}),(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 rounded-xl border border-warm-100 bg-warm-50 px-4 py-2.5 text-[13px] text-warm-600",children:[(0,n.jsxs)("span",{className:"font-semibold text-warm-800",children:[U?function(e){let t=e.getHours();return`${e.getMonth()+1}월 ${e.getDate()}일 (${["일","월","화","수","목","금","토"][e.getDay()]}) ${t<12?"오전":"오후"} ${t%12||12}:${String(e.getMinutes()).padStart(2,"0")}`}(U):"지금"," 기준"]}),U&&(0,n.jsxs)("span",{className:"text-warm-400",children:["지금 열린 곳 ",(0,n.jsx)("b",{className:"font-semibold text-sky-700",children:es.toLocaleString()}),"곳"]}),W?.ymd&&(0,n.jsxs)("span",{className:"text-warm-400",children:["\xb7 자료 ",W.ymd]})]}),(0,n.jsxs)("p",{className:"rounded-xl border border-warm-200 bg-warm-50 px-3 py-2 text-[13px] leading-relaxed text-warm-500",children:[(0,n.jsxs)("b",{className:"font-semibold text-warm-700",children:[(W?.total??0).toLocaleString(),"대"]}),"를 표시합니다. 운영시간표로 판정하므로 ",(0,n.jsx)("b",{className:"font-semibold text-warm-700",children:"종이 소진\xb7고장"}),"은 알 수 없습니다. 공휴일 시간표가 없는 곳은 주말\xb7공휴일에 ",(0,n.jsx)("b",{className:"font-semibold text-warm-700",children:"쉼"}),"으로 봅니다."]}),(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,n.jsxs)("button",{onClick:()=>{P(e=>!e),(0,a.sx)("kiosk_open_only_toggled",{on:!R})},"aria-pressed":R,className:["inline-flex items-center gap-1.5 rounded-full border px-3.5 py-1.5 text-xs font-semibold transition-all",R?"border-emerald-300 bg-emerald-50 text-emerald-700 shadow-sm":"border-warm-200 bg-white text-warm-500 hover:bg-warm-50"].join(" "),children:[(0,n.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${R?"bg-emerald-500":"bg-warm-300"}`}),"지금 열린 곳만"]}),(0,n.jsx)("span",{className:"text-xs text-warm-400",children:R?"열린 곳만 지도에 남습니다":"쉬는 곳은 회색으로 나옵니다"})]}),ea.length>0&&(0,n.jsx)("div",{className:"flex flex-wrap items-center gap-1.5",children:ea.map(e=>{let[t,r]=e;return(0,n.jsxs)("button",{onClick:()=>eo(t),"aria-pressed":!I.has(t),className:["inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border px-3 py-1.5 text-xs font-medium transition-all",I.has(t)?"border-warm-200 bg-white text-warm-400 opacity-60 hover:opacity-90":"border-sky-200 bg-sky-50 text-sky-700 shadow-sm"].join(" "),children:[(0,n.jsx)("span",{"aria-hidden":"true",children:x[t]??"\uD83D\uDCCD"}),t||"기타",(0,n.jsx)("span",{className:I.has(t)?"text-warm-300":"text-sky-700",children:r.toLocaleStr
44ing()})]},t)})}),(0,n.jsxs)("div",{className:["overflow-hidden border border-warm-200 shadow-sm transition-all duration-300",er?"fixed inset-0 z-[10001] rounded-none border-0":"relative rounded-2xl"].join(" "),children:[!H&&!q&&(0,n.jsxs)("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center bg-warm-50/90 backdrop-blur-sm",children:[(0,n.jsx)("span",{className:"inline-block w-8 h-8 border-4 border-sky-500 border-t-transparent rounded-full animate-spin mb-3"}),(0,n.jsx)("p",{className:"text-sm text-warm-500",children:"지도 SDK 초기화 중…"})]}),H&&Y&&(0,n.jsxs)("div",{className:"absolute top-3 right-16 lg:right-3 z-10 flex items-center gap-2 bg-white/90 backdrop-blur-sm text-xs text-warm-600 font-medium px-3 py-1.5 rounded-full shadow-sm border border-warm-100",children:[(0,n.jsx)("span",{className:"inline-block w-3 h-3 border-2 border-sky-500 border-t-transparent rounded-full animate-spin"}),"발급기 자료 불러오는 중…"]}),(0,n.jsx)("div",{ref:e,className:er?"w-full h-screen":"w-full h-[364px] sm:h-[494px] md:h-[650px]"}),(0,n.jsxs)("button",{onClick:()=>{(0,a.sx)("kiosk_fullscreen_toggled",{fullscreen:!er}),en(!er)},className:"absolute top-3 lg:top-auto lg:bottom-3 right-3 z-20 h-11 inline-flex items-center gap-1.5 px-3 rounded-full bg-white/90 backdrop-blur-sm border border-warm-200 shadow-md text-warm-600 hover:bg-warm-50 transition",title:er?"전체화면 종료":"지도 크게 보기",children:[er?(0,n.jsx)(o.gR,{}):(0,n.jsx)(o._X,{}),(0,n.jsx)("span",{className:"text-xs font-medium whitespace-nowrap",children:er?"작게":"크게 보기"})]}),(0,n.jsxs)("div",{className:"absolute top-3 left-3 z-10 flex flex-col items-start gap-2",children:[(0,n.jsxs)("button",{onClick:el,disabled:J||!Z,className:"h-11 w-11 md:w-fit md:min-w-0 md:pl-3 md:pr-4 inline-flex items-center justify-center md:justify-start gap-2 bg-white/90 backdrop-blur-sm border border-warm-200 text-blue-600 hover:bg-blue-50 disabled:opacity-50 rounded-full shadow-md transition-all",title:"내 위치 찾기",children:[J?(0,n.jsx)("span",{className:"w-5 h-5 flex-shrink-0 border-2 border-blue-600 border-t-transparent rounded-full animate-spin"}):(0,n.jsx)(o.o8,{}),(0,n.jsx)("span",{className:"hidden md:inline text-left text-sm font-medium whitespace-nowrap",children:"내 위치 찾기"})]}),(0,n.jsxs)("button",{onClick:ei,disabled:!T||!Z,className:"h-11 w-11 md:w-fit md:min-w-0 md:pl-3 md:pr-4 inline-flex items-center justify-center md:justify-start gap-2 bg-sky-600/90 backdrop-blur-sm border border-sky-500 text-white hover:bg-sky-600 disabled:opacity-50 disabled:cursor-not-allowed rounded-full shadow-md transition-all",title:"가장 가까운 발급기 찾기",children:[(0,n.jsx)(N,{}),(0,n.jsx)("span",{className:"hidden md:inline text-left text-sm font-medium whitespace-nowrap",children:"가장 가까운 발급기 찾기"})]})]})]}),(0,n.jsxs)("div",{className:"flex flex-wrap gap-4 text-xs text-warm-500 bg-warm-50 rounded-xl px-4 py-2.5",children:[(0,n.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("img",{src:"/kiosk/icon/kiosk.svg",width:16,height:16,className:"w-4 h-4",alt:"지금 열린 발급기 마커"}),"지금 열림"]}),(0,n.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("img",{src:"/kiosk/icon/kiosk-closed.svg",width:14,height:14,className:"w-3.5 h-3.5",alt:"지금 쉬는 발급기 마커"}),"지금 쉼"]}),(0,n.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("span",{className:"w-3 h-3 rounded-full bg-blue-500 border-2 border-white shadow-sm inline-block"}),"내 위치"]}),(0,n.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("span",{className:"w-4 h-4 rounded-full bg-amber-400 text-white text-[9px] font-bold flex items-center justify-center inline-flex",children:"1"}),"가장 가까운 3곳"]}),(I.size>0||R)&&(0,n.jsxs)("span",{className:"text-warm-400",children:["걸러보기 적용 중 \xb7 ",ed.toLocaleString(),"대 표시"]})]}),D.length>0&&(0,n.jsxs)("div",{className:"bg-white border border-warm-200 rounded-2xl overflow-hidden shadow-sm",children:[(0,n.jsxs)("div",{className:"px-4 py-3 border-b border-warm-100 flex items-center gap-2",children:[(0,n.jsx)("span",{className:"text-sm font-semibold text-warm-800",children:"가장 가까운 발급기 3곳"}),(0,n.jsx)("span",{className:"text-xs text-warm-400",children:"직선 거리 기준"})]}),(0,n.jsx)("ul",{className:"divide-y divide-warm-100",children:D.map((e,r)=>{let s=!!U&&y(e,U);return(0,n.jsxs)("li",{className:"flex items-start gap-3 px-4 py-3 hover:bg-warm-50 transition-colors cursor-default",onClick:()=>
44{if((0,a.sx)("kiosk_list_item_clicked",{rank:r+1}),!t.current)return;let{kakao:n}=window;t.current.setCenter(new n.maps.LatLng(e.lat,e.lng)),t.current.setLevel(3)},children:[(0,n.jsx)("span",{className:`flex-shrink-0 w-7 h-7 rounded-full flex items-center justify-center text-xs font-bold text-white shadow-sm
45                    ${0===r?"bg-amber-400":1===r?"bg-slate-400":"bg-orange-300"}`,children:r+1}),(0,n.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,n.jsxs)("p",{className:"text-sm font-medium text-warm-900 truncate",children:[e.name,(0,n.jsx)("span",{className:`ml-1.5 rounded-full px-1.5 py-0.5 text-[10px] font-bold align-middle
46                        ${s?"bg-emerald-50 text-emerald-700":"bg-warm-100 text-warm-500"}`,children:s?"열림":"쉼"})]}),(0,n.jsx)("p",{className:"text-xs text-warm-500 mt-0.5 line-clamp-2",children:[e.detail&&!e.addr.includes(e.detail)?e.detail:"",e.addr].filter(Boolean).join(" \xb7 ")}),(0,n.jsxs)("p",{className:"text-xs text-warm-400 mt-0.5 truncate",children:["오늘 ",v(e,U??new Date)]})]}),(0,n.jsx)("span",{className:"flex-shrink-0 text-sm font-semibold text-sky-700",children:(0,d.B)(e.distance)})]},`${f(e)}-${r}`)})}),(0,n.jsx)("p",{className:"text-xs text-warm-400 text-center px-4 py-2 bg-warm-50 border-t border-warm-100",children:"목록을 클릭하면 해당 위치로 이동합니다"})]})]})}function N(){return(0,n.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"5",y:"2",width:"14",height:"16",rx:"2"}),(0,n.jsx)("rect",{x:"8",y:"5",width:"8",height:"5",rx:"1"}),(0,n.jsx)("line",{x1:"9",y1:"13",x2:"15",y2:"13"}),(0,n.jsx)("path",{d:"M8 18v3h8v-3"})]})}},86612:(e,t,r)=>{async function n(e){if("function"==typeof DecompressionStream)return new Response(new Blob([e]).stream().pipeThrough(new DecompressionStream("gzip"))).arrayBuffer();let{gunzipSync:t}=await r.e(5363).then(r.bind(r,35363)),n=t(new Uint8Array(e));return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}async function a(e,t){let r=await fetch(e);if(!r.ok)throw Error(`${t}: HTTP ${r.status}`);return n(await r.arrayBuffer())}r.d(t,{b:()=>a})},97926:(e,t,r)=>{r.d(t,{I:()=>n});function n(e){if("function"==typeof requestIdleCallback){let t=requestIdleCallback(e);return()=>cancelIdleCallback(t)}let t=setTimeout(e,0);return()=>clearTimeout(t)}}}]);

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.