gamma-app-controller 1.1.24 → 1.1.26

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 (49) hide show
  1. package/esm2020/lib/template-module/KpiCreationModule/create-kpi-tree.component.mjs +381 -0
  2. package/esm2020/lib/template-module/KpiCreationModule/createKpi.service.mjs +90 -0
  3. package/esm2020/lib/template-module/KpiCreationModule/kpiCreation.module.mjs +184 -0
  4. package/esm2020/lib/template-module/KpiCreationModule/treeview/animation.mjs +15 -0
  5. package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/defaults.mjs +12 -0
  6. package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/expand-collapse.mjs +16 -0
  7. package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/fade.mjs +160 -0
  8. package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/shake.mjs +58 -0
  9. package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/slide.mjs +116 -0
  10. package/esm2020/lib/template-module/KpiCreationModule/treeview/animations/zoom.mjs +36 -0
  11. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/aside/aside.component.mjs +85 -0
  12. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.mjs +118 -0
  13. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.mjs +159 -0
  14. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/divider/divider.component.mjs +27 -0
  15. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/group/group.component.mjs +37 -0
  16. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/spacer/spacer.component.mjs +27 -0
  17. package/esm2020/lib/template-module/KpiCreationModule/treeview/moment-helper.mjs +4 -0
  18. package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview-navigation.service.mjs +2 -0
  19. package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview-shared.service.mjs +16 -0
  20. package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview.component.mjs +134 -0
  21. package/esm2020/lib/template-module/cdrConfigModule/cdr-browser.service.mjs +4 -3
  22. package/esm2020/lib/template-module/exceptionConfigModule/exception-service.mjs +4 -3
  23. package/esm2020/public-api.mjs +10 -1
  24. package/fesm2015/gamma-app-controller.mjs +1735 -180
  25. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  26. package/fesm2020/gamma-app-controller.mjs +1733 -180
  27. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  28. package/lib/template-module/KpiCreationModule/create-kpi-tree.component.d.ts +75 -0
  29. package/lib/template-module/KpiCreationModule/createKpi.service.d.ts +32 -0
  30. package/lib/template-module/KpiCreationModule/kpiCreation.module.d.ts +23 -0
  31. package/lib/template-module/KpiCreationModule/treeview/animation.d.ts +1 -0
  32. package/lib/template-module/KpiCreationModule/treeview/animations/defaults.d.ts +11 -0
  33. package/lib/template-module/KpiCreationModule/treeview/animations/expand-collapse.d.ts +2 -0
  34. package/lib/template-module/KpiCreationModule/treeview/animations/fade.d.ts +11 -0
  35. package/lib/template-module/KpiCreationModule/treeview/animations/shake.d.ts +2 -0
  36. package/lib/template-module/KpiCreationModule/treeview/animations/slide.d.ts +9 -0
  37. package/lib/template-module/KpiCreationModule/treeview/animations/zoom.d.ts +3 -0
  38. package/lib/template-module/KpiCreationModule/treeview/components/aside/aside.component.d.ts +26 -0
  39. package/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.d.ts +29 -0
  40. package/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.d.ts +37 -0
  41. package/lib/template-module/KpiCreationModule/treeview/components/divider/divider.component.d.ts +13 -0
  42. package/lib/template-module/KpiCreationModule/treeview/components/group/group.component.d.ts +17 -0
  43. package/lib/template-module/KpiCreationModule/treeview/components/spacer/spacer.component.d.ts +13 -0
  44. package/lib/template-module/KpiCreationModule/treeview/moment-helper.d.ts +3 -0
  45. package/lib/template-module/KpiCreationModule/treeview/treeview-navigation.service.d.ts +39 -0
  46. package/lib/template-module/KpiCreationModule/treeview/treeview-shared.service.d.ts +8 -0
  47. package/lib/template-module/KpiCreationModule/treeview/treeview.component.d.ts +52 -0
  48. package/package.json +1 -1
  49. package/public-api.d.ts +9 -0
@@ -0,0 +1,116 @@
1
+ import { animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { FuseAnimationCurves, FuseAnimationDurations } from './defaults';
3
+ const slideInTop = trigger('slideInTop', [
4
+ state('void', style({
5
+ transform: 'translate3d(0, -100%, 0)'
6
+ })),
7
+ state('*', style({
8
+ transform: 'translate3d(0, 0, 0)'
9
+ })),
10
+ transition('void => false', []),
11
+ transition('void => *', animate('{{timings}}'), {
12
+ params: {
13
+ timings: `${FuseAnimationDurations.entering} ${FuseAnimationCurves.deceleration}`
14
+ }
15
+ })
16
+ ]);
17
+ const slideInBottom = trigger('slideInBottom', [
18
+ state('void', style({
19
+ transform: 'translate3d(0, 100%, 0)'
20
+ })),
21
+ state('*', style({
22
+ transform: 'translate3d(0, 0, 0)'
23
+ })),
24
+ transition('void => false', []),
25
+ transition('void => *', animate('{{timings}}'), {
26
+ params: {
27
+ timings: `${FuseAnimationDurations.entering} ${FuseAnimationCurves.deceleration}`
28
+ }
29
+ })
30
+ ]);
31
+ const slideInLeft = trigger('slideInLeft', [
32
+ state('void', style({
33
+ transform: 'translate3d(-100%, 0, 0)'
34
+ })),
35
+ state('*', style({
36
+ transform: 'translate3d(0, 0, 0)'
37
+ })),
38
+ transition('void => false', []),
39
+ transition('void => *', animate('{{timings}}'), {
40
+ params: {
41
+ timings: `${FuseAnimationDurations.entering} ${FuseAnimationCurves.deceleration}`
42
+ }
43
+ })
44
+ ]);
45
+ const slideInRight = trigger('slideInRight', [
46
+ state('void', style({
47
+ transform: 'translate3d(100%, 0, 0)'
48
+ })),
49
+ state('*', style({
50
+ transform: 'translate3d(0, 0, 0)'
51
+ })),
52
+ transition('void => false', []),
53
+ transition('void => *', animate('{{timings}}'), {
54
+ params: {
55
+ timings: `${FuseAnimationDurations.entering} ${FuseAnimationCurves.deceleration}`
56
+ }
57
+ })
58
+ ]);
59
+ const slideOutTop = trigger('slideOutTop', [
60
+ state('*', style({
61
+ transform: 'translate3d(0, 0, 0)'
62
+ })),
63
+ state('void', style({
64
+ transform: 'translate3d(0, -100%, 0)'
65
+ })),
66
+ transition('false => void', []),
67
+ transition('* => void', animate('{{timings}}'), {
68
+ params: {
69
+ timings: `${FuseAnimationDurations.exiting} ${FuseAnimationCurves.acceleration}`
70
+ }
71
+ })
72
+ ]);
73
+ const slideOutBottom = trigger('slideOutBottom', [
74
+ state('*', style({
75
+ transform: 'translate3d(0, 0, 0)'
76
+ })),
77
+ state('void', style({
78
+ transform: 'translate3d(0, 100%, 0)'
79
+ })),
80
+ transition('false => void', []),
81
+ transition('* => void', animate('{{timings}}'), {
82
+ params: {
83
+ timings: `${FuseAnimationDurations.exiting} ${FuseAnimationCurves.acceleration}`
84
+ }
85
+ })
86
+ ]);
87
+ const slideOutLeft = trigger('slideOutLeft', [
88
+ state('*', style({
89
+ transform: 'translate3d(0, 0, 0)'
90
+ })),
91
+ state('void', style({
92
+ transform: 'translate3d(-100%, 0, 0)'
93
+ })),
94
+ transition('false => void', []),
95
+ transition('* => void', animate('{{timings}}'), {
96
+ params: {
97
+ timings: `${FuseAnimationDurations.exiting} ${FuseAnimationCurves.acceleration}`
98
+ }
99
+ })
100
+ ]);
101
+ const slideOutRight = trigger('slideOutRight', [
102
+ state('*', style({
103
+ transform: 'translate3d(0, 0, 0)'
104
+ })),
105
+ state('void', style({
106
+ transform: 'translate3d(100%, 0, 0)'
107
+ })),
108
+ transition('false => void', []),
109
+ transition('* => void', animate('{{timings}}'), {
110
+ params: {
111
+ timings: `${FuseAnimationDurations.exiting} ${FuseAnimationCurves.acceleration}`
112
+ }
113
+ })
114
+ ]);
115
+ export { slideInTop, slideInBottom, slideInLeft, slideInRight, slideOutTop, slideOutBottom, slideOutLeft, slideOutRight };
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9hbmltYXRpb25zL3NsaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBS3pFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQ25DO0lBQ0ksS0FBSyxDQUFDLE1BQU0sRUFDUixLQUFLLENBQUM7UUFDRixTQUFTLEVBQUUsMEJBQTBCO0tBQ3hDLENBQUMsQ0FDTDtJQUVELEtBQUssQ0FBQyxHQUFHLEVBQ0wsS0FBSyxDQUFDO1FBQ0YsU0FBUyxFQUFFLHNCQUFzQjtLQUNwQyxDQUFDLENBQ0w7SUFHRCxVQUFVLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztJQUcvQixVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFDMUM7UUFDSSxNQUFNLEVBQUU7WUFDSixPQUFPLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLElBQUksbUJBQW1CLENBQUMsWUFBWSxFQUFFO1NBQ3BGO0tBQ0osQ0FDSjtDQUNKLENBQ0osQ0FBQztBQUtGLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQ3pDO0lBQ0ksS0FBSyxDQUFDLE1BQU0sRUFDUixLQUFLLENBQUM7UUFDRixTQUFTLEVBQUUseUJBQXlCO0tBQ3ZDLENBQUMsQ0FDTDtJQUVELEtBQUssQ0FBQyxHQUFHLEVBQ0wsS0FBSyxDQUFDO1FBQ0YsU0FBUyxFQUFFLHNCQUFz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QUFLLENBQUMsR0FBRyxFQUNMLEtBQUssQ0FBQztRQUNGLFNBQVMsRUFBRSxzQkFBc0I7S0FDcEMsQ0FBQyxDQUNMO0lBRUQsS0FBSyxDQUFDLE1BQU0sRUFDUixLQUFLLENBQUM7UUFDRixTQUFTLEVBQUUsMEJBQTBCO0tBQ3hDLENBQUMsQ0FDTDtJQUdELFVBQVUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0lBRy9CLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUMxQztRQUNJLE1BQU0sRUFBRTtZQUNKLE9BQU8sRUFBRSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxZQUFZLEVBQUU7U0FDbkY7S0FDSixDQUNKO0NBQ0osQ0FDSixDQUFDO0FBS0YsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFDekM7SUFDSSxLQUFLLENBQUMsR0FBRyxFQUNMLEtBQUssQ0FBQztRQUNGLFNBQVMsRUFBRSxzQkFBc0I7S0FDcEMsQ0FBQyxDQUNMO0lBRUQsS0FBSyxDQUFDLE1BQU0sRUFDUixLQUFLLENBQUM7UUFDRixTQUFTLEVBQUUseUJBQXlCO0tBQ3ZDLENBQUMsQ0FDTDtJQUdELFVBQVUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO0lBRy9CLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUMxQztRQUNJLE1BQU0sRUFBRTtZQUNKLE9BQU8sRUFBRSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxZQUFZLEVBQUU7U0FDbkY7S0FDSixDQUNKO0NBQ0osQ0FDSixDQUFDO0FBRUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRnVzZUFuaW1hdGlvbkN1cnZlcywgRnVzZUFuaW1hdGlvbkR1cmF0aW9ucyB9IGZyb20gJy4vZGVmYXVsdHMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQCBTbGlkZSBpbiB0b3Bcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBzbGlkZUluVG9wID0gdHJpZ2dlcignc2xpZGVJblRvcCcsXG4gICAgW1xuICAgICAgICBzdGF0ZSgndm9pZCcsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcblxuICAgICAgICBzdGF0ZSgnKicsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMCwgMCknXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIC8vIFByZXZlbnQgdGhlIHRyYW5zaXRpb24gaWYgdGhlIHN0YXRlIGlzIGZhbHNlXG4gICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gZmFsc2UnLCBbXSksXG5cbiAgICAgICAgLy8gVHJhbnNpdGlvblxuICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKCd7e3RpbWluZ3N9fScpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICB0aW1pbmdzOiBgJHtGdXNlQW5pbWF0aW9uRHVyYXRpb25zLmVudGVyaW5nfSAke0Z1c2VBbmltYXRpb25DdXJ2ZXMuZGVjZWxlcmF0aW9ufWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICBdXG4pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQCBTbGlkZSBpbiBib3R0b21cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBzbGlkZUluQm90dG9tID0gdHJpZ2dlcignc2xpZGVJbkJvdHRvbScsXG4gICAgW1xuICAgICAgICBzdGF0ZSgndm9pZCcsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMTAwJSwgMCknXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIHN0YXRlKCcqJyxcbiAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAwLCAwKSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgdHJhbnNpdGlvbiBpZiB0aGUgc3RhdGUgaXMgZmFsc2VcbiAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBmYWxzZScsIFtdKSxcblxuICAgICAgICAvLyBUcmFuc2l0aW9uXG4gICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJ3t7dGltaW5nc319JyksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ3M6IGAke0Z1c2VBbmltYXRpb25EdXJhdGlvbnMuZW50ZXJpbmd9ICR7RnVzZUFuaW1hdGlvbkN1cnZlcy5kZWNlbGVyYXRpb259YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIF1cbik7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAIFNsaWRlIGluIGxlZnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBzbGlkZUluTGVmdCA9IHRyaWdnZXIoJ3NsaWRlSW5MZWZ0JyxcbiAgICBbXG4gICAgICAgIHN0YXRlKCd2b2lkJyxcbiAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCknXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIHN0YXRlKCcqJyxcbiAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAwLCAwKSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgdHJhbnNpdGlvbiBpZiB0aGUgc3RhdGUgaXMgZmFsc2VcbiAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBmYWxzZScsIFtdKSxcblxuICAgICAgICAvLyBUcmFuc2l0aW9uXG4gICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJ3t7dGltaW5nc319JyksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ3M6IGAke0Z1c2VBbmltYXRpb25EdXJhdGlvbnMuZW50ZXJpbmd9ICR7RnVzZUFuaW1hdGlvbkN1cnZlcy5kZWNlbGVyYXRpb259YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIF1cbik7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAIFNsaWRlIGluIHJpZ2h0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3Qgc2xpZGVJblJpZ2h0ID0gdHJpZ2dlcignc2xpZGVJblJpZ2h0JyxcbiAgICBbXG4gICAgICAgIHN0YXRlKCd2b2lkJyxcbiAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgc3RhdGUoJyonLFxuICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcblxuICAgICAgICAvLyBQcmV2ZW50IHRoZSB0cmFuc2l0aW9uIGlmIHRoZSBzdGF0ZSBpcyBmYWxzZVxuICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IGZhbHNlJywgW10pLFxuXG4gICAgICAgIC8vIFRyYW5zaXRpb25cbiAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgYW5pbWF0ZSgne3t0aW1pbmdzfX0nKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGltaW5nczogYCR7RnVzZUFuaW1hdGlvbkR1cmF0aW9ucy5lbnRlcmluZ30gJHtGdXNlQW5pbWF0aW9uQ3VydmVzLmRlY2VsZXJhdGlvbn1gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgXVxuKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEAgU2xpZGUgb3V0IHRvcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IHNsaWRlT3V0VG9wID0gdHJpZ2dlcignc2xpZGVPdXRUb3AnLFxuICAgIFtcbiAgICAgICAgc3RhdGUoJyonLFxuICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcblxuICAgICAgICBzdGF0ZSgndm9pZCcsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcblxuICAgICAgICAvLyBQcmV2ZW50IHRoZSB0cmFuc2l0aW9uIGlmIHRoZSBzdGF0ZSBpcyBmYWxzZVxuICAgICAgICB0cmFuc2l0aW9uKCdmYWxzZSA9PiB2b2lkJywgW10pLFxuXG4gICAgICAgIC8vIFRyYW5zaXRpb25cbiAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgYW5pbWF0ZSgne3t0aW1pbmdzfX0nKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGltaW5nczogYCR7RnVzZUFuaW1hdGlvbkR1cmF0aW9ucy5leGl0aW5nfSAke0Z1c2VBbmltYXRpb25DdXJ2ZXMuYWNjZWxlcmF0aW9ufWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICBdXG4pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQCBTbGlkZSBvdXQgYm90dG9tXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3Qgc2xpZGVPdXRCb3R0b20gPSB0cmlnZ2VyKCdzbGlkZU91dEJvdHRvbScsXG4gICAgW1xuICAgICAgICBzdGF0ZSgnKicsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMCwgMCknXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIHN0YXRlKCd2b2lkJyxcbiAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgdHJhbnNpdGlvbiBpZiB0aGUgc3RhdGUgaXMgZmFsc2VcbiAgICAgICAgdHJhbnNpdGlvbignZmFsc2UgPT4gdm9pZCcsIFtdKSxcblxuICAgICAgICAvLyBUcmFuc2l0aW9uXG4gICAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoJ3t7dGltaW5nc319JyksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ3M6IGAke0Z1c2VBbmltYXRpb25EdXJhdGlvbnMuZXhpdGluZ30gJHtGdXNlQW5pbWF0aW9uQ3VydmVzLmFjY2VsZXJhdGlvbn1gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgXVxuKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEAgU2xpZGUgb3V0IGxlZnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBzbGlkZU91dExlZnQgPSB0cmlnZ2VyKCdzbGlkZU91dExlZnQnLFxuICAgIFtcbiAgICAgICAgc3RhdGUoJyonLFxuICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcblxuICAgICAgICBzdGF0ZSgndm9pZCcsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcblxuICAgICAgICAvLyBQcmV2ZW50IHRoZSB0cmFuc2l0aW9uIGlmIHRoZSBzdGF0ZSBpcyBmYWxzZVxuICAgICAgICB0cmFuc2l0aW9uKCdmYWxzZSA9PiB2b2lkJywgW10pLFxuXG4gICAgICAgIC8vIFRyYW5zaXRpb25cbiAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgYW5pbWF0ZSgne3t0aW1pbmdzfX0nKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGltaW5nczogYCR7RnVzZUFuaW1hdGlvbkR1cmF0aW9ucy5leGl0aW5nfSAke0Z1c2VBbmltYXRpb25DdXJ2ZXMuYWNjZWxlcmF0aW9ufWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICBdXG4pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQCBTbGlkZSBvdXQgcmlnaHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBzbGlkZU91dFJpZ2h0ID0gdHJpZ2dlcignc2xpZGVPdXRSaWdodCcsXG4gICAgW1xuICAgICAgICBzdGF0ZSgnKicsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMCwgMCknXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuXG4gICAgICAgIHN0YXRlKCd2b2lkJyxcbiAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgdHJhbnNpdGlvbiBpZiB0aGUgc3RhdGUgaXMgZmFsc2VcbiAgICAgICAgdHJhbnNpdGlvbignZmFsc2UgPT4gdm9pZCcsIFtdKSxcblxuICAgICAgICAvLyBUcmFuc2l0aW9uXG4gICAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoJ3t7dGltaW5nc319JyksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ3M6IGAke0Z1c2VBbmltYXRpb25EdXJhdGlvbnMuZXhpdGluZ30gJHtGdXNlQW5pbWF0aW9uQ3VydmVzLmFjY2VsZXJhdGlvbn1gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgXVxuKTtcblxuZXhwb3J0IHsgc2xpZGVJblRvcCwgc2xpZGVJbkJvdHRvbSwgc2xpZGVJbkxlZnQsIHNsaWRlSW5SaWdodCwgc2xpZGVPdXRUb3AsIHNsaWRlT3V0Qm90dG9tLCBzbGlkZU91dExlZnQsIHNsaWRlT3V0UmlnaHQgfTtcbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { FuseAnimationCurves, FuseAnimationDurations } from './defaults';
3
+ const zoomIn = trigger('zoomIn', [
4
+ state('void', style({
5
+ opacity: 0,
6
+ transform: 'scale(0.5)'
7
+ })),
8
+ state('*', style({
9
+ opacity: 1,
10
+ transform: 'scale(1)'
11
+ })),
12
+ transition('void => false', []),
13
+ transition('void => *', animate('{{timings}}'), {
14
+ params: {
15
+ timings: `${FuseAnimationDurations.entering} ${FuseAnimationCurves.deceleration}`
16
+ }
17
+ })
18
+ ]);
19
+ const zoomOut = trigger('zoomOut', [
20
+ state('*', style({
21
+ opacity: 1,
22
+ transform: 'scale(1)'
23
+ })),
24
+ state('void', style({
25
+ opacity: 0,
26
+ transform: 'scale(0.5)'
27
+ })),
28
+ transition('false => void', []),
29
+ transition('* => void', animate('{{timings}}'), {
30
+ params: {
31
+ timings: `${FuseAnimationDurations.exiting} ${FuseAnimationCurves.acceleration}`
32
+ }
33
+ })
34
+ ]);
35
+ export { zoomIn, zoomOut };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL3RyZWV2aWV3L2FuaW1hdGlvbnMvem9vbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUt6RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxFQUMzQjtJQUVJLEtBQUssQ0FBQyxNQUFNLEVBQ1IsS0FBSyxDQUFDO1FBQ0YsT0FBTyxFQUFFLENBQUM7UUFDVixTQUFTLEVBQUUsWUFBWTtLQUMxQixDQUFDLENBQ0w7SUFFRCxLQUFLLENBQUMsR0FBRyxFQUNMLEtBQUssQ0FBQztRQUNGLE9BQU8sRUFBRSxDQUFDO1FBQ1YsU0FBUyxFQUFFLFVBQVU7S0FDeEIsQ0FBQyxDQUNMO0lBR0QsVUFBVSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7SUFHL0IsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQzFDO1FBQ0ksTUFBTSxFQUFFO1lBQ0osT0FBTyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRTtTQUNwRjtLQUNKLENBQ0o7Q0FDSixDQUNKLENBQUM7QUFLRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUM3QjtJQUVJLEtBQUssQ0FBQyxHQUFHLEVBQ0wsS0FBSyxDQUFDO1FBQ0YsT0FBTyxFQUFFLENBQUM7UUFDVixTQUFTLEVBQUUsVUFBVTtLQUN4QixDQUFDLENBQ0w7SUFFRCxLQUFLLENBQUMsTUFBTSxFQUNSLEtBQUssQ0FBQztRQUNGLE9BQU8sRUFBRSxDQUFDO1FBQ1YsU0FBUyxFQUFFLFlBQVk7S0FDMUIsQ0FBQyxDQUNMO0lBR0QsVUFBVSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7SUFHL0IsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQzFDO1FBQ0ksTUFBTSxFQUFFO1lBQ0osT0FBTyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRTtTQUNuRjtLQUNKLENBQ0o7Q0FDSixDQUNKLENBQUM7QUFFRixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBGdXNlQW5pbWF0aW9uQ3VydmVzLCBGdXNlQW5pbWF0aW9uRHVyYXRpb25zIH0gZnJvbSAnLi9kZWZhdWx0cyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAIFpvb20gaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCB6b29tSW4gPSB0cmlnZ2VyKCd6b29tSW4nLFxuICAgIFtcblxuICAgICAgICBzdGF0ZSgndm9pZCcsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgwLjUpJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcblxuICAgICAgICBzdGF0ZSgnKicsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgxKSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgdHJhbnNpdGlvbiBpZiB0aGUgc3RhdGUgaXMgZmFsc2VcbiAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBmYWxzZScsIFtdKSxcblxuICAgICAgICAvLyBUcmFuc2l0aW9uXG4gICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJ3t7dGltaW5nc319JyksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ3M6IGAke0Z1c2VBbmltYXRpb25EdXJhdGlvbnMuZW50ZXJpbmd9ICR7RnVzZUFuaW1hdGlvbkN1cnZlcy5kZWNlbGVyYXRpb259YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIF1cbik7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAIFpvb20gb3V0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3Qgem9vbU91dCA9IHRyaWdnZXIoJ3pvb21PdXQnLFxuICAgIFtcblxuICAgICAgICBzdGF0ZSgnKicsXG4gICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZSgxKSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgc3RhdGUoJ3ZvaWQnLFxuICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoMC41KSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgdHJhbnNpdGlvbiBpZiB0aGUgc3RhdGUgaXMgZmFsc2VcbiAgICAgICAgdHJhbnNpdGlvbignZmFsc2UgPT4gdm9pZCcsIFtdKSxcblxuICAgICAgICAvLyBUcmFuc2l0aW9uXG4gICAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIGFuaW1hdGUoJ3t7dGltaW5nc319JyksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ3M6IGAke0Z1c2VBbmltYXRpb25EdXJhdGlvbnMuZXhpdGluZ30gJHtGdXNlQW5pbWF0aW9uQ3VydmVzLmFjY2VsZXJhdGlvbn1gXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgXVxuKTtcblxuZXhwb3J0IHsgem9vbUluLCB6b29tT3V0IH07XG5cbiJdfQ==
@@ -0,0 +1,85 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import { filter, Subject, takeUntil } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/material/icon";
8
+ import * as i4 from "@angular/material/tooltip";
9
+ import * as i5 from "../basic/basic.component";
10
+ import * as i6 from "../collapsable/collapsable.component";
11
+ import * as i7 from "../divider/divider.component";
12
+ import * as i8 from "../group/group.component";
13
+ import * as i9 from "../spacer/spacer.component";
14
+ export class TreeViewAsideItemComponent {
15
+ constructor(_changeDetectorRef, _router) {
16
+ this._changeDetectorRef = _changeDetectorRef;
17
+ this._router = _router;
18
+ this.active = false;
19
+ this._unsubscribeAll = new Subject();
20
+ }
21
+ ngOnChanges(changes) {
22
+ if ('activeItemId' in changes) {
23
+ this._markIfActive(this._router.url);
24
+ }
25
+ }
26
+ ngOnInit() {
27
+ this._markIfActive(this._router.url);
28
+ this._router.events
29
+ .pipe(filter((event) => event instanceof NavigationEnd), takeUntil(this._unsubscribeAll))
30
+ .subscribe((event) => {
31
+ this._markIfActive(event.urlAfterRedirects);
32
+ });
33
+ }
34
+ ngOnDestroy() {
35
+ this._unsubscribeAll.next(null);
36
+ this._unsubscribeAll.complete();
37
+ }
38
+ trackByFn(index, item) {
39
+ return item.id || index;
40
+ }
41
+ _hasActiveChild(item, currentUrl) {
42
+ const children = item.children;
43
+ if (!children) {
44
+ return false;
45
+ }
46
+ for (const child of children) {
47
+ if (child.children) {
48
+ if (this._hasActiveChild(child, currentUrl)) {
49
+ return true;
50
+ }
51
+ }
52
+ if (child.type !== 'basic') {
53
+ continue;
54
+ }
55
+ if (child.link && this._router.isActive(child.link, child.exactMatch || false)) {
56
+ return true;
57
+ }
58
+ }
59
+ return false;
60
+ }
61
+ _markIfActive(currentUrl) {
62
+ this.active = this.activeItemId === this.item.id;
63
+ if (this._hasActiveChild(this.item, currentUrl)) {
64
+ this.active = true;
65
+ }
66
+ this._changeDetectorRef.markForCheck();
67
+ }
68
+ }
69
+ TreeViewAsideItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewAsideItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
70
+ TreeViewAsideItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewAsideItemComponent, selector: "treeview-aside-item", inputs: { activeItemId: "activeItemId", autoCollapse: "autoCollapse", item: "item", name: "name", skipChildren: "skipChildren" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\">\n\n <div class=\"treeview-item\" [ngClass]=\"{'treeview-item-active': active,\n 'treeview-item-disabled': item.disabled,\n 'treeview-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n </div>\n\n</div>\n\n<ng-container *ngIf=\"!skipChildren\">\n\n <div class=\"treeview-item-children\">\n\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.type === 'basic'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.type === 'collapsable'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\"></treeview-divider-item>\n </ng-container>\n\n <!-- Group -->\n <ng-container *ngIf=\"item.type === 'group'\">\n <treeview-group-item [item]=\"item\" [name]=\"name\"></treeview-group-item>\n </ng-container>\n\n <!-- Spacer -->\n <ng-container *ngIf=\"item.type === 'spacer'\">\n <treeview-spacer-item [item]=\"item\" [name]=\"name\"></treeview-spacer-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n </div>\n\n</ng-container>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: ["item", "name", "internalRoute", "isEditIcon", "treeId"], outputs: ["editableKpiBasicData"] }, { kind: "component", type: i6.TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: ["autoCollapse", "item", "name", "treeId", "internalRoute", "isEditIcon"], outputs: ["editableKpiData"] }, { kind: "component", type: i7.TreeViewDividerItemComponent, selector: "treeview-divider-item", inputs: ["item", "name"] }, { kind: "component", type: i8.TreeViewGroupItemComponent, selector: "treeview-group-item", inputs: ["autoCollapse", "item", "name"] }, { kind: "component", type: i9.TreeViewSpacerItemComponent, selector: "treeview-spacer-item", inputs: ["item", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewAsideItemComponent, decorators: [{
72
+ type: Component,
73
+ args: [{ selector: 'treeview-aside-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\">\n\n <div class=\"treeview-item\" [ngClass]=\"{'treeview-item-active': active,\n 'treeview-item-disabled': item.disabled,\n 'treeview-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n </div>\n\n</div>\n\n<ng-container *ngIf=\"!skipChildren\">\n\n <div class=\"treeview-item-children\">\n\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.type === 'basic'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.type === 'collapsable'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\"></treeview-divider-item>\n </ng-container>\n\n <!-- Group -->\n <ng-container *ngIf=\"item.type === 'group'\">\n <treeview-group-item [item]=\"item\" [name]=\"name\"></treeview-group-item>\n </ng-container>\n\n <!-- Spacer -->\n <ng-container *ngIf=\"item.type === 'spacer'\">\n <treeview-spacer-item [item]=\"item\" [name]=\"name\"></treeview-spacer-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n </div>\n\n</ng-container>" }]
74
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Router }]; }, propDecorators: { activeItemId: [{
75
+ type: Input
76
+ }], autoCollapse: [{
77
+ type: Input
78
+ }], item: [{
79
+ type: Input
80
+ }], name: [{
81
+ type: Input
82
+ }], skipChildren: [{
83
+ type: Input
84
+ }] } });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9hc2lkZS9hc2lkZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2FzaWRlL2FzaWRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFPbEQsTUFBTSxPQUFPLDBCQUEwQjtJQWtCbkMsWUFDWSxrQkFBcUMsRUFDckMsT0FBZTtRQURmLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQVIzQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ2hCLG9CQUFlLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7SUFVM0QsQ0FBQztJQVdELFdBQVcsQ0FBQyxPQUFzQjtRQUU5QixJQUFJLGNBQWMsSUFBSSxPQUFPLEVBQUU7WUFFM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUtELFFBQVE7UUFFSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQ2QsSUFBSSxDQUNELE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBMEIsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsRUFDekUsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDbEM7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFHaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQWFYLENBQUM7SUFLRCxXQUFXO1FBRVAsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBWUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQWNPLGVBQWUsQ0FBQyxJQUFTLEVBQUUsVUFBa0I7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUUvQixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRTtZQUMxQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ2hCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7b0JBQ3pDLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2FBQ0o7WUFHRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUN4QixTQUFTO2FBQ1o7WUFHRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM1RSxPQUFPLElBQUksQ0FBQzthQUNmO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBT08sYUFBYSxDQUFDLFVBQWtCO1FBRXBDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUlqRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUN0QjtRQUdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzt1SEExSlEsMEJBQTBCOzJHQUExQiwwQkFBMEIsa05DVnZDLDRtR0FtRmU7MkZEekVGLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBRWQsdUJBQXVCLENBQUMsTUFBTTs2SEFRdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RyZWV2aWV3LWFzaWRlLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc2lkZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVZpZXdBc2lkZUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYXV0b0NvbGxhcHNlOiBCb29sZWFuSW5wdXQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NraXBDaGlsZHJlbjogQm9vbGVhbklucHV0O1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5cbiAgICBASW5wdXQoKSBhY3RpdmVJdGVtSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBhdXRvQ29sbGFwc2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXRlbTogYW55O1xuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBza2lwQ2hpbGRyZW46IGJvb2xlYW47XG5cbiAgICBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgLy8gcHJpdmF0ZSBfZnVzZU5hdmlnYXRpb25TZXJ2aWNlOiBGdXNlTmF2aWdhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgTGlmZWN5Y2xlIGhvb2tzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIE9uIGNoYW5nZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAgICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICAvLyBBY3RpdmUgaXRlbSBpZFxuICAgICAgICBpZiAoJ2FjdGl2ZUl0ZW1JZCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgLy8gTWFyayBpZiBhY3RpdmVcbiAgICAgICAgICAgIHRoaXMuX21hcmtJZkFjdGl2ZSh0aGlzLl9yb3V0ZXIudXJsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGluaXRcbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gTWFyayBpZiBhY3RpdmVcbiAgICAgICAgdGhpcy5fbWFya0lmQWN0aXZlKHRoaXMuX3JvdXRlci51cmwpO1xuXG4gICAgICAgIC8vIEF0dGFjaCBhIGxpc3RlbmVyIHRvIHRoZSBOYXZpZ2F0aW9uRW5kIGV2ZW50XG4gICAgICAgIHRoaXMuX3JvdXRlci5ldmVudHNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcblxuICAgICAgICAgICAgICAgIC8vIE1hcmsgaWYgYWN0aXZlXG4gICAgICAgICAgICAgICAgdGhpcy5fbWFya0lmQWN0aXZlKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEdldCB0aGUgcGFyZW50IG5hdmlnYXRpb24gY29tcG9uZW50XG4gICAgICAgIC8vIHRoaXMuX3RyZWV2aWV3Q29tcG9uZW50ID0gdGhpcy5fZnVzZU5hdmlnYXRpb25TZXJ2aWNlLmdldENvbXBvbmVudCh0aGlzLm5hbWUpO1xuXG4gICAgICAgIC8vIC8vIFN1YnNjcmliZSB0byBvblJlZnJlc2hlZCBvbiB0aGUgbmF2aWdhdGlvbiBjb21wb25lbnRcbiAgICAgICAgLy8gdGhpcy5fdHJlZXZpZXdDb21wb25lbnQub25SZWZyZXNoZWQucGlwZShcbiAgICAgICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbClcbiAgICAgICAgLy8gKS5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAgIC8vICAgICAvLyBNYXJrIGZvciBjaGVja1xuICAgICAgICAvLyAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIC8vIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGRlc3Ryb3lcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQCBQdWJsaWMgbWV0aG9kc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBUcmFjayBieSBmdW5jdGlvbiBmb3IgbmdGb3IgbG9vcHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICovXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkIHx8IGluZGV4O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQCBQcml2YXRlIG1ldGhvZHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGdpdmVuIGl0ZW0gaGFzIHRoZSBnaXZlbiB1cmxcbiAgICAgKiBpbiBvbmUgb2YgaXRzIGNoaWxkcmVuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqIEBwYXJhbSBjdXJyZW50VXJsXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9oYXNBY3RpdmVDaGlsZChpdGVtOiBhbnksIGN1cnJlbnRVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGl0ZW0uY2hpbGRyZW47XG5cbiAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2hhc0FjdGl2ZUNoaWxkKGNoaWxkLCBjdXJyZW50VXJsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNraXAgaXRlbXMgb3RoZXIgdGhhbiAnYmFzaWMnXG4gICAgICAgICAgICBpZiAoY2hpbGQudHlwZSAhPT0gJ2Jhc2ljJykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgY2hpbGQgaGFzIGEgbGluayBhbmQgaXMgYWN0aXZlXG4gICAgICAgICAgICBpZiAoY2hpbGQubGluayAmJiB0aGlzLl9yb3V0ZXIuaXNBY3RpdmUoY2hpbGQubGluaywgY2hpbGQuZXhhY3RNYXRjaCB8fCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNpZGUgYW5kIG1hcmsgaWYgdGhlIGl0ZW0gaXMgYWN0aXZlXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX21hcmtJZkFjdGl2ZShjdXJyZW50VXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGFjdGl2ZUl0ZW1JZCBpcyBlcXVhbHMgdG8gdGhpcyBpdGVtIGlkXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5hY3RpdmVJdGVtSWQgPT09IHRoaXMuaXRlbS5pZDtcblxuICAgICAgICAvLyBJZiB0aGUgYXNpZGUgaGFzIGEgY2hpbGRyZW4gdGhhdCBpcyBhY3RpdmUsXG4gICAgICAgIC8vIGFsd2F5cyBtYXJrIGl0IGFzIGFjdGl2ZVxuICAgICAgICBpZiAodGhpcy5faGFzQWN0aXZlQ2hpbGQodGhpcy5pdGVtLCBjdXJyZW50VXJsKSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFyayBmb3IgY2hlY2tcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0td3JhcHBlclwiIFtjbGFzcy50cmVldmlldy1pdGVtLWhhcy1zdWJ0aXRsZV09XCIhIWl0ZW0uc3VidGl0bGVcIlxuICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8ud3JhcHBlclwiPlxuXG4gICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW1cIiBbbmdDbGFzc109XCJ7J3RyZWV2aWV3LWl0ZW0tYWN0aXZlJzogYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAndHJlZXZpZXctaXRlbS1kaXNhYmxlZCc6IGl0ZW0uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICd0cmVldmlldy1pdGVtLWFjdGl2ZS1mb3JjZWQnOiBpdGVtLmFjdGl2ZX1cIiBbbWF0VG9vbHRpcF09XCJpdGVtLnRvb2x0aXAgfHwgJydcIj5cblxuICAgICAgICA8IS0tIEljb24gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8uaWNvblwiIFtzdmdJY29uXT1cIml0ZW0uaWNvblwiPlxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUaXRsZSAmIFN1YnRpdGxlIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS10aXRsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS10aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8udGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tpdGVtLnRpdGxlfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy5zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLnN1YnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQmFkZ2UgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmJhZGdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS1iYWRnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLWJhZGdlLWNvbnRlbnRcIiBbbmdDbGFzc109XCJpdGVtLmJhZGdlLmNsYXNzZXNcIj5cbiAgICAgICAgICAgICAgICAgICAge3tpdGVtLmJhZGdlLnRpdGxlfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2lwQ2hpbGRyZW5cIj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLWNoaWxkcmVuXCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cblxuICAgICAgICAgICAgPCEtLSBTa2lwIHRoZSBoaWRkZW4gaXRlbXMgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGl0ZW0uaGlkZGVuICYmICFpdGVtLmhpZGRlbihpdGVtKSkgfHwgIWl0ZW0uaGlkZGVuXCI+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEJhc2ljIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdiYXNpYydcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyZWV2aWV3LWJhc2ljLWl0ZW0gW2l0ZW1dPVwiaXRlbVwiIFtuYW1lXT1cIm5hbWVcIj48L3RyZWV2aWV3LWJhc2ljLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8IS0tIENvbGxhcHNhYmxlIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdjb2xsYXBzYWJsZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyZWV2aWV3LWNvbGxhcHNhYmxlLWl0ZW0gW2l0ZW1dPVwiaXRlbVwiIFtuYW1lXT1cIm5hbWVcIiBbYXV0b0NvbGxhcHNlXT1cImF1dG9Db2xsYXBzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3RyZWV2aWV3LWNvbGxhcHNhYmxlLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8IS0tIERpdmlkZXIgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2RpdmlkZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0cmVldmlldy1kaXZpZGVyLWl0ZW0gW2l0ZW1dPVwiaXRlbVwiIFtuYW1lXT1cIm5hbWVcIj48L3RyZWV2aWV3LWRpdmlkZXItaXRlbT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDwhLS0gR3JvdXAgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2dyb3VwJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8dHJlZXZpZXctZ3JvdXAtaXRlbSBbaXRlbV09XCJpdGVtXCIgW25hbWVdPVwibmFtZVwiPjwvdHJlZXZpZXctZ3JvdXAtaXRlbT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDwhLS0gU3BhY2VyIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdzcGFjZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0cmVldmlldy1zcGFjZXItaXRlbSBbaXRlbV09XCJpdGVtXCIgW25hbWVdPVwibmFtZVwiPjwvdHJlZXZpZXctc3BhY2VyLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -0,0 +1,118 @@
1
+ import { ChangeDetectionStrategy, Output, Component, EventEmitter, Input } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import moment from '../../moment-helper';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../createKpi.service";
6
+ import * as i2 from "@angular/router";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/material/icon";
9
+ import * as i5 from "@angular/material/tooltip";
10
+ export class TreeViewBasicItemComponent {
11
+ constructor(_changeDetectorRef, _treeviewService, route) {
12
+ this._changeDetectorRef = _changeDetectorRef;
13
+ this._treeviewService = _treeviewService;
14
+ this.route = route;
15
+ this.isEditIcon = false;
16
+ this.editableKpiBasicData = new EventEmitter();
17
+ this._unsubscribeAll = new Subject();
18
+ }
19
+ ngOnInit() {
20
+ this._changeDetectorRef.markForCheck();
21
+ }
22
+ ngOnDestroy() {
23
+ this._unsubscribeAll.next(null);
24
+ this._unsubscribeAll.complete();
25
+ }
26
+ getKPIDataOnclick(kpiData, event) {
27
+ this._treeviewService.getSelectedKPiData(kpiData);
28
+ }
29
+ getNavigateToKpi(data) {
30
+ const kpiId = data['id'];
31
+ let startDate, endDate;
32
+ if (data.pageId && data.pageId !== "") {
33
+ this.getNavigateKpiByPageID(data, kpiId, data['pageId']);
34
+ }
35
+ else {
36
+ this._treeviewService.getKpiBrowserConfigById(kpiId).subscribe(kpiData => {
37
+ this._treeviewService.getFilterForKpi(kpiData);
38
+ const filteredObjects = kpiData[0]['api_config'].filter(kpi => kpi.kpiConfig.displayType === "filter");
39
+ console.log(filteredObjects);
40
+ if (filteredObjects && filteredObjects.length !== 0) {
41
+ const filterOptions = filteredObjects[0].kpiConfig.dataConfig.filterItems;
42
+ filterOptions.forEach(element => {
43
+ if (element.filterType == 'date' || element.filterType == 'datetime') {
44
+ if (element.defaultFilterType == "dynamic" && element.momentFunction !== "" && element.defaultFilterValue !== "" && element.momentFormate !== "") {
45
+ if (element.apiName == "startDate") {
46
+ let [count, unit] = element.defaultFilterValue.split(',');
47
+ startDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormate);
48
+ }
49
+ if (element.apiName == "endDate") {
50
+ let [count, unit] = element.defaultFilterValue.split(',');
51
+ endDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormate);
52
+ }
53
+ }
54
+ }
55
+ });
56
+ }
57
+ else {
58
+ startDate = moment().subtract('30', 'days').format('YYYY-MM-DD');
59
+ endDate = moment().subtract('1', 'days').format('YYYY-MM-DD');
60
+ }
61
+ this.getNavigateKpi(data, kpiId, startDate, endDate);
62
+ });
63
+ }
64
+ }
65
+ getNavigateKpi(data, kpiId, startDate, endDate) {
66
+ let navigation = {
67
+ queryParams: {
68
+ 'startDate': startDate,
69
+ 'endDate': endDate,
70
+ 'id': kpiId,
71
+ 'name': data['name']
72
+ }
73
+ };
74
+ if (data.isAccessible) {
75
+ this.route.navigate(['/apps/kpi/' + kpiId + '/'], navigation);
76
+ }
77
+ else {
78
+ this.route.navigate(['/apps/kpi/kpi_data'], navigation);
79
+ }
80
+ }
81
+ getNavigateKpiByPageID(data, kpiId, pageId) {
82
+ let navigation = {
83
+ queryParams: {
84
+ 'pageId': pageId,
85
+ 'id': kpiId,
86
+ 'name': data['name']
87
+ }
88
+ };
89
+ if (data.isAccessible) {
90
+ this.route.navigate(['/apps/kpi/' + kpiId + '/'], navigation);
91
+ }
92
+ else {
93
+ this.route.navigate(['/apps/kpi/kpiView'], navigation);
94
+ }
95
+ }
96
+ getEditTreeData(item) {
97
+ this.editableKpiBasicData.emit(item);
98
+ }
99
+ }
100
+ TreeViewBasicItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewBasicItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CreateKpIService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
101
+ TreeViewBasicItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: { item: "item", name: "name", internalRoute: "internalRoute", isEditIcon: "isEditIcon", treeId: "treeId" }, outputs: { editableKpiBasicData: "editableKpiBasicData" }, ngImport: i0, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.isVisible\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewBasicItemComponent, decorators: [{
103
+ type: Component,
104
+ args: [{ selector: 'treeview-basic-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.isVisible\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>" }]
105
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CreateKpIService }, { type: i2.Router }]; }, propDecorators: { item: [{
106
+ type: Input
107
+ }], name: [{
108
+ type: Input
109
+ }], internalRoute: [{
110
+ type: Input
111
+ }], isEditIcon: [{
112
+ type: Input
113
+ }], treeId: [{
114
+ type: Input
115
+ }], editableKpiBasicData: [{
116
+ type: Output
117
+ }] } });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9iYXNpYy9iYXNpYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2Jhc2ljL2Jhc2ljLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV0SSxPQUFPLEVBQUUsT0FBTyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBT3pDLE1BQU0sT0FBTywwQkFBMEI7SUFrQm5DLFlBQ1ksa0JBQXFDLEVBQ3JDLGdCQUFrQyxFQUNsQyxLQUFhO1FBRmIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFqQmhCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHcEIseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdEUsb0JBQWUsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQWtCM0QsQ0FBQztJQVNELFFBQVE7UUFJSixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFM0MsQ0FBQztJQUtELFdBQVc7UUFHUCxJ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LEdBQUcsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDakU7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUztRQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O3VIQW5JUSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwwT0NWdkMsNGxGQTJEYzsyRkRqREQsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNOzRKQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRVcsb0JBQW9CO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ3JlYXRlS3BJU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NyZWF0ZUtwaS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHJlZXZpZXctYmFzaWMtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Jhc2ljLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlVmlld0Jhc2ljSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGludGVybmFsUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBpc0VkaXRJY29uOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgdHJlZUlkOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGVkaXRhYmxlS3BpQmFzaWNEYXRhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gICAgaXNBY3RpdmVNYXRjaE9wdGlvbnM6IElzQWN0aXZlTWF0Y2hPcHRpb25zO1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBHX0RFRkFVTFRfU1RBUlRfREFURTogYW55O1xuICAgIEdfREVGQVVMVF9FTkRfREFURTogYW55O1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfdHJlZXZpZXdTZXJ2aWNlOiBDcmVhdGVLcElTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBSb3V0ZXIsXG5cbiAgICApIHtcbiAgICAgICAgLy8gU2V0IHRoZSBlcXVpdmFsZW50IG9mIHtleGFjdDogZmFsc2V9IGFzIGRlZmF1bHQgZm9yIGFjdGl2ZSBtYXRjaCBvcHRpb25zLlxuICAgICAgICAvLyBXZSBhcmUgbm90IGFzc2lnbmluZyB0aGUgaXRlbS5pc0FjdGl2ZU1hdGNoT3B0aW9ucyBkaXJlY3RseSB0byB0aGVcbiAgICAgICAgLy8gW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXSBiZWNhdXNlIGlmIGl0J3MgXCJ1bmRlZmluZWRcIiBpbml0aWFsbHksIHRoZSByb3V0ZXJcbiAgICAgICAgLy8gd2lsbCB0aHJvdyBhbiBlcnJvciBhbmQgc3RvcCB3b3JraW5nLlxuXG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIExpZmVjeWNsZSBob29rc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBPbiBpbml0XG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG5cblxuICAgICAgICAvLyBNYXJrIGZvciBjaGVja1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGRlc3Ryb3lcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0S1BJRGF0YU9uY2xpY2soa3BpRGF0YTogYW55LCBldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuX3RyZWV2aWV3U2VydmljZS5nZXRTZWxlY3RlZEtQaURhdGEoa3BpRGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0TmF2aWdhdGVUb0twaShkYXRhOiBhbnkpIHtcbiAgICAgICAgY29uc3Qga3BpSWQgPSBkYXRhWydpZCddO1xuICAgICAgICBsZXQgc3RhcnREYXRlLCBlbmREYXRlO1xuICAgICAgICBpZiAoZGF0YS5wYWdlSWQgJiYgZGF0YS5wYWdlSWQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TmF2aWdhdGVLcGlCeVBhZ2VJRChkYXRhLCBrcGlJZCwgZGF0YVsncGFnZUlkJ10pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90cmVldmlld1NlcnZpY2UuZ2V0S3BpQnJvd3NlckNvbmZpZ0J5SWQoa3BpSWQpLnN1YnNjcmliZShrcGlEYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90cmVldmlld1NlcnZpY2UuZ2V0RmlsdGVyRm9yS3BpKGtwaURhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT2JqZWN0cyA9IGtwaURhdGFbMF1bJ2FwaV9jb25maWcnXS5maWx0ZXIoa3BpID0+IGtwaS5rcGlDb25maWcuZGlzcGxheVR5cGUgPT09IFwiZmlsdGVyXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbHRlcmVkT2JqZWN0cyk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkT2JqZWN0cyAmJiBmaWx0ZXJlZE9iamVjdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck9wdGlvbnMgPSBmaWx0ZXJlZE9iamVjdHNbMF0ua3BpQ29uZmlnLmRhdGFDb25maWcuZmlsdGVySXRlbXM7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlck9wdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGUnIHx8IGVsZW1lbnQuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT0gXCJkeW5hbWljXCIgJiYgZWxlbWVudC5tb21lbnRGdW5jdGlvbiAhPT0gXCJcIiAmJiBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIiAmJiBlbGVtZW50Lm1vbWVudEZvcm1hdGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgW2NvdW50LCB1bml0XSA9IGVsZW1lbnQuZGVmYXVsdEZpbHRlclZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGUgPSBtb21lbnQoKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgnMzAnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoJzEnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TmF2aWdhdGVLcGkoZGF0YSwga3BpSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuXG4gICAgfVxuXG4gICAgZ2V0TmF2aWdhdGVLcGkoZGF0YSwga3BpSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSkge1xuICAgICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgJ3N0YXJ0RGF0ZSc6IHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICAgICAnZW5kRGF0ZSc6IGVuZERhdGUsXG4gICAgICAgICAgICAgICAgJ2lkJzoga3BpSWQsXG4gICAgICAgICAgICAgICAgJ25hbWUnOiBkYXRhWyduYW1lJ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGRhdGEuaXNBY2Nlc3NpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMva3BpLycgKyBrcGlJZCArICcvJ10sIG5hdmlnYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZShbJy9hcHBzL2twaS9rcGlfZGF0YSddLCBuYXZpZ2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE5hdmlnYXRlS3BpQnlQYWdlSUQoZGF0YSwga3BpSWQsIHBhZ2VJZCkge1xuICAgICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgJ3BhZ2VJZCc6IHBhZ2VJZCxcbiAgICAgICAgICAgICAgICAnaWQnOiBrcGlJZCxcbiAgICAgICAgICAgICAgICAnbmFtZSc6IGRhdGFbJ25hbWUnXVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZGF0YS5pc0FjY2Vzc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUubmF2aWdhdGUoWycvYXBwcy9rcGkvJyArIGtwaUlkICsgJy8nXSwgbmF2aWdhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMva3BpL2twaVZpZXcnXSwgbmF2aWdhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRFZGl0VHJlZURhdGEoaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVLcGlCYXNpY0RhdGEuZW1pdChpdGVtKTtcbiAgICB9XG5cblxufVxuIiwiPCEtLSBJdGVtIHdyYXBwZXIgLS0+XG48ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS13cmFwcGVyXCIgW2NsYXNzLnRyZWV2aWV3LWl0ZW0taGFzLXN1YnRpdGxlXT1cIiEhaXRlbS5zdWJ0aXRsZVwiXG4gICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy53cmFwcGVyXCIgKGNsaWNrKT1cImdldEtQSURhdGFPbmNsaWNrKGl0ZW0sICRldmVudClcIiAoZGJsY2xpY2spPSdnZXROYXZpZ2F0ZVRvS3BpKGl0ZW0pJyAqbmdJZj1cIml0ZW0uaXNWaXNpYmxlXCI+XG5cbiAgICA8IS0tIEl0ZW0gd2l0aCBhbiBpbnRlcm5hbCBsaW5rIC0tPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubGluayAmJiAhaXRlbS5leHRlcm5hbExpbmsgJiYgIWl0ZW0uZnVuY3Rpb24gJiYgIWl0ZW0uZGlzYWJsZWRcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0cmVldmlldy1pdGVtXCIgW25nQ2xhc3NdPVwieyd0cmVldmlldy1pdGVtLWFjdGl2ZS1mb3JjZWQnOiBpdGVtLmFjdGl2ZX1cIiBbcm91dGVyTGlua109XCJbaXRlbS5saW5rXVwiXG4gICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS5mcmFnbWVudCA/PyBudWxsXCIgW3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbS5wcmVzZXJ2ZUZyYWdtZW50ID8/IGZhbHNlXCJcbiAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zID8/IG51bGxcIiBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmcgPz8gbnVsbFwiXG4gICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCIndHJlZXZpZXctaXRlbS1hY3RpdmUnXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cImlzQWN0aXZlTWF0Y2hPcHRpb25zXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0udG9vbHRpcCB8fCAnJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxuXG5cbiAgICA8IS0tIEl0ZW0gd2l0aCBhIG5vIGxpbmsgYW5kIG5vIGZ1bmN0aW9uIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5saW5rICYmICFpdGVtLmZ1bmN0aW9uICYmICFpdGVtLmRpc2FibGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtXCIgaWQ9XCJrcGlJZC17e2l0ZW0udGlkfX1cIiBbbWF0VG9vbHRpcF09XCJpdGVtLnRvb2x0aXAgfHwgJydcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuXG48IS0tIEl0ZW0gdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZT5cblxuICAgIDwhLS0gSWNvbiAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8uaWNvblwiIFtzdmdJY29uXT1cIml0ZW0uaWNvblwiPjwvbWF0LWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFRpdGxlICYgU3VidGl0bGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tdGl0bGUtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS10aXRsZSBjYXBpdGFsaXplXCI+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXM/Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbCB0ZXh0LXNreS04MDAgbXgtMiBob3Zlcjp0ZXh0LXNreS00MDAgY3Vyc29yLXBvaW50ZXIgXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldEVkaXRUcmVlRGF0YShpdGVtKVwiICpuZ0lmPVwiaXNFZGl0SWNvblwiPjwvaT4ge3tpdGVtLm5hbWV9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uc3VidGl0bGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy5zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uc3VidGl0bGV9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQmFkZ2UgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uYmFkZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tYmFkZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLWJhZGdlLWNvbnRlbnRcIiBbbmdDbGFzc109XCJpdGVtLmJhZGdlLmNsYXNzZXNcIj5cbiAgICAgICAgICAgICAgICB7e2l0ZW0uYmFkZ2UudGl0bGV9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L25nLXRlbXBsYXRlPiJdfQ==