mealz-components 2.4.1 → 2.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../drawer-view-swapper/drawer-view-swapper.min.js";import"../../slider-tabs/slider-tabs.min.js";import"../planner-onboarding-modal/planner-onboarding-modal.min.js";import"../to-basket-loader/to-basket-loader.min.js";import{o as f}from"../helpers/open-onboarding-modal.min.js";import{M as _}from"../planner-abandon-modal/planner-abandon-modal.min.js";import{M as b}from"../planner-onboarding/planner-onboarding.min.js";import{M as S}from"../planner-open-catalog-modal/planner-open-catalog-modal.min.js";import{M as B}from"../planner-welcome-modal/planner-welcome-modal.min.js";import{N as E,B as z,O as L}from"../../assets/no-shadow-element-YPHUv5PR.js";import{t as R}from"../../assets/custom-element-BhZVzxrc.js";import{r as C}from"../../assets/state-W5mtSPAs.js";import{m as o}from"../../assets/mealz-sdk-E_fNZM-c.js";import{i as k,a as P}from"../../assets/responsive-C7Qf71r3.js";import{P as O}from"../../assets/price-DAxY_7sk.js";import{g as I,f as V}from"../helpers/menu-title.min.js";import{t as l}from"../../assets/take-CozE9iSG.js";import{s as h}from"../../assets/switchMap-Dk_0Nhlo.js";import{f as q}from"../../assets/from-CAidt5N1.js";import{m}from"../../assets/map-BVOhpQm0.js";import{f as w}from"../../assets/filter-BZ75lS5D.js";import{c as x}from"../../assets/combineLatest-BmqPE0OB.js";import"../../drawer/drawer.min.js";import"../../assets/property-_7ObQ3dl.js";import"../../assets/unsafe-html-CY0Np4--.js";import"../../store-locator-drawer/store-locator-drawer.min.js";import"../../assets/skipWhile-BZVFq1Cg.js";import"../../assets/OperatorSubscriber-BaYaQC1O.js";import"../../assets/innerFrom-BgPDnAsH.js";import"../../recipe-details/recipe-details.min.js";import"../../recipe-pricing/recipe-pricing.min.js";import"../../assets/viewport-listener-CDsKFDz1.js";import"../../assets/debounceTime-B4DpnstH.js";import"../../assets/async-CFBGA-Dz.js";import"../../assets/empty-0eVnsLmk.js";import"../../assets/merge-Cm-mm3_Q.js";import"../../assets/mergeAll-BdUAXyrs.js";import"../../assets/mergeMap-Dw_YYHwH.js";import"../../assets/executeSchedule-CEDvgTzM.js";import"../../assets/args-BozZ6oU-.js";import"../../assets/isScheduler-C5PGPVU1.js";import"../../assets/capitalize-DUAqYmp4.js";import"../../counter/counter.min.js";import"../../assets/product-card-HetVhdJ3.js";import"../../price/price.min.js";import"../../assets/promotion-badge-8Arhhb-p.js";import"../../assets/delay-BNnJ-6LE.js";import"../../assets/timer-D82-ik89.js";import"../../assets/accordion-DJLqKUJq.js";import"../../store-indicator/store-indicator.min.js";import"../../store-locator/store-locator.min.js";import"../../assets/query-BApjzB0v.js";import"../../last-order-badge/last-order-badge.min.js";import"../../order-again/order-again.min.js";import"../../like-button/like-button.min.js";import"../../last-order-modal/last-order-modal.min.js";import"../../assets/tap-C8CJ3R2H.js";import"../../onboarding/onboarding.min.js";import"../../onboarding/events.min.js";import"../../onboarding/analytics/onboarding-analytics.min.js";import"../../assets/mapOneOrManyArgs-COA1aRZM.js";import"../planner-catalog/planner-catalog.min.js";import"../../catalog/catalog-load-more.min.js";import"../../assets/http-Bepz6wA4.js";import"../../replace-item/replace-item.min.js";import"../../replace-item/replace-item-card/replace-item-card.min.js";import"../../assets/price-utils-BRFZa-3D.js";import"../../assets/distinctUntilChanged-91AVuO2B.js";import"../../replace-item-planner/replace-item-planner.min.js";import"../../replace-item-planner/replace-item-card-planner/replace-item-card-planner.min.js";import"../../history-drawer/history-drawer.min.js";import"../../assets/of-DiALp3BZ.js";import"../../supplier-selector/supplier-selector.min.js";import"../../catalog/basket-preview/basket-preview.min.js";import"../../modal/modal.min.js";import"../../preferences/preferences.min.js";function T({root:e,footer:t,fixedClass:r="is-fixed"}){let n;const i=()=>{n=void 0;const a=e.getBoundingClientRect(),c=t.offsetHeight||0,u=window.innerHeight||document.documentElement.clientHeight,p=a.top<u-c&&a.bottom>u;t.classList.toggle(r,p),p?(t.style.left=`${a.left}px`,t.style.width=`${a.width}px`,e.style.paddingBottom=`${c}px`):(t.style.left="",t.style.width="",e.style.paddingBottom="")},s=()=>{n===void 0&&(n=window.requestAnimationFrame(i))};return window.addEventListener("scroll",s,{passive:!0}),window.addEventListener("resize",s,{passive:!0}),s(),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s),n!==void 0&&(window.cancelAnimationFrame(n),n=void 0),t.classList.remove(r),t.style.left="",t.style.width="",e.style.paddingBottom=""}}var A=Object.defineProperty,F=Object.getOwnPropertyDescriptor,g=(e,t,r,n)=>{for(var i=n>1?void 0:n?F(t,r):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&A(t,r,i),i};const y="view",M="menu",v="recipe";let d=class extends E{constructor(){super(...arguments),this.analyticsPath="/meals-planner/current",this.loaderToBasketComplete$=new z(!1),this.subscriptions=[],this.isCustomMenu=!1,this.budget=0,this.recipeSources=new Map,this.priceService=O.getInstance(),this.isMobile=!1,this.mobileView="recipe",this.handleBasketComplete=()=>{this.loaderToBasketComplete$.next(!0)}}get selectors(){return{recipe:".mealz-planner-current-menu__recipe",menu:".mealz-planner-current-menu__menu",displayRecipeButton:".mealz-planner-current-menu__mobile-recipe-button",preferencesButton:".mealz-planner-current-menu__menu-header-preferences",preferencesMobileButton:".mealz-planner-current-menu__mobile-preferences-button",onboardingButton:".mealz-planner-current-menu__onboarding-button",onboardingButtonMobile:".mealz-planner-current-menu__mobile-onboarding-button",cancelMenuButton:".mealz-planner-current-menu__cancel-menu-button",footer:".mealz-planner-current-menu__footer",footerButton:".mealz-planner-current-menu__footer-button",footerIcon:".mealz-planner-current-menu__footer-icon",footerDisabledIcon:".mealz-planner-current-menu__footer-disabled-icon",preferencesCounterBadges:[".mealz-planner-current-menu__preferences-badge"],footerPrimary:".mealz-planner-current-menu__footer-primary",footerQuickMenu:".mealz-planner-current-menu__footer-quick-menu"}}get nbrRecipeInMenu(){return this.querySelectorAll(".mealz-planner-recipe-card").length}connectedCallback(){super.connectedCallback(),this.pageview(),this.initSelectors(),this.addEventListeners(),this.footerStickyCleanup=this.setupFooterViewportSticky(),this.priceService.initFormatter(),this.addEventListener("budgetUpdated",e=>{const t=e.detail;(t==null?void 0:t.budgetLimit)===void 0||t.budgetLimit===null||this.updateBudget(t.budgetLimit)}),this.isMobile=k(this,"","(max-width: 1023px)"),this.isCustomMenu=localStorage.getItem("_miam/isCustomMenu")==="true",this.mobileView=this.getInitialMobileViewFromUrlOrDefault(),this.handleResize(),this.removeResponsiveListener=P(this,e=>{e!==this.isMobile&&(this.isMobile=e),this.handleResize()},"","(max-width: 1023px)"),o.recipes.setIsRecipeDetailsFromPlanner(!0),this.subscriptions.push(o.preferences.preferencesCount().subscribe(e=>this.updatePreferencesCount(e))),this.showWelcomeModal()}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.footerStickyCleanup&&(this.footerStickyCleanup(),this.footerStickyCleanup=void 0),this.removeResponsiveListener&&(this.removeResponsiveListener(),this.removeResponsiveListener=void 0)}setupFooterViewportSticky(){const e=this.querySelector(".mealz-planner-current-menu"),t=this.querySelector(".mealz-planner-current-menu__footer");if(!(!e||!t))return T({root:e,footer:t,fixedClass:"is-fixed"})}render(){const e=this.getAttribute("starting-data");e&&(Object.assign(this,JSON.parse(e)),this.removeAttribute("starting-data"))}showWelcomeModal(){const e=this.isCustomMenu?"_miam/customMenuOnboarding":"_miam/suggestionOnboarding";if(localStorage.getItem(e)==="true")return;const r=new B;r.isCustomMenu=this.isCustomMenu,r.addEventListener("openOnboarding",n=>{const i=n.detail??{};this.startPlannerOnboarding(i.isCustomMenu??this.isCustomMenu,!1)}),r.addEventListener("onboarding-skipped",()=>{localStorage.setItem(e,"true"),this.startPlannerOnboarding(!1,!0)}),r.displayPlannerWelcomeModal(),this.autoCloseWelcomeOnDrawerOpen(r)}autoCloseWelcomeOnDrawerOpen(e){requestAnimationFrame(()=>{const r=document.querySelector("mealz-drawer-view-swapper");if(!r)return;const n=r.currentView$.subscribe(i=>{i!==void 0&&(document.body.contains(e)&&e.remove(),n.unsubscribe())})})}startPlannerOnboarding(e,t){this.scrollIntoView({behavior:"smooth",block:"center"});const r=new b;r.isCustomMenu=e,document.body.appendChild(r),t?(r.type=this.isMobile?"guide-mobile":"guide",r.launchOnboardingTour()):(this.isMobile?r.type=e?"custom-mobile":"suggestion-mobile":r.type=e?"custom":"suggestion",r.startTour())}addEventListeners(){this.addClickListener("displayRecipeButton",()=>{this.setMobileView("recipe")}),this.addClickListener("preferencesButton",()=>{this.openPreferences()}),this.addClickListener("preferencesMobileButton",()=>{this.openPreferences()}),this.addClickListener("cancelMenuButton",()=>{this.cancelMenu()}),this.addClickListener("footerButton",()=>{this.handleMenu()}),this.addClickListener("onboardingButton",()=>f("current")),this.addClickListener("onboardingButtonMobile",()=>f("current"))}showMenu(){this.setMobileView("menu")}setMobileView(e,t){this.mobileView=e,this.isMobile&&this.toggleMobileView(e==="menu"),(t==null?void 0:t.updateUrl)!==!1&&this.updateUrlMobileView(e)}toggleMobileView(e){const{recipe:t,menu:r,displayRecipeButton:n,footerPrimary:i,footerQuickMenu:s}=this.elements;!t||!r||(t.style.display=e?"none":"block",r.style.display=e?"flex":"none",n&&(n.style.display=e?"flex":"none"),i&&(i.style.display=e?"flex":"none"),s&&(s.style.display=e?"none":"block"))}showSuggestions(){this.setMobileView("recipe")}getInitialMobileViewFromUrlOrDefault(){const e=this.getUrlMobileView();return e||(this.isCustomMenu?"recipe":"menu")}getUrlMobileView(){if(typeof window>"u")return null;try{const t=new URLSearchParams(window.location.search).get(y);return t?t===M?"menu":t===v?"recipe":null:null}catch{return null}}updateUrlMobileView(e){var t;if(!(typeof window>"u")&&(t=window.history)!=null&&t.replaceState)try{const r=new URL(window.location.href);r.searchParams.set(y,e==="menu"?M:v),window.history.replaceState(window.history.state,"",r.toString())}catch{console.error("Failed to update URL mobile view")}}handleResize(){const{menu:e,recipe:t,footerPrimary:r,footerQuickMenu:n}=this.elements;!e||!t||(this.isMobile?this.toggleMobileView(this.mobileView==="menu"):(e.style.display="flex",t.style.display="block",r&&(r.style.display="flex"),n&&(n.style.display="none")))}async openPreferences(){const e=document.querySelector("mealz-drawer-view-swapper");e&&(e.displayPreferences$.next(!0),await e.updateComplete)}updatePreferencesCount(e){const{preferencesCounterBadges:t}=this.elements;t&&t.forEach(r=>{const n=r.querySelector("p");n&&(n.textContent=e.toString(),r.classList.toggle("hidden",e===0))})}updateRecipeCounterBadge(e){const{recipeCounterBadge:t}=this.elements;if(!t)return;const r=t.querySelector("p");r.textContent=e.toString(),t.classList.toggle("hidden",e===0)}cancelMenu(){const e=new _;e.addEventListener("resetMenu",()=>this.resetMenu()),e.displayPlannerAbandonModal()}resetMenu(){if(!this.menuId)return;const e=I()??this.guests??4;this.isCustomMenu=!0,localStorage.setItem("_miam/isCustomMenu","true");const t=o.planner.deleteMenu(this.menuId).pipe(l(1),h(()=>o.planner.createMenu()),l(1),h(r=>{const n=r==null?void 0:r.id;return n?q(V(!0)).pipe(h(i=>o.planner.updateMenu(n,{attributes:{guests:e,title:i}}).pipe(l(1),m(()=>{})))):new L(i=>{i.error(new Error("Menu reset: createMenu did not return a menu id"))})}));this.resetMenuEvent(),t.subscribe({next:()=>{this.updateRecipeCounterBadge(0),this.updateFooterButton(!1),window.location.reload()},error:r=>{console.error("Error while resetting menu:",r),window.location.reload()}})}redirectToRetailerCart(){var e,t;if((e=this.plannerRoutes)!=null&&e.retailerCart){window.location.href=this.plannerRoutes.retailerCart;return}(t=this.plannerRoutes)!=null&&t.catalogHome&&(window.location.href=this.plannerRoutes.catalogHome+"?myMeals=products")}handleMenu(){this.storeId?(this.displayAddToBasketLoaderView(),this.finalizeMenuEvent(),this.navigateOnceDone()):console.log("register menu")}navigateOnceDone(){const e=this.loaderToBasketComplete$.pipe(w(r=>r===!0),l(1)),t=o.planner.menuToBasket(this.basket.id).pipe(l(1),m(()=>o.basket.updateRetailerBasketFromPlanner()));this.subscriptions.push(x([t,e]).pipe(l(1)).subscribe(()=>{this.loaderToBasketElement.remove(),this.redirectToRetailerCart()}))}retrieveRecipesImgs(){const e=[];return document.querySelectorAll(".mealz-planner-recipe-card").forEach(r=>{if(r.querySelector(".mealz-planner-recipe-card__in-basket:not(.hidden)"))return;const i=r.querySelector("img");i&&i.src&&e.push(i.src)}),e}displayAddToBasketLoaderView(){const e=document.querySelector(".mealz-planner-current-menu");if(!e)return;this.loaderToBasketComplete$.next(!1),e.style.display="none";const t=this.retrieveRecipesImgs(),r=document.querySelector("mealz-to-basket-loader");r&&r.remove(),this.loaderToBasketElement=document.createElement("mealz-to-basket-loader"),this.loaderToBasketElement.recipeImgs=t,this.loaderToBasketElement.addEventListener("basketComplete",this.handleBasketComplete),e.insertAdjacentElement("afterend",this.loaderToBasketElement)}updateFooterButton(e){const{footerButton:t,footerIcon:r,footerDisabledIcon:n}=this.elements;!t||!r||!n||(t.classList.toggle("disabled",!e),r.classList.toggle("hidden",!e),n.classList.toggle("hidden",e))}openCatalogModal(){const e=new S;e.addEventListener("openCatalog",()=>{this.openCatalogDrawer()}),e.displayMealzPlannerOpenCatalogModal()}async openCatalogDrawer(e=!0){const t=document.querySelector("mealz-drawer-view-swapper");if(!t)return;t.displayPlannerCatalog$.next(!0),await t.updateComplete;const r=document.querySelector("mealz-planner-catalog");r&&(r.setConfig(this.storeId,this.catalogURL,this.sessionId,e),r.getPlannerCatalog(),r.pageview())}getRecipeSource(){const e=document.querySelector("mealz-planner-catalog");if(e){const t=e.getExtraType();if(t)switch(t){case"starter":return"collection_entrees";case"dessert":return"collection_desserts";case"drink":return"collection_boissons"}}return"catalog"}getJourney(){const e=document.querySelector("mealz-planner-catalog");if(e){if(e.getExtraType())return"meals-planner-categories";const r=document.querySelector("mealz-catalog-toolbar");if(r){const n=r.querySelector(".mealz-catalog-toolbar__searchbar-input");if(n&&n.value.trim().length>0)return"meals-space-catalog-search"}return"meals-space-catalog"}return"meals-planner-dashboard"}addRecipe(e,t,r,n){var u,p;const i=(p=(u=o.recipes)==null?void 0:u.productsPlannerByCategory$)==null?void 0:p.value,s=(i==null?void 0:i.toPickProducts)||[],a=r||this.getRecipeSource(),c=n||this.getJourney();return this.recipeSources.set(e,a),o.planner.addRecipeToMenu(e,t,!!o.pos.currentPos().value,s).pipe(l(1),m(async()=>{await this.addRecipeToList(e),this.showResetMenuButton(),this.updateFooterButtonState(),this.recipeAddedEvent(e,a,c),this.shouldShowMenuToBasketOnboarding()}))}removeRecipe(e){return o.planner.removeRecipeFromMenu(e).pipe(l(1),m(()=>{const t=this.findRecipeIndexById(e);t!==-1&&(this.removeRecipeFromList(t),this.recipeSources.delete(e),this.updateFooterButtonState(),this.recipeRemovedEvent(e))}))}async addRecipeToList(e){const t=document.querySelector("mealz-planner-recipe-list");t&&await t.addRecipeCardToList(e)}removeRecipeFromList(e){const t=document.querySelector("mealz-planner-recipe-list");t&&t.removeRecipeCardFromList(e)}showResetMenuButton(){const e=document.querySelector(".mealz-planner-current-menu__cancel-menu");e&&e.classList.remove("hidden")}shouldShowMenuToBasketOnboarding(){var n;if(localStorage.getItem("_miam/menuToBasketOnboarding")==="true")return;this.isMobile&&this.setMobileView("menu");const t=document.querySelector("mealz-drawer-view-swapper");((n=t==null?void 0:t.currentView$)==null?void 0:n.value)!==void 0?this.subscriptions.push(t.currentView$.pipe(w(i=>i===void 0),l(1)).subscribe(()=>{this.showMenuToBasketOnboarding()})):this.showMenuToBasketOnboarding()}showMenuToBasketOnboarding(){this.updateComplete.then(()=>{const e=new b;e.type=this.isMobile?"menu-to-basket-mobile":"menu-to-basket",document.body.appendChild(e),e.launchOnboardingTour()})}updateFooterButtonState(){const e=this.nbrRecipeInMenu>0;this.updateFooterButton(e)}findRecipeIndexById(e){const t=document.querySelectorAll("mealz-planner-recipe-card");for(let r=0;r<t.length;r++)if(t[r].recipeId===e)return r;return-1}getAllRecipeIds(){const e=[];return document.querySelectorAll("mealz-planner-recipe-card").forEach(r=>{const n=r.recipeId;n&&e.push(n)}),e}pageview(){o.analytics.sendEvent("pageview",this.analyticsPath,{})}resetMenuEvent(){o.analytics.sendEvent("planner.reset",this.analyticsPath,{})}finalizeMenuEvent(){o.analytics.sendEvent("planner.finalize",this.analyticsPath,{budget_user:this.budget,recipe_count:this.nbrRecipeInMenu,guests:this.guests,mode:this.isCustomMenu?"custom":"from-featured"},"meals-planner-dashboard"),this.getAllRecipeIds().forEach(t=>{const r=this.recipeSources.get(t)||"";o.analytics.sendEvent("recipe.add",this.analyticsPath,{recipe_id:t,recipe_source:r,mode:this.isCustomMenu?"custom":"from-featured"},"meals-planner-dashboard")})}recipeAddedEvent(e,t,r){o.analytics.sendEvent("planner.recipe.add",this.analyticsPath,{recipe_id:e,recipe_source:t||"",mode:this.isCustomMenu?"custom":"from-featured"},r||"meals-planner-dashboard")}recipeRemovedEvent(e){o.analytics.sendEvent("planner.recipe.delete",this.analyticsPath,{recipe_id:e})}updateBudget(e){if(!this.menuId)return;const r=o.planner.updateMenu(this.menuId,{attributes:{budget:e}}).pipe(l(1)).subscribe({next:()=>{this.budget=e,this.updateBudgetGaugeUI(e)}});this.subscriptions.push(r)}updateBudgetGaugeUI(e){var c;const t=this.querySelector(".mealz-planner-budget-gauge__budget-limit"),r=this.querySelector(".mealz-planner-budget-gauge__budget-define"),n=this.querySelector(".mealz-planner-budget-gauge__budget-edit"),i=this.querySelector(".mealz-planner-budget-gauge__budget"),s=this.querySelector(".mealz-planner-budget-gauge__gauge");t&&(t.textContent=`/ ${this.priceService.formatPrice(e)}`,t.classList.toggle("hidden",e<=0)),r&&r.classList.toggle("hidden",e>0),n&&n.classList.toggle("hidden",e<=0),i&&i.classList.toggle("only-total",e<=0),s&&s.classList.toggle("hidden",e<=0);const a=this.querySelector("mealz-planner-budget-gauge");a&&(a.budgetLimit=e,(c=a.elements)!=null&&c.gaugeBar&&typeof a.updateGaugeBar=="function"&&a.updateGaugeBar())}};g([C()],d.prototype,"isMobile",2);g([C()],d.prototype,"mobileView",2);d=g([R("mealz-planner-current-menu")],d);customElements.get("mealz-planner-current-menu")||customElements.define("mealz-planner-current-menu",d);
|
|
1
|
+
import"../../drawer-view-swapper/drawer-view-swapper.min.js";import"../../slider-tabs/slider-tabs.min.js";import"../planner-onboarding-modal/planner-onboarding-modal.min.js";import"../to-basket-loader/to-basket-loader.min.js";import{o as f}from"../helpers/open-onboarding-modal.min.js";import{M as _}from"../planner-abandon-modal/planner-abandon-modal.min.js";import{M as b}from"../planner-onboarding/planner-onboarding.min.js";import{M as S}from"../planner-open-catalog-modal/planner-open-catalog-modal.min.js";import{M as B}from"../planner-welcome-modal/planner-welcome-modal.min.js";import{N as E,B as z,O as L}from"../../assets/no-shadow-element-YPHUv5PR.js";import{t as R}from"../../assets/custom-element-BhZVzxrc.js";import{r as C}from"../../assets/state-W5mtSPAs.js";import{m as o}from"../../assets/mealz-sdk-E_fNZM-c.js";import{i as k,a as P}from"../../assets/responsive-C7Qf71r3.js";import{P as O}from"../../assets/price-DAxY_7sk.js";import{g as I,f as V}from"../helpers/menu-title.min.js";import{t as l}from"../../assets/take-CozE9iSG.js";import{s as h}from"../../assets/switchMap-Dk_0Nhlo.js";import{f as q}from"../../assets/from-CAidt5N1.js";import{m}from"../../assets/map-BVOhpQm0.js";import{f as w}from"../../assets/filter-BZ75lS5D.js";import{c as T}from"../../assets/combineLatest-BmqPE0OB.js";import"../../drawer/drawer.min.js";import"../../assets/property-_7ObQ3dl.js";import"../../assets/unsafe-html-CY0Np4--.js";import"../../store-locator-drawer/store-locator-drawer.min.js";import"../../assets/skipWhile-BZVFq1Cg.js";import"../../assets/OperatorSubscriber-BaYaQC1O.js";import"../../assets/innerFrom-BgPDnAsH.js";import"../../recipe-details/recipe-details.min.js";import"../../recipe-pricing/recipe-pricing.min.js";import"../../assets/viewport-listener-CDsKFDz1.js";import"../../assets/debounceTime-B4DpnstH.js";import"../../assets/async-CFBGA-Dz.js";import"../../assets/empty-0eVnsLmk.js";import"../../assets/merge-Cm-mm3_Q.js";import"../../assets/mergeAll-BdUAXyrs.js";import"../../assets/mergeMap-Dw_YYHwH.js";import"../../assets/executeSchedule-CEDvgTzM.js";import"../../assets/args-BozZ6oU-.js";import"../../assets/isScheduler-C5PGPVU1.js";import"../../assets/capitalize-DUAqYmp4.js";import"../../counter/counter.min.js";import"../../assets/product-card-HetVhdJ3.js";import"../../price/price.min.js";import"../../assets/promotion-badge-8Arhhb-p.js";import"../../assets/delay-BNnJ-6LE.js";import"../../assets/timer-D82-ik89.js";import"../../assets/accordion-DJLqKUJq.js";import"../../store-indicator/store-indicator.min.js";import"../../store-locator/store-locator.min.js";import"../../assets/query-BApjzB0v.js";import"../../last-order-badge/last-order-badge.min.js";import"../../order-again/order-again.min.js";import"../../like-button/like-button.min.js";import"../../last-order-modal/last-order-modal.min.js";import"../../assets/tap-C8CJ3R2H.js";import"../../onboarding/onboarding.min.js";import"../../onboarding/events.min.js";import"../../onboarding/analytics/onboarding-analytics.min.js";import"../../assets/mapOneOrManyArgs-COA1aRZM.js";import"../planner-catalog/planner-catalog.min.js";import"../../catalog/catalog-load-more.min.js";import"../../assets/http-Bepz6wA4.js";import"../../replace-item/replace-item.min.js";import"../../replace-item/replace-item-card/replace-item-card.min.js";import"../../assets/price-utils-BRFZa-3D.js";import"../../assets/distinctUntilChanged-91AVuO2B.js";import"../../replace-item-planner/replace-item-planner.min.js";import"../../replace-item-planner/replace-item-card-planner/replace-item-card-planner.min.js";import"../../history-drawer/history-drawer.min.js";import"../../assets/of-DiALp3BZ.js";import"../../supplier-selector/supplier-selector.min.js";import"../../catalog/basket-preview/basket-preview.min.js";import"../../modal/modal.min.js";import"../../preferences/preferences.min.js";function x({root:e,footer:t,fixedClass:r="is-fixed"}){let n;const i=()=>{n=void 0;const a=e.getBoundingClientRect(),c=t.offsetHeight||0,u=window.innerHeight||document.documentElement.clientHeight,p=a.top<u-c&&a.bottom>u;t.classList.toggle(r,p),p?(t.style.left=`${a.left}px`,t.style.width=`${a.width}px`,e.style.paddingBottom=`${c}px`):(t.style.left="",t.style.width="",e.style.paddingBottom="")},s=()=>{n===void 0&&(n=window.requestAnimationFrame(i))};return window.addEventListener("scroll",s,{passive:!0}),window.addEventListener("resize",s,{passive:!0}),s(),()=>{window.removeEventListener("scroll",s),window.removeEventListener("resize",s),n!==void 0&&(window.cancelAnimationFrame(n),n=void 0),t.classList.remove(r),t.style.left="",t.style.width="",e.style.paddingBottom=""}}var A=Object.defineProperty,F=Object.getOwnPropertyDescriptor,g=(e,t,r,n)=>{for(var i=n>1?void 0:n?F(t,r):t,s=e.length-1,a;s>=0;s--)(a=e[s])&&(i=(n?a(t,r,i):a(i))||i);return n&&i&&A(t,r,i),i};const y="view",M="menu",v="recipe";let d=class extends E{constructor(){super(...arguments),this.analyticsPath="/meals-planner/current",this.loaderToBasketComplete$=new z(!1),this.subscriptions=[],this.isCustomMenu=!1,this.budget=0,this.recipeSources=new Map,this.priceService=O.getInstance(),this.isMobile=!1,this.mobileView="recipe",this.handleBasketComplete=()=>{this.loaderToBasketComplete$.next(!0)}}get selectors(){return{recipe:".mealz-planner-current-menu__recipe",menu:".mealz-planner-current-menu__menu",displayRecipeButton:".mealz-planner-current-menu__mobile-recipe-button",preferencesButton:".mealz-planner-current-menu__menu-header-preferences",preferencesMobileButton:".mealz-planner-current-menu__mobile-preferences-button",onboardingButton:".mealz-planner-current-menu__onboarding-button",onboardingButtonMobile:".mealz-planner-current-menu__mobile-onboarding-button",cancelMenuButton:".mealz-planner-current-menu__cancel-menu-button",footer:".mealz-planner-current-menu__footer",footerButton:".mealz-planner-current-menu__footer-button",footerIcon:".mealz-planner-current-menu__footer-icon",footerDisabledIcon:".mealz-planner-current-menu__footer-disabled-icon",preferencesCounterBadges:[".mealz-planner-current-menu__preferences-badge"],footerPrimary:".mealz-planner-current-menu__footer-primary",footerQuickMenu:".mealz-planner-current-menu__footer-quick-menu"}}get nbrRecipeInMenu(){return this.querySelectorAll(".mealz-planner-recipe-card").length}connectedCallback(){super.connectedCallback(),requestAnimationFrame(()=>{window.scrollTo(0,0)}),this.pageview(),this.initSelectors(),this.addEventListeners(),this.footerStickyCleanup=this.setupFooterViewportSticky(),this.priceService.initFormatter(),this.addEventListener("budgetUpdated",e=>{const t=e.detail;(t==null?void 0:t.budgetLimit)===void 0||t.budgetLimit===null||this.updateBudget(t.budgetLimit)}),this.isMobile=k(this,"","(max-width: 1023px)"),this.isCustomMenu=localStorage.getItem("_miam/isCustomMenu")==="true",this.mobileView=this.getInitialMobileViewFromUrlOrDefault(),this.handleResize(),this.removeResponsiveListener=P(this,e=>{e!==this.isMobile&&(this.isMobile=e),this.handleResize()},"","(max-width: 1023px)"),o.recipes.setIsRecipeDetailsFromPlanner(!0),this.subscriptions.push(o.preferences.preferencesCount().subscribe(e=>this.updatePreferencesCount(e))),this.showWelcomeModal()}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.footerStickyCleanup&&(this.footerStickyCleanup(),this.footerStickyCleanup=void 0),this.removeResponsiveListener&&(this.removeResponsiveListener(),this.removeResponsiveListener=void 0)}setupFooterViewportSticky(){const e=this.querySelector(".mealz-planner-current-menu"),t=this.querySelector(".mealz-planner-current-menu__footer");if(!(!e||!t))return x({root:e,footer:t,fixedClass:"is-fixed"})}render(){const e=this.getAttribute("starting-data");e&&(Object.assign(this,JSON.parse(e)),this.removeAttribute("starting-data"))}showWelcomeModal(){const e=this.isCustomMenu?"_miam/customMenuOnboarding":"_miam/suggestionOnboarding";if(localStorage.getItem(e)==="true")return;const r=new B;r.isCustomMenu=this.isCustomMenu,r.addEventListener("openOnboarding",n=>{const i=n.detail??{};this.startPlannerOnboarding(i.isCustomMenu??this.isCustomMenu,!1)}),r.addEventListener("onboarding-skipped",()=>{localStorage.setItem(e,"true"),this.startPlannerOnboarding(!1,!0)}),r.displayPlannerWelcomeModal(),this.autoCloseWelcomeOnDrawerOpen(r)}autoCloseWelcomeOnDrawerOpen(e){requestAnimationFrame(()=>{const r=document.querySelector("mealz-drawer-view-swapper");if(!r)return;const n=r.currentView$.subscribe(i=>{i!==void 0&&(document.body.contains(e)&&e.remove(),n.unsubscribe())})})}startPlannerOnboarding(e,t){this.scrollIntoView({behavior:"smooth",block:"center"});const r=new b;r.isCustomMenu=e,document.body.appendChild(r),t?(r.type=this.isMobile?"guide-mobile":"guide",r.launchOnboardingTour()):(this.isMobile?r.type=e?"custom-mobile":"suggestion-mobile":r.type=e?"custom":"suggestion",r.startTour())}addEventListeners(){this.addClickListener("displayRecipeButton",()=>{this.setMobileView("recipe")}),this.addClickListener("preferencesButton",()=>{this.openPreferences()}),this.addClickListener("preferencesMobileButton",()=>{this.openPreferences()}),this.addClickListener("cancelMenuButton",()=>{this.cancelMenu()}),this.addClickListener("footerButton",()=>{this.handleMenu()}),this.addClickListener("onboardingButton",()=>f("current")),this.addClickListener("onboardingButtonMobile",()=>f("current"))}showMenu(){this.setMobileView("menu")}setMobileView(e,t){this.mobileView=e,this.isMobile&&this.toggleMobileView(e==="menu"),(t==null?void 0:t.updateUrl)!==!1&&this.updateUrlMobileView(e)}toggleMobileView(e){const{recipe:t,menu:r,displayRecipeButton:n,footerPrimary:i,footerQuickMenu:s}=this.elements;!t||!r||(t.style.display=e?"none":"block",r.style.display=e?"flex":"none",n&&(n.style.display=e?"flex":"none"),i&&(i.style.display=e?"flex":"none"),s&&(s.style.display=e?"none":"block"))}showSuggestions(){this.setMobileView("recipe")}getInitialMobileViewFromUrlOrDefault(){const e=this.getUrlMobileView();return e||(this.isCustomMenu?"recipe":"menu")}getUrlMobileView(){if(typeof window>"u")return null;try{const t=new URLSearchParams(window.location.search).get(y);return t?t===M?"menu":t===v?"recipe":null:null}catch{return null}}updateUrlMobileView(e){var t;if(!(typeof window>"u")&&(t=window.history)!=null&&t.replaceState)try{const r=new URL(window.location.href);r.searchParams.set(y,e==="menu"?M:v),window.history.replaceState(window.history.state,"",r.toString())}catch{console.error("Failed to update URL mobile view")}}handleResize(){const{menu:e,recipe:t,footerPrimary:r,footerQuickMenu:n}=this.elements;!e||!t||(this.isMobile?this.toggleMobileView(this.mobileView==="menu"):(e.style.display="flex",t.style.display="block",r&&(r.style.display="flex"),n&&(n.style.display="none")))}async openPreferences(){const e=document.querySelector("mealz-drawer-view-swapper");e&&(e.displayPreferences$.next(!0),await e.updateComplete)}updatePreferencesCount(e){const{preferencesCounterBadges:t}=this.elements;t&&t.forEach(r=>{const n=r.querySelector("p");n&&(n.textContent=e.toString(),r.classList.toggle("hidden",e===0))})}updateRecipeCounterBadge(e){const{recipeCounterBadge:t}=this.elements;if(!t)return;const r=t.querySelector("p");r.textContent=e.toString(),t.classList.toggle("hidden",e===0)}cancelMenu(){const e=new _;e.addEventListener("resetMenu",()=>this.resetMenu()),e.displayPlannerAbandonModal()}resetMenu(){if(!this.menuId)return;const e=I()??this.guests??4;this.isCustomMenu=!0,localStorage.setItem("_miam/isCustomMenu","true");const t=o.planner.deleteMenu(this.menuId).pipe(l(1),h(()=>o.planner.createMenu()),l(1),h(r=>{const n=r==null?void 0:r.id;return n?q(V(!0)).pipe(h(i=>o.planner.updateMenu(n,{attributes:{guests:e,title:i}}).pipe(l(1),m(()=>{})))):new L(i=>{i.error(new Error("Menu reset: createMenu did not return a menu id"))})}));this.resetMenuEvent(),t.subscribe({next:()=>{this.updateRecipeCounterBadge(0),this.updateFooterButton(!1),window.location.reload()},error:r=>{console.error("Error while resetting menu:",r),window.location.reload()}})}redirectToRetailerCart(){var e,t;if((e=this.plannerRoutes)!=null&&e.retailerCart){window.location.href=this.plannerRoutes.retailerCart;return}(t=this.plannerRoutes)!=null&&t.catalogHome&&(window.location.href=this.plannerRoutes.catalogHome+"?myMeals=products")}handleMenu(){this.storeId?(this.displayAddToBasketLoaderView(),this.finalizeMenuEvent(),this.navigateOnceDone()):console.log("register menu")}navigateOnceDone(){const e=this.loaderToBasketComplete$.pipe(w(r=>r===!0),l(1)),t=o.planner.menuToBasket(this.basket.id).pipe(l(1),m(()=>o.basket.updateRetailerBasketFromPlanner()));this.subscriptions.push(T([t,e]).pipe(l(1)).subscribe(()=>{this.loaderToBasketElement.remove(),this.redirectToRetailerCart()}))}retrieveRecipesImgs(){const e=[];return document.querySelectorAll(".mealz-planner-recipe-card").forEach(r=>{if(r.querySelector(".mealz-planner-recipe-card__in-basket:not(.hidden)"))return;const i=r.querySelector("img");i&&i.src&&e.push(i.src)}),e}displayAddToBasketLoaderView(){const e=document.querySelector(".mealz-planner-current-menu");if(!e)return;this.loaderToBasketComplete$.next(!1),e.style.display="none";const t=this.retrieveRecipesImgs(),r=document.querySelector("mealz-to-basket-loader");r&&r.remove(),this.loaderToBasketElement=document.createElement("mealz-to-basket-loader"),this.loaderToBasketElement.recipeImgs=t,this.loaderToBasketElement.addEventListener("basketComplete",this.handleBasketComplete),e.insertAdjacentElement("afterend",this.loaderToBasketElement)}updateFooterButton(e){const{footerButton:t,footerIcon:r,footerDisabledIcon:n}=this.elements;!t||!r||!n||(t.classList.toggle("disabled",!e),r.classList.toggle("hidden",!e),n.classList.toggle("hidden",e))}openCatalogModal(){const e=new S;e.addEventListener("openCatalog",()=>{this.openCatalogDrawer()}),e.displayMealzPlannerOpenCatalogModal()}async openCatalogDrawer(e=!0){const t=document.querySelector("mealz-drawer-view-swapper");if(!t)return;t.displayPlannerCatalog$.next(!0),await t.updateComplete;const r=document.querySelector("mealz-planner-catalog");r&&(r.setConfig(this.storeId,this.catalogURL,this.sessionId,e),r.getPlannerCatalog(),r.pageview())}getRecipeSource(){const e=document.querySelector("mealz-planner-catalog");if(e){const t=e.getExtraType();if(t)switch(t){case"starter":return"collection_entrees";case"dessert":return"collection_desserts";case"drink":return"collection_boissons"}}return"catalog"}getJourney(){const e=document.querySelector("mealz-planner-catalog");if(e){if(e.getExtraType())return"meals-planner-categories";const r=document.querySelector("mealz-catalog-toolbar");if(r){const n=r.querySelector(".mealz-catalog-toolbar__searchbar-input");if(n&&n.value.trim().length>0)return"meals-space-catalog-search"}return"meals-space-catalog"}return"meals-planner-dashboard"}addRecipe(e,t,r,n){var u,p;const i=(p=(u=o.recipes)==null?void 0:u.productsPlannerByCategory$)==null?void 0:p.value,s=(i==null?void 0:i.toPickProducts)||[],a=r||this.getRecipeSource(),c=n||this.getJourney();return this.recipeSources.set(e,a),o.planner.addRecipeToMenu(e,t,!!o.pos.currentPos().value,s).pipe(l(1),m(async()=>{await this.addRecipeToList(e),this.showResetMenuButton(),this.updateFooterButtonState(),this.recipeAddedEvent(e,a,c),this.shouldShowMenuToBasketOnboarding()}))}removeRecipe(e){return o.planner.removeRecipeFromMenu(e).pipe(l(1),m(()=>{const t=this.findRecipeIndexById(e);t!==-1&&(this.removeRecipeFromList(t),this.recipeSources.delete(e),this.updateFooterButtonState(),this.recipeRemovedEvent(e))}))}async addRecipeToList(e){const t=document.querySelector("mealz-planner-recipe-list");t&&await t.addRecipeCardToList(e)}removeRecipeFromList(e){const t=document.querySelector("mealz-planner-recipe-list");t&&t.removeRecipeCardFromList(e)}showResetMenuButton(){const e=document.querySelector(".mealz-planner-current-menu__cancel-menu");e&&e.classList.remove("hidden")}shouldShowMenuToBasketOnboarding(){var n;if(localStorage.getItem("_miam/menuToBasketOnboarding")==="true")return;this.isMobile&&this.setMobileView("menu");const t=document.querySelector("mealz-drawer-view-swapper");((n=t==null?void 0:t.currentView$)==null?void 0:n.value)!==void 0?this.subscriptions.push(t.currentView$.pipe(w(i=>i===void 0),l(1)).subscribe(()=>{this.showMenuToBasketOnboarding()})):this.showMenuToBasketOnboarding()}showMenuToBasketOnboarding(){this.updateComplete.then(()=>{const e=new b;e.type=this.isMobile?"menu-to-basket-mobile":"menu-to-basket",document.body.appendChild(e),e.launchOnboardingTour()})}updateFooterButtonState(){const e=this.nbrRecipeInMenu>0;this.updateFooterButton(e)}findRecipeIndexById(e){const t=document.querySelectorAll("mealz-planner-recipe-card");for(let r=0;r<t.length;r++)if(t[r].recipeId===e)return r;return-1}getAllRecipeIds(){const e=[];return document.querySelectorAll("mealz-planner-recipe-card").forEach(r=>{const n=r.recipeId;n&&e.push(n)}),e}pageview(){o.analytics.sendEvent("pageview",this.analyticsPath,{})}resetMenuEvent(){o.analytics.sendEvent("planner.reset",this.analyticsPath,{})}finalizeMenuEvent(){o.analytics.sendEvent("planner.finalize",this.analyticsPath,{budget_user:this.budget,recipe_count:this.nbrRecipeInMenu,guests:this.guests,mode:this.isCustomMenu?"custom":"from-featured"},"meals-planner-dashboard"),this.getAllRecipeIds().forEach(t=>{const r=this.recipeSources.get(t)||"";o.analytics.sendEvent("recipe.add",this.analyticsPath,{recipe_id:t,recipe_source:r,mode:this.isCustomMenu?"custom":"from-featured"},"meals-planner-dashboard")})}recipeAddedEvent(e,t,r){o.analytics.sendEvent("planner.recipe.add",this.analyticsPath,{recipe_id:e,recipe_source:t||"",mode:this.isCustomMenu?"custom":"from-featured"},r||"meals-planner-dashboard")}recipeRemovedEvent(e){o.analytics.sendEvent("planner.recipe.delete",this.analyticsPath,{recipe_id:e})}updateBudget(e){if(!this.menuId)return;const r=o.planner.updateMenu(this.menuId,{attributes:{budget:e}}).pipe(l(1)).subscribe({next:()=>{this.budget=e,this.updateBudgetGaugeUI(e)}});this.subscriptions.push(r)}updateBudgetGaugeUI(e){var c;const t=this.querySelector(".mealz-planner-budget-gauge__budget-limit"),r=this.querySelector(".mealz-planner-budget-gauge__budget-define"),n=this.querySelector(".mealz-planner-budget-gauge__budget-edit"),i=this.querySelector(".mealz-planner-budget-gauge__budget"),s=this.querySelector(".mealz-planner-budget-gauge__gauge");t&&(t.textContent=`/ ${this.priceService.formatPrice(e)}`,t.classList.toggle("hidden",e<=0)),r&&r.classList.toggle("hidden",e>0),n&&n.classList.toggle("hidden",e<=0),i&&i.classList.toggle("only-total",e<=0),s&&s.classList.toggle("hidden",e<=0);const a=this.querySelector("mealz-planner-budget-gauge");a&&(a.budgetLimit=e,(c=a.elements)!=null&&c.gaugeBar&&typeof a.updateGaugeBar=="function"&&a.updateGaugeBar())}};g([C()],d.prototype,"isMobile",2);g([C()],d.prototype,"mobileView",2);d=g([R("mealz-planner-current-menu")],d);customElements.get("mealz-planner-current-menu")||customElements.define("mealz-planner-current-menu",d);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{N as S}from"../assets/no-shadow-element-YPHUv5PR.js";import{V as f}from"../assets/viewport-listener-CDsKFDz1.js";import{t as I}from"../assets/custom-element-BhZVzxrc.js";import{h as w}from"../assets/session-handler-BZFnRy_K.js";import{w as y,m as c}from"../assets/mealz-sdk-E_fNZM-c.js";import{f as m}from"../assets/filter-BZ75lS5D.js";import{s as b}from"../assets/switchMap-Dk_0Nhlo.js";import{c as v}from"../assets/combineLatest-BmqPE0OB.js";import{t as d}from"../assets/take-CozE9iSG.js";import"../assets/debounceTime-B4DpnstH.js";import"../assets/async-CFBGA-Dz.js";import"../assets/OperatorSubscriber-BaYaQC1O.js";import"../assets/innerFrom-BgPDnAsH.js";import"../assets/from-CAidt5N1.js";import"../assets/executeSchedule-CEDvgTzM.js";import"../assets/mapOneOrManyArgs-COA1aRZM.js";import"../assets/map-BVOhpQm0.js";import"../assets/args-BozZ6oU-.js";import"../assets/isScheduler-C5PGPVU1.js";import"../assets/empty-0eVnsLmk.js";class o{constructor(){this.trackedRecipes=new Map,this.hasScrolled=!1,this.scrollListener=null,this.cleanupInterval=null,this.MAX_RECIPES=1e3,this.CLEANUP_INTERVAL=300*1e3,this.handlePageUnload=()=>{this.destroy()},this.setupScrollListener(),this.startAutoCleanup(),this.setupPageUnloadListener()}static getInstance(){return o.instance||(o.instance=new o),o.instance}trackRecipeShow(t,s,i){const r=Date.now(),n=!this.trackedRecipes.get(t),l=this.hasScrolled;!n&&!l||(this.trackedRecipes.size>=this.MAX_RECIPES&&this.cleanOldRecipes(),this.trackedRecipes.set(t,r),window.mealzInternal.analytics.sendEvent("recipe.show",s,{recipe_id:t,category_id:i}))}cleanOldRecipes(){const s=Date.now()-3600*1e3;for(const[i,r]of this.trackedRecipes.entries())r<s&&this.trackedRecipes.delete(i)}clearAllRecipes(){this.trackedRecipes.clear()}destroy(){this.scrollListener&&(window.removeEventListener("scroll",this.scrollListener),this.scrollListener=null),window.removeEventListener("beforeunload",this.handlePageUnload),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null),this.trackedRecipes.clear(),this.hasScrolled=!1,o.instance=null}setupScrollListener(){let t;this.scrollListener=()=>{this.hasScrolled=!0,clearTimeout(t),t=window.setTimeout(()=>{this.hasScrolled=!1},2e3)},window.addEventListener("scroll",this.scrollListener)}startAutoCleanup(){this.cleanupInterval=window.setInterval(()=>{this.cleanOldRecipes()},this.CLEANUP_INTERVAL)}setupPageUnloadListener(){window.addEventListener("beforeunload",this.handlePageUnload)}}var L=Object.getOwnPropertyDescriptor,C=(e,t,s,i)=>{for(var r=i>1?void 0:i?L(t,s):t,a=e.length-1,n;a>=0;a--)(n=e[a])&&(r=n(r)||r);return r};let p=class extends S{constructor(){super(...arguments),this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),this.listenInView(),y().then(()=>{this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)})}setupSubscriptions(){this.subscriptions.push(c.basket.recipePricesInBasket$().subscribe(e=>{if(!e)return;const t=e.find(s=>s.id===this.recipeId);e.length>0&&t&&parseFloat(t.price)>0?(this.guests=c.basket.guestsForRecipe(t.id),this.updatedRecipeId=t.id,this.updateDOM()):this.render()}),this.setupPlannerMenuSubscription(),this.setupGuestUpdatesSubscription())}setupPlannerMenuSubscription(){return c.planner.menuPrice$.pipe(m(()=>this.planner&&!!this.recipeId),b(()=>v([c.planner.isRecipeInMenu$(this.recipeId).pipe(d(1))])),m(([e,t])=>e&&typeof t=="number"&&t>0)).subscribe(([e,t])=>{this.guests=t,this.updateGuestDisplay()})}setupGuestUpdatesSubscription(){return c.recipes.guestsUpdated().subscribe(e=>{e.recipeId===this.recipeId&&(this.guests=e.guests,this.updatedRecipeId=this.recipeId,this.updateDOM())})}disconnectedCallback(){var t;super.disconnectedCallback(),this.subscriptions.forEach(s=>s.unsubscribe()),(t=this.analyticsViewportObserver)==null||t.disconnect(),o.getInstance().cleanOldRecipes()}render(){this.recipeCardTop=this.querySelector(".mealz-recipe-card__top"),this.recipeCardCta=this.querySelector(".mealz-recipe-card__cta"),this.recipeCardTop&&(this.getInitialStatus(),this.recipeCardTop.addEventListener("click",()=>this.openDetails()),this.recipeCardCta&&this.recipeCardCta.addEventListener("click",()=>this.recipeCardCtaClick()))}listenInView(){this.analyticsViewportObserver=new f(this,()=>{this.sendAnalyticsShow()},{threshold:.8,debounce:1e3})}getInitialStatus(){var h;const e=(h=this.attributes["starting-data"])==null?void 0:h.value;if(!e)return;const{id:t,guests:s,path:i,categoryId:r,initialTabIndex:a,planner:n,sessionId:l,recipe:g}=JSON.parse(e);if(this.recipeId=t,this.analyticsPath=i,this.categoryId=r,this.guests=s,this.initialTabIndex=a,this.planner=n,this.recipe=g,w(l),!this.guests){this.guests=this.getGuests();const u=this.querySelector(".mealz-recipe-card__counter p");u&&(u.innerHTML=this.guests.toString())}this.removeAttribute("starting-data"),this.updateDOM()}openDetails(){c.recipes.openDetails(this.recipeId,this.guests,this.initialTabIndex,this.analyticsPath,this.planner,this.categoryId)}recipeCardCtaClick(){this.planner?this.handleCTAClickForPlanner():this.openDetails()}getGuests(){const e=localStorage.getItem("_miam/preferences/guests");if(e){const t=+e;if(!isNaN(t)&&t>0&&t<=30)return t}return 4}handleCTAClickForPlanner(){const e=this.querySelector("mealz-recipe-card-cta");if(!e)return;const t=e.querySelector(".mealz-recipe-card-cta__loader");if(t&&!t.classList.contains("hidden"))return;const s=e.getStatus();s==="add"?(this.showAddingToMenuState(e),this.addRecipeToMenu()):s==="in-menu"&&(this.showRemovingFromMenuState(e),this.removeRecipeFromMenu())}addRecipeToMenu(){var i,r;const e=document.querySelector("mealz-planner-recipe-suggestion"),t=(e==null?void 0:e.guests)||this.guests;this.guests=t,e&&(e.recipeId=this.recipeId);const s=document.querySelector("mealz-planner-current-menu");if(!s){const a=(r=(i=c.recipes)==null?void 0:i.productsPlannerByCategory$)==null?void 0:r.value,n=(a==null?void 0:a.toPickProducts)||[];c.planner.addRecipeToMenu(this.recipeId,t,!!c.pos.currentPos().value,n).pipe(d(1)).subscribe(()=>{this.removeRecipeCardLoader("add");const l=document.querySelector("mealz-planner-recipe-list");l==null||l.addRecipeCardToList(this.recipeId)
|
|
1
|
+
import{N as S}from"../assets/no-shadow-element-YPHUv5PR.js";import{V as f}from"../assets/viewport-listener-CDsKFDz1.js";import{t as I}from"../assets/custom-element-BhZVzxrc.js";import{h as w}from"../assets/session-handler-BZFnRy_K.js";import{w as y,m as c}from"../assets/mealz-sdk-E_fNZM-c.js";import{f as m}from"../assets/filter-BZ75lS5D.js";import{s as b}from"../assets/switchMap-Dk_0Nhlo.js";import{c as v}from"../assets/combineLatest-BmqPE0OB.js";import{t as d}from"../assets/take-CozE9iSG.js";import"../assets/debounceTime-B4DpnstH.js";import"../assets/async-CFBGA-Dz.js";import"../assets/OperatorSubscriber-BaYaQC1O.js";import"../assets/innerFrom-BgPDnAsH.js";import"../assets/from-CAidt5N1.js";import"../assets/executeSchedule-CEDvgTzM.js";import"../assets/mapOneOrManyArgs-COA1aRZM.js";import"../assets/map-BVOhpQm0.js";import"../assets/args-BozZ6oU-.js";import"../assets/isScheduler-C5PGPVU1.js";import"../assets/empty-0eVnsLmk.js";class o{constructor(){this.trackedRecipes=new Map,this.hasScrolled=!1,this.scrollListener=null,this.cleanupInterval=null,this.MAX_RECIPES=1e3,this.CLEANUP_INTERVAL=300*1e3,this.handlePageUnload=()=>{this.destroy()},this.setupScrollListener(),this.startAutoCleanup(),this.setupPageUnloadListener()}static getInstance(){return o.instance||(o.instance=new o),o.instance}trackRecipeShow(t,s,i){const r=Date.now(),n=!this.trackedRecipes.get(t),l=this.hasScrolled;!n&&!l||(this.trackedRecipes.size>=this.MAX_RECIPES&&this.cleanOldRecipes(),this.trackedRecipes.set(t,r),window.mealzInternal.analytics.sendEvent("recipe.show",s,{recipe_id:t,category_id:i}))}cleanOldRecipes(){const s=Date.now()-3600*1e3;for(const[i,r]of this.trackedRecipes.entries())r<s&&this.trackedRecipes.delete(i)}clearAllRecipes(){this.trackedRecipes.clear()}destroy(){this.scrollListener&&(window.removeEventListener("scroll",this.scrollListener),this.scrollListener=null),window.removeEventListener("beforeunload",this.handlePageUnload),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null),this.trackedRecipes.clear(),this.hasScrolled=!1,o.instance=null}setupScrollListener(){let t;this.scrollListener=()=>{this.hasScrolled=!0,clearTimeout(t),t=window.setTimeout(()=>{this.hasScrolled=!1},2e3)},window.addEventListener("scroll",this.scrollListener)}startAutoCleanup(){this.cleanupInterval=window.setInterval(()=>{this.cleanOldRecipes()},this.CLEANUP_INTERVAL)}setupPageUnloadListener(){window.addEventListener("beforeunload",this.handlePageUnload)}}var L=Object.getOwnPropertyDescriptor,C=(e,t,s,i)=>{for(var r=i>1?void 0:i?L(t,s):t,a=e.length-1,n;a>=0;a--)(n=e[a])&&(r=n(r)||r);return r};let p=class extends S{constructor(){super(...arguments),this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),this.listenInView(),y().then(()=>{this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)})}setupSubscriptions(){this.subscriptions.push(c.basket.recipePricesInBasket$().subscribe(e=>{if(!e)return;const t=e.find(s=>s.id===this.recipeId);e.length>0&&t&&parseFloat(t.price)>0?(this.guests=c.basket.guestsForRecipe(t.id),this.updatedRecipeId=t.id,this.updateDOM()):this.render()}),this.setupPlannerMenuSubscription(),this.setupGuestUpdatesSubscription())}setupPlannerMenuSubscription(){return c.planner.menuPrice$.pipe(m(()=>this.planner&&!!this.recipeId),b(()=>v([c.planner.isRecipeInMenu$(this.recipeId).pipe(d(1))])),m(([e,t])=>e&&typeof t=="number"&&t>0)).subscribe(([e,t])=>{this.guests=t,this.updateGuestDisplay()})}setupGuestUpdatesSubscription(){return c.recipes.guestsUpdated().subscribe(e=>{e.recipeId===this.recipeId&&(this.guests=e.guests,this.updatedRecipeId=this.recipeId,this.updateDOM())})}disconnectedCallback(){var t;super.disconnectedCallback(),this.subscriptions.forEach(s=>s.unsubscribe()),(t=this.analyticsViewportObserver)==null||t.disconnect(),o.getInstance().cleanOldRecipes()}render(){this.recipeCardTop=this.querySelector(".mealz-recipe-card__top"),this.recipeCardCta=this.querySelector(".mealz-recipe-card__cta"),this.recipeCardTop&&(this.getInitialStatus(),this.recipeCardTop.addEventListener("click",()=>this.openDetails()),this.recipeCardCta&&this.recipeCardCta.addEventListener("click",()=>this.recipeCardCtaClick()))}listenInView(){this.analyticsViewportObserver=new f(this,()=>{this.sendAnalyticsShow()},{threshold:.8,debounce:1e3})}getInitialStatus(){var h;const e=(h=this.attributes["starting-data"])==null?void 0:h.value;if(!e)return;const{id:t,guests:s,path:i,categoryId:r,initialTabIndex:a,planner:n,sessionId:l,recipe:g}=JSON.parse(e);if(this.recipeId=t,this.analyticsPath=i,this.categoryId=r,this.guests=s,this.initialTabIndex=a,this.planner=n,this.recipe=g,w(l),!this.guests){this.guests=this.getGuests();const u=this.querySelector(".mealz-recipe-card__counter p");u&&(u.innerHTML=this.guests.toString())}this.removeAttribute("starting-data"),this.updateDOM()}openDetails(){c.recipes.openDetails(this.recipeId,this.guests,this.initialTabIndex,this.analyticsPath,this.planner,this.categoryId)}recipeCardCtaClick(){this.planner?this.handleCTAClickForPlanner():this.openDetails()}getGuests(){const e=localStorage.getItem("_miam/preferences/guests");if(e){const t=+e;if(!isNaN(t)&&t>0&&t<=30)return t}return 4}handleCTAClickForPlanner(){const e=this.querySelector("mealz-recipe-card-cta");if(!e)return;const t=e.querySelector(".mealz-recipe-card-cta__loader");if(t&&!t.classList.contains("hidden"))return;const s=e.getStatus();s==="add"?(this.showAddingToMenuState(e),this.addRecipeToMenu()):s==="in-menu"&&(this.showRemovingFromMenuState(e),this.removeRecipeFromMenu())}addRecipeToMenu(){var i,r;const e=document.querySelector("mealz-planner-recipe-suggestion"),t=(e==null?void 0:e.guests)||this.guests;this.guests=t,e&&(e.recipeId=this.recipeId);const s=document.querySelector("mealz-planner-current-menu");if(!s){const a=(r=(i=c.recipes)==null?void 0:i.productsPlannerByCategory$)==null?void 0:r.value,n=(a==null?void 0:a.toPickProducts)||[];c.planner.addRecipeToMenu(this.recipeId,t,!!c.pos.currentPos().value,n).pipe(d(1)).subscribe(()=>{this.removeRecipeCardLoader("add");const l=document.querySelector("mealz-planner-recipe-list");l==null||l.addRecipeCardToList(this.recipeId)});return}s.addRecipe(this.recipeId,t).subscribe(()=>{this.removeRecipeCardLoader("add"),e==null||e.addAndSelectNewSuggestion(this.recipe)})}removeRecipeFromMenu(){const e=document.querySelector("mealz-planner-recipe-suggestion");if(!e){c.planner.removeRecipeFromMenu(this.recipeId).pipe(d(1)).subscribe(()=>this.removeRecipeCardLoader("remove"));return}e.removeRecipe(this.recipeId).subscribe(()=>this.removeRecipeCardLoader("remove"))}showRemovingFromMenuState(e){const t=this.querySelector(".mealz-recipe-card-cta__loader"),s=e.querySelector("img.in-menu");t==null||t.classList.remove("hidden"),s==null||s.classList.add("hidden")}removeRecipeCardLoader(e){const t=this.querySelector("mealz-recipe-card-cta");if(!t)return;const s=this.querySelector(".mealz-recipe-card-cta"),i=this.querySelector(".mealz-recipe-card-cta__loader"),r=t.querySelector("img.add"),a=t.querySelector("img.in-menu");e==="add"?(i==null||i.classList.add("hidden"),s==null||s.classList.replace("primary","secondary"),a==null||a.classList.remove("hidden"),t.updateStatus("in-menu")):(i==null||i.classList.add("hidden"),s==null||s.classList.replace("secondary","primary"),r==null||r.classList.remove("hidden"),t.updateStatus("add"))}showAddingToMenuState(e){const t=this.querySelector(".mealz-recipe-card-cta__loader"),s=e.querySelector("img.add"),i=e.querySelector("img.in-menu");t==null||t.classList.remove("hidden"),s==null||s.classList.add("hidden"),i==null||i.classList.add("hidden")}updateDOM(){if(this.recipeId!==this.updatedRecipeId)return;const e=this.querySelector(".mealz-recipe-card__counter p");e&&(e.innerHTML=this.guests.toString())}updateGuestDisplay(){const e=this.querySelector(".mealz-recipe-card__counter p");e&&this.guests&&(e.innerHTML=this.guests.toString())}sendAnalyticsShow(){o.getInstance().trackRecipeShow(this.recipeId,this.analyticsPath,this.categoryId)}};p=C([I("mealz-recipe-card")],p);customElements.get("mealz-recipe-card")||customElements.define("mealz-recipe-card",p);
|