mealz-components 2.0.0 → 2.0.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,3 +1,3 @@
1
- import{k as l}from"../../assets/no-shadow-element-DlGA0h9b.js";import{C as p}from"../../catalog/catalog-load-more.min.js";import{b as c}from"../../assets/http-BGziD2u2.js";import{t as d}from"../../assets/custom-element-BhZVzxrc.js";import{m as h}from"../../assets/mealz-sdk-DWLzEfKz.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../assets/mergeMap-CMaM5Agw.js";import"../../assets/map-oxUcVNGT.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/executeSchedule-CTqB8mra.js";import"../../assets/mapOneOrManyArgs-Do0PsDok.js";import"../../assets/async-H-Co76Oa.js";import"../../assets/timer-DmQ_oP6s.js";var m=Object.getOwnPropertyDescriptor,g=(t,e,s,a)=>{for(var r=a>1?void 0:a?m(e,s):e,i=t.length-1,o;i>=0;i--)(o=t[i])&&(r=o(r)||r);return r};let n=class extends p{constructor(){super(...arguments),this.analyticsPath="/meals-planner/catalog"}render(){return l`
1
+ import{k as l}from"../../assets/no-shadow-element-DlGA0h9b.js";import{C as p}from"../../catalog/catalog-load-more.min.js";import{b as c}from"../../assets/http-BGziD2u2.js";import{t as h}from"../../assets/custom-element-BhZVzxrc.js";import{m as d}from"../../assets/mealz-sdk-DWLzEfKz.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../assets/mergeMap-CMaM5Agw.js";import"../../assets/map-oxUcVNGT.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/executeSchedule-CTqB8mra.js";import"../../assets/mapOneOrManyArgs-Do0PsDok.js";import"../../assets/async-H-Co76Oa.js";import"../../assets/timer-DmQ_oP6s.js";var m=Object.getOwnPropertyDescriptor,g=(t,e,s,a)=>{for(var r=a>1?void 0:a?m(e,s):e,i=t.length-1,o;i>=0;i--)(o=t[i])&&(r=o(r)||r);return r};let n=class extends p{constructor(){super(...arguments),this.analyticsPath="/meals-planner/catalog"}render(){return l`
2
2
  <div class="mealz-loader"></div>
3
- `}setConfig(t,e,s,a){this.storeId=t,this.catalogURL=e,this.sessionId=s,a&&(this.extraType=a)}async getPlannerCatalog(t){const e=new URLSearchParams;e.append("planner","true"),this.storeId&&e.append("store_id",this.storeId),this.extraType&&e.append("recipe_type_id",this.extraType),t&&e.append("search",t);const a=await(await fetch(this.catalogURL+"?"+e.toString(),{method:"GET",headers:c(this.sessionId)})).text(),r=this.querySelector(".mealz-loader");r&&r.remove(),this.insertAdjacentHTML("beforeend",a),this.listenToSearch()}listenToSearch(){const t=this.querySelector("mealz-catalog-toolbar");t==null||t.addEventListener("searchEvent",e=>{this.innerHTML='<div class="mealz-loader"></div>',this.getPlannerCatalog(e.detail.searchQuery)})}pageview(){h.analytics.sendEvent("pageview",this.analyticsPath,this.extraType?{catalog_filter:this.extraType}:{})}};n=g([d("mealz-planner-catalog")],n);
3
+ `}setConfig(t,e,s,a){this.storeId=t,this.catalogURL=e,this.sessionId=s,a&&(this.extraType=a)}getExtraType(){return this.extraType}async getPlannerCatalog(t){const e=new URLSearchParams;e.append("planner","true"),this.storeId&&e.append("store_id",this.storeId),this.extraType&&e.append("recipe_type_id",this.extraType),t&&e.append("search",t);const a=await(await fetch(this.catalogURL+"?"+e.toString(),{method:"GET",headers:c(this.sessionId)})).text(),r=this.querySelector(".mealz-loader");r&&r.remove(),this.insertAdjacentHTML("beforeend",a),this.listenToSearch()}listenToSearch(){const t=this.querySelector("mealz-catalog-toolbar");t==null||t.addEventListener("searchEvent",e=>{this.innerHTML='<div class="mealz-loader"></div>',this.getPlannerCatalog(e.detail.searchQuery)})}pageview(){d.analytics.sendEvent("pageview",this.analyticsPath,this.extraType?{catalog_filter:this.extraType}:{})}};n=g([h("mealz-planner-catalog")],n);
@@ -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 u}from"../helpers/open-onboarding-modal.min.js";import{M as b}from"../planner-abandon-modal/planner-abandon-modal.min.js";import{i as g,a as f,M as d}from"../planner-onboarding/planner-onboarding.min.js";import{M as y}from"../planner-open-catalog-modal/planner-open-catalog-modal.min.js";import{M}from"../planner-welcome-modal/planner-welcome-modal.min.js";import{N as C,B as v}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as w}from"../../assets/custom-element-BhZVzxrc.js";import{r as B}from"../../assets/state-bsKs-Mb2.js";import{m as o}from"../../assets/mealz-sdk-DWLzEfKz.js";import{t as a}from"../../assets/take-BmqRVy-3.js";import{f as m}from"../../assets/filter-DuHsB8oM.js";import{m as p}from"../../assets/map-oxUcVNGT.js";import{c as R}from"../../assets/combineLatest-DNi66MsF.js";import"../../drawer/drawer.min.js";import"../../assets/property-Bg80vXcm.js";import"../../assets/unsafe-html-MRC87lfr.js";import"../../store-locator-drawer/store-locator-drawer.min.js";import"../../assets/skipWhile-BAgfjfH2.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/switchMap-vA0vSKy4.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../recipe-details/recipe-details.min.js";import"../../recipe-pricing/recipe-pricing.min.js";import"../../assets/from-Btz8AgkO.js";import"../../assets/executeSchedule-CTqB8mra.js";import"../../assets/mapOneOrManyArgs-Do0PsDok.js";import"../../assets/of-CH-D5SN9.js";import"../../assets/tap-C4xC1M3N.js";import"../../assets/empty-DGYYDWIm.js";import"../../assets/price-DcNF55ef.js";import"../../assets/merge-BlKu2J03.js";import"../../assets/mergeAll-DQItozZ-.js";import"../../assets/mergeMap-CMaM5Agw.js";import"../../assets/capitalize-DUAqYmp4.js";import"../../counter/counter.min.js";import"../../assets/debounceTime-CIA2MWDj.js";import"../../assets/async-H-Co76Oa.js";import"../../assets/product-card-Be_9YL6f.js";import"../../price/price.min.js";import"../../assets/promotion-badge-2uUuiRau.js";import"../../assets/delay-0L99jHsb.js";import"../../assets/timer-DmQ_oP6s.js";import"../../store-indicator/store-indicator.min.js";import"../../assets/store-locator-CKwiyckb.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"../../onboarding/onboarding.min.js";import"../../onboarding/events.min.js";import"../../onboarding/analytics/onboarding-analytics.min.js";import"../planner-catalog/planner-catalog.min.js";import"../../catalog/catalog-load-more.min.js";import"../../assets/http-BGziD2u2.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-Ckq1Syk_.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"../../catalog/basket-preview/basket-preview.min.js";import"../../modal/modal.min.js";var _=Object.defineProperty,z=Object.getOwnPropertyDescriptor,h=(e,t,n,r)=>{for(var i=r>1?void 0:r?z(t,n):t,s=e.length-1,c;s>=0;s--)(c=e[s])&&(i=(r?c(t,n,i):c(i))||i);return r&&i&&_(t,n,i),i};let l=class extends C{constructor(){super(...arguments),this.analyticsPath="/meals-planner/current",this.loaderToBasketComplete$=new v(!1),this.subscriptions=[],this.isCustomMenu=!1,this.isMobile=!1}get selectors(){return{recipe:".mealz-planner-current-menu__recipe",menu:".mealz-planner-current-menu__menu",displayMenuButton:".mealz-planner-current-menu__mobile-menu-button",displayRecipeButton:".mealz-planner-current-menu__mobile-recipe-button",returnButton:".mealz-planner-current-menu__mobile-return-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",footerButton:".mealz-planner-current-menu__footer-button",footerIcon:".mealz-planner-current-menu__footer-icon",footerDisabledIcon:".mealz-planner-current-menu__footer-disabled-icon",recipeCounterBadge:".mealz-planner-current-menu__menu-badge",preferencesCounterBadges:[".mealz-planner-current-menu__preferences-badge"],mealExtras:[".mealz-planner-current-menu__meal-extras-choice"]}}get nbrRecipeInMenu(){return this.querySelectorAll(".mealz-planner-recipe-card").length}connectedCallback(){super.connectedCallback(),this.pageview(),this.initSelectors(),this.addEventListeners(),this.isMobile=g(this),this.handleResize(),this.removeResponsiveListener=f(this,e=>{e!==this.isMobile&&(this.isMobile=e),this.handleResize()}),o.recipes.setIsRecipeDetailsFromPlanner(!0),this.isCustomMenu=localStorage.getItem("_miam/isCustomMenu")==="true",this.isCustomMenu||this.setDefaultMobileView(),this.subscriptions.push(o.preferences.preferencesCount().subscribe(e=>this.updatePreferencesCount(e))),this.updateRecipeCounterBadge(this.nbrRecipeInMenu),this.showWelcomeModal()}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.removeResponsiveListener&&(this.removeResponsiveListener(),this.removeResponsiveListener=void 0)}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 n=new M;n.isCustomMenu=this.isCustomMenu,n.addEventListener("openOnboarding",r=>{const i=r.detail??{};this.startPlannerOnboarding(i.isCustomMenu??this.isCustomMenu,!1)}),n.addEventListener("onboarding-skipped",()=>{localStorage.setItem(e,"true"),this.startPlannerOnboarding(!1,!0)}),n.displayPlannerWelcomeModal(),this.autoCloseWelcomeOnDrawerOpen(n)}autoCloseWelcomeOnDrawerOpen(e){requestAnimationFrame(()=>{const n=document.querySelector("mealz-drawer-view-swapper");if(!n)return;const r=n.currentView$.subscribe(i=>{i!==void 0&&(document.body.contains(e)&&e.remove(),r.unsubscribe())})})}startPlannerOnboarding(e,t){this.scrollIntoView({behavior:"smooth",block:"center"});const n=new d;n.isCustomMenu=e,document.body.appendChild(n),t?(n.type=this.isMobile?"guide-mobile":"guide",n.launchOnboardingTour()):(this.isMobile?n.type=e?"custom-mobile":"suggestion-mobile":n.type=e?"custom":"suggestion",n.startTour())}addEventListeners(){this.addClickListener("displayMenuButton",()=>{this.toggleMobileView(!0)}),this.addClickListener("displayRecipeButton",()=>{this.toggleMobileView(!1)}),this.addClickListener("preferencesButton",()=>{this.openPreferences()}),this.addClickListener("preferencesMobileButton",()=>{this.openPreferences()}),this.addClickListener("cancelMenuButton",this.cancelMenu.bind(this)),this.addClickListener("footerButton",()=>{this.handleMenu()}),this.addClickListener("onboardingButton",()=>u("current")),this.addClickListener("onboardingButtonMobile",()=>u("current"));const{mealExtras:e}=this.elements;e==null||e.forEach(t=>{t.addEventListener("click",this.openCatalogSelection.bind(this))})}toggleMobileView(e){const{recipe:t,menu:n,displayMenuButton:r,displayRecipeButton:i,returnButton:s}=this.elements;!t||!n||!r||!i||!s||(t.style.display=e?"none":"block",n.style.display=e?"flex":"none",r.style.display=e?"none":"flex",i.style.display=e?"block":"none",s.style.display=e?"none":"block")}setDefaultMobileView(){this.isMobile&&this.toggleMobileView(!0)}handleResize(){const{menu:e,recipe:t}=this.elements;!e||!t||(this.isMobile?this.toggleMobileView(!1):(e.style.display="flex",t.style.display="block"))}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(n=>{const r=n.querySelector("p");r&&(r.textContent=e.toString(),n.classList.toggle("hidden",e===0))})}updateRecipeCounterBadge(e){const{recipeCounterBadge:t}=this.elements;if(!t)return;const n=t.querySelector("p");n.textContent=e.toString(),t.classList.toggle("hidden",e===0)}openCatalogSelection(e){const t=e.target.closest(".mealz-planner-current-menu__meal-extras-choice");if(!t)return;const r=["starter","dessert","drink"].find(i=>t.classList.contains(i));r&&(this.openCatalogDrawer(r),this.categoryDisplayEvent(r))}cancelMenu(){const e=new b;e.addEventListener("resetMenu",()=>this.resetMenu()),e.displayPlannerAbandonModal()}resetMenu(){const e=o.planner.deleteMenu(this.menuId);this.resetMenuEvent(),e.pipe(a(1)).subscribe(()=>{this.updateRecipeCounterBadge(0),this.redirectToDashboard()})}redirectToDashboard(){var e;(e=this.plannerRoutes)!=null&&e.dashboard&&(window.location.href=this.plannerRoutes.dashboard)}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(m(n=>n===!0),a(1)),t=o.planner.menuToBasket(this.basket.id).pipe(a(1),p(()=>o.basket.updateRetailerBasketFromPlanner()));this.subscriptions.push(R([t,e]).pipe(a(1)).subscribe(()=>{this.loaderToBasketElement.remove(),this.redirectToRetailerCart()}))}retrieveRecipesImgs(){const e=[];return document.querySelectorAll(".mealz-planner-recipe-card").forEach(n=>{if(n.querySelector(".mealz-planner-recipe-card__in-basket:not(.hidden)"))return;const i=n.querySelector("img");i&&i.src&&e.push(i.src)}),e}displayAddToBasketLoaderView(){const e=document.querySelector(".mealz-planner-current-menu");if(!e)return;e.style.display="none";const t=this.retrieveRecipesImgs();this.loaderToBasketElement=document.querySelector("mealz-to-basket-loader")||document.createElement("mealz-to-basket-loader"),document.querySelector("mealz-to-basket-loader")||(this.loaderToBasketElement.recipeImgs=t,this.loaderToBasketElement.addEventListener("basketComplete",()=>{this.loaderToBasketComplete$.next(!0)}),e.insertAdjacentElement("afterend",this.loaderToBasketElement))}updateFooterButton(e){const{footerButton:t,footerIcon:n,footerDisabledIcon:r}=this.elements;!t||!n||!r||(t.classList.toggle("disabled",!e),n.classList.toggle("hidden",!e),r.classList.toggle("hidden",e))}openCatalogModal(){const e=new y;e.addEventListener("openCatalog",()=>{this.openCatalogDrawer()}),e.displayMealzPlannerOpenCatalogModal()}async openCatalogDrawer(e){const t=document.querySelector("mealz-drawer-view-swapper");if(!t)return;t.displayPlannerCatalog$.next(!0),await t.updateComplete;const n=document.querySelector("mealz-planner-catalog");n&&(n.setConfig(this.storeId,this.catalogURL,this.sessionId,e),n.getPlannerCatalog(),n.pageview())}addRecipe(e,t){var i,s;const n=(s=(i=o.recipes)==null?void 0:i.productsPlannerByCategory$)==null?void 0:s.value,r=(n==null?void 0:n.toPickProducts)||[];return o.planner.addRecipeToMenu(e,t,!!o.pos.currentPos().value,r).pipe(a(1),p(async()=>{await this.addRecipeToList(e),this.showResetMenuButton(),this.updateFooterButtonState(),this.updateRecipeCounterBadge(this.nbrRecipeInMenu),this.recipeAddedEvent(e),this.shouldShowMenuToBasketOnboarding()}))}removeRecipe(e){return o.planner.removeRecipeFromMenu(e).pipe(a(1),p(()=>{const t=this.findRecipeIndexById(e);t!==-1&&(this.removeRecipeFromList(t),this.updateFooterButtonState(),this.updateRecipeCounterBadge(this.nbrRecipeInMenu),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 r;if(localStorage.getItem("_miam/menuToBasketOnboarding")==="true")return;this.isMobile&&this.toggleMobileView(!0);const t=document.querySelector("mealz-drawer-view-swapper");((r=t==null?void 0:t.currentView$)==null?void 0:r.value)!==void 0?this.subscriptions.push(t.currentView$.pipe(m(i=>i===void 0),a(1)).subscribe(()=>{this.showMenuToBasketOnboarding()})):this.showMenuToBasketOnboarding()}showMenuToBasketOnboarding(){this.updateComplete.then(()=>{const e=new d;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 n=0;n<t.length;n++)if(t[n].recipeId===e)return n;return-1}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:0,recipe_count:this.nbrRecipeInMenu,guests:this.guests})}recipeAddedEvent(e){o.analytics.sendEvent("planner.recipe.add",this.analyticsPath,{recipe_id:e})}recipeRemovedEvent(e){o.analytics.sendEvent("planner.recipe.delete",this.analyticsPath,{recipe_id:e})}categoryDisplayEvent(e){o.analytics.sendEvent("category.display",this.analyticsPath,{category_id:e})}};h([B()],l.prototype,"isMobile",2);l=h([w("mealz-planner-current-menu")],l);customElements.get("mealz-planner-current-menu")||customElements.define("mealz-planner-current-menu",l);
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 m}from"../helpers/open-onboarding-modal.min.js";import{M as y}from"../planner-abandon-modal/planner-abandon-modal.min.js";import{i as M,a as C,M as h}from"../planner-onboarding/planner-onboarding.min.js";import{M as v}from"../planner-open-catalog-modal/planner-open-catalog-modal.min.js";import{M as w}from"../planner-welcome-modal/planner-welcome-modal.min.js";import{N as B,B as _}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as R}from"../../assets/custom-element-BhZVzxrc.js";import{r as S}from"../../assets/state-bsKs-Mb2.js";import{m as o}from"../../assets/mealz-sdk-DWLzEfKz.js";import{t as a}from"../../assets/take-BmqRVy-3.js";import{f as g}from"../../assets/filter-DuHsB8oM.js";import{m as c}from"../../assets/map-oxUcVNGT.js";import{c as z}from"../../assets/combineLatest-DNi66MsF.js";import"../../drawer/drawer.min.js";import"../../assets/property-Bg80vXcm.js";import"../../assets/unsafe-html-MRC87lfr.js";import"../../store-locator-drawer/store-locator-drawer.min.js";import"../../assets/skipWhile-BAgfjfH2.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/switchMap-vA0vSKy4.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../recipe-details/recipe-details.min.js";import"../../recipe-pricing/recipe-pricing.min.js";import"../../assets/from-Btz8AgkO.js";import"../../assets/executeSchedule-CTqB8mra.js";import"../../assets/mapOneOrManyArgs-Do0PsDok.js";import"../../assets/of-CH-D5SN9.js";import"../../assets/tap-C4xC1M3N.js";import"../../assets/empty-DGYYDWIm.js";import"../../assets/price-DcNF55ef.js";import"../../assets/merge-BlKu2J03.js";import"../../assets/mergeAll-DQItozZ-.js";import"../../assets/mergeMap-CMaM5Agw.js";import"../../assets/capitalize-DUAqYmp4.js";import"../../counter/counter.min.js";import"../../assets/debounceTime-CIA2MWDj.js";import"../../assets/async-H-Co76Oa.js";import"../../assets/product-card-Be_9YL6f.js";import"../../price/price.min.js";import"../../assets/promotion-badge-2uUuiRau.js";import"../../assets/delay-0L99jHsb.js";import"../../assets/timer-DmQ_oP6s.js";import"../../store-indicator/store-indicator.min.js";import"../../assets/store-locator-CKwiyckb.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"../../onboarding/onboarding.min.js";import"../../onboarding/events.min.js";import"../../onboarding/analytics/onboarding-analytics.min.js";import"../planner-catalog/planner-catalog.min.js";import"../../catalog/catalog-load-more.min.js";import"../../assets/http-BGziD2u2.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-Ckq1Syk_.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"../../catalog/basket-preview/basket-preview.min.js";import"../../modal/modal.min.js";var k=Object.defineProperty,E=Object.getOwnPropertyDescriptor,b=(e,t,n,r)=>{for(var i=r>1?void 0:r?E(t,n):t,s=e.length-1,l;s>=0;s--)(l=e[s])&&(i=(r?l(t,n,i):l(i))||i);return r&&i&&k(t,n,i),i};let u=class extends B{constructor(){super(...arguments),this.analyticsPath="/meals-planner/current",this.loaderToBasketComplete$=new _(!1),this.subscriptions=[],this.isCustomMenu=!1,this.budget=0,this.recipeSources=new Map,this.isMobile=!1}get selectors(){return{recipe:".mealz-planner-current-menu__recipe",menu:".mealz-planner-current-menu__menu",displayMenuButton:".mealz-planner-current-menu__mobile-menu-button",displayRecipeButton:".mealz-planner-current-menu__mobile-recipe-button",returnButton:".mealz-planner-current-menu__mobile-return-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",footerButton:".mealz-planner-current-menu__footer-button",footerIcon:".mealz-planner-current-menu__footer-icon",footerDisabledIcon:".mealz-planner-current-menu__footer-disabled-icon",recipeCounterBadge:".mealz-planner-current-menu__menu-badge",preferencesCounterBadges:[".mealz-planner-current-menu__preferences-badge"],mealExtras:[".mealz-planner-current-menu__meal-extras-choice"]}}get nbrRecipeInMenu(){return this.querySelectorAll(".mealz-planner-recipe-card").length}connectedCallback(){super.connectedCallback(),this.pageview(),this.initSelectors(),this.addEventListeners(),this.isMobile=M(this),this.handleResize(),this.removeResponsiveListener=C(this,e=>{e!==this.isMobile&&(this.isMobile=e),this.handleResize()}),o.recipes.setIsRecipeDetailsFromPlanner(!0),this.isCustomMenu=localStorage.getItem("_miam/isCustomMenu")==="true",this.isCustomMenu||this.setDefaultMobileView(),this.subscriptions.push(o.preferences.preferencesCount().subscribe(e=>this.updatePreferencesCount(e))),this.updateRecipeCounterBadge(this.nbrRecipeInMenu),this.showWelcomeModal()}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.removeResponsiveListener&&(this.removeResponsiveListener(),this.removeResponsiveListener=void 0)}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 n=new w;n.isCustomMenu=this.isCustomMenu,n.addEventListener("openOnboarding",r=>{const i=r.detail??{};this.startPlannerOnboarding(i.isCustomMenu??this.isCustomMenu,!1)}),n.addEventListener("onboarding-skipped",()=>{localStorage.setItem(e,"true"),this.startPlannerOnboarding(!1,!0)}),n.displayPlannerWelcomeModal(),this.autoCloseWelcomeOnDrawerOpen(n)}autoCloseWelcomeOnDrawerOpen(e){requestAnimationFrame(()=>{const n=document.querySelector("mealz-drawer-view-swapper");if(!n)return;const r=n.currentView$.subscribe(i=>{i!==void 0&&(document.body.contains(e)&&e.remove(),r.unsubscribe())})})}startPlannerOnboarding(e,t){this.scrollIntoView({behavior:"smooth",block:"center"});const n=new h;n.isCustomMenu=e,document.body.appendChild(n),t?(n.type=this.isMobile?"guide-mobile":"guide",n.launchOnboardingTour()):(this.isMobile?n.type=e?"custom-mobile":"suggestion-mobile":n.type=e?"custom":"suggestion",n.startTour())}addEventListeners(){this.addClickListener("displayMenuButton",()=>{this.toggleMobileView(!0)}),this.addClickListener("displayRecipeButton",()=>{this.toggleMobileView(!1)}),this.addClickListener("preferencesButton",()=>{this.openPreferences()}),this.addClickListener("preferencesMobileButton",()=>{this.openPreferences()}),this.addClickListener("cancelMenuButton",this.cancelMenu.bind(this)),this.addClickListener("footerButton",()=>{this.handleMenu()}),this.addClickListener("onboardingButton",()=>m("current")),this.addClickListener("onboardingButtonMobile",()=>m("current"));const{mealExtras:e}=this.elements;e==null||e.forEach(t=>{t.addEventListener("click",this.openCatalogSelection.bind(this))})}toggleMobileView(e){const{recipe:t,menu:n,displayMenuButton:r,displayRecipeButton:i,returnButton:s}=this.elements;!t||!n||!r||!i||!s||(t.style.display=e?"none":"block",n.style.display=e?"flex":"none",r.style.display=e?"none":"flex",i.style.display=e?"block":"none",s.style.display=e?"none":"block")}setDefaultMobileView(){this.isMobile&&this.toggleMobileView(!0)}handleResize(){const{menu:e,recipe:t}=this.elements;!e||!t||(this.isMobile?this.toggleMobileView(!1):(e.style.display="flex",t.style.display="block"))}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(n=>{const r=n.querySelector("p");r&&(r.textContent=e.toString(),n.classList.toggle("hidden",e===0))})}updateRecipeCounterBadge(e){const{recipeCounterBadge:t}=this.elements;if(!t)return;const n=t.querySelector("p");n.textContent=e.toString(),t.classList.toggle("hidden",e===0)}openCatalogSelection(e){const t=e.target.closest(".mealz-planner-current-menu__meal-extras-choice");if(!t)return;const r=["starter","dessert","drink"].find(i=>t.classList.contains(i));r&&(this.openCatalogDrawer(r),this.categoryDisplayEvent(r))}cancelMenu(){const e=new y;e.addEventListener("resetMenu",()=>this.resetMenu()),e.displayPlannerAbandonModal()}resetMenu(){const e=o.planner.deleteMenu(this.menuId);this.resetMenuEvent(),e.pipe(a(1)).subscribe(()=>{this.updateRecipeCounterBadge(0),this.redirectToDashboard()})}redirectToDashboard(){var e;(e=this.plannerRoutes)!=null&&e.dashboard&&(window.location.href=this.plannerRoutes.dashboard)}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(g(n=>n===!0),a(1)),t=o.planner.menuToBasket(this.basket.id).pipe(a(1),c(()=>o.basket.updateRetailerBasketFromPlanner()));this.subscriptions.push(z([t,e]).pipe(a(1)).subscribe(()=>{this.loaderToBasketElement.remove(),this.redirectToRetailerCart()}))}retrieveRecipesImgs(){const e=[];return document.querySelectorAll(".mealz-planner-recipe-card").forEach(n=>{if(n.querySelector(".mealz-planner-recipe-card__in-basket:not(.hidden)"))return;const i=n.querySelector("img");i&&i.src&&e.push(i.src)}),e}displayAddToBasketLoaderView(){const e=document.querySelector(".mealz-planner-current-menu");if(!e)return;e.style.display="none";const t=this.retrieveRecipesImgs();this.loaderToBasketElement=document.querySelector("mealz-to-basket-loader")||document.createElement("mealz-to-basket-loader"),document.querySelector("mealz-to-basket-loader")||(this.loaderToBasketElement.recipeImgs=t,this.loaderToBasketElement.addEventListener("basketComplete",()=>{this.loaderToBasketComplete$.next(!0)}),e.insertAdjacentElement("afterend",this.loaderToBasketElement))}updateFooterButton(e){const{footerButton:t,footerIcon:n,footerDisabledIcon:r}=this.elements;!t||!n||!r||(t.classList.toggle("disabled",!e),n.classList.toggle("hidden",!e),r.classList.toggle("hidden",e))}openCatalogModal(){const e=new v;e.addEventListener("openCatalog",()=>{this.openCatalogDrawer()}),e.displayMealzPlannerOpenCatalogModal()}async openCatalogDrawer(e){const t=document.querySelector("mealz-drawer-view-swapper");if(!t)return;t.displayPlannerCatalog$.next(!0),await t.updateComplete;const n=document.querySelector("mealz-planner-catalog");n&&(n.setConfig(this.storeId,this.catalogURL,this.sessionId,e),n.getPlannerCatalog(),n.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 n=document.querySelector("mealz-catalog-toolbar");if(n){const r=n.querySelector(".mealz-catalog-toolbar__searchbar-input");if(r&&r.value.trim().length>0)return"meals-space-catalog-search"}return"meals-space-catalog"}return"meals-planner-dashboard"}addRecipe(e,t,n,r){var p,d;const i=(d=(p=o.recipes)==null?void 0:p.productsPlannerByCategory$)==null?void 0:d.value,s=(i==null?void 0:i.toPickProducts)||[],l=n||this.getRecipeSource(),f=r||this.getJourney();return this.recipeSources.set(e,l),o.planner.addRecipeToMenu(e,t,!!o.pos.currentPos().value,s).pipe(a(1),c(async()=>{await this.addRecipeToList(e),this.showResetMenuButton(),this.updateFooterButtonState(),this.updateRecipeCounterBadge(this.nbrRecipeInMenu),this.recipeAddedEvent(e,l,f),this.shouldShowMenuToBasketOnboarding()}))}removeRecipe(e){return o.planner.removeRecipeFromMenu(e).pipe(a(1),c(()=>{const t=this.findRecipeIndexById(e);t!==-1&&(this.removeRecipeFromList(t),this.recipeSources.delete(e),this.updateFooterButtonState(),this.updateRecipeCounterBadge(this.nbrRecipeInMenu),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 r;if(localStorage.getItem("_miam/menuToBasketOnboarding")==="true")return;this.isMobile&&this.toggleMobileView(!0);const t=document.querySelector("mealz-drawer-view-swapper");((r=t==null?void 0:t.currentView$)==null?void 0:r.value)!==void 0?this.subscriptions.push(t.currentView$.pipe(g(i=>i===void 0),a(1)).subscribe(()=>{this.showMenuToBasketOnboarding()})):this.showMenuToBasketOnboarding()}showMenuToBasketOnboarding(){this.updateComplete.then(()=>{const e=new h;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 n=0;n<t.length;n++)if(t[n].recipeId===e)return n;return-1}getAllRecipeIds(){const e=[];return document.querySelectorAll("mealz-planner-recipe-card").forEach(n=>{const r=n.recipeId;r&&e.push(r)}),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 n=this.recipeSources.get(t)||"";o.analytics.sendEvent("recipe.add",this.analyticsPath,{recipe_id:t,recipe_source:n,mode:this.isCustomMenu?"custom":"from-featured"},"meals-planner-dashboard")})}recipeAddedEvent(e,t,n){o.analytics.sendEvent("planner.recipe.add",this.analyticsPath,{recipe_id:e,recipe_source:t||"",mode:this.isCustomMenu?"custom":"from-featured"},n||"meals-planner-dashboard")}recipeRemovedEvent(e){o.analytics.sendEvent("planner.recipe.delete",this.analyticsPath,{recipe_id:e})}categoryDisplayEvent(e){o.analytics.sendEvent("category.display",this.analyticsPath,{category_id:e})}};b([S()],u.prototype,"isMobile",2);u=b([R("mealz-planner-current-menu")],u);
@@ -1 +1 @@
1
- import"../planner-form/planner-form.min.js";import"../to-basket-loader/to-basket-loader.min.js";import{M as h}from"../planner-abandon-modal/planner-abandon-modal.min.js";import{N as p}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as M}from"../../assets/custom-element-BhZVzxrc.js";import{m as o}from"../../assets/mealz-sdk-DWLzEfKz.js";import{t as c}from"../../assets/take-BmqRVy-3.js";import"../../assets/property-Bg80vXcm.js";import"../planner-current-menu-modal/planner-current-menu-modal.min.js";import"../../modal/modal.min.js";import"../../assets/unsafe-html-MRC87lfr.js";import"../../onboarding/events.min.js";import"../../assets/switchMap-vA0vSKy4.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/empty-DGYYDWIm.js";import"../../assets/state-bsKs-Mb2.js";var f=Object.getOwnPropertyDescriptor,y=(e,t,s,n)=>{for(var r=n>1?void 0:n?f(t,s):t,i=e.length-1,a;i>=0;i--)(a=e[i])&&(r=a(r)||r);return r};let d=class extends p{constructor(){super(...arguments),this.menuId="",this.isCustomMenu=!1,this.guests=4,this.recipeIds=[],this.recipeImgs=[],this.analyticsPath="/meals-planner/dashboard",this.isRedirecting=!1}get selectors(){return{cancelMenuButton:".mealz-planner-menu-option__cancel",menuOption:".mealz-planner-menu-option__container"}}connectedCallback(){super.connectedCallback(),this.initSelectors(),this.addEventListeners()}render(){var u;const e=(u=this.attributes["starting-data"])==null?void 0:u.value;if(!e)return;const{isCustomMenu:t,guestsPreference:s,storeId:n,hasCustomRecipes:r,menuId:i,recipesId:a,currentMenuPageUrl:l,recipeImgs:m}=JSON.parse(e);this.isCustomMenu=t,this.storeId=n,this.hasCustomRecipes=r,this.menuId=i,this.currentMenuPageUrl=l,this.recipeImgs=m||[],a&&(this.recipeIds=a),s&&(this.guests=s),this.removeAttribute("starting-data")}addEventListeners(){this.addClickListener("cancelMenuButton",()=>this.cancelMenu()),this.addClickListener("menuOption",()=>this.navigateToMenuOrShowForm())}navigateToMenuOrShowForm(){o.hook.hookCallback().subscribe(e=>{e&&(localStorage.setItem("_miam/isCustomMenu",this.isCustomMenu.toString()),!this.isCustomMenu||this.recipeIds.length===0?this.displayPlannerForm():this.redirectToMenu())})}displayPlannerForm(){const e=document.querySelector(".mealz-planner-dashboard");e&&(e.style.display="none");let t=document.querySelector("mealz-planner-form");t||(t=document.createElement("mealz-planner-form"),t.guests=this.guests,t.isCustomMenu=this.isCustomMenu,t.hideBudget=!this.isCustomMenu||!this.storeId,t.currentMenuModal=!this.isCustomMenu&&this.hasCustomRecipes,t.menuId=this.menuId,t.addEventListener("displayDashboard",()=>this.displayDashboard()),t.addEventListener("generateMenu",s=>this.generateMenu(s)),e?e.insertAdjacentElement("afterend",t):document.body.appendChild(t))}generateMenu(e){if(this.recipeIds.length===0){this.redirectToMenu();return}this.displayAddToBasketLoaderView(e.detail.guests)}displayAddToBasketLoaderView(e){this.hideUIElements(),this.setupBasketLoader(e)}hideUIElements(){const e=document.querySelector(".mealz-planner-dashboard");e&&(e.style.display="none");const t=document.querySelector("mealz-planner-form");t&&(t.style.display="none")}setupBasketLoader(e){if(this.loaderToBasketElement=document.querySelector("mealz-to-basket-loader"),!this.loaderToBasketElement){this.loaderToBasketElement=document.createElement("mealz-to-basket-loader"),this.loaderToBasketElement.recipeImgs=this.recipeImgs,this.setupSynchronization(this.loaderToBasketElement,e);const t=document.querySelector("mealz-planner-form");t?t.insertAdjacentElement("afterend",this.loaderToBasketElement):document.body.appendChild(this.loaderToBasketElement)}}setupSynchronization(e,t){let s=!1,n=!1;const r=()=>{s&&n&&this.redirectToMenu()};e.addEventListener("basketComplete",()=>{s=!0,r()}),this.addRecipesSequentially(0,t,()=>{n=!0,r()})}addRecipesSequentially(e,t,s){var i,a;if(e>=this.recipeIds.length){s&&s();return}const n=(a=(i=o.recipes)==null?void 0:i.productsPlannerByCategory$)==null?void 0:a.value,r=(n==null?void 0:n.toPickProducts)||[];o.planner.addRecipeToMenu(this.recipeIds[e],t,!!o.pos.currentPos().value,r).pipe(c(1)).subscribe({next:()=>{this.recipeAddedEvent(this.recipeIds[e]),this.addRecipesSequentially(e+1,t,s)},error:l=>{console.error("Error adding recipe to menu:",l),this.addRecipesSequentially(e+1,t,s)}})}redirectToMenu(){if(this.isRedirecting)return;this.isRedirecting=!0,this.loaderToBasketElement&&this.loaderToBasketElement.remove(),this.sendRedirectToMenuEvent();const e=this.currentMenuPageUrl;e&&e!==window.location.href&&(window.location.href=e)}sendRedirectToMenuEvent(){const e=new CustomEvent("redirectToMenu",{bubbles:!0,composed:!0,detail:{url:this.currentMenuPageUrl}});this.dispatchEvent(e)}displayDashboard(){const e=document.querySelector(".mealz-planner-dashboard");e&&(e.style.display="block")}cancelMenu(){const e=new h;e.addEventListener("resetMenu",()=>this.resetMenu()),e.displayPlannerAbandonModal()}resetMenu(){const e=o.planner.deleteMenu(this.menuId);this.resetMenuEvent(),e.pipe(c(1)).subscribe(()=>{window.location.reload()})}resetMenuEvent(){o.analytics.sendEvent("planner.reset",this.analyticsPath,{})}recipeAddedEvent(e){o.analytics.sendEvent("planner.recipe.add",this.analyticsPath,{recipe_id:e})}};d=y([M("mealz-planner-menu-option")],d);customElements.get("mealz-planner-menu-option")||customElements.define("mealz-planner-menu-option",d);
1
+ import"../planner-form/planner-form.min.js";import"../to-basket-loader/to-basket-loader.min.js";import{M as h}from"../planner-abandon-modal/planner-abandon-modal.min.js";import{N as p}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as M}from"../../assets/custom-element-BhZVzxrc.js";import{m as o}from"../../assets/mealz-sdk-DWLzEfKz.js";import{t as u}from"../../assets/take-BmqRVy-3.js";import"../../assets/property-Bg80vXcm.js";import"../planner-current-menu-modal/planner-current-menu-modal.min.js";import"../../modal/modal.min.js";import"../../assets/unsafe-html-MRC87lfr.js";import"../../onboarding/events.min.js";import"../../assets/switchMap-vA0vSKy4.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/empty-DGYYDWIm.js";import"../../assets/state-bsKs-Mb2.js";var f=Object.getOwnPropertyDescriptor,y=(e,t,s,n)=>{for(var r=n>1?void 0:n?f(t,s):t,i=e.length-1,a;i>=0;i--)(a=e[i])&&(r=a(r)||r);return r};let c=class extends p{constructor(){super(...arguments),this.menuId="",this.isCustomMenu=!1,this.guests=4,this.recipeIds=[],this.recipeImgs=[],this.analyticsPath="/meals-planner/dashboard",this.isRedirecting=!1}get selectors(){return{cancelMenuButton:".mealz-planner-menu-option__cancel",menuOption:".mealz-planner-menu-option__container"}}connectedCallback(){super.connectedCallback(),this.initSelectors(),this.addEventListeners()}render(){var l;const e=(l=this.attributes["starting-data"])==null?void 0:l.value;if(!e)return;const{isCustomMenu:t,guestsPreference:s,storeId:n,hasCustomRecipes:r,menuId:i,recipesId:a,currentMenuPageUrl:d,recipeImgs:m}=JSON.parse(e);this.isCustomMenu=t,this.storeId=n,this.hasCustomRecipes=r,this.menuId=i,this.currentMenuPageUrl=d,this.recipeImgs=m||[],a&&(this.recipeIds=a),s&&(this.guests=s),this.removeAttribute("starting-data")}addEventListeners(){this.addClickListener("cancelMenuButton",()=>this.cancelMenu()),this.addClickListener("menuOption",()=>this.navigateToMenuOrShowForm())}navigateToMenuOrShowForm(){const e=this.isCustomMenu?"custom":"from-featured";this.sendModeSelectEvent(e),o.hook.hookCallback().subscribe(t=>{t&&(localStorage.setItem("_miam/isCustomMenu",this.isCustomMenu.toString()),!this.isCustomMenu||this.recipeIds.length===0?this.displayPlannerForm():this.redirectToMenu())})}displayPlannerForm(){const e=document.querySelector(".mealz-planner-dashboard");e&&(e.style.display="none");let t=document.querySelector("mealz-planner-form");t||(t=document.createElement("mealz-planner-form"),t.guests=this.guests,t.isCustomMenu=this.isCustomMenu,t.hideBudget=!this.isCustomMenu||!this.storeId,t.currentMenuModal=!this.isCustomMenu&&this.hasCustomRecipes,t.menuId=this.menuId,t.addEventListener("displayDashboard",()=>this.displayDashboard()),t.addEventListener("generateMenu",s=>this.generateMenu(s)),e?e.insertAdjacentElement("afterend",t):document.body.appendChild(t))}generateMenu(e){if(this.recipeIds.length===0){this.redirectToMenu();return}this.displayAddToBasketLoaderView(e.detail.guests)}displayAddToBasketLoaderView(e){this.hideUIElements(),this.setupBasketLoader(e)}hideUIElements(){const e=document.querySelector(".mealz-planner-dashboard");e&&(e.style.display="none");const t=document.querySelector("mealz-planner-form");t&&(t.style.display="none")}setupBasketLoader(e){if(this.loaderToBasketElement=document.querySelector("mealz-to-basket-loader"),!this.loaderToBasketElement){this.loaderToBasketElement=document.createElement("mealz-to-basket-loader"),this.loaderToBasketElement.recipeImgs=this.recipeImgs,this.setupSynchronization(this.loaderToBasketElement,e);const t=document.querySelector("mealz-planner-form");t?t.insertAdjacentElement("afterend",this.loaderToBasketElement):document.body.appendChild(this.loaderToBasketElement)}}setupSynchronization(e,t){let s=!1,n=!1;const r=()=>{s&&n&&this.redirectToMenu()};e.addEventListener("basketComplete",()=>{s=!0,r()}),this.addRecipesSequentially(0,t,()=>{n=!0,r()})}addRecipesSequentially(e,t,s){var i,a;if(e>=this.recipeIds.length){s&&s();return}const n=(a=(i=o.recipes)==null?void 0:i.productsPlannerByCategory$)==null?void 0:a.value,r=(n==null?void 0:n.toPickProducts)||[];o.planner.addRecipeToMenu(this.recipeIds[e],t,!!o.pos.currentPos().value,r).pipe(u(1)).subscribe({next:()=>{this.recipeAddedEvent(this.recipeIds[e]),this.addRecipesSequentially(e+1,t,s)},error:d=>{console.error("Error adding recipe to menu:",d),this.addRecipesSequentially(e+1,t,s)}})}redirectToMenu(){if(this.isRedirecting)return;this.isRedirecting=!0,this.loaderToBasketElement&&this.loaderToBasketElement.remove(),this.sendRedirectToMenuEvent();const e=this.currentMenuPageUrl;e&&e!==window.location.href&&(window.location.href=e)}sendRedirectToMenuEvent(){const e=new CustomEvent("redirectToMenu",{bubbles:!0,composed:!0,detail:{url:this.currentMenuPageUrl}});this.dispatchEvent(e)}displayDashboard(){const e=document.querySelector(".mealz-planner-dashboard");e&&(e.style.display="block")}cancelMenu(){const e=new h;e.addEventListener("resetMenu",()=>this.resetMenu()),e.displayPlannerAbandonModal()}resetMenu(){const e=o.planner.deleteMenu(this.menuId);this.resetMenuEvent(),e.pipe(u(1)).subscribe(()=>{window.location.reload()})}sendModeSelectEvent(e){o.analytics.sendEvent("planner.mode.select",this.analyticsPath,{mode:e},"meals-planner-home")}resetMenuEvent(){o.analytics.sendEvent("planner.reset",this.analyticsPath,{})}recipeAddedEvent(e){o.analytics.sendEvent("planner.recipe.add",this.analyticsPath,{recipe_id:e,recipe_source:"pre_filled",mode:this.isCustomMenu?"custom":"from-featured"},"meals-planner-home")}};c=y([M("mealz-planner-menu-option")],c);
@@ -1,4 +1,4 @@
1
- import{N as m,k as e}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as d}from"../../assets/custom-element-BhZVzxrc.js";import{r as g}from"../../assets/state-bsKs-Mb2.js";import{d as c,e as u,f as b,g as h,h as v,i as z}from"../../onboarding/analytics/onboarding-analytics.min.js";import"../../assets/mealz-sdk-DWLzEfKz.js";import"../../assets/property-Bg80vXcm.js";var _=Object.defineProperty,x=Object.getOwnPropertyDescriptor,p=(t,n,a,o)=>{for(var s=o>1?void 0:o?x(n,a):n,r=t.length-1,l;r>=0;r--)(l=t[r])&&(s=(o?l(n,a,s):l(s))||s);return o&&s&&_(n,a,s),s};let i=class extends m{constructor(){super(),this.step=1,this.isMobile=window.innerWidth<=768,this.analyticsPath="/meals-planner/onboarding",this.steps=[{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step0.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step0-mobile.png",title:"Retrouvez votre Choisissez votre style",content:"Découvrez notre Sélection du moment pour gagner du temps, ou créez un Menu personnalisé adapté à vos goûts et à votre budget."},{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step1.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step1-mobile.png",title:"Retrouvez votre menu",content:"Toutes les recettes que vous sélectionnerez et l'accès au catalogue de recettes seront visibles ici."},{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step2.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step2-mobile.png",title:"Inspirez-vous avec nos suggestions",content:e`Visualisez notre proposition de recette rien que pour vous ici.<br>Cliquez dessus pour en voir les détails.`},{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step3.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step3-mobile.png",title:"Une recette vous plaît ?",content:e`
1
+ import{N as m,k as e}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as d}from"../../assets/custom-element-BhZVzxrc.js";import{r as g}from"../../assets/state-bsKs-Mb2.js";import{d as c,e as u,f as b,g as h,h as v,i as z}from"../../onboarding/analytics/onboarding-analytics.min.js";import"../../assets/mealz-sdk-DWLzEfKz.js";import"../../assets/property-Bg80vXcm.js";var _=Object.defineProperty,x=Object.getOwnPropertyDescriptor,p=(t,n,a,o)=>{for(var s=o>1?void 0:o?x(n,a):n,r=t.length-1,l;r>=0;r--)(l=t[r])&&(s=(o?l(n,a,s):l(s))||s);return o&&s&&_(n,a,s),s};let i=class extends m{constructor(){super(),this.step=1,this.isMobile=window.innerWidth<=768,this.analyticsPath="/meals-planner/onboarding",this.steps=[{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step0.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step0-mobile.png",title:"Retrouvez votre menu",content:"Découvrez notre Sélection du moment pour gagner du temps, ou créez un Menu personnalisé adapté à vos goûts et à votre budget."},{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step1.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step1-mobile.png",title:"Retrouvez votre menu",content:"Toutes les recettes que vous sélectionnerez et l'accès au catalogue de recettes seront visibles ici."},{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step2.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step2-mobile.png",title:"Inspirez-vous avec nos suggestions",content:e`Visualisez notre proposition de recette rien que pour vous ici.<br>Cliquez dessus pour en voir les détails.`},{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step3.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step3-mobile.png",title:"Une recette vous plaît ?",content:e`
2
2
  Ajoutez-la en 1 clic à votre menu grâce au bouton
3
3
  <span class="mealz-ds-text weight-xl">"Ajouter au menu"</span>.
4
4
  `},{imgDesktop:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step4.png",imgMobile:"https://storage.googleapis.com/assets.miam.tech/generic/meals-planner/onboarding/planner-onboarding-step4-mobile.png",title:"Une recette ne vous plaît pas ?",content:e`
@@ -1 +1 @@
1
- import{N as h,q as m,S as f}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as S}from"../../assets/custom-element-BhZVzxrc.js";import{m as p}from"../../assets/mealz-sdk-DWLzEfKz.js";import{d as b}from"../../assets/debounceTime-CIA2MWDj.js";import{o as R}from"../../assets/of-CH-D5SN9.js";import{t as g}from"../../assets/take-BmqRVy-3.js";import{t as v}from"../../assets/tap-C4xC1M3N.js";import"../../assets/async-H-Co76Oa.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/from-Btz8AgkO.js";import"../../assets/executeSchedule-CTqB8mra.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../assets/empty-DGYYDWIm.js";class L{constructor(){this.attributes={title:"","ext-id":"","ext-link":"",description:"","number-of-guests":"","preparation-time":"","preheating-time":"","cooking-time":"","resting-time":"","media-url":"",source:"","informational-page-html":"","filigrane-logo-url":"","informational-sentence":"","order-history":"",difficulty:1,cost:1,suggested:!1,popularity:0,"video-id":"",promoted:!1,editable:!1,position:-1},this.ttl=3600,this.finalTimer=this.attributes["preparation-time"]+this.attributes["preheating-time"]+this.attributes["cooking-time"]+this.attributes["resting-time"]}get title(){return this.attributes.title}get promoted(){return this.attributes.promoted}get guests(){return this.attributes["number-of-guests"]}set guests(t){this.attributes["number-of-guests"]=t}get filigraneLogoUrl(){return this.attributes["filigrane-logo-url"]?this.attributes["filigrane-logo-url"]:null}get sponsorName(){return this.relationships.sponsors.length>0?this.relationships.sponsors[0].attributes.name:null}get sponsorLogoUrl(){var t;return this.relationships.sponsors.data.length>0&&((t=this.included)!=null&&t.length)?this.included.find(s=>s.id===this.relationships.sponsors.data[0].id&&s.type==="sponsors").attributes["logo-url"]:null}get informationalSentence(){return this.attributes["informational-sentence"]}get costLabel(){switch(this.attributes.cost){case 1:return"faible";case 2:return"moyen";case 3:return"élevé";default:return"moyen"}}get orderHistory(){return this.attributes["order-history"]}get preparationTime(){}get cookingTime(){}get restingTime(){}get difficulty(){return this.attributes.difficulty}set difficulty(t){this.attributes.difficulty=t}}var w=Object.getOwnPropertyDescriptor,C=(e,t,s,i)=>{for(var n=i>1?void 0:i?w(t,s):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(n=o(n)||n);return n};let d=class extends h{constructor(){super(...arguments),this.recipeId="",this.isDragging=!1,this.dragStartX=0,this.initialScrollLeft=0,this.layoutObserver=null,this.menuRecipes=[],this.suggestedRecipes=[],this.buttonClickHandlers=new Map,this.swapRecipeCount=0,this.swapRecipeClick$=new m,this.analyticsPath="/meals-planner/current",this.preferencesSubscription=new f,this.lastShownRecipeId=null}get selectors(){return{buttonsContainer:".mealz-planner-recipe-suggestion__meals-count",title:".mealz-planner-current-menu__recipe-title",removeButtons:".mealz-planner-recipe-suggestion__actions-remove",removeButton:".mealz-planner-recipe-suggestion__actions-remove-button",swapButton:".mealz-planner-recipe-suggestion__actions-swap-button",addButton:".mealz-planner-recipe-suggestion__actions-add-button",seeRecipe:".mealz-planner-recipe-suggestion__see-recipe",promotion:".mealz-planner-recipe-suggestion__recipe-badges-promotion",sponsor:".mealz-planner-recipe-suggestion__recipe-sponsor",addAndSwapButtons:".mealz-planner-recipe-suggestion__actions-add-and-swap",buttons:[".mealz-planner-recipe-suggestion__meals-count-button"],activeButton:".mealz-planner-recipe-suggestion__meals-count-button.primary",pictureContainer:".mealz-planner-recipe-suggestion__picture",picture:".mealz-planner-recipe-suggestion__picture img",sponsorImg:".mealz-planner-recipe-suggestion__recipe-sponsor img"}}connectedCallback(){super.connectedCallback(),this.initSelectors(),this.addEventListeners(),this.swapRecipeClick$.pipe(b(300)).subscribe(()=>this.swapRecipe()),this.subscribeToPreferencesChanges()}disconnectedCallback(){super.disconnectedCallback(),this.layoutObserver&&this.layoutObserver.disconnect(),this.swapRecipeClick$.complete(),this.preferencesSubscription.unsubscribe()}render(){const{buttonsContainer:e,buttons:t}=this.elements;!e||!t.length||this.mealsCountButtonsListener(t)}firstUpdated(){var i,n;const{buttonsContainer:e,buttons:t}=this.elements;if(!e||!t.length)return;this.initScrolling(e,t),this.initDragScrolling(e);const s=(i=this.attributes["starting-data"])==null?void 0:i.value;s&&(Object.assign(this,JSON.parse(s)),this.recipeId=(n=this.recipeDisplayed)==null?void 0:n.id,t.length===1&&this.recipeId&&this.suggestionShownEvent(),this.removeAttribute("starting-data"))}addEventListeners(){this.addClickListener("removeButton",()=>this.removeRecipe().subscribe()),this.addClickListener("swapButton",()=>this.swapRecipeClick$.next()),this.addClickListener("addButton",()=>this.addRecipe()),this.addClickListener("title",()=>this.openRecipeDetails()),this.addClickListener("seeRecipe",()=>this.openRecipeDetails()),this.addClickListener("pictureContainer",()=>this.openRecipeDetails())}mealsCountButtonsListener(e){e.forEach((t,s)=>{const i=this.buttonClickHandlers.get(t);i&&t.removeEventListener("click",i);const n=()=>this.handleRecipeSelect(e,t,s);this.buttonClickHandlers.set(t,n),t.addEventListener("click",n)})}handleRecipeSelect(e,t,s){e.forEach(i=>i.classList.remove("primary")),t.classList.add("primary"),this.updateDisplayedRecipe(!1,s),s+1===e.length&&this.suggestionShownEvent(),this.scrollToButton(t)}updateDisplayedRecipe(e=!1,t){const{title:s,promotion:i,sponsor:n,addAndSwapButtons:r,removeButtons:o,picture:c,sponsorImg:l}=this.elements;if(!c||!s||!i||!n||!l||!r||!o)return;const a=this.getRecipeToDisplay(e,t);if(!a)return;const u=new L;Object.assign(u,a),this.recipeId=a.id,this.initializeUIState(c,i,n),this.setupImageHandlers(c,l,n,u,s,i,r,o,t)}getRecipeToDisplay(e,t){return e?this.suggestedRecipes[0]:this.menuRecipes[t]||this.suggestedRecipes[0]}initializeUIState(e,t,s){e.classList.add("loading"),t.classList.add("hidden"),s.classList.add("hidden")}setupImageHandlers(e,t,s,i,n,r,o,c,l){let a=null;const u=()=>{a&&(clearTimeout(a),a=null),this.updateRecipeUI(e,s,n,r,o,c,i,l)};if(e.onload=u,e.onerror=u,i.attributes["media-url"])e.src=i.attributes["media-url"];else{u();return}i.sponsorLogoUrl&&(t.src=i.sponsorLogoUrl),a=window.setTimeout(u,1e3)}updateRecipeUI(e,t,s,i,n,r,o,c){e.classList.remove("loading"),o.sponsorLogoUrl&&t.classList.remove("hidden"),s.textContent=o.attributes.title||"",i.classList.toggle("hidden",!o.discounted);const l=!!this.menuRecipes[c];n.classList.toggle("hidden",l),r.classList.toggle("hidden",!l)}addRecipe(){this.toggleLoadingButton(!0);const e=document.querySelector("mealz-planner-current-menu");if(!e){this.toggleLoadingButton(!1);return}e.addRecipe(this.recipeId,this.guests).subscribe({next:()=>{this.addAndSelectNewSuggestion(),this.toggleLoadingButton(!1)},error:()=>{this.toggleLoadingButton(!1)}})}toggleLoadingButton(e){const t=this.selectors.addButton,s=this.querySelector(t);s&&s.classList.toggle("loading",e)}addAndSelectNewSuggestion(e){!e||this.suggestedRecipes[0].id===e.id?(this.menuRecipes.push(this.suggestedRecipes[0]),this.removeSuggestedRecipe()):this.menuRecipes.push(e),this.addNewMealCountButton(),this.selectNewSuggestion(),this.addCheckIconToButton(),this.requestUpdate()}addNewMealCountButton(){var n;const{buttons:e}=this.elements;if(!e.length)return;const t=e[e.length-1],s=t.cloneNode(!0);s.classList.remove("primary");const i=s.querySelector("span");if(i){const r=(n=i.textContent)==null?void 0:n.match(/\d+/);if(r){const o=parseInt(r[0],10)+1;i.textContent=i.textContent.replace(/\d+/,o.toString())}}t.after(s)}selectNewSuggestion(){this.initSelectors("buttons");const{buttons:e}=this.elements;if(!e.length)return;const t=e[e.length-1];this.handleRecipeSelect(e,t,e.length-1)}addCheckIconToButton(){this.initSelectors("buttons");const{buttons:e}=this.elements;if(!e.length)return;const t=e[e.length-2],s=document.createElement("img");s.src="https://storage.googleapis.com/assets.miam.tech/generic/icons/Check.svg",s.alt="check icon",t.appendChild(s)}removeRecipe(e){const t=e||this.recipeId,s=document.querySelector("mealz-planner-current-menu");return!s||!t?R():s.removeRecipe(t).pipe(g(1),v(()=>{const i=this.menuRecipes.findIndex(n=>n.id===t);i!==-1&&(this.removeRecipeFromMenu(i),this.removeButtonFromContainer(i),this.updateButtonsCount())}))}removeButtonFromContainer(e){const{buttonsContainer:t,buttons:s}=this.elements;if(!t||!s.length)return;const i=s[e];if(i.classList.contains("primary")){const n=+e+1,r=s[n];this.handleRecipeSelect(s,r,e)}i.remove()}removeRecipeFromMenu(e){this.menuRecipes.splice(e,1)}updateButtonsCount(){this.initSelectors("buttons");const{buttons:e}=this.elements;e.forEach((t,s)=>{var n;const i=t.querySelector("span");if(i&&((n=i.textContent)==null?void 0:n.match(/\d+/))){const o=s+1;i.textContent=i.textContent.replace(/\d+/,o.toString())}}),this.requestUpdate()}swapRecipe(){p.planner.rejectRecipe(this.recipeId).pipe(g(1)).subscribe(),this.recipeSwappedEvent(),this.swapRecipeCount++,!sessionStorage.getItem("_miam/selectFromCatalogSuggestion")&&this.swapRecipeCount>3&&(sessionStorage.setItem("_miam/selectFromCatalogSuggestion","true"),this.openCatalogModal()),this.removeSuggestedRecipe(),this.updateDisplayedRecipe(!0),this.suggestionShownEvent()}removeSuggestedRecipe(){this.suggestedRecipes.shift(),this.suggestedRecipes.length<3&&p.planner.getSuggestedRecipes().pipe(g(1)).subscribe(e=>{this.suggestedRecipes=[...this.suggestedRecipes,...e]})}openCatalogModal(){const e=document.querySelector("mealz-planner-current-menu");this.promptCatalogEvent(),e==null||e.openCatalogModal()}openRecipeDetails(){p.recipes.openDetails(this.recipeId,this.guests,0,"",!0)}initScrolling(e,t){t.length>0&&t[0].offsetWidth>0?this.centerActiveButton(e,t):this.waitForButtonLayout(e,t)}centerActiveButton(e,t){this.initSelectors("activeButton");const{activeButton:s}=this.elements;this.setPadding(e,t),s&&this.scrollToButton(s,"instant")}waitForButtonLayout(e,t){const s=new ResizeObserver(()=>{t.length>0&&t[0].offsetWidth>0&&(this.centerActiveButton(e,t),s.disconnect())});t.forEach(i=>s.observe(i))}initDragScrolling(e){e.addEventListener("mousedown",t=>this.startDrag(t,e)),e.addEventListener("mouseleave",()=>this.stopDrag()),e.addEventListener("mouseup",()=>this.stopDrag()),e.addEventListener("mousemove",t=>this.onDrag(t,e))}refreshSuggestions(){p.planner.getSuggestedRecipes().pipe(g(1)).subscribe(e=>{var n;this.suggestedRecipes=e,this.initSelectors("buttons","activeButton");const{buttons:t,activeButton:s}=this.elements;if(!!(t!=null&&t.length)&&s===t[t.length-1]&&this.suggestedRecipes.length>0){const r=this.suggestedRecipes[0];((n=this.recipeDisplayed)==null?void 0:n.id)!==r.id&&(this.recipeDisplayed=r,this.updateDisplayedRecipe(!0),this.requestUpdate())}})}subscribeToPreferencesChanges(){this.preferencesSubscription.add(p.preferences.preferencesChanged$().subscribe(()=>this.refreshSuggestions()))}setPadding(e,t){const s=t[0].offsetWidth,i=t[t.length-1].offsetWidth;e.style.paddingLeft=`calc(50% - ${s/2}px)`,e.style.paddingRight=`calc(50% - ${i/2}px)`}scrollToButton(e,t="smooth"){if(!e||!e.parentElement)return;const s=e.parentElement,n=Array.from(this.elements.buttons).indexOf(e);if(n===-1)return;const r=window.getComputedStyle(s),o=parseFloat(r.paddingLeft||"0"),c=window.getComputedStyle(e),l=parseFloat(c.marginRight||"0");let a=e.offsetLeft-o;a+=l*n,s.scrollTo({left:a,behavior:t})}startDrag(e,t){this.isDragging=!0,this.dragStartX=e.pageX-t.offsetLeft,this.initialScrollLeft=t.scrollLeft}stopDrag(){this.isDragging=!1}onDrag(e,t){if(!this.isDragging)return;e.preventDefault();const s=e.pageX-t.offsetLeft;t.scrollLeft=this.initialScrollLeft-(s-this.dragStartX)}recipeSwappedEvent(){p.analytics.sendEvent("planner.recipe.swap",this.analyticsPath,{recipe_id:this.recipeId})}promptCatalogEvent(){p.analytics.sendEvent("planner.recipe.catalog-prompt",this.analyticsPath,{})}suggestionShownEvent(){this.recipeId&&this.recipeId!==this.lastShownRecipeId&&(p.analytics.sendEvent("planner.suggestion.show",this.analyticsPath,{recipe_id:this.recipeId}),this.lastShownRecipeId=this.recipeId)}};d=C([S("mealz-planner-recipe-suggestion")],d);
1
+ import{N as h,q as m,S as f}from"../../assets/no-shadow-element-DlGA0h9b.js";import{t as S}from"../../assets/custom-element-BhZVzxrc.js";import{m as p}from"../../assets/mealz-sdk-DWLzEfKz.js";import{d as R}from"../../assets/debounceTime-CIA2MWDj.js";import{o as b}from"../../assets/of-CH-D5SN9.js";import{t as g}from"../../assets/take-BmqRVy-3.js";import{t as v}from"../../assets/tap-C4xC1M3N.js";import"../../assets/async-H-Co76Oa.js";import"../../assets/OperatorSubscriber-z_a6lCKk.js";import"../../assets/from-Btz8AgkO.js";import"../../assets/executeSchedule-CTqB8mra.js";import"../../assets/innerFrom-CVMPVEmB.js";import"../../assets/empty-DGYYDWIm.js";class w{constructor(){this.attributes={title:"","ext-id":"","ext-link":"",description:"","number-of-guests":"","preparation-time":"","preheating-time":"","cooking-time":"","resting-time":"","media-url":"",source:"","informational-page-html":"","filigrane-logo-url":"","informational-sentence":"","order-history":"",difficulty:1,cost:1,suggested:!1,popularity:0,"video-id":"",promoted:!1,editable:!1,position:-1},this.ttl=3600,this.finalTimer=this.attributes["preparation-time"]+this.attributes["preheating-time"]+this.attributes["cooking-time"]+this.attributes["resting-time"]}get title(){return this.attributes.title}get promoted(){return this.attributes.promoted}get guests(){return this.attributes["number-of-guests"]}set guests(t){this.attributes["number-of-guests"]=t}get filigraneLogoUrl(){return this.attributes["filigrane-logo-url"]?this.attributes["filigrane-logo-url"]:null}get sponsorName(){return this.relationships.sponsors.length>0?this.relationships.sponsors[0].attributes.name:null}get sponsorLogoUrl(){var t;return this.relationships.sponsors.data.length>0&&((t=this.included)!=null&&t.length)?this.included.find(s=>s.id===this.relationships.sponsors.data[0].id&&s.type==="sponsors").attributes["logo-url"]:null}get informationalSentence(){return this.attributes["informational-sentence"]}get costLabel(){switch(this.attributes.cost){case 1:return"faible";case 2:return"moyen";case 3:return"élevé";default:return"moyen"}}get orderHistory(){return this.attributes["order-history"]}get preparationTime(){}get cookingTime(){}get restingTime(){}get difficulty(){return this.attributes.difficulty}set difficulty(t){this.attributes.difficulty=t}}var L=Object.getOwnPropertyDescriptor,y=(e,t,s,i)=>{for(var n=i>1?void 0:i?L(t,s):t,r=e.length-1,o;r>=0;r--)(o=e[r])&&(n=o(n)||n);return n};let d=class extends h{constructor(){super(...arguments),this.recipeId="",this.isDragging=!1,this.dragStartX=0,this.initialScrollLeft=0,this.layoutObserver=null,this.menuRecipes=[],this.suggestedRecipes=[],this.buttonClickHandlers=new Map,this.swapRecipeCount=0,this.swapRecipeClick$=new m,this.analyticsPath="/meals-planner/current",this.preferencesSubscription=new f,this.lastShownRecipeId=null}get selectors(){return{buttonsContainer:".mealz-planner-recipe-suggestion__meals-count",title:".mealz-planner-current-menu__recipe-title",removeButtons:".mealz-planner-recipe-suggestion__actions-remove",removeButton:".mealz-planner-recipe-suggestion__actions-remove-button",swapButton:".mealz-planner-recipe-suggestion__actions-swap-button",addButton:".mealz-planner-recipe-suggestion__actions-add-button",seeRecipe:".mealz-planner-recipe-suggestion__see-recipe",promotion:".mealz-planner-recipe-suggestion__recipe-badges-promotion",sponsor:".mealz-planner-recipe-suggestion__recipe-sponsor",addAndSwapButtons:".mealz-planner-recipe-suggestion__actions-add-and-swap",buttons:[".mealz-planner-recipe-suggestion__meals-count-button"],activeButton:".mealz-planner-recipe-suggestion__meals-count-button.primary",pictureContainer:".mealz-planner-recipe-suggestion__picture",picture:".mealz-planner-recipe-suggestion__picture img",sponsorImg:".mealz-planner-recipe-suggestion__recipe-sponsor img"}}connectedCallback(){super.connectedCallback(),this.initSelectors(),this.addEventListeners(),this.swapRecipeClick$.pipe(R(300)).subscribe(()=>this.swapRecipe()),this.subscribeToPreferencesChanges()}disconnectedCallback(){super.disconnectedCallback(),this.layoutObserver&&this.layoutObserver.disconnect(),this.swapRecipeClick$.complete(),this.preferencesSubscription.unsubscribe()}render(){const{buttonsContainer:e,buttons:t}=this.elements;!e||!t.length||this.mealsCountButtonsListener(t)}firstUpdated(){var i,n;const{buttonsContainer:e,buttons:t}=this.elements;if(!e||!t.length)return;this.initScrolling(e,t),this.initDragScrolling(e);const s=(i=this.attributes["starting-data"])==null?void 0:i.value;s&&(Object.assign(this,JSON.parse(s)),this.recipeId=(n=this.recipeDisplayed)==null?void 0:n.id,t.length===1&&this.recipeId&&this.suggestionShownEvent(),this.removeAttribute("starting-data"))}addEventListeners(){this.addClickListener("removeButton",()=>this.removeRecipe().subscribe()),this.addClickListener("swapButton",()=>this.swapRecipeClick$.next()),this.addClickListener("addButton",()=>this.addRecipe()),this.addClickListener("title",()=>this.openRecipeDetails()),this.addClickListener("seeRecipe",()=>this.openRecipeDetails()),this.addClickListener("pictureContainer",()=>this.openRecipeDetails())}mealsCountButtonsListener(e){e.forEach((t,s)=>{const i=this.buttonClickHandlers.get(t);i&&t.removeEventListener("click",i);const n=()=>this.handleRecipeSelect(e,t,s);this.buttonClickHandlers.set(t,n),t.addEventListener("click",n)})}handleRecipeSelect(e,t,s){e.forEach(i=>i.classList.remove("primary")),t.classList.add("primary"),this.updateDisplayedRecipe(!1,s),s+1===e.length&&this.suggestionShownEvent(),this.scrollToButton(t)}updateDisplayedRecipe(e=!1,t){const{title:s,promotion:i,sponsor:n,addAndSwapButtons:r,removeButtons:o,picture:c,sponsorImg:l}=this.elements;if(!c||!s||!i||!n||!l||!r||!o)return;const a=this.getRecipeToDisplay(e,t);if(!a)return;const u=new w;Object.assign(u,a),this.recipeId=a.id,this.initializeUIState(c,i,n),this.setupImageHandlers(c,l,n,u,s,i,r,o,t)}getRecipeToDisplay(e,t){return e?this.suggestedRecipes[0]:this.menuRecipes[t]||this.suggestedRecipes[0]}initializeUIState(e,t,s){e.classList.add("loading"),t.classList.add("hidden"),s.classList.add("hidden")}setupImageHandlers(e,t,s,i,n,r,o,c,l){let a=null;const u=()=>{a&&(clearTimeout(a),a=null),this.updateRecipeUI(e,s,n,r,o,c,i,l)};if(e.onload=u,e.onerror=u,i.attributes["media-url"])e.src=i.attributes["media-url"];else{u();return}i.sponsorLogoUrl&&(t.src=i.sponsorLogoUrl),a=window.setTimeout(u,1e3)}updateRecipeUI(e,t,s,i,n,r,o,c){e.classList.remove("loading"),o.sponsorLogoUrl&&t.classList.remove("hidden"),s.textContent=o.attributes.title||"",i.classList.toggle("hidden",!o.discounted);const l=!!this.menuRecipes[c];n.classList.toggle("hidden",l),r.classList.toggle("hidden",!l)}addRecipe(){this.toggleLoadingButton(!0);const e=document.querySelector("mealz-planner-current-menu");if(!e){this.toggleLoadingButton(!1);return}e.addRecipe(this.recipeId,this.guests,"ai_suggestion","meals-planner-dashboard").subscribe({next:()=>{this.addAndSelectNewSuggestion(),this.toggleLoadingButton(!1)},error:()=>{this.toggleLoadingButton(!1)}})}toggleLoadingButton(e){const t=this.selectors.addButton,s=this.querySelector(t);s&&s.classList.toggle("loading",e)}addAndSelectNewSuggestion(e){!e||this.suggestedRecipes[0].id===e.id?(this.menuRecipes.push(this.suggestedRecipes[0]),this.removeSuggestedRecipe()):this.menuRecipes.push(e),this.addNewMealCountButton(),this.selectNewSuggestion(),this.addCheckIconToButton(),this.requestUpdate()}addNewMealCountButton(){var n;const{buttons:e}=this.elements;if(!e.length)return;const t=e[e.length-1],s=t.cloneNode(!0);s.classList.remove("primary");const i=s.querySelector("span");if(i){const r=(n=i.textContent)==null?void 0:n.match(/\d+/);if(r){const o=parseInt(r[0],10)+1;i.textContent=i.textContent.replace(/\d+/,o.toString())}}t.after(s)}selectNewSuggestion(){this.initSelectors("buttons");const{buttons:e}=this.elements;if(!e.length)return;const t=e[e.length-1];this.handleRecipeSelect(e,t,e.length-1)}addCheckIconToButton(){this.initSelectors("buttons");const{buttons:e}=this.elements;if(!e.length)return;const t=e[e.length-2],s=document.createElement("img");s.src="https://storage.googleapis.com/assets.miam.tech/generic/icons/Check.svg",s.alt="check icon",t.appendChild(s)}removeRecipe(e){const t=e||this.recipeId,s=document.querySelector("mealz-planner-current-menu");return!s||!t?b():s.removeRecipe(t).pipe(g(1),v(()=>{const i=this.menuRecipes.findIndex(n=>n.id===t);i!==-1&&(this.removeRecipeFromMenu(i),this.removeButtonFromContainer(i),this.updateButtonsCount())}))}removeButtonFromContainer(e){const{buttonsContainer:t,buttons:s}=this.elements;if(!t||!s.length)return;const i=s[e];if(i.classList.contains("primary")){const n=+e+1,r=s[n];this.handleRecipeSelect(s,r,e)}i.remove()}removeRecipeFromMenu(e){this.menuRecipes.splice(e,1)}updateButtonsCount(){this.initSelectors("buttons");const{buttons:e}=this.elements;e.forEach((t,s)=>{var n;const i=t.querySelector("span");if(i&&((n=i.textContent)==null?void 0:n.match(/\d+/))){const o=s+1;i.textContent=i.textContent.replace(/\d+/,o.toString())}}),this.requestUpdate()}swapRecipe(){this.suggestedRecipes.shift(),p.planner.rejectRecipe(this.recipeId).pipe(g(1)).subscribe({next:()=>{this.suggestedRecipes.length<1&&this.getNewSuggestedRecipes()}}),this.recipeSwappedEvent(),this.swapRecipeCount++,!sessionStorage.getItem("_miam/selectFromCatalogSuggestion")&&this.swapRecipeCount>3&&(sessionStorage.setItem("_miam/selectFromCatalogSuggestion","true"),this.openCatalogModal()),this.updateDisplayedRecipe(!0),this.suggestionShownEvent()}removeSuggestedRecipe(){this.suggestedRecipes.shift(),this.suggestedRecipes.length<1&&this.getNewSuggestedRecipes()}getNewSuggestedRecipes(){p.planner.getSuggestedRecipes().pipe(g(1)).subscribe(e=>{const t=new Set(this.suggestedRecipes.map(i=>i.id)),s=e.filter(i=>!t.has(i.id));this.suggestedRecipes=[...this.suggestedRecipes,...s],this.updateDisplayedRecipe(!0),this.suggestionShownEvent()})}openCatalogModal(){const e=document.querySelector("mealz-planner-current-menu");this.promptCatalogEvent(),e==null||e.openCatalogModal()}openRecipeDetails(){p.recipes.openDetails(this.recipeId,this.guests,0,"",!0)}initScrolling(e,t){t.length>0&&t[0].offsetWidth>0?this.centerActiveButton(e,t):this.waitForButtonLayout(e,t)}centerActiveButton(e,t){this.initSelectors("activeButton");const{activeButton:s}=this.elements;this.setPadding(e,t),s&&this.scrollToButton(s,"instant")}waitForButtonLayout(e,t){const s=new ResizeObserver(()=>{t.length>0&&t[0].offsetWidth>0&&(this.centerActiveButton(e,t),s.disconnect())});t.forEach(i=>s.observe(i))}initDragScrolling(e){e.addEventListener("mousedown",t=>this.startDrag(t,e)),e.addEventListener("mouseleave",()=>this.stopDrag()),e.addEventListener("mouseup",()=>this.stopDrag()),e.addEventListener("mousemove",t=>this.onDrag(t,e))}refreshSuggestions(){p.planner.getSuggestedRecipes().pipe(g(1)).subscribe(e=>{var n;this.suggestedRecipes=e,this.initSelectors("buttons","activeButton");const{buttons:t,activeButton:s}=this.elements;if(!!(t!=null&&t.length)&&s===t[t.length-1]&&this.suggestedRecipes.length>0){const r=this.suggestedRecipes[0];((n=this.recipeDisplayed)==null?void 0:n.id)!==r.id&&(this.recipeDisplayed=r,this.updateDisplayedRecipe(!0),this.requestUpdate())}})}subscribeToPreferencesChanges(){this.preferencesSubscription.add(p.preferences.preferencesChanged$().subscribe(()=>this.refreshSuggestions()))}setPadding(e,t){const s=t[0].offsetWidth,i=t[t.length-1].offsetWidth;e.style.paddingLeft=`calc(50% - ${s/2}px)`,e.style.paddingRight=`calc(50% - ${i/2}px)`}scrollToButton(e,t="smooth"){if(!e||!e.parentElement)return;const s=e.parentElement,n=Array.from(this.elements.buttons).indexOf(e);if(n===-1)return;const r=window.getComputedStyle(s),o=parseFloat(r.paddingLeft||"0"),c=window.getComputedStyle(e),l=parseFloat(c.marginRight||"0");let a=e.offsetLeft-o;a+=l*n,s.scrollTo({left:a,behavior:t})}startDrag(e,t){this.isDragging=!0,this.dragStartX=e.pageX-t.offsetLeft,this.initialScrollLeft=t.scrollLeft}stopDrag(){this.isDragging=!1}onDrag(e,t){if(!this.isDragging)return;e.preventDefault();const s=e.pageX-t.offsetLeft;t.scrollLeft=this.initialScrollLeft-(s-this.dragStartX)}recipeSwappedEvent(){p.analytics.sendEvent("planner.recipe.swap",this.analyticsPath,{recipe_id:this.recipeId})}promptCatalogEvent(){p.analytics.sendEvent("planner.recipe.catalog-prompt",this.analyticsPath,{})}suggestionShownEvent(){this.recipeId&&this.recipeId!==this.lastShownRecipeId&&(p.analytics.sendEvent("planner.suggestion.show",this.analyticsPath,{recipe_id:this.recipeId}),this.lastShownRecipeId=this.recipeId)}};d=y([S("mealz-planner-recipe-suggestion")],d);
@@ -1 +1 @@
1
- import{N as w}from"../assets/no-shadow-element-DlGA0h9b.js";import{V as m}from"../assets/viewport-listener-BuonFDBs.js";import{t as v}from"../assets/custom-element-BhZVzxrc.js";import{h as y}from"../assets/session-handler-BiuedJFx.js";import{w as b,m as n}from"../assets/mealz-sdk-DWLzEfKz.js";import{f as d}from"../assets/filter-DuHsB8oM.js";import{s as L}from"../assets/switchMap-vA0vSKy4.js";import{c as C}from"../assets/combineLatest-DNi66MsF.js";import{t as l}from"../assets/take-BmqRVy-3.js";import"../assets/debounceTime-CIA2MWDj.js";import"../assets/async-H-Co76Oa.js";import"../assets/OperatorSubscriber-z_a6lCKk.js";import"../assets/innerFrom-CVMPVEmB.js";import"../assets/from-Btz8AgkO.js";import"../assets/executeSchedule-CTqB8mra.js";import"../assets/mapOneOrManyArgs-Do0PsDok.js";import"../assets/map-oxUcVNGT.js";import"../assets/empty-DGYYDWIm.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(e,i,s){const r=Date.now(),a=!this.trackedRecipes.get(e),p=this.hasScrolled;!a&&!p||(this.trackedRecipes.size>=this.MAX_RECIPES&&this.cleanOldRecipes(),this.trackedRecipes.set(e,r),window.mealzInternal.analytics.sendEvent("recipe.show",i,{recipe_id:e,category_id:s}))}cleanOldRecipes(){const i=Date.now()-3600*1e3;for(const[s,r]of this.trackedRecipes.entries())r<i&&this.trackedRecipes.delete(s)}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 e;this.scrollListener=()=>{this.hasScrolled=!0,clearTimeout(e),e=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 P=Object.getOwnPropertyDescriptor,R=(t,e,i,s)=>{for(var r=s>1?void 0:s?P(e,i):e,c=t.length-1,a;c>=0;c--)(a=t[c])&&(r=a(r)||r);return r};let g=class extends w{constructor(){super(...arguments),this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),this.listenInView(),b().then(()=>{this.setupSubscriptions()}).catch(t=>{console.warn("Failed to initialize SDK subscriptions:",t)})}setupSubscriptions(){this.subscriptions.push(n.basket.recipePricesInBasket$().subscribe(t=>{const e=t.find(i=>i.id===this.recipeId);e?(this.inBasket=!0,this.updatedRecipeId=e.id,this.updateDOM()):this.inBasket=!1}),this.setupPlannerMenuSubscription(),this.setupGuestUpdatesSubscription())}setupPlannerMenuSubscription(){return n.planner.menuPrice$.pipe(d(()=>this.planner&&!!this.recipeId),L(()=>C([n.planner.isRecipeInMenu$(this.recipeId).pipe(l(1)),n.planner.getGuestsForRecipe(this.recipeId).pipe(l(1))])),d(([t,e])=>t&&typeof e=="number"&&e>0)).subscribe(([t,e])=>{this.guests=e,this.updateGuestDisplay()})}setupGuestUpdatesSubscription(){return n.recipes.guestsUpdated().pipe(d(()=>!!this.recipeId)).subscribe(({guests:t,recipeId:e})=>{e===this.recipeId&&this.inBasket&&(this.guests=t,this.updateGuestDisplay(),this.recipePricing&&this.recipePricing.fetchPrice(this.posId,this.guests,this.recipeId))})}disconnectedCallback(){var e,i;super.disconnectedCallback(),this.subscriptions.forEach(s=>s.unsubscribe()),(e=this.priceViewportObserver)==null||e.disconnect(),(i=this.analyticsViewportObserver)==null||i.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.priceViewportObserver=new m(this,()=>{this.handleIntersection()}),this.analyticsViewportObserver=new m(this,()=>{this.sendAnalyticsShow()},{threshold:.8,debounce:1e3})}handleIntersection(){this.recipePricing=this.querySelector("mealz-recipe-pricing"),this.recipePricing&&(this.recipePricing.fetchPrice(this.posId,this.guests,this.recipeId),this.priceViewportObserver.disconnect())}getInitialStatus(){var h;const t=(h=this.attributes["starting-data"])==null?void 0:h.value;if(!t){this.inBasket=!1;return}const{id:e,guests:i,posId:s,path:r,categoryId:c,initialTabIndex:a,planner:p,sessionId:S,recipe:f,inBasket:I}=JSON.parse(t);if(this.posId=s,this.recipeId=e,this.analyticsPath=r,this.categoryId=c,this.guests=i,this.initialTabIndex=a,this.planner=p,this.recipe=f,this.inBasket=I||!1,y(S),!i){this.guests=this.getGuests();const u=this.querySelector(".mealz-recipe-card__counter p");u&&(u.innerHTML=this.guests.toString())}this.removeAttribute("starting-data")}openDetails(){n.recipes.openDetails(this.recipeId,this.guests,this.initialTabIndex,this.analyticsPath,this.planner,this.categoryId)}recipeCardCtaClick(){this.planner?this.handleCTAClickForPlanner():this.openDetails()}getGuests(){const t=localStorage.getItem("_miam/preferences/guests");if(t){const e=+t;if(!isNaN(e)&&e>0&&e<=30)return e}return 4}handleCTAClickForPlanner(){const t=this.querySelector("mealz-recipe-card-cta");if(!t)return;const e=t.getStatus();e==="add"?(this.showAddingToMenuState(t),this.addRecipeToMenu()):e==="in-menu"&&(this.showRemovingFromMenuState(t),this.removeRecipeFromMenu())}addRecipeToMenu(){var s,r;const t=document.querySelector("mealz-planner-recipe-suggestion"),e=(t==null?void 0:t.guests)||this.guests;t.recipeId=this.recipeId;const i=document.querySelector("mealz-planner-current-menu");if(!i){const c=(r=(s=n.recipes)==null?void 0:s.productsPlannerByCategory$)==null?void 0:r.value,a=(c==null?void 0:c.toPickProducts)||[];n.planner.addRecipeToMenu(this.recipeId,e,!!n.pos.currentPos().value,a).pipe(l(1)).subscribe(()=>{this.removeRecipeCardLoader("add");const p=document.querySelector("mealz-planner-recipe-list");p==null||p.addRecipeCardToList(this.recipeId)});return}i.addRecipe(this.recipeId,e).subscribe(()=>{this.removeRecipeCardLoader("add"),t.addAndSelectNewSuggestion(this.recipe)})}removeRecipeFromMenu(){const t=document.querySelector("mealz-planner-recipe-suggestion");if(!t){n.planner.removeRecipeFromMenu(this.recipeId).pipe(l(1)).subscribe(()=>this.removeRecipeCardLoader("remove"));return}t.removeRecipe(this.recipeId).subscribe(()=>this.removeRecipeCardLoader("remove"))}showRemovingFromMenuState(t){const e=this.querySelector(".mealz-recipe-card-cta__loader"),i=t.querySelector("img.in-menu");e==null||e.classList.remove("hidden"),i==null||i.classList.add("hidden")}removeRecipeCardLoader(t){const e=this.querySelector("mealz-recipe-card-cta");if(!e)return;const i=this.querySelector(".mealz-recipe-card-cta"),s=this.querySelector(".mealz-recipe-card-cta__loader"),r=e.querySelector("img.add"),c=e.querySelector("img.in-menu");t==="add"?(s==null||s.classList.add("hidden"),i==null||i.classList.replace("primary","secondary"),c==null||c.classList.remove("hidden"),e.updateStatus("in-menu")):(s==null||s.classList.add("hidden"),i==null||i.classList.replace("secondary","primary"),r==null||r.classList.remove("hidden"),e.updateStatus("add"))}showAddingToMenuState(t){const e=this.querySelector(".mealz-recipe-card-cta__loader"),i=t.querySelector("img.add"),s=t.querySelector("img.in-menu");e==null||e.classList.remove("hidden"),i==null||i.classList.add("hidden"),s==null||s.classList.add("hidden")}updateDOM(){if(this.recipeId!==this.updatedRecipeId)return;const t=this.querySelector(".mealz-recipe-card__counter p");t&&(t.innerHTML=this.guests.toString(),this.updatedRecipeId&&this.guests&&this.recipePricing&&this.recipePricing.fetchPrice(this.posId,this.guests,this.recipeId))}updateGuestDisplay(){const t=this.querySelector(".mealz-recipe-card__counter p");t&&this.guests&&(t.innerHTML=this.guests.toString())}sendAnalyticsShow(){o.getInstance().trackRecipeShow(this.recipeId,this.analyticsPath,this.categoryId)}};g=R([v("mealz-recipe-card")],g);
1
+ import{N as w}from"../assets/no-shadow-element-DlGA0h9b.js";import{V as m}from"../assets/viewport-listener-BuonFDBs.js";import{t as v}from"../assets/custom-element-BhZVzxrc.js";import{h as y}from"../assets/session-handler-BiuedJFx.js";import{w as b,m as n}from"../assets/mealz-sdk-DWLzEfKz.js";import{f as p}from"../assets/filter-DuHsB8oM.js";import{s as L}from"../assets/switchMap-vA0vSKy4.js";import{c as C}from"../assets/combineLatest-DNi66MsF.js";import{t as d}from"../assets/take-BmqRVy-3.js";import"../assets/debounceTime-CIA2MWDj.js";import"../assets/async-H-Co76Oa.js";import"../assets/OperatorSubscriber-z_a6lCKk.js";import"../assets/innerFrom-CVMPVEmB.js";import"../assets/from-Btz8AgkO.js";import"../assets/executeSchedule-CTqB8mra.js";import"../assets/mapOneOrManyArgs-Do0PsDok.js";import"../assets/map-oxUcVNGT.js";import"../assets/empty-DGYYDWIm.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(e,i,s){const r=Date.now(),a=!this.trackedRecipes.get(e),l=this.hasScrolled;!a&&!l||(this.trackedRecipes.size>=this.MAX_RECIPES&&this.cleanOldRecipes(),this.trackedRecipes.set(e,r),window.mealzInternal.analytics.sendEvent("recipe.show",i,{recipe_id:e,category_id:s}))}cleanOldRecipes(){const i=Date.now()-3600*1e3;for(const[s,r]of this.trackedRecipes.entries())r<i&&this.trackedRecipes.delete(s)}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 e;this.scrollListener=()=>{this.hasScrolled=!0,clearTimeout(e),e=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 P=Object.getOwnPropertyDescriptor,R=(t,e,i,s)=>{for(var r=s>1?void 0:s?P(e,i):e,c=t.length-1,a;c>=0;c--)(a=t[c])&&(r=a(r)||r);return r};let g=class extends w{constructor(){super(...arguments),this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),this.listenInView(),b().then(()=>{this.setupSubscriptions()}).catch(t=>{console.warn("Failed to initialize SDK subscriptions:",t)})}setupSubscriptions(){this.subscriptions.push(n.basket.recipePricesInBasket$().subscribe(t=>{const e=t.find(i=>i.id===this.recipeId);e?(this.inBasket=!0,this.updatedRecipeId=e.id,this.updateDOM()):this.inBasket=!1}),this.setupPlannerMenuSubscription(),this.setupGuestUpdatesSubscription())}setupPlannerMenuSubscription(){return n.planner.menuPrice$.pipe(p(()=>this.planner&&!!this.recipeId),L(()=>C([n.planner.isRecipeInMenu$(this.recipeId).pipe(d(1))])),p(([t,e])=>t&&typeof e=="number"&&e>0)).subscribe(([t,e])=>{this.guests=e,this.updateGuestDisplay()})}setupGuestUpdatesSubscription(){return n.recipes.guestsUpdated().pipe(p(()=>!!this.recipeId)).subscribe(({guests:t,recipeId:e})=>{e===this.recipeId&&this.inBasket&&(this.guests=t,this.updateGuestDisplay(),this.recipePricing&&this.recipePricing.fetchPrice(this.posId,this.guests,this.recipeId))})}disconnectedCallback(){var e,i;super.disconnectedCallback(),this.subscriptions.forEach(s=>s.unsubscribe()),(e=this.priceViewportObserver)==null||e.disconnect(),(i=this.analyticsViewportObserver)==null||i.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.priceViewportObserver=new m(this,()=>{this.handleIntersection()}),this.analyticsViewportObserver=new m(this,()=>{this.sendAnalyticsShow()},{threshold:.8,debounce:1e3})}handleIntersection(){this.recipePricing=this.querySelector("mealz-recipe-pricing"),this.recipePricing&&(this.recipePricing.fetchPrice(this.posId,this.guests,this.recipeId),this.priceViewportObserver.disconnect())}getInitialStatus(){var h;const t=(h=this.attributes["starting-data"])==null?void 0:h.value;if(!t){this.inBasket=!1;return}const{id:e,guests:i,posId:s,path:r,categoryId:c,initialTabIndex:a,planner:l,sessionId:S,recipe:f,inBasket:I}=JSON.parse(t);if(this.posId=s,this.recipeId=e,this.analyticsPath=r,this.categoryId=c,this.guests=i,this.initialTabIndex=a,this.planner=l,this.recipe=f,this.inBasket=I||!1,y(S),!i){this.guests=this.getGuests();const u=this.querySelector(".mealz-recipe-card__counter p");u&&(u.innerHTML=this.guests.toString())}this.removeAttribute("starting-data")}openDetails(){n.recipes.openDetails(this.recipeId,this.guests,this.initialTabIndex,this.analyticsPath,this.planner,this.categoryId)}recipeCardCtaClick(){this.planner?this.handleCTAClickForPlanner():this.openDetails()}getGuests(){const t=localStorage.getItem("_miam/preferences/guests");if(t){const e=+t;if(!isNaN(e)&&e>0&&e<=30)return e}return 4}handleCTAClickForPlanner(){const t=this.querySelector("mealz-recipe-card-cta");if(!t)return;const e=t.getStatus();e==="add"?(this.showAddingToMenuState(t),this.addRecipeToMenu()):e==="in-menu"&&(this.showRemovingFromMenuState(t),this.removeRecipeFromMenu())}addRecipeToMenu(){var s,r;const t=document.querySelector("mealz-planner-recipe-suggestion"),e=(t==null?void 0:t.guests)||this.guests;t.recipeId=this.recipeId;const i=document.querySelector("mealz-planner-current-menu");if(!i){const c=(r=(s=n.recipes)==null?void 0:s.productsPlannerByCategory$)==null?void 0:r.value,a=(c==null?void 0:c.toPickProducts)||[];n.planner.addRecipeToMenu(this.recipeId,e,!!n.pos.currentPos().value,a).pipe(d(1)).subscribe(()=>{this.removeRecipeCardLoader("add");const l=document.querySelector("mealz-planner-recipe-list");l==null||l.addRecipeCardToList(this.recipeId)});return}i.addRecipe(this.recipeId,e).subscribe(()=>{this.removeRecipeCardLoader("add"),t.addAndSelectNewSuggestion(this.recipe)})}removeRecipeFromMenu(){const t=document.querySelector("mealz-planner-recipe-suggestion");if(!t){n.planner.removeRecipeFromMenu(this.recipeId).pipe(d(1)).subscribe(()=>this.removeRecipeCardLoader("remove"));return}t.removeRecipe(this.recipeId).subscribe(()=>this.removeRecipeCardLoader("remove"))}showRemovingFromMenuState(t){const e=this.querySelector(".mealz-recipe-card-cta__loader"),i=t.querySelector("img.in-menu");e==null||e.classList.remove("hidden"),i==null||i.classList.add("hidden")}removeRecipeCardLoader(t){const e=this.querySelector("mealz-recipe-card-cta");if(!e)return;const i=this.querySelector(".mealz-recipe-card-cta"),s=this.querySelector(".mealz-recipe-card-cta__loader"),r=e.querySelector("img.add"),c=e.querySelector("img.in-menu");t==="add"?(s==null||s.classList.add("hidden"),i==null||i.classList.replace("primary","secondary"),c==null||c.classList.remove("hidden"),e.updateStatus("in-menu")):(s==null||s.classList.add("hidden"),i==null||i.classList.replace("secondary","primary"),r==null||r.classList.remove("hidden"),e.updateStatus("add"))}showAddingToMenuState(t){const e=this.querySelector(".mealz-recipe-card-cta__loader"),i=t.querySelector("img.add"),s=t.querySelector("img.in-menu");e==null||e.classList.remove("hidden"),i==null||i.classList.add("hidden"),s==null||s.classList.add("hidden")}updateDOM(){if(this.recipeId!==this.updatedRecipeId)return;const t=this.querySelector(".mealz-recipe-card__counter p");t&&(t.innerHTML=this.guests.toString(),this.updatedRecipeId&&this.guests&&this.recipePricing&&this.recipePricing.fetchPrice(this.posId,this.guests,this.recipeId))}updateGuestDisplay(){const t=this.querySelector(".mealz-recipe-card__counter p");t&&this.guests&&(t.innerHTML=this.guests.toString())}sendAnalyticsShow(){o.getInstance().trackRecipeShow(this.recipeId,this.analyticsPath,this.categoryId)}};g=R([v("mealz-recipe-card")],g);
@@ -1 +1 @@
1
- import{O as D,N as z,B as A}from"../assets/no-shadow-element-DlGA0h9b.js";import{t as C}from"../assets/custom-element-BhZVzxrc.js";import{w as _,m as c}from"../assets/mealz-sdk-DWLzEfKz.js";import{f as P}from"../assets/filter-DuHsB8oM.js";import{a as w,b as k,c as F}from"../assets/combineLatest-DNi66MsF.js";import{s as O}from"../assets/skipWhile-BAgfjfH2.js";import{s as g}from"../assets/switchMap-vA0vSKy4.js";import{i as L}from"../assets/innerFrom-CVMPVEmB.js";import{b as E}from"../assets/from-Btz8AgkO.js";import{c as R}from"../assets/OperatorSubscriber-z_a6lCKk.js";import{m as $}from"../assets/mapOneOrManyArgs-Do0PsDok.js";import{o as f}from"../assets/of-CH-D5SN9.js";import{t as y}from"../assets/take-BmqRVy-3.js";import{t as B}from"../assets/tap-C4xC1M3N.js";import"../assets/executeSchedule-CTqB8mra.js";import"../assets/map-oxUcVNGT.js";import"../assets/empty-DGYYDWIm.js";function V(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var r=E(e),t=w(e),s=t.args,a=t.keys,l=new D(function(h){var o=s.length;if(!o){h.complete();return}for(var n=new Array(o),u=o,b=o,I=function(v){var m=!1;L(s[v]).subscribe(R(h,function(M){m||(m=!0,b--),n[v]=M},function(){return u--},void 0,function(){(!u||!m)&&(b||h.next(a?k(a,n):n),h.complete())}))},d=0;d<o;d++)I(d)});return r?l.pipe($(r)):l}class p{constructor(){this.priceMemorized=new Map,this.displayedPrices=new Set,this.cleanupInterval=null,this.MAX_MEMO_SIZE=500,this.CLEANUP_INTERVAL=600*1e3,this.handlePageUnload=()=>{this.destroy()},this.startAutoCleanup(),this.setupPageUnloadListener()}static getInstance(){return p.instance||(p.instance=new p),p.instance}getMemorizedPrice(i,r){const t=`${i}-${r}`;return this.priceMemorized.get(t)}memorizedPrice(i,r,t){const s=`${i}-${r}`;this.priceMemorized.size>=this.MAX_MEMO_SIZE&&this.cleanOldPrices(),this.priceMemorized.set(s,{price:t,guests:r})}isPriceDisplayed(i,r){const t=`${i}-${r}`;return this.displayedPrices.has(t)}markPriceAsDisplayed(i,r){const t=`${i}-${r}`;this.displayedPrices.add(t)}cleanOldPrices(){this.priceMemorized.size>this.MAX_MEMO_SIZE*.8&&Array.from(this.priceMemorized.entries()).slice(0,Math.floor(this.priceMemorized.size*.3)).forEach(([t])=>{this.priceMemorized.delete(t),this.displayedPrices.delete(t)})}clearAllPrices(){this.priceMemorized.clear(),this.displayedPrices.clear()}destroy(){window.removeEventListener("beforeunload",this.handlePageUnload),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null),this.priceMemorized.clear(),this.displayedPrices.clear(),p.instance=null}startAutoCleanup(){this.cleanupInterval=window.setInterval(()=>{this.cleanOldPrices()},this.CLEANUP_INTERVAL)}setupPageUnloadListener(){window.addEventListener("beforeunload",this.handlePageUnload)}}var N=Object.getOwnPropertyDescriptor,U=(e,i,r,t)=>{for(var s=t>1?void 0:t?N(i,r):i,a=e.length-1,l;a>=0;a--)(l=e[a])&&(s=l(s)||s);return s};let S=class extends z{constructor(){super(...arguments),this.formattedPrice="",this.rendered=new A(!1),this.inBasket=!1,this.planner=!1,this.lastPlannerPrice=0,this.plannerPriceSubscription=null,this.lastAppliedPrice="",this.priceDisplayed=!1,this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.classList.add("re-rendering"),this.getInitialStatus(),_().then(()=>{this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)}),requestAnimationFrame(()=>{this.classList.remove("re-rendering")})}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.plannerPriceSubscription&&(this.plannerPriceSubscription.unsubscribe(),this.plannerPriceSubscription=null)}setupSubscriptions(){this.subscriptions.push(c.recipes.guestsUpdated().subscribe(e=>{e.recipeId===this.recipeId&&(this.serves=e.guests,this.recalculatePrice())}),this.listenToBasket(),this.setupDisplayedRecipeSubscription(),this.setupGuestUpdatesSubscription(),this.setupMenuPriceSubscription())}setupDisplayedRecipeSubscription(){return c.recipes.displayedRecipe$.pipe(P(()=>this.planner&&!!this.recipeId)).subscribe(e=>{var i;((i=e==null?void 0:e.recipe)==null?void 0:i.id)===this.recipeId?(this.lastDisplayedRecipeId=this.recipeId,this.trackPlannerRecipePrice(),this.updateGuestCountFromMenu()):!(e!=null&&e.recipe)&&this.lastDisplayedRecipeId===this.recipeId&&(this.updatePriceFromCapturedPlannerPrice(),this.lastDisplayedRecipeId=null,this.plannerPriceSubscription&&(this.plannerPriceSubscription.unsubscribe(),this.plannerPriceSubscription=null))})}setupGuestUpdatesSubscription(){return c.recipes.guestsUpdated().pipe(P(()=>!!this.recipeId)).subscribe(({guests:e,recipeId:i})=>{i===this.recipeId&&(this.serves=e,this.recalculatePrice())})}setupMenuPriceSubscription(){return c.planner.menuPrice$.pipe(P(()=>this.planner&&!!this.recipeId)).subscribe(e=>{if(this.updateGuestCountFromMenu(),this.lastPlannerPrice>0&&this.serves>0){const i=this.lastPlannerPrice/this.serves;this.applyCurrencyDisplay(i.toFixed(2))}})}fetchPrice(e,i,r){var h,o;const t=(h=this.recipePricing)==null?void 0:h.querySelector(".mealz-recipe-pricing__wrapper"),s=(o=this.attributes["starting-data"])==null?void 0:o.value;if(!s){if(this.priceDisplayed)return;t==null||t.classList.replace("active","hidden"),this.priceDisplayed=!1;return}if(s){const n=JSON.parse(s);if(this.removeAttribute("starting-data"),n.pricePerServe!==null||n.inBasket){t==null||t.classList.replace("hidden","active"),this.applyCurrencyDisplay(n.pricePerServe),this.inBasket=n.inBasket;return}}const a=p.getInstance(),l=a.getMemorizedPrice(r,i);if(l){requestAnimationFrame(()=>{this.applyCurrencyDisplay(l.price),a.markPriceAsDisplayed(r,i)});return}t==null||t.classList.replace("active","hidden"),this.subscriptions.push(c.recipes.fetchPricing(r,e,i).subscribe(n=>{if(n!=null&&n.price_per_serve){const u=p.getInstance();u.memorizedPrice(r,i,n.price_per_serve),requestAnimationFrame(()=>{t==null||t.classList.replace("hidden","active"),this.applyCurrencyDisplay(n.price_per_serve),u.markPriceAsDisplayed(r,i)})}}))}render(){this.recipePricing=this.querySelector(".mealz-recipe-pricing"),this.recipePricing&&(this.recipeId&&this.pricePerServe&&p.getInstance().isPriceDisplayed(this.recipeId,this.serves)&&requestAnimationFrame(()=>{this.applyCurrencyDisplay(this.pricePerServe)}),this.rendered.next(!0),this.getInitialStatus())}getInitialStatus(){var a;const e=(a=this.attributes["starting-data"])==null?void 0:a.value;if(!e)return;const{recipeId:i,pricePerServe:r,serves:t,planner:s}=JSON.parse(e);this.recipeId=i,this.pricePerServe=(r==null?void 0:r.toString())??null,this.serves=t,this.planner=s||!1,this.applyCurrencyDisplay(this.pricePerServe)}applyCurrencyDisplay(e){if(this.lastAppliedPrice===e)return;const i=parseFloat(e);isNaN(i)||(this.lastAppliedPrice=e,this.formattedPrice=i.toLocaleString("fr-FR",{minimumFractionDigits:2,maximumFractionDigits:2}),this.updateDOM())}showPrice(){var r,t;if(this.priceDisplayed)return;const e=(r=this.recipePricing)==null?void 0:r.querySelector(".mealz-recipe-pricing__loading"),i=(t=this.recipePricing)==null?void 0:t.querySelector(".mealz-recipe-pricing__wrapper");e==null||e.classList.replace("active","hidden"),i==null||i.classList.replace("hidden","active"),this.priceDisplayed=!0}updateDOM(){var i;const e=(i=this.recipePricing)==null?void 0:i.querySelector(".mealz-recipe-pricing__wrapper__price");e&&(e.innerHTML=this.formattedPrice+" €",this.showPrice())}listenToBasket(){return F([this.rendered,c.basket.recipePricesInBasket$()]).pipe(O(([e,i])=>!e||!i),g(([,e])=>V([f(e),c.pos.currentPos().pipe(y(1))])),g(([e,i])=>(this.recipePricingValue=e.find(r=>r.id===this.recipeId),this.recipePricingValue?(this.inBasket=!0,this.applyCurrencyDisplay((+this.recipePricingValue.price/this.serves).toString()),f(null)):i&&this.inBasket?c.recipes.fetchPricing(this.recipeId,i.id,this.serves).pipe(B(r=>{r!=null&&r.price_per_serve&&(this.applyCurrencyDisplay(r.price_per_serve),this.inBasket=!1)})):(this.formattedPrice=this.pricePerServe,f(null))))).subscribe(()=>{this.priceDisplayed||(this.showPrice(),this.priceDisplayed=!0)})}recalculatePrice(){if(this.recipePricingValue){const e=(parseFloat(this.recipePricingValue.price)/this.recipePricingValue.guests).toString();requestAnimationFrame(()=>{this.applyCurrencyDisplay(e);const i=p.getInstance();i.memorizedPrice(this.recipeId,this.recipePricingValue.guests,e),i.markPriceAsDisplayed(this.recipeId,this.recipePricingValue.guests)})}}trackPlannerRecipePrice(){this.plannerPriceSubscription&&(this.plannerPriceSubscription.unsubscribe(),this.plannerPriceSubscription=null),this.plannerPriceSubscription=c.planner.plannerRecipePrice$.subscribe(e=>{e>0&&(this.lastPlannerPrice=e)})}updateGuestCountFromMenu(){!this.planner||!this.recipeId||c.planner.getGuestsForRecipe(this.recipeId).pipe(y(1)).subscribe(e=>{e&&e>0&&(this.serves=e)})}updatePriceFromCapturedPlannerPrice(){!this.planner||!this.recipeId||c.planner.isRecipeInMenu$(this.recipeId).pipe(y(1)).subscribe(e=>{if(e&&this.lastPlannerPrice>0){if(this.serves>0){const i=this.lastPlannerPrice/this.serves;this.applyCurrencyDisplay(i.toFixed(2))}}else this.pricePerServe&&this.applyCurrencyDisplay(this.pricePerServe)})}};S=U([C("mealz-recipe-pricing")],S);
1
+ import{O as M,N as z,B as A}from"../assets/no-shadow-element-DlGA0h9b.js";import{t as _}from"../assets/custom-element-BhZVzxrc.js";import{w as C,m as c}from"../assets/mealz-sdk-DWLzEfKz.js";import{f as P}from"../assets/filter-DuHsB8oM.js";import{a as w,b as k,c as O}from"../assets/combineLatest-DNi66MsF.js";import{s as F}from"../assets/skipWhile-BAgfjfH2.js";import{s as g}from"../assets/switchMap-vA0vSKy4.js";import{i as L}from"../assets/innerFrom-CVMPVEmB.js";import{b as E}from"../assets/from-Btz8AgkO.js";import{c as R}from"../assets/OperatorSubscriber-z_a6lCKk.js";import{m as $}from"../assets/mapOneOrManyArgs-Do0PsDok.js";import{o as f}from"../assets/of-CH-D5SN9.js";import{t as y}from"../assets/take-BmqRVy-3.js";import{t as B}from"../assets/tap-C4xC1M3N.js";import"../assets/executeSchedule-CTqB8mra.js";import"../assets/map-oxUcVNGT.js";import"../assets/empty-DGYYDWIm.js";function V(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var r=E(e),s=w(e),t=s.args,a=s.keys,l=new M(function(h){var o=t.length;if(!o){h.complete();return}for(var n=new Array(o),u=o,b=o,I=function(v){var m=!1;L(t[v]).subscribe(R(h,function(D){m||(m=!0,b--),n[v]=D},function(){return u--},void 0,function(){(!u||!m)&&(b||h.next(a?k(a,n):n),h.complete())}))},d=0;d<o;d++)I(d)});return r?l.pipe($(r)):l}class p{constructor(){this.priceMemorized=new Map,this.displayedPrices=new Set,this.cleanupInterval=null,this.MAX_MEMO_SIZE=500,this.CLEANUP_INTERVAL=600*1e3,this.handlePageUnload=()=>{this.destroy()},this.startAutoCleanup(),this.setupPageUnloadListener()}static getInstance(){return p.instance||(p.instance=new p),p.instance}getMemorizedPrice(i,r){const s=`${i}-${r}`;return this.priceMemorized.get(s)}memorizedPrice(i,r,s){const t=`${i}-${r}`;this.priceMemorized.size>=this.MAX_MEMO_SIZE&&this.cleanOldPrices(),this.priceMemorized.set(t,{price:s,guests:r})}isPriceDisplayed(i,r){const s=`${i}-${r}`;return this.displayedPrices.has(s)}markPriceAsDisplayed(i,r){const s=`${i}-${r}`;this.displayedPrices.add(s)}cleanOldPrices(){this.priceMemorized.size>this.MAX_MEMO_SIZE*.8&&Array.from(this.priceMemorized.entries()).slice(0,Math.floor(this.priceMemorized.size*.3)).forEach(([s])=>{this.priceMemorized.delete(s),this.displayedPrices.delete(s)})}clearAllPrices(){this.priceMemorized.clear(),this.displayedPrices.clear()}destroy(){window.removeEventListener("beforeunload",this.handlePageUnload),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null),this.priceMemorized.clear(),this.displayedPrices.clear(),p.instance=null}startAutoCleanup(){this.cleanupInterval=window.setInterval(()=>{this.cleanOldPrices()},this.CLEANUP_INTERVAL)}setupPageUnloadListener(){window.addEventListener("beforeunload",this.handlePageUnload)}}var N=Object.getOwnPropertyDescriptor,U=(e,i,r,s)=>{for(var t=s>1?void 0:s?N(i,r):i,a=e.length-1,l;a>=0;a--)(l=e[a])&&(t=l(t)||t);return t};let S=class extends z{constructor(){super(...arguments),this.formattedPrice="",this.rendered=new A(!1),this.inBasket=!1,this.planner=!1,this.lastPlannerPrice=0,this.plannerPriceSubscription=null,this.lastAppliedPrice="",this.priceDisplayed=!1,this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.classList.add("re-rendering"),this.getInitialStatus(),C().then(()=>{this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)}),requestAnimationFrame(()=>{this.classList.remove("re-rendering")})}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.plannerPriceSubscription&&(this.plannerPriceSubscription.unsubscribe(),this.plannerPriceSubscription=null)}setupSubscriptions(){this.subscriptions.push(c.recipes.guestsUpdated().subscribe(e=>{e.recipeId===this.recipeId&&(this.serves=e.guests,this.recalculatePrice())}),this.listenToBasket(),this.setupDisplayedRecipeSubscription(),this.setupGuestUpdatesSubscription(),this.setupMenuPriceSubscription())}setupDisplayedRecipeSubscription(){return c.recipes.displayedRecipe$.pipe(P(()=>this.planner&&!!this.recipeId)).subscribe(e=>{var i;((i=e==null?void 0:e.recipe)==null?void 0:i.id)===this.recipeId?(this.lastDisplayedRecipeId=this.recipeId,this.trackPlannerRecipePrice(),this.updateGuestCountFromMenu()):!(e!=null&&e.recipe)&&this.lastDisplayedRecipeId===this.recipeId&&(this.updatePriceFromCapturedPlannerPrice(),this.lastDisplayedRecipeId=null,this.plannerPriceSubscription&&(this.plannerPriceSubscription.unsubscribe(),this.plannerPriceSubscription=null))})}setupGuestUpdatesSubscription(){return c.recipes.guestsUpdated().pipe(P(()=>!!this.recipeId)).subscribe(({guests:e,recipeId:i})=>{i===this.recipeId&&(this.serves=e,this.recalculatePrice())})}setupMenuPriceSubscription(){return c.planner.menuPrice$.pipe(P(()=>this.planner&&!!this.recipeId)).subscribe(e=>{if(this.lastPlannerPrice>0&&this.serves>0){const i=this.lastPlannerPrice/this.serves;this.applyCurrencyDisplay(i.toFixed(2))}})}fetchPrice(e,i,r){var h,o;const s=(h=this.recipePricing)==null?void 0:h.querySelector(".mealz-recipe-pricing__wrapper"),t=(o=this.attributes["starting-data"])==null?void 0:o.value;if(!t){if(this.priceDisplayed)return;s==null||s.classList.replace("active","hidden"),this.priceDisplayed=!1;return}if(t){const n=JSON.parse(t);if(this.removeAttribute("starting-data"),n.pricePerServe!==null||n.inBasket){s==null||s.classList.replace("hidden","active"),this.applyCurrencyDisplay(n.pricePerServe),this.inBasket=n.inBasket;return}}const a=p.getInstance(),l=a.getMemorizedPrice(r,i);if(l){requestAnimationFrame(()=>{this.applyCurrencyDisplay(l.price),a.markPriceAsDisplayed(r,i)});return}s==null||s.classList.replace("active","hidden"),this.subscriptions.push(c.recipes.fetchPricing(r,e,i).subscribe(n=>{if(n!=null&&n.price_per_serve){const u=p.getInstance();u.memorizedPrice(r,i,n.price_per_serve),requestAnimationFrame(()=>{s==null||s.classList.replace("hidden","active"),this.applyCurrencyDisplay(n.price_per_serve),u.markPriceAsDisplayed(r,i)})}}))}render(){this.recipePricing=this.querySelector(".mealz-recipe-pricing"),this.recipePricing&&(this.recipeId&&this.pricePerServe&&p.getInstance().isPriceDisplayed(this.recipeId,this.serves)&&requestAnimationFrame(()=>{this.applyCurrencyDisplay(this.pricePerServe)}),this.rendered.next(!0),this.getInitialStatus())}getInitialStatus(){var a;const e=(a=this.attributes["starting-data"])==null?void 0:a.value;if(!e)return;const{recipeId:i,pricePerServe:r,serves:s,planner:t}=JSON.parse(e);this.recipeId=i,this.pricePerServe=(r==null?void 0:r.toString())??null,this.serves=s,this.planner=t||!1,this.applyCurrencyDisplay(this.pricePerServe)}applyCurrencyDisplay(e){if(this.lastAppliedPrice===e)return;const i=parseFloat(e);isNaN(i)||(this.lastAppliedPrice=e,this.formattedPrice=i.toLocaleString("fr-FR",{minimumFractionDigits:2,maximumFractionDigits:2}),this.updateDOM())}showPrice(){var r,s;if(this.priceDisplayed)return;const e=(r=this.recipePricing)==null?void 0:r.querySelector(".mealz-recipe-pricing__loading"),i=(s=this.recipePricing)==null?void 0:s.querySelector(".mealz-recipe-pricing__wrapper");e==null||e.classList.replace("active","hidden"),i==null||i.classList.replace("hidden","active"),this.priceDisplayed=!0}updateDOM(){var i;const e=(i=this.recipePricing)==null?void 0:i.querySelector(".mealz-recipe-pricing__wrapper__price");e&&(e.innerHTML=this.formattedPrice+" €",this.showPrice())}listenToBasket(){return O([this.rendered,c.basket.recipePricesInBasket$()]).pipe(F(([e,i])=>!e||!i),g(([,e])=>V([f(e),c.pos.currentPos().pipe(y(1))])),g(([e,i])=>(this.recipePricingValue=e.find(r=>r.id===this.recipeId),this.recipePricingValue?(this.inBasket=!0,this.applyCurrencyDisplay((+this.recipePricingValue.price/this.serves).toString()),f(null)):i&&this.inBasket?c.recipes.fetchPricing(this.recipeId,i.id,this.serves).pipe(B(r=>{r!=null&&r.price_per_serve&&(this.applyCurrencyDisplay(r.price_per_serve),this.inBasket=!1)})):(this.formattedPrice=this.pricePerServe,f(null))))).subscribe(()=>{this.priceDisplayed||(this.showPrice(),this.priceDisplayed=!0)})}recalculatePrice(){if(this.recipePricingValue){const e=(parseFloat(this.recipePricingValue.price)/this.recipePricingValue.guests).toString();requestAnimationFrame(()=>{this.applyCurrencyDisplay(e);const i=p.getInstance();i.memorizedPrice(this.recipeId,this.recipePricingValue.guests,e),i.markPriceAsDisplayed(this.recipeId,this.recipePricingValue.guests)})}}trackPlannerRecipePrice(){this.plannerPriceSubscription&&(this.plannerPriceSubscription.unsubscribe(),this.plannerPriceSubscription=null),this.plannerPriceSubscription=c.planner.plannerRecipePrice$.subscribe(e=>{e>0&&(this.lastPlannerPrice=e)})}updateGuestCountFromMenu(){!this.planner||!this.recipeId||c.planner.getGuestsForRecipe(this.recipeId).pipe(y(1)).subscribe(e=>{e&&e>0&&(this.serves=e)})}updatePriceFromCapturedPlannerPrice(){!this.planner||!this.recipeId||c.planner.isRecipeInMenu$(this.recipeId).pipe(y(1)).subscribe(e=>{if(e&&this.lastPlannerPrice>0){if(this.serves>0){const i=this.lastPlannerPrice/this.serves;this.applyCurrencyDisplay(i.toFixed(2))}}else this.pricePerServe&&this.applyCurrencyDisplay(this.pricePerServe)})}};S=U([_("mealz-recipe-pricing")],S);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mealz-components",
3
3
  "type": "module",
4
- "version": "2.0.0",
4
+ "version": "2.0.2",
5
5
  "main": "./dist/mealz-components.js",
6
6
  "module": "./dist/mealz-components.js",
7
7
  "scripts": {