@agorapulse/ui-components 18.0.9 → 18.0.10

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 (67) hide show
  1. package/agorapulse-ui-components-18.0.10.tgz +0 -0
  2. package/datepicker/datepicker.component.d.ts +1 -1
  3. package/esm2022/datepicker/datepicker.component.mjs +2 -2
  4. package/esm2022/index.mjs +2 -1
  5. package/esm2022/input-search/input-search.component.mjs +5 -4
  6. package/esm2022/nav-selector/agorapulse-ui-components-nav-selector.mjs +5 -0
  7. package/esm2022/nav-selector/directives/tree-node-accessibility.directive.mjs +30 -0
  8. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +81 -0
  9. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.presenter.mjs +29 -0
  10. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +142 -0
  11. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.presenter.mjs +31 -0
  12. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +240 -0
  13. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.mjs +35 -0
  14. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.mjs +39 -0
  15. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.mjs +18 -0
  16. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +92 -0
  17. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.mjs +31 -0
  18. package/esm2022/nav-selector/nav-selector.component.mjs +123 -0
  19. package/esm2022/nav-selector/nav-selector.mjs +9 -0
  20. package/esm2022/nav-selector/nav-selector.state.mjs +173 -0
  21. package/esm2022/nav-selector/public_api.mjs +2 -0
  22. package/esm2022/nav-selector/utils/leaf.utils.mjs +10 -0
  23. package/esm2022/nav-selector/utils/nav-selector.accessibility.mjs +171 -0
  24. package/esm2022/nav-selector/utils/nav-selector.builder.mjs +263 -0
  25. package/esm2022/nav-selector/utils/nav-selector.filter.mjs +102 -0
  26. package/esm2022/nav-selector/utils/nav-selector.folding.mjs +219 -0
  27. package/esm2022/nav-selector/utils/nav-selector.minifying.mjs +50 -0
  28. package/esm2022/nav-selector/utils/nav-selector.multi-select.mjs +208 -0
  29. package/esm2022/nav-selector/utils/nav-selector.single-select.mjs +91 -0
  30. package/esm2022/nav-selector/utils/nav-selector.view-more.mjs +98 -0
  31. package/fesm2022/agorapulse-ui-components-datepicker.mjs +1 -1
  32. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
  33. package/fesm2022/agorapulse-ui-components-input-search.mjs +4 -3
  34. package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
  35. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +2198 -0
  36. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -0
  37. package/fesm2022/agorapulse-ui-components.mjs +1 -0
  38. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  39. package/index.d.ts +1 -0
  40. package/input-search/input-search.component.d.ts +1 -1
  41. package/nav-selector/directives/tree-node-accessibility.directive.d.ts +9 -0
  42. package/nav-selector/index.d.ts +5 -0
  43. package/nav-selector/nav-selector-category/nav-selector-category.component.d.ts +16 -0
  44. package/nav-selector/nav-selector-category/nav-selector-category.presenter.d.ts +14 -0
  45. package/nav-selector/nav-selector-group/nav-selector-group.component.d.ts +29 -0
  46. package/nav-selector/nav-selector-group/nav-selector-group.presenter.d.ts +17 -0
  47. package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +51 -0
  48. package/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.d.ts +19 -0
  49. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.d.ts +13 -0
  50. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.d.ts +10 -0
  51. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.d.ts +24 -0
  52. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.d.ts +14 -0
  53. package/nav-selector/nav-selector.component.d.ts +29 -0
  54. package/nav-selector/nav-selector.d.ts +220 -0
  55. package/nav-selector/nav-selector.state.d.ts +47 -0
  56. package/nav-selector/public_api.d.ts +2 -0
  57. package/nav-selector/utils/leaf.utils.d.ts +5 -0
  58. package/nav-selector/utils/nav-selector.accessibility.d.ts +52 -0
  59. package/nav-selector/utils/nav-selector.builder.d.ts +32 -0
  60. package/nav-selector/utils/nav-selector.filter.d.ts +30 -0
  61. package/nav-selector/utils/nav-selector.folding.d.ts +47 -0
  62. package/nav-selector/utils/nav-selector.minifying.d.ts +27 -0
  63. package/nav-selector/utils/nav-selector.multi-select.d.ts +54 -0
  64. package/nav-selector/utils/nav-selector.single-select.d.ts +15 -0
  65. package/nav-selector/utils/nav-selector.view-more.d.ts +30 -0
  66. package/package.json +13 -7
  67. package/agorapulse-ui-components-18.0.9.tgz +0 -0
@@ -0,0 +1,142 @@
1
+ import { AvatarComponent } from '@agorapulse/ui-components/avatar';
2
+ import { CheckboxComponent } from '@agorapulse/ui-components/checkbox';
3
+ import { CounterComponent } from '@agorapulse/ui-components/counter';
4
+ import { TooltipDirective } from '@agorapulse/ui-components/tooltip';
5
+ import { apChevronDown, apChevronUp, apErrorFill, apFolder, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';
6
+ import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';
7
+ import { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, input, signal, viewChild } from '@angular/core';
8
+ import { TreeNodeAccessibilityDirective } from '../directives/tree-node-accessibility.directive';
9
+ import { NavSelectorLeafComponent } from '../nav-selector-leaf/nav-selector-leaf.component';
10
+ import { NavSelectorGroupPresenter } from './nav-selector-group.presenter';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "./nav-selector-group.presenter";
13
+ export class NavSelectorGroupComponent {
14
+ el;
15
+ navSelectorGroupPresenter;
16
+ group = input.required();
17
+ foldSymbol = computed(() => (this.group().folded ? 'chevron-down' : 'chevron-up'));
18
+ aliasEl = viewChild('alias');
19
+ aliasBoundedClientRect = signal({
20
+ offsetWidth: 0,
21
+ offsetHeight: 0,
22
+ scrollWidth: 0,
23
+ scrollHeight: 0,
24
+ });
25
+ tooltipContent = computed(() => {
26
+ const content = [];
27
+ const el = this.aliasBoundedClientRect();
28
+ if (!this.navSelectorGroupPresenter.expanded() || el.offsetWidth < el.scrollWidth || el.offsetHeight < el.scrollHeight) {
29
+ content.push(this.group().alias);
30
+ }
31
+ if (this.group().displayTokenInvalid) {
32
+ content.push(this.navSelectorGroupPresenter.texts().tokenInvalid);
33
+ }
34
+ return content.join('<br>');
35
+ });
36
+ tooltipDisabled = computed(() => !this.tooltipContent().length);
37
+ foldedWithDelay = signal(false);
38
+ animationState = computed(() => (this.group().folded ? 'collapsed' : 'expanded'));
39
+ constructor(el, navSelectorGroupPresenter) {
40
+ this.el = el;
41
+ this.navSelectorGroupPresenter = navSelectorGroupPresenter;
42
+ afterNextRender(() => {
43
+ this.maxHeight.set(`${this.el.nativeElement.scrollHeight}px`);
44
+ const el = this.aliasEl()?.nativeElement;
45
+ if (el) {
46
+ this.aliasBoundedClientRect.set({
47
+ offsetWidth: el.offsetWidth,
48
+ offsetHeight: el.offsetHeight,
49
+ scrollWidth: el.scrollWidth,
50
+ scrollHeight: el.scrollHeight,
51
+ });
52
+ }
53
+ });
54
+ effect(() => {
55
+ if (this.group().folded) {
56
+ setTimeout(() => this.foldedWithDelay.set(true), 150);
57
+ }
58
+ else {
59
+ this.foldedWithDelay.set(false);
60
+ }
61
+ }, { allowSignalWrites: true });
62
+ }
63
+ maxHeight = signal('0px');
64
+ onKeydownSpaceOrEnter($event) {
65
+ // Prevent to toggle folding when focus is on the checkbox
66
+ if (document.activeElement === this.el.nativeElement.querySelector('.content')) {
67
+ this.toggleFolding($event);
68
+ }
69
+ else {
70
+ this.navSelectorGroupPresenter.onGroupSelected(this.group());
71
+ }
72
+ }
73
+ toggleFolding(event) {
74
+ event.stopImmediatePropagation();
75
+ this.navSelectorGroupPresenter.onGroupToggleFolding(this.group());
76
+ }
77
+ fold(event) {
78
+ event.stopImmediatePropagation();
79
+ this.navSelectorGroupPresenter.fold(this.group());
80
+ }
81
+ unfold(event) {
82
+ event.stopImmediatePropagation();
83
+ this.navSelectorGroupPresenter.unfold(this.group());
84
+ }
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorGroupComponent, deps: [{ token: i0.ElementRef }, { token: i1.NavSelectorGroupPresenter }], target: i0.ɵɵFactoryTarget.Component });
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NavSelectorGroupComponent, isStandalone: true, selector: "ap-nav-selector-group", inputs: { group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "keydown.arrowLeft": "fold($event)", "keydown.arrowRight": "unfold($event)" }, properties: { "class.minified": "!navSelectorGroupPresenter.expanded()" } }, providers: [withSymbols(apFolder, apErrorFill, apChevronDown, apChevronUp), NavSelectorGroupPresenter], viewQueries: [{ propertyName: "aliasEl", first: true, predicate: ["alias"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (navSelectorGroupPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"group()\"\n (keydown.space)=\"onKeydownSpaceOrEnter($event)\"\n (keydown.enter)=\"onKeydownSpaceOrEnter($event)\">\n @if (navSelectorGroupPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"group().uid\"\n [checked]=\"group().selected\"\n [disabled]=\"!group().selectable\"\n [indeterminate]=\"group().undeterminedSelection\"\n (change)=\"navSelectorGroupPresenter.onGroupSelected(group())\" />\n }\n\n <ap-symbol\n symbolId=\"folder\"\n size=\"sm\" />\n\n <span\n #alias\n class=\"caption\">\n {{ group().alias }}\n </span>\n\n @if (group().displayTokenInvalid) {\n <ap-symbol\n symbolId=\"error_fill\"\n size=\"sm\" />\n }\n\n @if (group().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [background]=\"false\">\n {{ group().counter }}\n </ap-counter>\n }\n\n <ap-symbol\n size=\"sm\"\n class=\"folding-button\"\n [tabindex]=\"group().accessibility.tabIndex\"\n [attr.aria-label]=\"'Toggle ' + group().alias\"\n [symbolId]=\"foldSymbol()\"\n (keydown.space)=\"toggleFolding($event)\"\n (keydown.enter)=\"toggleFolding($event)\"\n (click)=\"toggleFolding($event)\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of group().children; track child.uid) {\n @if (!child.hidden) {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n }\n }\n </div>\n }\n </div>\n} @else {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"group()\"\n (click)=\"toggleFolding($event)\"\n (keydown.space)=\"onKeydownSpaceOrEnter($event)\"\n (keydown.enter)=\"onKeydownSpaceOrEnter($event)\">\n @if (navSelectorGroupPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"group().uid\"\n [checked]=\"group().selected\"\n [disabled]=\"!group().selectable\"\n [indeterminate]=\"group().undeterminedSelection\"\n (change)=\"navSelectorGroupPresenter.onGroupSelected(group())\" />\n }\n\n <div class=\"picture-url-sample-container\">\n <div class=\"picture-url-sample\">\n @for (pictureUrlSample of group().childrenPictureUrlSample; track pictureUrlSample) {\n <ap-avatar\n [size]=\"$any(12)\"\n [profilePicture]=\"pictureUrlSample.url ?? undefined\"\n [showInitials]=\"pictureUrlSample.initial\" />\n }\n\n <div class=\"status\">\n @if (group().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [notif]=\"true\"\n [background]=\"true\">\n {{ group().counter }}\n </ap-counter>\n }\n </div>\n </div>\n\n <div class=\"toggle\">\n <ap-symbol\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n </div>\n </div>\n\n <div\n class=\"details-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of group().children; track child.uid) {\n @if (!child.hidden) {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n }\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:flex;align-items:center;flex-shrink:0;align-self:stretch;flex-direction:column}:host .children-container{align-self:stretch}:host .content{padding:0 var(--ref-spacing-xxs);display:flex;height:36px;align-items:center;gap:var(--ref-spacing-xxs);flex-shrink:0;flex-grow:1;align-self:stretch;cursor:pointer}:host .content:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10)}:host .content:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host .content:focus{outline:none;border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10);box-shadow:0 0 0 1px var(--ref-color-white),0 0 0 3px var(--ref-color-electric-blue-100)}:host .content:focus-within{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host:not(.minified) ap-symbol[symbol-id=chevron-down],:host:not(.minified) ap-symbol[symbol-id=chevron-up]{color:var(--ref-color-grey-80)}:host:not(.minified) ap-symbol[symbol-id=chevron-down]:hover,:host:not(.minified) ap-symbol[symbol-id=chevron-up]:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host:not(.minified) ap-symbol[symbol-id=chevron-down]:active,:host:not(.minified) ap-symbol[symbol-id=chevron-up]:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-40)}:host:not(.minified) ap-symbol[symbol-id=chevron-down]:focus,:host:not(.minified) ap-symbol[symbol-id=chevron-up]:focus{outline:none;border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host ap-symbol[symbol-id=error_fill]{color:var(--ref-color-red-100)}:host ap-symbol[symbol-id=folder]{color:var(--ref-color-grey-100)}:host ap-symbol[symbol-id=chevron-down],:host ap-symbol[symbol-id=chevron-up]{color:var(--ref-color-grey-80)}:host .folding-button{display:flex;width:24px;height:24px;justify-content:center;align-items:center;flex-shrink:0}:host .folding-button:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host .folding-button:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-40)}:host .caption{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;flex:1 0 0;overflow:hidden;color:var(--ref-color-grey-100);text-overflow:ellipsis;font-family:Averta;font-size:var(--ref-font-size-xs);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-xs)}:host .children{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch}:host .picture-url-sample-container{position:relative;width:26px}:host .picture-url-sample{display:flex;width:26px;align-items:center;align-content:center;gap:2px;flex-wrap:wrap}:host.minified .content{gap:var(--ref-spacing-xxxs);position:relative;justify-content:center}:host.minified .content .toggle{position:absolute;display:none}:host.minified .content:hover .toggle,:host.minified .content:focus .toggle{inset:0;display:flex;justify-content:center;align-items:center}:host.minified .content:hover .picture-url-sample,:host.minified .content:focus .picture-url-sample{display:none}:host.minified ::ng-deep ap-checkbox .checkbox .checkbox-container{padding:0}:host.minified .status{position:absolute;right:-4px;top:-6px}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: CounterComponent, selector: "ap-counter", inputs: ["color", "size", "background", "notif"] }, { kind: "component", type: NavSelectorLeafComponent, selector: "ap-nav-selector-leaf", inputs: ["leaf"] }, { kind: "component", type: CheckboxComponent, selector: "ap-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "disabled", "indeterminate", "checked", "required", "name"], outputs: ["change"] }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["profilePicture", "alt", "network", "size", "username", "showInitials", "bigNetwork", "anonymous", "online", "youtubeAvatarMode", "rounded"] }, { kind: "directive", type: TooltipDirective, selector: "[apTooltip]", inputs: ["apTooltip", "apTooltipPosition", "apTooltipShowDelay", "apTooltipHideDelay", "apTooltipDuration", "apTooltipDisabled", "apTooltipTruncatedTextOnly", "apTooltipTemplateContext", "apTooltipVirtualScrollElement"] }, { kind: "directive", type: TreeNodeAccessibilityDirective, selector: "[apTreeNodeAccessibility]", inputs: ["apTreeNodeAccessibility"] }], animations: [
87
+ /**
88
+ * Overflow hidden is put only during the animation and on the collapsed state because if it is put on the expanded state then children’s border will be cut (hover / focus)
89
+ */
90
+ trigger('accordion', [
91
+ state('collapsed', style({
92
+ maxHeight: 0,
93
+ overflow: 'hidden',
94
+ })),
95
+ state('expanded', style({
96
+ maxHeight: 'initial',
97
+ })),
98
+ transition('collapsed => expanded', [
99
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ maxHeight: '{{maxHeight}}', overflow: 'hidden' })),
100
+ ]),
101
+ transition('expanded => collapsed', [
102
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', keyframes([style({ maxHeight: '{{maxHeight}}', overflow: 'hidden' }), style({ maxHeight: 0, overflow: 'hidden' })])),
103
+ ]),
104
+ ]),
105
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorGroupComponent, decorators: [{
108
+ type: Component,
109
+ args: [{ selector: 'ap-nav-selector-group', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [withSymbols(apFolder, apErrorFill, apChevronDown, apChevronUp), NavSelectorGroupPresenter], imports: [
110
+ SymbolComponent,
111
+ CounterComponent,
112
+ NavSelectorLeafComponent,
113
+ CheckboxComponent,
114
+ AvatarComponent,
115
+ TooltipDirective,
116
+ TreeNodeAccessibilityDirective,
117
+ ], host: {
118
+ '[class.minified]': '!navSelectorGroupPresenter.expanded()',
119
+ '(keydown.arrowLeft)': 'fold($event)',
120
+ '(keydown.arrowRight)': 'unfold($event)',
121
+ }, animations: [
122
+ /**
123
+ * Overflow hidden is put only during the animation and on the collapsed state because if it is put on the expanded state then children’s border will be cut (hover / focus)
124
+ */
125
+ trigger('accordion', [
126
+ state('collapsed', style({
127
+ maxHeight: 0,
128
+ overflow: 'hidden',
129
+ })),
130
+ state('expanded', style({
131
+ maxHeight: 'initial',
132
+ })),
133
+ transition('collapsed => expanded', [
134
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ maxHeight: '{{maxHeight}}', overflow: 'hidden' })),
135
+ ]),
136
+ transition('expanded => collapsed', [
137
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', keyframes([style({ maxHeight: '{{maxHeight}}', overflow: 'hidden' }), style({ maxHeight: 0, overflow: 'hidden' })])),
138
+ ]),
139
+ ]),
140
+ ], template: "@if (navSelectorGroupPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"group()\"\n (keydown.space)=\"onKeydownSpaceOrEnter($event)\"\n (keydown.enter)=\"onKeydownSpaceOrEnter($event)\">\n @if (navSelectorGroupPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"group().uid\"\n [checked]=\"group().selected\"\n [disabled]=\"!group().selectable\"\n [indeterminate]=\"group().undeterminedSelection\"\n (change)=\"navSelectorGroupPresenter.onGroupSelected(group())\" />\n }\n\n <ap-symbol\n symbolId=\"folder\"\n size=\"sm\" />\n\n <span\n #alias\n class=\"caption\">\n {{ group().alias }}\n </span>\n\n @if (group().displayTokenInvalid) {\n <ap-symbol\n symbolId=\"error_fill\"\n size=\"sm\" />\n }\n\n @if (group().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [background]=\"false\">\n {{ group().counter }}\n </ap-counter>\n }\n\n <ap-symbol\n size=\"sm\"\n class=\"folding-button\"\n [tabindex]=\"group().accessibility.tabIndex\"\n [attr.aria-label]=\"'Toggle ' + group().alias\"\n [symbolId]=\"foldSymbol()\"\n (keydown.space)=\"toggleFolding($event)\"\n (keydown.enter)=\"toggleFolding($event)\"\n (click)=\"toggleFolding($event)\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of group().children; track child.uid) {\n @if (!child.hidden) {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n }\n }\n </div>\n }\n </div>\n} @else {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"group()\"\n (click)=\"toggleFolding($event)\"\n (keydown.space)=\"onKeydownSpaceOrEnter($event)\"\n (keydown.enter)=\"onKeydownSpaceOrEnter($event)\">\n @if (navSelectorGroupPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"group().uid\"\n [checked]=\"group().selected\"\n [disabled]=\"!group().selectable\"\n [indeterminate]=\"group().undeterminedSelection\"\n (change)=\"navSelectorGroupPresenter.onGroupSelected(group())\" />\n }\n\n <div class=\"picture-url-sample-container\">\n <div class=\"picture-url-sample\">\n @for (pictureUrlSample of group().childrenPictureUrlSample; track pictureUrlSample) {\n <ap-avatar\n [size]=\"$any(12)\"\n [profilePicture]=\"pictureUrlSample.url ?? undefined\"\n [showInitials]=\"pictureUrlSample.initial\" />\n }\n\n <div class=\"status\">\n @if (group().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [notif]=\"true\"\n [background]=\"true\">\n {{ group().counter }}\n </ap-counter>\n }\n </div>\n </div>\n\n <div class=\"toggle\">\n <ap-symbol\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n </div>\n </div>\n\n <div\n class=\"details-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of group().children; track child.uid) {\n @if (!child.hidden) {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n }\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:flex;align-items:center;flex-shrink:0;align-self:stretch;flex-direction:column}:host .children-container{align-self:stretch}:host .content{padding:0 var(--ref-spacing-xxs);display:flex;height:36px;align-items:center;gap:var(--ref-spacing-xxs);flex-shrink:0;flex-grow:1;align-self:stretch;cursor:pointer}:host .content:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10)}:host .content:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host .content:focus{outline:none;border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10);box-shadow:0 0 0 1px var(--ref-color-white),0 0 0 3px var(--ref-color-electric-blue-100)}:host .content:focus-within{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host:not(.minified) ap-symbol[symbol-id=chevron-down],:host:not(.minified) ap-symbol[symbol-id=chevron-up]{color:var(--ref-color-grey-80)}:host:not(.minified) ap-symbol[symbol-id=chevron-down]:hover,:host:not(.minified) ap-symbol[symbol-id=chevron-up]:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host:not(.minified) ap-symbol[symbol-id=chevron-down]:active,:host:not(.minified) ap-symbol[symbol-id=chevron-up]:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-40)}:host:not(.minified) ap-symbol[symbol-id=chevron-down]:focus,:host:not(.minified) ap-symbol[symbol-id=chevron-up]:focus{outline:none;border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host ap-symbol[symbol-id=error_fill]{color:var(--ref-color-red-100)}:host ap-symbol[symbol-id=folder]{color:var(--ref-color-grey-100)}:host ap-symbol[symbol-id=chevron-down],:host ap-symbol[symbol-id=chevron-up]{color:var(--ref-color-grey-80)}:host .folding-button{display:flex;width:24px;height:24px;justify-content:center;align-items:center;flex-shrink:0}:host .folding-button:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host .folding-button:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-40)}:host .caption{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;flex:1 0 0;overflow:hidden;color:var(--ref-color-grey-100);text-overflow:ellipsis;font-family:Averta;font-size:var(--ref-font-size-xs);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-xs)}:host .children{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch}:host .picture-url-sample-container{position:relative;width:26px}:host .picture-url-sample{display:flex;width:26px;align-items:center;align-content:center;gap:2px;flex-wrap:wrap}:host.minified .content{gap:var(--ref-spacing-xxxs);position:relative;justify-content:center}:host.minified .content .toggle{position:absolute;display:none}:host.minified .content:hover .toggle,:host.minified .content:focus .toggle{inset:0;display:flex;justify-content:center;align-items:center}:host.minified .content:hover .picture-url-sample,:host.minified .content:focus .picture-url-sample{display:none}:host.minified ::ng-deep ap-checkbox .checkbox .checkbox-container{padding:0}:host.minified .status{position:absolute;right:-4px;top:-6px}\n"] }]
141
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NavSelectorGroupPresenter }] });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL25hdi1zZWxlY3Rvci1ncm91cC9uYXYtc2VsZWN0b3ItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLWdyb3VwL25hdi1zZWxlY3Rvci1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBYyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVqRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJB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dCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9jaGVja2JveCc7XG5pbXBvcnQgeyBDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9jb3VudGVyJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgYXBDaGV2cm9uRG93biwgYXBDaGV2cm9uVXAsIGFwRXJyb3JGaWxsLCBhcEZvbGRlciwgU3ltYm9sQ29tcG9uZW50LCB3aXRoU3ltYm9scyB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQgeyBhbmltYXRlLCBrZXlmcmFtZXMsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbnB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyZWVOb2RlQWNjZXNzaWJpbGl0eURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdHJlZS1ub2RlLWFjY2Vzc2liaWxpdHkuZGlyZWN0aXZlJztcbmltcG9ydCB7IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB9IGZyb20gJy4uL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBOYXZTZWxlY3RvckxlYWZDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtc2VsZWN0b3ItbGVhZi9uYXYtc2VsZWN0b3ItbGVhZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JHcm91cFByZXNlbnRlciB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWdyb3VwLnByZXNlbnRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXAtbmF2LXNlbGVjdG9yLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2LXNlbGVjdG9yLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXYtc2VsZWN0b3ItZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW3dpdGhTeW1ib2xzKGFwRm9sZGVyLCBhcEVycm9yRmlsbCwgYXBDaGV2cm9uRG93biwgYXBDaGV2cm9uVXApLCBOYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFN5bWJvbENvbXBvbmVudCxcbiAgICAgICAgQ291bnRlckNvbXBvbmVudCxcbiAgICAgICAgTmF2U2VsZWN0b3JMZWFmQ29tcG9uZW50LFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgQXZhdGFyQ29tcG9uZW50LFxuICAgICAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgICAgICBUcmVlTm9kZUFjY2Vzc2liaWxpdHlEaXJlY3RpdmUsXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubWluaWZpZWRdJzogJyFuYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyLmV4cGFuZGVkKCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dMZWZ0KSc6ICdmb2xkKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dSaWdodCknOiAndW5mb2xkKCRldmVudCknLFxuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICAvKipcbiAgICAgICAgICogT3ZlcmZsb3cgaGlkZGVuIGlzIHB1dCBvbmx5IGR1cmluZyB0aGUgYW5pbWF0aW9uIGFuZCBvbiB0aGUgY29sbGFwc2VkIHN0YXRlIGJlY2F1c2UgaWYgaXQgaXMgcHV0IG9uIHRoZSBleHBhbmRlZCBzdGF0ZSB0aGVuIGNoaWxkcmVu4oCZcyBib3JkZXIgd2lsbCBiZSBjdXQgKGhvdmVyIC8gZm9jdXMpXG4gICAgICAgICAqL1xuICAgICAgICB0cmlnZ2VyKCdhY2NvcmRpb24nLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnY29sbGFwc2VkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2V4cGFuZGVkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogJ2luaXRpYWwnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzI1MG1zIGN1YmljLWJlemllciguNCwgMCwgLjMsIDEpJywgc3R5bGUoeyBtYXhIZWlnaHQ6ICd7e21heEhlaWdodH19Jywgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPT4gY29sbGFwc2VkJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICAgICAgICAgICcyNTBtcyBjdWJpYy1iZXppZXIoLjQsIDAsIC4zLCAxKScsXG4gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lcyhbc3R5bGUoeyBtYXhIZWlnaHQ6ICd7e21heEhlaWdodH19Jywgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLCBzdHlsZSh7IG1heEhlaWdodDogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pXSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdlNlbGVjdG9yR3JvdXBDb21wb25lbnQge1xuICAgIGdyb3VwID0gaW5wdXQucmVxdWlyZWQ8SW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwPigpO1xuXG4gICAgZm9sZFN5bWJvbCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmdyb3VwKCkuZm9sZGVkID8gJ2NoZXZyb24tZG93bicgOiAnY2hldnJvbi11cCcpKTtcblxuICAgIGFsaWFzRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2FsaWFzJyk7XG4gICAgYWxpYXNCb3VuZGVkQ2xpZW50UmVjdCA9IHNpZ25hbDx7XG4gICAgICAgIG9mZnNldFdpZHRoOiBudW1iZXI7XG4gICAgICAgIG9mZnNldEhlaWdodDogbnVtYmVyO1xuICAgICAgICBzY3JvbGxXaWR0aDogbnVtYmVyO1xuICAgICAgICBzY3JvbGxIZWlnaHQ6IG51bWJlcjtcbiAgICB9Pih7XG4gICAgICAgIG9mZnNldFdpZHRoOiAwLFxuICAgICAgICBvZmZzZXRIZWlnaHQ6IDAsXG4gICAgICAgIHNjcm9sbFdpZHRoOiAwLFxuICAgICAgICBzY3JvbGxIZWlnaHQ6IDAsXG4gICAgfSk7XG5cbiAgICB0b29sdGlwQ29udGVudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5hbGlhc0JvdW5kZWRDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmICghdGhpcy5uYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyLmV4cGFuZGVkKCkgfHwgZWwub2Zmc2V0V2lkdGggPCBlbC5zY3JvbGxXaWR0aCB8fCBlbC5vZmZzZXRIZWlnaHQgPCBlbC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaCh0aGlzLmdyb3VwKCkuYWxpYXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAoKS5kaXNwbGF5VG9rZW5JbnZhbGlkKSB7XG4gICAgICAgICAgICBjb250ZW50LnB1c2godGhpcy5uYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyLnRleHRzKCkudG9rZW5JbnZhbGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250ZW50LmpvaW4oJzxicj4nKTtcbiAgICB9KTtcbiAgICB0b29sdGlwRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy50b29sdGlwQ29udGVudCgpLmxlbmd0aCk7XG5cbiAgICBmb2xkZWRXaXRoRGVsYXkgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgYW5pbWF0aW9uU3RhdGUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5ncm91cCgpLmZvbGRlZCA/ICdjb2xsYXBzZWQnIDogJ2V4cGFuZGVkJykpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBuYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyOiBOYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyXG4gICAgKSB7XG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodC5zZXQoYCR7dGhpcy5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodH1weGApO1xuICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLmFsaWFzRWwoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxpYXNCb3VuZGVkQ2xpZW50UmVjdC5zZXQoe1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXRXaWR0aDogZWwub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aDogZWwuc2Nyb2xsV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodDogZWwuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXAoKS5mb2xkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmZvbGRlZFdpdGhEZWxheS5zZXQodHJ1ZSksIDE1MCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2xkZWRXaXRoRGVsYXkuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWF4SGVpZ2h0ID0gc2lnbmFsKCcwcHgnKTtcblxuICAgIG9uS2V5ZG93blNwYWNlT3JFbnRlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFByZXZlbnQgdG8gdG9nZ2xlIGZvbGRpbmcgd2hlbiBmb2N1cyBpcyBvbiB0aGUgY2hlY2tib3hcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGVudCcpKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUZvbGRpbmcoJGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JHcm91cFByZXNlbnRlci5vbkdyb3VwU2VsZWN0ZWQodGhpcy5ncm91cCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZUZvbGRpbmcoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLm5hdlNlbGVjdG9yR3JvdXBQcmVzZW50ZXIub25Hcm91cFRvZ2dsZUZvbGRpbmcodGhpcy5ncm91cCgpKTtcbiAgICB9XG5cbiAgICBmb2xkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyLmZvbGQodGhpcy5ncm91cCgpKTtcbiAgICB9XG5cbiAgICB1bmZvbGQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLm5hdlNlbGVjdG9yR3JvdXBQcmVzZW50ZXIudW5mb2xkKHRoaXMuZ3JvdXAoKSk7XG4gICAgfVxufVxuIiwiQGlmIChuYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyLmV4cGFuZGVkQWZ0ZXJEZWxheSgpKSB7XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICBhcFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgW2FwVG9vbHRpcF09XCJ0b29sdGlwQ29udGVudCgpXCJcbiAgICAgICAgW2FwVG9vbHRpcERpc2FibGVkXT1cInRvb2x0aXBEaXNhYmxlZCgpXCJcbiAgICAgICAgW2FwVHJlZU5vZGVBY2Nlc3NpYmlsaXR5XT1cImdyb3VwKClcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJvbktleWRvd25TcGFjZU9yRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uS2V5ZG93blNwYWNlT3JFbnRlcigkZXZlbnQpXCI+XG4gICAgICAgIEBpZiAobmF2U2VsZWN0b3JHcm91cFByZXNlbnRlci5pc011bHRpcGxlTW9kZUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgPGFwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW25hbWVdPVwiZ3JvdXAoKS51aWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdyb3VwKCkuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZ3JvdXAoKS5zZWxlY3RhYmxlXCJcbiAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJncm91cCgpLnVuZGV0ZXJtaW5lZFNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJuYXZTZWxlY3Rvckdyb3VwUHJlc2VudGVyLm9uR3JvdXBTZWxlY3RlZChncm91cCgpKVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICBzeW1ib2xJZD1cImZvbGRlclwiXG4gICAgICAgICAgICBzaXplPVwic21cIiAvPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAjYWxpYXNcbiAgICAgICAgICAgIGNsYXNzPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAge3sgZ3JvdXAoKS5hbGlhcyB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgQGlmIChncm91cCgpLmRpc3BsYXlUb2tlbkludmFsaWQpIHtcbiAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICBzeW1ib2xJZD1cImVycm9yX2ZpbGxcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGdyb3VwKCkuZGlzcGxheUNvdW50ZXIpIHtcbiAgICAgICAgICAgIDxhcC1jb3VudGVyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJvcmFuZ2VcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJub3JtYWxcIlxuICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAge3sgZ3JvdXAoKS5jb3VudGVyIH19XG4gICAgICAgICAgICA8L2FwLWNvdW50ZXI+XG4gICAgICAgIH1cblxuICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgY2xhc3M9XCJmb2xkaW5nLWJ1dHRvblwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiZ3JvdXAoKS5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RvZ2dsZSAnICsgZ3JvdXAoKS5hbGlhc1wiXG4gICAgICAgICAgICBbc3ltYm9sSWRdPVwiZm9sZFN5bWJvbCgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInRvZ2dsZUZvbGRpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJ0b2dnbGVGb2xkaW5nKCRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZvbGRpbmcoJGV2ZW50KVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyXCJcbiAgICAgICAgW0BhY2NvcmRpb25dPVwie1xuICAgICAgICAgICAgdmFsdWU6IGFuaW1hdGlvblN0YXRlKCksXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cIj5cbiAgICAgICAgQGlmICghZm9sZGVkV2l0aERlbGF5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZHJlblwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGdyb3VwKCkuY2hpbGRyZW47IHRyYWNrIGNoaWxkLnVpZCkge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKCFjaGlsZC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1uYXYtc2VsZWN0b3ItbGVhZiBbbGVhZl09XCJjaGlsZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICBhcFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgW2FwVG9vbHRpcF09XCJ0b29sdGlwQ29udGVudCgpXCJcbiAgICAgICAgW2FwVG9vbHRpcERpc2FibGVkXT1cInRvb2x0aXBEaXNhYmxlZCgpXCJcbiAgICAgICAgW2FwVHJlZU5vZGVBY2Nlc3NpYmlsaXR5XT1cImdyb3VwKClcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlRm9sZGluZygkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwib25LZXlkb3duU3BhY2VPckVudGVyKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbktleWRvd25TcGFjZU9yRW50ZXIoJGV2ZW50KVwiPlxuICAgICAgICBAaWYgKG5hdlNlbGVjdG9yR3JvdXBQcmVzZW50ZXIuaXNNdWx0aXBsZU1vZGVFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIDxhcC1jaGVja2JveFxuICAgICAgICAgICAgICAgIFtuYW1lXT1cImdyb3VwKCkudWlkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJncm91cCgpLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWdyb3VwKCkuc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ3JvdXAoKS51bmRldGVybWluZWRTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibmF2U2VsZWN0b3JHcm91cFByZXNlbnRlci5vbkdyb3VwU2VsZWN0ZWQoZ3JvdXAoKSlcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBpY3R1cmUtdXJsLXNhbXBsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWN0dXJlLXVybC1zYW1wbGVcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwaWN0dXJlVXJsU2FtcGxlIG9mIGdyb3VwKCkuY2hpbGRyZW5QaWN0dXJlVXJsU2FtcGxlOyB0cmFjayBwaWN0dXJlVXJsU2FtcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIiRhbnkoMTIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJwaWN0dXJlVXJsU2FtcGxlLnVybCA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJwaWN0dXJlVXJsU2FtcGxlLmluaXRpYWxcIiAvPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChncm91cCgpLmRpc3BsYXlDb3VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXAtY291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwib3JhbmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibm9ybWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbm90aWZdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwKCkuY291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcC1jb3VudGVyPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgW3N5bWJvbElkXT1cImZvbGRTeW1ib2woKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZGV0YWlscy1jb250YWluZXJcIlxuICAgICAgICBbQGFjY29yZGlvbl09XCJ7XG4gICAgICAgICAgICB2YWx1ZTogYW5pbWF0aW9uU3RhdGUoKSxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVwiPlxuICAgICAgICBAaWYgKCFmb2xkZWRXaXRoRGVsYXkoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgZ3JvdXAoKS5jaGlsZHJlbjsgdHJhY2sgY2hpbGQudWlkKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNoaWxkLmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1sZWFmIFtsZWFmXT1cImNoaWxkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { computed, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../nav-selector.state";
4
+ export class NavSelectorGroupPresenter {
5
+ navSelectorState;
6
+ expanded = computed(() => this.navSelectorState.expanded());
7
+ texts = computed(() => this.navSelectorState.texts());
8
+ isMultipleModeEnabled = computed(() => this.navSelectorState.isMultipleModeEnabled());
9
+ expandedAfterDelay = computed(() => this.navSelectorState.expandedAfterDelay());
10
+ constructor(navSelectorState) {
11
+ this.navSelectorState = navSelectorState;
12
+ }
13
+ onGroupSelected(group) {
14
+ this.navSelectorState.onNodeSelect(group);
15
+ }
16
+ onGroupToggleFolding(group) {
17
+ this.navSelectorState.onGroupToggleFolding(group);
18
+ }
19
+ fold(group) {
20
+ this.navSelectorState.fold(group);
21
+ }
22
+ unfold(group) {
23
+ this.navSelectorState.unfold(group);
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorGroupPresenter, deps: [{ token: i1.NavSelectorState }], target: i0.ɵɵFactoryTarget.Injectable });
26
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorGroupPresenter });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorGroupPresenter, decorators: [{
29
+ type: Injectable
30
+ }], ctorParameters: () => [{ type: i1.NavSelectorState }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLWdyb3VwLnByZXNlbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL25hdi1zZWxlY3Rvci1ncm91cC9uYXYtc2VsZWN0b3ItZ3JvdXAucHJlc2VudGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLckQsTUFBTSxPQUFPLHlCQUF5QjtJQU1kO0lBTHBCLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN0RCxxQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUN0RixrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUVoRixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQsZUFBZSxDQUFDLEtBQStCO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQStCO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQStCO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUErQjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7dUdBdEJRLHlCQUF5QjsyR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB9IGZyb20gJy4uL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBOYXZTZWxlY3RvclN0YXRlIH0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yLnN0YXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5hdlNlbGVjdG9yR3JvdXBQcmVzZW50ZXIge1xuICAgIGV4cGFuZGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKCkpO1xuICAgIHRleHRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uYXZTZWxlY3RvclN0YXRlLnRleHRzKCkpO1xuICAgIGlzTXVsdGlwbGVNb2RlRW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5pc011bHRpcGxlTW9kZUVuYWJsZWQoKSk7XG4gICAgZXhwYW5kZWRBZnRlckRlbGF5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkQWZ0ZXJEZWxheSgpKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmF2U2VsZWN0b3JTdGF0ZTogTmF2U2VsZWN0b3JTdGF0ZSkge31cblxuICAgIG9uR3JvdXBTZWxlY3RlZChncm91cDogSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwKSB7XG4gICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5vbk5vZGVTZWxlY3QoZ3JvdXApO1xuICAgIH1cblxuICAgIG9uR3JvdXBUb2dnbGVGb2xkaW5nKGdyb3VwOiBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXApIHtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLm9uR3JvdXBUb2dnbGVGb2xkaW5nKGdyb3VwKTtcbiAgICB9XG5cbiAgICBmb2xkKGdyb3VwOiBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXApIHtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvbGQoZ3JvdXApO1xuICAgIH1cblxuICAgIHVuZm9sZChncm91cDogSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwKSB7XG4gICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51bmZvbGQoZ3JvdXApO1xuICAgIH1cbn1cbiJdfQ==