@acorex/components 18.15.3 → 18.16.0-next.1
Sign up to get free protection for your applications and to get access to all the features.
- package/audio-wave/lib/audio-wave.component.d.ts +1 -0
- package/comment/lib/comment-container/comment-container.component.d.ts +1 -0
- package/common/lib/components/value-component.class.d.ts +1 -0
- package/common/lib/directives/auto-focus.directive.d.ts +1 -0
- package/common/lib/directives/inverted-color.directive.d.ts +1 -0
- package/common/lib/directives/ripple.directive.d.ts +1 -0
- package/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.d.ts +1 -0
- package/data-table/lib/columns/data-table-column-resizable.directive.d.ts +1 -0
- package/data-table/lib/data-table/data-table.component.d.ts +1 -0
- package/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.d.ts +1 -0
- package/drawer/lib/drawer/drawer-item/drawer.component.d.ts +1 -0
- package/esm2022/audio-wave/lib/audio-wave.component.mjs +18 -14
- package/esm2022/button/lib/button-item-list.component.mjs +2 -2
- package/esm2022/calendar/lib/calendar.component.mjs +17 -14
- package/esm2022/comment/lib/comment-container/comment-container.component.mjs +18 -15
- package/esm2022/common/lib/components/value-component.class.mjs +5 -4
- package/esm2022/common/lib/directives/auto-focus.directive.mjs +8 -5
- package/esm2022/common/lib/directives/inverted-color.directive.mjs +23 -19
- package/esm2022/common/lib/directives/ripple.directive.mjs +18 -15
- package/esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.mjs +13 -9
- package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +19 -5
- package/esm2022/data-pager/lib/data-pager.component.mjs +3 -3
- package/esm2022/data-table/lib/columns/data-table-column-resizable.directive.mjs +13 -13
- package/esm2022/data-table/lib/data-table/data-table.component.mjs +14 -9
- package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +13 -10
- package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +5 -4
- package/esm2022/list/lib/list.component.mjs +14 -9
- package/esm2022/menu/lib/context-menu.component.mjs +40 -32
- package/esm2022/picker/lib/picker.component.mjs +11 -4
- package/esm2022/popover/lib/popover.component.mjs +7 -6
- package/esm2022/range-slider/lib/range-slider.component.mjs +15 -9
- package/esm2022/rate-picker/lib/rate-picker.component.mjs +8 -2
- package/esm2022/tree-view/acorex-components-tree-view.mjs +5 -0
- package/esm2022/tree-view/index.mjs +4 -0
- package/esm2022/tree-view/lib/tree-view-item.component.mjs +86 -0
- package/esm2022/tree-view/lib/tree-view.class.mjs +4 -0
- package/esm2022/tree-view/lib/tree-view.component.mjs +299 -0
- package/esm2022/tree-view/lib/tree-view.component.module.mjs +50 -0
- package/esm2022/uploader/lib/uploader-zone.directive.mjs +21 -16
- package/fesm2022/acorex-components-audio-wave.mjs +18 -15
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +2 -2
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +16 -14
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +17 -14
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-common.mjs +44 -34
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +12 -9
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +20 -6
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +33 -25
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +4 -3
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +14 -10
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +39 -31
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +10 -4
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +6 -5
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +14 -8
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs +7 -1
- package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +433 -0
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -0
- package/fesm2022/acorex-components-uploader.mjs +20 -15
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/menu/lib/context-menu.component.d.ts +1 -0
- package/package.json +7 -1
- package/picker/lib/picker.component.d.ts +1 -0
- package/popover/lib/popover.component.d.ts +1 -0
- package/rate-picker/lib/rate-picker.component.d.ts +1 -0
- package/tree-view/README.md +3 -0
- package/tree-view/index.d.ts +3 -0
- package/tree-view/lib/tree-view-item.component.d.ts +23 -0
- package/tree-view/lib/tree-view.class.d.ts +20 -0
- package/tree-view/lib/tree-view.component.d.ts +80 -0
- package/tree-view/lib/tree-view.component.module.d.ts +16 -0
- package/uploader/lib/uploader-zone.directive.d.ts +1 -0
@@ -0,0 +1,86 @@
|
|
1
|
+
import { NXComponent } from '@acorex/components/common';
|
2
|
+
import { AXPlatform } from '@acorex/core/platform';
|
3
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
4
|
+
import { ChangeDetectionStrategy, Component, computed, inject, input, model, output, ViewEncapsulation, } from '@angular/core';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "@acorex/components/tooltip";
|
7
|
+
import * as i2 from "@acorex/components/loading";
|
8
|
+
export class AXTreeViewItemComponent extends NXComponent {
|
9
|
+
constructor() {
|
10
|
+
super();
|
11
|
+
this.item = input();
|
12
|
+
this.onNodeExpand = output();
|
13
|
+
this.onNodeClick = output();
|
14
|
+
this.isExpanded = model(false);
|
15
|
+
this.hasChildField = input();
|
16
|
+
this.isActive = model(false);
|
17
|
+
this.onNodeDbClick = output();
|
18
|
+
this.isLoading = input(false);
|
19
|
+
this.disableField = input();
|
20
|
+
this.platformService = inject(AXPlatform);
|
21
|
+
this.arrowIcon = computed(() => {
|
22
|
+
if (this.isExpanded()) {
|
23
|
+
return 'ax-tree-view-arrow ax-icon ax-icon-solid ax-icon-chevron-down';
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
return this.platformService.isRtl()
|
27
|
+
? 'ax-tree-view-arrow ax-icon ax-icon-solid ax-icon-chevron-left'
|
28
|
+
: 'ax-tree-view-arrow ax-icon ax-icon-solid ax-icon-chevron-right';
|
29
|
+
}
|
30
|
+
});
|
31
|
+
}
|
32
|
+
handleArrowNodeClick() {
|
33
|
+
if (this.item()[this.disableField()] || this.isLoading()) {
|
34
|
+
return;
|
35
|
+
}
|
36
|
+
this.isExpanded.set(!this.isExpanded());
|
37
|
+
this.onNodeExpand.emit({ component: this, data: this.item(), nativeElement: this.nativeElement });
|
38
|
+
}
|
39
|
+
handleTextClick(item) {
|
40
|
+
this.onNodeClick.emit({ component: this, data: item, nativeElement: this.nativeElement });
|
41
|
+
}
|
42
|
+
handleTextDbClick(item) {
|
43
|
+
if (item[this.disableField()]) {
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
if (item?.childrens?.length || item[this.hasChildField()]) {
|
47
|
+
this.isExpanded.set(!this.isExpanded());
|
48
|
+
this.onNodeDbClick.emit({ component: this, data: item, nativeElement: this.nativeElement });
|
49
|
+
}
|
50
|
+
}
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
52
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXTreeViewItemComponent, selector: "ax-tree-view-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, isExpanded: { classPropertyName: "isExpanded", publicName: "isExpanded", isSignal: true, isRequired: false, transformFunction: null }, hasChildField: { classPropertyName: "hasChildField", publicName: "hasChildField", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, disableField: { classPropertyName: "disableField", publicName: "disableField", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onNodeExpand: "onNodeExpand", onNodeClick: "onNodeClick", isExpanded: "isExpandedChange", isActive: "isActiveChange", onNodeDbClick: "onNodeDbClick" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-tree-view-container\">\n @if ((item().childrens && !isLoading()) || (item()[hasChildField()] && !isLoading())) {\n <i\n [class.ax-state-disabled]=\"item()[disableField()]\"\n (click)=\"handleArrowNodeClick()\"\n class=\"{{ arrowIcon() }}\"\n ></i>\n } @else if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <i class=\"ax-icon\"></i>\n }\n\n <div class=\"ax-tree-view-items\">\n <ng-content select=\"ax-check-box\"></ng-content>\n <div\n [class.ax-state-disabled]=\"item()[disableField()]\"\n [axTooltip]=\"item().tooltip\"\n axTooltipPlacement=\"end-bottom\"\n (click)=\"handleTextClick(item())\"\n (dblclick)=\"handleTextDbClick(item())\"\n class=\"ax-tree-view-items-prefix noselect-tree-view\"\n [class.ax-state-tree-view-active]=\"item().active\"\n >\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-text\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n </div>\n</div>\n\n<div\n class=\"{{ platformService.isRtl() ? 'ax-state-tree-view-rtl' : 'ax-state-tree-view-ltr' }}\"\n [@collapseExpand]=\"isExpanded() ? 'expanded' : 'collapsed'\"\n>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }], animations: [
|
53
|
+
trigger('collapseExpand', [
|
54
|
+
state('collapsed', style({
|
55
|
+
height: '0',
|
56
|
+
overflow: 'hidden',
|
57
|
+
opacity: 0,
|
58
|
+
})),
|
59
|
+
state('expanded', style({
|
60
|
+
height: '*',
|
61
|
+
overflow: 'hidden',
|
62
|
+
opacity: 1,
|
63
|
+
})),
|
64
|
+
transition('collapsed <=> expanded', [animate('300ms ease-in-out')]),
|
65
|
+
]),
|
66
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
67
|
+
}
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewItemComponent, decorators: [{
|
69
|
+
type: Component,
|
70
|
+
args: [{ selector: 'ax-tree-view-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
71
|
+
trigger('collapseExpand', [
|
72
|
+
state('collapsed', style({
|
73
|
+
height: '0',
|
74
|
+
overflow: 'hidden',
|
75
|
+
opacity: 0,
|
76
|
+
})),
|
77
|
+
state('expanded', style({
|
78
|
+
height: '*',
|
79
|
+
overflow: 'hidden',
|
80
|
+
opacity: 1,
|
81
|
+
})),
|
82
|
+
transition('collapsed <=> expanded', [animate('300ms ease-in-out')]),
|
83
|
+
]),
|
84
|
+
], template: "<div class=\"ax-tree-view-container\">\n @if ((item().childrens && !isLoading()) || (item()[hasChildField()] && !isLoading())) {\n <i\n [class.ax-state-disabled]=\"item()[disableField()]\"\n (click)=\"handleArrowNodeClick()\"\n class=\"{{ arrowIcon() }}\"\n ></i>\n } @else if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <i class=\"ax-icon\"></i>\n }\n\n <div class=\"ax-tree-view-items\">\n <ng-content select=\"ax-check-box\"></ng-content>\n <div\n [class.ax-state-disabled]=\"item()[disableField()]\"\n [axTooltip]=\"item().tooltip\"\n axTooltipPlacement=\"end-bottom\"\n (click)=\"handleTextClick(item())\"\n (dblclick)=\"handleTextDbClick(item())\"\n class=\"ax-tree-view-items-prefix noselect-tree-view\"\n [class.ax-state-tree-view-active]=\"item().active\"\n >\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-text\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n </div>\n </div>\n</div>\n\n<div\n class=\"{{ platformService.isRtl() ? 'ax-state-tree-view-rtl' : 'ax-state-tree-view-ltr' }}\"\n [@collapseExpand]=\"isExpanded() ? 'expanded' : 'collapsed'\"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
85
|
+
}], ctorParameters: () => [] });
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RyZWUtdmlldy9zcmMvbGliL3RyZWUtdmlldy1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90cmVlLXZpZXcvc3JjL2xpYi90cmVlLXZpZXctaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7QUE4QnZCLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxXQUFXO0lBQ3REO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFHVixTQUFJLEdBQUcsS0FBSyxFQUFvQixDQUFDO1FBRWpDLGlCQUFZLEdBQUcsTUFBTSxFQUE0QixDQUFDO1FBRWxELGdCQUFXLEdBQUcsTUFBTSxFQUE0QixDQUFDO1FBRWpELGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbkMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVoQyxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWpDLGtCQUFhLEdBQUcsTUFBTSxFQUE0QixDQUFDO1FBRW5ELGNBQVMsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbEMsaUJBQVksR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVyQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixPQUFPLCtEQUErRCxDQUFDO1lBQ3pFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFO29CQUNqQyxDQUFDLENBQUMsK0RBQStEO29CQUNqRSxDQUFDLENBQUMsZ0VBQWdFLENBQUM7WUFDdkUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBOUJILENBQUM7SUFnQ1Msb0JBQW9CO1FBQzVCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVTLGVBQWUsQ0FBQyxJQUFzQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQXNCO1FBQ2hELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7SUFDSCxDQUFDOzhHQXpEVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw2aENDMUNwQyw4dUNBcUNBLHFWRGpCYztZQUNWLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDeEIsS0FBSyxDQUNILFdBQVcsRUFDWCxLQUFLLENBQUM7b0JBQ0osTUFBTSxFQUFFLEdBQUc7b0JBQ1gsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDO2lCQUNYLENBQUMsQ0FDSDtnQkFDRCxLQUFLLENBQ0gsVUFBVSxFQUNWLEtBQUssQ0FBQztvQkFDSixNQUFNLEVBQUUsR0FBRztvQkFDWCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsT0FBTyxFQUFFLENBQUM7aUJBQ1gsQ0FBQyxDQUNIO2dCQUNELFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7YUFDckUsQ0FBQztTQUNIOzsyRkFFVSx1QkFBdUI7a0JBM0JuQyxTQUFTOytCQUNFLG1CQUFtQixpQkFFZCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DO3dCQUNWLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTs0QkFDeEIsS0FBSyxDQUNILFdBQVcsRUFDWCxLQUFLLENBQUM7Z0NBQ0osTUFBTSxFQUFFLEdBQUc7Z0NBQ1gsUUFBUSxFQUFFLFFBQVE7Z0NBQ2xCLE9BQU8sRUFBRSxDQUFDOzZCQUNYLENBQUMsQ0FDSDs0QkFDRCxLQUFLLENBQ0gsVUFBVSxFQUNWLEtBQUssQ0FBQztnQ0FDSixNQUFNLEVBQUUsR0FBRztnQ0FDWCxRQUFRLEVBQUUsUUFBUTtnQ0FDbEIsT0FBTyxFQUFFLENBQUM7NkJBQ1gsQ0FBQyxDQUNIOzRCQUNELFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7eUJBQ3JFLENBQUM7cUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyZWVJdGVtQ2xpY2tCYXNlRXZlbnQsIEFYVHJlZVZpZXdTY2hlbWEgfSBmcm9tICcuL3RyZWUtdmlldy5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXRyZWUtdmlldy1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICd0cmVlLXZpZXctaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignY29sbGFwc2VFeHBhbmQnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgc3RhdGUoXG4gICAgICAgICdleHBhbmRlZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBoZWlnaHQ6ICcqJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkIDw9PiBleHBhbmRlZCcsIFthbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcpXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdJdGVtQ29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgaXRlbSA9IGlucHV0PEFYVHJlZVZpZXdTY2hlbWE+KCk7XG5cbiAgb25Ob2RlRXhwYW5kID0gb3V0cHV0PEFYVHJlZUl0ZW1DbGlja0Jhc2VFdmVudD4oKTtcblxuICBvbk5vZGVDbGljayA9IG91dHB1dDxBWFRyZWVJdGVtQ2xpY2tCYXNlRXZlbnQ+KCk7XG5cbiAgaXNFeHBhbmRlZCA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBoYXNDaGlsZEZpZWxkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIGlzQWN0aXZlID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIG9uTm9kZURiQ2xpY2sgPSBvdXRwdXQ8QVhUcmVlSXRlbUNsaWNrQmFzZUV2ZW50PigpO1xuXG4gIGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBkaXNhYmxlRmllbGQgPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgcHJvdGVjdGVkIHBsYXRmb3JtU2VydmljZSA9IGluamVjdChBWFBsYXRmb3JtKTtcblxuICBwcm90ZWN0ZWQgYXJyb3dJY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQoKSkge1xuICAgICAgcmV0dXJuICdheC10cmVlLXZpZXctYXJyb3cgYXgtaWNvbiBheC1pY29uLXNvbGlkIGF4LWljb24tY2hldnJvbi1kb3duJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1TZXJ2aWNlLmlzUnRsKClcbiAgICAgICAgPyAnYXgtdHJlZS12aWV3LWFycm93IGF4LWljb24gYXgtaWNvbi1zb2xpZCBheC1pY29uLWNoZXZyb24tbGVmdCdcbiAgICAgICAgOiAnYXgtdHJlZS12aWV3LWFycm93IGF4LWljb24gYXgtaWNvbi1zb2xpZCBheC1pY29uLWNoZXZyb24tcmlnaHQnO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFycm93Tm9kZUNsaWNrKCkge1xuICAgIGlmICh0aGlzLml0ZW0oKVt0aGlzLmRpc2FibGVGaWVsZCgpXSB8fCB0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0V4cGFuZGVkLnNldCghdGhpcy5pc0V4cGFuZGVkKCkpO1xuXG4gICAgdGhpcy5vbk5vZGVFeHBhbmQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogdGhpcy5pdGVtKCksIG5hdGl2ZUVsZW1lbnQ6IHRoaXMubmF0aXZlRWxlbWVudCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVUZXh0Q2xpY2soaXRlbTogQVhUcmVlVmlld1NjaGVtYSkge1xuICAgIHRoaXMub25Ob2RlQ2xpY2suZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogaXRlbSwgbmF0aXZlRWxlbWVudDogdGhpcy5uYXRpdmVFbGVtZW50IH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVRleHREYkNsaWNrKGl0ZW06IEFYVHJlZVZpZXdTY2hlbWEpIHtcbiAgICBpZiAoaXRlbVt0aGlzLmRpc2FibGVGaWVsZCgpXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXRlbT8uY2hpbGRyZW5zPy5sZW5ndGggfHwgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGQoKV0pIHtcbiAgICAgIHRoaXMuaXNFeHBhbmRlZC5zZXQoIXRoaXMuaXNFeHBhbmRlZCgpKTtcbiAgICAgIHRoaXMub25Ob2RlRGJDbGljay5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiBpdGVtLCBuYXRpdmVFbGVtZW50OiB0aGlzLm5hdGl2ZUVsZW1lbnQgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtdHJlZS12aWV3LWNvbnRhaW5lclwiPlxuICBAaWYgKChpdGVtKCkuY2hpbGRyZW5zICYmICFpc0xvYWRpbmcoKSkgfHwgKGl0ZW0oKVtoYXNDaGlsZEZpZWxkKCldICYmICFpc0xvYWRpbmcoKSkpIHtcbiAgICA8aVxuICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cIml0ZW0oKVtkaXNhYmxlRmllbGQoKV1cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUFycm93Tm9kZUNsaWNrKClcIlxuICAgICAgY2xhc3M9XCJ7eyBhcnJvd0ljb24oKSB9fVwiXG4gICAgPjwvaT5cbiAgfSBAZWxzZSBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gIH0gQGVsc2Uge1xuICAgIDxpIGNsYXNzPVwiYXgtaWNvblwiPjwvaT5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJheC10cmVlLXZpZXctaXRlbXNcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jaGVjay1ib3hcIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cIml0ZW0oKVtkaXNhYmxlRmllbGQoKV1cIlxuICAgICAgW2F4VG9vbHRpcF09XCJpdGVtKCkudG9vbHRpcFwiXG4gICAgICBheFRvb2x0aXBQbGFjZW1lbnQ9XCJlbmQtYm90dG9tXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVUZXh0Q2xpY2soaXRlbSgpKVwiXG4gICAgICAoZGJsY2xpY2spPVwiaGFuZGxlVGV4dERiQ2xpY2soaXRlbSgpKVwiXG4gICAgICBjbGFzcz1cImF4LXRyZWUtdmlldy1pdGVtcy1wcmVmaXggbm9zZWxlY3QtdHJlZS12aWV3XCJcbiAgICAgIFtjbGFzcy5heC1zdGF0ZS10cmVlLXZpZXctYWN0aXZlXT1cIml0ZW0oKS5hY3RpdmVcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXByZWZpeFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXRleHRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJ7eyBwbGF0Zm9ybVNlcnZpY2UuaXNSdGwoKSA/ICdheC1zdGF0ZS10cmVlLXZpZXctcnRsJyA6ICdheC1zdGF0ZS10cmVlLXZpZXctbHRyJyB9fVwiXG4gIFtAY29sbGFwc2VFeHBhbmRdPVwiaXNFeHBhbmRlZCgpID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCJcbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { AXClickEvent } from '@acorex/components/common';
|
2
|
+
export class AXTreeItemClickBaseEvent extends AXClickEvent {
|
3
|
+
}
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RyZWUtdmlldy9zcmMvbGliL3RyZWUtdmlldy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUE4QnpELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxZQUFZO0NBRXpEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDbGlja0V2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmVlVmlld1NjaGVtYSB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgcGFyZW50SWQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgdGV4dDogc3RyaW5nO1xuXG4gIGNoaWxkcmVucz86IEFYVHJlZVZpZXdTY2hlbWFbXTtcblxuICBpY29uPzogc3RyaW5nO1xuXG4gIHNlbGVjdGVkPzogYm9vbGVhbjtcblxuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG5cbiAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG5cbiAgYWN0aXZlPzogYm9vbGVhbjtcblxuICBoYXNDaGlsZD86IGJvb2xlYW47XG5cbiAgdmlzaWJsZT86IGJvb2xlYW47XG5cbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJlZUl0ZW1DbGlja0Jhc2VFdmVudCBleHRlbmRzIEFYQ2xpY2tFdmVudCB7XG4gIG5hdGl2ZUVsZW1lbnQ6IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgU2VsZWN0aW9uQmVoYXZpb3JUeXBlID1cbiAgfCAnYXV0b0V4cGFuZCdcbiAgfCAnZXhwYW5kQW5kU2VsZWN0QWxsT3JVblNlbGVjdCdcbiAgfCAnaW5kZXRlcm1pbmF0ZSdcbiAgfCAnYWN0aXZlQW5kU2VsZWN0J1xuICB8IG51bGw7XG4iXX0=
|
@@ -0,0 +1,299 @@
|
|
1
|
+
import { NXComponent } from '@acorex/components/common';
|
2
|
+
import { ChangeDetectionStrategy, Component, effect, input, output, signal, ViewEncapsulation, } from '@angular/core';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@angular/common";
|
5
|
+
import * as i2 from "@acorex/components/decorators";
|
6
|
+
import * as i3 from "@acorex/components/check-box";
|
7
|
+
import * as i4 from "@angular/forms";
|
8
|
+
import * as i5 from "./tree-view-item.component";
|
9
|
+
export class AXTreeViewComponent extends NXComponent {
|
10
|
+
constructor() {
|
11
|
+
super();
|
12
|
+
this.itemsSignal = signal([]);
|
13
|
+
this.#effect = effect(() => {
|
14
|
+
const itemsInput = this.items();
|
15
|
+
if (typeof itemsInput === 'function') {
|
16
|
+
const result = itemsInput();
|
17
|
+
if (result instanceof Promise) {
|
18
|
+
this.itemsPromise = (options) => itemsInput(options);
|
19
|
+
this.fetchData();
|
20
|
+
}
|
21
|
+
else {
|
22
|
+
this.itemsSignal.set(result);
|
23
|
+
this.itemsPromise = null;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
else {
|
27
|
+
this.itemsSignal.set(itemsInput);
|
28
|
+
this.itemsPromise = null;
|
29
|
+
}
|
30
|
+
}, { allowSignalWrites: true });
|
31
|
+
this.items = input();
|
32
|
+
this.selectable = input(true);
|
33
|
+
this.selectionMode = input('single');
|
34
|
+
this.selectionBehavior = input(null);
|
35
|
+
this.showActiveNode = signal(true);
|
36
|
+
this.valueField = input('id');
|
37
|
+
this.textField = input('text');
|
38
|
+
this.visibleField = input('visible');
|
39
|
+
this.disableField = input('disabled');
|
40
|
+
this.hasChildField = input();
|
41
|
+
this.iconField = input('icon');
|
42
|
+
this.onSelectionChange = output();
|
43
|
+
this.onItemClick = output();
|
44
|
+
this.onNodeClick = output();
|
45
|
+
this.loadingState = signal({});
|
46
|
+
}
|
47
|
+
#effect;
|
48
|
+
get resolvedItems() {
|
49
|
+
return this.itemsSignal();
|
50
|
+
}
|
51
|
+
handleNodeSelectionClick(event, item) {
|
52
|
+
if (item[this.disableField()] || this.isNodeLoading(item.id)) {
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
if (this.selectionMode() === 'single' && event.isUserInteraction) {
|
56
|
+
this.handleUnSelectNode(this.itemsSignal());
|
57
|
+
}
|
58
|
+
item.selected = event.value;
|
59
|
+
if (event.value != null) {
|
60
|
+
switch (this.selectionBehavior()) {
|
61
|
+
case 'autoExpand':
|
62
|
+
if (event.value) {
|
63
|
+
if (this.itemsPromise && item[this.hasChildField()] && !item?.childrens?.length) {
|
64
|
+
this.fetchData(item.id);
|
65
|
+
this.setNodeLoading(item.id, true);
|
66
|
+
}
|
67
|
+
this.toggleExpand(item);
|
68
|
+
}
|
69
|
+
break;
|
70
|
+
case 'expandAndSelectAllOrUnSelect':
|
71
|
+
if (this.itemsPromise) {
|
72
|
+
console.error('This mode only available client Side');
|
73
|
+
return;
|
74
|
+
}
|
75
|
+
this.expandAndToggleSelection(item, event.value);
|
76
|
+
break;
|
77
|
+
case 'indeterminate':
|
78
|
+
if (item?.childrens?.length) {
|
79
|
+
this.applySelectionToChildren(item, event.value, item[this.valueField()]);
|
80
|
+
}
|
81
|
+
this.updateParentSelection(item, event.value);
|
82
|
+
break;
|
83
|
+
default:
|
84
|
+
break;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
if (event.isUserInteraction) {
|
88
|
+
const result = this.findSelectedNodes(this.itemsSignal());
|
89
|
+
this.onSelectionChange.emit({
|
90
|
+
component: this,
|
91
|
+
data: result,
|
92
|
+
nativeElement: this.nativeElement,
|
93
|
+
});
|
94
|
+
this.onItemClick.emit({ component: this, data: item, nativeElement: this.nativeElement });
|
95
|
+
}
|
96
|
+
}
|
97
|
+
/**
|
98
|
+
*
|
99
|
+
* auto expand
|
100
|
+
*
|
101
|
+
*/
|
102
|
+
toggleExpand(item) {
|
103
|
+
if (!item.isExpanded) {
|
104
|
+
item.isExpanded = true;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
/**
|
108
|
+
*
|
109
|
+
* expand and change value parent change
|
110
|
+
*
|
111
|
+
*/
|
112
|
+
expandAndToggleSelection(item, selected) {
|
113
|
+
this.toggleExpand(item);
|
114
|
+
if (item.childrens?.length) {
|
115
|
+
this.applySelectionToChildren(item, selected, item[this.valueField()]);
|
116
|
+
}
|
117
|
+
}
|
118
|
+
applySelectionToChildren(item, isSelected, parentId) {
|
119
|
+
item.childrens.forEach((child) => {
|
120
|
+
child.parentId = parentId;
|
121
|
+
child.selected = isSelected;
|
122
|
+
if (child.childrens?.length) {
|
123
|
+
this.applySelectionToChildren(child, isSelected, child.id);
|
124
|
+
}
|
125
|
+
});
|
126
|
+
}
|
127
|
+
/**
|
128
|
+
*
|
129
|
+
* indeterminate logic
|
130
|
+
*
|
131
|
+
*/
|
132
|
+
updateParentSelection(item, selected) {
|
133
|
+
item.selected = selected;
|
134
|
+
let parent = this.findParent(item, this.itemsSignal());
|
135
|
+
while ((parent && parent.selected != false) || (parent && item.selected)) {
|
136
|
+
const allSelected = parent?.childrens?.every((child) => child.selected);
|
137
|
+
const someSelected = parent?.childrens?.some((child) => child.selected || child.indeterminate);
|
138
|
+
if (!allSelected && !someSelected) {
|
139
|
+
parent.selected = false;
|
140
|
+
parent.indeterminate = null;
|
141
|
+
}
|
142
|
+
else if (!allSelected) {
|
143
|
+
parent.indeterminate = true;
|
144
|
+
parent.selected = null;
|
145
|
+
}
|
146
|
+
else if (allSelected) {
|
147
|
+
parent.selected = true;
|
148
|
+
parent.indeterminate = false;
|
149
|
+
}
|
150
|
+
else {
|
151
|
+
parent.indeterminate = false;
|
152
|
+
parent.selected = true;
|
153
|
+
}
|
154
|
+
parent = this.findParent(parent, this.itemsSignal());
|
155
|
+
}
|
156
|
+
}
|
157
|
+
findParent(item, nodes) {
|
158
|
+
for (let node of nodes) {
|
159
|
+
if (node.childrens?.includes(item)) {
|
160
|
+
return node;
|
161
|
+
}
|
162
|
+
else if (node.childrens) {
|
163
|
+
const parent = this.findParent(item, node.childrens);
|
164
|
+
if (parent)
|
165
|
+
return parent;
|
166
|
+
}
|
167
|
+
}
|
168
|
+
return null;
|
169
|
+
}
|
170
|
+
/**
|
171
|
+
*
|
172
|
+
* find node selected true for emit Selections
|
173
|
+
*
|
174
|
+
*/
|
175
|
+
findSelectedNodes(nodes) {
|
176
|
+
let selectedNodes = [];
|
177
|
+
nodes.forEach((node) => {
|
178
|
+
if (node.selected) {
|
179
|
+
selectedNodes.push(node);
|
180
|
+
}
|
181
|
+
if (node.childrens) {
|
182
|
+
selectedNodes = selectedNodes.concat(this.findSelectedNodes(node.childrens));
|
183
|
+
}
|
184
|
+
});
|
185
|
+
return selectedNodes;
|
186
|
+
}
|
187
|
+
/**
|
188
|
+
*
|
189
|
+
* find for emit Selections single mode
|
190
|
+
*
|
191
|
+
*/
|
192
|
+
handleUnSelectNode(items) {
|
193
|
+
items.forEach((child) => {
|
194
|
+
child.selected = false;
|
195
|
+
if (child?.childrens?.length) {
|
196
|
+
this.handleUnSelectNode(child.childrens);
|
197
|
+
}
|
198
|
+
});
|
199
|
+
}
|
200
|
+
/**
|
201
|
+
*
|
202
|
+
* lazy load logic
|
203
|
+
*
|
204
|
+
*/
|
205
|
+
fetchData(parentId) {
|
206
|
+
this.itemsPromise({ parentId })
|
207
|
+
.then((data) => {
|
208
|
+
if (Array.isArray(data)) {
|
209
|
+
if (parentId) {
|
210
|
+
this.findNode(parentId, data, this.itemsSignal());
|
211
|
+
}
|
212
|
+
else {
|
213
|
+
this.itemsSignal.set(data);
|
214
|
+
}
|
215
|
+
}
|
216
|
+
})
|
217
|
+
.finally(() => {
|
218
|
+
this.setNodeLoading(parentId, false);
|
219
|
+
});
|
220
|
+
}
|
221
|
+
findNode(parentId, _children, source) {
|
222
|
+
if (source.length) {
|
223
|
+
source.forEach((element) => {
|
224
|
+
if (element[this.valueField()] == parentId) {
|
225
|
+
element.childrens = _children;
|
226
|
+
}
|
227
|
+
else {
|
228
|
+
if (element?.childrens)
|
229
|
+
this.findNode(parentId, _children, element.childrens);
|
230
|
+
}
|
231
|
+
});
|
232
|
+
}
|
233
|
+
}
|
234
|
+
/**
|
235
|
+
*
|
236
|
+
* emit when arrow click
|
237
|
+
*
|
238
|
+
*/
|
239
|
+
handleNodeExpandClick(node) {
|
240
|
+
const parentId = node.data.id;
|
241
|
+
if (this.itemsPromise && node.data.isExpanded && !node?.data.childrens?.length) {
|
242
|
+
this.fetchData(parentId);
|
243
|
+
this.setNodeLoading(node.data.id, true);
|
244
|
+
}
|
245
|
+
this.onItemClick.emit({ component: this, data: node.data, nativeElement: this.nativeElement });
|
246
|
+
}
|
247
|
+
handleNodeClick(node) {
|
248
|
+
if (node.data[this.disableField()]) {
|
249
|
+
return;
|
250
|
+
}
|
251
|
+
if (this.showActiveNode()) {
|
252
|
+
this.handleUnActiveNode(this.itemsSignal());
|
253
|
+
node.data.active = true;
|
254
|
+
}
|
255
|
+
///to do
|
256
|
+
// switch (this.selectionBehavior()) {
|
257
|
+
// case 'activeAndSelect':
|
258
|
+
// if (this.selectionMode() === 'single') {
|
259
|
+
// this.handleUnselectNode(this.itemsSignal());
|
260
|
+
// }
|
261
|
+
// node.selected = true;
|
262
|
+
// break;
|
263
|
+
// default:
|
264
|
+
// break;
|
265
|
+
// }
|
266
|
+
this.onNodeClick.emit({ component: this, data: node.data, nativeElement: this.nativeElement });
|
267
|
+
}
|
268
|
+
handleUnActiveNode(unActiveSource) {
|
269
|
+
unActiveSource.forEach((child) => {
|
270
|
+
child.active = false;
|
271
|
+
if (child?.childrens?.length) {
|
272
|
+
this.handleUnActiveNode(child.childrens);
|
273
|
+
}
|
274
|
+
});
|
275
|
+
}
|
276
|
+
handleNodeDbClick(node) {
|
277
|
+
if (this.itemsPromise) {
|
278
|
+
const nodeParentId = node.data.id;
|
279
|
+
this.fetchData(nodeParentId);
|
280
|
+
this.setNodeLoading(node.data.id, true);
|
281
|
+
}
|
282
|
+
}
|
283
|
+
isNodeLoading(nodeId) {
|
284
|
+
return this.loadingState()[nodeId] || false;
|
285
|
+
}
|
286
|
+
setNodeLoading(nodeId, isLoading) {
|
287
|
+
this.loadingState.update((state) => ({
|
288
|
+
...state,
|
289
|
+
[nodeId]: isLoading,
|
290
|
+
}));
|
291
|
+
}
|
292
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
293
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXTreeViewComponent, selector: "ax-tree-view", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selectionBehavior: { classPropertyName: "selectionBehavior", publicName: "selectionBehavior", isSignal: true, isRequired: false, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, visibleField: { classPropertyName: "visibleField", publicName: "visibleField", isSignal: true, isRequired: false, transformFunction: null }, disableField: { classPropertyName: "disableField", publicName: "disableField", isSignal: true, isRequired: false, transformFunction: null }, hasChildField: { classPropertyName: "hasChildField", publicName: "hasChildField", isSignal: true, isRequired: false, transformFunction: null }, iconField: { classPropertyName: "iconField", publicName: "iconField", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelectionChange: "onSelectionChange", onItemClick: "onItemClick", onNodeClick: "onNodeClick" }, usesInheritance: true, ngImport: i0, template: "@for (node of resolvedItems; track $index) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n}\n\n<ng-template #Recursion let-item>\n @if (item[visibleField()] !== false) {\n <ax-tree-view-item\n [item]=\"item\"\n [(isExpanded)]=\"item.isExpanded\"\n [(isActive)]=\"item.active\"\n [isLoading]=\"isNodeLoading(item.id)\"\n [disableField]=\"disableField()\"\n [hasChildField]=\"hasChildField()\"\n (onNodeExpand)=\"handleNodeExpandClick($event)\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onNodeDbClick)=\"handleNodeDbClick($event)\"\n >\n @if (this.selectable()) {\n <ax-check-box\n [disabled]=\"item[disableField()]\"\n [indeterminate]=\"item.indeterminate\"\n [(ngModel)]=\"item.selected\"\n (onValueChanged)=\"handleNodeSelectionClick($event, item)\"\n ></ax-check-box>\n }\n <ax-prefix>\n @if (item[iconField()]) {\n <ax-icon [icon]=\"item[iconField()]\"></ax-icon>\n } @else {\n <i></i>\n }\n </ax-prefix>\n @if (item[textField()]) {\n <ax-text>{{ item[textField()] }}</ax-text>\n }\n\n <ax-suffix></ax-suffix>\n @for (child of item?.childrens; track $index) {\n <ng-container\n [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-container>\n }\n </ax-tree-view-item>\n }\n</ng-template>\n", styles: ["ax-tree-view ax-tree-view-item .ax-tree-view-container{display:flex;align-items:center;margin-bottom:.125rem;cursor:pointer}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-checkbox-end-side{display:none!important}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-arrow{font-size:.875rem!important}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items{display:flex;align-items:center;gap:.5rem}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix{display:flex;align-items:center;gap:.5rem;padding:.375rem;padding-inline-end:.5rem!important;border-radius:.25rem}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.noselect-tree-view{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-state-tree-view-active{background-color:rgba(var(--ax-color-primary-500));color:#fff}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-state-tree-view-active:hover{background-color:rgba(var(--ax-color-primary-500))}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix:hover{background-color:rgba(var(--ax-color-on-surface))}ax-tree-view ax-tree-view-item .ax-state-tree-view-rtl{padding-inline-end:.5rem}ax-tree-view ax-tree-view-item .ax-state-tree-view-ltr{padding-inline-start:.5rem}ax-tree-view ax-tree-view-item .ax-state-disabled{cursor:not-allowed!important;opacity:.5!important}ax-tree-view ax-tree-view-item .arrow-container{position:relative;display:flex;align-items:center}ax-tree-view ax-tree-view-item .vertical-line{width:.125rem;height:100%;background-color:#ccc;position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i3.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "checked", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.AXTreeViewItemComponent, selector: "ax-tree-view-item", inputs: ["item", "isExpanded", "hasChildField", "isActive", "isLoading", "disableField"], outputs: ["onNodeExpand", "onNodeClick", "isExpandedChange", "isActiveChange", "onNodeDbClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
294
|
+
}
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewComponent, decorators: [{
|
296
|
+
type: Component,
|
297
|
+
args: [{ selector: 'ax-tree-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (node of resolvedItems; track $index) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n}\n\n<ng-template #Recursion let-item>\n @if (item[visibleField()] !== false) {\n <ax-tree-view-item\n [item]=\"item\"\n [(isExpanded)]=\"item.isExpanded\"\n [(isActive)]=\"item.active\"\n [isLoading]=\"isNodeLoading(item.id)\"\n [disableField]=\"disableField()\"\n [hasChildField]=\"hasChildField()\"\n (onNodeExpand)=\"handleNodeExpandClick($event)\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onNodeDbClick)=\"handleNodeDbClick($event)\"\n >\n @if (this.selectable()) {\n <ax-check-box\n [disabled]=\"item[disableField()]\"\n [indeterminate]=\"item.indeterminate\"\n [(ngModel)]=\"item.selected\"\n (onValueChanged)=\"handleNodeSelectionClick($event, item)\"\n ></ax-check-box>\n }\n <ax-prefix>\n @if (item[iconField()]) {\n <ax-icon [icon]=\"item[iconField()]\"></ax-icon>\n } @else {\n <i></i>\n }\n </ax-prefix>\n @if (item[textField()]) {\n <ax-text>{{ item[textField()] }}</ax-text>\n }\n\n <ax-suffix></ax-suffix>\n @for (child of item?.childrens; track $index) {\n <ng-container\n [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-container>\n }\n </ax-tree-view-item>\n }\n</ng-template>\n", styles: ["ax-tree-view ax-tree-view-item .ax-tree-view-container{display:flex;align-items:center;margin-bottom:.125rem;cursor:pointer}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-checkbox-end-side{display:none!important}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-arrow{font-size:.875rem!important}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items{display:flex;align-items:center;gap:.5rem}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix{display:flex;align-items:center;gap:.5rem;padding:.375rem;padding-inline-end:.5rem!important;border-radius:.25rem}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.noselect-tree-view{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-state-tree-view-active{background-color:rgba(var(--ax-color-primary-500));color:#fff}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix.ax-state-tree-view-active:hover{background-color:rgba(var(--ax-color-primary-500))}ax-tree-view ax-tree-view-item .ax-tree-view-container .ax-tree-view-items .ax-tree-view-items-prefix:hover{background-color:rgba(var(--ax-color-on-surface))}ax-tree-view ax-tree-view-item .ax-state-tree-view-rtl{padding-inline-end:.5rem}ax-tree-view ax-tree-view-item .ax-state-tree-view-ltr{padding-inline-start:.5rem}ax-tree-view ax-tree-view-item .ax-state-disabled{cursor:not-allowed!important;opacity:.5!important}ax-tree-view ax-tree-view-item .arrow-container{position:relative;display:flex;align-items:center}ax-tree-view ax-tree-view-item .vertical-line{width:.125rem;height:100%;background-color:#ccc;position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}\n"] }]
|
298
|
+
}], ctorParameters: () => [] });
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90cmVlLXZpZXcvc3JjL2xpYi90cmVlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RyZWUtdmlldy9zcmMvbGliL3RyZWUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFVdkIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFDbEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUdGLGdCQUFXLEdBQUcsTUFBTSxDQUFxQixFQUFFLENBQUMsQ0FBQztRQUlyRCxZQUFPLEdBQUcsTUFBTSxDQUNkLEdBQUcsRUFBRTtZQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVoQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzdCLElBQUks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dCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQsIE5YQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmVlSXRlbUNsaWNrQmFzZUV2ZW50LCBBWFRyZWVWaWV3U2NoZW1hLCBTZWxlY3Rpb25CZWhhdmlvclR5cGUgfSBmcm9tICcuL3RyZWUtdmlldy5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXRyZWUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAndHJlZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3RyZWUtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0NvbXBvbmVudCBleHRlbmRzIE5YQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXRlbXNTaWduYWwgPSBzaWduYWw8QVhUcmVlVmlld1NjaGVtYVtdPihbXSk7XG5cbiAgcHJpdmF0ZSBpdGVtc1Byb21pc2U6IGFueTtcblxuICAjZWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1zSW5wdXQgPSB0aGlzLml0ZW1zKCk7XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlbXNJbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBpdGVtc0lucHV0KCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgdGhpcy5pdGVtc1Byb21pc2UgPSAob3B0aW9ucykgPT4gaXRlbXNJbnB1dChvcHRpb25zKTtcbiAgICAgICAgICB0aGlzLmZldGNoRGF0YSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXNTaWduYWwuc2V0KHJlc3VsdCk7XG4gICAgICAgICAgdGhpcy5pdGVtc1Byb21pc2UgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1zU2lnbmFsLnNldChpdGVtc0lucHV0KTtcbiAgICAgICAgdGhpcy5pdGVtc1Byb21pc2UgPSBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApO1xuXG4gIGl0ZW1zID0gaW5wdXQ8XG4gICAgfCBBWFRyZWVWaWV3U2NoZW1hW11cbiAgICB8ICgob3B0aW9ucz86IHsgcGFyZW50SWQ6IHN0cmluZyB8IG51bWJlciB9KSA9PiBBWFRyZWVWaWV3U2NoZW1hW10gfCBQcm9taXNlPEFYVHJlZVZpZXdTY2hlbWFbXT4pXG4gID4oKTtcblxuICBwcm90ZWN0ZWQgZ2V0IHJlc29sdmVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXNTaWduYWwoKTtcbiAgfVxuXG4gIHNlbGVjdGFibGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICBzZWxlY3Rpb25Nb2RlID0gaW5wdXQ8J3NpbmdsZScgfCAnbXVsdGlwbGUnPignc2luZ2xlJyk7XG5cbiAgc2VsZWN0aW9uQmVoYXZpb3IgPSBpbnB1dDxTZWxlY3Rpb25CZWhhdmlvclR5cGU+KG51bGwpO1xuXG4gIHNob3dBY3RpdmVOb2RlID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gIHZhbHVlRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdpZCcpO1xuXG4gIHRleHRGaWVsZCA9IGlucHV0PHN0cmluZz4oJ3RleHQnKTtcblxuICB2aXNpYmxlRmllbGQgPSBpbnB1dDxzdHJpbmc+KCd2aXNpYmxlJyk7XG5cbiAgZGlzYWJsZUZpZWxkID0gaW5wdXQ8c3RyaW5nPignZGlzYWJsZWQnKTtcblxuICBoYXNDaGlsZEZpZWxkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIGljb25GaWVsZCA9IGlucHV0PHN0cmluZz4oJ2ljb24nKTtcblxuICBvblNlbGVjdGlvbkNoYW5nZSA9IG91dHB1dDxBWFRyZWVJdGVtQ2xpY2tCYXNlRXZlbnQ+KCk7XG5cbiAgb25JdGVtQ2xpY2sgPSBvdXRwdXQ8QVhUcmVlSXRlbUNsaWNrQmFzZUV2ZW50PigpO1xuXG4gIG9uTm9kZUNsaWNrID0gb3V0cHV0PEFYVHJlZUl0ZW1DbGlja0Jhc2VFdmVudD4oKTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlTm9kZVNlbGVjdGlvbkNsaWNrKGV2ZW50OiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBpdGVtOiBBWFRyZWVWaWV3U2NoZW1hKSB7XG4gICAgaWYgKGl0ZW1bdGhpcy5kaXNhYmxlRmllbGQoKV0gfHwgdGhpcy5pc05vZGVMb2FkaW5nKGl0ZW0uaWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSAnc2luZ2xlJyAmJiBldmVudC5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgdGhpcy5oYW5kbGVVblNlbGVjdE5vZGUodGhpcy5pdGVtc1NpZ25hbCgpKTtcbiAgICB9XG4gICAgaXRlbS5zZWxlY3RlZCA9IGV2ZW50LnZhbHVlO1xuXG4gICAgaWYgKGV2ZW50LnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3Rpb25CZWhhdmlvcigpKSB7XG4gICAgICAgIGNhc2UgJ2F1dG9FeHBhbmQnOlxuICAgICAgICAgIGlmIChldmVudC52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNQcm9taXNlICYmIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkKCldICYmICFpdGVtPy5jaGlsZHJlbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmZldGNoRGF0YShpdGVtLmlkKTtcbiAgICAgICAgICAgICAgdGhpcy5zZXROb2RlTG9hZGluZyhpdGVtLmlkLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2dnbGVFeHBhbmQoaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdleHBhbmRBbmRTZWxlY3RBbGxPclVuU2VsZWN0JzpcbiAgICAgICAgICBpZiAodGhpcy5pdGVtc1Byb21pc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoaXMgbW9kZSBvbmx5IGF2YWlsYWJsZSBjbGllbnQgU2lkZScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmV4cGFuZEFuZFRvZ2dsZVNlbGVjdGlvbihpdGVtLCBldmVudC52YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2luZGV0ZXJtaW5hdGUnOlxuICAgICAgICAgIGlmIChpdGVtPy5jaGlsZHJlbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5hcHBseVNlbGVjdGlvblRvQ2hpbGRyZW4oaXRlbSwgZXZlbnQudmFsdWUsIGl0ZW1bdGhpcy52YWx1ZUZpZWxkKCldKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRTZWxlY3Rpb24oaXRlbSwgZXZlbnQudmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChldmVudC5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgY29uc3QgcmVzdWx0OiBBWFRyZWVWaWV3U2NoZW1hW10gPSB0aGlzLmZpbmRTZWxlY3RlZE5vZGVzKHRoaXMuaXRlbXNTaWduYWwoKSk7XG5cbiAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiBpdGVtLCBuYXRpdmVFbGVtZW50OiB0aGlzLm5hdGl2ZUVsZW1lbnQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIGF1dG8gZXhwYW5kXG4gICAqXG4gICAqL1xuICBwcml2YXRlIHRvZ2dsZUV4cGFuZChpdGVtOiBBWFRyZWVWaWV3U2NoZW1hKSB7XG4gICAgaWYgKCFpdGVtLmlzRXhwYW5kZWQpIHtcbiAgICAgIGl0ZW0uaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIGV4cGFuZCBhbmQgY2hhbmdlIHZhbHVlIHBhcmVudCBjaGFuZ2VcbiAgICpcbiAgICovXG5cbiAgcHJpdmF0ZSBleHBhbmRBbmRUb2dnbGVTZWxlY3Rpb24oaXRlbTogQVhUcmVlVmlld1NjaGVtYSwgc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRvZ2dsZUV4cGFuZChpdGVtKTtcblxuICAgIGlmIChpdGVtLmNoaWxkcmVucz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmFwcGx5U2VsZWN0aW9uVG9DaGlsZHJlbihpdGVtLCBzZWxlY3RlZCwgaXRlbVt0aGlzLnZhbHVlRmllbGQoKV0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWxlY3Rpb25Ub0NoaWxkcmVuKGl0ZW06IEFYVHJlZVZpZXdTY2hlbWEsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4sIHBhcmVudElkPzogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgaXRlbS5jaGlsZHJlbnMuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGNoaWxkLnBhcmVudElkID0gcGFyZW50SWQ7XG4gICAgICBjaGlsZC5zZWxlY3RlZCA9IGlzU2VsZWN0ZWQ7XG4gICAgICBpZiAoY2hpbGQuY2hpbGRyZW5zPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hcHBseVNlbGVjdGlvblRvQ2hpbGRyZW4oY2hpbGQsIGlzU2VsZWN0ZWQsIGNoaWxkLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBpbmRldGVybWluYXRlIGxvZ2ljXG4gICAqXG4gICAqL1xuXG4gIHByaXZhdGUgdXBkYXRlUGFyZW50U2VsZWN0aW9uKGl0ZW06IEFYVHJlZVZpZXdTY2hlbWEsIHNlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgaXRlbS5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudChpdGVtLCB0aGlzLml0ZW1zU2lnbmFsKCkpO1xuXG4gICAgd2hpbGUgKChwYXJlbnQgJiYgcGFyZW50LnNlbGVjdGVkICE9IGZhbHNlKSB8fCAocGFyZW50ICYmIGl0ZW0uc2VsZWN0ZWQpKSB7XG4gICAgICBjb25zdCBhbGxTZWxlY3RlZCA9IHBhcmVudD8uY2hpbGRyZW5zPy5ldmVyeSgoY2hpbGQpID0+IGNoaWxkLnNlbGVjdGVkKTtcblxuICAgICAgY29uc3Qgc29tZVNlbGVjdGVkID0gcGFyZW50Py5jaGlsZHJlbnM/LnNvbWUoKGNoaWxkKSA9PiBjaGlsZC5zZWxlY3RlZCB8fCBjaGlsZC5pbmRldGVybWluYXRlKTtcblxuICAgICAgaWYgKCFhbGxTZWxlY3RlZCAmJiAhc29tZVNlbGVjdGVkKSB7XG4gICAgICAgIHBhcmVudC5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBwYXJlbnQuaW5kZXRlcm1pbmF0ZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCFhbGxTZWxlY3RlZCkge1xuICAgICAgICBwYXJlbnQuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgIHBhcmVudC5zZWxlY3RlZCA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGFsbFNlbGVjdGVkKSB7XG4gICAgICAgIHBhcmVudC5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHBhcmVudC5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJlbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICBwYXJlbnQuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBwYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQocGFyZW50LCB0aGlzLml0ZW1zU2lnbmFsKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudChpdGVtOiBBWFRyZWVWaWV3U2NoZW1hLCBub2RlczogQVhUcmVlVmlld1NjaGVtYVtdKTogQVhUcmVlVmlld1NjaGVtYSB8IG51bGwge1xuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIGlmIChub2RlLmNoaWxkcmVucz8uaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW5zKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudChpdGVtLCBub2RlLmNoaWxkcmVucyk7XG4gICAgICAgIGlmIChwYXJlbnQpIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIGZpbmQgbm9kZSBzZWxlY3RlZCB0cnVlIGZvciBlbWl0IFNlbGVjdGlvbnNcbiAgICpcbiAgICovXG5cbiAgcHJpdmF0ZSBmaW5kU2VsZWN0ZWROb2Rlcyhub2RlczogQVhUcmVlVmlld1NjaGVtYVtdKTogQVhUcmVlVmlld1NjaGVtYVtdIHtcbiAgICBsZXQgc2VsZWN0ZWROb2RlczogQVhUcmVlVmlld1NjaGVtYVtdID0gW107XG5cbiAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICBzZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlLmNoaWxkcmVucykge1xuICAgICAgICBzZWxlY3RlZE5vZGVzID0gc2VsZWN0ZWROb2Rlcy5jb25jYXQodGhpcy5maW5kU2VsZWN0ZWROb2Rlcyhub2RlLmNoaWxkcmVucykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdGVkTm9kZXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogZmluZCBmb3IgZW1pdCBTZWxlY3Rpb25zIHNpbmdsZSBtb2RlXG4gICAqXG4gICAqL1xuXG4gIHByaXZhdGUgaGFuZGxlVW5TZWxlY3ROb2RlKGl0ZW1zOiBBWFRyZWVWaWV3U2NoZW1hW10pIHtcbiAgICBpdGVtcy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgY2hpbGQuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGlmIChjaGlsZD8uY2hpbGRyZW5zPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVVblNlbGVjdE5vZGUoY2hpbGQuY2hpbGRyZW5zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBsYXp5IGxvYWQgbG9naWNcbiAgICpcbiAgICovXG5cbiAgcHJpdmF0ZSBmZXRjaERhdGEocGFyZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLml0ZW1zUHJvbWlzZSh7IHBhcmVudElkIH0pXG4gICAgICAudGhlbigoZGF0YTogQVhUcmVlVmlld1NjaGVtYVtdKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgaWYgKHBhcmVudElkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbmROb2RlKHBhcmVudElkLCBkYXRhLCB0aGlzLml0ZW1zU2lnbmFsKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zU2lnbmFsLnNldChkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Tm9kZUxvYWRpbmcocGFyZW50SWQsIGZhbHNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTm9kZShwYXJlbnRJZDogbnVtYmVyIHwgc3RyaW5nLCBfY2hpbGRyZW46IEFYVHJlZVZpZXdTY2hlbWFbXSwgc291cmNlOiBBWFRyZWVWaWV3U2NoZW1hW10pIHtcbiAgICBpZiAoc291cmNlLmxlbmd0aCkge1xuICAgICAgc291cmNlLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnRbdGhpcy52YWx1ZUZpZWxkKCldID09IHBhcmVudElkKSB7XG4gICAgICAgICAgZWxlbWVudC5jaGlsZHJlbnMgPSBfY2hpbGRyZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQ/LmNoaWxkcmVucykgdGhpcy5maW5kTm9kZShwYXJlbnRJZCwgX2NoaWxkcmVuLCBlbGVtZW50LmNoaWxkcmVucyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBlbWl0IHdoZW4gYXJyb3cgY2xpY2tcbiAgICpcbiAgICovXG5cbiAgcHJvdGVjdGVkIGhhbmRsZU5vZGVFeHBhbmRDbGljayhub2RlOiBBWFRyZWVJdGVtQ2xpY2tCYXNlRXZlbnQpIHtcbiAgICBjb25zdCBwYXJlbnRJZCA9IG5vZGUuZGF0YS5pZDtcbiAgICBpZiAodGhpcy5pdGVtc1Byb21pc2UgJiYgbm9kZS5kYXRhLmlzRXhwYW5kZWQgJiYgIW5vZGU/LmRhdGEuY2hpbGRyZW5zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmV0Y2hEYXRhKHBhcmVudElkKTtcbiAgICAgIHRoaXMuc2V0Tm9kZUxvYWRpbmcobm9kZS5kYXRhLmlkLCB0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiBub2RlLmRhdGEsIG5hdGl2ZUVsZW1lbnQ6IHRoaXMubmF0aXZlRWxlbWVudCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVOb2RlQ2xpY2sobm9kZTogQVhUcmVlSXRlbUNsaWNrQmFzZUV2ZW50KSB7XG4gICAgaWYgKG5vZGUuZGF0YVt0aGlzLmRpc2FibGVGaWVsZCgpXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93QWN0aXZlTm9kZSgpKSB7XG4gICAgICB0aGlzLmhhbmRsZVVuQWN0aXZlTm9kZSh0aGlzLml0ZW1zU2lnbmFsKCkpO1xuICAgICAgbm9kZS5kYXRhLmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIC8vL3RvIGRvXG4gICAgLy8gc3dpdGNoICh0aGlzLnNlbGVjdGlvbkJlaGF2aW9yKCkpIHtcbiAgICAvLyAgIGNhc2UgJ2FjdGl2ZUFuZFNlbGVjdCc6XG4gICAgLy8gICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAvLyAgICAgICB0aGlzLmhhbmRsZVVuc2VsZWN0Tm9kZSh0aGlzLml0ZW1zU2lnbmFsKCkpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgLy8gICAgIGJyZWFrO1xuXG4gICAgLy8gICBkZWZhdWx0OlxuICAgIC8vICAgICBicmVhaztcbiAgICAvLyB9XG4gICAgdGhpcy5vbk5vZGVDbGljay5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiBub2RlLmRhdGEsIG5hdGl2ZUVsZW1lbnQ6IHRoaXMubmF0aXZlRWxlbWVudCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVW5BY3RpdmVOb2RlKHVuQWN0aXZlU291cmNlOiBBWFRyZWVWaWV3U2NoZW1hW10pIHtcbiAgICB1bkFjdGl2ZVNvdXJjZS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgY2hpbGQuYWN0aXZlID0gZmFsc2U7XG4gICAgICBpZiAoY2hpbGQ/LmNoaWxkcmVucz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5BY3RpdmVOb2RlKGNoaWxkLmNoaWxkcmVucyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlTm9kZURiQ2xpY2sobm9kZTogQVhUcmVlSXRlbUNsaWNrQmFzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXRlbXNQcm9taXNlKSB7XG4gICAgICBjb25zdCBub2RlUGFyZW50SWQgPSBub2RlLmRhdGEuaWQ7XG4gICAgICB0aGlzLmZldGNoRGF0YShub2RlUGFyZW50SWQpO1xuICAgICAgdGhpcy5zZXROb2RlTG9hZGluZyhub2RlLmRhdGEuaWQsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZGluZ1N0YXRlID0gc2lnbmFsPFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIGJvb2xlYW4+Pih7fSk7XG5cbiAgaXNOb2RlTG9hZGluZyhub2RlSWQ6IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdGF0ZSgpW25vZGVJZF0gfHwgZmFsc2U7XG4gIH1cblxuICBzZXROb2RlTG9hZGluZyhub2RlSWQ6IHN0cmluZyB8IG51bWJlciwgaXNMb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgW25vZGVJZF06IGlzTG9hZGluZyxcbiAgICB9KSk7XG4gIH1cbn1cbiIsIkBmb3IgKG5vZGUgb2YgcmVzb2x2ZWRJdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiUmVjdXJzaW9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cbn1cblxuPG5nLXRlbXBsYXRlICNSZWN1cnNpb24gbGV0LWl0ZW0+XG4gIEBpZiAoaXRlbVt2aXNpYmxlRmllbGQoKV0gIT09IGZhbHNlKSB7XG4gICAgPGF4LXRyZWUtdmlldy1pdGVtXG4gICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgIFsoaXNFeHBhbmRlZCldPVwiaXRlbS5pc0V4cGFuZGVkXCJcbiAgICAgIFsoaXNBY3RpdmUpXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgIFtpc0xvYWRpbmddPVwiaXNOb2RlTG9hZGluZyhpdGVtLmlkKVwiXG4gICAgICBbZGlzYWJsZUZpZWxkXT1cImRpc2FibGVGaWVsZCgpXCJcbiAgICAgIFtoYXNDaGlsZEZpZWxkXT1cImhhc0NoaWxkRmllbGQoKVwiXG4gICAgICAob25Ob2RlRXhwYW5kKT1cImhhbmRsZU5vZGVFeHBhbmRDbGljaygkZXZlbnQpXCJcbiAgICAgIChvbk5vZGVDbGljayk9XCJoYW5kbGVOb2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAob25Ob2RlRGJDbGljayk9XCJoYW5kbGVOb2RlRGJDbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgICBAaWYgKHRoaXMuc2VsZWN0YWJsZSgpKSB7XG4gICAgICAgIDxheC1jaGVjay1ib3hcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbVtkaXNhYmxlRmllbGQoKV1cIlxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cIml0ZW0uaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlTm9kZVNlbGVjdGlvbkNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICA+PC9heC1jaGVjay1ib3g+XG4gICAgICB9XG4gICAgICA8YXgtcHJlZml4PlxuICAgICAgICBAaWYgKGl0ZW1baWNvbkZpZWxkKCldKSB7XG4gICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiaXRlbVtpY29uRmllbGQoKV1cIj48L2F4LWljb24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxpPjwvaT5cbiAgICAgICAgfVxuICAgICAgPC9heC1wcmVmaXg+XG4gICAgICBAaWYgKGl0ZW1bdGV4dEZpZWxkKCldKSB7XG4gICAgICAgIDxheC10ZXh0Pnt7IGl0ZW1bdGV4dEZpZWxkKCldIH19PC9heC10ZXh0PlxuICAgICAgfVxuXG4gICAgICA8YXgtc3VmZml4PjwvYXgtc3VmZml4PlxuICAgICAgQGZvciAoY2hpbGQgb2YgaXRlbT8uY2hpbGRyZW5zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlJlY3Vyc2lvblwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjaGlsZCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvYXgtdHJlZS12aWV3LWl0ZW0+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import { AXCheckBoxModule } from '@acorex/components/check-box';
|
2
|
+
import { AXCommonModule } from '@acorex/components/common';
|
3
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
4
|
+
import { AXFormModule } from '@acorex/components/form';
|
5
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
6
|
+
import { AXTooltipModule } from '@acorex/components/tooltip';
|
7
|
+
import { CommonModule } from '@angular/common';
|
8
|
+
import { NgModule } from '@angular/core';
|
9
|
+
import { FormsModule } from '@angular/forms';
|
10
|
+
import { AXTreeViewItemComponent } from './tree-view-item.component';
|
11
|
+
import { AXTreeViewComponent } from './tree-view.component';
|
12
|
+
import * as i0 from "@angular/core";
|
13
|
+
export class AXTreeViewModule {
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
15
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewModule, declarations: [AXTreeViewComponent, AXTreeViewItemComponent], imports: [CommonModule,
|
16
|
+
AXCommonModule,
|
17
|
+
AXDecoratorModule,
|
18
|
+
AXCheckBoxModule,
|
19
|
+
AXFormModule,
|
20
|
+
FormsModule,
|
21
|
+
AXTooltipModule,
|
22
|
+
AXLoadingModule], exports: [AXTreeViewComponent, AXTreeViewItemComponent] }); }
|
23
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewModule, imports: [CommonModule,
|
24
|
+
AXCommonModule,
|
25
|
+
AXDecoratorModule,
|
26
|
+
AXCheckBoxModule,
|
27
|
+
AXFormModule,
|
28
|
+
FormsModule,
|
29
|
+
AXTooltipModule,
|
30
|
+
AXLoadingModule] }); }
|
31
|
+
}
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXTreeViewModule, decorators: [{
|
33
|
+
type: NgModule,
|
34
|
+
args: [{
|
35
|
+
imports: [
|
36
|
+
CommonModule,
|
37
|
+
AXCommonModule,
|
38
|
+
AXDecoratorModule,
|
39
|
+
AXCheckBoxModule,
|
40
|
+
AXFormModule,
|
41
|
+
FormsModule,
|
42
|
+
AXTooltipModule,
|
43
|
+
AXLoadingModule,
|
44
|
+
],
|
45
|
+
exports: [AXTreeViewComponent, AXTreeViewItemComponent],
|
46
|
+
declarations: [AXTreeViewComponent, AXTreeViewItemComponent],
|
47
|
+
providers: [],
|
48
|
+
}]
|
49
|
+
}] });
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdHJlZS12aWV3L3NyYy9saWIvdHJlZS12aWV3LmNvbXBvbmVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFnQjVELE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQUhaLG1CQUFtQixFQUFFLHVCQUF1QixhQVZ6RCxZQUFZO1lBQ1osY0FBYztZQUNkLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBQ2YsZUFBZSxhQUVQLG1CQUFtQixFQUFFLHVCQUF1QjsrR0FJM0MsZ0JBQWdCLFlBYnpCLFlBQVk7WUFDWixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osV0FBVztZQUNYLGVBQWU7WUFDZixlQUFlOzsyRkFNTixnQkFBZ0I7a0JBZjVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUM7b0JBQ3ZELFlBQVksRUFBRSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDO29CQUM1RCxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2hlY2tCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY2hlY2stYm94JztcbmltcG9ydCB7IEFYQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWFRyZWVWaWV3SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS12aWV3LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEFYVHJlZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtdmlldy5jb21wb25lbnQnO1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWENvbW1vbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWENoZWNrQm94TW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWFRvb2x0aXBNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbQVhUcmVlVmlld0NvbXBvbmVudCwgQVhUcmVlVmlld0l0ZW1Db21wb25lbnRdLFxuICBkZWNsYXJhdGlvbnM6IFtBWFRyZWVWaWV3Q29tcG9uZW50LCBBWFRyZWVWaWV3SXRlbUNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdNb2R1bGUge31cbiJdfQ==
|