@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,92 @@
1
+ import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';
2
+ import { ChangeDetectionStrategy, Component, computed, effect, input, signal } from '@angular/core';
3
+ import { NavSelectorLeafDetailComponent } from '../nav-selector-leaf-detail/nav-selector-leaf-detail.component';
4
+ import { NavSelectorLeafDetailsPresenter } from '../nav-selector-leaf-details/nav-selector-leaf-details.presenter';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../nav-selector-leaf-details/nav-selector-leaf-details.presenter";
7
+ export class NavSelectorLeafDetailsComponent {
8
+ el;
9
+ navSelectorLeafDetailsPresenter;
10
+ leaf = input.required();
11
+ details = input.required();
12
+ firstDetails = computed(() => this.details().slice(0, this.leaf().viewMoreDetailsDisplayedLimit));
13
+ lastDetails = computed(() => this.details().slice(this.leaf().viewMoreDetailsDisplayedLimit));
14
+ viewMoreDelay = signal(false);
15
+ animationState = computed(() => (this.leaf().viewMoreDisplayable && this.leaf().viewMoreDisplayed ? 'collapsed' : 'expanded'));
16
+ /**
17
+ * The height when details are all displayed
18
+ */
19
+ maxHeight = signal('0px');
20
+ constructor(el, navSelectorLeafDetailsPresenter) {
21
+ this.el = el;
22
+ this.navSelectorLeafDetailsPresenter = navSelectorLeafDetailsPresenter;
23
+ effect(() => {
24
+ if (this.leaf().viewMoreDisplayed) {
25
+ setTimeout(() => this.viewMoreDelay.set(false), 150);
26
+ }
27
+ else {
28
+ this.viewMoreDelay.set(true);
29
+ }
30
+ }, { allowSignalWrites: true });
31
+ }
32
+ ngAfterViewInit() {
33
+ // scrollHeight = leaf + first details displayed when there is a limit
34
+ const height = this.el.nativeElement.scrollHeight;
35
+ // cross multiplication to determine height of remaining details
36
+ this.maxHeight.set(`${(height * this.lastDetails().length) / this.firstDetails().length}px`);
37
+ }
38
+ toggleViewMore() {
39
+ this.navSelectorLeafDetailsPresenter.toggleViewMore(this.leaf());
40
+ }
41
+ onSpaceOrEnter(event) {
42
+ event.stopImmediatePropagation();
43
+ this.toggleViewMore();
44
+ }
45
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorLeafDetailsComponent, deps: [{ token: i0.ElementRef }, { token: i1.NavSelectorLeafDetailsPresenter }], target: i0.ɵɵFactoryTarget.Component });
46
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NavSelectorLeafDetailsComponent, isStandalone: true, selector: "ap-nav-selector-leaf-details", inputs: { leaf: { classPropertyName: "leaf", publicName: "leaf", isSignal: true, isRequired: true, transformFunction: null }, details: { classPropertyName: "details", publicName: "details", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.aria-expanded": "!leaf().viewMoreDisplayable || leaf().viewMoreDisplayed" } }, providers: [NavSelectorLeafDetailsPresenter], ngImport: i0, template: "@for (detail of firstDetails(); track detail.uid) {\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <ap-nav-selector-leaf-detail [detail]=\"detail\" />\n </div>\n}\n\n@if (leaf().viewMoreDisplayable) {\n <div\n class=\"details-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (viewMoreDelay()) {\n @for (detail of lastDetails(); track detail.uid) {\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <ap-nav-selector-leaf-detail [detail]=\"detail\" />\n </div>\n }\n }\n </div>\n\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <a\n tabindex=\"0\"\n role=\"button\"\n class=\"standalone view-more\"\n (keydown.space)=\"onSpaceOrEnter($event)\"\n (keydown.enter)=\"onSpaceOrEnter($event)\"\n (click)=\"toggleViewMore()\">\n @if (leaf().viewMoreDisplayed) {\n {{ navSelectorLeafDetailsPresenter.viewMoreText() }}\n } @else {\n {{ navSelectorLeafDetailsPresenter.viewLessText() }}\n }\n </a>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}:host .detail{display:flex;align-self:stretch}:host .separator{display:flex;padding:0 11px 0 20px;align-items:center;align-self:stretch}:host .rectangle{width:1px;align-self:stretch;background:var(--ref-color-grey-10)}:host .view-more{display:flex;padding:8px;align-items:center;align-self:stretch}:host .details-container{display:flex;flex-direction:column;align-self:stretch}\n"], dependencies: [{ kind: "component", type: NavSelectorLeafDetailComponent, selector: "ap-nav-selector-leaf-detail", inputs: ["detail", "embedded"] }], animations: [
47
+ /**
48
+ * 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)
49
+ */
50
+ trigger('accordion', [
51
+ state('collapsed', style({
52
+ maxHeight: '0',
53
+ overflow: 'hidden',
54
+ })),
55
+ state('expanded', style({
56
+ maxHeight: 'initial',
57
+ })),
58
+ transition('collapsed => expanded', [
59
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' })),
60
+ ]),
61
+ transition('expanded => collapsed', [
62
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', keyframes([style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' }), style({ maxHeight: 0 })])),
63
+ ]),
64
+ ]),
65
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorLeafDetailsComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'ap-nav-selector-leaf-details', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NavSelectorLeafDetailComponent], providers: [NavSelectorLeafDetailsPresenter], host: {
70
+ '[attr.aria-expanded]': '!leaf().viewMoreDisplayable || leaf().viewMoreDisplayed',
71
+ }, animations: [
72
+ /**
73
+ * 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)
74
+ */
75
+ trigger('accordion', [
76
+ state('collapsed', style({
77
+ maxHeight: '0',
78
+ overflow: 'hidden',
79
+ })),
80
+ state('expanded', style({
81
+ maxHeight: 'initial',
82
+ })),
83
+ transition('collapsed => expanded', [
84
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' })),
85
+ ]),
86
+ transition('expanded => collapsed', [
87
+ animate('250ms cubic-bezier(.4, 0, .3, 1)', keyframes([style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' }), style({ maxHeight: 0 })])),
88
+ ]),
89
+ ]),
90
+ ], template: "@for (detail of firstDetails(); track detail.uid) {\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <ap-nav-selector-leaf-detail [detail]=\"detail\" />\n </div>\n}\n\n@if (leaf().viewMoreDisplayable) {\n <div\n class=\"details-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (viewMoreDelay()) {\n @for (detail of lastDetails(); track detail.uid) {\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <ap-nav-selector-leaf-detail [detail]=\"detail\" />\n </div>\n }\n }\n </div>\n\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <a\n tabindex=\"0\"\n role=\"button\"\n class=\"standalone view-more\"\n (keydown.space)=\"onSpaceOrEnter($event)\"\n (keydown.enter)=\"onSpaceOrEnter($event)\"\n (click)=\"toggleViewMore()\">\n @if (leaf().viewMoreDisplayed) {\n {{ navSelectorLeafDetailsPresenter.viewMoreText() }}\n } @else {\n {{ navSelectorLeafDetailsPresenter.viewLessText() }}\n }\n </a>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}:host .detail{display:flex;align-self:stretch}:host .separator{display:flex;padding:0 11px 0 20px;align-items:center;align-self:stretch}:host .rectangle{width:1px;align-self:stretch;background:var(--ref-color-grey-10)}:host .view-more{display:flex;padding:8px;align-items:center;align-self:stretch}:host .details-container{display:flex;flex-direction:column;align-self:stretch}\n"] }]
91
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NavSelectorLeafDetailsPresenter }] });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLWxlYWYtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy9uYXYtc2VsZWN0b3ItbGVhZi1kZXRhaWxzL25hdi1zZWxlY3Rvci1sZWFmLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLWxlYWYtZGV0YWlscy9uYXYtc2VsZWN0b3ItbGVhZi1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvSCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQzs7O0FBMkNuSCxNQUFNLE9BQU8sK0JBQStCO0lBaUI1QjtJQUNEO0lBakJYLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUEyQixDQUFDO0lBQ2pELE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFvQyxDQUFDO0lBRTdELFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztJQUNsRyxXQUFXLEdBQUcsUUFB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QUUsQ0FBQyxDQUFDLENBQUMsQ0FDbEc7aUJBQ0osQ0FBQzthQUNMLENBQUM7U0FDTDs7MkZBRVEsK0JBQStCO2tCQXpDM0MsU0FBUzsrQkFDSSw4QkFBOEIsY0FHNUIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsOEJBQThCLENBQUMsYUFDOUIsQ0FBQywrQkFBK0IsQ0FBQyxRQUN0Qzt3QkFDRixzQkFBc0IsRUFBRSx5REFBeUQ7cUJBQ3BGLGNBQ1c7d0JBQ1I7OzJCQUVHO3dCQUNILE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ2pCLEtBQUssQ0FDRCxXQUFXLEVBQ1gsS0FBSyxDQUFDO2dDQUNGLFNBQVMsRUFBRSxHQUFHO2dDQUNkLFFBQVEsRUFBRSxRQUFROzZCQUNyQixDQUFDLENBQ0w7NEJBQ0QsS0FBSyxDQUNELFVBQVUsRUFDVixLQUFLLENBQUM7Z0NBQ0YsU0FBUyxFQUFFLFNBQVM7NkJBQ3ZCLENBQUMsQ0FDTDs0QkFDRCxVQUFVLENBQUMsdUJBQXVCLEVBQUU7Z0NBQ2hDLE9BQU8sQ0FBQyxrQ0FBa0MsRUFBRSxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUN6RyxDQUFDOzRCQUNGLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRTtnQ0FDaEMsT0FBTyxDQUNILGtDQUFrQyxFQUNsQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDbEc7NkJBQ0osQ0FBQzt5QkFDTCxDQUFDO3FCQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwga2V5ZnJhbWVzLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludGVybmFsTmF2U2VsZWN0b3JMZWFmLCBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMgfSBmcm9tICcuLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JMZWFmRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yLWxlYWYtZGV0YWlsL25hdi1zZWxlY3Rvci1sZWFmLWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JMZWFmRGV0YWlsc1ByZXNlbnRlciB9IGZyb20gJy4uL25hdi1zZWxlY3Rvci1sZWFmLWRldGFpbHMvbmF2LXNlbGVjdG9yLWxlYWYtZGV0YWlscy5wcmVzZW50ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwLW5hdi1zZWxlY3Rvci1sZWFmLWRldGFpbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXYtc2VsZWN0b3ItbGVhZi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXYtc2VsZWN0b3ItbGVhZi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbTmF2U2VsZWN0b3JMZWFmRGV0YWlsQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtOYXZTZWxlY3RvckxlYWZEZXRhaWxzUHJlc2VudGVyXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICchbGVhZigpLnZpZXdNb3JlRGlzcGxheWFibGUgfHwgbGVhZigpLnZpZXdNb3JlRGlzcGxheWVkJyxcbiAgICB9LFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE92ZXJmbG93IGhpZGRlbiBpcyBwdXQgb25seSBkdXJpbmcgdGhlIGFuaW1hdGlvbiBhbmQgb24gdGhlIGNvbGxhcHNlZCBzdGF0ZSBiZWNhdXNlIGlmIGl0IGlzIHB1dCBvbiB0aGUgZXhwYW5kZWQgc3RhdGUgdGhlbiBjaGlsZHJlbuKAmXMgYm9yZGVyIHdpbGwgYmUgY3V0IChob3ZlciAvIGZvY3VzKVxuICAgICAgICAgKi9cbiAgICAgICAgdHJpZ2dlcignYWNjb3JkaW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2V4cGFuZGVkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogJ2luaXRpYWwnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzI1MG1zIGN1YmljLWJlemllciguNCwgMCwgLjMsIDEpJywgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicsIG1heEhlaWdodDogJ3t7bWF4SGVpZ2h0fX0nIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPT4gY29sbGFwc2VkJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICAgICAgICAgICcyNTBtcyBjdWJpYy1iZXppZXIoLjQsIDAsIC4zLCAxKScsXG4gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lcyhbc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicsIG1heEhlaWdodDogJ3t7bWF4SGVpZ2h0fX0nIH0pLCBzdHlsZSh7IG1heEhlaWdodDogMCB9KV0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvckxlYWZEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgbGVhZiA9IGlucHV0LnJlcXVpcmVkPEludGVybmFsTmF2U2VsZWN0b3JMZWFmPigpO1xuICAgIGRldGFpbHMgPSBpbnB1dC5yZXF1aXJlZDxJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHNbXT4oKTtcblxuICAgIGZpcnN0RGV0YWlscyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGV0YWlscygpLnNsaWNlKDAsIHRoaXMubGVhZigpLnZpZXdNb3JlRGV0YWlsc0Rpc3BsYXllZExpbWl0KSk7XG4gICAgbGFzdERldGFpbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRldGFpbHMoKS5zbGljZSh0aGlzLmxlYWYoKS52aWV3TW9yZURldGFpbHNEaXNwbGF5ZWRMaW1pdCkpO1xuXG4gICAgdmlld01vcmVEZWxheSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBhbmltYXRpb25TdGF0ZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmxlYWYoKS52aWV3TW9yZURpc3BsYXlhYmxlICYmIHRoaXMubGVhZigpLnZpZXdNb3JlRGlzcGxheWVkID8gJ2NvbGxhcHNlZCcgOiAnZXhwYW5kZWQnKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaGVpZ2h0IHdoZW4gZGV0YWlscyBhcmUgYWxsIGRpc3BsYXllZFxuICAgICAqL1xuICAgIG1heEhlaWdodCA9IHNpZ25hbCgnMHB4Jyk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIG5hdlNlbGVjdG9yTGVhZkRldGFpbHNQcmVzZW50ZXI6IE5hdlNlbGVjdG9yTGVhZkRldGFpbHNQcmVzZW50ZXJcbiAgICApIHtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlYWYoKS52aWV3TW9yZURpc3BsYXllZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudmlld01vcmVEZWxheS5zZXQoZmFsc2UpLCAxNTApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld01vcmVEZWxheS5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gc2Nyb2xsSGVpZ2h0ID0gbGVhZiArIGZpcnN0IGRldGFpbHMgZGlzcGxheWVkIHdoZW4gdGhlcmUgaXMgYSBsaW1pdFxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAvLyBjcm9zcyBtdWx0aXBsaWNhdGlvbiB0byBkZXRlcm1pbmUgaGVpZ2h0IG9mIHJlbWFpbmluZyBkZXRhaWxzXG4gICAgICAgIHRoaXMubWF4SGVpZ2h0LnNldChgJHsoaGVpZ2h0ICogdGhpcy5sYXN0RGV0YWlscygpLmxlbmd0aCkgLyB0aGlzLmZpcnN0RGV0YWlscygpLmxlbmd0aH1weGApO1xuICAgIH1cblxuICAgIHRvZ2dsZVZpZXdNb3JlKCkge1xuICAgICAgICB0aGlzLm5hdlNlbGVjdG9yTGVhZkRldGFpbHNQcmVzZW50ZXIudG9nZ2xlVmlld01vcmUodGhpcy5sZWFmKCkpO1xuICAgIH1cblxuICAgIG9uU3BhY2VPckVudGVyKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50b2dnbGVWaWV3TW9yZSgpO1xuICAgIH1cbn1cbiIsIkBmb3IgKGRldGFpbCBvZiBmaXJzdERldGFpbHMoKTsgdHJhY2sgZGV0YWlsLnVpZCkge1xuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY3RhbmdsZVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1sZWFmLWRldGFpbCBbZGV0YWlsXT1cImRldGFpbFwiIC8+XG4gICAgPC9kaXY+XG59XG5cbkBpZiAobGVhZigpLnZpZXdNb3JlRGlzcGxheWFibGUpIHtcbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZGV0YWlscy1jb250YWluZXJcIlxuICAgICAgICBbQGFjY29yZGlvbl09XCJ7XG4gICAgICAgICAgICB2YWx1ZTogYW5pbWF0aW9uU3RhdGUoKSxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVwiPlxuICAgICAgICBAaWYgKHZpZXdNb3JlRGVsYXkoKSkge1xuICAgICAgICAgICAgQGZvciAoZGV0YWlsIG9mIGxhc3REZXRhaWxzKCk7IHRyYWNrIGRldGFpbC51aWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0YW5nbGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxhcC1uYXYtc2VsZWN0b3ItbGVhZi1kZXRhaWwgW2RldGFpbF09XCJkZXRhaWxcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWN0YW5nbGVcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInN0YW5kYWxvbmUgdmlldy1tb3JlXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uU3BhY2VPckVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25TcGFjZU9yRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVmlld01vcmUoKVwiPlxuICAgICAgICAgICAgQGlmIChsZWFmKCkudmlld01vcmVEaXNwbGF5ZWQpIHtcbiAgICAgICAgICAgICAgICB7eyBuYXZTZWxlY3RvckxlYWZEZXRhaWxzUHJlc2VudGVyLnZpZXdNb3JlVGV4dCgpIH19XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICB7eyBuYXZTZWxlY3RvckxlYWZEZXRhaWxzUHJlc2VudGVyLnZpZXdMZXNzVGV4dCgpIH19XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
@@ -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 NavSelectorLeafDetailsPresenter {
5
+ navSelectorState;
6
+ viewMoreText = computed(() => this.navSelectorState.texts().viewMore);
7
+ viewLessText = computed(() => this.navSelectorState.texts().viewLess);
8
+ constructor(navSelectorState) {
9
+ this.navSelectorState = navSelectorState;
10
+ }
11
+ toggleViewMore(leaf) {
12
+ if (leaf.viewMoreDisplayed) {
13
+ this.viewMore(leaf);
14
+ }
15
+ else {
16
+ this.viewLess(leaf);
17
+ }
18
+ }
19
+ viewMore(leaf) {
20
+ this.navSelectorState.viewMore(leaf);
21
+ }
22
+ viewLess(leaf) {
23
+ this.navSelectorState.viewLess(leaf);
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorLeafDetailsPresenter, deps: [{ token: i1.NavSelectorState }], target: i0.ɵɵFactoryTarget.Injectable });
26
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorLeafDetailsPresenter });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorLeafDetailsPresenter, decorators: [{
29
+ type: Injectable
30
+ }], ctorParameters: () => [{ type: i1.NavSelectorState }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLWxlYWYtZGV0YWlscy5wcmVzZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy9uYXYtc2VsZWN0b3ItbGVhZi1kZXRhaWxzL25hdi1zZWxlY3Rvci1sZWFmLWRldGFpbHMucHJlc2VudGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLckQsTUFBTSxPQUFPLCtCQUErQjtJQUlwQjtJQUhwQixZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0RSxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQsY0FBYyxDQUFDLElBQTZCO1FBQ3hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBNkI7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQTZCO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQzt1R0FwQlEsK0JBQStCOzJHQUEvQiwrQkFBK0I7OzJGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYgfSBmcm9tICcuLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JTdGF0ZSB9IGZyb20gJy4uL25hdi1zZWxlY3Rvci5zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvckxlYWZEZXRhaWxzUHJlc2VudGVyIHtcbiAgICB2aWV3TW9yZVRleHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm5hdlNlbGVjdG9yU3RhdGUudGV4dHMoKS52aWV3TW9yZSk7XG4gICAgdmlld0xlc3NUZXh0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5uYXZTZWxlY3RvclN0YXRlLnRleHRzKCkudmlld0xlc3MpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZTZWxlY3RvclN0YXRlOiBOYXZTZWxlY3RvclN0YXRlKSB7fVxuXG4gICAgdG9nZ2xlVmlld01vcmUobGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpIHtcbiAgICAgICAgaWYgKGxlYWYudmlld01vcmVEaXNwbGF5ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld01vcmUobGVhZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdMZXNzKGxlYWYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmlld01vcmUobGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpIHtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnZpZXdNb3JlKGxlYWYpO1xuICAgIH1cblxuICAgIHZpZXdMZXNzKGxlYWY6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKSB7XG4gICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS52aWV3TGVzcyhsZWFmKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,123 @@
1
+ import { IconButtonComponent } from '@agorapulse/ui-components/icon-button';
2
+ import { InputSearchComponent } from '@agorapulse/ui-components/input-search';
3
+ import { apArrowExpand, apArrowReduce, apSearch, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';
4
+ import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';
5
+ import { NgTemplateOutlet } from '@angular/common';
6
+ import { afterNextRender, ChangeDetectionStrategy, Component, computed, contentChild, contentChildren, effect, input, model, TemplateRef, } from '@angular/core';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { EventPluginsModule } from '@tinkoff/ng-event-plugins';
9
+ import { NavSelectorCategoryComponent } from './nav-selector-category/nav-selector-category.component';
10
+ import { NavSelectorGroupComponent } from './nav-selector-group/nav-selector-group.component';
11
+ import { NavSelectorLeafComponent } from './nav-selector-leaf/nav-selector-leaf.component';
12
+ import { NavSelectorState } from './nav-selector.state';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "./nav-selector.state";
15
+ import * as i2 from "@angular/forms";
16
+ let nextUniqueId = 0;
17
+ export class NavSelectorComponent {
18
+ navSelectorState;
19
+ el;
20
+ navSelectorEntries = input.required();
21
+ translatedTexts = input.required();
22
+ multipleModeEnabled = input(false);
23
+ detailsDisplayedLimit = input(Number.MAX_SAFE_INTEGER);
24
+ /**
25
+ * If true, the nav selector will be expanded by default. Even if the width of the screen is smaller than 1280px.
26
+ */
27
+ forceExpanded = input(false);
28
+ selectedEntryUids = model.required();
29
+ headerProjection = contentChild('header');
30
+ footerProjection = contentChild('footer');
31
+ displayFooter = computed(() => this.footerProjection() !== undefined);
32
+ leafActionProjection = contentChildren('leafAction');
33
+ expansionState = computed(() => (this.navSelectorState.expanded() ? 'expanded' : 'minified'));
34
+ componentUid = `nav-selector-${nextUniqueId++}`;
35
+ constructor(navSelectorState, el) {
36
+ this.navSelectorState = navSelectorState;
37
+ this.el = el;
38
+ navSelectorState.registerOnSelectedUidsChange(selectedUids => {
39
+ this.selectedEntryUids.set(selectedUids);
40
+ });
41
+ afterNextRender(() => {
42
+ if (!this.forceExpanded() && document.body.clientWidth < 1200) {
43
+ this.navSelectorState.toggleExpanded();
44
+ }
45
+ });
46
+ effect(() => {
47
+ this.navSelectorState.updateMultiModeEnabled(this.multipleModeEnabled());
48
+ if (!this.navSelectorState.filteredEntries().length) {
49
+ this.navSelectorState.updateEntries(this.navSelectorEntries(), this.selectedEntryUids(), this.detailsDisplayedLimit());
50
+ }
51
+ }, { allowSignalWrites: true });
52
+ effect(() => {
53
+ this.navSelectorState.updateDetailsDisplayedLimit(this.detailsDisplayedLimit());
54
+ }, { allowSignalWrites: true });
55
+ const leafActionProjectionEffect = effect(() => {
56
+ if (this.leafActionProjection()) {
57
+ this.navSelectorState.updateLeafAction(this.leafActionProjection());
58
+ leafActionProjectionEffect.destroy();
59
+ }
60
+ }, { manualCleanup: true, allowSignalWrites: true });
61
+ effect(() => {
62
+ this.navSelectorState.onSelectionChange(this.selectedEntryUids());
63
+ }, { allowSignalWrites: true });
64
+ effect(() => {
65
+ this.navSelectorState.updateTexts(this.translatedTexts());
66
+ }, { allowSignalWrites: true });
67
+ }
68
+ onArrowDown($event) {
69
+ if (this.el.nativeElement.querySelector('.nav-selector__content').contains(document.activeElement)) {
70
+ $event.stopImmediatePropagation();
71
+ this.navSelectorState.onArrowDown();
72
+ setTimeout(() => this.el.nativeElement.querySelector('[role="treeitem"][tabindex="0"]').focus());
73
+ }
74
+ }
75
+ onArrowUp($event) {
76
+ if (this.el.nativeElement.querySelector('.nav-selector__content').contains(document.activeElement)) {
77
+ $event.stopImmediatePropagation();
78
+ this.navSelectorState.onArrowUp();
79
+ setTimeout(() => this.el.nativeElement.querySelector('[role="treeitem"][tabindex="0"]').focus());
80
+ }
81
+ }
82
+ TemplateRef = TemplateRef;
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorComponent, deps: [{ token: i1.NavSelectorState }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
84
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NavSelectorComponent, isStandalone: true, selector: "ap-nav-selector", inputs: { navSelectorEntries: { classPropertyName: "navSelectorEntries", publicName: "navSelectorEntries", isSignal: true, isRequired: true, transformFunction: null }, translatedTexts: { classPropertyName: "translatedTexts", publicName: "translatedTexts", isSignal: true, isRequired: true, transformFunction: null }, multipleModeEnabled: { classPropertyName: "multipleModeEnabled", publicName: "multipleModeEnabled", isSignal: true, isRequired: false, transformFunction: null }, detailsDisplayedLimit: { classPropertyName: "detailsDisplayedLimit", publicName: "detailsDisplayedLimit", isSignal: true, isRequired: false, transformFunction: null }, forceExpanded: { classPropertyName: "forceExpanded", publicName: "forceExpanded", isSignal: true, isRequired: false, transformFunction: null }, selectedEntryUids: { classPropertyName: "selectedEntryUids", publicName: "selectedEntryUids", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selectedEntryUids: "selectedEntryUidsChange" }, host: { attributes: { "role": "tree" }, listeners: { "keydown.arrowDown": "onArrowDown($event)", "keydown.arrowUp": "onArrowUp($event)" }, properties: { "class.minified": "!navSelectorState.expanded()" } }, providers: [NavSelectorState, withSymbols(apArrowExpand, apArrowReduce, apSearch)], queries: [{ propertyName: "headerProjection", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "footerProjection", first: true, predicate: ["footer"], descendants: true, isSignal: true }, { propertyName: "leafActionProjection", predicate: ["leafAction"], isSignal: true }], ngImport: i0, template: "<nav [@expand]=\"expansionState()\">\n @let headerProjectionNotNull = headerProjection();\n @let footerProjectionNotNull = footerProjection();\n\n @if (navSelectorState.expandedAfterDelay()) {\n <div class=\"nav-selector__header\">\n <span class=\"h3\">{{ translatedTexts().title }}</span>\n\n <button\n type=\"button\"\n class=\"expand-button expanded\"\n (click)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-reduce\" />\n </button>\n\n\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-input-search\n [id]=\"componentUid + '_search'\"\n class=\"nav-selector-search\"\n [placeholder]=\"translatedTexts().searchPlaceholder\"\n [ngModel]=\"navSelectorState.search()\"\n (ngModelChange)=\"navSelectorState.search.set($event ?? '')\" />\n </div>\n\n <div\n class=\"nav-selector__content\"\n role=\"tree\">\n @for (entry of navSelectorState.filteredEntries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" />\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" />\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"$any(entry)\" />\n }\n </div>\n }\n }\n @if (navSelectorState.noResults()) {\n <div class=\"no-result\">{{ translatedTexts().noResults }}</div>\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n } @else {\n <div class=\"nav-selector__header\">\n <button\n type=\"button\"\n class=\"expand-button\"\n (click)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-expand\" />\n </button>\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-icon-button (onClick)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol symbolId=\"search\" />\n </ap-icon-button>\n </div>\n\n <div class=\"nav-selector__content\">\n @for (entry of navSelectorState.filteredEntries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" />\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" />\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"entry\" />\n }\n </div>\n }\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n }\n</nav>\n", styles: [":host{display:flex;height:100%;flex-direction:column;align-items:flex-start;flex-shrink:0;width:224px;max-width:224px}@media only screen and (min-device-width: 1400px){:host{width:100%;max-width:250px}}:host :hover .expand-button.expanded{animation-name:translateExpandButton}:host nav{display:flex;height:100%;width:100%;flex-direction:column;align-items:flex-start;flex-shrink:0;overflow:hidden;border-right:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header{position:relative;display:flex;padding:var(--ref-spacing-xs) var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;gap:8px;align-self:stretch;border-bottom:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header .h3{color:var(--ref-color-grey-100);font-family:Averta;font-size:var(--sys-text-h3-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-lg)}:host .nav-selector__header .expand-button-container{position:absolute;right:0;top:var(--ref-spacing-xs)}:host .nav-selector__header .expand-button{animation-duration:70ms;animation-timing-function:cubic-bezier(0,0,.2,1);animation-fill-mode:forwards;display:flex;width:24px;height:24px;justify-content:center;align-items:center;background:none;border:1px solid var(--ref-color-grey-20);border-top-left-radius:var(--ref-border-radius-sm);border-bottom-left-radius:var(--ref-border-radius-sm);cursor:pointer}@keyframes translateExpandButton{0%{transform:translate(100%)}to{transform:translate(0)}}:host .nav-selector__header .expand-button.expanded{position:absolute;right:0;top:12px;transform:translate(100%)}:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-reduce],:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-expand]{color:var(--ref-color-grey-80)}:host .nav-selector__header .expand-button:focus{border-radius:var(--ref-border-radius-sm) 0px 0px var(--ref-border-radius-sm);border-top:1px solid var(--ref-color-grey-20);border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-10);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host .nav-selector__header .expand-button:focus.expanded{animation-name:translateExpandButton}:host .nav-selector__header .expand-button:hover{background-color:var(--ref-color-grey-10)}:host .nav-selector__header .expand-button:active{background-color:var(--ref-color-grey-20)}:host .nav-selector__header .nav-selector-search{width:100%}:host .nav-selector__content{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;overflow:auto}:host .nav-selector__content .entry{padding:var(--ref-spacing-xxs);align-self:stretch;display:flex;flex-direction:column}:host .nav-selector__content .entry+.entry{border-top:1px solid var(--sys-border-color-default)}:host .nav-selector__content .no-result{display:flex;padding:var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;color:var(--ref-color-grey-80);font-family:Averta;font-size:var(--ref-font-size-sm);font-style:italic;font-weight:400;line-height:var(--ref-font-line-height-sm)}:host .nav-selector__footer{display:flex;padding:var(--ref-spacing-xs);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;border-top:1px solid var(--sys-border-color-default);background:var(--ref-color-white)}:host.minified nav{width:64px}:host.minified nav .nav-selector__header{align-items:center}:host.minified nav .nav-selector__content .entry{padding:var(--ref-spacing-xxxs)}:host.minified nav .nav-selector__footer{padding:var(--ref-spacing-xs) var(--ref-spacing-xxxs) var(--ref-spacing-xs) var(--ref-spacing-xxxs)}\n"], dependencies: [{ kind: "component", type: NavSelectorLeafComponent, selector: "ap-nav-selector-leaf", inputs: ["leaf"] }, { kind: "component", type: NavSelectorGroupComponent, selector: "ap-nav-selector-group", inputs: ["group"] }, { kind: "component", type: NavSelectorCategoryComponent, selector: "ap-nav-selector-category", inputs: ["category"] }, { kind: "component", type: InputSearchComponent, selector: "ap-input-search", inputs: ["id", "placeholder", "clearable"], outputs: ["focus", "blur", "keyup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: IconButtonComponent, selector: "ap-icon-button", inputs: ["ariaLabel", "name", "color", "disabled", "menuTrigger", "locked", "loading", "type"], outputs: ["onClick", "onFocus", "onBlur", "menuOpened", "menuClosed"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: EventPluginsModule }], animations: [
85
+ trigger('expand', [
86
+ state('expanded', style({ width: '100%' })),
87
+ state('minified', style({ with: '64px' })),
88
+ transition('expanded => minified', animate('250ms cubic-bezier(.4, 0, .3, 1)')),
89
+ transition('minified => expanded', animate('250ms cubic-bezier(.4, 0, .3, 1)',
90
+ // Force animation to do not be with 100% instantly
91
+ keyframes([style({ width: '64px' }), style({ width: '50%' }), style({ width: '100%' })]))),
92
+ ]),
93
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
94
+ }
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorComponent, decorators: [{
96
+ type: Component,
97
+ args: [{ selector: 'ap-nav-selector', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
98
+ NavSelectorLeafComponent,
99
+ NavSelectorGroupComponent,
100
+ NavSelectorCategoryComponent,
101
+ InputSearchComponent,
102
+ FormsModule,
103
+ SymbolComponent,
104
+ IconButtonComponent,
105
+ NgTemplateOutlet,
106
+ EventPluginsModule,
107
+ ], providers: [NavSelectorState, withSymbols(apArrowExpand, apArrowReduce, apSearch)], host: {
108
+ '[class.minified]': '!navSelectorState.expanded()',
109
+ role: 'tree',
110
+ '(keydown.arrowDown)': 'onArrowDown($event)',
111
+ '(keydown.arrowUp)': 'onArrowUp($event)',
112
+ }, animations: [
113
+ trigger('expand', [
114
+ state('expanded', style({ width: '100%' })),
115
+ state('minified', style({ with: '64px' })),
116
+ transition('expanded => minified', animate('250ms cubic-bezier(.4, 0, .3, 1)')),
117
+ transition('minified => expanded', animate('250ms cubic-bezier(.4, 0, .3, 1)',
118
+ // Force animation to do not be with 100% instantly
119
+ keyframes([style({ width: '64px' }), style({ width: '50%' }), style({ width: '100%' })]))),
120
+ ]),
121
+ ], template: "<nav [@expand]=\"expansionState()\">\n @let headerProjectionNotNull = headerProjection();\n @let footerProjectionNotNull = footerProjection();\n\n @if (navSelectorState.expandedAfterDelay()) {\n <div class=\"nav-selector__header\">\n <span class=\"h3\">{{ translatedTexts().title }}</span>\n\n <button\n type=\"button\"\n class=\"expand-button expanded\"\n (click)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-reduce\" />\n </button>\n\n\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-input-search\n [id]=\"componentUid + '_search'\"\n class=\"nav-selector-search\"\n [placeholder]=\"translatedTexts().searchPlaceholder\"\n [ngModel]=\"navSelectorState.search()\"\n (ngModelChange)=\"navSelectorState.search.set($event ?? '')\" />\n </div>\n\n <div\n class=\"nav-selector__content\"\n role=\"tree\">\n @for (entry of navSelectorState.filteredEntries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" />\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" />\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"$any(entry)\" />\n }\n </div>\n }\n }\n @if (navSelectorState.noResults()) {\n <div class=\"no-result\">{{ translatedTexts().noResults }}</div>\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n } @else {\n <div class=\"nav-selector__header\">\n <button\n type=\"button\"\n class=\"expand-button\"\n (click)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-expand\" />\n </button>\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-icon-button (onClick)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol symbolId=\"search\" />\n </ap-icon-button>\n </div>\n\n <div class=\"nav-selector__content\">\n @for (entry of navSelectorState.filteredEntries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" />\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" />\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"entry\" />\n }\n </div>\n }\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n }\n</nav>\n", styles: [":host{display:flex;height:100%;flex-direction:column;align-items:flex-start;flex-shrink:0;width:224px;max-width:224px}@media only screen and (min-device-width: 1400px){:host{width:100%;max-width:250px}}:host :hover .expand-button.expanded{animation-name:translateExpandButton}:host nav{display:flex;height:100%;width:100%;flex-direction:column;align-items:flex-start;flex-shrink:0;overflow:hidden;border-right:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header{position:relative;display:flex;padding:var(--ref-spacing-xs) var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;gap:8px;align-self:stretch;border-bottom:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header .h3{color:var(--ref-color-grey-100);font-family:Averta;font-size:var(--sys-text-h3-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-lg)}:host .nav-selector__header .expand-button-container{position:absolute;right:0;top:var(--ref-spacing-xs)}:host .nav-selector__header .expand-button{animation-duration:70ms;animation-timing-function:cubic-bezier(0,0,.2,1);animation-fill-mode:forwards;display:flex;width:24px;height:24px;justify-content:center;align-items:center;background:none;border:1px solid var(--ref-color-grey-20);border-top-left-radius:var(--ref-border-radius-sm);border-bottom-left-radius:var(--ref-border-radius-sm);cursor:pointer}@keyframes translateExpandButton{0%{transform:translate(100%)}to{transform:translate(0)}}:host .nav-selector__header .expand-button.expanded{position:absolute;right:0;top:12px;transform:translate(100%)}:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-reduce],:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-expand]{color:var(--ref-color-grey-80)}:host .nav-selector__header .expand-button:focus{border-radius:var(--ref-border-radius-sm) 0px 0px var(--ref-border-radius-sm);border-top:1px solid var(--ref-color-grey-20);border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-10);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host .nav-selector__header .expand-button:focus.expanded{animation-name:translateExpandButton}:host .nav-selector__header .expand-button:hover{background-color:var(--ref-color-grey-10)}:host .nav-selector__header .expand-button:active{background-color:var(--ref-color-grey-20)}:host .nav-selector__header .nav-selector-search{width:100%}:host .nav-selector__content{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;overflow:auto}:host .nav-selector__content .entry{padding:var(--ref-spacing-xxs);align-self:stretch;display:flex;flex-direction:column}:host .nav-selector__content .entry+.entry{border-top:1px solid var(--sys-border-color-default)}:host .nav-selector__content .no-result{display:flex;padding:var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;color:var(--ref-color-grey-80);font-family:Averta;font-size:var(--ref-font-size-sm);font-style:italic;font-weight:400;line-height:var(--ref-font-line-height-sm)}:host .nav-selector__footer{display:flex;padding:var(--ref-spacing-xs);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;border-top:1px solid var(--sys-border-color-default);background:var(--ref-color-white)}:host.minified nav{width:64px}:host.minified nav .nav-selector__header{align-items:center}:host.minified nav .nav-selector__content .entry{padding:var(--ref-spacing-xxxs)}:host.minified nav .nav-selector__footer{padding:var(--ref-spacing-xs) var(--ref-spacing-xxxs) var(--ref-spacing-xs) var(--ref-spacing-xxxs)}\n"] }]
122
+ }], ctorParameters: () => [{ type: i1.NavSelectorState }, { type: i0.ElementRef }] });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL25hdi1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy9uYXYtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBQ2YsTUFBTSxFQUVOLEtBQUssRUFDTCxLQUFLLEVBQ0wsV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsd0JBQXdCLEVB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TUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQ0o7eUJBQ0osQ0FBQztxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2ljb24tYnV0dG9uJztcbmltcG9ydCB7IElucHV0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9pbnB1dC1zZWFyY2gnO1xuaW1wb3J0IHsgYXBBcnJvd0V4cGFuZCwgYXBBcnJvd1JlZHVjZSwgYXBTZWFyY2gsIFN5bWJvbENvbXBvbmVudCwgd2l0aFN5bWJvbHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgYW5pbWF0ZSwga2V5ZnJhbWVzLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZCxcbiAgICBjb250ZW50Q2hpbGRyZW4sXG4gICAgZWZmZWN0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5wdXQsXG4gICAgbW9kZWwsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFdmVudFBsdWdpbnNNb2R1bGUgfSBmcm9tICdAdGlua29mZi9uZy1ldmVudC1wbHVnaW5zJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yRW50cnksIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzIH0gZnJvbSAnLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JDYXRlZ29yeUNvbXBvbmVudCB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWNhdGVnb3J5L25hdi1zZWxlY3Rvci1jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JHcm91cENvbXBvbmVudCB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWdyb3VwL25hdi1zZWxlY3Rvci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JMZWFmQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtc2VsZWN0b3ItbGVhZi9uYXYtc2VsZWN0b3ItbGVhZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JTdGF0ZSB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLnN0YXRlJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXAtbmF2LXNlbGVjdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2LXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXYtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmF2U2VsZWN0b3JMZWFmQ29tcG9uZW50LFxuICAgICAgICBOYXZTZWxlY3Rvckdyb3VwQ29tcG9uZW50LFxuICAgICAgICBOYXZTZWxlY3RvckNhdGVnb3J5Q29tcG9uZW50LFxuICAgICAgICBJbnB1dFNlYXJjaENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFN5bWJvbENvbXBvbmVudCxcbiAgICAgICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgRXZlbnRQbHVnaW5zTW9kdWxlLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbTmF2U2VsZWN0b3JTdGF0ZSwgd2l0aFN5bWJvbHMoYXBBcnJvd0V4cGFuZCwgYXBBcnJvd1JlZHVjZSwgYXBTZWFyY2gpXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubWluaWZpZWRdJzogJyFuYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKCknLFxuICAgICAgICByb2xlOiAndHJlZScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd0Rvd24pJzogJ29uQXJyb3dEb3duKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dVcCknOiAnb25BcnJvd1VwKCRldmVudCknLFxuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdleHBhbmQnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IHdpZHRoOiAnMTAwJScgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ21pbmlmaWVkJywgc3R5bGUoeyB3aXRoOiAnNjRweCcgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPT4gbWluaWZpZWQnLCBhbmltYXRlKCcyNTBtcyBjdWJpYy1iZXppZXIoLjQsIDAsIC4zLCAxKScpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXG4gICAgICAgICAgICAgICAgJ21pbmlmaWVkID0+IGV4cGFuZGVkJyxcbiAgICAgICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICAgICAnMjUwbXMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMywgMSknLFxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JjZSBhbmltYXRpb24gdG8gZG8gbm90IGJlIHdpdGggMTAwJSBpbnN0YW50bHlcbiAgICAgICAgICAgICAgICAgICAga2V5ZnJhbWVzKFtzdHlsZSh7IHdpZHRoOiAnNjRweCcgfSksIHN0eWxlKHsgd2lkdGg6ICc1MCUnIH0pLCBzdHlsZSh7IHdpZHRoOiAnMTAwJScgfSldKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdlNlbGVjdG9yQ29tcG9uZW50IHtcbiAgICBuYXZTZWxlY3RvckVudHJpZXMgPSBpbnB1dC5yZXF1aXJlZDxOYXZTZWxlY3RvckVudHJ5W10+KCk7XG4gICAgdHJhbnNsYXRlZFRleHRzID0gaW5wdXQucmVxdWlyZWQ8TmF2U2VsZWN0b3JUcmFuc2xhdGVkVGV4dHM+KCk7XG4gICAgbXVsdGlwbGVNb2RlRW5hYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIGRldGFpbHNEaXNwbGF5ZWRMaW1pdCA9IGlucHV0PG51bWJlcj4oTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgdGhlIG5hdiBzZWxlY3RvciB3aWxsIGJlIGV4cGFuZGVkIGJ5IGRlZmF1bHQuIEV2ZW4gaWYgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gaXMgc21hbGxlciB0aGFuIDEyODBweC5cbiAgICAgKi9cbiAgICBmb3JjZUV4cGFuZGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgc2VsZWN0ZWRFbnRyeVVpZHMgPSBtb2RlbC5yZXF1aXJlZDxzdHJpbmdbXT4oKTtcblxuICAgIGhlYWRlclByb2plY3Rpb24gPSBjb250ZW50Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdoZWFkZXInKTtcbiAgICBmb290ZXJQcm9qZWN0aW9uID0gY29udGVudENoaWxkPFRlbXBsYXRlUmVmPHVua25vd24+PignZm9vdGVyJyk7XG5cbiAgICBkaXNwbGF5Rm9vdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb290ZXJQcm9qZWN0aW9uKCkgIT09IHVuZGVmaW5lZCk7XG5cbiAgICBsZWFmQWN0aW9uUHJvamVjdGlvbiA9IGNvbnRlbnRDaGlsZHJlbjxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2xlYWZBY3Rpb24nKTtcblxuICAgIGV4cGFuc2lvblN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpID8gJ2V4cGFuZGVkJyA6ICdtaW5pZmllZCcpKTtcblxuICAgIGNvbXBvbmVudFVpZCA9IGBuYXYtc2VsZWN0b3ItJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBuYXZTZWxlY3RvclN0YXRlOiBOYXZTZWxlY3RvclN0YXRlLFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXG4gICAgKSB7XG4gICAgICAgIG5hdlNlbGVjdG9yU3RhdGUucmVnaXN0ZXJPblNlbGVjdGVkVWlkc0NoYW5nZShzZWxlY3RlZFVpZHMgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVudHJ5VWlkcy5zZXQoc2VsZWN0ZWRVaWRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JjZUV4cGFuZGVkKCkgJiYgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA8IDEyMDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUudG9nZ2xlRXhwYW5kZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVNdWx0aU1vZGVFbmFibGVkKHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubmF2U2VsZWN0b3JTdGF0ZS5maWx0ZXJlZEVudHJpZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnVwZGF0ZUVudHJpZXModGhpcy5uYXZTZWxlY3RvckVudHJpZXMoKSwgdGhpcy5zZWxlY3RlZEVudHJ5VWlkcygpLCB0aGlzLmRldGFpbHNEaXNwbGF5ZWRMaW1pdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVEZXRhaWxzRGlzcGxheWVkTGltaXQodGhpcy5kZXRhaWxzRGlzcGxheWVkTGltaXQoKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGVhZkFjdGlvblByb2plY3Rpb25FZmZlY3QgPSBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGVhZkFjdGlvblByb2plY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUudXBkYXRlTGVhZkFjdGlvbih0aGlzLmxlYWZBY3Rpb25Qcm9qZWN0aW9uKCkpO1xuICAgICAgICAgICAgICAgICAgICBsZWFmQWN0aW9uUHJvamVjdGlvbkVmZmVjdC5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgbWFudWFsQ2xlYW51cDogdHJ1ZSwgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuXG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUub25TZWxlY3Rpb25DaGFuZ2UodGhpcy5zZWxlY3RlZEVudHJ5VWlkcygpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVUZXh0cyh0aGlzLnRyYW5zbGF0ZWRUZXh0cygpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93bigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5hdi1zZWxlY3Rvcl9fY29udGVudCcpLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUub25BcnJvd0Rvd24oKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwidHJlZWl0ZW1cIl1bdGFiaW5kZXg9XCIwXCJdJykuZm9jdXMoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93VXAoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uYXYtc2VsZWN0b3JfX2NvbnRlbnQnKS5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLm9uQXJyb3dVcCgpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3JvbGU9XCJ0cmVlaXRlbVwiXVt0YWJpbmRleD1cIjBcIl0nKS5mb2N1cygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBUZW1wbGF0ZVJlZiA9IFRlbXBsYXRlUmVmO1xufVxuIiwiPG5hdiBbQGV4cGFuZF09XCJleHBhbnNpb25TdGF0ZSgpXCI+XG4gICAgQGxldCBoZWFkZXJQcm9qZWN0aW9uTm90TnVsbCA9IGhlYWRlclByb2plY3Rpb24oKTtcbiAgICBAbGV0IGZvb3RlclByb2plY3Rpb25Ob3ROdWxsID0gZm9vdGVyUHJvamVjdGlvbigpO1xuXG4gICAgQGlmIChuYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkQWZ0ZXJEZWxheSgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2hlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoM1wiPnt7IHRyYW5zbGF0ZWRUZXh0cygpLnRpdGxlIH19PC9zcGFuPlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmQtYnV0dG9uIGV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2U2VsZWN0b3JTdGF0ZS50b2dnbGVFeHBhbmRlZCgpXCI+XG4gICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICAgICAgICBzeW1ib2xJZD1cImFycm93LXJlZHVjZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuXG4gICAgICAgICAgICBAaWYgKGhlYWRlclByb2plY3Rpb25Ob3ROdWxsKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJQcm9qZWN0aW9uTm90TnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZDogbmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpXG4gICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8YXAtaW5wdXQtc2VhcmNoXG4gICAgICAgICAgICAgICAgW2lkXT1cImNvbXBvbmVudFVpZCArICdfc2VhcmNoJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtc2VsZWN0b3Itc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlZFRleHRzKCkuc2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm5hdlNlbGVjdG9yU3RhdGUuc2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm5hdlNlbGVjdG9yU3RhdGUuc2VhcmNoLnNldCgkZXZlbnQgPz8gJycpXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2NvbnRlbnRcIlxuICAgICAgICAgICAgcm9sZT1cInRyZWVcIj5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG5hdlNlbGVjdG9yU3RhdGUuZmlsdGVyZWRFbnRyaWVzKCk7IHRyYWNrIGVudHJ5LnVpZCkge1xuICAgICAgICAgICAgICAgIEBpZiAoIWVudHJ5LmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW50cnkudHlwZSA9PT0gJ0xFQUYnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1sZWFmIFtsZWFmXT1cImVudHJ5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09ICdHUk9VUCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWdyb3VwIFtncm91cF09XCJlbnRyeVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChlbnRyeS50eXBlID09PSAnQ0FURUdPUlknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1jYXRlZ29yeSBbY2F0ZWdvcnldPVwiJGFueShlbnRyeSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKG5hdlNlbGVjdG9yU3RhdGUubm9SZXN1bHRzKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0XCI+e3sgdHJhbnNsYXRlZFRleHRzKCkubm9SZXN1bHRzIH19PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoZGlzcGxheUZvb3RlcigpICYmIGZvb3RlclByb2plY3Rpb25Ob3ROdWxsKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LXNlbGVjdG9yX19mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclByb2plY3Rpb25Ob3ROdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkOiBuYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKClcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LXNlbGVjdG9yX19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV4cGFuZC1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZTZWxlY3RvclN0YXRlLnRvZ2dsZUV4cGFuZGVkKClcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYXJyb3ctZXhwYW5kXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChoZWFkZXJQcm9qZWN0aW9uTm90TnVsbCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyUHJvamVjdGlvbk5vdE51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKVxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGFwLWljb24tYnV0dG9uIChvbkNsaWNrKT1cIm5hdlNlbGVjdG9yU3RhdGUudG9nZ2xlRXhwYW5kZWQoKVwiPlxuICAgICAgICAgICAgICAgIDxhcC1zeW1ib2wgc3ltYm9sSWQ9XCJzZWFyY2hcIiAvPlxuICAgICAgICAgICAgPC9hcC1pY29uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1zZWxlY3Rvcl9fY29udGVudFwiPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgbmF2U2VsZWN0b3JTdGF0ZS5maWx0ZXJlZEVudHJpZXMoKTsgdHJhY2sgZW50cnkudWlkKSB7XG4gICAgICAgICAgICAgICAgQGlmICghZW50cnkuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChlbnRyeS50eXBlID09PSAnTEVBRicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWxlYWYgW2xlYWZdPVwiZW50cnlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZW50cnkudHlwZSA9PT0gJ0dST1VQJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1uYXYtc2VsZWN0b3ItZ3JvdXAgW2dyb3VwXT1cImVudHJ5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09ICdDQVRFR09SWScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWNhdGVnb3J5IFtjYXRlZ29yeV09XCJlbnRyeVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChkaXNwbGF5Rm9vdGVyKCkgJiYgZm9vdGVyUHJvamVjdGlvbk5vdE51bGwpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2Zvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyUHJvamVjdGlvbk5vdE51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKVxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgfVxuPC9uYXY+XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export const isNavSelectorEntryALeaf = (entry) => entry.type === 'LEAF';
2
+ export const isNavSelectorEntryAGroup = (entry) => entry.type === 'GROUP';
3
+ export const isNavSelectorEntryACategory = (entry) => entry.type === 'CATEGORY';
4
+ export const isInternalNavSelectorEntryALeaf = (entry) => entry.type === 'LEAF';
5
+ export const isInternalNavSelectorEntryANode = (entry) => `children` in entry;
6
+ export const isInternalNavSelectorEntryACategory = (entry) => entry.type === 'CATEGORY';
7
+ export const isInternalNavSelectorEntryAGroup = (entry) => entry.type === 'GROUP';
8
+ export const isInternalNavSelectorEntryALeafDetails = (entry) => entry.type === 'LEAF_DETAILS';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThGQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQXVCLEVBQTRCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUVwSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQXVCLEVBQTZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUV2SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQXVCLEVBQWdDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQXdJaEksTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxLQUErQixFQUFvQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7QUFFNUksTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FDM0MsS0FBK0IsRUFDZ0MsRUFBRSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsQ0FBQyxLQUErQixFQUF3QyxFQUFFLENBQ3pILEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsS0FBK0IsRUFBcUMsRUFBRSxDQUNuSCxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUFDLEtBQStCLEVBQTJDLEVBQUUsQ0FDL0gsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmF0YXJOZXR3b3JrIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9hdmF0YXInO1xuXG4vKipcbiAqIEFzIHRyYW5zbGF0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIERTLCB0aGlzIGFsbCB0cmFuc2xhdGlvbnMgbmVlZGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF2U2VsZWN0b3JUcmFuc2xhdGVkVGV4dHMge1xuICAgIC8qKiBUaXRsZSBvZiB0aGUgbmF2IHNlbGVjdG9yICovXG4gICAgdGl0bGU6IHN0cmluZztcbiAgICAvKiogT25seSB0ZXh0IGluIG11bHRpIHNlbGVjdCBtb2RlICovXG4gICAgb25seTogc3RyaW5nO1xuICAgIC8qKiBUb29saXAgZGlzcGxheWluZyB0aGF0IHRva2VuIGlzIGludmFsaWQgKi9cbiAgICB0b2tlbkludmFsaWQ6IHN0cmluZztcbiAgICAvKiogVG9vbGlwIGRpc3BsYXlpbmcgdGhhdCBmZWF0dXJlIGlzIGxvY2tlZCAqL1xuICAgIGZlYXR1cmVMb2NrZWQ6IHN0cmluZztcbiAgICAvKiogcGxhY2Vob2xkZXIgZm9yIHRoZSBzZWFyY2ggaW5wdXQgKi9cbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIC8qKiBUZXh0IGRpc3BsYXllZCB3aGVuIHRoZSBzZWFyY2ggcmV0dXJuIG5vIHJlc3VsdHMgKi9cbiAgICBub1Jlc3VsdHM6IHN0cmluZztcbiAgICAvKiogVGV4dCBvZiB0aGUgYnV0dG9uIHRvIHNob3cgbW9yZSBkZXRhaWxzLCBpdOKAmXMgdXNlZCB3aGVuIHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgICovXG4gICAgdmlld01vcmU6IHN0cmluZztcbiAgICAvKiogVGV4dCBvZiB0aGUgYnV0dG9uIHRvIHNob3cgbGVzcyBkZXRhaWxzLCBpdOKAmXMgdXNlZCB3aGVuIHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgICovXG4gICAgdmlld0xlc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21tb24gaW50ZXJmYWNlIGZvciB0aGUgTmF2U2VsZWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTmF2U2VsZWN0b3JCYXNlTm9kZSA9IHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG5vZGUgKi9cbiAgICB1aWQ6IHN0cmluZztcbiAgICAvKiogRGlzcGxheWVkIG5hbWUgb2YgdGhlIG5vZGUgKi9cbiAgICBhbGlhczogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSZXByZXNlbnQgZmluYWwgZW50cnkgb2YgdGhlIG5hdiBzZWxlY3RvclxuICovXG5leHBvcnQgdHlwZSBOYXZTZWxlY3RvckxlYWYgPSB7XG4gICAgcGljdHVyZVVybDogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogQ291bnRlciB0byBkaXNwbGF5IG9uIHRoZSBlbnRyeSwgdG8gaWdub3JlIGlmIHRoZSBsZWFmIGhhcyBkZXRhaWxzICovXG4gICAgY291bnRlcjogbnVtYmVyIHwgbnVsbDtcbiAgICAvKiogV2hlbiB0cnVlLCB0aGUgbGVhZiB3aWxsIGJlIGhpZGRlbiAqL1xuICAgIG1pc3NpbmdQZXJtaXNzaW9uOiBib29sZWFuO1xuICAgIC8qKiBGb3Igc29jaWFsIHByb2ZpbGVzIG9yIGFkIGFjY291bnRzIHRoZSBjb3JyZXNwb25kaW5nIG5ldHdvcmsgKi9cbiAgICBuZXR3b3JrOiBBdmF0YXJOZXR3b3JrIHwgbnVsbDtcbiAgICAvKiogVHJhbnNsYXRlZCB0ZXh0IHdoZW4gdGhlIGVudHJ5IGlzIGRpc2FibGVkICovXG4gICAgZGlzYWJsZVJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGVudHJ5IGhhcyBpdHMgdG9rZW4gaW52YWxpZCAqL1xuICAgIHRva2VuSW52YWxpZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGVudHJ5IGlzIGxvY2tlZCAqL1xuICAgIGZlYXR1cmVMb2NrZWQ6IGJvb2xlYW47XG4gICAgLyoqIFN1YiBlbGVtZW50cyBvZiB0aGUgbGVhZiwgdGhleSBhcmUgb3B0aW9uYWwgKi9cbiAgICBkZXRhaWxzOiBOYXZTZWxlY3RvckxlYWZEZXRhaWxzW107XG4gICAgdHlwZTogJ0xFQUYnO1xufSAmIE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGEgZ3JvdXAgb2YgZW50cmllcyB3aGljaCBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSB1c2VyIChleDogbWVudUdyb3VwKVxuICovXG5leHBvcnQgdHlwZSBOYXZTZWxlY3Rvckdyb3VwID0ge1xuICAgIC8qKiBBIGdyb3VwIGNhbiBvbmx5IGhhdmUgbGVhdmVzIGFzIGNoaWxkcmVuICovXG4gICAgY2hpbGRyZW46IE5hdlNlbGVjdG9yTGVhZltdO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGdyb3VwIHNob3VsZCBiZSBmb2xkZWQgb3IgZXhwYW5kZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBuYXYgc2VsZWN0b3IgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgdHlwZTogJ0dST1VQJztcbn0gJiBOYXZTZWxlY3RvckJhc2VOb2RlO1xuXG4vKipcbiAqIFJlcHJlc2VudCBhIGNhdGVnb3J5IG9mIGVudHJpZXMgd2hpY2ggaGFzIGJlZW4gY3JlYXRlZCBieSB0aGUgcHJvZHVjdCB0byBzZXBhcmF0ZSBkaWZmZXJlbnQga2luZCBvZiBlbnRyaWVzIChleDogc29jaWFsIHByb2ZpbGVzLCByZXBvcnRzLCBhZCBhY2NvdW50c+KApilcbiAqL1xuZXhwb3J0IHR5cGUgTmF2U2VsZWN0b3JDYXRlZ29yeSA9IHtcbiAgICAvKiogQSBDYXRlZ29yeSBjYW4gaGF2ZSBsZWF2ZXMgb3IgZ3JvdXBzIGFzIGNoaWxkcmVuLCB5b3UgY2FuIGhhdmUgbGVhdmVzIGFsb25nc2lkZSB3aXRoIGdyb3VwcyAqL1xuICAgIGNoaWxkcmVuOiAoTmF2U2VsZWN0b3JMZWFmIHwgTmF2U2VsZWN0b3JHcm91cClbXTtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBncm91cCBzaG91bGQgYmUgZm9sZGVkIG9yIGV4cGFuZGVkIHdoZW4gZ2VuZXJhdGluZyB0aGUgbmF2IHNlbGVjdG9yICovXG4gICAgZm9sZGVkOiBib29sZWFuO1xuICAgIHR5cGU6ICdDQVRFR09SWSc7XG59ICYgTmF2U2VsZWN0b3JCYXNlTm9kZTtcblxuZXhwb3J0IHR5cGUgTmF2U2VsZWN0b3JFbnRyeSA9IE5hdlNlbGVjdG9yTGVhZiB8IE5hdlNlbGVjdG9yR3JvdXAgfCBOYXZTZWxlY3RvckNhdGVnb3J5O1xuXG4vKipcbiAqIFJlcHJlc2VudCBkZXRhaWxzIG9mIGEgbGVhZiwgdGhleSBhcmUgdXNlZCB0byBhbGxvdyB0byBkaXNwbGF5IG1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxlYWZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXZTZWxlY3RvckxlYWZEZXRhaWxzIHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG5vZGUgKi9cbiAgICB1aWQ6IHN0cmluZztcbiAgICAvKiogQ291bnRlciB0byBkaXNwbGF5IG9uIHRoZSBlbnRyeSAqL1xuICAgIGNvdW50ZXI6IG51bWJlciB8IG51bGw7XG4gICAgLyoqIERpc3BsYXllZCBuYW1lIG9mIHRoZSBub2RlICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBUcmFuc2xhdGlvbiBvZiB0aGUgZXJyb3Igb24gdGhlIGxlYWYgKi9cbiAgICBlcnJvclJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IGlzTmF2U2VsZWN0b3JFbnRyeUFMZWFmID0gKGVudHJ5OiBOYXZTZWxlY3RvckVudHJ5KTogZW50cnkgaXMgTmF2U2VsZWN0b3JMZWFmID0+IGVudHJ5LnR5cGUgPT09ICdMRUFGJztcblxuZXhwb3J0IGNvbnN0IGlzTmF2U2VsZWN0b3JFbnRyeUFHcm91cCA9IChlbnRyeTogTmF2U2VsZWN0b3JFbnRyeSk6IGVudHJ5IGlzIE5hdlNlbGVjdG9yR3JvdXAgPT4gZW50cnkudHlwZSA9PT0gJ0dST1VQJztcblxuZXhwb3J0IGNvbnN0IGlzTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeSA9IChlbnRyeTogTmF2U2VsZWN0b3JFbnRyeSk6IGVudHJ5IGlzIE5hdlNlbGVjdG9yQ2F0ZWdvcnkgPT4gZW50cnkudHlwZSA9PT0gJ0NBVEVHT1JZJztcblxuLyoqXG4gKiBSZXByZXNlbnQgdGhlIGFjY2Vzc2liaWxpdHkgb24gYSBub2RlXG4gKi9cbmV4cG9ydCB0eXBlIE5vZGVBY2Nlc3NpYmlsaXR5ID0ge1xuICAgIC8qKiBOdW1iZXIgb2Ygc2libGluZyBlbGVtZW50cywgaXRzZWxmIGluY2x1ZGVkLiBFeDogdGhlcmUgYXJlIDcgc29jaWFsIHByb2ZpbGVzIGRpc3BsYXkgaW4gdGhlIGdyb3VwICovXG4gICAgYXJpYVNldHNpemU6IG51bWJlcjtcbiAgICAvKiogSW5kZXggc3RhcnRpbmcgZnJvbSAxIG9mIHRoZSBlbGVtZW50IGFsb25nc2lkZSBpdHMgc2libGluZyAqL1xuICAgIGFyaWFQb3NpbnNldDogbnVtYmVyO1xuICAgIC8qKiAwIHRvIGJlIGZvY3VzYWJsZSBieSBUYWIga2V5IGFuZCAtMSB0byBiZSBmb2N1c2FibGUgYnkga2V5Ym9hcmQgd2l0aCBKUyAqL1xuICAgIHRhYkluZGV4OiBudW1iZXI7XG4gICAgLyoqIEluIGEgdHJlZSwgdGhlIGRlZXAgbGV2ZWwsIHN0YXJ0aW5nIGZyb20gMSAqL1xuICAgIGFyaWFMZXZlbDogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBSZXByZXNlbnQgYSBub2RlXG4gKi9cbmV4cG9ydCB0eXBlIEludGVybmFsTmF2U2VsZWN0b3JCYXNlTm9kZSA9IHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVudHJ5ICovXG4gICAgdWlkOiBzdHJpbmc7XG4gICAgLyoqIERpc3BsYXllZCBuYW1lIG9mIHRoZSBlbnRyeSAqL1xuICAgIGFsaWFzOiBzdHJpbmc7XG4gICAgYWNjZXNzaWJpbGl0eTogTm9kZUFjY2Vzc2liaWxpdHk7XG4gICAgLyoqIFdoZW4gaGlkZGVuLCB0aGUgZW50cnkgaXMgbm90IGRpc3BsYXllZCwgdXNlZCB3aGVuIHNlYXJjaGluZyBhbiBlbGVtZW50ICovXG4gICAgaGlkZGVuOiBib29sZWFuO1xuICAgIC8qKiBXaGVuIHRydWUsIHlvdSBjYW4gbmF2aWdhdGUgd2l0aCBhcnJvdyBrZXlzIG9uIHRoaXMgZW50cnkgKi9cbiAgICBmb2N1c2FibGU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudCBhIGdyb3VwIG9mIGVudHJpZXMgd2hpY2ggaGFzIGJlZW4gY3JlYXRlZCBieSB0aGUgdXNlciAoZXg6IG1lbnVHcm91cClcbiAqL1xuZXhwb3J0IHR5cGUgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwID0ge1xuICAgIC8qKiBBIGdyb3VwIGNhbiBvbmx5IGhhdmUgbGVhdmVzIGFzIGNoaWxkcmVuICovXG4gICAgY2hpbGRyZW46IEludGVybmFsTmF2U2VsZWN0b3JMZWFmW107XG4gICAgLyoqIFBpY3R1cmUgdXJsIG9mIHRoZSBncm91cCwgdXNlZCB3aGVuIHRoZSBuYXYgc2VsZWN0b3IgaXMgbWluaWZpZWQgKi9cbiAgICBjaGlsZHJlblBpY3R1cmVVcmxTYW1wbGU6IHsgdXJsOiBzdHJpbmcgfCBudWxsOyBpbml0aWFsOiBzdHJpbmcgfVtdO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hlbmV2ZXIgdGhlIGdyb3VwIGlzIGZvbGRlZCBvciBub3QgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB0aGUgY291bnRlciB2YWx1ZSB0byBkaXNwbGF5IHdoZW4gdGhlIGdyb3VwIGlzIGZvbGRlZCAqL1xuICAgIGNvdW50ZXI6IG51bWJlcjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBjb3VudGVyIHNob3VsZCBiZSBkaXNwbGF5IHdoZW4gdGhlIGdyb3VwIGlzIGZvbGRlZCAqL1xuICAgIGRpc3BsYXlDb3VudGVyOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHRva2VuIGludmFsaWQgaWNvbiBzaG91bGQgYmUgZGlzcGxheSB3aGVuIHRoZSBncm91cCBpcyBmb2xkZWQgKi9cbiAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaW4gbXVsdGkgc2VsZWN0IG1vZGUgaWYgdGhlIGdyb3VwIGhhcyBzb21lIGNoaWxkcmVuIHNlbGVjdGVkICovXG4gICAgdW5kZXRlcm1pbmVkU2VsZWN0aW9uOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGdyb3VwIGlzIHNlbGVjdGVkICovXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZ3JvdXAgaXMgc2VsZWN0YWJsZSAqL1xuICAgIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgdHlwZTogJ0dST1VQJztcbn0gJiBJbnRlcm5hbE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGEgY2F0ZWdvcnkgb2YgZW50cmllcyB3aGljaCBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBwcm9kdWN0IHRvIHNlcGFyYXRlIGRpZmZlcmVudCBraW5kIG9mIGVudHJpZXMgKGV4OiBzb2NpYWwgcHJvZmlsZXMsIHJlcG9ydHMsIGFkIGFjY291bnRz4oCmKVxuICovXG5leHBvcnQgdHlwZSBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnkgPSB7XG4gICAgLyoqIEEgQ2F0ZWdvcnkgY2FuIGhhdmUgbGVhdmVzIG9yIGdyb3VwcyBhcyBjaGlsZHJlbiwgeW91IGNhbiBoYXZlIGxlYXZlcyBhbG9uZ3NpZGUgd2l0aCBncm91cHMgKi9cbiAgICBjaGlsZHJlbjogKEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB8IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKVtdO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hlbmV2ZXIgdGhlIGNhdGVnb3J5IGlzIGZvbGRlZCBvciBub3QgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgdHlwZTogJ0NBVEVHT1JZJztcbn0gJiBJbnRlcm5hbE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGZpbmFsIGVudHJ5IG9mIHRoZSBuYXYgc2VsZWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYgPSB7XG4gICAgcGljdHVyZVVybDogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBjb3VudGVyIGNvdWxkIGJlIGRpc3BsYXkuIFRoZSBsZWFmIHNob3VsZCBub3QgYmUgZGlzYWJsZWQsIGZlYXR1cmUgbG9ja2VkIG9yIGhhcyB0b2tlbiBpbnZhbGlkICovXG4gICAgY291bnRlckRpc3BsYXlhYmxlOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHRva2VuIGludmFsaWQgaWNvbiBzaG91bGQgYmUgZGlzcGxheS4gU28gd2hlbiBkaXNwbGF5YWJsZSB3aGVuIG5vIGRldGFpbHMgb3IgZm9sZGVkICovXG4gICAgZGlzcGxheUNvdW50ZXI6IGJvb2xlYW47XG4gICAgLyoqIENvdW50ZXIgdmFsdWUgdG8gZGlzcGxheSAqL1xuICAgIGNvdW50ZXI6IG51bWJlcjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSB0b2tlbiBpbnZhbGlkIGljb24gc2hvdWxkIGJlIGRpc3BsYXkgKi9cbiAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGZlYXR1cmUgaXMgbG9ja2VkICovXG4gICAgZGlzcGxheUZlYXR1cmVMb2NrZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgbGVhZiBpcyBkaXNhYmxlZCAqL1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIC8qKiBUaGUgZGlzYWJsZWQgcmVhc29uIHRvIGRpc3BsYXkgaW4gdG9vbHRpcCAqL1xuICAgIGRpc2FibGVSZWFzb246IHN0cmluZyB8IG51bGw7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgbGVhZiBpcyBzZWxlY3RlZCAqL1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGxlYWYgaXMgc2VsZWN0YWJsZSAqL1xuICAgIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEZvciBzb2NpYWwgcHJvZmlsZXMgb3IgYWQgYWNjb3VudHMsIHRoZSBjb3JyZXNwb25kaW5nIG5ldHdvcmsgKi9cbiAgICBuZXR3b3JrOiBBdmF0YXJOZXR3b3JrIHwgbnVsbDtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBsZWFmIGZvbGRhYmxlLiBTbyB3aGVuIGl0IGhhcyBkZXRhaWxzIGFuZCBubyBlcnJvciBzdGF0dXMgKi9cbiAgICBmb2xkYWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBsZWFmIGlzIGZvbGRlZCAqL1xuICAgIGZvbGRlZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBsZWFmIGhhcyBkZXRhaWxzIGFuZCB0aGV5IGFyZSBkaXNwbGF5YWJsZS4gU28gbm8gZXJyb3Igc3RhdHVzICovXG4gICAgZGV0YWlsc0Rpc3BsYXlhYmxlOiBib29sZWFuO1xuICAgIC8qKiBEZXRhaWxzIG9mIHRoZSBsZWFmICovXG4gICAgZGV0YWlsczogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzW107XG4gICAgdHlwZTogJ0xFQUYnO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHZpZXcgbW9yZSBzZWN0aW9uIHNob3VsZCBiZSBkaXNwbGF5IGZvciBkZXRhaWxzICovXG4gICAgdmlld01vcmVEaXNwbGF5YWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSB2aWV3IG1vcmUgb3IgdmlldyBsZXNzIGJ1dHRvbiBpcyBkaXNwbGF5ZWQgKi9cbiAgICB2aWV3TW9yZURpc3BsYXllZDogYm9vbGVhbjtcbiAgICAvKiogTnVtYmVyIG9mIGRldGFpbHMgdG8gZGlzcGxheSB3aGVuIHRoZSB2aWV3IG1vcmUgaXMgbm90IGNsaWNrZWQgKi9cbiAgICB2aWV3TW9yZURldGFpbHNEaXNwbGF5ZWRMaW1pdDogbnVtYmVyO1xufSAmIEludGVybmFsTmF2U2VsZWN0b3JCYXNlTm9kZTtcblxuLyoqXG4gKiBSZXByZXNlbnQgZGV0YWlscyBvZiBhIGxlYWYsIHRoZXkgYXJlIHVzZWQgdG8gYWxsb3cgdG8gZGlzcGxheSBtb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsZWFmXG4gKi9cbmV4cG9ydCB0eXBlIEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlscyA9IHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG5vZGUgKi9cbiAgICB1aWQ6IHN0cmluZztcbiAgICAvKiogQ291bnRlciB0byBkaXNwbGF5IG9uIHRoZSBkZXRhaWwgKi9cbiAgICBjb3VudGVyOiBudW1iZXI7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgY291bnRlciBzaG91bGQgYmUgZGlzcGxheS4gU28gbm8gZXJyb3Igb24gdGhlIGRldGFpbCAqL1xuICAgIGRpc3BsYXlDb3VudGVyOiBib29sZWFuO1xuICAgIC8qKiBEaXNwbGF5ZWQgbmFtZSBvZiB0aGUgbm9kZSAqL1xuICAgIGFsaWFzOiBzdHJpbmc7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZGV0YWlsIGlzIHNlbGVjdGVkICovXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB3ZSBzaG91bGQgZGlzcGxheSBhbiBlcnJvciBpY29uICovXG4gICAgZGlzcGxheUVycm9yOiBib29sZWFuO1xuICAgIC8qKiBUcmFuc2xhdGVkIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgdG9vbHRpcCAqL1xuICAgIGVycm9yUmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICAgIHR5cGU6ICdMRUFGX0RFVEFJTFMnO1xufSAmIEludGVybmFsTmF2U2VsZWN0b3JCYXNlTm9kZTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5ID1cbiAgICB8IEludGVybmFsTmF2U2VsZWN0b3JMZWFmXG4gICAgfCBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXBcbiAgICB8IEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeVxuICAgIHwgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzO1xuXG5leHBvcnQgY29uc3QgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZiA9IChlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KTogZW50cnkgaXMgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYgPT4gZW50cnkudHlwZSA9PT0gJ0xFQUYnO1xuXG5leHBvcnQgY29uc3QgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTm9kZSA9IChcbiAgICBlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5XG4pOiBlbnRyeSBpcyBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnkgfCBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAgPT4gYGNoaWxkcmVuYCBpbiBlbnRyeTtcblxuZXhwb3J0IGNvbnN0IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5ID0gKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpOiBlbnRyeSBpcyBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnkgPT5cbiAgICBlbnRyeS50eXBlID09PSAnQ0FURUdPUlknO1xuXG5leHBvcnQgY29uc3QgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAgPSAoZW50cnk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSk6IGVudHJ5IGlzIEludGVybmFsTmF2U2VsZWN0b3JHcm91cCA9PlxuICAgIGVudHJ5LnR5cGUgPT09ICdHUk9VUCc7XG5cbmV4cG9ydCBjb25zdCBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmRGV0YWlscyA9IChlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KTogZW50cnkgaXMgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzID0+XG4gICAgZW50cnkudHlwZSA9PT0gJ0xFQUZfREVUQUlMUyc7XG4iXX0=