ng-miam 6.4.13 → 7.0.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 (208) hide show
  1. package/bundles/ng-miam.umd.js +8539 -10855
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +2 -2
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_components/abstracts/event-tracer.component.js +3 -2
  6. package/esm2015/lib/_components/accordion/accordion.component.js +75 -0
  7. package/esm2015/lib/_components/components.module.js +27 -21
  8. package/esm2015/lib/_components/counter-input/counter-input.component.js +86 -76
  9. package/esm2015/lib/_components/icon/icon.component.js +1 -1
  10. package/esm2015/lib/_components/index.js +5 -5
  11. package/esm2015/lib/_components/like-button/like-button.component.js +1 -1
  12. package/esm2015/lib/_components/list-input/list-input.component.js +5 -5
  13. package/esm2015/lib/_components/loader/loader.component.js +1 -1
  14. package/esm2015/lib/_components/meals-planner-link/meals-planner-link.component.js +3 -3
  15. package/esm2015/lib/_components/modal/modal.component.js +155 -137
  16. package/esm2015/lib/_components/product-card/product-card.component.js +333 -0
  17. package/esm2015/lib/_components/products-picker/products-picker.component.js +155 -0
  18. package/esm2015/lib/_components/progress-tracker/progress-tracker.component.js +1 -1
  19. package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +166 -217
  20. package/esm2015/lib/_components/recipe-pricing/recipe-pricing.component.js +55 -35
  21. package/esm2015/lib/_components/slider-tabs/slider-tabs.component.js +84 -0
  22. package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +1 -1
  23. package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +1 -1
  24. package/esm2015/lib/_components/tabs/tabs.component.js +48 -88
  25. package/esm2015/lib/_components/toaster/toaster.component.js +48 -84
  26. package/esm2015/lib/_components/tooltipable-content/tooltipable-content.component.js +1 -1
  27. package/esm2015/lib/_models/basket-entry.js +33 -49
  28. package/esm2015/lib/_models/basket-preview-line.js +5 -5
  29. package/esm2015/lib/_models/basket.js +15 -12
  30. package/esm2015/lib/_models/item.js +2 -2
  31. package/esm2015/lib/_models/recipe.js +2 -15
  32. package/esm2015/lib/_models/user.js +1 -1
  33. package/esm2015/lib/_services/analytics.service.js +24 -5
  34. package/esm2015/lib/_services/baskets-synchronizing/baskets-comparator.service.js +1 -10
  35. package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +15 -15
  36. package/esm2015/lib/_services/baskets.service.js +478 -60
  37. package/esm2015/lib/_services/context.service.js +22 -35
  38. package/esm2015/lib/_services/index.js +3 -5
  39. package/esm2015/lib/_services/interceptor.service.js +2 -2
  40. package/esm2015/lib/_services/items.service.js +27 -4
  41. package/esm2015/lib/_services/recipe-details.service.js +198 -0
  42. package/esm2015/lib/_services/recipe-likes.service.js +1 -1
  43. package/esm2015/lib/_services/recipes.service.js +24 -53
  44. package/esm2015/lib/_services/scrolling.service.js +17 -0
  45. package/esm2015/lib/_services/toaster.service.js +4 -5
  46. package/esm2015/lib/_services/user.service.js +2 -2
  47. package/esm2015/lib/_types/basket-action-type.enum.js +11 -0
  48. package/esm2015/lib/_types/basket-action.js +2 -0
  49. package/esm2015/lib/_types/basket-stats.js +2 -0
  50. package/esm2015/lib/_types/builded/miam-interface.js +1 -1
  51. package/esm2015/lib/_types/event-trace.js +5 -0
  52. package/esm2015/lib/_types/items-comparator.js +1 -10
  53. package/esm2015/lib/_types/recipe-filters.js +1 -1
  54. package/esm2015/lib/_types/toaster.js +1 -1
  55. package/esm2015/lib/_utils/directives/index.js +2 -1
  56. package/esm2015/lib/_utils/directives/reach-top.directive.js +33 -0
  57. package/esm2015/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.js +8 -2
  58. package/esm2015/lib/_utils/utils.module.js +12 -8
  59. package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +140 -118
  60. package/esm2015/lib/_web-components/basket-preview/basket-preview-disabled/basket-preview-disabled.component.js +2 -2
  61. package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +125 -444
  62. package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +211 -108
  63. package/esm2015/lib/_web-components/index.js +1 -4
  64. package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +11 -14
  65. package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +13 -13
  66. package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +6 -6
  67. package/esm2015/lib/_web-components/list-scan/list-scan.component.js +10 -10
  68. package/esm2015/lib/_web-components/list-scan/overlay-button/overlay-button.component.js +23 -11
  69. package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.js +1 -1
  70. package/esm2015/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.js +1 -1
  71. package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +7 -7
  72. package/esm2015/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.js +5 -5
  73. package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +16 -20
  74. package/esm2015/lib/_web-components/planner-side-menu/planner-side-menu.component.js +4 -53
  75. package/esm2015/lib/_web-components/recipe-cards/add-recipe-card/add-recipe-card.component.js +1 -1
  76. package/esm2015/lib/_web-components/recipe-cards/index.js +1 -3
  77. package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +326 -404
  78. package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +50 -146
  79. package/esm2015/lib/_web-components/recipe-cards/recipe-cards.module.js +3 -15
  80. package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +1 -1
  81. package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +35 -29
  82. package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +1 -1
  83. package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +27 -31
  84. package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +98 -100
  85. package/esm2015/lib/_web-components/recipe-creation/recipe-form/recipe-form.component.js +2 -2
  86. package/esm2015/lib/_web-components/recipe-creation/recipe-stepper/recipe-stepper.component.js +7 -7
  87. package/esm2015/lib/_web-components/recipe-creation/tags-creator/tags-creator.component.js +4 -4
  88. package/esm2015/lib/_web-components/recipe-creation/tags-selector/tags-selector.component.js +8 -8
  89. package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +7 -3
  90. package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +57 -358
  91. package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +59 -122
  92. package/esm2015/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.js +51 -72
  93. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +313 -363
  94. package/esm2015/lib/_web-components/recipe-details/recipe-details.module.js +8 -4
  95. package/esm2015/lib/_web-components/recipe-details/sponsor-storytelling/sponsor-storytelling.component.js +1 -1
  96. package/esm2015/lib/_web-components/recipe-helper/recipe-helper.component.js +89 -113
  97. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +78 -69
  98. package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +5 -5
  99. package/esm2015/lib/_web-components/toaster-stack/toaster-stack.component.js +8 -4
  100. package/esm2015/lib/_web-components/web-components.module.js +3 -19
  101. package/esm2015/lib/ng-miam.module.js +5 -7
  102. package/fesm2015/ng-miam.js +5165 -6973
  103. package/fesm2015/ng-miam.js.map +1 -1
  104. package/lib/_components/abstracts/event-tracer.component.d.ts +2 -1
  105. package/lib/_components/accordion/accordion.component.d.ts +23 -0
  106. package/lib/_components/components.module.d.ts +38 -36
  107. package/lib/_components/counter-input/counter-input.component.d.ts +12 -14
  108. package/lib/_components/index.d.ts +4 -4
  109. package/lib/_components/modal/modal.component.d.ts +18 -18
  110. package/lib/_components/product-card/product-card.component.d.ts +40 -0
  111. package/lib/_components/products-picker/products-picker.component.d.ts +17 -0
  112. package/lib/_components/recipe-pricing/recipe-pricing.component.d.ts +12 -8
  113. package/lib/_components/slider-tabs/slider-tabs.component.d.ts +16 -0
  114. package/lib/_components/tabs/tabs.component.d.ts +11 -11
  115. package/lib/_components/toaster/toaster.component.d.ts +4 -2
  116. package/lib/_models/basket-entry.d.ts +16 -20
  117. package/lib/_models/basket-preview-line.d.ts +1 -0
  118. package/lib/_models/basket.d.ts +12 -5
  119. package/lib/_models/item.d.ts +1 -1
  120. package/lib/_models/recipe.d.ts +0 -5
  121. package/lib/_models/user.d.ts +0 -1
  122. package/lib/_services/analytics.service.d.ts +8 -22
  123. package/lib/_services/baskets-synchronizing/baskets-comparator.service.d.ts +0 -5
  124. package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +3 -6
  125. package/lib/_services/baskets.service.d.ts +137 -18
  126. package/lib/_services/context.service.d.ts +2 -4
  127. package/lib/_services/index.d.ts +2 -4
  128. package/lib/_services/items.service.d.ts +9 -2
  129. package/lib/_services/recipe-details.service.d.ts +84 -0
  130. package/lib/_services/recipe-likes.service.d.ts +2 -1
  131. package/lib/_services/recipes.service.d.ts +10 -14
  132. package/lib/_services/scrolling.service.d.ts +8 -0
  133. package/lib/_services/toaster.service.d.ts +1 -1
  134. package/lib/_types/basket-action-type.enum.d.ts +9 -0
  135. package/lib/_types/basket-action.d.ts +14 -0
  136. package/lib/_types/basket-stats.d.ts +5 -0
  137. package/lib/_types/builded/miam-interface.d.ts +16 -25
  138. package/lib/_types/event-trace.d.ts +22 -0
  139. package/lib/_types/items-comparator.d.ts +0 -5
  140. package/lib/_types/recipe-filters.d.ts +0 -2
  141. package/lib/_types/toaster.d.ts +1 -1
  142. package/lib/_utils/directives/index.d.ts +1 -0
  143. package/lib/_utils/directives/reach-top.directive.d.ts +13 -0
  144. package/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.d.ts +1 -1
  145. package/lib/_utils/utils.module.d.ts +2 -2
  146. package/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.d.ts +9 -8
  147. package/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.d.ts +11 -9
  148. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +27 -20
  149. package/lib/_web-components/index.d.ts +0 -3
  150. package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +1 -2
  151. package/lib/_web-components/list-scan/files-inputs/files-inputs.component.d.ts +6 -5
  152. package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +3 -3
  153. package/lib/_web-components/list-scan/list-scan.component.d.ts +3 -3
  154. package/lib/_web-components/list-scan/overlay-button/overlay-button.component.d.ts +8 -6
  155. package/lib/_web-components/meals-planner/meals-planner.component.d.ts +2 -3
  156. package/lib/_web-components/recipe-cards/index.d.ts +0 -2
  157. package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +58 -17
  158. package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +5 -12
  159. package/lib/_web-components/recipe-cards/recipe-cards.module.d.ts +7 -9
  160. package/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.d.ts +8 -6
  161. package/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.d.ts +7 -4
  162. package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +2 -3
  163. package/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.d.ts +5 -2
  164. package/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.d.ts +6 -18
  165. package/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.d.ts +6 -13
  166. package/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.d.ts +2 -10
  167. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +29 -36
  168. package/lib/_web-components/recipe-details/recipe-details.module.d.ts +2 -1
  169. package/lib/_web-components/recipe-helper/recipe-helper.component.d.ts +2 -6
  170. package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +11 -9
  171. package/lib/_web-components/toaster-stack/toaster-stack.component.d.ts +5 -2
  172. package/lib/_web-components/web-components.module.d.ts +23 -29
  173. package/miam-style.css +1 -1
  174. package/package.json +1 -1
  175. package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +0 -130
  176. package/esm2015/lib/_components/skeleton/skeleton.component.js +0 -70
  177. package/esm2015/lib/_components/tabs/tab-body.component.js +0 -30
  178. package/esm2015/lib/_components/tabs/tab-item.component.js +0 -36
  179. package/esm2015/lib/_components/tabs/tab-label.component.js +0 -30
  180. package/esm2015/lib/_models/groceries-entry.js +0 -42
  181. package/esm2015/lib/_models/groceries-list.js +0 -36
  182. package/esm2015/lib/_services/counter.service.js +0 -20
  183. package/esm2015/lib/_services/groceries-entries.service.js +0 -21
  184. package/esm2015/lib/_services/groceries-lists.service.js +0 -240
  185. package/esm2015/lib/_services/recipe-events.service.js +0 -63
  186. package/esm2015/lib/_types/skeleton.enum.js +0 -7
  187. package/esm2015/lib/_web-components/drawer/drawer.component.js +0 -273
  188. package/esm2015/lib/_web-components/pos-card/pos-card.component.js +0 -207
  189. package/esm2015/lib/_web-components/pos-selection/pos-selection.component.js +0 -283
  190. package/esm2015/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.js +0 -632
  191. package/esm2015/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.js +0 -144
  192. package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +0 -49
  193. package/lib/_components/skeleton/skeleton.component.d.ts +0 -11
  194. package/lib/_components/tabs/tab-body.component.d.ts +0 -8
  195. package/lib/_components/tabs/tab-item.component.d.ts +0 -11
  196. package/lib/_components/tabs/tab-label.component.d.ts +0 -8
  197. package/lib/_models/groceries-entry.d.ts +0 -20
  198. package/lib/_models/groceries-list.d.ts +0 -30
  199. package/lib/_services/counter.service.d.ts +0 -10
  200. package/lib/_services/groceries-entries.service.d.ts +0 -10
  201. package/lib/_services/groceries-lists.service.d.ts +0 -68
  202. package/lib/_services/recipe-events.service.d.ts +0 -23
  203. package/lib/_types/skeleton.enum.d.ts +0 -5
  204. package/lib/_web-components/drawer/drawer.component.d.ts +0 -37
  205. package/lib/_web-components/pos-card/pos-card.component.d.ts +0 -24
  206. package/lib/_web-components/pos-selection/pos-selection.component.d.ts +0 -38
  207. package/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.d.ts +0 -49
  208. package/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.d.ts +0 -42
@@ -1,226 +1,231 @@
1
- import { MediaMatcher } from '@angular/cdk/layout';
2
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef } from '@angular/core';
3
- import { ContextService } from '../../_services';
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, HostListener } from '@angular/core';
4
2
  import { Icon } from '../../_types/icon.enum';
5
3
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/layout";
7
- import * as i2 from "../../_services";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "../icon/icon.component";
10
- import * as i5 from "../loader/loader.component";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../loader/loader.component";
6
+ function ModalComponent_ng_container_0_div_6_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelementStart(0, "div", 12);
8
+ i0.ɵɵelementStart(1, "span");
9
+ i0.ɵɵtext(2);
10
+ i0.ɵɵelementEnd();
11
+ i0.ɵɵelementEnd();
12
+ } if (rf & 2) {
13
+ const ctx_r1 = i0.ɵɵnextContext(2);
14
+ i0.ɵɵadvance(2);
15
+ i0.ɵɵtextInterpolate(ctx_r1.title);
16
+ } }
11
17
  function ModalComponent_ng_container_0_div_7_Template(rf, ctx) { if (rf & 1) {
12
- i0.ɵɵelementStart(0, "div", 5);
18
+ i0.ɵɵelementStart(0, "div", 13);
13
19
  i0.ɵɵelementStart(1, "span");
14
- i0.ɵɵi18n(2, 11);
20
+ i0.ɵɵi18n(2, 14);
15
21
  i0.ɵɵelementEnd();
16
22
  i0.ɵɵelementStart(3, "span");
17
23
  i0.ɵɵtext(4);
18
24
  i0.ɵɵelementEnd();
19
25
  i0.ɵɵelementStart(5, "span");
20
- i0.ɵɵi18n(6, 12);
26
+ i0.ɵɵi18n(6, 15);
21
27
  i0.ɵɵelementEnd();
22
28
  i0.ɵɵelementEnd();
23
29
  } if (rf & 2) {
24
- const ctx_r1 = i0.ɵɵnextContext(2);
30
+ const ctx_r2 = i0.ɵɵnextContext(2);
25
31
  i0.ɵɵadvance(4);
26
- i0.ɵɵtextInterpolate(ctx_r1.recipesCount);
27
- } }
28
- function ModalComponent_ng_container_0_ng_content_9_Template(rf, ctx) { if (rf & 1) {
29
- i0.ɵɵprojection(0, 0, ["*ngIf", "isAngularComponent else isWebC"]);
30
- } }
31
- function ModalComponent_ng_container_0_ng_template_10_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelement(0, "slot", 13);
32
+ i0.ɵɵtextInterpolate(ctx_r2.recipesCount);
33
33
  } }
34
34
  function ModalComponent_ng_container_0_div_12_button_1_span_1_Template(rf, ctx) { if (rf & 1) {
35
35
  i0.ɵɵelementStart(0, "span");
36
36
  i0.ɵɵtext(1);
37
37
  i0.ɵɵelementEnd();
38
38
  } if (rf & 2) {
39
- const ctx_r9 = i0.ɵɵnextContext(4);
39
+ const ctx_r7 = i0.ɵɵnextContext(4);
40
40
  i0.ɵɵadvance(1);
41
- i0.ɵɵtextInterpolate(ctx_r9.cancelButtonText);
41
+ i0.ɵɵtextInterpolate(ctx_r7.cancelButtonText);
42
42
  } }
43
43
  function ModalComponent_ng_container_0_div_12_button_1_ng_miam_loader_2_Template(rf, ctx) { if (rf & 1) {
44
44
  i0.ɵɵelement(0, "ng-miam-loader");
45
45
  } }
46
46
  function ModalComponent_ng_container_0_div_12_button_1_Template(rf, ctx) { if (rf & 1) {
47
- const _r12 = i0.ɵɵgetCurrentView();
48
- i0.ɵɵelementStart(0, "button", 17);
49
- i0.ɵɵlistener("click", function ModalComponent_ng_container_0_div_12_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(3); return ctx_r11.onCancel(); });
47
+ const _r10 = i0.ɵɵgetCurrentView();
48
+ i0.ɵɵelementStart(0, "button", 19);
49
+ i0.ɵɵlistener("click", function ModalComponent_ng_container_0_div_12_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(3); return ctx_r9.onCancel(); });
50
50
  i0.ɵɵtemplate(1, ModalComponent_ng_container_0_div_12_button_1_span_1_Template, 2, 1, "span", 0);
51
51
  i0.ɵɵtemplate(2, ModalComponent_ng_container_0_div_12_button_1_ng_miam_loader_2_Template, 1, 0, "ng-miam-loader", 0);
52
52
  i0.ɵɵelementEnd();
53
53
  } if (rf & 2) {
54
- const ctx_r6 = i0.ɵɵnextContext(3);
55
- i0.ɵɵproperty("disabled", ctx_r6.cancelButtonDisabled);
54
+ const ctx_r4 = i0.ɵɵnextContext(3);
55
+ i0.ɵɵproperty("disabled", ctx_r4.cancelButtonDisabled);
56
56
  i0.ɵɵadvance(1);
57
- i0.ɵɵproperty("ngIf", !ctx_r6.cancelButtonIsLoading);
57
+ i0.ɵɵproperty("ngIf", !ctx_r4.cancelButtonIsLoading);
58
58
  i0.ɵɵadvance(1);
59
- i0.ɵɵproperty("ngIf", ctx_r6.cancelButtonIsLoading);
59
+ i0.ɵɵproperty("ngIf", ctx_r4.cancelButtonIsLoading);
60
60
  } }
61
61
  function ModalComponent_ng_container_0_div_12_span_3_Template(rf, ctx) { if (rf & 1) {
62
62
  i0.ɵɵelementStart(0, "span");
63
63
  i0.ɵɵtext(1);
64
64
  i0.ɵɵelementEnd();
65
65
  } if (rf & 2) {
66
- const ctx_r7 = i0.ɵɵnextContext(3);
66
+ const ctx_r5 = i0.ɵɵnextContext(3);
67
67
  i0.ɵɵadvance(1);
68
- i0.ɵɵtextInterpolate(ctx_r7.confirmButtonText);
68
+ i0.ɵɵtextInterpolate(ctx_r5.confirmButtonText);
69
69
  } }
70
70
  function ModalComponent_ng_container_0_div_12_ng_miam_loader_4_Template(rf, ctx) { if (rf & 1) {
71
71
  i0.ɵɵelement(0, "ng-miam-loader");
72
72
  } }
73
73
  function ModalComponent_ng_container_0_div_12_Template(rf, ctx) { if (rf & 1) {
74
- const _r14 = i0.ɵɵgetCurrentView();
75
- i0.ɵɵelementStart(0, "div", 14);
76
- i0.ɵɵtemplate(1, ModalComponent_ng_container_0_div_12_button_1_Template, 3, 3, "button", 15);
77
- i0.ɵɵelementStart(2, "button", 16);
78
- i0.ɵɵlistener("click", function ModalComponent_ng_container_0_div_12_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(2); return ctx_r13.onConfirm(); });
74
+ const _r12 = i0.ɵɵgetCurrentView();
75
+ i0.ɵɵelementStart(0, "div", 16);
76
+ i0.ɵɵtemplate(1, ModalComponent_ng_container_0_div_12_button_1_Template, 3, 3, "button", 17);
77
+ i0.ɵɵelementStart(2, "button", 18);
78
+ i0.ɵɵlistener("click", function ModalComponent_ng_container_0_div_12_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(2); return ctx_r11.onConfirm(); });
79
79
  i0.ɵɵtemplate(3, ModalComponent_ng_container_0_div_12_span_3_Template, 2, 1, "span", 0);
80
80
  i0.ɵɵtemplate(4, ModalComponent_ng_container_0_div_12_ng_miam_loader_4_Template, 1, 0, "ng-miam-loader", 0);
81
81
  i0.ɵɵelementEnd();
82
82
  i0.ɵɵelementEnd();
83
83
  } if (rf & 2) {
84
- const ctx_r5 = i0.ɵɵnextContext(2);
84
+ const ctx_r3 = i0.ɵɵnextContext(2);
85
85
  i0.ɵɵadvance(1);
86
- i0.ɵɵproperty("ngIf", ctx_r5.cancelButtonText);
86
+ i0.ɵɵproperty("ngIf", ctx_r3.cancelButtonText);
87
87
  i0.ɵɵadvance(1);
88
- i0.ɵɵproperty("disabled", ctx_r5.confirmButtonDisabled);
88
+ i0.ɵɵproperty("disabled", ctx_r3.confirmButtonDisabled);
89
89
  i0.ɵɵadvance(1);
90
- i0.ɵɵproperty("ngIf", !ctx_r5.confirmButtonIsLoading);
90
+ i0.ɵɵproperty("ngIf", !ctx_r3.confirmButtonIsLoading);
91
91
  i0.ɵɵadvance(1);
92
- i0.ɵɵproperty("ngIf", ctx_r5.confirmButtonIsLoading);
92
+ i0.ɵɵproperty("ngIf", ctx_r3.confirmButtonIsLoading);
93
93
  } }
94
94
  const _c4 = function (a0, a1) { return { "with-header": a0, "without-header": a1 }; };
95
95
  function ModalComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
96
- const _r16 = i0.ɵɵgetCurrentView();
96
+ const _r14 = i0.ɵɵgetCurrentView();
97
97
  i0.ɵɵelementContainerStart(0);
98
98
  i0.ɵɵelementStart(1, "div", 1);
99
- i0.ɵɵlistener("click", function ModalComponent_ng_container_0_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(); return ctx_r15.onClose(); });
100
- i0.ɵɵelementEnd();
101
99
  i0.ɵɵelementStart(2, "div", 2);
100
+ i0.ɵɵlistener("click", function ModalComponent_ng_container_0_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(); return ctx_r13.onClose(); });
101
+ i0.ɵɵelementEnd();
102
102
  i0.ɵɵelementStart(3, "div", 3);
103
103
  i0.ɵɵelementStart(4, "div", 4);
104
104
  i0.ɵɵelementStart(5, "div", 5);
105
- i0.ɵɵtext(6);
105
+ i0.ɵɵtemplate(6, ModalComponent_ng_container_0_div_6_Template, 3, 1, "div", 6);
106
+ i0.ɵɵtemplate(7, ModalComponent_ng_container_0_div_7_Template, 7, 1, "div", 7);
107
+ i0.ɵɵelementStart(8, "div", 8);
108
+ i0.ɵɵlistener("click", function ModalComponent_ng_container_0_Template_div_click_8_listener() { i0.ɵɵrestoreView(_r14); const ctx_r15 = i0.ɵɵnextContext(); return ctx_r15.onClose(); });
109
+ i0.ɵɵelementEnd();
106
110
  i0.ɵɵelementEnd();
107
- i0.ɵɵtemplate(7, ModalComponent_ng_container_0_div_7_Template, 7, 1, "div", 6);
108
- i0.ɵɵelementStart(8, "ng-miam-icon", 7);
109
- i0.ɵɵlistener("click", function ModalComponent_ng_container_0_Template_ng_miam_icon_click_8_listener() { i0.ɵɵrestoreView(_r16); const ctx_r17 = i0.ɵɵnextContext(); return ctx_r17.onClose(); });
111
+ i0.ɵɵelementStart(9, "div", 9);
112
+ i0.ɵɵelementStart(10, "div", 10);
113
+ i0.ɵɵprojection(11);
110
114
  i0.ɵɵelementEnd();
111
115
  i0.ɵɵelementEnd();
112
- i0.ɵɵtemplate(9, ModalComponent_ng_container_0_ng_content_9_Template, 1, 0, "ng-content", 8);
113
- i0.ɵɵtemplate(10, ModalComponent_ng_container_0_ng_template_10_Template, 1, 0, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
114
- i0.ɵɵtemplate(12, ModalComponent_ng_container_0_div_12_Template, 5, 4, "div", 10);
116
+ i0.ɵɵtemplate(12, ModalComponent_ng_container_0_div_12_Template, 5, 4, "div", 11);
117
+ i0.ɵɵelementEnd();
115
118
  i0.ɵɵelementEnd();
116
119
  i0.ɵɵelementEnd();
117
120
  i0.ɵɵelementContainerEnd();
118
121
  } if (rf & 2) {
119
- const _r3 = i0.ɵɵreference(11);
120
122
  const ctx_r0 = i0.ɵɵnextContext();
123
+ i0.ɵɵadvance(1);
124
+ i0.ɵɵproperty("ngClass", ctx_r0.modalStyle);
121
125
  i0.ɵɵadvance(2);
122
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(9, _c4, !ctx_r0.noHeaderMode, ctx_r0.noHeaderMode));
123
- i0.ɵɵadvance(4);
124
- i0.ɵɵtextInterpolate(ctx_r0.title);
126
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(5, _c4, !ctx_r0.noHeaderMode, ctx_r0.noHeaderMode));
127
+ i0.ɵɵadvance(3);
128
+ i0.ɵɵproperty("ngIf", ctx_r0.title);
125
129
  i0.ɵɵadvance(1);
126
130
  i0.ɵɵproperty("ngIf", !ctx_r0.title && ctx_r0.recipesCount);
127
- i0.ɵɵadvance(1);
128
- i0.ɵɵproperty("width", 24)("height", 24)("iconName", ctx_r0.icon.Cross);
129
- i0.ɵɵadvance(1);
130
- i0.ɵɵproperty("ngIf", ctx_r0.isAngularComponent)("ngIfElse", _r3);
131
- i0.ɵɵadvance(3);
131
+ i0.ɵɵadvance(5);
132
132
  i0.ɵɵproperty("ngIf", ctx_r0.cancelButtonText || ctx_r0.confirmButtonText);
133
133
  } }
134
134
  const _c5 = ["*"];
135
135
  export class ModalComponent {
136
- constructor(cdr, mediaMatcher, context) {
137
- this.cdr = cdr;
138
- this.mediaMatcher = mediaMatcher;
139
- this.context = context;
140
- this.expandedChange = new EventEmitter();
136
+ constructor() {
137
+ this.modalStyle = 'center';
141
138
  this.close = new EventEmitter();
142
139
  this.cancel = new EventEmitter();
143
140
  this.confirm = new EventEmitter();
144
141
  this.icon = Icon;
145
- this.scrollPosition = null;
146
- this.isMobile = false;
147
- this.isMobile = this.mediaMatcher.matchMedia('(max-width: 1023px)').matches;
142
+ /** Some keys are set to 0 to prevent `preventDefaultForScrollKeys` method from blocking input fields interactions */
143
+ this.scrollKeys = { ArrowUp: 0, ArrowRight: 0, ArrowDown: 0, ArrowLeft: 0, Space: 0, PageUp: 1, PageDown: 1, End: 0, Home: 0 };
144
+ this.pagePosition = { x: 0, y: 0 };
148
145
  }
149
- ngOnChanges() {
150
- if (this.containerElement) {
151
- this.handleContainerScroll();
146
+ onScroll(event) {
147
+ if (event.ctrlKey) {
148
+ return;
152
149
  }
153
- else {
154
- this.handlePageScroll();
150
+ if (this.display) {
151
+ event.preventDefault();
152
+ this.scrollFirstScrollableElement(event.target, event.deltaX, event.deltaY);
155
153
  }
156
154
  }
157
- onClose() {
158
- this.hide();
159
- this.close.emit();
155
+ onTouchStart(event) {
156
+ if (this.display) {
157
+ this.setPagePosition(event);
158
+ }
160
159
  }
161
- onCancel() {
162
- this.hide();
163
- this.cancel.emit();
160
+ onTouchMove(event) {
161
+ if (this.display) {
162
+ event.preventDefault();
163
+ const deltaX = this.pagePosition.x - event.touches[0].pageX;
164
+ const deltaY = this.pagePosition.y - event.touches[0].pageY;
165
+ this.scrollFirstScrollableElement(event.target, deltaX, deltaY);
166
+ this.setPagePosition(event);
167
+ }
164
168
  }
165
- onConfirm() {
166
- this.hide();
167
- this.confirm.emit();
169
+ onKeyDown(event) {
170
+ if (this.display) {
171
+ this.preventDefaultForScrollKeys(event);
172
+ }
168
173
  }
169
- hide() {
170
- this.expandedChange.emit(false);
171
- this.cdr.detectChanges();
174
+ onEscapeDown() {
175
+ if (this.display) {
176
+ this.onClose();
177
+ }
172
178
  }
173
- handlePageScroll() {
174
- if (this.isMobile) {
175
- if (this.expanded) {
176
- this.context.globalScrollableElement.style.overflow = 'hidden';
177
- this.scrollPosition = window.scrollY;
178
- this.context.globalScrollableElement.style.position = 'fixed';
179
- this.context.globalScrollableElement.style.top = `${-this.scrollPosition}px`;
180
- }
181
- else {
182
- this.context.globalScrollableElement.style.overflow = 'initial';
183
- this.context.globalScrollableElement.style.position = 'initial';
184
- if (this.scrollPosition !== null) {
185
- window.scrollTo(0, this.scrollPosition);
186
- this.scrollPosition = null;
187
- }
188
- }
179
+ isScrollableElement(element) {
180
+ const isCustomElement = element.tagName.includes('MIAM') || element.tagName.startsWith('APP-');
181
+ const isDisplayInline = /(inline)/g.test(window.getComputedStyle(element).display) && element.scrollHeight === 0;
182
+ return !isCustomElement && !isDisplayInline;
183
+ }
184
+ isPositionFixedOrAbsolute(element) {
185
+ return /(fixed)|(absolute)/.test(window.getComputedStyle(element).position);
186
+ }
187
+ scrollFirstScrollableElement(element, deltaX, deltaY) {
188
+ if (element.classList.contains('miam-modal__container')) {
189
189
  return;
190
190
  }
191
- if (this.expanded) {
192
- this.context.globalScrollableElement.style.overflow = 'hidden';
193
- return;
191
+ const heightScrollable = deltaY !== 0 && element.scrollHeight > element.parentElement.scrollHeight;
192
+ const widthScrollable = deltaX !== 0 && element.scrollWidth > element.parentElement.scrollWidth;
193
+ const hasRoomToScroll = !this.isPositionFixedOrAbsolute(element) && (heightScrollable || widthScrollable);
194
+ if (this.isScrollableElement(element.parentElement) && hasRoomToScroll) {
195
+ return element.scrollBy(deltaX, deltaY);
194
196
  }
195
- this.context.globalScrollableElement.style.overflow = 'initial';
197
+ this.scrollFirstScrollableElement(element.parentElement, deltaX, deltaY);
196
198
  }
197
- handleContainerScroll() {
198
- if (this.isMobile) {
199
- if (this.expanded) {
200
- this.containerElement.style.overflow = 'hidden';
201
- this.scrollPosition = window.scrollY;
202
- this.containerElement.style.position = 'fixed';
203
- this.containerElement.style.top = `${-this.scrollPosition}px`;
204
- }
205
- else {
206
- if (this.scrollPosition !== null) {
207
- this.containerElement.style.overflow = 'initial';
208
- this.containerElement.style.position = 'initial';
209
- window.scrollTo(0, this.scrollPosition);
210
- this.scrollPosition = null;
211
- }
199
+ setPagePosition(event) {
200
+ this.pagePosition.x = event.touches[0].pageX;
201
+ this.pagePosition.y = event.touches[0].pageY;
202
+ }
203
+ preventDefaultForScrollKeys(event) {
204
+ if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {
205
+ if (this.scrollKeys[event.code]) {
206
+ event.preventDefault();
212
207
  }
213
- return;
214
208
  }
215
- if (this.expanded) {
216
- this.containerElement.style.overflow = 'hidden';
217
- return;
209
+ else {
210
+ if (this.scrollKeys[event.code] === 1 || this.scrollKeys[event.code] === 0) {
211
+ event.preventDefault();
212
+ }
218
213
  }
219
- this.containerElement.style.overflow = 'initial';
214
+ }
215
+ onClose() {
216
+ this.close.emit();
217
+ }
218
+ onCancel() {
219
+ this.cancel.emit();
220
+ }
221
+ onConfirm() {
222
+ this.confirm.emit();
220
223
  }
221
224
  }
222
- ModalComponent.ɵfac = function ModalComponent_Factory(t) { return new (t || ModalComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.MediaMatcher), i0.ɵɵdirectiveInject(i2.ContextService)); };
223
- ModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ModalComponent, selectors: [["ng-miam-modal"]], inputs: { recipesCount: "recipesCount", expanded: "expanded", isAngularComponent: "isAngularComponent", confirmButtonIsLoading: "confirmButtonIsLoading", cancelButtonIsLoading: "cancelButtonIsLoading", confirmButtonDisabled: "confirmButtonDisabled", cancelButtonDisabled: "cancelButtonDisabled", noHeaderMode: "noHeaderMode", containerElement: "containerElement", title: "title", confirmButtonText: "confirmButtonText", cancelButtonText: "cancelButtonText" }, outputs: { expandedChange: "expandedChange", close: "close", cancel: "cancel", confirm: "confirm" }, features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c5, decls: 1, vars: 1, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
225
+ ModalComponent.ɵfac = function ModalComponent_Factory(t) { return new (t || ModalComponent)(); };
226
+ ModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ModalComponent, selectors: [["ng-miam-modal"]], hostBindings: function ModalComponent_HostBindings(rf, ctx) { if (rf & 1) {
227
+ i0.ɵɵ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.ɵɵresolveWindow)("keydown.escape", function ModalComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeDown(); }, false, i0.ɵɵresolveWindow);
228
+ } }, 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, decls: 1, vars: 1, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
224
229
  const MSG_EXTERNAL_3775647930168967606$$LIB__COMPONENTS_MODAL_MODAL_COMPONENT_TS___1 = goog.getMsg("Utilis\u00E9 dans ");
225
230
  i18n_0 = MSG_EXTERNAL_3775647930168967606$$LIB__COMPONENTS_MODAL_MODAL_COMPONENT_TS___1;
226
231
  }
@@ -232,12 +237,12 @@ ModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ModalComponent, selectors:
232
237
  }
233
238
  else {
234
239
  i18n_2 = $localize `:␟f0ee2f84e20252199737bc9757b04e75979cb9fe␟8253051398336962047: repas`;
235
- } return [[4, "ngIf"], [1, "miam-shadow-overlay", 3, "click"], [1, "miam-modal", 3, "ngClass"], [1, "miam-modal__container"], [1, "miam-modal__header"], [1, "miam-modal__title"], ["class", "miam-modal__title", 4, "ngIf"], ["primaryColor", "var(--m-color-grey-text-dark)", 1, "miam-modal__close__icon", 3, "width", "height", "iconName", "click"], [4, "ngIf", "ngIfElse"], ["isWebC", ""], ["class", "miam-modal__actions", 4, "ngIf"], i18n_0, i18n_2, ["name", "modal-content"], [1, "miam-modal__actions"], ["class", "m-button-secondary", 3, "disabled", "click", 4, "ngIf"], [1, "m-button-primary", 3, "disabled", "click"], [1, "m-button-secondary", 3, "disabled", "click"]]; }, template: function ModalComponent_Template(rf, ctx) { if (rf & 1) {
240
+ } 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"]]; }, template: function ModalComponent_Template(rf, ctx) { if (rf & 1) {
236
241
  i0.ɵɵprojectionDef();
237
- i0.ɵɵtemplate(0, ModalComponent_ng_container_0_Template, 13, 12, "ng-container", 0);
242
+ i0.ɵɵtemplate(0, ModalComponent_ng_container_0_Template, 13, 8, "ng-container", 0);
238
243
  } if (rf & 2) {
239
- i0.ɵɵproperty("ngIf", ctx.expanded);
240
- } }, directives: [i3.NgIf, i3.NgClass, i4.IconComponent, i5.LoaderComponent], styles: [".miam-shadow-overlay{-webkit-animation-duration:.3s;-webkit-animation-name:show;-webkit-animation-timing-function:ease-in-out;-webkit-tap-highlight-color:transparent;animation-duration:.3s;animation-name:show;animation-timing-function:ease-in-out;background:var(--m-color-black);height:100vh;left:0;opacity:.6;position:fixed;top:0;width:100vw;z-index:var(--m-z-index-modal-overlay)}.miam-modal{-webkit-animation-duration:.5s;-webkit-animation-name:open;-webkit-animation-timing-function:cubic-bezier(.75,0,.2,1);animation-duration:.5s;animation-name:open;animation-timing-function:cubic-bezier(.75,0,.2,1);background-color:var(--m-color-white);height:100%;max-width:1200px;overflow-x:hidden;overflow-y:auto;position:fixed;right:0;top:0;width:80%;z-index:var(--m-z-index-modal)}@media print{.miam-modal{height:unset!important;overflow-y:unset!important;position:unset!important}}@-webkit-keyframes open{0%{right:-1200px}to{right:0}}@keyframes open{0%{right:-1200px}to{right:0}}.miam-modal.with-header .miam-modal__header{background-color:var(--m-color-grey);color:var(--m-color-grey-text-dark);display:flex;flex-direction:row;justify-content:space-between}.miam-modal.with-header .miam-modal__title{color:var(--m-color-grey-text-dark);font-size:var(--m-font-size-large);font-weight:700;overflow:hidden;padding:20px;text-overflow:ellipsis}.miam-modal.with-header .miam-modal__close__icon{-webkit-tap-highlight-color:transparent;height:40px}.miam-modal.without-header .miam-modal__close__icon{border-radius:var(--m-border-radius-circle);display:flex;height:60px;justify-items:center;position:absolute;right:0;top:0;z-index:var(--m-z-index-position-absolute-high)}.miam-modal .miam-modal__container{display:flex;flex-direction:column;height:100%;position:relative}.miam-modal .miam-modal__container .miam-modal__close__icon{cursor:pointer;margin:10px}@media print{.miam-modal .miam-modal__container .miam-modal__close__icon{display:none}}.miam-modal .miam-modal__container .miam-modal__actions{align-items:center;display:flex;justify-content:space-evenly;margin:20px}@-webkit-keyframes show{0%{opacity:0}to{opacity:.6}}@keyframes show{0%{opacity:0}to{opacity:.6}}@media (max-width:1022px){.miam-modal{-webkit-animation-duration:.5s;-webkit-animation-name:openBottomSheet;-webkit-animation-timing-function:cubic-bezier(.075,.82,.165,1);animation-duration:.5s;animation-name:openBottomSheet;animation-timing-function:cubic-bezier(.075,.82,.165,1);background-color:var(--m-color-white);bottom:0;left:0;max-width:100vw;overflow-x:hidden;overflow-y:hidden;position:fixed;right:0;top:100vh;top:unset;width:100vw;z-index:var(--m-z-index-modal)}.miam-modal.with-header .miam-modal__header{align-items:center;background-color:unset}.miam-modal.with-header .miam-modal__title{padding:0 0 0 16px}.miam-modal.with-header ng-miam-icon.miam-modal__close__icon .icon-container{align-items:center;border:1px solid var(--m-color-light-slate);border-radius:36px;display:grid;height:unset!important;width:unset!important}.miam-modal.with-header ng-miam-icon.miam-modal__close__icon .icon-container svg{fill:var(--m-color-white);height:24px!important;width:24px!important}.miam-modal.without-header .miam-modal__close__icon{height:28px;z-index:8}.miam-modal .miam-modal__actions{background-color:var(--m-color-white);bottom:0;left:0;margin:0!important;position:fixed;right:0;z-index:8}.miam-modal .miam-modal__actions button{font-size:12px;height:44px;margin:16px 5px 5px 0;padding:5px}.miam-modal .miam-modal__actions button:first-of-type{margin:16px 5px 5px}@-webkit-keyframes openBottomSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes openBottomSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}}"], encapsulation: 2, changeDetection: 0 });
244
+ i0.ɵɵproperty("ngIf", ctx.display);
245
+ } }, directives: [i1.NgIf, i1.NgClass, i2.LoaderComponent], styles: [".miam-modal__container .miam-shadow-overlay{-webkit-tap-highlight-color:transparent;animation-duration:.3s;animation-name:show;animation-timing-function:ease-in-out;background:var(--miam-ds-color-neutral-black);height:100vh;left:0;opacity:.6;position:fixed;top:0;width:100vw;z-index:var(--m-z-index-modal-overlay)}@keyframes show{0%{opacity:0}to{opacity:.6}}.miam-modal__container .miam-modal{background-color:var(--miam-ds-color-background-primary);display:flex;flex-direction:column;overflow:hidden;position:fixed;z-index:var(--m-z-index-modal)}@media print{.miam-modal__container .miam-modal{height:unset!important;overflow-y:unset!important;position: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-bottom:24px;margin-top: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;right:0;top:0;z-index:var(--m-z-index-position-absolute-high)}.miam-modal__container .miam-modal .miam-modal__content-container{display:flex;flex-direction:column;height:100%;overflow:hidden;position:relative}.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{align-self:center;font-weight:900;overflow:hidden;text-overflow:ellipsis}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__header .miam-modal__close-icon{background:50%/24px no-repeat url(https://storage.googleapis.com/assets.miam.tech/generic/icons/Cross_primary.svg);margin:8px;padding:16px}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__content__scroll-protection{display:flex;height:100%;overflow:hidden}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__content{overflow-x:hidden;overflow-y:auto;scrollbar-color:var(--miam-ds-color-primary-100),var(--miam-ds-color-primary);scrollbar-width:thin;width:100%}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__actions{display:flex;flex-direction:row;justify-content:flex-end}.miam-modal__container .miam-modal .miam-modal__content-container .miam-modal__actions button+button{margin-left:12px}.miam-modal__container.center .miam-modal{background-color:var(--miam-ds-color-neutral-white);border-radius:8px;box-sizing:border-box;height:auto;left:50%;max-height:96vh;max-width:700px;min-width:464px;padding:24px;right:unset;top:50%;transform:translate(-50%,-50%);width:600px}.miam-modal__container.right .miam-modal{animation-name:openRightDrawer;right:0}@keyframes openRightDrawer{0%{right:-1200px}to{right:0}}.miam-modal__container.left .miam-modal{animation-name:openLeftDrawer;left:0}@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%;top:0;width:1000px}.miam-modal__container.left .miam-modal .miam-modal__content-container,.miam-modal__container.right .miam-modal .miam-modal__content-container{box-sizing:border-box;height:100%}.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{box-sizing:border-box;height:100%;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{border-top: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__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{max-width:680px;min-width:680px}.miam-modal__container.left.tiny-width .miam-modal,.miam-modal__container.right.tiny-width .miam-modal{max-width:360px;min-width:360px}@media (max-width:1023px){.miam-modal__container.center .miam-modal{border-radius:unset;min-width:unset;padding:unset;transform: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{animation-duration:.5s;animation-name:openBottomSheet;animation-timing-function:cubic-bezier(.075,.82,.165,1);bottom:0;height:100vh;left:0;max-height:100vh;max-width:100vw;right:0;top:0;width:100vw}@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-bottom:12px;margin-left:unset}}"], encapsulation: 2, changeDetection: 0 });
241
246
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(ModalComponent, [{
242
247
  type: Component,
243
248
  args: [{
@@ -247,11 +252,9 @@ ModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ModalComponent, selectors:
247
252
  encapsulation: ViewEncapsulation.None,
248
253
  changeDetection: ChangeDetectionStrategy.OnPush
249
254
  }]
250
- }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.MediaMatcher }, { type: i2.ContextService }]; }, { recipesCount: [{
255
+ }], null, { recipesCount: [{
251
256
  type: Input
252
- }], expanded: [{
253
- type: Input
254
- }], isAngularComponent: [{
257
+ }], display: [{
255
258
  type: Input
256
259
  }], confirmButtonIsLoading: [{
257
260
  type: Input
@@ -271,13 +274,28 @@ ModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ModalComponent, selectors:
271
274
  type: Input
272
275
  }], cancelButtonText: [{
273
276
  type: Input
274
- }], expandedChange: [{
275
- type: Output
277
+ }], modalStyle: [{
278
+ type: Input
276
279
  }], close: [{
277
280
  type: Output
278
281
  }], cancel: [{
279
282
  type: Output
280
283
  }], confirm: [{
281
284
  type: Output
285
+ }], onScroll: [{
286
+ type: HostListener,
287
+ args: ['wheel', ['$event']]
288
+ }], onTouchStart: [{
289
+ type: HostListener,
290
+ args: ['touchstart', ['$event']]
291
+ }], onTouchMove: [{
292
+ type: HostListener,
293
+ args: ['touchmove', ['$event']]
294
+ }], onKeyDown: [{
295
+ type: HostListener,
296
+ args: ['window:keydown', ['$event']]
297
+ }], onEscapeDown: [{
298
+ type: HostListener,
299
+ args: ['window:keydown.escape']
282
300
  }] }); })();
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCJsaWIvX2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7SUNJdEMsOEJBQ0U7SUFBQSw0QkFBVztJQUFYLGdCQUFXO0lBQWEsaUJBQU87SUFBQSw0QkFBTTtJQUFBLFlBQWtCO0lBQUEsaUJBQU87SUFBQSw0QkFBWTtJQUFaLGdCQUFZO0lBQUssaUJBQU87SUFDeEYsaUJBQU07OztJQURpQyxlQUFrQjtJQUFsQix5Q0FBa0I7OztJQVczRCxrRUFBbUQ7OztJQUVqRCwyQkFBa0M7OztJQUloQyw0QkFBcUM7SUFBQSxZQUFvQjtJQUFBLGlCQUFPOzs7SUFBM0IsZUFBb0I7SUFBcEIsNkNBQW9COzs7SUFDekQsaUNBQStEOzs7O0lBRmpFLGtDQUNFO0lBRCtCLDZNQUFvQjtJQUNuRCxnR0FBcUM7SUFDckMsb0hBQThDO0lBQ2hELGlCQUFTOzs7SUFINkMsc0RBQWlDO0lBQy9FLGVBQThCO0lBQTlCLG9EQUE4QjtJQUNwQixlQUE2QjtJQUE3QixtREFBNkI7OztJQUc3Qyw0QkFBc0M7SUFBQSxZQUFxQjtJQUFBLGlCQUFPOzs7SUFB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QUFLO1lBQ0csa0JBQWtCO2tCQUExQixLQUFLO1lBQ0csc0JBQXNCO2tCQUE5QixLQUFLO1lBQ0cscUJBQXFCO2tCQUE3QixLQUFLO1lBQ0cscUJBQXFCO2tCQUE3QixLQUFLO1lBQ0csb0JBQW9CO2tCQUE1QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLEtBQUs7a0JBQWIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNJLGNBQWM7a0JBQXZCLE1BQU07WUFDRyxLQUFLO2tCQUFkLE1BQU07WUFDRyxNQUFNO2tCQUFmLE1BQU07WUFDRyxPQUFPO2tCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHJlY2lwZXNDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSBleHBhbmRlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNBbmd1bGFyQ29tcG9uZW50OiBib29sZWFuO1xuICBASW5wdXQoKSBjb25maXJtQnV0dG9uSXNMb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25Jc0xvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbmZpcm1CdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuY2VsQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG5vSGVhZGVyTW9kZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbmZpcm1CdXR0b25UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhbmNlbEJ1dHRvblRleHQ6IHN0cmluZztcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGljb24gPSBJY29uO1xuICBzY3JvbGxQb3NpdGlvbjogbnVtYmVyID0gbnVsbDtcbiAgaXNNb2JpbGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwcml2YXRlIGNvbnRleHQ6IENvbnRleHRTZXJ2aWNlXG4gICkgeyB0aGlzLmlzTW9iaWxlID0gdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyM3B4KScpLm1hdGNoZXM7XG59XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgdGhpcy5oYW5kbGVDb250YWluZXJTY3JvbGwoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZVBhZ2VTY3JvbGwoKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuaGlkZSgpO1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgdGhpcy5oaWRlKCk7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25Db25maXJtKCkge1xuICAgIHRoaXMuaGlkZSgpO1xuICAgIHRoaXMuY29uZmlybS5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIGhpZGUoKSB7XG4gICAgdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhZ2VTY3JvbGwoKXtcbiAgICBpZiAodGhpcy5pc01vYmlsZSl7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZCkge1xuICAgICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgdGhpcy5zY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQuc3R5bGUudG9wID0gYCR7LXRoaXMuc2Nyb2xsUG9zaXRpb259cHhgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250ZXh0Lmdsb2JhbFNjcm9sbGFibGVFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2luaXRpYWwnO1xuICAgICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnaW5pdGlhbCc7XG4gICAgICAgIGlmICh0aGlzLnNjcm9sbFBvc2l0aW9uICE9PSBudWxsKXtcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgdGhpcy5zY3JvbGxQb3NpdGlvbik7XG4gICAgICAgICAgdGhpcy5zY3JvbGxQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHBhbmRlZCkge1xuICAgICAgIHRoaXMuY29udGV4dC5nbG9iYWxTY3JvbGxhYmxlRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb250ZXh0Lmdsb2JhbFNjcm9sbGFibGVFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2luaXRpYWwnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250YWluZXJTY3JvbGwoKXtcbiAgICBpZiAodGhpcy5pc01vYmlsZSl7XG4gICAgICBpZiAodGhpcy5leHBhbmRlZCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgdGhpcy5zY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuc3R5bGUudG9wID0gYCR7LXRoaXMuc2Nyb2xsUG9zaXRpb259cHhgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsUG9zaXRpb24gIT09IG51bGwpe1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdpbml0aWFsJztcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnaW5pdGlhbCc7XG4gICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHRoaXMuc2Nyb2xsUG9zaXRpb24pO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdpbml0aWFsJztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkXCI+XG4gIDxkaXYgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiIGNsYXNzPVwibWlhbS1zaGFkb3ctb3ZlcmxheVwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtaWFtLW1vZGFsXCIgW25nQ2xhc3NdPVwieyAnd2l0aC1oZWFkZXInOiAhbm9IZWFkZXJNb2RlLCAnd2l0aG91dC1oZWFkZXInOiBub0hlYWRlck1vZGUgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLW1vZGFsX19jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLW1vZGFsX19oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbW9kYWxfX3RpdGxlXCI+e3t0aXRsZX19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhdGl0bGUgJiYgcmVjaXBlc0NvdW50XCIgY2xhc3M9XCJtaWFtLW1vZGFsX190aXRsZVwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+VXRpbGlzw6kgZGFucyA8L3NwYW4+PHNwYW4+e3sgcmVjaXBlc0NvdW50IH19PC9zcGFuPjxzcGFuIGkxOG4+IHJlcGFzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLW1pYW0taWNvblxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgICAgICAgIGNsYXNzPVwibWlhbS1tb2RhbF9fY2xvc2VfX2ljb25cIlxuICAgICAgICAgIFt3aWR0aF09JzI0J1xuICAgICAgICAgIFtoZWlnaHRdPScyNCdcbiAgICAgICAgICBbaWNvbk5hbWVdPSdpY29uLkNyb3NzJ1xuICAgICAgICAgIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleS10ZXh0LWRhcmspXCJcbiAgICAgICAgPjwvbmctbWlhbS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGVudCAqbmdJZj0naXNBbmd1bGFyQ29tcG9uZW50IGVsc2UgaXNXZWJDJz48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctdGVtcGxhdGUgI2lzV2ViQz5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm1vZGFsLWNvbnRlbnRcIj48L3Nsb3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbW9kYWxfX2FjdGlvbnNcIiAqbmdJZj1cImNhbmNlbEJ1dHRvblRleHQgfHwgY29uZmlybUJ1dHRvblRleHRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhbmNlbEJ1dHRvblRleHRcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiIFtkaXNhYmxlZF09XCJjYW5jZWxCdXR0b25EaXNhYmxlZFwiIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY2FuY2VsQnV0dG9uSXNMb2FkaW5nXCI+e3tjYW5jZWxCdXR0b25UZXh0fX08L3NwYW4+XG4gICAgICAgICAgPG5nLW1pYW0tbG9hZGVyICpuZ0lmPVwiY2FuY2VsQnV0dG9uSXNMb2FkaW5nXCI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uQ29uZmlybSgpXCIgW2Rpc2FibGVkXT1cImNvbmZpcm1CdXR0b25EaXNhYmxlZFwiIGNsYXNzPVwibS1idXR0b24tcHJpbWFyeVwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbmZpcm1CdXR0b25Jc0xvYWRpbmdcIj57e2NvbmZpcm1CdXR0b25UZXh0fX08L3NwYW4+XG4gICAgICAgICAgPG5nLW1pYW0tbG9hZGVyICpuZ0lmPVwiY29uZmlybUJ1dHRvbklzTG9hZGluZ1wiPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCJsaWIvX2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztJQ0twQywrQkFDRTtJQUFBLDRCQUFNO0lBQUEsWUFBVztJQUFBLGlCQUFPO0lBQzFCLGlCQUFNOzs7SUFERSxlQUFXO0lBQVgsa0NBQVc7OztJQUVuQiwrQkFDRTtJQUFBLDRCQUFXO0lBQVgsZ0JBQVc7SUFBYSxpQkFBTztJQUFBLDRCQUFNO0lBQUEsWUFBa0I7SUFBQSxpQkFBTztJQUFBLDRCQUFZO0lBQVosZ0JBQVk7SUFBSyxpQkFBTztJQUN4RixpQkFBTTs7O0lBRGlDLGVBQWtCO0lBQWxCLHlDQUFrQjs7O0lBWXZELDRCQUFxQztJQUFBLFlBQW9CO0lBQUEsaUJBQU87OztJQUEzQixlQUFvQjtJQUFwQiw2Q0FBb0I7OztJQUN6RCxpQ0FBK0Q7Ozs7SUFIakUsa0NBRUU7SUFGK0IsMk1BQW9CO0lBRW5ELGdHQUFxQztJQUNyQyxvSEFBOEM7SUFDaEQsaUJBQVM7OztJQUo2QyxzREFBaUM7SUFFL0UsZUFBOEI7SUFBOUIsb0RBQThCO0lBQ3BCLGVBQTZCO0lBQTdCLG1EQUE2Qjs7O0lBRzdDLDRCQUFzQztJQUFBLFlBQXFCO0lBQUEsaUJBQU87OztJQUE1QixlQUFxQjtJQUFyQiw4Q0FBcUI7OztJQUMzRCxpQ0FBZ0U7Ozs7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T0FBTztrQkFBaEIsTUFBTTtZQVNQLFFBQVE7a0JBRFAsWUFBWTttQkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFZakMsWUFBWTtrQkFEWCxZQUFZO21CQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztZQVF0QyxXQUFXO2tCQURWLFlBQVk7bUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBWXJDLFNBQVM7a0JBRFIsWUFBWTttQkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQVExQyxZQUFZO2tCQURYLFlBQVk7bUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHJlY2lwZXNDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSBkaXNwbGF5OiBib29sZWFuO1xuICBASW5wdXQoKSBjb25maXJtQnV0dG9uSXNMb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5jZWxCdXR0b25Jc0xvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbmZpcm1CdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuY2VsQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG5vSGVhZGVyTW9kZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbmZpcm1CdXR0b25UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNhbmNlbEJ1dHRvblRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgbW9kYWxTdHlsZSA9ICdjZW50ZXInO1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGljb24gPSBJY29uO1xuXG4gIC8qKiBTb21lIGtleXMgYXJlIHNldCB0byAwIHRvIHByZXZlbnQgYHByZXZlbnREZWZhdWx0Rm9yU2Nyb2xsS2V5c2AgbWV0aG9kIGZyb20gYmxvY2tpbmcgaW5wdXQgZmllbGRzIGludGVyYWN0aW9ucyAqL1xuICBwcml2YXRlIHNjcm9sbEtleXMgPSB7IEFycm93VXA6IDAsIEFycm93UmlnaHQ6IDAsIEFycm93RG93bjogMCwgQXJyb3dMZWZ0OiAwLCBTcGFjZTogMCwgUGFnZVVwOiAxLCBQYWdlRG93bjogMSwgRW5kOiAwLCBIb21lOiAwIH07XG4gIHByaXZhdGUgcGFnZVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XG5cbiAgQEhvc3RMaXN0ZW5lcignd2hlZWwnLCBbJyRldmVudCddKVxuICBvblNjcm9sbChldmVudDogV2hlZWxFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc3BsYXkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNjcm9sbEZpcnN0U2Nyb2xsYWJsZUVsZW1lbnQoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQsIGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzcGxheSkge1xuICAgICAgdGhpcy5zZXRQYWdlUG9zaXRpb24oZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNobW92ZScsIFsnJGV2ZW50J10pXG4gIG9uVG91Y2hNb3ZlKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzcGxheSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGRlbHRhWCA9IHRoaXMucGFnZVBvc2l0aW9uLnggLSBldmVudC50b3VjaGVzWzBdLnBhZ2VYO1xuICAgICAgY29uc3QgZGVsdGFZID0gdGhpcy5wYWdlUG9zaXRpb24ueSAtIGV2ZW50LnRvdWNoZXNbMF0ucGFnZVk7XG4gICAgICB0aGlzLnNjcm9sbEZpcnN0U2Nyb2xsYWJsZUVsZW1lbnQoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQsIGRlbHRhWCwgZGVsdGFZKTtcbiAgICAgIHRoaXMuc2V0UGFnZVBvc2l0aW9uKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc3BsYXkpIHtcbiAgICAgIHRoaXMucHJldmVudERlZmF1bHRGb3JTY3JvbGxLZXlzKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5lc2NhcGUnKVxuICBvbkVzY2FwZURvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzcGxheSkge1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1Njcm9sbGFibGVFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBlbGVtZW50LnRhZ05hbWUuaW5jbHVkZXMoJ01JQU0nKSB8fCBlbGVtZW50LnRhZ05hbWUuc3RhcnRzV2l0aCgnQVBQLScpO1xuICAgIGNvbnN0IGlzRGlzcGxheUlubGluZSA9IC8oaW5saW5lKS9nLnRlc3Qod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlzcGxheSkgJiYgZWxlbWVudC5zY3JvbGxIZWlnaHQgPT09IDA7XG4gICAgcmV0dXJuICFpc0N1c3RvbUVsZW1lbnQgJiYgIWlzRGlzcGxheUlubGluZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQb3NpdGlvbkZpeGVkT3JBYnNvbHV0ZShlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC8oZml4ZWQpfChhYnNvbHV0ZSkvLnRlc3Qod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxGaXJzdFNjcm9sbGFibGVFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQsIGRlbHRhWDogbnVtYmVyLCBkZWx0YVk6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbWlhbS1tb2RhbF9fY29udGFpbmVyJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGVpZ2h0U2Nyb2xsYWJsZSA9IGRlbHRhWSAhPT0gMCAmJiBlbGVtZW50LnNjcm9sbEhlaWdodCA+IGVsZW1lbnQucGFyZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3Qgd2lkdGhTY3JvbGxhYmxlID0gZGVsdGFYICE9PSAwICYmIGVsZW1lbnQuc2Nyb2xsV2lkdGggPiBlbGVtZW50LnBhcmVudEVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gICAgY29uc3QgaGFzUm9vbVRvU2Nyb2xsID0gIXRoaXMuaXNQb3NpdGlvbkZpeGVkT3JBYnNvbHV0ZShlbGVtZW50KSAmJiAoaGVpZ2h0U2Nyb2xsYWJsZSB8fCB3aWR0aFNjcm9sbGFibGUpO1xuICAgIGlmICh0aGlzLmlzU2Nyb2xsYWJsZUVsZW1lbnQoZWxlbWVudC5wYXJlbnRFbGVtZW50KSAmJiBoYXNSb29tVG9TY3JvbGwpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LnNjcm9sbEJ5KGRlbHRhWCwgZGVsdGFZKTtcbiAgICB9XG4gICAgdGhpcy5zY3JvbGxGaXJzdFNjcm9sbGFibGVFbGVtZW50KGVsZW1lbnQucGFyZW50RWxlbWVudCwgZGVsdGFYLCBkZWx0YVkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWdlUG9zaXRpb24oZXZlbnQ6IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VQb3NpdGlvbi54ID0gZXZlbnQudG91Y2hlc1swXS5wYWdlWDtcbiAgICB0aGlzLnBhZ2VQb3NpdGlvbi55ID0gZXZlbnQudG91Y2hlc1swXS5wYWdlWTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHRGb3JTY3JvbGxLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgPT09ICdJTlBVVCcgfHwgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJykge1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsS2V5c1tldmVudC5jb2RlXSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zY3JvbGxLZXlzW2V2ZW50LmNvZGVdID09PSAxIHx8IHRoaXMuc2Nyb2xsS2V5c1tldmVudC5jb2RlXSA9PT0gMCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBvbkNvbmZpcm0oKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtLmVtaXQoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tbW9kYWxfX2NvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIm1vZGFsU3R5bGVcIj5cbiAgICA8ZGl2IChjbGljayk9XCJvbkNsb3NlKClcIiBjbGFzcz1cIm1pYW0tc2hhZG93LW92ZXJsYXlcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1tb2RhbFwiIFtuZ0NsYXNzXT1cInsgJ3dpdGgtaGVhZGVyJzogIW5vSGVhZGVyTW9kZSwgJ3dpdGhvdXQtaGVhZGVyJzogbm9IZWFkZXJNb2RlIH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLW1vZGFsX19jb250ZW50LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1tb2RhbF9faGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJtaWFtLW1vZGFsX190aXRsZSBtaWFtLWRzLXRleHQgc2l6ZS14bCB3ZWlnaHQteHhsXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXRpdGxlICYmIHJlY2lwZXNDb3VudFwiIGNsYXNzPVwibWlhbS1tb2RhbF9fdGl0bGUgbWlhbS1kcy10ZXh0XCI+XG4gICAgICAgICAgICA8c3BhbiBpMThuPlV0aWxpc8OpIGRhbnMgPC9zcGFuPjxzcGFuPnt7IHJlY2lwZXNDb3VudCB9fTwvc3Bhbj48c3BhbiBpMThuPiByZXBhczwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1tb2RhbF9fY2xvc2UtaWNvbiBtaWFtLWRzLWJ1dHRvbiBnaG9zdFwiIChjbGljayk9XCJvbkNsb3NlKClcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLW1vZGFsX19jb250ZW50X19zY3JvbGwtcHJvdGVjdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLW1vZGFsX19jb250ZW50IG1pYW0tZHMtdGV4dFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbW9kYWxfX2FjdGlvbnNcIiAqbmdJZj1cImNhbmNlbEJ1dHRvblRleHQgfHwgY29uZmlybUJ1dHRvblRleHRcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuY2VsQnV0dG9uVGV4dFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCIgW2Rpc2FibGVkXT1cImNhbmNlbEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWlhbS1kcy1idXR0b24gc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjYW5jZWxCdXR0b25Jc0xvYWRpbmdcIj57e2NhbmNlbEJ1dHRvblRleHR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1taWFtLWxvYWRlciAqbmdJZj1cImNhbmNlbEJ1dHRvbklzTG9hZGluZ1wiPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25Db25maXJtKClcIiBbZGlzYWJsZWRdPVwiY29uZmlybUJ1dHRvbkRpc2FibGVkXCIgY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb25maXJtQnV0dG9uSXNMb2FkaW5nXCI+e3tjb25maXJtQnV0dG9uVGV4dH19PC9zcGFuPlxuICAgICAgICAgICAgPG5nLW1pYW0tbG9hZGVyICpuZ0lmPVwiY29uZmlybUJ1dHRvbklzTG9hZGluZ1wiPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=