@daffodil/design 0.68.1 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/esm2022/public_api.mjs +1 -2
  2. package/esm2022/sidebar/public_api.mjs +2 -1
  3. package/esm2022/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +12 -4
  4. package/esm2022/sidebar/sidebar-viewport-backdrop/animation/backdrop-animation-state.mjs +2 -0
  5. package/esm2022/sidebar/sidebar-viewport-backdrop/animation/backdrop-animation.mjs +20 -0
  6. package/esm2022/sidebar/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.mjs +91 -0
  7. package/esm2022/sidebar/sidebar.module.mjs +10 -9
  8. package/esm2022/tree/examples/basic-tree/basic-tree.component.mjs +1 -1
  9. package/esm2022/tree/interfaces/tree-render-mode.mjs +2 -0
  10. package/esm2022/tree/public_api.mjs +2 -1
  11. package/esm2022/tree/tree/tree.component.mjs +43 -36
  12. package/esm2022/tree/utils/flatten-tree.mjs +26 -14
  13. package/esm2022/tree/utils/transform.mjs +25 -0
  14. package/fesm2022/daffodil-design-sidebar.mjs +131 -14
  15. package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
  16. package/fesm2022/daffodil-design-tree-examples.mjs +1 -1
  17. package/fesm2022/daffodil-design-tree-examples.mjs.map +1 -1
  18. package/fesm2022/daffodil-design-tree.mjs +92 -48
  19. package/fesm2022/daffodil-design-tree.mjs.map +1 -1
  20. package/fesm2022/daffodil-design.mjs +1 -125
  21. package/fesm2022/daffodil-design.mjs.map +1 -1
  22. package/package.json +1 -1
  23. package/public_api.d.ts +0 -1
  24. package/sidebar/public_api.d.ts +1 -0
  25. package/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +3 -2
  26. package/sidebar/sidebar-viewport-backdrop/animation/backdrop-animation-state.d.ts +2 -0
  27. package/{molecules/backdrop → sidebar/sidebar-viewport-backdrop}/animation/backdrop-animation.d.ts +1 -1
  28. package/{molecules/backdrop/backdrop/backdrop.component.d.ts → sidebar/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.d.ts} +5 -5
  29. package/sidebar/sidebar.module.d.ts +4 -4
  30. package/tree/README.md +1 -3
  31. package/tree/interfaces/tree-render-mode.d.ts +6 -0
  32. package/tree/public_api.d.ts +2 -0
  33. package/tree/tree/tree.component.d.ts +33 -11
  34. package/tree/utils/flatten-tree.d.ts +2 -1
  35. package/tree/utils/transform.d.ts +13 -0
  36. package/esm2022/molecules/backdrop/animation/backdrop-animation-state.mjs +0 -2
  37. package/esm2022/molecules/backdrop/animation/backdrop-animation.mjs +0 -20
  38. package/esm2022/molecules/backdrop/backdrop/backdrop.component.mjs +0 -87
  39. package/esm2022/molecules/backdrop/backdrop.module.mjs +0 -24
  40. package/esm2022/molecules/backdrop/public_api.mjs +0 -3
  41. package/molecules/backdrop/animation/backdrop-animation-state.d.ts +0 -2
  42. package/molecules/backdrop/backdrop.module.d.ts +0 -8
  43. package/molecules/backdrop/public_api.d.ts +0 -2
@@ -1,10 +1,21 @@
1
- import { ChangeDetectionStrategy, Component, ContentChild, HostBinding, Input, TemplateRef, ViewEncapsulation, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, HostBinding, Input, Renderer2, TemplateRef, ViewEncapsulation, } from '@angular/core';
2
+ import { daffArticleEncapsulatedMixin } from '@daffodil/design';
2
3
  import { DaffTreeNotifierService } from './tree-notifier.service';
3
4
  import { flattenTree, } from '../utils/flatten-tree';
4
5
  import { hydrateTree } from '../utils/hydrate-tree';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "./tree-notifier.service";
7
8
  import * as i2 from "@angular/common";
9
+ /**
10
+ * An _elementRef and an instance of renderer2 are needed for the list mixins
11
+ */
12
+ class DaffTreeBase {
13
+ constructor(_elementRef, _renderer) {
14
+ this._elementRef = _elementRef;
15
+ this._renderer = _renderer;
16
+ }
17
+ }
18
+ const _daffTreeBase = daffArticleEncapsulatedMixin((DaffTreeBase));
8
19
  /**
9
20
  * The `DaffTreeComponent` allows you to render tree structures as interactable ui.
10
21
  *
@@ -25,27 +36,12 @@ import * as i2 from "@angular/common";
25
36
  * where `tree` is a {@link DaffTreeData}.
26
37
  *
27
38
  */
28
- export class DaffTreeComponent {
29
- /**
30
- * The tree data you would like to render.
31
- */
32
- get dataTree() {
33
- return this._dataTree;
34
- }
35
- set dataTree(dataTree) {
36
- if (!dataTree) {
37
- this._dataTree = undefined;
38
- this.tree = undefined;
39
- this.flatTree = [];
40
- return;
41
- }
42
- this._dataTree = dataTree;
43
- this.tree = hydrateTree(this.dataTree);
44
- this.flatTree = flattenTree(this.tree);
45
- }
46
- ;
47
- constructor(notifier) {
39
+ export class DaffTreeComponent extends _daffTreeBase {
40
+ constructor(notifier, elementRef, renderer) {
41
+ super(elementRef, renderer);
48
42
  this.notifier = notifier;
43
+ this.elementRef = elementRef;
44
+ this.renderer = renderer;
49
45
  /**
50
46
  * The css class of the daff-tree.
51
47
  *
@@ -55,16 +51,26 @@ export class DaffTreeComponent {
55
51
  /**
56
52
  * The internal tree element.
57
53
  */
58
- this.tree = undefined;
54
+ this._tree = undefined;
59
55
  /**
60
56
  * The flattened tree data. You can iterate through this if you want to inspect
61
57
  * the resulting array structure we computed to render the tree.
62
58
  */
63
59
  this.flatTree = [];
64
- /**
65
- * @docs-private
66
- */
67
- this._dataTree = undefined;
60
+ }
61
+ ngOnChanges(changes) {
62
+ if (!changes.tree.currentValue) {
63
+ this._tree = undefined;
64
+ this.flatTree = [];
65
+ return;
66
+ }
67
+ if (changes.renderMode && !changes.tree) {
68
+ this.flatTree = flattenTree(this._tree, changes.renderMode.currentValue === 'not-in-dom');
69
+ }
70
+ else if (changes.renderMode || changes.tree) {
71
+ this._tree = hydrateTree(changes.tree?.currentValue ?? this.tree);
72
+ this.flatTree = flattenTree(this._tree, (changes.renderMode?.currentValue ?? this.renderMode) === 'not-in-dom');
73
+ }
68
74
  }
69
75
  /**
70
76
  * The track-by function used to reduce tree-item re-renders
@@ -77,25 +83,26 @@ export class DaffTreeComponent {
77
83
  */
78
84
  ngOnInit() {
79
85
  this.notifier.notice$.subscribe(() => {
80
- this.flatTree = flattenTree(this.tree);
86
+ this.flatTree = flattenTree(this._tree, this.renderMode === 'not-in-dom');
81
87
  });
82
88
  }
83
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffTreeComponent, deps: [{ token: i1.DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Component }); }
84
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: DaffTreeComponent, selector: "ul[daff-tree]", inputs: { dataTree: ["tree", "dataTree"] }, host: { properties: { "class.daff-tree": "this.class" } }, providers: [
89
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffTreeComponent, deps: [{ token: i1.DaffTreeNotifierService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
90
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: DaffTreeComponent, selector: "ul[daff-tree]", inputs: { renderMode: "renderMode", tree: "tree" }, host: { properties: { "class.daff-tree": "this.class" } }, providers: [
85
91
  DaffTreeNotifierService,
86
- ], queries: [{ propertyName: "withChildrenTemplate", first: true, predicate: ["daffTreeItemWithChildrenTpl"], descendants: true, static: true }, { propertyName: "treeItemTemplate", first: true, predicate: ["daffTreeItemTpl"], descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<li [attr.aria-level]=\"node.level\">\n\t\t<ng-container \n\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t</ng-container>\t\n\t</li>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 16px}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:8px 16px 8px 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:4px}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item__parent{position:relative}.daff-tree-item__parent:after{content:\"\";position:absolute;top:48%;right:16px;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:8px;height:8px;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item__parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
92
+ ], queries: [{ propertyName: "withChildrenTemplate", first: true, predicate: ["daffTreeItemWithChildrenTpl"], descendants: true, static: true }, { propertyName: "treeItemTemplate", first: true, predicate: ["daffTreeItemTpl"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 16px}.daff-tree li.hidden{display:none}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:8px 16px 8px 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:4px}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item__parent{position:relative}.daff-tree-item__parent:after{content:\"\";position:absolute;top:48%;right:16px;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:8px;height:8px;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item__parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
87
93
  }
88
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffTreeComponent, decorators: [{
89
95
  type: Component,
90
96
  args: [{ selector: 'ul[daff-tree]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
91
97
  DaffTreeNotifierService,
92
- ], template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<li [attr.aria-level]=\"node.level\">\n\t\t<ng-container \n\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t</ng-container>\t\n\t</li>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 16px}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:8px 16px 8px 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:4px}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item__parent{position:relative}.daff-tree-item__parent:after{content:\"\";position:absolute;top:48%;right:16px;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:8px;height:8px;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item__parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"] }]
93
- }], ctorParameters: () => [{ type: i1.DaffTreeNotifierService }], propDecorators: { class: [{
98
+ ], template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 16px}.daff-tree li.hidden{display:none}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:8px 16px 8px 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:4px}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item__parent{position:relative}.daff-tree-item__parent:after{content:\"\";position:absolute;top:48%;right:16px;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:8px;height:8px;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item__parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"] }]
99
+ }], ctorParameters: () => [{ type: i1.DaffTreeNotifierService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { class: [{
94
100
  type: HostBinding,
95
101
  args: ['class.daff-tree']
96
- }], dataTree: [{
97
- type: Input,
98
- args: ['tree']
102
+ }], renderMode: [{
103
+ type: Input
104
+ }], tree: [{
105
+ type: Input
99
106
  }], withChildrenTemplate: [{
100
107
  type: ContentChild,
101
108
  args: ['daffTreeItemWithChildrenTpl', { static: true }]
@@ -103,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
103
110
  type: ContentChild,
104
111
  args: ['daffTreeItemTpl', { static: true }]
105
112
  }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHbEUsT0FBTyxFQUVMLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUVwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVlILE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCOztPQUVHO0lBQ0gsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxRQUErQjtRQUMxQyxJQUFHLENBQUMsUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQUEsQ0FBQztJQWlCRixZQUNVLFFBQWlDO1FBQWpDLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBMUQzQzs7OztXQUlHO1FBQzZCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFFN0M7O1dBRUc7UUFDSyxTQUFJLEdBQXdCLFNBQVMsQ0FBQztRQUU5Qzs7O1dBR0c7UUFDSSxhQUFRLEdBQXVCLEVBQUUsQ0FBQztRQUV6Qzs7V0FFRztRQUNLLGNBQVMsR0FBMEIsU0FBUyxDQUFDO0lBc0NsRCxDQUFDO0lBRUo7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsRUFBTztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztpSUE3RVUsaUJBQWlCO3FIQUFqQixpQkFBaUIsK0lBSmpCO1lBQ1QsdUJBQXVCO1NBQ3hCLDZSQ2xESCxrVEFNZTs7MkZEOENGLGlCQUFpQjtrQkFYN0IsU0FBUzsrQkFFRSxlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsdUJBQXVCO3FCQUN4Qjs0RkFTK0IsS0FBSztzQkFBcEMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBc0IxQixRQUFRO3NCQURYLEtBQUs7dUJBQUMsTUFBTTtnQkFzQlgsb0JBQW9CO3NCQURyQixZQUFZO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFRVixnQkFBZ0I7c0JBQWxFLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGFmZlRyZWVOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuL3RyZWUtbm90aWZpZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEYWZmVHJlZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtZGF0YSc7XG5pbXBvcnQgeyBEYWZmVHJlZVVpIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90cmVlLXVpJztcbmltcG9ydCB7XG4gIERhZmZUcmVlRmxhdE5vZGUsXG4gIGZsYXR0ZW5UcmVlLFxufSBmcm9tICcuLi91dGlscy9mbGF0dGVuLXRyZWUnO1xuaW1wb3J0IHsgaHlkcmF0ZVRyZWUgfSBmcm9tICcuLi91dGlscy9oeWRyYXRlLXRyZWUnO1xuXG4vKipcbiAqIFRoZSBgRGFmZlRyZWVDb21wb25lbnRgIGFsbG93cyB5b3UgdG8gcmVuZGVyIHRyZWUgc3RydWN0dXJlcyBhcyBpbnRlcmFjdGFibGUgdWkuXG4gKlxuICogVGhleSBjYW4gYmUgdXNlZCBsaWtlOlxuICpcbiAqIGBgYGh0bWxcbiAqIDx1bCBkYWZmLXRyZWUgW3RyZWVdPVwidHJlZVwiPlxuICogICA8bmctdGVtcGxhdGUgI2RhZmZUcmVlSXRlbVdpdGhDaGlsZHJlblRwbCBsZXQtbm9kZT5cbiAqICAgICAgIDxidXR0b24gZGFmZlRyZWVJdGVtIFtub2RlXT1cIm5vZGVcIj57eyBub2RlLnRpdGxlIH19IDwvYnV0dG9uPlxuICogICA8L25nLXRlbXBsYXRlPlxuICpcbiAqICAgPG5nLXRlbXBsYXRlICNkYWZmVHJlZUl0ZW1UcGwgbGV0LW5vZGU+XG4gKiAgICAgICA8YSBkYWZmVHJlZUl0ZW0gW25vZGVdPVwibm9kZVwiIFtyb3V0ZXJMaW5rXT1cIm5vZGUudXJsXCI+e3sgbm9kZS50aXRsZSB9fTwvYT5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiB3aGVyZSBgdHJlZWAgaXMgYSB7QGxpbmsgRGFmZlRyZWVEYXRhfS5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3VsW2RhZmYtdHJlZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIFRoZSBjc3MgY2xhc3Mgb2YgdGhlIGRhZmYtdHJlZS5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYWZmLXRyZWUnKSBjbGFzcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIHRyZWU6IERhZmZUcmVlVWk8dW5rbm93bj4gPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBmbGF0dGVuZWQgdHJlZSBkYXRhLiBZb3UgY2FuIGl0ZXJhdGUgdGhyb3VnaCB0aGlzIGlmIHlvdSB3YW50IHRvIGluc3BlY3RcbiAgICogdGhlIHJlc3VsdGluZyBhcnJheSBzdHJ1Y3R1cmUgd2UgY29tcHV0ZWQgdG8gcmVuZGVyIHRoZSB0cmVlLlxuICAgKi9cbiAgcHVibGljIGZsYXRUcmVlOiBEYWZmVHJlZUZsYXROb2RlW10gPSBbXTtcblxuICAvKipcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZGF0YVRyZWU6IERhZmZUcmVlRGF0YTx1bmtub3duPiA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRyZWUgZGF0YSB5b3Ugd291bGQgbGlrZSB0byByZW5kZXIuXG4gICAqL1xuICBASW5wdXQoJ3RyZWUnKVxuICBnZXQgZGF0YVRyZWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFUcmVlO1xuICB9XG4gIHNldCBkYXRhVHJlZShkYXRhVHJlZTogRGFmZlRyZWVEYXRhPHVua25vd24+KXtcbiAgICBpZighZGF0YVRyZWUpIHtcbiAgICAgIHRoaXMuX2RhdGFUcmVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy50cmVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5mbGF0VHJlZSA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9kYXRhVHJlZSA9IGRhdGFUcmVlO1xuICAgIHRoaXMudHJlZSA9IGh5ZHJhdGVUcmVlKHRoaXMuZGF0YVRyZWUpO1xuICAgIHRoaXMuZmxhdFRyZWUgPSBmbGF0dGVuVHJlZSh0aGlzLnRyZWUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdHJlZS1ub2RlcyB0aGF0IHRoZW1zZWx2ZXMgaGF2ZSBjaGlsZHJlbi5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnZGFmZlRyZWVJdGVtV2l0aENoaWxkcmVuVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICB3aXRoQ2hpbGRyZW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRyZWUtbm9kZXMgdGhhdCBoYXZlIG5vIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdkYWZmVHJlZUl0ZW1UcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0cmVlSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbm90aWZpZXI6IERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFjay1ieSBmdW5jdGlvbiB1c2VkIHRvIHJlZHVjZSB0cmVlLWl0ZW0gcmUtcmVuZGVyc1xuICAgKi9cbiAgdHJhY2tCeVRyZWVFbGVtZW50KGluZGV4OiBudW1iZXIsIGVsOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBlbC50aXRsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWVyLm5vdGljZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmxhdFRyZWUgPSBmbGF0dGVuVHJlZSh0aGlzLnRyZWUpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBub2RlIG9mIGZsYXRUcmVlOyB0cmFja0J5OiB0cmFja0J5VHJlZUVsZW1lbnRcIj5cblx0PGxpIFthdHRyLmFyaWEtbGV2ZWxdPVwibm9kZS5sZXZlbFwiPlxuXHRcdDxuZy1jb250YWluZXIgXG5cdFx0XHQqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGUuaGFzQ2hpbGRyZW4gPyB3aXRoQ2hpbGRyZW5UZW1wbGF0ZSA6IHRyZWVJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cIj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cdFxuXHQ8L2xpPlxuPC9uZy1jb250YWluZXI+Il19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxTQUFTLEVBRVQsV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUlsRSxPQUFPLEVBRUwsV0FBVyxHQUNaLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxZQUFZO0lBQ2hCLFlBQW1CLFdBQXVCLEVBQVMsU0FBb0I7UUFBcEQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztDQUM1RTtBQUVELE1BQU0sYUFBYSxHQUFHLDRCQUE0QixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVlILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBbURsRCxZQUNVLFFBQWlDLEVBQ2pDLFVBQXNCLEVBQ3RCLFFBQW1CO1FBRTNCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFKcEIsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBcEQ3Qjs7OztXQUlHO1FBQzZCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFhN0M7O1dBRUc7UUFDSyxVQUFLLEdBQXdCLFNBQVMsQ0FBQztRQUUvQzs7O1dBR0c7UUFDSSxhQUFRLEdBQXVCLEVBQUUsQ0FBQztJQTRCekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbkIsT0FBTztTQUNSO1FBRUQsSUFBRyxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQyxDQUFDO1NBQzNGO2FBQU0sSUFBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUM7U0FDakg7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsRUFBTztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztpSUF4RlUsaUJBQWlCO3FIQUFqQixpQkFBaUIsdUpBSmpCO1lBQ1QsdUJBQXVCO1NBQ3hCLHlVQ2pFSCwrWEFRZTs7MkZEMkRGLGlCQUFpQjtrQkFYN0IsU0FBUzsrQkFFRSxlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsdUJBQXVCO3FCQUN4Qjs2SUFTK0IsS0FBSztzQkFBcEMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBV3JCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBZ0JHLElBQUk7c0JBQVosS0FBSztnQkFRSixvQkFBb0I7c0JBRHJCLFlBQVk7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVFWLGdCQUFnQjtzQkFBbEUsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZGFmZkFydGljbGVFbmNhcHN1bGF0ZWRNaXhpbiB9IGZyb20gJ0BkYWZmb2RpbC9kZXNpZ24nO1xuXG5pbXBvcnQgeyBEYWZmVHJlZU5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4vdHJlZS1ub3RpZmllci5zZXJ2aWNlJztcbmltcG9ydCB7IERhZmZUcmVlRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHJlZS1kYXRhJztcbmltcG9ydCB7IERhZmZUcmVlUmVuZGVyTW9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHJlZS1yZW5kZXItbW9kZSc7XG5pbXBvcnQgeyBEYWZmVHJlZVVpIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90cmVlLXVpJztcbmltcG9ydCB7XG4gIERhZmZUcmVlRmxhdE5vZGUsXG4gIGZsYXR0ZW5UcmVlLFxufSBmcm9tICcuLi91dGlscy9mbGF0dGVuLXRyZWUnO1xuaW1wb3J0IHsgaHlkcmF0ZVRyZWUgfSBmcm9tICcuLi91dGlscy9oeWRyYXRlLXRyZWUnO1xuXG4vKipcbiAqIEFuIF9lbGVtZW50UmVmIGFuZCBhbiBpbnN0YW5jZSBvZiByZW5kZXJlcjIgYXJlIG5lZWRlZCBmb3IgdGhlIGxpc3QgbWl4aW5zXG4gKi9cbmNsYXNzIERhZmZUcmVlQmFzZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHVibGljIF9yZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxufVxuXG5jb25zdCBfZGFmZlRyZWVCYXNlID0gZGFmZkFydGljbGVFbmNhcHN1bGF0ZWRNaXhpbigoRGFmZlRyZWVCYXNlKSk7XG5cbi8qKlxuICogVGhlIGBEYWZmVHJlZUNvbXBvbmVudGAgYWxsb3dzIHlvdSB0byByZW5kZXIgdHJlZSBzdHJ1Y3R1cmVzIGFzIGludGVyYWN0YWJsZSB1aS5cbiAqXG4gKiBUaGV5IGNhbiBiZSB1c2VkIGxpa2U6XG4gKlxuICogYGBgaHRtbFxuICogPHVsIGRhZmYtdHJlZSBbdHJlZV09XCJ0cmVlXCI+XG4gKiAgIDxuZy10ZW1wbGF0ZSAjZGFmZlRyZWVJdGVtV2l0aENoaWxkcmVuVHBsIGxldC1ub2RlPlxuICogICAgICAgPGJ1dHRvbiBkYWZmVHJlZUl0ZW0gW25vZGVdPVwibm9kZVwiPnt7IG5vZGUudGl0bGUgfX0gPC9idXR0b24+XG4gKiAgIDwvbmctdGVtcGxhdGU+XG4gKlxuICogICA8bmctdGVtcGxhdGUgI2RhZmZUcmVlSXRlbVRwbCBsZXQtbm9kZT5cbiAqICAgICAgIDxhIGRhZmZUcmVlSXRlbSBbbm9kZV09XCJub2RlXCIgW3JvdXRlckxpbmtdPVwibm9kZS51cmxcIj57eyBub2RlLnRpdGxlIH19PC9hPlxuICogICA8L25nLXRlbXBsYXRlPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIHdoZXJlIGB0cmVlYCBpcyBhIHtAbGluayBEYWZmVHJlZURhdGF9LlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndWxbZGFmZi10cmVlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGFmZlRyZWVOb3RpZmllclNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhZmZUcmVlQ29tcG9uZW50IGV4dGVuZHMgX2RhZmZUcmVlQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICAvKipcbiAgICogVGhlIGNzcyBjbGFzcyBvZiB0aGUgZGFmZi10cmVlLlxuICAgKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRhZmYtdHJlZScpIGNsYXNzID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIHJlbmRlcmluZyBtb2RlIGZvciBub2RlcyBpbiB0aGUgdHJlZS5cbiAgICpcbiAgICogRGVmYXVsdCB2YWx1ZSBpcyAnaW4tZG9tJywgd2hpY2ggbWVhbnMgbm9kZXMgYXJlIHByZXNlbnQgaW4gdGhlIERPTS5cbiAgICpcbiAgICogR2VuZXJhbGx5LCBgbm90LWluLWRvbWAgaXMgZmFzdGVyIGFzIHRoZXJlIGFyZSBsZXNzIERPTSBlbGVtZW50cyB0byByZW5kZXIsXG4gICAqIGJ1dCB0aGVyZSBtYXkgYmUgdXNlLWNhc2VzIChsaWtlIFNFTykgd2hlcmUgaGF2aW5nIHRoZSB0cmVlIGluIHRoZSBET01cbiAgICogaXMgcmVsZXZhbnQuXG4gICAqL1xuICBASW5wdXQoKSByZW5kZXJNb2RlOiBEYWZmVHJlZVJlbmRlck1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCB0cmVlIGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIF90cmVlOiBEYWZmVHJlZVVpPHVua25vd24+ID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZmxhdHRlbmVkIHRyZWUgZGF0YS4gWW91IGNhbiBpdGVyYXRlIHRocm91Z2ggdGhpcyBpZiB5b3Ugd2FudCB0byBpbnNwZWN0XG4gICAqIHRoZSByZXN1bHRpbmcgYXJyYXkgc3RydWN0dXJlIHdlIGNvbXB1dGVkIHRvIHJlbmRlciB0aGUgdHJlZS5cbiAgICovXG4gIHB1YmxpYyBmbGF0VHJlZTogRGFmZlRyZWVGbGF0Tm9kZVtdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSB0cmVlIGRhdGEgeW91IHdvdWxkIGxpa2UgdG8gcmVuZGVyLlxuICAgKi9cbiAgQElucHV0KCkgdHJlZTogRGFmZlRyZWVEYXRhPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdHJlZS1ub2RlcyB0aGF0IHRoZW1zZWx2ZXMgaGF2ZSBjaGlsZHJlbi5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnZGFmZlRyZWVJdGVtV2l0aENoaWxkcmVuVHBsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICB3aXRoQ2hpbGRyZW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRyZWUtbm9kZXMgdGhhdCBoYXZlIG5vIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdkYWZmVHJlZUl0ZW1UcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0cmVlSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbm90aWZpZXI6IERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIHJlbmRlcmVyKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZighY2hhbmdlcy50cmVlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5fdHJlZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZmxhdFRyZWUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZihjaGFuZ2VzLnJlbmRlck1vZGUgJiYgIWNoYW5nZXMudHJlZSkge1xuICAgICAgdGhpcy5mbGF0VHJlZSA9IGZsYXR0ZW5UcmVlKHRoaXMuX3RyZWUsIGNoYW5nZXMucmVuZGVyTW9kZS5jdXJyZW50VmFsdWUgPT09ICdub3QtaW4tZG9tJyk7XG4gICAgfSBlbHNlIGlmKGNoYW5nZXMucmVuZGVyTW9kZSB8fCBjaGFuZ2VzLnRyZWUpIHtcbiAgICAgIHRoaXMuX3RyZWUgPSBoeWRyYXRlVHJlZShjaGFuZ2VzLnRyZWU/LmN1cnJlbnRWYWx1ZSA/PyB0aGlzLnRyZWUpO1xuICAgICAgdGhpcy5mbGF0VHJlZSA9IGZsYXR0ZW5UcmVlKHRoaXMuX3RyZWUsIChjaGFuZ2VzLnJlbmRlck1vZGU/LmN1cnJlbnRWYWx1ZSA/PyB0aGlzLnJlbmRlck1vZGUpID09PSAnbm90LWluLWRvbScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhY2stYnkgZnVuY3Rpb24gdXNlZCB0byByZWR1Y2UgdHJlZS1pdGVtIHJlLXJlbmRlcnNcbiAgICovXG4gIHRyYWNrQnlUcmVlRWxlbWVudChpbmRleDogbnVtYmVyLCBlbDogYW55KTogYW55IHtcbiAgICByZXR1cm4gZWwudGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmllci5ub3RpY2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZsYXRUcmVlID0gZmxhdHRlblRyZWUodGhpcy5fdHJlZSwgdGhpcy5yZW5kZXJNb2RlID09PSAnbm90LWluLWRvbScpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBub2RlIG9mIGZsYXRUcmVlOyB0cmFja0J5OiB0cmFja0J5VHJlZUVsZW1lbnRcIj5cblx0PG5nLWNvbnRhaW5lcj5cblx0XHQ8bGkgW2F0dHIuYXJpYS1sZXZlbF09XCJub2RlLmxldmVsXCIgW2NsYXNzLmhpZGRlbl09XCIhbm9kZS52aXNpYmxlXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyXG5cdFx0XHRcdCpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZS5oYXNDaGlsZHJlbiA/IHdpdGhDaGlsZHJlblRlbXBsYXRlIDogdHJlZUl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVwiPlxuXHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0PC9saT5cblx0PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -2,14 +2,15 @@
2
2
  * Flatten a DaffTreeUi<unknown> into an array, removing elements from the array
3
3
  * below nodes in the tree that are not open.
4
4
  */
5
- export const flattenTree = (daffUiTree) => {
5
+ export const flattenTree = (daffUiTree, removeNodes = false) => {
6
6
  const tree = [];
7
+ if (!daffUiTree) {
8
+ return [];
9
+ }
7
10
  let items = [
8
11
  {
9
12
  ...daffUiTree,
10
- title: 'Root',
11
13
  level: 0,
12
- url: '/',
13
14
  data: undefined,
14
15
  open: true,
15
16
  _treeRef: daffUiTree,
@@ -20,22 +21,33 @@ export const flattenTree = (daffUiTree) => {
20
21
  if (!el) {
21
22
  break;
22
23
  }
23
- if (el.open) {
24
- items = [
25
- ...items,
26
- ...el.items.map((i) => ({
27
- ...i,
28
- level: el.level + 1,
29
- _treeRef: i,
30
- })).reverse(),
31
- ];
24
+ items = [
25
+ ...items,
26
+ ...el.items.map((i) => ({
27
+ ...i,
28
+ level: el.level + 1,
29
+ _treeRef: i,
30
+ })).reverse(),
31
+ ];
32
+ if (!removeNodes && el._treeRef.parent) {
33
+ tree.push({
34
+ id: el.id,
35
+ title: el.title,
36
+ level: el.level,
37
+ url: el.url,
38
+ visible: el._treeRef.parent?.open,
39
+ hasChildren: el.items.length > 0,
40
+ data: undefined,
41
+ _treeRef: el._treeRef,
42
+ });
32
43
  }
33
- if (el._treeRef.parent?.open) {
44
+ else if (removeNodes && el._treeRef.parent?.open) {
34
45
  tree.push({
35
46
  id: el.id,
36
47
  title: el.title,
37
48
  level: el.level,
38
49
  url: el.url,
50
+ visible: el._treeRef.parent?.open,
39
51
  hasChildren: el.items.length > 0,
40
52
  data: undefined,
41
53
  _treeRef: el._treeRef,
@@ -44,4 +56,4 @@ export const flattenTree = (daffUiTree) => {
44
56
  }
45
57
  return tree;
46
58
  };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdXRpbHMvZmxhdHRlbi10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUErQixFQUFzQixFQUFFO0lBQ2pGLE1BQU0sSUFBSSxHQUF1QixFQUFFLENBQUM7SUFFcEMsSUFBSSxLQUFLLEdBQUc7UUFDVjtZQUNFLEdBQUcsVUFBVTtZQUNiLEtBQUssRUFBRSxNQUFNO1lBQ2IsS0FBSyxFQUFFLENBQUM7WUFDUixHQUFHLEVBQUUsR0FBRztZQUNSLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsVUFBVTtTQUNyQjtLQUNGLENBQUM7SUFHRixPQUFNLEtBQUssRUFBRTtRQUNYLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFHLENBQUMsRUFBRSxFQUFFO1lBQ04sTUFBTTtTQUNQO1FBRUQsSUFBRyxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ1YsS0FBSyxHQUFHO2dCQUNOLEdBQUcsS0FBSztnQkFDUixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0QixHQUFHLENBQUM7b0JBQ0osS0FBSyxFQUNMLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztvQkFDWixRQUFRLEVBQUUsQ0FBQztpQkFDWixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7YUFDZCxDQUFDO1NBQ0g7UUFFRCxJQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNSLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLO2dCQUNmLEdBQUcsRUFBRyxFQUFFLENBQUMsR0FBRztnQkFDWixXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FBQztTQUNKO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhZmZUcmVlVWkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtdWknO1xuXG4vKipcbiAqIEEgZmxhdHRlbmVkIG5vZGUgb2YgYSB0cmVlLiBUaGlzIGlzIHVzZWQgd2hlbiB0cmFuc2xhdGluZyB0aGUgdHJlZSBkYXRhXG4gKiBzdHJ1Y3R1cmUgaW50byBhbiBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYWZmVHJlZUZsYXROb2RlIHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXI7XG4gIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICBkYXRhOiB1bmtub3duO1xuICBfdHJlZVJlZjogRGFmZlRyZWVVaTx1bmtub3duPjtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgRGFmZlRyZWVVaTx1bmtub3duPiBpbnRvIGFuIGFycmF5LCByZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBhcnJheVxuICogYmVsb3cgbm9kZXMgaW4gdGhlIHRyZWUgdGhhdCBhcmUgbm90IG9wZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuVHJlZSA9IChkYWZmVWlUcmVlOiBEYWZmVHJlZVVpPHVua25vd24+KTogRGFmZlRyZWVGbGF0Tm9kZVtdID0+ICB7XG4gIGNvbnN0IHRyZWU6IERhZmZUcmVlRmxhdE5vZGVbXSA9IFtdO1xuXG4gIGxldCBpdGVtcyA9IFtcbiAgICB7XG4gICAgICAuLi5kYWZmVWlUcmVlLFxuICAgICAgdGl0bGU6ICdSb290JyxcbiAgICAgIGxldmVsOiAwLFxuICAgICAgdXJsOiAnLycsXG4gICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICBvcGVuOiB0cnVlLFxuICAgICAgX3RyZWVSZWY6IGRhZmZVaVRyZWUsXG4gICAgfSxcbiAgXTtcblxuXG4gIHdoaWxlKGl0ZW1zKSB7XG4gICAgY29uc3QgZWwgPSBpdGVtcy5wb3AoKTtcbiAgICBpZighZWwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmKGVsLm9wZW4pIHtcbiAgICAgIGl0ZW1zID0gW1xuICAgICAgICAuLi5pdGVtcyxcbiAgICAgICAgLi4uZWwuaXRlbXMubWFwKChpKSA9PiAoe1xuICAgICAgICAgIC4uLmksXG4gICAgICAgICAgbGV2ZWw6XG4gICAgICAgICAgZWwubGV2ZWwgKyAxLFxuICAgICAgICAgIF90cmVlUmVmOiBpLFxuICAgICAgICB9KSkucmV2ZXJzZSgpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZihlbC5fdHJlZVJlZi5wYXJlbnQ/Lm9wZW4pIHtcbiAgICAgIHRyZWUucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgdGl0bGU6IGVsLnRpdGxlLFxuICAgICAgICBsZXZlbDogZWwubGV2ZWwsXG4gICAgICAgIHVybCA6IGVsLnVybCxcbiAgICAgICAgaGFzQ2hpbGRyZW46IGVsLml0ZW1zLmxlbmd0aCA+IDAsXG4gICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgX3RyZWVSZWY6IGVsLl90cmVlUmVmLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRyZWU7XG59O1xuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdXRpbHMvZmxhdHRlbi10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUErQixFQUFFLGNBQXVCLEtBQUssRUFBc0IsRUFBRTtJQUMvRyxNQUFNLElBQUksR0FBdUIsRUFBRSxDQUFDO0lBQ3BDLElBQUcsQ0FBQyxVQUFVLEVBQUU7UUFDZCxPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsSUFBSSxLQUFLLEdBQUc7UUFDVjtZQUNFLEdBQUcsVUFBVTtZQUNiLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxVQUFVO1NBQ3JCO0tBQ0YsQ0FBQztJQUdGLE9BQU0sS0FBSyxFQUFFO1FBQ1gsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDTixNQUFNO1NBQ1A7UUFFRCxLQUFLLEdBQUc7WUFDTixHQUFHLEtBQUs7WUFDUixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QixHQUFHLENBQUM7Z0JBQ0osS0FBSyxFQUNMLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztnQkFDWixRQUFRLEVBQUUsQ0FBQzthQUNaLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtTQUNkLENBQUM7UUFFRixJQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNULEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztnQkFDZixLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Z0JBQ2YsR0FBRyxFQUFHLEVBQUUsQ0FBQyxHQUFHO2dCQUNaLE9BQU8sRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJO2dCQUNqQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBRyxXQUFXLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNULEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztnQkFDZixLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Z0JBQ2YsR0FBRyxFQUFHLEVBQUUsQ0FBQyxHQUFHO2dCQUNaLE9BQU8sRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJO2dCQUNqQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FBQztTQUNKO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhZmZUcmVlVWkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtdWknO1xuXG4vKipcbiAqIEEgZmxhdHRlbmVkIG5vZGUgb2YgYSB0cmVlLiBUaGlzIGlzIHVzZWQgd2hlbiB0cmFuc2xhdGluZyB0aGUgdHJlZSBkYXRhXG4gKiBzdHJ1Y3R1cmUgaW50byBhbiBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYWZmVHJlZUZsYXROb2RlIHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXI7XG4gIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICBkYXRhOiB1bmtub3duO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBfdHJlZVJlZjogRGFmZlRyZWVVaTx1bmtub3duPjtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgRGFmZlRyZWVVaTx1bmtub3duPiBpbnRvIGFuIGFycmF5LCByZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBhcnJheVxuICogYmVsb3cgbm9kZXMgaW4gdGhlIHRyZWUgdGhhdCBhcmUgbm90IG9wZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuVHJlZSA9IChkYWZmVWlUcmVlOiBEYWZmVHJlZVVpPHVua25vd24+LCByZW1vdmVOb2RlczogYm9vbGVhbiA9IGZhbHNlKTogRGFmZlRyZWVGbGF0Tm9kZVtdID0+ICB7XG4gIGNvbnN0IHRyZWU6IERhZmZUcmVlRmxhdE5vZGVbXSA9IFtdO1xuICBpZighZGFmZlVpVHJlZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGxldCBpdGVtcyA9IFtcbiAgICB7XG4gICAgICAuLi5kYWZmVWlUcmVlLFxuICAgICAgbGV2ZWw6IDAsXG4gICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICBvcGVuOiB0cnVlLFxuICAgICAgX3RyZWVSZWY6IGRhZmZVaVRyZWUsXG4gICAgfSxcbiAgXTtcblxuXG4gIHdoaWxlKGl0ZW1zKSB7XG4gICAgY29uc3QgZWwgPSBpdGVtcy5wb3AoKTtcbiAgICBpZighZWwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGl0ZW1zID0gW1xuICAgICAgLi4uaXRlbXMsXG4gICAgICAuLi5lbC5pdGVtcy5tYXAoKGkpID0+ICh7XG4gICAgICAgIC4uLmksXG4gICAgICAgIGxldmVsOlxuICAgICAgICBlbC5sZXZlbCArIDEsXG4gICAgICAgIF90cmVlUmVmOiBpLFxuICAgICAgfSkpLnJldmVyc2UoKSxcbiAgICBdO1xuXG4gICAgaWYoIXJlbW92ZU5vZGVzICYmIGVsLl90cmVlUmVmLnBhcmVudCkge1xuICAgICAgdHJlZS5wdXNoKHtcbiAgICAgICAgaWQ6IGVsLmlkLFxuICAgICAgICB0aXRsZTogZWwudGl0bGUsXG4gICAgICAgIGxldmVsOiBlbC5sZXZlbCxcbiAgICAgICAgdXJsIDogZWwudXJsLFxuICAgICAgICB2aXNpYmxlOiBlbC5fdHJlZVJlZi5wYXJlbnQ/Lm9wZW4sXG4gICAgICAgIGhhc0NoaWxkcmVuOiBlbC5pdGVtcy5sZW5ndGggPiAwLFxuICAgICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICAgIF90cmVlUmVmOiBlbC5fdHJlZVJlZixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZihyZW1vdmVOb2RlcyAmJiBlbC5fdHJlZVJlZi5wYXJlbnQ/Lm9wZW4pIHtcbiAgICAgIHRyZWUucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgdGl0bGU6IGVsLnRpdGxlLFxuICAgICAgICBsZXZlbDogZWwubGV2ZWwsXG4gICAgICAgIHVybCA6IGVsLnVybCxcbiAgICAgICAgdmlzaWJsZTogZWwuX3RyZWVSZWYucGFyZW50Py5vcGVuLFxuICAgICAgICBoYXNDaGlsZHJlbjogZWwuaXRlbXMubGVuZ3RoID4gMCxcbiAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgICBfdHJlZVJlZjogZWwuX3RyZWVSZWYsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJlZTtcbn07XG4iXX0=
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Transform a tree-like structure into a {@link DaffTreeData}.
3
+ *
4
+ * @param tree - The data structure representing tree-like data.
5
+ * @param transformFn - A user-supplied function that will transform the user
6
+ * type into a {@link DaffTreeData}
7
+ * @param key - The property of the your tree that indicates which
8
+ * key contains the "children" of your tree structure.
9
+ *
10
+ */
11
+ export const daffTransformTree = (tree, transformFn, key) => {
12
+ const transformedTree = transformFn(tree);
13
+ const queue = [{ node: tree, parent: transformedTree }];
14
+ while (queue.length > 0) {
15
+ const { node, parent } = queue.shift();
16
+ const childItems = node[key];
17
+ for (const child of childItems) {
18
+ const transformedChild = transformFn(child);
19
+ parent.items.push(transformedChild);
20
+ queue.push({ node: child, parent: transformedChild });
21
+ }
22
+ }
23
+ return transformedTree;
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdXRpbHMvdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBSy9CLElBQU8sRUFDUCxXQUF5QyxFQUN6QyxHQUE4QixFQUNiLEVBQUU7SUFFbkIsTUFBTSxlQUFlLEdBQW9CLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUzRCxNQUFNLEtBQUssR0FBMkMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFFaEcsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsS0FBSyxNQUFNLEtBQUssSUFBUyxVQUFVLEVBQUU7WUFDbkMsTUFBTSxnQkFBZ0IsR0FBb0IsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztTQUN2RDtLQUNGO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVjdXJzaXZlVHJlZUtleU9mVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdXJzaXZlLWtleSc7XG5pbXBvcnQgeyBEYWZmVHJlZURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtZGF0YSc7XG5cbi8qKlxuICogVHJhbnNmb3JtIGEgdHJlZS1saWtlIHN0cnVjdHVyZSBpbnRvIGEge0BsaW5rIERhZmZUcmVlRGF0YX0uXG4gKlxuICogQHBhcmFtIHRyZWUgLSBUaGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIHRyZWUtbGlrZSBkYXRhLlxuICogQHBhcmFtIHRyYW5zZm9ybUZuIC0gQSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRoYXQgd2lsbCB0cmFuc2Zvcm0gdGhlIHVzZXJcbiAqICB0eXBlIGludG8gYSB7QGxpbmsgRGFmZlRyZWVEYXRhfVxuICogQHBhcmFtIGtleSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgeW91ciB0cmVlIHRoYXQgaW5kaWNhdGVzIHdoaWNoXG4gKiAga2V5IGNvbnRhaW5zIHRoZSBcImNoaWxkcmVuXCIgb2YgeW91ciB0cmVlIHN0cnVjdHVyZS5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBkYWZmVHJhbnNmb3JtVHJlZSA9IDxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgVCBleHRlbmRzIFJlY29yZDxhbnksYW55PixcbiAgVlxuPihcbiAgdHJlZTogVCxcbiAgdHJhbnNmb3JtRm46ICh0eXBlOiBUKSA9PiBEYWZmVHJlZURhdGE8Vj4sXG4gIGtleTogUmVjdXJzaXZlVHJlZUtleU9mVHlwZTxUPixcbik6IERhZmZUcmVlRGF0YTxWPiA9PiB7XG5cbiAgY29uc3QgdHJhbnNmb3JtZWRUcmVlOiBEYWZmVHJlZURhdGE8Vj4gPSB0cmFuc2Zvcm1Gbih0cmVlKTtcblxuICBjb25zdCBxdWV1ZTogeyBub2RlOiBUOyBwYXJlbnQ6IERhZmZUcmVlRGF0YTxWPiB9W10gPSBbeyBub2RlOiB0cmVlLCBwYXJlbnQ6IHRyYW5zZm9ybWVkVHJlZSB9XTtcblxuICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHsgbm9kZSwgcGFyZW50IH0gPSBxdWV1ZS5zaGlmdCgpO1xuXG4gICAgY29uc3QgY2hpbGRJdGVtcyA9IG5vZGVba2V5XTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIDxUW10+Y2hpbGRJdGVtcykge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRDaGlsZDogRGFmZlRyZWVEYXRhPFY+ID0gdHJhbnNmb3JtRm4oY2hpbGQpO1xuICAgICAgcGFyZW50Lml0ZW1zLnB1c2godHJhbnNmb3JtZWRDaGlsZCk7XG4gICAgICBxdWV1ZS5wdXNoKHsgbm9kZTogY2hpbGQsIHBhcmVudDogdHJhbnNmb3JtZWRDaGlsZCB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJhbnNmb3JtZWRUcmVlO1xufTtcbiJdfQ==
@@ -3,10 +3,10 @@ import { A11yModule } from '@angular/cdk/a11y';
3
3
  import { DOCUMENT, CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
5
  import { EventEmitter, Component, ChangeDetectionStrategy, Inject, HostBinding, Output, Input, HostListener, Directive, ViewEncapsulation, InjectionToken, inject, ElementRef, SkipSelf, Optional, ContentChildren, NgModule } from '@angular/core';
6
- import * as i2 from '@daffodil/design';
7
- import { daffFocusableElementsSelector, DaffBackdropModule } from '@daffodil/design';
8
6
  import { fromEvent } from 'rxjs';
9
7
  import { filter } from 'rxjs/operators';
8
+ import * as i2 from '@daffodil/design';
9
+ import { daffFocusableElementsSelector } from '@daffodil/design';
10
10
  import { trigger, state, style, transition, animate } from '@angular/animations';
11
11
 
12
12
  /**
@@ -72,7 +72,7 @@ var DaffSidebarAnimationStates;
72
72
  DaffSidebarAnimationStates["NONE"] = "none";
73
73
  })(DaffSidebarAnimationStates || (DaffSidebarAnimationStates = {}));
74
74
 
75
- const getAnimationState = (open, mode) => {
75
+ const getAnimationState$1 = (open, mode) => {
76
76
  if (mode === 'side') {
77
77
  return 'none';
78
78
  }
@@ -122,7 +122,7 @@ class DaffSidebarComponent {
122
122
  */
123
123
  get transformSidebar() {
124
124
  return {
125
- value: getAnimationState(this.open, this.mode),
125
+ value: getAnimationState$1(this.open, this.mode),
126
126
  params: { width: getSidebarAnimationWidth(this.side, this.width) },
127
127
  };
128
128
  }
@@ -422,6 +422,114 @@ const sidebarViewportContentShift = (sidebars) => sidebars.reduce((acc, sidebar)
422
422
  ;
423
423
  const getSidebarViewportAnimationState = (open) => open ? DaffSidebarAnimationStates.OPEN : DaffSidebarAnimationStates.CLOSED;
424
424
 
425
+ const animationDuration = '350ms';
426
+ const backdropTransitionOut = 'cubic-bezier(0.4, 0.0, 1, 1)';
427
+ const backdropTransitionIn = 'cubic-bezier(0.0, 0.0, 0.2, 1)';
428
+ const daffSidebarViewportBackdropAnimations = {
429
+ fadeBackdrop: trigger('fadeBackdrop', [
430
+ state('interactable', style({ opacity: 1 })),
431
+ state('non-interactable', style({ opacity: 0 })),
432
+ transition('interactable => non-interactable', animate(animationDuration + ' ' + backdropTransitionOut)),
433
+ transition('non-interactable => interactable', animate(animationDuration + ' ' + backdropTransitionIn)),
434
+ transition(':enter', [
435
+ style({ opacity: 0 }),
436
+ animate(animationDuration + ' ' + backdropTransitionIn, style({ opacity: 1 })),
437
+ ]),
438
+ transition(':leave', [
439
+ animate(animationDuration + ' ' + backdropTransitionOut, style({ opacity: 0 })),
440
+ ]),
441
+ ]),
442
+ };
443
+
444
+ const getAnimationState = (interactable) => interactable ? 'interactable' : 'non-interactable';
445
+
446
+ class DaffSidebarViewportBackdropComponent {
447
+ constructor() {
448
+ this.interactableClass = true;
449
+ /**
450
+ * Determines whether or not the backdrop is transparent.
451
+ */
452
+ this.transparent = false;
453
+ /**
454
+ * Determines whether or not the backdrop is interactable.
455
+ */
456
+ this.interactable = true;
457
+ /**
458
+ * Boolean property that determines whether or not the
459
+ * backdrop should fill up its containing window.
460
+ */
461
+ this.fullscreen = false;
462
+ /**
463
+ * Output event triggered when the backdrop is clicked.
464
+ */
465
+ this.backdropClicked = new EventEmitter();
466
+ }
467
+ ngOnInit() {
468
+ this.interactableClass = this.interactable;
469
+ }
470
+ /**
471
+ * Animation hook for that controls the backdrops
472
+ * entrance and fade animations.
473
+ */
474
+ get fadeBackdropTrigger() {
475
+ return getAnimationState(this.interactable);
476
+ }
477
+ animationDone(e) {
478
+ this.interactableClass = !(e.toState === ':leave' || e.toState === 'non-interactable');
479
+ }
480
+ animationStart(e) {
481
+ if (e.toState === ':enter' || e.toState === 'interactable') {
482
+ this.interactableClass = true;
483
+ }
484
+ }
485
+ /**
486
+ * @deprecated
487
+ * Backdrop event that triggers when the backdrop element is clicked.
488
+ */
489
+ onBackdropClicked() {
490
+ this.backdropClicked.emit();
491
+ }
492
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffSidebarViewportBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
493
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: DaffSidebarViewportBackdropComponent, selector: "daff-sidebar-viewport-backdrop", inputs: { transparent: "transparent", interactable: "interactable", fullscreen: "fullscreen" }, outputs: { backdropClicked: "backdropClicked" }, host: { listeners: { "@fadeBackdrop.done": "animationDone($event)", "@fadeBackdrop.start": "animationStart($event)", "click": "onBackdropClicked()" }, properties: { "class.interactable": "this.interactableClass", "class.transparent": "this.transparent", "class.fullscreen": "this.fullscreen", "@fadeBackdrop": "this.fadeBackdropTrigger" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block;background:#0000004d;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;pointer-events:auto;height:100%;width:100%;visibility:hidden;z-index:6}:host.interactable{visibility:visible;pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host.transparent{background:none}:host:focus,:host:active,:host:visited{outline:0}:host.fullscreen{position:absolute}\n"], animations: [
494
+ daffSidebarViewportBackdropAnimations.fadeBackdrop,
495
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
496
+ }
497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffSidebarViewportBackdropComponent, decorators: [{
498
+ type: Component,
499
+ args: [{ selector: 'daff-sidebar-viewport-backdrop', template: '<ng-content></ng-content>', animations: [
500
+ daffSidebarViewportBackdropAnimations.fadeBackdrop,
501
+ ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;background:#0000004d;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;pointer-events:auto;height:100%;width:100%;visibility:hidden;z-index:6}:host.interactable{visibility:visible;pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host.transparent{background:none}:host:focus,:host:active,:host:visited{outline:0}:host.fullscreen{position:absolute}\n"] }]
502
+ }], propDecorators: { interactableClass: [{
503
+ type: HostBinding,
504
+ args: ['class.interactable']
505
+ }], transparent: [{
506
+ type: Input
507
+ }, {
508
+ type: HostBinding,
509
+ args: ['class.transparent']
510
+ }], interactable: [{
511
+ type: Input
512
+ }], fullscreen: [{
513
+ type: Input
514
+ }, {
515
+ type: HostBinding,
516
+ args: ['class.fullscreen']
517
+ }], backdropClicked: [{
518
+ type: Output
519
+ }], fadeBackdropTrigger: [{
520
+ type: HostBinding,
521
+ args: ['@fadeBackdrop']
522
+ }], animationDone: [{
523
+ type: HostListener,
524
+ args: ['@fadeBackdrop.done', ['$event']]
525
+ }], animationStart: [{
526
+ type: HostListener,
527
+ args: ['@fadeBackdrop.start', ['$event']]
528
+ }], onBackdropClicked: [{
529
+ type: HostListener,
530
+ args: ['click']
531
+ }] } });
532
+
425
533
  /**
426
534
  * The DaffSidebarViewport is the "holder" of sidebars throughout an entire application.
427
535
  * It's generally only used once, like
@@ -553,6 +661,14 @@ class DaffSidebarViewportComponent {
553
661
  this.cdRef.markForCheck();
554
662
  }
555
663
  }
664
+ ngOnDestroy() {
665
+ if (!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {
666
+ this.bodyScroll.enable();
667
+ }
668
+ else {
669
+ this.scroll.enable();
670
+ }
671
+ }
556
672
  /**
557
673
  * @docs-private
558
674
  *
@@ -575,7 +691,7 @@ class DaffSidebarViewportComponent {
575
691
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffSidebarViewportComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: DAFF_SIDEBAR_SCROLL_TOKEN, skipSelf: true }, { token: DaffSidebarViewportComponent, optional: true, skipSelf: true }, { token: DAFF_SIDEBAR_SCROLL_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
576
692
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: DaffSidebarViewportComponent, selector: "daff-sidebar-viewport", inputs: { navPlacement: "navPlacement" }, outputs: { backdropClicked: "backdropClicked" }, host: { properties: { "class.daff-sidebar-viewport": "this.hostClass", "class": "this.classes" } }, providers: [
577
693
  { provide: DAFF_SIDEBAR_SCROLL_TOKEN, useFactory: daffSidebarViewportScrollFactory },
578
- ], queries: [{ propertyName: "sidebars", predicate: DaffSidebarComponent }], ngImport: i0, template: "<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-backdrop\n [@transformContent]=\"_animationState\"\n class=\"daff-sidebar-viewport__backdrop\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\">\n</daff-backdrop>\n\n<div class=\"daff-sidebar-viewport__nav\"\n [@transformContent]=\"_animationState\"\n [style.padding-left.px]=\"_navPadLeft\"\n [style.padding-right.px]=\"_navPadRight\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n</div>\n\n<div class=\"daff-sidebar-viewport__content\"\n [@transformContent]=\"_animationState\"\n (@transformContent.start)=\"onContentAnimationStart($event)\"\n (@transformContent.done)=\"onContentAnimationDone($event)\">\n <div class=\"daff-sidebar-viewport__inner\"\n [style.padding-left.px]=\"_contentPadLeft\"\n [style.padding-right.px]=\"_contentPadRight\">\n <ng-content></ng-content>\n </div>\n</div>\n\n<ng-content select=\"daff-sidebar[side=right]\"></ng-content>\n", styles: [":host{display:flex;min-height:100dvh;position:relative;width:100%;z-index:1}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;z-index:3;height:100%}.daff-sidebar-viewport__nav{position:fixed;top:0;width:100%;z-index:4}.daff-sidebar-viewport__nav:empty{display:none}.daff-sidebar-viewport__nav:not(:empty)+.daff-sidebar-viewport__content{margin-top:var(--daff-sidebar-side-fixed-top-shift)}.daff-sidebar-viewport__backdrop{height:100%;position:absolute;width:100%;pointer-events:auto;z-index:6}:host-context(daff-sidebar-viewport daff-sidebar-viewport){transform:translate(0);min-height:auto}:host-context(daff-sidebar-viewport daff-sidebar-viewport) .daff-sidebar-viewport__inner{padding-left:0!important;padding-right:0!important}\n"], dependencies: [{ kind: "component", type: i2.DaffBackdropComponent, selector: "daff-backdrop", inputs: ["transparent", "interactable", "fullscreen"], outputs: ["backdropClicked"] }], animations: [
694
+ ], queries: [{ propertyName: "sidebars", predicate: DaffSidebarComponent }], ngImport: i0, template: "<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-sidebar-viewport-backdrop\n [@transformContent]=\"_animationState\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\">\n</daff-sidebar-viewport-backdrop>\n\n<div class=\"daff-sidebar-viewport__nav\"\n [@transformContent]=\"_animationState\"\n [style.padding-left.px]=\"_navPadLeft\"\n [style.padding-right.px]=\"_navPadRight\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n</div>\n\n<div class=\"daff-sidebar-viewport__content\"\n [@transformContent]=\"_animationState\"\n (@transformContent.start)=\"onContentAnimationStart($event)\"\n (@transformContent.done)=\"onContentAnimationDone($event)\">\n <div class=\"daff-sidebar-viewport__inner\"\n [style.padding-left.px]=\"_contentPadLeft\"\n [style.padding-right.px]=\"_contentPadRight\">\n <ng-content></ng-content>\n </div>\n</div>\n\n<ng-content select=\"daff-sidebar[side=right]\"></ng-content>\n", styles: [":host{display:flex;min-height:100dvh;position:relative;width:100%;z-index:1}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;z-index:3;height:100%}.daff-sidebar-viewport__nav{position:fixed;top:0;width:100%;z-index:4}.daff-sidebar-viewport__nav:empty{display:none}.daff-sidebar-viewport__nav:not(:empty)+.daff-sidebar-viewport__content{margin-top:var(--daff-sidebar-side-fixed-top-shift)}:host-context(daff-sidebar-viewport daff-sidebar-viewport){transform:translate(0);min-height:auto}:host-context(daff-sidebar-viewport daff-sidebar-viewport) .daff-sidebar-viewport__inner{padding-left:0!important;padding-right:0!important}\n"], dependencies: [{ kind: "component", type: DaffSidebarViewportBackdropComponent, selector: "daff-sidebar-viewport-backdrop", inputs: ["transparent", "interactable", "fullscreen"], outputs: ["backdropClicked"] }], animations: [
579
695
  daffSidebarAnimations.transformContent,
580
696
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
581
697
  }
@@ -585,7 +701,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
585
701
  daffSidebarAnimations.transformContent,
586
702
  ], providers: [
587
703
  { provide: DAFF_SIDEBAR_SCROLL_TOKEN, useFactory: daffSidebarViewportScrollFactory },
588
- ], template: "<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-backdrop\n [@transformContent]=\"_animationState\"\n class=\"daff-sidebar-viewport__backdrop\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\">\n</daff-backdrop>\n\n<div class=\"daff-sidebar-viewport__nav\"\n [@transformContent]=\"_animationState\"\n [style.padding-left.px]=\"_navPadLeft\"\n [style.padding-right.px]=\"_navPadRight\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n</div>\n\n<div class=\"daff-sidebar-viewport__content\"\n [@transformContent]=\"_animationState\"\n (@transformContent.start)=\"onContentAnimationStart($event)\"\n (@transformContent.done)=\"onContentAnimationDone($event)\">\n <div class=\"daff-sidebar-viewport__inner\"\n [style.padding-left.px]=\"_contentPadLeft\"\n [style.padding-right.px]=\"_contentPadRight\">\n <ng-content></ng-content>\n </div>\n</div>\n\n<ng-content select=\"daff-sidebar[side=right]\"></ng-content>\n", styles: [":host{display:flex;min-height:100dvh;position:relative;width:100%;z-index:1}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;z-index:3;height:100%}.daff-sidebar-viewport__nav{position:fixed;top:0;width:100%;z-index:4}.daff-sidebar-viewport__nav:empty{display:none}.daff-sidebar-viewport__nav:not(:empty)+.daff-sidebar-viewport__content{margin-top:var(--daff-sidebar-side-fixed-top-shift)}.daff-sidebar-viewport__backdrop{height:100%;position:absolute;width:100%;pointer-events:auto;z-index:6}:host-context(daff-sidebar-viewport daff-sidebar-viewport){transform:translate(0);min-height:auto}:host-context(daff-sidebar-viewport daff-sidebar-viewport) .daff-sidebar-viewport__inner{padding-left:0!important;padding-right:0!important}\n"] }]
704
+ ], template: "<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-sidebar-viewport-backdrop\n [@transformContent]=\"_animationState\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\">\n</daff-sidebar-viewport-backdrop>\n\n<div class=\"daff-sidebar-viewport__nav\"\n [@transformContent]=\"_animationState\"\n [style.padding-left.px]=\"_navPadLeft\"\n [style.padding-right.px]=\"_navPadRight\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n</div>\n\n<div class=\"daff-sidebar-viewport__content\"\n [@transformContent]=\"_animationState\"\n (@transformContent.start)=\"onContentAnimationStart($event)\"\n (@transformContent.done)=\"onContentAnimationDone($event)\">\n <div class=\"daff-sidebar-viewport__inner\"\n [style.padding-left.px]=\"_contentPadLeft\"\n [style.padding-right.px]=\"_contentPadRight\">\n <ng-content></ng-content>\n </div>\n</div>\n\n<ng-content select=\"daff-sidebar[side=right]\"></ng-content>\n", styles: [":host{display:flex;min-height:100dvh;position:relative;width:100%;z-index:1}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;z-index:3;height:100%}.daff-sidebar-viewport__nav{position:fixed;top:0;width:100%;z-index:4}.daff-sidebar-viewport__nav:empty{display:none}.daff-sidebar-viewport__nav:not(:empty)+.daff-sidebar-viewport__content{margin-top:var(--daff-sidebar-side-fixed-top-shift)}:host-context(daff-sidebar-viewport daff-sidebar-viewport){transform:translate(0);min-height:auto}:host-context(daff-sidebar-viewport daff-sidebar-viewport) .daff-sidebar-viewport__inner{padding-left:0!important;padding-right:0!important}\n"] }]
589
705
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{
590
706
  type: Inject,
591
707
  args: [DAFF_SIDEBAR_SCROLL_TOKEN]
@@ -623,17 +739,17 @@ class DaffSidebarModule {
623
739
  DaffSidebarHeaderComponent,
624
740
  DaffSidebarFooterComponent,
625
741
  DaffSidebarHeaderTitleDirective,
626
- DaffSidebarHeaderActionDirective], imports: [CommonModule,
627
- A11yModule,
628
- DaffBackdropModule], exports: [DaffSidebarComponent,
742
+ DaffSidebarHeaderActionDirective,
743
+ DaffSidebarViewportBackdropComponent], imports: [CommonModule,
744
+ A11yModule], exports: [DaffSidebarComponent,
629
745
  DaffSidebarViewportComponent,
630
746
  DaffSidebarHeaderComponent,
631
747
  DaffSidebarFooterComponent,
632
748
  DaffSidebarHeaderTitleDirective,
633
- DaffSidebarHeaderActionDirective] }); }
749
+ DaffSidebarHeaderActionDirective,
750
+ DaffSidebarViewportBackdropComponent] }); }
634
751
  /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffSidebarModule, imports: [CommonModule,
635
- A11yModule,
636
- DaffBackdropModule] }); }
752
+ A11yModule] }); }
637
753
  }
638
754
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffSidebarModule, decorators: [{
639
755
  type: NgModule,
@@ -641,7 +757,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
641
757
  imports: [
642
758
  CommonModule,
643
759
  A11yModule,
644
- DaffBackdropModule,
645
760
  ],
646
761
  declarations: [
647
762
  DaffSidebarComponent,
@@ -650,6 +765,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
650
765
  DaffSidebarFooterComponent,
651
766
  DaffSidebarHeaderTitleDirective,
652
767
  DaffSidebarHeaderActionDirective,
768
+ DaffSidebarViewportBackdropComponent,
653
769
  ],
654
770
  exports: [
655
771
  DaffSidebarComponent,
@@ -658,6 +774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
658
774
  DaffSidebarFooterComponent,
659
775
  DaffSidebarHeaderTitleDirective,
660
776
  DaffSidebarHeaderActionDirective,
777
+ DaffSidebarViewportBackdropComponent,
661
778
  ],
662
779
  }]
663
780
  }] });
@@ -666,5 +783,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
666
783
  * Generated bundle index. Do not edit.
667
784
  */
668
785
 
669
- export { DaffSidebarComponent, DaffSidebarFooterComponent, DaffSidebarHeaderActionDirective, DaffSidebarHeaderComponent, DaffSidebarHeaderTitleDirective, DaffSidebarModule, DaffSidebarViewportComponent };
786
+ export { DaffSidebarComponent, DaffSidebarFooterComponent, DaffSidebarHeaderActionDirective, DaffSidebarHeaderComponent, DaffSidebarHeaderTitleDirective, DaffSidebarModule, DaffSidebarViewportBackdropComponent, DaffSidebarViewportComponent };
670
787
  //# sourceMappingURL=daffodil-design-sidebar.mjs.map