1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,353320,e=>{"use strict";e.s(["toSlug",0,e=>{var t=(e=>{let t="";for(let r of e){let e=r.codePointAt(0);void 0!==e&&e>=768&&e<=879||(t+=r)}return t})((e??"").normalize("NFD").trim()).trim().toLowerCase().replaceAll("&"," and ");let r="",o=!1;for(let e of t){let t=e>="a"&&e<="z",i=e>="0"&&e<="9";if(t||i){r+=e,o=!1;continue}o||(r+="-",o=!0)}for(;r.startsWith("-");)r=r.slice(1);for(;r.endsWith("-");)r=r.slice(0,-1);return r}])},577978,328609,848037,863177,e=>{"use strict";var t,r,o=e.i(661687),i=e.i(919416),a=e.i(304274);let d=[{productid:1,chainproductid:100,vendorid:10,favouritename:"Downtown Favourite",choices:[],createddate:Date.now()-864e5,product:{id:"1",name:"Tropical Smoothie Cafe - Downtown",image:"/images/cafes/smoothie-downtown.jpg",rating:4.5,phone:"(512) 555-0001",website:"https://tropicalsmoothie.com",amenities:["WiFi","Seating","Parking"]}},{productid:3,chainproductid:300,vendorid:30,favouritename:"North Austin Favourite",choices:[],createddate:Date.now()-1728e5,product:{id:"3",name:"Tropical Smoothie Cafe - North Austin",image:"/images/cafes/smoothie-north.jpg",rating:4.3,phone:"(512) 555-0003",website:"https://tropicalsmoothie.com",amenities:["WiFi","Seating"]}},{productid:5,chainproductid:500,vendorid:50,favouritename:"Houston Favourite",choices:[],createddate:Date.now()-2592e5,product:{id:"5",name:"Tropical Smoothie Cafe - Houston",image:"/images/cafes/smoothie-houston.jpg",rating:4.4,phone:"(713) 555-0005",website:"https://tropicalsmoothie.com",amenities:["WiFi","Seating","Parking","Outdoor"]}}],n={status:"success",message:"Product added to favorites",statusCode:200},s={status:"success",message:"Product removed from favorites",statusCode:200},u={favorites:d,total:3,page:1,limit:10},l={productId:"1",product:{id:"1",name:"Tropical Smoothie Cafe - Downtown",image:"/images/cafes/smoothie-downtown.jpg",rating:4.5,phone:"(512) 555-0001",website:"https://tropicalsmoothie.com",amenities:["WiFi","Seating","Parking"]},addedAt:Date.now()-864e5},c={productId:"1",isFavourite:!0},m={count:3},p={success:!0,message:"Favorites synced successfully",syncedAt:Date.now()},g={success:!0,message:"All favorites cleared"};var f=e.i(340290),v=e.i(273894),h=e.i(951093),y=e.i(903026);let I={type:"required"},_={type:"string"},E={type:"number"},C={type:"integer"},R={type:"min",min:1},b={type:"max",max:100};async function A(e){var t;f.Logger.debug("[validateAddFavoriteProductRequest] Validating request",{request:e});let r=null!=(t=e.productid)?t:e.productId;if(!v.FieldValidator.validate(e.favouritename,I)||!y.StringValidator.validate(e.favouritename,_))throw f.Logger.error("[validateAddFavoriteProductRequest] Validation failed: invalid favouritename",{favouritename:e.favouritename}),TypeError("Favorite name is required and must be a string");if(!h.NumberValidator.validate(r,E))throw f.Logger.error("[validateAddFavoriteProductRequest] Validation failed: invalid productId",{productId:r}),TypeError("Product ID is required and must be a number");if(void 0!==e.vendorid&&null!==e.vendorid&&!(h.NumberValidator.validate(e.vendorid,E)||"string"==typeof e.vendorid&&e.vendorid.trim().length>0))throw f.Logger.error("[validateAddFavoriteProductRequest] Validation failed: invalid vendorid",{vendorid:e.vendorid}),TypeError("Vendor ID must be a number or non-empty string when provided");if(!h.NumberValidator.validate(e.chainproductid,E))throw f.Logger.error("[validateAddFavoriteProductRequest] Validation failed: invalid chainproductid",{chainproductid:e.chainproductid}),TypeError("Chain product ID is required and must be a number");if(!v.FieldValidator.validate(e.productname,I)||!y.StringValidator.validate(e.productname,_))throw f.Logger.error("[validateAddFavoriteProductRequest] Validation failed: invalid productname",{productname:e.productname}),TypeError("Product name is required and must be a string");f.Logger.debug("[validateAddFavoriteProductRequest] Validation passed",{productId:r,vendorid:e.vendorid,chainproductid:e.chainproductid})}async function T(e){if(f.Logger.debug("[validateRemoveFavoriteProductRequest] Validating request",{chainproductid:e}),!h.NumberValidator.validate(e,E))throw f.Logger.error("[validateRemoveFavoriteProductRequest] Validation failed: invali
1d chainproductid",{chainproductid:e}),TypeError("chainproductid is required and must be a number");f.Logger.debug("[validateRemoveFavoriteProductRequest] Validation passed",{chainproductid:e})}async function O(e){if(f.Logger.debug("[validateGetFavoriteProductsRequest] Validating request",{request:e}),void 0!==e.limit&&!(h.NumberValidator.validate(e.limit,C)&&h.NumberValidator.validate(e.limit,R)&&h.NumberValidator.validate(e.limit,b)))throw f.Logger.error("[validateGetFavoriteProductsRequest] Validation failed: invalid limit",{limit:e.limit}),RangeError("Limit must be between 1 and 100");if(void 0!==e.page&&!(h.NumberValidator.validate(e.page,C)&&h.NumberValidator.validate(e.page,R)))throw f.Logger.error("[validateGetFavoriteProductsRequest] Validation failed: invalid page",{page:e.page}),RangeError("Page must be at least 1");f.Logger.debug("[validateGetFavoriteProductsRequest] Validation passed",{page:e.page,limit:e.limit})}async function S(e){if(f.Logger.debug("[validateProductByIdRequest] Validating request",{request:e}),!v.FieldValidator.validate(e.productId,I)||!y.StringValidator.validate(e.productId,_))throw f.Logger.error("[validateProductByIdRequest] Validation failed: invalid productId",{productId:e.productId}),TypeError("Product ID is required and must be a string");f.Logger.debug("[validateProductByIdRequest] Validation passed",{productId:e.productId})}function w(e){f.Logger.debug("[transformProductByIdRequest] Transforming request",{request:e});let t={productId:e.productId.trim()};return f.Logger.debug("[transformProductByIdRequest] Request transformed",t),t}async function N(e){f.Logger.debug("[validateGetFavouriteCountRequest] No validation required",{request:e})}async function F(e){if(f.Logger.debug("[validateSyncFavouritesRequest] Validating request",{request:e}),void 0!==e.lastSyncTime&&!h.NumberValidator.validate(e.lastSyncTime,E))throw f.Logger.error("[validateSyncFavouritesRequest] Validation failed: invalid lastSyncTime",{lastSyncTime:e.lastSyncTime}),TypeError("Last sync time must be a number");f.Logger.debug("[validateSyncFavouritesRequest] Validation passed",{lastSyncTime:e.lastSyncTime})}async function P(e){f.Logger.debug("[validateClearAllFavouritesRequest] No validation required",{request:e})}let L={type:"string"},D={type:"number"};function M(e){return"object"==typeof e&&!(0,v.isNullOrUndefined)(e)&&!Array.isArray(e)}function U(e){return M(e)?e:{}}function G(e){return y.StringValidator.validate(e,L)?e:void 0}function q(e){return h.NumberValidator.validate(e,D)&&Number.isFinite(e)?e:void 0}function V(e){return"boolean"==typeof e?e:void 0}function k(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)?e:void 0}function $(e){if(!Array.isArray(e))return;let t=e.filter(e=>M(e));return t.length===e.length?t:void 0}let B={type:"number"},H={type:"string"};function K(e){if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=e.trim();if(0===t.length)return;let r=Number(t);return Number.isFinite(r)?r:t}}function x(e){let t=K(e);return"number"==typeof t&&Number.isFinite(t)?t:void 0}function j(e){var t,r,o;f.Logger.debug("[mapAddFavoriteProductResponseToDTO] Mapping add favorite response");let i=U(e),a={status:null!=(t=G(i.status))?t:"",message:null!=(r=G(i.message))?r:"Product added to favorites",statusCode:null!=(o=q(i.statusCode))?o:0};return f.Logger.debug("[mapAddFavoriteProductResponseToDTO] Mapping completed",{statusCode:a.statusCode}),a}function Y(e){var t,r,o;f.Logger.debug("[mapRemoveFavoriteProductResponseToDTO] Mapping remove favorite response");let i=U(e),a={status:null!=(t=G(i.status))?t:"",message:null!=(r=G(i.message))?r:"Product removed from favorites",statusCode:null!=(o=q(i.statusCode))?o:0};return f.Logger.debug("[mapRemoveFavoriteProductResponseToDTO] Mapping completed",{statusCode:a.statusCode}),a}function W(e){var t,r,o,i,a,d;f.Logger.debug("[mapGetFavoriteProductsResponseToDTO] Mapping favorite products response");let n=U(e),s=U(n.data),u=null!=(o=null!=(r=null!=(t=$(n.data))?t:$(s.data))?r:$(s.favorites))?o:$(n.favorites),l=Array.isArray(u)?u.map(e=>{var t,r,o,i,a,d,n,s,u,l,c,m,p,g,v,I,_,E,C,R,b,A;let T=M(e.product)?e.product:void 0,O=null!=(d=null!=(a=null!=(i=null!=(o=null!=(r=null!=(t=K(e.id))?t:K(e.favouriteid))?r:K(e.favoriteid))?o:K(e.favouriteProductId))?i:K(e.favoriteProductId))?a:K(e.favouriteproductid))?d:K(e.favoriteproductid),S=K(e.favoriteid),w=K(e.favouriteid),N=K(e.plu),F=null!=(u=null!=(s=null!=(n=x(e.productid))?n:x(e.productId))?s:x(null==T?void 0:T.id))?u:0,P=null!=(c=null!=(l=G(null==T?void 0:T.name))?l:G(e.productname))?c:"",L=G(null==T?void 0:T.image),D=q(null==T?void 0:T.rating),U=G(null==T?void 0:T.phone),V=G(null==T?void 0:T.website),$=M(null==T?void 0:T.address)?T.address:void 0;return{...void 0!==O&&{id:O},...void 0!==w&&{favouriteid:w},...void 0!==S&&{favoriteid:S},...void 0!==N&&{plu:N},product:{id:null!=(m=G(null==T?void 0:T.id))?m:F>0?String(F):"",name:P,...void 0!==L&&{image:L},...void 0!==D&&{rating:D},...void 0!==$&&{address:$},...void 0!==U&&{phone:U},...void 0!==V&&{website:V},amenities:null==T?void 0:T.amenities}
1,choices:Array.isArray(b=e.choices)?null!=(A=k(b))?A:[]:"string"==typeof b&&b.trim().length>0?b.split(",").map(e=>e.trim()):[],vendorid:null!=(p=q(e.vendorid))?p:0,addedAt:function(e){if(f.Logger.debug("[parseCreatedDateToEpoch] Parsing created date value",{valueType:typeof e}),h.NumberValidator.validate(e,B)&&Number.isFinite(e))return e;if(y.StringValidator.validate(e,H)){let t=e.trim(),r=Date.parse(t);if(!Number.isNaN(r))return r;let o=/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i.exec(t);if(o){let[,e,t,r,i,a,d]=o,n=Number(e),s=Number(t)-1,u=Number(r),l=Number(a),c=Number(i);return new Date(n,s,u,(null==d?void 0:d.toUpperCase())==="PM"?c%12+12:c%12,l,0,0).getTime()}}return f.Logger.warn("[parseCreatedDateToEpoch] Falling back to current timestamp for unparseable value"),Date.now()}(null!=(g=e.createddate)?g:e.addedAt),chainproductid:null!=(I=null!=(v=x(e.chainproductid))?v:x(e.chainProductId))?I:0,favouritename:null!=(R=null!=(C=null!=(E=null!=(_=G(e.favouritename))?_:G(e.favoritename))?E:G(e.favoriteName))?C:G(e.name))?R:"",productid:F}}):[],c=null!=(i=q(n.total))?i:l.length,m=G(n.status),p=G(n.message),g=q(n.statusCode),v={...void 0!==m&&{status:m},...void 0!==p&&{message:p},...void 0!==g&&{statusCode:g},favorites:l,total:c,page:null!=(a=q(n.page))?a:1,limit:null!=(d=q(n.limit))?d:c>0?c:10};return f.Logger.debug("[mapGetFavoriteProductsResponseToDTO] Mapping completed",{total:v.total,page:v.page,limit:v.limit}),v}function z(e){var t,r,o,i,a,d,n;f.Logger.debug("[mapGetFavoriteProductByIdResponseToDTO] Mapping favorite product by id response");let s=U(e),u=M(s.product)?s.product:void 0,l=G(null==u?void 0:u.image),c=q(null==u?void 0:u.rating),m=G(null==u?void 0:u.phone),p=G(null==u?void 0:u.website),g=k(null==u?void 0:u.amenities),v=M(null==u?void 0:u.address)?u.address:void 0,h={productId:null!=(i=null!=(o=null!=(r=null!=(t=q(s.productid))?t:q(null==u?void 0:u.id))?r:G(s.productId))?o:G(null==u?void 0:u.id))?i:"",product:{id:null!=(a=G(null==u?void 0:u.id))?a:"",name:null!=(d=G(null==u?void 0:u.name))?d:"",...void 0!==l&&{image:l},...void 0!==c&&{rating:c},...void 0!==v&&{address:v},...void 0!==m&&{phone:m},...void 0!==p&&{website:p},...void 0!==g&&{amenities:g}},addedAt:null!=(n=q(s.addedAt))?n:Date.now()};return f.Logger.debug("[mapGetFavoriteProductByIdResponseToDTO] Mapping completed",{productId:h.productId}),h}function Q(e){var t,r;f.Logger.debug("[mapCheckFavouriteResponseToDTO] Mapping check favourite response");let o=U(e),i={productId:null!=(t=G(o.productId))?t:"",isFavourite:null!=(r=V(o.isFavourite))&&r};return f.Logger.debug("[mapCheckFavouriteResponseToDTO] Mapping completed",{productId:i.productId,isFavourite:i.isFavourite}),i}function J(e){var t;f.Logger.debug("[mapGetFavouriteCountResponseToDTO] Mapping favourite count response");let r={count:null!=(t=q(U(e).count))?t:0};return f.Logger.debug("[mapGetFavouriteCountResponseToDTO] Mapping completed",{count:r.count}),r}function Z(e){var t,r,o;f.Logger.debug("[mapSyncFavouritesResponseToDTO] Mapping sync favourites response");let i=U(e),a={success:null==(t=V(i.success))||t,message:null!=(r=G(i.message))?r:"Favorites synced successfully",syncedAt:null!=(o=q(i.syncedAt))?o:Date.now()};return f.Logger.debug("[mapSyncFavouritesResponseToDTO] Mapping completed",{success:a.success}),a}function X(e){var t,r;f.Logger.debug("[mapClearAllFavouritesResponseToDTO] Mapping clear all favourites response");let o=U(e),i={success:null==(t=V(o.success))||t,message:null!=(r=G(o.message))?r:"All favorites cleared"};return f.Logger.debug("[mapClearAllFavouritesResponseToDTO] Mapping completed",{success:i.success}),i}(t=r||(r={})).INVALID_PRODUCT="INVALID_PRODUCT",t.FAVORITE_NOT_FOUND="FAVORITE_NOT_FOUND",t.NETWORK_FAILURE="NETWORK_FAILURE";class ee extends Error{constructor(e,t,r,o){super(t),this.code=e,this.statusCode=r,this.cause=o,this.name="FavoriteProductApiError"}}function et(e){var t;if(f.Logger.debug("[toFavoriteProductApiError] Normalizing favorite product error",{errorName:e instanceof Error?e.name:typeof e}),e instanceof ee)return f.Logger.debug("[toFavoriteProductApiError] Error already normalized"),e;if(e instanceof TypeError||e instanceof RangeError)return f.Logger.w
1arn("[toFavoriteProductApiError] Validation error mapped to INVALID_PRODUCT",{errorName:e.name,message:e.message}),new ee(r.INVALID_PRODUCT,"Invalid favorite product request",400,e);let o=null==(t=null==e?void 0:e.response)?void 0:t.status,i=null==e?void 0:e.code;return 404===o||"CACHE_MISS"===i?(f.Logger.warn("[toFavoriteProductApiError] Not found error mapped to FAVORITE_NOT_FOUND",{statusCode:o,sourceCode:i}),new ee(r.FAVORITE_NOT_FOUND,"Favorite product not found",404,e)):(f.Logger.error("[toFavoriteProductApiError] Error mapped to NETWORK_FAILURE",{statusCode:o,sourceCode:i}),new ee(r.NETWORK_FAILURE,"Network failure while processing favorite product request",o,e))}async function er(e){var t;try{let r=null!=(t=e.productid)?t:e.productId;f.Logger.info("[addfavoriteProductAPI] Starting add favorite product request",{productid:r,chainproductid:e.chainproductid}),await A(e);let d={productid:r,chainproductid:e.chainproductid,productname:e.productname};if("string"==typeof e.favouritename&&e.favouritename.trim().length>0){let t=e.favouritename.trim();d.favouritename=t,d.favoritename=t}"string"==typeof e.choices&&""!==e.choices.trim()&&(d.choices=e.choices),(Array.isArray(e.choices)&&e.choices.length>0||"string"==typeof e.choices&&e.choices.trim().length>0)&&(d.choices=Array.isArray(e.choices)?e.choices.map(e=>String(e).trim()).filter(e=>e.length>0).join(","):e.choices.split(",").map(e=>e.trim()).filter(e=>e.length>0).join(",")),f.Logger.info("[addfavoriteProductAPI] Effective request payload",{payload:d,choicesType:typeof d.choices});let s={url:o.API_URLS.FAVORITE_PRODUCTS,method:"POST",data:d},u=await (0,a.handleApiRequest)(s,n,j,300,i.API_MOCK.FAVORITE_PRODUCTS_ADD);return f.Logger.info("[addfavoriteProductAPI] Add favorite product request succeeded",{statusCode:u.statusCode}),u}catch(e){throw f.Logger.error("[addfavoriteProductAPI] Add favorite product request failed",{error:e}),et(e)}}async function eo(e){var t;try{f.Logger.info("[removefavoriteProductAPI] Starting remove favorite product request",{chainproductid:e.chainproductid}),await T(e.chainproductid);let{chainproductid:r}=e,d={url:o.API_URLS.favoriteProductRemove(r),method:"DELETE",data:{}};f.Logger.info("[removefavoriteProductAPI] Effective remove request payload",{method:d.method,url:d.url,hasHeaders:!!d.headers,dataKeys:Object.keys(null!=(t=d.data)?t:{})});let n=await (0,a.handleApiRequest)(d,s,Y,300,i.API_MOCK.FAVORITE_PRODUCTS_REMOVE);return f.Logger.info("[removefavoriteProductAPI] Remove favorite product request succeeded",{statusCode:n.statusCode}),n}catch(e){throw f.Logger.error("[removefavoriteProductAPI] Remove favorite product request failed",{error:e}),et(e)}}async function ei(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var t,r,d,n;let s;f.Logger.info("[getfavoriteProductsAPI] Starting get favorite products request",{page:e.page,limit:e.limit,sortBy:e.sortBy,sortOrder:e.sortOrder,hasSearchQuery:!!e.searchQuery}),await O(e);let l=(f.Logger.debug("[transformGetFavoriteProductsRequest] Transforming request",{request:e}),s={...e,page:null!=(t=e.page)?t:1,limit:null!=(r=e.limit)?r:10,sortBy:null!=(d=e.sortBy)?d:"addedAt",sortOrder:null!=(n=e.sortOrder)?n:"desc"},f.Logger.debug("[transformGetFavoriteProductsRequest] Request transformed",{page:s.page,limit:s.limit,sortBy:s.sortBy,sortOrder:s.sortOrder}),s),c=[`page=${encodeURIComponent(String(l.page))}`,`limit=${encodeURIComponent(String(l.limit))}`,`sortBy=${encodeURIComponent(String(l.sortBy))}`,`sortOrder=${encodeURIComponent(String(l.sortOrder))}`,...l.searchQuery?[`search=${encodeURIComponent(l.searchQuery)}`]:[]],m={url:`${o.API_URLS.FAVORITE_PRODUCTS}?${c.join("&")}`,method:"GET"},p=await (0,a.handleApiRequest)(m,u,W,300,i.API_MOCK.FAVORITE_PRODUCTS);return f.Logger.info("[getfavoriteProductsAPI] Get favorite products request succeeded",{total:p.total,page:p.page,limit:p.limit}),p}catch(e){throw f.Logger.error("[getfavoriteProductsAPI] Get favorite products request failed",{error:e}),et(e)}}async function ea(e){try{f.Logger.info("[getfavoriteProductByIdAPI] Starting get favorite product by id request",{productId:e.productId}),await S(e);let t=w(e),r={url:`${o.API_URLS.FAVORITE_PRODUCTS}/${t.productId}`,method:"GET"},d=await (0,a.handleApiRequest)(r,l,z,300,i.API_MOCK.FAVORITE_PRODUCTS);return f.Logger.info("[getfavoriteProductByIdAPI] Get favorite product by id request succeeded",{productId:d.productId}),d}catch(e){throw f.Logger.error("[getfavoriteProductByIdAPI] Get favorite product by id request failed",{error:e}),et(e)}}async function ed(e){try{f.Logger.info("[checkFavouriteAPI] Starting check favourite request",{productId:e.productId}),await S(e);let t=w(e),r={url:`${o.API_URLS.FAVORITE_PRODUCTS_CHECK}?productId=${t.productId}`,method:"GET"},d=await (0,a.handleApiRequest)(r,c,Q,300,i.API_MOCK.FAVORITE_PRODUCTS_CHECK);return f.Logger.info("[checkFavouriteAPI] Check favourite request succeeded",{productId:d.productId,isFavourite:d.isFavourite}),d}catch(e){throw f.Logger.error("[checkFavouriteAPI] Check favourite request failed",{error:e}),et(e)}}async function en(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{let t;f.Logger.info("[getFavouriteCountAPI] Starting get favourite count request"),await N(e),f.Logger.debug("[transformGetFavouriteCountRequest] Transforming request",{request:e}),t={...e},f.Logger.debug("[transformGetFavouriteCountRequest] Request transformed",t);let r={url:o.API_URLS.FAVORITE_PRODUCTS_COUNT,method:"GET"},d=await (0,a.handleApiRequest)(r,m,J,300,i.API_MOCK.FAVORITE_PRODUCTS_COUNT);return f.Logger.info("[getFavouriteCountAPI] Get favourite count request succeeded",{count:d.count}),d}catch(e){throw f.Logger.error("[getFavouriteCountAPI] Get favourite count request failed",{error:e}),et(e)}}async function es(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var t;let r;f.Logger.info("[syncFavouritesAPI] Starting sync favourites request",{hasLastSyncTime:!!e.lastSyncTime}),await F(e);let d=(f.Logger.debug("[transformSyncFavouritesRequest] Transforming request",{request:e}),r={lastSyncTime:null!=(t=e.lastSyncTime)?t:0},f.Logger.debug("[transformSyncFavouritesRequest] Request transformed",r),r),n={url:o.API_URLS.FAVORITE_PRODUCTS_SYNC,method:"POST",data:d},s=await (0,a.handleApiRequest)(n,p,Z,300,i.API_MOCK.FAVORITE_PRODUCTS_SYNC);return f.Logger.info("[syncFavouritesAPI] Sync favourites request succeeded",{success:s.success,syncedAt:s.syncedAt}),s}catch(e){throw f.Logger.error("[syncFavouritesAPI] Sync favourites request failed",{error:e}),et(e)}}async function eu(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{let t;f.Logger.info("[clearAllFavouritesAPI] Starting clear all favourites request"),await P(e),f.Logger.debug("[transformClearAllFavouritesRequest] Transforming request",{request:e}),t={...e},f.Logger.debug("[transformClearAllFavouritesRequest] Request transformed",t);let r={url:o.API_URLS.FAVORITE_PRODUCTS,method:"DELETE"},d=await (0,a.handleApiRequest)(r,g,X,300,i.API_MOCK.FAVORITE_PRODUCTS);return f.Logger.info("[clearAllFavouritesAPI] Clear all favourites request succeeded",{success:d.success}),d}catch(e){throw f.Logger.error("[clearAllFavouritesAPI] Clear all favourites request failed",{error:e}),et(e)}}let el={type:"number"};
1e.s(["FavoriteProductManager",0,class{async addFavourite(e){return await er(e)}async removeFavourite(e){return await eo(e)}async getFavourites(e){let t={};(null==e?void 0:e.page)!==void 0&&(t.page=e.page),(null==e?void 0:e.limit)!==void 0&&(t.limit=e.limit),(null==e?void 0:e.sortBy)!==void 0&&(t.sortBy=e.sortBy),(null==e?void 0:e.sortOrder)!==void 0&&(t.sortOrder=e.sortOrder),(null==e?void 0:e.searchQuery)!==void 0&&(t.searchQuery=e.searchQuery);let r=await ei(t);return{favorites:r.favorites.map(e=>{var t,r,o,i,a,d,n,s;let u=null!=(t=e.product.address)?t:{street:"",city:"",state:"",zipCode:""};return{id:null!=(i=null!=(o=null!=(r=e.id)?r:e.favoriteid)?o:e.favouriteid)?i:e.product.id,productid:e.productid,plu:e.plu,vendorid:e.vendorid,chainproductid:e.chainproductid,name:e.product.name,choices:e.choices,location:`${u.street}, ${u.city}, ${u.state}, ${u.zipCode}`.trim(),rating:e.product.rating,product:{id:e.product.id,name:e.product.name,image:null!=(a=e.product.image)?a:void 0,rating:null!=(d=e.product.rating)?d:0,address:u,phone:null!=(n=e.product.phone)?n:"",website:null!=(s=e.product.website)?s:"",amenities:e.product.amenities},addedAt:e.addedAt,favouritename:e.favouritename}}),total:r.total,page:r.page,limit:r.limit}}async isFavourite(e){return(await ed({productId:e})).isFavourite}async getFavouriteCount(){return(await en()).count}async getFavouriteById(e){var t,r,o,i,a,d;try{let n=await ea({productId:e}),s=null!=(t=n.product.address)?t:{street:"",city:"",state:"",zipCode:""};return{id:n.product.id,productId:h.NumberValidator.validate(n.productId,el)?Number.parseInt(String(n.productId),10):0,name:n.product.name,location:`${s.street}, ${s.city}, ${s.state}, ${s.zipCode}`.trim(),rating:n.product.rating,product:{id:n.product.id,name:n.product.name,image:null!=(r=n.product.image)?r:"",rating:null!=(o=n.product.rating)?o:0,address:s,phone:null!=(i=n.product.phone)?i:"",website:null!=(a=n.product.website)?a:"",amenities:null!=(d=n.product.amenities)?d:[]},addedAt:n.addedAt}}catch{return null}}async syncFavourites(){await es()}async clearAllFavourites(){await eu()}}],577978),e.i(910433),e.s(["DEFAULT_FALLBACK_PRODUCT_ID",0,0x162b8b2,"DEFAULT_LIMIT",0,6,"HOMEPAGE_QM_API_FAILURE_EVENTS",0,{FAVORITES_LOAD_FAILURE:"homepage_favorites_load_failure",REORDERS_LOAD_FAILURE:"homepage_reorders_load_failure",ADD_TO_CART_FAILURE:"homepage_add_to_cart_failure"},"HOMEPAGE_QM_LOCATIONS",0,{HOMEPAGE:"homepage",FAVORITES_SECTION:"homepage_favorites",REORDER_SECTION:"homepage_reorder"}],328609);var ec=e.i(709522);e.i(807458);var em=e.i(353320),ep=e.i(43223);let eg=e=>{let t=e.categorySlug.trim().toLowerCase(),r=e.subcategorySlug.trim().toLowerCase();return"featured"===t||"featured-products"===r},ef=e=>(0,ep.readNonEmptyString)(e.name)??"",ev=e=>{let t=(0,em.toSlug)((e=>{let t=Array.isArray(e.metadata)?e.metadata:[];if(t.length>0){let e=t[0],r=(0,ep.readNonEmptyString)(e.images);if(r)return r}let r=(0,ep.readNonEmptyString)(e.nutritiontype)??(0,ep.readNonEmptyString)(e.nutritionType);return r||ef(e)})(e)),r=(0,em.toSlug)(ef(e));return t&&r?{categorySlug:t,subcategorySlug:r}:null};var eh=e.i(540892),ey=e.i(267648);let eI=new Map;var e_=e.i(136972),eE=e.i(488056);let eC=e=>{let t=Number(e);return Number.isFinite(t)&&t>0?t:null},eR=e=>eC(e.chainproductid)??eC(e.chainProductId)??eC(e.plu)??eC(e.chainid)??eC(e.chainId)??eC(e.chain_product_id),eb=e=>"string"==typeof e.name?e.name:"",eA=e=>{for(let t of[e.name,e.title,e.productname,e.productName])if("string"==typeof t&&t.trim().length>0)return t;return""},eT=e=>"string"==typeof e&&e.trim().length>0?e:void 0,eO=e=>{if("number"==typeof e&&Number.isFinite(e)&&e>0)return String(e);if("string"==typeof e){let t=e.trim();return t.length>0?t:void 0}},eS=(e,t,r)=>(!t||(0,em.toSlug)((e=>{let t=Array.isArray(e.metadata)?e.metadata:[];if(t.length>0){let e=t[0];if("string"==typeof e.images)return e.images}return eb(e)})(e))===t)&&(!r||(0,em.toSlug)(eb(e))===r),ew=e=>{var t;let r,o,i=eA(e),a=(r=eC(e.id)??eC(e.productid)??eC(e.productId),o=eR(e),r??o),d=eR(e);if(!a)return null;let n=eO(e.menuid)??eO(e.menuId)??eO(e.menu_id)??(0,e_.resolveMenuIdFromMetadata)(e.metadata);return{productId:a,...d&&d!==a?{chainProductId:d}:{},...n?{menuId:n}:{},title:i||void 0,description:(e=>{for(let t of[e.description,(e=>{let t=e.metadata;if(!Array.isArray(t))return;let r=new Set(["description"]);for(let e of t){if(!e||"object"!=typeof e)continue;let t=eT(e.key)?.trim().toLowerCase();if(t&&r.has(t))for(let t of[e.value,e.images,e.text,e.description,e.content]){let e=eT(t);if(e)return e}}})(e)])if("string"==typeof t&&t.trim().length>0)return t})(e),image:(0,eh.resolveProductImageFromRecord)(e),calories:"number"==typeof(t=e.basecalories)&&Number.isFinite(t)?String(t):"string"==typeof t&&t.trim().length>0?t:void 0,cost:"string"==typeof e.cost||"number"==typeof e.cost?e.cost:void 0}},eN=(e,t)=>{if(!e||!t)return!1;if(e===t||e.includes(t)||t.includes(e))return!0;
1let r=e.split("-").filter(Boolean),o=t.split("-").filter(Boolean);if(0===r.length||0===o.length)return!1;let i=0;for(let e of r)o.includes(e)&&(i+=1);return i>=Math.min(2,Math.min(r.length,o.length))},eF=e=>e&&"object"==typeof e?e:null,eP=e=>!!(e&&"number"==typeof e.chainProductId&&e.chainProductId>0),eL=(e,t,r)=>{let{exactMatch:o,looseMatches:i}=((e,t)=>{let r=[],o=[];for(let i of e){let e=eF(i);if(!e)continue;let a=(0,em.toSlug)(eA(e));if(a===t){let t=ew(e);t&&r.push(t);continue}eN(a,t)&&o.push({slug:a,record:e})}return{exactMatch:0===r.length?null:r.find(e=>eP(e))??r[0],looseMatches:o}})(Array.isArray(e.products)?e.products:[],t);return o||(r?(e=>{if(0===e.length)return null;let t=[...e].sort((e,t)=>e.slug.length-t.slug.length),r=null;for(let e of t){let t=ew(e.record);if(t){if(eP(t))return t;r??=t}}return r})(i):null)};async function eD(e){let t=e.restaurantId.trim(),r=eT(e.deliveryMode)?.trim().toLowerCase();if(!t||!e.productSlug.trim())return null;try{let o=await (0,ey.getCachedMenuCategoryList)({restaurantId:t,...r?{deliveryMode:r}:{},...void 0!==e.isNationalMenu?{isNationalMenu:e.isNationalMenu}:{}}),i=o?.categories;if(!Array.isArray(i))return null;let a=(0,em.toSlug)(e.productSlug),d=(0,em.toSlug)(e.categorySlug),n=(0,em.toSlug)(e.subcategorySlug),s=!1!==e.allowLooseMatch;for(let e of i){if(!e||"object"!=typeof e||!eS(e,d,n))continue;let t=eL(e,a,s);if(t)return t}return null}catch(o){return f.Logger.error("[productDetailsService] lookupProductBySlug failed",{restaurantId:t,productSlug:e.productSlug,categorySlug:e.categorySlug,subcategorySlug:e.subcategorySlug,deliveryMode:r,isNationalMenu:e.isNationalMenu,error:o}),null}}async function eM(e){let t=e.restaurantId.trim(),r=eT(e.deliveryMode)?.trim().toLowerCase();if(!t||!Number.isFinite(e.productId)||e.productId<=0)return null;try{let o=await (0,ey.getCachedMenuCategoryList)({restaurantId:t,...r?{deliveryMode:r}:{},...void 0!==e.isNationalMenu?{isNationalMenu:e.isNationalMenu}:{}});return((e,t)=>{if(!Array.isArray(e)||!Number.isFinite(t)||t<=0)return null;let r=null;for(let o of e){if(!o||"object"!=typeof o||!(0,ep.findProductRecordInCategoryByProductId)(o,t))continue;let e=ev(o);if(e){if(!eg(e))return e;r=r??e}}return r})(o?.categories,e.productId)}catch(o){return f.Logger.error("[productDetailsService] lookupProductCategoryRouteById failed",{restaurantId:t,productId:e.productId,deliveryMode:r,isNationalMenu:e.isNationalMenu,error:o}),null}}async function eU(e){let t,r,o,i=(t=e.storeNumber,(0,eE.stripOuterQuotes)(`${t}`.trim()));if(!i)throw Error("storeNumber is required");if(!Number.isFinite(e.productId)||e.productId<=0)throw Error("productId must be a positive number");f.Logger.info("[productDetailsService] fetchProductModifiers request",{productId:e.productId,storeNumber:i});let a=async()=>{try{let t=await (0,ec.getRawProductModifiersByStoreAPI)({productId:e.productId,storeNumber:i,...e.deliveryMode&&{deliveryMode:e.deliveryMode},...e.headers&&{headers:e.headers}});return f.Logger.info("[productDetailsService] fetchProductModifiers success",{productId:e.productId,storeNumber:i,optionGroupsCount:t.optiongroups?.length??0}),t}catch(t){throw f.Logger.error("[productDetailsService] fetchProductModifiers failed",{productId:e.productId,storeNumber:i,error:t}),t}};if(e.headers)return a();var d=(r=e.productId,o=e.deliveryMode,`${r}::${i}::${o??""}`);let n=eI.get(d);if(n)return n;let s=a().then(e=>(eI.delete(d),e)).catch(e=>{throw eI.delete(d),e});return eI.set(d,s),s}e.s(["fetchProductModifiers",0,eU,"lookupProductBySlug",0,eD,"lookupProductCategoryRouteById",0,eM],848037),e.s([],863177)},157099,e=>{"use strict";e.s(["MENU_QM_EVENT_NAMES",0,{BANNER_ORDER_TYPE_OPEN:"menu_banner_order_type_open",BANNER_HIDE:"menu_banner_hide",SEARCH_ICON_CLICK:"menu_search_icon_click",SEGMENT_CHANGE:"menu_segment_change",GROUP_ORDER_TOGGLE:"menu_group_order_toggle",CATEGORY_CLICK:"menu_category_click",SUBCATEGORY_FILTER_CLICK:"menu_subcategory_filter_click",PRODUCT_CLICK:"menu_product_click",NUTRITION_INFO_CLICK:"menu_nutrition_info_click",ALLERGY_STATEMENT_CLICK:"menu_allergy_statement_click",NUTRITION_DRAWER_OPEN:"menu_nutrition_drawer_open",NUTRITION_DRAWER_CLOSE:"menu_nutrition_drawer_close",NUTRITION_TAG_TOGGLE:"menu_nutrition_tag_toggle",NUTRITION_APPLY:"menu_nutrition_apply",NUTRITION_CANCEL:"menu_nutrition_cancel",SEARCH_SUBMIT:"menu_search_submit",SEARCH_CLEAR:"menu_search_clear",SEARCH_RECOMMENDATION_SELECT:"menu_search_recommendation_select",SEARCH_TOP_CATEGORY_SELECT:"menu_search_top_category_select",SEARCH_RECENT_CLEAR_ALL:"menu_search_recent_clear_all",SEARCH_RECENT_REMOVE:"menu_search_recent_remove",SEARCH_NO_SUGGESTIONS:"menu_search_no_suggestions",SEARCH_RESULTS_BACK:"menu_search_results_back",EXPLORE_MENU_CLICK:"menu_explore_menu_click",ORDER_TYPE_SELECT:"order_type_select",ORDER_TYPE_CONTINUE:"order_type_continue",ORDER_TYPE_CANCEL:"order_type_cancel",ORDER_TYPE_CLOSE:"order_type_close",ORDER_TYPE_SET_MODE_SUCCESS:"order_type_set_mode_success",ORDER_TYPE_SET_MODE_FAILURE:"order_type_set_mode_failure",ORDER_TIME_SELECTION_CHANGE:"order_time_selection_change",ORDER_TIME_SET_SUCCESS:"order_time_set_success",ORDER_TIME_SET_FAILURE:"order_time_set_failure",RECENT_ORDER_PROCESS:"recent_order_process",RECENT_ORDER_PROCESS_SUCCESS:"recent_order_process_success",RECENT_ORDER_PROCESS_FAILURE:"recent_order_process_failure",ORDER_TYPE_SHARE_LOCATION_OPEN:"order_type_share_location_open",ORDER_TYPE_DRAWER_CLOSE:"order_type_drawer_close",MENU_FETCH_FAILURE:"menu_fetch_failure",MENU_PRODUCTS_FETCH_FAILURE:"menu_products_fetch_failure",SEARCH_FETCH_FAILURE:"menu_search_fetch_failure",CMS_FETCH_FAILURE:"menu_cms_fetch_failure"},"MENU_QM_LOCATIONS",0,{MENU_PAGE:"menu_page",MENU_HEADER:"menu_header",MENU_CONTAINER:"menu_container",MENU_BANNER:"menu_banner",MENU_SEARCH:"menu_search",MENU_SEARCH_RESULTS:"menu_search_results",ORDER_TYPE_DRAWER:"order_type_drawer",NUTRITION_DRAWER:"nutrition_drawer",MENU_PRODUCT_DETAILS_PAGE:"menu_product_details_page"}])},181331,e=>{"use strict";let t=async(e,t,r)=>{let o,i;for(let a of t)try{o=await e({productId:a,storeNumber:r});break}catch(e){i=e}return{modifiers:o,lastError:i}};e.s(["extractOptionGroups",0,e=>{let t=new Set,r=(e,o)=>{if(o>8||!e)return[];let i=(e=>{if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return e}})(e);if(!i||"object"!=typeof i||t.has(i))return[];if(t.add(i),Array.isArray(i)){for(let e of i){let t=r(e,o+1);if(t.length>0)return t}return[]}let a=i.optiongroups??i.optionGroups??i.modifierGroups;if(Array.isArray(a))return a;for(let e of Object.values(i)){let t=r(e,o+1);if(t.length>0)return t}return[]};return r(e,0)}
1,"fetchModifiersForCandidates",0,t])},904843,e=>{"use strict";let t=/^(\d{4})(\d{2})(\d{2})(?:\s+(\d{2}):(\d{2})(?::(\d{2}))?)?$/,r=e=>{let r=(e=>{let r=t.exec(e.trim());if(!r)return null;let o={year:Number(r[1]),month:Number(r[2]),day:Number(r[3]),hours:Number(r[4]??"0"),minutes:Number(r[5]??"0"),seconds:Number(r[6]??"0")};return[o.year,o.month,o.day,o.hours,o.minutes,o.seconds].some(e=>Number.isNaN(e))?null:o})(e);return r?new Date(r.year,r.month-1,r.day,r.hours,r.minutes,r.seconds):null};e.s(["parseCompactTimestampToDate",0,r,"parseTimestampToMillis",0,e=>{let t=e.trim();if(""===t)return 0;let o=r(t);if(o){let e=o.getTime();return Number.isFinite(e)?e:0}let i=Date.parse(t);return Number.isFinite(i)?i:0},"sortMostRecentFirstBy",0,function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"desc";return e.map((e,t)=>({item:e,index:t})).sort((e,o)=>{let i=t(o.item)-t(e.item);return 0===i?"asc"===r?e.index-o.index:o.index-e.index:i}).map(e=>e.item)}])},215208,661953,830114,703831,e=>{"use strict";var t=e.i(577978),r=e.i(456625),o=e.i(503555),i=e.i(31036),a=e.i(661687),d=e.i(340290),n=e.i(859808);e.i(732832);var s=e.i(760922),u=e.i(99292),l=e.i(328609);e.i(863177);var c=e.i(848037),m=e.i(910433),p=e.i(157099),g=e.i(181331),f=e.i(904843),v=e.i(597585);let h=new Map,y=new Map,I=e=>{if(null==e||""===e)return null;let t="number"==typeof e?e:Number(e);return Number.isFinite(t)&&t>0?t:(d.Logger.warn("[OrderHistoryCache] Ignoring invalid order_history_cache_ttl_ms from app config.",{value:e}),null)},_=I(v.BUNDLED_APP_CONFIG.order_history_cache_ttl_ms)??3e5,E=()=>{try{let e=globalThis.window?.sessionStorage?.getItem("uwa:orders:last-mutation-at");if(!e)return 0;let t=Number(e);return Number.isFinite(t)&&t>0?t:0}catch{return 0}};async function C(e,t,r,o){let i=`${e}::${t}`,a=h.get(i);if(a){if(a.token===r&&Date.now()-a.storedAt<_&&E()<=a.storedAt)return a.value;h.delete(i)}let d=Date.now(),n=y.get(i);if(n&&n.token===r&&E()<=n.startedAt)return n.promise;let s=o().then(e=>(y.get(i)?.promise===s&&y.delete(i),e.allCards.length>0&&h.set(i,{value:e,storedAt:d,token:r}),e),e=>{throw y.get(i)?.promise===s&&y.delete(i),e});return y.set(i,{promise:s,token:r,startedAt:d}),s}e.s(["ORDERS_MUTATION_EVENT_NAME",0,"uwa:orders:mutated","getCachedOrderHistory",0,C,"invalidateOrderHistoryCache",0,()=>{h.clear(),y.clear()},"readOrdersMutationTimestamp",0,E,"setOrderHistoryCacheTtlFromConfig",0,e=>{let t=I(e?.order_history_cache_ttl_ms);null!==t&&t!==_&&(d.Logger.debug("[OrderHistoryCache] Order history cache TTL synced from Firebase",{previous:_,next:t}),_=t)}],661953);let R=e=>{if("string"!=typeof e)return;let t=e.trim();return t.length>0?t:void 0},b=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,r=e;for(let e=0;e<t&&"string"==typeof r;e+=1){let e=r.trim();if(!e)return"";if(!(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}")||e.startsWith('"[')&&e.endsWith(']"')||e.startsWith('"{')&&e.endsWith('}"')))return e;try{r=JSON.parse(e)}catch{return e}}return r},A=e=>{let t=R(e);return t?t:e&&"object"==typeof e?R(e.name)??R(e.displayName)??R(e.label)??R(e.title)??R(e.modifierName)??R(e.optionName):void 0},T=e=>{let t=e.trim();return!!t&&(!!(/^\d+$/.test(t)||t.includes(":")||t.includes("->"))||t.includes("-MG")||t.includes("###PRNT")||t.includes("-B:")||/^\d+-\d+/.test(t)||/^\d+:\d+-\d+/.test(t))},O=e=>{let t=e.trim();if(!t)return;let r=t.lastIndexOf("->"),o=r>=0?t.slice(r+2).trim():t,i=o.lastIndexOf(":");return(i>=0?o.slice(i+1).trim():o)||void 0},S=(e,t)=>{let r=w(e);if("string"==typeof r){let e=r.trim();return e?e.includes(",")?void e.split(",").map(e=>e.trim()).filter(Boolean).forEach(e=>S(e,t)):void e.split("->").map(e=>e.trim()).filter(Boolean).forEach(e=>{let r=e.split(":").map(e=>e.trim()).filter(Boolean);if(r.length>0){let e=r.at(-1),o=e?O(e):void 0;o&&T(o)&&t.push(o),r.forEach(e=>{let r=O(e);r&&T(r)&&t.push(r)})}let o=O(e);o&&T(o)&&t.push(o)}):void 0}Array.isArray(r)?r.forEach(e=>S(e,t)):r&&"object"==typeof r&&Object.values(r).forEach(e=>{S(e,t)})},w=e=>b(e,4),N=(e,t)=>{let r=w(e);if("string"==typeof r){let e=r.trim();return e?e.includes(",")?void e.split(",").map(e=>
1e.trim()).filter(Boolean).forEach(e=>N(e,t)):void(T(e)||t.push(e)):void 0}if(Array.isArray(r))return void r.forEach(e=>N(e,t));if(r&&"object"==typeof r){let e=A(r);if(e&&!T(e))return void t.push(e);Object.values(r).forEach(e=>{N(e,t)})}},F=(e,t)=>{let r=b(e,4);if("string"==typeof r){let e=r.trim();return e?e.includes(",")?void e.split(",").map(e=>e.trim()).filter(Boolean).forEach(e=>F(e,t)):void(T(e)||t.push(e)):void 0}if(Array.isArray(r))return void r.forEach(e=>F(e,t));if(r&&"object"==typeof r){let e=r.selectedModifiers??r.product_choices??r.options??r.items??r.values;void 0!==e&&F(e,t);let o=A(r);o&&!T(o)&&t.push(o),Object.values(r).forEach(e=>{F(e,t)})}},P=e=>{let t=new Set;return e.filter(e=>"string"==typeof e&&e.trim().length>0).map(e=>e.trim()).filter(e=>{let r=e.toLowerCase();return!t.has(r)&&(t.add(r),!0)})},L=e=>{if("string"!=typeof e)return[];let t=e.trim();return t?P(t.split(",").map(e=>e.trim()).filter(Boolean)):[]},D=e=>{let t="string"==typeof e?e.trim():"";if(!t)return[];try{let e=JSON.parse(t),r=e.product_choices??e.selectedModifiers,o="string"==typeof r?JSON.parse(r):r;if(!Array.isArray(o))return[];return P(o.map(e=>A(e)))}catch{return[]}},M=e=>{let t=[];return N(e,t),P(t)},U=e=>{let t=[];return F(e,t),P(t)},G=e=>{let t=[];return S(e,t),P(t)};e.s(["capCustomizationNames",0,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,r=Number.isFinite(t)?Math.max(1,Math.trunc(t)):3;if(e.length<=r)return e;let o=e.slice(0,r),i=o.length-1;return o[i]=`${o[i]} ...`,o},"dedupeCustomizationNames",0,e=>P(e),"extractChoiceIdCandidatesFromChoices",0,G,"extractCustomizationNamesFromChoices",0,M,"extractCustomizationNamesFromCustomdata",0,D,"extractCustomizationNamesFromDetailsText",0,e=>L(e),"extractCustomizationNamesFromOptions",0,U,"toSelectedModifiersQueryValue",0,(e,t)=>{let r=D(e),o=r.length>0?r:L(t);if(0!==o.length)return JSON.stringify(o)}],830114);let q="uwa:delivery:active-dispatch-address",V=e=>"string"==typeof e&&e.trim().length>0?e:void 0;function k(){try{let e=globalThis.window?.localStorage.getItem(q);if(!e)return null;let t=JSON.parse(e),r=V(t.streetaddress);if(!r)return null;return{..."number"==typeof t.id&&Number.isFinite(t.id)?{id:t.id}:{},building:V(t.building),streetaddress:r,city:V(t.city),state:V(t.state),zipcode:V(t.zipcode),phonenumber:V(t.phonenumber),specialinstructions:V(t.specialinstructions),isdefault:!0===t.isdefault,storeNumber:V(t.storeNumber)}}catch{return null}}e.s(["clearActiveDeliveryDispatchAddress",0,function(){try{globalThis.window?.localStorage.removeItem(q)}catch{}},"readActiveDeliveryDispatchAddress",0,k,"saveActiveDeliveryDispatchAddress",0,function(e){if(e.streetaddress?.trim())try{globalThis.window?.localStorage.setItem(q,JSON.stringify(e))}catch{}}],703831);var $=e.i(735888);let B=new t.FavoriteProductManager,H=new r.OrderAPI,K=new o.CartAPI,x=new Set,j=0,Y=null,W=()=>{let e=String(Date.now());try{globalThis.window?.sessionStorage?.setItem("uwa:favorites:last-mutation-at",e)}catch{}try{globalThis.window?.dispatchEvent(new CustomEvent("uwa:favorites:mutated",{detail:{occurredAt:e}}))}catch{}},z=e=>"string"==typeof e&&"olo"===e.trim().toLowerCase(),Q=e=>{if("string"!=typeof e)return!1;let t=e.trim();return!!t&&"[]"!==t&&"{}"!==t},J=(e,t)=>e===m.StatusCode.API_SUCCESS||e===m.StatusCode.HTTP_OK||"success"===String(t??"").toLowerCase(),Z=e=>{if("number"==typeof e&&Number.isFinite(e)&&e>0)return e;if("string"==typeof e&&""!==e.trim()){let t=Number(e);if(Number.isFinite(t)&&t>0)return t}},X=e=>{if("number"==typeof e&&Number.isFinite(e)&&e>0)return String(e);if("string"==typeof e){let t=e.trim();return t.length>0?t:void 0}},ee=e=>{let t=X(e);return t&&/^\d+$/.test(t)?t:void 0},et=e=>ee(e)??X(e),er=e=>"string"==typeof e?e.trim():"",eo=e=>({chainId:Z(e.chainproductid)??Z(e.chainProductId),restaurantProductId:Z(e.productid)??Z(e.productId),pluProductId:Z(e.plu),nestedProductId:Z(e.product?.id)??Z(e.product?.productid)??Z(e.product?.productId)}),ei=e=>{let t=new Set;e.forEach(e=>{let r=Z(e.chainproductid),o=Z(e.productid);r&&t.add(r),o&&t.add(o)}),x=t,j=Date.now()},ea=async(e,t)=>{let r=t?.limit??100,o=t?.maxPages??10,i=1;for(;i<=o;){let t=await B.getFavourites({page:i,limit:r}),o=(0,s.extractFavoritesFromResponse)(t);for(let t of o)if(!0===e(t))return;if(o.length<r)break;
1i+=1}},ed=async(e,t,r)=>{if(!Array.isArray(e)||0===e.length||0===t.length)return t;let o=new Map,i=async(e,t)=>{let r=`${e}:${t.join("|")}`,i=o.get(r);if(i)return i;let a=(async()=>{let r,o,i,{modifiers:a}=await (0,g.fetchModifiersForCandidates)(c.fetchProductModifiers,t,e);return void 0===a?{}:(r={},o=(e,t)=>{let o="string"==typeof e?e.trim():"number"==typeof e?String(e):"",i="string"!=typeof t?"":t.trim();if(!o||!i)return;let a=new Set([o]);o.endsWith("-")&&a.add(o.slice(0,-1)),a.add(o.replace(/-#O\d+#-$/,"-#O0#")),a.add(o.replace(/-#O\d+#$/,"-#O0#")),a.forEach(e=>{e&&(r[e]=i)})},(i=e=>{e.forEach(e=>{(Array.isArray(e.options)?e.options:[]).forEach(e=>{o(e.id,e.name),o(e.displayid,e.name);let t=(0,g.extractOptionGroups)(e.modifiers);t.length>0&&i(t),(Array.isArray(e.modifiers)?e.modifiers:[]).forEach(e=>{(Array.isArray(e.options)?e.options:[]).forEach(e=>{o(e.id,e.name),o(e.displayid,e.name)})})})})})((0,g.extractOptionGroups)(a)),r)})();return o.set(r,a),a},a=async(t,o)=>{var a;let n,s=(e=>{if(e&&"object"==typeof e)return e})(e[o]),u=(e=>{if(!e)return;let t=e.product;if(t&&"object"==typeof t)return t})(s),l=(e=>{if(!e)return"";let t=e.product&&"object"==typeof e.product?e.product:void 0;return er(e.favouritename)||er(e.productname)||er(e.name)||er(t?.name)})(s),c=s?.choices??u?.choices,m=s?.options??u?.options??t.options,p=Array.from(new Set([...M(c),...U(m)]));if(0===p.length&&(void 0!==c||void 0!==m)){let e=X(s?.vendorid)??X(u?.vendorid)??X(u?.vendorId)??X(t.vendorid)??X(r),o=[Z(s?.productid??u?.productid??u?.id??t.productid),Z(s?.chainproductid??u?.chainproductid??t.chainproductid)].filter(e=>"number"==typeof e&&e>0);if(e&&o.length>0)try{let t,r=await i(e,o);p=(t=Array.from(new Set([...M(c),...U(m)]))).length>0?t:Array.from(new Set(Array.from(new Set([...G(c),...G(m)])).map(e=>r[e]).filter(e=>"string"==typeof e&&e.trim().length>0)))}catch(r){d.Logger.warn("[loadFavoritesCards] Failed to convert choices IDs to display names",{productid:t.productid,chainproductid:t.chainproductid,storeNumber:e,error:r})}}return 0===p.length?t:{...t,details:(a=p,n=l.trim().toLowerCase(),a.filter(e=>{let t=e.trim();return!!t&&(!n||t.toLowerCase()!==n)}).join(", "))}};return await Promise.all(t.map((e,t)=>a(e,t)))},en=e=>{if("string"==typeof e&&""!==e.trim())return e.trim();if(e instanceof Error&&""!==e.message.trim())return e.message.trim();if("object"==typeof e&&null!==e){let t=e.message;return"string"==typeof t&&""!==t.trim()?t.trim():en(e.cause)}},es=e=>{let t="object"==typeof e&&null!==e?e:{},r=t.statusCode,o=t.status,i=t.invalidData,a=en(e)??"Failed to add item to cart";return{..."number"==typeof r&&Number.isFinite(r)?{statusCode:r}:{},..."string"==typeof o&&o.trim().length>0?{status:o.trim()}:{},...a?{message:a}:{},...Array.isArray(i)?{invalidData:i}:{}}},eu=e=>(0,f.sortMostRecentFirstBy)(e,e=>(e=>{if("object"!=typeof e||null===e)return 0;let t=e.updatedAt??e.updateddate??e.dateupdated??e.modifiedAt??e.modifieddate??e.createdAt??e.createddate;return"string"!=typeof t?0:(0,f.parseTimestampToMillis)(t)})(e)),el=["completed"],ec=e=>{if("object"!=typeof e||null===e)return!1;let t="object"==typeof e.product&&null!==e.product?e.product:void 0;return z(e.vendor)||z(e.source)||z(e.provider)||z(t?.vendor)||z(t?.source)||z(t?.provider)},em=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=Date.now()-j<12e4;if(e||!t||!(x.size>0)){if(Y)return void await Y;Y=(async()=>{try{let e=await B.getFavourites({page:1,limit:100}),t=(0,s.extractFavoritesFromResponse)(e),r=new Set;t.forEach(e=>{let t=eo(e);[t.chainId,t.restaurantProductId,t.pluProductId,t.nestedProductId].forEach(e=>{e&&r.add(e)})}),x=r,j=Date.now(),d.Logger.debug("[hydrateFavoriteIdCache] Favorite IDs cache hydrated",{cacheSize:x.size})}catch(e){d.Logger.error("[hydrateFavoriteIdCache] Failed to hydrate favorite IDs cache",{error:e})}finally{Y=null}})(),await Y}},ep=()=>null,eg=e=>{},ef=()=>{globalThis.window.localStorage.removeItem("cartId"),globalThis.window.sessionStorage.removeItem("cartId")},ev=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.DEFAULT_LIMIT,t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0;if(!t)return d.Logger.debug("[loadFavoritesCards] No token provided; skipping favorites fetch"),{allCards:[],visibleCards:[]};try{d.Logger.debug("[loadFavoritesCards] Starting to fetch favorite products");let t=await B.getFavourites({page:1,limit:e}),o=eu((0,s.extractFavoritesFromResponse)(t)).filter(e=>!ec(e)),i=await ed(o,(0,s.transformFavoritesToCards)(o),r);if(ei(i),i.length>0)return{allCards:i,visibleCards:i.slice(0,e)};
1return d.Logger.warn("[loadFavoritesCards] Empty API favorites, returning empty result"),{allCards:[],visibleCards:[]}}catch(u){let o=t?.trim(),n="function"==typeof i.Http?.request;if(o&&n)try{let t=o.toLowerCase().startsWith("bearer ")?o:`Bearer ${o}`,n=`${a.API_URLS.FAVORITE_PRODUCTS}?page=1&limit=${e}`;d.Logger.warn("[loadFavoritesCards] Favorite manager request failed. Retrying with explicit Authorization header.",{favoriteProductsUrl:n,hasToken:!0});let u=await i.Http.request({method:"GET",url:n,headers:{Authorization:t}}),l=eu((0,s.extractFavoritesFromResponse)(u?.data??u)).filter(e=>!ec(e)),c=await ed(l,(0,s.transformFavoritesToCards)(l),r);return ei(c),{allCards:c,visibleCards:c.slice(0,e)}}catch(e){d.Logger.error("[loadFavoritesCards] Retry with explicit Authorization header failed",e)}return d.Logger.error("[loadFavoritesCards] Failed to fetch favorites, returning empty result",u),{allCards:[],visibleCards:[]}}},eh=async(e,t)=>{(0,u.trackMenuQMEvent)({eventName:p.MENU_QM_EVENT_NAMES.RECENT_ORDER_PROCESS,location:p.MENU_QM_LOCATIONS.MENU_CONTAINER,metadata:{action:"fetch_recent_orders",limit:e,isAuthenticated:!!t}});try{d.Logger.debug("[getOrderHistory] Starting to fetch recent orders");let r=await H.getOrderHistory({page:1,limit:e,token:t}),o=(e=>{if("object"!=typeof e||null===e)return[];let t=e.orders;if(Array.isArray(t))return t;let r=e.data;if(Array.isArray(r))return r;if("object"==typeof r&&null!==r){let e=r.orders;if(Array.isArray(e))return e}return[]})(r).filter(e=>(e=>{if("object"!=typeof e||null===e)return!1;let t=[e.status,e.orderstatus,e.orderStatus,e.order_status,e.state,e.orderstate,e.orderState].map(e=>(e=>{if("string"==typeof e){let t=e.trim().toLowerCase();return t.length>0?t:void 0}if("number"==typeof e)return String(e)})(e)).filter(e=>!!e);return 0!==t.length&&t.some(e=>el.some(t=>e.includes(t)))})(e)).filter(e=>!("object"==typeof e&&null!==e&&z(e.vendor))),i=(0,f.sortMostRecentFirstBy)(o,e=>(e=>{if("object"!=typeof e||null===e)return 0;let t=e.timeplaced??e.createdAt??e.createddate;return"string"!=typeof t?0:(0,f.parseTimestampToMillis)(t)})(e));if(i.length>0){let t=(0,s.transformOrdersToReorderCards)(i);return(0,u.trackMenuQMEvent)({eventName:p.MENU_QM_EVENT_NAMES.RECENT_ORDER_PROCESS_SUCCESS,location:p.MENU_QM_LOCATIONS.MENU_CONTAINER,metadata:{action:"fetch_recent_orders",count:t.length,limit:e}}),{allCards:t,visibleCards:t.slice(0,e)}}return d.Logger.warn("[getOrderHistory] Empty API order history, returning empty result"),(0,u.trackMenuQMEvent)({eventName:p.MENU_QM_EVENT_NAMES.RECENT_ORDER_PROCESS_SUCCESS,location:p.MENU_QM_LOCATIONS.MENU_CONTAINER,metadata:{action:"fetch_recent_orders",count:0,limit:e}}),{allCards:[],visibleCards:[]}}catch(r){let t=r instanceof Error?r.message:"unknown_error";return(0,u.trackMenuQMAPIFailure)({eventName:p.MENU_QM_EVENT_NAMES.RECENT_ORDER_PROCESS_FAILURE,location:p.MENU_QM_LOCATIONS.MENU_CONTAINER,apiName:"OrderAPI.getOrderHistory",errorMessage:t,metadata:{action:"fetch_recent_orders",limit:e}}),d.Logger.error("[getOrderHistory] Failed to fetch orders, returning empty result",r),{allCards:[],visibleCards:[]}}},ey=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.DEFAULT_LIMIT,t=arguments.length>1?arguments[1]:void 0;return t?C(1,e,t,()=>eh(e,t)):(d.Logger.debug("[getOrderHistory] No token provided; skipping order history fetch"),{allCards:[],visibleCards:[]})},eI=async(e,t)=>{let r=k();if(!r)return void d.Logger.warn("[addCardToCart] Delivery basket created with no stored address to dispatch",{cartId:e});let{storeNumber:o,...i}=r,a=t?.trim()??"",n=a.length>0?a:o;try{let t=await H.dispatchDeliveryAddress({...i,orderId:e,...n?{storeNumber:n}:{}}),r=2e3===t.statusCode||200===t.statusCode;d.Logger[r?"info":"error"](`[addCardToCart] Delivery address dispatch to new basket ${r?"succeeded":"failed"}`,{cartId:e,storeNumber:n,statusCode:t.statusCode})}catch(t){d.Logger.error("[addCardToCart] Failed to dispatch delivery address to new basket",{cartId:e,error:t})}},e_=async(e,t,r,o,i)=>{d.Logger.debug("[addCardToCart] Creating new cart with:",{storeId:e,productid:t,quantity:r,hasToken:!!o});let a=await K.createCart({vendorId:e??"",productid:t,quantity:r});if(a?.cartId)return eg(a.cartId),d.Logger.info("[addCardToCart] Cart created successfully",{cartId:a.cartId}),i?.trim().toLowerCase()==="delivery"&&await eI(a.cartId,e),{success:!0,cartId:a.cartId};return d.Logger.error("[addCardToCart] Failed to create cart",a),{success:!1,error:a?.message??"Failed to create cart"}},eE=new Map,eC=async(e,t,r,o,i)=>{let a,d=(a=e?.trim())&&a.length>0?a:"default",n=eE.get(d);if(n)return n;let s=e_(e,t,r,o,i).then(e=>e).finally(()=>
1{eE.delete(d)});return eE.set(d,s),s},eR=async e=>{let t,{cartId:r,productid:o,quantity:i,card:a,_token:s,vendorId:u,deliveryMode:l}=e,c=et(u),m=e=>{if(!e?.trim())return!1;try{let t=JSON.parse(e).product_choices;if(Array.isArray(t))return t.length>0;if("string"==typeof t){let e=JSON.parse(t);return Array.isArray(e)&&e.length>0}return!1}catch{return!1}};d.Logger.debug("[addCardToCart] Adding to existing cart:",{cartId:r,productid:o,quantity:i});let p=((e,t)=>{if(Q(e))return e.trim();let r=G(t).map(e=>e.trim()).filter(Boolean);if(r.length>0)return r.join(",")})(a?.options,a?.choices),g=!Q(p)&&!m(a?.customdata),f=Z(a?.price),v={cartId:r,productid:o,quantity:i,...g&&void 0!==f&&{price:f},recipient:a?.recipient,menuid:a?.menuid,...p?{options:p}:{},choices:a?.choices,customdata:a?.customdata,...c?{storeId:c}:{},...l&&{deliveryMode:l}};try{t=await K.addItem(v)}catch(e){if(e instanceof n.CartNotFoundError)throw e;return{success:!1,error:en(e)??"Failed to add item to cart",...es(e)}}let h=Array.isArray(t?.items)&&t.items.length>0,y="number"==typeof t?.subtotal||"number"==typeof t?.total||"number"==typeof t?.tax,I=t?.cartId??r;return I&&(t?.cartId||h||y)?(d.Logger.info("[addCardToCart] Item added to cart",{cartId:I,usedCartIdFallback:!t?.cartId}),{success:!0,cartId:I,items:((e,t,r,o)=>{if(!Array.isArray(e)||!r?.trim())return e;let i="string"==typeof o?o.trim():"",a=e.map((e,t)=>({item:e,index:t})).filter(e=>{let{item:r}=e,o=Number(r.productId)===t,i=m(r.customdata);return o&&!i}).map(e=>{let{index:t}=e;return t});if(0===a.length)return e;let d=i?a.find(t=>(e[t].options??"").trim()===i):void 0,n=a.at(-1);if(void 0===n)return e;let s=d??n;return e.map((e,t)=>t!==s?e:{...e,customdata:r,options:e.options??o})})(t.items,o,a?.customdata,p),summary:{subtotal:t.subtotal??0,tax:t.tax??0,taxes:t.taxes??[],totalFees:t.totalFees??0,total:t.total??0,tip:t.tip??0,discount:t.discount??0},...t.earliestReadyTime&&{earliestReadyTime:t.earliestReadyTime}}):{success:!1,error:en(t)??"Failed to add item to cart",...es(t)}},eb=async function(e,t){let r,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,u=arguments.length>5?arguments[5]:void 0,c=(r=(0,s.toNumericProductId)(e.productid,0))>0?r:null!=e.chainproductid&&e.chainproductid>0?e.chainproductid:l.DEFAULT_FALLBACK_PRODUCT_ID,m=t??ep(),p=ee(a)??X(a)??ee(e.vendorid)??X(e.vendorid)??void 0;a&&!ee(a)&&X(a)&&d.Logger.info("[addCardToCart] Using non-numeric preferred storeId fallback",{storeId:a,fallbackCardVendorId:e.vendorid,resolvedVendorId:p,productid:c});let g=(0,$.resolveCartWriteMenuId)({storeId:p,deliveryMode:u,fallbackMenuId:e.menuid}),f=async()=>({...e,menuid:await g});try{if(m)return await eR({cartId:m,productid:c,quantity:o,card:await f(),_token:i,vendorId:p,deliveryMode:u});d.Logger.debug("[addCardToCart] No cart ID found, creating new cart first");let e=await eC(p,c,o,i,u);if(!e.success||!e.cartId)return e;return d.Logger.info("[addCardToCart] Cart created, now adding item:",{cartId:e.cartId}),await eR({cartId:e.cartId,productid:c,quantity:o,card:await f(),_token:i,vendorId:p,deliveryMode:u})}catch(e){if(e instanceof n.CartNotFoundError&&m){d.Logger.warn("[addCardToCart] Stale cart detected, clearing and retrying",{cartId:m}),ef();let e=await eC(p,c,o,i,u);if(!e.success||!e.cartId)return e;return await eR({cartId:e.cartId,productid:c,quantity:o,card:await f(),_token:i,vendorId:p,deliveryMode:u})}return d.Logger.error("[addCardToCart] Failed to add item to cart",{error:e}),{success:!1,error:en(e)??"Failed to add item to cart",...es(e)}}},eA=async(e,t)=>{if(!t?.trim())return d.Logger.warn("[addProductToFavorites] No token provided, cannot add favorite"),{success:!1,error:"Authentication required to add favorites"};try{d.Logger.debug("[addProductToFavorites] Adding product to favorites",{productname:e.productname});let t={favouritename:e.favouritename,productid:e.productid,chainproductid:e.chainproductid,productname:e.productname};void 0===e.vendorid?d.Logger.debug("[addProductToFavorites] vendorid omitted for add favorite request"):t.vendorid=e.vendorid,"string"==typeof e.choices&&""!==e.choices.trim()&&(t.choices=e.choices);let r=await B.addFavourite(t),o=String(r?.status??""),i=r?.statusCode;
1if(J(i,o))return[e.chainproductid,e.productid].forEach(e=>{let t=Z(e);t&&x.add(t)}),W(),d.Logger.info("[addProductToFavorites] Product added to favorites successfully",{statusCode:i,chainproductid:e.chainproductid}),{success:!0,message:r.message??"Product added to favorites"};let a=r?.message??"Failed to add product to favorites",n=i===m.StatusCode.STALE_JWT?`${a} (${m.StatusCode.STALE_JWT}: use a fresh user JWT from login for this fusion base URL, same as Postman.)`:a;return{success:!1,error:n,statusCode:i}}catch(e){return d.Logger.error("[addProductToFavorites] Failed to add product to favorites",e),{success:!1,error:e instanceof Error?e.message:"Failed to add product to favorites"}}},eT=async(e,t)=>{if(!t?.trim())return d.Logger.warn("[removeProductFromFavorites] No token provided, cannot remove favorite"),{success:!1,error:"Authentication required to remove favorites"};if(!Number.isFinite(e)||e<=0)return{success:!1,error:"Valid chainproductid is required to remove favorites"};try{d.Logger.debug("[removeProductFromFavorites] Removing product from favorites",{chainproductid:e});let t=await B.removeFavourite({chainproductid:e});if(J(t?.statusCode,t?.status)){let r;return(r=Z(e))&&x.delete(r),W(),d.Logger.info("[removeProductFromFavorites] Product removed from favorites",{chainproductid:e}),{success:!0,message:t?.message??"Product removed from favorites"}}return{success:!1,statusCode:t?.statusCode,error:t?.message??"Failed to remove product from favorites"}}catch(e){return d.Logger.error("[removeProductFromFavorites] Failed to remove product from favorites",e),{success:!1,error:e instanceof Error?e.message:"Failed to remove product from favorites"}}},eO=async(e,t,r)=>{if(!t?.trim())return d.Logger.warn("[isProductFavorite] No token provided, cannot check favorite state"),!1;let o=Z(e);if(!o)return d.Logger.warn("[isProductFavorite] Invalid product id provided",{productId:e}),!1;try{let e=r?.forceRefresh===!0;if(await em(e),x.has(o))return!0;if(e)return!1;return await em(!0),x.has(o)}catch(e){return d.Logger.error("[isProductFavorite] Failed to resolve favorite state",{productId:o,error:e}),!1}},eS=async(e,t)=>{if(!t?.trim())return null;let r=Z(e);if(!r)return null;try{let e=null;return await ea(t=>{let o=eo(t),i=o.chainId===r||o.restaurantProductId===r||o.pluProductId===r||o.nestedProductId===r;if(o.chainId&&i)return e=o.chainId,!0}),e}catch(e){d.Logger.warn("[resolveFavoriteChainProductId] Failed to resolve chainproductid from favorites list",{productId:r,error:e})}return null},ew=async(e,t)=>{if(!t?.trim())return[];let r=Z(e);if(!r)return[];let o=[],i=e=>{let t=Z(e);t&&!o.includes(t)&&o.push(t)};try{await ea(e=>{let t=eo(e);(t.chainId===r||t.restaurantProductId===r||t.pluProductId===r||t.nestedProductId===r)&&(i(e.id),i(e.favouriteid),i(e.favouriteId),i(e.favoriteid),i(e.favoriteId),i(t.chainId),i(t.restaurantProductId),i(t.pluProductId),i(t.nestedProductId),i(e.product?.id),i(e.product?.productid),i(e.product?.productId))})}catch(e){d.Logger.warn("[resolveFavoriteRemovalCandidates] Failed to resolve remove candidates from favorites list",{productId:r,error:e})}return i(r),o},eN=(e,t,r,o)=>{let i=e.productid??("number"==typeof e.chainproductid?String(e.chainproductid):""),a=Z(e.vendorid)??Z(o)??void 0;return{productid:i,..."number"==typeof e.chainproductid?{chainproductid:e.chainproductid}:{},title:e.productname??t,description:e.productname??t,image:r,details:e.productname??t,price:"$0.00",calories:"",vendorid:a,recipient:e.recipient,menuid:e.menuid,options:e.options,customdata:e.customdata}},eF=async(e,t,r,o)=>{let i=Z(e.productid),a=Z(e.chainproductid);if(i)return i;if(a)return a;let n=X(o),s=X(e.vendorid)??X(r),u="string"==typeof e.productname&&""!==e.productname.trim()?e.productname:t,l=[n,s].filter((e,t,r)=>"string"==typeof e&&e.length>0&&r.indexOf(e)===t);if(u?.trim())for(let e of l)try{let t=await (0,c.lookupProductBySlug)({restaurantId:e,productSlug:u,allowLooseMatch:!1}),r=Z(t?.productId);if(r)return r}catch(t){d.Logger.warn("[reorderFromCard] Failed to resolve product id by slug for reorder line item",{productName:u,vendorId:e,error:t})}}
1,eP=async(e,t,r,o,i)=>{let a,n=e.lineItems?.length?e.lineItems:[{productname:e.title,quantity:1,productid:e.id,vendorid:e.vendorid}],s=t??ep(),u=0,l=0,c=[],m=[];for(let p of(d.Logger.info("[reorderFromCard][Diag] Replay request received",{cardId:e.id,cardTitle:e.title,lineItemsCount:n.length,incomingCartId:t,storedCartId:ep(),preferredStoreId:o,preferredStoreIdIsNumeric:"string"==typeof o&&/^\d+$/.test(o.trim()),preferredDeliveryMode:i,hasToken:!!r}),n)){let t={missingProductId:!p.productid&&!p.chainproductid,missingProductName:!p.productname?.trim(),missingVendorId:!p.vendorid&&!e.vendorid&&!o,missingMenuId:!p.menuid};(t.missingProductId||t.missingProductName||t.missingVendorId)&&d.Logger.warn("[reorderFromCard] Line item has missing required fields",{lineItem:p,cardId:e.id,cardTitle:e.title,...t});let n=await eF(p,e.title,e.vendorid,o);if(d.Logger.info("[reorderFromCard][Diag] Line item resolution",{cardId:e.id,cardTitle:e.title,lineItemProductName:p.productname,sourceProductId:p.productid,sourceChainProductId:p.chainproductid,sourceVendorId:p.vendorid,cardVendorId:e.vendorid,lineItemMenuId:p.menuid,hasOptions:!!(p.options&&String(p.options).trim().length>0),hasCustomData:!!(p.customdata&&String(p.customdata).trim().length>0),resolvedProductId:n,activeCartId:s}),!n){l+=1,c.push(`Unable to resolve product id for reorder item "${p.productname??e.title}"`),d.Logger.error("[reorderFromCard] Unable to resolve product id, skipping line item",{lineItem:p,cardId:e.id});continue}let g=eN({...p,productid:p.productid??String(n)},e.title,e.image,o??e.vendorid),f=Z(p.quantity)??1,v=et(o)??et(p.vendorid)??et(e.vendorid)??void 0,h=await eb(g,s,f,r,v,i);if(d.Logger.info("[reorderFromCard][Diag] addCardToCart result",{cardId:e.id,lineItemProductName:p.productname,request:{activeCartId:s,lineVendor:v,lineVendorIsNumeric:"string"==typeof v&&/^\d+$/.test(v.trim()),quantity:f,lineCardProductId:g.productid,lineCardMenuId:g.menuid,hasOptions:!!(g.options&&g.options.trim().length>0),hasCustomData:!!(g.customdata&&g.customdata.trim().length>0)},result:{success:h.success,error:h.error,cartId:h.cartId}}),h.success&&h.cartId){u+=1,s=h.cartId,a=h.summary??a,m.push({productid:String(g.productid),productname:g.title,quantity:f,menuid:g.menuid,options:g.options,customdata:g.customdata,recipient:g.recipient});continue}l+=1,c.push(h.error??`Failed to reorder item "${g.title}"`)}return u>0&&s?(d.Logger.info("[reorderFromCard][Diag] Replay completed with success",{cardId:e.id,cardTitle:e.title,itemsAdded:u,itemsFailed:l,activeCartId:s,errors:c}),{success:!0,cartId:s,summary:a,itemsAdded:u,itemsFailed:l,errors:c,replayedItems:m}):(d.Logger.warn("[reorderFromCard][Diag] Replay completed with failure",{cardId:e.id,cardTitle:e.title,itemsAdded:u,itemsFailed:l,activeCartId:s,errors:c}),{success:!1,error:c[0]??"Unable to reorder selected items",cartId:s??void 0,itemsAdded:u,itemsFailed:l,errors:c,replayedItems:m})},eL=async(e,t,r)=>{try{let r=await K.removeFromCart({cartId:t??"",productId:e});return d.Logger.info("[removeFromCart] Product removed from cart successfully",{cartId:t,productId:e}),{success:!0,cartId:r?.cartId,message:r?.message}}catch(e){return d.Logger.error("[removeFromCart] Failed to remove product from cart",e),{success:!1,error:e instanceof Error?e.message:"Failed to remove product from cart"}}},eD=async(e,t,r)=>{if(!t)return{success:!1,error:"Cart ID is required to update item quantity"};try{let o=await K.updateCart({cartId:t,productId:e,quantity:r});return d.Logger.info("[updateCartItemQuantity] Item quantity updated successfully",{cartId:o?.cartId??t,productId:e,quantity:r}),{success:!0,cartId:o?.cartId??t}}catch(o){return d.Logger.error("[updateCartItemQuantity] Failed to update item quantity",{cartId:t,productId:e,quantity:r,error:o}),{success:!1,error:o instanceof Error?o.message:"Failed to update item quantity"}}};e.s(["addCardToCart",0,eb,"addProductToFavorites",0,eA,"clearStoredCartId",0,ef,"getOrderHistory",0,ey,"getStoredCartId",0,ep,"isProductFavorite",0,eO,"loadFavoritesCards",0,ev,"persistCartId",0,eg,"removeFromCart",0,eL,"removeProductFromFavorites",0,eT,"reorderFromCard",0,eP,"resolveFavoriteChainProductId",0,eS,"resolveFavoriteRemovalCandidates",0,ew,"updateCartItemQuantity",0,eD],215208)},62505,526395,e=>{"use strict";let t={FIND_A_CAFE:"Find a cafe",PENDING:"Pending",DELIVERY:"Delivery",CURBSIDE:"Curbside",DRIVE_THRU:"Drive-thru",PICKUP:"Pick-up"},r={DELIVERY:"delivery",DISPATCH:"dispatch",CURBSIDE:"curbside",DRIVE_THRU:"drive_thru",DRIVETHRU:"drivethru",DRIVETHROUGH:"drivethrough",PICKUP:"pickup",PICK_UP:"pick_up"};e.s(["DELIVERY_MODE_DISPLAY",0,t,"DELIVERY_MODE_NORMALIZED",0,r],526395);let o=e=>e?.trim().toLowerCase().replace(/[\s-]+/g,"_");e.s(["getOrderMethodDisplay",0,function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.FIND_A_CAFE,a=o(e);return a?a===r.DELIVERY?t.DELIVERY:a===r.CURBSIDE?t.CURBSIDE:a===r.DRIVE_THRU||a===r.DRIVETHROUGH?t.DRIVE_THRU:a===r.PICKUP||a===r.PICK_UP?t.PICKUP:i:i},"mapDeliveryModeToApiValue",0,e=>{switch(e.toLowerCase()){case"pickup":return"pickup";case"delivery":return"delivery";case"curbside":return"curbside";case"drivethru":case"drive_thru":return"drive thru";default:return e}},"mapLabelToDeliveryMode",0,e=>{switch(e.toUpperCase().replaceAll(/[^A-Z]/g,"_")){case"DELIVERY":return"DELIVERY";case"CURBSIDE":return"CURBSIDE";case"DRIVE_THRU":case"DRIVETHRU":return"DRIVE_THRU";default:return"PICKUP"}},"normalizeDeliveryMode",0,o],62505)},101051,(e,t,r)=>{t.exports={title:"Your order",orderOwner:"Andreaâs order",items:[{id:"item-chicken-bacon-ranch",image:"/assets/images/cart-product.png",name:"Chicken Bacon Ranch",details:["No chicken, sub pork.","Remove romaine, ranch."],price:"$9.49",quantity:1}],totalLabel:"Your order total",total:"$9.49",actions:[{id:"submit",type:"secondary",label:"Submit group order"}],browseMoreLabel:"Browse more items"}},719706,212923,148963,387381,e=>{"use strict";var t=e.i(340290),r=e.i(709315),o=e.i(129920),i=e.i(215208),a=e.i(62505),d=e.i(101051),n=e.i(488056);let s=/^(?:no|remove|without|sub|half|add|side\s*choice)\s+/i,u=e=>s.test(e.trim()),l=e=>e.trim().toLowerCase().replace(/\s+/g," "),c=e=>{if("string"!=typeof e)return!1;let t=e.trim();return!(!t||/\bsides?\s+of\b/i.test(t))&&(/(^|\b)(choose\s+(your\s+)?side|pick\s+(your\s+)?side|sides?)\s*$/i.test(t)||/^sides?\b/i.test(t))},m=(e,t)=>
1{let r=[],o=t?.preserveExactDuplicates?null:new Set;for(let t of e){if("string"!=typeof t)continue;let e=t.trim();if(e){if(o){let t=e.toLowerCase();if(o.has(t))continue;o.add(t)}r.push(e)}}return r},p=e=>e.toLowerCase().replace(/[^a-z0-9]+/g," ").replace(/\s+/g," ").trim(),g=e=>{if(Array.isArray(e))return e.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(Boolean);if("string"==typeof e){let t=e.trim();if(!t)return[];try{let e=JSON.parse(t),r=g(e);if(r.length>0)return r}catch{}return t.split(",").map(e=>e.trim()).filter(Boolean)}return[]},f=(e,t)=>!("string"!=typeof e||!e.trim()||"string"==typeof e&&/^(?:no|remove|without)\s+\S/i.test(e.trim()))&&!!Array.isArray(t)&&0!==t.length&&t.every(e=>{let t;return!!e&&"object"==typeof e&&"string"==typeof(t=e.name)&&/^(?:sub|half)\s+\S/i.test(t.trim())}),v=/^side\s*choice\s+(.+)$/i,h=(e,t)=>e.reduce((e,t)=>{let r=v.exec(t.trim());if(!r?.[1])return e;let o=r[1].trim();if(!o)return e;let i=l(o);return!i||e.has(i)||e.set(i,`Side Choice ${o}`),e},t?new Map(t):new Map),y=(e,t,r)=>m(e,r).map(e=>{if(u(e))return e;let r=l(e.replace(s,"").trim());return t.get(r)??e}),I=e=>e.replace(/^sub\s+/i,"").trim(),_=e=>{let t=e.trim();if(!t)return;let r=t.indexOf("->");if(r>=0)return I(t.slice(r+2))||void 0;let o=t.indexOf("-");if(o>=0)return I(t.slice(o+1))||void 0},E=e=>{let t=e.trim(),r=/^no\s+/i.exec(t);return!!r&&void 0!==_(t.slice(r[0].length).trim())},C=e=>!!Array.isArray(e)&&e.some(e=>{let t=e?.optionid;return"string"==typeof t&&t.includes("###PRNT")}),R=(e,t)=>{let r,o,i,a,d,n,{choices:s,customdata:p}=e,v=(e=>{if(null==e)return[];try{let t="string"==typeof e?JSON.parse(e):e,r="string"==typeof t?JSON.parse(t):t,o=g(r.selectedModifiers),i=r.product_choices?g(r.product_choices):[];if(o.length>0||i.length>0)return m([...o,...i])}catch{}return[]})(p),I=(r=[],o=e=>{if(e&&"object"==typeof e&&(f(e.name,e.subChoices)||(e=>{if("string"!=typeof e)return;let t=e.trim();t&&r.push(t)})(e.name),Array.isArray(e.subChoices)))for(let t of e.subChoices)o(t)},(i=e=>{if(Array.isArray(e)){for(let t of e)o(t);return}if("string"==typeof e){let t=e.trim();if(!t)return;try{let e=JSON.parse(t);i(e)}catch{}return}if(e&&"object"==typeof e){if(e.choices)return void i(e.choices);e.product_choices&&i(e.product_choices)}})(s),r),_=(a=new Map,d=e=>{let t=e.trim();if(!t||u(t)||/\bside\b/i.test(t))return;let r=l(t);!r||a.has(r)||a.set(r,`Side Choice ${t}`)},(n=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Array.isArray(e)){for(let r of e)n(r,t);return}if("string"==typeof e){let r=e.trim();if(!r)return;if(t)return void d(r);try{let e=JSON.parse(r);n(e,t)}catch{}return}if(!e||"object"!=typeof e)return;let r=[e.name,e.label,e.title,e.description,e.groupName,e.modifierGroupName,e.choiceGroupName],o=t||r.some(c),i=[e.subChoices,e.choices,e.product_choices,e.options,e.items,e.children],a=i.some(e=>Array.isArray(e)||e&&"object"==typeof e);for(let t of(o&&!a&&"string"==typeof e.name&&d(e.name),i))n(t,o)})(s),a),E=h(v),R=h(I,new Map([..._,...E]));return C(s)&&I.length>0?m(y(I,_,{preserveExactDuplicates:!0}),{preserveExactDuplicates:!0}):t?.preferChoicesWhenPresent&&I.length>0?m(y(I,R,{preserveExactDuplicates:!0}),{preserveExactDuplicates:!0}):v.length>0?m(y(v,R)):m(y(I,_,{preserveExactDuplicates:!0}),{preserveExactDuplicates:!0})},b=(e,t)=>{let r=e.trim();if(!r)return"";let o=r.replace(/\s+/g," "),i=(e,r)=>{let o=t(r.replace(/\s+/g," ").trim());return o?`${e} ${o}`:""};if(/^no\s+/i.test(o)){let e=o.replace(/^no\s+/i,"").trim(),t=_(e);return t?i("Sub",t):/^ice$/i.test(e)?i("Add",`No ${e}`):i("No",e)}if(/^(remove|without)\s+/i.test(o))return i("No",o.replace(/^(remove|without)\s+/i,""));if(/^sub\s+/i.test(o))return i("Sub",o.replace(/^sub\s+/i,""));if(/^half\s+/i.test(o))return i("Half",o.replace(/^half\s+/i,""));if(/^side\s*choice\s+/i.test(o))return i("Side Choice",o.replace(/^side\s*choice\s+/i,""));if(/^add\s+/i.test(o))return i("Add",o.replace(/^add\s+/i,""));let a=t(o);return a?`Add ${a}`:""},A=(e,t)=>{let r=[],o=t?.formatIngredient??(e=>e.trim()),i=e=>/^(?:add|sub|half|side\s*choice|no|remove|without)\s+/i.test(e.trim()),a=e.filter(e=>/^(?:no|remove|without)\s+/i.test(e.trim())).length,d=e.some(e=>/^no\s+ice\s*$/i.test(e.trim())),n=e.some(e=>/^sub\s+/i.test(e.trim())),s=e.some(e=>E(e)),u=e.filter(e=>{let t=e.trim();return t.length>0&&!i(t)}),l=a>0&&!d&&1===a&&!n&&!s&&1===u.length,c=(()=>
1{if(!l)return"";let t=e.find(e=>/^(?:no|remove|without)\s+/i.test(e.trim()));if(!t)return"";let r=b(t,o);if(!/^No\s+/i.test(r))return"";let i=r.replace(/^No\s+/i,"").trim();return i?p(i):""})(),m=(e,t)=>{if(!l||!/^add\s+/i.test(t)||/^add\s+no\s+/i.test(t)||i(e.trim()))return!1;let r=p(t.replace(/^Add\s+/i,"").trim());return!r||!c||r!==c},g=new Map;for(let t of e){let e=t.trim();e&&g.set(e,(g.get(e)??0)+1)}let f=new Map;for(let t of e){let e=b(t,o);if(!e)continue;m(t,e)&&(e=e.replace(/^Add\s+/i,"Sub "));let i=p(e);if(!i)continue;let a=t.trim(),d=Math.max(g.get(a)??1,1),n=f.get(i)??0;n>=d||(f.set(i,n+1),r.push(e))}return r},T=e=>{let t=e.trim();return t?u(t)?t:`Side Choice ${t}`:""},O="Side Choice ",S=e=>e.trim().toLowerCase().replace(/\s+/g," ");e.s(["ensureSideChoiceLabel",0,T,"formatCustomizationDetails",0,A,"isComboChoicesPayload",0,C,"parseCustomizationDetailGroupsFromSource",0,(e,t)=>{let r,o,{choices:i,customdata:a}=e;if(!Array.isArray(i)||0===i.length)return null;let d=(r=new Set,(o=(e,t)=>{if(!(t>6)){if("string"==typeof e){let i=/^side\s*choice\s+(.+)$/i.exec(e.trim());if(i){let e=S(i[1]);e&&r.add(e);return}try{o(JSON.parse(e.trim()),t+1)}catch{}return}if(Array.isArray(e))return void e.forEach(e=>o(e,t+1));e&&"object"==typeof e&&Object.values(e).forEach(e=>o(e,t+1))}})(a,0),r),n=e=>(Array.isArray(e)?e:[]).filter(e=>!!e&&"object"==typeof e),s=(e,t)=>{if(t>12)return[];let r=[];for(let o of n(e))"string"==typeof o.name&&o.name.trim()&&r.push(o.name.trim()),r.push(...s(o.subChoices,t+1));return r},u=[],l=!1,c=e=>e.replace(/^(?:no|remove|without)\s+/i,"").trim();for(let e of n(i)){let r="string"==typeof e.name?e.name.trim():"";if(!r)continue;let o=("string"==typeof e.optionid?e.optionid??"":"").includes("###PRNT"),i=r.replace(/^side\s*choice\s+/i,"").trim(),a=!o&&i.length>0&&d.has(S(i))?T(i):r,m=/^(?:no|remove|without)\s+/i.test(r)&&!E(r),g=n(e.subChoices),v=[];for(let e of g){let r="string"==typeof e.name?e.name.trim():"";if(!r)continue;if(!(n(e.subChoices).length>0)&&d.has(S(r))){v.push(`${O}${r}`);continue}let o=A([r,...s(e.subChoices,0)],t);
1if(m&&!/^(?:add|sub|half|side\s*choice|no|remove|without)\s+/i.test(r)){let e=p(r);for(let t=0;t<o.length;t+=1){let r=o[t]??"";if(!/^Add\s+/i.test(r))continue;let i=p(r.replace(/^Add\s+/i,"").trim());i&&i===e&&(o[t]=r.replace(/^Add\s+/i,"Sub "))}}else if(m&&/^(?:no|remove|without)\s+/i.test(r)&&!E(r)){let e=p(c(r));for(let t=0;t<o.length;t+=1){let r=o[t]??"";if(!/^No\s+/i.test(r))continue;let i=p(r.replace(/^No\s+/i,"").trim());i&&i===e&&(o[t]=r.replace(/^No\s+/i,"Sub "))}}v.push(...o)}v.length>0&&(l=!0);let h=[...v.filter(e=>!e.startsWith(O)),...v.filter(e=>e.startsWith(O))],y=o||0!==v.length?a:A([a],t)[0]??a,I=!o&&f(e.name,e.subChoices);u.push({label:I?"":y,details:h})}return l&&0!==u.length?u:null},"parseCustomizationDetailsFromSource",0,R],212923);let w=e=>{if("string"==typeof e){let t=e.trim();return t.length>0?t:null}return"number"==typeof e&&Number.isFinite(e)?String(e):null},N=d.default,F=e=>{let t=e??{};for(let e of Array.isArray(t.basket?.groupPolicies)?t.basket?.groupPolicies:[]){if(e?.type!=="newJoinersDeadline")continue;let t="string"==typeof e.deadline?e.deadline.trim():"";if(t)return t}return("string"==typeof t.deadline?t.deadline.trim():"")||null},P=e=>{if(!e?.trim())return null;let t=/^(\d{4})(\d{2})(\d{2})\s(\d{2}):(\d{2})$/.exec(e.trim());if(t){let[,e,r,o,i,a]=t;return new Date(Number(e),Number(r)-1,Number(o),Number(i),Number(a))}let r=/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::\d{2})?$/.exec(e.trim());if(r){let[,e,t,o,i,a]=r;return new Date(Number(e),Number(t)-1,Number(o),Number(i),Number(a))}let o=new Date(e);return Number.isNaN(o.getTime())?null:o},L=e=>{let t=P(e??null);return!!t&&t.getTime()<=Date.now()},D=(e,t)=>{let r=e.find(e=>e.role?.trim().toLowerCase()===t&&w(e.id));return w(r?.id)??null},M=(e,t)=>{let r=e.find(e=>e.role?.trim().toLowerCase()===t&&e.name?.trim());return r?.name?.trim()??null},U=e=>{let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0},G=e=>{if("number"==typeof e&&Number.isFinite(e))return String(e);if("string"==typeof e){let t=e.trim();return t.length>0?t:void 0}},q=(e,t)=>U(e.productid)??U(e.productId)??U(e.menuItemId)??U(e.menuitemid)??U(e.chainproductid)??U(e.chainProductId)??U(t),V=e=>{let t=e.id?.trim();return t||[q(e)??"unknown",w(e.customerId)??"",e.recipient?.trim()??"",e.name?.trim()??""].join("|")},k=(e,t)=>{let r=Number.isFinite(e.quantity)&&(e.quantity??0)>0?Number(e.quantity):1,o=Number.isFinite(e.basecost)?Number(e.basecost):0,i=Number.isFinite(e.totalcost)?Number(e.totalcost):o*r,a=w(e.customerId),d=a?t.get(a)?.trim():void 0,s=e.recipient?.trim(),u=[...A(R({choices:e.choices,customdata:e.customdata},{preferChoicesWhenPresent:!0}),{formatIngredient:e=>(0,n.toCamelCaseText)(e.replace(/\s+/g," ").trim())}),e.specialinstructions?.trim()].filter(e=>!!e);return{id:V(e),image:"/assets/images/cart-product.png",name:e.name?.trim()??"Group order item",details:u,recipient:s&&s.length>0?s:d,price:i,quantity:r,productId:q(e)}},$=e=>{let{group:t,hostCustomerId:r,hostName:o}=e;if(r&&t.userId===r)return!0;let i=t.userName.trim().toLowerCase();return"my"===i||i===o?.toLowerCase()};e.s(["buildGroupOrderCartData",0,e=>{let{products:r,groupCustomers:o,isParticipantMode:i,participantCustomerId:a,participantName:d,polledBasketTotal:n}=e,s=(e=>{let t=new Map;for(let r of e){let e=w(r.id);e&&t.set(e,r.name?.trim()??"Guest")}return t})(o),u=(e=>{let{products:t,isParticipantMode:r,participantCustomerId:o,participantName:i}=e;if(!r)return t;let a=i?.trim().toLowerCase();return o||a?t.filter(e=>{let t=w(e.customerId);return!!o&&t===o||!!a&&e.recipient?.trim().toLowerCase()===a}):[]})({products:r,isParticipantMode:i,participantCustomerId:a,participantName:d}),l=u.map(e=>k(e,s)),c=D(o,"host"),m=M(o,"host")??void 0,p=d?.trim()??"",g=new Map;u.forEach(e=>{let r=(e=>{let t=w(e.customerId);if(t)return t;let r=e.recipient?.trim().toLowerCase();return r?`recipient:${r}`:"host-fallback"})(e),o=(e=>{let{isParticipantMode:t,userId:r,participantCustomerId:o,normalizedParticipantName:i,product:a,customerNameById:d,hostCustomerId:n,hostName:s}=e,u=w(a.customerId),l=a.recipient?.trim(),c=u?d.get(u)?.trim():l??s;return t&&i.length>0&&o&&r===o?i:(e=>{let{isParticipantMode:t,product:r,productCustomerId:o,hostCustomerId:i,hostName:a}=e;if(t)return!1;let d=r.recipient?.trim();if(o&&i&&o===i)return!0;
1if(!o&&d){let e=a?.toLowerCase()??"";return d.toLowerCase()===e}return!o&&!d})({isParticipantMode:t,product:a,productCustomerId:u,hostCustomerId:n,hostName:s})?"My":c??"Guest"})({isParticipantMode:i,userId:r,participantCustomerId:a,normalizedParticipantName:p,product:e,customerNameById:s,hostCustomerId:c,hostName:m});t.Logger.warn("[GroupOrderData][AttributionDebug]",{productName:e.name,productCustomerId:e.customerId,productRecipient:e.recipient,isParticipantMode:i,participantCustomerId:a,normalizedParticipantName:p,hostCustomerId:c,hostName:m,resolvedUserId:r,resolvedUserName:o}),(e=>{let{groupedMap:t,userId:r,userName:o,item:i}=e,a=t.get(r);if(a){a.items.push(i),a.subtotal+=i.price;return}t.set(r,{userId:r,userName:o,items:[i],subtotal:i.price})})({groupedMap:g,userId:r,userName:o,item:k(e,s)})});let f=Array.from(g.values());i||f.sort((e,t)=>{let r=$({group:e,hostCustomerId:c,hostName:m}),o=$({group:t,hostCustomerId:c,hostName:m});return r&&!o?-1:o&&!r?1:0});let v=(e=>{let{isParticipantMode:t,scopedItemsTotal:r,polledBasketTotal:o}=e,i=Number(o),a=null!=o&&Number.isFinite(i);return!t&&a?i:r})({isParticipantMode:i,scopedItemsTotal:l.reduce((e,t)=>e+t.price,0),polledBasketTotal:n}),h=(e=>{if(!e)return;let t=e.toLowerCase().endsWith("s")?"'":"'s";return`${e}${t} order`})(i&&a?p||s.get(a)?.trim():void 0),y=i&&Array.isArray(N.actions)?N.actions.filter(e=>"add"!==e.id).map(e=>"submit"===e.id?{...e,label:"Add to group order"}:e):N.actions??[],I=m?.trim();return{title:N.title??"Your order",orderOwner:h,myDisplayName:I,items:l,groupedItems:f,totalLabel:N.totalLabel??"Total",total:`$${v.toFixed(2)}`,actions:y,browseMoreLabel:N.browseMoreLabel??"Browse more items"}},"formatGroupOrderDeadline",0,e=>{let t=P(e);return t?{date:new Intl.DateTimeFormat("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric"}).format(t),time:new Intl.DateTimeFormat("en-US",{hour:"numeric",minute:"2-digit",hour12:!0}).format(t).toLowerCase()}:{}},"formatGroupOrderTimeLeft",0,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),r=P(e);if(!r)return;let o=r.getTime()-t;if(o<=0)return"Closed";let i=Math.ceil(o/6e4);if(i<60)return`${i} min left`;let a=Math.floor(i/60),d=i%60;return 0===d?`${a} hr left`:`${a} hr ${d} min left`},"getGroupCustomerIdByRole",0,D,"getGroupCustomerNameByRole",0,M,"inferParticipantCustomerId",0,e=>{let{basketData:t,storedParticipantCustomerId:r,participantName:o}=e;if(r?.trim())return r.trim();let i=t.products??[],a=t.groupCustomers??[],d=o?.trim().toLowerCase();if(d){let e=a.find(e=>{if(e.role?.trim().toLowerCase()==="host")return!1;let t=e.name?.trim().toLowerCase();return!!w(e.id)&&t===d}),t=w(e?.id);if(t)return t}if(d){let e=Array.from(new Set(i.filter(e=>e.recipient?.trim().toLowerCase()===d&&w(e.customerId)).map(e=>w(e.customerId))));if(1===e.length)return e[0]}return null},"isGroupOrderClosedByDeadline",0,L,"resolveGroupOrderDeadlineValue",0,F,"resolveGroupOrderMenuId",0,(e,t)=>G(e.menuid)??G(e.menuId)??G(e.menu_id)??G(t),"resolveGroupOrderMenuProductId",0,q,"resolveGroupOrderProductStableId",0,V],148963);let B=new Set([1073,1081]),H=new Set([404,410]),K=e=>{let t="object"!=typeof e||null===e?null:"number"==typeof e.statusCode?e.statusCode:"number"==typeof e.status?e.status:"number"==typeof e.response?.statusCode?e.response.statusCode:"number"==typeof e.response?.status?e.response.status:null;if(null!==t){if(B.has(t))return"closed";if(H.has(t))return"missing"}if("GroupOrderNotFoundError"===(e instanceof Error||"object"==typeof e&&null!==e&&"string"==typeof e.name?e.name:""))return"missing";let r=e instanceof Error?e.message.toLowerCase():"string"==typeof e?e.toLowerCase():"",o=r.includes("group order");return o&&(r.includes("already been submitted")||r.includes("expired"))?"closed":o&&(r.includes("not found")||r.includes("no longer")||r.includes("does not exist")||r.includes("cancel"))?"missing":null};e.s(["resolveGroupOrderUnavailableReason",0,K],387381);let x=new Map,j=e=>e&&globalThis.window.localStorage.getItem(o.GROUP_ORDER_TOKEN_STORAGE_KEY)===e?globalThis.window.localStorage.getItem(o.GROUP_ORDER_ID_STORAGE_KEY):null,Y=(e,t)=>
1{globalThis.window.localStorage.setItem(o.GROUP_ORDER_ID_STORAGE_KEY,e),globalThis.window.localStorage.setItem(o.GROUP_ORDER_TOKEN_STORAGE_KEY,t)},W=e=>e&&globalThis.window.localStorage.getItem(o.GROUP_ORDER_TOKEN_STORAGE_KEY)===e?globalThis.window.localStorage.getItem(o.GROUP_ORDER_BASKET_ID_STORAGE_KEY):null,z=(e,t)=>{e?.trim()&&(globalThis.window.localStorage.setItem(o.GROUP_ORDER_BASKET_ID_STORAGE_KEY,e),globalThis.window.localStorage.setItem(o.GROUP_ORDER_TOKEN_STORAGE_KEY,t))},Q=()=>{globalThis.window.localStorage.removeItem(o.GROUP_ORDER_ID_STORAGE_KEY),globalThis.window.localStorage.removeItem(o.GROUP_ORDER_BASKET_ID_STORAGE_KEY),globalThis.window.localStorage.removeItem(o.GROUP_ORDER_PARTICIPANT_CUSTOMER_ID_STORAGE_KEY),globalThis.window.localStorage.removeItem(o.GROUP_ORDER_TOKEN_STORAGE_KEY)},J=async e=>{let{authToken:o,basketId:d,restaurantId:n,storeNumber:s,selectedDeliveryMode:u}=e,l=[o,n,s?.trim()??"",d?.trim()??""].join("|"),c=x.get(l);if(void 0!==c)return t.Logger.info("[ensureGroupOrderForSession] Reusing in-flight group order request",{restaurantId:n,storeNumber:s}),c;let m=(async()=>{let e,l,c,m,p,g,f,v,h,y,I=d?.trim()??"",_=W(o)?.trim()??"",E=(0,i.getStoredCartId)()?.trim()??"",C=I||_||E,R=new Set,b=function(){for(var e=arguments.length,r=Array(e),o=0;o<e;o++)r[o]=arguments[o];r.forEach(e=>{let t=e?.trim();t&&R.add(t)}),C&&R.has(C)&&(t.Logger.info("[ensureGroupOrderForSession] Dropping a basket that belongs to a closed group order",{basketId:C}),C="")},A=s?.trim()??void 0,T=(0,a.normalizeDeliveryMode)(u),O=j(o);if(C&&O)try{let e=await (0,r.getGroupOrderById)({groupOrderId:O,basket:C,storeNumber:A});if(!L(F(e)))return Y(e.groupOrderId,o),z(C,o),{groupOrderId:e.groupOrderId,deadline:F(e)??e.deadline,basketId:C};t.Logger.info("[ensureGroupOrderForSession] Stored group order is closed; creating a new one",{groupOrderId:O,deadline:F(e)??e.deadline}),Q(),b(_,e.basket?.id)}catch(e){null!==K(e)?(t.Logger.info("[ensureGroupOrderForSession] Stored group order is no longer available; clearing it",{groupOrderId:O}),Q(),b(_)):t.Logger.warn("[ensureGroupOrderForSession] Stored group order lookup failed; attempting host open-order lookup",{error:e,groupOrderId:O})}try{let e=await (0,r.getHostGroupOrderByEmail)(),i=e.groupOrderId?.trim(),a=e.basket?.id?.trim()??C??I;if(i&&L(F(e)))t.Logger.info("[ensureGroupOrderForSession] Host open-order lookup returned a closed order; creating a new one",{groupOrderId:i,deadline:F(e)??e.deadline}),b(_,e.basket?.id);else if(i)return Y(i,o),a&&z(a,o),{groupOrderId:i,deadline:F(e)??e.deadline,basketId:a??void 0}}catch(e){t.Logger.info("[ensureGroupOrderForSession] No reusable host group order found; creating new group order",{error:e})}let S=await (0,r.createGroupOrder)({restaurantid:n,basketid:C,deadline:(e=new Date(new Date().getTime()+864e5),l=e=>String(e).padStart(2,"0"),c=e.getFullYear(),m=l(e.getMonth()+1),p=l(e.getDate()),g=l(e.getHours()),f=l(e.getMinutes()),h=Math.abs(v=-e.getTimezoneOffset()),y=`${v<0?"-":"+"}${l(Math.floor(h/60))}:${l(h%60)}`,`${c}-${m}-${p}T${g}:${f}:00${y}`),note:"",deliverymode:"delivery"===T?"delivery":"pickup"});return Y(S.groupOrderId,o),z(S.basket?.id??C,o),{groupOrderId:S.groupOrderId,deadline:F(S)??S.deadline,basketId:S.basket?.id??C}})();x.set(l,m);try{return await m}finally{x.delete(l)}},Z=async e=>{let{authToken:t,groupOrderId:o,basketId:i,storeNumber:a}=e,d=i.trim(),n=a?.trim()??void 0,s=await (0,r.getGroupOrderById)({groupOrderId:o,basket:d,storeNumber:n});return Y(s.groupOrderId,t),z(d,t),{groupOrderId:s.groupOrderId,deadline:F(s)??s.deadline,basketId:d}};e.s(["clearStoredGroupOrderId",0,Q,"clearStoredGroupOrderParticipantContext",0,()=>{globalThis.window.localStorage.removeItem(o.GROUP_ORDER_PARTICIPANT_CUSTOMER_ID_STORAGE_KEY)},"ensureGroupOrderForSession",0,J,"getGroupOrderDetailsForSession",0,Z,"getStoredGroupOrderBasketId",0,W,"getStoredGroupOrderId",0,j,"getStoredGroupOrderParticipantCustomerId",0,e=>e&&globalThis.window.localStorage.getItem(o.GROUP_ORDER_TOKEN_STORAGE_KEY)===e?globalThis.window.localStorage.getItem(o.GROUP_ORDER_PARTICIPANT_CUSTOMER_ID_STORAGE_KEY):null,"persistGroupOrderId",0,Y,"persistGroupOrderParticipantCustomerId",0,(e,t)=>{e?.trim()&&(globalThis.window.localStorage.setItem(o.GROUP_ORDER_PARTICIPANT_CUSTOMER_ID_STORAGE_KEY,e),globalThis.window.localStorage.setItem(o.GROUP_ORDER_TOKEN_STORAGE_KEY,t))}],719706)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.