@ecodev/natural 61.0.0 → 61.0.2

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 (138) hide show
  1. package/esm2022/lib/classes/abstract-detail.mjs +36 -33
  2. package/esm2022/lib/classes/abstract-editable-list.mjs +8 -6
  3. package/esm2022/lib/classes/abstract-list.mjs +74 -55
  4. package/esm2022/lib/classes/abstract-navigable-list.mjs +9 -9
  5. package/esm2022/lib/classes/cumulative-changes.mjs +3 -5
  6. package/esm2022/lib/classes/data-source.mjs +3 -2
  7. package/esm2022/lib/classes/query-variable-manager.mjs +3 -3
  8. package/esm2022/lib/directives/http-prefix.directive.mjs +4 -6
  9. package/esm2022/lib/modules/alert/alert.service.mjs +9 -11
  10. package/esm2022/lib/modules/alert/confirm.component.mjs +6 -11
  11. package/esm2022/lib/modules/avatar/component/avatar.component.mjs +25 -23
  12. package/esm2022/lib/modules/avatar/service/avatar.service.mjs +22 -24
  13. package/esm2022/lib/modules/avatar/sources/source.mjs +2 -1
  14. package/esm2022/lib/modules/columns-picker/columns-picker.component.mjs +26 -28
  15. package/esm2022/lib/modules/columns-picker/public-api.mjs +1 -1
  16. package/esm2022/lib/modules/common/directives/background-density.directive.mjs +6 -8
  17. package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +18 -19
  18. package/esm2022/lib/modules/common/directives/src-density.directive.mjs +6 -8
  19. package/esm2022/lib/modules/common/pipes/capitalize.pipe.mjs +3 -3
  20. package/esm2022/lib/modules/common/pipes/ellipsis.pipe.mjs +3 -3
  21. package/esm2022/lib/modules/common/pipes/enum.pipe.mjs +7 -9
  22. package/esm2022/lib/modules/common/pipes/time-ago.pipe.mjs +4 -3
  23. package/esm2022/lib/modules/common/public-api.mjs +2 -2
  24. package/esm2022/lib/modules/common/services/memory-storage.mjs +4 -6
  25. package/esm2022/lib/modules/common/services/seo.service.mjs +18 -26
  26. package/esm2022/lib/modules/detail-header/detail-header.component.mjs +38 -33
  27. package/esm2022/lib/modules/dialog-trigger/dialog-trigger.component.mjs +13 -11
  28. package/esm2022/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +13 -12
  29. package/esm2022/lib/modules/dropdown-components/public-api.mjs +3 -3
  30. package/esm2022/lib/modules/dropdown-components/type-boolean/type-boolean.component.mjs +10 -13
  31. package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +29 -33
  32. package/esm2022/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +27 -32
  33. package/esm2022/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +3 -3
  34. package/esm2022/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +3 -3
  35. package/esm2022/lib/modules/dropdown-components/type-number/type-number.component.mjs +29 -30
  36. package/esm2022/lib/modules/dropdown-components/type-options/type-options.component.mjs +17 -15
  37. package/esm2022/lib/modules/dropdown-components/type-select/type-select.component.mjs +25 -25
  38. package/esm2022/lib/modules/dropdown-components/type-text/type-text.component.mjs +15 -17
  39. package/esm2022/lib/modules/file/abstract-file.mjs +51 -47
  40. package/esm2022/lib/modules/file/component/file.component.mjs +51 -41
  41. package/esm2022/lib/modules/file/file-drop.directive.mjs +10 -13
  42. package/esm2022/lib/modules/file/file-select.directive.mjs +9 -12
  43. package/esm2022/lib/modules/file/file.service.mjs +15 -20
  44. package/esm2022/lib/modules/file/public-api.mjs +1 -1
  45. package/esm2022/lib/modules/fixed-button/fixed-button.component.mjs +7 -8
  46. package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +15 -12
  47. package/esm2022/lib/modules/hierarchic-selector/classes/flat-node.mjs +8 -2
  48. package/esm2022/lib/modules/hierarchic-selector/classes/model-node.mjs +4 -2
  49. package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +71 -55
  50. package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +18 -20
  51. package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +17 -11
  52. package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +7 -9
  53. package/esm2022/lib/modules/icon/icon.directive.mjs +15 -23
  54. package/esm2022/lib/modules/logger/error-handler.mjs +11 -25
  55. package/esm2022/lib/modules/logger/public-api.mjs +2 -2
  56. package/esm2022/lib/modules/matomo/matomo.service.mjs +15 -22
  57. package/esm2022/lib/modules/panels/abstract-panel.mjs +23 -19
  58. package/esm2022/lib/modules/panels/panels.component.mjs +10 -9
  59. package/esm2022/lib/modules/panels/panels.service.mjs +56 -52
  60. package/esm2022/lib/modules/relations/relations.component.mjs +74 -45
  61. package/esm2022/lib/modules/search/dropdown-container/dropdown-container.component.mjs +21 -22
  62. package/esm2022/lib/modules/search/dropdown-container/dropdown-ref.mjs +4 -2
  63. package/esm2022/lib/modules/search/dropdown-container/dropdown.service.mjs +8 -11
  64. package/esm2022/lib/modules/search/facet-selector/facet-selector.component.mjs +13 -18
  65. package/esm2022/lib/modules/search/group/group.component.mjs +12 -11
  66. package/esm2022/lib/modules/search/input/input.component.mjs +86 -73
  67. package/esm2022/lib/modules/search/public-api.mjs +1 -1
  68. package/esm2022/lib/modules/search/search/search.component.mjs +37 -40
  69. package/esm2022/lib/modules/select/abstract-select.component.mjs +66 -39
  70. package/esm2022/lib/modules/select/select/select.component.mjs +51 -48
  71. package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +32 -22
  72. package/esm2022/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +39 -34
  73. package/esm2022/lib/modules/sidenav/sidenav/sidenav.component.mjs +3 -3
  74. package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +34 -29
  75. package/esm2022/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +3 -3
  76. package/esm2022/lib/modules/sidenav/sidenav-stack.service.mjs +13 -15
  77. package/esm2022/lib/modules/sidenav/sidenav.service.mjs +47 -54
  78. package/esm2022/lib/modules/stamp/stamp.component.mjs +4 -3
  79. package/esm2022/lib/modules/table-button/table-button.component.mjs +16 -13
  80. package/esm2022/lib/services/abstract-model.service.mjs +17 -7
  81. package/esm2022/lib/services/debounce.service.mjs +7 -9
  82. package/esm2022/lib/services/enum.service.mjs +7 -10
  83. package/esm2022/lib/services/link-mutation.service.mjs +11 -10
  84. package/esm2022/lib/services/persistence.service.mjs +9 -21
  85. package/esm2022/lib/services/swiss-parsing-date-adapter.service.mjs +3 -3
  86. package/esm2022/public-api.mjs +2 -2
  87. package/fesm2022/ecodev-natural.mjs +1357 -1270
  88. package/fesm2022/ecodev-natural.mjs.map +1 -1
  89. package/lib/modules/alert/alert.service.d.ts +1 -3
  90. package/lib/modules/alert/confirm.component.d.ts +1 -2
  91. package/lib/modules/avatar/component/avatar.component.d.ts +0 -2
  92. package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -3
  93. package/lib/modules/columns-picker/public-api.d.ts +1 -1
  94. package/lib/modules/common/directives/background-density.directive.d.ts +0 -2
  95. package/lib/modules/common/directives/linkable-tab.directive.d.ts +2 -4
  96. package/lib/modules/common/directives/src-density.directive.d.ts +0 -2
  97. package/lib/modules/common/pipes/enum.pipe.d.ts +0 -2
  98. package/lib/modules/common/public-api.d.ts +2 -1
  99. package/lib/modules/common/services/seo.service.d.ts +2 -3
  100. package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +3 -3
  101. package/lib/modules/dropdown-components/public-api.d.ts +9 -9
  102. package/lib/modules/dropdown-components/type-boolean/type-boolean.component.d.ts +1 -3
  103. package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -3
  104. package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +2 -3
  105. package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +1 -2
  106. package/lib/modules/dropdown-components/type-options/type-options.component.d.ts +3 -3
  107. package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +1 -2
  108. package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +1 -2
  109. package/lib/modules/file/component/file.component.d.ts +0 -3
  110. package/lib/modules/file/file.service.d.ts +0 -1
  111. package/lib/modules/file/public-api.d.ts +1 -1
  112. package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +1 -2
  113. package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +2 -3
  114. package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.d.ts +0 -2
  115. package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +1 -2
  116. package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +1 -2
  117. package/lib/modules/icon/icon.directive.d.ts +3 -5
  118. package/lib/modules/logger/error-handler.d.ts +3 -4
  119. package/lib/modules/logger/public-api.d.ts +2 -1
  120. package/lib/modules/matomo/matomo.service.d.ts +2 -5
  121. package/lib/modules/panels/panels.component.d.ts +1 -3
  122. package/lib/modules/panels/panels.service.d.ts +2 -6
  123. package/lib/modules/relations/relations.component.d.ts +3 -5
  124. package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +3 -4
  125. package/lib/modules/search/dropdown-container/dropdown.service.d.ts +1 -3
  126. package/lib/modules/search/facet-selector/facet-selector.component.d.ts +1 -2
  127. package/lib/modules/search/input/input.component.d.ts +1 -3
  128. package/lib/modules/search/public-api.d.ts +5 -5
  129. package/lib/modules/search/search/search.component.d.ts +0 -2
  130. package/lib/modules/select/select-enum/select-enum.component.d.ts +4 -4
  131. package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +4 -4
  132. package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +0 -1
  133. package/lib/modules/sidenav/sidenav.service.d.ts +2 -7
  134. package/lib/services/enum.service.d.ts +0 -2
  135. package/lib/services/link-mutation.service.d.ts +0 -2
  136. package/lib/services/persistence.service.d.ts +2 -4
  137. package/package.json +1 -1
  138. package/public-api.d.ts +3 -2
@@ -1,5 +1,6 @@
1
- import { Component, Input, Optional, Self } from '@angular/core';
2
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
1
+ import { Component, inject, Input } from '@angular/core';
2
+ import { FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';
3
+ import { NaturalHierarchicSelectorDialogService, } from '../../hierarchic-selector/public-api';
3
4
  import { AbstractSelect } from '../abstract-select.component';
4
5
  import { RouterLink } from '@angular/router';
5
6
  import { MatTooltipModule } from '@angular/material/tooltip';
@@ -9,13 +10,12 @@ import { MatIconModule } from '@angular/material/icon';
9
10
  import { MatInputModule } from '@angular/material/input';
10
11
  import { MatFormFieldModule } from '@angular/material/form-field';
11
12
  import * as i0 from "@angular/core";
12
- import * as i1 from "../../hierarchic-selector/public-api";
13
- import * as i2 from "@angular/forms";
14
- import * as i3 from "@angular/material/form-field";
15
- import * as i4 from "@angular/material/input";
16
- import * as i5 from "@angular/material/icon";
17
- import * as i6 from "@angular/material/button";
18
- import * as i7 from "@angular/material/tooltip";
13
+ import * as i1 from "@angular/material/form-field";
14
+ import * as i2 from "@angular/material/input";
15
+ import * as i3 from "@angular/forms";
16
+ import * as i4 from "@angular/material/icon";
17
+ import * as i5 from "@angular/material/button";
18
+ import * as i6 from "@angular/material/tooltip";
19
19
  function defaultDisplayFn(item) {
20
20
  if (!item) {
21
21
  return '';
@@ -42,24 +42,33 @@ function defaultDisplayFn(item) {
42
42
  * ```
43
43
  */
44
44
  export class NaturalSelectHierarchicComponent extends AbstractSelect {
45
- constructor(hierarchicSelectorDialogService, ngControl) {
45
+ hierarchicSelectorDialogService = inject(NaturalHierarchicSelectorDialogService);
46
+ /**
47
+ * If provided cause a new select button to appear
48
+ */
49
+ selectLabel;
50
+ /**
51
+ * Configuration for hierarchic relations
52
+ *
53
+ * It should be an array with at least one element with `selectableAtKey` configured, otherwise the selector will never open.
54
+ */
55
+ config = null;
56
+ /**
57
+ * Filters formatted for hierarchic selector
58
+ */
59
+ filters;
60
+ /**
61
+ * The selected value as an object. The internal value is `internalCtrl.value`, and that is a string.
62
+ */
63
+ value = null;
64
+ /**
65
+ * On Firefox, the combination of <input (focus)> event and dialog opening cause some strange bug where focus event is called multiple
66
+ * times This prevents it.
67
+ */
68
+ lockOpenDialog = false;
69
+ constructor() {
70
+ const ngControl = inject(NgControl, { optional: true, self: true });
46
71
  super(ngControl);
47
- this.hierarchicSelectorDialogService = hierarchicSelectorDialogService;
48
- /**
49
- * Configuration for hierarchic relations
50
- *
51
- * It should be an array with at least one element with `selectableAtKey` configured, otherwise the selector will never open.
52
- */
53
- this.config = null;
54
- /**
55
- * The selected value as an object. The internal value is `internalCtrl.value`, and that is a string.
56
- */
57
- this.value = null;
58
- /**
59
- * On Firefox, the combination of <input (focus)> event and dialog opening cause some strange bug where focus event is called multiple
60
- * times This prevents it.
61
- */
62
- this.lockOpenDialog = false;
63
72
  }
64
73
  /**
65
74
  * Very important to return something, above all if [select]='displayedValue' attribute value is used
@@ -124,8 +133,8 @@ export class NaturalSelectHierarchicComponent extends AbstractSelect {
124
133
  getSelectKey() {
125
134
  return this.config?.find(c => !!c.selectableAtKey)?.selectableAtKey;
126
135
  }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectHierarchicComponent, deps: [{ token: i1.NaturalHierarchicSelectorDialogService }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectHierarchicComponent, isStandalone: true, selector: "natural-select-hierarchic", inputs: { selectLabel: "selectLabel", config: "config", filters: "filters" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n />\n\n <!-- Meta data -->\n @if (showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button\n (click)=\"clear(); $event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showSelectButton() || showClearButton()) {\n <div class=\"external-buttons\">\n @if (showSelectButton()) {\n <button (click)=\"openDialog()\" color=\"primary\" mat-flat-button>{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
136
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectHierarchicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
137
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectHierarchicComponent, isStandalone: true, selector: "natural-select-hierarchic", inputs: { selectLabel: "selectLabel", config: "config", filters: "filters" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n />\n\n <!-- Meta data -->\n @if (showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button\n (click)=\"clear(); $event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showSelectButton() || showClearButton()) {\n <div class=\"external-buttons\">\n @if (showSelectButton()) {\n <button (click)=\"openDialog()\" color=\"primary\" mat-flat-button>{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
129
138
  }
130
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectHierarchicComponent, decorators: [{
131
140
  type: Component,
@@ -140,15 +149,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
140
149
  MatTooltipModule,
141
150
  RouterLink,
142
151
  ], template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n />\n\n <!-- Meta data -->\n @if (showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button\n (click)=\"clear(); $event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showSelectButton() || showClearButton()) {\n <div class=\"external-buttons\">\n @if (showSelectButton()) {\n <button (click)=\"openDialog()\" color=\"primary\" mat-flat-button>{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}\n"] }]
143
- }], ctorParameters: () => [{ type: i1.NaturalHierarchicSelectorDialogService }, { type: i2.NgControl, decorators: [{
144
- type: Optional
145
- }, {
146
- type: Self
147
- }] }], propDecorators: { selectLabel: [{
152
+ }], ctorParameters: () => [], propDecorators: { selectLabel: [{
148
153
  type: Input
149
154
  }], config: [{
150
155
  type: Input
151
156
  }], filters: [{
152
157
  type: Input
153
158
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWhpZXJhcmNoaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VsZWN0L3NlbGVjdC1oaWVyYXJjaGljL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdC9zZWxlY3QtaGllcmFyY2hpYy9zZWxlY3QtaGllcmFyY2hpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsSUFBSSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBdUIsV0FBVyxFQUFhLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFVakcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7O0FBRWhFLFNBQVMsZ0JBQWdCLENBQUMsSUFBb0I7SUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUM7SUFDZCxD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dXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTmdDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdERpYWxvZ0NvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TGl0ZXJhbH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWZpbHRlcnMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1xuICAgIEhpZXJhcmNoaWNEaWFsb2dDb25maWcsXG4gICAgTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uLFxuICAgIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlLFxuICAgIE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uLFxufSBmcm9tICcuLi8uLi9oaWVyYXJjaGljLXNlbGVjdG9yL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtBYnN0cmFjdFNlbGVjdH0gZnJvbSAnLi4vYWJzdHJhY3Qtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1JvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbmZ1bmN0aW9uIGRlZmF1bHREaXNwbGF5Rm4oaXRlbTogTGl0ZXJhbCB8IG51bGwpOiBzdHJpbmcge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0uZnVsbE5hbWUgfHwgaXRlbS5uYW1lIHx8IGl0ZW0uaWJhbiB8fCBpdGVtLmlkIHx8IGl0ZW07XG59XG5cbi8qKlxuICogRGVmYXVsdCB1c2FnZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bmF0dXJhbC1zZWxlY3RcbiAqICAgICBbY29uZmlnXT1cIm15Q29uZmlnXCJcbiAqICAgICBbKG5nTW9kZWwpXT1cImFtYXppbmdNb2RlbFwiXG4gKiAgICAgKG5nTW9kZWxDaGFuZ2UpPWFtYXppbmdDaGFuZ2VGbigkZXZlbnQpXG4gKiAvPlxuICogYGBgXG4gKlxuICogYFsobmdNb2RlbCldYCBhbmQgYChuZ01vZGVsQ2hhbmdlKWAgYXJlIG9wdGlvbmFsLlxuICpcbiAqIFBsYWNlaG9sZGVyIDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bmF0dXJhbC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJhbWF6aW5nIHBsYWNlaG9sZGVyXCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtc2VsZWN0LWhpZXJhcmNoaWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtaGllcmFyY2hpYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE5hdHVyYWxJY29uRGlyZWN0aXZlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIFJvdXRlckxpbmssXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNlbGVjdEhpZXJhcmNoaWNDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0U2VsZWN0PExpdGVyYWwsIHN0cmluZz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgICAvKipcbiAgICAgKiBJZiBwcm92aWRlZCBjYXVzZSBhIG5ldyBzZWxlY3QgYnV0dG9uIHRvIGFwcGVhclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RMYWJlbD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIGhpZXJhcmNoaWMgcmVsYXRpb25zXG4gICAgICpcbiAgICAgKiBJdCBzaG91bGQgYmUgYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCB3aXRoIGBzZWxlY3RhYmxlQXRLZXlgIGNvbmZpZ3VyZWQsIG90aGVyd2lzZSB0aGUgc2VsZWN0b3Igd2lsbCBuZXZlciBvcGVuLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IE5hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvbltdIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIGZvcm1hdHRlZCBmb3IgaGllcmFyY2hpYyBzZWxlY3RvclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXJzPzogSGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbGVjdGVkIHZhbHVlIGFzIGFuIG9iamVjdC4gVGhlIGludGVybmFsIHZhbHVlIGlzIGBpbnRlcm5hbEN0cmwudmFsdWVgLCBhbmQgdGhhdCBpcyBhIHN0cmluZy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlOiBMaXRlcmFsIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBPbiBGaXJlZm94LCB0aGUgY29tYmluYXRpb24gb2YgPGlucHV0IChmb2N1cyk+IGV2ZW50IGFuZCBkaWFsb2cgb3BlbmluZyBjYXVzZSBzb21lIHN0cmFuZ2UgYnVnIHdoZXJlIGZvY3VzIGV2ZW50IGlzIGNhbGxlZCBtdWx0aXBsZVxuICAgICAqIHRpbWVzIFRoaXMgcHJldmVudHMgaXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2NrT3BlbkRpYWxvZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2U6IE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIobmdDb250cm9sKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJ5IGltcG9ydGFudCB0byByZXR1cm4gc29tZXRoaW5nLCBhYm92ZSBhbGwgaWYgW3NlbGVjdF09J2Rpc3BsYXllZFZhbHVlJyBhdHRyaWJ1dGUgdmFsdWUgaXMgdXNlZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXNwbGF5Rm4oKTogKGl0ZW06IExpdGVyYWwgfCBudWxsKSA9PiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5V2l0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVdpdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmYXVsdERpc3BsYXlGbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSBwYXJlbnQgYmVjYXVzZSBvdXIgaW50ZXJuYWxDdHJsIHN0b3JlIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIGFzIHN0cmluZyBpbnN0ZWFkIG9mIHJhdyBMaXRlcmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IExpdGVyYWwgfCBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZSBhcyBMaXRlcmFsO1xuICAgICAgICB0aGlzLmludGVybmFsQ3RybC5zZXRWYWx1ZSh0aGlzLmdldERpc3BsYXlGbigpKHRoaXMudmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxDdHJsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2NrT3BlbkRpYWxvZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0QXRLZXkgPSB0aGlzLmdldFNlbGVjdEtleSgpO1xuICAgICAgICBpZiAoIXNlbGVjdEF0S2V5IHx8ICF0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2NrT3BlbkRpYWxvZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQ6IE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxDdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFtzZWxlY3RBdEtleV0gPSBbdGhpcy52YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoaWVyYXJjaGljQ29uZmlnOiBIaWVyYXJjaGljRGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgaGllcmFyY2hpY0NvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICAgICAgICBoaWVyYXJjaGljU2VsZWN0aW9uOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIGhpZXJhcmNoaWNGaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nRm9jdXM6IE1hdERpYWxvZ0NvbmZpZyA9IHtyZXN0b3JlRm9jdXM6IGZhbHNlfTtcblxuICAgICAgICB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2VcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcsIGRpYWxvZ0ZvY3VzKVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2tPcGVuRGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdD8uaGllcmFyY2hpY1NlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgb25seSBzZWxlY3Rpb24gYW1vbmdzdCBhbGwgcG9zc2libGUga2V5c1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlXaXRoU2VsZWN0aW9uID0gT2JqZWN0LmtleXMoc2VsZWN0aW9uKS5maW5kKGtleSA9PiBzZWxlY3Rpb25ba2V5XVswXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpbmdsZVNlbGVjdGlvbiA9IGtleVdpdGhTZWxlY3Rpb24gPyBzZWxlY3Rpb25ba2V5V2l0aFNlbGVjdGlvbl1bMF0gOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShzaW5nbGVTZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlKHNpbmdsZVNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dTZWxlY3RCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmludGVybmFsQ3RybD8uZW5hYmxlZCAmJiB0aGlzLnNlbGVjdExhYmVsICYmIHRoaXMuZ2V0U2VsZWN0S2V5KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0S2V5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmluZChjID0+ICEhYy5zZWxlY3RhYmxlQXRLZXkpPy5zZWxlY3RhYmxlQXRLZXk7XG4gICAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cblxuICAgIDwhLS0gSW5wdXQgZm9yIGhpZXJhcmNoaWNhbCBzZWxlY3RvciAtLT5cbiAgICA8aW5wdXRcbiAgICAgICAgKGJsdXIpPVwiYmx1ci5lbWl0KClcIlxuICAgICAgICAoZm9jdXMpPVwib3BlbkRpYWxvZygpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImludGVybmFsQ3RybFwiXG4gICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJtYXRjaGVyXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlJlY2hlcmNoZSBldCBzw6lsZWN0aW9uXCJcbiAgICAgICAgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgIG1hdElucHV0XG4gICAgLz5cblxuICAgIDwhLS0gTWV0YSBkYXRhIC0tPlxuICAgIEBpZiAoc2hvd0ljb24pIHtcbiAgICAgICAgPG1hdC1pY29uIFtuYXR1cmFsSWNvbl09XCJpY29uXCIgbWF0SWNvblByZWZpeCAvPlxuICAgIH1cblxuICAgIEBpZiAoaGludCkge1xuICAgICAgICA8bWF0LWhpbnQ+e3sgaGludCB9fTwvbWF0LWhpbnQ+XG4gICAgfVxuXG4gICAgPCEtLSBDbGVhciBidXR0b24gLS0+XG4gICAgPGRpdiBtYXRJY29uU3VmZml4PlxuICAgICAgICBAaWYgKGludGVybmFsQ3RybC52YWx1ZSAmJiBpbnRlcm5hbEN0cmwuZW5hYmxlZCAmJiAhY2xlYXJMYWJlbCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEw6lzw6lsZWN0aW9ubmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGludGVybmFsQ3RybC52YWx1ZSAmJiBuYXZpZ2F0ZVRvKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibmF2aWdhdGVUb1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hdmlndWVyIHZlcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBuYXR1cmFsSWNvbj1cIm9wZW5faW5fYnJvd3NlclwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChoYXNSZXF1aXJlZEVycm9yKCkpIHtcbiAgICAgICAgPG1hdC1lcnJvciBpMThuPkNlIGNoYW1wIGVzdCByZXF1aXM8L21hdC1lcnJvcj5cbiAgICB9XG48L21hdC1mb3JtLWZpZWxkPlxuXG48IS0tICAgIEFkZGl0aW9uYWwgKHVuKXNlbGVjdC8odW4pbGluayBidXR0b25zIGZvciBtb3JlIHZpc3VhbCBjb2hlc2lvbiB3aXRoIG5hdHVyYWwtcmVsYXRpb25zIC0tPjwhLS0gW2NsZWFyTGFiZWxdIGFuZC9vciBbc2VsZWN0TGFiZWxdIGhhcyB0byBiZSBnaXZlbiBhcyBhdHRyaWJ1dGUgaW5wdXQgLS0+XG5AaWYgKHNob3dTZWxlY3RCdXR0b24oKSB8fCBzaG93Q2xlYXJCdXR0b24oKSkge1xuICAgIDxkaXYgY2xhc3M9XCJleHRlcm5hbC1idXR0b25zXCI+XG4gICAgICAgIEBpZiAoc2hvd1NlbGVjdEJ1dHRvbigpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuRGlhbG9nKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24+e3sgc2VsZWN0TGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNob3dDbGVhckJ1dHRvbigpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgY29sb3I9XCJ3YXJuXCIgbWF0LWJ1dHRvbj57eyBjbGVhckxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWhpZXJhcmNoaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VsZWN0L3NlbGVjdC1oaWVyYXJjaGljL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdC9zZWxlY3QtaGllcmFyY2hpYy9zZWxlY3QtaGllcmFyY2hpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUF1QixXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJakcsT0FBTyxFQUdILHNDQUFzQyxHQUV6QyxNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7O0FBRWhFLFNBQVMsZ0JBQWdCLENBQUMsSUFBb0I7SUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztBQUN0RSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQWtCSCxNQUFNLE9BQU8sZ0NBQ1QsU0FBUSxjQUErQjtJQUd0QiwrQkFBK0IsR0FBRyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUVsRzs7T0FFRztJQUNhLFdBQVcsQ0FBVTtJQUVyQzs7OztPQUlHO0lBQ2EsTUFBTSxHQUE0QyxJQUFJLENBQUM7SUFFdkU7O09BRUc7SUFDYSxPQUFPLENBQWtDO0lBRXpEOztPQUVHO0lBQ0ssS0FBSyxHQUFtQixJQUFJLENBQUM7SUFFckM7OztPQUdHO0lBQ0ssY0FBYyxHQUFHLEtBQUssQ0FBQztJQUUvQjtRQUNJLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRWxFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVCLENBQUM7UUFFRCxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNhLFVBQVUsQ0FBQyxLQUE4QjtRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQWdCLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQTRCLEVBQUUsQ0FBQztRQUU3QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUEyQjtZQUM3QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUM3QixtQkFBbUIsRUFBRSxRQUFRO1lBQzdCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPO1lBQy9CLFFBQVEsRUFBRSxLQUFLO1NBQ2xCLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBb0IsRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLCtCQUErQjthQUMvQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO2FBQ25DLFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxDQUFDO2dCQUM5QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7Z0JBQzdDLG9EQUFvRDtnQkFDcEQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvRSxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFFakYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sZ0JBQWdCO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sWUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxlQUFlLENBQUM7SUFDeEUsQ0FBQzt1R0FySFEsZ0NBQWdDOzJGQUFoQyxnQ0FBZ0MsMExDaEU3QywyaUVBZ0VBLHFRRFhRLGtCQUFrQixpdUJBQ2xCLGNBQWMsMFdBQ2QsV0FBVyxzWkFDWCxtQkFBbUIsaU5BQ25CLGFBQWEsb0xBQ2Isb0JBQW9CLGtHQUNwQixlQUFlLHdVQUNmLGdCQUFnQiw2VEFDaEIsVUFBVTs7MkZBR0wsZ0NBQWdDO2tCQWpCNUMsU0FBUzsrQkFDSSwyQkFBMkIsY0FHekIsSUFBSSxXQUNQO3dCQUNMLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixVQUFVO3FCQUNiO3dEQVdlLFdBQVc7c0JBQTFCLEtBQUs7Z0JBT1UsTUFBTTtzQkFBckIsS0FBSztnQkFLVSxPQUFPO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTmdDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdERpYWxvZ0NvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TGl0ZXJhbH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWZpbHRlcnMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1xuICAgIEhpZXJhcmNoaWNEaWFsb2dDb25maWcsXG4gICAgTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uLFxuICAgIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlLFxuICAgIE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uLFxufSBmcm9tICcuLi8uLi9oaWVyYXJjaGljLXNlbGVjdG9yL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtBYnN0cmFjdFNlbGVjdH0gZnJvbSAnLi4vYWJzdHJhY3Qtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1JvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbmZ1bmN0aW9uIGRlZmF1bHREaXNwbGF5Rm4oaXRlbTogTGl0ZXJhbCB8IG51bGwpOiBzdHJpbmcge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0uZnVsbE5hbWUgfHwgaXRlbS5uYW1lIHx8IGl0ZW0uaWJhbiB8fCBpdGVtLmlkIHx8IGl0ZW07XG59XG5cbi8qKlxuICogRGVmYXVsdCB1c2FnZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bmF0dXJhbC1zZWxlY3RcbiAqICAgICBbY29uZmlnXT1cIm15Q29uZmlnXCJcbiAqICAgICBbKG5nTW9kZWwpXT1cImFtYXppbmdNb2RlbFwiXG4gKiAgICAgKG5nTW9kZWxDaGFuZ2UpPWFtYXppbmdDaGFuZ2VGbigkZXZlbnQpXG4gKiAvPlxuICogYGBgXG4gKlxuICogYFsobmdNb2RlbCldYCBhbmQgYChuZ01vZGVsQ2hhbmdlKWAgYXJlIG9wdGlvbmFsLlxuICpcbiAqIFBsYWNlaG9sZGVyIDpcbiAqXG4gKiBgYGBodG1sXG4gKiA8bmF0dXJhbC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJhbWF6aW5nIHBsYWNlaG9sZGVyXCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtc2VsZWN0LWhpZXJhcmNoaWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtaGllcmFyY2hpYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC5zY3NzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE5hdHVyYWxJY29uRGlyZWN0aXZlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIFJvdXRlckxpbmssXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNlbGVjdEhpZXJhcmNoaWNDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0U2VsZWN0PExpdGVyYWwsIHN0cmluZz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogSWYgcHJvdmlkZWQgY2F1c2UgYSBuZXcgc2VsZWN0IGJ1dHRvbiB0byBhcHBlYXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0TGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBoaWVyYXJjaGljIHJlbGF0aW9uc1xuICAgICAqXG4gICAgICogSXQgc2hvdWxkIGJlIGFuIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQgd2l0aCBgc2VsZWN0YWJsZUF0S2V5YCBjb25maWd1cmVkLCBvdGhlcndpc2UgdGhlIHNlbGVjdG9yIHdpbGwgbmV2ZXIgb3Blbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyBmb3JtYXR0ZWQgZm9yIGhpZXJhcmNoaWMgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsdGVycz86IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzZWxlY3RlZCB2YWx1ZSBhcyBhbiBvYmplY3QuIFRoZSBpbnRlcm5hbCB2YWx1ZSBpcyBgaW50ZXJuYWxDdHJsLnZhbHVlYCwgYW5kIHRoYXQgaXMgYSBzdHJpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWx1ZTogTGl0ZXJhbCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogT24gRmlyZWZveCwgdGhlIGNvbWJpbmF0aW9uIG9mIDxpbnB1dCAoZm9jdXMpPiBldmVudCBhbmQgZGlhbG9nIG9wZW5pbmcgY2F1c2Ugc29tZSBzdHJhbmdlIGJ1ZyB3aGVyZSBmb2N1cyBldmVudCBpcyBjYWxsZWQgbXVsdGlwbGVcbiAgICAgKiB0aW1lcyBUaGlzIHByZXZlbnRzIGl0LlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9ja09wZW5EaWFsb2cgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge29wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlfSk7XG5cbiAgICAgICAgc3VwZXIobmdDb250cm9sKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJ5IGltcG9ydGFudCB0byByZXR1cm4gc29tZXRoaW5nLCBhYm92ZSBhbGwgaWYgW3NlbGVjdF09J2Rpc3BsYXllZFZhbHVlJyBhdHRyaWJ1dGUgdmFsdWUgaXMgdXNlZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXNwbGF5Rm4oKTogKGl0ZW06IExpdGVyYWwgfCBudWxsKSA9PiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5V2l0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVdpdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmYXVsdERpc3BsYXlGbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSBwYXJlbnQgYmVjYXVzZSBvdXIgaW50ZXJuYWxDdHJsIHN0b3JlIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIGFzIHN0cmluZyBpbnN0ZWFkIG9mIHJhdyBMaXRlcmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IExpdGVyYWwgfCBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZSBhcyBMaXRlcmFsO1xuICAgICAgICB0aGlzLmludGVybmFsQ3RybC5zZXRWYWx1ZSh0aGlzLmdldERpc3BsYXlGbigpKHRoaXMudmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxDdHJsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2NrT3BlbkRpYWxvZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0QXRLZXkgPSB0aGlzLmdldFNlbGVjdEtleSgpO1xuICAgICAgICBpZiAoIXNlbGVjdEF0S2V5IHx8ICF0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2NrT3BlbkRpYWxvZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQ6IE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxDdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFtzZWxlY3RBdEtleV0gPSBbdGhpcy52YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoaWVyYXJjaGljQ29uZmlnOiBIaWVyYXJjaGljRGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgaGllcmFyY2hpY0NvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICAgICAgICBoaWVyYXJjaGljU2VsZWN0aW9uOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIGhpZXJhcmNoaWNGaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nRm9jdXM6IE1hdERpYWxvZ0NvbmZpZyA9IHtyZXN0b3JlRm9jdXM6IGZhbHNlfTtcblxuICAgICAgICB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2VcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcsIGRpYWxvZ0ZvY3VzKVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2tPcGVuRGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdD8uaGllcmFyY2hpY1NlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgb25seSBzZWxlY3Rpb24gYW1vbmdzdCBhbGwgcG9zc2libGUga2V5c1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlXaXRoU2VsZWN0aW9uID0gT2JqZWN0LmtleXMoc2VsZWN0aW9uKS5maW5kKGtleSA9PiBzZWxlY3Rpb25ba2V5XVswXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpbmdsZVNlbGVjdGlvbiA9IGtleVdpdGhTZWxlY3Rpb24gPyBzZWxlY3Rpb25ba2V5V2l0aFNlbGVjdGlvbl1bMF0gOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShzaW5nbGVTZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlKHNpbmdsZVNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dTZWxlY3RCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmludGVybmFsQ3RybD8uZW5hYmxlZCAmJiB0aGlzLnNlbGVjdExhYmVsICYmIHRoaXMuZ2V0U2VsZWN0S2V5KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0S2V5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmluZChjID0+ICEhYy5zZWxlY3RhYmxlQXRLZXkpPy5zZWxlY3RhYmxlQXRLZXk7XG4gICAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cblxuICAgIDwhLS0gSW5wdXQgZm9yIGhpZXJhcmNoaWNhbCBzZWxlY3RvciAtLT5cbiAgICA8aW5wdXRcbiAgICAgICAgKGJsdXIpPVwiYmx1ci5lbWl0KClcIlxuICAgICAgICAoZm9jdXMpPVwib3BlbkRpYWxvZygpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImludGVybmFsQ3RybFwiXG4gICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJtYXRjaGVyXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlJlY2hlcmNoZSBldCBzw6lsZWN0aW9uXCJcbiAgICAgICAgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgIG1hdElucHV0XG4gICAgLz5cblxuICAgIDwhLS0gTWV0YSBkYXRhIC0tPlxuICAgIEBpZiAoc2hvd0ljb24pIHtcbiAgICAgICAgPG1hdC1pY29uIFtuYXR1cmFsSWNvbl09XCJpY29uXCIgbWF0SWNvblByZWZpeCAvPlxuICAgIH1cblxuICAgIEBpZiAoaGludCkge1xuICAgICAgICA8bWF0LWhpbnQ+e3sgaGludCB9fTwvbWF0LWhpbnQ+XG4gICAgfVxuXG4gICAgPCEtLSBDbGVhciBidXR0b24gLS0+XG4gICAgPGRpdiBtYXRJY29uU3VmZml4PlxuICAgICAgICBAaWYgKGludGVybmFsQ3RybC52YWx1ZSAmJiBpbnRlcm5hbEN0cmwuZW5hYmxlZCAmJiAhY2xlYXJMYWJlbCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEw6lzw6lsZWN0aW9ubmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGludGVybmFsQ3RybC52YWx1ZSAmJiBuYXZpZ2F0ZVRvKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibmF2aWdhdGVUb1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hdmlndWVyIHZlcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBuYXR1cmFsSWNvbj1cIm9wZW5faW5fYnJvd3NlclwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChoYXNSZXF1aXJlZEVycm9yKCkpIHtcbiAgICAgICAgPG1hdC1lcnJvciBpMThuPkNlIGNoYW1wIGVzdCByZXF1aXM8L21hdC1lcnJvcj5cbiAgICB9XG48L21hdC1mb3JtLWZpZWxkPlxuXG48IS0tICAgIEFkZGl0aW9uYWwgKHVuKXNlbGVjdC8odW4pbGluayBidXR0b25zIGZvciBtb3JlIHZpc3VhbCBjb2hlc2lvbiB3aXRoIG5hdHVyYWwtcmVsYXRpb25zIC0tPjwhLS0gW2NsZWFyTGFiZWxdIGFuZC9vciBbc2VsZWN0TGFiZWxdIGhhcyB0byBiZSBnaXZlbiBhcyBhdHRyaWJ1dGUgaW5wdXQgLS0+XG5AaWYgKHNob3dTZWxlY3RCdXR0b24oKSB8fCBzaG93Q2xlYXJCdXR0b24oKSkge1xuICAgIDxkaXYgY2xhc3M9XCJleHRlcm5hbC1idXR0b25zXCI+XG4gICAgICAgIEBpZiAoc2hvd1NlbGVjdEJ1dHRvbigpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuRGlhbG9nKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24+e3sgc2VsZWN0TGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNob3dDbGVhckJ1dHRvbigpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgY29sb3I9XCJ3YXJuXCIgbWF0LWJ1dHRvbj57eyBjbGVhckxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class NaturalSidenavComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavComponent, isStandalone: true, selector: "natural-sidenav", ngImport: i0, template: '<ng-content />', isInline: true }); }
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavComponent, isStandalone: true, selector: "natural-sidenav", ngImport: i0, template: '<ng-content />', isInline: true });
6
6
  }
7
7
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavComponent, decorators: [{
8
8
  type: Component,
@@ -12,4 +12,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
12
12
  standalone: true,
13
13
  }]
14
14
  }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9zaWRlbmF2L3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFPeEMsTUFBTSxPQUFPLHVCQUF1Qjs4R0FBdkIsdUJBQXVCO2tHQUF2Qix1QkFBdUIsMkVBSHRCLGdCQUFnQjs7MkZBR2pCLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1zaWRlbmF2JyxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsU2lkZW5hdkNvbXBvbmVudCB7fVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9zaWRlbmF2L3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFPeEMsTUFBTSxPQUFPLHVCQUF1Qjt1R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUIsMkVBSHRCLGdCQUFnQjs7MkZBR2pCLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1zaWRlbmF2JyxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsU2lkZW5hdkNvbXBvbmVudCB7fVxuIl19
@@ -1,33 +1,38 @@
1
- import { Component, HostBinding, Input, ViewChild } from '@angular/core';
1
+ import { Component, HostBinding, Input, ViewChild, inject } from '@angular/core';
2
2
  import { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
3
3
  import { NaturalSidenavService } from '../sidenav.service';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "../sidenav.service";
7
- import * as i2 from "@angular/material/sidenav";
8
- import * as i3 from "@angular/common";
6
+ import * as i1 from "@angular/material/sidenav";
7
+ import * as i2 from "@angular/common";
9
8
  export class NaturalSidenavContainerComponent {
10
- constructor(sidenavService) {
11
- this.sidenavService = sidenavService;
12
- /**
13
- * The side that the drawer is attached to
14
- */
15
- this.position = 'start';
16
- /**
17
- * If true listens to route changes to close side nav after a route change if mobile view is active
18
- * Actually a navigation to current route does not emit a route change, and the sidenav don't close.
19
- */
20
- this.mobileAutoClose = true;
21
- /**
22
- * Width of the minimized menu
23
- */
24
- this.minimizedWidth = 150;
25
- /**
26
- * If true, prevents "native" material sidenav to scroll at container level and delegates the scroll responsability to the transcluded
27
- * content
28
- */
29
- this.noScroll = false;
30
- }
9
+ sidenavService = inject(NaturalSidenavService);
10
+ /**
11
+ * Unique identifier used for the local storage
12
+ */
13
+ name;
14
+ /**
15
+ * The side that the drawer is attached to
16
+ */
17
+ position = 'start';
18
+ /**
19
+ * If true listens to route changes to close side nav after a route change if mobile view is active
20
+ * Actually a navigation to current route does not emit a route change, and the sidenav don't close.
21
+ */
22
+ mobileAutoClose = true;
23
+ /**
24
+ * Width of the minimized menu
25
+ */
26
+ minimizedWidth = 150;
27
+ /**
28
+ * If true, prevents "native" material sidenav to scroll at container level and delegates the scroll responsability to the transcluded
29
+ * content
30
+ */
31
+ noScroll = false;
32
+ /**
33
+ * Inner "native" material sidenav
34
+ */
35
+ menuSidenav;
31
36
  get isMinimized() {
32
37
  return this.sidenavService.isMinimized;
33
38
  }
@@ -58,13 +63,13 @@ export class NaturalSidenavContainerComponent {
58
63
  toggleMinimized() {
59
64
  this.sidenavService.toggleMinimized();
60
65
  }
61
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContainerComponent, deps: [{ token: i1.NaturalSidenavService }], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavContainerComponent, isStandalone: true, selector: "natural-sidenav-container", inputs: { name: "name", position: "position", mobileAutoClose: "mobileAutoClose", minimizedWidth: "minimizedWidth", noScroll: "noScroll" }, host: { properties: { "attr.no-scroll": "this.noScroll" } }, providers: [NaturalSidenavService], viewQueries: [{ propertyName: "menuSidenav", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [ngClass]=\"sidenavService.isMinimized ? 'menuMinimized' : ''\"\n [opened]=\"sidenavService.isOpened\"\n [style.min-width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [style.width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [position]=\"position\"\n >\n <ng-content select=\"natural-sidenav\" />\n </mat-sidenav>\n\n <mat-sidenav-content>\n <div>\n <ng-content select=\"natural-sidenav-content\" />\n </div>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [":host{display:flex;flex-direction:column}:host mat-sidenav-container{display:flex;flex:1;flex-direction:column}:host mat-sidenav-content>div{overflow:auto}:host .menuMinimized{overflow-x:hidden}:host .buttons{display:flex;flex-direction:row;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i2.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i2.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i2.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
66
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
67
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavContainerComponent, isStandalone: true, selector: "natural-sidenav-container", inputs: { name: "name", position: "position", mobileAutoClose: "mobileAutoClose", minimizedWidth: "minimizedWidth", noScroll: "noScroll" }, host: { properties: { "attr.no-scroll": "this.noScroll" } }, providers: [NaturalSidenavService], viewQueries: [{ propertyName: "menuSidenav", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [ngClass]=\"sidenavService.isMinimized ? 'menuMinimized' : ''\"\n [opened]=\"sidenavService.isOpened\"\n [style.min-width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [style.width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [position]=\"position\"\n >\n <ng-content select=\"natural-sidenav\" />\n </mat-sidenav>\n\n <mat-sidenav-content>\n <div>\n <ng-content select=\"natural-sidenav-content\" />\n </div>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [":host{display:flex;flex-direction:column}:host mat-sidenav-container{display:flex;flex:1;flex-direction:column}:host mat-sidenav-content>div{overflow:auto}:host .menuMinimized{overflow-x:hidden}:host .buttons{display:flex;flex-direction:row;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i1.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i1.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i1.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
63
68
  }
64
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContainerComponent, decorators: [{
65
70
  type: Component,
66
71
  args: [{ selector: 'natural-sidenav-container', providers: [NaturalSidenavService], standalone: true, imports: [MatSidenavModule, CommonModule], template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [ngClass]=\"sidenavService.isMinimized ? 'menuMinimized' : ''\"\n [opened]=\"sidenavService.isOpened\"\n [style.min-width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [style.width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [position]=\"position\"\n >\n <ng-content select=\"natural-sidenav\" />\n </mat-sidenav>\n\n <mat-sidenav-content>\n <div>\n <ng-content select=\"natural-sidenav-content\" />\n </div>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [":host{display:flex;flex-direction:column}:host mat-sidenav-container{display:flex;flex:1;flex-direction:column}:host mat-sidenav-content>div{overflow:auto}:host .menuMinimized{overflow-x:hidden}:host .buttons{display:flex;flex-direction:row;justify-content:flex-end}\n"] }]
67
- }], ctorParameters: () => [{ type: i1.NaturalSidenavService }], propDecorators: { name: [{
72
+ }], propDecorators: { name: [{
68
73
  type: Input,
69
74
  args: [{ required: true }]
70
75
  }], position: [{
@@ -82,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
82
87
  type: ViewChild,
83
88
  args: [MatSidenav, { static: true }]
84
89
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LWNvbnRhaW5lci9zaWRlbmF2LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9zaWRlbmF2L3NpZGVuYXYtY29udGFpbmVyL3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBWSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVTdDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFpQ3pDLFlBQW1DLGNBQXFDO1FBQXJDLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQTNCeEU7O1dBRUc7UUFDYSxhQUFRLEdBQTBCLE9BQU8sQ0FBQztRQUUxRDs7O1dBR0c7UUFDYSxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2Qzs7V0FFRztRQUNhLG1CQUFjLEdBQUcsR0FBRyxDQUFDO1FBRXJDOzs7V0FHRztRQUM0QyxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBT1csQ0FBQztJQUU1RSxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLElBQUk7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzhHQXpFUSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyxpUkFKOUIsQ0FBQyxxQkFBcUIsQ0FBQyx1RUFtQ3ZCLFVBQVUsOERDNUN6QixndkJBa0JBLHFVRFBjLGdCQUFnQiwwWUFBRSxZQUFZOzsyRkFFL0IsZ0NBQWdDO2tCQVI1QyxTQUFTOytCQUNJLDJCQUEyQixhQUcxQixDQUFDLHFCQUFxQixDQUFDLGNBQ3RCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQzswRkFNVCxJQUFJO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFLUCxRQUFRO3NCQUF2QixLQUFLO2dCQU1VLGVBQWU7c0JBQTlCLEtBQUs7Z0JBS1UsY0FBYztzQkFBN0IsS0FBSztnQkFNeUMsUUFBUTtzQkFBdEQsV0FBVzt1QkFBQyxnQkFBZ0I7O3NCQUFHLEtBQUs7Z0JBS1MsV0FBVztzQkFBeEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERyYXdlciwgTWF0U2lkZW5hdiwgTWF0U2lkZW5hdk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQge05hdHVyYWxTaWRlbmF2U2VydmljZX0gZnJvbSAnLi4vc2lkZW5hdi5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtc2lkZW5hdi1jb250YWluZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaWRlbmF2LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBwcm92aWRlcnM6IFtOYXR1cmFsU2lkZW5hdlNlcnZpY2VdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW01hdFNpZGVuYXZNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxTaWRlbmF2Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFVuaXF1ZSBpZGVudGlmaWVyIHVzZWQgZm9yIHRoZSBsb2NhbCBzdG9yYWdlXG4gICAgICovXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBuYW1lITogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNpZGUgdGhhdCB0aGUgZHJhd2VyIGlzIGF0dGFjaGVkIHRvXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBvc2l0aW9uOiBNYXREcmF3ZXJbJ3Bvc2l0aW9uJ10gPSAnc3RhcnQnO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBsaXN0ZW5zIHRvIHJvdXRlIGNoYW5nZXMgdG8gY2xvc2Ugc2lkZSBuYXYgYWZ0ZXIgYSByb3V0ZSBjaGFuZ2UgaWYgbW9iaWxlIHZpZXcgaXMgYWN0aXZlXG4gICAgICogQWN0dWFsbHkgYSBuYXZpZ2F0aW9uIHRvIGN1cnJlbnQgcm91dGUgZG9lcyBub3QgZW1pdCBhIHJvdXRlIGNoYW5nZSwgYW5kIHRoZSBzaWRlbmF2IGRvbid0IGNsb3NlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtb2JpbGVBdXRvQ2xvc2UgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2lkdGggb2YgdGhlIG1pbmltaXplZCBtZW51XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG1pbmltaXplZFdpZHRoID0gMTUwO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgcHJldmVudHMgXCJuYXRpdmVcIiBtYXRlcmlhbCBzaWRlbmF2IHRvIHNjcm9sbCBhdCBjb250YWluZXIgbGV2ZWwgYW5kIGRlbGVnYXRlcyB0aGUgc2Nyb2xsIHJlc3BvbnNhYmlsaXR5IHRvIHRoZSB0cmFuc2NsdWRlZFxuICAgICAqIGNvbnRlbnRcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIubm8tc2Nyb2xsJykgQElucHV0KCkgcHVibGljIG5vU2Nyb2xsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbm5lciBcIm5hdGl2ZVwiIG1hdGVyaWFsIHNpZGVuYXZcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKE1hdFNpZGVuYXYsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgbWVudVNpZGVuYXYhOiBNYXRTaWRlbmF2O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzaWRlbmF2U2VydmljZTogTmF0dXJhbFNpZGVuYXZTZXJ2aWNlKSB7fVxuXG4gICAgcHVibGljIGdldCBpc01pbmltaXplZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2lkZW5hdlNlcnZpY2UuaXNNaW5pbWl6ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc01vYmlsZVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZGVuYXZTZXJ2aWNlLmlzTW9iaWxlVmlldygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2U2VydmljZS5pbml0KHRoaXMubmFtZSwgdGhpcywgdGhpcy5tb2JpbGVBdXRvQ2xvc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2U2VydmljZS5kZXN0cm95KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UudG9nZ2xlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2Uub3BlbigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtaW5pbWl6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2U2VydmljZS5taW5pbWl6ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHBhbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZXhwYW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU1pbmltaXplZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2U2VydmljZS50b2dnbGVNaW5pbWl6ZWQoKTtcbiAgICB9XG59XG4iLCI8bWF0LXNpZGVuYXYtY29udGFpbmVyIChiYWNrZHJvcENsaWNrKT1cInNpZGVuYXZTZXJ2aWNlLnNldE9wZW5lZChmYWxzZSlcIj5cbiAgICA8bWF0LXNpZGVuYXZcbiAgICAgICAgW21vZGVdPVwic2lkZW5hdlNlcnZpY2UuYWN0aXZlTW9kZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInNpZGVuYXZTZXJ2aWNlLmlzTWluaW1pemVkID8gJ21lbnVNaW5pbWl6ZWQnIDogJydcIlxuICAgICAgICBbb3BlbmVkXT1cInNpZGVuYXZTZXJ2aWNlLmlzT3BlbmVkXCJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJzaWRlbmF2U2VydmljZS5pc01pbmltaXplZCAmJiBtaW5pbWl6ZWRXaWR0aCA/IG1pbmltaXplZFdpZHRoIDogbnVsbFwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaWRlbmF2U2VydmljZS5pc01pbmltaXplZCAmJiBtaW5pbWl6ZWRXaWR0aCA/IG1pbmltaXplZFdpZHRoIDogbnVsbFwiXG4gICAgICAgIFtwb3NpdGlvbl09XCJwb3NpdGlvblwiXG4gICAgPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJuYXR1cmFsLXNpZGVuYXZcIiAvPlxuICAgIDwvbWF0LXNpZGVuYXY+XG5cbiAgICA8bWF0LXNpZGVuYXYtY29udGVudD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm5hdHVyYWwtc2lkZW5hdi1jb250ZW50XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LWNvbnRhaW5lci9zaWRlbmF2LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9zaWRlbmF2L3NpZGVuYXYtY29udGFpbmVyL3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQVksVUFBVSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVTdDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDekIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRS9EOztPQUVHO0lBQzZCLElBQUksQ0FBVTtJQUU5Qzs7T0FFRztJQUNhLFFBQVEsR0FBMEIsT0FBTyxDQUFDO0lBRTFEOzs7T0FHRztJQUNhLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFdkM7O09BRUc7SUFDYSxjQUFjLEdBQUcsR0FBRyxDQUFDO0lBRXJDOzs7T0FHRztJQUM0QyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWhFOztPQUVHO0lBQzJDLFdBQVcsQ0FBYztJQUV2RSxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLElBQUk7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQyxDQUFDO3VHQXpFUSxnQ0FBZ0M7MkZBQWhDLGdDQUFnQyxpUkFKOUIsQ0FBQyxxQkFBcUIsQ0FBQyx1RUFxQ3ZCLFVBQVUsOERDOUN6QixndkJBa0JBLHFVRFBjLGdCQUFnQiwwWUFBRSxZQUFZOzsyRkFFL0IsZ0NBQWdDO2tCQVI1QyxTQUFTOytCQUNJLDJCQUEyQixhQUcxQixDQUFDLHFCQUFxQixDQUFDLGNBQ3RCLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQzs4QkFRVCxJQUFJO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFLUCxRQUFRO3NCQUF2QixLQUFLO2dCQU1VLGVBQWU7c0JBQTlCLEtBQUs7Z0JBS1UsY0FBYztzQkFBN0IsS0FBSztnQkFNeUMsUUFBUTtzQkFBdEQsV0FBVzt1QkFBQyxnQkFBZ0I7O3NCQUFHLEtBQUs7Z0JBS1MsV0FBVztzQkFBeEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0RHJhd2VyLCBNYXRTaWRlbmF2LCBNYXRTaWRlbmF2TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7TmF0dXJhbFNpZGVuYXZTZXJ2aWNlfSBmcm9tICcuLi9zaWRlbmF2LnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1zaWRlbmF2LWNvbnRhaW5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2lkZW5hdi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnLFxuICAgIHByb3ZpZGVyczogW05hdHVyYWxTaWRlbmF2U2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTWF0U2lkZW5hdk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNpZGVuYXZDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHJlYWRvbmx5IHNpZGVuYXZTZXJ2aWNlID0gaW5qZWN0KE5hdHVyYWxTaWRlbmF2U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiBVbmlxdWUgaWRlbnRpZmllciB1c2VkIGZvciB0aGUgbG9jYWwgc3RvcmFnZVxuICAgICAqL1xuICAgIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KSBwdWJsaWMgbmFtZSE6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBzaWRlIHRoYXQgdGhlIGRyYXdlciBpcyBhdHRhY2hlZCB0b1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwb3NpdGlvbjogTWF0RHJhd2VyWydwb3NpdGlvbiddID0gJ3N0YXJ0JztcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgbGlzdGVucyB0byByb3V0ZSBjaGFuZ2VzIHRvIGNsb3NlIHNpZGUgbmF2IGFmdGVyIGEgcm91dGUgY2hhbmdlIGlmIG1vYmlsZSB2aWV3IGlzIGFjdGl2ZVxuICAgICAqIEFjdHVhbGx5IGEgbmF2aWdhdGlvbiB0byBjdXJyZW50IHJvdXRlIGRvZXMgbm90IGVtaXQgYSByb3V0ZSBjaGFuZ2UsIGFuZCB0aGUgc2lkZW5hdiBkb24ndCBjbG9zZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbW9iaWxlQXV0b0Nsb3NlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdpZHRoIG9mIHRoZSBtaW5pbWl6ZWQgbWVudVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtaW5pbWl6ZWRXaWR0aCA9IDE1MDtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHByZXZlbnRzIFwibmF0aXZlXCIgbWF0ZXJpYWwgc2lkZW5hdiB0byBzY3JvbGwgYXQgY29udGFpbmVyIGxldmVsIGFuZCBkZWxlZ2F0ZXMgdGhlIHNjcm9sbCByZXNwb25zYWJpbGl0eSB0byB0aGUgdHJhbnNjbHVkZWRcbiAgICAgKiBjb250ZW50XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLm5vLXNjcm9sbCcpIEBJbnB1dCgpIHB1YmxpYyBub1Njcm9sbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW5uZXIgXCJuYXRpdmVcIiBtYXRlcmlhbCBzaWRlbmF2XG4gICAgICovXG4gICAgQFZpZXdDaGlsZChNYXRTaWRlbmF2LCB7c3RhdGljOiB0cnVlfSkgcHVibGljIG1lbnVTaWRlbmF2ITogTWF0U2lkZW5hdjtcblxuICAgIHB1YmxpYyBnZXQgaXNNaW5pbWl6ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpZGVuYXZTZXJ2aWNlLmlzTWluaW1pemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNNb2JpbGVWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaWRlbmF2U2VydmljZS5pc01vYmlsZVZpZXcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuaW5pdCh0aGlzLm5hbWUsIHRoaXMsIHRoaXMubW9iaWxlQXV0b0Nsb3NlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZGVzdHJveSh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLnRvZ2dsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2U2VydmljZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLm9wZW4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWluaW1pemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UubWluaW1pemUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwYW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLmV4cGFuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVNaW5pbWl6ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UudG9nZ2xlTWluaW1pemVkKCk7XG4gICAgfVxufVxuIiwiPG1hdC1zaWRlbmF2LWNvbnRhaW5lciAoYmFja2Ryb3BDbGljayk9XCJzaWRlbmF2U2VydmljZS5zZXRPcGVuZWQoZmFsc2UpXCI+XG4gICAgPG1hdC1zaWRlbmF2XG4gICAgICAgIFttb2RlXT1cInNpZGVuYXZTZXJ2aWNlLmFjdGl2ZU1vZGVcIlxuICAgICAgICBbbmdDbGFzc109XCJzaWRlbmF2U2VydmljZS5pc01pbmltaXplZCA/ICdtZW51TWluaW1pemVkJyA6ICcnXCJcbiAgICAgICAgW29wZW5lZF09XCJzaWRlbmF2U2VydmljZS5pc09wZW5lZFwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwic2lkZW5hdlNlcnZpY2UuaXNNaW5pbWl6ZWQgJiYgbWluaW1pemVkV2lkdGggPyBtaW5pbWl6ZWRXaWR0aCA6IG51bGxcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwic2lkZW5hdlNlcnZpY2UuaXNNaW5pbWl6ZWQgJiYgbWluaW1pemVkV2lkdGggPyBtaW5pbWl6ZWRXaWR0aCA6IG51bGxcIlxuICAgICAgICBbcG9zaXRpb25dPVwicG9zaXRpb25cIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibmF0dXJhbC1zaWRlbmF2XCIgLz5cbiAgICA8L21hdC1zaWRlbmF2PlxuXG4gICAgPG1hdC1zaWRlbmF2LWNvbnRlbnQ+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJuYXR1cmFsLXNpZGVuYXYtY29udGVudFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cbjwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxuIl19
@@ -1,11 +1,11 @@
1
1
  import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class NaturalSidenavContentComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavContentComponent, isStandalone: true, selector: "natural-sidenav-content", ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:flex;flex:1;flex-direction:column;overflow:auto}\n"] }); }
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavContentComponent, isStandalone: true, selector: "natural-sidenav-content", ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:flex;flex:1;flex-direction:column;overflow:auto}\n"] });
6
6
  }
7
7
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContentComponent, decorators: [{
8
8
  type: Component,
9
9
  args: [{ selector: 'natural-sidenav-content', template: '<ng-content />', standalone: true, styles: [":host{display:flex;flex:1;flex-direction:column;overflow:auto}\n"] }]
10
10
  }] });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi1jb250ZW50L3NpZGVuYXYtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFReEMsTUFBTSxPQUFPLDhCQUE4Qjs4R0FBOUIsOEJBQThCO2tHQUE5Qiw4QkFBOEIsbUZBSjdCLGdCQUFnQjs7MkZBSWpCLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDSSx5QkFBeUIsWUFDekIsZ0JBQWdCLGNBRWQsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLXNpZGVuYXYtY29udGVudCcsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXG4gICAgc3R5bGVVcmw6ICcuL3NpZGVuYXYtY29udGVudC5jb21wb25lbnQuc2NzcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNpZGVuYXZDb250ZW50Q29tcG9uZW50IHt9XG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi1jb250ZW50L3NpZGVuYXYtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFReEMsTUFBTSxPQUFPLDhCQUE4Qjt1R0FBOUIsOEJBQThCOzJGQUE5Qiw4QkFBOEIsbUZBSjdCLGdCQUFnQjs7MkZBSWpCLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDSSx5QkFBeUIsWUFDekIsZ0JBQWdCLGNBRWQsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLXNpZGVuYXYtY29udGVudCcsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXG4gICAgc3R5bGVVcmw6ICcuL3NpZGVuYXYtY29udGVudC5jb21wb25lbnQuc2NzcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFNpZGVuYXZDb250ZW50Q29tcG9uZW50IHt9XG4iXX0=
@@ -2,18 +2,16 @@ import { Injectable } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export class NaturalSidenavStackService {
5
- constructor() {
6
- /**
7
- * The stack of all currently living sidenavs
8
- */
9
- this.sidenavs = [];
10
- /**
11
- * Emits the most recent living SidenavContainer whenever it changes. So it's
12
- * either the SidenavContainer that was just added, or the one "before" the
13
- * SidenavContainer that was just removed
14
- */
15
- this.currentSidenav = new Subject();
16
- }
5
+ /**
6
+ * The stack of all currently living sidenavs
7
+ */
8
+ sidenavs = [];
9
+ /**
10
+ * Emits the most recent living SidenavContainer whenever it changes. So it's
11
+ * either the SidenavContainer that was just added, or the one "before" the
12
+ * SidenavContainer that was just removed
13
+ */
14
+ currentSidenav = new Subject();
17
15
  /**
18
16
  * For internal use only
19
17
  * @internal
@@ -42,11 +40,11 @@ export class NaturalSidenavStackService {
42
40
  next() {
43
41
  this.currentSidenav.next(this.sidenavs[this.sidenavs.length - 1]);
44
42
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
46
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavStackService, providedIn: 'root' }); }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
44
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavStackService, providedIn: 'root' });
47
45
  }
48
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavStackService, decorators: [{
49
47
  type: Injectable,
50
48
  args: [{ providedIn: 'root' }]
51
49
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1zdGFjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LXN0YWNrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUk3QixNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRUk7O1dBRUc7UUFDYyxhQUFRLEdBQXVDLEVBQUUsQ0FBQztRQUVuRTs7OztXQUlHO1FBQ2EsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBZ0QsQ0FBQztLQW1DaEc7SUFqQ0c7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLE9BQXlDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEUsK0VBQStFO1FBQy9FLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsT0FBeUM7UUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNmLE1BQU0sS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLElBQUk7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs4R0E3Q1EsMEJBQTBCO2tIQUExQiwwQkFBMEIsY0FEZCxNQUFNOzsyRkFDbEIsMEJBQTBCO2tCQUR0QyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtOYXR1cmFsU2lkZW5hdkNvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9zaWRlbmF2LWNvbnRhaW5lci9zaWRlbmF2LWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsU2lkZW5hdlN0YWNrU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogVGhlIHN0YWNrIG9mIGFsbCBjdXJyZW50bHkgbGl2aW5nIHNpZGVuYXZzXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2czogTmF0dXJhbFNpZGVuYXZDb250YWluZXJDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgdGhlIG1vc3QgcmVjZW50IGxpdmluZyBTaWRlbmF2Q29udGFpbmVyIHdoZW5ldmVyIGl0IGNoYW5nZXMuIFNvIGl0J3NcbiAgICAgKiBlaXRoZXIgdGhlIFNpZGVuYXZDb250YWluZXIgdGhhdCB3YXMganVzdCBhZGRlZCwgb3IgdGhlIG9uZSBcImJlZm9yZVwiIHRoZVxuICAgICAqIFNpZGVuYXZDb250YWluZXIgdGhhdCB3YXMganVzdCByZW1vdmVkXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRTaWRlbmF2ID0gbmV3IFN1YmplY3Q8TmF0dXJhbFNpZGVuYXZDb250YWluZXJDb21wb25lbnQgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBGb3IgaW50ZXJuYWwgdXNlIG9ubHlcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXIoc2lkZW5hdjogTmF0dXJhbFNpZGVuYXZDb250YWluZXJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5zaWRlbmF2cy5zb21lKHMgPT4gcy5uYW1lID09PSBzaWRlbmF2Lm5hbWUpO1xuXG4gICAgICAgIC8vIFByZXZlbnQgZHVwbGljYXRlZCBuYW1lLCBhbmQgc28gb24gbG9jYWwgc3RvcmFnZSBvciBmdXJ0aGVyIGFjY2VzcyBjb25mbGljdHNcbiAgICAgICAgaWYgKGV4aXN0cykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEdXBsaWNhdGVkIHNpZGUgbmF2IG5hbWU6ICcgKyBzaWRlbmF2Lm5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaWRlbmF2cy5wdXNoKHNpZGVuYXYpO1xuICAgICAgICB0aGlzLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3IgaW50ZXJuYWwgdXNlIG9ubHlcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgdW5yZWdpc3RlcihzaWRlbmF2OiBOYXR1cmFsU2lkZW5hdkNvbnRhaW5lckNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2lkZW5hdnMuaW5kZXhPZihzaWRlbmF2KTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RyeWluZyB0byByZW1vdmUgYSBTaWRlbmF2Q29udGFpbmVyIHRoYXQgd2FzIG5ldmVyIHJlZ2lzdGVyZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2lkZW5hdnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBuZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRTaWRlbmF2Lm5leHQodGhpcy5zaWRlbmF2c1t0aGlzLnNpZGVuYXZzLmxlbmd0aCAtIDFdKTtcbiAgICB9XG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1zdGFjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LXN0YWNrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUk3QixNQUFNLE9BQU8sMEJBQTBCO0lBQ25DOztPQUVHO0lBQ2MsUUFBUSxHQUF1QyxFQUFFLENBQUM7SUFFbkU7Ozs7T0FJRztJQUNhLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBZ0QsQ0FBQztJQUU3Rjs7O09BR0c7SUFDSSxRQUFRLENBQUMsT0FBeUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRSwrRUFBK0U7UUFDL0UsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxPQUF5QztRQUN2RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQztRQUNqRixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sSUFBSTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO3VHQTdDUSwwQkFBMEI7MkdBQTFCLDBCQUEwQixjQURkLE1BQU07OzJGQUNsQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge05hdHVyYWxTaWRlbmF2Q29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuL3NpZGVuYXYtY29udGFpbmVyL3NpZGVuYXYtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxTaWRlbmF2U3RhY2tTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgc3RhY2sgb2YgYWxsIGN1cnJlbnRseSBsaXZpbmcgc2lkZW5hdnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpZGVuYXZzOiBOYXR1cmFsU2lkZW5hdkNvbnRhaW5lckNvbXBvbmVudFtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB0aGUgbW9zdCByZWNlbnQgbGl2aW5nIFNpZGVuYXZDb250YWluZXIgd2hlbmV2ZXIgaXQgY2hhbmdlcy4gU28gaXQnc1xuICAgICAqIGVpdGhlciB0aGUgU2lkZW5hdkNvbnRhaW5lciB0aGF0IHdhcyBqdXN0IGFkZGVkLCBvciB0aGUgb25lIFwiYmVmb3JlXCIgdGhlXG4gICAgICogU2lkZW5hdkNvbnRhaW5lciB0aGF0IHdhcyBqdXN0IHJlbW92ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFNpZGVuYXYgPSBuZXcgU3ViamVjdDxOYXR1cmFsU2lkZW5hdkNvbnRhaW5lckNvbXBvbmVudCB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seVxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlcihzaWRlbmF2OiBOYXR1cmFsU2lkZW5hdkNvbnRhaW5lckNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLnNpZGVuYXZzLnNvbWUocyA9PiBzLm5hbWUgPT09IHNpZGVuYXYubmFtZSk7XG5cbiAgICAgICAgLy8gUHJldmVudCBkdXBsaWNhdGVkIG5hbWUsIGFuZCBzbyBvbiBsb2NhbCBzdG9yYWdlIG9yIGZ1cnRoZXIgYWNjZXNzIGNvbmZsaWN0c1xuICAgICAgICBpZiAoZXhpc3RzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0R1cGxpY2F0ZWQgc2lkZSBuYXYgbmFtZTogJyArIHNpZGVuYXYubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNpZGVuYXZzLnB1c2goc2lkZW5hdik7XG4gICAgICAgIHRoaXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seVxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB1bnJlZ2lzdGVyKHNpZGVuYXY6IE5hdHVyYWxTaWRlbmF2Q29udGFpbmVyQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zaWRlbmF2cy5pbmRleE9mKHNpZGVuYXYpO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVHJ5aW5nIHRvIHJlbW92ZSBhIFNpZGVuYXZDb250YWluZXIgdGhhdCB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaWRlbmF2cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5leHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFNpZGVuYXYubmV4dCh0aGlzLnNpZGVuYXZzW3RoaXMuc2lkZW5hdnMubGVuZ3RoIC0gMV0pO1xuICAgIH1cbn1cbiJdfQ==