{"version":3,"file":"TimeSelect.CTedkIzA.mjs","names":["parseReservationData","payload","DateInput","isMonday","GuestsSelect","__legacyOverrideHOC_DataObserverContext","_jsx","withDateInput","React.useState","__legacyOverrideHOC_DataObserverContext","_jsx","React.useState"],"sources":["https:/framerusercontent.com/modules/Z3nQVq5hxo9OpVRzqcCc/FYGeAkykuQdTkQmFXLiN/FormPrefill.js","https:/framerusercontent.com/modules/kHGazswTibrgpVJA1lrg/SQhHKML0z0JgSCRhMpXy/GuestsSelect.js","https:/framerusercontent.com/modules/XsfCLuBrhhMpmlWha0Sp/CG1C9wcpA68MsBk2M6zh/ReservationOverrides.js","https:/framerusercontent.com/modules/RoyeO5fD0h6dGh5IwOoC/UN9nYxusu7qNoH2DsPKV/TimeSelect.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";function parseReservationData(){try{const params=new URLSearchParams(window.location.search);let b64=params.get(\"data\");if(!b64)return{}// NOTHING TO PARSE → RETURN SAFE EMPTY OBJECT\n;b64=b64.replace(/-/g,\"+\").replace(/_/g,\"/\");const pad=b64.length%4;if(pad)b64+=\"=\".repeat(4-pad);const latin1=atob(b64);let pct=\"\";for(let i=0;i<latin1.length;i++){pct+=\"%\"+latin1.charCodeAt(i).toString(16).padStart(2,\"0\");}const decoded=decodeURIComponent(pct);// SAFETY: must be valid JSON\nif(!decoded.startsWith(\"{\"))return{};return JSON.parse(decoded);}catch(err){console.warn(\"parseReservationData failed safely:\",err);return{};}}const payload=parseReservationData();console.log(\"Decoded payload:\",payload);export function NameInput(){return{defaultValue:payload.name||\"\"};}export function PhoneInput(){return{defaultValue:payload.phone||\"\"};}export function EmailInput(){return{defaultValue:payload.email||\"\"};}export function RequestsInput(){return{defaultValue:payload.requests||\"\"};}export function DateInput(){React.useEffect(()=>{const input=document.querySelector('input[type=\"date\"]');if(!input)return;// 🔒 Specific blocked dates — add more as needed\nconst blockedDates=[\"2025-12-22\",\"2025-12-23\",\"2025-12-24\",\"2025-12-25\",\"2025-12-26\",\"2025-12-27\",\"2025-12-28\",\"2025-12-29\"];// ⛔ Check on user input\ninput.addEventListener(\"input\",()=>{const selected=input.value;const selectedDate=new Date(selected);const isMonday=selectedDate.getDay()===1;const isBlockedDate=blockedDates.includes(selected);if(isMonday||isBlockedDate){alert(\"This date is not available. Please choose another.\");input.value=\"\";}});// 🔐 Optional: block past dates\nconst today=new Date().toISOString().split(\"T\")[0];input.setAttribute(\"min\",today);},[]);return{defaultValue:payload.date||\"\"};}//\n// ✅ FIXED TIME INPUT — hides times < 1.5h from now ONLY if booking is today\n//\nfunction normalizeDateString(str){if(!str)return\"\";if(/^\\d{4}-\\d{2}-\\d{2}$/.test(str))return str// already ISO\n;const cleaned=str.replace(/\\./g,\"-\").replace(/\\s+/g,\"\");return cleaned.replace(/-$/,\"\");}export function TimeInput(props){const opts=props.options||[];// Read Framer's real date from hidden ISO field\nlet liveDate=\"\";const hidden=document.querySelector('input[name=\"Date\"][type=\"hidden\"]');if(hidden&&hidden.value){liveDate=hidden.value// correct yyyy-mm-dd format\n;}else{const visible=document.querySelector('input[name=\"Date\"]');if(visible)liveDate=visible.value;}liveDate=normalizeDateString(liveDate);const selectedDate=liveDate?new Date(liveDate):null;const now=new Date;const isToday=selectedDate&&selectedDate.toISOString().split(\"T\")[0]===now.toISOString().split(\"T\")[0];// Minimum allowed = now + 1.5 hours\nconst minAllowed=new Date(now.getTime()+90*60*1e3);let filteredOptions=opts;if(isToday){filteredOptions=opts.filter(o=>{if(!/^\\d\\d:\\d\\d$/.test(o.value))return true;const[hh,mm]=o.value.split(\":\").map(Number);const slot=new Date(now.getFullYear(),now.getMonth(),now.getDate(),hh,mm);return slot>=minAllowed;});}return{options:filteredOptions};}export function GuestsSelect(props){const opts=props.options||[];const want=payload.guests!=null?payload.guests.toString():\"\";const match=opts.find(o=>o.value===want);if(match){return{selectedOptionId:match.id};}return{};}export function NewsletterCheckbox(){return{checked:payload.newsletter===true};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withNameInput(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...NameInput(props)});};}withNameInput.displayName=\"NameInput\";export function withPhoneInput(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...PhoneInput(props)});};}withPhoneInput.displayName=\"PhoneInput\";export function withEmailInput(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...EmailInput(props)});};}withEmailInput.displayName=\"EmailInput\";export function withRequestsInput(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...RequestsInput(props)});};}withRequestsInput.displayName=\"RequestsInput\";export function withDateInput(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...DateInput(props)});};}withDateInput.displayName=\"DateInput\";export function withTimeInput(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...TimeInput(props)});};}withTimeInput.displayName=\"TimeInput\";export function withGuestsSelect(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...GuestsSelect(props)});};}withGuestsSelect.displayName=\"GuestsSelect\";export function withNewsletterCheckbox(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...NewsletterCheckbox(props)});};}withNewsletterCheckbox.displayName=\"NewsletterCheckbox\";\nexport const __FramerMetadata__ = {\"exports\":{\"PhoneInput\":{\"type\":\"override\",\"name\":\"PhoneInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPhoneInput\":{\"type\":\"reactHoc\",\"name\":\"withPhoneInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"GuestsSelect\":{\"type\":\"override\",\"name\":\"GuestsSelect\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRequestsInput\":{\"type\":\"reactHoc\",\"name\":\"withRequestsInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DateInput\":{\"type\":\"override\",\"name\":\"DateInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDateInput\":{\"type\":\"reactHoc\",\"name\":\"withDateInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTimeInput\":{\"type\":\"reactHoc\",\"name\":\"withTimeInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGuestsSelect\":{\"type\":\"reactHoc\",\"name\":\"withGuestsSelect\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EmailInput\":{\"type\":\"override\",\"name\":\"EmailInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withEmailInput\":{\"type\":\"reactHoc\",\"name\":\"withEmailInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NameInput\":{\"type\":\"override\",\"name\":\"NameInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RequestsInput\":{\"type\":\"override\",\"name\":\"RequestsInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TimeInput\":{\"type\":\"override\",\"name\":\"TimeInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNameInput\":{\"type\":\"reactHoc\",\"name\":\"withNameInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NewsletterCheckbox\":{\"type\":\"override\",\"name\":\"NewsletterCheckbox\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withNewsletterCheckbox\":{\"type\":\"reactHoc\",\"name\":\"withNewsletterCheckbox\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FormPrefill.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";export function GuestsSelect(props){const{label=\"Number of Guests\",name=\"Guests\",required=false,defaultGuests=2,onGuestsChange}=props;const[guests,setGuests]=React.useState(defaultGuests);/************************************************\n     * Hidden input + broadcast\n     ************************************************/React.useEffect(()=>{updateHidden(guests);broadcast(guests);},[]);function updateHidden(value){const hidden=document.querySelector(`input[name=\"${name}\"]`);if(hidden)hidden.value=String(value);}function broadcast(value){window.dispatchEvent(new CustomEvent(\"guests:changed\",{detail:{guests:value}}));}function handleChange(e){const value=parseInt(e.target.value,10);setGuests(value);updateHidden(value);broadcast(value);if(onGuestsChange)onGuestsChange(value);}/************************************************\n     * Render UI\n     ************************************************/return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",display:\"flex\",flexDirection:\"column\"},children:[label&&/*#__PURE__*/_jsx(\"label\",{style:{marginBottom:6,fontSize:14,color:\"#fff\",opacity:.8},children:label}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"select\",{value:guests,required:required,onChange:handleChange,style:{width:\"100%\",padding:\"12px 14px\",fontSize:\"14px\",border:\"1px solid rgba(255,255,255,0.15)\",background:\"rgba(255,255,255,0.05)\",color:\"#fff\",borderRadius:\"10px\",outline:\"none\",appearance:\"none\",WebkitAppearance:\"none\",MozAppearance:\"none\",cursor:\"pointer\"},children:[...Array(8)].map((_,i)=>{const n=i+1;return /*#__PURE__*/_jsx(\"option\",{value:n,style:{color:\"#000\"},children:n},n);})}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",right:14,top:\"50%\",transform:\"translateY(-50%)\",pointerEvents:\"none\",color:\"rgba(255,255,255,0.7)\",fontSize:12},children:\"▼\"})]}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",name:name,value:guests,required:required,hidden:true,readOnly:true})]});}/************************************************\n * Framer Sidebar Controls\n ************************************************/addPropertyControls(GuestsSelect,{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Number of Guests\"},name:{type:ControlType.String,title:\"Name\",defaultValue:\"Guests\"},required:{type:ControlType.Boolean,title:\"Required\",defaultValue:true},defaultGuests:{type:ControlType.Number,min:1,max:8,defaultValue:2,title:\"Default\"},onGuestsChange:{type:ControlType.EventHandler,title:\"On Change\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"GuestsSelect\":{\"type\":\"reactComponent\",\"name\":\"GuestsSelect\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GuestsSelect.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";/**********************************************\n * BASE64 Reservation Prefill\n **********************************************/function parseReservationData(){try{const params=new URLSearchParams(window.location.search);let b64=params.get(\"data\");if(!b64)return{};b64=b64.replace(/-/g,\"+\").replace(/_/g,\"/\");const pad=b64.length%4;if(pad)b64+=\"=\".repeat(4-pad);const latin1=atob(b64);let pct=\"\";for(let i=0;i<latin1.length;i++){pct+=\"%\"+latin1.charCodeAt(i).toString(16).padStart(2,\"0\");}const jsonStr=decodeURIComponent(pct);return jsonStr.startsWith(\"{\")?JSON.parse(jsonStr):{};}catch{return{};}}const payload=parseReservationData();/**********************************************\n * SIMPLE PREFILL FIELDS\n **********************************************/export const NameInput=()=>({defaultValue:payload.name||\"\"});export const PhoneInput=()=>({defaultValue:payload.phone||\"\"});export const EmailInput=()=>({defaultValue:payload.email||\"\"});export const RequestsInput=()=>({defaultValue:payload.requests||\"\"});export const NewsletterCheckbox=()=>({checked:payload.newsletter===true});/**********************************************\n * DATE BLOCKING RULES\n **********************************************/const BLOCKED=new Set([\"2025-12-22\",\"2025-12-23\",\"2025-12-24\",\"2025-12-25\",\"2025-12-26\",\"2025-12-27\",\"2025-12-28\",\"2025-12-29\",\"2025-10-28\"]);const isMonday=d=>d.getDay()===1;const toYMD=d=>d.toISOString().split(\"T\")[0];const isIllegal=d=>BLOCKED.has(toYMD(d))||isMonday(d);/**********************************************\n * DATE INPUT — VALIDATION + HIDDEN FIELD SYNC\n **********************************************/export function DateInput(){React.useEffect(()=>{const input=document.querySelector('input[name=\"Date\"]');if(!input)return;const today=new Date;input.min=toYMD(today);// Determine initial date\nlet initial=payload.date;const d=initial?new Date(initial):null;if(!initial||!d||isIllegal(d)||initial<input.min){let tmp=new Date(today);while(isIllegal(tmp))tmp.setDate(tmp.getDate()+1);initial=toYMD(tmp);}// Set both visible and hidden date fields\ninput.value=initial;const hiddenDate=document.querySelector('input[name=\"Date\"]');if(hiddenDate)hiddenDate.value=initial;function onUserChange(){const raw=input.value;if(!raw)return;const d=new Date(raw);if(isIllegal(d)){console.log(\"⛔ Illegal date selected:\",raw);input.value=\"\";if(hiddenDate)hiddenDate.value=\"\";return;}console.log(\"📆 Valid date selected:\",raw);if(hiddenDate)hiddenDate.value=raw;}input.addEventListener(\"change\",onUserChange);input.addEventListener(\"input\",onUserChange);return()=>{input.removeEventListener(\"change\",onUserChange);input.removeEventListener(\"input\",onUserChange);};},[]);return{};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withDateInput(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...DateInput(props)});};}withDateInput.displayName=\"DateInput\";\nexport const __FramerMetadata__ = {\"exports\":{\"NewsletterCheckbox\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EmailInput\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDateInput\":{\"type\":\"reactHoc\",\"name\":\"withDateInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NameInput\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RequestsInput\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PhoneInput\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DateInput\":{\"type\":\"override\",\"name\":\"DateInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ReservationOverrides.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**********************************************\n * API CACHE + FETCH\n **********************************************/const API_URL=\"https://ginger-worker.gingerparis.workers.dev\";const cache={};async function loadSlots(date){console.log(\"🌐 loadSlots:\",date);if(!date)return[];if(cache[date]){console.log(\"⚡ Cache hit:\",date);return cache[date];}try{const url=`${API_URL}?action=available&date=${encodeURIComponent(date)}`;console.log(\"🔵 Worker Request:\",url);const res=await fetch(url);console.log(\"🟡 Worker Status:\",res.status);const json=await res.json();console.log(\"🟢 Worker Response:\",json);cache[date]=json.available||[];return cache[date];}catch(err){console.error(\"🔴 Worker ERROR:\",err);return[];}}/**********************************************\n * TIME SELECT — BUBBLE GRID + SHIMMER LOADING\n **********************************************/export function TimeSelect(props){const{label=\"Time\",name=\"Time\",required=true,onTimeChange}=props;const[date,setDate]=React.useState(\"\");const[guests,setGuests]=React.useState(2);const[slots,setSlots]=React.useState([]);const[selected,setSelected]=React.useState(\"\");const[loading,setLoading]=React.useState(false);/**********************************************\n     * HELPERS\n     **********************************************/function writeHiddenInput(value){const hidden=document.querySelector(`input[name=\"${name}\"]`);if(hidden)hidden.value=value;}/**********************************************\n     * WATCH DATE INPUT\n     **********************************************/React.useEffect(()=>{const dateInput=document.querySelector('input[name=\"Date\"]');if(!dateInput)return;setDate(dateInput.value||\"\");const handler=()=>setDate(dateInput.value||\"\");dateInput.addEventListener(\"change\",handler);dateInput.addEventListener(\"input\",handler);return()=>{dateInput.removeEventListener(\"change\",handler);dateInput.removeEventListener(\"input\",handler);};},[]);/**********************************************\n     * LISTEN FOR GUESTS CHANGES\n     **********************************************/React.useEffect(()=>{function guestsHandler(e){const ev=e;if(!ev.detail)return;setGuests(ev.detail.guests);}window.addEventListener(\"guests:changed\",guestsHandler);return()=>window.removeEventListener(\"guests:changed\",guestsHandler);},[]);/**********************************************\n     * LOAD SLOTS WHENEVER DATE OR GUESTS CHANGE\n     **********************************************/React.useEffect(()=>{let active=true;async function run(){console.log(\"⏳ Loading slots →\",\"Date:\",date,\"Guests:\",guests);if(!date){setSlots([]);setSelected(\"\");writeHiddenInput(\"\");return;}setLoading(true);const raw=await loadSlots(date);setLoading(false);if(!active)return;const requiredTables=Math.ceil(guests/2);const filtered=raw.filter(s=>s.total-s.booked>=requiredTables);const mapped=filtered.map(s=>({value:s.time,label:s.time}));setSlots(mapped);if(mapped.length>0){setSelected(mapped[0].value);writeHiddenInput(mapped[0].value);if(onTimeChange)onTimeChange(mapped[0].value);}else{setSelected(\"\");writeHiddenInput(\"\");}}run();return()=>active=false;},[date,guests]);/**********************************************\n     * SHIMMER LOADING BUBBLE (CSS ONLY)\n     **********************************************/const shimmer={background:\"linear-gradient(90deg, rgba(255,255,255,0.07) 0%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.07) 100%)\",backgroundSize:\"200% 100%\",animation:\"shimmer 1.2s infinite\"};const shimmerStyle=`\n        @keyframes shimmer {\n            0% { background-position: 200% 0; }\n            100% { background-position: -200% 0; }\n        }\n    `;/**********************************************\n     * RENDER\n     **********************************************/return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",display:\"flex\",flexDirection:\"column\"},children:[/*#__PURE__*/_jsx(\"style\",{children:shimmerStyle}),/*#__PURE__*/_jsx(\"label\",{style:{marginBottom:6,fontSize:14,color:\"#fff\",opacity:.8},children:label}),/*#__PURE__*/_jsx(\"div\",{style:{height:230,overflow:\"hidden\",width:\"100%\",marginBottom:12,borderRadius:8},children:/*#__PURE__*/_jsx(\"div\",{style:{height:\"250px\",maxHeight:\"250px\",overflowY:\"scroll\",paddingRight:4,paddingBottom:150,WebkitOverflowScrolling:\"touch\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(auto-fill, minmax(90px, 1fr))\",gap:\"10px\",padding:\"10px\"},children:[loading&&Array.from({length:12}).map((_,i)=>/*#__PURE__*/_jsx(\"div\",{style:{height:40,borderRadius:8,...shimmer}},\"load-\"+i)),!loading&&slots.length===0&&/*#__PURE__*/_jsx(\"div\",{style:{color:\"#999\",fontSize:14,padding:\"20px\",textAlign:\"center\",gridColumn:\"1 / -1\"},children:\"No times available\"}),!loading&&slots.map(slot=>{const isSelected=selected===slot.value;return /*#__PURE__*/_jsx(\"div\",{onClick:()=>{setSelected(slot.value);writeHiddenInput(slot.value);if(onTimeChange)onTimeChange(slot.value);},style:{padding:\"10px\",textAlign:\"center\",borderRadius:\"8px\",cursor:\"pointer\",background:isSelected?\"rgb(245, 230, 178)\":\"rgba(255,255,255,0.1)\",border:isSelected?\"2px solid #f8e8b8\":\"1px solid rgba(255,255,255,0.2)\",color:isSelected?\"#000\":\"#fff\",fontSize:14,userSelect:\"none\",transition:\"0.15s\"},children:slot.label},slot.value);})]})})}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",name:name,value:selected,required:required,hidden:true,readOnly:true})]});}/**********************************************\n * FRAMER CONTROLS\n **********************************************/addPropertyControls(TimeSelect,{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Time\"},name:{type:ControlType.String,title:\"Name\",defaultValue:\"Time\"},required:{type:ControlType.Boolean,title:\"Required\",defaultValue:true},onTimeChange:{type:ControlType.EventHandler,title:\"On Change\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"TimeSelect\":{\"type\":\"reactComponent\",\"name\":\"TimeSelect\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TimeSelect.map"],"mappings":"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"}