1import{s as G,_ as wt,r as y,D as Ne,o as E,c as A,b as d,t as x,l as xe,m as Pe,E as Kt,e as qe,v as mt,h as W,G as je,x as Wt,C as Ue,y as Gt,K as ve,V as Jt,J as Zt,n as K,u as ue,F as rt,f as lt,j as ct,d as Qt,a as dt,g as Yt,T as Xt,U as en,i as tn,N as _e}from"./index-BNZs4-Rt.js";import{d as nn,a as an,b as ut,c as sn,e as ft,f as on,g as pt,h as rn}from"./dots-horizontal-circle-BsmDJU3z.js";const ln="donggurangpay",cn=1,R="stores",X="metadata";let U=null;async function B(){return U||new Promise((a,s)=>{const o=indexedDB.open(ln,cn);o.onerror=()=>s(o.error),o.onsuccess=()=>{U=o.result,a(U)},o.onupgradeneeded=i=>{const r=i.target.result;r.objectStoreNames.contains(R)||r.createObjectStore(R,{keyPath:"chunkId"}).createIndex("hash","hash",{unique:!1}),r.objectStoreNames.contains(X)||r.createObjectStore(X,{keyPath:"key"})}})}async function $e(a,s,o){return await B(),new Promise((i,r)=>{const p=U.transaction(R,"readwrite").objectStore(R).put({chunkId:a,data:s,hash:o,savedAt:new Date().toISOString()});p.onsuccess=()=>i(),p.onerror=()=>r(p.error)})}async function dn(a){return await B(),new Promise((s,o)=>{const c=U.transaction(R,"readonly").objectStore(R).get(a);c.onsuccess=()=>s(c.result),c.onerror=()=>o(c.error)})}async function kt(){return await B(),new Promise((a,s)=>{const r=U.transaction(R,"readonly").objectStore(R).getAll();r.onsuccess=()=>a(r.result),r.onerror=()=>s(r.error)})}async function V(a,s){return await B(),new Promise((o,i)=>{const h=U.transaction(X,"readwrite").objectStore(X).put({key:a,value:s,savedAt:new Date().toISOString()});h.onsuccess=()=>o(),h.onerror=()=>i(h.error)})}async function vt(a){return await B(),new Promise((s,o)=>{const c=U.transaction(X,"readonly").objectStore(X).get(a);c.onsuccess=()=>s(c.result?.value),c.onerror=()=>o(c.error)})}async function un(a){return await B(),new Promise((s,o)=>{const r=U.transaction(R,"readwrite").objectStore(R).delete(a);r.onsuccess=()=>s(),r.onerror=()=>o(r.error)})}async function bt(a,s=[]){await B();const o=new Set(s.map(c=>`${a}_${c}`)),i=await kt(),r=`${a}_`;for(const c of i)c.chunkId.startsWith(r)&&!o.has(c.chunkId)&&await un(c.chunkId)}async function xa(){return await B(),new Promise((a,s)=>{const o=U.transaction([R,X],"readwrite");o.objectStore(R).clear(),o.objectStore(X).clear(),o.oncomplete=()=>a(),o.onerror=()=>s(o.error)})}async function Me(){return await B(),new Promise((a,s)=>{const r=U.transaction(R,"readonly").objectStore(R).getAll();r.onsuccess=()=>{const c={};r.result.forEach(h=>{c[h.chunkId]=h.hash}),a(c)},r.onerror=()=>s(r.error)})}const fn="https://runcksytemonsqxkqpfq.supabase.co",se=500;async function Se(a,s,o){const{data:i,error:r}=await G.functions.invoke("upload-chunk",{body:{action:"upload",bucketName:a,filePath:s,contentType:"application/json",data:o}});if(r)throw r;if(i?.error)throw new Error(i.error);return i}async function pn(a,s){const o=(s||[]).filter(Boolean);if(!o.length)return{removed:0};const{data:i,error:r}=await G.functions.invoke("upload-chunk",{body:{action:"delete",bucketName:a,filePaths:o}});if(r)throw r;if(i?.error)throw new Error(i.error);return i}function yt(a){const s=JSON.stringify(a);let o=0;for(let i=0;i<s.length;i++){const r=s.charCodeAt(i);o=(o<<5)-o+r,o=o&o}return Math.abs(o).toString(16).slice(0,8)}async function ht(a){const s=await fetch(`${a}/manifest.json?t=${Date.now()}`);if(!s.ok)throw new Error("Manifest ë¡ë ì¤í¨");const o=s.headers.get("content-type");if(o&&o.includes("text/html"))throw new Error("Manifest íì¼ì´ ììµëë¤ (HTML ë°íë¨).");return s.json()}async function He(a){const{data:s,error:o}=await G.storage.from(a).download("manifest.json");if(o||!s)throw new Error("Manifest ë¡ë ì¤í¨");const i=await s.text();try{return JSON.parse(i)}catch{throw new Error("Manifest íì¼ì´ ì¬ë°ë¥¸ JSON íìì´ ìëëë¤.")}}async function vn(a,s){const{data:o,error:i}=await G.storage.from(a).download(s);if(i||!o)throw new Error(`ì²í¬ ë¡ë ì¤í¨: ${s}`);const r=await o.text();try{return JSON.parse(r)}catch{throw new Error(`ì²í¬ JSON íì± ì¤í¨: ${s}`)}}async function Ve(a,s){const o=[...s?.chunks||[]].sort((c,h)=>c.id.localeCompare(h.id)),i=o.map(c=>c.id);await bt(a,i);const r=[];for(const c of o){const h=`${a}_${c.id}`,p=await dn(h);Array.isArray(p?.data)&&r.push(...p.data)}return r}async function Sa(a="29110"){await B();const s=`${fn}/storage/v1/object/public/${a}`,o=`/${a}`;let i,r="public",c=s;try{i=await ht(s)}catch{try{i=await He(a),r="storage-sdk"}catch{i=await ht(o),r="local",c=o}}const h=[...i.chunks].sort((f,b)=>f.id.localeCompare(b.id)),p=await Me(),l=[],u=[];for(const f of h){const b=`${a}_${f.id}`,M=p[b];!M||M!==f.hash?l.push(f):u.push(f.id)}if(l.length>0){const f=l.map(async b=>{let M;if(r==="storage-sdk")M=await vn(a,b.filename);else{const C=await fetch(`${c}/${b.filename}?t=${Date.now()}`);if(!C.ok)throw new Error(`ì²í¬ ë¡ë ì¤í¨: ${b.filename}`);M=await C.json()}const m=`${a}_${b.id}`;return await $e(m,M,b.hash),{id:b.id,data:M}});await Promise.all(f),await V(`${a}_manifestVersion`,i.version),await V(`${a}_manifestUpdatedAt`,i.updatedAt)}return Ve(a,i)}async function $a(a,s=()=>{},o="29110"){s(0,"ì²í¬ ë¶í ì¤...");const i=[];for(let l=0;l<a.length;l+=se){const u=a.slice(l,l+se),f=`chunk_${String(Math.floor(l/se)).padStart(3,"0")}`;i.push({id:f,filename:`${f}.json`,data:u,hash:yt(u)})}s(10,"기존 manifest íì¸ ì¤...");let r=null;try{r=await He(o)}catch{}const c=[];if(r){for(const u of i){const f=r.chunks.find(b=>b.id===u.id);(!f||f.hash!==u.hash)&&c.push(u)}const l=r.chunks.filter(u=>!i.find(f=>f.id===u.id));for(const u of l)try{await pn(o,[u.filename])}catch{}}else c.push(...i);for(let l=0;l<c.length;l++){const u=c[l],f=20+Math.floor(l/c.length*60);
1s(f,`ì²í¬ ì
ë¡ë ì¤... (${l+1}/${c.length})`),await Se(o,u.filename,u.data)}s(85,"manifest ì
ë°ì´í¸ ì¤...");const h=new Date().toISOString();i.sort((l,u)=>l.id.localeCompare(u.id));const p={version:r?r.version+1:1,createdAt:r?.createdAt||h,updatedAt:h,totalRecords:a.length,chunkSize:se,totalChunks:i.length,chunks:i.map(l=>({id:l.id,filename:l.filename,hash:l.hash,recordCount:l.data.length,updatedAt:c.find(u=>u.id===l.id)?h:r?.chunks.find(u=>u.id===l.id)?.updatedAt||h}))};return await Se(o,"manifest.json",p),s(100,"ì ì¥ ìë£!"),{version:p.version,totalRecords:a.length,chunksUpdated:c.length,totalChunks:i.length}}async function Ma(a,s,o="29110"){const i=Math.floor(s/se),r=`chunk_${String(i).padStart(3,"0")}`,c=i*se,h=Math.min(c+se,a.length),p=a.slice(c,h),l=yt(p);await Se(o,`${r}.json`,p);const u=await He(o),f=new Date().toISOString(),b=u.chunks.find(M=>M.id===r);return b&&(b.hash=l,b.recordCount=p.length,b.updatedAt=f),u.version+=1,u.updatedAt=f,u.totalRecords=a.length,await Se(o,"manifest.json",u),{chunkId:r,hash:l}}const _t="https://runcksytemonsqxkqpfq.supabase.co";async function hn(a){if(!a)return!1;try{const{data:s,error:o}=await G.storage.from(String(a)).list("",{limit:10,search:"manifest.json"});return o?(console.warn("ìë² ë°ì´í° íì¸ ì¤í¨:",o.message),!1):Array.isArray(s)&&s.some(i=>i.name==="manifest.json")}catch(s){return console.error("ìë² ë°ì´í° íì¸ ì¤ë¥:",s),!1}}async function fe(a){const s=await fetch(`${a}/manifest.json?t=${Date.now()}`);if(!s.ok)throw new Error("Manifest ë¡ë ì¤í¨");return s.json()}async function ze(a,s){const o=await fetch(`${a}/${s}`);if(!o.ok)throw new Error(`ì²í¬ ë¡ë ì¤í¨: ${s}`);return o.json()}async function gn(a=()=>{},s="29110"){await B();const o=`${_t}/storage/v1/object/public/${s}`,i=`/${s}`;console.log(`ð ë°ì´í° ë¡ë ì§ì: ${s}`);let r=null,c=o;try{r=await fe(o),console.log("â
Storage ì¬ì©")}catch(l){console.warn("â ï¸ Storage ì ê·¼ ì¤í¨, ë¡ì»¬ í´ë ì¬ì©:",l.message);try{r=await fe(i),c=i,console.log("â
ë¡ì»¬ public í´ë ì¬ì©")}catch(u){throw console.error("â Manifest ë¡ë ì¤í¨:",u.message),u}}const h=await Me(),p=[];for(const l of r.chunks){const u=`${s}_${l.id}`,f=h[u];(!f||f!==l.hash)&&p.push({...l,uniqueChunkId:u})}if(p.length===0){const l=await Ve(s,r);if(l.length>0||r.totalRecords===0)return console.log(`â¡ manifest ê¸°ì¤ ìºì ì¬ì© (${l.length}ê±´)`),a(100,100,"ìºì ì¬ì©"),wn(s,o,i).catch(u=>{console.warn("백그ë¼ì´ë ì
ë°ì´í¸ íì¸ ì¤í¨:",u)}
1),await V("lastRegion",s),l}a(5,100,"ìë² íì¸ ì¤...");try{const l=p.length>0?p:r.chunks.map(m=>({...m,uniqueChunkId:`${s}_${m.id}`}));console.log(`ð ë¤ì´ë¡ë íì ì²í¬: ${l.length}ê°`);let u=0;const f=l.length;a(10,100,"ë¤ì´ë¡ë ì¤ë¹ ì¤...");const b=l.map(async m=>{const C=await ze(c,m.filename);await $e(m.uniqueChunkId,C,m.hash),u++;const I=10+Math.round(u/f*80);a(I,100,`ë°ì´í° ë¤ì´ë¡ë ì¤... ${Math.round(u/f*100)}%`)});await Promise.all(b),await V(`${s}_manifestVersion`,r.version),await V(`${s}_manifestUpdatedAt`,r.updatedAt),a(95,100,"ë°ì´í° ë³í© ì¤...");const M=await Ve(s,r);return a(100,100,"ë¡ë© ìë£!"),console.log(`ð ì´ ${M.length}ê° ê°ë§¹ì ì¤ì ìë£`),await V("lastRegion",s),M}catch(l){throw console.error("ë°ì´í° ë¡ë ì¤ë¥:",l),l}}async function wn(a,s,o){try{let i,r=s;try{i=await fe(s)}catch{i=await fe(o),r=o}const c=await Me(),h=[];for(const p of i.chunks){const l=`${a}_${p.id}`,u=c[l];(!u||u!==p.hash)&&h.push({...p,uniqueChunkId:l})}if(h.length>0){console.log(`ð 백그ë¼ì´ë ì
ë°ì´í¸: ${h.length}ê° ì²í¬`);for(const p of h){const l=await ze(r,p.filename);await $e(p.uniqueChunkId,l,p.hash)}await bt(a,i.chunks.map(p=>p.id)),await V(`${a}_manifestVersion`,i.version),await V(`${a}_manifestUpdatedAt`,i.updatedAt),console.log("â
백그ë¼ì´ë ì
ë°ì´í¸ ìë£ (ë¤ì ë¡ë ì ë°ì)")}else console.log("â
ë°ì´í°ê° ìµì ìíì
ëë¤")}catch(i){console.warn("백그ë¼ì´ë ì
ë°ì´í¸ ì¤í¨:",i)}}async function mn(){await B();const a=await vt("manifestVersion"),s=await vt("manifestUpdatedAt"),o=await kt();let i=0;return o.forEach(r=>{i+=r.data.length}),{hasCache:o.length>0,manifestVersion:a,manifestUpdatedAt:s,chunksCount:o.length,totalRecords:i}}async function kn(a="29110"){await B();const s=`${_t}/storage/v1/object/public/${a}`,o=`/${a}`;try{let i,r=s;try{i=await fe(s)}catch{i=await fe(o),r=o}const c=await Me(),h=[];for(const p of i.chunks){const l=`${a}_${p.id}`,u=c[l];(!u||u!==p.hash)&&h.push({...p,uniqueChunkId:l})}if(h.length>0){console.log(`ð ìë ì
ë°ì´í¸: ${h.length}ê° ì²í¬`);for(const p of h){const l=await ze(r,p.filename);await $e(p.uniqueChunkId,l,p.hash)}return await V(`${a}_manifestVersion`,i.version),await V(`${a}_manifestUpdatedAt`,i.updatedAt),console.log("â
ìë ì
ë°ì´í¸ ìë£"),{updated:!0,updatedChunks:h.length}}else return console.log("â
ë°ì´í°ê° ìµì ìíì
ëë¤"),{updated:!1,updatedChunks:0}}catch(i){throw console.error("ì
ë°ì´í¸ íì¸ ì¤í¨:",i),i}}const gt=[{category:"ìì·ìí",description:"ìë¹, ì¹´í, ììì¬ í매",items:["ì¤ë¥","ìììì","ìí¼ ë§ì¼","ëì¶ìì°í","ì¼ë°íì","ì ì¡ ì ","기íìë£ìí","ì¼ìíì§","í¸ ì ì ","ì ê³¼ì ","ì¤êµìì","주ë¥í매ì ","기íê±´ê°ì","미곡ì","íì¼ ì í","ì¸ì¼ ì í","ì¹µí
ì¼ë°","주ì "]},{category:"ë³ì·ì½êµÂ·ìë£",description:"ë³ìì, ì½êµ ë° ê±´ê° ê´ë ¨ ìë¹ì¤",items:["ìì","íìì","ë물ë³ì","ì½êµ","ì¹ê³¼ìì","ìë£ ì©í","íì½ë°©","íë°©ë³ì","ìë§/ì¤í¬ì¸ ë§ì¬ì§","ë³ì","기íìë£ê¸°ê´ë°ê¸°íìë£ê¸°ê¸°","ì ì½íì¬"]},{category:"ìë¥Â·ì¡í·미ì©",description:"ì·, ì ë°, ì¡ì¸ì리 ë° ë¯¸ì©",items:["ìê²½","ì í ì ","ì ì¥","í¼ë¶ë¯¸ì©ì¤","ë§ì¶¤ë³µ ì ","ë´ìí매ì ","í ì¥ í","미 ì© ì","ì·ê° ì§ë¬¼","ê· ê¸ ì","ê° ë°©","ì ë°","기íìë¥","ì ë³ì¡íì리","ì
ì¸ ì¬ë¦¬","ë¯¸ì© ì¬ë£","ì¬ì°ë","ì´ ì© ì","ì í ì ","기íì§ë¬¼","ë¨ì²´ë³µ","ìºì¥¬ì¼ìë¥","ìëìë¥","ì ê³","민ìê³µìí","기ë
í ì "]},{category:"êµì¡Â·ë¬¸í·취미",description:"íì, ìì , 문구 ë° ë¬¸í ìí",items:["ìì²´ë¥íì","ë³´ìµíì","ì¸êµì´íì","ì¼ë° ìì ","ì 문 ìì ","기íìì 문구","ë¬¸êµ¬ì© í","문í취미기í","ìë°,ìì물","í°ì¼","íë°©í구ì ","ì
기 ì ","ì 구 ì ","í ë","í¼ìë
¸ë리ì ","기ë¥íì","ë
ìì¤","ì»´í¨í°íì","íì(íìì íí)","ì¶íì¸ì물"]},{category:"ë ì ·ì¤í¬ì¸ ",description:"ì´ë ìì¤ ë° ë ì íë",items:["ì¤í¬ì¸ ë ì ¸ì©í","ë¹êµ¬ì¥","기íë ì ¸ì
","í¬ì¤ í¬ë½","골íì°ìµì¥","ê´ê´ì¬í","ë
¸ëë°©","골í ì©í","ë ì ¸ì©íì리","ì¤í¬ë¦°ê³¨í","ë ì ¸ì
ì(íìì íí)","ë³¼ ë§ ì¥","ì ì ì¥","기ííìì ííì
ì4","기ííìì ííì
ì1"]},{category:"ê°ì ·ê°êµ¬Â·ì¸í
리ì´",description:"ì§ì ì´ë¦¼, ê°ì ì í, ê±´ì¶ ìì¬",items:["ê°ì ì í","주방ì©ì기","주방 ì©êµ¬","ì¸í
리ì´","í ì¸ í¸","목ì¬,ìì¬,ì² ë¬¼","ì¡°ëª
기구","ì 리","기íê±´ì¶ìì¬","기íê°êµ¬","ëì´ ê¸°ê¸°","기íì 기ì í","ë³´ì¼ë¬ííì·ì","ì¼ë° ê°êµ¬","ì ì 기","침구ììì ","ì¹´íí¸,커í
,ì²ë§,ì§ë¬¼","íµì 기기","ì»´ í¨ í°","ìíí¸ì¨ì´","ì¬ë¬´íµì 기기ì리","ê¸°ê³ ê³µêµ¬","ê±´ì¶ìì
í","기íì¬ë¬´ì©í"]},{category:"ìë차·주ì ",description:"ì°¨ë ì ì§ ë³´ì ë° ì°ë£",
1items:["ì¸ ì°¨ ì¥","ìëì°¨ì ë¹","L P G","ìëì°¨ë¶í","ìëì°¨ìí¸/íì´ì´","ì ë¥ í매","주 ì°¨ ì¥","íëì ì ì¤ì¼ë±
í¬","SKê°ì¤ì¶©ì ì","ë í¸ ì¹´","ì´ë¥ì°¨í매","ì¹´ì¸í
리ì´"]},{category:"ìíìë¹ì¤Â·ê¸°í",description:"ìí í¸ì ìë¹ì¤ ë° ê¸°í ì 문ì ",items:["í¼ë¡ìë¹ì¤","ì ì ë물","ì¬ë¬´ìë¹ì¤","ì¢
í©ì©ì","ì¬ì§ê´","기íì¡í","기íëì¸ìë¹ì¤","ì¸íì","기íì 문ì ","ë¹ë£/ëì½/ì¬ë£/ì¢
ì","ë¶ëì°ì¤ê°/ìë","ë²ë¥ íê³ìë¹ì¤(ê°ì¸)","ê°ì ì©íì리","기íì íµì
","기íì©ììë¹ì¤","ì° ì ì ","기íì리ìë¹ì¤","í ì","기íìë°ì
"]}],bn={class:"modal-body"},yn={class:"store-info"},_n={class:"store-address"},xn={class:"form-group"},Sn={class:"form-group"},$n={class:"modal-footer"},Mn=["disabled"],Cn={__name:"ReportModal",props:{isOpen:Boolean,storeData:{type:Object,default:()=>({})}},emits:["close","submitted"],setup(a,{emit:s}){const{showToast:o}=Wt(),i=a,r=s,c=y({report_type:"",description:"",reporter_email:""}),h=y(!1);Ne(()=>i.isOpen,u=>{u&&(c.value={report_type:"",description:"",reporter_email:""})});const p=()=>{r("close")},l=async()=>{h.value=!0;try{const u=await je(),{data:f,error:b}=await G.from("reports").insert([{store_name:i.storeData.ê°ë§¹ì ëª
,category:i.storeData.ì¹´í
ê³ ë¦¬,business_type:i.storeData.ê°ë§¹ì ì
ì¢
ëª
,address:i.storeData.ì¬ì
ì¥ì£¼ì,latitude:i.storeData.ìë,longitude:i.storeData.ê²½ë,report_type:c.value.report_type,description:c.value.description,reporter_email:c.value.reporter_email||null,region_code:u||i.storeData.region_code||null,status:"pending"}]).select();if(b)throw b;o("ì ì¶ëììµëë¤.","success"),r("submitted"),setTimeout(()=>{p()},1500)}catch(u){console.error("ì ë³´ ì ì¡ ì¤í¨:",u),o("ì ë³´ ì ì¡ì ì¤í¨íìµëë¤. ë¤ì ìëí´ì£¼ì¸ì.","error")}finally{h.value=!1}};return(u,f)=>a.isOpen?(E(),A("div",{key:0,class:"modal-overlay",onClick:p},[d("div",{class:"modal-container",onClick:f[2]||(f[2]=xe(()=>{},["stop"]))},[d("div",{class:"modal-header"},[f[3]||(f[3]=d("h2",null,"ð¨ ì ë³´ ì ë³´í기",-1)),d("button",{class:"close-btn",onClick:p},"Ã")]),d("div",bn,[d("div",yn,[d("h3",null,x(a.storeData.ê°ë§¹ì ëª
),1),d("p",_n,x(a.storeData.ì¬ì
ì¥ì£¼ì),1)]),d("form",{onSubmit:xe(l,["prevent"])},[d("div",xn,[f[5]||(f[5]=d("label",{for:"reportType"},"ì ë³´ ì í *",-1)),Pe(d("select",{id:"reportType","onUpdate:modelValue":f[0]||(f[0]=b=>c.value.report_type=b),required:""},[...f[4]||(f[4]=[qe('<option value="" data-v-97e23714>ì íí´ì£¼ì¸ì</option><option value="wrong_info" data-v-97e23714>ì못ë ì ë³´</option><option value="closed" data-v-97e23714>íì
</option><option value="moved" data-v-97e23714>ì´ì </option><option value="wrong_category" data-v-97e23714>ì
ì¢
ì¤ë¥</option><option value="other" data-v-97e23714>기í</option>',6)])],512),[[Kt,c.value.report_type]])]),d("div",Sn,[f[6]||(f[6]=d("label",{for:"description"},"ìì¸ ë´ì© *",-1)),Pe(d("textarea",{id:"description","onUpdate:modelValue":f[1]||(f[1]=b=>c.value.description=b),placeholder:"ì´ë¤ ì ë³´ê° ì못ëìëì§ ìì¸í ìë ¤ì£¼ì¸ì.",rows:"4",required:""},null,512),[[mt,c.value.description]])]),d("div",$n,[d("button",{type:"button",class:"btn-cancel",onClick:p}," ì·¨ì "),d("button",{type:"submit",class:"btn-submit",disabled:h.value},x(h.value?"ì ì¡ ì¤...":"ì ë³´í기"),9,Mn)])],32)])])])):W("",!0)}},En=wt(Cn,[["__scopeId","data-v-97e23714"]]),An=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?"mobile":"desktop",J=async(a,s,o={})=>{try{const i=An();console.log("[Analytics] RPC í¸ì¶ ìì:",{p_region_code:a,p_event_type:s,p_event_data:o,p_device_type:i});const{data:r,error:c}=await G.rpc("track_event",{p_region_code:a,p_event_type:s,p_event_data:o,p_device_type:i});c?console.error("[Analytics] RPC ìë¬:",c):console.log("[Analytics] RPC ì±ê³µ:",r)}catch(i){console.error("[Analytics] ì¶ì ì¤í¨:",i)}},Ln=a=>J(a,"page_view"),In=(a,s,o)=>J(a,"store_click",{store_id:s,category:o||"unknown"}),Tn=(a,s)=>J(a,"search",{keyword:s}),Rn=(a,s)=>J(a,"category_filter",{category:s}),Dn=(a,s)=>J(a,"map_nav_kakao",{store_id:s}),On=(a,s)=>J(a,"map_nav_naver",{store_id:s}),Bn=a=>J(a,"my_location"),Fn=(a,s)=>J(a,"report_click",{store_id:s}),Un=a=>J(a,"data_refresh"),Nn={class:"map-wrapper"},Pn={class:"sidebar-header"},qn={class:"filter-info"},jn={key:0},Vn={key:1},Hn={class:"filter-count"},zn={class:"category-list"},Kn=["onClick"],Wn={class:"category-icon"},Gn={class:"category-name"},Jn=["disabled"],Zn={class:"refresh-text"},Qn={key:0,class:"loading-overlay"},Yn={class:"loading-content"},Xn={class:"loading-text"},ea={class:"progress-bar-container"},ta={class:"loading-percentage"},na={key:1,class:"cluster-loading-overlay"},aa={class:"store-count-text"},sa={key:0,class:"filter-badge"},oa={class:"event-count"},ia={class:"search-bar-container"},ra={class:"search-bar"},la=["disabled"],ca={class:"location-text"},da={key:0,class:"search-results"},ua=["onMousedown"],fa={class:"result-name"},pa={class:"result-address"},va={class:"result-category"},ha={key:1,class:"search-no-results"},ga={key:0,class:"toast-overlay"},wa={class:"material-icons toast-icon"},ma=1,ka={__name:"MapView",emits:["require-data-upload"],setup(a,{emit:s}){const o={food:rn,health:pt,medical:pt,fashion:on,culture:ft,education:ft,sports:sn,living:ut,home:ut,car:an,etc:nn},i=s,r=y({lat:35.1461,lng:126.9231}),c=y(null),h=en(),p=tn(),l=y("29110"),u=Ue(()=>h.name==="Map"),f=y(!1),b=()=>{f.value=!1,i("require-data-upload")},M=()=>{ie.value=!1,f.value=!0};let m=null,C=null,I=null,oe=!1,H=new Map,Ke=0,Ce=null,Ee=!1;const We={1:5e3,2:4e3,3:3e3,4:2500,5:2e3,6:1500,7:1e3,8:800,9:600,10:500,
111:400,12:300,13:200,14:150},he=y([]),Ge=y(0),ie=y(!0),P=y("ë°ì´í° ì¤ë¹ ì¤..."),q=y(0),xt=y(!1),ee=y(!1),L=y([]),j=y(""),te=y(!1),Ae=y(null),z=y(!1),Je=y(null);let ge=null;const we=y(!1),Ze=y(null),me=y(!1),Le=y(new Set),Ie=y(0),re=y(!1),Qe=y(""),Te=y("success"),le=y(!1),ke=gt.map(n=>({name:n.category,icon:St(n.category),color:$t(n.category)}));function St(n){return{"ìì·ìí":"ð´","ë³ì·ì½êµÂ·ìë£":"ð¥","ìë¥Â·ì¡í·미ì©":"ð","êµì¡Â·ë¬¸í·취미":"ð","ë ì ·ì¤í¬ì¸ ":"â½","ê°ì ·ê°êµ¬Â·ì¸í
리ì´":"ð ","ìë차·주ì ":"ð","ìíìë¹ì¤Â·ê¸°í":"ð§"}[n]||"ð"}function $t(n){return{"ìì·ìí":"#FF6B6B","ë³ì·ì½êµÂ·ìë£":"#4ECDC4","ìë¥Â·ì¡í·미ì©":"#A855F7","êµì¡Â·ë¬¸í·취미":"#3B82F6","ë ì ·ì¤í¬ì¸ ":"#22C55E","ê°ì ·ê°êµ¬Â·ì¸í
리ì´":"#F59E0B","ìë차·주ì ":"#6366F1","ìíìë¹ì¤Â·ê¸°í":"#64748B"}[n]||"#888"}const ne=Ue(()=>{let n=he.value;return L.value.length>0&&(n=n.filter(e=>L.value.includes(et(e)))),me.value&&(n=n.filter(e=>{const t=String(e.id).includes("-")?e.id:`${l.value}-${e.id}`;return Le.value.has(String(e.id))||Le.value.has(t)})),n}),pe=Ue(()=>{const n=j.value.trim().toLowerCase();return n?he.value.filter(e=>{const t=e.ê°ë§¹ì ëª
?.toLowerCase().includes(n),v=e.ì¬ì
ì¥ì£¼ì?.toLowerCase().includes(n);return t||v}).slice(0,20):[]}),Re={},Mt=[{width:"40px",height:"40px",background:"rgba(76, 175, 80, 0.9)",borderRadius:"20px",color:"#fff",textAlign:"center",fontWeight:"bold",lineHeight:"40px",fontSize:"12px"},{width:"46px",height:"46px",background:"rgba(33, 150, 243, 0.9)",borderRadius:"23px",color:"#fff",textAlign:"center",fontWeight:"bold",lineHeight:"46px",fontSize:"13px"},{width:"52px",height:"52px",background:"rgba(236, 64, 122, 0.9)",borderRadius:"26px",color:"#fff",textAlign:"center",fontWeight:"bold",lineHeight:"52px",fontSize:"14px"},{width:"58px",height:"58px",background:"rgba(171, 71, 188, 0.9)",borderRadius:"29px",color:"#fff",textAlign:"center",fontWeight:"bold",lineHeight:"58px",fontSize:"15px"},{width:"66px",height:"66px",background:"rgba(103, 58, 183, 0.9)",borderRadius:"33px",color:"#fff",textAlign:"center",fontWeight:"bold",lineHeight:"66px",fontSize:"16px"}],be={food:"#FF6B6B",health:"#4ECDC4",medical:"#4ECDC4",fashion:"#A855F7",culture:"#3B82F6",education:"#3B82F6",sports:"#22C55E",living:"#F59E0B",home:"#F59E0B",car:"#6366F1",life:"#64748b",etc:"#64748b"},Ye={"ìì·ìí":"food","ë³ì·ì½êµÂ·ìë£":"medical","ìë¥Â·ì¡í·미ì©":"fashion","êµì¡Â·ë¬¸í·취미":"education","ë ì ·ì¤í¬ì¸ ":"sports","ê°ì ·ê°êµ¬Â·ì¸í
리ì´":"living","ìë차·주ì ":"car","ìíìë¹ì¤Â·ê¸°í":"etc",ì¼ë°ììì :"food",ììì :"food",ìì:"food",ìí:"food","ë³ìì/ì½êµ":"medical","ë³ì/ì½êµ"
1:"medical",ë³ì:"medical",ì½êµ:"medical",ìë£:"medical",ìì:"medical",íìì:"medical",ì¹ê³¼:"medical","ìë¥/ì¡í":"fashion","미ì©/ë³´ê±´ìì":"fashion",미ì©:"fashion",ë³´ê±´ìì:"fashion",ìë¥:"fashion",미ì©ì:"fashion","íì/êµì¡":"education","êµì¡/íì":"education",êµì¡:"education",íì:"education","문í/ë ì ":"sports","ë ì /ì¤í¬ì¸ ":"sports",ë ì :"sports",ì¤í¬ì¸ :"sports","ì íµ/ë§í¸":"living","ê°êµ¬/ì¸í 리ì´":"living","ê°ì /ê°êµ¬":"living",ê°êµ¬:"living",ì¸í 리ì´:"living",ë§í¸:"living",ìí¼ë§ì¼:"living",ìí¼:"living",í¸ìì :"living","주ì ì/ìëì°¨":"car",주ì ì:"car",ìëì°¨:"car",ì ë¹:"car",ìë°ì :"living",ìë°:"living",기í:"etc"},De={},Oe={};gt.forEach(n=>{const e=n.category,t=Ye[e]||"etc";n.items.forEach(v=>{const k=v.trim().replace(/\s+/g,"");De[k]=t,Oe[k]=e})});const Xe=n=>{if(!n)return"etc";if(n.ê°ë§¹ì ì ì¢ ëª ){const e=n.ê°ë§¹ì ì ì¢ ëª .trim().replace(/\s+/g,"");if(De[e])return De[e]}if(n.ì¹´í ê³ ë¦¬&&n.ì¹´í ê³ ë¦¬.trim()){const e=Ye[n.ì¹´í ê³ ë¦¬.trim()];if(e)return e;const t=n.ì¹´í ê³ ë¦¬;if(t.includes("ìì")||t.includes("ìí")||t.includes("ì ê³¼")||t.includes("ìë¹"))return"food";if(t.includes("ì½êµ")||t.includes("ë³ì")||t.includes("ìë£")||t.includes("ìì")||t.includes("íìì")||t.includes("ì¹ê³¼"))return"medical";if(t.includes("ìë¥")||t.includes("ì¡í")||t.includes("미ì©")||t.includes("ìì")||t.includes("íì¥í")||t.includes("목ì")||t.includes("ì¬ì°ë"))return"fashion";if(t.includes("êµì¡")||t.includes("íì")||t.includes("íêµ")||t.includes("ìì ")||t.includes("ìì ")||t.includes("ë ìì¤"))return"education";if(t.includes("ë ì ")||t.includes("ì¤í¬ì¸ ")||t.includes("문í")||t.includes("취미")||t.includes("ë¹êµ¬")||t.includes("ë ¸ëë°©")||t.includes("í¬ì¤")||t.includes("골í"))return"sports";if(t.includes("ì íµ")||t.includes("ê°êµ¬")||t.includes("ë§í¸")||t.includes("ì¸í 리ì´")||t.includes("ê°ì ")||t.includes("ì»´í¨í°")||t.includes("ì¡°ëª ")||t.includes("주방"))return"living";if(t.includes("주ì ")||t.includes("ìëì°¨")||t.includes("ê°ì¤")||t.includes("ì ë¹")||t.includes("ì¸ì°¨"))return"car";if(t.includes("ìë°")||t.includes("í¸í ")||t.includes("모í ")||t.includes("íì "))return"living"}if(n.categoryEn)return n.categoryEn==="gas"?"car":n.categoryEn==="health"?"medical":n.categoryEn==="culture"?"education":n.categoryEn==="home"?"living":n.categoryEn;if(n.ê°ë§¹ì ì ì¢ ëª ){const e=n.ê°ë§¹ì ì ì¢ ëª ;if(e.includes("ìë¹")||e.includes("íì")||e.includes("ì¤ì")||e.includes("ì¼ì")||e.includes("ìì")||e.includes("ì¹´í")||e.includes("커í¼")||e.includes("ì ê³¼")||e.includes("ë¹µ")||e.includes("ë¶ì")||e.includes("ìì"))return"food";if(e.includes("ìì")||e.includes("ë³ì")||e.includes("ì¹ê³¼")||e.includes("íìì")||e.includes("ì½êµ")||e.includes("ë물ë³ì"))return"medical";if(e.includes("미ì©")||e.includes("ë·°í°")||e.includes("ë¤ì¼")||e.includes("ìë¥")||e.includes("ì·")||e.includes("ìê²½"))return"fashion";if(e.includes("íì")||e.includes("ë ìì¤")||e.includes("ìì ")||e.includes("ëì"))return"education";if(e.includes("í¬ì¤")||e.includes("í¼í¸ëì¤")||e.includes("ì¤í¬ì¸ ")||e.includes("골í")||e.includes("ë¹êµ¬")||e.includes("ë ¸ë")||e.includes("ëì"))return"sports";if(e.includes("ìí¼")||e.includes("ë§í¸")||e.includes("í¸ìì ")||e.includes("ì íµ")||e.includes("ê°êµ¬")||e.includes("ì¸í 리ì´")||e.includes("ì² ë¬¼")||e.includes("ì»´í¨í°")||e.includes("í°"))return"living";if(e.includes("주ì ")||e.includes("ì¶©ì ")||e.includes("ì¹´ì¼í")||e.includes("ì ë¹")||e.includes("ì¸ì°¨"))return"car"}return"etc"},et=n=>{if(!n)return"-";if(n.ì¹´í ê³ ë¦¬&&n.ì¹´í ê³ ë¦¬.trim())return n.ì¹´í ê³ ë¦¬;if(n.ê°ë§¹ì ì ì¢ ëª ){const e=n.ê°ë§¹ì ì ì¢ ëª .trim().replace(/\s+/g,"");if(Oe[e])return Oe[e];const t=n.ê°ë§¹ì ì ì¢ ëª ;if(t.includes("ìë¹")||t.includes("íì")||t.includes("ì¤ì")||t.includes("ì¼ì")||t.includes("ìì")||t.includes("ì¹´í")||t.includes("커í¼")||t.includes("ì ê³¼")||t.includes("ë¹µ")||t.includes("ë¶ì")||t.includes("ìì"))return"ìì·ìí";if(t.includes("ìì")||t.includes("ë³ì")||t.includes("ì¹ê³¼")||t.includes("íìì")||t.includes("ì½êµ")||t.includes("ë물ë³ì"))return"ë³ì·ì½êµÂ·ìë£";if(t.includes("미ì©")||t.includes("ë·°í°")||t.includes("ë¤ì¼")||t.includes("ìë¥")||t.includes("ì·")||t.includes("ìê²½"))return"ìë¥Â·ì¡í·미ì©";if(t.includes("íì")||t.includes("ë ìì¤")||t.includes("ìì ")||t.includes("ëì"))return"êµì¡Â·ë¬¸í·취미";if(t.includes("í¬ì¤")||t.includes("í¼í¸ëì¤")||t.includes("ì¤í¬ì¸ ")||t.includes("골í")||t.includes("ë¹êµ¬")||t.includes("ë ¸ë")||t.includes("ëì"))return"ë ì ·ì¤í¬ì¸ ";if(t.includes("ìí¼")||t.includes("ë§í¸")||t.includes("í¸ìì ")||t.includes("ì íµ")||t.includes("ê°êµ¬")||t.includes("ì¸í 리ì´")||t.includes("ì² ë¬¼")||t.includes("ì»´í¨í°")||t.includes("í°"))return"ê°ì ·ê°êµ¬Â·ì¸í 리ì´";if(t.includes("주ì ")||t.includes("ì¶©ì ")||t.includes("ì¹´ì¼í")||t.includes("ì ë¹")||t.includes("ì¸ì°¨"))return"ìë차·주ì "}return n.ì¹´í ê³ ë¦¬||"-"},Ct=n=>{const e=be[n]||be.etc,t=o[n]||o.etc,v=`pin-grad-${n||"etc"}`,k=`<svg xmlns="http://www.w3.org/2000/svg" width="40" height="52" viewBox="0 0 40 52"> 2 <style> 3 .icon-svg-content path, .icon-svg-content circle, .icon-svg-content rect, .icon-svg-content polygon, .icon-svg-content ellipse { 4 fill: #ffffff !important; 5 } 6 </style> 7 <!-- ë°ë¥ 그림ì --> 8 <ellipse cx="20" cy="48" rx="12" ry="3.5" fill="rgba(0, 0, 0, 0.25)" /> 9 10 <!-- ê·¸ë¼ë°ì´ì ì ì --> 11 <defs> 12 <linearGradient id="${v}
12" x1="0%" y1="0%" x2="0%" y2="100%"> 13 <stop offset="0%" stop-color="${e}" stop-opacity="0.85" /> 14 <stop offset="100%" stop-color="${e}" stop-opacity="1" /> 15 </linearGradient> 16 </defs> 17 18 <!-- ë¬¼ë°©ì¸ í ë°ë (ì¸ê³½ì ì ê±°) --> 19 <path d="M20 2 C10.1 2 2 10.1 2 20 C2 31.5 20 48 20 48 C20 48 38 31.5 38 20 C38 10.1 29.9 2 20 2 Z" fill="url(#${v})" /> 20 21 <!-- í°ì ë´ë¶ ìì´ì½ --> 22 <g class="icon-svg-content" fill="#ffffff" transform="translate(12, 12) scale(0.66)"> 23 ${t.body} 24 </g> 25 </svg>`;return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(k)}`},Et=n=>{const e=be[n]||be.etc,t=o[n]||o.etc,v=`<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 36 36"> 26 <style> 27 .icon-svg-content path, .icon-svg-content circle, .icon-svg-content rect, .icon-svg-content polygon, .icon-svg-content ellipse { 28 fill: #ffffff !important; 29 } 30 </style> 31 <circle cx="18" cy="18" r="17" fill="${e}" /> 32 <g class="icon-svg-content" fill="#ffffff" transform="translate(11, 11) scale(0.58)"> 33 ${t.body} 34 </g> 35 </svg>`;return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(v)}`},F=n=>String(n??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),ye=n=>{if(!n)return"";const e=n.split(/[-./]/);if(e.length===3){const t=e[0].trim(),v=e[1].trim(),k=e[2].trim();return`${t}ë ${v}ì ${k}ì¼`}return n},At=n=>{if(!n)return"";try{const e=new URL(String(n).trim(),window.location.origin),t=e.protocol.toLowerCase();return t==="http:"||t==="https:"?e.href:""}catch{return""}},Lt=n=>{const e=n||"default";return!Re[e]&&window?.kakao?.maps&&(Re[e]=new window.kakao.maps.MarkerImage(Ct(n),new window.kakao.maps.Size(40,52),{offset:new window.kakao.maps.Point(20,48)})),Re[e]},It=()=>{if(!c.value||!window?.kakao?.maps)return;const n={center:new window.kakao.maps.LatLng(r.value.lat,r.value.lng),level:5};m=new window.kakao.maps.Map(c.value,n);const e=new window.kakao.maps.ZoomControl;m.addControl(e,window.kakao.maps.ControlPosition.RIGHT),C=new window.kakao.maps.MarkerClusterer({map:m,averageCenter:!1,minLevel:2,minClusterSize:5,gridSize:80,calculator:[10,50,100,500],styles:Mt,disableClickZoom:!0,animation:!1}
35),window.kakao.maps.event.addListener(m,"click",()=>{Date.now()-Ke<500||(I&&(I.setMap(null),I=null),ce())}),window.kakao.maps.event.addListener(C,"clusterclick",t=>{if(!m||(t.getMarkers?.()||[]).length===0)return;const k=t.getCenter?.();if(!k)return;const g=Math.max(m.getLevel()-1,1);m.setLevel(g,{anchor:k}),m.panTo(k)}),window.kakao.maps.event.addListener(m,"idle",()=>{oe&&(Ce&&clearTimeout(Ce),Ce=setTimeout(()=>{st(!1)},200))})},Tt=()=>new Promise((n,e)=>{const v=Date.now(),k=()=>{if(window.kakao&&window.kakao.maps){window.kakao.maps.load(()=>n());return}if(Date.now()-v>1e4){e(new Error("Kakao SDK ë¡ë íììì - ë¤í¸ìí¬ ìí를 íì¸í´ì£¼ì¸ì."));return}setTimeout(k,100)};k()}),tt=(n,e)=>{const t=window.FlutterOpenUrl!==void 0||window.FlutterLocation!==void 0,v=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);if(t&&window.FlutterOpenUrl){window.FlutterOpenUrl.postMessage(JSON.stringify({appScheme:n,webUrl:e}));return}if(!v){window.open(e,"_blank");return}if(/Android/i.test(navigator.userAgent)){const g=document.createElement("a");g.href=n,g.style.display="none",document.body.appendChild(g),g.click(),document.body.removeChild(g),setTimeout(()=>{document.hasFocus()&&(window.location.href=e)},2e3)}else window.location.href=n,setTimeout(()=>{document.hasFocus()&&(window.location.href=e)},2e3)},Rt=async()=>{await _e();try{await Tt(),It()}catch(n){console.error("Kakao Maps SDK ë¡ë ì¤í¨:",n),P.value="ì§ë ë¡ë ì¤í¨. ìë¡ê³ 침 í´ì£¼ì¸ì."}},nt=async n=>{if(!m||!window?.kakao?.maps)return;I&&I.setMap(null),ce(),In(l.value,n.id,n.ì¹´í ê³ ë¦¬);let e=null;try{const _=String(n.id).includes("-")?n.id:`${l.value}-${n.id}`,{data:T,error:D}=await G.from("store_details").select("phone, website, event, event_start_date, event_end_date").in("store_id",[String(n.id),_]).maybeSingle();D||(e=T)}catch{}const t=document.createElement("div");t.className="info-window-wrap";let v="",k="";if(e){const _=At(e.website),T=F(e.phone||""),D=T||_,w=e.event;if(D&&(v+='<span class="info-badge info-badge-extra" data-toggle="extra">ð ì¶ê°ì ë³´</span>',k+=` 36 <tr class="extra-info-row" style="display: none;"> 37 <td colspan="2" class="extra-info-content"> 38 ${T?`<div class="extra-info-item">ð <a href="tel:${T}" class="info-link">${T}</a></div>`:""} 39 ${_?`<div class="extra-info-item">ð <a href="${F(_)}" target="_blank" rel="noopener noreferrer" class="info-link">ìµ ííì´ì§ë¡ ê°ê¸°</a></div>`:""} 40 </td> 41 </tr> 42 `),w){let $="";e.event_start_date&&e.event_end_date?$=`ì´ë²¤í¸ ê¸°ê° ${F(ye(e.event_start_date))} ~ ${F(ye(e.event_end_date))}`:e.event_start_date?$=`ì´ë²¤í¸ ê¸°ê° ${F(ye(e.event_start_date))} ~`:e.event_end_date&&($=`ì´ë²¤í¸ ê¸°ê° ~ ${F(ye(e.event_end_date))}`),v+='<span class="info-badge info-badge-event" data-toggle="event">ð ì´ë²¤í¸</span>',k+=` 43 <tr class="event-info-row" style="display: none;"> 44 <td colspan="2" class="event-info-content"> 45 ${$?`<div class="event-period">${$}</div>`:""} 46 <div class="event-text">${F(e.event)}</div> 47 </td> 48 </tr> 49 `}}t.innerHTML=` 50 <div class="info-window-content"> 51 <button class="close-btn">×</button> 52 <div class="info-header"> 53 <img src="${F(Et(Xe(n)))}" class="info-icon" onerror="this.src='/images/default.png'" /> 54 <h3 class="info-title">${F(n.ê°ë§¹ì ëª ||"")}</h3> 55 </div> 56 <table class="info-table"> 57 <tr> 58 <td class="info-label">ì¹´í ê³ ë¦¬</td> 59 <td class="info-value">${F(et(n))}</td> 60 </tr> 61 <tr> 62 <td class="info-label">ì ì¢ </td> 63 <td class="info-value">${F(n.ê°ë§¹ì ì ì¢ ëª ||"-")}</td> 64 </tr> 65 <tr> 66 <td class="info-label">주ì</td> 67 <td class="info-value">${F(n.ì¬ì ì¥ì£¼ì||"-")}</td> 68 </tr> 69 ${k} 70 </table> 71 <div class="map-navigation-btns"> 72 <button class="nav-btn kakao-btn" data-nav="kakao"> 73 <span class="nav-icon"> 74 <svg viewBox="0 0 24 24" width="16" height="16">
75 <path d="M12 3a7 7 0 0 0-7 7c0 5 7 11.5 7 11.5s7-6.5 7-11.5a7 7 0 0 0-7-7z" fill="#007cff" /> 76 <circle cx="12" cy="10" r="2.3" fill="#fee500" /> 77 </svg> 78 </span> 79 <span class="nav-text">ì¹´ì¹´ì¤ë§µ</span> 80 </button> 81 <button class="nav-btn naver-btn" data-nav="naver"> 82 <span class="nav-icon"> 83 <svg viewBox="0 0 24 24" width="16" height="16" style="border-radius: 4px; box-shadow: 0 1px 3px rgba(0,0,0,0.15);"> 84 <rect width="24" height="24" rx="5" fill="#ffffff" /> 85 <path d="M9.5 17.5h8c1 0 1.5.5 1.5 1.5" stroke="#2f7bf2" stroke-width="3" fill="none" stroke-linecap="round" /> 86 <path d="M9.5 5a4.5 4.5 0 0 0-4.5 4.5c0 3.2 4.5 8 4.5 8s4.5-4.8 4.5-8A4.5 4.5 0 0 0 9.5 5z" fill="#00c73c" /> 87 <text x="9.5" y="11.2" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif" font-weight="900" font-size="5.2" fill="#ffffff" text-anchor="middle" letter-spacing="-0.2">N</text> 88 </svg> 89 </span> 90 <span class="nav-text">ë¤ì´ë²ì§ë</span> 91 </button> 92 </div> 93 <div class="info-badges"> 94 ${v} 95 <button class="report-btn" title="ì ë³´ ì ë³´">ð¨</button> 96 </div> 97 </div> 98 `,t.querySelector(".close-btn")?.addEventListener("click",()=>{I?.setMap(null),I=null});const S=_=>{Ke=Date.now(),_.stopPropagation()};t.addEventListener("mousedown",S),t.addEventListener("touchstart",S,{passive:!1}),t.addEventListener("pointerdown",S),t.addEventListener("click",S),t.querySelectorAll(".info-badge").forEach(_=>{_.addEventListener("click",T=>{T.stopPropagation();const D=_.getAttribute("data-toggle");if(D==="extra"){const w=t.querySelector(".extra-info-row");w&&(w.style.display=w.style.display==="none"?"table-row":"none",_.classList.toggle("active"))}else if(D==="event"){const w=t.querySelector(".event-info-row");w&&(w.style.display=w.style.display==="none"?"table-row":"none",_.classList.toggle("active"))}})}),t.querySelectorAll(".nav-btn").forEach(_=>{_.addEventListener("click",T=>{T.preventDefault(),T.stopPropagation();const D=_.getAttribute("data-nav"),w=n.ìë,$=n.ê²½ë,O=encodeURIComponent(n.ê°ë§¹ì ëª ||"ê°ë§¹ì ");if(D==="kakao"){Dn(l.value,n.id);const Y=`kakaomap://look?p=${w},${$}`,de=`https://map.kakao.com/link/map/${O},${w},${$}`;tt(Y,de)}else if(D==="naver"){On(l.value,n.id);const Y=`nmap://place?lat=${w}&lng=${$}&name=${O}&appname=com.localpay`,de=`https://map.naver.com/p/search/${O}?c=${$},${w},15,0,0,0,dh`;tt(Y,de)}})});const Z=t.querySelector(".report-btn");Z&&Z.addEventListener("click",_=>{_.preventDefault(),_.stopPropagation(),Fn(l.value,n.id),Ze.value=n,we.value=!0});const Q=new window.kakao.maps.LatLng(n.ìë,n.ê²½ë);I=new window.kakao.maps.CustomOverlay({position:Q,content:t,yAnchor:1.15,zIndex:10}),I.setMap(m),m.panTo(Q)},at=()=>{H.forEach(n=>n.setMap(null)),H.clear(),C?.clear()},Dt=n=>{if(!m)return n;
98const e=m.getBounds(),t=e.getSouthWest(),v=e.getNorthEast();return n.filter(k=>{const g=k.ìë,S=k.ê²½ë;return g>=t.getLat()&&g<=v.getLat()&&S>=t.getLng()&&S<=v.getLng()})},Ot=n=>We[n]||We[14],Bt=n=>{const e=new window.kakao.maps.Marker({position:new window.kakao.maps.LatLng(n.ìë,n.ê²½ë),image:Lt(Xe(n)),clickable:!0});return window.kakao.maps.event.addListener(e,"click",()=>{nt(n)}),e},st=async(n=!0)=>{if(!C||!window?.kakao?.maps||!m||Ee)return;Ee=!0,n&&(ie.value=!0,P.value="ë§ì»¤ ì¤ë¹ ì¤...",q.value=0,await _e(),await new Promise(w=>setTimeout(w,10)));const e=m.getLevel(),t=Ot(e);let v=Dt(ne.value);if(e>3&&v.length>t){const w=Math.ceil(v.length/t);v=v.filter(($,O)=>O%w===0)}const k=new Set(v.map(w=>String(w.id))),g=m.getBounds(),S=g.getSouthWest(),N=g.getNorthEast(),ae=(N.getLat()-S.getLat())*.5,Z=(N.getLng()-S.getLng())*.5,Q=[];H.forEach((w,$)=>{if(!k.has($)){const O=w.getPosition(),Y=O.getLat(),de=O.getLng();(Y<S.getLat()-ae||Y>N.getLat()+ae||de<S.getLng()-Z||de>N.getLng()+Z)&&Q.push($)}}),Q.forEach(w=>{const $=H.get(w);$&&($.setMap(null),H.delete(w))});const _=v.filter(w=>!H.has(String(w.id)));n&&(q.value=30,P.value=`ë§ì»¤ ${_.length.toLocaleString()}ê° ì¶ê° ì¤...`);const T=300;for(let w=0;w<_.length;w+=T)_.slice(w,w+T).forEach(O=>{const Y=Bt(O);H.set(String(O.id),Y)}),n&&(q.value=30+Math.round(w/_.length*60)),await new Promise(O=>setTimeout(O,0));n&&(P.value="ì§ëì íì ì¤...",q.value=95),await _e();const D=Array.from(H.values());e<=ma?(C.clear(),D.forEach(w=>
98w.setMap(m))):(D.forEach(w=>w.setMap(null)),C.clear(),C.addMarkers(D)),n&&(await new Promise(w=>setTimeout(w,100)),await _e(),q.value=100,P.value="ìë£!",await new Promise(w=>setTimeout(w,300))),Ge.value=H.size,oe||(oe=!0),n&&(ie.value=!1),Ee=!1},Be=async(n=ne.value,e=!0)=>(at(),st(e)),Ft=n=>{const e=L.value.indexOf(n);e===-1?(L.value.push(n),Rn(l.value,n)):L.value.splice(e,1),ce()},Ut=()=>{L.value.length===ke.length?L.value=[]:L.value=ke.map(n=>n.name),ce()},Nt=()=>{pe.value.length>0&&(te.value=!0)},Pt=()=>{setTimeout(()=>{te.value=!1},200)},ce=()=>{Ae.value&&Ae.value.blur(),te.value=!1},qt=n=>{if(j.value.trim()&&Tn(l.value,j.value.trim()),j.value=n.ê°ë§¹ì ëª ||"",te.value=!1,ce(),m&&n.ìë&&n.ê²½ë){const e=new window.kakao.maps.LatLng(n.ìë,n.ê²½ë);m.setLevel(1),m.panTo(e),setTimeout(()=>nt(n),300)}};Ne(j,n=>{te.value=n.trim().length>0&&pe.value.length>0}),Ne(ne,n=>{oe&&Be(n,!1)});const ot=(n,e)=>{if(!m||!window?.kakao?.maps)return;ge&&ge.setMap(null);const t=new window.kakao.maps.LatLng(n,e),v=document.createElement("div");v.className="user-location-marker",v.innerHTML=` 99 <div class="location-pulse"></div> 100 <div class="location-dot"></div> 101 `,ge=new window.kakao.maps.CustomOverlay({position:t,content:v,zIndex:1e4}),ge.setMap(m)},jt=()=>{if(!m)return;z.value=!0,ce(),Bn(l.value),window.FlutterLocation!==void 0?window.FlutterLocation.postMessage("REQUEST_LOCATION"):"geolocation"in navigator?navigator.geolocation.getCurrentPosition(e=>{const{latitude:t,longitude:v}=e.coords;Je.value={lat:t,lng:v};const k=new window.kakao.maps.LatLng(t,v);m.setLevel(4),m.panTo(k),ot(t,v),z.value=!1},e=>{z.value=!1;let t="ìì¹ë¥¼ ê°ì ¸ì¬ ì ììµëë¤.";switch(e.code){case e.PERMISSION_DENIED:t="ìì¹ ê¶íì´ ê±°ë¶ëììµëë¤. ë¸ë¼ì°ì ì¤ì ìì ìì¹ ê¶íì íì©í´ì£¼ì¸ì.";break;case e.POSITION_UNAVAILABLE:t="ìì¹ ì 보를 ì¬ì©í ì ììµëë¤.";break;case e.TIMEOUT:t="ìì¹ ìì² ìê°ì´ ì´ê³¼ëììµëë¤.";break}le(t,"error"),console.error("ìì¹ ì¤ë¥:",e)},{enableHighAccuracy:!0,timeout:1e4,maximumAge:0}):(z.value=!1,le("ì´ ë¸ë¼ì°ì ë ìì¹ ìë¹ì¤ë¥¼ ì§ìíì§ ììµëë¤.","error"))},it=async()=>{try{(await mn()).hasCache;let e=h.params.regionCode;if(e||(e=await je()),u.value&&!await hn(e)){M();return}const t=await gn((g,S,N)=>{P.value=N||"ë°ì´í° ë¡ë ì¤...",typeof g=="number"&&typeof S=="number"&&S>0&&(q.value=g)},e);if((!t||t.length===0)&&u.value){M();return}const v=t.filter(g=>g.ê²½ë&&g.ìë),k=new Map;if(v.length===0){if(u.value){M();return}const g=h.params.regionCode||l.value||e||"";p.replace({name:"MapNoData",query:g?{region:String(g)}:void 0});return}he.value=v.map(g=>{const S=`${Number(g.ìë).toFixed(5)}_${Number(g.ê²½ë).toFixed(5)}`;let N={...g};if(k.has(S)){const ae=k.get(S);k.set(S,ae+1);const Z=ae*(Math.PI*.45),Q=3e-5*Math.ceil(ae/2);N.ìë=Number(g.ìë)+Math.sin(Z)*Q,N.ê²½ë=Number(g.ê²½ë)+Math.cos(Z)*Q}else k.set(S,1);return N}),Ge.value=he.value.length}catch(n){if(console.error("ë°ì´í° ë¡ë ì¤í¨:",n),u.value){M();return}throw P.value="ë°ì´í° ë¡ë ì¤í¨",n}},Vt=async()=>{try{const n=new Date().toISOString().split("T")[0],{data:e,error:t}=await G.from("store_details").select("store_id, event, event_start_date, event_end_date").eq("region_code",l.value).not("event","is",null);if(t){console.error("ì´ë²¤í¸ ë°ì´í° ë¡ë ì¤ë¥:",t);return}const v=e.filter(g=>!g.event_start_date&&!g.event_end_date?!0:g.event_start_date&&!g.event_end_date?g.event_start_date<=n:(!g.event_start_date&&g.event_end_date||g.event_start_date<=n)&&g.event_end_date>=n),k=new Set(v.map(g=>String(g.store_id)));Le.value=k,Ie.value=k.size}catch(n){console.error("ì´ë²¤í¸ ë°ì´í° ë¡ë ì¤í¨:",n)}},Ht=()=>{me.value=!me.value},Fe=(n,e="success",t=2500)=>{Qe.value=n,Te.value=e,le.value=!0,setTimeout(()=>{le.value=!1},t)},zt=async()=>{if(!re.value){Un(l.value),re.value=!0;try{const n=await kn(l.value);n.updated?(Fe(`ë°ì´í°ê° ê°±ì ëììµëë¤ (${n.updatedChunks}ê° ë°ì´í°)`,"success"),await it(),C&&await Be(ne.value,!1)):Fe("ë°ì´í°ê° ìµì ìíì ëë¤","success")}catch(n){console.error("ë°ì´í° ê°±ì ì¤í¨:",n),Fe("ê°±ì íì¸ ì¤í¨","error")}finally{re.value=!1}}};return Gt(async()=>{try{let n=h.params.regionCode;n||(n=await je()),l.value=n;const e=ve(n);if(!u.value&&(!e||e.enabled!==!0)){p.replace({name:"MapNoData",query:{region:String(n||"")}});return}if(!await Jt(n)){p.replace({name:"MapExpired",query:{region:String(n||"")}});return}e&&e.center&&(r.value=e.center),Ln(n),ie.value=!0,P.value="ì§ë를 ì´ê¸°ííë ì¤ì ëë¤...",q.value=0,await Rt(),P.value="ë°ì´í°ë¥¼ ë¶ë¬ì¤ë ì¤ì ëë¤...",q.value=20,await it(),Vt(),C&&await Be(ne.value,!0),oe=!0}catch(n){console.error(n),u.value&&(f.value=!0),ie.value=!1,oe=!0}window.addEventListener("message",n=>{if(n.data&&n.data.type==="FLUTTER_LOCATION"){const{latitude:e,longitude:t}=n.data;if(Je.value={lat:e,lng:t}
101,m){const v=new window.kakao.maps.LatLng(e,t);m.setLevel(4),m.panTo(v),ot(e,t)}z.value=!1}else n.data&&n.data.type==="FLUTTER_LOCATION_ERROR"&&(z.value=!1,le("ìì¹ ê¶íì´ ê±°ë¶ëììµëë¤. ì± ì¤ì ìì ìì¹ ê¶íì íì©í´ì£¼ì¸ì.","error"))})}),Zt(()=>{I&&(I.setMap(null),I=null),C&&(C.clear(),C=null),at(),m=null}),(n,e)=>(E(),A("div",Nn,[d("button",{class:K(["sidebar-toggle",{"sidebar-open":ee.value}]),onClick:e[0]||(e[0]=t=>ee.value=!ee.value)},x(ee.value?"â":"â¶"),3),d("aside",{class:K(["sidebar",{"sidebar-collapsed":!ee.value}])},[d("div",Pn,[e[6]||(e[6]=d("h3",null,"ð·ï¸ ì
ì¢
íí°",-1)),d("button",{class:"toggle-all-btn",onClick:Ut},x(L.value.length===ue(ke).length?"ì ì²´ í´ì ":"ì ì²´ ì í"),1)]),d("div",qn,[L.value.length===0?(E(),A("span",jn,"ì ì²´ íì ì¤")):(E(),A("span",Vn,x(L.value.length)+"ê° ì¹´í
ê³ ë¦¬ ì í",1)),d("span",Hn,"("+x(ne.value.length.toLocaleString())+"ê°)",1)]),d("div",zn,[(E(!0),A(rt,null,lt(ue(ke),t=>(E(),A("div",{key:t.name,class:K(["category-item",{"category-selected":L.value.includes(t.name),"category-dimmed":L.value.length>0&&!L.value.includes(t.name)}]),onClick:v=>Ft(t.name)},[d("span",Wn,x(t.icon),1),d("span",Gn,x(t.name),1),d("span",{class:"category-indicator",style:ct({backgroundColor:t.color})},null,4)],10,Kn))),128)),d("button",{class:"refresh-data-btn",onClick:zt,disabled:re.value},[d("span",{class:K(["material-icons refresh-icon",{spinning:re.value}])},"sync",2),d("span",Zn,x(re.value?"íì¸ ì¤...":"ë°ì´í°ê°±ì "),1)],8,Jn)])],2),d("div",{class:K(["map-container",{"with-sidebar":ee.value}])},[d("div",{ref_key:"mapContainer",ref:c,class:"kakao-map"},null,512)],2),ie.value?(E(),A("div",Qn,[d("div",Yn,[e[7]||(e[7]=qe('<div class="bouncing-pin-wrap" data-v-69bdbb79><svg class="bouncing-pin" viewBox="0 0 24 24" width="48" height="48" fill="none" xmlns="http://www.w3.org/2000/svg" data-v-69bdbb79><path d="M12 2C8.13 2 5 5.13 5 9C5 14.25 12 22 12 22C12 22 19 14.25 19 9C19 5.13 15.87 2 12 2ZM12 11.5C10.62 11.5 9.5 10.38 9.5 9C9.5 7.62 10.62 6.5 12 6.5C13.38 6.5 14.5 7.62 14.5 9C14.5 10.38 13.38 11.5 12 11.5Z" fill="url(#pin-grad)" data-v-69bdbb79></path><defs data-v-69bdbb79><linearGradient id="pin-grad" x1="12" y1="2" x2="12" y2="22" gradientUnits="userSpaceOnUse" data-v-69bdbb79><stop stop-color="#818cf8" data-v-69bdbb79></stop><stop offset="1" stop-color="#4f46e5" data-v-69bdbb79></stop></linearGradient></defs></svg><div class="pin-shadow" data-v-69bdbb79></div></div><h4 class="loading-title" data-v-69bdbb79>ê°ë§¹ì ì§ë ì¤ë¹ ì¤</h4>',2)),d("div",Xn,x(P.value),1),d("div",ea,[d("div",{class:"progress-bar-fill",style:ct({width:q.value+"%"})},null,4)]),d("div",ta,x(q.value)+"%",1)])])):W("",!0),xt.value?(E(),A("div",na,[...e[8]||(e[8]=[d("div",{class:"cluster-loading-content"},[d("div",{class:"dot-flashing"}),d("span",{class:"cluster-loading-text"},"ì§ë ë ëë§ ì¤...")],-1)])])):W("",!0),d("div",{class:K(["marker-count",{"with-sidebar":ee.value}])},[d("span",aa," ð "+x(ne.value.length.toLocaleString())+"ê° "+x(ue(ve)(l.value)?.currencyName?ue(ve)(l.value).currencyName.endsWith("ê°ë§¹ì ")?ue(ve)(l.value).currencyName:ue(ve)(l.value).currencyName+" ê°ë§¹ì ":"ê°ë§¹ì "),1),L.value.length>0?(E(),A("span",sa,"íí° ì ì©")):W("",!0),Ie.value>0?(E(),A("button",{key:1,class:K(["event-filter-btn",{active:me.value}]),onClick:Ht},[e[9]||(e[9]=Qt(" ð ì´ë²¤í¸ì¤ ",-1)),d("span",oa,x(Ie.value),1)],2)):W("",!0)],2),d("div",ia,[d("div",ra,[e[10]||(e[10]=d("span",{class:"search-icon"},"ð",-1)),Pe(d("input",{ref_key:"searchInputRef",ref:Ae,type:"text","onUpdate:modelValue":e[1]||(e[1]=t=>j.value=t),placeholder:"ê°ë§¹ì ëª
ëë 주ìë¡ ê²ì...",class:"search-input",onFocus:Nt,onBlur:Pt},null,544),[[mt,j.value]]),j.value?(E(),A("button",{key:0,class:"search-clear",onClick:e[2]||(e[2]=t=>j.value="")},"â")):W("",!0)]),d("button",{class:K(["my-location-btn",{locating:z.value}]),onClick:jt,disabled:z.value},[e[11]||(e[11]=d("span",{class:"location-icon"},"ð",-1)),d("span",ca,x(z.value?"ìì¹ íì¸ ì¤...":"ë´ ìì¹ë¡ ì´ë"),1)],10,la),te.value&&pe.value.length>0?(E(),A("div",da,[(E(!0),A(rt,null,lt(pe.value,(t,v)=>(E(),A("div",{key:v,class:"search-result-item",onMousedown:xe(k=>
101qt(t),["prevent"])},[d("div",fa,x(t.ê°ë§¹ì ëª
),1),d("div",pa,x(t.ì¬ì
ì¥ì£¼ì),1),d("div",va,x(t.ì¹´í
ê³ ë¦¬),1)],40,ua))),128))])):te.value&&j.value&&pe.value.length===0?(E(),A("div",ha," ê²ì ê²°ê³¼ê° ììµëë¤. ")):W("",!0)]),dt(En,{isOpen:we.value,storeData:Ze.value||{},onClose:e[3]||(e[3]=t=>we.value=!1),onSubmitted:e[4]||(e[4]=t=>we.value=!1)},null,8,["isOpen","storeData"]),f.value?(E(),A("div",{key:2,class:"fixed inset-0 bg-slate-900/40 backdrop-blur-sm flex items-center justify-center z-[70] p-4",onClick:e[5]||(e[5]=xe(t=>f.value=!1,["self"]))},[d("div",{class:"bg-white rounded-2xl w-full max-w-sm shadow-xl border border-slate-100 overflow-hidden"},[d("div",{class:"p-6 text-center"},[e[12]||(e[12]=qe('<div class="w-12 h-12 mx-auto bg-amber-100 rounded-full flex items-center justify-center mb-3 text-amber-600 border border-amber-200" data-v-69bdbb79><i class="material-icons text-2xl" data-v-69bdbb79>warning_amber</i></div><h3 class="text-sm font-bold text-slate-800 mb-2 leading-relaxed" data-v-69bdbb79>ê°ë§¹ì ë°ì´í° ìì</h3><p class="text-xs text-slate-600 mb-6 bg-slate-50 p-3 rounded-lg border border-slate-100 font-semibold leading-relaxed" data-v-69bdbb79> íì¬ ë¶ë¬ì¬ ê°ë§¹ì ë°ì´í°ê° ììµëë¤.<br data-v-69bdbb79><strong class="text-slate-800" data-v-69bdbb79>[ì본ìë£ê´ë¦¬ â ìë£ê´ë¦¬]</strong> ë©ë´ìì ì본 ìì
ë°ì´í°ë¥¼ 먼ì ì
ë¡ëí´ ì£¼ì¸ì. </p>',3)),d("button",{type:"button",class:"w-full py-2.5 bg-indigo-600 hover:bg-indigo-700 text-white font-semibold rounded-xl text-xs transition cursor-pointer shadow-lg shadow-indigo-500/10",onClick:b}," íì¸ ")])])])):W("",!0),dt(Xt,{name:"toast-fade"},{default:Yt(()=>[le.value?(E(),A("div",ga,[d("div",{class:K(["toast-message",[`toast-${Te.value}`]])},[d("span",wa,x(Te.value==="success"?"check_circle":"error"),1),d("span",null,x(Qe.value),1)],2)])):W("",!0)]),_:1})]))}},ba=wt(ka,[["__scopeId","data-v-69bdbb79"]]),Ca=Object.freeze(Object.defineProperty({__proto__:null,default:ba},Symbol.toStringTag,{value:"Module"}));export{ba as M,xa as a,$a as b,gt as c,Ca as d,Sa as f,hn as h,Ma as s};
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.