@daffodil/design 0.61.0 → 0.62.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. package/accordion/examples/package.json +1 -1
  2. package/article/examples/package.json +1 -1
  3. package/button/examples/package.json +1 -1
  4. package/callout/examples/package.json +1 -1
  5. package/card/examples/package.json +1 -1
  6. package/checkbox/examples/package.json +1 -1
  7. package/container/examples/package.json +1 -1
  8. package/core/animation/animation-state-with-params.d.ts +8 -0
  9. package/core/public_api.d.ts +1 -0
  10. package/esm2020/core/animation/animation-state-with-params.mjs +2 -0
  11. package/esm2020/core/public_api.mjs +2 -1
  12. package/esm2020/molecules/backdrop/animation/backdrop-animation-state.mjs +2 -0
  13. package/esm2020/molecules/backdrop/animation/backdrop-animation.mjs +6 -2
  14. package/esm2020/molecules/backdrop/backdrop/backdrop.component.mjs +40 -5
  15. package/esm2020/molecules/sidebar/animation/sidebar-animation-state.mjs +2 -2
  16. package/esm2020/molecules/sidebar/animation/sidebar-animation-width.mjs +2 -0
  17. package/esm2020/molecules/sidebar/animation/sidebar-animation.mjs +21 -4
  18. package/esm2020/molecules/sidebar/animation/sidebar-viewport-animation-state.mjs +3 -0
  19. package/esm2020/molecules/sidebar/helper/sidebar-mode.mjs +1 -1
  20. package/esm2020/molecules/sidebar/helper/sidebar-side.mjs +2 -0
  21. package/esm2020/molecules/sidebar/public_api.mjs +1 -2
  22. package/esm2020/molecules/sidebar/sidebar/sidebar.component.mjs +62 -10
  23. package/esm2020/molecules/sidebar/sidebar-viewport/backdrop-interactable.mjs +5 -0
  24. package/esm2020/molecules/sidebar/sidebar-viewport/content-pad.mjs +17 -0
  25. package/esm2020/molecules/sidebar/sidebar-viewport/content-shift.mjs +21 -0
  26. package/esm2020/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +83 -81
  27. package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.component.mjs +12 -0
  28. package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.module.mjs +29 -0
  29. package/esm2020/sidebar/examples/daffodil-design-sidebar-examples.mjs +5 -0
  30. package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.mjs +21 -0
  31. package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.mjs +32 -0
  32. package/esm2020/sidebar/examples/index.mjs +2 -0
  33. package/esm2020/sidebar/examples/public_api.mjs +18 -0
  34. package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.mjs +12 -0
  35. package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.mjs +29 -0
  36. package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.mjs +12 -0
  37. package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.mjs +29 -0
  38. package/esm2020/sidebar/examples/under-sidebar/under-sidebar.component.mjs +26 -0
  39. package/esm2020/sidebar/examples/under-sidebar/under-sidebar.module.mjs +32 -0
  40. package/esm2020/tree/daffodil-design-tree.mjs +5 -0
  41. package/esm2020/tree/examples/basic-tree/basic-tree.component.mjs +39 -0
  42. package/esm2020/tree/examples/basic-tree/basic-tree.module.mjs +34 -0
  43. package/esm2020/tree/examples/daffodil-design-tree-examples.mjs +5 -0
  44. package/esm2020/tree/examples/index.mjs +2 -0
  45. package/esm2020/tree/examples/public_api.mjs +7 -0
  46. package/esm2020/tree/index.mjs +2 -0
  47. package/esm2020/tree/interfaces/recursive-key.mjs +2 -0
  48. package/esm2020/tree/interfaces/tree-data.mjs +2 -0
  49. package/esm2020/tree/interfaces/tree-ui.mjs +2 -0
  50. package/esm2020/tree/public_api.mjs +5 -0
  51. package/esm2020/tree/tree/tree-notifier.service.mjs +45 -0
  52. package/esm2020/tree/tree/tree.component.mjs +106 -0
  53. package/esm2020/tree/tree-item/tree-item.directive.mjs +154 -0
  54. package/esm2020/tree/tree.module.mjs +31 -0
  55. package/esm2020/tree/utils/flatten-tree.mjs +47 -0
  56. package/esm2020/tree/utils/hydrate-tree.mjs +31 -0
  57. package/esm2020/tree/utils/transform-in-place.mjs +23 -0
  58. package/esm2020/tree/utils/traverse-tree.mjs +21 -0
  59. package/fesm2015/daffodil-design-sidebar-examples.mjs +218 -0
  60. package/fesm2015/daffodil-design-sidebar-examples.mjs.map +1 -0
  61. package/fesm2015/daffodil-design-tree-examples.mjs +81 -0
  62. package/fesm2015/daffodil-design-tree-examples.mjs.map +1 -0
  63. package/fesm2015/daffodil-design-tree.mjs +443 -0
  64. package/fesm2015/daffodil-design-tree.mjs.map +1 -0
  65. package/fesm2015/daffodil-design.mjs +250 -98
  66. package/fesm2015/daffodil-design.mjs.map +1 -1
  67. package/fesm2020/daffodil-design-sidebar-examples.mjs +218 -0
  68. package/fesm2020/daffodil-design-sidebar-examples.mjs.map +1 -0
  69. package/fesm2020/daffodil-design-tree-examples.mjs +81 -0
  70. package/fesm2020/daffodil-design-tree-examples.mjs.map +1 -0
  71. package/fesm2020/daffodil-design-tree.mjs +448 -0
  72. package/fesm2020/daffodil-design-tree.mjs.map +1 -0
  73. package/fesm2020/daffodil-design.mjs +250 -98
  74. package/fesm2020/daffodil-design.mjs.map +1 -1
  75. package/hero/examples/package.json +1 -1
  76. package/image/examples/package.json +1 -1
  77. package/input/examples/package.json +1 -1
  78. package/list/examples/package.json +1 -1
  79. package/loading-icon/examples/package.json +1 -1
  80. package/media-gallery/examples/package.json +1 -1
  81. package/menu/examples/package.json +1 -1
  82. package/modal/examples/package.json +1 -1
  83. package/molecules/backdrop/animation/backdrop-animation-state.d.ts +2 -0
  84. package/molecules/backdrop/backdrop/backdrop.component.d.ts +17 -3
  85. package/molecules/sidebar/animation/sidebar-animation-state.d.ts +2 -1
  86. package/molecules/sidebar/animation/sidebar-animation-width.d.ts +2 -0
  87. package/molecules/sidebar/animation/sidebar-animation.d.ts +3 -1
  88. package/molecules/sidebar/animation/sidebar-viewport-animation-state.d.ts +6 -0
  89. package/molecules/sidebar/helper/sidebar-mode.d.ts +27 -1
  90. package/molecules/sidebar/helper/sidebar-side.d.ts +12 -0
  91. package/molecules/sidebar/public_api.d.ts +2 -1
  92. package/molecules/sidebar/sidebar/sidebar.component.d.ts +37 -5
  93. package/molecules/sidebar/sidebar-viewport/backdrop-interactable.d.ts +6 -0
  94. package/molecules/sidebar/sidebar-viewport/content-pad.d.ts +7 -0
  95. package/molecules/sidebar/sidebar-viewport/content-shift.d.ts +8 -0
  96. package/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +47 -44
  97. package/navbar/examples/package.json +1 -1
  98. package/package.json +1 -1
  99. package/paginator/examples/package.json +1 -1
  100. package/quantity-field/examples/package.json +1 -1
  101. package/radio/examples/package.json +1 -1
  102. package/scss/global.scss +1 -0
  103. package/scss/theme.scss +2 -0
  104. package/sidebar/examples/basic-sidebar/basic-sidebar.component.d.ts +5 -0
  105. package/sidebar/examples/basic-sidebar/basic-sidebar.module.d.ts +8 -0
  106. package/sidebar/examples/daffodil-design-sidebar-examples.d.ts +5 -0
  107. package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.d.ts +8 -0
  108. package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.d.ts +8 -0
  109. package/sidebar/examples/index.d.ts +1 -0
  110. package/sidebar/examples/package.json +1 -0
  111. package/sidebar/examples/public_api.d.ts +2 -0
  112. package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.d.ts +5 -0
  113. package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.d.ts +8 -0
  114. package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.d.ts +5 -0
  115. package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.d.ts +8 -0
  116. package/sidebar/examples/under-sidebar/under-sidebar.component.d.ts +10 -0
  117. package/sidebar/examples/under-sidebar/under-sidebar.module.d.ts +8 -0
  118. package/src/molecules/sidebar/README.md +10 -0
  119. package/src/molecules/sidebar/helper/_variables.scss +7 -0
  120. package/src/molecules/sidebar/sidebar/sidebar-theme.scss +3 -3
  121. package/src/molecules/sidebar/sidebar-viewport/sidebar-viewport-theme.scss +5 -0
  122. package/tree/README.md +38 -0
  123. package/tree/daffodil-design-tree.d.ts +5 -0
  124. package/tree/examples/basic-tree/basic-tree.component.d.ts +7 -0
  125. package/tree/examples/basic-tree/basic-tree.module.d.ts +10 -0
  126. package/tree/examples/daffodil-design-tree-examples.d.ts +5 -0
  127. package/tree/examples/index.d.ts +1 -0
  128. package/tree/examples/package.json +1 -0
  129. package/tree/examples/public_api.d.ts +4 -0
  130. package/tree/index.d.ts +1 -0
  131. package/tree/interfaces/recursive-key.d.ts +3 -0
  132. package/tree/interfaces/tree-data.d.ts +13 -0
  133. package/tree/interfaces/tree-ui.d.ts +11 -0
  134. package/tree/package.json +1 -0
  135. package/tree/public_api.d.ts +6 -0
  136. package/tree/src/tree-theme.scss +38 -0
  137. package/tree/tree/tree-notifier.service.d.ts +32 -0
  138. package/tree/tree/tree.component.d.ts +75 -0
  139. package/tree/tree-item/tree-item.directive.d.ts +102 -0
  140. package/tree/tree.module.d.ts +9 -0
  141. package/tree/utils/flatten-tree.d.ts +19 -0
  142. package/tree/utils/hydrate-tree.d.ts +8 -0
  143. package/tree/utils/transform-in-place.d.ts +15 -0
  144. package/tree/utils/traverse-tree.d.ts +5 -0
@@ -0,0 +1,32 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DaffSidebarModule, DaffNavbarModule, DaffButtonModule, } from '@daffodil/design';
3
+ import { UnderSidebarComponent } from './under-sidebar.component';
4
+ import * as i0 from "@angular/core";
5
+ export class UnderSidebarModule {
6
+ }
7
+ /** @nocollapse */ UnderSidebarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: UnderSidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ /** @nocollapse */ UnderSidebarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: UnderSidebarModule, declarations: [UnderSidebarComponent], imports: [DaffSidebarModule,
9
+ DaffNavbarModule,
10
+ DaffButtonModule], exports: [UnderSidebarComponent] });
11
+ /** @nocollapse */ UnderSidebarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: UnderSidebarModule, imports: [[
12
+ DaffSidebarModule,
13
+ DaffNavbarModule,
14
+ DaffButtonModule,
15
+ ]] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: UnderSidebarModule, decorators: [{
17
+ type: NgModule,
18
+ args: [{
19
+ imports: [
20
+ DaffSidebarModule,
21
+ DaffNavbarModule,
22
+ DaffButtonModule,
23
+ ],
24
+ declarations: [
25
+ UnderSidebarComponent,
26
+ ],
27
+ exports: [
28
+ UnderSidebarComponent,
29
+ ],
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZXItc2lkZWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi9zaWRlYmFyL2V4YW1wbGVzL3NyYy91bmRlci1zaWRlYmFyL3VuZGVyLXNpZGViYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBZWxFLE1BQU0sT0FBTyxrQkFBa0I7O2tJQUFsQixrQkFBa0I7bUlBQWxCLGtCQUFrQixpQkFOM0IscUJBQXFCLGFBTHJCLGlCQUFpQjtRQUNqQixnQkFBZ0I7UUFDaEIsZ0JBQWdCLGFBTWhCLHFCQUFxQjttSUFHWixrQkFBa0IsWUFacEI7WUFDUCxpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtTQUNqQjsyRkFRVSxrQkFBa0I7a0JBYjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDWixxQkFBcUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgRGFmZlNpZGViYXJNb2R1bGUsXG4gIERhZmZOYXZiYXJNb2R1bGUsXG4gIERhZmZCdXR0b25Nb2R1bGUsXG59IGZyb20gJ0BkYWZmb2RpbC9kZXNpZ24nO1xuXG5pbXBvcnQgeyBVbmRlclNpZGViYXJDb21wb25lbnQgfSBmcm9tICcuL3VuZGVyLXNpZGViYXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIERhZmZTaWRlYmFyTW9kdWxlLFxuICAgIERhZmZOYXZiYXJNb2R1bGUsXG4gICAgRGFmZkJ1dHRvbk1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVW5kZXJTaWRlYmFyQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVW5kZXJTaWRlYmFyQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBVbmRlclNpZGViYXJNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFmZm9kaWwtZGVzaWduLXRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy9kYWZmb2RpbC1kZXNpZ24tdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { ChangeDetectionStrategy, Component, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@daffodil/design/tree";
4
+ import * as i2 from "@angular/router";
5
+ export class BasicTreeComponent {
6
+ constructor() {
7
+ this.tree = {
8
+ title: 'Root',
9
+ items: [
10
+ {
11
+ title: 'Example Children',
12
+ items: [
13
+ { title: 'Example Child', url: '#', id: '', items: [], data: {} },
14
+ ],
15
+ url: '#',
16
+ id: '',
17
+ data: {},
18
+ },
19
+ {
20
+ title: 'Example Link',
21
+ items: [],
22
+ url: '#',
23
+ id: '',
24
+ data: {},
25
+ },
26
+ ],
27
+ url: '',
28
+ id: '',
29
+ data: {},
30
+ };
31
+ }
32
+ }
33
+ /** @nocollapse */ BasicTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BasicTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
+ /** @nocollapse */ BasicTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: BasicTreeComponent, selector: "basic-tree", ngImport: i0, template: "<ul daff-tree [tree]=\"tree\">\n\t<ng-template #daffTreeItemWithChildrenTpl let-node>\n\t\t\t<button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n\t</ng-template>\n\t\n\t<ng-template #daffTreeItemTpl let-node>\n\t\t\t<a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n\t</ng-template>\n</ul>\n\n", components: [{ type: i1.DaffTreeComponent, selector: "ul[daff-tree]", inputs: ["tree"] }], directives: [{ type: i1.DaffTreeItemDirective, selector: "[daffTreeItem]", inputs: ["node", "selected"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BasicTreeComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'basic-tree', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul daff-tree [tree]=\"tree\">\n\t<ng-template #daffTreeItemWithChildrenTpl let-node>\n\t\t\t<button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n\t</ng-template>\n\t\n\t<ng-template #daffTreeItemTpl let-node>\n\t\t\t<a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n\t</ng-template>\n</ul>\n\n" }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL2V4YW1wbGVzL3NyYy9iYXNpYy10cmVlL2Jhc2ljLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9leGFtcGxlcy9zcmMvYmFzaWMtdHJlZS9iYXNpYy10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7O0FBVXZCLE1BQU0sT0FBTyxrQkFBa0I7SUFOL0I7UUFPRSxTQUFJLEdBQTBCO1lBQzVCLEtBQUssRUFBRSxNQUFNO1lBQ2IsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEtBQUssRUFBRSxrQkFBa0I7b0JBQ3pCLEtBQUssRUFBRTt3QkFDTCxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQztxQkFDakU7b0JBQ0QsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsRUFBRSxFQUFFLEVBQUU7b0JBQ04sSUFBSSxFQUFFLEVBQUU7aUJBQ1Q7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLGNBQWM7b0JBQ3JCLEtBQUssRUFBRSxFQUFFO29CQUNULEdBQUcsRUFBRSxHQUFHO29CQUNSLEVBQUUsRUFBRSxFQUFFO29CQUNOLElBQUksRUFBRSxFQUFFO2lCQUNUO2FBQ0Y7WUFDRCxHQUFHLEVBQUUsRUFBRTtZQUNQLEVBQUUsRUFBRSxFQUFFO1lBQ04sSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO0tBQ0g7O2tJQXpCWSxrQkFBa0I7c0hBQWxCLGtCQUFrQixrRENiL0Isa1ZBVUE7MkZER2Esa0JBQWtCO2tCQU45QixTQUFTOytCQUVFLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYWZmVHJlZURhdGEgfSBmcm9tICdAZGFmZm9kaWwvZGVzaWduL3RyZWUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdiYXNpYy10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2ljLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQmFzaWNUcmVlQ29tcG9uZW50IHtcbiAgdHJlZTogRGFmZlRyZWVEYXRhPHVua25vd24+ID0ge1xuICAgIHRpdGxlOiAnUm9vdCcsXG4gICAgaXRlbXM6IFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFeGFtcGxlIENoaWxkcmVuJyxcbiAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICB7IHRpdGxlOiAnRXhhbXBsZSBDaGlsZCcsIHVybDogJyMnLCBpZDogJycsIGl0ZW1zOiBbXSwgZGF0YToge319LFxuICAgICAgICBdLFxuICAgICAgICB1cmw6ICcjJyxcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICBkYXRhOiB7fSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXhhbXBsZSBMaW5rJyxcbiAgICAgICAgaXRlbXM6IFtdLFxuICAgICAgICB1cmw6ICcjJyxcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICBkYXRhOiB7fSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICB1cmw6ICcnLFxuICAgIGlkOiAnJyxcbiAgICBkYXRhOiB7fSxcbiAgfTtcbn1cbiIsIjx1bCBkYWZmLXRyZWUgW3RyZWVdPVwidHJlZVwiPlxuXHQ8bmctdGVtcGxhdGUgI2RhZmZUcmVlSXRlbVdpdGhDaGlsZHJlblRwbCBsZXQtbm9kZT5cblx0XHRcdDxidXR0b24gZGFmZlRyZWVJdGVtIFtub2RlXT1cIm5vZGVcIj57eyBub2RlLnRpdGxlIH19IDwvYnV0dG9uPlxuXHQ8L25nLXRlbXBsYXRlPlxuXHRcblx0PG5nLXRlbXBsYXRlICNkYWZmVHJlZUl0ZW1UcGwgbGV0LW5vZGU+XG5cdFx0XHQ8YSBkYWZmVHJlZUl0ZW0gW25vZGVdPVwibm9kZVwiIFtyb3V0ZXJMaW5rXT1cIm5vZGUudXJsXCI+e3sgbm9kZS50aXRsZSB9fTwvYT5cblx0PC9uZy10ZW1wbGF0ZT5cbjwvdWw+XG5cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
4
+ import { DaffTreeModule } from '@daffodil/design/tree';
5
+ import { BasicTreeComponent } from './basic-tree.component';
6
+ import * as i0 from "@angular/core";
7
+ export class BasicTreeModule {
8
+ }
9
+ /** @nocollapse */ BasicTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BasicTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ /** @nocollapse */ BasicTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BasicTreeModule, declarations: [BasicTreeComponent], imports: [RouterModule,
11
+ DaffTreeModule,
12
+ FontAwesomeModule], exports: [BasicTreeComponent] });
13
+ /** @nocollapse */ BasicTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BasicTreeModule, imports: [[
14
+ RouterModule,
15
+ DaffTreeModule,
16
+ FontAwesomeModule,
17
+ ]] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: BasicTreeModule, decorators: [{
19
+ type: NgModule,
20
+ args: [{
21
+ declarations: [
22
+ BasicTreeComponent,
23
+ ],
24
+ exports: [
25
+ BasicTreeComponent,
26
+ ],
27
+ imports: [
28
+ RouterModule,
29
+ DaffTreeModule,
30
+ FontAwesomeModule,
31
+ ],
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtdHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL2V4YW1wbGVzL3NyYy9iYXNpYy10cmVlL2Jhc2ljLXRyZWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFlNUQsTUFBTSxPQUFPLGVBQWU7OytIQUFmLGVBQWU7Z0lBQWYsZUFBZSxpQkFYeEIsa0JBQWtCLGFBTWxCLFlBQVk7UUFDWixjQUFjO1FBQ2QsaUJBQWlCLGFBTGpCLGtCQUFrQjtnSUFRVCxlQUFlLFlBTmpCO1lBQ1AsWUFBWTtZQUNaLGNBQWM7WUFDZCxpQkFBaUI7U0FDbEI7MkZBRVUsZUFBZTtrQkFiM0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGlCQUFpQjtxQkFDbEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuXG5pbXBvcnQgeyBEYWZmVHJlZU1vZHVsZSB9IGZyb20gJ0BkYWZmb2RpbC9kZXNpZ24vdHJlZSc7XG5cbmltcG9ydCB7IEJhc2ljVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzaWMtdHJlZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCYXNpY1RyZWVDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCYXNpY1RyZWVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRGFmZlRyZWVNb2R1bGUsXG4gICAgRm9udEF3ZXNvbWVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEJhc2ljVHJlZU1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFmZm9kaWwtZGVzaWduLXRyZWUtZXhhbXBsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL2V4YW1wbGVzL3NyYy9kYWZmb2RpbC1kZXNpZ24tdHJlZS1leGFtcGxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './public_api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL2V4YW1wbGVzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { BasicTreeComponent } from './basic-tree/basic-tree.component';
2
+ export { BasicTreeModule } from './basic-tree/basic-tree.module';
3
+ export { BasicTreeComponent };
4
+ export const TREE_EXAMPLES = [
5
+ BasicTreeComponent,
6
+ ];
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3RyZWUvZXhhbXBsZXMvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRyxDQUFDO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixrQkFBa0I7Q0FDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2ljVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzaWMtdHJlZS9iYXNpYy10cmVlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCYXNpY1RyZWVNb2R1bGUgfSBmcm9tICcuL2Jhc2ljLXRyZWUvYmFzaWMtdHJlZS5tb2R1bGUnO1xuZXhwb3J0IHsgQmFzaWNUcmVlQ29tcG9uZW50ICB9O1xuZXhwb3J0IGNvbnN0IFRSRUVfRVhBTVBMRVMgPSBbXG4gIEJhc2ljVHJlZUNvbXBvbmVudCxcbl07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './public_api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdXJzaXZlLWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3RyZWUvc3JjL2ludGVyZmFjZXMvcmVjdXJzaXZlLWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUmVjdXJzaXZlVHJlZUtleU9mVHlwZTxUPiA9IGtleW9mIHtcbiAgW1AgaW4ga2V5b2YgVCBhcyBUW1BdIGV4dGVuZHMgVFtdPyBQOiBuZXZlcl06IFRbXVxufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvaW50ZXJmYWNlcy90cmVlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBiYXNpYyB0cmVlIHR5cGUgc3VwcG9ydGluZyBzdXBwbGVtZW50YWwgZGF0YSBvbiBhIHRyZWUgbm9kZS5cbiAqXG4gKiBUcmVlIGVsZW1lbnRzIGFyZSBvZnRlbiBzbGlnaHRseSBtb3JlIHRoYW4ganVzdCBiYXNpYyB0aXRsZXMgYW5kIGNoaWxkIGl0ZW1zLlxuICogVGhlcmUgbWF5IGJlIG90aGVyIGltcG9ydGFudCBkYXRhIHRoYXQgbmVlZHMgdG8gYmUgYXZhaWxhYmxlIGF0IHJlbmRlciB0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhZmZUcmVlRGF0YTxUPiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBpdGVtczogRGFmZlRyZWVEYXRhPFQ+W107XG4gIGRhdGE6IFQ7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS11aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3RyZWUvc3JjL2ludGVyZmFjZXMvdHJlZS11aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGFmZlRyZWVEYXRhIH0gZnJvbSAnLi90cmVlLWRhdGEnO1xuXG4vKipcbiAqIEEgRGFmZlRyZWVVaSBpcyB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCBkdXJpbmcgdHJlZSByZW5kZXJpbmcuXG4gKlxuICogVGhpcyBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgdHlwZSB0aGF0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhZmZUcmVlVWk8VD4gZXh0ZW5kcyBEYWZmVHJlZURhdGE8VD4ge1xuICBvcGVuOiBib29sZWFuO1xuICBpdGVtczogRGFmZlRyZWVVaTxUPltdO1xuICBwYXJlbnQ6IERhZmZUcmVlVWk8VD47XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export { DaffTreeModule } from './tree.module';
2
+ export { DaffTreeComponent } from './tree/tree.component';
3
+ export { DaffTreeItemDirective } from './tree-item/tree-item.directive';
4
+ export { daffTransformTreeInPlace } from './utils/transform-in-place';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3RyZWUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERhZmZUcmVlTW9kdWxlIH0gZnJvbSAnLi90cmVlLm1vZHVsZSc7XG5leHBvcnQgeyBEYWZmVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS90cmVlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBEYWZmVHJlZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3RyZWUtaXRlbS90cmVlLWl0ZW0uZGlyZWN0aXZlJztcbmV4cG9ydCB7IERhZmZUcmVlRGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcy90cmVlLWRhdGEnO1xuZXhwb3J0IHsgRGFmZlRyZWVVaSB9IGZyb20gJy4vaW50ZXJmYWNlcy90cmVlLXVpJztcbmV4cG9ydCB7IGRhZmZUcmFuc2Zvcm1UcmVlSW5QbGFjZSB9IGZyb20gJy4vdXRpbHMvdHJhbnNmb3JtLWluLXBsYWNlJztcbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { __decorate } from "tslib";
2
+ import { Inject, } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ /**
5
+ * This service is used by tree-items to notify their parent
6
+ * that the tree has to be re-computed.
7
+ *
8
+ * This service is a multiton associated with each tree instance.
9
+ * It follows the same lifecycle has the tree it is associated with.
10
+ */
11
+ let DaffTreeNotifierService = class DaffTreeNotifierService {
12
+ constructor() {
13
+ /**
14
+ * @docs-private
15
+ */
16
+ this._notice = new BehaviorSubject(true);
17
+ /**
18
+ * An observable that emits when the tree needs to be re-computed.
19
+ */
20
+ this.notice$ = this._notice.asObservable();
21
+ }
22
+ /**
23
+ * `notify` can be called to trigger a re-computation of the tree
24
+ * if data has changed unexpectedly and a re-render did not occur.
25
+ *
26
+ * This should be used sparingly. Instead, prefer updating `data` on the tree
27
+ * itself for performance reasons.
28
+ */
29
+ notify() {
30
+ this._notice.next(true);
31
+ }
32
+ /**
33
+ * Cleanup when the tree is destroyed.
34
+ *
35
+ * @docs-private
36
+ */
37
+ ngOnDestroy() {
38
+ this._notice.complete();
39
+ }
40
+ };
41
+ DaffTreeNotifierService = __decorate([
42
+ Inject({})
43
+ ], DaffTreeNotifierService);
44
+ export { DaffTreeNotifierService };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub3RpZmllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdHJlZS90cmVlLW5vdGlmaWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2Qzs7Ozs7O0dBTUc7QUFFSCxJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF1QjtJQUFwQztRQUVFOztXQUVHO1FBQ0ssWUFBTyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUUvRTs7V0FFRztRQUNILFlBQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBcUJ4QyxDQUFDO0lBbkJDOzs7Ozs7T0FNRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7Q0FDRixDQUFBO0FBL0JZLHVCQUF1QjtJQURuQyxNQUFNLENBQUMsRUFBRSxDQUFDO0dBQ0UsdUJBQXVCLENBK0JuQztTQS9CWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgaXMgdXNlZCBieSB0cmVlLWl0ZW1zIHRvIG5vdGlmeSB0aGVpciBwYXJlbnRcbiAqIHRoYXQgdGhlIHRyZWUgaGFzIHRvIGJlIHJlLWNvbXB1dGVkLlxuICpcbiAqIFRoaXMgc2VydmljZSBpcyBhIG11bHRpdG9uIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHRyZWUgaW5zdGFuY2UuXG4gKiBJdCBmb2xsb3dzIHRoZSBzYW1lIGxpZmVjeWNsZSBoYXMgdGhlIHRyZWUgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICovXG5ASW5qZWN0KHt9KVxuZXhwb3J0IGNsYXNzIERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfbm90aWNlOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8qKlxuICAgKiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiB0aGUgdHJlZSBuZWVkcyB0byBiZSByZS1jb21wdXRlZC5cbiAgICovXG4gIG5vdGljZSQgPSB0aGlzLl9ub3RpY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIGBub3RpZnlgIGNhbiBiZSBjYWxsZWQgdG8gdHJpZ2dlciBhIHJlLWNvbXB1dGF0aW9uIG9mIHRoZSB0cmVlXG4gICAqIGlmIGRhdGEgaGFzIGNoYW5nZWQgdW5leHBlY3RlZGx5IGFuZCBhIHJlLXJlbmRlciBkaWQgbm90IG9jY3VyLlxuICAgKlxuICAgKiBUaGlzIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseS4gSW5zdGVhZCwgcHJlZmVyIHVwZGF0aW5nIGBkYXRhYCBvbiB0aGUgdHJlZVxuICAgKiBpdHNlbGYgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuXG4gICAqL1xuICBub3RpZnkoKSB7XG4gICAgdGhpcy5fbm90aWNlLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW51cCB3aGVuIHRoZSB0cmVlIGlzIGRlc3Ryb3llZC5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbm90aWNlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,106 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChild, HostBinding, Input, TemplateRef, ViewEncapsulation, } from '@angular/core';
2
+ import { flattenTree, } from '../utils/flatten-tree';
3
+ import { hydrateTree } from '../utils/hydrate-tree';
4
+ import { DaffTreeNotifierService } from './tree-notifier.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./tree-notifier.service";
7
+ import * as i2 from "@angular/common";
8
+ /**
9
+ * The `DaffTreeComponent` allows you to render tree structures as interactable ui.
10
+ *
11
+ * They can be used like:
12
+ *
13
+ * ```html
14
+ * <ul daff-tree [tree]="tree">
15
+ * <ng-template #daffTreeItemWithChildrenTpl let-node>
16
+ * <button daffTreeItem [node]="node">{{ node.title }} </button>
17
+ * </ng-template>
18
+ *
19
+ * <ng-template #daffTreeItemTpl let-node>
20
+ * <a daffTreeItem [node]="node" [routerLink]="node.url">{{ node.title }}</a>
21
+ * </ng-template>
22
+ * </ul>
23
+ * ```
24
+ *
25
+ * where `tree` is a {@link DaffTreeData}.
26
+ *
27
+ */
28
+ export class DaffTreeComponent {
29
+ constructor(notifier) {
30
+ this.notifier = notifier;
31
+ /**
32
+ * The css class of the daff-tree.
33
+ *
34
+ * @docs-private
35
+ */
36
+ this.class = true;
37
+ /**
38
+ * The internal tree element.
39
+ */
40
+ this.tree = undefined;
41
+ /**
42
+ * The flattened tree data. You can iterate through this if you want to inspect
43
+ * the resulting array structure we computed to render the tree.
44
+ */
45
+ this.flatTree = [];
46
+ /**
47
+ * @docs-private
48
+ */
49
+ this._dataTree = undefined;
50
+ }
51
+ /**
52
+ * The tree data you would like to render.
53
+ */
54
+ get dataTree() {
55
+ return this._dataTree;
56
+ }
57
+ set dataTree(dataTree) {
58
+ if (!dataTree) {
59
+ this._dataTree = undefined;
60
+ this.tree = undefined;
61
+ this.flatTree = [];
62
+ return;
63
+ }
64
+ this._dataTree = dataTree;
65
+ this.tree = hydrateTree(this.dataTree);
66
+ this.flatTree = flattenTree(this.tree);
67
+ }
68
+ ;
69
+ /**
70
+ * The track-by function used to reduce tree-item re-renders
71
+ */
72
+ trackByTreeElement(index, el) {
73
+ return el.title;
74
+ }
75
+ /**
76
+ * @docs-private
77
+ */
78
+ ngOnInit() {
79
+ this.notifier.notice$.subscribe(() => {
80
+ this.flatTree = flattenTree(this.tree);
81
+ });
82
+ }
83
+ }
84
+ /** @nocollapse */ DaffTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeComponent, deps: [{ token: i1.DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Component });
85
+ /** @nocollapse */ DaffTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffTreeComponent, selector: "ul[daff-tree]", inputs: { dataTree: ["tree", "dataTree"] }, host: { properties: { "class.daff-tree": "this.class" } }, providers: [
86
+ DaffTreeNotifierService,
87
+ ], 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;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"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'ul[daff-tree]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
91
+ 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;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: function () { return [{ type: i1.DaffTreeNotifierService }]; }, propDecorators: { class: [{
94
+ type: HostBinding,
95
+ args: ['class.daff-tree']
96
+ }], dataTree: [{
97
+ type: Input,
98
+ args: ['tree']
99
+ }], withChildrenTemplate: [{
100
+ type: ContentChild,
101
+ args: ['daffTreeItemWithChildrenTpl', { static: true }]
102
+ }], treeItemTemplate: [{
103
+ type: ContentChild,
104
+ args: ['daffTreeItemTpl', { static: true }]
105
+ }] } });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUVMLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUVsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVlILE1BQU0sT0FBTyxpQkFBaUI7SUEyRDVCLFlBQ1UsUUFBaUM7UUFBakMsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUExRDNDOzs7O1dBSUc7UUFDNkIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUU3Qzs7V0FFRztRQUNLLFNBQUksR0FBd0IsU0FBUyxDQUFDO1FBRTlDOzs7V0FHRztRQUNJLGFBQVEsR0FBdUIsRUFBRSxDQUFDO1FBRXpDOztXQUVHO1FBQ0ssY0FBUyxHQUEwQixTQUFTLENBQUM7SUFzQ2xELENBQUM7SUFwQ0o7O09BRUc7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQStCO1FBQzFDLElBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNuQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFBQSxDQUFDO0lBcUJGOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsS0FBYSxFQUFFLEVBQU87UUFDdkMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lJQTdFVSxpQkFBaUI7cUhBQWpCLGlCQUFpQiwrSUFKakI7UUFDVCx1QkFBdUI7S0FDeEIsNlJDbERILGtUQU1lOzJGRDhDRixpQkFBaUI7a0JBWDdCLFNBQVM7K0JBRUUsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULHVCQUF1QjtxQkFDeEI7OEdBUytCLEtBQUs7c0JBQXBDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQXNCMUIsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLE1BQU07Z0JBc0JiLG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBUVYsZ0JBQWdCO3NCQUFsRSxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhZmZUcmVlRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHJlZS1kYXRhJztcbmltcG9ydCB7IERhZmZUcmVlVWkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtdWknO1xuaW1wb3J0IHtcbiAgRGFmZlRyZWVGbGF0Tm9kZSxcbiAgZmxhdHRlblRyZWUsXG59IGZyb20gJy4uL3V0aWxzL2ZsYXR0ZW4tdHJlZSc7XG5pbXBvcnQgeyBoeWRyYXRlVHJlZSB9IGZyb20gJy4uL3V0aWxzL2h5ZHJhdGUtdHJlZSc7XG5pbXBvcnQgeyBEYWZmVHJlZU5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4vdHJlZS1ub3RpZmllci5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgYERhZmZUcmVlQ29tcG9uZW50YCBhbGxvd3MgeW91IHRvIHJlbmRlciB0cmVlIHN0cnVjdHVyZXMgYXMgaW50ZXJhY3RhYmxlIHVpLlxuICpcbiAqIFRoZXkgY2FuIGJlIHVzZWQgbGlrZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8dWwgZGFmZi10cmVlIFt0cmVlXT1cInRyZWVcIj5cbiAqICAgPG5nLXRlbXBsYXRlICNkYWZmVHJlZUl0ZW1XaXRoQ2hpbGRyZW5UcGwgbGV0LW5vZGU+XG4gKiAgICAgICA8YnV0dG9uIGRhZmZUcmVlSXRlbSBbbm9kZV09XCJub2RlXCI+e3sgbm9kZS50aXRsZSB9fSA8L2J1dHRvbj5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiAgIDxuZy10ZW1wbGF0ZSAjZGFmZlRyZWVJdGVtVHBsIGxldC1ub2RlPlxuICogICAgICAgPGEgZGFmZlRyZWVJdGVtIFtub2RlXT1cIm5vZGVcIiBbcm91dGVyTGlua109XCJub2RlLnVybFwiPnt7IG5vZGUudGl0bGUgfX08L2E+XG4gKiAgIDwvbmctdGVtcGxhdGU+XG4gKiA8L3VsPlxuICogYGBgXG4gKlxuICogd2hlcmUgYHRyZWVgIGlzIGEge0BsaW5rIERhZmZUcmVlRGF0YX0uXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd1bFtkYWZmLXRyZWVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBEYWZmVHJlZU5vdGlmaWVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGFmZlRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgY3NzIGNsYXNzIG9mIHRoZSBkYWZmLXRyZWUuXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGFmZi10cmVlJykgY2xhc3MgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgdHJlZSBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSB0cmVlOiBEYWZmVHJlZVVpPHVua25vd24+ID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZmxhdHRlbmVkIHRyZWUgZGF0YS4gWW91IGNhbiBpdGVyYXRlIHRocm91Z2ggdGhpcyBpZiB5b3Ugd2FudCB0byBpbnNwZWN0XG4gICAqIHRoZSByZXN1bHRpbmcgYXJyYXkgc3RydWN0dXJlIHdlIGNvbXB1dGVkIHRvIHJlbmRlciB0aGUgdHJlZS5cbiAgICovXG4gIHB1YmxpYyBmbGF0VHJlZTogRGFmZlRyZWVGbGF0Tm9kZVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2RhdGFUcmVlOiBEYWZmVHJlZURhdGE8dW5rbm93bj4gPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0cmVlIGRhdGEgeW91IHdvdWxkIGxpa2UgdG8gcmVuZGVyLlxuICAgKi9cbiAgQElucHV0KCd0cmVlJylcbiAgZ2V0IGRhdGFUcmVlKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhVHJlZTtcbiAgfVxuICBzZXQgZGF0YVRyZWUoZGF0YVRyZWU6IERhZmZUcmVlRGF0YTx1bmtub3duPil7XG4gICAgaWYoIWRhdGFUcmVlKSB7XG4gICAgICB0aGlzLl9kYXRhVHJlZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudHJlZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZmxhdFRyZWUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZGF0YVRyZWUgPSBkYXRhVHJlZTtcbiAgICB0aGlzLnRyZWUgPSBoeWRyYXRlVHJlZSh0aGlzLmRhdGFUcmVlKTtcbiAgICB0aGlzLmZsYXRUcmVlID0gZmxhdHRlblRyZWUodGhpcy50cmVlKTtcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRyZWUtbm9kZXMgdGhhdCB0aGVtc2VsdmVzIGhhdmUgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2RhZmZUcmVlSXRlbVdpdGhDaGlsZHJlblRwbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHdpdGhDaGlsZHJlblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdHJlZS1ub2RlcyB0aGF0IGhhdmUgbm8gY2hpbGRyZW4uXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2RhZmZUcmVlSXRlbVRwbCcsIHsgc3RhdGljOiB0cnVlIH0pIHRyZWVJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub3RpZmllcjogRGFmZlRyZWVOb3RpZmllclNlcnZpY2UsXG4gICkge31cblxuICAvKipcbiAgICogVGhlIHRyYWNrLWJ5IGZ1bmN0aW9uIHVzZWQgdG8gcmVkdWNlIHRyZWUtaXRlbSByZS1yZW5kZXJzXG4gICAqL1xuICB0cmFja0J5VHJlZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgZWw6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGVsLnRpdGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpZXIubm90aWNlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mbGF0VHJlZSA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5vZGUgb2YgZmxhdFRyZWU7IHRyYWNrQnk6IHRyYWNrQnlUcmVlRWxlbWVudFwiPlxuXHQ8bGkgW2F0dHIuYXJpYS1sZXZlbF09XCJub2RlLmxldmVsXCI+XG5cdFx0PG5nLWNvbnRhaW5lciBcblx0XHRcdCpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZS5oYXNDaGlsZHJlbiA/IHdpdGhDaGlsZHJlblRlbXBsYXRlIDogdHJlZUl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVwiPlxuXHRcdDwvbmctY29udGFpbmVyPlx0XG5cdDwvbGk+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -0,0 +1,154 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, HostBinding, HostListener, Inject, Input, } from '@angular/core';
3
+ import { DaffTreeNotifierService } from '../tree/tree-notifier.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../tree/tree-notifier.service";
6
+ /**
7
+ * The `DaffTreeItemDirective` allows you to demarcate the elements which are
8
+ * tree-children that interact with the parent tree.
9
+ *
10
+ * They can be used like:
11
+ *
12
+ * ```html
13
+ * <ul daff-tree [tree]="tree">
14
+ * <ng-template #daffTreeItemWithChildrenTpl let-node>
15
+ * <button daffTreeItem [node]="node">{{ node.title }} </button>
16
+ * </ng-template>
17
+ *
18
+ * <ng-template #daffTreeItemTpl let-node>
19
+ * <a daffTreeItem [node]="node" [routerLink]="node.url">{{ node.title }}</a>
20
+ * </ng-template>
21
+ * </ul>
22
+ * ```
23
+ *
24
+ * where `tree` is a {@link DaffTreeData} and `daff-tree` is a {@link DaffTreeComponent}.
25
+ *
26
+ */
27
+ export class DaffTreeItemDirective {
28
+ constructor(document, treeNotifier) {
29
+ this.document = document;
30
+ this.treeNotifier = treeNotifier;
31
+ /**
32
+ * The css class of the daff-tree.
33
+ *
34
+ * @docs-private
35
+ */
36
+ this.class = true;
37
+ /**
38
+ * The css class of a DaffTreeItemDirective that has children.
39
+ *
40
+ * @docs-private
41
+ */
42
+ this.classParent = false;
43
+ /**
44
+ * The CSS class indicating whether or not the tree is `open`.
45
+ */
46
+ this.openClass = false;
47
+ /**
48
+ * Whether or not the tree item is the currently active item.
49
+ * Note that there is no requirement there there only be one active item at a time.
50
+ */
51
+ this.selected = false;
52
+ }
53
+ /**
54
+ * The CSS class indicating whether or not the tree is `selected`.
55
+ */
56
+ get selectedClass() {
57
+ return this.selected;
58
+ }
59
+ ;
60
+ /**
61
+ * The {@link DaffTreeFlatNode} associated with this specific tree item.
62
+ */
63
+ get node() {
64
+ return this._node;
65
+ }
66
+ ;
67
+ set node(val) {
68
+ this._node = val;
69
+ this.id = 'tree-' + this._node.id;
70
+ this.ariaExpanded = this._node._treeRef.open ? 'true' : 'false';
71
+ this.depth = this._node.level;
72
+ this.classParent = this._node.hasChildren;
73
+ this.openClass = this._node._treeRef.open;
74
+ }
75
+ /**
76
+ * @docs-private
77
+ */
78
+ onEscape() {
79
+ this.toggleParent(this.node);
80
+ }
81
+ /**
82
+ * @docs-private
83
+ */
84
+ onClick() {
85
+ if (this.node.hasChildren) {
86
+ this.toggleTree(this.node);
87
+ }
88
+ this.treeNotifier.notify();
89
+ }
90
+ /**
91
+ * Toggle the open state of the tree's parent.
92
+ */
93
+ toggleParent(node) {
94
+ if (node._treeRef?.parent.parent === undefined) {
95
+ return;
96
+ }
97
+ node._treeRef.parent.open = !node._treeRef.parent.open;
98
+ this.document.getElementById('tree-' + node._treeRef.parent.id).focus();
99
+ }
100
+ /**
101
+ * Toggle the open state of this specific subtree tree.
102
+ */
103
+ toggleTree(node) {
104
+ if (node._treeRef.open === false) {
105
+ node._treeRef.open = true;
106
+ }
107
+ else {
108
+ node._treeRef.open = false;
109
+ }
110
+ }
111
+ }
112
+ /** @nocollapse */ DaffTreeItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeItemDirective, deps: [{ token: DOCUMENT }, { token: i1.DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
113
+ /** @nocollapse */ DaffTreeItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: DaffTreeItemDirective, selector: "[daffTreeItem]", inputs: { node: "node", selected: "selected" }, host: { listeners: { "keydown.escape": "onEscape()", "click": "onClick()" }, properties: { "class.daff-tree-item": "this.class", "class.daff-tree-item__parent": "this.classParent", "attr.id": "this.id", "attr.aria-expanded": "this.ariaExpanded", "style.--depth": "this.depth", "class.selected": "this.selectedClass", "class.open": "this.openClass" } }, ngImport: i0 });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeItemDirective, decorators: [{
115
+ type: Directive,
116
+ args: [{
117
+ selector: '[daffTreeItem]',
118
+ }]
119
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
120
+ type: Inject,
121
+ args: [DOCUMENT]
122
+ }] }, { type: i1.DaffTreeNotifierService }]; }, propDecorators: { class: [{
123
+ type: HostBinding,
124
+ args: ['class.daff-tree-item']
125
+ }], classParent: [{
126
+ type: HostBinding,
127
+ args: ['class.daff-tree-item__parent']
128
+ }], id: [{
129
+ type: HostBinding,
130
+ args: ['attr.id']
131
+ }], ariaExpanded: [{
132
+ type: HostBinding,
133
+ args: ['attr.aria-expanded']
134
+ }], depth: [{
135
+ type: HostBinding,
136
+ args: ['style.--depth']
137
+ }], selectedClass: [{
138
+ type: HostBinding,
139
+ args: ['class.selected']
140
+ }], openClass: [{
141
+ type: HostBinding,
142
+ args: ['class.open']
143
+ }], node: [{
144
+ type: Input
145
+ }], selected: [{
146
+ type: Input
147
+ }], onEscape: [{
148
+ type: HostListener,
149
+ args: ['keydown.escape']
150
+ }], onClick: [{
151
+ type: HostListener,
152
+ args: ['click']
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1pdGVtLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3RyZWUvc3JjL3RyZWUtaXRlbS90cmVlLWl0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBR3hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUErRWhDLFlBQzRCLFFBQWEsRUFDL0IsWUFBcUM7UUFEbkIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUMvQixpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUEvRS9DOzs7O1dBSUc7UUFDa0MsVUFBSyxHQUFHLElBQUksQ0FBQztRQUVsRDs7OztXQUlHO1FBQzBDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBK0JqRTs7V0FFRztRQUN3QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBeUI3Qzs7O1dBR0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBS3ZCLENBQUM7SUE1Q0o7O09BRUc7SUFDSCxJQUFtQyxhQUFhO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQUEsQ0FBQztJQWNGOztPQUVHO0lBQ0gsSUFDSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFBSSxJQUFJLENBQUMsR0FBcUI7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBYUQ7O09BRUc7SUFFSCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBRUgsT0FBTztRQUNMLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxJQUFzQjtRQUNqQyxJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDN0MsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsSUFBc0I7UUFDL0IsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQzNCO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDNUI7SUFDSCxDQUFDOztxSUEzSFUscUJBQXFCLGtCQWdGdEIsUUFBUTt5SEFoRlAscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQWlGSSxNQUFNOzJCQUFDLFFBQVE7a0ZBekVtQixLQUFLO3NCQUF6QyxXQUFXO3VCQUFDLHNCQUFzQjtnQkFPVSxXQUFXO3NCQUF2RCxXQUFXO3VCQUFDLDhCQUE4QjtnQkFPbkIsRUFBRTtzQkFBekIsV0FBVzt1QkFBQyxTQUFTO2dCQVFhLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU9ILEtBQUs7c0JBQWxDLFdBQVc7dUJBQUMsZUFBZTtnQkFLTyxhQUFhO3NCQUEvQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFPRixTQUFTO3NCQUFuQyxXQUFXO3VCQUFDLFlBQVk7Z0JBYXJCLElBQUk7c0JBRFAsS0FBSztnQkFpQkcsUUFBUTtzQkFBaEIsS0FBSztnQkFXTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQVM5QixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdHJlZS90cmVlLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFmZlRyZWVGbGF0Tm9kZSB9IGZyb20gJy4uL3V0aWxzL2ZsYXR0ZW4tdHJlZSc7XG5cbi8qKlxuICogVGhlIGBEYWZmVHJlZUl0ZW1EaXJlY3RpdmVgIGFsbG93cyB5b3UgdG8gZGVtYXJjYXRlIHRoZSBlbGVtZW50cyB3aGljaCBhcmVcbiAqIHRyZWUtY2hpbGRyZW4gdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBwYXJlbnQgdHJlZS5cbiAqXG4gKiBUaGV5IGNhbiBiZSB1c2VkIGxpa2U6XG4gKlxuICogYGBgaHRtbFxuICogPHVsIGRhZmYtdHJlZSBbdHJlZV09XCJ0cmVlXCI+XG4gKiAgIDxuZy10ZW1wbGF0ZSAjZGFmZlRyZWVJdGVtV2l0aENoaWxkcmVuVHBsIGxldC1ub2RlPlxuICogICAgICAgPGJ1dHRvbiBkYWZmVHJlZUl0ZW0gW25vZGVdPVwibm9kZVwiPnt7IG5vZGUudGl0bGUgfX0gPC9idXR0b24+XG4gKiAgIDwvbmctdGVtcGxhdGU+XG4gKlxuICogICA8bmctdGVtcGxhdGUgI2RhZmZUcmVlSXRlbVRwbCBsZXQtbm9kZT5cbiAqICAgICAgIDxhIGRhZmZUcmVlSXRlbSBbbm9kZV09XCJub2RlXCIgW3JvdXRlckxpbmtdPVwibm9kZS51cmxcIj57eyBub2RlLnRpdGxlIH19PC9hPlxuICogICA8L25nLXRlbXBsYXRlPlxuICogPC91bD5cbiAqIGBgYFxuICpcbiAqIHdoZXJlIGB0cmVlYCBpcyBhIHtAbGluayBEYWZmVHJlZURhdGF9IGFuZCBgZGFmZi10cmVlYCBpcyBhIHtAbGluayBEYWZmVHJlZUNvbXBvbmVudH0uXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGFmZlRyZWVJdGVtXScsXG59KVxuZXhwb3J0IGNsYXNzIERhZmZUcmVlSXRlbURpcmVjdGl2ZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBjc3MgY2xhc3Mgb2YgdGhlIGRhZmYtdHJlZS5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYWZmLXRyZWUtaXRlbScpIGNsYXNzID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhlIGNzcyBjbGFzcyBvZiBhIERhZmZUcmVlSXRlbURpcmVjdGl2ZSB0aGF0IGhhcyBjaGlsZHJlbi5cbiAgICpcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYWZmLXRyZWUtaXRlbV9fcGFyZW50JykgY2xhc3NQYXJlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGh0bWwgYGlkYCBvZiB0aGUgdHJlZSBpdGVtLiBUaGlzIGlzIGRlcml2ZWQgZnJvbSB0aGUge0BsaW5rIERhZmZUcmVlRGF0YX0uXG4gICAqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGlkO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3NpYmlsaXR5IHByb3BlcnR5LCBub3RpZnlpbmcgdXNlcnMgYWJvdXQgd2hldGhlclxuICAgKiBvciBub3QgdGhlIHRyZWUgaXRlbSBpcyBvcGVuLlxuICAgKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpIGFyaWFFeHBhbmRlZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNzcyB2YXJpYWJsZSBpbmRpY2F0aW5nIHRoZSBkZXB0aCBvZiB0aGUgdHJlZS5cbiAgICogWW91IGNhbiB1c2UgdGhpcyB0byBzdHlsZSB5b3VyIHRlbXBsYXRlcyBpZiB5b3Ugd2FudCB0b1xuICAgKiB1c2UgZGlmZmVyZW50IGRlc2lnbnMgYXQgZGlmZmVyZW50IGRlcHRocy5cbiAgICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1kZXB0aCcpIGRlcHRoOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdHJlZSBpcyBgc2VsZWN0ZWRgLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RlZCcpIGdldCBzZWxlY3RlZENsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHRyZWUgaXMgYG9wZW5gLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5vcGVuJykgb3BlbkNsYXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgRGFmZlRyZWVGbGF0Tm9kZX0gYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3BlY2lmaWMgdHJlZSBpdGVtLlxuICAgKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9ub2RlOiBEYWZmVHJlZUZsYXROb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUge0BsaW5rIERhZmZUcmVlRmxhdE5vZGV9IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNwZWNpZmljIHRyZWUgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBub2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlO1xuICB9O1xuICBzZXQgbm9kZSh2YWw6IERhZmZUcmVlRmxhdE5vZGUpIHtcbiAgICB0aGlzLl9ub2RlID0gdmFsO1xuICAgIHRoaXMuaWQgPSAndHJlZS0nICsgdGhpcy5fbm9kZS5pZDtcbiAgICB0aGlzLmFyaWFFeHBhbmRlZCA9IHRoaXMuX25vZGUuX3RyZWVSZWYub3BlbiA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgdGhpcy5kZXB0aCA9IHRoaXMuX25vZGUubGV2ZWw7XG4gICAgdGhpcy5jbGFzc1BhcmVudCA9IHRoaXMuX25vZGUuaGFzQ2hpbGRyZW47XG4gICAgdGhpcy5vcGVuQ2xhc3MgPSB0aGlzLl9ub2RlLl90cmVlUmVmLm9wZW47XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHRyZWUgaXRlbSBpcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBpdGVtLlxuICAgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdGhlcmUgdGhlcmUgb25seSBiZSBvbmUgYWN0aXZlIGl0ZW0gYXQgYSB0aW1lLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgcHJpdmF0ZSB0cmVlTm90aWZpZXI6IERhZmZUcmVlTm90aWZpZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjYXBlJylcbiAgb25Fc2NhcGUoKSB7XG4gICAgdGhpcy50b2dnbGVQYXJlbnQodGhpcy5ub2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYodGhpcy5ub2RlLmhhc0NoaWxkcmVuKSB7XG4gICAgICB0aGlzLnRvZ2dsZVRyZWUodGhpcy5ub2RlKTtcbiAgICB9XG4gICAgdGhpcy50cmVlTm90aWZpZXIubm90aWZ5KCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBvcGVuIHN0YXRlIG9mIHRoZSB0cmVlJ3MgcGFyZW50LlxuICAgKi9cbiAgdG9nZ2xlUGFyZW50KG5vZGU6IERhZmZUcmVlRmxhdE5vZGUpIHtcbiAgICBpZihub2RlLl90cmVlUmVmPy5wYXJlbnQucGFyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbm9kZS5fdHJlZVJlZi5wYXJlbnQub3BlbiA9ICFub2RlLl90cmVlUmVmLnBhcmVudC5vcGVuO1xuICAgICg8RG9jdW1lbnQ+dGhpcy5kb2N1bWVudCkuZ2V0RWxlbWVudEJ5SWQoJ3RyZWUtJyArIG5vZGUuX3RyZWVSZWYucGFyZW50LmlkKS5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgb3BlbiBzdGF0ZSBvZiB0aGlzIHNwZWNpZmljIHN1YnRyZWUgdHJlZS5cbiAgICovXG4gIHRvZ2dsZVRyZWUobm9kZTogRGFmZlRyZWVGbGF0Tm9kZSkge1xuICAgIGlmKG5vZGUuX3RyZWVSZWYub3BlbiA9PT0gZmFsc2UpIHtcbiAgICAgIG5vZGUuX3RyZWVSZWYub3BlbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuX3RyZWVSZWYub3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,31 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { DaffTreeItemDirective } from './tree-item/tree-item.directive';
4
+ import { DaffTreeComponent } from './tree/tree.component';
5
+ import * as i0 from "@angular/core";
6
+ export class DaffTreeModule {
7
+ }
8
+ /** @nocollapse */ DaffTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ /** @nocollapse */ DaffTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, declarations: [DaffTreeComponent,
10
+ DaffTreeItemDirective], imports: [CommonModule], exports: [DaffTreeComponent,
11
+ DaffTreeItemDirective] });
12
+ /** @nocollapse */ DaffTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, imports: [[
13
+ CommonModule,
14
+ ]] });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffTreeModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ declarations: [
19
+ DaffTreeComponent,
20
+ DaffTreeItemDirective,
21
+ ],
22
+ imports: [
23
+ CommonModule,
24
+ ],
25
+ exports: [
26
+ DaffTreeComponent,
27
+ DaffTreeItemDirective,
28
+ ],
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Rlc2lnbi90cmVlL3NyYy90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFlMUQsTUFBTSxPQUFPLGNBQWM7OzhIQUFkLGNBQWM7K0hBQWQsY0FBYyxpQkFYdkIsaUJBQWlCO1FBQ2pCLHFCQUFxQixhQUdyQixZQUFZLGFBR1osaUJBQWlCO1FBQ2pCLHFCQUFxQjsrSEFHWixjQUFjLFlBUmhCO1lBQ1AsWUFBWTtTQUNiOzJGQU1VLGNBQWM7a0JBYjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhZmZUcmVlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vdHJlZS1pdGVtL3RyZWUtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGFmZlRyZWVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUvdHJlZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEYWZmVHJlZUNvbXBvbmVudCxcbiAgICBEYWZmVHJlZUl0ZW1EaXJlY3RpdmUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYWZmVHJlZUNvbXBvbmVudCxcbiAgICBEYWZmVHJlZUl0ZW1EaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhZmZUcmVlTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Flatten a DaffTreeUi<unknown> into an array, removing elements from the array
3
+ * below nodes in the tree that are not open.
4
+ */
5
+ export const flattenTree = (daffUiTree) => {
6
+ const tree = [];
7
+ let items = [
8
+ {
9
+ ...daffUiTree,
10
+ title: 'Root',
11
+ level: 0,
12
+ url: '/',
13
+ data: undefined,
14
+ open: true,
15
+ _treeRef: daffUiTree,
16
+ },
17
+ ];
18
+ while (items) {
19
+ const el = items.pop();
20
+ if (!el) {
21
+ break;
22
+ }
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
+ ];
32
+ }
33
+ if (el._treeRef.parent?.open) {
34
+ tree.push({
35
+ id: el.id,
36
+ title: el.title,
37
+ level: el.level,
38
+ url: el.url,
39
+ hasChildren: el.items.length > 0,
40
+ data: undefined,
41
+ _treeRef: el._treeRef,
42
+ });
43
+ }
44
+ }
45
+ return tree;
46
+ };
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ24vdHJlZS9zcmMvdXRpbHMvZmxhdHRlbi10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUErQixFQUFzQixFQUFFO0lBQ2pGLE1BQU0sSUFBSSxHQUF1QixFQUFFLENBQUM7SUFFcEMsSUFBSSxLQUFLLEdBQUc7UUFDVjtZQUNFLEdBQUcsVUFBVTtZQUNiLEtBQUssRUFBRSxNQUFNO1lBQ2IsS0FBSyxFQUFFLENBQUM7WUFDUixHQUFHLEVBQUUsR0FBRztZQUNSLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsVUFBVTtTQUNyQjtLQUNGLENBQUM7SUFHRixPQUFNLEtBQUssRUFBRTtRQUNYLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFHLENBQUMsRUFBRSxFQUFFO1lBQ04sTUFBTTtTQUNQO1FBRUQsSUFBRyxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ1YsS0FBSyxHQUFHO2dCQUNOLEdBQUcsS0FBSztnQkFDUixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0QixHQUFHLENBQUM7b0JBQ0osS0FBSyxFQUNMLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztvQkFDWixRQUFRLEVBQUUsQ0FBQztpQkFDWixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7YUFDZCxDQUFDO1NBQ0g7UUFFRCxJQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNSLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLO2dCQUNmLEdBQUcsRUFBRyxFQUFFLENBQUMsR0FBRztnQkFDWixXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO2FBQ3RCLENBQUMsQ0FBQztTQUNKO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhZmZUcmVlVWkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RyZWUtdWknO1xuXG4vKipcbiAqIEEgZmxhdHRlbmVkIG5vZGUgb2YgYSB0cmVlLiBUaGlzIGlzIHVzZWQgd2hlbiB0cmFuc2xhdGluZyB0aGUgdHJlZSBkYXRhXG4gKiBzdHJ1Y3R1cmUgaW50byBhbiBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYWZmVHJlZUZsYXROb2RlIHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIGxldmVsOiBudW1iZXI7XG4gIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICBkYXRhOiB1bmtub3duO1xuICBfdHJlZVJlZjogRGFmZlRyZWVVaTx1bmtub3duPjtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgRGFmZlRyZWVVaTx1bmtub3duPiBpbnRvIGFuIGFycmF5LCByZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBhcnJheVxuICogYmVsb3cgbm9kZXMgaW4gdGhlIHRyZWUgdGhhdCBhcmUgbm90IG9wZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuVHJlZSA9IChkYWZmVWlUcmVlOiBEYWZmVHJlZVVpPHVua25vd24+KTogRGFmZlRyZWVGbGF0Tm9kZVtdID0+ICB7XG4gIGNvbnN0IHRyZWU6IERhZmZUcmVlRmxhdE5vZGVbXSA9IFtdO1xuXG4gIGxldCBpdGVtcyA9IFtcbiAgICB7XG4gICAgICAuLi5kYWZmVWlUcmVlLFxuICAgICAgdGl0bGU6ICdSb290JyxcbiAgICAgIGxldmVsOiAwLFxuICAgICAgdXJsOiAnLycsXG4gICAgICBkYXRhOiB1bmRlZmluZWQsXG4gICAgICBvcGVuOiB0cnVlLFxuICAgICAgX3RyZWVSZWY6IGRhZmZVaVRyZWUsXG4gICAgfSxcbiAgXTtcblxuXG4gIHdoaWxlKGl0ZW1zKSB7XG4gICAgY29uc3QgZWwgPSBpdGVtcy5wb3AoKTtcbiAgICBpZighZWwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmKGVsLm9wZW4pIHtcbiAgICAgIGl0ZW1zID0gW1xuICAgICAgICAuLi5pdGVtcyxcbiAgICAgICAgLi4uZWwuaXRlbXMubWFwKChpKSA9PiAoe1xuICAgICAgICAgIC4uLmksXG4gICAgICAgICAgbGV2ZWw6XG4gICAgICAgICAgZWwubGV2ZWwgKyAxLFxuICAgICAgICAgIF90cmVlUmVmOiBpLFxuICAgICAgICB9KSkucmV2ZXJzZSgpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZihlbC5fdHJlZVJlZi5wYXJlbnQ/Lm9wZW4pIHtcbiAgICAgIHRyZWUucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgdGl0bGU6IGVsLnRpdGxlLFxuICAgICAgICBsZXZlbDogZWwubGV2ZWwsXG4gICAgICAgIHVybCA6IGVsLnVybCxcbiAgICAgICAgaGFzQ2hpbGRyZW46IGVsLml0ZW1zLmxlbmd0aCA+IDAsXG4gICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgX3RyZWVSZWY6IGVsLl90cmVlUmVmLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRyZWU7XG59O1xuIl19