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,7 +1,8 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
- import { BasketsService, GroceriesListsService, PointOfSalesService, RecipesService } from '../../_services';
3
- import { PrintService } from '../../_services/print.service';
2
+ import { BehaviorSubject, combineLatest } from 'rxjs';
4
3
  import { skipWhile, take } from 'rxjs/operators';
4
+ import { BasketsService, RecipesService } from '../../_services';
5
+ import { PrintService } from '../../_services/print.service';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../_services";
7
8
  import * as i2 from "../../_services/print.service";
@@ -13,51 +14,47 @@ function RecipeModalComponent_ng_miam_modal_0_Template(rf, ctx) { if (rf & 1) {
13
14
  const _r3 = i0.ɵɵgetCurrentView();
14
15
  i0.ɵɵelementStart(0, "ng-miam-modal", 2);
15
16
  i0.ɵɵi18nAttributes(1, 3);
16
- i0.ɵɵlistener("expandedChange", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return ctx_r2.show = $event; })("close", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_close_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r4 = i0.ɵɵnextContext(); return ctx_r4.hide(); })("cancel", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_cancel_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.removeRecipe(); })("confirm", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_confirm_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.hide(); });
17
+ i0.ɵɵlistener("displayChange", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_displayChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return ctx_r2.show = $event; })("close", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_close_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r4 = i0.ɵɵnextContext(); return ctx_r4.hide(); })("cancel", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_cancel_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.removeRecipe(); })("confirm", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_modal_confirm_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.hide(); });
17
18
  i0.ɵɵelementStart(2, "div", 4);
18
- i0.ɵɵelementStart(3, "ng-miam-basket-preview-block", 5);
19
- i0.ɵɵlistener("loading", function RecipeModalComponent_ng_miam_modal_0_Template_ng_miam_basket_preview_block_loading_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.setModalClosable($event); });
20
- i0.ɵɵelementEnd();
19
+ i0.ɵɵelement(3, "ng-miam-basket-preview-block", 5);
21
20
  i0.ɵɵelementEnd();
22
21
  i0.ɵɵelementEnd();
23
22
  } if (rf & 2) {
24
23
  const ctx_r0 = i0.ɵɵnextContext();
25
- i0.ɵɵproperty("isAngularComponent", true)("noHeaderMode", true)("expanded", ctx_r0.show)("noHeaderMode", false)("cancelButtonDisabled", !ctx_r0.canCloseModal)("confirmButtonDisabled", !ctx_r0.canCloseModal)("cancelButtonIsLoading", ctx_r0.removeIsLoading);
24
+ i0.ɵɵproperty("display", ctx_r0.show)("noHeaderMode", false)("confirmButtonDisabled", !ctx_r0.canCloseModal)("cancelButtonIsLoading", ctx_r0.removeIsLoading);
26
25
  i0.ɵɵadvance(3);
27
26
  i0.ɵɵproperty("recipeId", ctx_r0.recipe == null ? null : ctx_r0.recipe.id)("displayItemsUnitaryPrice", true)("originTrace", ctx_r0.eventTrace);
28
27
  } }
29
- function RecipeModalComponent_ng_miam_modal_1_ng_miam_recipe_details_1_Template(rf, ctx) { if (rf & 1) {
30
- const _r11 = i0.ɵɵgetCurrentView();
28
+ function RecipeModalComponent_ng_miam_modal_2_ng_miam_recipe_details_1_Template(rf, ctx) { if (rf & 1) {
29
+ const _r10 = i0.ɵɵgetCurrentView();
31
30
  i0.ɵɵelementStart(0, "ng-miam-recipe-details", 8, 9);
32
- i0.ɵɵlistener("recipeAdded", function RecipeModalComponent_ng_miam_modal_1_ng_miam_recipe_details_1_Template_ng_miam_recipe_details_recipeAdded_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(2); return ctx_r10.togglePreviewMode(); })("recipeError", function RecipeModalComponent_ng_miam_modal_1_ng_miam_recipe_details_1_Template_ng_miam_recipe_details_recipeError_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(2); return ctx_r12.hide(); });
31
+ i0.ɵɵlistener("recipeAdded", function RecipeModalComponent_ng_miam_modal_2_ng_miam_recipe_details_1_Template_ng_miam_recipe_details_recipeAdded_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(2); return ctx_r9.togglePreviewMode(); })("recipeError", function RecipeModalComponent_ng_miam_modal_2_ng_miam_recipe_details_1_Template_ng_miam_recipe_details_recipeError_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r11 = i0.ɵɵnextContext(2); return ctx_r11.hide(); });
33
32
  i0.ɵɵelementEnd();
34
33
  } if (rf & 2) {
35
- const ctx_r8 = i0.ɵɵnextContext(2);
36
- i0.ɵɵproperty("recipeId", ctx_r8.recipe.id)("previewAllowed", ctx_r8.previewAllowed)("originTrace", ctx_r8.eventTrace)("stepsOnLeftSide", ctx_r8.detailsStepsOnLeftSide)("moreRecipesImageURL", ctx_r8.detailsMoreRecipesImageURL)("pricingGuestsText", ctx_r8.detailsPricingGuestsText)("displayGuests", ctx_r8.displayGuestsInDetails)("helpButtonAllowed", ctx_r8.helpButtonAllowedInDetails);
34
+ const ctx_r7 = i0.ɵɵnextContext(2);
35
+ i0.ɵɵproperty("recipeId", ctx_r7.recipe.id)("previewAllowed", ctx_r7.previewAllowed)("originTrace", ctx_r7.eventTrace)("stepsOnLeftSide", ctx_r7.detailsStepsOnLeftSide)("moreRecipesImageURL", ctx_r7.detailsMoreRecipesImageURL)("pricingGuestsText", ctx_r7.detailsPricingGuestsText)("displayGuests", ctx_r7.displayGuestsInDetails)("helpButtonAllowed", ctx_r7.helpButtonAllowedInDetails);
37
36
  } }
38
- function RecipeModalComponent_ng_miam_modal_1_Template(rf, ctx) { if (rf & 1) {
39
- const _r14 = i0.ɵɵgetCurrentView();
37
+ function RecipeModalComponent_ng_miam_modal_2_Template(rf, ctx) { if (rf & 1) {
38
+ const _r13 = i0.ɵɵgetCurrentView();
40
39
  i0.ɵɵelementStart(0, "ng-miam-modal", 6);
41
- i0.ɵɵlistener("expandedChange", function RecipeModalComponent_ng_miam_modal_1_Template_ng_miam_modal_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(); return ctx_r13.show = $event; })("close", function RecipeModalComponent_ng_miam_modal_1_Template_ng_miam_modal_close_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r15 = i0.ɵɵnextContext(); return ctx_r15.hide(); })("cancel", function RecipeModalComponent_ng_miam_modal_1_Template_ng_miam_modal_cancel_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r16 = i0.ɵɵnextContext(); return ctx_r16.removeRecipe(); })("confirm", function RecipeModalComponent_ng_miam_modal_1_Template_ng_miam_modal_confirm_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r17 = i0.ɵɵnextContext(); return ctx_r17.hide(); });
42
- i0.ɵɵtemplate(1, RecipeModalComponent_ng_miam_modal_1_ng_miam_recipe_details_1_Template, 2, 8, "ng-miam-recipe-details", 7);
40
+ i0.ɵɵlistener("displayChange", function RecipeModalComponent_ng_miam_modal_2_Template_ng_miam_modal_displayChange_0_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return ctx_r12.show = $event; })("close", function RecipeModalComponent_ng_miam_modal_2_Template_ng_miam_modal_close_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r14 = i0.ɵɵnextContext(); return ctx_r14.hide(); })("cancel", function RecipeModalComponent_ng_miam_modal_2_Template_ng_miam_modal_cancel_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r15 = i0.ɵɵnextContext(); return ctx_r15.removeRecipe(); })("confirm", function RecipeModalComponent_ng_miam_modal_2_Template_ng_miam_modal_confirm_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r16 = i0.ɵɵnextContext(); return ctx_r16.hide(); });
41
+ i0.ɵɵtemplate(1, RecipeModalComponent_ng_miam_modal_2_ng_miam_recipe_details_1_Template, 2, 8, "ng-miam-recipe-details", 7);
43
42
  i0.ɵɵelementEnd();
44
43
  } if (rf & 2) {
45
44
  const ctx_r1 = i0.ɵɵnextContext();
46
- i0.ɵɵproperty("isAngularComponent", true)("noHeaderMode", true)("expanded", ctx_r1.show)("noHeaderMode", true)("cancelButtonDisabled", !ctx_r1.canCloseModal)("confirmButtonDisabled", !ctx_r1.canCloseModal)("cancelButtonIsLoading", ctx_r1.removeIsLoading);
45
+ i0.ɵɵproperty("noHeaderMode", true)("display", ctx_r1.show)("cancelButtonDisabled", !ctx_r1.canCloseModal)("cancelButtonIsLoading", ctx_r1.removeIsLoading);
47
46
  i0.ɵɵadvance(1);
48
47
  i0.ɵɵproperty("ngIf", ctx_r1.recipe && true);
49
48
  } }
50
49
  export class RecipeModalComponent {
51
- constructor(cdr, recipesService, printService, elRef, groceriesListsService, basketsService, posService) {
50
+ constructor(cdr, recipesService, printService, elRef, basketsService) {
52
51
  this.cdr = cdr;
53
52
  this.recipesService = recipesService;
54
53
  this.printService = printService;
55
54
  this.elRef = elRef;
56
- this.groceriesListsService = groceriesListsService;
57
55
  this.basketsService = basketsService;
58
- this.posService = posService;
59
56
  this.show = false;
60
- this.previewMode = false;
57
+ this.previewMode = new BehaviorSubject(false);
61
58
  this.displayGuestsInDetails = true;
62
59
  this.helpButtonAllowedInDetails = true;
63
60
  this.canCloseModal = true;
@@ -65,16 +62,30 @@ export class RecipeModalComponent {
65
62
  this.basketChangedSinceOpened = false; // true if show = true and basket is different since last time show was false
66
63
  this.recipeWasAdded = false;
67
64
  this.eventTrace = { originPath: '', props: {} };
65
+ this.subscriptions = [];
68
66
  this.detailsStepsOnLeftSide = false;
67
+ this.detailsPricingGuestsText = 'par-personne';
69
68
  this.hasChangesOnClose = new EventEmitter(false);
70
69
  }
71
70
  ngOnInit() {
72
- this.recipesService.displayedRecipe$.subscribe(result => {
71
+ this.listenToRecipeDisplayed();
72
+ this.initDisabledStates();
73
+ this.subscriptions.push(this.basketsService._basket$.subscribe(() => {
74
+ if (this.show) {
75
+ this.basketChangedSinceOpened = true;
76
+ }
77
+ }));
78
+ }
79
+ ngOnDestroy() {
80
+ this.subscriptions.forEach(sub => sub.unsubscribe());
81
+ }
82
+ listenToRecipeDisplayed() {
83
+ this.subscriptions.push(this.recipesService.displayedRecipe$.subscribe(result => {
73
84
  var _a;
74
85
  this.registerTrace(result === null || result === void 0 ? void 0 : result.eventTrace);
75
86
  if (!(result === null || result === void 0 ? void 0 : result.recipe)) {
76
87
  if (result === null || result === void 0 ? void 0 : result.force) {
77
- this.previewMode = result.previewMode;
88
+ this.previewMode.next(result.previewMode);
78
89
  this.previewAllowed = result.previewAllowed;
79
90
  this.show = true;
80
91
  this.printService.prepareForPrint(this.elRef);
@@ -87,7 +98,7 @@ export class RecipeModalComponent {
87
98
  else {
88
99
  this.recipeWasAdded = result.wasAdded;
89
100
  this.recipe = result.recipe;
90
- this.previewMode = result.previewMode;
101
+ this.previewMode.next(result.previewMode);
91
102
  this.previewAllowed = result.previewAllowed;
92
103
  this.displayGuestsInDetails = result.displayGuests;
93
104
  this.helpButtonAllowedInDetails = result.helpButtonAllowed;
@@ -99,12 +110,7 @@ export class RecipeModalComponent {
99
110
  }
100
111
  this.cdr.detectChanges();
101
112
  }
102
- });
103
- this.basketsService._basket$.subscribe(() => {
104
- if (this.show) {
105
- this.basketChangedSinceOpened = true;
106
- }
107
- });
113
+ }));
108
114
  }
109
115
  registerTrace(trace) {
110
116
  if (trace) {
@@ -115,66 +121,69 @@ export class RecipeModalComponent {
115
121
  }
116
122
  }
117
123
  hide() {
118
- this.posService.isPosValid().pipe(take(1)).subscribe(isPosValid => {
119
- if (this.canCloseModal || !isPosValid) {
120
- this.show = false;
121
- this.recipe = null; // trigger again a change on recipe if we re-open the view
122
- this.previewMode = false;
123
- this.recipesService.hide();
124
- this.printService.dissmissPrinting();
125
- this.hasChangesOnClose.emit(this.basketChangedSinceOpened);
126
- this.basketChangedSinceOpened = false;
127
- this.cdr.detectChanges();
128
- }
129
- });
124
+ if (this.canCloseModal) {
125
+ this.show = false;
126
+ this.recipe = null; // trigger again a change on recipe if we re-open the view
127
+ this.previewMode.next(false);
128
+ this.recipesService.hide();
129
+ this.printService.dissmissPrinting();
130
+ this.hasChangesOnClose.emit(this.basketChangedSinceOpened);
131
+ this.basketChangedSinceOpened = false;
132
+ this.cdr.detectChanges();
133
+ }
130
134
  }
131
135
  togglePreviewMode() {
132
- this.previewMode = !this.previewMode;
136
+ this.previewMode.next(!this.previewMode.value);
133
137
  this.cdr.detectChanges();
134
138
  }
139
+ // Note : unused
135
140
  removeRecipe() {
136
141
  if (this.canCloseModal) {
137
142
  this.removeIsLoading = true;
138
143
  this.cdr.detectChanges();
139
144
  const recipeId = '' + this.recipe.id;
140
- this.groceriesListsService.removeRecipeFromList(recipeId, this.eventTrace);
141
- this.groceriesListsService.recipesToRemove.pipe(skipWhile(toRemove => toRemove.map(i => i.id).includes(recipeId)), take(1)).subscribe(() => {
145
+ this.basketsService.removeRecipesFromBasket([recipeId], this.eventTrace);
146
+ this.subscriptions.push(this.basketsService.recipeWillBeRemoved(recipeId).pipe(skipWhile(willBeRemoved => willBeRemoved), take(1)).subscribe(() => {
142
147
  // if remove and recipe was added, then no change was made to basket, and if removed and not added it's a change to the basket
143
148
  this.basketChangedSinceOpened = !this.recipeWasAdded;
144
149
  this.removeIsLoading = false;
145
150
  this.hide();
146
- });
151
+ }));
147
152
  }
148
153
  }
149
154
  /**
150
155
  * If the preview is opened and loading, block the user from closing the modal
151
156
  */
152
- setModalClosable(previewLoading) {
153
- this.canCloseModal = !(previewLoading && this.previewMode);
154
- this.cdr.detectChanges();
157
+ initDisabledStates() {
158
+ this.subscriptions.push(combineLatest([
159
+ this.basketsService.recipesWillBeAdded(),
160
+ this.basketsService.recipesWillBeRemoved(),
161
+ this.basketsService.recipesWillBeUpdated(),
162
+ this.previewMode
163
+ ]).subscribe(res => {
164
+ const previewLoading = res[0] || res[1] || res[2];
165
+ this.canCloseModal = !(previewLoading && res[3]);
166
+ this.cdr.detectChanges();
167
+ }));
155
168
  }
156
169
  }
157
- RecipeModalComponent.ɵfac = function RecipeModalComponent_Factory(t) { return new (t || RecipeModalComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i2.PrintService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.GroceriesListsService), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i1.PointOfSalesService)); };
158
- RecipeModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeModalComponent, selectors: [["ng-miam-recipe-modal"]], inputs: { detailsStepsOnLeftSide: "detailsStepsOnLeftSide", detailsMoreRecipesImageURL: "detailsMoreRecipesImageURL", detailsPricingGuestsText: "detailsPricingGuestsText" }, outputs: { hasChangesOnClose: "hasChangesOnClose" }, decls: 2, vars: 2, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
159
- const MSG_EXTERNAL_437055650809430169$$LIB__WEB_COMPONENTS_RECIPE_MODAL_RECIPE_MODAL_COMPONENT_TS__1 = goog.getMsg("Repas ajout\u00E9s");
160
- i18n_0 = MSG_EXTERNAL_437055650809430169$$LIB__WEB_COMPONENTS_RECIPE_MODAL_RECIPE_MODAL_COMPONENT_TS__1;
161
- }
162
- else {
163
- i18n_0 = $localize `:␟0952dfee483b6d39c2598c959a3a4576ba2cb38a␟437055650809430169:Repas ajoutés`;
164
- } var i18n_2; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
165
- const MSG_EXTERNAL_4845069511982551334$$LIB__WEB_COMPONENTS_RECIPE_MODAL_RECIPE_MODAL_COMPONENT_TS__3 = goog.getMsg("Ok, continuer mes courses");
166
- i18n_2 = MSG_EXTERNAL_4845069511982551334$$LIB__WEB_COMPONENTS_RECIPE_MODAL_RECIPE_MODAL_COMPONENT_TS__3;
170
+ RecipeModalComponent.ɵfac = function RecipeModalComponent_Factory(t) { return new (t || RecipeModalComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i2.PrintService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.BasketsService)); };
171
+ RecipeModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeModalComponent, selectors: [["ng-miam-recipe-modal"]], inputs: { detailsStepsOnLeftSide: "detailsStepsOnLeftSide", detailsMoreRecipesImageURL: "detailsMoreRecipesImageURL", detailsPricingGuestsText: "detailsPricingGuestsText" }, outputs: { hasChangesOnClose: "hasChangesOnClose" }, decls: 4, vars: 6, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
172
+ const MSG_EXTERNAL_171150506213829263$$LIB__WEB_COMPONENTS_RECIPE_MODAL_RECIPE_MODAL_COMPONENT_TS__1 = goog.getMsg("Mes repas");
173
+ i18n_0 = MSG_EXTERNAL_171150506213829263$$LIB__WEB_COMPONENTS_RECIPE_MODAL_RECIPE_MODAL_COMPONENT_TS__1;
167
174
  }
168
175
  else {
169
- i18n_2 = $localize `:␟fbcdc7ac4903b6cf1768873b28836553fa58247a4845069511982551334:Ok, continuer mes courses`;
170
- } return [[3, "isAngularComponent", "noHeaderMode", "expanded", "cancelButtonDisabled", "confirmButtonDisabled", "cancelButtonIsLoading", "expandedChange", "close", "cancel", "confirm", 4, "ngIf", 6, "title", "confirmButtonText"], [3, "isAngularComponent", "noHeaderMode", "expanded", "cancelButtonDisabled", "confirmButtonDisabled", "cancelButtonIsLoading", "expandedChange", "close", "cancel", "confirm", 4, "ngIf"], [3, "isAngularComponent", "noHeaderMode", "expanded", "cancelButtonDisabled", "confirmButtonDisabled", "cancelButtonIsLoading", "expandedChange", "close", "cancel", "confirm", 6, "title", "confirmButtonText"], ["title", i18n_0, "confirmButtonText", i18n_2], [1, "miam-wrapper-preview"], [3, "recipeId", "displayItemsUnitaryPrice", "originTrace", "loading"], [3, "isAngularComponent", "noHeaderMode", "expanded", "cancelButtonDisabled", "confirmButtonDisabled", "cancelButtonIsLoading", "expandedChange", "close", "cancel", "confirm"], [3, "recipeId", "previewAllowed", "originTrace", "stepsOnLeftSide", "moreRecipesImageURL", "pricingGuestsText", "displayGuests", "helpButtonAllowed", "recipeAdded", "recipeError", 4, "ngIf"], [3, "recipeId", "previewAllowed", "originTrace", "stepsOnLeftSide", "moreRecipesImageURL", "pricingGuestsText", "displayGuests", "helpButtonAllowed", "recipeAdded", "recipeError"], ["details", ""]]; }, template: function RecipeModalComponent_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵtemplate(0, RecipeModalComponent_ng_miam_modal_0_Template, 4, 10, "ng-miam-modal", 0);
172
- i0.ɵɵtemplate(1, RecipeModalComponent_ng_miam_modal_1_Template, 2, 8, "ng-miam-modal", 1);
176
+ i18n_0 = $localize `:␟d0309cdf7a6522949c4f145db5e71f70c9d9d66c171150506213829263:Mes repas`;
177
+ } return [["modalStyle", "right", "class", "miam-recipe-modal__basket-preview-modal", 3, "display", "noHeaderMode", "confirmButtonDisabled", "cancelButtonIsLoading", "displayChange", "close", "cancel", "confirm", 4, "ngIf", 6, "title"], ["modalStyle", "right", 3, "noHeaderMode", "display", "cancelButtonDisabled", "cancelButtonIsLoading", "displayChange", "close", "cancel", "confirm", 4, "ngIf"], ["modalStyle", "right", 1, "miam-recipe-modal__basket-preview-modal", 3, "display", "noHeaderMode", "confirmButtonDisabled", "cancelButtonIsLoading", "displayChange", "close", "cancel", "confirm", 6, "title"], ["title", i18n_0], [1, "miam-wrapper-preview"], [3, "recipeId", "displayItemsUnitaryPrice", "originTrace"], ["modalStyle", "right", 3, "noHeaderMode", "display", "cancelButtonDisabled", "cancelButtonIsLoading", "displayChange", "close", "cancel", "confirm"], [3, "recipeId", "previewAllowed", "originTrace", "stepsOnLeftSide", "moreRecipesImageURL", "pricingGuestsText", "displayGuests", "helpButtonAllowed", "recipeAdded", "recipeError", 4, "ngIf"], [3, "recipeId", "previewAllowed", "originTrace", "stepsOnLeftSide", "moreRecipesImageURL", "pricingGuestsText", "displayGuests", "helpButtonAllowed", "recipeAdded", "recipeError"], ["details", ""]]; }, template: function RecipeModalComponent_Template(rf, ctx) { if (rf & 1) {
178
+ i0.ɵɵtemplate(0, RecipeModalComponent_ng_miam_modal_0_Template, 4, 7, "ng-miam-modal", 0);
179
+ i0.ɵɵpipe(1, "async");
180
+ i0.ɵɵtemplate(2, RecipeModalComponent_ng_miam_modal_2_Template, 2, 5, "ng-miam-modal", 1);
181
+ i0.ɵɵpipe(3, "async");
173
182
  } if (rf & 2) {
174
- i0.ɵɵproperty("ngIf", ctx.previewMode);
175
- i0.ɵɵadvance(1);
176
- i0.ɵɵproperty("ngIf", !ctx.previewMode);
177
- } }, directives: [i3.NgIf, i4.ModalComponent, i5.BasketPreviewBlockComponent, i6.RecipeDetailsComponent], styles: [".miam-wrapper-preview{background-color:#fff;flex:1;overflow-y:auto;padding:20px}@media (max-width:1022px){.miam-wrapper-preview{margin-bottom:80px;padding-bottom:80px}}.miam-wrapper-preview::-webkit-scrollbar{cursor:-webkit-grab;height:7px;width:5px}.miam-wrapper-preview::-webkit-scrollbar-track{background:var(--m-color-grey)}.miam-wrapper-preview::-webkit-scrollbar-thumb{background:var(--m-color-primary);border-radius:5px}"], encapsulation: 2, changeDetection: 0 });
183
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 2, ctx.previewMode));
184
+ i0.ɵɵadvance(2);
185
+ i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(3, 4, ctx.previewMode));
186
+ } }, directives: [i3.NgIf, i4.ModalComponent, i5.BasketPreviewBlockComponent, i6.RecipeDetailsComponent], pipes: [i3.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}.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 });
178
187
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeModalComponent, [{
179
188
  type: Component,
180
189
  args: [{
@@ -184,7 +193,7 @@ RecipeModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeModalComponent
184
193
  changeDetection: ChangeDetectionStrategy.OnPush,
185
194
  encapsulation: ViewEncapsulation.None
186
195
  }]
187
- }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i2.PrintService }, { type: i0.ElementRef }, { type: i1.GroceriesListsService }, { type: i1.BasketsService }, { type: i1.PointOfSalesService }]; }, { detailsStepsOnLeftSide: [{
196
+ }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i2.PrintService }, { type: i0.ElementRef }, { type: i1.BasketsService }]; }, { detailsStepsOnLeftSide: [{
188
197
  type: Input
189
198
  }], detailsMoreRecipesImageURL: [{
190
199
  type: Input
@@ -193,4 +202,4 @@ RecipeModalComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeModalComponent
193
202
  }], hasChangesOnClose: [{
194
203
  type: Output
195
204
  }] }); })();
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1tb2RhbC9yZWNpcGUtbW9kYWwuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtbW9kYWwvcmVjaXBlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpKLE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7SUNOakQsd0NBaUJFO0lBakJGLHlCQWlCRTtJQWJBLGtPQUFtQixzTEFBQSxnTUFBQSwwTEFBQTtJQWFuQiw4QkFDRTtJQUFBLHVEQUtnQztJQUY5Qiw4T0FBb0M7SUFFckMsaUJBQStCO0lBQ2xDLGlCQUFNO0lBQ1IsaUJBQWdCOzs7SUF2QmQseUNBQTJCLHNCQUFBLHlCQUFBLHVCQUFBLCtDQUFBLGdEQUFBLGlEQUFBO0lBaUJ2QixlQUF1QjtJQUF2QiwwRUFBdUIsa0NBQUEsa0NBQUE7Ozs7SUFxQjNCLG9EQWEwQjtJQUZ4QixrUUFBbUMsd09BQUE7SUFFcEMsaUJBQXlCOzs7SUFWeEIsMkNBQXNCLHlDQUFBLGtDQUFBLGtEQUFBLDBEQUFBLHNEQUFBLGdEQUFBLHdEQUFBOzs7O0lBaEIx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QUksRUFBRSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLGNBQXVCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDOzt3RkFySFUsb0JBQW9CO3lEQUFwQixvQkFBb0I7Ozs7O2lCQ04vQixVQUFBLDZFQUFxQjs7Ozs7O2lCQUVyQixVQUFBLDBGQUE2Qzs7UUFYL0MsMEZBaUJFO1FBVUYseUZBYUU7O1FBdkNBLHNDQUFtQjtRQTJCbkIsZUFBb0I7UUFBcEIsdUNBQW9COztrRERiVCxvQkFBb0I7Y0FQaEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFdBQVcsRUFBRSwrQkFBK0I7Z0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2dCQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7d1BBY1Usc0JBQXNCO2tCQUE5QixLQUFLO1lBQ0csMEJBQTBCO2tCQUFsQyxLQUFLO1lBQ0csd0JBQXdCO2tCQUFoQyxLQUFLO1lBQ0ksaUJBQWlCO2tCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlLCBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsIFBvaW50T2ZTYWxlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEV2ZW50VHJhY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL3ByaW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL3JlY2lwZS1kZXRhaWxzL3JlY2lwZS1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlY2lwZTogUmVjaXBlO1xuICBzaG93ID0gZmFsc2U7XG4gIHByZXZpZXdNb2RlID0gZmFsc2U7XG4gIHByZXZpZXdBbGxvd2VkOiBib29sZWFuO1xuICBkaXNwbGF5R3Vlc3RzSW5EZXRhaWxzID0gdHJ1ZTtcbiAgaGVscEJ1dHRvbkFsbG93ZWRJbkRldGFpbHMgPSB0cnVlO1xuICBjYW5DbG9zZU1vZGFsID0gdHJ1ZTtcbiAgcmVtb3ZlSXNMb2FkaW5nID0gZmFsc2U7XG4gIGJhc2tldENoYW5nZWRTaW5jZU9wZW5lZCA9IGZhbHNlOyAvLyB0cnVlIGlmIHNob3cgPSB0cnVlIGFuZCBiYXNrZXQgaXMgZGlmZmVyZW50IHNpbmNlIGxhc3QgdGltZSBzaG93IHdhcyBmYWxzZVxuICByZWNpcGVXYXNBZGRlZCA9IGZhbHNlO1xuICBldmVudFRyYWNlPzogRXZlbnRUcmFjZSA9IHsgb3JpZ2luUGF0aDogJycsIHByb3BzOiB7fSB9O1xuXG4gIEBJbnB1dCgpIGRldGFpbHNTdGVwc09uTGVmdFNpZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgZGV0YWlsc01vcmVSZWNpcGVzSW1hZ2VVUkw6IHN0cmluZztcbiAgQElucHV0KCkgZGV0YWlsc1ByaWNpbmdHdWVzdHNUZXh0OiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBoYXNDaGFuZ2VzT25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgZGV0YWlsc0NvbXBvbmVudDogUmVjaXBlRGV0YWlsc0NvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIHByaW50U2VydmljZTogUHJpbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVzU2VydmljZS5kaXNwbGF5ZWRSZWNpcGUkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yZWdpc3RlclRyYWNlKHJlc3VsdD8uZXZlbnRUcmFjZSk7XG4gICAgICBpZiAoIXJlc3VsdD8ucmVjaXBlKSB7XG4gICAgICAgIGlmIChyZXN1bHQ/LmZvcmNlKXtcbiAgICAgICAgICB0aGlzLnByZXZpZXdNb2RlID0gcmVzdWx0LnByZXZpZXdNb2RlO1xuICAgICAgICAgIHRoaXMucHJldmlld0FsbG93ZWQgPSByZXN1bHQucHJldmlld0FsbG93ZWQ7XG4gICAgICAgICAgdGhpcy5zaG93ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByaW50U2VydmljZS5wcmVwYXJlRm9yUHJpbnQodGhpcy5lbFJlZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zaG93ID0gIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnJlY2lwZVdhc0FkZGVkID0gcmVzdWx0Lndhc0FkZGVkO1xuICAgICAgICB0aGlzLnJlY2lwZSA9IHJlc3VsdC5yZWNpcGU7XG4gICAgICAgIHRoaXMucHJldmlld01vZGUgPSByZXN1bHQucHJldmlld01vZGU7XG4gICAgICAgIHRoaXMucHJldmlld0FsbG93ZWQgPSByZXN1bHQucHJldmlld0FsbG93ZWQ7XG4gICAgICAgIHRoaXMuZGlzcGxheUd1ZXN0c0luRGV0YWlscyA9IHJlc3VsdC5kaXNwbGF5R3Vlc3RzO1xuICAgICAgICB0aGlzLmhlbHBCdXR0b25BbGxvd2VkSW5EZXRhaWxzID0gcmVzdWx0LmhlbHBCdXR0b25BbGxvd2VkO1xuICAgICAgICB0aGlzLnNob3cgPSB0cnVlO1xuICAgICAgICB0aGlzLnByaW50U2VydmljZS5wcmVwYXJlRm9yUHJpbnQodGhpcy5lbFJlZik7XG4gICAgICAgIHRoaXMuZGV0YWlsc0NvbXBvbmVudD8uY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBpZiAodGhpcy5kZXRhaWxzQ29tcG9uZW50KSB7IHRoaXMuZGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlsID0gdHJ1ZTsgfVxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS5fYmFza2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgICB0aGlzLmJhc2tldENoYW5nZWRTaW5jZU9wZW5lZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3RlclRyYWNlKHRyYWNlOiBFdmVudFRyYWNlKSB7XG4gICAgaWYgKHRyYWNlKSB7XG4gICAgICB0aGlzLmV2ZW50VHJhY2UgPSB0cmFjZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ldmVudFRyYWNlID0geyBvcmlnaW5QYXRoOiAnJywgcHJvcHM6IHt9IH07XG4gICAgfVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLnBvc1NlcnZpY2UuaXNQb3NWYWxpZCgpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGlzUG9zVmFsaWQgPT4ge1xuICAgICAgaWYgKHRoaXMuY2FuQ2xvc2VNb2RhbCB8fCAhaXNQb3NWYWxpZCkge1xuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWNpcGUgPSBudWxsOyAvLyB0cmlnZ2VyIGFnYWluIGEgY2hhbmdlIG9uIHJlY2lwZSBpZiB3ZSByZS1vcGVuIHRoZSB2aWV3XG4gICAgICAgIHRoaXMucHJldmlld01vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5oaWRlKCk7XG4gICAgICAgIHRoaXMucHJpbnRTZXJ2aWNlLmRpc3NtaXNzUHJpbnRpbmcoKTtcbiAgICAgICAgdGhpcy5oYXNDaGFuZ2VzT25DbG9zZS5lbWl0KHRoaXMuYmFza2V0Q2hhbmdlZFNpbmNlT3BlbmVkKTtcbiAgICAgICAgdGhpcy5iYXNrZXRDaGFuZ2VkU2luY2VPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlUHJldmlld01vZGUoKSB7XG4gICAgdGhpcy5wcmV2aWV3TW9kZSA9ICF0aGlzLnByZXZpZXdNb2RlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHJlbW92ZVJlY2lwZSgpIHtcbiAgICBpZiAodGhpcy5jYW5DbG9zZU1vZGFsKSB7XG4gICAgICB0aGlzLnJlbW92ZUlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBjb25zdCByZWNpcGVJZCA9ICcnICsgdGhpcy5yZWNpcGUuaWQ7XG4gICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZW1vdmVSZWNpcGVGcm9tTGlzdChyZWNpcGVJZCwgdGhpcy5ldmVudFRyYWNlKTtcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZXNUb1JlbW92ZS5waXBlKFxuICAgICAgICBza2lwV2hpbGUodG9SZW1vdmUgPT4gdG9SZW1vdmUubWFwKGkgPT4gaS5pZCkuaW5jbHVkZXMocmVjaXBlSWQpKSxcbiAgICAgICAgdGFrZSgxKVxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBpZiByZW1vdmUgYW5kIHJlY2lwZSB3YXMgYWRkZWQsIHRoZW4gbm8gY2hhbmdlIHdhcyBtYWRlIHRvIGJhc2tldCwgYW5kIGlmIHJlbW92ZWQgYW5kIG5vdCBhZGRlZCBpdCdzIGEgY2hhbmdlIHRvIHRoZSBiYXNrZXRcbiAgICAgICAgdGhpcy5iYXNrZXRDaGFuZ2VkU2luY2VPcGVuZWQgPSAhdGhpcy5yZWNpcGVXYXNBZGRlZDtcbiAgICAgICAgdGhpcy5yZW1vdmVJc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHByZXZpZXcgaXMgb3BlbmVkIGFuZCBsb2FkaW5nLCBibG9jayB0aGUgdXNlciBmcm9tIGNsb3NpbmcgdGhlIG1vZGFsXG4gICAqL1xuICBzZXRNb2RhbENsb3NhYmxlKHByZXZpZXdMb2FkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5jYW5DbG9zZU1vZGFsID0gIShwcmV2aWV3TG9hZGluZyAmJiB0aGlzLnByZXZpZXdNb2RlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxuZy1taWFtLW1vZGFsXG4gICpuZ0lmPVwicHJldmlld01vZGVcIlxuICBbaXNBbmd1bGFyQ29tcG9uZW50XT1cInRydWVcIiBcbiAgW25vSGVhZGVyTW9kZV09XCJ0cnVlXCJcbiAgWyhleHBhbmRlZCldPVwic2hvd1wiXG4gIFtub0hlYWRlck1vZGVdPSdmYWxzZSdcbiAgW2NhbmNlbEJ1dHRvbkRpc2FibGVkXT1cIiFjYW5DbG9zZU1vZGFsXCJcbiAgW2NvbmZpcm1CdXR0b25EaXNhYmxlZF09XCIhY2FuQ2xvc2VNb2RhbFwiXG4gIFtjYW5jZWxCdXR0b25Jc0xvYWRpbmddPVwicmVtb3ZlSXNMb2FkaW5nXCJcbiAgdGl0bGU9XCJSZXBhcyBham91dMOpc1wiXG4gIGkxOG4tdGl0bGVcbiAgY29uZmlybUJ1dHRvblRleHQ9XCJPaywgY29udGludWVyIG1lcyBjb3Vyc2VzXCJcbiAgaTE4bi1jb25maXJtQnV0dG9uVGV4dFxuICAoY2xvc2UpPVwiaGlkZSgpXCJcbiAgKGNhbmNlbCk9XCJyZW1vdmVSZWNpcGUoKVwiXG4gIChjb25maXJtKT1cImhpZGUoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXdyYXBwZXItcHJldmlld1wiPlxuICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWJsb2NrXG4gICAgICBbcmVjaXBlSWRdPVwicmVjaXBlPy5pZFwiXG4gICAgICBbZGlzcGxheUl0ZW1zVW5pdGFyeVByaWNlXT1cInRydWVcIlxuICAgICAgKGxvYWRpbmcpPVwic2V0TW9kYWxDbG9zYWJsZSgkZXZlbnQpXCJcbiAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlXCJcbiAgICA+PC9uZy1taWFtLWJhc2tldC1wcmV2aWV3LWJsb2NrPlxuICA8L2Rpdj5cbjwvbmctbWlhbS1tb2RhbD5cblxuPG5nLW1pYW0tbW9kYWxcbiAgKm5nSWY9XCIhcHJldmlld01vZGVcIlxuICBbaXNBbmd1bGFyQ29tcG9uZW50XT1cInRydWVcIiBcbiAgW25vSGVhZGVyTW9kZV09XCJ0cnVlXCJcbiAgWyhleHBhbmRlZCldPVwic2hvd1wiXG4gIFtub0hlYWRlck1vZGVdPSd0cnVlJ1xuICBbY2FuY2VsQnV0dG9uRGlzYWJsZWRdPVwiIWNhbkNsb3NlTW9kYWxcIlxuICBbY29uZmlybUJ1dHRvbkRpc2FibGVkXT1cIiFjYW5DbG9zZU1vZGFsXCJcbiAgW2NhbmNlbEJ1dHRvbklzTG9hZGluZ109XCJyZW1vdmVJc0xvYWRpbmdcIlxuICAoY2xvc2UpPVwiaGlkZSgpXCJcbiAgKGNhbmNlbCk9XCJyZW1vdmVSZWNpcGUoKVwiXG4gIChjb25maXJtKT1cImhpZGUoKVwiXG4+XG4gIDxuZy1taWFtLXJlY2lwZS1kZXRhaWxzXG4gICAgI2RldGFpbHNcbiAgICAqbmdJZj1cInJlY2lwZSAmJiB0cnVlXCJcbiAgICBbcmVjaXBlSWRdPVwicmVjaXBlLmlkXCJcbiAgICBbcHJldmlld0FsbG93ZWRdPVwicHJldmlld0FsbG93ZWRcIlxuICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlXCJcbiAgICBbc3RlcHNPbkxlZnRTaWRlXT1cImRldGFpbHNTdGVwc09uTGVmdFNpZGVcIlxuICAgIFttb3JlUmVjaXBlc0ltYWdlVVJMXT1cImRldGFpbHNNb3JlUmVjaXBlc0ltYWdlVVJMXCJcbiAgICBbcHJpY2luZ0d1ZXN0c1RleHRdPVwiZGV0YWlsc1ByaWNpbmdHdWVzdHNUZXh0XCJcbiAgICBbZGlzcGxheUd1ZXN0c109XCJkaXNwbGF5R3Vlc3RzSW5EZXRhaWxzXCJcbiAgICBbaGVscEJ1dHRvbkFsbG93ZWRdPVwiaGVscEJ1dHRvbkFsbG93ZWRJbkRldGFpbHNcIlxuICAgIChyZWNpcGVBZGRlZCk9XCJ0b2dnbGVQcmV2aWV3TW9kZSgpXCJcbiAgICAocmVjaXBlRXJyb3IpPVwiaGlkZSgpXCJcbiAgPjwvbmctbWlhbS1yZWNpcGUtZGV0YWlscz5cbjwvbmctbWlhbS1tb2RhbD5cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1tb2RhbC9yZWNpcGUtbW9kYWwuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtbW9kYWwvcmVjaXBlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0lDaEI3RCx3Q0FjRTtJQWRGLHlCQWNFO0lBWkEsZ09BQWtCLHNMQUFBLGdNQUFBLDBMQUFBO0lBWWxCLDhCQUNFO0lBQUEsa0RBSWdDO0lBQ2xDLGlCQUFNO0lBQ1IsaUJBQWdCOzs7SUFuQmQscUNBQWtCLHVCQUFBLGdEQUFBLGlEQUFBO0lBY2QsZUFBdUI7SUFBdkIsMEVBQXVCLGtDQUFBLGtDQUFBOzs7O0lBa0IzQixvREFhMEI7SUFGeEIsZ1FBQW1DLHdPQUFBO0lBRXBDLGlCQUF5Qjs7O0lBVnhCLDJDQUFzQix5Q0FBQSxrQ0FBQSxrREFBQSwwREFBQSxzREFBQSxnREFBQSx3REFBQTs7OztJQWQxQix3Q0FXRTtJQVJBLG1PQUFr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K0IsQ0FBQztnQkFDNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDO2tMQWVVLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLDBCQUEwQjtrQkFBbEMsS0FBSztZQUNHLHdCQUF3QjtrQkFBaEMsS0FBSztZQUNJLGlCQUFpQjtrQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcmludFNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvcHJpbnQuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudFRyYWNlIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2V2ZW50LXRyYWNlJztcbmltcG9ydCB7IFJlY2lwZURldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi9yZWNpcGUtZGV0YWlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVjaXBlOiBSZWNpcGU7XG4gIHNob3cgPSBmYWxzZTtcbiAgcHJldmlld01vZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJldmlld0FsbG93ZWQ6IGJvb2xlYW47XG4gIGRpc3BsYXlHdWVzdHNJbkRldGFpbHMgPSB0cnVlO1xuICBoZWxwQnV0dG9uQWxsb3dlZEluRGV0YWlscyA9IHRydWU7XG4gIGNhbkNsb3NlTW9kYWwgPSB0cnVlO1xuICByZW1vdmVJc0xvYWRpbmcgPSBmYWxzZTtcbiAgYmFza2V0Q2hhbmdlZFNpbmNlT3BlbmVkID0gZmFsc2U7IC8vIHRydWUgaWYgc2hvdyA9IHRydWUgYW5kIGJhc2tldCBpcyBkaWZmZXJlbnQgc2luY2UgbGFzdCB0aW1lIHNob3cgd2FzIGZhbHNlXG4gIHJlY2lwZVdhc0FkZGVkID0gZmFsc2U7XG4gIGV2ZW50VHJhY2U/OiBFdmVudFRyYWNlID0ge29yaWdpblBhdGg6ICcnLCBwcm9wczoge319O1xuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGRldGFpbHNTdGVwc09uTGVmdFNpZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgZGV0YWlsc01vcmVSZWNpcGVzSW1hZ2VVUkw6IHN0cmluZztcbiAgQElucHV0KCkgZGV0YWlsc1ByaWNpbmdHdWVzdHNUZXh0ID0gJ3Bhci1wZXJzb25uZSc7XG4gIEBPdXRwdXQoKSBoYXNDaGFuZ2VzT25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgZGV0YWlsc0NvbXBvbmVudDogUmVjaXBlRGV0YWlsc0NvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIHByaW50U2VydmljZTogUHJpbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuVG9SZWNpcGVEaXNwbGF5ZWQoKTtcbiAgICB0aGlzLmluaXREaXNhYmxlZFN0YXRlcygpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5fYmFza2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICAgICAgdGhpcy5iYXNrZXRDaGFuZ2VkU2luY2VPcGVuZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgbGlzdGVuVG9SZWNpcGVEaXNwbGF5ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpc3BsYXllZFJlY2lwZSQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJUcmFjZShyZXN1bHQ/LmV2ZW50VHJhY2UpO1xuICAgICAgICBpZiAoIXJlc3VsdD8ucmVjaXBlKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdD8uZm9yY2UpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld01vZGUubmV4dChyZXN1bHQucHJldmlld01vZGUpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3QWxsb3dlZCA9IHJlc3VsdC5wcmV2aWV3QWxsb3dlZDtcbiAgICAgICAgICAgIHRoaXMuc2hvdyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByaW50U2VydmljZS5wcmVwYXJlRm9yUHJpbnQodGhpcy5lbFJlZik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGVXYXNBZGRlZCA9IHJlc3VsdC53YXNBZGRlZDtcbiAgICAgICAgICB0aGlzLnJlY2lwZSA9IHJlc3VsdC5yZWNpcGU7XG4gICAgICAgICAgdGhpcy5wcmV2aWV3TW9kZS5uZXh0KHJlc3VsdC5wcmV2aWV3TW9kZSk7XG4gICAgICAgICAgdGhpcy5wcmV2aWV3QWxsb3dlZCA9IHJlc3VsdC5wcmV2aWV3QWxsb3dlZDtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlHdWVzdHNJbkRldGFpbHMgPSByZXN1bHQuZGlzcGxheUd1ZXN0cztcbiAgICAgICAgICB0aGlzLmhlbHBCdXR0b25BbGxvd2VkSW5EZXRhaWxzID0gcmVzdWx0LmhlbHBCdXR0b25BbGxvd2VkO1xuICAgICAgICAgIHRoaXMuc2hvdyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcmludFNlcnZpY2UucHJlcGFyZUZvclByaW50KHRoaXMuZWxSZWYpO1xuICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbXBvbmVudD8uY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIGlmICh0aGlzLmRldGFpbHNDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlsID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZWdpc3RlclRyYWNlKHRyYWNlOiBFdmVudFRyYWNlKTogdm9pZCB7XG4gICAgaWYgKHRyYWNlKSB7XG4gICAgICB0aGlzLmV2ZW50VHJhY2UgPSB0cmFjZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ldmVudFRyYWNlID0ge29yaWdpblBhdGg6ICcnLCBwcm9wczoge319O1xuICAgIH1cbiAgfVxuXG5cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5DbG9zZU1vZGFsKSB7XG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVjaXBlID0gbnVsbDsgLy8gdHJpZ2dlciBhZ2FpbiBhIGNoYW5nZSBvbiByZWNpcGUgaWYgd2UgcmUtb3BlbiB0aGUgdmlld1xuICAgICAgdGhpcy5wcmV2aWV3TW9kZS5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuaGlkZSgpO1xuICAgICAgdGhpcy5wcmludFNlcnZpY2UuZGlzc21pc3NQcmludGluZygpO1xuICAgICAgdGhpcy5oYXNDaGFuZ2VzT25DbG9zZS5lbWl0KHRoaXMuYmFza2V0Q2hhbmdlZFNpbmNlT3BlbmVkKTtcbiAgICAgIHRoaXMuYmFza2V0Q2hhbmdlZFNpbmNlT3BlbmVkID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuICB0b2dnbGVQcmV2aWV3TW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZpZXdNb2RlLm5leHQoIXRoaXMucHJldmlld01vZGUudmFsdWUpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8vIE5vdGUgOiB1bnVzZWRcbiAgcmVtb3ZlUmVjaXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkNsb3NlTW9kYWwpIHtcbiAgICAgIHRoaXMucmVtb3ZlSXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGNvbnN0IHJlY2lwZUlkID0gJycgKyB0aGlzLnJlY2lwZS5pZDtcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVtb3ZlUmVjaXBlc0Zyb21CYXNrZXQoW3JlY2lwZUlkXSwgdGhpcy5ldmVudFRyYWNlKTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlY2lwZVdpbGxCZVJlbW92ZWQocmVjaXBlSWQpLnBpcGUoc2tpcFdoaWxlKHdpbGxCZVJlbW92ZWQgPT4gd2lsbEJlUmVtb3ZlZCksIHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gaWYgcmVtb3ZlIGFuZCByZWNpcGUgd2FzIGFkZGVkLCB0aGVuIG5vIGNoYW5nZSB3YXMgbWFkZSB0byBiYXNrZXQsIGFuZCBpZiByZW1vdmVkIGFuZCBub3QgYWRkZWQgaXQncyBhIGNoYW5nZSB0byB0aGUgYmFza2V0XG4gICAgICAgICAgdGhpcy5iYXNrZXRDaGFuZ2VkU2luY2VPcGVuZWQgPSAhdGhpcy5yZWNpcGVXYXNBZGRlZDtcbiAgICAgICAgICB0aGlzLnJlbW92ZUlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHByZXZpZXcgaXMgb3BlbmVkIGFuZCBsb2FkaW5nLCBibG9jayB0aGUgdXNlciBmcm9tIGNsb3NpbmcgdGhlIG1vZGFsXG4gICAqL1xuICBpbml0RGlzYWJsZWRTdGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVzV2lsbEJlQWRkZWQoKSxcbiAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVzV2lsbEJlUmVtb3ZlZCgpLFxuICAgICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlY2lwZXNXaWxsQmVVcGRhdGVkKCksXG4gICAgICAgIHRoaXMucHJldmlld01vZGVcbiAgICAgIF0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aWV3TG9hZGluZyA9IHJlc1swXSB8fCByZXNbMV0gfHwgcmVzWzJdO1xuICAgICAgICB0aGlzLmNhbkNsb3NlTW9kYWwgPSAhKHByZXZpZXdMb2FkaW5nICYmIHJlc1szXSk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPG5nLW1pYW0tbW9kYWxcbiAgKm5nSWY9XCJwcmV2aWV3TW9kZSB8IGFzeW5jXCJcbiAgWyhkaXNwbGF5KV09XCJzaG93XCJcbiAgW25vSGVhZGVyTW9kZV09J2ZhbHNlJ1xuICBbY29uZmlybUJ1dHRvbkRpc2FibGVkXT1cIiFjYW5DbG9zZU1vZGFsXCJcbiAgW2NhbmNlbEJ1dHRvbklzTG9hZGluZ109XCJyZW1vdmVJc0xvYWRpbmdcIlxuICB0aXRsZT1cIk1lcyByZXBhc1wiXG4gIGkxOG4tdGl0bGVcbiAgbW9kYWxTdHlsZT1cInJpZ2h0XCJcbiAgKGNsb3NlKT1cImhpZGUoKVwiXG4gIChjYW5jZWwpPVwicmVtb3ZlUmVjaXBlKClcIlxuICAoY29uZmlybSk9XCJoaWRlKClcIlxuICBjbGFzcz1cIm1pYW0tcmVjaXBlLW1vZGFsX19iYXNrZXQtcHJldmlldy1tb2RhbFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXdyYXBwZXItcHJldmlld1wiPlxuICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWJsb2NrXG4gICAgICBbcmVjaXBlSWRdPVwicmVjaXBlPy5pZFwiXG4gICAgICBbZGlzcGxheUl0ZW1zVW5pdGFyeVByaWNlXT1cInRydWVcIlxuICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgID48L25nLW1pYW0tYmFza2V0LXByZXZpZXctYmxvY2s+XG4gIDwvZGl2PlxuPC9uZy1taWFtLW1vZGFsPlxuXG48bmctbWlhbS1tb2RhbFxuICAqbmdJZj1cIiEocHJldmlld01vZGUgfCBhc3luYylcIlxuICBbbm9IZWFkZXJNb2RlXT1cInRydWVcIlxuICBbKGRpc3BsYXkpXT1cInNob3dcIlxuICBbY2FuY2VsQnV0dG9uRGlzYWJsZWRdPVwiIWNhbkNsb3NlTW9kYWxcIlxuICBbY2FuY2VsQnV0dG9uSXNMb2FkaW5nXT1cInJlbW92ZUlzTG9hZGluZ1wiXG4gIG1vZGFsU3R5bGU9XCJyaWdodFwiXG4gIChjbG9zZSk9XCJoaWRlKClcIlxuICAoY2FuY2VsKT1cInJlbW92ZVJlY2lwZSgpXCJcbiAgKGNvbmZpcm0pPVwiaGlkZSgpXCJcbj5cbiAgPG5nLW1pYW0tcmVjaXBlLWRldGFpbHNcbiAgICAjZGV0YWlsc1xuICAgICpuZ0lmPVwicmVjaXBlICYmIHRydWVcIlxuICAgIFtyZWNpcGVJZF09XCJyZWNpcGUuaWRcIlxuICAgIFtwcmV2aWV3QWxsb3dlZF09XCJwcmV2aWV3QWxsb3dlZFwiXG4gICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgIFtzdGVwc09uTGVmdFNpZGVdPVwiZGV0YWlsc1N0ZXBzT25MZWZ0U2lkZVwiXG4gICAgW21vcmVSZWNpcGVzSW1hZ2VVUkxdPVwiZGV0YWlsc01vcmVSZWNpcGVzSW1hZ2VVUkxcIlxuICAgIFtwcmljaW5nR3Vlc3RzVGV4dF09XCJkZXRhaWxzUHJpY2luZ0d1ZXN0c1RleHRcIlxuICAgIFtkaXNwbGF5R3Vlc3RzXT1cImRpc3BsYXlHdWVzdHNJbkRldGFpbHNcIlxuICAgIFtoZWxwQnV0dG9uQWxsb3dlZF09XCJoZWxwQnV0dG9uQWxsb3dlZEluRGV0YWlsc1wiXG4gICAgKHJlY2lwZUFkZGVkKT1cInRvZ2dsZVByZXZpZXdNb2RlKClcIlxuICAgIChyZWNpcGVFcnJvcik9XCJoaWRlKClcIlxuICA+PC9uZy1taWFtLXJlY2lwZS1kZXRhaWxzPlxuPC9uZy1taWFtLW1vZGFsPlxuIl19
@@ -123,13 +123,13 @@ function RecipeTagsComponent_ng_template_1_ng_miam_modal_1_Template(rf, ctx) { i
123
123
  i0.ɵɵelementEnd();
124
124
  } if (rf & 2) {
125
125
  const ctx_r15 = i0.ɵɵnextContext(2);
126
- i0.ɵɵproperty("isAngularComponent", true)("expanded", ctx_r15.modalIsOpened)("noHeaderMode", false)("recipesCount", ctx_r15.recipePreviewLines.length);
126
+ i0.ɵɵproperty("display", ctx_r15.modalIsOpened)("noHeaderMode", false)("recipesCount", ctx_r15.recipePreviewLines.length);
127
127
  i0.ɵɵadvance(2);
128
128
  i0.ɵɵproperty("ngForOf", ctx_r15.recipePreviewLines);
129
129
  } }
130
130
  function RecipeTagsComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
131
131
  i0.ɵɵtemplate(0, RecipeTagsComponent_ng_template_1_div_0_Template, 5, 1, "div", 15);
132
- i0.ɵɵtemplate(1, RecipeTagsComponent_ng_template_1_ng_miam_modal_1_Template, 3, 5, "ng-miam-modal", 16);
132
+ i0.ɵɵtemplate(1, RecipeTagsComponent_ng_template_1_ng_miam_modal_1_Template, 3, 4, "ng-miam-modal", 16);
133
133
  } if (rf & 2) {
134
134
  const ctx_r2 = i0.ɵɵnextContext();
135
135
  i0.ɵɵproperty("ngIf", (ctx_r2.recipePreviewLines == null ? null : ctx_r2.recipePreviewLines.length) > 0);
@@ -219,13 +219,13 @@ RecipeTagsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeTagsComponent,
219
219
  }
220
220
  else {
221
221
  i18n_4 = $localize `:␟3c5bb82ed6e0c7ec470e7e044e3d12f9642d5356␟8273924711540568207:repas`;
222
- } return [[4, "ngIf", "ngIfElse"], ["reduced", ""], ["class", "miam-recipe-tags__container", 3, "ngStyle", 4, "ngIf"], [1, "miam-recipe-tags__container", 3, "ngStyle"], [1, "miam-recipe-tags__container__list"], ["class", "miam-recipe-tags__list__badge", 4, "ngFor", "ngForOf"], [1, "miam-recipe-tags__container__toggle", 3, "ngClass"], [1, "miam-recipe-tags__toggle__open", 3, "click"], [1, "miam-recipe-tags__toggle__ligne"], [1, "miam-recipe-tags__toggle__close", 3, "ngStyle", "click"], ["width", "24", "height", "24", "primaryColor", "var(--m-color-white)", 3, "iconName"], [1, "miam-recipe-tags__list__badge"], ["tag", ""], ["primaryColor", "var(--m-color-white)", 1, "miam-recipe-tags__badge__icon", 3, "iconName", "click"], [1, "miam-recipe-tag__badge__text", 3, "click"], ["class", "miam-recipe-tags__recipes", 3, "click", 4, "ngIf"], ["class", "miam-recipe-tags__modal", 3, "isAngularComponent", "expanded", "noHeaderMode", "recipesCount", "close", 4, "ngIf"], [1, "miam-recipe-tags__recipes", 3, "click"], [1, "miam-recipe-tags__recipes__count"], i18n_4, [1, "miam-recipe-tags__modal", 3, "isAngularComponent", "expanded", "noHeaderMode", "recipesCount", "close"]]; }, template: function RecipeTagsComponent_Template(rf, ctx) { if (rf & 1) {
222
+ } return [[4, "ngIf", "ngIfElse"], ["reduced", ""], ["class", "miam-recipe-tags__container", 3, "ngStyle", 4, "ngIf"], [1, "miam-recipe-tags__container", 3, "ngStyle"], [1, "miam-recipe-tags__container__list"], ["class", "miam-recipe-tags__list__badge", 4, "ngFor", "ngForOf"], [1, "miam-recipe-tags__container__toggle", 3, "ngClass"], [1, "miam-recipe-tags__toggle__open", 3, "click"], [1, "miam-recipe-tags__toggle__ligne"], [1, "miam-recipe-tags__toggle__close", 3, "ngStyle", "click"], ["width", "24", "height", "24", "primaryColor", "var(--m-color-white)", 3, "iconName"], [1, "miam-recipe-tags__list__badge"], ["tag", ""], ["primaryColor", "var(--m-color-white)", 1, "miam-recipe-tags__badge__icon", 3, "iconName", "click"], [1, "miam-recipe-tag__badge__text", 3, "click"], ["class", "miam-recipe-tags__recipes", 3, "click", 4, "ngIf"], ["class", "miam-recipe-tags__modal", 3, "display", "noHeaderMode", "recipesCount", "close", 4, "ngIf"], [1, "miam-recipe-tags__recipes", 3, "click"], [1, "miam-recipe-tags__recipes__count"], i18n_4, [1, "miam-recipe-tags__modal", 3, "display", "noHeaderMode", "recipesCount", "close"]]; }, template: function RecipeTagsComponent_Template(rf, ctx) { if (rf & 1) {
223
223
  i0.ɵɵtemplate(0, RecipeTagsComponent_ng_container_0_Template, 2, 1, "ng-container", 0);
224
224
  i0.ɵɵtemplate(1, RecipeTagsComponent_ng_template_1_Template, 2, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
225
225
  } if (rf & 2) {
226
226
  const _r1 = i0.ɵɵreference(2);
227
227
  i0.ɵɵproperty("ngIf", !ctx.reduce)("ngIfElse", _r1);
228
- } }, directives: [i4.NgIf, i4.NgStyle, i4.NgForOf, i4.NgClass, i5.IconComponent, i6.ModalComponent], pipes: [i7.EllipsisPipe], styles: [".miam-recipe-tags__container__list{display:flex;flex:1 1;flex-wrap:wrap;gap:8px}.miam-recipe-tags__container__list .miam-recipe-tags__list__badge{align-items:center;border:1px solid #e9e9e9;border-radius:100px;box-sizing:border-box;cursor:pointer;display:flex;height:24px;max-width:50vw;padding:0 8px 0 0;position:relative}.miam-recipe-tags__container__list .miam-recipe-tags__list__badge .miam-recipe-tags__badge__icon{background:var(--m-color-primary);border-radius:100px 0 0 100px;flex:none;flex-grow:0;order:0;padding:4px 8px}.miam-recipe-tags__container__list .miam-recipe-tags__list__badge .miam-recipe-tag__badge__text{color:#676767;flex:1;font-size:12px;line-height:16px;margin:0 8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.miam-recipe-tags__container{display:flex;margin-top:16px;overflow:hidden;padding:0 8px;transition:height .25s cubic-bezier(0,0,.2,1)}.miam-recipe-tags__container .miam-recipe-tags__container__toggle{align-items:center;display:flex;flex-direction:column;visibility:visible;width:80px}.miam-recipe-tags__container .miam-recipe-tags__container__toggle.miam-recipe-tags__container__toggle__hidden{visibility:hidden}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__open{background:#f6f6f6;border-radius:100px;cursor:pointer;display:flex;height:24px;justify-content:center;min-width:40px;padding:4px 8px}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__ligne{background-color:var(--m-color-grey);flex:1;transform:height 1s linear;width:2px}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__close{background:var(--m-color-primary);border-radius:100px;cursor:pointer;min-width:40px;transition:opacity .2s linear}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__close ng-miam-icon .icon-container{transform:rotate(180deg)}.miam-recipe-tags__recipes{align-items:center;border:1px solid #e9e9e9;border-radius:100px;box-sizing:border-box;cursor:pointer;display:flex;height:24px;max-width:50vw;padding:0 8px 0 0;position:relative}.miam-recipe-tags__recipes .miam-recipe-tags__recipes__count{margin-right:4px}.miam-recipe-tags__modal .miam-modal{-webkit-animation-name:none;animation-name:none;height:auto;right:50%;top:50%;transform:translate3d(50%,-50%,0)}.miam-recipe-tags__modal .miam-modal .miam-modal__container .miam-recipe-tags__container__list{display:flex;flex-flow:row wrap;max-width:480px;padding:24px}@media (max-width:1023px){.miam-recipe-tags__modal .miam-modal .miam-modal__container .miam-recipe-tags__container__list{flex-flow:column}}"], encapsulation: 2, changeDetection: 0 });
228
+ } }, directives: [i4.NgIf, i4.NgStyle, i4.NgForOf, i4.NgClass, i5.IconComponent, i6.ModalComponent], pipes: [i7.EllipsisPipe], styles: [".miam-recipe-tags__container__list{display:flex;flex:1 1;flex-wrap:wrap;gap:8px}.miam-recipe-tags__container__list .miam-recipe-tags__list__badge{align-items:center;border:1px solid #e9e9e9;border-radius:100px;box-sizing:border-box;cursor:pointer;display:flex;height:24px;max-width:50vw;padding:0 8px 0 0;position:relative}.miam-recipe-tags__container__list .miam-recipe-tags__list__badge .miam-recipe-tags__badge__icon{background:var(--m-color-primary);border-radius:100px 0 0 100px;flex:none;flex-grow:0;order:0;padding:4px 8px}.miam-recipe-tags__container__list .miam-recipe-tags__list__badge .miam-recipe-tag__badge__text{color:#676767;flex:1;font-size:12px;line-height:16px;margin:0 8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.miam-recipe-tags__container{display:flex;margin-top:16px;overflow:hidden;padding:0 8px;transition:height .25s cubic-bezier(0,0,.2,1)}.miam-recipe-tags__container .miam-recipe-tags__container__toggle{align-items:center;display:flex;flex-direction:column;visibility:visible;width:80px}.miam-recipe-tags__container .miam-recipe-tags__container__toggle.miam-recipe-tags__container__toggle__hidden{visibility:hidden}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__open{background:#f6f6f6;border-radius:100px;cursor:pointer;display:flex;height:24px;justify-content:center;min-width:40px;padding:4px 8px}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__ligne{background-color:var(--m-color-grey);flex:1;transform:height 1s linear;width:2px}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__close{background:var(--m-color-primary);border-radius:100px;cursor:pointer;min-width:40px;transition:opacity .2s linear}.miam-recipe-tags__container .miam-recipe-tags__container__toggle .miam-recipe-tags__toggle__close ng-miam-icon .icon-container{transform:rotate(180deg)}.miam-recipe-tags__recipes{align-items:center;border:1px solid #e9e9e9;border-radius:100px;box-sizing:border-box;cursor:pointer;display:flex;height:24px;max-width:50vw;padding:0 8px 0 0;position:relative}.miam-recipe-tags__recipes .miam-recipe-tags__recipes__count{margin-right:4px}.miam-recipe-tags__modal .miam-modal{animation-name:none;height:auto;right:50%;top:50%;transform:translate3d(50%,-50%,0)}.miam-recipe-tags__modal .miam-modal .miam-modal__container .miam-recipe-tags__container__list{display:flex;flex-flow:row wrap;max-width:480px;padding:24px}@media (max-width:1023px){.miam-recipe-tags__modal .miam-modal .miam-modal__container .miam-recipe-tags__container__list{flex-flow:column}}"], encapsulation: 2, changeDetection: 0 });
229
229
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeTagsComponent, [{
230
230
  type: Component,
231
231
  args: [{
@@ -245,4 +245,4 @@ RecipeTagsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeTagsComponent,
245
245
  type: ViewChildren,
246
246
  args: ['tag']
247
247
  }] }); })();
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXRhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLXRhZ3MvcmVjaXBlLXRhZ3MuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtdGFncy9yZWNpcGUtdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUM3RCxLQUFLLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFDdEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7SUNSL0QsbUNBQ0U7SUFBQSx3Q0FDcUQ7SUFEc0IsMFFBQXFDO0lBQzFFLGlCQUFlO0lBQ3JELGdDQUFpRjtJQUF0QyxvUUFBcUM7SUFBQyxZQUFtQzs7SUFBQSxpQkFBTztJQUM3SCxpQkFBTTs7OztJQUhnRCxlQUFzQjtJQUF0QiwyQ0FBc0I7SUFFTyxlQUFtQztJQUFuQyxrRUFBbUM7Ozs7Ozs7SUFMMUgsOEJBQ0U7SUFBQSw4QkFDRTtJQUFBLHlGQUNFO0lBSUosaUJBQU07SUFDTiw4QkFDRTtJQUFBLCtCQUNFO0lBRDRDLHdNQUFzQjtJQUNsRSxZ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QVksQ0FBQyxFQUFVO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7c0ZBN0ZVLG1CQUFtQjt3REFBbkIsbUJBQW1COzs7Ozs7Ozs7O2lCQ0NqQixVQUFBLHNFQUFLOztRQXRCcEIsc0ZBQ0U7UUFrQkYscUhBQ0U7OztRQXBCWSxrQ0FBNEIsaUJBQUE7O2tERHFCN0IsbUJBQW1CO2NBUC9CLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixXQUFXLEVBQUUsOEJBQThCO2dCQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDM0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzBMQUVVLEtBQUs7a0JBQWIsS0FBSztZQUNHLDBCQUEwQjtrQkFBbEMsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNlLElBQUk7a0JBQXhCLFlBQVk7bUJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LCBJbnB1dCwgVmlld0NoaWxkcmVuLCBFbGVtZW50UmVmLCBRdWVyeUxpc3QsIEFmdGVyVmlld0luaXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IGdyb3VwQnkgZnJvbSAnbG9kYXNoLWVzL2dyb3VwQnknO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS10YWdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS10YWdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLXRhZ3MuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlVGFnc0NvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBleHRJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWNpcGVEZXRhaWxQcmV2aWV3QWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHJlZHVjZSA9IGZhbHNlO1xuICBAVmlld0NoaWxkcmVuKCd0YWcnKSB0YWdzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgaWNvbiA9IEljb247XG4gIHJlY2lwZVByZXZpZXdMaW5lczogQmFza2V0UHJldmlld0xpbmVbXTtcbiAgd3JhcHBlZEl0ZW1zQ291bnQ6IG51bWJlcjtcbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgbGFzdEl0ZW1JbmRleE9mRmlyc3RSb3c6IG51bWJlcjtcbiAgaXNMaXN0T3BlbjogYm9vbGVhbjtcbiAgbW9kYWxJc09wZW5lZCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBiYXNrZXRTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRlc2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoc2ltcGxlQ2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZXh0SWQnKSAmJiBzaW1wbGVDaGFuZ2VzLmV4dElkLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldFNlcnZpY2UuYmFza2V0UHJldmlldyQuc3Vic2NyaWJlKGJhc2tldFByZXZpZXdMaW5lcyA9PiB7XG4gICAgICAgIGlmIChiYXNrZXRQcmV2aWV3TGluZXMpIHtcbiAgICAgICAgICAvLyB3ZSBnZXQgdGhlIGxpc3Qgb2YgYmFza2V0UHJldmlld0xpbmVzIChhdCByZWNpcGUgbGV2ZWwpIHdpdGNoIGhhdmUgaXRlbXMgbGluayB3aXRoIGdpdmVuIGV4dElkXG4gICAgICAgICAgdGhpcy5yZWNpcGVQcmV2aWV3TGluZXMgPSBiYXNrZXRQcmV2aWV3TGluZXMuZmlsdGVyKGJwbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYnBsLmVudHJpZXMuZm91bmQuZmluZChlbnRyeSA9PiBlbnRyeS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlc1snZXh0LWlkJ10gPT09IHRoaXMuZXh0SWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLmRldGVjdFdyYXBwZWRUYWdzKHRoaXMudGFncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZGV0ZWN0IGFuZCBjb3VudCB3cmFwcGVkIGl0ZW0gYmVsb3cgdGhlIGZpc3Qgcm93XG4gICAqIGl0ZW1zIGFuZCBjb250YWluZXIgY2FuIGhhdmUgdmFyaW91cyB3aWR0aCBzbyByb3cgbnVtYmVyIGNhbiBkaWZmZXJcbiAgICogYmFzZSBvbiBhYnNvbHV0ZSBwb3NpdGlvbiBpbiB3aW5kb3cgd2UgYXJlIGFibGUgdG8gZmluZCBlbGVtZW50IHdpdGNoIGJlbG9uZ3NcbiAgICogdG8gdGhlIGZpcnN0IHJvdyBhbmQgb3RoZXIgYW5kIHRoZW4gY291bnQgaGlkZGVuIGVsZW1lbnRzIGFuZCBudW1iZXIgb2Ygcm93c1xuICAgKiBAcGFyYW0gdGFncyAgUXVlcnlMaXN0PEVsZW1lbnRSZWY+XG4gICAqL1xuICBkZXRlY3RXcmFwcGVkVGFncyh0YWdzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4pIHtcbiAgICBpZiAodGFncy5sZW5ndGggPT09IDApeyByZXR1cm47IH1cblxuICAgIC8vIGdldCBmb3IgZWFjaCBlbGVtZW50IGhpcyBhYnNvbHV0ZSBwb3NpdGlvbiBmcm9tIHRvcCBvZiB3aW5kb3dcbiAgICBjb25zdCB0YWdzUG9zaXRpb24gPSB0YWdzLm1hcCh0YWcgPT4gdGFnLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgLy8gZ3JvdXAgYnkgdG9wICwgZWxlbWVudCB0aGF0IHNoYXJlIHRoZSBzYW1lIHRvcCBwb3NpdGlvbiBhcmUgaW4gdGhlIHNhbWUgbGluZVxuICAgIGNvbnN0IHRhZ3NHcm91cEJ5Um93ID0gZ3JvdXBCeSh0YWdzUG9zaXRpb24sICd0b3AnKTtcblxuICAgIC8vIGdldCBsaXN0IG9mIGRpc3RpbmN0IGhpZ2h0XG4gICAgY29uc3QgdGFnc0Rpc3RpbmN0SGlnaHQgPSBPYmplY3Qua2V5cyh0YWdzR3JvdXBCeVJvdyk7XG5cbiAgICB0aGlzLnJvd0NvdW50ID0gdGFnc0Rpc3RpbmN0SGlnaHQubGVuZ3RoO1xuXG4gICAgLy8gZ2V0IHNpemUgb2YgZmlyc3Qgcm93ICdsbCBoZWxwIHVzIHRvIGdldCBsYXN0IGl0ZW0gb2YgdGhpcyByb3dcbiAgICB0aGlzLmxhc3RJdGVtSW5kZXhPZkZpcnN0Um93ID0gdGFnc0dyb3VwQnlSb3dbdGFnc0Rpc3RpbmN0SGlnaHRbMF1dLmxlbmd0aCAtIDE7XG5cbiAgICAvLyB3cmFwcGVkIGl0ZW1zIGNvdW50IGlzIGxlbmd0aCAtIHRhZ3MgY291bnQgaW4gZmlyc3Qgcm93XG4gICAgdGhpcy53cmFwcGVkSXRlbXNDb3VudCA9IHRhZ3MudG9BcnJheSgpLmxlbmd0aCAtICh0aGlzLmxhc3RJdGVtSW5kZXhPZkZpcnN0Um93ICsgMSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlUmVjaXBlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpc3BsYXkoaWQsIHtwcmV2aWV3QWxsb3dlZDogdGhpcy5yZWNpcGVEZXRhaWxQcmV2aWV3QWxsb3dlZCwgcHJldmlld01vZGU6IGZhbHNlfSwgdGhpcy5ldmVudFRyYWNlKCkpO1xuICB9XG5cbiAgdG9nZ2xlTGlzdCgpIHtcbiAgICB0aGlzLmlzTGlzdE9wZW4gPSAhdGhpcy5pc0xpc3RPcGVuO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZU1vZGFsKCkge1xuICAgIHRoaXMubW9kYWxJc09wZW5lZCA9ICF0aGlzLm1vZGFsSXNPcGVuZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlZHVjZSBlbHNlIHJlZHVjZWRcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lclwiICpuZ0lmPVwicmVjaXBlUHJldmlld0xpbmVzPy5sZW5ndGggPiAwXCIgW25nU3R5bGVdPVwieydoZWlnaHQucHgnOiBpc0xpc3RPcGVuID8gMzIgKiByb3dDb3VudCA6IDI0ICB9XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lcl9fbGlzdFwiID5cbiAgICAgIDxkaXYgI3RhZyBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2xpc3RfX2JhZGdlXCIgKm5nRm9yPVwibGV0IHJlY2lwZUxpbmUgb2YgcmVjaXBlUHJldmlld0xpbmVzLCBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19iYWRnZV9faWNvblwiIFtpY29uTmFtZV09J2ljb24uTWVhbCcgKGNsaWNrKT0ndG9nZ2xlUmVjaXBlKHJlY2lwZUxpbmUuaWQpJ1xuICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci13aGl0ZSknPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ19fYmFkZ2VfX3RleHRcIiAoY2xpY2spPSd0b2dnbGVSZWNpcGUocmVjaXBlTGluZS5pZCknPnt7cmVjaXBlTGluZS50aXRsZSB8IGVsbGlwc2lzIDogNn19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J21pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lcl9fdG9nZ2xlX19oaWRkZW4nOiAhcm93Q291bnQgfHwgd3JhcHBlZEl0ZW1zQ291bnQgPT09IDAgfVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fY29udGFpbmVyX190b2dnbGVcIiA+XG4gICAgICA8c3BhbiAgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX190b2dnbGVfX29wZW5cIiAoY2xpY2spPSd0b2dnbGVMaXN0KCknPlxuICAgICAgICB7eyBpc0xpc3RPcGVuID8gJyAgJyA6ICcrJyArd3JhcHBlZEl0ZW1zQ291bnR9fTwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX3RvZ2dsZV9fbGlnbmVcIj48L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX190b2dnbGVfX2Nsb3NlXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogaXNMaXN0T3BlbiA/IDEgOiAwfVwiIChjbGljayk9J3RvZ2dsZUxpc3QoKSc+IFxuICAgICAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT0naWNvbi5DaGV2cm9uRG93bicgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjcmVkdWNlZD5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX3JlY2lwZXNcIiAqbmdJZj1cInJlY2lwZVByZXZpZXdMaW5lcz8ubGVuZ3RoID4gMFwiIChjbGljayk9XCJ0b2dnbGVNb2RhbCgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19yZWNpcGVzX19jb3VudFwiPnt7cmVjaXBlUHJldmlld0xpbmVzLmxlbmd0aH19PC9zcGFuPlxuICAgIDxzcGFuIGkxOG4+cmVwYXM8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxuZy1taWFtLW1vZGFsXG4gICAgKm5nSWY9XCJyZWNpcGVQcmV2aWV3TGluZXM/Lmxlbmd0aCA+IDBcIlxuICAgIFtpc0FuZ3VsYXJDb21wb25lbnRdPVwidHJ1ZVwiIFxuICAgIFtleHBhbmRlZF09XCJtb2RhbElzT3BlbmVkXCJcbiAgICBbbm9IZWFkZXJNb2RlXT1cImZhbHNlXCIgXG4gICAgW3JlY2lwZXNDb3VudF09XCJyZWNpcGVQcmV2aWV3TGluZXMubGVuZ3RoXCJcbiAgICAoY2xvc2UpPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19tb2RhbFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fY29udGFpbmVyX19saXN0XCIgPlxuICAgICAgPGRpdiAjdGFnIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fbGlzdF9fYmFkZ2VcIiAqbmdGb3I9XCJsZXQgcmVjaXBlTGluZSBvZiByZWNpcGVQcmV2aWV3TGluZXMsIGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2JhZGdlX19pY29uXCIgW2ljb25OYW1lXT0naWNvbi5NZWFsJyAoY2xpY2spPSd0b2dnbGVSZWNpcGUocmVjaXBlTGluZS5pZCknXG4gICAgICAgICAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnX19iYWRnZV9fdGV4dFwiIChjbGljayk9J3RvZ2dsZVJlY2lwZShyZWNpcGVMaW5lLmlkKSc+e3tyZWNpcGVMaW5lLnRpdGxlfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1taWFtLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXRhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLXRhZ3MvcmVjaXBlLXRhZ3MuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtdGFncy9yZWNpcGUtdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUM3RCxLQUFLLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFDdEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7SUNSL0QsbUNBQ0U7SUFBQSx3Q0FDcUQ7SUFEc0IsMFFBQXFDO0lBQzFFLGlCQUFlO0lBQ3JELGdDQUFpRjtJQUF0QyxvUUFBcUM7SUFBQyxZQUFtQzs7SUFBQSxpQkFBTztJQUM3SCxpQkFBTTs7OztJQUhnRCxlQUFzQjtJQUF0QiwyQ0FBc0I7SUFFTyxlQUFtQztJQUFuQyxrRUFBbUM7Ozs7Ozs7SUFMMUgsOEJBQ0U7SUFBQSw4QkFDRTtJQUFBLHlGQUNFO0lBSUosaUJBQU07SUFDTiw4QkFDRTtJQUFBLCtCQUNFO0lBRDRDLHdNQUFzQjtJQUNsRSxZ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QyxFQUFVO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7c0ZBN0ZVLG1CQUFtQjt3REFBbkIsbUJBQW1COzs7Ozs7Ozs7O2lCQ0NqQixVQUFBLHNFQUFLOztRQXRCcEIsc0ZBQ0U7UUFrQkYscUhBQ0U7OztRQXBCWSxrQ0FBNEIsaUJBQUE7O2tERHFCN0IsbUJBQW1CO2NBUC9CLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixXQUFXLEVBQUUsOEJBQThCO2dCQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDM0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzBMQUVVLEtBQUs7a0JBQWIsS0FBSztZQUNHLDBCQUEwQjtrQkFBbEMsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNlLElBQUk7a0JBQXhCLFlBQVk7bUJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LCBJbnB1dCwgVmlld0NoaWxkcmVuLCBFbGVtZW50UmVmLCBRdWVyeUxpc3QsIEFmdGVyVmlld0luaXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IGdyb3VwQnkgZnJvbSAnbG9kYXNoLWVzL2dyb3VwQnknO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS10YWdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS10YWdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLXRhZ3MuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlVGFnc0NvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBleHRJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWNpcGVEZXRhaWxQcmV2aWV3QWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHJlZHVjZSA9IGZhbHNlO1xuICBAVmlld0NoaWxkcmVuKCd0YWcnKSB0YWdzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgaWNvbiA9IEljb247XG4gIHJlY2lwZVByZXZpZXdMaW5lczogQmFza2V0UHJldmlld0xpbmVbXTtcbiAgd3JhcHBlZEl0ZW1zQ291bnQ6IG51bWJlcjtcbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgbGFzdEl0ZW1JbmRleE9mRmlyc3RSb3c6IG51bWJlcjtcbiAgaXNMaXN0T3BlbjogYm9vbGVhbjtcbiAgbW9kYWxJc09wZW5lZCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBiYXNrZXRTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRlc2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoc2ltcGxlQ2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZXh0SWQnKSAmJiBzaW1wbGVDaGFuZ2VzLmV4dElkLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldFNlcnZpY2UuYmFza2V0UHJldmlldyQuc3Vic2NyaWJlKGJhc2tldFByZXZpZXdMaW5lcyA9PiB7XG4gICAgICAgIGlmIChiYXNrZXRQcmV2aWV3TGluZXMpIHtcbiAgICAgICAgICAvLyB3ZSBnZXQgdGhlIGxpc3Qgb2YgYmFza2V0UHJldmlld0xpbmVzIChhdCByZWNpcGUgbGV2ZWwpIHdpdGNoIGhhdmUgaXRlbXMgbGluayB3aXRoIGdpdmVuIGV4dElkXG4gICAgICAgICAgdGhpcy5yZWNpcGVQcmV2aWV3TGluZXMgPSBiYXNrZXRQcmV2aWV3TGluZXMuZmlsdGVyKGJwbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYnBsLmVudHJpZXMuZm91bmQuZmluZChlbnRyeSA9PiBlbnRyeS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlc1snZXh0LWlkJ10gPT09IHRoaXMuZXh0SWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLmRldGVjdFdyYXBwZWRUYWdzKHRoaXMudGFncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZGV0ZWN0IGFuZCBjb3VudCB3cmFwcGVkIGl0ZW0gYmVsb3cgdGhlIGZpc3Qgcm93XG4gICAqIGl0ZW1zIGFuZCBjb250YWluZXIgY2FuIGhhdmUgdmFyaW91cyB3aWR0aCBzbyByb3cgbnVtYmVyIGNhbiBkaWZmZXJcbiAgICogYmFzZSBvbiBhYnNvbHV0ZSBwb3NpdGlvbiBpbiB3aW5kb3cgd2UgYXJlIGFibGUgdG8gZmluZCBlbGVtZW50IHdpdGNoIGJlbG9uZ3NcbiAgICogdG8gdGhlIGZpcnN0IHJvdyBhbmQgb3RoZXIgYW5kIHRoZW4gY291bnQgaGlkZGVuIGVsZW1lbnRzIGFuZCBudW1iZXIgb2Ygcm93c1xuICAgKiBAcGFyYW0gdGFncyAgUXVlcnlMaXN0PEVsZW1lbnRSZWY+XG4gICAqL1xuICBkZXRlY3RXcmFwcGVkVGFncyh0YWdzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4pIHtcbiAgICBpZiAodGFncy5sZW5ndGggPT09IDApeyByZXR1cm47IH1cblxuICAgIC8vIGdldCBmb3IgZWFjaCBlbGVtZW50IGhpcyBhYnNvbHV0ZSBwb3NpdGlvbiBmcm9tIHRvcCBvZiB3aW5kb3dcbiAgICBjb25zdCB0YWdzUG9zaXRpb24gPSB0YWdzLm1hcCh0YWcgPT4gdGFnLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgLy8gZ3JvdXAgYnkgdG9wICwgZWxlbWVudCB0aGF0IHNoYXJlIHRoZSBzYW1lIHRvcCBwb3NpdGlvbiBhcmUgaW4gdGhlIHNhbWUgbGluZVxuICAgIGNvbnN0IHRhZ3NHcm91cEJ5Um93ID0gZ3JvdXBCeSh0YWdzUG9zaXRpb24sICd0b3AnKTtcblxuICAgIC8vIGdldCBsaXN0IG9mIGRpc3RpbmN0IGhpZ2h0XG4gICAgY29uc3QgdGFnc0Rpc3RpbmN0SGlnaHQgPSBPYmplY3Qua2V5cyh0YWdzR3JvdXBCeVJvdyk7XG5cbiAgICB0aGlzLnJvd0NvdW50ID0gdGFnc0Rpc3RpbmN0SGlnaHQubGVuZ3RoO1xuXG4gICAgLy8gZ2V0IHNpemUgb2YgZmlyc3Qgcm93ICdsbCBoZWxwIHVzIHRvIGdldCBsYXN0IGl0ZW0gb2YgdGhpcyByb3dcbiAgICB0aGlzLmxhc3RJdGVtSW5kZXhPZkZpcnN0Um93ID0gdGFnc0dyb3VwQnlSb3dbdGFnc0Rpc3RpbmN0SGlnaHRbMF1dLmxlbmd0aCAtIDE7XG5cbiAgICAvLyB3cmFwcGVkIGl0ZW1zIGNvdW50IGlzIGxlbmd0aCAtIHRhZ3MgY291bnQgaW4gZmlyc3Qgcm93XG4gICAgdGhpcy53cmFwcGVkSXRlbXNDb3VudCA9IHRhZ3MudG9BcnJheSgpLmxlbmd0aCAtICh0aGlzLmxhc3RJdGVtSW5kZXhPZkZpcnN0Um93ICsgMSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlUmVjaXBlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpc3BsYXkoaWQsIHtwcmV2aWV3QWxsb3dlZDogdGhpcy5yZWNpcGVEZXRhaWxQcmV2aWV3QWxsb3dlZCwgcHJldmlld01vZGU6IGZhbHNlfSwgdGhpcy5ldmVudFRyYWNlKCkpO1xuICB9XG5cbiAgdG9nZ2xlTGlzdCgpIHtcbiAgICB0aGlzLmlzTGlzdE9wZW4gPSAhdGhpcy5pc0xpc3RPcGVuO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZU1vZGFsKCkge1xuICAgIHRoaXMubW9kYWxJc09wZW5lZCA9ICF0aGlzLm1vZGFsSXNPcGVuZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlZHVjZSBlbHNlIHJlZHVjZWRcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lclwiICpuZ0lmPVwicmVjaXBlUHJldmlld0xpbmVzPy5sZW5ndGggPiAwXCIgW25nU3R5bGVdPVwieydoZWlnaHQucHgnOiBpc0xpc3RPcGVuID8gMzIgKiByb3dDb3VudCA6IDI0ICB9XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lcl9fbGlzdFwiID5cbiAgICAgIDxkaXYgI3RhZyBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX2xpc3RfX2JhZGdlXCIgKm5nRm9yPVwibGV0IHJlY2lwZUxpbmUgb2YgcmVjaXBlUHJldmlld0xpbmVzLCBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19iYWRnZV9faWNvblwiIFtpY29uTmFtZV09J2ljb24uTWVhbCcgKGNsaWNrKT0ndG9nZ2xlUmVjaXBlKHJlY2lwZUxpbmUuaWQpJ1xuICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci13aGl0ZSknPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ19fYmFkZ2VfX3RleHRcIiAoY2xpY2spPSd0b2dnbGVSZWNpcGUocmVjaXBlTGluZS5pZCknPnt7cmVjaXBlTGluZS50aXRsZSB8IGVsbGlwc2lzIDogNn19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J21pYW0tcmVjaXBlLXRhZ3NfX2NvbnRhaW5lcl9fdG9nZ2xlX19oaWRkZW4nOiAhcm93Q291bnQgfHwgd3JhcHBlZEl0ZW1zQ291bnQgPT09IDAgfVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fY29udGFpbmVyX190b2dnbGVcIiA+XG4gICAgICA8c3BhbiAgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX190b2dnbGVfX29wZW5cIiAoY2xpY2spPSd0b2dnbGVMaXN0KCknPlxuICAgICAgICB7eyBpc0xpc3RPcGVuID8gJyAgJyA6ICcrJyArd3JhcHBlZEl0ZW1zQ291bnR9fTwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX3RvZ2dsZV9fbGlnbmVcIj48L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX190b2dnbGVfX2Nsb3NlXCIgW25nU3R5bGVdPVwieydvcGFjaXR5JzogaXNMaXN0T3BlbiA/IDEgOiAwfVwiIChjbGljayk9J3RvZ2dsZUxpc3QoKSc+IFxuICAgICAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT0naWNvbi5DaGV2cm9uRG93bicgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjcmVkdWNlZD5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX3JlY2lwZXNcIiAqbmdJZj1cInJlY2lwZVByZXZpZXdMaW5lcz8ubGVuZ3RoID4gMFwiIChjbGljayk9XCJ0b2dnbGVNb2RhbCgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19yZWNpcGVzX19jb3VudFwiPnt7cmVjaXBlUHJldmlld0xpbmVzLmxlbmd0aH19PC9zcGFuPlxuICAgIDxzcGFuIGkxOG4+cmVwYXM8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxuZy1taWFtLW1vZGFsXG4gICAgKm5nSWY9XCJyZWNpcGVQcmV2aWV3TGluZXM/Lmxlbmd0aCA+IDBcIlxuICAgIFtkaXNwbGF5XT1cIm1vZGFsSXNPcGVuZWRcIlxuICAgIFtub0hlYWRlck1vZGVdPVwiZmFsc2VcIiBcbiAgICBbcmVjaXBlc0NvdW50XT1cInJlY2lwZVByZXZpZXdMaW5lcy5sZW5ndGhcIlxuICAgIChjbG9zZSk9XCJ0b2dnbGVNb2RhbCgpXCJcbiAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLXRhZ3NfX21vZGFsXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19jb250YWluZXJfX2xpc3RcIiA+XG4gICAgICA8ZGl2ICN0YWcgY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdzX19saXN0X19iYWRnZVwiICpuZ0Zvcj1cImxldCByZWNpcGVMaW5lIG9mIHJlY2lwZVByZXZpZXdMaW5lcywgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctbWlhbS1pY29uIGNsYXNzPVwibWlhbS1yZWNpcGUtdGFnc19fYmFkZ2VfX2ljb25cIiBbaWNvbk5hbWVdPSdpY29uLk1lYWwnIChjbGljayk9J3RvZ2dsZVJlY2lwZShyZWNpcGVMaW5lLmlkKSdcbiAgICAgICAgICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itd2hpdGUpJz48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS10YWdfX2JhZGdlX190ZXh0XCIgKGNsaWNrKT0ndG9nZ2xlUmVjaXBlKHJlY2lwZUxpbmUuaWQpJz57e3JlY2lwZUxpbmUudGl0bGV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLW1pYW0tbW9kYWw+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
@@ -18,14 +18,18 @@ export class ToasterStackComponent {
18
18
  this.cdr = cdr;
19
19
  this.toasterService = toasterService;
20
20
  this.toasters = [];
21
+ this.subscriptions = [];
21
22
  }
22
23
  ngOnInit() {
23
- this.toasterService.toaster$
24
+ this.subscriptions.push(this.toasterService.toaster$
24
25
  .subscribe(toaster => {
25
26
  this.toasters = [toaster, ...this.toasters];
26
27
  this.cdr.detectChanges();
27
28
  setTimeout(() => this.toasters.pop() && this.cdr.detectChanges(), 3000);
28
- });
29
+ }));
30
+ }
31
+ ngOnDestroy() {
32
+ this.subscriptions.forEach(sub => sub.unsubscribe());
29
33
  }
30
34
  close(index) {
31
35
  this.toasters = this.toasters.filter((v, i) => i !== index);
@@ -40,7 +44,7 @@ ToasterStackComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ToasterStackCompone
40
44
  } if (rf & 2) {
41
45
  i0.ɵɵadvance(1);
42
46
  i0.ɵɵproperty("ngForOf", ctx.toasters);
43
- } }, directives: [i2.NgForOf, i3.ToasterComponent], styles: [".miam-toaster-stack{position:fixed;right:10px;top:80px;z-index:var(--miam-z-index-toaster,6002)}@media (max-width:607px){.miam-toaster-stack{bottom:80px;position:fixed;top:unset}}"], encapsulation: 2, changeDetection: 0 });
47
+ } }, directives: [i2.NgForOf, i3.ToasterComponent], styles: [".miam-toaster-stack{position:fixed;right:10px;top:80px;z-index:var(--miam-z-index-toaster,6002)}@media (max-width:607px){.miam-toaster-stack{bottom:80px;left:10px;position:fixed;top:unset}}"], encapsulation: 2, changeDetection: 0 });
44
48
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(ToasterStackComponent, [{
45
49
  type: Component,
46
50
  args: [{
@@ -51,4 +55,4 @@ ToasterStackComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ToasterStackCompone
51
55
  changeDetection: ChangeDetectionStrategy.OnPush
52
56
  }]
53
57
  }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ToasterService }]; }, null); })();
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy90b2FzdGVyLXN0YWNrL3RvYXN0ZXItc3RhY2suY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy90b2FzdGVyLXN0YWNrL3RvYXN0ZXItc3RhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7SUNBL0QsMENBRXFDO0lBQXJDLHFPQUFrQjtJQUFDLGlCQUFrQjs7O0lBRHJDLG9DQUFtQjs7QURVckIsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFvQixHQUFzQixFQUFVLGNBQThCO1FBQTlELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRmxGLGFBQVEsR0FBYyxFQUFFLENBQUM7SUFFNEQsQ0FBQztJQUV0RixRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRO2FBQ3pCLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBYTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7MEZBakJVLHFCQUFxQjswREFBckIscUJBQXFCO1FDWmxDLDhCQUNFO1FBQUEsOEZBRW1CO1FBQ3JCLGlCQUFNOztRQUhhLGVBQTZDO1FBQTdDLHNDQUE2Qzs7a0REV25ELHFCQUFxQjtjQVJqQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsV0FBVyxFQUFFLGdDQUFnQztnQkFDN0MsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Z0JBQzdDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy90b2FzdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlciB9IGZyb20gJy4uLy4uL190eXBlcy90b2FzdGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS10b2FzdGVyLXN0YWNrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvYXN0ZXItc3RhY2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2FzdGVyLXN0YWNrLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgVG9hc3RlclN0YWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdG9hc3RlcnM6IFRvYXN0ZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdGVyU2VydmljZS50b2FzdGVyJFxuICAgICAgLnN1YnNjcmliZSh0b2FzdGVyID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVycyA9IFt0b2FzdGVyLCAuLi50aGlzLnRvYXN0ZXJzXTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9hc3RlcnMucG9wKCkgJiYgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpLCAzMDAwKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY2xvc2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudG9hc3RlcnMgPSB0aGlzLnRvYXN0ZXJzLmZpbHRlcigodiwgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz0gbWlhbS10b2FzdGVyLXN0YWNrPlxuICA8bmctbWlhbS10b2FzdGVyICpuZ0Zvcj1cImxldCB0b2FzdGVyIG9mIHRvYXN0ZXJzOyBsZXQgaT1pbmRleFwiXG4gIFt0b2FzdGVyXT1cInRvYXN0ZXJcIlxuICAoY2xvc2UpPVwiY2xvc2UoaSlcIj48L25nLW1pYW0tdG9hc3Rlcj5cbjwvZGl2PiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy90b2FzdGVyLXN0YWNrL3RvYXN0ZXItc3RhY2suY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy90b2FzdGVyLXN0YWNrL3RvYXN0ZXItc3RhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7O0lDRC9ELDBDQUVxQztJQUFyQyxxT0FBa0I7SUFBQyxpQkFBa0I7OztJQURyQyxvQ0FBbUI7O0FEV3JCLE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsWUFBb0IsR0FBc0IsRUFBVSxjQUE4QjtRQUE5RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUhsRixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUVrRCxDQUFDO0lBRXRGLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRO2FBQ3pCLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsS0FBYTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7MEZBeEJVLHFCQUFxQjswREFBckIscUJBQXFCO1FDYmxDLDhCQUNFO1FBQUEsOEZBRW1CO1FBQ3JCLGlCQUFNOztRQUhhLGVBQTZDO1FBQTdDLHNDQUE2Qzs7a0REWW5ELHFCQUFxQjtjQVJqQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsV0FBVyxFQUFFLGdDQUFnQztnQkFDN0MsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Z0JBQzdDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tICcuLi8uLi9fdHlwZXMvdG9hc3Rlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tdG9hc3Rlci1zdGFjaycsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2FzdGVyLXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9hc3Rlci1zdGFjay5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIFRvYXN0ZXJTdGFja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgdG9hc3RlcnM6IFRvYXN0ZXJbXSA9IFtdO1xuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnRvYXN0ZXIkXG4gICAgICAgIC5zdWJzY3JpYmUodG9hc3RlciA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVycyA9IFt0b2FzdGVyLCAuLi50aGlzLnRvYXN0ZXJzXTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRvYXN0ZXJzLnBvcCgpICYmIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSwgMzAwMCk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBjbG9zZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdGVycyA9IHRoaXMudG9hc3RlcnMuZmlsdGVyKCh2LCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPSBtaWFtLXRvYXN0ZXItc3RhY2s+XG4gIDxuZy1taWFtLXRvYXN0ZXIgKm5nRm9yPVwibGV0IHRvYXN0ZXIgb2YgdG9hc3RlcnM7IGxldCBpPWluZGV4XCJcbiAgW3RvYXN0ZXJdPVwidG9hc3RlclwiXG4gIChjbG9zZSk9XCJjbG9zZShpKVwiPjwvbmctbWlhbS10b2FzdGVyPlxuPC9kaXY+Il19