1var _____WB$wombat$assign$function_____=function(name){return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name))||self[name];};if(!self.__WB_pmw){self.__WB_pmw=function(obj){this.__WB_source=obj;return this;}}{ 2let window = _____WB$wombat$assign$function_____("window"); 3let self = _____WB$wombat$assign$function_____("self"); 4let document = _____WB$wombat$assign$function_____("document"); 5let location = _____WB$wombat$assign$function_____("location"); 6let top = _____WB$wombat$assign$function_____("top"); 7let parent = _____WB$wombat$assign$function_____("parent"); 8let frames = _____WB$wombat$assign$function_____("frames"); 9let opens = _____WB$wombat$assign$function_____("opens"); 10async function defaultFlagClientFactory(t,e,n){return{}}function defaultNewDesignFromUrlGateway(){const t=new URLSearchParams(document.location.search).get("newDesign");return window.console&&console.log(`urlCoupon: ${t}`),t}class FlagService{static singleton=null;static flagsReadyEventName="menufy-flags-ready";constructor(){this.newDesignFromUrlGateway=defaultNewDesignFromUrlGateway,this.flagClientFactory=defaultFlagClientFactory,this.client=null,this.loadAttempted=!1}#t(t,e,n,a){if(this.loadAttempted)return null;this.loadAttempted=!0,this.locationId=t,this.clientId=e,this.ip=n,this.context=a;const o=this.newDesignFromUrlGateway();return this.showNewDesign="true"==o,window.console&&console.log("FlagService: Initialized"),new Promise((async(a,o)=>{this.client=await this.flagClientFactory(t,e,n),window.console&&console.log("FlagService flags ready");let i=new CustomEvent(FlagService.flagsReadyEventName,{bubbles:!0,composed:!0,cancelable:!0});this.context.dispatchEvent(i),a()}))}#e(){return this.showNewDesign}#n(){return null!==this.client}static async initialize(t,e,n,a){await this.singleton.#t(t,e,n,a)}static isNewDesignEnabled(){return this.singleton.#e()}static areFlagsReady(){return this.singleton.#n()}}function defaultInlineCdnDataLoader(){const t=document.getElementById("cdn-data");return t?(window.console&&console.log("defaultInlineCdnDataLoader: found data"),JSON.parse(t.textContent)):null}function defaultCdnResolver(t,e){return`${t}${e}?lu=${(new Date).getTime()}`}FlagService.singleton=new FlagService;class CdnService{static singleton=null;constructor(){this.siteContentUrl=null,this.inlineCdnDataLoader=defaultInlineCdnDataLoader,this.cdnResolver=defaultCdnResolver,this.dict={}}#t(t,e,n){this.siteContentUrl=t,this.context=e,this.hasInlineData=n,window.console&&console.log(`CdnService: Initialize. Inline data? ${this.hasInlineData}`),this.hasInlineData&&this.#a()}#a(){window.console&&console.log("CdnService: attempting to load inline data.");const t=this.inlineCdnDataLoader();t&&(this.dict=t)}#o(t){if(null===this.siteContentUrl)throw new Error("CdnService not initialized");const e=`${t.startsWith("/")?"":"/"}${t}`;if(this.dict.hasOwnProperty(e))return this.dict[e];const n=this.cdnResolver(this.siteContentUrl,e);return this.dict[e]=n,n}static initialize(t,e,n){this.singleton.#t(t,e,n)}static linkSiteCdnContent(t){return this.singleton.#o(t)}}CdnService.singleton=new CdnService;class PresentationService{static singleton=null;constructor(){this.editorMode=null,this.context=null,this.cssTime=null,this.googleFontsLinkTemplate=null,this.fontawesomeMinLinkTemplate=null,this.swiperCssLinkTemplate=null,this.bootstrapMinLinkTemplate=null,this.websiteMinLinkTemplate=null,this.orderLinkTemplate=null,this.cssLinkTemplate=null,this.newComponentLinkTemplate=null,this.oldComponentLinkTemplate=null,this.indexLinkTemplate=null,this.baseStyleTemplate=null}#i(){const t=document.createElement("link");t.setAttribute("rel","stylesheet"),this.googleFontsLinkTemplate=t.cloneNode(),this.googleFontsLinkTemplate.setAttribute("href","//fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,200..1000;1,6..12,200..1000&display=swap"),this.fontawesomeMinLinkTemplate=t.cloneNode(),this.fontawesomeMinLinkTemplate.setAttribute("href",CdnService.linkSiteCdnContent("website/fontawesome/css/all.min.css")),this.bootstrapMinLinkTemplate=t.cloneNode(),this.bootstrapMinLinkTemplate.setAttribute("href",CdnService.linkSiteCdnContent("website/css/bootstrap.min.css")),this.websiteMinLinkTemplate=t.cloneNode(),this.websiteMinLinkTemplate.setAttribute("href",CdnService.linkSiteCdnContent("website/css/website.min.css")),this.orderLinkTemplate=t.cloneNode(),this.orderLinkTemplate.setAttribute("href",CdnService.linkSiteCdnContent("website/css/order.min.css")),this.indexLinkTemplate=t.cloneNode(),this.indexLinkTemplate.setAttribute("href",CdnService.linkSiteCdnContent("website/2024/css/index.css")),this.oldComponentLinkTemplate=t.cloneNode(),this.oldComponentLinkTemplate.setAttribute("href",CdnService.linkSiteCdnContent("website/scripts/old-components.min.css")),this.newComponentLinkTemplate=t.cloneNode(),this.newComponentLinkTemplate.setAttribute("href",CdnService.linkSiteCdnContent("website/scripts/new-components.min.css")),this.editorMode&&(this.cssLinkTemplate=t.cloneNode(),this.cssLinkTemplate.setAttribute("href",`/Website/CSS?time=${this.cssTime}`));const e=document.getElementById("base-styles").innerHTML;window.console&&console.log(`Base styles: ${e}`),this.baseStyleTemplate=document.createElement("style"),this.baseStyleTemplate.setAttribute("type","text/css"),this.baseStyleTemplate.innerHTML=e}#t(t,e,n){this.editorMode=t,this.cssTime=e,this.context=n,this.#i(),window.addEventListener("signup-for-deals-clicked",(()=>{window.location.hash="#signup"})),window.console&&console.log(`Presentation Service initialized. editor mode:${this.editorMode} css time:${this.cssTime}`)}#s(t){t.prepend(this.baseStyleTemplate.cloneNode(!0)),this.editorMode&&t.prepend(this.cssLinkTemplate.cloneNode()),t.prepend(this.newComponentLinkTemplate.cloneNode()),t.prepend(this.indexLinkTemplate.cloneNode()),t.prepend(this.orderLinkTemplate.cloneNode()),t.prepend(this.websiteMinLinkTemplate.cloneNode()),t.prepend(this.bootstrapMinLinkTemplate.cloneNode()),t.prepend(this.fontawesomeMinLinkTemplate.cloneNode()),t.prepend(this.googleFontsLinkTemplate.cloneNode())}#r(t){t.prepend(this.baseStyleTemplate.cloneNode(!0)),this.editorMode&&t.prepend(this.cssLinkTemplate.cloneNode()),t.prepend(this.oldComponentLinkTemplate.cloneNode()),t.prepend(this.orderLinkTemplate.cloneNode()),t.prepend(this.websiteMinLinkTemplate.cloneNode()),t.prepend(this.bootstrapMinLinkTemplate.cloneNode()),t.prepend(this.fontawesomeMinLinkTemplate.cloneNode()),t.prepend(this.googleFontsLinkTemplate.cloneNode())}#l(t,e){return t.hasSame(e,"day")&&t.hasSame(e,"month")&&t.hasSame(e,"year")}#c(t,e){let n="";return n=this.#l(t,e)?`Today, ${this.#d(e)}`:this.#l(e,t.plus({days:1}))?`Tomorrow, ${this.#d(e)}`:`${this.#d(e,!0)}`,n}
10#d(t,e){return e?`${t.toLocaleString({weekday:"long"})}, ${t.toLocaleString({month:"numeric",day:"numeric"})}, ${t.toLocaleString({hour:"numeric",minute:"2-digit"})}`:`${t.toLocaleString({month:"numeric",day:"numeric"})}, ${t.toLocaleString({hour:"numeric",minute:"2-digit"})}`}#u(t){return`${t.toLocaleString({month:"numeric",day:"numeric",year:"2-digit"})} ${t.toLocaleString({hour:"numeric",minute:"2-digit"})}`}#h(t,e={},n={}){const a=PresentationService.singleton;let o;if(a||console.log("PresentationService not initialized"),"string"==typeof t){customElements.get(t)||console.log(`No custom element registered under <${t}>`),o=document.createElement(t)}else"function"==typeof t?o=new t:t instanceof HTMLElement?o=t:console.log("#showModal requires a tag-name or dialogPanel");Object.entries(e).forEach((([t,e])=>{o[t]=e,o.setAttribute(t,String(e))})),this.context.dispatchEvent(new CustomEvent("chrome-modal-close",{bubbles:!0,composed:!0}));const i=document.createElement("menufy-modal-chrome");n.noClamp&&i.classList.add("no-clamp"),i.appendChild(o);return(a.context||document.body).appendChild(i),i}static initialize(t,e,n){this.singleton.#t(t,e,n)}static longFormatDate(t,e){return this.singleton.#d(t,e)}static shortFormatDate(t){return this.singleton.#u(t)}static prependStylesToOldComponent(t){this.singleton.#r(t)}static prependStylesToNewComponent(t){this.singleton.#s(t)}static longFormatFulfillDate(t,e){return this.singleton.#c(t,e)}static showModal(t,e,n){return this.singleton.#h(t,e,n)}}PresentationService.singleton=new PresentationService;class I18nService{static singleton=null;constructor(t){this.context=t}getTwoLetterLanguageCode(){return navigator.language.substr(0,2).toLowerCase()}#g(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Visite nuestro ${t}`;case"fr":return`Visitez nos ${t}`;case"zh":return`è®¿é®æä»¬ç ${t}`;default:return`Visit our ${t}`}}#p(){switch(this.getTwoLetterLanguageCode()){case"es":return"Teléfono";case"fr":return"Téléphone";case"zh":return"çµè¯";default:return"Phone"}}#m(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Llame al ${t}`;case"fr":return`Appelez le ${t}`;case"zh":return`è´çµ ${t}`;default:return`Call at ${t}`}}#C(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Desarrollado por ${t}`;case"fr":return`Piloté par ${t}`;case"zh":return`ç± ${t} æä¾æ¯æ`;default:return`Powered by ${t}`}}#y(){return this.getTwoLetterLanguageCode(),"Menufy"}#w(){switch(this.getTwoLetterLanguageCode()){case"es":return"Accesibilidad";case"fr":return"Accessibilité";case"zh":return"å¯è®¿é®æ§";default:return"Accessibility"}}#f(){switch(this.getTwoLetterLanguageCode()){case"es":return"Términos";case"fr":return"Termes";case"zh":return"æ¡æ¬¾";default:return"Terms"}}#v(){switch(this.getTwoLetterLanguageCode()){case"es":return"Ayuda";case"fr":return"Aide";case"zh":return"帮å©";default:return"Help"}}#L(){switch(this.getTwoLetterLanguageCode()){case"es":return"Privacidad";case"fr":return"Vie privée";case"zh":return"éç§";default:return"Privacy"}}#b(t,e){return this.getTwoLetterLanguageCode(),`${t} menu opens at ${e}`}#T(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Lo sentimos. ${t} no acepta pedidos en lÃnea en este momento.`;case"fr":return`Nous sommes désolés. ${t} nâaccepte pas les commandes en ligne pour le moment.`;case"zh":return`徿±æã${t} ç®å䏿¥å线ä¸è®¢åã`;default:return`We're sorry. ${t} is not accepting online orders at this time.`}}#S(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Cerrado hasta ${t}`;case"fr":return`Fermé jusquâà ${t}`;case"zh":return`å
³éç´å° ${t}`;default:return`Closed until ${t}`}}#N(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cerrado";case"fr":return"Fermé";case"zh":return"å·²å
³é";default:return"Closed"}}#A(t,e){switch(this.getTwoLetterLanguageCode()){case"es":return`ASAP (${t} a ${e}m)`;case"fr":return`Dès que possible de (${t} à ${e}m)`;case"zh":return`尽快ï¼${t} è³ ${e} åé`;default:return`ASAP (${t} to ${e}m)`}}#I(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Lo sentimos. ${t} no acepta pedidos en lÃnea para llevar en este momento.`;case"fr":return`Nous sommes désolés. ${t} nâaccepte pas les commandes à emporter en ligne pour le moment.`;case"zh":return`徿±æã${t} ç®å䏿¥åå°åºèªæçº¿ä¸è®¢åã`;default:return`We're sorry. ${t} is not accepting carryout online orders at this time.`}}#D(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Lo sentimos. ${t} no acepta pedidos en lÃnea de entrega en este momento.`;case"fr":return`Nous sommes désolés. ${t} nâaccepte pas les commandes de livraison en ligne pour le moment.`;case"zh":return`徿±æã${t} ç®å䏿¥åå¤åé
é线ä¸è®¢åã`;default:return`We're sorry. ${t} is not accepting delivery online orders at this time.`}}#k(){return this.getTwoLetterLanguageCode(),"Carryout"}#E(){return this.getTwoLetterLanguageCode(),"Dine In"}#O(){return this.getTwoLetterLanguageCode(),"Delivery"}#$(){switch(this.getTwoLetterLanguageCode()){case"es":return"Horario de atención al público";case"fr":return"Heures de bureau";case"zh":return"è¥ä¸æ¶é´";
10default:return"Business Hours"}}#F(){switch(this.getTwoLetterLanguageCode()){case"es":return"Horario de pedidos para llevar";case"fr":return"Heures pour les commandes à emporter";case"zh":return"å°åºèªææ¶é´";default:return"Carryout Hours"}}#x(){switch(this.getTwoLetterLanguageCode()){case"es":return"Horario para pedidos de entrega a domicilio";case"fr":return"Heures de livraison";case"zh":return"å¤åé
éæ¶é´";default:return"Delivery Hours"}}#R(t){switch(t){case LocationService.ORDER_TYPE_CARRYOUT:return this.#k();case LocationService.ORDER_TYPE_DELIVERY:return this.#O();default:return""}}#H(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Cerrado para ${t}`;case"fr":return`Fermé pour ${t}`;case"zh":return`å·²é对 ${t} å
³é`;default:return`Closed for ${t}`}}#U(){switch(this.getTwoLetterLanguageCode()){case"es":return"Abierto las 24 horas";case"fr":return"Ouvert 24 heures";case"zh":return"24 å°æ¶å¼æ¾";default:return"Open 24 Hours"}}#P(){switch(this.getTwoLetterLanguageCode()){case"es":return"Añadir al carrito";case"fr":return"Ajouter au panier";case"zh":return"æ·»å è³è´ç©è½¦";default:return"Add to Cart"}}#M(){switch(this.getTwoLetterLanguageCode()){case"es":return"Pedido en grupo";case"fr":return"Commande de groupe";case"zh":return"å¢è´";default:return"Group Order"}}#_(){switch(this.getTwoLetterLanguageCode()){case"es":return"RegÃstrese en las ofertas";case"fr":return"Sâinscrire pour des offres avantageuses";case"zh":return"注å以è·å伿 ";default:return"Sign Up For Deals"}}#z(){return this.getTwoLetterLanguageCode(),"Deals"}#G(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cambiar";case"fr":return"Changer";case"zh":return"æ´æ¹";default:return"Change"}}#Y(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cambiar el tipo de pedido, o la fecha y la hora";case"fr":return"Modifier le type de commande, ou la date et lâheure de la commande";case"zh":return"æ´æ¹è®¢åç±»åææ¥æåæ¶é´";default:return"Change Order Type, or date and time"}}#B(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cambiar dirección";case"fr":return"Changer dâadresse";case"zh":return"æ´æ¹å°å";default:return"Change Address"}}#q(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cambiar";case"fr":return"Changer";case"zh":return"æ´æ¹";default:return"Change"}}#K(){switch(this.getTwoLetterLanguageCode()){case"es":return"Establecer dirección";case"fr":return"Ãtablir lâadresse";case"zh":return"设置å°å";default:return"Set Address"}}#V(){switch(this.getTwoLetterLanguageCode()){case"es":return"Inicie su pedido para llevar.";case"fr":return"Commencez votre commande à emporter.";case"zh":return"ä¸å°åºèªæè®¢åã";default:return"Start your carryout order."}}#W(){switch(this.getTwoLetterLanguageCode()){case"es":return"Inicie su pedido de entrega.";case"fr":return"Commencez votre commande de livraison.";case"zh":return"ä¸å¤åé
é订åã";default:return"Start your delivery order."}}#Q(){switch(this.getTwoLetterLanguageCode()){case"es":return"Inicie su pedido para llevar o de entrega.";case"fr":return"Commencez votre commande à emporter ou de livraison.";case"zh":return"ä¸å°åºèªææå¤åé
é订åã";default:return"Start your carryout or delivery order."}}#j(){switch(this.getTwoLetterLanguageCode()){case"es":return"Comprobando disponibilidad";case"fr":return"Vérifiez la disponibilité";case"zh":return"æ¥çå¯ç¨æ§";default:return"Check Availability"}}#Z(){return this.getTwoLetterLanguageCode(),"Contains Alcohol"}#J(){return this.getTwoLetterLanguageCode(),"Gluten Free"}#X(){return this.getTwoLetterLanguageCode(),"Halal"}#tt(){return this.getTwoLetterLanguageCode(),"High Sodium"}#et(){return this.getTwoLetterLanguageCode(),"Kosher"}#nt(){return this.getTwoLetterLanguageCode(),"Organic"}#at(){return this.getTwoLetterLanguageCode(),"Seafood"}#ot(){return this.getTwoLetterLanguageCode(),"Served Raw"}#it(){return this.getTwoLetterLanguageCode(),"Spicy"}#st(){return this.getTwoLetterLanguageCode(),"Medium Spicy"}#rt(){return this.getTwoLetterLanguageCode(),"Very Spicy"}#lt(){return this.getTwoLetterLanguageCode(),"Extremely Spicy"}#ct(){return this.getTwoLetterLanguageCode(),"Vegan"}#dt(){return this.getTwoLetterLanguageCode(),"Vegetarian"}#ut(){return this.getTwoLetterLanguageCode(),"Contains Nuts"}#ht(){return this.getTwoLetterLanguageCode(),"Dairy Free"}#gt(){return this.getTwoLetterLanguageCode(),"Buffet"}#pt(){return this.getTwoLetterLanguageCode(),"BYOB"}#mt(){return this.getTwoLetterLanguageCode(),"Comfort Food"}#Ct(){return this.getTwoLetterLanguageCode(),"Family Style"}#yt(){return this.getTwoLetterLanguageCode(),"Farm To Table"}#wt(){return this.getTwoLetterLanguageCode(),"Gluten Free Options"}#ft(){return this.getTwoLetterLanguageCode(),"Halal Options"}#vt(){return this.getTwoLetterLanguageCode(),"Healthy Options"}#Lt(){return this.getTwoLetterLanguageCode(),"Keto Options"}#bt(){return this.getTwoLetterLanguageCode(),"Kids Menu"}#Tt(){return this.getTwoLetterLanguageCode(),"Kosher Options"}#St(){return this.getTwoLetterLanguageCode(),"Low Carb Options"}#Nt(){return this.getTwoLetterLanguageCode(),"Organic Options"}#At(){return this.getTwoLetterLanguageCode(),"Quick Bite"}#It(){return this.getTwoLetterLanguageCode(),"Vegan Options"}#Dt(){return this.getTwoLetterLanguageCode(),"Vegetarian Options"}#kt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Fuera de stock";case"fr":return"En rupture de stock";case"zh":return"缺货";default:return"Out of Stock"}}#Et(t,e){switch(this.getTwoLetterLanguageCode()){case"es":return`Todos los artÃculos de esta categorÃa deben ser pedidos con al menos ${t} ${e} de anticipación.`;case"fr":return`Tous les articles de cette catégorie doivent être commandés au moins ${t} ${e} à l'avance.`;case"zh":return`æ¤ç±»å«ä¸çææååå¿
é¡»è³å°æå ${t} ${e} é¢è®¢ã`;default:return`All items in this category must be ordered at least ${t} ${e} in advance.`}}#Ot(t,e){switch(this.getTwoLetterLanguageCode()){case"es":return`Debe hacer el pedido con ${t} ${e} de antelación.`;case"fr":return`Vous devez commander ${t} ${e} à lâavance.`;case"zh":return`å¿
é¡»æå ${t} ${e} ä¸åã`;default:return`Must order ${t} ${e} in advance.`}}#$t(){switch(this.getTwoLetterLanguageCode()){case"es":return"dÃas";case"fr":return"jours";case"zh":return"天";default:return"days"}}#Ft(){switch(this.getTwoLetterLanguageCode()){case"es":return"hora";case"fr":return"heure";case"zh":return"å°æ¶";default:return"hour"}}#xt(){switch(this.getTwoLetterLanguageCode()){case"es":return"horas";case"fr":return"heures";case"zh":return"å°æ¶";default:return"hours"}}#Rt(){return this.getTwoLetterLanguageCode(),"Icon Legend"}#Ht(){switch(this.getTwoLetterLanguageCode()){case"es":return"¡Pedidos en lÃnea muy pronto!";case"fr":return"Commande en ligne bientôt disponible!";case"zh":return"线ä¸è®¢è´å³å°æ¨åºï¼";default:return"Online Ordering Coming Soon!"}}#Ut(){switch(this.getTwoLetterLanguageCode()){case"es":return" (No disponible para el horario de su pedido)";case"fr":return" (Non disponible pour l'heure de votre commande)";
10case"zh":return" (æ¨çè®¢åæ¶é´ä¸å¯ç¨)";default:return" (not available for your order time)"}}#Pt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Leyenda del icono del menú";case"fr":return"Légende des icônes des menus";case"zh":return"èå徿 å¾ä¾";default:return"Menu Icon Legend"}}#Mt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Leyenda del icono del menú";case"fr":return"Légende des icônes des menus";case"zh":return"èå徿 å¾ä¾";default:return"Menu Icon Legend"}}#_t(){switch(this.getTwoLetterLanguageCode()){case"es":return"El código del cupón no está disponible para este pedido.";case"fr":return"Code coupon indisponible pour cette commande.";case"zh":return"伿 å¸ä»£ç 对æ¤è®¢åä¸å¯ç¨ã";default:return"Coupon code not available for this order."}}#zt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Este cupón no se puede aplicar";case"fr":return"Ce coupon ne peut pas être appliqué";case"zh":return"æ¤ä¼æ 叿 æ³ä½¿ç¨";default:return"This Coupon Cannot Be Applied"}}#Gt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Ver más descuentos";case"fr":return"Voir plus de réductions";case"zh":return"æ¥çæ´å¤ææ£";default:return"View More Discounts"}}#Yt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cargando descuentosâ¦";case"fr":return"Chargement des réductionsâ¦";case"zh":return"æ£å¨å è½½ææ£â¦";default:return"Loading discountsâ¦"}}#Bt(){switch(this.getTwoLetterLanguageCode()){case"es":return"No hay descuentos disponibles.";case"fr":return"Aucun rabais disponible.";case"zh":return"没æå¯ç¨çææ£ã";default:return"No discounts available."}}#qt(){switch(this.getTwoLetterLanguageCode()){case"es":return"El cupón solo funciona en";case"fr":return"Le coupon ne fonctionne que sur";case"zh":return"伿 å¸ä»
éç¨äºã";default:return"The coupon only works on"}}#Kt(){switch(this.getTwoLetterLanguageCode()){case"es":return"No se aplica a";case"fr":return"Ne s'applique pas à ";case"zh":return"ä¸éç¨äº";default:return"Doesnât apply to"}}#Vt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Disponibilidad";case"fr":return"Disponibilité";case"zh":return"å¯ç¨æ§";default:return"Availability"}}#Wt(){switch(this.getTwoLetterLanguageCode()){case"es":return"y";case"fr":return"et";case"zh":return"å";default:return"and"}}#Qt(){switch(this.getTwoLetterLanguageCode()){case"es":return"No disponible";case"fr":return"Non disponible";case"zh":return"ä¸å¯ç¨";default:return"Not Available"}}#jt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Código de cupón";case"fr":return"Code promo";case"zh":return"伿 ç ";default:return"Coupon Code"}}#Zt(){switch(this.getTwoLetterLanguageCode()){case"es":return"Descuento";case"fr":return"Réduction";case"zh":return"ææ£";default:return"Discount"}}#Jt(){switch(this.getTwoLetterLanguageCode()){case"es":return"El código de cupón";case"fr":return"Le code promo";case"zh":return"è¯¥ä¼æ ç ";default:return"The coupon code"}}#Xt(){switch(this.getTwoLetterLanguageCode()){case"es":return"no es válido y no se puede aplicar a tu pedido.";case"fr":return"n'est pas valide et ne peut pas être appliqué à votre commande.";case"zh":return"æ æï¼æ æ³åºç¨äºæ¨ç订åã";default:return"is not valid and cannot be applied to your order."}}#te(){return this.getTwoLetterLanguageCode(),"This coupon will not be applied to your total"}#ee(){return this.getTwoLetterLanguageCode(),"One or more requirements to recieve this discount have not been met."}#ne(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cerrar";case"fr":return"Fermer";case"zh":return"å
³é";default:return"Dismiss"}}#ae(){switch(this.getTwoLetterLanguageCode()){case"es":return"Cancelar";case"fr":return"Annuler";case"zh":return"åæ¶";default:return"Cancel"}}#oe(){switch(this.getTwoLetterLanguageCode()){case"es":return"Este cupón ha sido añadido a tu carrito";case"fr":return"Ce coupon a été ajouté à votre panier";case"zh":return"æ¤ä¼æ å¸å·²æ·»å å°æ¨çè´ç©è½¦";default:return"This Coupon has Been Added to Your Cart"}}#ie(){switch(this.getTwoLetterLanguageCode()){case"es":return"Continuar";case"fr":return"Continuer";case"zh":return"ç»§ç»";default:return"Proceed"}}#se(){switch(this.getTwoLetterLanguageCode()){case"es":return"haciendo clic en aplicar o usando el código";case"fr":return"en cliquant sur « appliquer » ou en utilisant le code";case"zh":return"ç¹å»åºç¨æä½¿ç¨ä»£ç ";default:return"by clicking 'apply' or using code"}}#re(){switch(this.getTwoLetterLanguageCode()){case"es":return"Se aplican algunas exclusiones";case"fr":return"Certaines exclusions s'appliquent";case"zh":return"ä¸äºä¾å¤æ
åµéç¨";default:return"Some exclusions apply"}}#le(){switch(this.getTwoLetterLanguageCode()){case"es":return"Aplicar cupón";
10case"fr":return"Appliquer le coupon";case"zh":return"ç³è¯·ä¼æ å¸";default:return"Apply Coupon"}}#ce(){switch(this.getTwoLetterLanguageCode()){case"es":return"¿Eliminar este cupón?";case"fr":return"Supprimer ce coupon ?";case"zh":return"å 餿¤ä¼æ å¸åï¼";default:return"Remove this coupon?"}}#de(){switch(this.getTwoLetterLanguageCode()){case"es":return"¿Estás seguro?";case"fr":return"Ãtes-vous sûr ?";case"zh":return"æ¨ç¡®å®åï¼";default:return"Are you sure?"}}#ue(){switch(this.getTwoLetterLanguageCode()){case"es":return"Al aplicar este cupón se eliminará tu otro descuento.";case"fr":return"En appliquant ce coupon, votre autre réduction sera supprimée.";case"zh":return"ä½¿ç¨æ¤ä¼æ å¸å°åæ¶æ¨å·²æçå
¶ä»ææ£ã";default:return"Applying this coupon will remove your other discount"}}#he(){switch(this.getTwoLetterLanguageCode()){case"es":return"A continuación, algunos de nuestros cupones únicamente en lÃnea que están actualmente activos.";case"fr":return"Ci-dessous, quelques-uns de nos coupons exclusivement en ligne actuellement actifs.";case"zh":return"以䏿¯æä»¬å½åææçä»
éå¨çº¿ä½¿ç¨ç伿 å¸ã";default:return"Below are some of our currently active online-only coupons."}}#ge(){switch(this.getTwoLetterLanguageCode()){case"es":return"Agregar un artÃculo gratuito eliminará el cupón que has aplicado.";case"fr":return"Lâajout dâun article gratuit annulera le coupon que vous avez utilisé.";case"zh":return"æ·»å å
è´¹ååå°ä¼åæ¶æ¨å·²ä½¿ç¨ç伿 å¸ã";default:return"Adding a free item will remove your applied coupon."}}#pe(){switch(this.getTwoLetterLanguageCode()){case"es":return"Agregar un código de cupón eliminará el artÃculo gratuito.";case"fr":return"L'ajout d'un code promo supprimera votre article gratuit.";case"zh":return"æ·»å 伿 å¸ä»£ç å°ä¼å 餿¨çå
è´¹ç©åã";default:return"Adding a coupon code will remove your free item."}}#me(){return this.getTwoLetterLanguageCode(),"This Coupon Cannot Be Applied Yet"}#Ce(t,e,n){return this.getTwoLetterLanguageCode(),`The coupon <strong>${t}</strong> [${e}] can be used starting <strong>${n}</strong>.`}#ye(){switch(this.getTwoLetterLanguageCode()){case"es":return"Ãnete a nuestra lista de correo";case"fr":return"Rejoignez notre liste de diffusion";case"zh":return"å å
¥æä»¬çé®ä»¶å表";default:return"Join our Mailing List"}}#we(){switch(this.getTwoLetterLanguageCode()){case"es":return"Ãnete ahora";case"fr":return"Rejoignez maintenant";case"zh":return"ç«å³å å
¥";default:return"Join Now"}}#fe(){return this.getTwoLetterLanguageCode(),"Image of "}#ve(t){switch(this.getTwoLetterLanguageCode()){case"es":return`Menú desplegable de horas de ${t}`;case"fr":return`Menu déroulant des heures de ${t}`;case"zh":return`${t} è¥ä¸æ¶é´ä¸æèå`;default:return`${t} Hours Dropdown`}}static initialize(t){null==I18nService.singleton&&(I18nService.singleton=new I18nService(t))}static translateVisitOurSocial(t){return this.singleton.#g(t)}static translateFooterPhoneTitle(){return this.singleton.#p()}static translateCallAtPhone(t){return this.singleton.#m(t)}static translatePoweredByMenufy(t){return this.singleton.#C(t)}static translateMenufy(){return this.singleton.#y()}static translateAccessibility(){return this.singleton.#w()}static translateTerms(){return this.singleton.#f()}static translateHelp(){return this.singleton.#v()}static translatePrivacy(){return this.singleton.#L()}static translateOrderTypeWillResume(t,e){return this.singleton.#b(t,e)}static translateNotAcceptingOrders(t){return this.singleton.#T(t)}static translateClosedUntil(t){return this.singleton.#S(t)}static translateAsap(t,e){return this.singleton.#A(t,e)}static translateNotAcceptingCarryout(t){return this.singleton.#I(t)}static translateNotAcceptingDelivery(t){return this.singleton.#D(t)}static translateCarryout(){return this.singleton.#k()}static translateDineIn(){return this.singleton.#E()}static translateDelivery(){return this.singleton.#O()}static translateOrderType(t){return this.singleton.#R(t)}static translateClosed(){return this.singleton.#N()}static translateClosedForOrderType(t){return this.singleton.#H(t)}static translateOpen24Hours(){return this.singleton.#U()}static translateCarryoutHours(){return this.singleton.#F()}static translateDeliveryHours(){return this.singleton.#x()}static translateBusinessHours(){return this.singleton.#$()}static translateAddToCart(){return this.singleton.#P()}static translateGroupOrder(){return this.singleton.#M()}static translateSignUpForDeals(){return this.singleton.#_()}static translateDeals(){return this.singleton.#z()}static translateChange(){return this.singleton.#G()}static translateChangeOrderTypeAriaLabel(){return this.singleton.#Y()}static translateChangeAddressAriaLabel(){return this.singleton.#B()}static translateChangeAddress(){return this.singleton.#q()}static translateSetAddress(){return this.singleton.#K()}static translateStartYourCarryoutOrder(){return this.singleton.#V()}static translateStartYourDeliveryOrder(){return this.singleton.#W()}static translateStartYourOrder(){return this.singleton.#Q()}static translateCheckAvailability(){return this.singleton.#j()}static translateFoodTagsContainsAlcohol(){return this.singleton.#Z()}static translateFoodTagsGlutenFree(){return this.singleton.#J()}static translateFoodTagsHalal(){return this.singleton.#X()}static translateFoodTagsHighSodium(){return this.singleton.#tt()}static translateFoodTagsKosher(){return this.singleton.#et()}static translateFoodTagsOrganic(){return this.singleton.#nt()}static translateFoodTagsSeafood(){return this.singleton.#at()}static translateFoodTagsServedRaw(){return this.singleton.#ot()}static translateFoodTagsSpicy(){return this.singleton.#it()}static translateFoodTagsSpicy2x(){return this.singleton.#st()}static translateFoodTagsSpicy3x(){return this.singleton.#rt()}static translateFoodTagsSpicy4x(){return this.singleton.#lt()}static translateFoodTagsVegan(){return this.singleton.#ct()}static translateFoodTagsVegetarian(){return this.singleton.#dt()}static translateFoodTagsContainsNuts(){return this.singleton.#ut()}static translateFoodTagsDairyFree(){return this.singleton.#ht()}static translateFoodTypesBuffet(){return this.singleton.#gt()}static translateFoodTypesBYOB(){return this.singleton.#pt()}static translateFoodTypesComfortFood(){return this.singleton.#mt()}static translateFoodTypesFamilyStyle(){return this.singleton.#Ct()}static translateFoodTypesFarmToTable(){return this.singleton.#yt()}static translateFoodTypesGlutenFreeOptions(){return this.singleton.#wt()}static translateFoodTypesHalalOptions(){return this.singleton.#ft()}static translateFoodTypesHealthyOptions(){return this.singleton.#vt()}static translateFoodTypesKetoOptions(){return this.singleton.#Lt()}static translateFoodTypesKidsMenu(){return this.singleton.#bt()}static translateFoodTypesKosherOptions(){return this.singleton.#Tt()}static translateFoodTypesLowCarbOptions(){return this.singleton.#St()}static translateFoodTypesOrganicOptions(){return this.singleton.#Nt()}static translateFoodTypesQuickBite(){return this.singleton.#At()}static translateFoodTypesVeganOptions(){return this.singleton.#It()}static translateFoodTypesVegetarianOptions(){return this.singleton.#Dt()}static translateOutOfStock(){return this.singleton.#kt()}static translateAdvancedOrderingDescription(t,e){return this.singleton.#
10Et(t,e)}static translateAdvancedOrderingDescriptionOld(t,e){return this.singleton.#Ot(t,e)}static translateAdvancedOrderingDays(){return this.singleton.#$t()}static translateAdvancedOrderingHour(){return this.singleton.#Ft()}static translateAdvancedOrderingHours(){return this.singleton.#xt()}static translateIconLegend(){return this.singleton.#Rt()}static translateOnlineOrderingComingSoon(){return this.singleton.#Ht()}static translateNotAvailableForYourOrderTime(){return this.singleton.#Ut()}static translateMenuIconLegendTitle(){return this.singleton.#Pt()}static translateMenuIconLegend(){return this.singleton.#Mt()}static translateCouponCodeError(){return this.singleton.#_t()}static translateCouponCodeCannotBeApplied(){return this.singleton.#zt()}static translateViewMoreDiscounts(){return this.singleton.#Gt()}static translateLoadingDiscounts(){return this.singleton.#Yt()}static translateNoDiscountsAvailable(){return this.singleton.#Bt()}static translateCouponWorksOnlyOn(){return this.singleton.#qt()}static translateDoesNotApplyTo(){return this.singleton.#Kt()}static translateAvailability(){return this.singleton.#Vt()}static translateOpen24Hours(){return this.singleton.#U()}static translateAnd(){return this.singleton.#Wt()}static translateNotAvailable(){return this.singleton.#Qt()}static translateCouponCode(){return this.singleton.#jt()}static translateDiscount(){return this.singleton.#Zt()}static translateTheCouponCode(){return this.singleton.#Jt()}static translateCouponCodeNotValid(){return this.singleton.#Xt()}static translateDismiss(){return this.singleton.#ne()}static translateCouponHasBeenAddedToYourCart(){return this.singleton.#oe()}static translateProceed(){return this.singleton.#ie()}static translateByClickingApply(){return this.singleton.#se()}static translateSomeExclusionsApply(){return this.singleton.#re()}static translateApplyCoupon(){return this.singleton.#le()}static translateCouponWillNotBeApplied(){return this.singleton.#te()}static translateRequirementsNotMet(){return this.singleton.#ee()}static translateCancel(){return this.singleton.#ae()}static translateRemoveCoupon(){return this.singleton.#ce()}static translateAreYouSure(){return this.singleton.#de()}static translateReplaceCouponDescription(){return this.singleton.#ue()}static translateBelowAreAvailableCoupons(){return this.singleton.#he()}static translateLoseCouponWarningDescription(){return this.singleton.#ge()}static translateAddingCouponRemoveQuickDeal(){return this.singleton.#pe()}static translateCouponCannotBeAppliedYet(){return this.singleton.#me()}static translateCouponAvailableFrom(t,e,n){return this.singleton.#Ce(t,e,n)}static translateJoinMailingList(){return this.singleton.#ye()}static translateJoinNow(){return this.singleton.#we()}static translateImageOf(){return this.singleton.#fe()}static translateLocationHoursContainer(t){return this.singleton.#ve(t)}}async function defaultFetchLocationGateway(t,e,n,a,o){let i=null,s=null;const r=`${e}://${n}:${a}/v1/locations/${t}?expand=4&api_key=${o}`;try{s=await fetch(r)}catch(t){window.console&&console.log("Failed to location cart.")}return s&&s.ok&&(i=await s.json()),i}class LocationService{static singleton=null;static locationLoadedEventName="location-loaded";static ORDER_TYPE_UNKNOWN=0;static ORDER_TYPE_CARRYOUT=1;static ORDER_TYPE_DELIVERY=2;static HOUR_TYPE_BUSINESS=0;static HOUR_TYPE_CARRYOUT=1;static HOUR_TYPE_DELIVERY=2;static HOUR_TYPE_CATEGORY=3;static ADVANCED_ORDERING_OFF=0;static ADVANCED_ORDERING_ON=1;static ADVANCED_ORDERING_WHEN_OPEN=2;static ELEVEN_FIFTY_NINE_PM_IN_MINUTES=1439;static CARRYOUT_MIN_WAIT=15;static CARRYOUT_MIN_WAIT=25;static DELIVERY_MIN_WAIT=15;static DELIVERY_MAX_WAIT=25;constructor(){this.fetchLocationGateway=defaultFetchLocationGateway}#t(t,e,n,a,o){this.protocol=t,this.host=e,this.port=n,this.apikey=a,this.context=o,this.#Le(),window.console&&console.log("LocationService initialized")}#Le(){this.data={}}#be(t){let e=t;for(;null!=e&&"location-context"!=e.nodeName.toLowerCase();)e=11!=e.nodeType?e.parentNode:e.host;return e}#Te(t){const e=this.#be(t);return Number(e.getAttribute("location-id"))}#Se(t){const e=this.#Te(t);return this.#Ne(e)}#Ae(t){return 0===t?7:t}#Ie(t){const e=t.isDst?t.utcOffsetHours+1:t.utcOffsetHours;t.tz=`UTC${e<0?"-":"+"}${String(Math.abs(e)).padStart(2,"0")}
10:${String(t.utcOffsetMinutes).padStart(2,"0")}`,t.fullHours.forEach((e=>{const n=luxon.DateTime.fromISO(e.openTime,{zone:t.tz}),a=luxon.DateTime.fromISO(e.closeTime,{zone:t.tz});e.weekday=this.#Ae(e.dayOfWeek),e.openDateTime=n,e.openTimeInMinutes=n.diff(n.startOf("day"),"minutes").toObject().minutes,e.closeDateTime=a,e.closeTimeInMinutes=a.diff(a.startOf("day"),"minutes").toObject().minutes})),t.fullHours.sort(((t,e)=>t.openTimeInMinutes-e.openTimeInMinutes)),t.fullHours.sort(((t,e)=>t.weekday-e.weekday)),t.carryoutWaitTimes.forEach((t=>{t.weekday=this.#Ae(t.dayOfWeek)})),t.deliveryWaitTimes.forEach((t=>{t.weekday=this.#Ae(t.dayOfWeek)})),t.holidayShutOffs.forEach((e=>{e.startDateTime=luxon.DateTime.fromISO(e.startTime,{zone:t.tz}),e.stopDateTime=luxon.DateTime.fromISO(e.stopTime,{zone:t.tz})})),t.deliveryShutOffs.forEach((e=>{e.startDateTime=luxon.DateTime.fromISO(e.startTime,{zone:t.tz}),e.stopDateTime=luxon.DateTime.fromISO(e.stopTime,{zone:t.tz})}))}async#De(t){let e=await this.fetchLocationGateway(t,this.protocol,this.host,this.port,this.apikey);if(e){if(this.#Ie(e),this.data[String(t)]=e,this.context){let t=new CustomEvent(LocationService.locationLoadedEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:e});this.context.dispatchEvent(t)}else console.log("LocationService. Context is null or undefined");if(window.console){console.log(`Location ${e.id} tz ${e.tz}`);let t=this.#ke(e.id);console.log(`Location ${e.id} time ${t}`);const{isOpen:n,nextOpen:a}=this.#Ee(e.id,LocationService.ORDER_TYPE_CARRYOUT,t);console.log(`Location ${e.id} ${n?"is":"is not"} open for carryout`),!n&&a&&console.log(`Location ${e.id} will open for carryout at ${a}`);const{isOpen:o,nextOpen:i}=this.#Ee(e.id,LocationService.ORDER_TYPE_DELIVERY,t);console.log(`Location ${e.id} ${o?"is":"is not"} open for delivery`),!o&&i&&console.log(`Location ${e.id} will open for delivery at ${i}`)}}}#Ne(t){return this.data&&this.data.hasOwnProperty(String(t))?this.data[String(t)]:null}#Ee(t,e,n,a,o){let i=null,s=a,r=o;const l=this.#Ne(t);n.weekday;if(e==LocationService.ORDER_TYPE_CARRYOUT&&!l.isAcceptingCarryout||e==LocationService.ORDER_TYPE_DELIVERY&&!l.isAcceptingDelivery||-1==l.fullHours.findIndex((t=>t.hourType!=LocationService.HOUR_TYPE_CATEGORY)))return{nextOpen:null,isOpen:!1};if((l.advancedOrdering==LocationService.ADVANCED_ORDERING_OFF||l.advancedOrdering==LocationService.ADVANCED_ORDERING_WHEN_OPEN&&0==a)&&(s=!0,r=!0),!s)return{nextOpen:null,isOpen:!0};if(i=this.#Oe(l,n,e==LocationService.ORDER_TYPE_CARRYOUT?LocationService.HOUR_TYPE_CARRYOUT:LocationService.HOUR_TYPE_DELIVERY,e),null!=i)return{nextOpen:i,isOpen:n.toMillis()===i.toMillis()};if(i=this.#Oe(l,n,LocationService.HOUR_TYPE_BUSINESS,e),i.toMillis()!==n.toMillis())return{nextOpen:i,isOpen:!1};if(r){let t=null,a=null;e==LocationService.ORDER_TYPE_DELIVERY?(t=l.deliveryWaitTimes.find((t=>n.weekday==t.weekday)),a=t?t.minWaitMinutes:LocationService.DELIVERY_MIN_WAIT):(t=l.carryoutWaitTimes.find((t=>n.weekday==t.weekday)),a=t?t.minWaitMinutes:LocationService.CARRYOUT_MIN_WAIT);const o=n.plus({minutes:a});if(i=this.#Oe(l,o,LocationService.HOUR_TYPE_BUSINESS,e),i.toMillis()!==o.toMillis())return{nextOpen:i,isOpen:!1}}return{nextOpen:n,isOpen:!0}}#Oe(t,e,n,a){let o=this.#$e(t,e,n),i=[...t.holidayShutOffs];a==LocationService.ORDER_TYPE_DELIVERY&&i.concat(t.deliveryShutOffs),i.sort(((t,e)=>t.startDateTime>e.startDateTime?-1:t.startDateTime==e.startDateTime?0:1));let s=i.find((t=>t.startDateTime<=o&&t.stopDateTime>o));return s?this.#Oe(t,s.stopDateTime,n,a):o}#Fe(t,e){const n=t.startOf("day"),a=t.diff(n,"minutes").toObject().minutes;return t.weekday==e.weekday&&e.openTimeInMinutes<=a&&(e.closeTimeInMinutes>=a||e.closeTimeInMinutes==LocationService.ELEVEN_FIFTY_NINE_PM_IN_MINUTES)}#xe(t,e){const n=t.startOf("day"),a=t.diff(n,"minutes").toObject().minutes;return t.weekday==e.weekday&&e.openTimeInMinutes>a||t.weekday<e.weekday}#$e(t,e,n){const a=t.fullHours.filter((t=>t.hourType==n)).sort(((t,e)=>t.openTimeInMinutes-e.openTimeInMinutes)).sort(((t,e)=>t.weekday-e.weekday));let o=a.find((t=>this.#Fe(e,t)));if(o)return e;if(o=a.find((t=>this.#xe(e,t))),o){const n=o.openDateTime,a=e.plus({days:o.weekday-e.weekday});return luxon.DateTime.fromObject({year:a.year,month:a.month,day:a.day,hour:n.hour,minute:n.minute},{zone:t.tz})}if(o=a.length>0?a[0]:null,o){const n=o.openDateTime,a=e.plus({days:o.weekday+7-e.weekday});return luxon.DateTime.fromObject({year:a.year,month:a.month,day:a.day,hour:n.hour,minute:n.minute},{zone:t.tz})}return null}#Re(t,e){return t.fullHours.filter((t=>t.hourType==e))}#He(t){return this.#Re(t,LocationService.HOUR_TYPE_BUSINESS)}#Ue(t){return this.#Re(t,LocationService.HOUR_TYPE_CARRYOUT)}#Pe(t){return this.#Re(t,LocationService.HOUR_TYPE_DELIVERY)}#Me(t,e){return this.#Ne(t).fullHours.filter((t=>t.weekday==e))}#_e(t,e){return this.#Me(t,e).filter((t=>t.hourType==LocationService.HOUR_TYPE_BUSINESS))}#ze(t,e){return this.#Me(t,e).filter((t=>t.hourType==LocationService.HOUR_TYPE_CARRYOUT))}#Ge(t,e){return this.#Me(t,e).filter((t=>t.hourType==LocationService.HOUR_TYPE_DELIVERY))}#Ye(t){return 0!=this.#Ue(t).length}#Be(t){return t.isAcceptingCarryout&&this.#Ye(t)}
10#qe(t){return 0!=this.#Pe(t).length}#Ke(t){return t.isAcceptingDelivery&&this.#qe(t)}#Ve(t){const e=this.#Ne(t);return!(!e.isAcceptingCarryout&&!e.isAcceptingDelivery)&&(0!=this.#He(e).length||(!!this.#Be(e)||(!!this.#Ke(e)||void 0)))}static BUSINESS_HOURS_KEY="Business Hours";static CARRYOUT_HOURS_KEY="Carryout Hours";static DELIVERY_HOURS_KEY="Delivery Hours";#We(t,e){switch(e){case LocationService.HOUR_TYPE_BUSINESS:return t.hours.hasOwnProperty(LocationService.BUSINESS_HOURS_KEY)?t.hours[LocationService.BUSINESS_HOURS_KEY]:[];case LocationService.HOUR_TYPE_CARRYOUT:return t.hours.hasOwnProperty(LocationService.CARRYOUT_HOURS_KEY)?t.hours[LocationService.CARRYOUT_HOURS_KEY]:[];case LocationService.HOUR_TYPE_DELIVERY:return t.hours.hasOwnProperty(LocationService.DELIVERY_HOURS_KEY)?t.hours[LocationService.DELIVERY_HOURS_KEY]:[];default:return[]}}#Qe(t,e){const n=this.#Ne(t);let a=[];return a=e==LocationService.ORDER_TYPE_CARRYOUT&&n.isAcceptingCarryout&&n.showCarryoutHours&&this.#Ye(n)?this.#We(n,LocationService.HOUR_TYPE_CARRYOUT):e==LocationService.ORDER_TYPE_DELIVERY&&n.isAcceptingDelivery&&n.showDeliveryHours&&this.#qe(n)?this.#We(n,LocationService.HOUR_TYPE_DELIVERY):this.#We(n,LocationService.HOUR_TYPE_BUSINESS),a}#je(t){const e={carryout:this.#Qe(t,LocationService.ORDER_TYPE_CARRYOUT)};return e.delivery=this.#Qe(t,LocationService.ORDER_TYPE_DELIVERY),e.business=this.#Qe(t,LocationService.ORDER_TYPE_UNKNOWN),e}#ke(t){const e=this.#Ne(t);return e?luxon.DateTime.local({zone:e.tz}):null}static initialize(t,e,n,a,o){this.singleton.#t(t,e,n,a,o)}static async fetchLocation(t){await this.singleton.#De(t)}static getLocation(t){return this.singleton.#Ne(t)}static isOrderTypeOpen(t,e,n,a,o){return this.singleton.#Ee(t,e,n,a,o)}static isAcceptingOrders(t){return this.singleton.#Ve(t)}static orderTypeHoursSummary(t,e){return this.singleton.#Qe(t,e)}static allOrderTypeHoursSummary(t){return this.singleton.#je(t)}static getBusinessHoursByWeekday(t,e){return this.singleton.#_e(t,e)}static getLocationByElement(t){return this.singleton.#Se(t)}static getLocationTime(t){return this.singleton.#ke(t)}static occursWithin(t,e){return this.singleton.#Fe(t,e)}static reset(){return this.singleton.#Le()}}async function defaultFetchSettingsGateway(t,e,n,a,o,i){let s=null,r=null;const l=`${e}://${n}:${a}/v1/sitesettings/locations/${t}?api_key=${o}${i?`&pageId=${i}`:""}`;try{r=await fetch(l)}catch(t){window.console&&console.log("Failed to settings cart.")}return r&&r.ok&&(s=await r.json()),s}function defaultInlineSettingsDataLoader(){const t=document.getElementById("website-settings");return t?(window.console&&console.log("defaultInlineDataLoader: found data"),JSON.parse(t.textContent)):null}LocationService.singleton=new LocationService;class SettingsService{static singleton=null;static settingsLoadedEventName="settings-loaded";constructor(){this.fetchSettingsGateway=defaultFetchSettingsGateway,this.inlineSettingsDataLoader=defaultInlineSettingsDataLoader}#t(t,e,n,a,o,i){this.protocol=t,this.host=e,this.port=n,this.apikey=a,this.hasInlineData=i,this.data={},this.context=o,window.console&&console.log(`SettingsService: Initialize. Inline data? ${this.hasInlineData}`),this.hasInlineData&&this.#a()}#a(){window.console&&console.log("SettingsService: attempting to load inline data.");const t=this.inlineSettingsDataLoader();t&&(this.data[String(t.locationId)]=t)}#be(t){let e=t;for(;null!=e&&"settings-context"!=e.nodeName.toLowerCase();)e=11!=e.nodeType?e.parentNode:e.host;return e}#Te(t){const e=this.#be(t);return Number(e.getAttribute("location-id"))}async#Ze(t,e){let n=await this.fetchSettingsGateway(t,this.protocol,this.host,this.port,this.apikey,e);
10if(n){this.data[String(t)]=n;let e=new CustomEvent(SettingsService.settingsLoadedEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:n});this.context.dispatchEvent(e)}}#Je(t){return this.data.hasOwnProperty(String(t))?this.data[String(t)]:null}#Xe(t){const e=this.#Te(t);return this.#Je(e)}static initialize(t,e,n,a,o,i){this.singleton.#t(t,e,n,a,o,i)}static async fetchSettings(t,e){await this.singleton.#Ze(t,e)}static getSettings(t){return this.singleton.#Je(t)}static getSettingsByElement(t){return this.singleton.#Xe(t)}}async function defaultFetchCouponsGateway(t,e,n,a,o){let i=null,s=null;const r=`${e}://${n}:${a}/frontend/v1/locations/${t}/coupons?api_key=${o}`;try{s=await fetch(r)}catch(t){window.console&&console.log("Failed to fetch coupons.")}return s&&s.ok&&(i=await s.json()),i}async function defaultFetchQuickDealsGateway(t,e,n,a,o){let i=null,s=null;const r=`${e}://${n}:${a}/v1/locations/${t}/quickdeals?api_key=${o}`;try{s=await fetch(r)}catch(t){window.console&&console.log("Failed to fetch Quick Deals.")}return s&&s.ok&&(i=await s.json()),i}SettingsService.singleton=new SettingsService;class DealsService{static singleton=null;static couponsLoadedEvent="coupons-loaded";static quickDealsLoadedEvent="quickDeals-loaded";constructor(){this.fetchCouponsGateway=defaultFetchCouponsGateway,this.fetchQuickDealsGateway=defaultFetchQuickDealsGateway}#t(t,e,n,a,o){this.protocol=t,this.host=e,this.port=n,this.apikey=a,this.data={},this.context=o}static initialize(t,e,n,a,o){this.singleton.#t(t,e,n,a,o)}#be(t){let e=t;for(;null!=e&&"location-context"!=e.nodeName.toLowerCase();)e=11!=e.nodeType?e.parentNode:e.host;return e}#Te(t){const e=this.#be(t);return Number(e.getAttribute("location-id"))}#tn(t){const e=this.#Te(t);return this.#en(e)}async#nn(t){let e=await this.fetchCouponsGateway(t,this.protocol,this.host,this.port,this.apikey);e.forEach((t=>{const e=null!==t.unixStartDate&&void 0!==t.unixStartDate?luxon.DateTime.fromSeconds(t.unixStartDate).setZone("UTC"):null,n=null!==t.unixEndDate&&void 0!==t.unixEndDate?luxon.DateTime.fromSeconds(t.unixEndDate).setZone("UTC"):null;t.luxonStartDate=e,t.luxonEndDate=n})),this.data[`coupons_${String(t)}`]=e;const n=new CustomEvent(DealsService.couponsLoadedEvent,{bubbles:!0,composed:!0,cancelable:!0,detail:e});this.context.dispatchEvent(n)}#an(t){return!!this.data&&this.data.hasOwnProperty(`coupons_${String(t)}`)}#en(t){return t?this.#an(t)?this.data[`coupons_${String(t)}`]:[]:this.#tn(this.context)}#on(t,e){let n=null;const a=this.#en(t);return null!==a&&(n=a.find((t=>t.id===e))),n}async#in(t){let e=await this.fetchQuickDealsGateway(t,this.protocol,this.host,this.port,this.apikey);this.data[`quickDeals_${String(t)}`]=e}#sn(t){return!!this.data&&this.data.hasOwnProperty(`quickDeals_${String(t)}`)}#rn(t){return this.#sn(t)?this.data[`quickDeals_${String(t)}`]:[]}static async loadCoupons(t){await this.singleton.#nn(t)}static getCoupons(t){return this.singleton.#en(t)}static getCoupon(t,e){return this.singleton.#on(t,e)}static async loadQuickDeals(t){await this.singleton.#in(t)}static getQuickDeals(t){return this.singleton.#rn(t)}}async function defaultFetchCartGateway(t,e,n,a,o,i,s){const r=`${t}://${e}:${n}/v1/locations/${o}/orders/${i}?api_key=${encodeURIComponent(a)}&cartKey=${encodeURIComponent(s)}&dontValidate=true`;let l=null,c=null;try{c=await fetch(r)}catch(t){window.console&&console.log(`defaultFetchCartGateway fetch cart failed: ${t}`)}if(c&&c.ok){l=(await c.json()).order??{}}return l}async function defaultFetchCartRenderedGateway(){const t=new URLSearchParams(document.location.search).get("newDesign"),e="/website/cart"+(null!==t&&"true"===t?"?newDesign=true":"");let n=null,a=null;try{a=await fetch(e)}catch(t){window.console&&console.log(`defaultFetchCartRenderedGateway fetch cart failed: ${t}`)}return a&&a.ok&&(n=await a.json()),n}function defaultGetLocationGateway(t){return LocationService.getLocation(t)}async function defaultApplyCouponGateway(t,e,n,a,o,i,s,r){const l=`${t}://${e}:${n}/frontend/v1/locations/${o}/orders/${i}/coupon?api_key=${a}&cartKey=${s}&coupon=${r}`;let c=null,d=null;try{d=await fetch(l,{method:"POST"})}catch(t){window.console&&console.log("Failed to fetch Quick Deals.")}return d&&d.ok&&(c=await d.json()),c}async function defaultRemoveItemGateway(t,e,n,a,o,i,s,r){const l=`${t}://${e}:${n}/frontend/v1/locations/${o}/orders/${i}/items/${r}?api_key=${a}
10&cartKey=${s}`;try{response=await fetch(l,{method:"DELETE"})}catch(t){window.console&&console.log("Failed to fetch remove Order Item.")}}async function defaultApplyQuickDealGateway(t,e,n,a,o,i,s,r){const l=`${t}://${e}:${n}/frontend/v1/locations/${o}/orders/${i}/quickDeal?api_key=${a}&cartKey=${s}&quickDealId=${r}`;let c=null,d=null;try{d=await fetch(l,{method:"POST"})}catch(t){window.console&&console.log("Failed to fetch Quick Deals.")}return d&&d.ok&&(c=await d.json()),c}async function defaultCheckoutGateway(t,e,n,a,o,i,s,r){let l=`/Website/Checkout/?locationId=${this.locationId}`,c=null,d=null;(_gaClientId||r)&&(l+=_gaClientId?`gaClientId=${_gaClientId}&`:""+r?"newDesign=true":"");try{d=await fetch(l,{method:"POST"})}catch(t){window.console&&console.log("Failed to get Checkout URL.")}return d&&d.ok&&(c=await d.json()),c}function defaultCouponFromUrlGateway(){const t=new URLSearchParams(document.location.search).get("code");return window.console&&console.log(`urlCoupon: ${t}`),t}function defaultGetCouponGateway(t){return DealsService.getCoupons(t)}function defaultGetSavedCouponGateway(){return localStorage.getItem("url-coupon")}function defaultSetSavedCouponGateway(t){localStorage.setItem("url-coupon",t)}function clearQueryParams(t){const e=new URL(window.location.href);e.searchParams.delete(t);const n=e.search?e.href:e.href.replace("?","");window.history.propertyIsEnumerable({},document.title,n)}async function defaultRemoveCouponGateway(){const t=`/Website/RemoveCoupon/?newDesign=${FlagService.isNewDesignEnabled()}`;let e=null,n=null;try{n=await fetch(t,{method:"POST"})}catch(t){window.console&&console.log("Failed to Remove Coupon.")}return n&&n.ok&&(e=await n.json()),e}async function defaultAddQuickDealGateway(t){const e=`/Website/SetQuickDeal/?id=${t}`;let n=null,a=null;try{a=await fetch(e,{method:"POST"})}catch(t){window.console&&console.log("Failed to Add Quick Deal.")}return a&&a.ok&&(n=await a.json()),n}async function defaultRemoveCouponCookieGateway(){let t=null,e=null;try{e=await fetch("/Website/RemoveCouponCookie/",{method:"POST"})}catch(t){window.console&&console.log("Failed to Remove Coupon.")}return e&&e.ok&&(t=await e.json()),t}async function defaultReplaceCouponCookieGateway(t){const e=`/Website/ForceReplaceCouponCookie?couponId=${t}`;let n=null;try{n=await fetch(e)}catch(t){window.console&&(console.log("Failed to Replace Coupon."),console.log(t))}n&&n.ok&&(clearQueryParams("code"),this.context.dispatchEvent(new CustomEvent("update-cart",{bubbles:!0,composed:!0})))}DealsService.singleton=new DealsService;class CartService{static singleton=null;static cartLoadedEventName="cart-loaded";static cartToggledEventName="cart-toggled";static cartUpdatedEventName="cart-updated";static legacyCartUpdatedEventName="cart-updated-legacy";static orderTimeUpdatedEventName="order-time-updated";static cartCouponAddedEventName="cart-coupon-added";static futureCouponAddedEventName="future-coupon-added";static cartQuickDealAddedEventName="quick-deal-added";static itemRemovedEventName="item-removed";static reloadCartEventName="reload-cart";static applyUrlCouponEventName="apply-url-coupon";static checkoutEventName="checkout";static checkoutStartedEventName="checkout-started";static checkoutEndEventName="checkout-end";static loseCouponWarningEventName="lose-coupon-warning";static loseQuickDealWarningEventName="lose-quick-deal-warning";constructor(){this.awaitingLocation=[],this.awaitingCoupons=[],this.awaitingFlags=[],this.fetchCartGateway=defaultFetchCartGateway,this.fetchCartRenderedGateway=defaultFetchCartRenderedGateway,this.getLocationGateway=defaultGetLocationGateway,this.getCouponsGateway=defaultGetCouponGateway,this.applyCouponGateway=defaultApplyCouponGateway,this.getCodeFromUrlGateway=defaultCouponFromUrlGateway,this.applyQuickDealGateway=defaultApplyQuickDealGateway,this.removeItemGateway=defaultRemoveItemGateway,this.checkoutGateway=defaultCheckoutGateway,this.getSavedCouponGateway=defaultGetSavedCouponGateway,this.setSavedCouponGateway=defaultSetSavedCouponGateway,this.removeCouponGateway=defaultRemoveCouponGateway,this.removeCouponCookieGateway=defaultRemoveCouponCookieGateway,this.addQuickDealGateway=defaultAddQuickDealGateway,this.replaceCouponCookieGateway=defaultReplaceCouponCookieGateway,this.flagsReady=!1,this.urlCoupon=null,this.data=null,document.addEventListener(LocationService.locationLoadedEventName,this.onLocationData.bind(this)),document.addEventListener(
10DealsService.couponsLoadedEvent,this.onCouponData.bind(this)),document.addEventListener(FlagService.flagsReadyEventName,this.onFlagsReady.bind(this))}#t(t,e,n,a,o){this.protocol=t,this.host=e,this.port=n,this.apikey=a,this.#Le(),this.context=o}#Le(){this.data=null}onLocationData(t){for(;this.awaitingLocation.length>0;){this.awaitingLocation.pop()()}}#ln(){let t=new CustomEvent(CartService.cartToggledEventName,{bubbles:!0,composed:!0,cancelable:!0});this.context.dispatchEvent(t)}#cn(t,e){this.getLocationGateway(t)?e():this.awaitingLocation.push(e)}onCouponData(t){for(;this.awaitingCoupons.length>0;){this.awaitingCoupons.pop()()}}#dn(t,e){this.getCouponsGateway(t)?e():this.awaitingCoupons.push(e)}onFlagsReady(){for(this.flagsReady=!0;this.awaitingFlags.length>0;){this.awaitingFlags.pop()()}}#un(t){this.flagsReady||FlagService.areFlagsReady()?t():this.awaitingFlags.push(t)}#hn(t,e,n){return new Promise((async(a,o)=>{window.console&&console.log(`CartService: in fetchCart promise. cartId: ${e} cartKey: ${n}`);let i=null;"number"==typeof e&&!Number.isNaN(e)&&e>0?i=await this.fetchCartGateway(this.protocol,this.host,this.port,this.apikey,t,e,n):o(`CartService: Bad cart Id ${e}`),i?(window.console&&console.log(`CartService: have result. Before #whenLocationLoaded. cartId: ${e} cartKey: ${n}`),this.#cn(t,(async()=>{window.console&&console.log(`CartService: in #whenLocationLoaded. cartId: ${e} cartKey: ${n}`),this.#gn(t,i);let o=null;o=this.data?new CustomEvent(CartService.cartUpdatedEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:i}):new CustomEvent(CartService.cartLoadedEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:i}),this.data=i,this.context.dispatchEvent(o),a(i)}))):o("CartService: Failed to fetch cart")}))}#pn(t){this.urlCoupon=this.getCodeFromUrlGateway(),this.urlCoupon&&this.#dn(t,(()=>{this.#cn(t,(()=>{let e=CartService.cartCouponAddedEventName;if(this.urlCoupon){const n=this.getCouponsGateway(t),a=this.urlCoupon.toLowerCase();let o=n.find((t=>t.code.toLowerCase()===a));const i=this.#mn();let s=!1;if(o){const t=i.utcFulfillDateTime?i.utcFulfillDateTime:luxon.DateTime.now();null!==o.luxonStartDate&&o.luxonStartDate>t?e=CartService.futureCouponAddedEventName:s=!0}else o={code:this.urlCoupon};this.data={...i,coupon:{...o,valid:s}};let r=new CustomEvent(e,{bubbles:!0,composed:!0,cancelable:!0,detail:this.data.coupon});this.context.dispatchEvent(r),s||this.#Cn()}}))}))}#gn(t,e){const n=this.getLocationGateway(t);e.itemCount=e?.items?.reduce(((t,e)=>t+e.quantity),0)??0,e.utcFulfillDateTime=e.fulfillDate?luxon.DateTime.fromMillis(1e3*e.fulfillDate,{zone:"utc"}):null,e.locationFulfillDateTime=e.utcFulfillDateTime?e.utcFulfillDateTime.toLocal({zone:n.tz}):null,e.locationFulfillDateTime&&window.console&&(console.log(`Order fulfill date (utc): ${e.utcFulfillDateTime.toLocaleString(luxon.DateTime.DATETIME_SHORT)}`),console.log(`Order fulfill date: ${e.locationFulfillDateTime.toLocaleString(luxon.DateTime.DATETIME_SHORT)}`)),e.utcOrderDateTime=e.orderDate?luxon.DateTime.fromMillis(1e3*e.orderDate,{zone:"utc"}):null,e.locationOrderDateTime=e.utcOrderDateTime?e.utcOrderDateTime.toLocal({zone:n.tz}):null,e.lastCartRefresh=luxon.DateTime.local({zone:n.tz})}async#yn(){const t=await this.fetchCartRenderedGateway();if(t){let e=new CustomEvent(CartService.legacyCartUpdatedEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:{cartId:t.id,cartKey:t.cartKey}});this.context.dispatchEvent(e)}return t}#mn(){return this.data??{orderType:LocationService.ORDER_TYPE_UNKNOWN,itemCount:0,items:[],subtotal:0}}#wn(){return this.#mn().items}async#fn(t,e,n){const a=`/Website/SetOrderTime?orderType=${t}&orderTime=${e}&tableNumber=${n}`;let o=null,i=null;try{i=await fetch(a,{method:"POST"})}catch(t){}if(i&&i.ok){o=await i.json();let t=new CustomEvent(CartService.orderTimeUpdatedEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:{cartId:o.cartId,cartKey:o.cartKey}});this.context.dispatchEvent(t)}return o}async#vn(t){const e=this.#mn();if(e.quickDealId){const n=new CustomEvent(CartService.loseQuickDealWarningEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:{code:t,locationId:e.locationId}});this.context.dispatchEvent(n)}else if(e.locationId)await this.#Ln(e.locationId,t);else{const e=DealsService.getCoupons().find((e=>e.code.toLowerCase()==t.toLowerCase()));e&&await this.#bn(e.id)}}async#Ln(t,e){const n=this.#mn(),a=this.getCouponsGateway(t),o=e.toLowerCase(),i=a.find((t=>t.code.toLowerCase()===o)),s=this.getSavedCouponGateway();if(void 0!==i){if(n.couponId||s){const t={couponId:i.id};return void window.dispatchEvent(new CustomEvent("replace-deal-warning",{detail:t,bubbles:!0,composed:!0}))}const e=await this.applyCouponGateway(this.protocol,this.host,this.port,this.apikey,t,n.id,n.cartKey,o);null===e||null!==e.errors&&0!==e.errors.length?await this.#bn(i.id):this.setSavedCouponGateway(String(i.id)),this.data={...n,coupon:{...i,valid:!0}}}else void 0===i&&(this.urlCoupon=null,clearQueryParams("code"),window.console&&console.log(`Coupon not found ${e}`),null!==urlCouponInput&&urlCouponInput.setAttribute("value",""),this.data={...n,coupon:{code:e,valid:!1}});let r=new CustomEvent(CartService.cartCouponAddedEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:this.data.coupon});this.context.dispatchEvent(r)}async#Tn(t){const e=DealsService.getQuickDeals(this.locationId).find((e=>e.id===t));let n=!1;if(void 0!==e){const a=this.#mn();null!==await this.applyQuickDealGateway(this.protocol,this.host,this.port,this.apikey,this.locationId,a.id,a.cartKey,t)&&(n=!0),this.data={...a,quickDeal:{...e,valid:n}};let o=new CustomEvent(CartService.cartQuickDealAddedEventName,{bubbles:!0,composed:!0,cancelable:!0});this.context.dispatchEvent(o)}n||alert(`${code} ${I18nService.translateCouponCodeError()}`)}async#Sn(t){const e=this.#wn(),n=e.find((e=>e.id==t));if(null!=n){const a=await this.removeItemGateway(this.protocol,this.host,this.port,this.apikey,this.locationId,this.data.id,this.data.cartKey,t);if(null!=a)alert(a.message);else{const t=e.indexOf(n);e.splice(t,1)}}const a=new CustomEvent(CartService.itemRemovedEventName,{bubbles:!0,composed:!0,cancelable:!0});this.context.dispatchEvent(a)}#Nn(){window.location.hash="address"}#An(){window.location.hash="settings"}async#In(){const t=FlagService.isNewDesignEnabled(),e=await this.checkoutGateway(this.protocol,this.host,this.port,this.apikey,this.locationId,this.data.id,this.data.cartKey,t);if(e&&e.success)if(e.groupOrderSubmitted){notify("success",Content_Website_Scripts_Order_OrderSubmitted);const t=new CustomEvent(CartService.reloadCartEventName,{bubbles:!0,composed:!0,cancelable:!0});this.dispatchEvent(t)}else location.href=e.checkoutUrl;const n=new CustomEvent(CartService.checkoutEndEventName,{bubbles:!0,composed:!0,cancelable:!0});this.context.dispatchEvent(n)}async#bn(t){const e=this.getSavedCouponGateway();null!==e&&e===String(t)||this.setSavedCouponGateway(String(t)),await this.replaceCouponCookieGateway(t)}async#Dn(){try{const t=await this.removeCouponGateway();t&&t.success&&(this.#Cn(),this.context.dispatchEvent(new CustomEvent("update-cart",{bubbles:!0,composed:!0})))}catch(t){window.console&&(console.log("Failed to Remove Coupon."),console.log(t))}}async#kn(t){const e=await this.addQuickDealGateway(t);e&&(e.requiresPromos?$(".email-promotions").removeClass("d-none"):$(".email-promotions").hasClass("d-none")||$(".email-promotions").addClass("d-none"))}#En(){return this.#mn()}
10#On(){return this.getSavedCouponGateway()}async#Cn(){clearQueryParams("code"),localStorage.removeItem("url-coupon"),await this.removeCouponCookieGateway()}static initialize(t,e,n,a,o){this.singleton.#t(t,e,n,a,o)}static toggleCart(){this.singleton.#ln()}static fetchCart(t,e,n){return this.singleton.#hn(t,e,n)}static tryApplyUrlCoupon(t){this.singleton.#pn(t)}static async fetchCartRendered(){return await this.singleton.#yn()}static getCart(){return this.singleton.#mn()}static getCartItems(){return this.singleton.#wn()}static getCartErrors(){return this.singleton.#En()}static getSavedCoupon(){return this.singleton.#On()}static async tryApplyCoupon(t,e){await this.singleton.#vn(t,e)}static async applyCoupon(t,e){await this.singleton.#Ln(t,e)}static async applyQuickDeal(t){await this.singleton.#Tn(t)}static async removeItem(t){await this.singleton.#Sn(t)}static openAddressModal(){this.singleton.#Nn()}static openOrderSettingsModal(){this.singleton.#An()}static async checkout(){await this.singleton.#In()}static async replaceCouponCookie(t){await this.singleton.#bn(t)}static async removeCoupon(){await this.singleton.#Dn()}static async addQuickDeal(t){await this.singleton.#kn(t)}static async updateOrderTimeLegacy(t,e,n){return this.singleton.#fn(t,e,n)}static reset(){return this.singleton.#Le()}static async removeSavedCoupons(){return await this.singleton.#Cn()}}CartService.singleton=new CartService;class NavigationService{static singleton=null;static activeCategoryChangeEventName="category-changed";constructor(){this.context=null,this.scrollTarget=null}#t(t){this.context=t,this.returnToGroupOrder=!1,window.console&&console.log("Navigation Service initialized"),window.addEventListener("scroll",this.#$n((()=>this.#Fn()),200)),window.addEventListener(MenuService.itemSelectedEventName,this.onItemSelected.bind(this)),window.addEventListener(CartService.cartCouponAddedEventName,this.onCouponApplied.bind(this))}onItemSelected(t){this.#xn(t.detail.itemId,t.detail.categoryId,t.detail.locationId)}onCouponApplied(t){const e=t.detail;window.console&&console.log(`onCouponApplied: ${e.code}`),e.valid?this.#Rn(e.id,e.name,e.description):this.#Hn(e.code)}#Un(){const t=document.querySelector("new-menufy-menu"),e=this.offsetHeight();if(t)return t.getTopmostVisibleCategory(e);{let t=null;const n=document.querySelectorAll("div[data-category-id]");if(n.length)for(const a of n){const n=a.getBoundingClientRect();n.y+n.height-e>0&&(t=t?n.y<t.getBoundingClientRect().y?a:t:a)}return t}}#Pn(){this.scrollTarget&&(this.#Mn(this.scrollTarget.getAttribute("data-category-id")),this.scrollTarget=null)}#_n(t){const e=window.location.hash;let n=[],a=!1;e.length>1&&(n=e.slice(1).split("&").map((e=>e.startsWith("categoryHeading-")?(a=!0,`categoryHeading-${t}`):e))),a||n.push(`categoryHeading-${t}`);const o=n.filter(Boolean).join("&");window.history.propertyIsEnumerable(null,null,`#${o}`)}#zn(t){const e=document.querySelector("new-menufy-menu");if(e){let n=e.getMenuCategory(t);if(n){this.scrollTarget=n;let e=-this.offsetHeight();const a=n.getBoundingClientRect().top+window.scrollY+e;window.scrollTo({top:a,behavior:"smooth"}),this.#_n(t),setTimeout(this.#Pn.bind(this),500)}}}#Mn(t){let e=new CustomEvent(NavigationService.activeCategoryChangeEventName,{bubbles:!0,composed:!0,cancelable:!0,detail:t});this.context.dispatchEvent(e)}#$n(t,e){let n,a;return function(){const o=this,i=arguments;a?(clearTimeout(n),n=setTimeout((function(){Date.now()-a>=e&&(t.apply(o,i),a=Date.now())}),e-(Date.now()-a))):(t.apply(o,i),a=Date.now())}}#Fn(){var t=this.#Un();if(this.scrollTarget)window.console&&console.log(`NavigationService: Scrolling to category:${this.scrollTarget.categoryId}. Current: ${t.categoryId}`);else if(null!==t){var e=t.categoryId;this.#Mn(e)}}offsetHeight(){try{const t=document.querySelector("new-menufy-header")??document.querySelector("menufy-header"),e=t.shadowRoot.querySelector(".fixed-top").getBoundingClientRect(),n=document.querySelector("new-category-carousel").getBoundingClientRect();return e.height+n.height}catch{return console.log("Scroll offset height fail"),0}}#Gn(t){const e=document.querySelector("new-menufy-menu");e?(e.expandCategory(t),this.#_n(t)):window.console&&console.error(`Element not found for category ${t}`)}#Yn(){const t=document.querySelector("new-menufy-menu");t&&t.expandAllCategories()}#Bn(){const t=document.querySelector("new-menufy-menu");t&&t.collapseAllCategories()}#xn(t,e,n){window.console&&console.log(`Item ${t} in category ${e} was selected.`);const a=CartService.getCart(),o=a.orderType;o===LocationService.ORDER_TYPE_UNKNOWN?this.#qn():o===LocationService.ORDER_TYPE_CARRYOUT||a.groupOrderId||a.deliveryAddress?this.#Kn(t,e):this.#Vn()}#Wn(){window.console&&console.log("NavigationService.showGroupOrderOrSettings");CartService.getCart().orderType===LocationService.ORDER_TYPE_UNKNOWN?(this.#qn(),this.returnToGroupOrder=!0):this.#Qn()}#Qn(){window.location.hash="#group"}#qn(){window.location.hash="#settings"}#Vn(){window.location.hash="#address"}#Rn(t,e,n){var a=localStorage.getItem("url-coupon");if(null===a){localStorage.setItem("url-coupon",String(t));const a={name:e,description:n};window.dispatchEvent(new CustomEvent("deal-applied",{detail:a,bubbles:!0,composed:!0}))}else if(a!==String(t)){const e={couponId:t};window.dispatchEvent(new CustomEvent("replace-deal-warning",{detail:e,bubbles:!0,composed:!0}))}}#Hn(t){const e={code:t};window.dispatchEvent(new CustomEvent("deal-failed",{detail:e,bubbles:!0,composed:!0}))}#Kn(t,e){const n=`#/Item/${t}/${e}`;window.console&&console.log(`Setting hash to ${n}`),window.location.hash=n}#jn(){this.returnToGroupOrder=!1}#Zn(){return this.returnToGroupOrder}static initialize(t){this.singleton.#t(t)}static getTopmostVisibleCategory(){return this.singleton.#Un()}static setCategoryHash(t){this.singleton.#_n(t)}static scrollCategoryIntoView(t){this.singleton.#zn(t)}static expandCategory(t){this.singleton.#Gn(t)}static expandAllCategories(){this.singleton.#Yn()}static collapseAllCategories(){this.singleton.#Bn()}static showGroupOrderOrSettings(){this.singleton.#Wn()}static clearReturnToGroupOrder(){this.singleton.#jn()}static showGroupOrder(){this.singleton.#Qn()}static shouldReturnToGroupOrder(){return this.singleton.#Zn()}}NavigationService.singleton=new NavigationService;let flagContextClass=null;!function(){class t extends HTMLElement{static tagName="flag-context";static ipAttributeName="ip";static locationIdAttributeName="location-id";static clientIdAttributeName="client-id";static observedAttributes=[this.ipAttributeName,this.locationIdAttributeName,this.clientIdAttributeName];static elementId="flag-context-root";constructor(){super(),this.ip=null,this.locationId=null,this.clientId=null}connectedCallback(){window.console&&console.log(`<${t.tagName}> connected`);const e=`<div id="${t.elementId}">\n <slot>\n </slot>\n </div>`,n=document.createElement("template");n.innerHTML=e;const a=n.content,o=this.attachShadow({mode:"open"});o.appendChild(a.cloneNode(!0)),this.element=o.querySelector(`#${t.elementId}`),this.tryLoad()}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){window.console&&console.log(`<${t.tagName}> ${e} set`),e==t.clientIdAttributeName&&(this.clientId=a),e==t.ipAttributeName&&(this.ip=a),e==t.locationIdAttributeName&&(this.locationId=a),this.tryLoad()}tryLoad(){this.ready()&&FlagService.initialize(this.locationId,this.clientId,this.ip,this)}ready(){return null!=this.ip&&null!=this.locationId&&null!=this.clientId}}flagContextClass=t,void 0===customElements.get(t.tagName)&&customElements.define(t.tagName,t)}();let cdnContextClass=null;!function(){class t extends HTMLElement{static tagName="cdn-context";static siteContentUrlAttributeName="site-content-url";static inlineDataAttributeName="inline-data";static observedAttributes=[this.siteContentUrlAttributeName,this.inlineDataAttributeName];static elementId="cdn-context-root";constructor(){super(),this.siteContentUrl=null,this.hasInlineData=null}connectedCallback(){const e=this.attachShadow({mode:"open"});this.waitingOnInlineData=this.shadowRoot.host.hasAttribute(t.inlineDataAttributeName);const n=`<div id="${t.elementId}">\n\t\t\t\t<slot>\n\t\t\t\t</slot>\n\t\t\t</div>`,a=document.createElement("template");a.innerHTML=n;const o=a.content;e.appendChild(o.cloneNode(!0)),this.element=e.querySelector(`#${t.elementId}`),this.tryInitialize()}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){e==t.siteContentUrlAttributeName?this.siteContentUrl=a:e==t.inlineDataAttributeName&&(this.hasInlineData="true"===a),this.tryInitialize()}ready(){return null!==this.siteContentUrl&&(!this.waitingOnInlineData||null!==this.hasInlineData)}tryInitialize(){this.element&&this.ready()&&CdnService.initialize(this.siteContentUrl,this.element,this.hasInlineData??!1)}}cdnContextClass=t,customElements.define(t.tagName,t)}();let presentationContextClass=null;!function(){class t extends HTMLElement{static tagName="presentation-context";static editorModeAttributeName="editor-mode";static cssTimeAttributeName="css-time";static observedAttributes=[this.editorModeAttributeName,this.cssTimeAttributeName];static elementId="presentation-context-root";constructor(){super(),this.editorMode=null,this.cssTime=null}connectedCallback(){window.console&&console.log(`<${t.tagName}> initialized`);const e=`<div id="${t.elementId}">\n\t\t\t\t<slot>\n\t\t\t\t</slot>\n\t\t\t</div>`,n=document.createElement("template");n.innerHTML=e;const a=n.content,o=this.attachShadow({mode:"open"});o.appendChild(a.cloneNode(!0)),this.element=o.querySelector(`#${t.elementId}`),PresentationService.initialize(this.editorMode,this.cssTime,this.element)}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){e==t.editorModeAttributeName?this.editorMode="true"===a:e==t.cssTimeAttributeName&&(this.cssTime=Number(a))}}presentationContextClass=t,customElements.define(t.tagName,t)}();let i18nContextClass=null;!function(){class t extends HTMLElement{static tagName="i18n-context";static observedAttributes=[];static elementId="i18n-context-root";constructor(){super()}static elementId="i18n-context";connectedCallback(){const e=`<div id="${t.elementId}">\n\t\t\t\t<slot>\n\t\t\t\t</slot>\n\t\t\t</div>`,n=document.createElement("template");n.innerHTML=e;const a=n.content,o=this.attachShadow({mode:"open"});o.appendChild(a.cloneNode(!0)),this.element=o.querySelector(`#${t.elementId}`),I18nService.initialize(this.element)}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(t,e,n){}}i18nContextClass=t,customElements.define(t.tagName,t)}();let locationContextClass=null;!function(){class t extends HTMLElement{static tagName="location-context";static protocolAttributeName="protocol";static hostAttributeName="host";static portAttributeName="port";static apiKeyAttributeName="api-key";static locationIdAttributeName="location-id";static observedAttributes=[this.protocolAttributeName,this.hostAttributeName,this.portAttributeName,this.apiKeyAttributeName,this.locationIdAttributeName];static elementId="location-context-root";constructor(){super(),this.protocol=null,this.host=null,this.port=null,this.apiKey=null,this.locationId=null,this.element=null}connectedCallback(){window.console&&console.log(`<${t.tagName}> connected`);const e=`<div id="${t.elementId}">\n\t\t\t\t<slot>\n\t\t\t\t</slot>\n\t\t\t</div>`,n=document.createElement("template");n.innerHTML=e;const a=n.content,o=this.attachShadow({mode:"open"});o.appendChild(a.cloneNode(!0)),this.element=o.querySelector(`#${t.elementId}`),this.tryLoad()}disconnectedCallback(){}adoptedCallback(){}tryLoad(){this.ready()&&(window.console&&console.log(`<${t.tagName}> ready`),LocationService.initialize(this.protocol,this.host,this.port,this.apiKey,this.element),setTimeout((async()=>{await LocationService.fetchLocation(this.locationId)})))}attributeChangedCallback(e,n,a){e==t.protocolAttributeName&&(this.protocol=a),e==t.hostAttributeName&&(this.host=a),e==t.portAttributeName&&(this.port=a),e==t.apiKeyAttributeName&&(this.apiKey=a),e==t.locationIdAttributeName&&(this.locationId=a),this.tryLoad()}ready(){return null!=this.protocol&&null!=this.host&&null!=this.port&&null!=this.apiKey&&null!=this.locationId&&null!=this.element}}locationContextClass=t,customElements.define(t.tagName,t)}();let settingsContextClass=null;!function(){class t extends HTMLElement{static tagName="settings-context";static protocolAttributeName="protocol";static hostAttributeName="host";static portAttributeName="port";static apiKeyAttributeName="api-key";static locationIdAttributeName="location-id";static pageIdAttributeName="page-id";static inlineDataAttributeName="inline-data";static observedAttributes=[this.protocolAttributeName,this.hostAttributeName,this.portAttributeName,this.apiKeyAttributeName,this.locationIdAttributeName,this.pageIdAttributeName,this.inlineDataAttributeName];static elementId="settings-context-root";constructor(){super(),this.protocol=null,this.host=null,this.port=null,this.apiKey=null,this.locationId=null,this.element=null,this.pageId=null,this.hasInlineData=null,this.waitingOnPageId=!1,this.waitingOnInlineData=!1}connectedCallback(){window.console&&console.log(`<${t.tagName}> connected`);const e=this.attachShadow({mode:"open"});this.waitingOnPageId=this.shadowRoot.host.hasAttribute(t.pageIdAttributeName),this.waitingOnInlineData=this.shadowRoot.host.hasAttribute(t.inlineDataAttributeName);const n=`<div id="${t.elementId}" data-locationid="${this.locationId}">\n\t\t\t\t<slot>\n\t\t\t\t</slot>\n\t\t\t</div>`,a=document.createElement("template");a.innerHTML=n;const o=a.content;e.appendChild(o.cloneNode(!0)),this.element=e.querySelector(`#${t.elementId}`),this.tryLoad()}disconnectedCallback(){}adoptedCallback(){}tryLoad(){this.ready()&&(window.console&&console.log(`<${t.tagName}> ready`),SettingsService.initialize(this.protocol,this.host,this.port,this.apiKey,this.element,this.hasInlineData??!1),setTimeout((async()=>{await SettingsService.fetchSettings(this.locationId,this.pageId)})))}attributeChangedCallback(e,n,a){e==t.protocolAttributeName&&(this.protocol=a),e==t.hostAttributeName&&(this.host=a),e==t.portAttributeName&&(this.port=a),e==t.apiKeyAttributeName&&(this.apiKey=a),e==t.locationIdAttributeName&&(this.locationId=a),e==t.pageIdAttributeName&&(this.pageId=a),e==t.inlineDataAttributeName&&(this.hasInlineData=Boolean(a)),window.console&&console.log(`<${t.tagName}> ${e} set`),this.tryLoad()}ready(){return!(null==this.protocol||null==this.host||null==this.port||null==this.apiKey||null==this.locationId||null==this.element||this.waitingOnPageId&&null==this.pageId||this.waitingOnInlineData&&null==this.hasInlineData)}}settingsContextClass=t,customElements.define(t.tagName,t)}();let dealsContextClass=null;!function(){class t extends HTMLElement{static tagName="deals-context";static protocolAttributeName="protocol";static hostAttributeName="host";static portAttributeName="port";static apiKeyAttributeName="api-key";static locationIdAttributeName="location-id";static observedAttributes=[this.protocolAttributeName,this.hostAttributeName,this.portAttributeName,this.apiKeyAttributeName,this.locationIdAttributeName];static elementId="deals-context-root";constructor(){super(),this.protocol=null,this.host=null,this.port=null,this.apiKey=null,this.locationId=null,this.element=null}connectedCallback(){window.console&&console.log(`<${t.tagName}> connected`);const e=`<div id="${t.elementId}">\n <slot></slot>\n </div>`,n=document.createElement("template");n.innerHTML=e;const a=n.content,o=this.attachShadow({mode:"open"});o.appendChild(a.cloneNode(!0)),this.element=o.querySelector(`#${t.elementId}`),this.tryLoad()}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){window.console&&console.log(`<${t.tagName}> ${e} set: ${a}`),e==t.protocolAttributeName?this.protocol=a:e==t.apiKeyAttributeName?this.apiKey=a:e==t.hostAttributeName?this.host=a:e==t.portAttributeName?this.port=Number(a):(e=t.locationIdAttributeName)&&(this.locationId=Number(a)),this.tryLoad()}ready(){return window.console&&console.log(`<${t.tagName} protocol:${this.protocol}, host:${this.host}, port:${this.port}, apiKey:${this.apiKey}, locationId:${this.locationId}, element:$
10{this.element}`),null!=this.protocol&&null!=this.host&&null!=this.port&&null!=this.apiKey&&null!=this.locationId&&null!=this.element}tryLoad(){const e=this.ready();if(window.console&&console.log(`<${t.tagName} isReady:${e}`),e){window.console&&console.log(`<${t.tagName}> initialize Deals Service`),DealsService.initialize(this.protocol,this.host,this.port,this.apiKey,this.element),window.console&&console.log(`<${t.tagName}> loading coupons`);try{"number"==typeof this.locationId&&!Number.isNaN(this.locationId)&&this.locationId>0&&DealsService.loadCoupons(this.locationId)}catch(e){window.console&&console.log(`<${t.tagName}> Failed to fetch Coupons: ${e}`)}window.console&&console.log(`<${t.tagName}> loading quickDeals`);try{"number"==typeof this.locationId&&!Number.isNaN(this.locationId)&&this.locationId>0&&DealsService.loadQuickDeals(this.locationId)}catch(e){window.console&&console.log(`<${t.tagName}> Failed to fetch QuickDeals: ${e}`)}}}}dealsContextClass=t,void 0===customElements.get(t.tagName)&&customElements.define(t.tagName,t)}();let cartContextClass=null;!function(){class t extends HTMLElement{static tagName="cart-context";static protocolAttributeName="protocol";static hostAttributeName="host";static portAttributeName="port";static apiKeyAttributeName="api-key";static locationIdAttributeName="location-id";static cartIdAttributeName="cart-id";static cartKeyAttributeName="cart-key";static observedAttributes=[this.protocolAttributeName,this.hostAttributeName,this.portAttributeName,this.apiKeyAttributeName,this.locationIdAttributeName,this.cartIdAttributeName,this.cartKeyAttributeName];static elementId="cart-context-root";constructor(){super(),this.protocol=null,this.host=null,this.port=null,this.apiKey=null,this.locationId=null,this.cartId=null,this.cartKey=null,this.element=null,this.urlCouponAttempted=!1}connectedCallback(){window.console&&console.log(`<${t.tagName}> connected`);const e=`<div id="${t.elementId}">\n\t\t\t\t<slot>\n\t\t\t\t</slot>\n\t\t\t</div>`,n=document.createElement("template");n.innerHTML=e;const a=n.content,o=this.attachShadow({mode:"open"});o.appendChild(a.cloneNode(!0)),this.element=o.querySelector(`#${t.elementId}`),this.tryLoad(),document.addEventListener(CartService.legacyCartUpdatedEventName,this.onUpdate.bind(this)),document.addEventListener(CartService.orderTimeUpdatedEventName,this.onUpdate.bind(this))}disconnectedCallback(){}adoptedCallback(){}onUpdate(e){this.cartId=e.detail.cartId,this.cartKey=e.detail.cartKey,window.console&&console.log(`<${t.tagName}> reloading cart`),"number"==typeof this.cartId&&!Number.isNaN(this.cartId)&&this.cartId>0&&CartService.fetchCart(this.locationId,this.cartId,this.cartKey).catch((e=>{window.console&&console.log(`<${t.tagName}> failed to fetch cart: ${e}`)}))}tryLoad(){const e=this.ready(),n=this.readyToFetch();if(e&&(window.console&&console.log(`<${t.tagName}> initializing Cart Service`),CartService.initialize(this.protocol,this.host,this.port,this.apiKey,this.element),n)){window.console&&console.log(`<${t.tagName}> loading cart`);try{"number"==typeof this.cartId&&!Number.isNaN(this.cartId)&&this.cartId>0&&(window.console&&console.log(`<${t.tagName}> fetching cart`),CartService.fetchCart(this.locationId,this.cartId,this.cartKey).then((t=>{window.console&&console.log("cart fetched",t),null!=t&&null!=t.groupOrderId||this.urlCouponAttempted||(this.urlCouponAttempted=!0,CartService.tryApplyUrlCoupon(this.locationId))})).catch((e=>{window.console&&console.log(`<${t.tagName}> Failed to fetch cart:`,e),this.urlCouponAttempted||(this.urlCouponAttempted=!0,CartService.tryApplyUrlCoupon(this.locationId))})))}catch(e){window.console&&console.log(`<${t.tagName}> Failed to fetch cart: ${e}`)}}}attributeChangedCallback(e,n,a){window.console&&console.log(`<${t.tagName}> ${e} set: ${a}`),e==t.protocolAttributeName?this.protocol=a:e==t.hostAttributeName?this.host=a:e==t.portAttributeName?this.port=Number(a):e==t.apiKeyAttributeName?this.apiKey=a:e==t.locationIdAttributeName?this.locationId=Number(a):e==t.cartIdAttributeName?this.cartId=Number(a):e==t.cartKeyAttributeName&&(this.cartKey=a),window.console&&console.log(`<${t.tagName}> ${e} set`),this.tryLoad()}ready(){return null!=this.protocol&&null!=this.host&&null!=this.port&&null!=this.apiKey&&null!=this.locationId&&null!=this.element}readyToFetch(){return this.ready()&&null!=this.cartId&&null!=this.cartKey}}customElements.define(t.tagName,t),cartContextClass=t}();let newMenufyMobileNavClass=null;!function(){class t extends HTMLElement{static tagName="new-mobile-nav";static navigationLinkTypePage=0;static navigationLinkTypeInside=1;static navigationLinkTypeOutside=2;static navigationLinkTypeSignUpForDeals=3;static navigationLinkTypeOrderOnline=4;static orderUrlAttributeName="order-url";static observedAttributes=[this.orderUrlAttributeName];static elementId="mobile-nav-root";static hamburgerMenuId="hamburger-menu";static closeMenuId="close-menu";static mobileLogoElementId="mobile-logo";static mobileCartCountId="mobile-cart-count";static offcanvasOrderLinkId="offcanvas-order-link";static navListElementId="mobile-nav-list";static mobileNavBar="mobile-nav-bar";static cartToggler="cart-toggler";constructor(){super(),this.locationData=null,this.cartData=null,this.settingData=null,this.element=null,this.navLogoUrl=null,this.hideLogoInNav=null}createTemplates(){const t=document.createElement("a");t.setAttribute("class","header-link"),t.setAttribute("data-pageid",""),t.setAttribute("data-sectionid",""),t.setAttribute("href",""),this.mobileNavLinkTemplate=t}connectedCallback(){this.createTemplates();const e=`\n <nav id="${t.elementId}" class="md:hidden sticky left-0 top-0 w-full z-10 flex px-4 items-center justify-between bg-white h-20 shadow-sm border-b border-lightGrey site-navbar">\n\t\t\t\t\t<div class="flex flex-row gap-2">\n\t\t\t\t\t\t<button id="${t.hamburgerMenuId}
10" \n\t\t\t\t\t\t\t\tclass="navbar-toggler outline-none ring-0 border-none header-link"\n\t\t\t\t\t\t\t\ttype="button"\n\t\t\t\t\t\t\t\taria-controls="${t.elementId}"\n\t\t\t\t\t\t\t\taria-label="Toggle Navigation">\n\t\t\t\t\t\t\t<svg width="19" height="17" viewBox="0 0 19 17" fill="currentColor" xmlns="http://www.w3.org/2000/svg">\n\t\t\t\t\t\t\t\t<g clip-path="url(#clip0_3_125)">\n\t\t\t\t\t\t\t\t\t<path d="M12.5687 13.8813H1.22581C0.551858 13.8813 0 14.5062 0 15.2694C0 16.0326 0.551858 16.6575 1.22581 16.6575H12.5687C13.2427 16.6575 13.7945 16.0326 13.7945 15.2694C13.7945 14.5062 13.2427 13.8813 12.5687 13.8813Z" fill="currentColor"/>\n\t\t\t\t\t\t\t\t\t<path d="M15.1715 6.94061H1.22581C0.551858 6.94061 0 7.56555 0 8.32874C0 9.09193 0.551858 9.71687 1.22581 9.71687H15.1715C15.8454 9.71687 16.3973 9.09193 16.3973 8.32874C16.3973 7.56555 15.8454 6.94061 15.1715 6.94061Z" fill="currentColor" />\n\t\t\t\t\t\t\t\t\t<path d="M17.7742 0H1.22581C0.551858 0 0 0.624935 0 1.38813C0 2.15132 0.551858 2.77626 1.22581 2.77626H17.7742C18.4481 2.77626 19 2.15132 19 1.38813C19 0.624935 18.4481 0 17.7742 0Z" fill="currentColor" />\n\t\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t\t\t<clipPath id="clip0_3_125">\n\t\t\t\t\t\t\t\t\t\t<rect width="19" height="17" fill="white" />\n\t\t\t\t\t\t\t\t\t</clipPath>\n\t\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<div id="${t.mobileLogoElementId}"></div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<button id="${t.cartToggler}" class="navbar-toggler outline-none ring-0 border-none cart-icon-link"\n\t\t\t\t\t\t\ttype="button"\n\t\t\t\t\t\t\taria-controls="${t.elementId}"\n\t\t\t\t\t\t\taria-label="Toggle Navigation">\n\t\t\t\t\t\t<div class="flex items-center px-4 justify-center gap-2 header-link h-full">\n\t\t\t\t\t\t\t<i class="fas fa-shopping-cart"></i>\n\t\t\t\t\t\t\t<div id="${t.mobileCartCountId}" class="cart-count text-bold"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t\t\n\t\t\t\t\t<div class="offcanvas offcanvas-start flex flex-col justify-start gap-6 bg-white shadow-lg p-8 text-left site-navbar"\n\t\t\t\t\t\ttabindex="-1"\n\t\t\t\t\t\tid="${t.mobileNavBar}"\n\t\t\t\t\t\taria-labelledby="offcanvasNavbarLabel">\n\t\t\t\t\t\t\t<div class="flex items-center py-3 justify-between gap-2 pr-3">\n\t\t\t\t\t\t\t\t<a id="${t.offcanvasOrderLinkId}" class="header-link" href="" style=""></a>\n\t\t\t\t\t\t\t\t<a id="${t.closeMenuId}" class="header-link" href="#">X</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div id="${t.navListElementId}" class="flex flex-col justify-start gap-6 shadow-lg text-left"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</nav>`,n=document.createElement("template");n.innerHTML=e;const a=n.content.cloneNode(!0),o=this.attachShadow({mode:"open"});o.adoptedStyleSheets=[...document.adoptedStyleSheets],this.shadowRoot.appendChild(a),this.element=this.shadowRoot.querySelector(`#${t.elementId}`),PresentationService.prependStylesToNewComponent(o),this.tryUpdateLocationData(),this.tryUpdateCartData(),this.tryUpdateSettingsData(),this.tryRender(),document.addEventListener(LocationService.locationLoadedEventName,this.onLocationData.bind(this)),document.addEventListener(SettingsService.settingsLoadedEventName,this.onSettingsData.bind(this)),document.addEventListener(CartService.cartLoadedEventName,this.onCartData.bind(this)),document.addEventListener(CartService.cartUpdatedEventName,this.onCartData.bind(this));const i=this.element.querySelector(`#${t.cartToggler}`);i&&i.addEventListener("click",this.toggleCart)}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){e==t.orderUrlAttributeName&&(this.orderUrl=a)}onSettingsData(t){this.updateSettingsData(t.detail),this.tryRender()}updateSettingsData(t){t&&(this.navLogoUrl=t.navLogoImageUrl,this.hideLogoInNav=t.hideLogoInNav??!1)}onLocationData(t){this.updateLocationData(t.detail),this.tryRender()}updateLocationData(t){t&&(this.name=t.name,this.locationData=t,this.locationId=t.id,this.portalUrl=t.portalUrl)}haveLocationData(){return null!==this.locationData}haveSettings(){return null!==this.navLogoUrl}haveCartData(){return null!==this.cartData}updateCartData(t){this.cartData=t}onCartData(t){this.updateCartData(t.detail),this.tryRender()}tryUpdateLocationData(){if(null!=this.element){const t=LocationService.getLocationByElement(this.element);t&&this.updateLocationData(t)}}tryUpdateSettingsData(){if(null!=this.element){const t=SettingsService.getSettingsByElement(this.element);t&&this.updateSettingsData(t)}}toggleCart(t){CartService.toggleCart()}tryUpdateCartData(){const t=CartService.getCart();t&&this.updateCartData(t)}tryRender(){this.haveLocationData()&&null!=this.element&&this.addMobileNavLinks(this.locationData),null!=this.element&&(this.element.querySelector(`#${t.mobileCartCountId}`).innerHTML=this.cartData.itemCount,this.setupNavOpenClose())}fillInLink(e,n,a){n.navigationType==t.navigationLinkTypeOutside||t.navigationLinkTypeInside?(e.setAttribute("target","_blank"),e.setAttribute("rel","noopener nofererrer")):(e.setAttribute("data-pageid",n.websitePageId),e.setAttribute("data-sectionid",n.websitePageSectionId));let o="",i="",s="";switch(n.navigationType){case t.navigationLinkTypePage:const e=(a.pages??[]).find((t=>t.id==n.websitePageId));e&&(i=e.path),"number"==typeof n.websitePageSectionId&&(s=`#scroll-${n.websitePageSectionId}`),o=`${this.portalUrl}/${i}${s}`;break;case t.navigationLinkTypeSignUpForDeals:this.isPortal?o=`${this.portalUrl}/locations`:this.orderUrl;break;case t.navigationLinkTypeOrderOnline:if(this.isPortal)o=`${this.portalUrl}/locations`;else{const t=new URLSearchParams(document.location.search).get("newDesign"),e=null!==t&&"true"===t;o=`${this.orderUrl}${e?"?newDesign=true":""}`}break;
10case t.navigationLinkTypeOutside:case t.navigationLinkTypeInside:console.log(n),o=n.url}e.setAttribute("href",o),e.innerHTML=n.name}createMobileNavLink(t,e){const n=this.mobileNavLinkTemplate.cloneNode(!0);return this.fillInLink(n,t,e),n}addMobileNavLinks(e){if(e){if(!this.hideLogoInNav){const e=this.element.querySelector(`#${t.mobileLogoElementId}`);if(e){let t=e.querySelector(".header-link");t||(t=document.createElement("a"),t.setAttribute("class","header-link navbar-brand"),t.setAttribute("href",this.orderUrl),this.navLogoUrl?t.innerHTML=`<img src="${this.navLogoUrl}"\n\t\t\t\t\t\t\t\t\t\t\t\talt="${this.navLogoAltText}"\n\t\t\t\t\t\t\t\t\t\t\t\tstyle="max-height:4em;${this.logoPaddingStyle}" />`:t.innerHTML=this.name,e.appendChild(t))}const n=this.element.querySelector(`#${t.offcanvasOrderLinkId}`);n&&(n.setAttribute("href",this.orderUrl),this.navLogoUrl?n.innerHTML=`<img src="${this.navLogoUrl}"\n\t\t\t\t\t\t\t\t\t\t\t alt="${this.navLogoAltText}"\n\t\t\t\t\t\t\t\t\t\t\t style="max-height:4em;${this.logoPaddingStyle}" />`:n.innerHTML=this.name)}if(e.navigationLinks&&e.navigationLinks.length>0){const n=this.element.querySelector(`#${t.navListElementId}`);0==n.querySelectorAll("a").length&&e.navigationLinks.sort(((t,e)=>
10t.sort-e.sort)).forEach((t=>{const a=this.createMobileNavLink(t,e);n.appendChild(a)}))}else{const e=this.element.querySelector(`#${t.hamburgerMenuId}`);e&&e.remove()}}}setupNavOpenClose(){const e=this.element.querySelector(`#${t.closeMenuId}`);e&&e.addEventListener("click",(e=>{e.preventDefault();const n=this.element.querySelector(`#${t.mobileNavBar}`);n.classList.contains("show")&&n.classList.remove("show")}));const n=this.element.querySelector(`#${t.hamburgerMenuId}`);n&&n.addEventListener("click",(e=>{e.preventDefault();const n=this.element.querySelector(`#${t.mobileNavBar}`);n.classList.contains("show")||n.classList.add("show")}))}}newMenufyMobileNavClass=t,customElements.get(t.tagName)?window.console&&console.error(`<${t.tagName}> already defined`):customElements.define(t.tagName,t)}();let newHeaderClass=null;!function(){class t extends HTMLElement{static navigationLinkTypePage=0;static navigationLinkTypeInside=1;static navigationLinkTypeOutside=2;static navigationLinkTypeSignUpForDeals=3;static navigationLinkTypeOrderOnline=4;static locationIdAttributeName="location-id";static orderUrlAttributeName="order-url";static navLogoAltTextAttributeName="nav-logo-alt";static elementId="header-root";static logoListElementId="logo";static mainNavLinksElementId="nav-list";static mobileNavId="mobile-nav";static cartIconId="cart-icon-img";static cartCountId="cart-count";static mobileCartIconId="mobile-cart-icon-img";static mobileCartCountId="mobile-cart-count";static orderLinkId="order-link";static offcanvasOrderLinkId="offcanvas-order-link";static cartTogglerElementId="cart-toggler";static logoElementId="menu-logo";static orderNowElementId="order-now";static cartElementId="cart-element";static observedAttributes=[this.locationIdAttributeName,this.orderUrlAttributeName,this.navLogoAltTextAttributeName];constructor(){super(),this.locationId=null,this.cartIconUrl=null,this.mobileCartIconUrl=null,this.cartCount=null,this.logoPaddingStyle=null,this.orderUrl=null,this.navLogoAltText=null}createTemplates(){const t=document.createElement("li");t.innerHTML='<a class="header-link" data-pageid="" data-sectionid="" href=""></a>',this.mainNavLinkTemplate=t,this.mobileNavTemplate=document.createElement("new-mobile-nav")}connectedCallback(){this.createTemplates();const e=`\n\t\t\t\t<div id="${t.elementId}">\n\t\t\t\t\t<header class="fixed-top">\n\t\t\t\t\t\t<nav class="hidden md:flex sticky left-0 top-0 w-full z-10 items-center bg-white h-20 shadow-sm border-b border-lightGrey site-navbar" style="z-index: 1020">\n\t\t\t\t\t\t\t<div class="w-full mx-auto flex items-center justify-between py-4 px-4 gap-12">\n\t\t\t\t\t\t\t\t<div id="${t.logoElementId}" class="main-nav-logo flex justify-start items-center space-x-8 uppercase tracking-wide font-extrabold text-sm transition "></div>\n\n\t\t\t\t\t\t\t\t<ul id="${t.mainNavLinksElementId}" class="flex justify-start items-center space-x-8 uppercase tracking-wide font-extrabold text-sm transition">\n\t\t\t\t\t\t\t\t</ul>\n\n\t\t\t\t\t\t\t\t<button id="${t.cartTogglerElementId}" class="flex items-center justify-between w-60 h-12 font-bold tracking-wide transition ease-in-out shadow-sm text-black rounded-lg border border-lightGrey hover:scale-105 hover:outline-none hover:border-primary focus:outline-none focus:ring-0 overflow-hidden">\n\t\t\t\t\t\t\t\t\t<div id="${t.orderNowElementId}" class="bg-white w-full h-full flex justify-center items-center">\n\t\t\t\t\t\t\t\t\t\tOrder Now\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div id="${t.cartElementId}" class="flex items-center px-4 justify-center gap-2 bg-white h-full">\n\t\t\t\t\t\t\t\t\t\t<i class="fas fa-shopping-cart"></i>\n\t\t\t\t\t\t\t\t\t\t<div id="${t.cartCountId}" class="cart-count"></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</nav>\n\n\t\t\t\t\t\t<div id="${t.mobileNavId}"></div>\t\t\t\t\t\n\t\t\t\t\t</header>\n\t\t\t\t</div>`,n=document.createElement("template");n.innerHTML=e;const a=n.content,o=this.attachShadow({mode:"open"});o.adoptedStyleSheets=[...document.adoptedStyleSheets];const i=a.cloneNode(!0);o.appendChild(i),this.element=o.querySelector(`#${t.elementId}`),PresentationService.prependStylesToNewComponent(o);var s=SettingsService.getSettings(this.locationId);this.updateSettingsData(s);var r=LocationService.getLocation(this.locationId);this.updateLocationData(r);var l=CartService.getCart();this.updateItemCount(l),this.tryRender(),document.addEventListener(LocationService.locationLoadedEventName,this.onLocationData.bind(this)),document.addEventListener(CartService.cartLoadedEventName,this.onCartData.bind(this)),document.addEventListener(CartService.cartUpdatedEventName,this.onCartData.bind(this)),document.addEventListener(Sett
10ingsService.settingsLoadedEventName,this.onSettingsData.bind(this))}tryRender(){if(this.haveSettings()&&this.haveLocationData()&&null!=this.element){this.addMainNavLinks(this.locationData),this.addLogo();const e=this.element.querySelector(`#${t.mobileNavId}`);let n=e.querySelector("new-mobile-nav");n||(n=this.mobileNavTemplate.cloneNode(),n.setAttribute("order-url",this.orderUrl),e.appendChild(n));const a=this.element.querySelector(`#${t.cartTogglerElementId}`);if(a.addEventListener("click",this.toggleCart),this.useOrderOnlineLink){a.classList.add("olo-btn","olo-btn-mobile"),a.querySelector(`#${t.orderNowElementId}`).classList.remove("bg-white");const e=getComputedStyle(a),n=e.getPropertyValue("background-color"),o=e.getPropertyValue("color");a.querySelector(`#${t.cartElementId}`).setAttribute("style",`color: ${n}; text-shadow: 1px 1px 1px ${o}`)}}}updateLocationData(t){t&&(this.name=t.name,this.locationData=t,this.locationId=t.id,this.portalUrl=t.portalUrl)}onLocationData(t){this.updateLocationData(t.detail),this.tryRender()}haveLocationData(){return null!=this.locationData}onSettingsData(t){this.updateSettingsData(t.detail),this.tryRender()}updateSettingsData(t){t&&(this.logoPaddingStyle=t.logoPaddingStyle,this.useTransparentNav=t.useTransparentNav??!1,this.showNavDropShadow=t.showDropShadowOnNav,this.logoPosition="LeftLogo"===t.websiteNavType?"left":"center",this.useOrderOnlineLink=t.useOrderOnlineLink,this.hideLogoInNav=t.hideLogoInNav??!1,this.navLogoUrl=t.navLogoImageUrl)}haveSettings(){return null!=this.logoPaddingStyle}haveCartData(){return null!=this.cartCount}onCartData(t){const e=t.detail;this.updateItemCount(e),this.tryRender()}toggleCart(t){CartService.toggleCart()}updateItemCount(e){if(e){if(this.element){const n=this.element.querySelector(`#${t.cartCountId}`);n&&(n.innerHTML=e.itemCount)}this.cartCount=e.itemCount}}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){e==t.locationIdAttributeName?this.locationId=a:e==t.navLogoAltTextAttributeName?this.navLogoAltText=a:e==t.orderUrlAttributeName&&(this.orderUrl=a)}fillInLink(e,n,a){n.navigationType==t.navigationLinkTypeOutside||t.navigationLinkTypeInside?(e.setAttribute("target","_blank"),e.setAttribute("rel","noopener nofererrer")):(e.setAttribute("data-pageid",n.websitePageId),e.setAttribute("data-sectionid",n.websitePageSectionId));let o="",i="",s="";switch(n.navigationType){case t.navigationLinkTypePage:const e=(a.pages??[]).find((t=>t.id==n.websitePageId));e&&(i=e.path),"number"==typeof n.websitePageSectionId&&(s=`#scroll-${n.websitePageSectionId}`),o=`${this.portalUrl}/${i}${s}`;break;case t.navigationLinkTypeSignUpForDeals:this.isPortal?o=`${this.portalUrl}/locations`:this.orderUrl;break;case t.navigationLinkTypeOrderOnline:if(this.isPortal)o=`${this.portalUrl}/locations`;else{const t=new URLSearchParams(document.location.search).get("newDesign"),e=null!==t&&"true"===t;o=`${this.orderUrl}${e?"?newDesign=true":""}`}break;case t.navigationLinkTypeOutside:case t.navigationLinkTypeInside:o=n.url}e.setAttribute("href",o),e.innerHTML=n.name}createMainNavLink(t,e){const n=this.mainNavLinkTemplate.cloneNode(!0);return this.fillInLink(n.querySelector("a"),t,e),n}addLogo(){const e=this.element.querySelector(`#${t.logoElementId}`);if(0===e.querySelectorAll("a").length)if(this.hideLogoInNav)e.setAttribute("class","navbar-brand order-first order-lg-0 mx-0 header-brand-name flex-shrink-1 "+("center"==this.logoPosition?"col text-lg-center":"")),e.setAttribute("style",this.logoPaddingStyle);else{const t=document.createElement("a");t.setAttribute("class","header-link"),t.setAttribute("href",this.orderUrl),this.navLogoUrl?t.innerHTML=`<img src="${this.navLogoUrl}"\n\t\t\t\t\t\t\t\t\t\talt="${this.navLogoAltText}"\n\t\t\t\t\t\t\t\t\t\tstyle="max-height:4em;${this.logoPaddingStyle}" />`:t.innerHTML=this.name,e.appendChild(t)}}addMainNavLinks(e){const n=this.element.querySelector(`#${t.mainNavLinksElementId}`);if(n&&e){let t=n.querySelectorAll("li").length;if(window.console&&console.log(`<new-menufy-header> adding main nav links. Count ${t}`),0==n.querySelectorAll("li").length&&e.navigationLinks){e.navigationLinks.sort(((t,e)=>t.sort-e.sort));for(const t of e.navigationLinks){const a=this.createMainNavLink(t,e);n.appendChild(a)}t=n.querySelectorAll("li").length,window.console&&console.log(`<new-menufy-header> added main nav links. Count ${t}`)}}}}
10newHeaderClass=t,customElements.define("new-menufy-header",t)}();let newFooterClass=null;!function(){class t extends HTMLElement{static tagName="new-menufy-footer";static navLogoAltTextAttributeName="nav-logo-alt";static orderUrlAttributeName="order-url";static buildVersionAttributeName="build-version";static buildBranchAttributeName="build-branch";static buildDateAttributeName="build-date";static observedAttributes=[this.navLogoAltTextAttributeName,this.orderUrlAttributeName,this.buildVersionAttributeName,this.buildBranchAttributeName,this.buildDateAttributeName];static elementId="footer-root";static logoContainerElementId="logo-container";static socialLinksElementId="footer-social-links";static socialLinksContainerElementId="footer-social-links-container";static footerLinksElementId="footer-links";static footerLinksContainerElementId="footer-links-container";constructor(){super(),this.locationId=null,this.logoPaddingStyle=null,this.hideLogoInNav=null,this.showPhone=null,this.locationData=null,this.orderUrl=null,this.buildVersion=null,this.buildBranch=null,this.buildDate=null}createTemplates(){this.socialLinkTemplate=document.createElement("new-menufy-social-link"),this.phoneLinkTemplate=document.createElement("new-menufy-phone-link"),this.footerLinkTemplate=document.createElement("new-menufy-footer-link")}connectedCallback(){window.addEventListener("load",this.init.bind(this))}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){e==t.navLogoAltTextAttributeName?this.navLogoAltText=a:e==t.orderUrlAttributeName?this.orderUrl=a:e==t.buildVersionAttributeName?this.buildVersion=a:e==t.buildBranchAttributeName?this.buildBranch=a:e==t.buildDateAttributeName&&(this.buildDate=a)}init(){this.createTemplates();const e=null!==this.buildBranch&&-1==String(this.buildBranch).indexOf("main")&&-1==String(this.buildBranch).indexOf("release")?this.buildBranch:null,n=`${I18nService.translateMenufy()} ${this.buildVersion?`Version: ${this.buildVersion}`:""}${e?` Branch: ${e}`:""}${this.buildDate?` Date: ${this.buildVersion}`:""}`,a=`\n\t\t\t\t<div id="${t.elementId}" class="footer-root">\n\t\t\t\t\t<footer class="footer p-4 text-secondary w-full bg-primaryLight py-8 sm:py-4">\n\t\t\t\t\t\t<div class="mx-auto flex justify-between flex-wrap sm:flex-nowrap items-center gap-6 uppercase tracking-wider font-extrabold text-sm">\n\t\t\t\t\t\t\t<div id="${t.footerLinksContainerElementId}" class=""></div>\n\n\t\t\t\t\t\t\t<div id="${t.logoContainerElementId}" class="logo-footer"></div>\n\n\t\t\t\t\t\t\t\x3c!-- Powered By --\x3e\n\t\t\t\t\t\t\t<div class="powered-by w-full sm:w-inherit">\n\t\t\t\t\t\t\t\t${I18nService.translatePoweredByMenufy(`<a href="https://www.menufy.com" target="_blank" class="menufy-header-link" title="${n}">${I18nService.translateMenufy()}</a>`)} © ${(new Date).getFullYear()}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!-- Default footer links --\x3e\n\t\t\t\t\t\t\t<div class="default-footer-links w-full">\n\t\t\t\t\t\t\t\t<ul class="flex justify-evenly sm:justify-end gap-4 w-full transition">\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a class="" href="https://restaurant.menufy.com/accessibility-statement" target="_blank">${I18nService.translateAccessibility()}</a>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a class="" href="https://restaurant.menufy.com/customer-terms-of-use" target="_blank">${I18nService.translateTerms()}</a>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a class="" href="https://support.menufy.com/" target="_blank">${I18nService.translateHelp()}</a>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a class="" href="https://restaurant.menufy.com/privacy" target="_blank">${I18nService.translatePrivacy()}</a>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div id="${t.socialLinksContainerElementId}" class="order-5 w-full sm:w-fit"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</footer>\n\t\t\t\t</div>`,o=document.createElement("template");o.innerHTML=a;const i=o.content,s=this.attachShadow({mode:"open"}),r=i.cloneNode(!0);s.appendChild(r),this.element=s.querySelector(`#${t.elementId}`),PresentationService.prependStylesToNewComponent(s),this.tryUpdateLocationData(),this.tryUpdateSettingsData(),this.tryRender(),document.addEventListener(LocationService.locationLoadedEventName,this.onLocationData.bind(this)),document.addEventListener(Sett
10ingsService.settingsLoadedEventName,this.onSettingsData.bind(this))}tryUpdateLocationData(){if(null!=this.element){const t=LocationService.getLocationByElement(this.element);t&&this.updateLocationData(t)}}updateLocationData(t){this.locationId=t.id,this.locationData=t}haveLocationData(){return null!=this.locationData}onLocationData(t){this.updateLocationData(t.detail),this.tryRender()}tryUpdateSettingsData(){if(null!=this.element){const t=SettingsService.getSettingsByElement(this.element);t&&this.updateSettingsData(t)}}onSettingsData(t){this.updateSettingsData(t.detail),this.tryRender()}updateSettingsData(t){t&&(this.locationId=t.locationId,this.logoPaddingStyle=t.logoPaddingStyle,this.hideLogoInNav=t.hideLogoInNav,this.showPhone=t.showPhoneIconOnFooter,this.navLogoUrl=t.navLogoImageUrl)}haveSettings(){return null!=this.showPhone}tryRender(){if(this.haveLocationData()&&this.haveSettings()&&this.element){let e=this.element.querySelector(`#${t.logoContainerElementId}`);if(e&&!this.hideLogoInNav){const t=document.createElement("a");t.setAttribute("href",this.orderUrl),t.setAttribute("style",this.logoPaddingStyle);let n="";n=this.navLogoUrl?`<img src="${this.navLogoUrl}"\n\t\t\t\t\t\t\t\t\t\t\talt="${this.navLogoAltText}"\n\t\t\t\t\t\t\t\t\t\t\tstyle="max-height:4em; ${this.logoPaddingStyle}"/>`:this.locationData.name,t.innerHTML=n,e.appendChild(t)}let n=this.element.querySelector(`#${t.socialLinksElementId}`);if(n);else if(this.showPhone||this.locationData.socialLinks&&this.locationData.socialLinks.length>0){const e=this.element.querySelector(`#${t.socialLinksContainerElementId}`);if(e.innerHTML=`<div id="${t.socialLinksElementId}" class="footer-social-links flex justify-center w-full transition" role="list"></div>`,n=e.querySelector(`#${t.socialLinksElementId}`),this.locationData.socialLinks&&this.locationData.socialLinks.length>0){this.locationData.socialLinks.sort(((t,e)=>t.sort-e.sort));for(const t of this.locationData.socialLinks){const e=this.socialLinkTemplate.cloneNode();e.setAttribute("class","social-link"),e.setAttribute("url",t.url),e.setAttribute("link-type",t.socialLinkType),e.setAttribute("role","listitem"),n.append(e)}}if(this.showPhone){const t=this.phoneLinkTemplate.cloneNode();t.setAttribute("phone",this.locationData.phone),t.setAttribute("role","listitem"),n.append(t)}}let a=this.element.querySelector(`#${t.footerLinksElementId}`);if(a);else if(this.locationData.footerLinks&&this.locationData.footerLinks.length>0){const e=this.element.querySelector(`#${t.footerLinksContainerElementId}`);e.setAttribute("class","default-footer-links w-full sm:w-fit"),e.innerHTML=`<div id="${t.footerLinksElementId}" class="flex justify-evenly sm:justify-end gap-4 w-full transition" role="list"></div>`,a=this.element.querySelector(`#${t.footerLinksElementId}`),this.locationData.footerLinks.sort(((t,e)=>t.sort-e.sort));for(const t of this.locationData.footerLinks){const e=this.footerLinkTemplate.cloneNode();e.setAttribute("location-id",this.locationId),e.setAttribute("website-page-id",t.websitePageId),e.setAttribute("website-page-section-id",t.websitePageSectionId),e.setAttribute("navigation-type",t.navigationType),e.setAttribute("name",t.name),e.setAttribute("url",t.url),e.setAttribute("order-url",this.orderUrl),e.setAttribute("role","listitem"),a.append(e)}}}}}newFooterClass=t,void 0===customElements.get(t.tagName)?customElements.define(t.tagName,t):window.console&&console.log(`${t.tagName} already defined`)}();let newFooterLinkClass=null;!function(){class t extends HTMLElement{static tagName="new-menufy-footer-link";static navigationnavigationTypePage="0";static navigationnavigationTypeInside="1";static navigationnavigationTypeOutside="2";static navigationnavigationTypeSignUpForDeals="3";static navigationnavigationTypeOrderOnline="4";static locationIdAttributeName="location-id";static websitePageIdAttributeName="website-page-id";static websitePageSectionIdAttributeName="website-page-section-id";static navigationTypeAttributeName="navigation-type";static nameAttributeName="name";static urlAttributeName="url";static orderUrlAttributeName="order-url";static observedAttributes=[this.locationIdAttributeName,this.websitePageIdAttributeName,this.websitePageSectionIdAttributeName,this.navigationTypeAttributeName,this.nameAttributeName,this.urlAttributeName,this.orderUrlAttributeName];constructor(){super(),this.locationId=null,this.websitePageId=null,this.websitePageSectionId=null,this.navigationType=null,this.name=null,this.url=null,this.orderUrl=null,this.locationData=null}
10updateSettingsData(t){t&&(this.navLogoUrl=t.navLogoImageUrl)}getTarget(){return this.navigationType==t.navigationnavigationTypeOutside?'target="_blank" rel="noopener noreferrer"':""}getPagePath(t){const e=this.locationData.pages.find((e=>e.id==t));return e?e.path:""}getHref(){var e=this.locationData.hasParentPortal?this.locationData.portalUrl:"";switch(this.navigationType){case t.navigationnavigationTypePage:return`${e}/${this.getPagePath(this.websitePageId)}${this.websitePageSectionId?"#scroll-"+this.websitePageSectionId:""}`;case t.navigationnavigationTypeSignUpForDeals:return this.locationData.isPortal?`${e}/locations`:`${location.OrderOnlineUrl}#signup`;case t.navigationnavigationTypeOrderOnline:return location.IsPortal?"/locations":`${this.orderUrl}`;default:return this.url}}connectedCallback(){const t=this.attachShadow({mode:"open"}),e=SettingsService.getSettingsByElement(this.shadowRoot.host);this.updateSettingsData(e),this.locationData=LocationService.getLocation(this.locationId);const n=`<a class="" ${this.getTarget()} data-pageid="${this.websitePageId}" data-sectionid="${this.websitePageSectionId}" href="${this.getHref()}">${this.name}</a>`,a=document.createElement("template");a.innerHTML=n;const o=a.content.cloneNode(!0);t.appendChild(o),PresentationService.prependStylesToNewComponent(t)}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){e==t.locationIdAttributeName?this.locationId=a:e==t.websitePageIdAttributeName?this.websitePageId=a:e==t.websitePageSectionIdAttributeName?this.websitePageSectionId=null!=a&&"null"!==a?a:null:e==t.navigationTypeAttributeName?this.navigationType=a:e==t.nameAttributeName?this.name=a:e==t.urlAttributeName?this.url=a:e==t.orderUrlAttributeName&&(this.orderUrl=a)}}newFooterLinkClass=t,void 0===customElements.get(t.tagName)?customElements.define(t.tagName,t):window.console&&console.log(`${t.tagName} already defined`)}();let phoneLinkClass=null;!function(){class t extends HTMLElement{static tagName="new-menufy-phone-link";static phoneAttributeName="phone";static observedAttributes=[this.phoneAttributeName];constructor(){super(),this.phone=null}connectedCallback(){window.console&&console.log("<new-menufy-phone-link> connected");const t=this.attachShadow({mode:"open"}),e=`\n <a href="tel:${this.phone}" class="" title="${I18nService.translateFooterPhoneTitle()}" >\n <span class="sr-only">${I18nService.translateCallAtPhone(this.phone)}</span>\n <i class="fa fa-phone fa-2x" aria-hidden="true"></i>\n </a>`,n=document.createElement("template");n.innerHTML=e;const a=n.content.cloneNode(!0);t.appendChild(a),PresentationService.prependStylesToNewComponent(t)}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){window.console&&console.log(`<new-menufy-phone-link> ${e} set`),e==t.phoneAttributeName&&(this.phone=a)}}phoneLinkClass=t,void 0===customElements.get(t.tagName)?customElements.define(t.tagName,t):window.console&&console.log(`${t.tagName} already defined`)}();let newSocialLinkClass=null;!function(){class t extends HTMLElement{static tagName="new-menufy-social-link";static urlAttributeName="url";static linkTypeAttributeName="link-type";static indexStyleElementId="index-style";static observedAttributes=[this.urlAttributeName,this.linkTypeAttributeName];constructor(){super(),this.url=null,this.linkType=null,this.indexStyleUrl=null}#Jn(t){switch(t){case"Facebook":return"fab fa-facebook";case"Instagram":return"fab fa-instagram";case"LinkedIn":return"fab fa-linkedin";case"Pinterest":return"fab fa-pinterest";case"SnapChat":return"fab fa-snapchat";case"TripAdvisor":return"fab fa-tripadvisor";case"Tumblr":return"fab fa-tumblr";case"Twitter":return"fab fa-twitter";case"Yelp":return"fab fa-yelp";case"Youtube":return"fab fa-youtube";case"Untappd":return"fab fa-untappd";case"Foursquare":return"fab fa-foursquare";case"Google":return"fab fa-google";case"TikTok":return"fab fa-tiktok";case"Threads":return"fab fa-threads";default:return""}}#Xn(){return'<svg width="2em" height="2em" viewBox="0 0 256 256" fill="currentColor" xmlns="http://www.w3.org/2000/svg">\n\t\t\t\t<path d="M156.876 54.5318C164.021 55.5421 171.018 57.3368 177.932 59.4613C190.002 63.178 201.39 68.3413 212.101 75.0396C212.847 75.5019 213.842 75.7954 214.719 75.7954C227.301 75.8473 239.876 75.8292 252.447 75.8396C253.46 75.8396 254.468 75.946 255.478 76.0032C255.478 76.2499 255.514 76.3538 255.473 76.4109C254.886 77.3148 254.291 78.2056 253.702 79.1069C249.434 85.6519 245.788 92.4983 243.635 100.067C243.401 100.88 243.352 101.56 243.902 102.357C255.101 118.44 258.675 136.096 253.995 155.128C249.891 171.821 240.323 184.836 225.784 194.051C215.392 200.64 203.912 203.777 191.648 203.845C186.495 203.876 181.368 203.182 176.335 201.879C164.071 198.697 153.557 192.583 144.893 183.324C143.75 182.108 142.675 180.838 141.456 179.464C136.875 186.293 132.366 193.009 127.748 199.902C123.148 193.03 118.702 186.378 114.266 179.753C113.959 179.914 113.871 179.932 113.811 179.989C113.71 180.072 113.624 180.173 113.544 180.27C103.064 192.645 89.8803 200.232 73.819 202.769C64.8844 204.185 56.0356 203.676 47.3582 201.284C35.0603 197.905 24.609 191.417 16.1653 181.843C7.91388 172.483 2.78173 161.616 0.854573 149.261C-1.35049 137.729 1.33506 126.61 2.00515 123.912C3.94789 116.068 7.3347 108.866 11.9838 102.243C12.311 101.773 12.4253 100.942 12.2695 100.381C10.3735 93.4281 7.10614 87.1038 3.2804 81.047C2.30903 79.5069 1.14546 78.081 0.0702052 76.6031C0.0702052 76.4343 0.0702052 76.2603 0.0702052 76.0889C0.285776 76.1149 0.49875 76.1564 0.709127 76.1564C13.5811 76.1616 26.4504 76.1668 39.3224 76.1408C39.8834 76.1408 40.5067 75.9097 40.9846 75.6032C50.0282 69.801 59.664 65.2038 69.788 61.6248C77.0889 59.0484 84.543 57.0381 92.1451 55.5655C99.5057 54.1422 106.905 53.1396 114.383 52.6462C132.613 51.2436 147.183 53.1734 156.876 54.5318ZM140.74 139.542C140.74 167.808 163.673 190.9 191.838 190.791C220.109 190.69 242.939 168.247 242.918 139.669C242.897 110.219 219.008 88.0804 190.742 88.6544C162.837 89.2335 140.994 111.726 140.74 139.542ZM64.0923 88.4596C36.5979 88.2206 12.6253 111.167 13.1058 140.397C13.5525 167.655 36.0187 190.762 64.6637 190.516C92.6724 190.277 115.185 167.405 115.237 139.708C115.281 111.253 92.4931 88.4596 64.0923 88.4596ZM66.
106272 75.1253C82.1587 76.0733 95.802 81.486 107.329 91.9684C118.832 102.43 125.572 115.481 128.021 130.828C130.54 115.663 137.103 102.734 148.391 92.3762C159.697 82.008 173.158 76.5668 188.435 75.4162C170.307 67.357 151.191 63.9338 131.514 63.5546C109.152 63.1157 87.4 66.4116 66.6272 75.1253Z" />\n\t\t\t\t<path d="M191.734 107.295C209.226 107.266 223.394 121.359 223.394 138.833C223.394 156.375 209.468 169.935 193.038 170.561C174.688 171.265 160.006 156.645 160.011 138.911C160.027 120.974 174.813 106.999 191.734 107.295ZM212.366 138.911C212.359 127.509 203.141 118.242 191.817 118.242C180.363 118.242 171.039 127.46 170.992 138.828C170.951 150.147 180.322 159.564 191.669 159.595C203.035 159.64 212.372 150.292 212.366 138.911Z" />\n\t\t\t\t<path d="M63.417 107.295C80.899 107.277 95.0878 121.395 95.0436 138.867C94.9943 156.551 81.0549 169.816 64.913 170.551C46.4907 171.392 31.6267 156.707 31.6605 138.877C31.6968 120.813 46.5842 106.993 63.417 107.295ZM84.0261 138.841C83.9923 127.369 74.715 118.224 63.1339 118.245C51.9631 118.266 42.6026 127.694 42.6286 138.906C42.6572 150.248 52.0073 159.575 63.3858 159.606C74.6942 159.632 84.0547 150.214 84.0261 138.841Z" />\n\t\t\t\t<path d="M191.749 128.416C197.546 128.41 202.299 133.166 202.245 138.929C202.188 144.705 197.515 149.386 191.814 149.388C185.945 149.388 181.225 144.75 181.238 139.002C181.249 133.039 185.833 128.421 191.749 128.416Z" />\n\t\t\t\t<path d="M63.3625 128.322C69.2479 128.317 73.9774 133.018 74.0008 138.885C74.0242 144.703 69.2505 149.479 63.3937 149.492C57.3966 149.505 52.7709 144.872 52.7761 138.843C52.7761 132.924 57.3914 128.33 63.3625 128.322Z" />\n\t\t\t</svg>'}connectedCallback(){const t=this.attachShadow({mode:"open"}),e=`\n <a href="${this.url}" class="" title="${this.linkType}" target="_blank" rel="noopener noreferrer" >\n <span class="sr-only">${I18nService.translateVisitOurSocial(this.linkType)}</span>\n\t\t\t\t\t\t${"TripAdvisor"!==this.linkType?`<i class="${this.#Jn(this.linkType)} fa-2x" ></i>`:this.#Xn()}\n </a>`,n=document.createElement("template");n.innerHTML=e;const a=n.content.cloneNode(!0);t.appendChild(a),PresentationService.prependStylesToNewComponent(t)}disconnectedCallback(){}adoptedCallback(){}attributeChangedCallback(e,n,a){e==t.urlAttributeName?this.url=a:e==t.linkTypeAttributeName&&(this.linkType=a)}}newSocialLinkClass=t,void 0===customElements.get(t.tagName)?customElements.define(t.tagName,t):window.console&&console.log(`${t.tagName} already defined`)}(); 11}
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.