{"version":3,"file":"TableComponent.CCfDFWPb.mjs","names":["React.useState","e","inputStyle","_Fragment","getKSTDate","useState","useMemo","x","daysBeforeCheckin","React.Fragment","React.useState","inputStyle","e","_Fragment","e","React","e","x","React","e","React","_Fragment","e","React.useState","React.useRef","e","_Fragment","getKSTDate","React.useState","buttonStyle","e","formatDateTime","_Fragment","getKSTDate","React.useState","e","React.useState","buttonStyle","_Fragment"],"sources":["https:/framerusercontent.com/modules/n8rtZjd4s39jkDIUbFJe/Ux9rtghfq613e8Ywl4tP/ElementComponent.js","https:/framerusercontent.com/modules/BZLRArExOCHVbl5hLgiu/jBDm0fLUJjf8VWdNfTdV/TableHeader.js","https:/framerusercontent.com/modules/ijtAeTA2swO1eSFmzOcX/SWDG0GngLN6MW88JchMn/fieldsByVariant.js","https:/framerusercontent.com/modules/cc8dQZibFTGkGc1c3gcs/kb1jPFWq6sM7b3hZANQF/messages.js","https:/framerusercontent.com/modules/eDrJcddZ1hupSaFjnFha/jRxRo7543ALk5DJ5WdKS/notify.js","https:/framerusercontent.com/modules/lMETYxbSHdYMMEvxRT9z/I8LJUDvEseFrMz0dvF5p/useTableLogic.js","https:/framerusercontent.com/modules/79m6xKGAs6YRts4uPZQG/del0EaQUrYMCZ22ohuhc/MenuToggle.js","https:/framerusercontent.com/modules/VPnkDt0t1Xn4dDPqpLMv/7zQc5O3MTss9SvD6ffGU/ConditionBadge.js","https:/framerusercontent.com/modules/V5fPyOhrC1UoB6WHwxuX/ZI5aHqTdPAHiVwAlbLVR/CouponLogPopup.js","https:/framerusercontent.com/modules/2hAGgcnor2CvSHiSrU93/wFgIQOZ7yiv8RRrfd5Rq/CouponInstancesPopup.js","https:/framerusercontent.com/modules/t3dzZ6SFO74BM1G5sMgx/rbRQZmRWil8VXORdMgkj/CouponTargetsPopup.js","https:/framerusercontent.com/modules/m4Jh1FVeR34kOyQwmzks/lCVYvGMZDTwynogNzrlk/CouponDistributionPanel.js","https:/framerusercontent.com/modules/0USIjj1ca4slBZb17sTN/7kzb8dnynQHcR4W1aAMJ/CouponCard.js","https:/framerusercontent.com/modules/E3JWi8RXJKfhI35nTdhr/5tpULpNUfbwfgeGMt6wX/CouponContainer.js","https:/framerusercontent.com/modules/NQsXy9E03jawYO6woHrN/LSWyzVcJhFE902wn8TZC/OrderElementComponent.js","https:/framerusercontent.com/modules/Nz2sBgelWGG377VgiC12/Z6pbpDvOzupHSBMqi2br/OrderJsonAccordion.js","https:/framerusercontent.com/modules/1pcNuocOCHrGk62D3Wqf/aTbw7V3Hfnf4fd2Mn5ql/OrderDetailOverlay.js","https:/framerusercontent.com/modules/m6mEWea6HuDXD6jTMugh/bWqYenexE80PbSA4ihFV/TableComponent.js"],"sourcesContent":["// ElementComponent.tsx\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";export function ElementComponent({data,fields,onEdit,onDelete,isNew=false,idKey,isPlaceholder=false}){const[editing,setEditing]=React.useState(isNew);const[tempData,setTempData]=React.useState({...data});const handleChange=(key,value)=>{setTempData(prev=>({...prev,[key]:value}));};const handleSave=()=>{const cleanedData=Object.fromEntries(Object.entries(tempData).map(([key,value])=>{if(typeof value===\"string\"&&value.trim()===\"\"){return[key,null];}try{const original=data[key];if(typeof original===\"object\"&&original!==null){return[key,JSON.parse(value)];}}catch{// fallback to string if parsing fails\n}return[key,value];}));onEdit(cleanedData);setEditing(false);};const handleCancel=()=>{if(isNew){onDelete();}else{setEditing(false);setTempData({...data});}};const columnStyle={minWidth:200,flex:\"0 0 160px\",padding:\"0 8px\",overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",boxSizing:\"border-box\"};return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",padding:\"8px 0\",borderBottom:\"1px solid #eee\",gap:\"8px\",position:\"relative\"},children:[fields.map(field=>{const isPrimary=field.key===idKey;const isPKEditable=isNew&&isPrimary;const isEditable=editing&&(isPKEditable||!isPrimary);const value=tempData[field.key];return /*#__PURE__*/_jsx(\"div\",{style:columnStyle,children:isEditable?typeof data[field.key]===\"object\"&&data[field.key]!==null?/*#__PURE__*/_jsx(\"textarea\",{value:typeof value===\"object\"&&value!==null?JSON.stringify(value,null,2):value,onChange:e=>handleChange(field.key,e.target.value),style:textareaStyle}):field.type===\"category\"?/*#__PURE__*/_jsxs(\"select\",{value:value,onChange:e=>handleChange(field.key,e.target.value),style:selectStyle,children:[/*#__PURE__*/_jsx(\"option\",{value:\"\",children:\"선택\"}),field.options?.map(opt=>/*#__PURE__*/_jsx(\"option\",{value:opt,children:opt},opt))]}):/*#__PURE__*/_jsx(\"input\",{value:value,onChange:e=>handleChange(field.key,e.target.value),style:inputStyle}):/*#__PURE__*/_jsx(\"span\",{style:{color:data[field.key]==null?\"#999\":undefined,fontFamily:typeof data[field.key]===\"object\"?\"monospace\":undefined,whiteSpace:\"pre-wrap\"},children:data[field.key]==null?\"–\":typeof data[field.key]===\"object\"?JSON.stringify(data[field.key],null,2):String(data[field.key])})},field.key);}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"sticky\",right:0,backdropFilter:\"blur(6px)\",WebkitBackdropFilter:\"blur(6px)\",display:\"flex\",gap:6,minWidth:160,paddingLeft:12,zIndex:2,borderLeft:\"1px solid #ddd\"},children:isPlaceholder?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{style:{...buttonStyle,opacity:.4},disabled:true,children:\"Edit\"}),/*#__PURE__*/_jsx(\"button\",{style:{...buttonStyle,opacity:.4},disabled:true,children:\"Delete\"})]}):editing?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleSave,style:buttonStyle,children:\"Save\"}),/*#__PURE__*/_jsx(\"button\",{onClick:handleCancel,style:buttonStyle,children:\"Cancel\"})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>setEditing(true),style:buttonStyle,children:\"Edit\"}),/*#__PURE__*/_jsx(\"button\",{onClick:onDelete,style:buttonStyle,children:\"Delete\"})]})})]});}const inputStyle={width:\"100%\",maxWidth:\"180px\",fontSize:\"13px\",padding:\"6px 8px\",border:\"1px solid #ddd\",background:\"#fefefe\",boxSizing:\"border-box\"};const selectStyle={width:\"100%\",maxWidth:\"180px\",fontSize:\"13px\",padding:\"6px 8px\",border:\"1px solid #ddd\",background:\"#fefefe\",boxSizing:\"border-box\"};const textareaStyle={width:\"100%\",maxWidth:\"180px\",fontSize:\"12px\",padding:\"6px 8px\",border:\"1px solid #ccc\",fontFamily:\"monospace\",height:\"60px\",resize:\"vertical\",boxSizing:\"border-box\"};const buttonStyle={fontSize:\"12px\",padding:\"6px 12px\",border:\"1px solid #ccc\",background:\"#fff\",cursor:\"pointer\"};\nexport const __FramerMetadata__ = {\"exports\":{\"ElementComponent\":{\"type\":\"reactComponent\",\"name\":\"ElementComponent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ElementComponent.map","// TableHeader.tsx\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";export function TableHeader({fields,sortConfig,toggleSort}){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",height:40,padding:\"8px 0\",fontWeight:600,fontSize:14,background:\"#f8f8f8\",borderBottom:\"1px solid #ccc\",gap:8,position:\"relative\"},children:[fields.map(field=>{const isSorted=sortConfig.key===field.key;const arrow=isSorted?sortConfig.direction===\"asc\"?\"↑\":sortConfig.direction===\"desc\"?\"↓\":\"\":\"\";return /*#__PURE__*/_jsxs(\"div\",{onClick:()=>toggleSort(field.key),style:{minWidth:200,flex:\"0 0 160px\",padding:\"0 8px\",overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\",display:\"flex\",alignItems:\"center\",boxSizing:\"border-box\",cursor:\"pointer\"},children:[/*#__PURE__*/_jsxs(\"span\",{children:[field.key,(field.isPrimary||field.notNull)&&/*#__PURE__*/_jsx(\"span\",{style:{color:\"red\",marginLeft:4},children:\"*\"})]}),\" \",arrow]},field.key);}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"sticky\",right:0,minWidth:160,paddingLeft:12,background:\"#f8f8f8\",backdropFilter:\"blur(6px)\",WebkitBackdropFilter:\"blur(6px)\",borderLeft:\"1px solid #ddd\",zIndex:3,display:\"flex\",alignItems:\"center\",fontWeight:600},children:\"Actions\"})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"TableHeader\":{\"type\":\"reactComponent\",\"name\":\"TableHeader\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TableHeader.map","//fieldsByVariant.ts\nexport const fieldsByVariant={days:[{key:\"date\",type:\"input\",isPrimary:true,notNull:true},{key:\"category\",type:\"category\",options:[\"Weekday\",\"Weekend\",\"Peak-Weekday\",\"Peak-Weekend\"],notNull:true},{key:\"is_holiday\",type:\"category\",options:[\"true\",\"false\"],notNull:true},{key:\"checkin\",type:\"input\",notNull:false},{key:\"checkout\",type:\"input\",notNull:false}],customers:[{key:\"membership_number\",type:\"input\",isPrimary:true,notNull:true},{key:\"id\",type:\"input\"},{key:\"password\",type:\"input\",notNull:true},{key:\"name_kor\",type:\"input\"},{key:\"name_eng\",type:\"input\"},{key:\"is_personal\",type:\"category\",options:[\"true\",\"false\"],notNull:true},{key:\"birthdate\",type:\"input\"},{key:\"gender\",type:\"category\",options:[\"Male\",\"Female\"]},{key:\"business_registration_number\",type:\"input\"},{key:\"contact_person_name\",type:\"input\"},{key:\"contact_person_phone\",type:\"input\"},{key:\"address\",type:\"input\",notNull:true},{key:\"phone\",type:\"input\",notNull:true},{key:\"email\",type:\"input\",notNull:true},{key:\"membership_grade\",type:\"category\",options:[\"Non-Member\",\"TERENE 6\",\"TERENE 9\",\"TERENE 12\",\"TERENE 24\",\"All-Free\"],notNull:true},{key:\"phase\",type:\"category\",options:[\"Phase-1\",\"Phase-2\",\"Phase-3\"],notNull:true},{key:\"signup_date\",type:\"input\"},{key:\"remarks\",type:\"input\"},{key:\"blacklist\",type:\"category\",options:[\"true\",\"false\"]}],coupons:[{key:\"coupon_definition_id\",type:\"input\",isPrimary:true,notNull:true},{key:\"name\",type:\"input\",notNull:true},{key:\"description\",type:\"input\",notNull:true},{key:\"discount_type\",type:\"category\",options:[\"percentage\",\"fixed\"],notNull:true},{key:\"discount_value\",type:\"input\",notNull:true},{key:\"exclusive\",type:\"input\",notNull:true},{key:\"scope\",type:\"input\",notNull:true},{key:\"counter\",type:\"input\",notNull:true},{key:\"type\",type:\"category\",options:[\"global\",\"membership\",\"code\"],notNull:false},{key:\"conditions_json\",type:\"input\"},{key:\"validity_type\",type:\"category\",options:[\"day\",\"week\",\"month\",\"year\",\"custom\",\"permanent\"],notNull:true},{key:\"validity_value\",type:\"input\"},{key:\"refillable\",type:\"category\",options:[\"true\",\"false\"],notNull:true},{key:\"enabled\",type:\"category\",options:[\"true\",\"false\"],notNull:true}],orders:[{key:\"order_id\",type:\"input\",isPrimary:true,notNull:true},{key:\"membership_number\",type:\"input\"},{key:\"order_product\",type:\"input\",notNull:true},{key:\"payment_status\",type:\"category\",options:[\"pending\",\"accepted\",\"cancelled\",\"refunded\"],notNull:true},{key:\"payment_timeline\",type:\"input\",notNull:true},{key:\"start_date\",type:\"input\",notNull:true},{key:\"end_date\",type:\"input\",notNull:true},{key:\"stay_status\",type:\"category\",options:[\"before_checkin\",\"checked_in\",\"checked_out\"],notNull:true},{key:\"stay_timeline\",type:\"input\",notNull:true},{key:\"reserver_name\",type:\"input\"},{key:\"reserver_birthdate\",type:\"input\"},{key:\"reserver_contact\",type:\"input\"},{key:\"reserver_email\",type:\"input\"},{key:\"adult\",type:\"input\",notNull:true},{key:\"child\",type:\"input\",notNull:true},{key:\"order_details\",type:\"input\",notNull:true},{key:\"final_price\",type:\"input\",notNull:true},{key:\"receipt\",type:\"input\",notNull:true},{key:\"coupons\",type:\"input\"}]};\nexport const __FramerMetadata__ = {\"exports\":{\"fieldsByVariant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./fieldsByVariant.map","// messages.ts\nexport function createClientReservationMessage({name,firstDate,secondDate,adult,child,finalPrice}){return`[TERENE UNMU]\n${name}님, 아래와 같이 예약 신청이 완료되었습니다.\n\n예약정보\n1. 이름 : ${name}\n2. 지점 : TERENE UNMU\n3. 숙박 일정 : ${firstDate}~${secondDate}\n4. 숙박 인원 : 성인 ${adult}명, 아동/유아 ${child}명,\n5. 결제 금액 : ${finalPrice.toLocaleString()}원\n\n계좌번호 : 우리은행 1005-904-683385\n예금주 : (주)바드건축사무소\n예금기한 : 예약 신청 후 24시간 이내\n\n예약 후 24시간 이내에 입금이 확인되지 않을 시, 예약은 자동 취소됩니다.\n결제금액에 포함된 보증금은 추가 요금 청구가 없을 경우 체크아웃 당일 100% 환급됩니다.\n\n입금 확인 후 확정 문자가 발송되며, 해당 문자를 받으신 시점부터 예약이 최종 확정됩니다.\n\n예약 취소 및 환불 신청은 유선(02-6952-1548)을 통해서만 가능합니다 (오전 10시~오후 6시)\n환불은 환불규정에 맞춰 처리되며 영업일 기준 2~3일 정도 소요될 수 있습니다.\n감사합니다.`;}export function createAdminReservationMessage({orderId,membershipNumber,name,firstDate,secondDate,adult,child,finalPrice}){return`[TERENE UNMU]\n${name}님의 예약 신청이 접수되었습니다.\n\n예약정보\n1. 예약번호 : ${orderId}\n2. 회원번호 : ${membershipNumber||\"비회원 예약\"}\n3. 이름 : ${name}\n4. 지점 : TERENE UNMU\n5. 숙박 일정 : ${firstDate}~${secondDate}\n6. 숙박 인원 : 성인 ${adult}명, 아동/유아 ${child}명,\n7. 결제 금액 : ${finalPrice.toLocaleString()}원\n\n* 자세한 정보는 관리자 페이지( https://terene.kr/admin-table )에서 확인해주시기 바랍니다.`;}export function createReservationMessage(type,row,daysBeforeCheckin=null,refundAmount=null,refundRateRoom=0,refundRateAdd=0,refundRateDeposit=1){const name=row.reserver_name;const membershipNumber=row.membership_number||\"비회원 예약\";const orderId=row.order_id;const startDate=row.start_date;const endDate=row.end_date;const adult=row.adult;const child=row.child;const finalPrice=row.final_price;const refundInfo=row.refund_info;const formattedRefundAmount=refundAmount?.toLocaleString?.()||null;if(type===\"confirmed\"){return{client_title:`[TERENE UNMU] ${name}님 예약 확정`,client_message:`[TERENE UNMU]\n${name}님의 예약이 확정되었습니다.\n\n예약정보\n1. 이름 : ${name}\n2. 지점 : TERENE UNMU\n3. 숙박 일정 : ${startDate}~${endDate}\n4. 숙박 인원 : 성인 ${adult}명, 아동/유아 ${child}명,\n\n체크인 하루 전, 체크인 30분 전 안내 문자가 발송됩니다.\n감사합니다`,admin_title:`[TERENE UNMU] ${membershipNumber} ${name}님 예약 확정`,admin_message:`[TERENE UNMU]\n${name}님의 예약이 확정되었습니다.\n\n예약정보\n1. 예약번호 : ${orderId}\n2. 회원번호 : ${membershipNumber}\n3. 이름 : ${name}\n4. 지점 : TERENE UNMU\n5. 숙박 일정 : ${startDate}~${endDate}\n6. 숙박 인원 : 성인 ${adult}명, 아동/유아 ${child}명,\n7. 결제 금액 : ${Number(finalPrice).toLocaleString()}원\n\n* 자세한 정보는 관리자 페이지( https://terene.kr/admin-table )에서 확인해주시기 바랍니다.`};}if(type===\"cancelled\"){return{client_title:`[TERENE UNMU] ${name}님 예약 취소`,client_message:`[TERENE UNMU]\n${name}님, 신청하신 예약이 입금이 확인되지 않아 자동 취소 처리되었습니다.\n\n다음 기회에 꼭 뵐 수 있기를 바랍니다.\n감사합니다.`,admin_title:`[TERENE UNMU] ${membershipNumber} ${name}님 예약 취소 및 환불 요청`,admin_message:`[TERENE UNMU]\n${name}님의 예약이 취소 및 환불 요청되었습니다.\n\n예약정보\n1. 예약번호 : ${orderId}\n2. 회원번호 : ${membershipNumber}\n3. 이름 : ${name}\n4. 환불 요청 시점 : 체크인 ${daysBeforeCheckin}일 전\n - 숙박요금(${(Number(row.receipt.discountedPrice)*1.1).toLocaleString()}원, VAT 포함)의 ${Number(refundRateRoom)*100}%\n - 추가서비스요금(${(Number(row.receipt.additionalPrice)*1.1).toLocaleString()}원, VAT 포함)의 ${Number(refundRateAdd)*100}%\n - 보증금(300,000원)의 ${Number(refundRateDeposit)*100}%\n5. 환불 금액 : ${formattedRefundAmount}원\n6. 환불계좌 : ${refundInfo.refund_bank} ${refundInfo.refund_account}\n7. 예금주 : ${refundInfo.refund_name}\n\n* 자세한 정보는 관리자 페이지( https://terene.kr/admin-table )에서 확인해주시기 바랍니다.`};}if(type===\"refunded\"){return{client_title:`[TERENE UNMU] ${name}님 예약 환불 완료`,client_message:`[TERENE UNMU]\n예약취소 신청으로 아래와 같이 환불 처리되었습니다.\n\n환불기준 : 체크인 ${daysBeforeCheckin}일 전\n - 숙박요금의 ${Number(refundRateRoom)*100}%\n - 추가서비스요금의 ${Number(refundRateAdd)*100}%\n - 보증금의 ${Number(refundRateDeposit)*100}%\n\n환불계좌 : ${refundInfo.refund_bank} ${refundInfo.refund_account}\n예금주 : ${refundInfo.refund_name}\n입금자 : (주)바드건축사사무소\n환불 금액: ${formattedRefundAmount}원\n\n다음 기회에 꼭 뵐 수 있기를 바랍니다.\n감사합니다`,admin_title:`[TERENE UNMU] ${membershipNumber} ${name}님 예약 환불 완료`,admin_message:`[TERENE UNMU]\n${name}님의 예약이 환불 처리되었습니다.\n\n예약정보\n1. 예약번호 : ${orderId}\n2. 회원번호 : ${membershipNumber}\n3. 이름 : ${name}\n4. 환불 요청 시점 : 체크인 ${daysBeforeCheckin}일 전\n - 숙박요금(${(Number(row.receipt.discountedPrice)*1.1).toLocaleString()}원, VAT 포함)의 ${Number(refundRateRoom)*100}%\n - 추가서비스요금(${(Number(row.receipt.additionalPrice)*1.1).toLocaleString()}원, VAT 포함)의 ${Number(refundRateAdd)*100}%\n - 보증금(300,000원)의 ${Number(refundRateDeposit)*100}%\n5. 환불 금액 : ${formattedRefundAmount}원\n6. 환불계좌 : ${refundInfo.refund_bank} ${refundInfo.refund_account}\n7. 예금주 : ${refundInfo.refund_name}\n\n* 자세한 정보는 관리자 페이지( https://terene.kr/admin-table )에서 확인해주시기 바랍니다.`};}return null;}\nexport const __FramerMetadata__ = {\"exports\":{\"createClientReservationMessage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createReservationMessage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createAdminReservationMessage\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./messages.map","// notify.ts\nexport async function sendSMS(phone,message){const response=await fetch(\"https://terene-notifier-server.onrender.com/api/sms\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({receiver_phone:phone.replace(/-/g,\"\"),phone_message:message})});if(!response.ok){const errText=await response.text();throw new Error(`SMS 전송 실패 (${phone}): ${response.status} - ${errText}`);}return response;}export async function sendEmail(email,title,message){const response=await fetch(\"https://terene-notifier-server.onrender.com/api/email\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({platform:\"gmail\",receiver_email:email,email_title:title,email_message:message})});if(!response.ok){const errText=await response.text();throw new Error(`이메일 전송 실패 (${email}): ${response.status} - ${errText}`);}return response;}/////////////////////////////////////////////////////////////\n// v2 notifier functions ////////////////////////////////////\nexport async function sendSMSv2(phone,type,params){const response=await fetch(\"https://terene-notifier-server.onrender.com/api/sms/v2\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({receiver_phone:phone.replace(/-/g,\"\"),template_type:type,params})});if(!response.ok)throw new Error(\"SMS v2 전송 실패\");}export async function sendEmailv2(email,type,params){const response=await fetch(\"https://terene-notifier-server.onrender.com/api/email/v2\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({receiver_email:email,template_type:type,platform:\"gmail\",params})});if(!response.ok)throw new Error(\"이메일 v2 전송 실패\");}export async function sendKakaov2(phone,type,params){const response=await fetch(\"https://terene-notifier-server.onrender.com/api/kakao/v2\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({receiver_phone:phone.replace(/-/g,\"\"),template_type:type,params})});if(!response.ok){const errorData=await response.json().catch(()=>null)// 파싱 실패 시 null 반환\n;const message=errorData?.error?.message||errorData?.error||response.statusText||\"카카오 알림톡 전송 실패\";console.error(\"💥 카카오 알림톡 전송 실패:\",errorData)// 전체 로그도 확인 가능\n;throw new Error(message);}}\nexport const __FramerMetadata__ = {\"exports\":{\"sendEmail\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sendKakaov2\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sendSMS\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sendSMSv2\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sendEmailv2\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./notify.map","// useTableLogic.ts\nimport{useState,useEffect,useMemo}from\"react\";import{fieldsByVariant}from\"https://framerusercontent.com/modules/ijtAeTA2swO1eSFmzOcX/SWDG0GngLN6MW88JchMn/fieldsByVariant.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);}const generateRandomID=()=>{const chars=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";let result=\"\";for(let i=0;i<10;i++){result+=chars.charAt(Math.floor(Math.random()*chars.length));}return result;};export function useTableLogic(variant,itemsPerPage,parsedFields,resetKey// 👈 추가된 파라미터\n){const apiBase=variant===\"customers\"?`https://terene-db-server.onrender.com/api/v2/${variant}`:variant===\"coupons\"?`https://terene-db-server.onrender.com/api/v2/coupon-definitions`:`https://terene-db-server.onrender.com/api/${variant}`;const fields=fieldsByVariant[variant]||[];const idKey=fields.find(field=>field.isPrimary)?.key||\"id\";const defaultSortKey=idKey;const[rows,setRows]=useState([]);const[justAddedID,setJustAddedID]=useState(null);const[editedIDs,setEditedIDs]=useState(new Set);const[deletedIDs,setDeletedIDs]=useState(new Set);const[updating,setUpdating]=useState(false);const[updated,setUpdated]=useState(false);const[updateError,setUpdateError]=useState(null);const[currentPage,setCurrentPage]=useState(1);const[customSortedIDs,setCustomSortedIDs]=useState(null);const[sortConfig,setSortConfig]=useState({key:defaultSortKey,direction:\"asc\",custom:false});// ✅ Reload 및 variant 변경 시 데이터 초기화\nuseEffect(()=>{setRows([]);setJustAddedID(null);setEditedIDs(new Set);setDeletedIDs(new Set);setCustomSortedIDs(null);setCurrentPage(1);setSortConfig({key:defaultSortKey,direction:\"asc\",custom:false});fetch(apiBase).then(res=>res.json()).then(data=>setRows(data)).catch(err=>console.error(\"Fetch error:\",err));},[variant,resetKey])// 👈 resetKey 추가\n;const toggleSort=key=>{setSortConfig(prev=>{if(prev.key!==key)return{key,direction:\"asc\",custom:false};if(prev.direction===\"asc\")return{key,direction:\"desc\",custom:false};return{key:defaultSortKey,direction:\"asc\",custom:false};});setCustomSortedIDs(null);};const sortedRows=useMemo(()=>{if(sortConfig.custom&&customSortedIDs){const rowMap=new Map(rows.map(r=>[r[idKey],r]));return customSortedIDs.map(id=>rowMap.get(id)).filter(Boolean);}// orders 전용 커스텀 정렬\nif(variant===\"orders\"){const statusPriority={pending:1,cancelled:2,accepted:3,refunded:4};const getTimelineKey=status=>{switch(status){case\"pending\":return\"order_datetime\";case\"cancelled\":return\"cancellation_datetime\";case\"accepted\":return\"approval_datetime\";case\"refunded\":return\"refund_datetime\";default:return\"order_datetime\";}};return[...rows].sort((a,b)=>{const aStatus=a[\"payment_status\"]||\"pending\";const bStatus=b[\"payment_status\"]||\"pending\";const aPriority=statusPriority[aStatus]||99;const bPriority=statusPriority[bStatus]||99;if(aPriority!==bPriority){return aPriority-bPriority;}const aTimeKey=getTimelineKey(aStatus);const bTimeKey=getTimelineKey(bStatus);const aTime=new Date(a[\"payment_timeline\"]?.[aTimeKey]||0).getTime();const bTime=new Date(b[\"payment_timeline\"]?.[bTimeKey]||0).getTime();return bTime-aTime;});}// 기본 정렬\nif(!sortConfig.key||!sortConfig.direction)return rows;return[...rows].sort((a,b)=>{const aVal=a[sortConfig.key];const bVal=b[sortConfig.key];return aVal<bVal?sortConfig.direction===\"asc\"?-1:1:aVal>bVal?sortConfig.direction===\"asc\"?1:-1:0;});},[rows,sortConfig,customSortedIDs]);const totalPages=Math.ceil(sortedRows.length/itemsPerPage);const startIndex=(currentPage-1)*itemsPerPage;const paginatedRows=sortedRows.slice(startIndex,startIndex+itemsPerPage);const emptySlots=itemsPerPage-paginatedRows.length;const addElement=()=>{const newRow=parsedFields.reduce((obj,field)=>{obj[field.key]=\"\";return obj;},{});let newID;if(variant===\"customers\"){newID=\"U-\";newRow[\"membership_number\"]=newID;}else if(variant===\"days\"){const sortedDates=rows.map(r=>getKSTDate(new Date(r.date))).filter(d=>!isNaN(d.getTime())).sort((a,b)=>a.getTime()-b.getTime());const lastDate=sortedDates.at(-1);const nextDate=new Date(lastDate?lastDate.getTime()+864e5:getKSTDate().getTime());newID=nextDate.toISOString().slice(0,10);newRow[\"date\"]=newID;}else if(variant===\"coupons\"){const existingIDs=new Set(rows.map(r=>r[\"id\"]));do{newID=generateRandomID();}while(existingIDs.has(newID))newRow[\"id\"]=newID;}if(justAddedID){setRows(prev=>prev.filter(r=>r[idKey]!==justAddedID));}const currentSorted=sortConfig.custom&&customSortedIDs?customSortedIDs:sortedRows.map(r=>r[idKey]);const newSortedIDs=[newID,...currentSorted.filter(id=>id!==justAddedID)];setRows(prev=>[...prev,newRow]);setJustAddedID(newID);setCustomSortedIDs(newSortedIDs);setSortConfig({key:\"\",direction:null,custom:true});setCurrentPage(1);};const editElement=(prevID,updatedRow)=>{const newID=updatedRow[idKey];const updatedRows=rows.map(row=>row[idKey]===prevID?updatedRow:row);setRows(updatedRows);setEditedIDs(prev=>{const next=new Set(prev);next.delete(prevID);next.add(newID);return next;});if(prevID===justAddedID){setJustAddedID(null);}setCustomSortedIDs(prev=>prev?prev.map(id=>id===prevID?newID:id):null);setSortConfig({key:\"\",direction:null,custom:true});};const deleteElement=id=>{setRows(prev=>prev.filter(r=>r[idKey]!==id));setCustomSortedIDs(prev=>prev?.filter(x=>x!==id)||null);if(id===justAddedID){setJustAddedID(null);}else{setDeletedIDs(prev=>new Set(prev).add(id));}const newTotalPages=Math.ceil((rows.length-1)/itemsPerPage);if(currentPage>newTotalPages){setCurrentPage(Math.max(1,newTotalPages));}};// const updateBackend = async (targetIDs?: string[]) => {\n//     setUpdating(true)\n//     setUpdated(false)\n//     setUpdateError(null)\n//     try {\n//         for (const row of rows) {\n//             const id = row[idKey]\n//             const shouldUpdate =\n//                 targetIDs?.includes(id) || (!targetIDs && editedIDs.has(id))\n//             if (!shouldUpdate) continue\n//             for (const field of parsedFields) {\n//                 if (field.notNull) {\n//                     const value = row[field.key]\n//                     const isEmpty =\n//                         value === null ||\n//                         value === undefined ||\n//                         (typeof value === \"string\" && value.trim() === \"\")\n//                     if (isEmpty) {\n//                         throw new Error(\n//                             `필수 입력 누락: '${field.key}' (ID: ${id})`\n//                         )\n//                     }\n//                 }\n//             }\n//             const response = await fetch(`${apiBase}/${id}`, {\n//                 method: \"PUT\",\n//                 headers: { \"Content-Type\": \"application/json\" },\n//                 body: JSON.stringify(row),\n//             })\n//             if (!response.ok) {\n//                 const errorText = await response.text()\n//                 throw new Error(`HTTP ${response.status} - ${errorText}`)\n//             }\n//         }\n//         for (const id of deletedIDs) {\n//             await fetch(`${apiBase}/${id}`, { method: \"DELETE\" })\n//         }\n//         setEditedIDs(new Set())\n//         setDeletedIDs(new Set())\n//         setUpdated(true)\n//     } catch (error) {\n//         setUpdateError(error.message)\n//         console.error(error.message)\n//         alert(`${error.message}`)\n//     } finally {\n//         setUpdating(false)\n//         setTimeout(() => {\n//             setUpdated(false)\n//             setUpdateError(null)\n//         }, 5000)\n//     }\n// }\nconst updateBackend=async targetIDs=>{setUpdating(true);setUpdated(false);setUpdateError(null);try{for(const row of rows){const id=row[idKey];const shouldUpdate=targetIDs?.includes(id)||!targetIDs&&editedIDs.has(id);if(!shouldUpdate)continue;for(const field of parsedFields){if(field.notNull){const value=row[field.key];const isEmpty=value===null||value===undefined||typeof value===\"string\"&&value.trim()===\"\";if(isEmpty){throw new Error(`필수 입력 누락: '${field.key}' (ID: ${id})`);}}}// ✅ 먼저 customer PUT 요청\nconst response=await fetch(`${apiBase}/${id}`,{method:\"PUT\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(row)});if(!response.ok){const errorText=await response.text();throw new Error(`HTTP ${response.status} - ${errorText}`);}// ✅ customers PUT 성공 직후에 실행되는 \"쿠폰 정리 + 발급\" 블록 (PHASE1는 정리만, 발급 X)\nif(variant===\"customers\"){const grade=row.membership_grade;const phaseIs1=row.phase===\"Phase-1\";// 등급별 기본 발급 패키지 (발급에만 사용)\nconst COUPON_PACKAGE={\"TERENE 6\":[{defId:\"CD-250717-0300-06wd0000\",count:4},{defId:\"CD-250717-0300-06we0000\",count:1},{defId:\"CD-250717-0300-06ps0000\",count:1}],\"TERENE 9\":[{defId:\"CD-250717-0300-09wd0000\",count:5},{defId:\"CD-250717-0300-09we0000\",count:2},{defId:\"CD-250717-0300-09ps0000\",count:2}],\"TERENE 12\":[{defId:\"CD-250717-0300-12wd0000\",count:7},{defId:\"CD-250717-0300-12we0000\",count:3},{defId:\"CD-250717-0300-12ps0000\",count:2}],\"TERENE 24\":[{defId:\"CD-250717-0300-24wd0000\",count:13},{defId:\"CD-250717-0300-24we0000\",count:6},{defId:\"CD-250717-0300-24ps0000\",count:5}]};// Phase-1 전용 패키지 (정리용으로만 사용, 발급에는 사용하지 않음)\nconst PHASE1_PACKAGE={\"TERENE 6\":[{defId:\"CD-250806-0500-06wd0ph1\",count:4},{defId:\"CD-250806-0500-06we0ph1\",count:1},{defId:\"CD-250806-0500-06ps0ph1\",count:1}],\"TERENE 9\":[{defId:\"CD-250806-0500-09wd0ph1\",count:5},{defId:\"CD-250806-0500-09we0ph1\",count:2},{defId:\"CD-250806-0500-09ps0ph1\",count:2}],\"TERENE 12\":[{defId:\"CD-250806-0500-12wd0ph1\",count:7},{defId:\"CD-250806-0500-12we0ph1\",count:3},{defId:\"CD-250806-0500-12ps0ph1\",count:2}],\"TERENE 24\":[{defId:\"CD-250806-0500-24wd0ph1\",count:13},{defId:\"CD-250806-0500-24we0ph1\",count:6},{defId:\"CD-250806-0500-24ps0ph1\",count:5}]};// 🧹 1) 현재 등급/Phase 조건에 맞지 않는 \"available\" TERENE/PHASE1 쿠폰 정리\nconst ALL_TERENE_DEF_IDS=new Set([...Object.values(COUPON_PACKAGE).flat(),...Object.values(PHASE1_PACKAGE).flat()].map(({defId})=>defId));// 허용 집합: 기본 패키지 + (Phase-1인 경우에만) PHASE1 패키지\nconst activePackage=(grade?COUPON_PACKAGE[grade]??[]:[]).concat(phaseIs1?PHASE1_PACKAGE[grade??\"\"]??[]:[]);const allowedDefIds=new Set(activePackage.map(({defId})=>defId));if(row.membership_number){try{const ciBase=\"https://terene-db-server.onrender.com/api/v2/coupon-instances\";const listRes=await fetch(ciBase);if(!listRes.ok){const text=await listRes.text();throw new Error(`쿠폰 조회 실패: HTTP ${listRes.status} - ${text}`);}const instances=await listRes.json();const toDelete=instances.filter(ci=>ci?.membership_number===row.membership_number&&ci?.status===\"available\"&&ALL_TERENE_DEF_IDS.has(ci?.coupon_definition_id)&&!allowedDefIds.has(ci?.coupon_definition_id));for(const ci of toDelete){const delRes=await fetch(`${ciBase}/${ci.coupon_instance_id}`,{method:\"DELETE\"});if(!delRes.ok){const text=await delRes.text();throw new Error(`쿠폰 정리 실패 (${ci.coupon_instance_id}): HTTP ${delRes.status} - ${text}`);}}}catch(cleanupErr){console.error(\"쿠폰 정리 중 오류:\",cleanupErr);alert(`등급/Phase와 맞지 않는 쿠폰 정리 중 오류가 발생했습니다.\n${cleanupErr}`);}}// 🎟️ 2) 등급별 '기본' 패키지만 발급 (PHASE1는 발급하지 않음)\nif(row.membership_number&&grade){const pkgToIssue=COUPON_PACKAGE[grade]??[];if(pkgToIssue.length>0){const nowKST=getKSTDate();const yymmdd=nowKST.toISOString().slice(2,10).replace(/-/g,\"\");const hhmm=nowKST.toISOString().slice(11,16).replace(\":\",\"\");const makeRandom=()=>{const chars=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";return Array.from({length:8},()=>chars.charAt(Math.floor(Math.random()*chars.length))).join(\"\");};const makeIssuedAt=()=>{const mmdd=row.signup_date?.slice(5)??nowKST.toISOString().slice(5,10);return new Date(`${nowKST.getFullYear()}-${mmdd}T00:00:00+09:00`);};const createCouponPayload=defId=>{const issuedAt=makeIssuedAt();const couponDue=new Date(issuedAt);couponDue.setFullYear(couponDue.getFullYear()+1);couponDue.setDate(couponDue.getDate()-1);return{coupon_instance_id:`CI-${yymmdd}-${hhmm}-${makeRandom()}`,coupon_definition_id:defId,coupon_code:null,status:\"available\",membership_number:row.membership_number,issued_at:issuedAt.toISOString(),coupon_due:couponDue.toISOString(),sender_info:{name:null,contact:null,is_vaadd:true,birthdate:null,membership_number:null},receiver_info:{name:row.name_kor??null,contact:row.phone??null,birthdate:row.birthdate??null,membership_number:row.membership_number}};};for(const{defId,count}of pkgToIssue){for(let i=0;i<count;i++){const res=await fetch(\"https://terene-db-server.onrender.com/api/v2/coupon-instances\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(createCouponPayload(defId))});if(!res.ok){const text=await res.text();throw new Error(`쿠폰 발급 실패 (${defId}): HTTP ${res.status} - ${text}`);}}}}}}}for(const id of deletedIDs){await fetch(`${apiBase}/${id}`,{method:\"DELETE\"});}setEditedIDs(new Set);setDeletedIDs(new Set);setUpdated(true);}catch(error){setUpdateError(error.message);console.error(error.message);alert(`${error.message}`);}finally{setUpdating(false);setTimeout(()=>{setUpdated(false);setUpdateError(null);},5e3);}};const updateOrder=async(targetIDs,payment_status,payment_timeline,payment_datetime,stay_status,stay_timeline,stay_datetime)=>{setUpdating(true);setUpdated(false);setUpdateError(null);try{for(const row of rows){const id=row[idKey];const shouldUpdate=targetIDs.includes(id)||!targetIDs&&editedIDs.has(id);if(!shouldUpdate)continue;if(payment_status){if(payment_status===\"cancelled\"){const baseDate=getKSTDate()// 기본값은 오늘 날짜\n;const checkinDate=getKSTDate(new Date(row[\"start_date\"]));const daysBeforeCheckin=Math.ceil(// 체크인 날짜가 0시로 설정되어있기에, 그 전날 밤도 1일로 계산되어야 하기 때문\n(checkinDate.getTime()-baseDate.getTime())/(1e3*60*60*24));const discountedPrice=Number(row[\"receipt\"][\"discountedPrice\"]||0);const additionalPrice=Number(row[\"receipt\"][\"additional_price\"]||0);const deposit=3e5;let refundRateRoom=0;let refundRateAdd=0;const refundRateDeposit=1;if(daysBeforeCheckin>=31){refundRateRoom=1;refundRateAdd=1;}else if(daysBeforeCheckin>=15){refundRateRoom=.8;refundRateAdd=1;}else if(daysBeforeCheckin>=10){refundRateRoom=.6;refundRateAdd=1;}// VAT를 포함해서 환불하기 위해 1.1을 곱함\nconst refundAmount=Math.round(discountedPrice*1.1*refundRateRoom)+Math.round(additionalPrice*1.1*refundRateAdd)+Math.round(deposit*refundRateDeposit);row[\"refund_info\"][\"refund_before_checkin\"]=Number(daysBeforeCheckin);row[\"refund_info\"][\"discounted_w_vat_refund\"]=Math.round(discountedPrice*1.1*refundRateRoom);row[\"refund_info\"][\"additional_w_vat_refund\"]=Math.round(additionalPrice*1.1*refundRateAdd);row[\"refund_info\"][\"deposit_refund\"]=Math.round(deposit*refundRateDeposit);}row[\"payment_status\"]=payment_status;row[\"payment_timeline\"][payment_timeline]=payment_datetime;}if(stay_status){row[\"stay_status\"]=stay_status;row[\"stay_timeline\"][stay_timeline]=stay_datetime;}for(const field of parsedFields){if(field.notNull){const value=row[field.key];const isEmpty=value===null||value===undefined||typeof value===\"string\"&&value.trim()===\"\";if(isEmpty){throw new Error(`필수 입력 누락: '${field.key}' (ID: ${id})`);}}}const membership_number=row[\"membership_number\"]||null;const status_response=await fetch(`${apiBase}/${id}`,{method:\"PUT\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(row)});if(!status_response.ok){const errorText=await status_response.text();throw new Error(`HTTP ${status_response.status} - ${errorText}`);}// 메시지 생성 (공통)\nlet client_title=null;let client_message=null;let admin_title=null;let admin_message=null;let refundAmount=null;let daysBeforeCheckin=null;if(payment_status===\"accepted\"){({client_title,client_message,admin_title,admin_message}=createReservationMessage(\"confirmed\",row));}if(payment_status===\"cancelled\"||payment_status===\"refunded\"){if(row[\"refund_info\"][\"refund_before_checkin\"]){daysBeforeCheckin=row[\"refund_info\"][\"refund_before_checkin\"];}else{const baseDate=getKSTDate();const checkinDate=getKSTDate(new Date(row[\"start_date\"]));daysBeforeCheckin=Math.ceil(// 체크인 날짜가 0시로 설정되어있기에, 그 전날 밤도 1일로 계산되어야 하기 때문\n(checkinDate.getTime()-baseDate.getTime())/(1e3*60*60*24));}const discountedPrice=Number(row[\"receipt\"]?.[\"discountedPrice\"]||0);const additionalPrice=Number(row[\"receipt\"]?.[\"additional_price\"]||0);const deposit=3e5;let refundRateRoom=0;let refundRateAdd=0;const refundRateDeposit=1;if(daysBeforeCheckin>=31){refundRateRoom=1;refundRateAdd=1;}else if(daysBeforeCheckin>=15){refundRateRoom=.8;refundRateAdd=1;}else if(daysBeforeCheckin>=10){refundRateRoom=.6;refundRateAdd=1;}// VAT를 포함해서 환불하기 위해 1.1을 곱함\nrefundAmount=Math.round(discountedPrice*1.1*refundRateRoom)+Math.round(additionalPrice*1.1*refundRateAdd)+Math.round(deposit*refundRateDeposit);if(payment_status===\"cancelled\"){try{const 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(row[\"start_date\"]);const end=new Date(row[\"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===row[\"order_id\"]||day.checkout?.occupied_order_id===row[\"order_id\"]));for(const day of targetDays){const updatedDay={...day};const isFirstDate=day.date===row[\"start_date\"];const isSecondDate=day.date===row[\"end_date\"];if(isFirstDate){updatedDay.checkin={is_occupied:false,occupied_order_id:null};}else if(isSecondDate){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};}try{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}`);}}catch(err){console.error(\"날짜 점유 해제 중 오류 발생:\",err);alert(`예약 날짜(${day.date}) 점유 정보 해제 중 오류가 발생했습니다.\n에러메시지: ${err}`);return;}}}catch(error){console.error(\"날짜 데이터 불러오는 중 오류 발생:\",error);alert(`날짜 데이터를 불러오는 데 실패했습니다.\n에러메시지: ${error}`);return;}({client_title,client_message,admin_title,admin_message}=createReservationMessage(\"cancelled\",row,daysBeforeCheckin,refundAmount,refundRateRoom,refundRateAdd,refundRateDeposit));}if(payment_status===\"refunded\"){({client_title,client_message,admin_title,admin_message}=createReservationMessage(\"refunded\",row,daysBeforeCheckin,refundAmount,refundRateRoom,refundRateAdd,refundRateDeposit));}}// 알림 전송 (모든 상태 공통)\nif(client_title&&client_message&&admin_title&&admin_message){try{// 관리자 연락\nfor(const phone of ADMIN_PHONES){await sendSMS(phone,admin_message);}for(const email of ADMIN_EMAILS){await sendEmail(email,admin_title,admin_message);}// 클라이언트 연락 - 예약 확정과 취소는 결제자와 예약자에게, 환불은 결제자에게만\nif(payment_status===\"accepted\"||payment_status===\"cancelled\"){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);}if(payment_status===\"refunded\"){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관리자에게 별도 확인을 부탁드립니다.\");}}}for(const id of deletedIDs){alert(`${apiBase}/${id}를 삭제합니다`);await fetch(`${apiBase}/${id}`,{method:\"DELETE\"});}setEditedIDs(new Set);setDeletedIDs(new Set);setUpdated(true);}catch(error){setUpdateError(error.message);console.error(error.message);alert(`${error.message}`);}finally{setUpdating(false);setTimeout(()=>{setUpdated(false);setUpdateError(null);},5e3);}};return{rows,paginatedRows,emptySlots,justAddedID,updating,updated,currentPage,totalPages,sortConfig,toggleSort,addElement,editElement,deleteElement,updateBackend,updateOrder,setCurrentPage,idKey,updateError};}\nexport const __FramerMetadata__ = {\"exports\":{\"useTableLogic\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useTableLogic.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";export function MenuToggle({mode,options,selected,onChange}){const isMulti=mode===\"multi\";const isSelected=val=>isMulti?selected.includes(val):selected===val;const handleClick=val=>{if(isMulti){const list=selected;const next=list.includes(val)?list.filter(v=>v!==val):[...list,val];onChange(next);}else{if(selected!==val)onChange(val);}};return /*#__PURE__*/_jsx(\"div\",{style:{display:\"inline-flex\",alignItems:\"center\",border:\"1px solid #ccc\",borderRadius:999,background:\"#fff\",fontSize:12,overflow:\"hidden\",height:24,boxShadow:\"inset 0 0 0 0.5px #ddd\"},children:options.map((opt,idx)=>{const selectedNow=isSelected(opt.value);return /*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{onClick:()=>handleClick(opt.value),style:{background:selectedNow?\"#e6f2ff\":\"transparent\",color:selectedNow?\"#2a5ca3\":\"#999\",fontWeight:selectedNow?700:500,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"pointer\",userSelect:\"none\",height:\"100%\",padding:\"0 14px\",transition:\"all 0.2s ease-in-out\"},children:opt.label}),idx<options.length-1&&/*#__PURE__*/_jsx(\"div\",{style:{width:1,height:\"60%\",background:\"#ddd\",alignSelf:\"center\"}})]},opt.value);})});}\nexport const __FramerMetadata__ = {\"exports\":{\"MenuToggle\":{\"type\":\"reactComponent\",\"name\":\"MenuToggle\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MenuToggle.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{MenuToggle}from\"https://framerusercontent.com/modules/79m6xKGAs6YRts4uPZQG/del0EaQUrYMCZ22ohuhc/MenuToggle.js\";function EditableField({value,onChange,placeholder=\"\",style}){const[editing,setEditing]=React.useState(false);const badgeStyle={...style,background:\"#fbfbfb\",border:\"none\",color:\"#444\",borderRadius:6,padding:\"3px 8px\",height:\"24px\",fontSize:12,fontWeight:600,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"pointer\",textAlign:\"center\",whiteSpace:\"nowrap\"};const inputStyle={...style,textAlign:\"center\"};return editing?/*#__PURE__*/_jsx(\"input\",{autoFocus:true,defaultValue:value,onBlur:e=>{onChange(e.target.value);setEditing(false);},onKeyDown:e=>{if(e.key===\"Enter\"){onChange(e.currentTarget.value);setEditing(false);}},placeholder:placeholder,style:inputStyle}):/*#__PURE__*/_jsx(\"div\",{onClick:()=>setEditing(true),style:badgeStyle,children:value||placeholder});}export function ConditionBadge({condition,onUpdate,onDelete}){const type=condition.type;const containerStyle={display:\"flex\",alignItems:\"center\",flexWrap:\"wrap\",gap:6,background:\"#f0f0f0\",borderRadius:12,padding:\"2px 14px\",fontSize:12,marginBottom:4};const labelStyle={fontWeight:600,marginRight:4,whiteSpace:\"nowrap\"};const tildeStyle={padding:\"0 4px\"};const inputStyle={height:\"24px\",lineHeight:\"24px\",fontSize:12,fontWeight:600,padding:\"4px 8px\",border:\"1px solid #ddd\",borderRadius:6,background:\"#fff\",color:\"#222\",width:100,flexShrink:0,letterSpacing:\"0.5px\",boxShadow:\"inset 0 0 2px #ddd\"};const renderByType=()=>{switch(type){case\"date\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"조건 적용 기간:\"}),/*#__PURE__*/_jsx(EditableField,{value:condition.startDate||\"\",onChange:val=>onUpdate({...condition,startDate:val}),placeholder:\"시작일\",style:inputStyle}),/*#__PURE__*/_jsx(\"span\",{style:tildeStyle,children:\"~\"}),/*#__PURE__*/_jsx(EditableField,{value:condition.endDate||\"\",onChange:val=>onUpdate({...condition,endDate:val}),placeholder:\"종료일\",style:inputStyle})]});case\"minimum_price\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"최소 결제 금액:\"}),/*#__PURE__*/_jsx(EditableField,{value:condition.min||\"\",onChange:val=>onUpdate({...condition,min:val}),placeholder:\"최소\",style:inputStyle}),/*#__PURE__*/_jsx(\"span\",{children:\"₩ 이상\"})]});case\"membership\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"멤버십:\"}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"multi\",options:[{label:\"비회원\",value:\"Non-Member\"},{label:\"TERENE 6\",value:\"TERENE 6\"},{label:\"TERENE 9\",value:\"TERENE 9\"},{label:\"TERENE 12\",value:\"TERENE 12\"},{label:\"TERENE 24\",value:\"TERENE 24\"}],selected:condition.members||[],onChange:next=>onUpdate({...condition,members:next})})]});case\"phase\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"Phase-n:\"}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"multi\",options:[{label:\"Phase-1\",value:\"Phase-1\"}],selected:condition.phases||[],onChange:next=>onUpdate({...condition,phases:next})})]});case\"revisit\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"재방문 고객:\"}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"multi\",options:[{label:\"최초방문\",value:\"0\"},{label:\"재방문\",value:\"1\"}],selected:condition.days||[],onChange:next=>onUpdate({...condition,days:next})})]});case\"seasonal\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"요일/시즌:\"}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"multi\",options:[{label:\"평일\",value:\"Weekday\"},{label:\"주말\",value:\"Weekend\"},{label:\"성수기(평일)\",value:\"Peak-Weekday\"},{label:\"성수기(주말)\",value:\"Peak-Weekend\"}],selected:condition.allowedCategories||[],onChange:next=>onUpdate({...condition,allowedCategories:next})})]});case\"relay\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"연박:\"}),/*#__PURE__*/_jsx(EditableField,{value:condition.min||\"\",onChange:val=>onUpdate({...condition,min:val}),placeholder:\"최소\",style:inputStyle}),/*#__PURE__*/_jsx(\"span\",{style:tildeStyle,children:\"~\"}),/*#__PURE__*/_jsx(EditableField,{value:condition.max||\"\",onChange:val=>onUpdate({...condition,max:val}),placeholder:\"최대\",style:inputStyle}),/*#__PURE__*/_jsx(\"span\",{children:\"박\"})]});case\"applied_discount\":return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:labelStyle,children:\"할인 금액:\"}),/*#__PURE__*/_jsx(EditableField,{value:condition.min||\"\",onChange:val=>onUpdate({...condition,min:val}),placeholder:\"최소\",style:inputStyle}),/*#__PURE__*/_jsx(\"span\",{style:tildeStyle,children:\"~\"}),/*#__PURE__*/_jsx(EditableField,{value:condition.max||\"\",onChange:val=>onUpdate({...condition,max:val}),placeholder:\"최대\",style:inputStyle}),/*#__PURE__*/_jsx(\"span\",{children:\"₩\"})]});default:return /*#__PURE__*/_jsx(\"span\",{children:\"조건 없음\"});}};return /*#__PURE__*/_jsxs(\"div\",{style:containerStyle,children:[renderByType(),/*#__PURE__*/_jsx(\"span\",{onClick:onDelete,style:{marginLeft:\"auto\",cursor:\"pointer\",color:\"#999\"},children:\"✕\"})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"ConditionBadge\":{\"type\":\"reactComponent\",\"name\":\"ConditionBadge\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ConditionBadge.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React from\"react\";export function CouponLogPopup({visible,onClose,content}){if(!visible)return null;// ESC로 창 닫기\nReact.useEffect(()=>{const handleKey=e=>{if(e.key===\"Escape\"){onClose();}};window.addEventListener(\"keydown\",handleKey);return()=>window.removeEventListener(\"keydown\",handleKey);},[onClose]);const handleCopy=async()=>{try{await navigator.clipboard.writeText(content);alert(\"복사되었습니다.\");}catch(err){alert(\"복사에 실패했습니다.\");}};return /*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",backgroundColor:\"rgba(0,0,0,0.5)\",zIndex:9999,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",padding:20,fontFamily:\"Pretendard, sans-serif\"},children:/*#__PURE__*/_jsxs(\"div\",{onClick:e=>e.stopPropagation(),style:{background:\"#fff\",borderRadius:12,padding:20,width:\"90%\",maxWidth:600,maxHeight:\"80vh\",overflowY:\"auto\",boxShadow:\"0 8px 24px rgba(0,0,0,0.2)\",position:\"relative\",fontFamily:\"Pretendard, sans-serif\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",marginBottom:12},children:[/*#__PURE__*/_jsx(\"strong\",{style:{fontSize:16},children:\"쿠폰 발급 결과\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8},children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleCopy,style:{fontSize:13,padding:\"4px 10px\",backgroundColor:\"#f0f0f0\",border:\"1px solid #ccc\",borderRadius:6,cursor:\"pointer\",fontFamily:\"Pretendard, sans-serif\"},children:\"복사\"}),/*#__PURE__*/_jsx(\"button\",{onClick:onClose,style:{background:\"transparent\",border:\"none\",fontSize:20,cursor:\"pointer\",color:\"#666\",fontFamily:\"Pretendard, sans-serif\"},children:\"✕\"})]})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:13,lineHeight:1.6,color:\"#333\",whiteSpace:\"pre-wrap\",backgroundColor:\"#f7f7f7\",padding:16,borderRadius:8,fontFamily:\"Pretendard, sans-serif\"},children:content})]})});}\nexport const __FramerMetadata__ = {\"exports\":{\"CouponLogPopup\":{\"type\":\"reactComponent\",\"name\":\"CouponLogPopup\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CouponLogPopup.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React from\"react\";const formatTimestamp=s=>s?s.replace(\"T\",\" \").slice(0,16):\"영구적\";export function CouponInstancesPopup({visible,onClose,couponDefinitionId}){const[loading,setLoading]=React.useState(false);const[error,setError]=React.useState(null);const[items,setItems]=React.useState([]);const[deletingIds,setDeletingIds]=React.useState([]);const[bulkDeleting,setBulkDeleting]=React.useState(false);// ESC로 창 닫기\nReact.useEffect(()=>{const handleKey=e=>{if(e.key===\"Escape\"){onClose();}};window.addEventListener(\"keydown\",handleKey);return()=>window.removeEventListener(\"keydown\",handleKey);},[onClose]);const mountedRef=React.useRef(true);React.useEffect(()=>{return()=>{mountedRef.current=false;};},[]);React.useEffect(()=>{if(!visible||!couponDefinitionId)return;const fetchData=async()=>{setLoading(true);setError(null);try{// 1차: 정의된 쿼리 파라미터 시도\nlet res=await fetch(`https://terene-db-server.onrender.com/api/v2/coupon-instances?coupon_definition_id=${encodeURIComponent(couponDefinitionId)}`);// 혹시 서버가 쿼리를 지원 안 하면 전체 받아서 필터\nif(!res.ok){res=await fetch(\"https://terene-db-server.onrender.com/api/v2/coupon-instances\");}if(!res.ok)throw new Error(\"쿠폰 인스턴스 조회 실패\");const data=await res.json();const filtered=data.filter(d=>d.coupon_definition_id===couponDefinitionId);// 최신 발급 순으로 정렬(issued_at desc, 없으면 최근 생성 가정)\nfiltered.sort((a,b)=>{const ta=a.issued_at?new Date(a.issued_at).getTime():0;const tb=b.issued_at?new Date(b.issued_at).getTime():0;return tb-ta;});if(mountedRef.current)setItems(filtered);}catch(e){if(mountedRef.current)setError(e?.message||\"알 수 없는 오류가 발생했습니다.\");}finally{if(mountedRef.current)setLoading(false);}};fetchData();},[visible,couponDefinitionId]);const handleCopy=async()=>{try{const header=\"배포 대상 | 쿠폰 코드 | 이용 상태 | 쿠폰 발행 시각 | 쿠폰 소멸 시각 | 사용된 예약 번호\";const lines=items.map(it=>[it.receiver_info?.membership_number??\"비회원\",it.coupon_code??\"(멤버쉽 쿠폰)\",it.status??\"\",it.issued_at??\"\",it.coupon_due??\"\",it.order_id??\"\"].join(\" | \"));await navigator.clipboard.writeText([header,...lines].join(\"\\n\"));alert(\"표 내용이 복사되었습니다.\");}catch{alert(\"복사에 실패했습니다.\");}};const handleDeleteOne=async id=>{if(!confirm(\"정말 이 쿠폰을 삭제하시겠습니까?\"))return;setDeletingIds(prev=>[...prev,id]);try{const res=await fetch(`https://terene-db-server.onrender.com/api/v2/coupon-instances/${id}`,{method:\"DELETE\"});if(!res.ok)throw new Error(\"삭제 실패\");setItems(prev=>prev.filter(it=>it.coupon_instance_id!==id));}catch(err){alert(err.message);}finally{setDeletingIds(prev=>prev.filter(x=>x!==id));}};const handleDeleteAll=async()=>{if(!confirm(\"정말 모든 쿠폰을 삭제하시겠습니까?\"))return;setBulkDeleting(true);try{for(const it of items){await fetch(`https://terene-db-server.onrender.com/api/v2/coupon-instances/${it.coupon_instance_id}`,{method:\"DELETE\"});}setItems([]);}catch(err){alert(\"일부 삭제에 실패했습니다.\");}finally{setBulkDeleting(false);}};if(!visible)return null;return /*#__PURE__*/_jsx(\"div\",{onClick:onClose,style:{position:\"fixed\",inset:0,backgroundColor:\"rgba(0,0,0,0.5)\",zIndex:9999,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",padding:20,fontFamily:\"Pretendard, sans-serif\"},children:/*#__PURE__*/_jsxs(\"div\",{onClick:e=>e.stopPropagation(),style:{background:\"#fff\",borderRadius:12,padding:20,width:\"96%\",maxWidth:1300,maxHeight:\"84vh\",overflow:\"hidden\",boxShadow:\"0 8px 24px rgba(0,0,0,0.2)\",position:\"relative\",fontFamily:\"Pretendard, sans-serif\",display:\"flex\",flexDirection:\"column\",gap:12},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",gap:8},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"baseline\",gap:10},children:[/*#__PURE__*/_jsx(\"strong\",{style:{fontSize:16},children:\"쿠폰 인스턴스 조회\"}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:12,color:\"#777\"},children:[\"definition:\",\" \",/*#__PURE__*/_jsx(\"code\",{style:{fontFamily:\"ui-monospace, SFMono-Regular, Menlo\"},children:couponDefinitionId})]}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:12,color:\"#777\"},children:[\"총 \",items.length,\"건\"]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8},children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleCopy,style:{fontSize:13,padding:\"4px 10px\",backgroundColor:\"#f0f0f0\",border:\"1px solid #ccc\",borderRadius:6,cursor:\"pointer\",fontFamily:\"Pretendard, sans-serif\"},disabled:loading||!!error||items.length===0,title:items.length===0?\"복사할 내용이 없습니다.\":\"\",children:\"복사\"}),/*#__PURE__*/_jsx(\"button\",{onClick:handleDeleteAll,style:{fontSize:13,padding:\"4px 10px\",backgroundColor:\"#ffe5e5\",border:\"1px solid #f5b5b5\",borderRadius:6,cursor:\"pointer\",fontFamily:\"Pretendard, sans-serif\"},disabled:loading||!!error||items.length===0||bulkDeleting,children:\"전체 삭제\"}),/*#__PURE__*/_jsx(\"button\",{onClick:onClose,style:{background:\"transparent\",border:\"none\",fontSize:20,cursor:\"pointer\",color:\"#666\",fontFamily:\"Pretendard, sans-serif\"},children:\"✕\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{border:\"1px solid #e5e5e5\",borderRadius:10,overflow:\"hidden\",background:\"#fff\",display:\"flex\",flexDirection:\"column\",minHeight:200},children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"8px 12px\",borderBottom:\"1px solid #eee\",fontSize:12,color:\"#666\",background:\"#fafafa\"},children:[loading&&\"불러오는 중...\",error&&/*#__PURE__*/_jsx(\"span\",{style:{color:\"#d00\"},children:error}),!loading&&!error&&items.length===0&&\"데이터가 없습니다.\"]}),/*#__PURE__*/_jsx(\"div\",{style:{overflow:\"auto\"},children:/*#__PURE__*/_jsxs(\"table\",{style:{width:\"100%\",borderCollapse:\"collapse\",fontSize:13,color:\"#333\",tableLayout:\"fixed\"},children:[/*#__PURE__*/_jsx(\"thead\",{children:/*#__PURE__*/_jsx(\"tr\",{style:{background:\"#f7f7f7\",borderBottom:\"1px solid #eee\",position:\"sticky\",top:0,zIndex:1},children:[\"배포 대상\",\"쿠폰 코드\",\"이용 상태\",\"쿠폰 발행 시각\",\"쿠폰 소멸 시각\",\"사용된 예약 번호\",\"삭제\"].map((header,i)=>/*#__PURE__*/_jsx(\"th\",{style:{...thStyle,width:thWidths[i]},children:header},header))})}),/*#__PURE__*/_jsx(\"tbody\",{children:items.map(it=>/*#__PURE__*/_jsxs(\"tr\",{style:{borderBottom:\"1px solid #f0f0f0\"},children:[/*#__PURE__*/_jsx(\"td\",{style:tdStyle,children:it.receiver_info?.membership_number?`${it.receiver_info?.name??\"이름 없음\"} | ${it.receiver_info?.membership_number}`:`${it.receiver_info?.name??\"이름 없음\"} | ${it.receiver_info?.birthdate??\"생년월일 없음\"} | ${it.receiver_info?.contact??\"연락처 없음\"}`}),/*#__PURE__*/_jsx(\"td\",{style:tdStyle,children:it.coupon_code??\"(멤버쉽 쿠폰)\"}),/*#__PURE__*/_jsx(\"td\",{style:tdStyle,children:humanizeStatus(it.status)}),/*#__PURE__*/_jsx(\"td\",{style:tdStyle,children:formatTimestamp(it.issued_at)??\"\"}),/*#__PURE__*/_jsx(\"td\",{style:tdStyle,children:formatTimestamp(it.coupon_due)??\"\"}),/*#__PURE__*/_jsx(\"td\",{style:tdStyle,children:it.order_id??\"\"}),/*#__PURE__*/_jsx(\"td\",{style:tdStyle,children:/*#__PURE__*/_jsx(\"button\",{onClick:()=>handleDeleteOne(it.coupon_instance_id),disabled:deletingIds.includes(it.coupon_instance_id),style:{fontSize:12,padding:\"2px 6px\",backgroundColor:\"#ffe5e5\",border:\"1px solid #f5b5b5\",borderRadius:4,cursor:\"pointer\"},children:deletingIds.includes(it.coupon_instance_id)?\"삭제중...\":\"삭제\"})})]},it.coupon_instance_id))})]})})]})]})});}const thWidths=[\"25%\",\"15%\",\"10%\",\"15%\",\"15%\",\"15%\",\"5\"];const thStyle={textAlign:\"left\",padding:\"10px 12px\",fontWeight:700,fontSize:12,color:\"#555\",whiteSpace:\"normal\",wordBreak:\"break-word\"};const tdStyle={padding:\"10px 12px\",verticalAlign:\"middle\",whiteSpace:\"normal\",wordBreak:\"break-word\"};function humanizeStatus(s){if(!s)return\"\";if(s===\"available\")return\"사용 가능\";if(s===\"used\")return\"사용 완료\";if(s===\"expired\")return\"기간 만료\";if(s===\"disabled\")return\"비활성 쿠폰\";return s;}\nexport const __FramerMetadata__ = {\"exports\":{\"CouponInstancesPopup\":{\"type\":\"reactComponent\",\"name\":\"CouponInstancesPopup\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CouponInstancesPopup.map","// === New file: CouponTargetsPopup.tsx ===\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React from\"react\";export function CouponTargetsPopup({visible,onClose,coupon,temp}){const[rows,setRows]=React.useState([{membership_number:null,issued_date:null,coupon_code:null,name:null,birthdate:null,contact:null,distribute_count:1}]);const[busy,setBusy]=React.useState(false);const[error,setError]=React.useState(null);React.useEffect(()=>{if(!visible)return;setError(null);},[visible]);// ESC로 창 닫기\nReact.useEffect(()=>{const handleKey=e=>{if(e.key===\"Escape\"){onClose();}};window.addEventListener(\"keydown\",handleKey);return()=>window.removeEventListener(\"keydown\",handleKey);},[onClose]);const addRow=()=>setRows(r=>[...r,{membership_number:null,issued_date:null,coupon_code:null,name:null,birthdate:null,contact:null,distribute_count:1}]);const removeRow=idx=>setRows(r=>r.filter((_,i)=>i!==idx));const clearAll=()=>setRows([]);const update=(idx,key,val)=>setRows(r=>r.map((row,i)=>i===idx?{...row,[key]:val}:row));// ==== Distribution helpers (trimmed/adapted from CouponDistributionPanel) ====\nconst distributeAll=async()=>{if(!coupon?.coupon_definition_id){alert(\"쿠폰이 선택되지 않았습니다.\");return;}setBusy(true);setError(null);try{const today=new Date;const kstDate=new Date(today.getTime()+9*60*60*1e3);const formatDate=d=>{const yyyy=d.getFullYear();const mm=String(d.getMonth()+1).padStart(2,\"0\");const dd=String(d.getDate()).padStart(2,\"0\");return`${yyyy}-${mm}-${dd}`;};const generateSafeCode=(length=8)=>{const chars=\"ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz123456789\";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join(\"\");};const generateCouponInstanceId=()=>{const datePart=kstDate.toISOString().slice(2,10).replace(/-/g,\"\");const timePart=String(kstDate.getHours()).padStart(2,\"0\")+String(kstDate.getMinutes()).padStart(2,\"0\");const rand=generateSafeCode(8);return`CI-${datePart}-${timePart}-${rand}`;};const addDate=(base,type,value)=>{const result=new Date(base);const val=parseInt(value,10);if(type===\"day\")result.setDate(result.getDate()+val);else if(type===\"week\")result.setDate(result.getDate()+val*7);else if(type===\"month\")result.setMonth(result.getMonth()+val);else if(type===\"year\")result.setFullYear(result.getFullYear()+val);result.setSeconds(result.getSeconds()-1);return result;};const toYMD=d=>new Date(d.getFullYear(),d.getMonth(),d.getDate());const todayYMD=toYMD(kstDate);const makeDue=baseDate=>{let due=null;if(temp.validity_type===\"custom\"){due=temp.validity_value?new Date(temp.validity_value):null;}else if(temp.validity_type===\"permanent\"){due=null;}else{due=addDate(baseDate,temp.validity_type,temp.validity_value);}if(temp.type===\"membership\"&&due){let d=toYMD(due);if(!isNaN(d.getTime())){while(d<todayYMD)d.setFullYear(d.getFullYear()+1);d=new Date(d.getTime()+24*60*60*1e3-1e3);due=d;}}return due;};const normalize=str=>str?.replace(/[\\s\\-./]/g,\"\").toLowerCase().trim();// existing instances (for duplicate checks)\nconst existingInstances=await fetch(`https://terene-db-server.onrender.com/api/v2/coupon-instances?coupon_definition_id=${coupon.coupon_definition_id}`).then(r=>r.json());// 이미 존재하는(충돌 방지용) 코드 목록 수집\nconst usedCodes=new Set(existingInstances.map(i=>i?.coupon_code).filter(c=>typeof c===\"string\"&&c.trim()));const makeUniqueCode=base=>{// base 후보가 있으면 우선 사용 (충돌 시 랜덤 대체)\nif(base&&!usedCodes.has(base)){usedCodes.add(base);return base;}let code=\"\";do{code=generateSafeCode(8+Math.floor(Math.random()*3));}while(usedCodes.has(code))usedCodes.add(code);return code;};const shouldSkip=info=>{if(info.membership_number){return existingInstances.some(inst=>inst.coupon_definition_id===coupon.coupon_definition_id&&normalize(inst.membership_number)===normalize(info.membership_number));}return existingInstances.some(inst=>inst.coupon_definition_id===coupon.coupon_definition_id&&normalize(inst.receiver_info?.name)===normalize(info.name)&&normalize(inst.receiver_info?.birthdate)===normalize(info.birthdate)&&normalize(inst.receiver_info?.contact)===normalize(info.contact));};const postInstance=async payload=>{const res=await fetch(\"https://terene-db-server.onrender.com/api/v2/coupon-instances\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(payload)});if(!res.ok)throw new Error(\"쿠폰 발급 실패\");return res.json();};const results=[];for(let i=0;i<rows.length;i++){const info=rows[i];if(!info)continue;const baseDate=temp.type===\"membership\"&&info.issued_date==null&&info.membership_number?kstDate:info.issued_date?.trim()?new Date(info.issued_date):kstDate;const due=makeDue(baseDate);// const coupon_due = due ? formatDate(due) : null\nconst coupon_due=due;const issuedAtMidnight=toYMD(kstDate);const isMembershipCoupon=temp.type===\"membership\";const payloadBase={coupon_definition_id:coupon.coupon_definition_id,status:\"available\",// issued_at: formatDate(issuedAtMidnight),\nissued_at:baseDate,coupon_due,sender_info:{is_vaadd:true,membership_number:null,name:null,birthdate:null,contact:null},receiver_info:{membership_number:info.membership_number??null,name:info.name??null,birthdate:info.birthdate??null,contact:info.contact??null},order_id:null,used_location:null,used_timestamp:null,used_amount:null};if(shouldSkip(info))continue;const count=Math.max(1,Number(info.distribute_count||1));for(let k=0;k<count;k++){// 인스턴스마다 고유 코드 생성 (멤버십은 코드 없음)\nlet coupon_code=null;if(!isMembershipCoupon){if(info.coupon_code){// 첫 장은 입력값 그대로, 이후는 \"-2\", \"-3\"... 시도 (충돌 시 랜덤 대체)\nconst candidate=k===0?info.coupon_code:`${info.coupon_code}-${k+1}`;coupon_code=makeUniqueCode(candidate);}else{coupon_code=makeUniqueCode();}}const payload={...payloadBase,coupon_instance_id:generateCouponInstanceId(),coupon_code,membership_number:info.membership_number};await postInstance(payload);results.push({row:i+1,member:info.membership_number||\"비회원\",code:coupon_code});}}alert(results.length?`총 ${results.length}건 발급 완료.`:\"발급된 쿠폰이 없습니다. (중복 정책으로 스킵되었을 수 있어요)\");onClose();}catch(e){setError(e?.message||\"배포 중 오류가 발생했습니다.\");}finally{setBusy(false);}};if(!visible)return null;return /*#__PURE__*/_jsx(\"div\",{onClick:onClose,style:{position:\"fixed\",inset:0,backgroundColor:\"rgba(0,0,0,0.5)\",zIndex:9999,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",padding:20,fontFamily:\"Pretendard, sans-serif\"},children:/*#__PURE__*/_jsxs(\"div\",{onClick:e=>e.stopPropagation(),style:{background:\"#fff\",borderRadius:12,padding:20,width:\"96%\",maxWidth:1100,maxHeight:\"84vh\",overflow:\"hidden\",boxShadow:\"0 8px 24px rgba(0,0,0,0.2)\",position:\"relative\",fontFamily:\"Pretendard, sans-serif\",display:\"flex\",flexDirection:\"column\",gap:12},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:10,alignItems:\"baseline\"},children:[/*#__PURE__*/_jsx(\"strong\",{style:{fontSize:16},children:\"다중 배포 대상\"}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:12,color:\"#777\"},children:[\"definition:\",\" \",/*#__PURE__*/_jsx(\"code\",{style:{fontFamily:\"ui-monospace, Menlo\"},children:coupon?.coupon_definition_id||\"-\"})]}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:12,color:\"#777\"},children:[\"총 \",rows.length,\"건\"]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8},children:[/*#__PURE__*/_jsx(\"button\",{onClick:addRow,style:{fontSize:13,padding:\"4px 10px\",backgroundColor:\"#f0f0f0\",border:\"1px solid #ccc\",borderRadius:6,cursor:\"pointer\"},disabled:busy,children:\"행 추가\"}),/*#__PURE__*/_jsx(\"button\",{onClick:clearAll,style:{fontSize:13,padding:\"4px 10px\",backgroundColor:\"#ffe5e5\",border:\"1px solid #f5b5b5\",borderRadius:6,cursor:\"pointer\"},disabled:busy||rows.length===0,children:\"전체 삭제\"}),/*#__PURE__*/_jsx(\"button\",{onClick:onClose,style:{background:\"transparent\",border:\"none\",fontSize:20,cursor:\"pointer\",color:\"#666\"},children:\"✕\"})]})]}),/*#__PURE__*/_jsx(\"div\",{style:{padding:\"8px 12px\",border:\"1px solid #eee\",background:\"#fafafa\",borderRadius:8,fontSize:12,color:error?\"#d00\":\"#666\"},children:busy?\"배포 중...\":error?error:\"각 항목은 모두 수정 가능합니다.\"}),/*#__PURE__*/_jsx(\"div\",{style:{border:\"1px solid #e5e5e5\",borderRadius:10,overflow:\"hidden\",background:\"#fff\",display:\"flex\",flexDirection:\"column\",minHeight:200},children:/*#__PURE__*/_jsx(\"div\",{style:{overflow:\"auto\"},children:/*#__PURE__*/_jsxs(\"table\",{style:{width:\"100%\",borderCollapse:\"collapse\",fontSize:13,color:\"#333\",tableLayout:\"fixed\"},children:[/*#__PURE__*/_jsx(\"thead\",{children:/*#__PURE__*/_jsx(\"tr\",{style:{background:\"#f7f7f7\",borderBottom:\"1px solid #eee\",position:\"sticky\",top:0,zIndex:1},children:[\"회원번호\",\"쿠폰 발급일\",\"쿠폰 코드\",\"이름\",\"생년월일\",\"연락처\",\"배포 개수\",\"삭제\"].map((header,i)=>/*#__PURE__*/_jsx(\"th\",{style:{textAlign:\"left\",padding:\"10px 12px\",fontWeight:700,fontSize:12,color:\"#555\"},children:header},i))})}),/*#__PURE__*/_jsxs(\"tbody\",{children:[rows.map((row,idx)=>/*#__PURE__*/_jsxs(\"tr\",{style:{borderBottom:\"1px solid #f0f0f0\"},children:[/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"input\",{value:row.membership_number??\"\",onChange:e=>update(idx,\"membership_number\",e.target.value),style:ipt})}),/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"input\",{placeholder:\"YYYY-MM-DD\",value:row.issued_date??\"\",onChange:e=>update(idx,\"issued_date\",e.target.value),style:ipt})}),/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"input\",{value:row.coupon_code??\"\",onChange:e=>update(idx,\"coupon_code\",e.target.value),style:ipt})}),/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"input\",{value:row.name??\"\",onChange:e=>update(idx,\"name\",e.target.value),style:ipt})}),/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"input\",{placeholder:\"YYYY-MM-DD\",value:row.birthdate??\"\",onChange:e=>update(idx,\"birthdate\",e.target.value),style:ipt})}),/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"input\",{value:row.contact??\"\",onChange:e=>update(idx,\"contact\",e.target.value),style:ipt})}),/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"input\",{type:\"number\",min:1,value:row.distribute_count??1,onChange:e=>update(idx,\"distribute_count\",Number(e.target.value)),style:{...ipt,width:90}})}),/*#__PURE__*/_jsx(\"td\",{style:cellStyle,children:/*#__PURE__*/_jsx(\"button\",{onClick:()=>removeRow(idx),disabled:busy,style:{fontSize:12,padding:\"2px 6px\",backgroundColor:\"#ffe5e5\",border:\"1px solid #f5b5b5\",borderRadius:4,cursor:\"pointer\"},children:\"삭제\"})})]},idx)),rows.length===0&&/*#__PURE__*/_jsx(\"tr\",{children:/*#__PURE__*/_jsx(\"td\",{colSpan:8,style:{padding:16,color:\"#777\",fontSize:12},children:\"행이 없습니다. [행 추가] 를 눌러 시작하세요.\"})})]})]})})}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"flex-end\",gap:8},children:/*#__PURE__*/_jsx(\"button\",{onClick:distributeAll,disabled:busy||rows.length===0,style:{padding:\"8px 18px\",background:\"#3399ff\",color:\"#fff\",fontWeight:700,border:\"none\",borderRadius:8,cursor:\"pointer\"},children:\"쿠폰 배포\"})})]})});}const ipt={width:\"100%\",height:28,padding:\"6px 10px\",border:\"1px solid \"+\"#ccc\",borderRadius:6,fontSize:13,outline:\"none\",boxSizing:\"border-box\"};const cellStyle={padding:\"10px 12px\",verticalAlign:\"middle\"};\nexport const __FramerMetadata__ = {\"exports\":{\"CouponTargetsPopup\":{\"type\":\"reactComponent\",\"name\":\"CouponTargetsPopup\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"TargetRow\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CouponTargetsPopup.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import React from\"react\";import{MenuToggle}from\"https://framerusercontent.com/modules/79m6xKGAs6YRts4uPZQG/del0EaQUrYMCZ22ohuhc/MenuToggle.js\";import{CouponLogPopup}from\"https://framerusercontent.com/modules/V5fPyOhrC1UoB6WHwxuX/ZI5aHqTdPAHiVwAlbLVR/CouponLogPopup.js\";import{CouponInstancesPopup}from\"https://framerusercontent.com/modules/2hAGgcnor2CvSHiSrU93/wFgIQOZ7yiv8RRrfd5Rq/CouponInstancesPopup.js\";import{CouponTargetsPopup}from\"https://framerusercontent.com/modules/t3dzZ6SFO74BM1G5sMgx/rbRQZmRWil8VXORdMgkj/CouponTargetsPopup.js\";const inputStyle={width:\"100%\",height:24,padding:\"6px 10px\",border:\"1px solid #ccc\",borderRadius:6,fontSize:14,outline:\"none\",boxSizing:\"border-box\"};export function CouponDistributionPanel({temp,coupon,handleChange}){const[memberInfo,setMemberInfo]=React.useState({membership_number:null,name:null,birthdate:null,contact:null,signup_date:null,issued_date:null,coupon_code:null});const[showLogPopup,setShowLogPopup]=React.useState(false);const[logContent,setLogContent]=React.useState(\"\");const[showInstancesPopup,setShowInstancesPopup]=React.useState(false);const[showTargetsPopup,setShowTargetsPopup]=React.useState(false);React.useEffect(()=>{if(temp.type!==\"membership\")return;const predefinedCounts={\"TERENE 6\":{평일:4,주말:1,성수기:1},\"TERENE 9\":{평일:5,주말:2,성수기:2},\"TERENE 12\":{평일:7,주말:3,성수기:2},\"TERENE 24\":{평일:13,주말:6,성수기:5}};const targets=temp.type===\"membership\"?temp.conditions_json?.find(c=>c.type===\"membership\")?.members||[]:temp.groupTarget||[];const keys=Object.keys(predefinedCounts);const matchedKey=keys.find(k=>targets.includes(k));if(!matchedKey)return;const name=coupon.name||\"\";const countMap=predefinedCounts[matchedKey];let keyword=undefined;if(name.includes(\"평일\"))keyword=\"평일\";else if(name.includes(\"주말\"))keyword=\"주말\";else if(name.includes(\"성수기\"))keyword=\"성수기\";if(keyword&&countMap[keyword]!=null){handleChange(\"distributeCount\",countMap[keyword]);}},[coupon.name,temp.groupTarget,temp.conditions_json,temp.type]);const isMembershipType=temp.type===\"membership\";const isGroup=temp.distributeMode===\"group\";const handleDistribute=async()=>{const today=new Date;const kstDate=new Date(today.getTime()+9*60*60*1e3);const formatDate=d=>{const yyyy=d.getFullYear();const mm=String(d.getMonth()+1).padStart(2,\"0\");const dd=String(d.getDate()).padStart(2,\"0\");return`${yyyy}-${mm}-${dd}`;};const generateSafeCode=(length=8)=>{const chars=\"ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz123456789\";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join(\"\");};const generateCouponInstanceId=()=>{const datePart=kstDate.toISOString().slice(2,10).replace(/-/g,\"\");const timePart=String(kstDate.getHours()).padStart(2,\"0\")+String(kstDate.getMinutes()).padStart(2,\"0\");const rand=generateSafeCode(8);return`CI-${datePart}-${timePart}-${rand}`;};// const addDate = (base: Date, type: string, value: string) => {\n//     const result = new Date(base)\n//     const val = parseInt(value, 10)\n//     if (type === \"day\") result.setDate(result.getDate() + val)\n//     else if (type === \"week\") result.setDate(result.getDate() + val * 7)\n//     else if (type === \"month\") result.setMonth(result.getMonth() + val)\n//     else if (type === \"year\")\n//         result.setFullYear(result.getFullYear() + val)\n//     result.setDate(result.getDate() - 1)\n//     return result\n// }\n// const createInstance = (info: any) => {\n//     const baseDate =\n//         temp.type === \"membership\" && info.signup_date\n//             ? new Date(info.signup_date)\n//             : info.issued_date?.trim()\n//               ? new Date(info.issued_date)\n//               : kstDate\n//     // 날짜만 비교하기 위해 자정으로 맞추는 헬퍼\n//     const toYMD = (d: Date) =>\n//         new Date(d.getFullYear(), d.getMonth(), d.getDate())\n//     // 오늘(KST) 자정\n//     const todayYMD = toYMD(kstDate)\n//     // 만료일 원본 Date 계산 (포맷은 나중에)\n//     let dueDate: Date | null = null\n//     if (temp.validity_type === \"custom\") {\n//         // custom은 YYYY-MM-DD 같은 문자열일 수 있음\n//         dueDate = temp.validity_value\n//             ? new Date(temp.validity_value)\n//             : null\n//     } else if (temp.validity_type === \"permanent\") {\n//         dueDate = null\n//     } else {\n//         // day/week/month/year 기준으로 baseDate에 더한 뒤, 하루 빼는 기존 로직 사용\n//         dueDate = addDate(\n//             baseDate,\n//             temp.validity_type,\n//             temp.validity_value\n//         )\n//     }\n//     // ✅ membership 전용: 만료일이 오늘(KST) 이전이면 1년씩 더함\n//     if (temp.type === \"membership\" && dueDate) {\n//         let d = toYMD(dueDate)\n//         // 유효하지 않은 날짜 방지\n//         if (!isNaN(d.getTime())) {\n//             while (d < todayYMD) {\n//                 d.setFullYear(d.getFullYear() + 1)\n//             }\n//             dueDate = d\n//         }\n//     }\n//     const coupon_due = dueDate ? formatDate(dueDate) : null\n//     const isMembershipCoupon = temp.type === \"membership\"\n//     const coupon_code = isMembershipCoupon\n//         ? null\n//         : info.coupon_code\n//           ? info.coupon_code\n//           : generateSafeCode(8 + Math.floor(Math.random() * 3))\n//     return {\n//         coupon_instance_id: generateCouponInstanceId(),\n//         coupon_definition_id: coupon.coupon_definition_id,\n//         coupon_code,\n//         status: \"available\",\n//         membership_number: info.membership_number,\n//         issued_at: formatDate(kstDate),\n//         coupon_due,\n//         sender_info: {\n//             is_vaadd: true,\n//             membership_number: null,\n//             name: null,\n//             birthdate: null,\n//             contact: null,\n//         },\n//         receiver_info: {\n//             membership_number: info.membership_number ?? null,\n//             name: info.name ?? null,\n//             birthdate: info.birthdate ?? null,\n//             contact: info.contact ?? null,\n//         },\n//         order_id: null,\n//         used_location: null,\n//         used_timestamp: null,\n//         used_amount: null,\n//     }\n// }\nconst addDate=(base,type,value)=>{const result=new Date(base);const val=parseInt(value,10);if(type===\"day\")result.setDate(result.getDate()+val);else if(type===\"week\")result.setDate(result.getDate()+val*7);else if(type===\"month\")result.setMonth(result.getMonth()+val);else if(type===\"year\")result.setFullYear(result.getFullYear()+val);result.setSeconds(result.getSeconds()-1);return result;};const createInstance=info=>{const baseDate=temp.type===\"membership\"&&info.signup_date?new Date(info.signup_date):info.issued_date?.trim()?new Date(info.issued_date):kstDate;const toYMD=d=>new Date(d.getFullYear(),d.getMonth(),d.getDate());const todayYMD=toYMD(kstDate);let dueDate=null;if(temp.validity_type===\"custom\"){dueDate=temp.validity_value?new Date(temp.validity_value):null;}else if(temp.validity_type===\"permanent\"){dueDate=null;}else{dueDate=addDate(baseDate,temp.validity_type,temp.validity_value);}if(temp.type===\"membership\"&&dueDate){let d=toYMD(dueDate);if(!isNaN(d.getTime())){while(d<todayYMD){d.setFullYear(d.getFullYear()+1);}d=new Date(d.getTime()+24*60*60*1e3-1e3);dueDate=d;}}const issuedAtMidnight=toYMD(kstDate);const coupon_due=dueDate;const isMembershipCoupon=temp.type===\"membership\";const coupon_code=isMembershipCoupon?null:info.coupon_code?info.coupon_code:generateSafeCode(8+Math.floor(Math.random()*3));return{coupon_instance_id:generateCouponInstanceId(),coupon_definition_id:coupon.coupon_definition_id,coupon_code,status:\"available\",membership_number:info.membership_number,issued_at:baseDate,coupon_due,sender_info:{is_vaadd:true,membership_number:null,name:null,birthdate:null,contact:null},receiver_info:{membership_number:info.membership_number??null,name:info.name??null,birthdate:info.birthdate??null,contact:info.contact??null},order_id:null,used_location:null,used_timestamp:null,used_amount:null};};const postInstance=async payload=>{const res=await fetch(\"https://terene-db-server.onrender.com/api/v2/coupon-instances\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(payload)});if(!res.ok)throw new Error(\"쿠폰 발급 실패\");return res.json();};// ✅ 기존 인스턴스 조회\nconst existingInstances=await fetch(`https://terene-db-server.onrender.com/api/v2/coupon-instances?coupon_definition_id=${coupon.coupon_definition_id}`).then(res=>res.json());const codeResults=[];const nonMembers=[];const members=[];const count=temp.distributeCount||1;const isBulk=isGroup||isMembershipType;const normalize=str=>str?.replace(/[\\s\\-./]/g,\"\").toLowerCase().trim();const shouldSkipInstance=info=>{if(info.membership_number){// membership_number 기준\nreturn existingInstances.some(inst=>inst.coupon_definition_id===coupon.coupon_definition_id&&normalize(inst.membership_number)===normalize(info.membership_number));}else{// 이름+생년월일+연락처 기준\nreturn existingInstances.some(inst=>inst.coupon_definition_id===coupon.coupon_definition_id&&normalize(inst.receiver_info?.name)===normalize(info.name)&&normalize(inst.receiver_info?.birthdate)===normalize(info.birthdate)&&normalize(inst.receiver_info?.contact)===normalize(info.contact));}};if(isBulk){const isIncludeNonMember=(temp.type===\"membership\"?temp.conditions_json?.find(c=>c.type===\"membership\")?.members||[]:temp.groupTarget||[]).includes(\"Non-Member\");const isIncludeMembersOnly=(temp.type===\"membership\"?temp.conditions_json?.find(c=>c.type===\"membership\")?.members||[]:temp.groupTarget||[]).filter(grade=>grade!==\"Non-Member\");// 🔹 비회원 처리\nif(isIncludeNonMember){for(let i=0;i<count;i++){const info={membership_number:null,name:null,birthdate:null,contact:null,signup_date:\"\"};if(shouldSkipInstance(info))continue;const instance=createInstance(info);await postInstance(instance);nonMembers.push({member:\"비회원\",code:instance.coupon_code});}}// 🔹 회원 처리\nif(isIncludeMembersOnly.length>0){const res=await fetch(\"https://terene-db-server.onrender.com/api/v2/customers\");const customers=await res.json();const filtered=customers.filter(c=>isIncludeMembersOnly.includes(c.membership_grade));for(const customer of filtered){const info={membership_number:customer.membership_number||\"비회원\",name:customer.name_kor||\"\",birthdate:customer.birthdate||\"\",contact:customer.phone||\"\",signup_date:customer.signup_date||\"\"};if(shouldSkipInstance(info))continue;for(let i=0;i<count;i++){const instance=createInstance(info);await postInstance(instance);members.push({member:info.membership_number||\"비회원\",code:instance.coupon_code});}}}codeResults.push(...members,...nonMembers);}else{// 🔹 개인 배포\nconst info={...memberInfo};if(!shouldSkipInstance(info)){for(let i=0;i<count;i++){const instance=createInstance(info);await postInstance(instance);codeResults.push({member:instance.membership_number||\"비회원\",code:instance.coupon_code});}}}const log=`총 ${codeResults.length}개의 쿠폰이 발급되었습니다:\n\n`+codeResults.map((r,idx)=>`${idx+1}.  발급 대상: ${r.member},  코드: ${r.code||\"(멤버쉽 쿠폰)\"}`).join(\"\\n\");setLogContent(log);setShowLogPopup(true);};return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(CouponLogPopup,{visible:showLogPopup,onClose:()=>setShowLogPopup(false),content:logContent}),/*#__PURE__*/_jsx(CouponInstancesPopup,{visible:showInstancesPopup,onClose:()=>setShowInstancesPopup(false),couponDefinitionId:coupon?.coupon_definition_id}),/*#__PURE__*/_jsx(CouponTargetsPopup,{visible:showTargetsPopup,onClose:()=>setShowTargetsPopup(false),coupon:coupon,temp:temp}),/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:16,borderTop:\"1px dashed #ccc\",paddingTop:12},children:[temp.type===\"membership\"?/*#__PURE__*/_jsxs(\"div\",{style:{fontWeight:600,marginBottom:6},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:\"#555\"},children:\"단체 배포 대상: \"}),(temp.conditions_json||[]).find(c=>c.type===\"membership\")?.members?.join(\", \")||\"설정 없음\"]}):/*#__PURE__*/_jsx(MenuToggle,{mode:\"single\",options:[{label:\"개인 배포\",value:\"personal\"},{label:\"단체 배포\",value:\"group\"}],selected:temp.distributeMode||\"personal\",onChange:val=>handleChange(\"distributeMode\",val)}),temp.type===\"membership\"||temp.distributeMode===\"group\"?/*#__PURE__*/_jsx(\"div\",{style:{marginTop:12},children:/*#__PURE__*/_jsx(MenuToggle,{mode:\"multi\",options:[{label:\"비회원\",value:\"Non-Member\"},{label:\"TERENE 6\",value:\"TERENE 6\"},{label:\"TERENE 9\",value:\"TERENE 9\"},{label:\"TERENE 12\",value:\"TERENE 12\"},{label:\"TERENE 24\",value:\"TERENE 24\"}],selected:temp.type===\"membership\"?temp.conditions_json?.find(c=>c.type===\"membership\")?.members||[]:temp.groupTarget||[],onChange:val=>{if(temp.type===\"membership\"){const next=[...temp.conditions_json||[]];const idx=next.findIndex(c=>c.type===\"membership\");if(idx!==-1){next[idx]={...next[idx],members:val};}else{next.push({type:\"membership\",members:val});}handleChange(\"conditions_json\",next);}else{handleChange(\"groupTarget\",val);}}})}):/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:12,display:\"flex\",flexDirection:\"column\",gap:8},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"1fr 1fr 1fr\",gap:8},children:[/*#__PURE__*/_jsx(\"input\",{placeholder:\"회원 번호\",value:memberInfo.membership_number,onChange:e=>setMemberInfo({...memberInfo,membership_number:e.target.value}),style:inputStyle}),/*#__PURE__*/_jsx(\"input\",{placeholder:\"쿠폰 발급일\",value:memberInfo.issued_date,onChange:e=>setMemberInfo({...memberInfo,issued_date:e.target.value}),style:inputStyle}),/*#__PURE__*/_jsx(\"input\",{placeholder:\"쿠폰 코드\",value:memberInfo.coupon_code,onChange:e=>setMemberInfo({...memberInfo,coupon_code:e.target.value}),style:inputStyle})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"1fr 1fr 1fr\",gap:8},children:[/*#__PURE__*/_jsx(\"input\",{placeholder:\"이름\",value:memberInfo.name,onChange:e=>setMemberInfo({...memberInfo,name:e.target.value}),style:inputStyle}),/*#__PURE__*/_jsx(\"input\",{placeholder:\"생년월일\",value:memberInfo.birthdate,onChange:e=>setMemberInfo({...memberInfo,birthdate:e.target.value}),style:inputStyle}),/*#__PURE__*/_jsx(\"input\",{placeholder:\"연락처\",value:memberInfo.contact,onChange:e=>setMemberInfo({...memberInfo,contact:e.target.value}),style:inputStyle})]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8,marginTop:12,alignItems:\"center\"},children:[/*#__PURE__*/_jsx(\"input\",{type:\"number\",min:1,placeholder:\"배포 개수\",value:temp.distributeCount||\"\",onChange:e=>handleChange(\"distributeCount\",Number(e.target.value)),style:{...inputStyle,width:100}}),/*#__PURE__*/_jsx(\"button\",{style:{padding:\"6px 16px\",background:\"#3399ff\",color:\"#fff\",fontWeight:700,border:\"none\",borderRadius:8,cursor:\"pointer\"},onClick:handleDistribute,children:\"쿠폰 배포\"}),/*#__PURE__*/_jsx(\"button\",{style:{padding:\"6px 16px\",background:\"#6cc070\",color:\"#fff\",fontWeight:700,border:\"none\",borderRadius:8,cursor:\"pointer\"},onClick:()=>setShowTargetsPopup(true),disabled:!coupon?.coupon_definition_id,title:coupon?.coupon_definition_id?\"\":\"쿠폰이 선택되지 않았습니다.\",children:\"다중 배포\"}),/*#__PURE__*/_jsx(\"button\",{style:{padding:\"6px 16px\",background:\"#f0f0f0\",color:\"#333\",fontWeight:700,border:\"1px solid #ccc\",borderRadius:8,cursor:\"pointer\",fontFamily:\"Pretendard, sans-serif\"},onClick:()=>setShowInstancesPopup(true),disabled:!coupon?.coupon_definition_id,title:coupon?.coupon_definition_id?\"\":\"쿠폰이 선택되지 않았습니다.\",children:\"쿠폰 조회\"})]})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"CouponDistributionPanel\":{\"type\":\"reactComponent\",\"name\":\"CouponDistributionPanel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{MenuToggle}from\"https://framerusercontent.com/modules/79m6xKGAs6YRts4uPZQG/del0EaQUrYMCZ22ohuhc/MenuToggle.js\";import{ConditionBadge}from\"https://framerusercontent.com/modules/VPnkDt0t1Xn4dDPqpLMv/7zQc5O3MTss9SvD6ffGU/ConditionBadge.js\";import{CouponDistributionPanel}from\"https://framerusercontent.com/modules/m4Jh1FVeR34kOyQwmzks/lCVYvGMZDTwynogNzrlk/CouponDistributionPanel.js\";export function CouponCard({coupon,onUpdate,onDelete}){const[temp,setTemp]=React.useState({...coupon});const[editingName,setEditingName]=React.useState(false);const[editingDescription,setEditingDescription]=React.useState(false);const[editingValue,setEditingValue]=React.useState(false);const[editingValidityValue,setEditingValidityValue]=React.useState(false);const[editingCode,setEditingCode]=React.useState(false);const[newMember,setNewMember]=React.useState(\"\");const[showMenu,setShowMenu]=React.useState(false);const[deleteState,setDeleteState]=React.useState(\"none\");const timeoutRef=React.useRef(null);const ref=React.useRef(null);const[memberInfo,setMemberInfo]=React.useState({membership_number:\"\",name:\"\",birthdate:\"\",contact:\"\",signup_date:\"\"});React.useEffect(()=>{const handler=e=>{if(ref.current&&!ref.current.contains(e.target)){setDeleteState(\"none\");setShowMenu(false);}};document.addEventListener(\"mousedown\",handler);return()=>document.removeEventListener(\"mousedown\",handler);},[]);const typeCycle=[\"global\",\"code\",\"membership\"];const nextType=current=>typeCycle[(typeCycle.indexOf(current)+1)%typeCycle.length];const isEnabled=temp.enabled===true||temp.enabled===\"true\";const currentType=(temp.type||\"global\").toLowerCase();const tagColors={global:\"#d0ecff\",membership:\"#ffe0e0\",code:\"#efe0ff\"};const tagBorders={global:\"#3399ff\",membership:\"#ff6666\",code:\"#b266ff\"};const tagTextColors={global:\"#1c4f7a\",membership:\"#7a1c1c\",code:\"#4e1c7a\"};const buttonBaseStyle={fontSize:12,fontWeight:700,padding:\"2px 12px\",background:\"#fff\",color:\"#222\",border:\"1px solid #ccc\",borderRadius:999,cursor:\"pointer\",whiteSpace:\"nowrap\",transition:\"all 0.2s ease-in-out\",display:\"inline-flex\",alignItems:\"center\",lineHeight:\"1.5\"};const handleChange=(key,value)=>{const updated={...temp,[key]:value};setTemp(updated);if(onUpdate)onUpdate(updated);};const handleAddCondition=type=>{if(temp.conditions_json?.some(c=>c.type===type))return;const newCondition={type,...type===\"date\"&&{startDate:\"\",endDate:\"\"},...type===\"price_condition\"&&{min:\"\",max:\"\"},...type===\"membership\"&&{members:[]},...type===\"seasonal\"&&{allowedCategories:[]}};handleChange(\"conditions_json\",[...temp.conditions_json||[],newCondition]);setShowMenu(false);};const availableConditionTypes=[\"date\",\"minimum_price\",\"membership\",\"seasonal\",\"relay\",\"applied_discount\",\"phase\",\"revisit\"];const conditionTypeLabels={date:\"📅 적용 기간\",minimum_price:\"💰 최소 결제 금액\",membership:\"👥 멤버십\",seasonal:\"📅 요일/시즌\",relay:\"🛏 연박 조건\",applied_discount:\"🎁 할인 금액 조건\",phase:\"⏱️ 페이즈 고객\",revisit:\"🔄️ 재방문 횟수\"};const handleDeleteClick=()=>{if(deleteState===\"confirm\"||deleteState===\"direct\"){onDelete?.();}else if(deleteState===\"pending\"){setDeleteState(\"confirm\");}};React.useEffect(()=>{if(!temp.distributeMode&&temp.type!==\"membership\"){handleChange(\"distributeMode\",\"personal\");}if(temp.type===\"group\"&&!temp.groupTarget){handleChange(\"groupTarget\",[]);}},[]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,onClick:()=>{if(deleteState!==\"none\")setDeleteState(\"none\");if(showMenu)setShowMenu(false)// ✅ 이 줄을 추가\n;},style:{width:\"100%\",//width: 525,\nminHeight:500,aspectRatio:\"3.5 / 2\",border:\"1px solid #ccc\",borderRadius:12,padding:\"16px 20px 8px 20px\",background:\"#fff\",position:\"relative\",overflow:\"hidden\",boxShadow:\"0 4px 8px rgba(0,0,0,0.05)\",display:\"flex\",flexDirection:\"column\",// justifyContent: \"space-between\",\nfontFamily:\"Pretendard, sans-serif\",filter:!isEnabled?\"grayscale(0.6)\":\"none\",opacity:!isEnabled?.6:1,transition:\"0.3s ease\"},children:[deleteState===\"none\"?/*#__PURE__*/_jsx(\"button\",{style:{...buttonBaseStyle,fontWeight:isEnabled?700:600,position:\"absolute\",top:8,right:8},onMouseOver:e=>{e.currentTarget.style.backgroundColor=\"#f5f5f5\";},onMouseOut:e=>{e.currentTarget.style.backgroundColor=\"#fff\";},onClick:e=>{e.stopPropagation();handleChange(\"enabled\",!isEnabled);},onContextMenu:e=>{e.preventDefault();e.stopPropagation();setDeleteState(\"direct\");},onMouseDown:e=>{if(e.button===0){timeoutRef.current=setTimeout(()=>{setDeleteState(\"pending\");},600);}},onMouseUp:()=>clearTimeout(timeoutRef.current),onMouseLeave:()=>clearTimeout(timeoutRef.current),children:isEnabled?\"활성\":\"비활성\"}):/*#__PURE__*/_jsx(\"button\",{style:{...buttonBaseStyle,color:\"#d00\",border:\"1px solid #d88\",position:\"absolute\",top:8,right:8},onMouseOver:e=>{e.currentTarget.style.backgroundColor=\"#ffeaea\";},onMouseOut:e=>{e.currentTarget.style.backgroundColor=\"#fff\";},onClick:e=>{e.stopPropagation();handleDeleteClick();},children:\"삭제\"}),/*#__PURE__*/_jsxs(\"div\",{style:{margin:\"0 0 16px 0 \"},children:[/*#__PURE__*/_jsx(\"span\",{onClick:()=>handleChange(\"type\",nextType(currentType)),style:{fontSize:11,margin:\"6px 4px\",padding:\"3px 16px\",borderRadius:999,background:tagColors[currentType]??\"#eee\",border:`1px solid ${tagBorders[currentType]??\"#ccc\"}`,color:tagTextColors[currentType]??\"#333\",display:\"inline-flex\",alignItems:\"center\",fontWeight:600,cursor:\"pointer\",transition:\"all 0.2s ease-in-out\"},children:currentType}),!editingName?/*#__PURE__*/_jsx(\"div\",{onClick:()=>setEditingName(true),style:{lineHeight:\"28px\",fontSize:22,padding:\"0px 6px\",fontWeight:700,cursor:\"pointer\"},children:temp.name||\"(제목 없음)\"}):/*#__PURE__*/_jsx(\"input\",{autoFocus:true,type:\"text\",defaultValue:temp.name||\"\",onBlur:e=>{handleChange(\"name\",e.target.value);setEditingName(false);},onKeyDown:e=>{if(e.key===\"Enter\"){handleChange(\"name\",e.currentTarget.value);setEditingName(false);}},style:{height:\"28px\",fontSize:22,fontWeight:700,padding:\"4px 6px\",border:\"1px solid #ccc\",borderRadius:6,width:\"100%\"}}),!editingDescription?/*#__PURE__*/_jsx(\"div\",{onClick:()=>setEditingDescription(true),style:{lineHeight:\"22px\",fontSize:14,padding:\"0px 6px\",color:\"#666\",cursor:\"pointer\"},children:temp.description||\"(부제목 없음)\"}):/*#__PURE__*/_jsx(\"input\",{autoFocus:true,type:\"text\",defaultValue:temp.description||\"\",onBlur:e=>{handleChange(\"description\",e.target.value);setEditingDescription(false);},onKeyDown:e=>{if(e.key===\"Enter\"){handleChange(\"description\",e.currentTarget.value);setEditingDescription(false);}},style:{height:\"22px\",fontSize:14,// marginBottom: 4,\npadding:\"4px 6px\",border:\"1px solid #ccc\",borderRadius:6,width:\"100%\"}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12,marginTop:6,position:\"relative\"},children:[/*#__PURE__*/_jsx(\"button\",{style:{...buttonBaseStyle},onMouseOver:e=>{e.currentTarget.style.backgroundColor=\"#f5f5f5\";},onMouseOut:e=>{e.currentTarget.style.backgroundColor=\"#fff\";},onClick:()=>setShowMenu(prev=>!prev),children:\"조건 추가\"}),!editingValue?/*#__PURE__*/_jsxs(\"div\",{onClick:()=>setEditingValue(true),style:{fontSize:13,lineHeight:\"24px\",fontWeight:600,color:\"#2e7d32\",cursor:\"pointer\"},children:[\"−\",\" \",temp.discount_type===\"percentage\"?`${temp.discount_value}%`:`${Number(temp.discount_value).toLocaleString()}₩`]}):/*#__PURE__*/_jsx(\"input\",{type:\"text\",autoFocus:true,defaultValue:temp.discount_value,onBlur:e=>{handleChange(\"discount_value\",e.target.value);setEditingValue(false);},onKeyDown:e=>{if(e.key===\"Enter\"){handleChange(\"discount_value\",e.currentTarget.value);setEditingValue(false);}},style:{fontSize:13,fontWeight:600,padding:\"4px 6px\",width:90,height:24,border:\"1px solid #ccc\",borderRadius:6,color:\"#2e7d32\"}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:12,marginTop:6,position:\"relative\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8,marginLeft:\"auto\",marginRight:\"8px\"},children:[/*#__PURE__*/_jsx(MenuToggle,{mode:\"single\",options:[{label:\"일반\",value:\"false\"},{label:\"단독\",value:\"true\"}],selected:String(temp.exclusive),onChange:val=>handleChange(\"exclusive\",val===\"true\")}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"single\",options:[{label:\"1박만\",value:\"1\"},{label:\"2박\",value:\"2\"},{label:\"3박\",value:\"3\"},{label:\"매일\",value:\"-1\"}],selected:String(temp.scope),onChange:val=>handleChange(\"scope\",Number(val))}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"single\",options:[{label:\"1회성\",value:\"1\"},{label:\"무제한\",value:\"-1\"}],selected:String(temp.counter),onChange:val=>handleChange(\"counter\",Number(val))}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"single\",options:[{label:\"%\",value:\"percentage\"},{label:\"₩\",value:\"fixed\"}],selected:temp.discount_type,onChange:val=>handleChange(\"discount_type\",val)})]}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:8,marginLeft:\"auto\",marginRight:\"8px\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8,marginLeft:\"auto\",marginRight:\"8px\",alignItems:\"center\"},children:[[\"custom\",\"day\",\"week\",\"month\",\"year\"].includes(temp.validity_type)&&/*#__PURE__*/_jsx(_Fragment,{children:!editingValidityValue?/*#__PURE__*/_jsx(\"div\",{onClick:()=>setEditingValidityValue(true),style:{fontSize:13,lineHeight:\"24px\",fontWeight:600,color:\"#2e7d32\",cursor:\"pointer\"},children:temp.validity_value||\"입력 없음\"}):/*#__PURE__*/_jsx(\"input\",{type:\"text\",autoFocus:true,defaultValue:temp.validity_value,onBlur:e=>{handleChange(\"validity_value\",e.target.value);setEditingValidityValue(false);},onKeyDown:e=>{if(e.key===\"Enter\"){handleChange(\"validity_value\",e.currentTarget.value);setEditingValidityValue(false);}},style:{fontSize:13,fontWeight:500,padding:\"4px 6px\",width:160,height:28,border:\"1px solid #ccc\",borderRadius:6,color:\"#333\",backgroundColor:\"#fff\"}})}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"single\",options:[{label:\"일\",value:\"day\"},{label:\"주\",value:\"week\"},{label:\"월\",value:\"month\"},{label:\"연\",value:\"year\"},{label:\"날짜\",value:\"custom\"},{label:\"영구\",value:\"permanent\"}],selected:temp.validity_type,onChange:val=>handleChange(\"validity_type\",val)}),/*#__PURE__*/_jsx(MenuToggle,{mode:\"single\",options:[{label:\"재발행\",value:\"true\"},{label:\"X\",value:\"false\"}],selected:String(temp.refillable),onChange:val=>handleChange(\"refillable\",val===\"true\")})]})}),showMenu&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"100%\",left:0,display:\"flex\",background:\"rgba(240, 240, 240, 0.6)\",backdropFilter:\"blur(8px)\",WebkitBackdropFilter:\"blur(8px)\",border:\"1px solid rgba(200, 200, 200, 0.4)\",borderRadius:10,padding:\"8px 12px\",boxShadow:\"0 6px 18px rgba(0,0,0,0.1)\",zIndex:10,flexWrap:\"wrap\",rowGap:6,columnGap:8,maxWidth:340,marginTop:6},children:availableConditionTypes.filter(type=>!temp.conditions_json?.some(c=>c.type===type))// ✅ 이미 있는 조건은 제외\n.map(type=>/*#__PURE__*/_jsx(\"div\",{onClick:()=>handleAddCondition(type),style:{padding:\"4px 10px\",fontSize:12,fontWeight:600,borderRadius:6,border:\"1px solid #ccc\",background:\"#fff\",color:\"#222\",cursor:\"pointer\",transition:\"background 0.2s ease-in-out\"},onMouseOver:e=>{e.currentTarget.style.backgroundColor=\"#f5f5f5\";},onMouseOut:e=>{e.currentTarget.style.backgroundColor=\"#fff\";},children:conditionTypeLabels[type]},type))})]}),/*#__PURE__*/_jsx(\"div\",{className:\"coupon-scrollable\",style:{minHeight:106,maxHeight:136,overflowY:\"auto\",marginTop:6},children:Array.isArray(temp.conditions_json)&&temp.conditions_json.map((cond,i)=>/*#__PURE__*/_jsx(ConditionBadge,{condition:cond,onUpdate:updated=>{const next=[...temp.conditions_json];next[i]=updated;handleChange(\"conditions_json\",next);},onDelete:()=>{const next=temp.conditions_json.filter((_,idx)=>idx!==i);handleChange(\"conditions_json\",next);}},i))}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",width:\"100%\"},children:[\"code\",\"membership\"].includes(temp.type)&&/*#__PURE__*/_jsx(CouponDistributionPanel,{temp:temp,coupon:coupon,handleChange:handleChange})})]});}const inputStyle={width:\"100%\",height:24,padding:\"6px 10px\",border:\"1px solid #ccc\",borderRadius:6,fontSize:14,outline:\"none\",boxSizing:\"border-box\"};\nexport const __FramerMetadata__ = {\"exports\":{\"CouponCard\":{\"type\":\"reactComponent\",\"name\":\"CouponCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{CouponCard}from\"https://framerusercontent.com/modules/0USIjj1ca4slBZb17sTN/7kzb8dnynQHcR4W1aAMJ/CouponCard.js\";function getKSTDate(baseDate=new Date){const utc=baseDate.getTime()+baseDate.getTimezoneOffset()*6e4;return new Date(utc+9*60*60*1e3);}function formatKSTDateString(date=new Date){const kstDate=getKSTDate(date);return kstDate.toLocaleDateString(\"sv-SE\",{timeZone:\"Asia/Seoul\"})// \"YYYY-MM-DD\" 형식\n;}export function CouponContainer({rowsPerPage=3,variant=\"desktop\"}){const isMobile=variant===\"mobile\";const isTablet=variant===\"tablet\";const containerWidth=isMobile?\"100%\":isTablet?600:1260;const columnCount=isTablet?1:2;if(isMobile){return /*#__PURE__*/_jsxs(\"div\",{style:{padding:24,textAlign:\"center\",fontSize:16,color:\"#888\"},children:[\"모바일 환경에서는\",/*#__PURE__*/_jsx(\"br\",{}),\"쿠폰 수정이 불가능합니다.\"]});}const containerHeightMap={2:1586,3:1906,4:2226,5:2546,6:2866};const containerHeight=containerHeightMap[rowsPerPage]??1626// fallback\n;const[coupons,setCoupons]=React.useState([]);const[loading,setLoading]=React.useState(true);const[updating,setUpdating]=React.useState(false);const[updated,setUpdated]=React.useState(false);const[updateError,setUpdateError]=React.useState(null);const[currentPage,setCurrentPage]=React.useState(1);const itemsPerPage=rowsPerPage*columnCount;const totalPages=Math.max(1,Math.ceil((coupons.length+1)/itemsPerPage));const isLastPage=currentPage===totalPages;// 정렬 추가\nconst paginatedCoupons=coupons.slice((currentPage-1)*itemsPerPage,currentPage*itemsPerPage);const prevPage=()=>setCurrentPage(prev=>Math.max(1,prev-1));const nextPage=()=>setCurrentPage(prev=>Math.min(totalPages,prev+1));const buttonStyle={padding:\"8px 16px\",border:\"1px solid #ddd\",backgroundColor:\"#fff\",fontSize:14,cursor:\"pointer\"};React.useEffect(()=>{fetch(\"https://terene-db-server.onrender.com/api/v2/coupon-definitions\").then(res=>res.json()).then(data=>{// ✅ 처음 로딩될 때만 정렬\nconst sorted=[...data].sort((a,b)=>{if(a.type===b.type){return a.name.localeCompare(b.name);}return a.type.localeCompare(b.type);});setCoupons(sorted);setLoading(false);}).catch(err=>{console.error(\"쿠폰 로딩 오류:\",err);setLoading(false);});},[]);const handleUpdate=updatedCoupon=>{setCoupons(prev=>prev.map(c=>c.coupon_definition_id===updatedCoupon.coupon_definition_id?updatedCoupon:c));};// const updateCoupons = async () => {\n//     setUpdating(true)\n//     setUpdated(false)\n//     setUpdateError(null)\n//     try {\n//         for (const c of coupons) {\n//             await fetch(\n//                 `https://terene-db-server.onrender.com/api/v2/coupon-definitions/${c.coupon_definition_id}`,\n//                 {\n//                     method: \"PUT\",\n//                     headers: { \"Content-Type\": \"application/json\" },\n//                     body: JSON.stringify(c),\n//                 }\n//             )\n//         }\n//         setUpdated(true)\n//     } catch (e: any) {\n//         setUpdateError(e.message)\n//     } finally {\n//         setUpdating(false)\n//         setTimeout(() => {\n//             setUpdated(false)\n//             setUpdateError(null)\n//         }, 5000)\n//     }\n// }\nconst updateCoupons=async()=>{setUpdating(true);setUpdated(false);setUpdateError(null);try{for(const c of coupons){const cleanCoupon={...c};delete cleanCoupon.distributeMode// ← 이 줄 추가\n;delete cleanCoupon.distributeCount;delete cleanCoupon.groupTarget;const res=await fetch(`https://terene-db-server.onrender.com/api/v2/coupon-definitions/${c.coupon_definition_id}`,{method:\"PUT\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(cleanCoupon)});if(!res.ok){const contentType=res.headers.get(\"content-type\");const errorText=contentType?.includes(\"application/json\")?(await res.json()).error:await res.text();console.error(\"❌ 쿠폰 업데이트 실패:\",cleanCoupon);console.error(`❌ 서버 응답 ${res.status}:`,errorText);throw new Error(`(${res.status}) ${errorText}`);}}setUpdated(true);}catch(e){setUpdateError(e.message);}finally{setUpdating(false);setTimeout(()=>{setUpdated(false);setUpdateError(null);},5e3);}};// const handleAddCoupon = () => {\n//     const today = getKSTDate()\n//     const nextMonth = new Date(today)\n//     nextMonth.setMonth(today.getMonth() + 1)\n//     // 실제 숫자만 모으기\n//     const usedPriorities = new Set(\n//         coupons.map((c) => Number(c.priority)).filter((p) => !isNaN(p))\n//     )\n//     // 1부터 999 중 비어있는 값 찾기\n//     let newPriority = 1\n//     while (usedPriorities.has(newPriority) && newPriority < 1000) {\n//         newPriority++\n//     }\n//     alert(`${JSON.stringify([...usedPriorities])}\\n${newPriority}`)\n//     if (newPriority >= 1000) {\n//         alert(\"❌ 사용할 수 있는 priority가 없습니다.\")\n//         return\n//     }\n//     const newCoupon = {\n//         id: Math.random().toString(36).substring(2, 12),\n//         priority: newPriority,\n//         type: \"code\",\n//         name: `쿠폰 이름`,\n//         description: \"영수증에 노출되는 쿠폰 명칭\",\n//         code: \"쿠폰 코드\",\n//         allowed_members: [\"A-00000001\"],\n//         scope: \"per_stay\",\n//         discount_type: \"percentage\",\n//         discount_value: 25,\n//         enabled: true,\n//         conditions_json: [\n//             {\n//                 type: \"date\",\n//                 startDate: formatKSTDateString(today),\n//                 endDate: formatKSTDateString(nextMonth),\n//             },\n//         ],\n//     }\n//     const newCoupons = [...coupons, newCoupon]\n//     setCoupons(newCoupons)\n//     setCurrentPage(Math.ceil((newCoupons.length + 1) / itemsPerPage))\n// }\nconst handleAddCoupon=()=>{const today=getKSTDate();// KST 기준 날짜 및 시간 추출\nconst dateStr=today.toISOString().slice(2,10).replace(/-/g,\"\")// YYMMDD\n;const timeStr=today.toTimeString().slice(0,5).replace(\":\",\"\")// HHMM\n;// 랜덤 8자리 알파벳+숫자\nconst randomPart=Math.random().toString(36).substring(2,10).toUpperCase();const coupon_definition_id=`CD-${dateStr}-${timeStr}-${randomPart}`;const newCoupon={coupon_definition_id,name:\"마이페이지에 노풀되는 쿠폰 이름\",description:\"영수증에 노출되는 쿠폰 명칭\",discount_type:\"percentage\",discount_value:25,type:\"code\",exclusive:false,scope:-1,counter:1,validity_type:\"year\",validity_value:\"1\",refillable:false,enabled:true,conditions_json:[{type:\"date\",startDate:formatKSTDateString(today),endDate:formatKSTDateString(new Date(today.setFullYear(today.getFullYear()+1)))}]};const newCoupons=[...coupons,newCoupon];setCoupons(newCoupons);setCurrentPage(Math.ceil((newCoupons.length+1)/itemsPerPage));};const handleDeleteCoupon=async coupon_definition_id=>{// 로컬 상태 먼저 수정\nsetCoupons(prev=>prev.filter(c=>c.coupon_definition_id!==coupon_definition_id));// 서버에서 삭제 요청\ntry{await fetch(`https://terene-db-server.onrender.com/api/v2/coupon-definitions/${coupon_definition_id}`,{method:\"DELETE\"});}catch(error){console.error(\"쿠폰 삭제 실패:\",error);}// 페이지 보정\nconst newTotalPages=Math.ceil((coupons.length-1+1)/itemsPerPage);if(currentPage>newTotalPages){setCurrentPage(Math.max(1,newTotalPages));}};if(loading)return /*#__PURE__*/_jsx(\"div\",{style:{padding:24},children:\"⏳ 쿠폰을 불러오는 중...\"});return /*#__PURE__*/_jsxs(\"div\",{style:{width:containerWidth,height:containerHeight,margin:\"0 auto\",padding:24,boxSizing:\"border-box\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",marginBottom:8},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:20,fontWeight:600},children:\"쿠폰 목록\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8},children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleAddCoupon,style:buttonStyle,children:\"Add Coupon\"}),/*#__PURE__*/_jsx(\"button\",{onClick:updateCoupons,disabled:updating,style:{...buttonStyle,minWidth:130,cursor:updating?\"wait\":\"pointer\"},children:updating?\"⏳ Updating...\":updated?\"✅ 저장됨\":\"Update Coupons\"})]})]}),updateError&&/*#__PURE__*/_jsxs(\"div\",{style:{color:\"red\",fontSize:13,marginBottom:12},children:[\"⚠️ \",updateError]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gridTemplateColumns:`repeat(${columnCount}, 1fr)`,gap:20},children:[paginatedCoupons.map(coupon=>/*#__PURE__*/_jsx(CouponCard,{coupon:coupon,onUpdate:handleUpdate,onDelete:()=>handleDeleteCoupon(coupon.coupon_definition_id)},coupon.coupon_definition_id)),isLastPage&&paginatedCoupons.length<itemsPerPage&&/*#__PURE__*/_jsx(\"div\",{onClick:handleAddCoupon,style:{aspectRatio:\"5.96 / 5\",border:\"1px dashed #aaa\",borderRadius:12,background:\"#f0f0f0\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",fontSize:40,color:\"#999\",fontWeight:300,cursor:\"pointer\",transition:\"background 0.2s ease\"},onMouseOver:e=>{e.currentTarget.style.background=\"#e0e0e0\";},onMouseOut:e=>{e.currentTarget.style.background=\"#f0f0f0\";},children:\"+\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"center\",alignItems:\"center\",marginTop:32,gap:12,fontFamily:\"inherit\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:prevPage,disabled:currentPage===1,style:{padding:\"8px 20px\",fontSize:14,fontWeight:600,border:\"1px solid #ccc\",background:currentPage===1?\"#f9f9f9\":\"#fff\",color:currentPage===1?\"#aaa\":\"#333\",borderRadius:8,cursor:currentPage===1?\"not-allowed\":\"pointer\",transition:\"all 0.2s ease-in-out\",boxShadow:\"0 1px 3px rgba(0,0,0,0.05)\"},children:\"◀ Prev\"}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:14,fontWeight:500,padding:\"6px 12px\",borderRadius:6,background:\"#f5f5f5\",color:\"#444\"},children:[\"Page \",currentPage,\" / \",totalPages]}),/*#__PURE__*/_jsx(\"button\",{onClick:nextPage,disabled:currentPage===totalPages,style:{padding:\"8px 20px\",fontSize:14,fontWeight:600,border:\"1px solid #ccc\",background:currentPage===totalPages?\"#f9f9f9\":\"#fff\",color:currentPage===totalPages?\"#aaa\":\"#333\",borderRadius:8,cursor:currentPage===totalPages?\"not-allowed\":\"pointer\",transition:\"all 0.2s ease-in-out\",boxShadow:\"0 1px 3px rgba(0,0,0,0.05)\"},children:\"Next ▶\"})]})]});}addPropertyControls(CouponContainer,{rowsPerPage:{type:ControlType.Number,title:\"Rows\",defaultValue:3,min:2,max:6,step:1},variant:{type:ControlType.Enum,title:\"Device\",options:[\"desktop\",\"tablet\",\"mobile\"],optionTitles:[\"Desktop (2줄)\",\"Tablet (1줄)\",\"Mobile (수정 불가)\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"CouponContainer\":{\"type\":\"reactComponent\",\"name\":\"CouponContainer\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","//OrderElementComponent.tsx\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";export function OrderElementComponent({data,onOpenDetails}){const Tag=({value})=>{const statusColors={pending:\"#999999\",accepted:\"#22b463\",cancelled:\"#ea5455\",refunded:\"#ff9f43\",before_checkin:\"#999999\",checked_in:\"#4b7bec\",checked_out:\"#7B5E57\"};const color=statusColors[value]||\"#555555\";return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",padding:\"3px 10px\",borderRadius:8,background:\"#f9f9f9\",fontSize:12,fontWeight:500,color,border:`1px solid ${color}`},children:value});};const formatDatetime=datetime=>datetime?datetime.replace(\"T\",\" \").slice(0,16):\"시간 없음\";const paymentStatusDatetimeMap={pending:data?.payment_timeline?.order_datetime,accepted:data?.payment_timeline?.approval_datetime,cancelled:data?.payment_timeline?.cancellation_datetime,refunded:data?.payment_timeline?.refund_datetime};const paymentDatetimeRaw=paymentStatusDatetimeMap[data.payment_status]||\"\";const paymentDatetimeFormatted=formatDatetime(paymentDatetimeRaw);// Stay status에 따라 보여줄 날짜 선택\nlet stayDatetimeFormatted=\"\";if(data.stay_status===\"checked_in\"){stayDatetimeFormatted=formatDatetime(data?.stay_timeline?.checkin_datetime);}else if(data.stay_status===\"checked_out\"){stayDatetimeFormatted=formatDatetime(data?.stay_timeline?.checkout_datetime);}const isGuest=!data.membership_number;// Additional services name list\nconst additionalServiceNames=data?.order_details?.additional_services?.filter(service=>service?.name).map(service=>service.name)||[];return /*#__PURE__*/_jsxs(\"div\",{style:{borderBottom:\"1px solid #eee\",padding:\"20px 16px\",display:\"grid\",gridTemplateColumns:\"140px 140px 2fr 2.5fr 1.5fr\",gap:\"20px\",alignItems:\"start\",fontSize:14,fontFamily:\"Pretendard, sans-serif\",cursor:\"pointer\",opacity:data.payment_status===\"refunded\"||data.stay_status===\"checked_out\"?.5:1},onClick:onOpenDetails,children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"strong\",{style:{fontSize:13},children:\"Payment\"}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:4},children:/*#__PURE__*/_jsx(Tag,{value:data.payment_status})})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,color:\"#999\",marginTop:8},children:paymentDatetimeFormatted})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"strong\",{style:{fontSize:13},children:\"Stay\"}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:4},children:/*#__PURE__*/_jsx(Tag,{value:data.stay_status})})]}),stayDatetimeFormatted&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,color:\"#999\",marginTop:8},children:stayDatetimeFormatted})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:4},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:600},children:data.reserver_name}),/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:600,color:\"#777\",fontSize:13},children:isGuest?\"비회원 예약\":data.membership_number}),/*#__PURE__*/_jsx(\"div\",{style:{color:\"#777\",fontSize:13},children:data.reserver_contact}),data.reserver_email&&/*#__PURE__*/_jsx(\"div\",{style:{color:\"#777\",fontSize:13},children:data.reserver_email})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:4},children:[/*#__PURE__*/_jsx(\"div\",{children:data.order_product}),/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:13,color:\"#777\",fontWeight:600},children:[data.start_date,\" ~ \",data.end_date]}),/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:13,color:\"#777\"},children:[\"성인 \",data.adult??0,\"명 / 아동 \",data.child??0,\"명\"]}),additionalServiceNames.length>0&&/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:13,color:\"#777\"},children:[\"추가 서비스: \",additionalServiceNames.join(\", \")]})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",fontWeight:600,fontSize:15,textDecoration:data.payment_status===\"refunded\"?\"line-through\":\"none\"},children:[\"₩\",Number(data.final_price).toLocaleString()]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"OrderElementComponent\":{\"type\":\"reactComponent\",\"name\":\"OrderElementComponent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OrderElementComponent.map","// OrderJsonAccordion.tsx\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";export function OrderJsonAccordion({data}){const sectionStyle={borderRadius:16,background:\"#fafafa\",padding:\"20px 24px\",marginBottom:24,boxShadow:\"0 2px 6px rgba(0, 0, 0, 0.04)\",border:\"1px solid #e5e7eb\"};const titleStyle={fontSize:20,fontWeight:600,marginBottom:16,color:\"#111827\"};const gridStyle={display:\"grid\",gridTemplateColumns:\"160px 1fr\",rowGap:12,columnGap:24,fontSize:14,color:\"#374151\"};const labelStyle={fontWeight:500,color:\"#6b7280\"};const dividerStyle={gridColumn:\"1 / -1\",borderTop:\"1px solid #e5e7eb\",margin:\"12px 0\"};const formatDateTime=str=>str?new Date(str).toLocaleString(\"ko-KR\",{hour12:false}):\"-\";const renderRow=(label,value)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:labelStyle,children:label}),/*#__PURE__*/_jsx(\"div\",{children:value})]});return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",fontFamily:\"Pretendard, sans-serif\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:sectionStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"예약 정보\"}),/*#__PURE__*/_jsxs(\"div\",{style:gridStyle,children:[renderRow(\"예약번호\",data.order_id),renderRow(\"예약 상품\",data.order_product),renderRow(\"숙박 일정\",`${data.start_date} ~ ${data.end_date}`),renderRow(\"숙박 인원\",`성인 ${data.adult}, 영유아 ${data.child}`),renderRow(\"결제 상태\",data.payment_status),renderRow(\"체크인 상태\",data.stay_status)]})]}),/*#__PURE__*/_jsxs(\"div\",{style:sectionStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"예약자 정보\"}),/*#__PURE__*/_jsxs(\"div\",{style:gridStyle,children:[renderRow(\"회원번호\",data.membership_number||\"-\"),renderRow(\"이름\",data.reserver_name),renderRow(\"생년월일\",data.reserver_birthdate),renderRow(\"연락처\",data.reserver_contact),renderRow(\"이메일\",data.reserver_email)]})]}),/*#__PURE__*/_jsxs(\"div\",{style:sectionStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"결제 정보\"}),/*#__PURE__*/_jsxs(\"div\",{style:gridStyle,children:[renderRow(\"최초 금액\",`${data.receipt?.initialPrice?.toLocaleString()}원`),/*#__PURE__*/_jsx(\"div\",{style:dividerStyle}),renderRow(\"할인가 적용 금액\",`${data.receipt?.discountedPrice?.toLocaleString()}원`),renderRow(\"추가 서비스 적용 금액\",`${data.receipt?.additionalPrice?.toLocaleString()}원`),renderRow(\"VAT 금액\",`${data.receipt?.vatPrice?.toLocaleString()}원`),renderRow(\"보증금 금액\",`300,000원`),/*#__PURE__*/_jsx(\"div\",{style:dividerStyle}),renderRow(\"최종 결제액\",`${data.receipt?.finalPrice?.toLocaleString()}원`)]})]}),data.coupons?.length>0&&/*#__PURE__*/_jsxs(\"div\",{style:sectionStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"사용한 쿠폰\"}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:16},children:data.coupons.map((c,idx)=>/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:\"#f3f4f6\",padding:\"16px 20px\",borderRadius:12,border:\"1px solid #e5e7eb\"},children:/*#__PURE__*/_jsxs(\"div\",{style:gridStyle,children:[renderRow(\"쿠폰명\",c.coupon_name),renderRow(\"쿠폰 설명\",c.coupon_description),renderRow(\"할인액\",`${c.amount.toLocaleString()}원`)]})},idx))})]}),/*#__PURE__*/_jsxs(\"div\",{style:sectionStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"요청 및 추가 정보\"}),/*#__PURE__*/_jsxs(\"div\",{style:gridStyle,children:[renderRow(\"요청사항\",data.order_details?.special_requests||\"-\"),renderRow(\"기념일\",`${data.order_details.anniversary.type} - ${data.order_details.anniversary.name||\"(이름 없음)\"} - ${data.order_details.anniversary.value||\"(내용 없음)\"}`),renderRow(\"추가 서비스\",data.order_details?.additional_services?.length>0?data.order_details.additional_services.map(s=>`${s.type}${s.amount?`: ${s.amount.toLocaleString()}원`:\"\"}`).join(\", \"):\"-\"),/*#__PURE__*/_jsx(\"div\",{style:dividerStyle}),renderRow(\"이용규칙\",data.order_details.terms_agreement.facility_policy?\"✅ 동의\":\"❌ 미동의\"),renderRow(\"취소 및 환불정책\",data.order_details.terms_agreement.cancellation_policy?\"✅ 동의\":\"❌ 미동의\"),renderRow(\"개인정보 처리방침\",data.order_details.terms_agreement.privacy_policy?\"✅ 동의\":\"❌ 미동의\"),renderRow(\"마케팅 수신 동의\",data.order_details.terms_agreement.marketing_consent?\"✅ 동의\":\"❌ 미동의\")]})]}),/*#__PURE__*/_jsxs(\"div\",{style:sectionStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"처리 이력\"}),/*#__PURE__*/_jsxs(\"div\",{style:gridStyle,children:[renderRow(\"예약 시각\",formatDateTime(data.payment_timeline?.order_datetime)),renderRow(\"승인 시각\",formatDateTime(data.payment_timeline?.approval_datetime)),renderRow(\"취소 시각\",formatDateTime(data.payment_timeline?.cancellation_datetime)),renderRow(\"환불 시각\",formatDateTime(data.payment_timeline?.refund_datetime)),/*#__PURE__*/_jsx(\"div\",{style:dividerStyle}),renderRow(\"체크인 시각\",formatDateTime(data.stay_timeline?.checkin_datetime)),renderRow(\"체크아웃 시각\",formatDateTime(data.stay_timeline?.checkout_datetime))]})]}),data.refund_info&&/*#__PURE__*/_jsxs(\"div\",{style:sectionStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:titleStyle,children:\"환불 정보\"}),/*#__PURE__*/_jsxs(\"div\",{style:gridStyle,children:[renderRow(\"예금주\",data.refund_info.refund_name||\"-\"),renderRow(\"연락처\",data.refund_info.refund_phone||\"-\"),renderRow(\"은행명\",data.refund_info.refund_bank||\"-\"),renderRow(\"계좌번호\",data.refund_info.refund_account||\"-\"),/*#__PURE__*/_jsx(\"div\",{style:dividerStyle}),renderRow(\"체크인 n일 전 (환불 기준)\",`${Number(data.refund_info.refund_before_checkin).toLocaleString()}일 전`||\"-\"),renderRow(\"숙박요금 환불 금액\",`${Number(data.refund_info.discounted_w_vat_refund).toLocaleString()}원`||\"-\"),renderRow(\"추가서비스요금 환불 금액\",`${Number(data.refund_info.additional_w_vat_refund).toLocaleString()}원`||\"-\"),renderRow(\"보증금 환불 금액\",`${Number(data.refund_info.deposit_refund).toLocaleString()}원`||\"-\")]})]})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"OrderJsonAccordion\":{\"type\":\"reactComponent\",\"name\":\"OrderJsonAccordion\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OrderJsonAccordion.map","// OrderDetailOverlay.tsx\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{OrderJsonAccordion}from\"https://framerusercontent.com/modules/Nz2sBgelWGG377VgiC12/Z6pbpDvOzupHSBMqi2br/OrderJsonAccordion.js\";function getKSTDate(baseDate=new Date){const utc=baseDate.getTime()+baseDate.getTimezoneOffset()*6e4;return new Date(utc+9*60*60*1e3);}const formatDateTime=str=>str?new Date(str).toLocaleString(\"ko-KR\",{hour12:false}):\"-\";export function OrderDetailOverlay({order,onClose,onAccept,onDecline,onRefund,onCheckIn,onCheckOut}){const amount=order.amount||0;const buttonStyleBase={padding:\"10px 20px\",borderRadius:\"12px\",fontSize:\"16px\",fontWeight:500,backgroundColor:\"transparent\",cursor:\"pointer\",transition:\"all 0.2s ease-in-out\",borderWidth:\"2px\",borderStyle:\"solid\"};const styles={green:{...buttonStyleBase,borderColor:\"#22b463\",color:\"#22b463\"},red:{...buttonStyleBase,borderColor:\"#ea5455\",color:\"#ea5455\"},yellow:{...buttonStyleBase,borderColor:\"#ff9f43\",color:\"#ff9f43\"},blue:{...buttonStyleBase,borderColor:\"#4b7bec\",color:\"#4b7bec\"},brown:{...buttonStyleBase,borderColor:\"#7B5E57\",color:\"#7B5E57\"}};const hoverStyle={green:{backgroundColor:\"#22b4632d\"},red:{backgroundColor:\"#ea54552d\"},yellow:{backgroundColor:\"#ff9f432d\"},blue:{backgroundColor:\"#4b7bec2d\"},brown:{backgroundColor:\"#7B5E572d\"}};// const todayKST = getKSTDate().toLocaleDateString(\"ko-KR\", {\n//     year: \"numeric\",\n//     month: \"long\",\n//     day: \"numeric\",\n//     weekday: \"long\",\n// })\nconst todayKST=getKSTDate().toISOString().slice(0,10);const[hover,setHover]=React.useState(null);const handleConfirm=type=>{if(type===\"accept\"){if(window.confirm(`${formatDateTime(order.payment_timeline.order_datetime)}로부터 24시간 이내에 ${Number(order.final_price).toLocaleString()}원이 입금된 것을 확인하셨나요?\n\n${order.reserver_name}님에게 예약 확정 알림톡이 전송됩니다.\n\n예약을 확정하시겠습니까?`)){onAccept();}}else if(type===\"decline\"){if(window.confirm(`${order.reserver_name}님에게 예약 거절 알림톡이 전송됩니다.\n\n예약을 거절하시겠습니까?`)){onDecline();}}else if(type===\"refund\"){if(window.confirm(`${(Number(order.refund_info.discounted_w_vat_refund)+Number(order.refund_info.additional_w_vat_refund)+Number(order.refund_info.deposit_refund)).toLocaleString()}원 환불을 진행하셨나요?\n - 환불 계좌: ${order.refund_info.refund_bank} ${order.refund_info.refund_account}\n - 예금주: ${order.refund_info.refund_name}\n\n${order.reserver_name}님에게 환불 알림톡이 전송됩니다.\n\n환불을 완료하시겠습니까?`)){onRefund();}}};const actionButtons=()=>{const status=order.payment_status;const stayStatus=order.stay_status;const buttons=[];// Check In / Check Out logic (only if not in pending/cancelled/refunded)\nif(status===\"accepted\"){if(stayStatus===\"before_checkin\"){buttons.push(/*#__PURE__*/_jsx(\"button\",{onClick:()=>{if(window.confirm(`${order.reserver_name}님의 체크인 예정 날짜는 ${order.start_date}입니다.\n숙박 기간: ${order.start_date} ~ ${order.end_date}\n오늘 날짜: ${todayKST}\n\n* 체크인 혹은 체크아웃 완료 시 예약 취소/환불이 불가합니다.\n\n체크인을 진행하시겠습니까?`)){onCheckIn();}},style:{...styles.blue,...hover===\"checked_in\"?hoverStyle.blue:{}},onMouseEnter:()=>setHover(\"checked_in\"),onMouseLeave:()=>setHover(null),children:\"Check In\"},\"checked_in\"));}else if(stayStatus===\"checked_in\"){buttons.push(/*#__PURE__*/_jsx(\"button\",{onClick:()=>{if(window.confirm(`${order.reserver_name}님의 체크아웃 예정 날짜는 ${order.end_date}입니다.\n숙박 기간: ${order.start_date} ~ ${order.end_date}\n오늘 날짜: ${todayKST}\n\n* 체크인 혹은 체크아웃 완료 시 예약 취소/환불이 불가합니다.\n\n체크아웃을 진행하시겠습니까?`)){onCheckOut();}},style:{...styles.brown,...hover===\"checked_out\"?hoverStyle.brown:{}},onMouseEnter:()=>setHover(\"checked_out\"),onMouseLeave:()=>setHover(null),children:\"Check Out\"},\"checked_out\"));}}// Action buttons\nif(status===\"pending\"){buttons.push(/*#__PURE__*/_jsx(\"button\",{onMouseEnter:()=>setHover(\"accept\"),onMouseLeave:()=>setHover(null),onClick:()=>handleConfirm(\"accept\"),style:{...styles.green,...hover===\"accept\"?hoverStyle.green:{}},children:\"Accept\"},\"accept\"),/*#__PURE__*/_jsx(\"button\",{onMouseEnter:()=>setHover(\"decline\"),onMouseLeave:()=>setHover(null),onClick:()=>handleConfirm(\"decline\"),style:{...styles.red,...hover===\"decline\"?hoverStyle.red:{}},children:\"Decline\"},\"decline\"));}else if(status===\"accepted\"&&stayStatus===\"before_checkin\"){// TODO: Cancel과 Decline을 서로 분리하기: 밑에 있는 코드는 기존의 로직과 알람을 따라가는 Cancel이지만, 위에 있는 코드는 환불 정보가 없는 Decline이어야 함\nbuttons.push(/*#__PURE__*/_jsx(\"button\",{onMouseEnter:()=>setHover(\"decline\"),onMouseLeave:()=>setHover(null),onClick:()=>handleConfirm(\"decline\"),style:{...styles.red,...hover===\"decline\"?hoverStyle.red:{}},children:\"Decline\"},\"decline\"));}else if(status===\"cancelled\"){buttons.push(/*#__PURE__*/_jsx(\"button\",{onMouseEnter:()=>setHover(\"refund\"),onMouseLeave:()=>setHover(null),onClick:()=>handleConfirm(\"refund\"),style:{...styles.yellow,...hover===\"refund\"?hoverStyle.yellow:{}},children:\"Refund\"},\"refund\"));}return buttons;};return /*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",background:\"rgba(0, 0, 0, 0.6)\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",zIndex:9999},onClick:onClose,children:/*#__PURE__*/_jsxs(\"div\",{onClick:e=>e.stopPropagation(),style:{background:\"#fff\",width:\"80vw\",maxHeight:\"90vh\",overflowY:\"auto\",borderRadius:8,padding:24,position:\"relative\",fontFamily:\"Pretendard, sans-serif\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:onClose,style:{position:\"absolute\",top:16,right:16,fontSize:18,border:\"none\",background:\"none\",cursor:\"pointer\"},children:\"✖\"}),/*#__PURE__*/_jsx(\"h2\",{style:{marginBottom:16},children:\"예약 상세 정보\"}),/*#__PURE__*/_jsx(OrderJsonAccordion,{data:order}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:24,display:\"flex\",justifyContent:\"flex-end\",gap:12},children:actionButtons()})]})});}\nexport const __FramerMetadata__ = {\"exports\":{\"OrderDetailOverlay\":{\"type\":\"reactComponent\",\"name\":\"OrderDetailOverlay\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// TableComponent.tsx\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{ElementComponent}from\"https://framerusercontent.com/modules/n8rtZjd4s39jkDIUbFJe/Ux9rtghfq613e8Ywl4tP/ElementComponent.js\";import{TableHeader}from\"https://framerusercontent.com/modules/BZLRArExOCHVbl5hLgiu/jBDm0fLUJjf8VWdNfTdV/TableHeader.js\";import{useTableLogic}from\"https://framerusercontent.com/modules/lMETYxbSHdYMMEvxRT9z/I8LJUDvEseFrMz0dvF5p/useTableLogic.js\";import{fieldsByVariant}from\"https://framerusercontent.com/modules/ijtAeTA2swO1eSFmzOcX/SWDG0GngLN6MW88JchMn/fieldsByVariant.js\";import{CouponContainer}from\"https://framerusercontent.com/modules/E3JWi8RXJKfhI35nTdhr/5tpULpNUfbwfgeGMt6wX/CouponContainer.js\";import{OrderElementComponent}from\"https://framerusercontent.com/modules/NQsXy9E03jawYO6woHrN/LSWyzVcJhFE902wn8TZC/OrderElementComponent.js\";import{OrderDetailOverlay}from\"https://framerusercontent.com/modules/1pcNuocOCHrGk62D3Wqf/aTbw7V3Hfnf4fd2Mn5ql/OrderDetailOverlay.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`;}export function TableComponent(props){const{variant:initialVariant}=props;const tableNameMap={coupons:\"쿠폰 목록 테이블\",days:\"2025~2026 휴일/성수기 테이블\",customers:\"고객 정보 테이블\",orders:\"전체 주문 내역 테이블\"};const optionTitlesMap={coupons:\"쿠폰 조건\",days:\"휴일/성수기\",customers:\"고객 정보\",orders:\"전체 주문 내역\"};const itemsPerPageMap={days:20,customers:20,coupons:5,orders:20};const editableVariants=[\"days\",\"customers\",\"coupons\",\"orders\"];const[selectedVariant,setSelectedVariant]=React.useState(editableVariants.includes(initialVariant)?initialVariant:editableVariants[0]);const[selectedOrderDetail,setSelectedOrderDetail]=React.useState(null);const[resetKey,setResetKey]=React.useState(0);const handleReload=()=>{setResetKey(prev=>prev+1);};// 모바일/태블릿 처리\nif(initialVariant===\"tablet\"){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",padding:24,textAlign:\"center\",fontSize:16,color:\"#888\",fontFamily:\"Pretendard, sans-serif\"},children:\"태블릿 환경에서는 테이블 수정이 불가능합니다.\"});}if(initialVariant===\"mobile\"){return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",padding:24,textAlign:\"center\",fontSize:16,color:\"#888\",fontFamily:\"Pretendard, sans-serif\"},children:[\"모바일 환경에서는\",/*#__PURE__*/_jsx(\"br\",{}),\"테이블 수정이 불가능합니다.\"]});}const parsedFields=fieldsByVariant[selectedVariant]||[];const idKey=parsedFields.find(field=>field.isPrimary)?.key||\"id\";const tableName=tableNameMap[selectedVariant];const currentItemsPerPage=itemsPerPageMap[selectedVariant];const{rows,paginatedRows,emptySlots,justAddedID,updating,updated,currentPage,totalPages,sortConfig,toggleSort,addElement,editElement,deleteElement,updateBackend,updateOrder,setCurrentPage,updateError}=useTableLogic(selectedVariant,currentItemsPerPage,parsedFields,resetKey);const prevPage=()=>setCurrentPage(Math.max(1,currentPage-1));const nextPage=()=>setCurrentPage(Math.min(totalPages,currentPage+1));const downloadJSON=()=>{const blob=new Blob([JSON.stringify(rows,null,2)],{type:\"application/json\"});const url=URL.createObjectURL(blob);const a=document.createElement(\"a\");a.href=url;a.download=\"table_data.json\";a.click();URL.revokeObjectURL(url);};const buttonStyle={padding:\"8px 16px\",border:\"1px solid #ddd\",backgroundColor:\"#fff\",fontSize:\"14px\",cursor:\"pointer\"};return /*#__PURE__*/_jsxs(\"div\",{style:{width:selectedVariant===\"coupons\"?\"1268px\":\"1268px\",padding:selectedVariant===\"coupons\"?0:24,fontFamily:\"Pretendard, sans-serif\"},children:[![\"coupons\"].includes(selectedVariant)&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",marginBottom:8},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:20,fontWeight:600,height:38},children:tableName}),![\"coupons\",\"orders\"].includes(selectedVariant)&&/*#__PURE__*/_jsx(\"button\",{onClick:()=>updateBackend(),disabled:updating,style:{...buttonStyle,minWidth:130,cursor:updating?\"wait\":\"pointer\"},children:updating?\"⏳ Updating...\":updated?\"✅ 저장됨\":\"Update Table\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",marginBottom:12},children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:8,padding:selectedVariant===\"coupons\"?\"0 24px\":\"0\"},children:selectedVariant!==\"coupons\"&&/*#__PURE__*/_jsx(\"button\",{onClick:handleReload,title:\"Reload Table\",style:{fontSize:14,padding:\"4px 8px\",cursor:\"pointer\",border:\"1px solid #ccc\",backgroundColor:\"#fff\",borderRadius:4},children:\"🔄 Reload\"})}),selectedVariant!==\"coupons\"&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8},children:[selectedVariant!==\"orders\"&&/*#__PURE__*/_jsx(\"button\",{onClick:addElement,style:buttonStyle,children:\"Add Row\"}),/*#__PURE__*/_jsx(\"button\",{onClick:downloadJSON,style:buttonStyle,children:\"Download JSON\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8},children:[/*#__PURE__*/_jsx(\"button\",{onClick:prevPage,disabled:currentPage===1,style:buttonStyle,children:\"◀ Prev\"}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:14},children:[\"Page \",currentPage,\" of \",totalPages]}),/*#__PURE__*/_jsx(\"button\",{onClick:nextPage,disabled:currentPage===totalPages,style:buttonStyle,children:\"Next ▶\"})]})]})]}),updateError&&selectedVariant!==\"coupons\"&&/*#__PURE__*/_jsxs(\"div\",{style:{color:\"red\",fontSize:13,marginBottom:12},children:[\"⚠️ \",updateError]}),selectedVariant===\"coupons\"?/*#__PURE__*/_jsx(CouponContainer,{}):selectedVariant===\"orders\"?/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:100},children:[/*#__PURE__*/_jsx(\"div\",{style:{overflowX:\"auto\"},children:/*#__PURE__*/_jsx(\"div\",{style:{borderTop:\"1px solid #ccc\",minWidth:\"800px\"},children:paginatedRows.map(row=>{const rowID=row[idKey];return /*#__PURE__*/_jsx(OrderElementComponent,{data:row,onOpenDetails:()=>setSelectedOrderDetail(row)},rowID);})})}),selectedOrderDetail&&/*#__PURE__*/_jsx(OrderDetailOverlay,{order:selectedOrderDetail,onClose:()=>setSelectedOrderDetail(null),onAccept:()=>{const updated={...selectedOrderDetail,payment_status:\"accepted\"};// editElement(selectedOrderDetail[idKey], updated)\nupdateOrder([selectedOrderDetail[idKey]],\"accepted\",\"approval_datetime\",getKSTISOString(),null,null,null);setSelectedOrderDetail(null);},onDecline:()=>{const updated={...selectedOrderDetail,payment_status:\"cancelled\"};// editElement(selectedOrderDetail[idKey], updated)\nupdateOrder([selectedOrderDetail[idKey]],\"cancelled\",\"cancellation_datetime\",getKSTISOString(),null,null,null);setSelectedOrderDetail(null);},onRefund:()=>{const updated={...selectedOrderDetail,payment_status:\"refunded\"};// editElement(selectedOrderDetail[idKey], updated)\nupdateOrder([selectedOrderDetail[idKey]],\"refunded\",\"refund_datetime\",getKSTISOString(),null,null,null);setSelectedOrderDetail(null);},onCheckIn:()=>{const updated={...selectedOrderDetail,stay_status:\"checked_in\"};// editElement(selectedOrderDetail[idKey], updated)\nupdateOrder([selectedOrderDetail[idKey]],null,null,null,\"checked_in\",\"checkin_datetime\",getKSTISOString());setSelectedOrderDetail(null);},onCheckOut:()=>{const updated={...selectedOrderDetail,stay_status:\"checked_out\"};// editElement(selectedOrderDetail[idKey], updated)\nupdateOrder([selectedOrderDetail[idKey]],null,null,null,\"checked_out\",\"checkout_datetime\",getKSTISOString());setSelectedOrderDetail(null);}})]})}):/*#__PURE__*/_jsx(\"div\",{style:{overflowX:\"auto\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{minWidth:`${parsedFields.length*120+160}px`,borderTop:\"1px solid #ccc\"},children:[/*#__PURE__*/_jsx(TableHeader,{fields:parsedFields,sortConfig:sortConfig,toggleSort:toggleSort}),paginatedRows.map(row=>{const rowID=row[idKey];return /*#__PURE__*/_jsx(ElementComponent,{data:row,fields:parsedFields,onEdit:updatedRow=>editElement(rowID,updatedRow),onDelete:()=>deleteElement(rowID),isNew:justAddedID!==null&&rowID===justAddedID,idKey:idKey,isPlaceholder:false},rowID);}),Array.from({length:emptySlots}).map((_,i)=>/*#__PURE__*/_jsx(ElementComponent,{data:parsedFields.reduce((acc,field)=>({...acc,[field.key]:\"​\"}),{}),fields:parsedFields,onEdit:()=>{},onDelete:()=>{},isNew:false,idKey:idKey,isPlaceholder:true},`empty-${i}`))]})})]});}addPropertyControls(TableComponent,{variant:{type:ControlType.Enum,options:[\"coupons\",\"days\",\"customers\",\"orders\",\"tablet\",\"mobile\"],optionTitles:[\"쿠폰 조건\",\"휴일/성수기\",\"고객 정보\",\"전체 주문 내역\",\"Tablet (수정 불가)\",\"Mobile (수정 불가)\"],defaultValue:\"days\",title:\"Variant\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"TableComponent\":{\"type\":\"reactComponent\",\"name\":\"TableComponent\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}