ng-miam 9.2.2 → 9.2.4

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 (37) hide show
  1. package/bundles/ng-miam.umd.js +20 -60
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +1 -1
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_models/basket.js +2 -9
  6. package/esm2015/lib/_services/baskets.service.js +2 -22
  7. package/esm2015/lib/_services/context.service.js +3 -4
  8. package/esm2015/lib/_services/items.service.js +2 -2
  9. package/esm2015/lib/_services/recipes.service.js +3 -3
  10. package/esm2015/lib/_types/builded/mealz-interface.js +1 -1
  11. package/esm2015/lib/_types/builded/mealz-internal-interface.js +1 -1
  12. package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +2 -3
  13. package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +4 -3
  14. package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +2 -2
  15. package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +2 -2
  16. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +2 -2
  17. package/esm2015/lib/_web-components/recipe-pricing/recipe-pricing.component.js +6 -12
  18. package/esm2015/lib/environments/version.js +2 -2
  19. package/fesm2015/ng-miam.js +20 -54
  20. package/fesm2015/ng-miam.js.map +1 -1
  21. package/lib/_models/basket.d.ts +0 -3
  22. package/lib/_models/basket.d.ts.map +1 -1
  23. package/lib/_services/baskets.service.d.ts +0 -2
  24. package/lib/_services/baskets.service.d.ts.map +1 -1
  25. package/lib/_services/context.service.d.ts.map +1 -1
  26. package/lib/_services/recipes.service.d.ts +1 -1
  27. package/lib/_services/recipes.service.d.ts.map +1 -1
  28. package/lib/_types/builded/mealz-interface.d.ts +0 -6
  29. package/lib/_types/builded/mealz-interface.d.ts.map +1 -1
  30. package/lib/_types/builded/mealz-internal-interface.d.ts +1 -1
  31. package/lib/_types/builded/mealz-internal-interface.d.ts.map +1 -1
  32. package/lib/_web-components/meals-planner/meals-planner.component.d.ts +0 -1
  33. package/lib/_web-components/meals-planner/meals-planner.component.d.ts.map +1 -1
  34. package/lib/_web-components/recipe-pricing/recipe-pricing.component.d.ts +0 -1
  35. package/lib/_web-components/recipe-pricing/recipe-pricing.component.d.ts.map +1 -1
  36. package/lib/environments/version.d.ts +1 -1
  37. package/package.json +1 -1
@@ -116,18 +116,13 @@ export class RecipePricingComponent {
116
116
  this.inViewport = true;
117
117
  this.priceSet = new EventEmitter();
118
118
  this.loading = true;
119
- this.pricebookKey = new BehaviorSubject('');
120
119
  this.subscriptions = [];
121
120
  this.guests$ = new BehaviorSubject(0);
122
121
  this.isInView$ = new BehaviorSubject(false);
123
122
  }
124
123
  ngOnInit() {
125
124
  this.isInView$.next(this.inViewport);
126
- this.subscriptions.push(this.basketsService.basket$.pipe(skipWhile(b => !b)).subscribe(b => {
127
- if (b.pricebookKey !== this.pricebookKey.value) {
128
- this.pricebookKey.next(b.pricebookKey);
129
- }
130
- }));
125
+ this.subscriptions.push(this.basketsService.basket$.pipe(skipWhile(b => !b)).subscribe());
131
126
  }
132
127
  ngOnChanges(changes) {
133
128
  if (changes.serves) {
@@ -185,12 +180,11 @@ export class RecipePricingComponent {
185
180
  this.posService.waitForPos,
186
181
  this.isInView$,
187
182
  this.guests$,
188
- this.pricebookKey,
189
183
  this.basketsService.recipeIsInBasket(this.recipeId)
190
184
  ]).pipe(skipWhile(results => !results[1] || !results[3])).subscribe(results => {
191
185
  this.pos = results[0];
192
186
  // fetch the price if the recipe isn't in the basket and if it was last time we check or on startup
193
- if (!results[4] && wasInBasketBefore !== false && this.inViewport) {
187
+ if (!results[3] && wasInBasketBefore !== false && this.inViewport) {
194
188
  this.loading = true;
195
189
  this.cdr.detectChanges();
196
190
  if (this.onChangesSubscription) {
@@ -198,7 +192,7 @@ export class RecipePricingComponent {
198
192
  }
199
193
  this.onChangesSubscription = this.fetchPricing().subscribe();
200
194
  }
201
- wasInBasketBefore = results[4];
195
+ wasInBasketBefore = results[3];
202
196
  });
203
197
  }
204
198
  initPricingFromBasketChanges() {
@@ -208,7 +202,7 @@ export class RecipePricingComponent {
208
202
  this.pos = results[0];
209
203
  const recipeLine = results[1].find(l => { var _a, _b; return l.isRecipe && ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = this.recipeId) === null || _b === void 0 ? void 0 : _b.toString()); });
210
204
  if (!!recipeLine) {
211
- return this.recipesService.getPricing(this.recipeId, this.pos.id, this.pricebookKey.value, this.serves).pipe(switchMap(pricing => {
205
+ return this.recipesService.getPricing(this.recipeId, this.pos.id, this.serves).pipe(switchMap(pricing => {
212
206
  return this.extractPricing(recipeLine, pricing);
213
207
  }));
214
208
  }
@@ -219,7 +213,7 @@ export class RecipePricingComponent {
219
213
  if (!this.recipeId || !this.pos || !this.serves) {
220
214
  return of(null);
221
215
  }
222
- return this.recipesService.getPricing(this.recipeId, this.pos.id, this.pricebookKey.value, this.serves).pipe(skipWhile(result => result.price === 0), tap((result) => {
216
+ return this.recipesService.getPricing(this.recipeId, this.pos.id, this.serves).pipe(skipWhile(result => result.price === 0), tap((result) => {
223
217
  this.pricing = result;
224
218
  this.format();
225
219
  this.loading = false;
@@ -301,4 +295,4 @@ RecipePricingComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipePricingCompo
301
295
  }], priceSet: [{
302
296
  type: Output
303
297
  }] }); })();
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXByaWNpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtcHJpY2luZy9yZWNpcGUtcHJpY2luZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1wcmljaW5nL3JlY2lwZS1wcmljaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztJQ1QzRCw0QkFBaUQ7SUFBakQsZ0JBQWlEO0lBQVMsaUJBQU87OztJQUNqRSw0QkFBNEM7SUFBQSxZQUFnQjtJQUFBLGlCQUFPOzs7SUFBdkIsZUFBZ0I7SUFBaEIsdUNBQWdCOzs7SUFIOUQsK0JBQ29EO0lBQ2xELDRGQUFpRTtJQUNqRSw0RkFBbUU7SUFDckUsaUJBQU07OztJQUZHLGVBQW1DO0lBQW5DLDJEQUFt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RUksUUFBUTtrQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFza2V0UHJldmlld0xpbmUsIFBvaW50T2ZTYWxlLCBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZVByaWNpbmcgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3JlY2lwZS1wcmljaW5nJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlLCBQb2ludE9mU2FsZXNTZXJ2aWNlLCBQcmljZVNlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEN1cnJlbmN5U2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtcHJpY2luZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtcHJpY2luZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1wcmljaW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZVByaWNpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcmVjaXBlSWQ6IHN0cmluZztcbiAgQElucHV0KCkgcmVjaXBlRXh0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgc2VydmVzOiBudW1iZXI7XG4gIEBJbnB1dCgpIGd1ZXN0c1RleHQ7XG4gIEBJbnB1dCgpIGZldGNoUHJpY2luZ09uU2Nyb2xsID0gdHJ1ZTtcbiAgQElucHV0KCkgaW5WaWV3cG9ydCA9IHRydWU7XG5cbiAgQE91dHB1dCgpIHByaWNlU2V0ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNpcGVQcmljaW5nPigpO1xuXG4gIHByaWNpbmc6IFJlY2lwZVByaWNpbmc7XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBpbnRlZ2VyUGFydDogc3RyaW5nO1xuICBkZWNpbWFsUGFydDogc3RyaW5nO1xuICB0b3RhbDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcG9zOiBQb2ludE9mU2FsZTtcbiAgcHJpdmF0ZSBwcmljZWJvb2tLZXkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgb25DaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZ3Vlc3RzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBpc0luVmlldyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcHJpY2VTZXJ2aWNlOiBQcmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHB1YmxpYyBjdXJyZW5jeVNlcnZpY2U6IEN1cnJlbmN5U2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5WaWV3JC5uZXh0KHRoaXMuaW5WaWV3cG9ydCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldCQucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKGIgPT4gIWIpXG4gICAgICApLnN1YnNjcmliZShiID0+IHtcbiAgICAgICAgaWYgKGIucHJpY2Vib29rS2V5ICE9PSB0aGlzLnByaWNlYm9va0tleS52YWx1ZSkge1xuICAgICAgICAgIHRoaXMucHJpY2Vib29rS2V5Lm5leHQoYi5wcmljZWJvb2tLZXkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc2VydmVzKSB7XG4gICAgICBjb25zdCBwcmV2aW91c0d1ZXN0cyA9IHRoaXMuZ3Vlc3RzJC52YWx1ZTtcbiAgICAgIHRoaXMuZ3Vlc3RzJC5uZXh0KHRoaXMuc2VydmVzKTtcbiAgICAgIC8vIFRoZSBwcmljaW5nIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBndWVzdHMgaWYgY2FsbGVkIHN0YW5kYWxvbmUgLT4gd2l0aCBhIHJlY2lwZUV4dElkICYmIHJlY2lwZSB3YXMgZmV0Y2hlZCAmJiBndWVzdHMgaGF2ZSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy5yZWNpcGVFeHRJZCAmJiB0aGlzLnJlY2lwZUlkICYmIHByZXZpb3VzR3Vlc3RzID4gMCAmJiBwcmV2aW91c0d1ZXN0cyAhPT0gdGhpcy5zZXJ2ZXMpIHtcbiAgICAgICAgdGhpcy51cGRhdGVSZWNpcGVHdWVzdHMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMucmVjaXBlSWQgfHwgY2hhbmdlcy5yZWNpcGVFeHRJZCkge1xuICAgICAgdGhpcy5pbml0UHJpY2luZygpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5pblZpZXdwb3J0KSB7XG4gICAgICB0aGlzLmlzSW5WaWV3JC5uZXh0KHRoaXMuaW5WaWV3cG9ydCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vbkNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpbml0UHJpY2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuaW5pdFJlY2lwZUZvckV4dElkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucmVjaXBlSWQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMuaW5pdFByaWNpbmdGcm9tQmFza2V0Q2hhbmdlcygpLnN1YnNjcmliZSgpLFxuICAgICAgICAgICAgdGhpcy5pbml0UHJpY2luZ0Zyb21HdWVzdHNBbmRWaWV3UG9ydCgpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgaW5pdFJlY2lwZUZvckV4dElkKCk6IE9ic2VydmFibGU8UmVjaXBlPiB7XG4gICAgaWYgKCEodGhpcy5yZWNpcGVJZD8ubGVuZ3RoID4gMCkgJiYgdGhpcy5yZWNpcGVFeHRJZD8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVjaXBlc1NlcnZpY2Uuc2VhcmNoUmVjaXBlQnlFeHRJZCh0aGlzLnJlY2lwZUV4dElkKS5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMucmVjaXBlSWQgPSByZXNwb25zZT8uaWQgfHwgbnVsbDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YobnVsbCBhcyBSZWNpcGUpO1xuICB9XG5cbiAgb3BlblN0b3JlTG9jYXRvcihlOiBFdmVudCk6IHZvaWQge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuU3RvcmVMb2NhdG9yKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJlY2lwZUd1ZXN0cygpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLnVwZGF0ZVJlY2lwZXNJbkJhc2tldChcbiAgICAgIFt0aGlzLnJlY2lwZUlkXSxcbiAgICAgIHRoaXMuZ3Vlc3RzJC52YWx1ZSxcbiAgICAgIHsgb3JpZ2luUGF0aDogJycsIHByb3BzOiB7IHJlY2lwZV9pZDogdGhpcy5yZWNpcGVJZCB9IH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UHJpY2luZ0Zyb21HdWVzdHNBbmRWaWV3UG9ydCgpOiBTdWJzY3JpcHRpb24ge1xuICAgIC8vIElmIHRoZSByZWNpcGUgaXMgaW4gYmFza2V0LCB3ZSBpZ25vcmUgdGhlIGNoYW5nZSA9PiBwcmljaW5nIHdpbGwgYmUgdXBkYXRlZCB3aGVuIHRoZSBuZXcgYmFza2V0IHByZXZpZXcgaXMgcmVhZHlcbiAgICAvLyBBZnRlciB0aGUgc2hhbGxvdyBjb3B5IHdpdGggZXZlbnRzIG9mIHRoZSByZWNpcGUsIG5nT25DaGFuZ2VzIGlzIGNhbGxlZCBhZ2FpbiBiZWNhdXNlIHRoZSByZWNpcGUgb2JqZWN0IGlzIGRpZmZlcmVudFxuICAgIC8vIFNvIGlmIGNoYW5nZXMgY29udGFpbnMgb25seSBhIHJlY2lwZSBhbmQgbm8gc2VydmVzLCB3ZSBhbHNvIGF2b2lkIHJlLWZldGNoaW5nXG4gICAgbGV0IHdhc0luQmFza2V0QmVmb3JlOiBib29sZWFuO1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucG9zU2VydmljZS53YWl0Rm9yUG9zLFxuICAgICAgdGhpcy5pc0luVmlldyQsXG4gICAgICB0aGlzLmd1ZXN0cyQsXG4gICAgICB0aGlzLnByaWNlYm9va0tleSxcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVjaXBlSXNJbkJhc2tldCh0aGlzLnJlY2lwZUlkKVxuICAgIF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0cyA9PiAhcmVzdWx0c1sxXSB8fCAhcmVzdWx0c1szXSlcbiAgICApLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgIHRoaXMucG9zID0gcmVzdWx0c1swXTtcbiAgICAgIC8vIGZldGNoIHRoZSBwcmljZSBpZiB0aGUgcmVjaXBlIGlzbid0IGluIHRoZSBiYXNrZXQgYW5kIGlmIGl0IHdhcyBsYXN0IHRpbWUgd2UgY2hlY2sgb3Igb24gc3RhcnR1cFxuICAgICAgaWYgKCFyZXN1bHRzWzRdICYmIHdhc0luQmFza2V0QmVmb3JlICE9PSBmYWxzZSAmJiB0aGlzLmluVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZXNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25DaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5mZXRjaFByaWNpbmcoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHdhc0luQmFza2V0QmVmb3JlID0gcmVzdWx0c1s0XTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFByaWNpbmdGcm9tQmFza2V0Q2hhbmdlcygpOiBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmc+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnBvc1NlcnZpY2UucG9zJCwgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRQcmV2aWV3JCwgdGhpcy5pc0luVmlldyRcbiAgICBdKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdHMgPT4gIXJlc3VsdHNbMF0gfHwgIXJlc3VsdHNbMV0gfHwgIXJlc3VsdHNbMl0pLFxuICAgICAgc3dpdGNoTWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICB0aGlzLnBvcyA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IHJlY2lwZUxpbmUgPSByZXN1bHRzWzFdLmZpbmQobCA9PiBsLmlzUmVjaXBlICYmIGwuaWQ/LnRvU3RyaW5nKCkgPT09IHRoaXMucmVjaXBlSWQ/LnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAoISFyZWNpcGVMaW5lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlc1NlcnZpY2UuZ2V0UHJpY2luZyh0aGlzLnJlY2lwZUlkLCB0aGlzLnBvcy5pZCwgdGhpcy5wcmljZWJvb2tLZXkudmFsdWUsIHRoaXMuc2VydmVzKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHByaWNpbmcgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRyYWN0UHJpY2luZyhyZWNpcGVMaW5lLCBwcmljaW5nKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YobnVsbCBhcyBSZWNpcGVQcmljaW5nKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hQcmljaW5nKCk6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz4ge1xuICAgIGlmICghdGhpcy5yZWNpcGVJZCB8fCAhdGhpcy5wb3MgfHwgIXRoaXMuc2VydmVzKSB7XG4gICAgICByZXR1cm4gKG9mKG51bGwpIGFzIE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZWNpcGVzU2VydmljZS5nZXRQcmljaW5nKHRoaXMucmVjaXBlSWQsIHRoaXMucG9zLmlkLCB0aGlzLnByaWNlYm9va0tleS52YWx1ZSwgdGhpcy5zZXJ2ZXMpLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5wcmljZSA9PT0gMCksXG4gICAgICB0YXAoKHJlc3VsdDogUmVjaXBlUHJpY2luZykgPT4ge1xuICAgICAgICB0aGlzLnByaWNpbmcgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMuZm9ybWF0KCk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByaWNlU2V0LmVtaXQocmVzdWx0KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0UHJpY2luZyhyZWNpcGVMaW5lOiBCYXNrZXRQcmV2aWV3TGluZSwgZmV0Y2hlZFByaWNlOiBSZWNpcGVQcmljaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nPiB7XG4gICAgdGhpcy5wcmljaW5nID0gbmV3IFJlY2lwZVByaWNpbmcoe1xuICAgICAgcHJpY2U6IHBhcnNlRmxvYXQocmVjaXBlTGluZS5wcmljZSksXG4gICAgICBzZXJ2ZXM6IHJlY2lwZUxpbmUuY291bnQsXG4gICAgICAncHJpY2UtcGVyLXNlcnZlJzogcGFyc2VGbG9hdChyZWNpcGVMaW5lLnByaWNlKSAvIHJlY2lwZUxpbmUuY291bnQsXG4gICAgICAnZGlzY291bnRlZC1pbmdyZWRpZW50cy1jb3VudCc6IGZldGNoZWRQcmljZVsnZGlzY291bnRlZC1pbmdyZWRpZW50cy1jb3VudCddXG4gICAgfSk7XG4gICAgdGhpcy5mb3JtYXQoKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnByaWNlU2V0LmVtaXQodGhpcy5wcmljaW5nKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIG9mKHRoaXMucHJpY2luZyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnByaWNpbmdbJ3ByaWNlLXBlci1zZXJ2ZSddLnRvRml4ZWQoMikudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICAgIHRoaXMuaW50ZWdlclBhcnQgPSB2YWx1ZXNbMF07XG4gICAgdGhpcy5kZWNpbWFsUGFydCA9IHZhbHVlcy5sZW5ndGggPT09IDIgPyB2YWx1ZXNbMV0gOiAnMDAnO1xuICAgIHRoaXMudG90YWwgPSB0aGlzLnByaWNpbmcucHJpY2UudG9GaXhlZCgyKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXByaWNpbmdcIiAqbmdJZj1cInJlY2lwZUlkPy5sZW5ndGggPiAwXCIgbmdNaWFtU2VsZWN0UG9zQnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtcHJpY2luZ19fd2l0aC1wb3NcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXByaWNpbmdfX3dyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1wcmljaW5nX193cmFwcGVyX19wcmljZSBtaWFtLWRzLXRleHQgc2l6ZS1sIHdlaWdodC14eGxcIj5cbiAgICAgICAgPHNwYW4+e3sgaW50ZWdlclBhcnQgfX0sPC9zcGFuPlxuICAgICAgICA8c3Bhbj57eyBkZWNpbWFsUGFydCB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4+IHt7IGN1cnJlbmN5U2VydmljZS5zeW1ib2wgfX0gPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtcHJpY2luZ19fd3JhcHBlcl9fc3VibGluZSBtaWFtLWRzLXRleHQgc2l6ZS14cyB3ZWlnaHQtbVwiXG4gICAgICAgICpuZ0lmPVwiZ3Vlc3RzVGV4dD8ubGVuZ3RoIGVsc2UgZGVmYXVsdEd1ZXN0c1RleHRcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJndWVzdHNUZXh0ID09PSAncGFyLXBlcnNvbm5lJ1wiIGkxOG4+L3BlcnNvbm5lPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImd1ZXN0c1RleHQgIT09ICdwYXItcGVyc29ubmUnXCI+e3sgZ3Vlc3RzVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R3Vlc3RzVGV4dD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXByaWNpbmdfX3dyYXBwZXJfX3N1YmxpbmUgbWlhbS1kcy10ZXh0IHNpemUtbSB3ZWlnaHQtbVwiIGkxOG4+L3BlcnMuPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1wcmljaW5nX190b3RhbFwiPlxuICAgICAgPHNwYW4gaTE4bj5Tb2l0PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgdG90YWwgfX08L3NwYW4+XG4gICAgICA8c3Bhbj57eyBjdXJyZW5jeVNlcnZpY2Uuc3ltYm9sIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXByaWNpbmdfX3dpdGhvdXQtcG9zXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm1pYW0tZHMtYnV0dG9uIGdob3N0IG1pYW0tc2VsZWN0LXBvcy1idXR0b25fX29wZW4tc3RvcmUtc2VsZWN0b3ItYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5TdG9yZUxvY2F0b3IoJGV2ZW50KVwiPlxuICAgICAgPHNwYW4gaTE4bj5BZmZpY2hlciBsZSBwcml4PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXByaWNpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtcHJpY2luZy9yZWNpcGUtcHJpY2luZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1wcmljaW5nL3JlY2lwZS1wcmljaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztJQ1QzRCw0QkFBaUQ7SUFBakQsZ0JBQWlEO0lBQVMsaUJBQU87OztJQUNqRSw0QkFBNEM7SUFBQSxZQUFnQjtJQUFBLGlCQUFPOzs7SUFBdkIsZUFBZ0I7SUFBaEIsdUNBQWdCOzs7SUFIOUQsK0JBQ29EO0lBQ2xELDRGQUFpRTtJQUNqRSw0RkFBbUU7SUFDckUsaUJBQU07OztJQUZHLGVBQW1DO0lBQW5DLDJEQUFt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QUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7OzRGQTFMVSxzQkFBc0I7MkRBQXRCLHNCQUFzQjs7Ozs7aUJDSGxCLFVBQUEsaUZBQWdCOzs7Ozs7aUJBUGhCLFVBQUEscUVBQUk7Ozs7OztpQkFSb0MsVUFBQSx5RUFBUzs7Ozs7O2lCQUkyQixVQUFBLHVFQUFNOztRQWRuRyx1RUE0Qk07O1FBNUI0Qiw4RUFBMEI7O3VGRDRCL0Msc0JBQXNCO2NBUGxDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztnQkFDOUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2tQQUVVLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFFSSxRQUFRO2tCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZSwgUG9pbnRPZlNhbGUsIFJlY2lwZSB9IGZyb20gJy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgUmVjaXBlUHJpY2luZyB9IGZyb20gJy4uLy4uL19tb2RlbHMvcmVjaXBlLXByaWNpbmcnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UsIFBvaW50T2ZTYWxlc1NlcnZpY2UsIFByaWNlU2VydmljZSwgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgQ3VycmVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2N1cnJlbmN5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1wcmljaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1wcmljaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLXByaWNpbmcuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlUHJpY2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSByZWNpcGVJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWNpcGVFeHRJZDogc3RyaW5nO1xuICBASW5wdXQoKSBzZXJ2ZXM6IG51bWJlcjtcbiAgQElucHV0KCkgZ3Vlc3RzVGV4dDtcbiAgQElucHV0KCkgZmV0Y2hQcmljaW5nT25TY3JvbGwgPSB0cnVlO1xuICBASW5wdXQoKSBpblZpZXdwb3J0ID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgcHJpY2VTZXQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZVByaWNpbmc+KCk7XG5cbiAgcHJpY2luZzogUmVjaXBlUHJpY2luZztcbiAgbG9hZGluZyA9IHRydWU7XG4gIGludGVnZXJQYXJ0OiBzdHJpbmc7XG4gIGRlY2ltYWxQYXJ0OiBzdHJpbmc7XG4gIHRvdGFsOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBwb3M6IFBvaW50T2ZTYWxlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgb25DaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZ3Vlc3RzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBpc0luVmlldyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcHJpY2VTZXJ2aWNlOiBQcmljZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHB1YmxpYyBjdXJyZW5jeVNlcnZpY2U6IEN1cnJlbmN5U2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5WaWV3JC5uZXh0KHRoaXMuaW5WaWV3cG9ydCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldCQucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKGIgPT4gIWIpXG4gICAgICApLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zZXJ2ZXMpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzR3Vlc3RzID0gdGhpcy5ndWVzdHMkLnZhbHVlO1xuICAgICAgdGhpcy5ndWVzdHMkLm5leHQodGhpcy5zZXJ2ZXMpO1xuICAgICAgLy8gVGhlIHByaWNpbmcgb25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGd1ZXN0cyBpZiBjYWxsZWQgc3RhbmRhbG9uZSAtPiB3aXRoIGEgcmVjaXBlRXh0SWQgJiYgcmVjaXBlIHdhcyBmZXRjaGVkICYmIGd1ZXN0cyBoYXZlIGNoYW5nZWRcbiAgICAgIGlmICh0aGlzLnJlY2lwZUV4dElkICYmIHRoaXMucmVjaXBlSWQgJiYgcHJldmlvdXNHdWVzdHMgPiAwICYmIHByZXZpb3VzR3Vlc3RzICE9PSB0aGlzLnNlcnZlcykge1xuICAgICAgICB0aGlzLnVwZGF0ZVJlY2lwZUd1ZXN0cygpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5yZWNpcGVJZCB8fCBjaGFuZ2VzLnJlY2lwZUV4dElkKSB7XG4gICAgICB0aGlzLmluaXRQcmljaW5nKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmluVmlld3BvcnQpIHtcbiAgICAgIHRoaXMuaXNJblZpZXckLm5leHQodGhpcy5pblZpZXdwb3J0KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VzU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRQcmljaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5pbml0UmVjaXBlRm9yRXh0SWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5yZWNpcGVJZD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5pbml0UHJpY2luZ0Zyb21CYXNrZXRDaGFuZ2VzKCkuc3Vic2NyaWJlKCksXG4gICAgICAgICAgICB0aGlzLmluaXRQcmljaW5nRnJvbUd1ZXN0c0FuZFZpZXdQb3J0KClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpbml0UmVjaXBlRm9yRXh0SWQoKTogT2JzZXJ2YWJsZTxSZWNpcGU+IHtcbiAgICBpZiAoISh0aGlzLnJlY2lwZUlkPy5sZW5ndGggPiAwKSAmJiB0aGlzLnJlY2lwZUV4dElkPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVzU2VydmljZS5zZWFyY2hSZWNpcGVCeUV4dElkKHRoaXMucmVjaXBlRXh0SWQpLnBpcGUoXG4gICAgICAgIHRhcChyZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWNpcGVJZCA9IHJlc3BvbnNlPy5pZCB8fCBudWxsO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZihudWxsIGFzIFJlY2lwZSk7XG4gIH1cblxuICBvcGVuU3RvcmVMb2NhdG9yKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLm9wZW5TdG9yZUxvY2F0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUmVjaXBlR3Vlc3RzKCk6IHZvaWQge1xuICAgIHRoaXMuYmFza2V0c1NlcnZpY2UudXBkYXRlUmVjaXBlc0luQmFza2V0KFxuICAgICAgW3RoaXMucmVjaXBlSWRdLFxuICAgICAgdGhpcy5ndWVzdHMkLnZhbHVlLFxuICAgICAgeyBvcmlnaW5QYXRoOiAnJywgcHJvcHM6IHsgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZUlkIH0gfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQcmljaW5nRnJvbUd1ZXN0c0FuZFZpZXdQb3J0KCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgLy8gSWYgdGhlIHJlY2lwZSBpcyBpbiBiYXNrZXQsIHdlIGlnbm9yZSB0aGUgY2hhbmdlID0+IHByaWNpbmcgd2lsbCBiZSB1cGRhdGVkIHdoZW4gdGhlIG5ldyBiYXNrZXQgcHJldmlldyBpcyByZWFkeVxuICAgIC8vIEFmdGVyIHRoZSBzaGFsbG93IGNvcHkgd2l0aCBldmVudHMgb2YgdGhlIHJlY2lwZSwgbmdPbkNoYW5nZXMgaXMgY2FsbGVkIGFnYWluIGJlY2F1c2UgdGhlIHJlY2lwZSBvYmplY3QgaXMgZGlmZmVyZW50XG4gICAgLy8gU28gaWYgY2hhbmdlcyBjb250YWlucyBvbmx5IGEgcmVjaXBlIGFuZCBubyBzZXJ2ZXMsIHdlIGFsc28gYXZvaWQgcmUtZmV0Y2hpbmdcbiAgICBsZXQgd2FzSW5CYXNrZXRCZWZvcmU6IGJvb2xlYW47XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MsXG4gICAgICB0aGlzLmlzSW5WaWV3JCxcbiAgICAgIHRoaXMuZ3Vlc3RzJCxcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVjaXBlSXNJbkJhc2tldCh0aGlzLnJlY2lwZUlkKVxuICAgIF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0cyA9PiAhcmVzdWx0c1sxXSB8fCAhcmVzdWx0c1szXSlcbiAgICApLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgIHRoaXMucG9zID0gcmVzdWx0c1swXTtcbiAgICAgIC8vIGZldGNoIHRoZSBwcmljZSBpZiB0aGUgcmVjaXBlIGlzbid0IGluIHRoZSBiYXNrZXQgYW5kIGlmIGl0IHdhcyBsYXN0IHRpbWUgd2UgY2hlY2sgb3Igb24gc3RhcnR1cFxuICAgICAgaWYgKCFyZXN1bHRzWzNdICYmIHdhc0luQmFza2V0QmVmb3JlICE9PSBmYWxzZSAmJiB0aGlzLmluVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZXNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25DaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5mZXRjaFByaWNpbmcoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHdhc0luQmFza2V0QmVmb3JlID0gcmVzdWx0c1szXTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFByaWNpbmdGcm9tQmFza2V0Q2hhbmdlcygpOiBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmc+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnBvc1NlcnZpY2UucG9zJCwgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRQcmV2aWV3JCwgdGhpcy5pc0luVmlldyRcbiAgICBdKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdHMgPT4gIXJlc3VsdHNbMF0gfHwgIXJlc3VsdHNbMV0gfHwgIXJlc3VsdHNbMl0pLFxuICAgICAgc3dpdGNoTWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICB0aGlzLnBvcyA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IHJlY2lwZUxpbmUgPSByZXN1bHRzWzFdLmZpbmQobCA9PiBsLmlzUmVjaXBlICYmIGwuaWQ/LnRvU3RyaW5nKCkgPT09IHRoaXMucmVjaXBlSWQ/LnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAoISFyZWNpcGVMaW5lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlc1NlcnZpY2UuZ2V0UHJpY2luZyh0aGlzLnJlY2lwZUlkLCB0aGlzLnBvcy5pZCwgdGhpcy5zZXJ2ZXMpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAocHJpY2luZyA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RQcmljaW5nKHJlY2lwZUxpbmUsIHByaWNpbmcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsIGFzIFJlY2lwZVByaWNpbmcpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFByaWNpbmcoKTogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nPiB7XG4gICAgaWYgKCF0aGlzLnJlY2lwZUlkIHx8ICF0aGlzLnBvcyB8fCAhdGhpcy5zZXJ2ZXMpIHtcbiAgICAgIHJldHVybiAob2YobnVsbCkgYXMgT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nPik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmdldFByaWNpbmcodGhpcy5yZWNpcGVJZCwgdGhpcy5wb3MuaWQsIHRoaXMuc2VydmVzKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiByZXN1bHQucHJpY2UgPT09IDApLFxuICAgICAgdGFwKChyZXN1bHQ6IFJlY2lwZVByaWNpbmcpID0+IHtcbiAgICAgICAgdGhpcy5wcmljaW5nID0gcmVzdWx0O1xuICAgICAgICB0aGlzLmZvcm1hdCgpO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmljZVNldC5lbWl0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFByaWNpbmcocmVjaXBlTGluZTogQmFza2V0UHJldmlld0xpbmUsIGZldGNoZWRQcmljZTogUmVjaXBlUHJpY2luZyk6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz4ge1xuICAgIHRoaXMucHJpY2luZyA9IG5ldyBSZWNpcGVQcmljaW5nKHtcbiAgICAgIHByaWNlOiBwYXJzZUZsb2F0KHJlY2lwZUxpbmUucHJpY2UpLFxuICAgICAgc2VydmVzOiByZWNpcGVMaW5lLmNvdW50LFxuICAgICAgJ3ByaWNlLXBlci1zZXJ2ZSc6IHBhcnNlRmxvYXQocmVjaXBlTGluZS5wcmljZSkgLyByZWNpcGVMaW5lLmNvdW50LFxuICAgICAgJ2Rpc2NvdW50ZWQtaW5ncmVkaWVudHMtY291bnQnOiBmZXRjaGVkUHJpY2VbJ2Rpc2NvdW50ZWQtaW5ncmVkaWVudHMtY291bnQnXVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybWF0KCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5wcmljZVNldC5lbWl0KHRoaXMucHJpY2luZyk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiBvZih0aGlzLnByaWNpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXQoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5wcmljaW5nWydwcmljZS1wZXItc2VydmUnXS50b0ZpeGVkKDIpLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICB0aGlzLmludGVnZXJQYXJ0ID0gdmFsdWVzWzBdO1xuICAgIHRoaXMuZGVjaW1hbFBhcnQgPSB2YWx1ZXMubGVuZ3RoID09PSAyID8gdmFsdWVzWzFdIDogJzAwJztcbiAgICB0aGlzLnRvdGFsID0gdGhpcy5wcmljaW5nLnByaWNlLnRvRml4ZWQoMik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1wcmljaW5nXCIgKm5nSWY9XCJyZWNpcGVJZD8ubGVuZ3RoID4gMFwiIG5nTWlhbVNlbGVjdFBvc0J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXByaWNpbmdfX3dpdGgtcG9zXCIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1wcmljaW5nX193cmFwcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtcHJpY2luZ19fd3JhcHBlcl9fcHJpY2UgbWlhbS1kcy10ZXh0IHNpemUtbCB3ZWlnaHQteHhsXCI+XG4gICAgICAgIDxzcGFuPnt7IGludGVnZXJQYXJ0IH19LDwvc3Bhbj5cbiAgICAgICAgPHNwYW4+e3sgZGVjaW1hbFBhcnQgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuPiB7eyBjdXJyZW5jeVNlcnZpY2Uuc3ltYm9sIH19IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXByaWNpbmdfX3dyYXBwZXJfX3N1YmxpbmUgbWlhbS1kcy10ZXh0IHNpemUteHMgd2VpZ2h0LW1cIlxuICAgICAgICAqbmdJZj1cImd1ZXN0c1RleHQ/Lmxlbmd0aCBlbHNlIGRlZmF1bHRHdWVzdHNUZXh0XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZ3Vlc3RzVGV4dCA9PT0gJ3Bhci1wZXJzb25uZSdcIiBpMThuPi9wZXJzb25uZTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJndWVzdHNUZXh0ICE9PSAncGFyLXBlcnNvbm5lJ1wiPnt7IGd1ZXN0c1RleHQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEd1ZXN0c1RleHQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1wcmljaW5nX193cmFwcGVyX19zdWJsaW5lIG1pYW0tZHMtdGV4dCBzaXplLW0gd2VpZ2h0LW1cIiBpMThuPi9wZXJzLjwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtcHJpY2luZ19fdG90YWxcIj5cbiAgICAgIDxzcGFuIGkxOG4+U29pdDwvc3Bhbj5cbiAgICAgIDxzcGFuPnt7IHRvdGFsIH19PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgY3VycmVuY3lTZXJ2aWNlLnN5bWJvbCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1wcmljaW5nX193aXRob3V0LXBvc1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBnaG9zdCBtaWFtLXNlbGVjdC1wb3MtYnV0dG9uX19vcGVuLXN0b3JlLXNlbGVjdG9yLWJ1dHRvblwiIChjbGljayk9XCJvcGVuU3RvcmVMb2NhdG9yKCRldmVudClcIj5cbiAgICAgIDxzcGFuIGkxOG4+QWZmaWNoZXIgbGUgcHJpeDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export const VERSION = '9.2.2'; // TODO: replace by ##VERSION## and update it in the CI/CD
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9lbnZpcm9ubWVudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsMERBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnOS4yLjInOyAvLyBUT0RPOiByZXBsYWNlIGJ5ICMjVkVSU0lPTiMjIGFuZCB1cGRhdGUgaXQgaW4gdGhlIENJL0NEXG4iXX0=
1
+ export const VERSION = '9.2.4'; // TODO: replace by ##VERSION## and update it in the CI/CD
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1pYW0vc3JjL2xpYi9lbnZpcm9ubWVudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsMERBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnOS4yLjQnOyAvLyBUT0RPOiByZXBsYWNlIGJ5ICMjVkVSU0lPTiMjIGFuZCB1cGRhdGUgaXQgaW4gdGhlIENJL0NEXG4iXX0=
@@ -598,8 +598,7 @@ class Basket extends Resource {
598
598
  completion: { total: 0, found: 0 },
599
599
  'recipes-infos': [],
600
600
  'total-price': 0,
601
- token: null,
602
- 'pricebook-key': 'DEFAULT' // Will tell api which pricebook to use, will affect how api will get prices for items
601
+ token: null // token exposed only on basket confirmation (PATCH confirmed=true)
603
602
  };
604
603
  this.relationships = {
605
604
  'basket-entries': new DocumentCollection()
@@ -620,12 +619,6 @@ class Basket extends Resource {
620
619
  get token() {
621
620
  return this.attributes.token;
622
621
  }
623
- get pricebookKey() {
624
- return this.attributes['pricebook-key'];
625
- }
626
- set pricebookKey(key) {
627
- this.attributes['pricebook-key'] = key;
628
- }
629
622
  hasRecipe(recipeId) {
630
623
  var _a;
631
624
  return (_a = this.recipeInfos) === null || _a === void 0 ? void 0 : _a.some(info => info.id === recipeId);
@@ -2067,7 +2060,7 @@ var EventJourney;
2067
2060
  EventJourney["EMPTY"] = "";
2068
2061
  })(EventJourney || (EventJourney = {}));
2069
2062
 
2070
- const VERSION = '9.2.2'; // TODO: replace by ##VERSION## and update it in the CI/CD
2063
+ const VERSION = '9.2.4'; // TODO: replace by ##VERSION## and update it in the CI/CD
2071
2064
 
2072
2065
  class ContextRegistryService {
2073
2066
  constructor() {
@@ -3962,11 +3955,11 @@ class RecipesService extends Service {
3962
3955
  return null;
3963
3956
  }));
3964
3957
  }
3965
- getPricing(recipeId, posId, pricebookKey, serves = null) {
3958
+ getPricing(recipeId, posId, serves = null) {
3966
3959
  if (!recipeId) {
3967
3960
  return of(null);
3968
3961
  }
3969
- let url = MIAM_API_HOST$2 + `recipes/${recipeId}/pricing?point_of_sale_id=${posId}&pricebook_key=${pricebookKey}`;
3962
+ let url = MIAM_API_HOST$2 + `recipes/${recipeId}/pricing?point_of_sale_id=${posId}`;
3970
3963
  if (serves) {
3971
3964
  url += `&serves=${serves}`;
3972
3965
  }
@@ -4152,7 +4145,7 @@ StatesService.ɵprov = i0.ɵɵdefineInjectable({ token: StatesService, factory:
4152
4145
  }], function () { return []; }, null); })();
4153
4146
 
4154
4147
  const BASKET_SPARSE_FIELDS = {
4155
- baskets: ['total-price', 'pricebook-key', 'recipes-infos', 'completion', 'status']
4148
+ baskets: ['total-price', 'recipes-infos', 'completion', 'status']
4156
4149
  };
4157
4150
  class BasketsService extends Service {
4158
4151
  constructor(http, basketEntriesService, posService, recipesService, analyticsService, usersService, toasterService, ignoredBasketsService, statesService, priceService) {
@@ -4533,26 +4526,6 @@ class BasketsService extends Service {
4533
4526
  return entry;
4534
4527
  }));
4535
4528
  }
4536
- /** *********************************************************** PRICEBOOK *********************************************************** **/
4537
- // will patch basket with given pricebookName
4538
- // Api will look for prices (pos items) corresponding to this pricebook key
4539
- // fall case to a default pricebook
4540
- updatePricebook(pricebookName) {
4541
- if (!pricebookName) {
4542
- mealzDebug('[Miam] empty pricebook name');
4543
- return of(null);
4544
- }
4545
- return this.waitForBasket.pipe(switchMap(basket => {
4546
- if (basket.pricebookKey === pricebookName) {
4547
- mealzDebug(`[Mealz] same pricebook ${JSON.stringify(pricebookName)}`);
4548
- return of(null);
4549
- }
4550
- mealzDebug(`[Mealz] update pricebook to ${JSON.stringify(pricebookName)}`);
4551
- const patchUrl = `${environment$1.miamAPI}/api/v1/baskets/update_pricebook?` +
4552
- `point_of_sale_id=${this.posService.pos$.value.id}&pricebook_key=${pricebookName}`;
4553
- return this.http.patch(patchUrl, {}).pipe(switchMap((resp) => this.fillBasket(resp)));
4554
- }));
4555
- }
4556
4529
  /** ******************************************************** ADD FROM PICTURE ******************************************************** **/
4557
4530
  /**
4558
4531
  * Add entries to basket from a picture or file
@@ -6331,7 +6304,6 @@ class ContextService {
6331
6304
  reset: () => {
6332
6305
  this.resetBasket();
6333
6306
  },
6334
- updatePricebook: (pricebookName) => this.basketsService.updatePricebook(pricebookName),
6335
6307
  recipeCount: () => this.basketsService.waitForBasket.pipe(switchMap(() => this.basketsService.basketStats$), skipWhile(bs => !bs), map(bs => bs.recipesCount), distinctUntilChanged()),
6336
6308
  openPreview: (analyticsPath = '') => this.recipesService.openBasket(analyticsPath),
6337
6309
  overrideTransferUrl: (url) => {
@@ -6619,11 +6591,11 @@ class ContextService {
6619
6591
  recipeLikeUpdated: () => this.recipeLikesService.recipeLikeUpdated$,
6620
6592
  guestsUpdated: () => this.guestsChanged,
6621
6593
  recipePriceUpdated: () => this.recipePriceChanged,
6622
- fetchPricing: (recipeId, posId, pricebookKey, serves) => {
6594
+ fetchPricing: (recipeId, posId, serves) => {
6623
6595
  if (!recipeId || !posId || !serves) {
6624
6596
  return of(null);
6625
6597
  }
6626
- return this.recipesService.getPricing(recipeId, posId, pricebookKey, serves).pipe(skipWhile(result => result.price === 0));
6598
+ return this.recipesService.getPricing(recipeId, posId, serves).pipe(skipWhile(result => result.price === 0));
6627
6599
  }
6628
6600
  },
6629
6601
  supplier: {
@@ -8023,7 +7995,7 @@ class ItemsService extends Service {
8023
7995
  }
8024
7996
  getPriceForItem(selectedItemId) {
8025
7997
  return this.posService.waitForPos.pipe(take(1), switchMap(pos => {
8026
- const url = `${environment$1.miamAPI}/api/v1/items/${selectedItemId}/price?pricebook_key=DEFAULT&point_of_sale_id=${pos.id}`;
7998
+ const url = `${environment$1.miamAPI}/api/v1/items/${selectedItemId}/price?point_of_sale_id=${pos.id}`;
8027
7999
  return this.http.get(url);
8028
8000
  }), map((price) => ({
8029
8001
  unit: price.price,
@@ -10634,18 +10606,13 @@ class RecipePricingComponent {
10634
10606
  this.inViewport = true;
10635
10607
  this.priceSet = new EventEmitter();
10636
10608
  this.loading = true;
10637
- this.pricebookKey = new BehaviorSubject('');
10638
10609
  this.subscriptions = [];
10639
10610
  this.guests$ = new BehaviorSubject(0);
10640
10611
  this.isInView$ = new BehaviorSubject(false);
10641
10612
  }
10642
10613
  ngOnInit() {
10643
10614
  this.isInView$.next(this.inViewport);
10644
- this.subscriptions.push(this.basketsService.basket$.pipe(skipWhile(b => !b)).subscribe(b => {
10645
- if (b.pricebookKey !== this.pricebookKey.value) {
10646
- this.pricebookKey.next(b.pricebookKey);
10647
- }
10648
- }));
10615
+ this.subscriptions.push(this.basketsService.basket$.pipe(skipWhile(b => !b)).subscribe());
10649
10616
  }
10650
10617
  ngOnChanges(changes) {
10651
10618
  if (changes.serves) {
@@ -10703,12 +10670,11 @@ class RecipePricingComponent {
10703
10670
  this.posService.waitForPos,
10704
10671
  this.isInView$,
10705
10672
  this.guests$,
10706
- this.pricebookKey,
10707
10673
  this.basketsService.recipeIsInBasket(this.recipeId)
10708
10674
  ]).pipe(skipWhile(results => !results[1] || !results[3])).subscribe(results => {
10709
10675
  this.pos = results[0];
10710
10676
  // fetch the price if the recipe isn't in the basket and if it was last time we check or on startup
10711
- if (!results[4] && wasInBasketBefore !== false && this.inViewport) {
10677
+ if (!results[3] && wasInBasketBefore !== false && this.inViewport) {
10712
10678
  this.loading = true;
10713
10679
  this.cdr.detectChanges();
10714
10680
  if (this.onChangesSubscription) {
@@ -10716,7 +10682,7 @@ class RecipePricingComponent {
10716
10682
  }
10717
10683
  this.onChangesSubscription = this.fetchPricing().subscribe();
10718
10684
  }
10719
- wasInBasketBefore = results[4];
10685
+ wasInBasketBefore = results[3];
10720
10686
  });
10721
10687
  }
10722
10688
  initPricingFromBasketChanges() {
@@ -10726,7 +10692,7 @@ class RecipePricingComponent {
10726
10692
  this.pos = results[0];
10727
10693
  const recipeLine = results[1].find(l => { var _a, _b; return l.isRecipe && ((_a = l.id) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = this.recipeId) === null || _b === void 0 ? void 0 : _b.toString()); });
10728
10694
  if (!!recipeLine) {
10729
- return this.recipesService.getPricing(this.recipeId, this.pos.id, this.pricebookKey.value, this.serves).pipe(switchMap(pricing => {
10695
+ return this.recipesService.getPricing(this.recipeId, this.pos.id, this.serves).pipe(switchMap(pricing => {
10730
10696
  return this.extractPricing(recipeLine, pricing);
10731
10697
  }));
10732
10698
  }
@@ -10737,7 +10703,7 @@ class RecipePricingComponent {
10737
10703
  if (!this.recipeId || !this.pos || !this.serves) {
10738
10704
  return of(null);
10739
10705
  }
10740
- return this.recipesService.getPricing(this.recipeId, this.pos.id, this.pricebookKey.value, this.serves).pipe(skipWhile(result => result.price === 0), tap((result) => {
10706
+ return this.recipesService.getPricing(this.recipeId, this.pos.id, this.serves).pipe(skipWhile(result => result.price === 0), tap((result) => {
10741
10707
  this.pricing = result;
10742
10708
  this.format();
10743
10709
  this.loading = false;
@@ -17522,7 +17488,8 @@ function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
17522
17488
  const ctx_r0 = i0.ɵɵnextContext();
17523
17489
  i0.ɵɵproperty("threshold", 0)("debounceTime", 0);
17524
17490
  i0.ɵɵadvance(3);
17525
- i0.ɵɵproperty("src", ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl)("alt", "Photo de la recette " + (ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes.title));
17491
+ i0.ɵɵproperty("src", ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl);
17492
+ i0.ɵɵattribute("aria-hidden", true);
17526
17493
  i0.ɵɵadvance(4);
17527
17494
  i0.ɵɵproperty("ngIf", !(ctx_r0.displayBadge && ctx_r0.recipe.sponsorLogoUrl));
17528
17495
  i0.ɵɵadvance(1);
@@ -17827,7 +17794,7 @@ RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent,
17827
17794
  }
17828
17795
  else {
17829
17796
  i18n_6 = $localize `:␟f51693cf087a834d433fa3835d7b64905fdc57ee␟9008711340501624723:Découvrez nos recettes`;
17830
- } return [["ngMiamInViewport", "", 1, "miam-recipe-card", 3, "condition", "ngClass", "inViewport"], ["class", "miam-recipe-card__container", "ngMiamInViewport", "", 3, "threshold", "debounceTime", "inViewport", 4, "ngIf"], ["ngMiamInViewport", "", 1, "miam-recipe-card__container", 3, "threshold", "debounceTime", "inViewport"], [1, "miam-recipe-card__top", 3, "click"], [1, "miam-recipe-card__picture"], ["loading", "lazy", 3, "src", "alt", "error"], ["aria-hidden", "true", 1, "miam-recipe-card__gradient"], [1, "miam-recipe-card__content"], [1, "miam-recipe-card__top-container"], ["class", "miam-recipe-card__like", 4, "ngIf"], ["class", "miam-recipe-card_sponso_and_promo_badge", 4, "ngIf"], ["class", "miam-recipe-card__badge-container", 3, "ngClass", 4, "ngIf"], [1, "miam-recipe-card__picture__bottom"], [1, "miam-recipe-card__title", "miam-ds-text", "weight-xxl", "size-m"], [1, "miam-recipe-card__counter"], [1, "miam-ds-text", "weight-xxl", "size-m"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/recipe-counter.svg", "alt", "", "aria-hidden", "true"], [1, "miam-recipe-card__bottom", 3, "click"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], [1, "miam-recipe-card__actions"], [1, "miam-recipe-card__infos"], ["class", "miam-recipe-card__difficulty-and-time", 4, "ngIf"], [1, "miam-recipe-card__price-and-promotion"], ["class", "miam-recipe-card__bottom-promotion", 4, "ngIf"], ["class", "miam-recipe-card__price", 4, "ngIf"], [1, "miam-recipe-card__cta"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", 4, "ngIf"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked", 4, "ngIf"], ["class", "miam-recipe-card__actions__replace", 4, "ngIf"], ["class", "miam-ds-button ghost", 3, "click", 4, "ngIf"], [1, "miam-recipe-card__like"], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace"], [1, "miam-recipe-card_sponso_and_promo_badge"], [4, "ngIf"], ["class", "miam-recipe-card__sponsor-container", 4, "ngIf"], [1, "miam-recipe-card__sponsor-container"], [1, "miam-recipe-card__sponsor-picture", 3, "src", "alt"], [1, "miam-recipe-card__badge-container", 3, "ngClass"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "", "aria-hidden", "true", 4, "ngIf"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "", "aria-hidden", "true", 4, "ngIf"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "", "aria-hidden", "true", 1, "miam-recipe-card__badge"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "", "aria-hidden", "true", 1, "miam-recipe-card__badge"], [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], ["aria-hidden", "true", 3, "src", "alt", "error"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__difficulty-and-time"], ["class", "miam-recipe-card__difficulty", 4, "ngIf"], ["class", "miam-recipe-card__time", 4, "ngIf"], [1, "miam-recipe-card__difficulty"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/ChefHat.svg", "alt", "", "aria-hidden", "true"], [1, "miam-ds-text", "size-s", "weight-m"], [1, "miam-recipe-card__time"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Clock.svg", "alt", "", "aria-hidden", "true"], [1, "miam-recipe-card__bottom-promotion"], [1, "miam-recipe-card__price"], [1, "miam-ds-text", "weight-xxl", 3, "recipeId", "serves", "inViewport", "priceSet"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked"], [1, "miam-recipe-card__actions__replace"], [1, "miam-ds-button", "ghost", 3, "click"], i18n_0, ["aria-label", "Supprimer la recette", 1, "miam-ds-button", "ghost", "square", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], i18n_2, [1, "miam-recipe-card__redirect", 3, "href"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/Suggestion_Redirect_Background.png", "alt", "D\u00E9couvrez nos recettes"], [1, "miam-recipe-card__redirect__footer"], [1, "miam-recipe-card__redirect__title", "miam-ds-text", "size-l", "weight-xxl"], i18n_4, [1, "miam-recipe-card__redirect__button", "miam-ds-button", "primary"], i18n_6]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
17797
+ } return [["ngMiamInViewport", "", 1, "miam-recipe-card", 3, "condition", "ngClass", "inViewport"], ["class", "miam-recipe-card__container", "ngMiamInViewport", "", 3, "threshold", "debounceTime", "inViewport", 4, "ngIf"], ["ngMiamInViewport", "", 1, "miam-recipe-card__container", 3, "threshold", "debounceTime", "inViewport"], [1, "miam-recipe-card__top", 3, "click"], [1, "miam-recipe-card__picture"], ["loading", "lazy", 3, "src", "alt", "error"], ["aria-hidden", "true", 1, "miam-recipe-card__gradient"], [1, "miam-recipe-card__content"], [1, "miam-recipe-card__top-container"], ["class", "miam-recipe-card__like", 4, "ngIf"], ["class", "miam-recipe-card_sponso_and_promo_badge", 4, "ngIf"], ["class", "miam-recipe-card__badge-container", 3, "ngClass", 4, "ngIf"], [1, "miam-recipe-card__picture__bottom"], [1, "miam-recipe-card__title", "miam-ds-text", "weight-xxl", "size-m"], [1, "miam-recipe-card__counter"], [1, "miam-ds-text", "weight-xxl", "size-m"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/recipe-counter.svg", "alt", "", "aria-hidden", "true"], [1, "miam-recipe-card__bottom", 3, "click"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], [1, "miam-recipe-card__actions"], [1, "miam-recipe-card__infos"], ["class", "miam-recipe-card__difficulty-and-time", 4, "ngIf"], [1, "miam-recipe-card__price-and-promotion"], ["class", "miam-recipe-card__bottom-promotion", 4, "ngIf"], ["class", "miam-recipe-card__price", 4, "ngIf"], [1, "miam-recipe-card__cta"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", 4, "ngIf"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked", 4, "ngIf"], ["class", "miam-recipe-card__actions__replace", 4, "ngIf"], ["class", "miam-ds-button ghost", 3, "click", 4, "ngIf"], [1, "miam-recipe-card__like"], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace"], [1, "miam-recipe-card_sponso_and_promo_badge"], [4, "ngIf"], ["class", "miam-recipe-card__sponsor-container", 4, "ngIf"], [1, "miam-recipe-card__sponsor-container"], [1, "miam-recipe-card__sponsor-picture", 3, "src", "alt"], [1, "miam-recipe-card__badge-container", 3, "ngClass"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "Id\u00E9e repas", 4, "ngIf"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "Id\u00E9e boisson", 4, "ngIf"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "Id\u00E9e repas", 1, "miam-recipe-card__badge"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "Id\u00E9e boisson", 1, "miam-recipe-card__badge"], [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], ["aria-hidden", "true", 3, "src", "alt", "error"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__difficulty-and-time"], ["class", "miam-recipe-card__difficulty", 4, "ngIf"], ["class", "miam-recipe-card__time", 4, "ngIf"], [1, "miam-recipe-card__difficulty"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/ChefHat.svg", "alt", "", "aria-hidden", "true"], [1, "miam-ds-text", "size-s", "weight-m"], [1, "miam-recipe-card__time"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Clock.svg", "alt", "", "aria-hidden", "true"], [1, "miam-recipe-card__bottom-promotion"], [1, "miam-recipe-card__price"], [1, "miam-ds-text", "weight-xxl", 3, "recipeId", "serves", "inViewport", "priceSet"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked"], [1, "miam-recipe-card__actions__replace"], [1, "miam-ds-button", "ghost", 3, "click"], i18n_0, ["aria-label", "Supprimer la recette", 1, "miam-ds-button", "ghost", "square", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], i18n_2, [1, "miam-recipe-card__redirect", 3, "href"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/Suggestion_Redirect_Background.png", "alt", "D\u00E9couvrez nos recettes"], [1, "miam-recipe-card__redirect__footer"], [1, "miam-recipe-card__redirect__title", "miam-ds-text", "size-l", "weight-xxl"], i18n_4, [1, "miam-recipe-card__redirect__button", "miam-ds-button", "primary"], i18n_6]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
17831
17798
  i0.ɵɵelementStart(0, "div", 0);
17832
17799
  i0.ɵɵlistener("inViewport", function RecipeCardComponent_Template_div_inViewport_0_listener() { return ctx.sendShowEvent(); });
17833
17800
  i0.ɵɵtemplate(1, RecipeCardComponent_div_1_Template, 32, 20, "div", 1);
@@ -18836,7 +18803,7 @@ CatalogListComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogListComponent
18836
18803
  }
18837
18804
  else {
18838
18805
  i18n_11 = $localize `:␟834498e5698b366d53cba7a7f98b06a12967862c␟1875448131572248295: Chargement des résultats... `;
18839
- } return [[1, "miam-catalog-list"], ["class", "miam-catalog-list__notFound", 4, "ngIf"], ["class", "miam-catalog-list__loader", 4, "ngIf"], [1, "miam-catalog-list__cards"], ["recipeCard", ""], [4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "article", 4, "ngFor", "ngForOf"], [1, "miam-catalog-list__notFound"], [1, "miam-catalog-list__notFound__icon", 3, "width", "height", "iconName", "ngClass"], [4, "ngIf", "ngIfElse"], ["notFiltering", ""], ["notLogged", ""], [1, "miam-catalog-list__notFound__title1", "filtering"], i18n_0, [4, "ngIf"], [1, "miam-catalog-list__notFound__title2"], i18n_2, i18n_4, [1, "miam-catalog-list__notFound__title1", "not-filtering"], i18n_6, [1, "miam-catalog-list__notFound__title1", "not-logged"], i18n_8, [1, "miam-catalog-list__loader"], i18n_11, [3, "recipe", "originTrace", "displayPricing", "previewAllowed", "addRecipeMode", "displayGuests", "displayVariant", "helpButtonAllowed", "addToMealsPlanner"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["ngMiamLoadOnScroll", "", "marginRoot", "600px", 3, "isLoading", "loadMore"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "article"]]; }, template: function CatalogListComponent_Template(rf, ctx) { if (rf & 1) {
18806
+ } return [[1, "miam-catalog-list"], ["class", "miam-catalog-list__notFound", 4, "ngIf"], ["class", "miam-catalog-list__loader", 4, "ngIf"], ["role", "list", 1, "miam-catalog-list__cards"], ["recipeCard", ""], [4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "article", 4, "ngFor", "ngForOf"], [1, "miam-catalog-list__notFound"], [1, "miam-catalog-list__notFound__icon", 3, "width", "height", "iconName", "ngClass"], [4, "ngIf", "ngIfElse"], ["notFiltering", ""], ["notLogged", ""], [1, "miam-catalog-list__notFound__title1", "filtering"], i18n_0, [4, "ngIf"], [1, "miam-catalog-list__notFound__title2"], i18n_2, i18n_4, [1, "miam-catalog-list__notFound__title1", "not-filtering"], i18n_6, [1, "miam-catalog-list__notFound__title1", "not-logged"], i18n_8, [1, "miam-catalog-list__loader"], i18n_11, ["role", "listitem", 3, "recipe", "originTrace", "displayPricing", "previewAllowed", "addRecipeMode", "displayGuests", "displayVariant", "helpButtonAllowed", "addToMealsPlanner"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["ngMiamLoadOnScroll", "", "marginRoot", "600px", 3, "isLoading", "loadMore"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "article"]]; }, template: function CatalogListComponent_Template(rf, ctx) { if (rf & 1) {
18840
18807
  i0.ɵɵelementStart(0, "div", 0);
18841
18808
  i0.ɵɵtemplate(1, CatalogListComponent_div_1_Template, 7, 9, "div", 1);
18842
18809
  i0.ɵɵpipe(2, "async");
@@ -19477,7 +19444,6 @@ class MealsPlannerComponent extends EventTracerComponent {
19477
19444
  initRecipesPricing() {
19478
19445
  return combineLatest([this.posService.waitForPos, this.basketsService.basket$]).pipe(skipWhile(result => !result[1])).subscribe(result => {
19479
19446
  this.pos = result[0];
19480
- this.pricebookKey = result[1].pricebookKey;
19481
19447
  });
19482
19448
  }
19483
19449
  fetchRecipesPricing() {
@@ -19488,7 +19454,7 @@ class MealsPlannerComponent extends EventTracerComponent {
19488
19454
  this.budgettedRecipesPrices = {};
19489
19455
  this.budgettedRecipes.forEach(recipe => {
19490
19456
  if (recipe) {
19491
- requests.push(this.recipesService.getPricing(recipe.id, this.pos.id, this.pricebookKey, this.form.value.guestsCount).pipe(skipWhile(result => !(result === null || result === void 0 ? void 0 : result.price)), tap(pricing => this.budgettedRecipesPrices[recipe.id] = pricing.price)));
19457
+ requests.push(this.recipesService.getPricing(recipe.id, this.pos.id, this.form.value.guestsCount).pipe(skipWhile(result => !(result === null || result === void 0 ? void 0 : result.price)), tap(pricing => this.budgettedRecipesPrices[recipe.id] = pricing.price)));
19492
19458
  }
19493
19459
  });
19494
19460
  return requests.length > 0 ? forkJoin(requests) : of([]);
@@ -19799,7 +19765,7 @@ CatalogCategoryComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogCategoryC
19799
19765
  }
19800
19766
  else {
19801
19767
  i18n_4 = $localize `:␟8f2c8f66fed7cbda7649b4ba2320375ff7526dbb␟5011068305185462335: Chargement des résultats... `;
19802
- } return [["class", "miam-catalog-category", "ngMiamInViewport", "", 3, "condition", "inViewport", 4, "ngIf"], ["ngMiamInViewport", "", 1, "miam-catalog-category", 3, "condition", "inViewport"], [1, "miam-catalog-category__header"], ["role", "heading", "aria-level", "2", 1, "miam-catalog-category__title", 3, "click"], [1, "miam-catalog-category__header__bottom"], [1, "miam-catalog-category__subtitle", "miam-ds-text", "size-s", "weight-l"], [1, "miam-catalog-category__link", "miam-ds-text", "size-s", "weight-xl", 3, "click"], i18n_2, ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/arrow-right.svg", "alt", "", "aria-hidden", "true"], [1, "miam-catalog-category__content"], ["categoryContent", ""], [1, "miam-catalog-category__cards"], ["categoryCards", ""], ["class", "miam-catalog-category__loader", 4, "ngIf"], [3, "recipe", "displayInfos", "displayPricing", "displayVariant", "originTrace", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "article", 4, "ngFor", "ngForOf"], [1, "miam-catalog-category__loader"], i18n_4, [3, "recipe", "displayInfos", "displayPricing", "displayVariant", "originTrace"], [3, "article"]]; }, template: function CatalogCategoryComponent_Template(rf, ctx) { if (rf & 1) {
19768
+ } return [["class", "miam-catalog-category", "ngMiamInViewport", "", 3, "condition", "inViewport", 4, "ngIf"], ["ngMiamInViewport", "", 1, "miam-catalog-category", 3, "condition", "inViewport"], [1, "miam-catalog-category__header"], ["role", "heading", "aria-level", "2", 1, "miam-catalog-category__title", 3, "click"], [1, "miam-catalog-category__header__bottom"], [1, "miam-catalog-category__subtitle", "miam-ds-text", "size-s", "weight-l"], [1, "miam-catalog-category__link", "miam-ds-text", "size-s", "weight-xl", 3, "click"], i18n_2, ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/arrow-right.svg", "alt", "", "aria-hidden", "true"], [1, "miam-catalog-category__content"], ["categoryContent", ""], ["role", "list", 1, "miam-catalog-category__cards"], ["categoryCards", ""], ["class", "miam-catalog-category__loader", 4, "ngIf"], ["role", "listitem", 3, "recipe", "displayInfos", "displayPricing", "displayVariant", "originTrace", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "article", 4, "ngFor", "ngForOf"], [1, "miam-catalog-category__loader"], i18n_4, ["role", "listitem", 3, "recipe", "displayInfos", "displayPricing", "displayVariant", "originTrace"], [3, "article"]]; }, template: function CatalogCategoryComponent_Template(rf, ctx) { if (rf & 1) {
19803
19769
  i0.ɵɵtemplate(0, CatalogCategoryComponent_div_0_Template, 19, 10, "div", 0);
19804
19770
  } if (rf & 2) {
19805
19771
  i0.ɵɵproperty("ngIf", !ctx.hide);
@@ -22773,7 +22739,7 @@ function RecipeDetailsComponent_div_0_div_2_img_13_Template(rf, ctx) { if (rf &
22773
22739
  } if (rf & 2) {
22774
22740
  const ctx_r8 = i0.ɵɵnextContext(3);
22775
22741
  i0.ɵɵproperty("src", ctx_r8.recipeDetailsService.recipe == null ? null : ctx_r8.recipeDetailsService.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl);
22776
- i0.ɵɵattribute("alt", "Photo de la recette " + (ctx_r8.recipeDetailsService.recipe == null ? null : ctx_r8.recipeDetailsService.recipe.attributes["title"]));
22742
+ i0.ɵɵattribute("aria-hidden", true);
22777
22743
  } }
22778
22744
  function RecipeDetailsComponent_div_0_div_2_youtube_player_14_Template(rf, ctx) { if (rf & 1) {
22779
22745
  i0.ɵɵelement(0, "youtube-player", 41);