ng-miam 8.0.5 → 8.1.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 (34) hide show
  1. package/bundles/ng-miam.umd.js +118 -21
  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/_components/modal/modal.component.js +30 -6
  6. package/esm2015/lib/_models/index.js +2 -1
  7. package/esm2015/lib/_models/ingredient-definition.js +15 -0
  8. package/esm2015/lib/_models/ingredient.js +11 -4
  9. package/esm2015/lib/_services/index.js +2 -1
  10. package/esm2015/lib/_services/ingredients-definitions.service.js +21 -0
  11. package/esm2015/lib/_services/ingredients.service.js +32 -11
  12. package/esm2015/lib/_services/interceptor.service.js +2 -2
  13. package/esm2015/lib/_services/user.service.js +8 -5
  14. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +1 -1
  15. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +1 -1
  16. package/fesm2015/ng-miam.js +106 -22
  17. package/fesm2015/ng-miam.js.map +1 -1
  18. package/lib/_components/modal/modal.component.d.ts +14 -3
  19. package/lib/_components/modal/modal.component.d.ts.map +1 -1
  20. package/lib/_models/index.d.ts +1 -0
  21. package/lib/_models/index.d.ts.map +1 -1
  22. package/lib/_models/ingredient-definition.d.ts +12 -0
  23. package/lib/_models/ingredient-definition.d.ts.map +1 -0
  24. package/lib/_models/ingredient.d.ts +4 -1
  25. package/lib/_models/ingredient.d.ts.map +1 -1
  26. package/lib/_services/index.d.ts +1 -0
  27. package/lib/_services/index.d.ts.map +1 -1
  28. package/lib/_services/ingredients-definitions.service.d.ts +11 -0
  29. package/lib/_services/ingredients-definitions.service.d.ts.map +1 -0
  30. package/lib/_services/ingredients.service.d.ts +7 -3
  31. package/lib/_services/ingredients.service.d.ts.map +1 -1
  32. package/lib/_services/user.service.d.ts.map +1 -1
  33. package/miam-style.css +1 -1
  34. package/package.json +1 -1
@@ -634,21 +634,28 @@
634
634
  var Ingredient = /** @class */ (function (_super) {
635
635
  __extends(Ingredient, _super);
636
636
  function Ingredient() {
637
- var _this = _super.apply(this, __spread(arguments)) || this;
637
+ var _this = _super.call(this) || this;
638
638
  _this.attributes = {
639
+ /* /!\ Read only */
639
640
  name: '',
640
641
  quantity: '',
642
+ /* /!\ Read only */
641
643
  unit: '',
642
644
  importance: '',
643
645
  active: true,
644
646
  'forced-eans': [],
647
+ /* /!\ Read only */
645
648
  'picture-url': '',
646
649
  position: -1
647
650
  };
648
651
  _this.relationships = {
649
652
  recipe: new i2.DocumentResource(),
650
- 'quantity-unit': new i2.DocumentResource()
653
+ 'quantity-unit': new i2.DocumentResource(),
654
+ definition: new i2.DocumentResource()
651
655
  };
656
+ Object.freeze(_this.attributes.name);
657
+ Object.freeze(_this.attributes.unit);
658
+ Object.freeze(_this.picture);
652
659
  return _this;
653
660
  }
654
661
  Object.defineProperty(Ingredient.prototype, "quantity", {
@@ -681,6 +688,23 @@
681
688
  return Ingredient;
682
689
  }(i2.Resource));
683
690
 
691
+ var IngredientDefinition = /** @class */ (function (_super) {
692
+ __extends(IngredientDefinition, _super);
693
+ function IngredientDefinition() {
694
+ var _this = _super.apply(this, __spread(arguments)) || this;
695
+ _this.attributes = {
696
+ 'activation-count': '',
697
+ name: '',
698
+ 'often-deleted': '',
699
+ 'picture-url': '',
700
+ plural: true,
701
+ 'total-count': 0,
702
+ };
703
+ return _this;
704
+ }
705
+ return IngredientDefinition;
706
+ }(i2.Resource));
707
+
684
708
  var Item = /** @class */ (function (_super) {
685
709
  __extends(Item, _super);
686
710
  function Item() {
@@ -2350,21 +2374,25 @@
2350
2374
  }
2351
2375
  Object.defineProperty(UserService.prototype, "userProvider", {
2352
2376
  get: function () {
2353
- return this.userProvider$.asObservable().pipe(operators.skipWhile(function (provider) { return provider === undefined; }));
2377
+ return this.userProvider$.pipe(operators.skipWhile(function (provider) { return provider === undefined; }));
2354
2378
  },
2355
2379
  enumerable: false,
2356
2380
  configurable: true
2357
2381
  });
2358
2382
  Object.defineProperty(UserService.prototype, "userSupplier", {
2359
2383
  get: function () {
2360
- return this.userSupplier$.asObservable().pipe(operators.skipWhile(function (supplier) { return supplier === undefined; }));
2384
+ var _this = this;
2385
+ // If user is admin, he has no supplier
2386
+ return this.isAdmin.pipe(operators.switchMap(function (isAdmin) { return isAdmin
2387
+ ? rxjs.of(null)
2388
+ : _this.userSupplier$.pipe(operators.skipWhile(function (supplier) { return supplier === undefined; })); }));
2361
2389
  },
2362
2390
  enumerable: false,
2363
2391
  configurable: true
2364
2392
  });
2365
2393
  Object.defineProperty(UserService.prototype, "userRoles", {
2366
2394
  get: function () {
2367
- return this.userRoles$.asObservable();
2395
+ return this.userRoles$;
2368
2396
  },
2369
2397
  enumerable: false,
2370
2398
  configurable: true
@@ -2471,13 +2499,36 @@
2471
2499
  }], function () { return [{ type: i1__namespace.HttpClient }, { type: RecipeProviderService }, { type: SuppliersService }, { type: ToasterService }]; }, null);
2472
2500
  })();
2473
2501
 
2502
+ var IngredientsDefinitionsService = /** @class */ (function (_super) {
2503
+ __extends(IngredientsDefinitionsService, _super);
2504
+ function IngredientsDefinitionsService() {
2505
+ var _this = _super.call(this) || this;
2506
+ _this.resource = IngredientDefinition;
2507
+ _this.type = 'ingredients-definitions';
2508
+ _this.register();
2509
+ return _this;
2510
+ }
2511
+ return IngredientsDefinitionsService;
2512
+ }(i2.Service));
2513
+ IngredientsDefinitionsService.ɵfac = function IngredientsDefinitionsService_Factory(t) { return new (t || IngredientsDefinitionsService)(); };
2514
+ IngredientsDefinitionsService.ɵprov = i0__namespace.ɵɵdefineInjectable({ token: IngredientsDefinitionsService, factory: IngredientsDefinitionsService.ɵfac, providedIn: 'root' });
2515
+ (function () {
2516
+ (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(IngredientsDefinitionsService, [{
2517
+ type: i0.Injectable,
2518
+ args: [{
2519
+ providedIn: 'root'
2520
+ }]
2521
+ }], function () { return []; }, null);
2522
+ })();
2523
+
2474
2524
  var MIAM_API_HOST$5 = environment$1.miamAPI + "/api/v1/";
2475
2525
  var IngredientsService = /** @class */ (function (_super) {
2476
2526
  __extends(IngredientsService, _super);
2477
- function IngredientsService(http, userService) {
2527
+ function IngredientsService(http, userService, ingredientsdefinitionsService) {
2478
2528
  var _this = _super.call(this) || this;
2479
2529
  _this.http = http;
2480
2530
  _this.userService = userService;
2531
+ _this.ingredientsdefinitionsService = ingredientsdefinitionsService;
2481
2532
  _this.resource = Ingredient;
2482
2533
  _this.type = 'ingredients';
2483
2534
  _this.isFetchingNames = false;
@@ -2548,22 +2599,25 @@
2548
2599
  if (ing.id) {
2549
2600
  var oldIndex = oldIngredients.findIndex(function (el) { return el.id === ing.id; });
2550
2601
  var oldIngredientAttribute = oldIngredients[oldIndex].attributes;
2551
- var hasChange = oldIngredientAttribute.name !== ing.attributes.name ||
2552
- oldIngredientAttribute.unit !== ing.attributes.unit ||
2553
- oldIngredientAttribute.quantity !== ing.attributes.quantity ||
2602
+ var hasChange = oldIngredientAttribute.quantity !== ing.attributes.quantity ||
2554
2603
  oldIngredientAttribute.importance !== ing.attributes.importance ||
2555
2604
  oldIngredientAttribute['forced-eans'] !== ing.attributes['forced-eans'] ||
2556
2605
  oldIngredientAttribute.position !== ing.attributes.position;
2557
2606
  if (hasChange) {
2558
- oldIngredients[oldIndex].attributes = Object.assign(Object.assign({}, oldIngredients[oldIndex].attributes), { name: ing.attributes.name, unit: ing.attributes.unit, quantity: ing.attributes.quantity, importance: ing.attributes.importance, 'forced-eans': ing.attributes['forced-eans'], 'picture-url': ing.attributes['picture-url'], position: ing.attributes.position });
2607
+ oldIngredients[oldIndex].attributes = Object.assign(Object.assign({}, oldIngredients[oldIndex].attributes), { quantity: ing.attributes.quantity, importance: ing.attributes.importance, 'forced-eans': ing.attributes['forced-eans'], position: ing.attributes.position });
2559
2608
  ingredientsToSave.push(oldIngredients[oldIndex]);
2560
2609
  }
2561
2610
  }
2562
2611
  else {
2563
2612
  var newIng = _this.new();
2564
2613
  delete newIng.id;
2565
- newIng.attributes = Object.assign(Object.assign(Object.assign(Object.assign({}, newIng.attributes), { name: ing.attributes.name, unit: ing.attributes.unit, quantity: '' + ing.attributes.quantity, importance: ing.attributes.importance }), ing.attributes['picture-url'] ? { 'picture-url': ing.attributes['picture-url'] } : {}), { position: ing.attributes.position });
2614
+ newIng.attributes = Object.assign(Object.assign({}, newIng.attributes), { quantity: '' + ing.attributes.quantity, importance: ing.attributes.importance,
2615
+ // We cannot fetch the ingedient_definition and thus the image of the ingredient so if it hasn't been set manually,
2616
+ // Remove it
2617
+ position: ing.attributes.position });
2566
2618
  newIng.addRelationship(recipe, 'recipe');
2619
+ newIng.addRelationship(ing.relationships['quantity-unit'].data, 'quantity-unit');
2620
+ newIng.addRelationship(ing.relationships.definition.data, 'definition');
2567
2621
  ingredientsToSave.push(newIng);
2568
2622
  }
2569
2623
  });
@@ -2582,6 +2636,22 @@
2582
2636
  var _this = this;
2583
2637
  return rxjs.forkJoin(ingredientIds.map(function (ingredientId) { return _this.delete(ingredientId); }));
2584
2638
  };
2639
+ IngredientsService.prototype.searchIngredientByName = function (name) {
2640
+ var _this = this;
2641
+ return this.http.get(MIAM_API_HOST$5 + "ingredients-definitions/search?name=" + name)
2642
+ .pipe(operators.map(function (res) {
2643
+ var definition = _this.ingredientsdefinitionsService.newCollection();
2644
+ definition.fill(res);
2645
+ return definition.data;
2646
+ }));
2647
+ };
2648
+ IngredientsService.prototype.searchUnitByName = function (name) {
2649
+ return this.http.get(MIAM_API_HOST$5 + "quantity-units/search?name=" + name)
2650
+ .pipe(operators.map(function (res) { return res.data; }));
2651
+ };
2652
+ IngredientsService.prototype.getConversion = function (ingredientName, quantityUnitId, quantity) {
2653
+ return this.http.get(MIAM_API_HOST$5 + "quantities-conversions/grams?ingredient_name=" + ingredientName + "&quantity_unit_id=" + quantityUnitId + "&quantity=" + quantity);
2654
+ };
2585
2655
  IngredientsService.prototype.fetchReviewedNames = function () {
2586
2656
  var _this = this;
2587
2657
  this.isFetchingNames = true;
@@ -2600,7 +2670,7 @@
2600
2670
  };
2601
2671
  return IngredientsService;
2602
2672
  }(i2.Service));
2603
- IngredientsService.ɵfac = function IngredientsService_Factory(t) { return new (t || IngredientsService)(i0__namespace.ɵɵinject(i1__namespace.HttpClient), i0__namespace.ɵɵinject(UserService)); };
2673
+ IngredientsService.ɵfac = function IngredientsService_Factory(t) { return new (t || IngredientsService)(i0__namespace.ɵɵinject(i1__namespace.HttpClient), i0__namespace.ɵɵinject(UserService), i0__namespace.ɵɵinject(IngredientsDefinitionsService)); };
2604
2674
  IngredientsService.ɵprov = i0__namespace.ɵɵdefineInjectable({ token: IngredientsService, factory: IngredientsService.ɵfac, providedIn: 'root' });
2605
2675
  (function () {
2606
2676
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(IngredientsService, [{
@@ -2608,7 +2678,7 @@
2608
2678
  args: [{
2609
2679
  providedIn: 'root'
2610
2680
  }]
2611
- }], function () { return [{ type: i1__namespace.HttpClient }, { type: UserService }]; }, null);
2681
+ }], function () { return [{ type: i1__namespace.HttpClient }, { type: UserService }, { type: IngredientsDefinitionsService }]; }, null);
2612
2682
  })();
2613
2683
 
2614
2684
  var RecipeStepsService = /** @class */ (function (_super) {
@@ -8018,7 +8088,7 @@
8018
8088
  request = request.clone({
8019
8089
  setHeaders: {
8020
8090
  'miam-origin': this.context.origin.value,
8021
- 'miam-front-version': '8.0.5',
8091
+ 'miam-front-version': '8.1.0',
8022
8092
  'miam-front-type': 'web',
8023
8093
  'miam-api-version': '4.7.0'
8024
8094
  }
@@ -8429,7 +8499,7 @@
8429
8499
  i0__namespace.ɵɵadvance(1);
8430
8500
  i0__namespace.ɵɵproperty("ngIf", ctx_r3.cancelButtonText);
8431
8501
  i0__namespace.ɵɵadvance(1);
8432
- i0__namespace.ɵɵproperty("disabled", ctx_r3.confirmButtonDisabled);
8502
+ i0__namespace.ɵɵproperty("disabled", ctx_r3.confirmButtonDisabled)("ngClass", ctx_r3.ctaColor);
8433
8503
  i0__namespace.ɵɵadvance(1);
8434
8504
  i0__namespace.ɵɵproperty("ngIf", !ctx_r3.confirmButtonIsLoading);
8435
8505
  i0__namespace.ɵɵadvance(1);
@@ -8459,7 +8529,7 @@
8459
8529
  i0__namespace.ɵɵprojection(11);
8460
8530
  i0__namespace.ɵɵelementEnd();
8461
8531
  i0__namespace.ɵɵelementEnd();
8462
- i0__namespace.ɵɵtemplate(12, ModalComponent_ng_container_0_div_12_Template, 5, 4, "div", 11);
8532
+ i0__namespace.ɵɵtemplate(12, ModalComponent_ng_container_0_div_12_Template, 5, 5, "div", 11);
8463
8533
  i0__namespace.ɵɵelementEnd();
8464
8534
  i0__namespace.ɵɵelementEnd();
8465
8535
  i0__namespace.ɵɵelementEnd();
@@ -8483,6 +8553,7 @@
8483
8553
  var ModalComponent = /** @class */ (function () {
8484
8554
  function ModalComponent() {
8485
8555
  this.modalStyle = 'center';
8556
+ this.ctaColor = 'primary';
8486
8557
  this.close = new i0.EventEmitter();
8487
8558
  this.cancel = new i0.EventEmitter();
8488
8559
  this.confirm = new i0.EventEmitter();
@@ -8490,7 +8561,14 @@
8490
8561
  /** Some keys are set to 0 to prevent `preventDefaultForScrollKeys` method from blocking input fields interactions */
8491
8562
  this.scrollKeys = { ArrowUp: 0, ArrowRight: 0, ArrowDown: 0, ArrowLeft: 0, Space: 0, PageUp: 1, PageDown: 1, End: 0, Home: 0 };
8492
8563
  this.pagePosition = { x: 0, y: 0 };
8564
+ this.currentPath = '';
8493
8565
  }
8566
+ ModalComponent.prototype.ngOnInit = function () {
8567
+ this.observeNavigation();
8568
+ };
8569
+ ModalComponent.prototype.ngOnDestroy = function () {
8570
+ this.mutationObserver.disconnect();
8571
+ };
8494
8572
  ModalComponent.prototype.onScroll = function (event) {
8495
8573
  if (event.ctrlKey) {
8496
8574
  return;
@@ -8560,6 +8638,21 @@
8560
8638
  }
8561
8639
  }
8562
8640
  };
8641
+ /**
8642
+ * Prevent native navigation behind the modal.
8643
+ *
8644
+ * Check if the URL has changed each time an element changes in the body, and if it has, close the modal.
8645
+ */
8646
+ ModalComponent.prototype.observeNavigation = function () {
8647
+ var _this = this;
8648
+ this.currentPath = window.location.href;
8649
+ this.mutationObserver = new MutationObserver(function () {
8650
+ if (_this.currentPath !== window.location.href) {
8651
+ _this.onClose();
8652
+ }
8653
+ });
8654
+ this.mutationObserver.observe(document.body, { childList: true });
8655
+ };
8563
8656
  ModalComponent.prototype.onClose = function () {
8564
8657
  this.close.emit();
8565
8658
  };
@@ -8576,7 +8669,7 @@
8576
8669
  if (rf & 1) {
8577
8670
  i0__namespace.ɵɵlistener("wheel", function ModalComponent_wheel_HostBindingHandler($event) { return ctx.onScroll($event); })("touchstart", function ModalComponent_touchstart_HostBindingHandler($event) { return ctx.onTouchStart($event); })("touchmove", function ModalComponent_touchmove_HostBindingHandler($event) { return ctx.onTouchMove($event); })("keydown", function ModalComponent_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); }, false, i0__namespace.ɵɵresolveWindow)("keydown.escape", function ModalComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeDown(); }, false, i0__namespace.ɵɵresolveWindow);
8578
8671
  }
8579
- }, inputs: { recipesCount: "recipesCount", display: "display", confirmButtonIsLoading: "confirmButtonIsLoading", cancelButtonIsLoading: "cancelButtonIsLoading", confirmButtonDisabled: "confirmButtonDisabled", cancelButtonDisabled: "cancelButtonDisabled", noHeaderMode: "noHeaderMode", containerElement: "containerElement", title: "title", confirmButtonText: "confirmButtonText", cancelButtonText: "cancelButtonText", modalStyle: "modalStyle" }, outputs: { close: "close", cancel: "cancel", confirm: "confirm" }, ngContentSelectors: _c5$1, decls: 1, vars: 1, consts: function () {
8672
+ }, inputs: { recipesCount: "recipesCount", display: "display", confirmButtonIsLoading: "confirmButtonIsLoading", cancelButtonIsLoading: "cancelButtonIsLoading", confirmButtonDisabled: "confirmButtonDisabled", cancelButtonDisabled: "cancelButtonDisabled", noHeaderMode: "noHeaderMode", containerElement: "containerElement", title: "title", confirmButtonText: "confirmButtonText", cancelButtonText: "cancelButtonText", modalStyle: "modalStyle", ctaColor: "ctaColor" }, outputs: { close: "close", cancel: "cancel", confirm: "confirm" }, ngContentSelectors: _c5$1, decls: 1, vars: 1, consts: function () {
8580
8673
  var i18n_0;
8581
8674
  if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
8582
8675
  var MSG_EXTERNAL_3775647930168967606$$LIB__COMPONENTS_MODAL_MODAL_COMPONENT_TS___1 = goog.getMsg("Utilis\u00E9 dans ");
@@ -8593,7 +8686,7 @@
8593
8686
  else {
8594
8687
  i18n_2 = $localize(templateObject_2$y || (templateObject_2$y = __makeTemplateObject([":\u241Ff0ee2f84e20252199737bc9757b04e75979cb9fe\u241F8253051398336962047: repas"], [":\u241Ff0ee2f84e20252199737bc9757b04e75979cb9fe\u241F8253051398336962047: repas"])));
8595
8688
  }
8596
- return [[4, "ngIf"], [1, "miam-modal__container", 3, "ngClass"], [1, "miam-shadow-overlay", 3, "click"], [1, "miam-modal", 3, "ngClass"], [1, "miam-modal__content-container"], [1, "miam-modal__header"], ["class", "miam-modal__title miam-ds-text size-xl weight-xxl", 4, "ngIf"], ["class", "miam-modal__title miam-ds-text", 4, "ngIf"], [1, "miam-modal__close-icon", "miam-ds-button", "ghost", 3, "click"], [1, "miam-modal__content__scroll-protection"], [1, "miam-modal__content", "miam-ds-text"], ["class", "miam-modal__actions", 4, "ngIf"], [1, "miam-modal__title", "miam-ds-text", "size-xl", "weight-xxl"], [1, "miam-modal__title", "miam-ds-text"], i18n_0, i18n_2, [1, "miam-modal__actions"], ["class", "miam-ds-button secondary", 3, "disabled", "click", 4, "ngIf"], [1, "miam-ds-button", "primary", 3, "disabled", "click"], [1, "miam-ds-button", "secondary", 3, "disabled", "click"]];
8689
+ return [[4, "ngIf"], [1, "miam-modal__container", 3, "ngClass"], [1, "miam-shadow-overlay", 3, "click"], [1, "miam-modal", 3, "ngClass"], [1, "miam-modal__content-container"], [1, "miam-modal__header"], ["class", "miam-modal__title miam-ds-text size-xl weight-xxl", 4, "ngIf"], ["class", "miam-modal__title miam-ds-text", 4, "ngIf"], [1, "miam-modal__close-icon", "miam-ds-button", "ghost", 3, "click"], [1, "miam-modal__content__scroll-protection"], [1, "miam-modal__content", "miam-ds-text"], ["class", "miam-modal__actions", 4, "ngIf"], [1, "miam-modal__title", "miam-ds-text", "size-xl", "weight-xxl"], [1, "miam-modal__title", "miam-ds-text"], i18n_0, i18n_2, [1, "miam-modal__actions"], ["class", "miam-ds-button secondary", 3, "disabled", "click", 4, "ngIf"], [1, "miam-ds-button", 3, "disabled", "ngClass", "click"], [1, "miam-ds-button", "secondary", 3, "disabled", "click"]];
8597
8690
  }, template: function ModalComponent_Template(rf, ctx) {
8598
8691
  if (rf & 1) {
8599
8692
  i0__namespace.ɵɵprojectionDef();
@@ -8602,7 +8695,7 @@
8602
8695
  if (rf & 2) {
8603
8696
  i0__namespace.ɵɵproperty("ngIf", ctx.display);
8604
8697
  }
8605
- }, directives: [i2__namespace$1.NgIf, i2__namespace$1.NgClass, LoaderComponent], styles: [".miam-modal__container .miam-shadow-overlay{position:fixed;background:var(--miam-ds-color-neutral-black);animation-name:show;animation-duration:.3s;opacity:.6;animation-timing-function:ease-in-out;z-index:var(--m-z-index-modal-overlay);top:0;left:0;width:100vw;height:100dvh;-webkit-tap-highlight-color:transparent}@keyframes show{0%{opacity:0}to{opacity:.6}}.miam-modal__container .miam-modal{z-index:var(--m-z-index-modal);position:fixed;overflow:hidden;background-color:var(--miam-ds-color-background-primary);display:flex;flex-direction:column}@media print{.miam-modal__container .miam-modal{overflow-y:unset!important;position:unset!important;height:unset!important}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__close-icon{display:none}}.miam-modal__container .miam-modal.with-header .miam-modal__content-container .miam-modal__content{margin-top:24px;margin-bottom:24px}.miam-modal__container .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__title{display:none}.miam-modal__container .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{position:absolute;top:0;right:0;z-index:var(--m-z-index-position-absolute-high)}.miam-modal__container .miam-modal .miam-modal__content-container{position:relative;height:100%;display:flex;flex-direction:column;overflow:hidden}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__header{display:flex;flex-direction:row;justify-content:space-between}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__header .miam-modal__title{font-weight:900;overflow:hidden;text-overflow:ellipsis;align-self:center}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:8px;padding:16px;background:50%/24px no-repeat url(https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross_primary.svg)}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__content__scroll-protection{overflow:hidden;height:100%;display:flex}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__content{width:100%;overflow-y:auto;overflow-x:hidden;scrollbar-color:var(--miam-ds-color-primary-100),var(--miam-ds-color-primary);scrollbar-width:thin}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__actions{display:flex;justify-content:flex-end;flex-direction:row}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__actions button+button{margin-left:12px}.miam-modal__container.center .miam-modal{height:auto;min-width:464px;width:600px;max-width:700px;max-height:96dvh;box-sizing:border-box;top:50%;left:50%;right:unset;transform:translate(-50%,-50%);border-radius:8px;background-color:var(--miam-ds-color-neutral-white);padding:24px}.miam-modal__container.right .miam-modal{right:0;animation-name:openRightDrawer}@keyframes openRightDrawer{0%{right:-1200px}to{right:0}}.miam-modal__container.left .miam-modal{left:0;animation-name:openLeftDrawer}@keyframes openLeftDrawer{0%{left:-1200px}to{left:0}}.miam-modal__container.left .miam-modal,.miam-modal__container.right .miam-modal{animation-duration:.5s;animation-timing-function:cubic-bezier(.75,0,.2,1);height:100%;width:1000px;top:0}@media (min-width:1023px) and (max-height:1000px){.miam-modal__container.left .miam-modal,.miam-modal__container.right .miam-modal{width:650px}}@media (min-width:1023px) and (max-height:800px){.miam-modal__container.left .miam-modal,.miam-modal__container.right .miam-modal{width:450px}}.miam-modal__container.left .miam-modal .miam-modal__content-container,.miam-modal__container.right .miam-modal .miam-modal__content-container{height:100%;box-sizing:border-box}.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__content,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__content{height:100%;box-sizing:border-box;margin:unset}.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions{padding:24px;border-top:1px solid var(--miam-ds-color-border)}.miam-modal__container.left .miam-modal.with-header .miam-modal__content-container .miam-modal__header,.miam-modal__container.right .miam-modal.with-header .miam-modal__content-container .miam-modal__header{border-bottom:1px solid var(--miam-ds-color-border);padding:24px}.miam-modal__container.left .miam-modal.with-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon,.miam-modal__container.right .miam-modal.with-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:unset}.miam-modal__container.left .miam-modal.with-header .miam-modal__content-container .miam-modal__content,.miam-modal__container.right .miam-modal.with-header .miam-modal__content-container .miam-modal__content{padding:24px}.miam-modal__container.left .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon,.miam-modal__container.right .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:24px}.miam-modal__container.left.small-width .miam-modal,.miam-modal__container.right.small-width .miam-modal{min-width:680px;max-width:680px}.miam-modal__container.left.tiny-width .miam-modal,.miam-modal__container.right.tiny-width .miam-modal{min-width:360px;max-width:360px}@media (max-width:1023px){.miam-modal__container.center .miam-modal{min-width:unset;transform:unset;border-radius:unset;padding:unset}.miam-modal__container.center .miam-modal.with-header .miam-modal__content-container .miam-modal__header{border-bottom:1px solid var(--miam-ds-color-border);padding:24px}.miam-modal__container.center .miam-modal.with-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:unset}.miam-modal__container.center .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:24px}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__content{box-sizing:border-box;height:100%;margin:unset;padding:24px}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions{border-top:1px solid var(--miam-ds-color-border);padding:24px}.miam-modal__container.center .miam-modal,.miam-modal__container.left .miam-modal,.miam-modal__container.left.small-width .miam-modal,.miam-modal__container.left.tiny-width .miam-modal,.miam-modal__container.right .miam-modal,.miam-modal__container.right.small-width .miam-modal,.miam-modal__container.right.tiny-width .miam-modal{max-width:100vw;max-height:100dvh;width:100vw;height:100dvh;top:0;bottom:0;right:0;animation-name:openBottomSheet;animation-duration:.5s;animation-timing-function:cubic-bezier(.075,.82,.165,1)}@keyframes openBottomSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions{flex-direction:column-reverse}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary{background-color:var(--miam-ds-color-primary)}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary{background-color:transparent}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button{margin-left:unset;margin-bottom:12px}}"], encapsulation: 2, changeDetection: 0 });
8698
+ }, directives: [i2__namespace$1.NgIf, i2__namespace$1.NgClass, LoaderComponent], styles: [".miam-modal__container .miam-shadow-overlay{position:fixed;background:var(--miam-ds-color-neutral-black);animation-name:show;animation-duration:.3s;opacity:.6;animation-timing-function:ease-in-out;z-index:var(--m-z-index-modal-overlay);top:0;left:0;width:100vw;height:100dvh;-webkit-tap-highlight-color:transparent}@keyframes show{0%{opacity:0}to{opacity:.6}}.miam-modal__container .miam-modal{z-index:var(--m-z-index-modal);position:fixed;overflow:hidden;background-color:var(--miam-ds-color-background-primary);display:flex;flex-direction:column}@media print{.miam-modal__container .miam-modal{overflow-y:unset!important;position:unset!important;height:unset!important}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__close-icon{display:none}}.miam-modal__container .miam-modal.with-header .miam-modal__content-container .miam-modal__content{margin-top:24px;margin-bottom:24px}.miam-modal__container .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__title{display:none}.miam-modal__container .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{position:absolute;top:0;right:0;z-index:var(--m-z-index-position-absolute-high)}.miam-modal__container .miam-modal .miam-modal__content-container{position:relative;height:100%;display:flex;flex-direction:column;overflow:hidden}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__header{display:flex;flex-direction:row;justify-content:space-between}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__header .miam-modal__title{font-weight:900;overflow:hidden;text-overflow:ellipsis;align-self:center}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:8px;padding:16px;background:50%/24px no-repeat url(https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross_primary.svg)}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__content__scroll-protection{overflow:hidden;height:100%;display:flex}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__content{width:100%;overflow-y:auto;overflow-x:hidden;scrollbar-color:var(--miam-ds-color-primary-100),var(--miam-ds-color-primary);scrollbar-width:thin}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__actions{display:flex;justify-content:flex-end;flex-direction:row}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__actions button+button{margin-left:12px}.miam-modal__container.center .miam-modal{height:auto;min-width:464px;width:600px;max-width:700px;max-height:96dvh;box-sizing:border-box;top:50%;left:50%;right:unset;transform:translate(-50%,-50%);border-radius:8px;background-color:var(--miam-ds-color-neutral-white);padding:24px}.miam-modal__container.right .miam-modal{right:0;animation-name:openRightDrawer}@keyframes openRightDrawer{0%{right:-1200px}to{right:0}}.miam-modal__container.left .miam-modal{left:0;animation-name:openLeftDrawer}@keyframes openLeftDrawer{0%{left:-1200px}to{left:0}}.miam-modal__container.left .miam-modal,.miam-modal__container.right .miam-modal{animation-duration:.5s;animation-timing-function:cubic-bezier(.75,0,.2,1);height:100%;width:1000px;top:0}.miam-modal__container.left .miam-modal .miam-modal__content-container,.miam-modal__container.right .miam-modal .miam-modal__content-container{height:100%;box-sizing:border-box}.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__content,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__content{height:100%;box-sizing:border-box;margin:unset}.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions{padding:24px;border-top:1px solid var(--miam-ds-color-border)}.miam-modal__container.left .miam-modal.with-header .miam-modal__content-container .miam-modal__header,.miam-modal__container.right .miam-modal.with-header .miam-modal__content-container .miam-modal__header{border-bottom:1px solid var(--miam-ds-color-border);padding:24px}.miam-modal__container.left .miam-modal.with-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon,.miam-modal__container.right .miam-modal.with-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:unset}.miam-modal__container.left .miam-modal.with-header .miam-modal__content-container .miam-modal__content,.miam-modal__container.right .miam-modal.with-header .miam-modal__content-container .miam-modal__content{padding:24px}.miam-modal__container.left .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon,.miam-modal__container.right .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:24px}.miam-modal__container.left.small-width .miam-modal,.miam-modal__container.right.small-width .miam-modal{min-width:680px;max-width:680px}.miam-modal__container.left.tiny-width .miam-modal,.miam-modal__container.right.tiny-width .miam-modal{min-width:360px;max-width:360px}@media (max-width:1023px){.miam-modal__container.center .miam-modal{min-width:unset;transform:unset;border-radius:unset;padding:unset}.miam-modal__container.center .miam-modal.with-header .miam-modal__content-container .miam-modal__header{border-bottom:1px solid var(--miam-ds-color-border);padding:24px}.miam-modal__container.center .miam-modal.with-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:unset}.miam-modal__container.center .miam-modal.without-header .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{margin:24px}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__content{box-sizing:border-box;height:100%;margin:unset;padding:24px}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions{border-top:1px solid var(--miam-ds-color-border);padding:24px}.miam-modal__container.center .miam-modal,.miam-modal__container.left .miam-modal,.miam-modal__container.left.small-width .miam-modal,.miam-modal__container.left.tiny-width .miam-modal,.miam-modal__container.right .miam-modal,.miam-modal__container.right.small-width .miam-modal,.miam-modal__container.right.tiny-width .miam-modal{max-width:100vw;max-height:100dvh;width:100vw;height:100dvh;top:0;bottom:0;right:0;animation-name:openBottomSheet;animation-duration:.5s;animation-timing-function:cubic-bezier(.075,.82,.165,1)}@keyframes openBottomSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions{flex-direction:column-reverse}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.primary{background-color:var(--miam-ds-color-primary)}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button:hover.secondary{background-color:transparent}.miam-modal__container.center .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.left .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.left.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.left.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.right.small-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button,.miam-modal__container.right.tiny-width .miam-modal .miam-modal__content-container .miam-modal__actions .miam-ds-button+button{margin-left:unset;margin-bottom:12px}}"], encapsulation: 2, changeDetection: 0 });
8606
8699
  (function () {
8607
8700
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(ModalComponent, [{
8608
8701
  type: i0.Component,
@@ -8637,6 +8730,8 @@
8637
8730
  type: i0.Input
8638
8731
  }], modalStyle: [{
8639
8732
  type: i0.Input
8733
+ }], ctaColor: [{
8734
+ type: i0.Input
8640
8735
  }], close: [{
8641
8736
  type: i0.Output
8642
8737
  }], cancel: [{
@@ -24169,7 +24264,7 @@
24169
24264
  i0__namespace.ɵɵadvance(1);
24170
24265
  i0__namespace.ɵɵproperty("ngIf", i0__namespace.ɵɵpipeBind1(4, 5, ctx.recipeDetailsService.basketEntryToReplace$));
24171
24266
  }
24172
- }, directives: [i2__namespace$1.NgIf, CounterInputComponent, ReachTopDirective, RecipeDetailsInfosComponent, i2__namespace$1.NgClass, SliderTabsComponent, LikeButtonComponent, i8__namespace.YouTubePlayer, AddonLinkComponent, ProductsPickerComponent, RecipeDetailsIngredientsComponent, RecipeDetailsStepsComponent, RecipePricingComponent, RecipeAddonComponent, ReplaceItemComponent], pipes: [i2__namespace$1.AsyncPipe], styles: [".miam-recipe-details{min-height:100dvh}.miam-recipe-details .miam-recipe-details__loader{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;width:40px;height:40px;background-position-x:20px;background-size:20px 20px}.miam-recipe-details .miam-recipe-details__container{position:relative}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__sponsor-separator{border-top:1px solid var(--miam-ds-color-neutral-200,#d9dde1);margin:unset}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture{position:relative;max-height:600px;display:flex}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons{position:absolute;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end;gap:24px;top:16px;right:16px;left:16px;bottom:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper{flex:1;width:100%;height:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons{display:flex;justify-content:space-between;height:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button{transform:rotate(90deg);border-radius:100%;height:40px;width:40px;position:sticky;top:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button .miam-recipe-details__back-icon{display:block}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button:hover img.miam-recipe-details__back-icon{content:url(https://storage.googleapis.com/assets.miam.tech/generic/icons/chevron-down-white.svg)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__like-button{position:absolute;top:0;right:0}@media (min-width:1023px) and (max-height:800px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__guest-counter .miam-counter-input{padding:2px}}@media (min-width:1023px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons{top:24px;right:24px;left:24px;bottom:24px;flex-direction:column}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper{width:inherit}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button{display:flex;position:sticky;top:24px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button:hover img.miam-recipe-details__close-icon{content:url(https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross.svg)}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__picture-img{width:100%;max-height:100%;-o-object-position:center;object-position:center;-o-object-fit:cover;object-fit:cover}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container{z-index:2;display:flex;justify-content:space-between;align-items:center;position:sticky;top:-1px;padding:16px;overflow:hidden;background:var(--miam-ds-color-neutral-white,#fff);transition:padding .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__title{width:100%;transition:font-size .3s;color:var(--miam-ds-color-neutral-black,#1f3543)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon{display:flex;position:absolute;right:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon .miam-recipe-details__hideable-actions{max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon .miam-recipe-details__close-button{margin-left:16px;padding:8px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned{padding:12px 16px;border-bottom:1px solid var(--miam-ds-color-neutral-200,#d9dde1)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__title{font-size:20px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon{position:relative;top:unset;right:unset}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon .miam-recipe-details__like-button{margin-right:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon .miam-recipe-details__hideable-actions{max-width:64px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container{justify-content:flex-start}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container{display:flex;align-items:center;justify-content:center;max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container .miam-recipe-details__back-icon{transform:rotate(90deg)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__title{font-size:20px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon{max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__hideable-actions{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned{padding:4px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__back-button-mobile-container{overflow:visible;max-width:48px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__back-button-mobile-container .miam-recipe-details__back-button{margin:8px 0;width:40px;height:40px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__title{font-size:14px;font-weight:500}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon{max-width:40px}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__infos{padding:8px 16px 16px;display:block}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__tabs{padding:8px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__tabs.hidden{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer{box-sizing:border-box;background:var(--miam-ds-color-neutral-white,#fff);border-top:1px solid var(--miam-ds-color-neutral-200,#d9dde1);padding:16px;position:sticky;bottom:0;display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center;z-index:2;height:80px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer.center{justify-content:center}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer.hidden{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta{display:flex;gap:8px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta.miam-ds-button.primary:hover{background-color:var(--miam-ds-color-primary)}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta .miam-recipe-details__add-to-basket-cta__text{display:flex;gap:4px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper{align-items:flex-end}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__price{color:var(--miam-ds-color-primary-700);margin-right:4px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper{flex-direction:column;align-items:flex-start}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__preparation-tab{padding:16px;display:flex;flex-direction:column;gap:24px}"], encapsulation: 2, changeDetection: 0 });
24267
+ }, directives: [i2__namespace$1.NgIf, CounterInputComponent, ReachTopDirective, RecipeDetailsInfosComponent, i2__namespace$1.NgClass, SliderTabsComponent, LikeButtonComponent, i8__namespace.YouTubePlayer, AddonLinkComponent, ProductsPickerComponent, RecipeDetailsIngredientsComponent, RecipeDetailsStepsComponent, RecipePricingComponent, RecipeAddonComponent, ReplaceItemComponent], pipes: [i2__namespace$1.AsyncPipe], styles: [".miam-recipe-details{min-height:100dvh}.miam-recipe-details .miam-recipe-details__loader{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;width:40px;height:40px;background-position-x:20px;background-size:20px 20px}.miam-recipe-details .miam-recipe-details__container{position:relative}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__sponsor-separator{border-top:1px solid var(--miam-ds-color-neutral-200,#d9dde1);margin:unset}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture{position:relative;max-height:600px;display:flex}@media (min-width:1023px) and (max-height:1000px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture{max-height:400px}}@media (min-width:1023px) and (max-height:800px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture{max-height:300px}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons{position:absolute;display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end;gap:24px;top:16px;right:16px;left:16px;bottom:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper{flex:1;width:100%;height:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons{display:flex;justify-content:space-between;height:100%}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button{transform:rotate(90deg);border-radius:100%;height:40px;width:40px;position:sticky;top:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button .miam-recipe-details__back-icon{display:block}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__back-button:hover img.miam-recipe-details__back-icon{content:url(https://storage.googleapis.com/assets.miam.tech/generic/icons/chevron-down-white.svg)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons .miam-recipe-details__like-button{position:absolute;top:0;right:0}@media (min-width:1023px) and (max-height:800px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__guest-counter .miam-counter-input{padding:2px}}@media (min-width:1023px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons{top:24px;right:24px;left:24px;bottom:24px;flex-direction:column}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper{width:inherit}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__mobile-header-buttons{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button{display:flex;position:sticky;top:24px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__banner_buttons .miam-recipe-details__top-button-wrapper .miam-recipe-details__close-button:hover img.miam-recipe-details__close-icon{content:url(https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross.svg)}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__picture .miam-recipe-details__picture-img{width:100%;max-height:100%;-o-object-position:center;object-position:center;-o-object-fit:cover;object-fit:cover}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container{z-index:2;display:flex;justify-content:space-between;align-items:center;position:sticky;top:-1px;padding:16px;overflow:hidden;background:var(--miam-ds-color-neutral-white,#fff);transition:padding .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__title{width:100%;transition:font-size .3s;color:var(--miam-ds-color-neutral-black,#1f3543)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon{display:flex;position:absolute;right:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon .miam-recipe-details__hideable-actions{max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon .miam-recipe-details__close-button{margin-left:16px;padding:8px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned{padding:12px 16px;border-bottom:1px solid var(--miam-ds-color-neutral-200,#d9dde1)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__title{font-size:20px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon{position:relative;top:unset;right:unset}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon .miam-recipe-details__like-button{margin-right:16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon .miam-recipe-details__hideable-actions{max-width:64px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container{justify-content:flex-start}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container{display:flex;align-items:center;justify-content:center;max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__back-button-mobile-container .miam-recipe-details__back-icon{transform:rotate(90deg)}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__title{font-size:20px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__actions__icon{max-width:0;overflow:hidden;transition:max-width .3s}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container .miam-recipe-details__hideable-actions{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned{padding:4px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__back-button-mobile-container{overflow:visible;max-width:48px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__back-button-mobile-container .miam-recipe-details__back-button{margin:8px 0;width:40px;height:40px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__title{font-size:14px;font-weight:500}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__title-container.is-pinned .miam-recipe-details__actions__icon{max-width:40px}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__infos{padding:8px 16px 16px;display:block}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__tabs{padding:8px 16px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__tabs.hidden{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer{box-sizing:border-box;background:var(--miam-ds-color-neutral-white,#fff);border-top:1px solid var(--miam-ds-color-neutral-200,#d9dde1);padding:16px;position:sticky;bottom:0;display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center;z-index:2;height:80px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer.center{justify-content:center}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer.hidden{display:none}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta{display:flex;gap:8px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta.miam-ds-button.primary:hover{background-color:var(--miam-ds-color-primary)}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer .miam-recipe-details__add-to-basket-cta .miam-recipe-details__add-to-basket-cta__text{display:flex;gap:4px}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper{align-items:flex-end}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__price{color:var(--miam-ds-color-primary-700);margin-right:4px}@media (max-width:1024px){.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__footer ng-miam-recipe-pricing .miam-recipe-pricing__wrapper{flex-direction:column;align-items:flex-start}}.miam-recipe-details .miam-recipe-details__container .miam-recipe-details__preparation-tab{padding:16px;display:flex;flex-direction:column;gap:24px}"], encapsulation: 2, changeDetection: 0 });
24173
24268
  (function () {
24174
24269
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(RecipeDetailsComponent, [{
24175
24270
  type: i0.Component,
@@ -25335,7 +25430,7 @@
25335
25430
  i0__namespace.ɵɵadvance(2);
25336
25431
  i0__namespace.ɵɵproperty("ngIf", !i0__namespace.ɵɵpipeBind1(3, 4, ctx.previewMode));
25337
25432
  }
25338
- }, directives: [i2__namespace$1.NgIf, ModalComponent, BasketPreviewBlockComponent, RecipeDetailsComponent], pipes: [i2__namespace$1.AsyncPipe], styles: [".miam-modal.without-header .miam-modal__header .miam-modal__close-icon{display:none}.miam-recipe-modal__basket-preview-modal .miam-modal__container.right .miam-modal{width:480px}@media (max-width:600px){.miam-recipe-modal__basket-preview-modal .miam-modal__container.right .miam-modal{width:100%}}.miam-recipe-modal__basket-preview-modal .miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__content{padding:16px}"], encapsulation: 2, changeDetection: 0 });
25433
+ }, directives: [i2__namespace$1.NgIf, ModalComponent, BasketPreviewBlockComponent, RecipeDetailsComponent], pipes: [i2__namespace$1.AsyncPipe], styles: [".miam-modal.without-header .miam-modal__header .miam-modal__close-icon{display:none}.miam-recipe-modal__basket-preview-modal .miam-modal__container.right .miam-modal{width:480px}@media (max-width:600px){.miam-recipe-modal__basket-preview-modal .miam-modal__container.right .miam-modal{width:100%}}.miam-recipe-modal__basket-preview-modal .miam-modal__container.right .miam-modal .miam-modal__content-container .miam-modal__content{padding:16px}@media (min-width:1023px) and (max-height:1000px){ng-miam-recipe-modal .miam-modal__container.left .miam-modal,ng-miam-recipe-modal .miam-modal__container.right .miam-modal{width:650px}}@media (min-width:1023px) and (max-height:800px){ng-miam-recipe-modal .miam-modal__container.left .miam-modal,ng-miam-recipe-modal .miam-modal__container.right .miam-modal{width:450px}}"], encapsulation: 2, changeDetection: 0 });
25339
25434
  (function () {
25340
25435
  (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(RecipeModalComponent, [{
25341
25436
  type: i0.Component,
@@ -25656,6 +25751,8 @@
25656
25751
  exports.ExplainBannerStepComponent = ExplainBannerStepComponent;
25657
25752
  exports.IconComponent = IconComponent;
25658
25753
  exports.Ingredient = Ingredient;
25754
+ exports.IngredientDefinition = IngredientDefinition;
25755
+ exports.IngredientsDefinitionsService = IngredientsDefinitionsService;
25659
25756
  exports.IngredientsService = IngredientsService;
25660
25757
  exports.Item = Item;
25661
25758
  exports.ItemsService = ItemsService;