{"version":3,"file":"ReceiptLabelComponent.CM3d7TiN.mjs","names":["transitionStyle","c","primaryDiscountedPrice","secondaryDiscountedPrice","FadeIn"],"sources":["https:/framerusercontent.com/modules/OM3DCPQsxhCoiGUHGyyF/lfkRdMabO2cAhDZgEcQf/CheckAuth.js","https:/framerusercontent.com/modules/EIVOVFb6xjz6Fvh11iJi/mGNLIbGl1bV8oLokpq42/VacationDisplay.js","https:/framerusercontent.com/modules/jTRIrvvdhM8hGc8tF4E7/xkSn8HvNjOGSgOcNkrDi/EvaluateCoupons.js","https:/framerusercontent.com/modules/k847LPNIMdkhfIs0ouwF/8wYXP1kMQ0pizh4Yc79I/AdditionalService.js","https:/framerusercontent.com/modules/t32tReeHmrCTzbf5rVbb/w2o6Bo1vgCXIPZPl9vfv/PriceDisplay.js","https:/framerusercontent.com/modules/VB0CUTtrSV4ToCjcWKaC/vaRHCMvbBpgm9IkHGMfe/ReceiptLabelComponent.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState}from\"react\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";import{useStore}from\"https://framerusercontent.com/modules/r9TbzE6j44OxXp6KiYut/RlWsmNJXb8w0pYhdTV4g/MonthDisplay.js\";import{isReservationPairValid}from\"https://framerusercontent.com/modules/LzxMy0FNdnlR5hkoagxA/kHN8eHcAX97YY4duGnoj/WeekComponent.js\";import{createReservationMessage}from\"https://framerusercontent.com/modules/cc8dQZibFTGkGc1c3gcs/kb1jPFWq6sM7b3hZANQF/messages.js\";import{sendSMS,sendEmail}from\"https://framerusercontent.com/modules/eDrJcddZ1hupSaFjnFha/jRxRo7543ALk5DJ5WdKS/notify.js\";import{ADMIN_PHONES,ADMIN_EMAILS}from\"https://framerusercontent.com/modules/7m7uk25602Uk07oVuukZ/6elDV7iDa6daOtmu4Zi5/adminContacts.js\";function getKSTDate(baseDate=new Date){const utc=baseDate.getTime()+baseDate.getTimezoneOffset()*6e4;return new Date(utc+9*60*60*1e3);}function getKSTISOString(date=new Date){const kstDate=getKSTDate(date);const pad=n=>String(n).padStart(2,\"0\");const year=kstDate.getFullYear();const month=pad(kstDate.getMonth()+1);const day=pad(kstDate.getDate());const hours=pad(kstDate.getHours());const minutes=pad(kstDate.getMinutes());const seconds=pad(kstDate.getSeconds());return`${year}-${month}-${day}T${hours}:${minutes}:${seconds}+09:00`;}const useAuthStore=createStore({temp_id:null,temp_password:null});export function formatDate({year,month,day}){const paddedMonth=String(month+1).padStart(2,\"0\")// month는 0-based\n;const paddedDay=String(day).padStart(2,\"0\");return`${year}-${paddedMonth}-${paddedDay}`;}export function parseDate(dateStr){const[yearStr,monthStr,dayStr]=dateStr.split(\"-\");const year=parseInt(yearStr);const month=parseInt(monthStr)-1// zero-based\n;const day=parseInt(dayStr);if(isNaN(year)||isNaN(month)||isNaN(day))return null;return{year,month,day};}function safeParseDate(input){const date=new Date(input);return isNaN(date.getTime())?null:date;}export function toggleID(Component){return props=>{const[store,setStore]=useAuthStore();const handleChange=event=>{const inputValue=event.target.value;setStore({temp_id:inputValue});};return /*#__PURE__*/_jsx(Component,{...props,onChange:handleChange});};}export function togglePassword(Component){return props=>{const[store,setStore]=useAuthStore();const handleChange=event=>{const inputValue=event.target.value;setStore({temp_password:inputValue});};return /*#__PURE__*/_jsx(Component,{...props,type:\"password\",onChange:handleChange});};}export function unsafeRequestLogin(Component){return props=>{const[authStore]=useAuthStore();const[_,setStore]=useStore();const handleClick=async()=>{try{const response=await fetch(\"https://terene-db-server.onrender.com/api/customers\");const data=await response.json();const matchedUser=data.find(user=>user.id===authStore.temp_id&&user.password===authStore.temp_password);if(matchedUser){const encodedMembershipNumber=btoa(matchedUser.membership_number);if(matchedUser.membership_number===\"A-00000001\"){window.location.href=`/admin-table?mn=${encodedMembershipNumber}`;}else{window.location.href=`/reservation-2?mn=${encodedMembershipNumber}`;}}else{alert(\"로그인 실패: 계정 ID 또는 비밀번호가 틀렸습니다.\");}}catch(error){alert(\"로그인 요청 중 오류가 발생하였습니다.\");window.location.href=\"/reservation-1\";}};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick});};}export function unsafeKeep2Login(Component){return props=>{const[decodedMembershipNumber,setDecodedMembershipNumber]=useState(null);const[store,setStore]=useStore();useEffect(()=>{const verifyMembershipNumber=async()=>{const queryParams=new URLSearchParams(window.location.search);const encodedMembershipNumber=queryParams.get(\"mn\");// mn이 유효한지 체크하는 로직\nif(!encodedMembershipNumber){return;}try{const decoded=atob(encodedMembershipNumber);const response=await fetch(\"https://terene-db-server.onrender.com/api/customers\");const data=await response.json();const matchedUser=data.find(user=>user.membership_number===decoded);if(matchedUser){setStore({membership_number:matchedUser.membership_number,membership:matchedUser.membership_grade,remarks:matchedUser.remarks});}else{if(encodedMembershipNumber){alert(\"회원 정보가 데이터베이스에서 확인되지 않았습니다.\");window.location.href=\"/reservation-1\";}else{setStore({membership_number:null,membership:\"Non-Member\"});}}}catch(error){if(encodedMembershipNumber){alert(\"회원 정보가 데이터베이스에서 확인되지 않았습니다.\");window.location.href=\"/reservation-1\";}else{setStore({membership_number:null,membership:\"Non-Member\"});}}};verifyMembershipNumber();},[]);const isLoggedIn=!!decodedMembershipNumber;return /*#__PURE__*/_jsx(Component,{...props});};}export function unsafe2to3(Component){return props=>{const[authStore]=useAuthStore();const[store]=useStore();const handleClick=async()=>{const queryParams=new URLSearchParams(window.location.search);const encodedMembershipNumber=queryParams.get(\"mn\");const decoded=atob(encodedMembershipNumber);const firstDate=store.firstDate;const secondDate=store.secondDate;// first와 second 값이 둘 다 있어야만 URL에 추가하도록 조건을 설정\nif(!firstDate||!secondDate){alert(\"일정을 선택해주세요\");return;}const first=formatDate(firstDate);const second=formatDate(secondDate);const baseUrl=\"/reservation-4\";const params=new URLSearchParams;//////////////////////////////\nif(encodedMembershipNumber){params.set(\"mn\",encodedMembershipNumber);}params.set(\"first\",first);params.set(\"second\",second);window.location.href=`${baseUrl}?${params.toString()}`;return;};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick});};}export function unsafe2to3toss(Component){return props=>{const[authStore]=useAuthStore();const[store]=useStore();const handleClick=async()=>{const queryParams=new URLSearchParams(window.location.search);const encodedMembershipNumber=queryParams.get(\"mn\");const decoded=atob(encodedMembershipNumber);const firstDate=store.firstDate;const secondDate=store.secondDate;// first와 second 값이 둘 다 있어야만 URL에 추가하도록 조건을 설정\nif(!firstDate||!secondDate){alert(\"일정을 선택해주세요\");return;}const first=formatDate(firstDate);const second=formatDate(secondDate);// Toss Payments 심사를 위한 코드\nconst baseUrl=decoded&&decoded===\"U-99999999\"?\"/reservation-3-toss\":\"/reservation-3\";const params=new URLSearchParams;//////////////////////////////\nif(encodedMembershipNumber){params.set(\"mn\",encodedMembershipNumber);}params.set(\"first\",first);params.set(\"second\",second);window.location.href=`${baseUrl}?${params.toString()}`;return;};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleClick});};}export function unsafeKeep3Login(Component){return props=>{const[decodedMembershipNumber,setDecodedMembershipNumber]=useState(null);const[store,setStore]=useStore();useEffect(()=>{const verifyMembershipNumber=async()=>{const queryParams=new URLSearchParams(window.location.search);const encodedMembershipNumber=queryParams.get(\"mn\");const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;if(!firstDate||!secondDate){alert(\"날짜가 선택되지 않은 채로 넘어와 오류가 발생했습니다. 로그인 화면으로 돌아갑니다.\");window.location.href=`/reservation-1`;return;}try{const decoded=atob(encodedMembershipNumber);// 고객 정보 가져오기\nconst response=await fetch(\"https://terene-db-server.onrender.com/api/customers\");const data=await response.json();const matchedUser=data.find(user=>user.membership_number===decoded);// 날짜 점유 정보 가져오기\nconst dayRes=await fetch(\"https://terene-db-server.onrender.com/api/days\");const dayData=await dayRes.json();const dayInfoMap=new Map;dayData.forEach(item=>{dayInfoMap.set(item.date,{isHoliday:item.is_holiday,checkin:item.checkin,checkout:item.checkout});});const dateToString=({year,month,day})=>`${year}-${String(month+1).padStart(2,\"0\")}-${String(day).padStart(2,\"0\")}`;const dateToTime=({year,month,day})=>new Date(year,month,day).getTime();const today=getKSTDate();today.setHours(0,0,0,0);const firstTime=new Date(firstDate.year,firstDate.month,firstDate.day);const secondTime=new Date(secondDate.year,secondDate.month,secondDate.day);const diffDays=Math.abs((secondTime.getTime()-firstTime.getTime())/(1e3*60*60*24));if(diffDays>=4){alert(\"예약이 불가능한 날짜가 선택된 채로 넘어왔습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}if(firstTime.getTime()<today.getTime()){alert(\"예약이 불가능한 날짜가 선택된 채로 넘어왔습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}const firstStr=dateToString(firstDate);const secondStr=dateToString(secondDate);const firstInfo=dayInfoMap.get(firstStr);const secondInfo=dayInfoMap.get(secondStr);if(firstInfo?.checkin?.is_occupied){alert(\"예약이 불가능한 날짜가 선택된 채로 넘어왔습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}if(secondInfo?.checkout?.is_occupied){alert(\"예약이 불가능한 날짜가 선택된 채로 넘어왔습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}// 사이 날짜 점유 여부 확인\nfor(let d=new Date(firstTime.getTime()+864e5);d<secondTime;d.setDate(d.getDate()+1)){const key=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,\"0\")}-${String(d.getDate()).padStart(2,\"0\")}`;const info=dayInfoMap.get(key);if(info?.checkin?.is_occupied||info?.checkout?.is_occupied){alert(\"예약이 불가능한 날짜가 선택된 채로 넘어왔습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}}if(matchedUser){const membership=matchedUser.membership_grade;if(!isReservationPairValid(today,firstTime,secondTime,membership)){alert(\"예약이 불가능한 날짜가 선택된 채로 넘어왔습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}setStore({membership_number:matchedUser.membership_number,name:matchedUser.name_kor,birthdate:matchedUser.birthdate,phone:matchedUser.phone,email:matchedUser.email,membership:matchedUser.membership_grade,remarks:matchedUser.remarks,ownedMileage:Number(matchedUser.owned_mileage),expiredCoupons:matchedUser.used_coupons});}else{if(encodedMembershipNumber){alert(\"회원 정보가 데이터베이스에서 확인되지 않았습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}else{const membership=\"Non-Member\";if(!isReservationPairValid(today,firstTime,secondTime,membership)){alert(\"예약이 불가능한 날짜가 선택된 채로 넘어왔습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}setStore({// firstDate: null,\n// secondDate: null,\nmembership_number:null,membership:\"Non-Member\"});}}}catch(error){if(encodedMembershipNumber){alert(\"회원 정보가 데이터베이스에서 확인되지 않았습니다. 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;}else{alert(\"데이터베이스에서 일시적인 오류가 발생하여 로그인 화면으로 돌아갑니다.\");window.location.href=\"/reservation-1\";return;setStore({// firstDate: firstDate,\n// secondDate: secondDate,\nmembership_number:null,membership:\"Non-Member\"});}}};verifyMembershipNumber();},[]);const isLoggedIn=!!decodedMembershipNumber;return /*#__PURE__*/_jsx(Component,{...props});};}export function unsafeKeepAdminLogin(Component){return props=>{const[decodedMembershipNumber,setDecodedMembershipNumber]=useState(null);// const [store, setStore] = useStore()\nuseEffect(()=>{const verifyMembershipNumber=async()=>{const queryParams=new URLSearchParams(window.location.search);const encodedMembershipNumber=queryParams.get(\"mn\");if(!encodedMembershipNumber){window.location.href=\"/reservation-1\";return;}const decoded=atob(encodedMembershipNumber);if(decoded!==\"A-00000001\"){window.location.href=\"/reservation-1\";return;}};verifyMembershipNumber();},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function showFinalPrice(Component){return props=>{const[finalPrice,setFinalPrice]=useState(null);useEffect(()=>{const findFinalPrice=async()=>{const queryParams=new URLSearchParams(window.location.search);const orderId=queryParams.get(\"tereneOrderId\");if(!orderId){window.location.href=\"/reservation-1\";return;}try{const response=await fetch(\"https://terene-db-server.onrender.com/api/orders\");if(!response.ok){throw new Error(\"Failed to fetch orders\");}const orders=await response.json();const order=orders.find(o=>o.order_id===orderId);if(!order){setFinalPrice(0);alert(\"orderId가 유효하지 않습니다\");window.location.href=\"/reservation-1\";return;}setFinalPrice(order.final_price);}catch(error){setFinalPrice(0);alert(`orderId가 유효하지 않습니다\n에러메시지: ${error}`);window.location.href=\"/reservation-1\";return;}};findFinalPrice();},[]);return /*#__PURE__*/_jsx(Component,{...props,text:`입금금액 : ${Number(finalPrice).toLocaleString()}`});};}export function acceptPayment(Component){return props=>{const[finalPrice,setFinalPrice]=useState(null);useEffect(()=>{const updatePaymentStatus=async()=>{const queryParams=new URLSearchParams(window.location.search);const orderId=queryParams.get(\"tereneOrderId\");if(!orderId){window.location.href=\"/reservation-1\";return;}try{const response=await fetch(\"https://terene-db-server.onrender.com/api/orders\");if(!response.ok){throw new Error(\"Failed to fetch orders\");}const orders=await response.json();const order=orders.find(o=>o.order_id===orderId);if(!order){alert(\"orderId가 유효하지 않습니다\");window.location.href=\"/reservation-1\";return;}order[\"payment_status\"]=\"accepted\";order[\"payment_timeline\"][\"approval_datetime\"]=getKSTISOString();const status_response=await fetch(`https://terene-db-server.onrender.com/api/orders/${orderId}`,{method:\"PUT\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(order)});if(!status_response.ok){const errorText=await status_response.text();throw new Error(`HTTP ${status_response.status} - ${errorText}`);}let client_title=null;let client_message=null;let admin_title=null;let admin_message=null;if(order[\"payment_status\"]===\"accepted\"){const row=order;({client_title,client_message,admin_title,admin_message}=createReservationMessage(\"confirmed\",row));if(client_title&&client_message&&admin_title&&admin_message){try{for(const phone of ADMIN_PHONES){await sendSMS(phone,admin_message);}for(const email of ADMIN_EMAILS){await sendEmail(email,admin_title,admin_message);}await sendSMS(row[\"reserver_contact\"],client_message);if(row[\"refund_info\"]?.[\"refund_phone\"]&&row[\"reserver_contact\"].replace(/[^0-9]/g,\"\")!==row[\"refund_info\"][\"refund_phone\"].replace(/[^0-9]/g,\"\")){await sendSMS(row[\"refund_info\"][\"refund_phone\"],client_message);}await sendEmail(row[\"reserver_email\"],client_title,client_message);}catch(notifyError){console.error(\"알림 전송 중 오류:\",notifyError);alert(\"예약은 처리되었으나 알림 전송에 실패했습니다.\\n관리자에게 별도 확인을 부탁드립니다.\");}}}setFinalPrice(order.final_price);}catch(error){alert(`orderId가 유효하지 않습니다\n에러메시지: ${error}`);window.location.href=\"/reservation-1\";}};updatePaymentStatus();},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function declinePayment(Component){return props=>{useEffect(()=>{const updateCancellationStatus=async()=>{const queryParams=new URLSearchParams(window.location.search);const orderId=queryParams.get(\"tereneOrderId\");if(!orderId){window.location.href=\"/reservation-1\";return;}try{const response=await fetch(\"https://terene-db-server.onrender.com/api/orders\");if(!response.ok){throw new Error(\"Failed to fetch orders\");}const orders=await response.json();const order=orders.find(o=>o.order_id===orderId);if(!order){alert(\"orderId가 유효하지 않습니다\");window.location.href=\"/reservation-1\";return;}// 결제 취소 처리\norder[\"payment_status\"]=\"cancelled\";order[\"payment_timeline\"][\"cancellation_datetime\"]=getKSTISOString();const cancelRes=await fetch(`https://terene-db-server.onrender.com/api/orders/${orderId}`,{method:\"PUT\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(order)});if(!cancelRes.ok){const errorText=await cancelRes.text();throw new Error(`HTTP ${cancelRes.status} - ${errorText}`);}// 날짜 점유 해제\nconst getAllDaysRes=await fetch(`https://terene-db-server.onrender.com/api/days`);if(!getAllDaysRes.ok){const errorText=await getAllDaysRes.text();throw new Error(`HTTP ${getAllDaysRes.status} - ${errorText}`);}const allDays=await getAllDaysRes.json();const dateRange=[];let current=new Date(order[\"start_date\"]);const end=new Date(order[\"end_date\"]);while(current<=end){const yyyyMMdd=current.toISOString().split(\"T\")[0];dateRange.push(yyyyMMdd);current.setDate(current.getDate()+1);}const targetDays=allDays.filter(day=>dateRange.includes(day.date)&&(day.checkin?.occupied_order_id===orderId||day.checkout?.occupied_order_id===orderId));for(const day of targetDays){const updatedDay={...day};const isFirstDate=day.date===order[\"start_date\"];const isLastDate=day.date===order[\"end_date\"];if(isFirstDate){updatedDay.checkin={is_occupied:false,occupied_order_id:null};}else if(isLastDate){updatedDay.checkout={is_occupied:false,occupied_order_id:null};}else{updatedDay.checkin={is_occupied:false,occupied_order_id:null};updatedDay.checkout={is_occupied:false,occupied_order_id:null};}const res=await fetch(`https://terene-db-server.onrender.com/api/days/${day.date}`,{method:\"PUT\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(updatedDay)});if(!res.ok){const errText=await res.text();throw new Error(`Failed to release occupancy for ${day.date}: HTTP ${res.status} - ${errText}`);}}// 모든 작업 완료 후 리디렉션\nwindow.location.href=\"/reservation-1\";}catch(error){alert(`예약 취소 중 오류 발생\n에러메시지: ${error}`);window.location.href=\"/reservation-1\";}};updateCancellationStatus();},[]);return /*#__PURE__*/_jsx(Component,{...props});};}\nexport const __FramerMetadata__ = {\"exports\":{\"unsafeKeep2Login\":{\"type\":\"reactHoc\",\"name\":\"unsafeKeep2Login\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"declinePayment\":{\"type\":\"reactHoc\",\"name\":\"declinePayment\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toggleID\":{\"type\":\"reactHoc\",\"name\":\"toggleID\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"unsafe2to3toss\":{\"type\":\"reactHoc\",\"name\":\"unsafe2to3toss\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"unsafeKeepAdminLogin\":{\"type\":\"reactHoc\",\"name\":\"unsafeKeepAdminLogin\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parseDate\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"unsafeKeep3Login\":{\"type\":\"reactHoc\",\"name\":\"unsafeKeep3Login\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"togglePassword\":{\"type\":\"reactHoc\",\"name\":\"togglePassword\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showFinalPrice\":{\"type\":\"reactHoc\",\"name\":\"showFinalPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"acceptPayment\":{\"type\":\"reactHoc\",\"name\":\"acceptPayment\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formatDate\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"unsafe2to3\":{\"type\":\"reactHoc\",\"name\":\"unsafe2to3\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"unsafeRequestLogin\":{\"type\":\"reactHoc\",\"name\":\"unsafeRequestLogin\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// VacationDisplay.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useStore,MONTH_NAMES}from\"https://framerusercontent.com/modules/r9TbzE6j44OxXp6KiYut/RlWsmNJXb8w0pYhdTV4g/MonthDisplay.js\";import{parseDate}from\"https://framerusercontent.com/modules/OM3DCPQsxhCoiGUHGyyF/lfkRdMabO2cAhDZgEcQf/CheckAuth.js\";const transitionStyle=visible=>({opacity:visible?1:0,color:\"inherit\",transition:\"opacity 0.3s ease-in-out\",display:\"inline-block\"});const WEEKDAYS=[\"일\",\"월\",\"화\",\"수\",\"목\",\"금\",\"토\"];function formatFullDate(date){const d=new Date(date.year,date.month,date.day);const weekday=WEEKDAYS[d.getDay()];return`${d.getFullYear()}.${String(d.getMonth()+1).padStart(2,\"0\")}.${String(d.getDate()).padStart(2,\"0\")} (${weekday})`;}function calculatePeriod(start,end){const msPerDay=1e3*60*60*24;const days=Math.round((end.getTime()-start.getTime())/msPerDay);const nights=days;const fullDays=days+1;return`${nights}박 ${fullDays}일`;}export function displayStartMonth(Component){return props=>{const[store]=useStore();const start=store.firstDate;const end=store.secondDate;const show=!!start;const showYear=start&&end&&start.year!==end.year;const text=start?`${showYear?`${start.year}`:`${start.year}`}. ${MONTH_NAMES[start.month]}`:\"\";return /*#__PURE__*/_jsx(Component,{...props,text:text,style:transitionStyle(show)});};}export function displayStartDay(Component){return props=>{const[store]=useStore();const start=store.firstDate;const text=start?String(start.day).padStart(2,\"0\"):\"\";const show=!!start;return /*#__PURE__*/_jsx(Component,{...props,text:text,style:transitionStyle(show)});};}export function displayEndMonth(Component){return props=>{const[store]=useStore();const start=store.firstDate;const end=store.secondDate;const show=!!end;const showYear=start&&end&&start.year!==end.year;const text=end?`${showYear?`${end.year}`:`${end.year}`}. ${MONTH_NAMES[end.month]}`:\"\";return /*#__PURE__*/_jsx(Component,{...props,text:text,style:transitionStyle(show)});};}export function displayEndDay(Component){return props=>{const[store]=useStore();const end=store.secondDate;const text=end?String(end.day).padStart(2,\"0\"):\"\";const show=!!end;return /*#__PURE__*/_jsx(Component,{...props,text:text,style:transitionStyle(show)});};}export function displayStartDate(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const start=store.firstDate||firstDate;const end=store.secondDate||secondDate;const show=!!start&&!!end;const text=show?formatFullDate(start):\"\";return /*#__PURE__*/_jsx(Component,{...props,text:text,style:transitionStyle(show)});};}export function displayEndDate(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const start=store.firstDate||firstDate;const end=store.secondDate||secondDate;const show=!!start&&!!end;const text=show?formatFullDate(end):\"\";return /*#__PURE__*/_jsx(Component,{...props,text:text,style:transitionStyle(show)});};}export function displayTilde(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const start=store.firstDate||firstDate;const end=store.secondDate||secondDate;const show=!!start&&!!end;return /*#__PURE__*/_jsx(Component,{...props,text:show?\" ~ \":\"\",style:transitionStyle(show)});};}export function displayPeriod(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const start=store.firstDate||firstDate;const end=store.secondDate||secondDate;const show=!!start&&!!end;const text=show?calculatePeriod(new Date(start.year,start.month,start.day),new Date(end.year,end.month,end.day)):\"\";return /*#__PURE__*/_jsx(Component,{...props,text:text,style:transitionStyle(show)});};}\nexport const __FramerMetadata__ = {\"exports\":{\"displayEndDate\":{\"type\":\"reactHoc\",\"name\":\"displayEndDate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayStartDate\":{\"type\":\"reactHoc\",\"name\":\"displayStartDate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayPeriod\":{\"type\":\"reactHoc\",\"name\":\"displayPeriod\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayStartMonth\":{\"type\":\"reactHoc\",\"name\":\"displayStartMonth\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayTilde\":{\"type\":\"reactHoc\",\"name\":\"displayTilde\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayEndDay\":{\"type\":\"reactHoc\",\"name\":\"displayEndDay\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayEndMonth\":{\"type\":\"reactHoc\",\"name\":\"displayEndMonth\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayStartDay\":{\"type\":\"reactHoc\",\"name\":\"displayStartDay\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// EvaluateCoupons.ts\nimport{membershipPrices,unmuDayLimits}from\"https://framerusercontent.com/modules/eNYxylYRmdtVvI7ZdKLb/Ot7zjBRIBRHOoe1bXpLu/UnmuMembership.js\";function getKSTDate(baseDate=new Date){const utc=baseDate.getTime()+baseDate.getTimezoneOffset()*6e4;return new Date(utc+9*60*60*1e3);}function toDate(obj){return new Date(obj.year,obj.month,obj.day);}function getKey(d){return`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,\"0\")}-${String(d.getDate()).padStart(2,\"0\")}`;}// Step 1: Initial price 계산\nexport function calculateInitialPrices(store,categoryMap,firstDate,secondDate){let first=null;let second=null;if(firstDate&&secondDate){first=toDate(firstDate);second=new Date(toDate(secondDate));}else{first=toDate(store.firstDate);second=new Date(toDate(store.secondDate));}second.setDate(second.getDate()-1)// 퇴실일은 계산에 포함 X\n;const dailyItems=[];const basePrices=[];const categoryCount={Weekday:0,Weekend:0,Peak:0};const isUnmu=[\"UNMU 6\",\"UNMU 9\",\"UNMU 12\",\"UNMU 24\",\"TERENE 6\",\"TERENE 9\",\"TERENE 12\",\"TERENE 24\"].includes(store.membership);for(let d=new Date(first);d<=second;d.setDate(d.getDate()+1)){const key=getKey(d);const category=categoryMap[key]??\"Weekday\";const basePrice=membershipPrices[\"Non-Member\"][category];basePrices.push(basePrice);let price;if(store.membership===\"Non-Member\"){price=basePrice;}else if(isUnmu){const limits=unmuDayLimits[store.membership];let categoryKey=\"Weekday\";if(category===\"Weekend\")categoryKey=\"Weekend\";else if(category===\"Peak-Weekday\"||category===\"Peak-Weekend\")categoryKey=\"Peak\";const current=categoryCount[categoryKey];const allowed=limits[categoryKey];if(current<allowed){price=Math.round(basePrice*1);}else{price=Math.round(basePrice*1.4);}categoryCount[categoryKey]+=1;}else{// 'All-Free' case\nprice=0;}dailyItems.push({date:key,price,category});}// initialPrice는 basePrice만 더해서 계산\nconst initialPrice=basePrices.reduce((acc,val)=>acc+val,0);return{initialPrice,dailyItems};}/////////////////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport function filterCoupons(coupons,store,dailyItems){const{enteredCouponCode,signupDate}=store;const totalPrice=dailyItems.reduce((acc,i)=>acc+i.price,0);const stayLength=dailyItems.length;const stayDates=dailyItems.map(i=>i.date);const allCategories=new Set(dailyItems.map(i=>i.category));const now=getKSTDate();const passedCoupons=coupons.filter(c=>{if(!c.enabled)return false;if(c.type===\"code\"&&(!enteredCouponCode||!enteredCouponCode.includes(c.coupon_code))){return false;}// Check if validity_value (YYYY-MM-DD) is expired\nif(c.validity_value){const validityDate=new Date(`${c.validity_value}T00:00:00+09:00`)// KST\n;// console.log(JSON.stringify(validityDate))\n// console.log(now)\n// console.log(validityDate < now)\nif(validityDate<now)return false;}// Check if coupon_due (full ISO datetime) is expired\nif(c.coupon_due){const dueDate=new Date(c.coupon_due);if(dueDate<now)return false;}const conditions=Array.isArray(c.conditions_json)?c.conditions_json:[];for(const cond of conditions){if(cond.type===\"membership\"&&!cond.members.includes(store.membership)){return false;}if(cond.type===\"phase\"){// 1단계: phase 조건이 맞는지 확인\nif(!cond.phases.includes(store.phase)){return false;}// // 2단계: Phase-1일 때만 signup_date 조건 추가\n// if (store.phase === \"Phase-1\" && store.signup_date) {\n//     const signupDate = new Date(\n//         `${store.signup_date}T00:00:00+09:00`\n//     )\n//     const oneYearLater = new Date(signupDate)\n//     oneYearLater.setFullYear(oneYearLater.getFullYear() + 1)\n//     const today = getKSTDate()\n//     if (today > oneYearLater) {\n//         return false\n//     }\n// }\n}if(cond.type===\"revisit\"&&!cond.days.includes(store.revisit)){return false;}if(cond.type===\"minimum_price\"&&totalPrice<Number(cond.min??0)){return false;}if(cond.type===\"relay\"){if(stayLength<(Number(cond.min)??0))return false;if(cond.max&&stayLength>Number(cond.max))return false;}if(cond.type===\"date\"){const start=cond.startDate?getKSTDate(new Date(cond.startDate)):null;const end=cond.endDate?getKSTDate(new Date(cond.endDate)):null;const matched=stayDates.some(d=>{const date=getKSTDate(new Date(d));return(!start||date>=start)&&(!end||date<=end);});if(!matched){return false;}}if(cond.type===\"seasonal\"){const allowed=new Set(cond.allowedCategories||[]);const matched=[...allCategories].some(c=>allowed.has(c));if(!matched)return false;}}return true;});return{passedPrimaryCoupons:passedCoupons.filter(c=>c.discount_type===\"percentage\"&&c.type===\"global\"),passedSecondaryCoupons:passedCoupons.filter(c=>c.discount_type===\"percentage\"&&c.type===\"code\"||c.discount_type===\"fixed\")};}/////////////////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport function evaluateCoupons(primaryCoupons,secondaryCoupons,dailyItems,store){const totalPrice=dailyItems.reduce((sum,d)=>sum+d.price,0);const ignoredCodeCoupons=[];if(store?.membership===\"All-Free\"){const id=\"all-free\";const baseCoupon={id,name:id,description:id,amount:totalPrice};return{primaryDiscountedPrice:0,secondaryDiscountedPrice:0,primaryDetails:[baseCoupon],secondaryDetails:[]};}let primaryTotalDiscount=0;let secondaryTotalDiscount=0;const primaryDetailsMap1=new Map// Step 1\n;const primaryDetailsMap2=new Map// Step 2\n;const secondaryDetailsMap=new Map;const couponRemainingScope=new Map;for(const c of[...primaryCoupons,...secondaryCoupons]){const scope=c.scope??-1;couponRemainingScope.set(c.coupon_instance_id||c.coupon_definition_id,scope);}for(let i=0;i<dailyItems.length;i++){const day=dailyItems[i];const originalPrice=day.price;let primaryDiscountedPrice=originalPrice;const dateStr=day.date;// === Step 1: Primary Coupons ===\nfor(const coupon of primaryCoupons){if(coupon.discount_type!==\"percentage\")continue;const couponId=coupon.coupon_instance_id||coupon.coupon_definition_id;const remainingScope=couponRemainingScope.get(couponId);if(remainingScope===0)continue;const conditions=Array.isArray(coupon.conditions_json)?coupon.conditions_json:[];let skipCoupon=false;for(const cond of conditions){// Phase 조건 로직\nif(cond.type===\"phase\"){if(!cond.phases.includes(store?.phase)){skipCoupon=true;break;}// Phase-1이면 signup_date로부터 1년 지난 경우 skip\nif(store?.phase===\"Phase-1\"&&store.signup_date&&day.date// 현재 날짜 문자열\n){const signupDate=new Date(`${store.signup_date}T00:00:00+09:00`);const oneYearLater=new Date(signupDate);oneYearLater.setFullYear(oneYearLater.getFullYear()+1);const currentDate=getKSTDate(new Date(day.date));if(currentDate>oneYearLater){skipCoupon=true;break;}}}if(cond.type===\"relay\"&&i===0){skipCoupon=true;break;}if(cond.type===\"seasonal\"){const allowed=new Set(cond.allowedCategories||[]);if(!allowed.has(day.category)){skipCoupon=true;break;}}if(cond.type===\"date\"){const start=cond.startDate?getKSTDate(new Date(cond.startDate)):null;const end=cond.endDate?getKSTDate(new Date(cond.endDate)):null;const current=getKSTDate(new Date(dateStr));if(start&&current<start||end&&current>end){skipCoupon=true;break;}}}if(skipCoupon)continue;const discountValue=Number(coupon.discount_value);let max_amount=Infinity;for(const cond of conditions){if(cond.type===\"applied_discount\"&&cond.max){max_amount=Number(cond.max);}}let amount=Math.min(Math.round(originalPrice*(discountValue/100)),max_amount);if(primaryDiscountedPrice<amount)amount=primaryDiscountedPrice;if(amount>0){primaryDiscountedPrice-=amount;primaryTotalDiscount+=amount;const existing=primaryDetailsMap1.get(couponId);if(existing)existing.amount+=amount;else{primaryDetailsMap1.set(couponId,{id:couponId,name:coupon.name,description:coupon.description,amount});}if(remainingScope>0){couponRemainingScope.set(couponId,remainingScope-1);}}}// === Step 2: Membership Coupon ===\nconst membershipCoupon=store?.membershipCouponByDate?.[dateStr];const def=membershipCoupon?.definition;if(membershipCoupon&&def){const discountValue=Number(def.discount_value);let amount=0;if(def.discount_type===\"percentage\"){amount=Math.round(primaryDiscountedPrice*(discountValue/100));}else if(def.discount_type===\"fixed\"){amount=discountValue;}if(primaryDiscountedPrice<amount)amount=primaryDiscountedPrice;if(amount>0){primaryDiscountedPrice-=amount;primaryTotalDiscount+=amount;const id=membershipCoupon.coupon_instance_id;const existing=primaryDetailsMap2.get(id);if(existing)existing.amount+=amount;else{primaryDetailsMap2.set(id,{id,name:membershipCoupon.name??id,description:def.description??\"\",amount});}}}let secondaryDiscountedPrice=primaryDiscountedPrice;// === Step 3: Secondary Coupons (percentage only) ===\nfor(const coupon of secondaryCoupons){if(coupon.discount_type!==\"percentage\")continue;const couponId=coupon.coupon_instance_id||coupon.coupon_definition_id;const remainingScope=couponRemainingScope.get(couponId);if(remainingScope===0)continue;const conditions=Array.isArray(coupon.conditions_json)?coupon.conditions_json:[];let skipCoupon=false;for(const cond of conditions){// Phase 조건 로직\nif(cond.type===\"phase\"){if(!cond.phases.includes(store?.phase)){skipCoupon=true;break;}// Phase-1이면 signup_date로부터 1년 지난 경우 skip\nif(store?.phase===\"Phase-1\"&&store.signup_date&&day.date// 현재 날짜 문자열\n){const signupDate=new Date(`${store.signup_date}T00:00:00+09:00`);const oneYearLater=new Date(signupDate);oneYearLater.setFullYear(oneYearLater.getFullYear()+1);const currentDate=getKSTDate(new Date(day.date));if(currentDate>oneYearLater){skipCoupon=true;break;}}}if(cond.type===\"relay\"&&i===0){skipCoupon=true;break;}if(cond.type===\"seasonal\"){const allowed=new Set(cond.allowedCategories||[]);if(!allowed.has(day.category)){skipCoupon=true;break;}}if(cond.type===\"date\"){const start=cond.startDate?getKSTDate(new Date(cond.startDate)):null;const end=cond.endDate?getKSTDate(new Date(cond.endDate)):null;const current=getKSTDate(new Date(dateStr));if(start&&current<start||end&&current>end){skipCoupon=true;break;}}}if(skipCoupon)continue;const discountValue=Number(coupon.discount_value);let max_amount=Infinity;for(const cond of conditions){if(cond.type===\"applied_discount\"&&cond.max){max_amount=Number(cond.max);}}let amount=Math.min(Math.round(primaryDiscountedPrice*(discountValue/100)),max_amount);if(secondaryDiscountedPrice<amount)amount=secondaryDiscountedPrice;if(amount>0){secondaryDiscountedPrice-=amount;secondaryTotalDiscount+=amount;const existing=secondaryDetailsMap.get(couponId);if(existing)existing.amount+=amount;else{secondaryDetailsMap.set(couponId,{id:couponId,name:coupon.name,description:coupon.description,amount});}if(remainingScope>0){couponRemainingScope.set(couponId,remainingScope-1);}}}}const primaryDiscountedPrice=totalPrice-primaryTotalDiscount;// === Step 4: Remaining secondary coupons ===\nfor(const coupon of secondaryCoupons){if(coupon.discount_type!==\"fixed\")continue;const couponId=coupon.coupon_instance_id||coupon.coupon_definition_id;if(secondaryDetailsMap.has(couponId))continue;const discountValue=Number(coupon.discount_value);const amount=Math.min(discountValue,primaryDiscountedPrice-secondaryTotalDiscount);secondaryTotalDiscount+=amount;secondaryDetailsMap.set(couponId,{id:couponId,name:coupon.name,description:coupon.description,amount});}const primaryDetails=[...primaryDetailsMap1.values(),...primaryDetailsMap2.values()];const secondaryDiscountedPrice=primaryDiscountedPrice-secondaryTotalDiscount;return{primaryDiscountedPrice,secondaryDiscountedPrice,primaryDetails:primaryDetails,secondaryDetails:Array.from(secondaryDetailsMap.values())};}\nexport const __FramerMetadata__ = {\"exports\":{\"evaluateCoupons\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filterCoupons\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CategoryMap\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"calculateInitialPrices\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./EvaluateCoupons.map","// AdditionalService.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";const useAdditionalServiceStore=createStore({adult:1,teenager:0,child:0,checkedBBQGrill:false,checkedBBQFood:false,checkedStretch:false,checkedCatering:false,BBQGrillValue:\"1회\",BBQFoodValue:\"인원수\",StretchValue:\"인원수\",CateringValue:\"인원수\",BBQGrillPrice:2e4,BBQFoodPrice:2e4,StretchPrice:0,CateringPrice:0});function extractNumber(value){const match=value.match(/^(\\d+)(인|회)$/);return match?Number(match[1]):0;}export function createAdditionalServiceList(myStore,store){const serviceKeys=[\"BBQGrill\",\"BBQFood\",\"Stretch\",\"Catering\"];const labels={BBQGrill:\"BBQ 용품 준비\",BBQFood:\"BBQ 식재료 준비\",Stretch:\"모닝 스트레칭 클래스\",Catering:\"케이터링 서비스\"};const excludeValues=[\"인원수\",\"횟수\"];if(store.membership===\"All-Free\"){return serviceKeys.filter(key=>myStore[`checked${key}`]&&!excludeValues.includes(myStore[`${key}Value`])).map(key=>({type:labels[key],amount:0}));}return serviceKeys.filter(key=>myStore[`checked${key}`]&&!excludeValues.includes(myStore[`${key}Value`])).map(key=>({type:labels[key],amount:extractNumber(myStore[`${key}Value`])*myStore[`${key}Price`]}));}const TOTAL_MAX=10;const ADULT_MIN=1;const ADULT_MAX=8;const TEENAGER_MIN=0;const TEENAGER_MAX=6;const CHILD_MIN=0;const CHILD_MAX=8;// 텍스트 표시: 성인 n명\nexport function displayAdult(Component){return props=>{const[store]=useAdditionalServiceStore();const label=`성인   ${store.adult}명`;return /*#__PURE__*/_jsx(Component,{...props,text:label});};}// 텍스트 표시: 청소년/아동 n명\nexport function displayTeenager(Component){return props=>{const[store]=useAdditionalServiceStore();const label=`청소년/아동   ${store.teenager}명`;return /*#__PURE__*/_jsx(Component,{...props,text:label});};}// 텍스트 표시: 영유아 n명\nexport function displayChild(Component){return props=>{const[store]=useAdditionalServiceStore();const label=`영유아   ${store.child}명`;return /*#__PURE__*/_jsx(Component,{...props,text:label});};}// ✅ 체크 상태 토글 버튼\nexport function toggleBBQGrill(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const toggle=()=>{setStore({checkedBBQGrill:!store.checkedBBQGrill});};return /*#__PURE__*/_jsx(Component,{...props,onClick:toggle});};}export function toggleBBQFood(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const toggle=()=>{setStore({checkedBBQFood:!store.checkedBBQFood});};return /*#__PURE__*/_jsx(Component,{...props,onClick:toggle});};}export function toggleStretch(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const toggle=()=>{setStore({checkedStretch:!store.checkedStretch});};return /*#__PURE__*/_jsx(Component,{...props,onClick:toggle});};}export function toggleCatering(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const toggle=()=>{setStore({checkedCatering:!store.checkedCatering});};return /*#__PURE__*/_jsx(Component,{...props,onClick:toggle});};}export function handleBBQGrillDropdown(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const handleChange=event=>{const selectedValue=event.target.value;setStore({BBQGrillValue:selectedValue});};return /*#__PURE__*/_jsx(Component,{...props,value:store.BBQGrillValue,onChange:handleChange});};}export function handleBBQFoodDropdown(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const handleChange=event=>{const selectedValue=event.target.value;setStore({BBQFoodValue:selectedValue});};return /*#__PURE__*/_jsx(Component,{...props,value:store.BBQFoodValue,onChange:handleChange});};}export function handleStretchDropdown(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const handleChange=event=>{const selectedValue=event.target.value;setStore({StretchValue:selectedValue});};return /*#__PURE__*/_jsx(Component,{...props,value:store.StretchValue,onChange:handleChange});};}export function handleCateringDropdown(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const handleChange=event=>{const selectedValue=event.target.value;setStore({CateringValue:selectedValue});};return /*#__PURE__*/_jsx(Component,{...props,value:store.CateringValue,onChange:handleChange});};}// 증가 버튼: 성인\nexport function incrementAdult(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const increment=()=>{const total=store.adult+store.teenager;if(store.adult<ADULT_MAX&&total<TOTAL_MAX){setStore({adult:store.adult+1});}};return /*#__PURE__*/_jsx(Component,{...props,onClick:increment});};}// 감소 버튼: 성인\nexport function decrementAdult(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const decrement=()=>{if(store.adult>ADULT_MIN){setStore({adult:store.adult-1});}};return /*#__PURE__*/_jsx(Component,{...props,onClick:decrement});};}// 증가 버튼: 청소년/아동\nexport function incrementTeenager(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const increment=()=>{const total=store.adult+store.teenager;if(store.teenager<TEENAGER_MAX&&total<TOTAL_MAX){setStore({teenager:store.teenager+1});}};return /*#__PURE__*/_jsx(Component,{...props,onClick:increment});};}// 감소 버튼: 청소년/아동\nexport function decrementTeenager(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const decrement=()=>{if(store.teenager>TEENAGER_MIN){setStore({teenager:store.teenager-1});}};return /*#__PURE__*/_jsx(Component,{...props,onClick:decrement});};}// 증가 버튼: 영유아\nexport function incrementChild(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const increment=()=>{if(store.child<CHILD_MAX){setStore({child:store.child+1});}};return /*#__PURE__*/_jsx(Component,{...props,onClick:increment});};}// 감소 버튼: 영유아\nexport function decrementChild(Component){return props=>{const[store,setStore]=useAdditionalServiceStore();const decrement=()=>{if(store.child>CHILD_MIN){setStore({child:store.child-1});}};return /*#__PURE__*/_jsx(Component,{...props,onClick:decrement});};}export{useAdditionalServiceStore};\nexport const __FramerMetadata__ = {\"exports\":{\"decrementChild\":{\"type\":\"reactHoc\",\"name\":\"decrementChild\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"handleStretchDropdown\":{\"type\":\"reactHoc\",\"name\":\"handleStretchDropdown\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toggleCatering\":{\"type\":\"reactHoc\",\"name\":\"toggleCatering\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"decrementAdult\":{\"type\":\"reactHoc\",\"name\":\"decrementAdult\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toggleStretch\":{\"type\":\"reactHoc\",\"name\":\"toggleStretch\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayAdult\":{\"type\":\"reactHoc\",\"name\":\"displayAdult\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toggleBBQGrill\":{\"type\":\"reactHoc\",\"name\":\"toggleBBQGrill\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"handleCateringDropdown\":{\"type\":\"reactHoc\",\"name\":\"handleCateringDropdown\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"incrementChild\":{\"type\":\"reactHoc\",\"name\":\"incrementChild\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createAdditionalServiceList\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAdditionalServiceStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayChild\":{\"type\":\"reactHoc\",\"name\":\"displayChild\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"incrementTeenager\":{\"type\":\"reactHoc\",\"name\":\"incrementTeenager\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayTeenager\":{\"type\":\"reactHoc\",\"name\":\"displayTeenager\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"incrementAdult\":{\"type\":\"reactHoc\",\"name\":\"incrementAdult\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"decrementTeenager\":{\"type\":\"reactHoc\",\"name\":\"decrementTeenager\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"handleBBQGrillDropdown\":{\"type\":\"reactHoc\",\"name\":\"handleBBQGrillDropdown\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toggleBBQFood\":{\"type\":\"reactHoc\",\"name\":\"toggleBBQFood\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"handleBBQFoodDropdown\":{\"type\":\"reactHoc\",\"name\":\"handleBBQFoodDropdown\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AdditionalService.map","// PriceDisplay.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{useStore}from\"https://framerusercontent.com/modules/r9TbzE6j44OxXp6KiYut/RlWsmNJXb8w0pYhdTV4g/MonthDisplay.js\";import{useEffect,useMemo}from\"react\";import{calculateInitialPrices,filterCoupons,evaluateCoupons}from\"https://framerusercontent.com/modules/jTRIrvvdhM8hGc8tF4E7/xkSn8HvNjOGSgOcNkrDi/EvaluateCoupons.js\";import{useAdditionalServiceStore,createAdditionalServiceList}from\"https://framerusercontent.com/modules/k847LPNIMdkhfIs0ouwF/8wYXP1kMQ0pizh4Yc79I/AdditionalService.js\";import{parseDate}from\"https://framerusercontent.com/modules/OM3DCPQsxhCoiGUHGyyF/lfkRdMabO2cAhDZgEcQf/CheckAuth.js\";import{motion}from\"framer-motion\";const FadeIn=({children})=>/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:0},animate:{opacity:1,y:0},exit:{opacity:0,y:0},transition:{duration:.4,ease:\"easeOut\"},children:children});// ✅ 공휴일 카테고리 가져오기\nexport function useHolidayCategoryMap(){const[categories,setCategories]=React.useState({});const[isLoading,setIsLoading]=React.useState(true);React.useEffect(()=>{fetch(\"https://terene-db-server.onrender.com/api/days\").then(res=>res.json()).then(data=>{const map={};for(const item of data){map[item.date]=item.category;}setCategories(map);}).catch(err=>console.error(\"Holiday fetch error\",err)).finally(()=>setIsLoading(false));},[]);return{categories,isLoading};}// ✅ 문자열 → 카테고리 매핑\nexport function toCategoryMap(input){const allowed=[\"Weekday\",\"Weekend\",\"Peak-Weekday\",\"Peak-Weekend\"];const result={};for(const key in input){const value=input[key];result[key]=allowed.includes(value)?value:\"Weekday\";}return result;}export function useCoupons(){const[coupons,setCoupons]=React.useState([]);const[isLoading,setIsLoading]=React.useState(true);React.useEffect(()=>{async function fetchCoupons(){try{// Fetch definitions first\nconst defRes=await fetch(\"https://terene-db-server.onrender.com/api/v2/coupon-definitions\");const definitions=await defRes.json();// Separate global and code types (ignore membership)\nconst globalDefs=definitions.filter(def=>def.type===\"global\");const codeDefs=definitions.filter(def=>def.type===\"code\");// Fetch instances only if there are code definitions\nlet codeInstances=[];if(codeDefs.length>0){const instRes=await fetch(\"https://terene-db-server.onrender.com/api/v2/coupon-instances\");const instances=await instRes.json();codeInstances=instances.filter(inst=>codeDefs.some(def=>def.coupon_definition_id===inst.coupon_definition_id));}// Merge code definitions and their instances\nconst codeCoupons=codeInstances.map(inst=>{const def=codeDefs.find(d=>d.coupon_definition_id===inst.coupon_definition_id);return{...def,...inst};});// Combine global and code coupons\nconst combined=[...globalDefs,...codeCoupons];// Sort by optional priority if present\nconst sorted=combined.sort((a,b)=>(a.priority||0)-(b.priority||0));setCoupons(sorted);}catch(err){console.error(\"Coupon fetch error:\",err);}finally{setIsLoading(false);}}fetchCoupons();},[]);return{coupons,isLoading};}function useDiscountCalculation(){const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const{coupons,isLoading:couponLoading}=useCoupons();const isReady=store.firstDate&&store.secondDate||firstDate&&secondDate;const result=useMemo(()=>{if(!isReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{initialPrice,dailyItems}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);const{passedPrimaryCoupons,passedSecondaryCoupons}=filterCoupons(coupons,store,dailyItems);const{secondaryDiscountedPrice:discountedPrice}=evaluateCoupons(passedPrimaryCoupons,passedSecondaryCoupons,dailyItems,store);return{initialPrice,discountedPrice};},[store,categories,coupons,firstDate,secondDate,categoryLoading,couponLoading]);return{isLoading:!isReady||categoryLoading||couponLoading,data:result};}// ✅ 안전하게 날짜가 모두 존재할 때만 가격 계산 및 렌더링\nexport function displayInitialPrice(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const{coupons,isLoading:couponLoading}=useCoupons();console.log(\"### COUPONS ###\");console.log(JSON.stringify(coupons));const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;if(!isStoreReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{initialPrice}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);return(// <FadeIn>\n/*#__PURE__*/_jsx(Component,{...props,text:initialPrice>0?initialPrice.toLocaleString(\"ko-KR\")+\" 원\":\"0 원\"}));};}export function displayDiscountedPrice(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;if(!isStoreReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{dailyItems}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);const{passedPrimaryCoupons,passedSecondaryCoupons}=filterCoupons(coupons,store,dailyItems);const{secondaryDiscountedPrice:discountedPrice}=evaluateCoupons(passedPrimaryCoupons,passedSecondaryCoupons,dailyItems,store);return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsx(Component,{...props,text:discountedPrice>0?discountedPrice.toLocaleString(\"ko-KR\")+\" 원\":\"0 원\"})});};}function transitionStyle(visible){return{opacity:visible?1:0,color:\"inherit\",transition:\"opacity 0.3s ease-in-out\",display:\"inline-block\"};}export function displayDiscountBar(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;if(!isStoreReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{initialPrice,dailyItems}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);const{passedPrimaryCoupons,passedSecondaryCoupons}=filterCoupons(coupons,store,dailyItems);const{secondaryDiscountedPrice:discountedPrice}=evaluateCoupons(passedPrimaryCoupons,passedSecondaryCoupons,dailyItems,store);const show=initialPrice!==Math.max(discountedPrice,0);const baseStyle=transitionStyle(show);const width=initialPrice>=1e8?144:initialPrice>=1e7?128:112;const barStyle={...baseStyle,width,position:\"relative\",right:0,transform:`translateX(${92-width}px)`};return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsx(Component,{...props,style:barStyle})});};}export function displaySoftInitialPrice(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;if(!isStoreReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{initialPrice}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsx(Component,{...props,text:initialPrice>0?initialPrice.toLocaleString(\"ko-KR\")+\" 원\":\"0 원\"})});};}export function getAdditionalPrice(){const[store]=useStore();const[additionalServiceStore]=useAdditionalServiceStore();const additionalServiceList=createAdditionalServiceList(additionalServiceStore,store);const totalAmount=additionalServiceList.reduce((sum,service)=>{return sum+service.amount;},0);return totalAmount;}export function displayIntegratedPrice(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const additionalPrice=getAdditionalPrice();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;if(!isStoreReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{dailyItems}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);const{passedPrimaryCoupons,passedSecondaryCoupons}=filterCoupons(coupons,store,dailyItems);const{secondaryDiscountedPrice:discountedPrice}=evaluateCoupons(passedPrimaryCoupons,passedSecondaryCoupons,dailyItems,store);const integratedPrice=store.membership===\"All-Free\"?0:Math.max(discountedPrice,0)+additionalPrice;const text=integratedPrice>0?integratedPrice.toLocaleString(\"ko-KR\")+\" 원\":\"0 원\";return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsx(Component,{...props,text:text})});};}export function displayVatPrice(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const additionalPrice=getAdditionalPrice();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;if(!isStoreReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{dailyItems}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);const{passedPrimaryCoupons,passedSecondaryCoupons}=filterCoupons(coupons,store,dailyItems);const{secondaryDiscountedPrice:discountedPrice}=evaluateCoupons(passedPrimaryCoupons,passedSecondaryCoupons,dailyItems,store);const integratedPrice=Math.max(discountedPrice,0)+additionalPrice;const vatPrice=store.membership===\"All-Free\"?0:Math.round(integratedPrice*.1);const text=vatPrice>0?vatPrice.toLocaleString(\"ko-KR\")+\" 원\":\"0 원\";return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsx(Component,{...props,text:text})});};}export function displayDepositPrice(Component){const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;return props=>{const[store]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;if(!isStoreReady||categoryLoading||couponLoading)return null;const depositPrice=store.membership?0:3e5;const text=depositPrice>0?depositPrice.toLocaleString(\"ko-KR\")+\" 원\":\"0 원\";return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsx(Component,{...props,text:text})});};}export function displayFinalPrice(Component){return props=>{const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store,setStore]=useStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const additionalPrice=getAdditionalPrice();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;const priceData=useMemo(()=>{if(!isStoreReady||categoryLoading||couponLoading)return null;const categoryMap=toCategoryMap(categories);const{dailyItems}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);const initialPrice=dailyItems.reduce((sum,item)=>sum+item.price,0);const{passedPrimaryCoupons,passedSecondaryCoupons}=filterCoupons(coupons,store,dailyItems);const{secondaryDiscountedPrice:discountedPrice,primaryDetails,secondaryDetails}=evaluateCoupons(passedPrimaryCoupons,passedSecondaryCoupons,dailyItems,store);console.log(discountedPrice);const integratedPrice=store.membership===\"All-Free\"?0:Math.max(discountedPrice,0)+additionalPrice;const vatPrice=Math.round(integratedPrice*.1);const depositPrice=store.membership?0:3e5;const finalPrice=store.membership===\"All-Free\"?0:integratedPrice+vatPrice+depositPrice;const text=finalPrice>0?finalPrice.toLocaleString(\"ko-KR\")+\" 원\":\"0 원\";return{initialPrice,discountedPrice,additionalPrice,integratedPrice,vatPrice,depositPrice,finalPrice,text,primaryDetails,secondaryDetails};},[isStoreReady,categoryLoading,couponLoading,store,categories,coupons,additionalPrice]);useEffect(()=>{if(!priceData)return;setStore(prev=>{const isSame=prev.finalPrice===priceData.finalPrice&&prev.initialPrice===priceData.initialPrice&&prev.discountedPrice===priceData.discountedPrice&&prev.additionalPrice===priceData.additionalPrice&&prev.integratedPrice===priceData.integratedPrice&&prev.vatPrice===priceData.vatPrice&&prev.depositPrice===priceData.depositPrice;if(isSame)return prev;return{...prev,initialPrice:priceData.initialPrice,discountedPrice:priceData.discountedPrice,additionalPrice:priceData.additionalPrice,integratedPrice:priceData.integratedPrice,vatPrice:priceData.vatPrice,depositPrice:priceData.depositPrice,finalPrice:priceData.finalPrice,couponPrimaryDetails:priceData.primaryDetails,couponSecondaryDetails:priceData.secondaryDetails};});},[priceData?.initialPrice,priceData?.discountedPrice,priceData?.additionalPrice,priceData?.integratedPrice,priceData?.vatPrice,priceData?.depositPrice,priceData?.finalPrice,priceData?.primaryDetails,priceData?.secondaryDetails]);if(!priceData)return null;return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsx(Component,{...props,text:priceData.text})});};}\nexport const __FramerMetadata__ = {\"exports\":{\"useHolidayCategoryMap\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displaySoftInitialPrice\":{\"type\":\"reactHoc\",\"name\":\"displaySoftInitialPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayDepositPrice\":{\"type\":\"reactHoc\",\"name\":\"displayDepositPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayVatPrice\":{\"type\":\"reactHoc\",\"name\":\"displayVatPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toCategoryMap\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayDiscountedPrice\":{\"type\":\"reactHoc\",\"name\":\"displayDiscountedPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getAdditionalPrice\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayFinalPrice\":{\"type\":\"reactHoc\",\"name\":\"displayFinalPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCoupons\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayIntegratedPrice\":{\"type\":\"reactHoc\",\"name\":\"displayIntegratedPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayInitialPrice\":{\"type\":\"reactHoc\",\"name\":\"displayInitialPrice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"displayDiscountBar\":{\"type\":\"reactHoc\",\"name\":\"displayDiscountBar\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// ReceiptLabelComponent.tsx\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useStore}from\"https://framerusercontent.com/modules/r9TbzE6j44OxXp6KiYut/RlWsmNJXb8w0pYhdTV4g/MonthDisplay.js\";import{useHolidayCategoryMap,useCoupons,toCategoryMap}from\"https://framerusercontent.com/modules/t32tReeHmrCTzbf5rVbb/w2o6Bo1vgCXIPZPl9vfv/PriceDisplay.js\";import{calculateInitialPrices,filterCoupons,evaluateCoupons}from\"https://framerusercontent.com/modules/jTRIrvvdhM8hGc8tF4E7/xkSn8HvNjOGSgOcNkrDi/EvaluateCoupons.js\";import{useAdditionalServiceStore,createAdditionalServiceList}from\"https://framerusercontent.com/modules/k847LPNIMdkhfIs0ouwF/8wYXP1kMQ0pizh4Yc79I/AdditionalService.js\";import{parseDate}from\"https://framerusercontent.com/modules/OM3DCPQsxhCoiGUHGyyF/lfkRdMabO2cAhDZgEcQf/CheckAuth.js\";import{motion}from\"framer-motion\";const FadeIn=({children})=>/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:0},animate:{opacity:1,y:0},exit:{opacity:0,y:0},transition:{duration:.4,ease:\"easeOut\"},children:children});export function ReceiptLabelComponent({variant}){const queryParams=new URLSearchParams(window.location.search);const first=queryParams.get(\"first\");const second=queryParams.get(\"second\");const firstDate=first?parseDate(first):null;const secondDate=second?parseDate(second):null;const[store]=useStore();const[additionalServiceStore]=useAdditionalServiceStore();const{categories,isLoading:categoryLoading}=useHolidayCategoryMap();const{coupons,isLoading:couponLoading}=useCoupons();const isStoreReady=store.firstDate&&store.secondDate||firstDate&&secondDate;const isReceiptLike=variant.startsWith(\"Receipt\")||variant===\"Primary\"||variant===\"Secondary\";const isPrimary=variant===\"Primary\";const isSecondary=variant===\"Secondary\";if(!isStoreReady||categoryLoading||couponLoading)return /*#__PURE__*/_jsxs(\"div\",{style:getRowStyle(variant),children:[/*#__PURE__*/_jsx(\"div\",{style:{...getMainLabelStyle(variant),display:\"flex\",justifyContent:\"space-between\",width:\"100%\"},children:/*#__PURE__*/_jsx(\"span\",{children:isPrimary?\"객실요금\":isSecondary?\"특별할인\":isReceiptLike?\"할인요금\":variant.startsWith(\"Additional\")?\"추가 서비스 이용료\":\"기본할인\"})}),/*#__PURE__*/_jsx(\"div\",{style:couponContainerStyle(variant),children:/*#__PURE__*/_jsx(\"div\",{style:getLineStyle(variant)})})]});const categoryMap=toCategoryMap(categories);const{initialPrice,dailyItems}=calculateInitialPrices(store,categoryMap,firstDate,secondDate);const{passedPrimaryCoupons,passedSecondaryCoupons}=filterCoupons(coupons,store,dailyItems);const{primaryDiscountedPrice,primaryDetails,secondaryDetails}=evaluateCoupons(passedPrimaryCoupons,passedSecondaryCoupons,dailyItems,store);const additionalServiceList=createAdditionalServiceList(additionalServiceStore,store);const couponDetailsToRender=isPrimary?primaryDetails:isSecondary?secondaryDetails:[];return /*#__PURE__*/_jsx(FadeIn,{children:/*#__PURE__*/_jsxs(\"div\",{style:getRowStyle(variant),children:[/*#__PURE__*/_jsxs(\"div\",{style:{...getMainLabelStyle(variant),display:\"flex\",justifyContent:\"space-between\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"span\",{children:isPrimary?\"객실요금\":isSecondary?\"특별할인\":isReceiptLike?\"할인요금\":variant.startsWith(\"Additional\")?\"추가 서비스 이용료\":\"기본할인\"}),isPrimary&&/*#__PURE__*/_jsxs(\"span\",{style:getRightPriceStyle(variant),children:[primaryDiscountedPrice.toLocaleString(\"ko-KR\"),\" 원\"]})]}),isPrimary&&/*#__PURE__*/_jsx(\"div\",{style:getLineStyle(variant),children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"span\",{style:getLeftDescriptionStyle(variant),children:\"기본요금\"}),/*#__PURE__*/_jsxs(\"span\",{style:getRightPriceStyle(variant),children:[initialPrice.toLocaleString(\"ko-KR\"),\" 원\"]})]})}),/*#__PURE__*/_jsx(\"div\",{style:couponContainerStyle(variant),children:variant.startsWith(\"Additional\")?additionalServiceList.map(({type,amount})=>/*#__PURE__*/_jsx(\"div\",{style:getLineStyle(variant),children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"span\",{style:getLeftDescriptionStyle(variant),children:type}),/*#__PURE__*/_jsxs(\"span\",{style:getRightPriceStyle(variant),children:[\"+\",amount.toLocaleString(\"ko-KR\"),\" 원\"]})]})},type)):couponDetailsToRender.map(({id,name,description,amount})=>{const label=id===\"phase-1\"?`Phase-1 계정 숙박비 전액 할인`:id===\"all-free\"?\"Admin 계정 전액 할인\":description||name||id;return /*#__PURE__*/_jsx(\"div\",{style:getLineStyle(variant),children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"span\",{style:getLeftDescriptionStyle(variant),children:label}),isReceiptLike&&/*#__PURE__*/_jsxs(\"span\",{style:getRightPriceStyle(variant),children:[\"-\",amount.toLocaleString(\"ko-KR\"),\" \",\"원\"]})]})},id);})})]})});}// ===== 스타일 함수 동일 =====\nfunction getRowStyle(variant){const base={display:\"flex\"};switch(variant){case\"Receipt\":case\"ReceiptMobile\":case\"Additional\":case\"AdditionalMobile\":case\"Primary\":case\"Secondary\":return{...base,flexDirection:\"column\",alignItems:\"flex-start\",width:\"100%\",gap:\"15px\"};case\"CalendarMobile\":return{...base,flexDirection:\"row\",alignItems:\"center\",gap:\"14px\"};default:return{...base,flexDirection:\"row\",alignItems:\"flex-start\",gap:\"14px\"};}}function getMainLabelStyle(variant){const base={display:\"flex\",alignItems:\"center\"};switch(variant){case\"Receipt\":case\"Primary\":case\"Secondary\":return{...base,fontFamily:\"Pretendard Regular, sans-serif\",fontSize:\"14px\",height:\"18px\",width:\"100%\",color:\"#000000\"};case\"ReceiptMobile\":return{...base,fontFamily:\"Pretendard Regular, sans-serif\",fontSize:\"12px\",height:\"18px\",width:\"100%\",color:\"#000000\"};case\"Additional\":return{...base,fontFamily:\"Pretendard Regular, sans-serif\",fontSize:\"14px\",height:\"18px\",width:\"104px\",color:\"#000000\"};case\"AdditionalMobile\":return{...base,fontFamily:\"Pretendard Regular, sans-serif\",fontSize:\"12px\",height:\"18px\",width:\"89px\",color:\"#000000\"};case\"CalendarMobile\":return{...base,fontFamily:\"Pretendard Light, sans-serif\",fontSize:\"12px\",height:\"20px\",width:\"42px\",color:\"#000000\"};case\"Calendar\":default:return{...base,fontFamily:\"Pretendard Light, sans-serif\",fontSize:\"16px\",height:\"20px\",width:\"56px\",color:\"#000000\"};}}function couponContainerStyle(variant){return{display:\"flex\",flexDirection:\"column\",gap:\"10px\",width:\"100%\",flex:1};}function getLineStyle(variant){const isReceiptOrAdditional=variant.startsWith(\"Receipt\")||variant.startsWith(\"Additional\")||variant===\"Primary\"||variant===\"Secondary\";return{display:\"flex\",alignItems:\"center\",width:\"100%\",...isReceiptOrAdditional?{height:\"18px\"}:{}};}function getLeftDescriptionStyle(variant){return{fontFamily:\"Pretendard Light, sans-serif\",fontSize:[\"ReceiptMobile\",\"AdditionalMobile\"].includes(variant)?\"9px\":\"12px\",color:\"#4D4D4D\"};}function getRightPriceStyle(variant){return{fontFamily:\"Pretendard Light\",fontWeight:300,fontSize:[\"ReceiptMobile\",\"AdditionalMobile\"].includes(variant)?\"12px\":\"14px\",color:\"#000000\",whiteSpace:\"nowrap\"};}addPropertyControls(ReceiptLabelComponent,{variant:{type:ControlType.Enum,title:\"Variant\",options:[\"Calendar\",\"CalendarMobile\",\"Receipt\",\"ReceiptMobile\",\"Additional\",\"AdditionalMobile\",\"Primary\",\"Secondary\"],optionTitles:[\"객실요금\",\"객실요금 Mobile\",\"할인요금\",\"할인요금 Mobile\",\"추가 서비스 이용료\",\"추가 서비스 이용료 Mobile\",\"객실요금_v2\",\"특별할인_v2\"],defaultValue:\"Receipt\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"ReceiptLabelComponent\":{\"type\":\"reactComponent\",\"name\":\"ReceiptLabelComponent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}