mealz-components 2.2.0 → 2.3.0

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.
Files changed (113) hide show
  1. package/dist/accordion/accordion.css +1 -1
  2. package/dist/assets/{OperatorSubscriber-B37s2U6v.js → OperatorSubscriber-DF1TYu__.js} +1 -1
  3. package/dist/assets/accordion-la5mVBfL.js +19 -0
  4. package/dist/assets/{async-guWcMFmJ.js → async-D5WN8Wfc.js} +1 -1
  5. package/dist/assets/{combineLatest-qLpwa5de.js → combineLatest-BN0_WcEG.js} +1 -1
  6. package/dist/assets/{debounceTime-cu8WlLF0.js → debounceTime-D7R6Z3Am.js} +1 -1
  7. package/dist/assets/delay-wUm-cx7a.js +1 -0
  8. package/dist/assets/{distinctUntilChanged-DmoT2we5.js → distinctUntilChanged-VvZTmHoN.js} +1 -1
  9. package/dist/assets/empty-Bs9kqCuA.js +1 -0
  10. package/dist/assets/{executeSchedule-Dqc6shOu.js → executeSchedule-C0acKsif.js} +1 -1
  11. package/dist/assets/{filter-BjN-BbQD.js → filter-DQ4vwAGj.js} +1 -1
  12. package/dist/assets/{from-CEPL7XsE.js → from-BTlWkhKh.js} +1 -1
  13. package/dist/assets/{innerFrom-D8hyVDmo.js → innerFrom-FMZwm2mb.js} +1 -1
  14. package/dist/assets/{map-D6X2syNu.js → map-DHslluWD.js} +1 -1
  15. package/dist/assets/mapOneOrManyArgs-Bdu6mo6S.js +1 -0
  16. package/dist/assets/merge-tdU3EgEI.js +1 -0
  17. package/dist/assets/mergeAll-DTkL1sF8.js +1 -0
  18. package/dist/assets/{mergeMap-CX64J-ac.js → mergeMap-g-JGW99j.js} +1 -1
  19. package/dist/assets/{no-shadow-element-D4NOg0uW.js → no-shadow-element-Dz9jgDtr.js} +7 -7
  20. package/dist/assets/{of-CzgrATec.js → of-hd4MpK5g.js} +1 -1
  21. package/dist/assets/{price-DdIbni0N.js → price-CHipCs2z.js} +1 -1
  22. package/dist/assets/{product-card-CcuyZyd6.js → product-card-c_0I2Lp_.js} +14 -14
  23. package/dist/assets/{promotion-badge-TYkTBrOQ.js → promotion-badge-CzwsPJJq.js} +3 -3
  24. package/dist/assets/{property-BXNy7Yd-.js → property-Bx8Yvr4_.js} +1 -1
  25. package/dist/assets/skip-BuAl4dWz.js +1 -0
  26. package/dist/assets/{skipWhile-B_4e7jSH.js → skipWhile-BzDgmir5.js} +1 -1
  27. package/dist/assets/{state-b8IyfZUU.js → state-C5zM4-Pq.js} +1 -1
  28. package/dist/assets/{switchMap-BYsewftM.js → switchMap-6Z80ObHE.js} +1 -1
  29. package/dist/assets/{take-ujVMxFwY.js → take-ByPtGQky.js} +1 -1
  30. package/dist/assets/{tap-DwBV-qFl.js → tap-K_D6lo97.js} +1 -1
  31. package/dist/assets/{timer-D3X0vtFO.js → timer-C3uKg-qK.js} +1 -1
  32. package/dist/assets/{unsafe-html-C8GMyVYZ.js → unsafe-html-Bv_ydUHb.js} +1 -1
  33. package/dist/assets/{viewport-listener-BRwa66-G.js → viewport-listener-DrFhSZNW.js} +1 -1
  34. package/dist/basket-transfer-modal/basket-transfer-modal.min.js +12 -13
  35. package/dist/catalog/basket-preview/basket-preview-product/basket-preview-product.css +1 -1
  36. package/dist/catalog/basket-preview/basket-preview.css +1 -1
  37. package/dist/catalog/basket-preview/basket-preview.min.js +48 -43
  38. package/dist/catalog/catalog-category/catalog-category.min.js +1 -1
  39. package/dist/catalog/catalog-favorites/catalog-favorites.min.js +1 -1
  40. package/dist/catalog/catalog-history/catalog-history.min.js +1 -1
  41. package/dist/catalog/catalog-home/catalog-home.min.js +1 -1
  42. package/dist/catalog/catalog-list/catalog-list.min.js +1 -1
  43. package/dist/catalog/catalog-load-more.min.js +1 -1
  44. package/dist/catalog/catalog-tabs/catalog-tabs.min.js +1 -1
  45. package/dist/catalog/catalog-toolbar/catalog-toolbar.min.js +1 -1
  46. package/dist/catalog/my-meals-button/my-meals-button.min.js +1 -1
  47. package/dist/counter/counter.min.js +1 -1
  48. package/dist/drawer/drawer.min.js +1 -1
  49. package/dist/drawer-view-swapper/drawer-view-swapper.css +1 -1
  50. package/dist/drawer-view-swapper/drawer-view-swapper.min.js +24 -20
  51. package/dist/history-drawer/history-drawer.min.js +1 -1
  52. package/dist/history-order/history-order.min.js +1 -1
  53. package/dist/history-order-expanded/history-order-expanded.min.js +1 -1
  54. package/dist/last-order-badge/last-order-badge.min.js +2 -2
  55. package/dist/last-order-modal/last-order-modal.min.js +1 -1
  56. package/dist/like-button/like-button.min.js +1 -1
  57. package/dist/modal/modal.min.js +1 -1
  58. package/dist/no-supplier-add-to-cart-cta/no-supplier-add-to-cart-cta.css +1 -0
  59. package/dist/no-supplier-add-to-cart-cta/no-supplier-add-to-cart-cta.min.js +7 -0
  60. package/dist/onboarding/onboarding.min.js +2 -2
  61. package/dist/order-again/order-again.min.js +1 -1
  62. package/dist/planner/helpers/open-onboarding-modal.min.js +1 -1
  63. package/dist/planner/planner-abandon-modal/planner-abandon-modal.min.js +1 -1
  64. package/dist/planner/planner-budget-edit-modal/planner-budget-edit-modal.css +1 -1
  65. package/dist/planner/planner-budget-edit-modal/planner-budget-edit-modal.min.js +6 -6
  66. package/dist/planner/planner-budget-gauge/planner-budget-gauge.css +1 -1
  67. package/dist/planner/planner-budget-gauge/planner-budget-gauge.min.js +1 -1
  68. package/dist/planner/planner-catalog/planner-catalog.min.js +2 -2
  69. package/dist/planner/planner-current-menu/planner-current-menu.min.js +1 -1
  70. package/dist/planner/planner-current-menu-modal/planner-current-menu-modal.min.js +1 -1
  71. package/dist/planner/planner-dashboard/planner-dashboard.min.js +1 -1
  72. package/dist/planner/planner-form/planner-form.min.js +1 -1
  73. package/dist/planner/planner-menu-option/planner-menu-option.min.js +1 -1
  74. package/dist/planner/planner-onboarding/planner-onboarding.min.js +1 -1
  75. package/dist/planner/planner-onboarding-modal/planner-onboarding-modal.min.js +6 -6
  76. package/dist/planner/planner-open-catalog-modal/planner-open-catalog-modal.min.js +1 -1
  77. package/dist/planner/planner-recipe-card/planner-recipe-card.min.js +1 -1
  78. package/dist/planner/planner-recipe-list/planner-recipe-list.min.js +1 -1
  79. package/dist/planner/planner-recipe-suggestion/planner-recipe-suggestion.min.js +1 -1
  80. package/dist/planner/planner-welcome-modal/planner-welcome-modal.min.js +2 -2
  81. package/dist/planner/to-basket-loader/to-basket-loader.min.js +2 -2
  82. package/dist/planner-entry/planner-entry.min.js +1 -1
  83. package/dist/preferences/preferences.min.js +21 -39
  84. package/dist/price/price.min.js +1 -1
  85. package/dist/product-addition/product-addition.css +1 -1
  86. package/dist/recipe-card/recipe-card.min.js +1 -1
  87. package/dist/recipe-card-cta/recipe-card-cta.min.js +1 -1
  88. package/dist/recipe-details/recipe-details.min.js +49 -41
  89. package/dist/recipe-pricing/recipe-pricing.min.js +1 -1
  90. package/dist/replace-item/replace-item-card/replace-item-card.min.js +5 -5
  91. package/dist/replace-item/replace-item.min.js +2 -2
  92. package/dist/replace-item-planner/replace-item-card-planner/replace-item-card-planner.min.js +1 -1
  93. package/dist/replace-item-planner/replace-item-planner.min.js +1 -1
  94. package/dist/select/select.min.js +1 -1
  95. package/dist/slider-tabs/slider-tabs.min.js +2 -2
  96. package/dist/store-indicator/store-indicator.min.js +1 -1
  97. package/dist/store-locator/store-locator.css +1 -1
  98. package/dist/store-locator/store-locator.min.js +97 -0
  99. package/dist/store-locator-drawer/store-locator-drawer.min.js +4 -37
  100. package/dist/store-locator.css +290 -0
  101. package/dist/supplier-selector/supplier-selector.css +1 -0
  102. package/dist/supplier-selector/supplier-selector.min.js +53 -0
  103. package/dist/supplier-selector.css +99 -0
  104. package/package.json +1 -1
  105. package/dist/add-to-cart-cta/add-to-cart-cta.css +0 -1
  106. package/dist/add-to-cart-cta/add-to-cart-cta.min.js +0 -7
  107. package/dist/assets/delay-DX2Gy1PY.js +0 -1
  108. package/dist/assets/empty-DhPhHznc.js +0 -1
  109. package/dist/assets/mapOneOrManyArgs-UKKoFfIU.js +0 -1
  110. package/dist/assets/merge-Cw-bwf6Z.js +0 -1
  111. package/dist/assets/mergeAll-9jcORGP2.js +0 -1
  112. package/dist/assets/store-locator-CQ_XQBby.js +0 -95
  113. package/dist/no-supplier-onboarding/no-supplier-onboarding.css +0 -1
@@ -1,22 +1,4 @@
1
- import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";import{t as b}from"../assets/custom-element-BhZVzxrc.js";import{n as p}from"../assets/property-BXNy7Yd-.js";import{a as z}from"../assets/unsafe-html-C8GMyVYZ.js";import{r as u}from"../assets/state-b8IyfZUU.js";import{m as i}from"../assets/mealz-sdk-E_fNZM-c.js";import{d as C}from"../assets/debounceTime-cu8WlLF0.js";import{d as T}from"../assets/distinctUntilChanged-DmoT2we5.js";import{s as k}from"../assets/switchMap-BYsewftM.js";import{f as x}from"../assets/filter-BjN-BbQD.js";import"../assets/async-guWcMFmJ.js";import"../assets/OperatorSubscriber-B37s2U6v.js";import"../assets/innerFrom-D8hyVDmo.js";var I=Object.defineProperty,q=Object.getOwnPropertyDescriptor,g=(e,s,r,a)=>{for(var t=a>1?void 0:a?q(s,r):s,n=e.length-1,l;n>=0;n--)(l=e[n])&&(t=(a?l(s,r,t):l(t))||t);return a&&t&&I(s,r,t),t};let h=class extends _{constructor(){super(),this.isCollapsed=!0,this.isCollapsedChangeEvent=new CustomEvent("isCollapsedChange",{detail:{isCollapsed:this.isCollapsed},bubbles:!0,composed:!0}),this.styleURL=new URL("./accordion/accordion.css",this.getBaseURL())}connectedCallback(){super.connectedCallback();const e=this.querySelector('[slot="title"]');e&&(this.titleSlot=e.innerHTML,e.remove());const s=this.querySelector('[slot="content"]');s&&(this.contentSlot=s.innerHTML,s.remove()),this.innerHTML=""}disconnectedCallback(){super.disconnectedCallback()}toggleAccordion(){this.isCollapsed=!this.isCollapsed,this.dispatchEvent(this.isCollapsedChangeEvent),this.requestUpdate()}updated(){this.classList.toggle("opened",!this.isCollapsed)}render(){return c`
2
- <button
3
- class="mealz-accordion__header"
4
- @click=${()=>this.toggleAccordion()}
5
- aria-expanded=${!this.isCollapsed}
6
- >
7
- ${typeof this.titleSlot=="string"?z(this.titleSlot):this.titleSlot}
8
- <img
9
- class="mealz-accordion__icon"
10
- src=${this.iconUrl??"https://storage.googleapis.com/assets.miam.tech/generic/icons/chevron-down.svg"}
11
- alt="open and close icon"
12
- />
13
- </button>
14
- <div class="mealz-accordion__collapsable-container">
15
- <div class="mealz-accordion__collapsable-content">
16
- ${typeof this.contentSlot=="string"?z(this.contentSlot):this.contentSlot}
17
- </div>
18
- </div>
19
- `}};g([p({type:String})],h.prototype,"titleSlot",2);g([p({type:String})],h.prototype,"contentSlot",2);g([p({type:String})],h.prototype,"iconUrl",2);g([p({type:Boolean})],h.prototype,"isCollapsed",2);h=g([b("mealz-accordion")],h);var P=Object.defineProperty,E=Object.getOwnPropertyDescriptor,v=(e,s,r,a)=>{for(var t=a>1?void 0:a?E(s,r):s,n=e.length-1,l;n>=0;n--)(l=e[n])&&(t=(a?l(s,r,t):l(t))||t);return a&&t&&P(s,r,t),t};let m=class extends _{constructor(){super(),this.suggestedTags=[],this.notFound=!1,this.searchQuery=new $(""),this.subscription=new S,this.styleURL=new URL("./preferences/preferences-search/preferences-search.css",this.getBaseURL())}connectedCallback(){super.connectedCallback(),this.listenOnSearchChange()}disconnectedCallback(){super.disconnectedCallback(),this.subscription.unsubscribe()}searchInputUpdate(e){this.searchQuery.next(e.target.value)}listenOnSearchChange(){this.subscription.add(this.searchQuery.pipe(C(250),T(),k(e=>e.length>0?i.tags.autocomplete(e):[])).subscribe(e=>{var s,r;this.suggestedTags=(s=e==null?void 0:e.data)==null?void 0:s.filter(a=>a.attributes["tag-type-id"]==="ingredient_category"||a.attributes["tag-type-id"]==="ingredientsdefinition"),this.notFound=((r=this.suggestedTags)==null?void 0:r.length)===0,this.requestUpdate()}))}addTag(e){i.preferences.newTagFromSearch(e),this.dispatchEvent(new CustomEvent("backAndReload"))}render(){return c`
1
+ import"../assets/accordion-la5mVBfL.js";import{N as _,B as z,a as y,k as r}from"../assets/no-shadow-element-Dz9jgDtr.js";import{t as b}from"../assets/custom-element-BhZVzxrc.js";import{r as p}from"../assets/state-C5zM4-Pq.js";import{m as t}from"../assets/mealz-sdk-E_fNZM-c.js";import{d as w}from"../assets/debounceTime-D7R6Z3Am.js";import{d as T}from"../assets/distinctUntilChanged-VvZTmHoN.js";import{s as $}from"../assets/switchMap-6Z80ObHE.js";import{n as g}from"../assets/property-Bx8Yvr4_.js";import{f as k}from"../assets/filter-DQ4vwAGj.js";import"../assets/unsafe-html-Bv_ydUHb.js";import"../assets/async-D5WN8Wfc.js";import"../assets/OperatorSubscriber-DF1TYu__.js";import"../assets/innerFrom-FMZwm2mb.js";var S=Object.defineProperty,x=Object.getOwnPropertyDescriptor,m=(e,s,n,a)=>{for(var i=a>1?void 0:a?x(s,n):s,c=e.length-1,d;c>=0;c--)(d=e[c])&&(i=(a?d(s,n,i):d(i))||i);return a&&i&&S(s,n,i),i};let u=class extends _{constructor(){super(),this.suggestedTags=[],this.notFound=!1,this.searchQuery=new z(""),this.subscription=new y,this.styleURL=new URL("./preferences/preferences-search/preferences-search.css",this.getBaseURL())}connectedCallback(){super.connectedCallback(),this.listenOnSearchChange()}disconnectedCallback(){super.disconnectedCallback(),this.subscription.unsubscribe()}searchInputUpdate(e){this.searchQuery.next(e.target.value)}listenOnSearchChange(){this.subscription.add(this.searchQuery.pipe(w(250),T(),$(e=>e.length>0?t.tags.autocomplete(e):[])).subscribe(e=>{var s,n;this.suggestedTags=(s=e==null?void 0:e.data)==null?void 0:s.filter(a=>a.attributes["tag-type-id"]==="ingredient_category"||a.attributes["tag-type-id"]==="ingredientsdefinition"),this.notFound=((n=this.suggestedTags)==null?void 0:n.length)===0,this.requestUpdate()}))}addTag(e){t.preferences.newTagFromSearch(e),this.dispatchEvent(new CustomEvent("backAndReload"))}render(){return r`
20
2
  <div class="mealz-preferences-search">
21
3
  <div class="mealz-preferences-search__searchbar-container">
22
4
  <div class="mealz-preferences-search__searchbar mealz-ds-searchbar">
@@ -31,15 +13,15 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
31
13
  </div>
32
14
  </div>
33
15
 
34
- ${this.notFound?c`
16
+ ${this.notFound?r`
35
17
  <div class="mealz-preferences-search__not-found">
36
18
  <span class="mealz-ds-text">
37
19
  Pas de panique, nous ne trouvons pas cet ingrédient.
38
20
  Aucun risque de le retrouver dans votre assiette.
39
21
  </span>
40
22
  </div>
41
- `:c`
42
- ${this.suggestedTags.map(e=>c`
23
+ `:r`
24
+ ${this.suggestedTags.map(e=>r`
43
25
  <button
44
26
  class="mealz-preferences-search__suggested__tag"
45
27
  @click=${()=>this.addTag(e)}
@@ -51,7 +33,7 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
51
33
  `)}
52
34
  `}
53
35
  </div>
54
- `}};v([u()],m.prototype,"suggestedTags",2);v([u()],m.prototype,"notFound",2);m=v([b("mealz-preferences-search")],m);class y{constructor(){this.attributes={"tag-type-id":"",name:"","icon-url":"","picture-url":""}}get tagType(){return this.attributes["tag-type-id"]}get name(){return this.attributes.name}}var O=Object.defineProperty,U=Object.getOwnPropertyDescriptor,d=(e,s,r,a)=>{for(var t=a>1?void 0:a?U(s,r):s,n=e.length-1,l;n>=0;n--)(l=e[n])&&(t=(a?l(s,r,t):l(t))||t);return a&&t&&O(s,r,t),t};let o=class extends _{constructor(){super(),this.isOpen=!1,this.diets=[],this.ingredients=[],this.equipments=[],this.displayType="defaultView",this.analyticsPath="/preferences",this.openedModalSubscriptions=[],this.subscriptions=[],this.forcedIngredients=[{id:"ingredient_category_lgumes",name:"Légume"},{id:"ingredient_category_viandes-blanches",name:"Viande blanche"},{id:"ingredient_category_fromage",name:"Fromage"},{id:"ingredient_category_poissons",name:"Poisson"},{id:"ingredient_category_fruits",name:"Fruit"},{id:"ingredientsdefinition_coriandre",name:"Coriandre"},{id:"ingredientsdefinition_brocoli",name:"Brocoli"},{id:"ingredientsdefinition_oeuf",name:"Oeuf"},{id:"ingredient_category_alcool",name:"Alcool"}],this.drawerViewSwapper=document.querySelector("mealz-drawer-view-swapper")}connectedCallback(){super.connectedCallback(),this.initSubscriptions()}disconnectedCallback(){super.disconnectedCallback(),this.openedModalSubscriptions.forEach(e=>e.unsubscribe()),this.subscriptions.forEach(e=>e.unsubscribe())}initSubscriptions(){this.subscriptions.push(this.drawerViewSwapper.displayPreferences$.subscribe(e=>{this.isOpen=e,e?(this.fetchTags(),this.pageview()):this.openedModalSubscriptions.forEach(s=>s.unsubscribe()),this.requestUpdate()}),i.supplier.currentSupplier().pipe(x(e=>!!e)).subscribe(e=>{this.supplierId=e.id,this.fetchTags(),this.requestUpdate()}))}defaultViewHeader(){return c`
36
+ `}};m([p()],u.prototype,"suggestedTags",2);m([p()],u.prototype,"notFound",2);u=m([b("mealz-preferences-search")],u);customElements.get("mealz-preferences-search")||customElements.define("mealz-preferences-search",u);class f{constructor(){this.attributes={"tag-type-id":"",name:"","icon-url":"","picture-url":""}}get tagType(){return this.attributes["tag-type-id"]}get name(){return this.attributes.name}}var C=Object.defineProperty,I=Object.getOwnPropertyDescriptor,o=(e,s,n,a)=>{for(var i=a>1?void 0:a?I(s,n):s,c=e.length-1,d;c>=0;c--)(d=e[c])&&(i=(a?d(s,n,i):d(i))||i);return a&&i&&C(s,n,i),i};let l=class extends _{constructor(){super(),this.isOpen=!1,this.diets=[],this.ingredients=[],this.equipments=[],this.displayType="defaultView",this.analyticsPath="/preferences",this.openedModalSubscriptions=[],this.subscriptions=[],this.forcedIngredients=[{id:"ingredient_category_lgumes",name:"Légume"},{id:"ingredient_category_viandes-blanches",name:"Viande blanche"},{id:"ingredient_category_fromage",name:"Fromage"},{id:"ingredient_category_poissons",name:"Poisson"},{id:"ingredient_category_fruits",name:"Fruit"},{id:"ingredientsdefinition_coriandre",name:"Coriandre"},{id:"ingredientsdefinition_brocoli",name:"Brocoli"},{id:"ingredientsdefinition_oeuf",name:"Oeuf"},{id:"ingredient_category_alcool",name:"Alcool"}],this.drawerViewSwapper=document.querySelector("mealz-drawer-view-swapper")}connectedCallback(){super.connectedCallback(),this.initSubscriptions()}disconnectedCallback(){super.disconnectedCallback(),this.openedModalSubscriptions.forEach(e=>e.unsubscribe()),this.subscriptions.forEach(e=>e.unsubscribe())}initSubscriptions(){this.subscriptions.push(this.drawerViewSwapper.displayPreferences$.subscribe(e=>{this.isOpen=e,e?(this.fetchTags(),this.pageview()):this.openedModalSubscriptions.forEach(s=>s.unsubscribe()),this.requestUpdate()}),t.supplier.currentSupplier().pipe(k(e=>!!e)).subscribe(e=>{this.supplierId=e.id,this.fetchTags(),this.requestUpdate()}))}defaultViewHeader(){return r`
55
37
  <button class="mealz-ds-button ghost square mealz-preferences__back-button" @click=${this.close}>
56
38
  <img class="mealz-preferences__back-image" alt="go back"
57
39
  src="https://storage.googleapis.com/assets.miam.tech/generic/icons/arrow-right.svg">
@@ -63,13 +45,13 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
63
45
  <img class="mealz-preferences__close-image" alt="close modal"
64
46
  src="https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross_primary.svg">
65
47
  </button>
66
- `}defaultViewContent(){return c`
48
+ `}defaultViewContent(){return r`
67
49
  <!-- GUESTS -->
68
50
  <div class="mealz-preferences__guests">
69
51
  <span class="mealz-ds-text mealz-preferences__guest-label">Nombre de personnes</span>
70
52
  <mealz-counter
71
53
  class="mealz-preferences__guest-counter"
72
- .value=${i.preferences.guests$.value}
54
+ .value=${t.preferences.guests$.value}
73
55
  @valueChange=${this.updateGuests}
74
56
  >
75
57
  </mealz-counter>
@@ -79,10 +61,10 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
79
61
  <mealz-accordion
80
62
  class="mealz-preferences__diet-section"
81
63
  .isCollapsed=${!1}
82
- .titleSlot=${c`<span class="mealz-ds-text weight-xl">Avez-vous un régime particulier ?</span>`}
83
- .contentSlot=${c`
64
+ .titleSlot=${r`<span class="mealz-ds-text weight-xl">Avez-vous un régime particulier ?</span>`}
65
+ .contentSlot=${r`
84
66
  <div class="mealz-preferences__list">
85
- ${this.diets.map(e=>c`
67
+ ${this.diets.map(e=>r`
86
68
  <div class="mealz-preferences__list__item mealz-ds-checkbox" @click=${()=>this.toggleTag(e)}>
87
69
  <div class="mealz-ds-text mealz-preferences__list__item__name">
88
70
  ${e.tag.attributes.name}
@@ -98,14 +80,14 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
98
80
  <mealz-accordion
99
81
  class="mealz-preferences__dislikes-section"
100
82
  .isCollapsed=${!1}
101
- .titleSlot=${c`<span class="mealz-ds-text weight-xl">Je n'aime pas</span>`}
102
- .contentSlot=${c`
103
- ${this.ingredients.map(e=>c`
83
+ .titleSlot=${r`<span class="mealz-ds-text weight-xl">Je n'aime pas</span>`}
84
+ .contentSlot=${r`
85
+ ${this.ingredients.map(e=>r`
104
86
  <button class="mealz-ds-badge mealz-preferences__badge ${e.checked?"checked":""}"
105
87
  @click=${()=>this.toggleTag(e)}>
106
88
  <div class="mealz-preferences__badge-label">
107
89
  <span>${e.tag.attributes.name}</span>
108
- ${this.isAdditionalIngredient(e)?c`
90
+ ${this.isAdditionalIngredient(e)?r`
109
91
  <img alt="remove ${e.tag.attributes.name}"
110
92
  class="mealz-preferences__remove-tag"
111
93
  src="https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross.svg">
@@ -127,10 +109,10 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
127
109
  <mealz-accordion
128
110
  class="mealz-preferences__equipments-section"
129
111
  .isCollapsed=${!1}
130
- .titleSlot=${c`<span class="mealz-ds-text weight-xl">Équipements</span>`}
131
- .contentSlot=${c`
112
+ .titleSlot=${r`<span class="mealz-ds-text weight-xl">Équipements</span>`}
113
+ .contentSlot=${r`
132
114
  <div class="mealz-preferences__list">
133
- ${this.equipments.map(e=>c`
115
+ ${this.equipments.map(e=>r`
134
116
  <div class="mealz-preferences__list__item mealz-ds-checkbox" @click=${()=>this.toggleTag(e)}>
135
117
  <div class="mealz-ds-text mealz-preferences__list__item__name">
136
118
  ${e.tag.attributes.name}
@@ -151,7 +133,7 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
151
133
  Appliquer
152
134
  </button>
153
135
  </div>
154
- `}searchViewHeader(){return c`
136
+ `}searchViewHeader(){return r`
155
137
  <div class="mealz-preferences__nav-and-title">
156
138
  <button class="mealz-ds-button ghost square mealz-preferences__search-back-button"
157
139
  @click=${this.goToDefaultView}>
@@ -162,16 +144,16 @@ import{N as _,k as c,B as $,S}from"../assets/no-shadow-element-D4NOg0uW.js";impo
162
144
  <span>Je n'aime pas</span>
163
145
  </div>
164
146
  </div>
165
- `}render(){return this.isOpen?c`
147
+ `}render(){return this.isOpen?r`
166
148
  <div class="mealz-preferences">
167
149
  <div class="mealz-preferences__header">
168
150
  ${this.displayType==="defaultView"?this.defaultViewHeader():this.searchViewHeader()}
169
151
  </div>
170
152
 
171
- ${this.displayType==="defaultView"?this.defaultViewContent():c`
153
+ ${this.displayType==="defaultView"?this.defaultViewContent():r`
172
154
  <mealz-preferences-search
173
155
  @backAndReload=${()=>{this.fetchTags(),this.goToDefaultView()}}
174
156
  ></mealz-preferences-search>
175
157
  `}
176
158
  </div>
177
- `:c``}close(){this.sendCloseEvent(),this.drawerViewSwapper.displayPreferences$.next(!1),i.preferences.resetTagsActions()}pageview(){i.analytics.sendEvent("pageview",this.analyticsPath,{})}sendCloseEvent(){i.analytics.sendEvent("preferences.close",this.analyticsPath,{})}createTagSubscription(e,s){this.openedModalSubscriptions.push(i.tags.all({remotefilter:{tag_type:e,for_supplier:this.supplierId}}).subscribe(r=>{this[`${e}s`]=r.data.map(a=>({tag:a,checked:i.preferences.tagShouldBeChecked(a,s),without:e!=="diet"})),this.requestUpdate()}))}fetchTags(){this.supplierId&&(this.createTagSubscription("diet",!1),this.createTagSubscription("equipment",!0),this.initIngredientTags())}reset(){i.preferences.resetPreferences(),i.preferences.sendCacheRequest("remove","preferences").subscribe(),this.fetchTags()}initIngredientTags(){this.ingredients=[],this.forcedIngredients.forEach(e=>{const s=new y;s.id=e.id,s.attributes.name=e.name,this.ingredients.push({tag:s,checked:i.preferences.tagShouldBeChecked(s,!0),without:!0})}),this.getAdditionalIngredients()}getAdditionalIngredients(){(i.preferences.preferencesInStorage()||{without:[]}).without.filter(t=>t.id.includes("ingredient_category_")||t.id.includes("ingredientsdefinition_")||t.id.includes("meal_type_")).forEach(t=>{if(this.forcedIngredients.findIndex(n=>n.id===t.id)===-1){const n=new y;n.id=t.id,n.attributes={"tag-type-id":"",name:t.name,"icon-url":"","picture-url":""},i.preferences.tagShouldBeChecked(n,!0)&&this.ingredients.push({tag:n,checked:!0,without:!0})}});const r=["ingredient_category_","ingredientsdefinition_","meal_type_"],a=i.preferences.tagsToAdd.filter(t=>{const n=t.tag.id,l=r.some(f=>n.includes(f)),w=!this.ingredients.some(f=>f.tag.id===n);return l&&w});this.ingredients.push(...a),this.updateFiltersInCache()}toggleTag(e){e.checked=!e.checked,e.tag.attributes["tag-type-id"]==="equipment"!==e.checked?i.preferences.addTag(e):(i.preferences.removeTag(e),this.isAdditionalIngredient(e)&&this.ingredients.splice(this.ingredients.findIndex(s=>s.tag.id===e.tag.id),1)),this.requestUpdate()}isAdditionalIngredient(e){return this.forcedIngredients.findIndex(s=>s.id===e.tag.id)===-1&&(e.tag.id.includes("ingredient_category_")||e.tag.id.includes("ingredientsdefinition_"))}updateAndBack(){i.preferences.updatePreferences(),i.preferences.preferencesChanged(),this.updateFiltersInCache(!0)}goToDefaultView(){this.displayType="defaultView",this.requestUpdate()}goToSearchView(){this.displayType="searchView",this.requestUpdate()}updateFiltersInCache(e=!1){const s=i.preferences.addPreferencesToRemoteFilters(this.filters,!0),r={exclude_tags:s.exclude_tags,include_tags:s.include_tags,...i.preferences.guests$.value!==4&&{guests:i.preferences.guests$.value}};(Object.keys(r).length>0?i.preferences.sendCacheRequest("set","preferences",r):i.preferences.sendCacheRequest("remove","preferences")).subscribe(()=>{e&&(i.preferences.preferencesChanged(),this.close())})}updateGuests(e){i.preferences.guests$.next(e.detail.value),this.requestUpdate()}};d([p({type:Object})],o.prototype,"filters",2);d([p({type:Boolean})],o.prototype,"isOpen",2);d([u()],o.prototype,"diets",2);d([u()],o.prototype,"ingredients",2);d([u()],o.prototype,"equipments",2);d([u()],o.prototype,"displayType",2);d([p({type:String})],o.prototype,"analyticsPath",2);o=d([b("mealz-preferences")],o);
159
+ `:r``}close(){this.sendCloseEvent(),this.drawerViewSwapper.displayPreferences$.next(!1),t.preferences.resetTagsActions()}pageview(){t.analytics.sendEvent("pageview",this.analyticsPath,{})}sendCloseEvent(){t.analytics.sendEvent("preferences.close",this.analyticsPath,{})}createTagSubscription(e,s){this.openedModalSubscriptions.push(t.tags.all({remotefilter:{tag_type:e,for_supplier:this.supplierId}}).subscribe(n=>{this[`${e}s`]=n.data.map(a=>({tag:a,checked:t.preferences.tagShouldBeChecked(a,s),without:e!=="diet"})),this.requestUpdate()}))}fetchTags(){this.supplierId&&(this.createTagSubscription("diet",!1),this.createTagSubscription("equipment",!0),this.initIngredientTags())}reset(){t.preferences.resetPreferences(),t.preferences.sendCacheRequest("remove","preferences").subscribe(),this.fetchTags()}initIngredientTags(){this.ingredients=[],this.forcedIngredients.forEach(e=>{const s=new f;s.id=e.id,s.attributes.name=e.name,this.ingredients.push({tag:s,checked:t.preferences.tagShouldBeChecked(s,!0),without:!0})}),this.getAdditionalIngredients()}getAdditionalIngredients(){(t.preferences.preferencesInStorage()||{without:[]}).without.filter(i=>i.id.includes("ingredient_category_")||i.id.includes("ingredientsdefinition_")||i.id.includes("meal_type_")).forEach(i=>{if(this.forcedIngredients.findIndex(c=>c.id===i.id)===-1){const c=new f;c.id=i.id,c.attributes={"tag-type-id":"",name:i.name,"icon-url":"","picture-url":""},t.preferences.tagShouldBeChecked(c,!0)&&this.ingredients.push({tag:c,checked:!0,without:!0})}});const n=["ingredient_category_","ingredientsdefinition_","meal_type_"],a=t.preferences.tagsToAdd.filter(i=>{const c=i.tag.id,d=n.some(h=>c.includes(h)),v=!this.ingredients.some(h=>h.tag.id===c);return d&&v});this.ingredients.push(...a),this.updateFiltersInCache()}toggleTag(e){e.checked=!e.checked,e.tag.attributes["tag-type-id"]==="equipment"!==e.checked?t.preferences.addTag(e):(t.preferences.removeTag(e),this.isAdditionalIngredient(e)&&this.ingredients.splice(this.ingredients.findIndex(s=>s.tag.id===e.tag.id),1)),this.requestUpdate()}isAdditionalIngredient(e){return this.forcedIngredients.findIndex(s=>s.id===e.tag.id)===-1&&(e.tag.id.includes("ingredient_category_")||e.tag.id.includes("ingredientsdefinition_"))}updateAndBack(){t.preferences.updatePreferences(),t.preferences.preferencesChanged(),this.updateFiltersInCache(!0)}goToDefaultView(){this.displayType="defaultView",this.requestUpdate()}goToSearchView(){this.displayType="searchView",this.requestUpdate()}updateFiltersInCache(e=!1){const s=t.preferences.addPreferencesToRemoteFilters(this.filters,!0),n={exclude_tags:s.exclude_tags,include_tags:s.include_tags,...t.preferences.guests$.value!==4&&{guests:t.preferences.guests$.value}};(Object.keys(n).length>0?t.preferences.sendCacheRequest("set","preferences",n):t.preferences.sendCacheRequest("remove","preferences")).subscribe(()=>{e&&(t.preferences.preferencesChanged(),this.close())})}updateGuests(e){t.preferences.guests$.next(e.detail.value),this.requestUpdate()}};o([g({type:Object})],l.prototype,"filters",2);o([g({type:Boolean})],l.prototype,"isOpen",2);o([p()],l.prototype,"diets",2);o([p()],l.prototype,"ingredients",2);o([p()],l.prototype,"equipments",2);o([p()],l.prototype,"displayType",2);o([g({type:String})],l.prototype,"analyticsPath",2);l=o([b("mealz-preferences")],l);customElements.get("mealz-preferences")||customElements.define("mealz-preferences",l);
@@ -1,4 +1,4 @@
1
- import{N as n,k as a,D as d}from"../assets/no-shadow-element-D4NOg0uW.js";import{t as v}from"../assets/custom-element-BhZVzxrc.js";import{n as m}from"../assets/property-BXNy7Yd-.js";import{P as h}from"../assets/price-DdIbni0N.js";import"../assets/mealz-sdk-E_fNZM-c.js";var u=Object.defineProperty,P=Object.getOwnPropertyDescriptor,l=(o,i,c,t)=>{for(var e=t>1?void 0:t?P(i,c):i,s=o.length-1,p;s>=0;s--)(p=o[s])&&(e=(t?p(i,c,e):p(e))||e);return t&&e&&u(i,c,e),e};let r=class extends n{constructor(){super(),this.priceService=h.getInstance(),this.styleURL=new URL("./price/price.css",this.getBaseURL())}connectedCallback(){super.connectedCallback(),this.priceService.initFormatter()}renderOldPrice(){return a`
1
+ import{N as n,k as a,D as d}from"../assets/no-shadow-element-Dz9jgDtr.js";import{t as v}from"../assets/custom-element-BhZVzxrc.js";import{n as m}from"../assets/property-Bx8Yvr4_.js";import{P as h}from"../assets/price-CHipCs2z.js";import"../assets/mealz-sdk-E_fNZM-c.js";var u=Object.defineProperty,P=Object.getOwnPropertyDescriptor,l=(o,i,c,t)=>{for(var e=t>1?void 0:t?P(i,c):i,s=o.length-1,p;s>=0;s--)(p=o[s])&&(e=(t?p(i,c,e):p(e))||e);return t&&e&&u(i,c,e),e};let r=class extends n{constructor(){super(),this.priceService=h.getInstance(),this.styleURL=new URL("./price/price.css",this.getBaseURL())}connectedCallback(){super.connectedCallback(),this.priceService.initFormatter()}renderOldPrice(){return a`
2
2
  <div class="mealz-price__previous mealz-ds-text weight-l size-xs">
3
3
  ${this.priceService.priceTemplate(this.oldPrice)}
4
4
  </div>
@@ -1 +1 @@
1
- .mealz-product-addition{padding:24px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--mealz-ds-color-neutral-100, #F7F8F9)}.mealz-product-addition>*:not(:last-child){margin-bottom:16px}.mealz-product-addition .mealz-product-addition__button{border-radius:32px}
1
+ .mealz-product-addition{padding:16px;display:flex;align-items:center;justify-content:space-between;background:var(--mealz-ds-color-neutral-100, #F7F8F9);gap:8px}.mealz-product-addition .mealz-product-addition__button{border-radius:32px;flex-shrink:0}@media (max-width: 480px){.mealz-product-addition{margin:0 16px;border-radius:12px}}
@@ -1 +1 @@
1
- import{N as g}from"../assets/no-shadow-element-D4NOg0uW.js";import{V as f}from"../assets/viewport-listener-BRwa66-G.js";import{t as I}from"../assets/custom-element-BhZVzxrc.js";import{h as w}from"../assets/session-handler-BZFnRy_K.js";import{w as y,m as c}from"../assets/mealz-sdk-E_fNZM-c.js";import{f as u}from"../assets/filter-BjN-BbQD.js";import{s as b}from"../assets/switchMap-BYsewftM.js";import{c as v}from"../assets/combineLatest-qLpwa5de.js";import{t as d}from"../assets/take-ujVMxFwY.js";import"../assets/debounceTime-cu8WlLF0.js";import"../assets/async-guWcMFmJ.js";import"../assets/OperatorSubscriber-B37s2U6v.js";import"../assets/innerFrom-D8hyVDmo.js";import"../assets/from-CEPL7XsE.js";import"../assets/executeSchedule-Dqc6shOu.js";import"../assets/mapOneOrManyArgs-UKKoFfIU.js";import"../assets/map-D6X2syNu.js";import"../assets/empty-DhPhHznc.js";class o{constructor(){this.trackedRecipes=new Map,this.hasScrolled=!1,this.scrollListener=null,this.cleanupInterval=null,this.MAX_RECIPES=1e3,this.CLEANUP_INTERVAL=300*1e3,this.handlePageUnload=()=>{this.destroy()},this.setupScrollListener(),this.startAutoCleanup(),this.setupPageUnloadListener()}static getInstance(){return o.instance||(o.instance=new o),o.instance}trackRecipeShow(t,s,i){const r=Date.now(),n=!this.trackedRecipes.get(t),l=this.hasScrolled;!n&&!l||(this.trackedRecipes.size>=this.MAX_RECIPES&&this.cleanOldRecipes(),this.trackedRecipes.set(t,r),window.mealzInternal.analytics.sendEvent("recipe.show",s,{recipe_id:t,category_id:i}))}cleanOldRecipes(){const s=Date.now()-3600*1e3;for(const[i,r]of this.trackedRecipes.entries())r<s&&this.trackedRecipes.delete(i)}clearAllRecipes(){this.trackedRecipes.clear()}destroy(){this.scrollListener&&(window.removeEventListener("scroll",this.scrollListener),this.scrollListener=null),window.removeEventListener("beforeunload",this.handlePageUnload),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null),this.trackedRecipes.clear(),this.hasScrolled=!1,o.instance=null}setupScrollListener(){let t;this.scrollListener=()=>{this.hasScrolled=!0,clearTimeout(t),t=window.setTimeout(()=>{this.hasScrolled=!1},2e3)},window.addEventListener("scroll",this.scrollListener)}startAutoCleanup(){this.cleanupInterval=window.setInterval(()=>{this.cleanOldRecipes()},this.CLEANUP_INTERVAL)}setupPageUnloadListener(){window.addEventListener("beforeunload",this.handlePageUnload)}}var L=Object.getOwnPropertyDescriptor,C=(e,t,s,i)=>{for(var r=i>1?void 0:i?L(t,s):t,a=e.length-1,n;a>=0;a--)(n=e[a])&&(r=n(r)||r);return r};let m=class extends g{constructor(){super(...arguments),this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),this.listenInView(),y().then(()=>{this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)})}setupSubscriptions(){this.subscriptions.push(c.basket.recipePricesInBasket$().subscribe(e=>{if(!e)return;const t=e.find(s=>s.id===this.recipeId);e.length>0&&t&&parseFloat(t.price)>0?(this.guests=c.basket.guestsForRecipe(t.id),this.updatedRecipeId=t.id,this.updateDOM()):this.render()}),this.setupPlannerMenuSubscription(),this.setupGuestUpdatesSubscription())}setupPlannerMenuSubscription(){return c.planner.menuPrice$.pipe(u(()=>this.planner&&!!this.recipeId),b(()=>v([c.planner.isRecipeInMenu$(this.recipeId).pipe(d(1))])),u(([e,t])=>e&&typeof t=="number"&&t>0)).subscribe(([e,t])=>{this.guests=t,this.updateGuestDisplay()})}setupGuestUpdatesSubscription(){return c.recipes.guestsUpdated().subscribe(e=>{e.recipeId===this.recipeId&&(this.guests=e.guests,this.updatedRecipeId=this.recipeId,this.updateDOM())})}disconnectedCallback(){var t;super.disconnectedCallback(),this.subscriptions.forEach(s=>s.unsubscribe()),(t=this.analyticsViewportObserver)==null||t.disconnect(),o.getInstance().cleanOldRecipes()}render(){this.recipeCardTop=this.querySelector(".mealz-recipe-card__top"),this.recipeCardCta=this.querySelector(".mealz-recipe-card__cta"),this.recipeCardTop&&(this.getInitialStatus(),this.recipeCardTop.addEventListener("click",()=>this.openDetails()),this.recipeCardCta&&this.recipeCardCta.addEventListener("click",()=>this.recipeCardCtaClick()))}listenInView(){this.analyticsViewportObserver=new f(this,()=>{this.sendAnalyticsShow()},{threshold:.8,debounce:1e3})}getInitialStatus(){var p;const e=(p=this.attributes["starting-data"])==null?void 0:p.value;if(!e)return;const{id:t,guests:s,path:i,categoryId:r,initialTabIndex:a,planner:n,sessionId:l,recipe:S}=JSON.parse(e);if(this.recipeId=t,this.analyticsPath=i,this.categoryId=r,this.guests=s,this.initialTabIndex=a,this.planner=n,this.recipe=S,w(l),!this.guests){this.guests=this.getGuests();const h=this.querySelector(".mealz-recipe-card__counter p");h&&(h.innerHTML=this.guests.toString())}this.removeAttribute("starting-data"),this.updateDOM()}openDetails(){c.recipes.openDetails(this.recipeId,this.guests,this.initialTabIndex,this.analyticsPath,this.planner,this.categoryId)}recipeCardCtaClick(){this.planner?this.handleCTAClickForPlanner():this.openDetails()}getGuests(){const e=localStorage.getItem("_miam/preferences/guests");if(e){const t=+e;if(!isNaN(t)&&t>0&&t<=30)return t}return 4}handleCTAClickForPlanner(){const e=this.querySelector("mealz-recipe-card-cta");if(!e)return;const t=e.getStatus();t==="add"?(this.showAddingToMenuState(e),this.addRecipeToMenu()):t==="in-menu"&&(this.showRemovingFromMenuState(e),this.removeRecipeFromMenu())}addRecipeToMenu(){var i,r;const e=document.querySelector("mealz-planner-recipe-suggestion"),t=(e==null?void 0:e.guests)||this.guests;e&&(e.recipeId=this.recipeId);const s=document.querySelector("mealz-planner-current-menu");if(!s){const a=(r=(i=c.recipes)==null?void 0:i.productsPlannerByCategory$)==null?void 0:r.value,n=(a==null?void 0:a.toPickProducts)||[];c.planner.addRecipeToMenu(this.recipeId,t,!!c.pos.currentPos().value,n).pipe(d(1)).subscribe(()=>{this.removeRecipeCardLoader("add");const l=document.querySelector("mealz-planner-recipe-list");l==null||l.addRecipeCardToList(this.recipeId)});return}s.addRecipe(this.recipeId,t).subscribe(()=>{this.removeRecipeCardLoader("add"),e==null||e.addAndSelectNewSuggestion(this.recipe)})}removeRecipeFromMenu(){const e=document.querySelector("mealz-planner-recipe-suggestion");if(!e){c.planner.removeRecipeFromMenu(this.recipeId).pipe(d(1)).subscribe(()=>this.removeRecipeCardLoader("remove"));return}e.removeRecipe(this.recipeId).subscribe(()=>this.removeRecipeCardLoader("remove"))}showRemovingFromMenuState(e){const t=this.querySelector(".mealz-recipe-card-cta__loader"),s=e.querySelector("img.in-menu");t==null||t.classList.remove("hidden"),s==null||s.classList.add("hidden")}removeRecipeCardLoader(e){const t=this.querySelector("mealz-recipe-card-cta");if(!t)return;const s=this.querySelector(".mealz-recipe-card-cta"),i=this.querySelector(".mealz-recipe-card-cta__loader"),r=t.querySelector("img.add"),a=t.querySelector("img.in-menu");e==="add"?(i==null||i.classList.add("hidden"),s==null||s.classList.replace("primary","secondary"),a==null||a.classList.remove("hidden"),t.updateStatus("in-menu")):(i==null||i.classList.add("hidden"),s==null||s.classList.replace("secondary","primary"),r==null||r.classList.remove("hidden"),t.updateStatus("add"))}showAddingToMenuState(e){const t=this.querySelector(".mealz-recipe-card-cta__loader"),s=e.querySelector("img.add"),i=e.querySelector("img.in-menu");t==null||t.classList.remove("hidden"),s==null||s.classList.add("hidden"),i==null||i.classList.add("hidden")}updateDOM(){if(this.recipeId!==this.updatedRecipeId)return;const e=this.querySelector(".mealz-recipe-card__counter p");e&&(e.innerHTML=this.guests.toString())}updateGuestDisplay(){const e=this.querySelector(".mealz-recipe-card__counter p");e&&this.guests&&(e.innerHTML=this.guests.toString())}sendAnalyticsShow(){o.getInstance().trackRecipeShow(this.recipeId,this.analyticsPath,this.categoryId)}};m=C([I("mealz-recipe-card")],m);
1
+ import{N as S}from"../assets/no-shadow-element-Dz9jgDtr.js";import{V as f}from"../assets/viewport-listener-DrFhSZNW.js";import{t as I}from"../assets/custom-element-BhZVzxrc.js";import{h as w}from"../assets/session-handler-BZFnRy_K.js";import{w as y,m as c}from"../assets/mealz-sdk-E_fNZM-c.js";import{f as m}from"../assets/filter-DQ4vwAGj.js";import{s as b}from"../assets/switchMap-6Z80ObHE.js";import{c as v}from"../assets/combineLatest-BN0_WcEG.js";import{t as d}from"../assets/take-ByPtGQky.js";import"../assets/debounceTime-D7R6Z3Am.js";import"../assets/async-D5WN8Wfc.js";import"../assets/OperatorSubscriber-DF1TYu__.js";import"../assets/innerFrom-FMZwm2mb.js";import"../assets/from-BTlWkhKh.js";import"../assets/executeSchedule-C0acKsif.js";import"../assets/mapOneOrManyArgs-Bdu6mo6S.js";import"../assets/map-DHslluWD.js";import"../assets/empty-Bs9kqCuA.js";class o{constructor(){this.trackedRecipes=new Map,this.hasScrolled=!1,this.scrollListener=null,this.cleanupInterval=null,this.MAX_RECIPES=1e3,this.CLEANUP_INTERVAL=300*1e3,this.handlePageUnload=()=>{this.destroy()},this.setupScrollListener(),this.startAutoCleanup(),this.setupPageUnloadListener()}static getInstance(){return o.instance||(o.instance=new o),o.instance}trackRecipeShow(t,s,i){const r=Date.now(),n=!this.trackedRecipes.get(t),l=this.hasScrolled;!n&&!l||(this.trackedRecipes.size>=this.MAX_RECIPES&&this.cleanOldRecipes(),this.trackedRecipes.set(t,r),window.mealzInternal.analytics.sendEvent("recipe.show",s,{recipe_id:t,category_id:i}))}cleanOldRecipes(){const s=Date.now()-3600*1e3;for(const[i,r]of this.trackedRecipes.entries())r<s&&this.trackedRecipes.delete(i)}clearAllRecipes(){this.trackedRecipes.clear()}destroy(){this.scrollListener&&(window.removeEventListener("scroll",this.scrollListener),this.scrollListener=null),window.removeEventListener("beforeunload",this.handlePageUnload),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null),this.trackedRecipes.clear(),this.hasScrolled=!1,o.instance=null}setupScrollListener(){let t;this.scrollListener=()=>{this.hasScrolled=!0,clearTimeout(t),t=window.setTimeout(()=>{this.hasScrolled=!1},2e3)},window.addEventListener("scroll",this.scrollListener)}startAutoCleanup(){this.cleanupInterval=window.setInterval(()=>{this.cleanOldRecipes()},this.CLEANUP_INTERVAL)}setupPageUnloadListener(){window.addEventListener("beforeunload",this.handlePageUnload)}}var L=Object.getOwnPropertyDescriptor,C=(e,t,s,i)=>{for(var r=i>1?void 0:i?L(t,s):t,a=e.length-1,n;a>=0;a--)(n=e[a])&&(r=n(r)||r);return r};let p=class extends S{constructor(){super(...arguments),this.subscriptions=[]}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),this.listenInView(),y().then(()=>{this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)})}setupSubscriptions(){this.subscriptions.push(c.basket.recipePricesInBasket$().subscribe(e=>{if(!e)return;const t=e.find(s=>s.id===this.recipeId);e.length>0&&t&&parseFloat(t.price)>0?(this.guests=c.basket.guestsForRecipe(t.id),this.updatedRecipeId=t.id,this.updateDOM()):this.render()}),this.setupPlannerMenuSubscription(),this.setupGuestUpdatesSubscription())}setupPlannerMenuSubscription(){return c.planner.menuPrice$.pipe(m(()=>this.planner&&!!this.recipeId),b(()=>v([c.planner.isRecipeInMenu$(this.recipeId).pipe(d(1))])),m(([e,t])=>e&&typeof t=="number"&&t>0)).subscribe(([e,t])=>{this.guests=t,this.updateGuestDisplay()})}setupGuestUpdatesSubscription(){return c.recipes.guestsUpdated().subscribe(e=>{e.recipeId===this.recipeId&&(this.guests=e.guests,this.updatedRecipeId=this.recipeId,this.updateDOM())})}disconnectedCallback(){var t;super.disconnectedCallback(),this.subscriptions.forEach(s=>s.unsubscribe()),(t=this.analyticsViewportObserver)==null||t.disconnect(),o.getInstance().cleanOldRecipes()}render(){this.recipeCardTop=this.querySelector(".mealz-recipe-card__top"),this.recipeCardCta=this.querySelector(".mealz-recipe-card__cta"),this.recipeCardTop&&(this.getInitialStatus(),this.recipeCardTop.addEventListener("click",()=>this.openDetails()),this.recipeCardCta&&this.recipeCardCta.addEventListener("click",()=>this.recipeCardCtaClick()))}listenInView(){this.analyticsViewportObserver=new f(this,()=>{this.sendAnalyticsShow()},{threshold:.8,debounce:1e3})}getInitialStatus(){var h;const e=(h=this.attributes["starting-data"])==null?void 0:h.value;if(!e)return;const{id:t,guests:s,path:i,categoryId:r,initialTabIndex:a,planner:n,sessionId:l,recipe:g}=JSON.parse(e);if(this.recipeId=t,this.analyticsPath=i,this.categoryId=r,this.guests=s,this.initialTabIndex=a,this.planner=n,this.recipe=g,w(l),!this.guests){this.guests=this.getGuests();const u=this.querySelector(".mealz-recipe-card__counter p");u&&(u.innerHTML=this.guests.toString())}this.removeAttribute("starting-data"),this.updateDOM()}openDetails(){c.recipes.openDetails(this.recipeId,this.guests,this.initialTabIndex,this.analyticsPath,this.planner,this.categoryId)}recipeCardCtaClick(){this.planner?this.handleCTAClickForPlanner():this.openDetails()}getGuests(){const e=localStorage.getItem("_miam/preferences/guests");if(e){const t=+e;if(!isNaN(t)&&t>0&&t<=30)return t}return 4}handleCTAClickForPlanner(){const e=this.querySelector("mealz-recipe-card-cta");if(!e)return;const t=e.getStatus();t==="add"?(this.showAddingToMenuState(e),this.addRecipeToMenu()):t==="in-menu"&&(this.showRemovingFromMenuState(e),this.removeRecipeFromMenu())}addRecipeToMenu(){var i,r;const e=document.querySelector("mealz-planner-recipe-suggestion"),t=(e==null?void 0:e.guests)||this.guests;e&&(e.recipeId=this.recipeId);const s=document.querySelector("mealz-planner-current-menu");if(!s){const a=(r=(i=c.recipes)==null?void 0:i.productsPlannerByCategory$)==null?void 0:r.value,n=(a==null?void 0:a.toPickProducts)||[];c.planner.addRecipeToMenu(this.recipeId,t,!!c.pos.currentPos().value,n).pipe(d(1)).subscribe(()=>{this.removeRecipeCardLoader("add");const l=document.querySelector("mealz-planner-recipe-list");l==null||l.addRecipeCardToList(this.recipeId)});return}s.addRecipe(this.recipeId,t).subscribe(()=>{this.removeRecipeCardLoader("add"),e==null||e.addAndSelectNewSuggestion(this.recipe)})}removeRecipeFromMenu(){const e=document.querySelector("mealz-planner-recipe-suggestion");if(!e){c.planner.removeRecipeFromMenu(this.recipeId).pipe(d(1)).subscribe(()=>this.removeRecipeCardLoader("remove"));return}e.removeRecipe(this.recipeId).subscribe(()=>this.removeRecipeCardLoader("remove"))}showRemovingFromMenuState(e){const t=this.querySelector(".mealz-recipe-card-cta__loader"),s=e.querySelector("img.in-menu");t==null||t.classList.remove("hidden"),s==null||s.classList.add("hidden")}removeRecipeCardLoader(e){const t=this.querySelector("mealz-recipe-card-cta");if(!t)return;const s=this.querySelector(".mealz-recipe-card-cta"),i=this.querySelector(".mealz-recipe-card-cta__loader"),r=t.querySelector("img.add"),a=t.querySelector("img.in-menu");e==="add"?(i==null||i.classList.add("hidden"),s==null||s.classList.replace("primary","secondary"),a==null||a.classList.remove("hidden"),t.updateStatus("in-menu")):(i==null||i.classList.add("hidden"),s==null||s.classList.replace("secondary","primary"),r==null||r.classList.remove("hidden"),t.updateStatus("add"))}showAddingToMenuState(e){const t=this.querySelector(".mealz-recipe-card-cta__loader"),s=e.querySelector("img.add"),i=e.querySelector("img.in-menu");t==null||t.classList.remove("hidden"),s==null||s.classList.add("hidden"),i==null||i.classList.add("hidden")}updateDOM(){if(this.recipeId!==this.updatedRecipeId)return;const e=this.querySelector(".mealz-recipe-card__counter p");e&&(e.innerHTML=this.guests.toString())}updateGuestDisplay(){const e=this.querySelector(".mealz-recipe-card__counter p");e&&this.guests&&(e.innerHTML=this.guests.toString())}sendAnalyticsShow(){o.getInstance().trackRecipeShow(this.recipeId,this.analyticsPath,this.categoryId)}};p=C([I("mealz-recipe-card")],p);customElements.get("mealz-recipe-card")||customElements.define("mealz-recipe-card",p);
@@ -1 +1 @@
1
- import{N as m}from"../assets/no-shadow-element-D4NOg0uW.js";import{t as f}from"../assets/custom-element-BhZVzxrc.js";import{w as b,m as n}from"../assets/mealz-sdk-E_fNZM-c.js";import{m as p}from"../assets/map-D6X2syNu.js";import{d as c}from"../assets/distinctUntilChanged-DmoT2we5.js";import{m as C}from"../assets/mergeAll-9jcORGP2.js";import{f as k,p as o}from"../assets/from-CEPL7XsE.js";import{o as g}from"../assets/OperatorSubscriber-B37s2U6v.js";import{c as v}from"../assets/combineLatest-qLpwa5de.js";import"../assets/mergeMap-CX64J-ac.js";import"../assets/innerFrom-D8hyVDmo.js";import"../assets/executeSchedule-Dqc6shOu.js";import"../assets/mapOneOrManyArgs-UKKoFfIU.js";function I(){return C(1)}function u(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return I()(k(e,o(e)))}function h(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var s=o(e);return g(function(i,a){(s?u(e,i,s):u(e,i)).subscribe(a)})}var L=Object.getOwnPropertyDescriptor,S=(e,t,s,i)=>{for(var a=i>1?void 0:i?L(t,s):t,r=e.length-1,l;r>=0;r--)(l=e[r])&&(a=l(a)||a);return a};let d=class extends m{constructor(){super(...arguments),this.subscriptions=[],this.clickHandler=()=>{},this.recipeId="",this.status="add",this.planner=!1,this.recipeCta=null,this.guests=4,this.standalone=!1,this.inBasket=!1}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),b().then(()=>{this.setupClickHandler(),this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)})}setupSubscriptions(){const e=n.basket.recipePricesInBasket$().pipe(p(t=>t.some(s=>s.id===this.recipeId)),c(),h(!1));this.subscriptions.push(v([n.planner.isRecipeInMenu$(this.recipeId).pipe(h(!1),c()),e]).pipe(p(([t,s])=>this.planner?s?"in-basket":t?"in-menu":"add":s?"in-basket":"add"),c()).subscribe(t=>this.updateStatus(t)))}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.removeClickHandler()}render(){this.recipeCta=this.querySelector(".mealz-recipe-card-cta"),this.recipeCta&&this.updateStatus(this.status)}getInitialStatus(){const e=this.attributes.getNamedItem("starting-data"),t=(e==null?void 0:e.value)||"{}",s=JSON.parse(t);if(s){if(s.recipeId)this.recipeId=s.recipeId,this.guests=s.guests||4,this.standalone=!0,this.inBasket=s.inBasket||!1,this.planner=s.planner||!1,this.status=s.status||"add",this.updateDOM(this.inBasket);else{const i=e==null?void 0:e.value;this.recipeId=i||"",this.standalone=!1;const a=this.classList.contains("in-basket");this.updateDOM(a)}if(this.removeAttribute("starting-data"),this.planner)this.updateStatus(this.status);else{const i=this.classList.contains("in-basket");this.updateStatus(i?"in-basket":"add")}}}setupClickHandler(){this.standalone&&(this.recipeCta=this.querySelector(".mealz-recipe-card-cta"),this.recipeCta&&(this.clickHandler=()=>{n.recipes.openDetails(this.recipeId,this.guests,0,"/recipes")},this.recipeCta.addEventListener("click",this.clickHandler)))}removeClickHandler(){this.recipeCta&&this.clickHandler&&this.recipeCta.removeEventListener("click",this.clickHandler)}updateStatus(e){this.recipeCta&&(this.recipeCta.classList.remove("hidden"),this.status!==e&&(this.status=e,this.recipeCta.classList.remove("in-basket","in-menu","add"),this.recipeCta.classList.add(this.status),this.recipeCta.classList.toggle("primary",this.status==="add"),this.recipeCta.classList.toggle("secondary",this.status!=="add"),this.updateButtonState(),this.updateImages()))}updateButtonState(){this.recipeCta&&(this.planner&&this.status==="in-basket"?this.recipeCta.setAttribute("disabled","true"):this.recipeCta.removeAttribute("disabled"))}updateImages(){if(!this.recipeCta)return;this.recipeCta.querySelectorAll("img").forEach(t=>{t.classList.contains(this.status)?t.classList.remove("hidden"):t.classList.add("hidden")})}getStatus(){return this.status}updateDOM(e){const t=this.querySelector(".mealz-recipe-card-cta");t&&(t.classList.remove("hidden"),e?(t.classList.replace("primary","secondary"),t.classList.add("in-basket")):(t.classList.replace("secondary","primary"),t.classList.remove("in-basket")))}};d=S([f("mealz-recipe-card-cta")],d);
1
+ import{N as m}from"../assets/no-shadow-element-Dz9jgDtr.js";import{t as f}from"../assets/custom-element-BhZVzxrc.js";import{w as b,m as n}from"../assets/mealz-sdk-E_fNZM-c.js";import{m as u}from"../assets/map-DHslluWD.js";import{d as c}from"../assets/distinctUntilChanged-VvZTmHoN.js";import{m as C}from"../assets/mergeAll-DTkL1sF8.js";import{f as k,p as h}from"../assets/from-BTlWkhKh.js";import{o as g}from"../assets/OperatorSubscriber-DF1TYu__.js";import{c as v}from"../assets/combineLatest-BN0_WcEG.js";import"../assets/mergeMap-g-JGW99j.js";import"../assets/innerFrom-FMZwm2mb.js";import"../assets/executeSchedule-C0acKsif.js";import"../assets/mapOneOrManyArgs-Bdu6mo6S.js";function I(){return C(1)}function d(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return I()(k(e,h(e)))}function o(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var s=h(e);return g(function(i,a){(s?d(e,i,s):d(e,i)).subscribe(a)})}var L=Object.getOwnPropertyDescriptor,S=(e,t,s,i)=>{for(var a=i>1?void 0:i?L(t,s):t,r=e.length-1,p;r>=0;r--)(p=e[r])&&(a=p(a)||a);return a};let l=class extends m{constructor(){super(...arguments),this.subscriptions=[],this.clickHandler=()=>{},this.recipeId="",this.status="add",this.planner=!1,this.recipeCta=null,this.guests=4,this.standalone=!1,this.inBasket=!1}connectedCallback(){super.connectedCallback(),this.getInitialStatus(),b().then(()=>{this.setupClickHandler(),this.setupSubscriptions()}).catch(e=>{console.warn("Failed to initialize SDK subscriptions:",e)})}setupSubscriptions(){const e=n.basket.recipePricesInBasket$().pipe(u(t=>t.some(s=>s.id===this.recipeId)),c(),o(!1));this.subscriptions.push(v([n.planner.isRecipeInMenu$(this.recipeId).pipe(o(!1),c()),e]).pipe(u(([t,s])=>this.planner?s?"in-basket":t?"in-menu":"add":s?"in-basket":"add"),c()).subscribe(t=>this.updateStatus(t)))}disconnectedCallback(){super.disconnectedCallback(),this.subscriptions.forEach(e=>e.unsubscribe()),this.removeClickHandler()}render(){this.recipeCta=this.querySelector(".mealz-recipe-card-cta"),this.recipeCta&&this.updateStatus(this.status)}getInitialStatus(){const e=this.attributes.getNamedItem("starting-data"),t=(e==null?void 0:e.value)||"{}",s=JSON.parse(t);if(s){if(s.recipeId)this.recipeId=s.recipeId,this.guests=s.guests||4,this.standalone=!0,this.inBasket=s.inBasket||!1,this.planner=s.planner||!1,this.status=s.status||"add",this.updateDOM(this.inBasket);else{const i=e==null?void 0:e.value;this.recipeId=i||"",this.standalone=!1;const a=this.classList.contains("in-basket");this.updateDOM(a)}if(this.removeAttribute("starting-data"),this.planner)this.updateStatus(this.status);else{const i=this.classList.contains("in-basket");this.updateStatus(i?"in-basket":"add")}}}setupClickHandler(){this.standalone&&(this.recipeCta=this.querySelector(".mealz-recipe-card-cta"),this.recipeCta&&(this.clickHandler=()=>{n.recipes.openDetails(this.recipeId,this.guests,0,"/recipes")},this.recipeCta.addEventListener("click",this.clickHandler)))}removeClickHandler(){this.recipeCta&&this.clickHandler&&this.recipeCta.removeEventListener("click",this.clickHandler)}updateStatus(e){this.recipeCta&&(this.recipeCta.classList.remove("hidden"),this.status!==e&&(this.status=e,this.recipeCta.classList.remove("in-basket","in-menu","add"),this.recipeCta.classList.add(this.status),this.recipeCta.classList.toggle("primary",this.status==="add"),this.recipeCta.classList.toggle("secondary",this.status!=="add"),this.updateButtonState(),this.updateImages()))}updateButtonState(){this.recipeCta&&(this.planner&&this.status==="in-basket"?this.recipeCta.setAttribute("disabled","true"):this.recipeCta.removeAttribute("disabled"))}updateImages(){if(!this.recipeCta)return;this.recipeCta.querySelectorAll("img").forEach(t=>{t.classList.contains(this.status)?t.classList.remove("hidden"):t.classList.add("hidden")})}getStatus(){return this.status}updateDOM(e){const t=this.querySelector(".mealz-recipe-card-cta");t&&(t.classList.remove("hidden"),e?(t.classList.replace("primary","secondary"),t.classList.add("in-basket")):(t.classList.replace("secondary","primary"),t.classList.remove("in-basket")))}};l=S([f("mealz-recipe-card-cta")],l);customElements.get("mealz-recipe-card-cta")||customElements.define("mealz-recipe-card-cta",l);