@datarailsshared/datarailsshared 1.5.389 → 1.5.397
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.
- package/datarailsshared-datarailsshared-1.5.397.tgz +0 -0
- package/esm2022/lib/date-tags/any-tag.component.mjs +18 -18
- package/esm2022/lib/date-tags/date-tag.component.mjs +99 -23
- package/esm2022/lib/date-tags/date-tag.module.mjs +27 -26
- package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +40 -26
- package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +43 -25
- package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +40 -26
- package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +26 -12
- package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +40 -26
- package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +40 -26
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +16 -16
- package/esm2022/lib/directives/click-outside/click-outside.module.mjs +13 -12
- package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +18 -15
- package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +71 -54
- package/esm2022/lib/dr-accordion/accordion-item.component.mjs +37 -32
- package/esm2022/lib/dr-accordion/accordion.component.mjs +15 -10
- package/esm2022/lib/dr-accordion/accordion.module.mjs +20 -19
- package/esm2022/lib/dr-alert/dr-alert.component.mjs +44 -16
- package/esm2022/lib/dr-alert/dr-alert.module.mjs +14 -13
- package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +98 -23
- package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +13 -12
- package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +9 -9
- package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +43 -17
- package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +14 -13
- package/esm2022/lib/dr-chat/chat.component.mjs +115 -38
- package/esm2022/lib/dr-chat/chat.module.mjs +27 -26
- package/esm2022/lib/dr-chat/dr-chat-alert/dr-chat-alert.component.mjs +21 -11
- package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +128 -37
- package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +126 -41
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs +11 -11
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +6 -6
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +40 -11
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +22 -9
- package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +86 -20
- package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +9 -7
- package/esm2022/lib/dr-chip/dr-chip.component.mjs +49 -15
- package/esm2022/lib/dr-code-editor/components/code-editor-hint-wrapper.component.mjs +14 -10
- package/esm2022/lib/dr-code-editor/components/dr-codemirror.component.mjs +62 -57
- package/esm2022/lib/dr-code-editor/dr-code-editor.component.mjs +48 -20
- package/esm2022/lib/dr-code-editor/dr-code-editor.module.mjs +14 -13
- package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +69 -41
- package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +14 -13
- package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +265 -13
- package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +154 -16
- package/esm2022/lib/dr-dialog/dialog.module.mjs +14 -13
- package/esm2022/lib/dr-dialog/services/dialog.service.mjs +9 -9
- package/esm2022/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.mjs +29 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +9 -9
- package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +175 -56
- package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +98 -87
- package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +32 -15
- package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +55 -18
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +92 -25
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +13 -12
- package/esm2022/lib/dr-error/dr-error.component.mjs +48 -24
- package/esm2022/lib/dr-error/dr-error.module.mjs +14 -13
- package/esm2022/lib/dr-inputs/button/button.component.mjs +88 -45
- package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +53 -28
- package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +32 -32
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +67 -42
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-range/dr-date-picker-range.component.mjs +72 -32
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +111 -42
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +99 -10
- package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +9 -9
- package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +6 -6
- package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +168 -84
- package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +64 -63
- package/esm2022/lib/dr-inputs/dr-link/dr-link.component.mjs +26 -16
- package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +13 -13
- package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +243 -104
- package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +77 -20
- package/esm2022/lib/dr-inputs/dr-slider/dr-slider.component.mjs +23 -17
- package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +64 -22
- package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +53 -21
- package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +40 -28
- package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +51 -41
- package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +14 -10
- package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +16 -14
- package/esm2022/lib/dr-layout/dr-layout.component.mjs +16 -7
- package/esm2022/lib/dr-layout/dr-layout.module.mjs +13 -12
- package/esm2022/lib/dr-popover/dr-popover-ref.mjs +4 -1
- package/esm2022/lib/dr-popover/dr-popover.component.mjs +71 -40
- package/esm2022/lib/dr-popover/dr-popover.directive.mjs +51 -49
- package/esm2022/lib/dr-popover/dr-popover.module.mjs +13 -12
- package/esm2022/lib/dr-popover/dr-popover.service.mjs +25 -13
- package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +41 -17
- package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +42 -27
- package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +14 -13
- package/esm2022/lib/dr-scenario/services/scenario.service.mjs +6 -6
- package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +17 -7
- package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +25 -20
- package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +13 -12
- package/esm2022/lib/dr-tabs/dr-tab.component.mjs +33 -25
- package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +118 -30
- package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +14 -13
- package/esm2022/lib/dr-tags/dr-tag.component.mjs +75 -33
- package/esm2022/lib/dr-tags/dr-tag.module.mjs +14 -13
- package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.component.mjs +72 -19
- package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.module.mjs +14 -13
- package/esm2022/lib/dr-tags-constructor/tags-constructor.service.mjs +6 -6
- package/esm2022/lib/dr-toastr/default-toastr/default-toastr.component.mjs +48 -10
- package/esm2022/lib/dr-toastr/dr-toastr.module.mjs +19 -18
- package/esm2022/lib/dr-toastr/dr-toastr.service.mjs +9 -9
- package/esm2022/lib/dr-tooltip/components/tooltip-default/tooltip-default.component.mjs +23 -14
- package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +76 -9
- package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +63 -25
- package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +41 -39
- package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +14 -13
- package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +211 -19
- package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +52 -15
- package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +14 -13
- package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +21 -21
- package/esm2022/lib/dr-treeview/models/treeview-config.mjs +6 -6
- package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +11 -11
- package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +9 -9
- package/esm2022/lib/image-cropper/dr-image-cropper-canvas.service.mjs +6 -6
- package/esm2022/lib/image-cropper/dr-image-cropper.component.mjs +67 -28
- package/esm2022/lib/list-tags/list-tag.component.mjs +57 -17
- package/esm2022/lib/list-tags/list-tag.module.mjs +14 -13
- package/esm2022/lib/models/dropdown.mjs +1 -1
- package/esm2022/lib/models/popover.mjs +1 -1
- package/esm2022/lib/models/serverTags.mjs +1 -1
- package/esm2022/lib/stepper/stepper.component.mjs +225 -28
- package/esm2022/lib/stepper/stepper.module.mjs +13 -12
- package/esm2022/lib/utils/decorators.mjs +12 -0
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/datarailsshared-datarailsshared.mjs +5787 -2724
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.d.ts +8 -0
- package/lib/dr-dropdown/dr-dropdown.component.d.ts +24 -22
- package/lib/dr-dropdown/dr-dropdown.directive.d.ts +16 -15
- package/lib/dr-dropdown/dr-dropdown.module.d.ts +5 -4
- package/lib/dr-dropdown/dr-dropdown.service.d.ts +23 -8
- package/lib/dr-popover/dr-popover-ref.d.ts +1 -0
- package/lib/dr-popover/dr-popover.service.d.ts +2 -1
- package/lib/models/dropdown.d.ts +13 -21
- package/lib/models/popover.d.ts +6 -3
- package/lib/models/serverTags.d.ts +1 -0
- package/lib/utils/decorators.d.ts +1 -0
- package/package.json +5 -2
- package/public-api.d.ts +2 -2
- package/datarailsshared-datarailsshared-1.5.389.tgz +0 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown-position.directive.mjs +0 -113
- package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +0 -15
|
@@ -12,6 +12,178 @@ import * as i3 from "../../helpers/treeview-event-parser";
|
|
|
12
12
|
import * as i4 from "@angular/forms";
|
|
13
13
|
import * as i5 from "@angular/common";
|
|
14
14
|
import * as i6 from "../treeview-item/treeview-item.component";
|
|
15
|
+
function TreeviewComponent_ng_template_0_i_1__svg_svg_1_Template(rf, ctx) { if (rf & 1) {
|
|
16
|
+
i0.ɵɵnamespaceSVG();
|
|
17
|
+
i0.ɵɵelementStart(0, "svg", 15);
|
|
18
|
+
i0.ɵɵelement(1, "path", 16);
|
|
19
|
+
i0.ɵɵelementEnd();
|
|
20
|
+
} }
|
|
21
|
+
function TreeviewComponent_ng_template_0_i_1__svg_svg_2_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
i0.ɵɵnamespaceSVG();
|
|
23
|
+
i0.ɵɵelementStart(0, "svg", 17);
|
|
24
|
+
i0.ɵɵelement(1, "path", 18);
|
|
25
|
+
i0.ɵɵelementEnd();
|
|
26
|
+
} }
|
|
27
|
+
function TreeviewComponent_ng_template_0_i_1_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
29
|
+
i0.ɵɵelementStart(0, "i", 12);
|
|
30
|
+
i0.ɵɵlistener("click", function TreeviewComponent_ng_template_0_i_1_Template_i_click_0_listener() { i0.ɵɵrestoreView(_r15); const onCollapseExpand_r8 = i0.ɵɵnextContext().onCollapseExpand; return i0.ɵɵresetView(onCollapseExpand_r8()); });
|
|
31
|
+
i0.ɵɵtemplate(1, TreeviewComponent_ng_template_0_i_1__svg_svg_1_Template, 2, 0, "svg", 13);
|
|
32
|
+
i0.ɵɵtemplate(2, TreeviewComponent_ng_template_0_i_1__svg_svg_2_Template, 2, 0, "svg", 14);
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const item_r7 = i0.ɵɵnextContext().item;
|
|
36
|
+
i0.ɵɵproperty("ngSwitch", item_r7.collapsed);
|
|
37
|
+
i0.ɵɵadvance(1);
|
|
38
|
+
i0.ɵɵproperty("ngSwitchCase", true);
|
|
39
|
+
i0.ɵɵadvance(1);
|
|
40
|
+
i0.ɵɵproperty("ngSwitchCase", false);
|
|
41
|
+
} }
|
|
42
|
+
function TreeviewComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
45
|
+
i0.ɵɵtemplate(1, TreeviewComponent_ng_template_0_i_1_Template, 3, 3, "i", 8);
|
|
46
|
+
i0.ɵɵelementStart(2, "div", 9)(3, "input", 10);
|
|
47
|
+
i0.ɵɵlistener("ngModelChange", function TreeviewComponent_ng_template_0_Template_input_ngModelChange_3_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r18); const item_r7 = restoredCtx.item; return i0.ɵɵresetView(item_r7.checked = $event); })("ngModelChange", function TreeviewComponent_ng_template_0_Template_input_ngModelChange_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r18); const onCheckedChange_r9 = restoredCtx.onCheckedChange; return i0.ɵɵresetView(onCheckedChange_r9()); });
|
|
48
|
+
i0.ɵɵelementEnd();
|
|
49
|
+
i0.ɵɵelementStart(4, "label", 11);
|
|
50
|
+
i0.ɵɵlistener("click", function TreeviewComponent_ng_template_0_Template_label_click_4_listener() { const restoredCtx = i0.ɵɵrestoreView(_r18); const item_r7 = restoredCtx.item; const onCheckedChange_r9 = restoredCtx.onCheckedChange; item_r7.checked = !item_r7.checked; return i0.ɵɵresetView(onCheckedChange_r9()); });
|
|
51
|
+
i0.ɵɵtext(5);
|
|
52
|
+
i0.ɵɵelementEnd()()();
|
|
53
|
+
} if (rf & 2) {
|
|
54
|
+
const item_r7 = ctx.item;
|
|
55
|
+
i0.ɵɵadvance(1);
|
|
56
|
+
i0.ɵɵproperty("ngIf", item_r7.children);
|
|
57
|
+
i0.ɵɵadvance(2);
|
|
58
|
+
i0.ɵɵproperty("ngModel", item_r7.checked)("disabled", item_r7.disabled)("indeterminate", item_r7.indeterminate);
|
|
59
|
+
i0.ɵɵadvance(2);
|
|
60
|
+
i0.ɵɵtextInterpolate1(" ", item_r7.text, " ");
|
|
61
|
+
} }
|
|
62
|
+
function TreeviewComponent_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
63
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
64
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "div", 22)(2, "input", 23);
|
|
65
|
+
i0.ɵɵlistener("ngModelChange", function TreeviewComponent_ng_template_2_div_0_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.filterText = $event); })("ngModelChange", function TreeviewComponent_ng_template_2_div_0_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r29); const onFilterTextChange_r25 = i0.ɵɵnextContext().onFilterTextChange; return i0.ɵɵresetView(onFilterTextChange_r25($event)); });
|
|
66
|
+
i0.ɵɵelementEnd()()();
|
|
67
|
+
} if (rf & 2) {
|
|
68
|
+
const ctx_r26 = i0.ɵɵnextContext(2);
|
|
69
|
+
i0.ɵɵadvance(2);
|
|
70
|
+
i0.ɵɵproperty("placeholder", ctx_r26.i18n.getFilterPlaceholder())("ngModel", ctx_r26.filterText);
|
|
71
|
+
} }
|
|
72
|
+
function TreeviewComponent_ng_template_2_div_1_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
74
|
+
i0.ɵɵelementStart(0, "div", 29)(1, "input", 30);
|
|
75
|
+
i0.ɵɵlistener("ngModelChange", function TreeviewComponent_ng_template_2_div_1_div_1_div_2_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r38); const item_r22 = i0.ɵɵnextContext(3).item; return i0.ɵɵresetView(item_r22.checked = $event); })("ngModelChange", function TreeviewComponent_ng_template_2_div_1_div_1_div_2_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r38); const onCheckedChange_r24 = i0.ɵɵnextContext(3).onCheckedChange; return i0.ɵɵresetView(onCheckedChange_r24()); });
|
|
76
|
+
i0.ɵɵelementEnd();
|
|
77
|
+
i0.ɵɵelementStart(2, "label", 11);
|
|
78
|
+
i0.ɵɵlistener("click", function TreeviewComponent_ng_template_2_div_1_div_1_div_2_Template_label_click_2_listener() { i0.ɵɵrestoreView(_r38); const ctx_r42 = i0.ɵɵnextContext(3); const item_r22 = ctx_r42.item; const onCheckedChange_r24 = ctx_r42.onCheckedChange; item_r22.checked = !item_r22.checked; return i0.ɵɵresetView(onCheckedChange_r24()); });
|
|
79
|
+
i0.ɵɵtext(3);
|
|
80
|
+
i0.ɵɵelementEnd()();
|
|
81
|
+
} if (rf & 2) {
|
|
82
|
+
const item_r22 = i0.ɵɵnextContext(3).item;
|
|
83
|
+
const ctx_r34 = i0.ɵɵnextContext();
|
|
84
|
+
i0.ɵɵadvance(1);
|
|
85
|
+
i0.ɵɵproperty("ngModel", item_r22.checked)("indeterminate", item_r22.indeterminate);
|
|
86
|
+
i0.ɵɵadvance(2);
|
|
87
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r34.i18n.getAllCheckboxText(), " ");
|
|
88
|
+
} }
|
|
89
|
+
function TreeviewComponent_ng_template_2_div_1_div_1_label_3__svg_svg_2_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
+
i0.ɵɵnamespaceSVG();
|
|
91
|
+
i0.ɵɵelementStart(0, "svg", 35);
|
|
92
|
+
i0.ɵɵelement(1, "path", 36)(2, "path", 37)(3, "path", 38);
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
} }
|
|
95
|
+
function TreeviewComponent_ng_template_2_div_1_div_1_label_3__svg_svg_3_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
i0.ɵɵnamespaceSVG();
|
|
97
|
+
i0.ɵɵelementStart(0, "svg", 39);
|
|
98
|
+
i0.ɵɵelement(1, "path", 40)(2, "path", 41)(3, "path", 42);
|
|
99
|
+
i0.ɵɵelementEnd();
|
|
100
|
+
} }
|
|
101
|
+
function TreeviewComponent_ng_template_2_div_1_div_1_label_3_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
const _r48 = i0.ɵɵgetCurrentView();
|
|
103
|
+
i0.ɵɵelementStart(0, "label", 31);
|
|
104
|
+
i0.ɵɵlistener("click", function TreeviewComponent_ng_template_2_div_1_div_1_label_3_Template_label_click_0_listener() { i0.ɵɵrestoreView(_r48); const onCollapseExpand_r23 = i0.ɵɵnextContext(3).onCollapseExpand; return i0.ɵɵresetView(onCollapseExpand_r23()); });
|
|
105
|
+
i0.ɵɵelementStart(1, "i", 32);
|
|
106
|
+
i0.ɵɵtemplate(2, TreeviewComponent_ng_template_2_div_1_div_1_label_3__svg_svg_2_Template, 4, 0, "svg", 33);
|
|
107
|
+
i0.ɵɵtemplate(3, TreeviewComponent_ng_template_2_div_1_div_1_label_3__svg_svg_3_Template, 4, 0, "svg", 34);
|
|
108
|
+
i0.ɵɵelementEnd()();
|
|
109
|
+
} if (rf & 2) {
|
|
110
|
+
const item_r22 = i0.ɵɵnextContext(3).item;
|
|
111
|
+
const ctx_r35 = i0.ɵɵnextContext();
|
|
112
|
+
i0.ɵɵadvance(1);
|
|
113
|
+
i0.ɵɵproperty("title", ctx_r35.i18n.getTooltipCollapseExpandText(item_r22.collapsed))("ngSwitch", item_r22.collapsed);
|
|
114
|
+
i0.ɵɵadvance(1);
|
|
115
|
+
i0.ɵɵproperty("ngSwitchCase", true);
|
|
116
|
+
i0.ɵɵadvance(1);
|
|
117
|
+
i0.ɵɵproperty("ngSwitchCase", false);
|
|
118
|
+
} }
|
|
119
|
+
function TreeviewComponent_ng_template_2_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
120
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "div", 22);
|
|
121
|
+
i0.ɵɵtemplate(2, TreeviewComponent_ng_template_2_div_1_div_1_div_2_Template, 4, 3, "div", 27);
|
|
122
|
+
i0.ɵɵtemplate(3, TreeviewComponent_ng_template_2_div_1_div_1_label_3_Template, 4, 4, "label", 28);
|
|
123
|
+
i0.ɵɵelementEnd()();
|
|
124
|
+
} if (rf & 2) {
|
|
125
|
+
const config_r21 = i0.ɵɵnextContext(2).config;
|
|
126
|
+
i0.ɵɵadvance(2);
|
|
127
|
+
i0.ɵɵproperty("ngIf", config_r21.hasAllCheckBox);
|
|
128
|
+
i0.ɵɵadvance(1);
|
|
129
|
+
i0.ɵɵproperty("ngIf", config_r21.hasCollapseExpand);
|
|
130
|
+
} }
|
|
131
|
+
function TreeviewComponent_ng_template_2_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
i0.ɵɵelement(0, "div", 43);
|
|
133
|
+
} }
|
|
134
|
+
function TreeviewComponent_ng_template_2_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
135
|
+
i0.ɵɵelementStart(0, "div");
|
|
136
|
+
i0.ɵɵtemplate(1, TreeviewComponent_ng_template_2_div_1_div_1_Template, 4, 2, "div", 24);
|
|
137
|
+
i0.ɵɵtemplate(2, TreeviewComponent_ng_template_2_div_1_div_2_Template, 1, 0, "div", 25);
|
|
138
|
+
i0.ɵɵelementEnd();
|
|
139
|
+
} if (rf & 2) {
|
|
140
|
+
const config_r21 = i0.ɵɵnextContext().config;
|
|
141
|
+
i0.ɵɵadvance(1);
|
|
142
|
+
i0.ɵɵproperty("ngIf", config_r21.hasAllCheckBox || config_r21.hasCollapseExpand);
|
|
143
|
+
i0.ɵɵadvance(1);
|
|
144
|
+
i0.ɵɵproperty("ngIf", config_r21.hasDivider);
|
|
145
|
+
} }
|
|
146
|
+
function TreeviewComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
+
i0.ɵɵtemplate(0, TreeviewComponent_ng_template_2_div_0_Template, 3, 2, "div", 19);
|
|
148
|
+
i0.ɵɵtemplate(1, TreeviewComponent_ng_template_2_div_1_Template, 3, 2, "div", 20);
|
|
149
|
+
} if (rf & 2) {
|
|
150
|
+
const config_r21 = ctx.config;
|
|
151
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
152
|
+
i0.ɵɵproperty("ngIf", config_r21.hasFilter);
|
|
153
|
+
i0.ɵɵadvance(1);
|
|
154
|
+
i0.ɵɵproperty("ngIf", ctx_r3.hasFilterItems);
|
|
155
|
+
} }
|
|
156
|
+
function TreeviewComponent_ng_template_5_Template(rf, ctx) { }
|
|
157
|
+
function TreeviewComponent_div_7_ngx_treeview_item_1_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
+
const _r55 = i0.ɵɵgetCurrentView();
|
|
159
|
+
i0.ɵɵelementStart(0, "ngx-treeview-item", 46);
|
|
160
|
+
i0.ɵɵlistener("checkedChange", function TreeviewComponent_div_7_ngx_treeview_item_1_Template_ngx_treeview_item_checkedChange_0_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r55); const item_r53 = restoredCtx.$implicit; const ctx_r54 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r54.onItemCheckedChange(item_r53, $event)); });
|
|
161
|
+
i0.ɵɵelementEnd();
|
|
162
|
+
} if (rf & 2) {
|
|
163
|
+
const item_r53 = ctx.$implicit;
|
|
164
|
+
const ctx_r52 = i0.ɵɵnextContext(2);
|
|
165
|
+
const _r0 = i0.ɵɵreference(1);
|
|
166
|
+
i0.ɵɵproperty("config", ctx_r52.config)("item", item_r53)("template", ctx_r52.itemTemplate || _r0);
|
|
167
|
+
} }
|
|
168
|
+
function TreeviewComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
i0.ɵɵelementStart(0, "div", 44);
|
|
170
|
+
i0.ɵɵtemplate(1, TreeviewComponent_div_7_ngx_treeview_item_1_Template, 1, 3, "ngx-treeview-item", 45);
|
|
171
|
+
i0.ɵɵelementEnd();
|
|
172
|
+
} if (rf & 2) {
|
|
173
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
174
|
+
i0.ɵɵstyleProp("max-height", ctx_r5.maxHeight, "px");
|
|
175
|
+
i0.ɵɵadvance(1);
|
|
176
|
+
i0.ɵɵproperty("ngForOf", ctx_r5.filterItems);
|
|
177
|
+
} }
|
|
178
|
+
function TreeviewComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
180
|
+
i0.ɵɵtext(1);
|
|
181
|
+
i0.ɵɵelementEnd();
|
|
182
|
+
} if (rf & 2) {
|
|
183
|
+
const ctx_r6 = i0.ɵɵnextContext();
|
|
184
|
+
i0.ɵɵadvance(1);
|
|
185
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r6.i18n.getFilterNoItemsFoundText(), " ");
|
|
186
|
+
} }
|
|
15
187
|
class FilterTreeviewItem extends TreeviewItem {
|
|
16
188
|
constructor(item) {
|
|
17
189
|
super({
|
|
@@ -193,23 +365,43 @@ export class TreeviewComponent {
|
|
|
193
365
|
}
|
|
194
366
|
this.allItem.collapsed = !hasItemExpanded;
|
|
195
367
|
}
|
|
196
|
-
/** @nocollapse */ static { this.ɵfac =
|
|
197
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵ
|
|
368
|
+
/** @nocollapse */ static { this.ɵfac = function TreeviewComponent_Factory(t) { return new (t || TreeviewComponent)(i0.ɵɵdirectiveInject(i1.TreeviewI18n), i0.ɵɵdirectiveInject(i2.TreeviewConfig), i0.ɵɵdirectiveInject(i3.TreeviewEventParser)); }; }
|
|
369
|
+
/** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TreeviewComponent, selectors: [["ngx-treeview"]], inputs: { headerTemplate: "headerTemplate", itemTemplate: "itemTemplate", items: "items", config: "config" }, outputs: { selectedChange: "selectedChange", filterChange: "filterChange" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 5, consts: [["defaultItemTemplate", ""], ["defaultHeaderTemplate", ""], [1, "treeview-header"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "ngSwitch"], ["class", "treeview-container", 3, "max-height", 4, "ngSwitchCase"], ["class", "treeview-text", 4, "ngSwitchCase"], [1, "form-inline", "row-item"], ["aria-hidden", "true", 3, "ngSwitch", "click", 4, "ngIf"], [1, "form-check"], ["type", "checkbox", 1, "form-check-input", 3, "ngModel", "disabled", "indeterminate", "ngModelChange"], [1, "form-check-label", 3, "click"], ["aria-hidden", "true", 3, "ngSwitch", "click"], ["width", "0.8rem", "height", "0.8rem", "viewBox", "0 0 16 16", "class", "bi bi-caret-right-fill", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 4, "ngSwitchCase"], ["width", "0.8rem", "height", "0.8rem", "viewBox", "0 0 16 16", "class", "bi bi-caret-down-fill", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 4, "ngSwitchCase"], ["width", "0.8rem", "height", "0.8rem", "viewBox", "0 0 16 16", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 1, "bi", "bi-caret-right-fill"], ["d", "M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z"], ["width", "0.8rem", "height", "0.8rem", "viewBox", "0 0 16 16", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 1, "bi", "bi-caret-down-fill"], ["d", "M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z"], ["class", "row row-filter", 4, "ngIf"], [4, "ngIf"], [1, "row", "row-filter"], [1, "col-12"], ["type", "text", 1, "form-control", 3, "placeholder", "ngModel", "ngModelChange"], ["class", "row row-all", 4, "ngIf"], ["class", "dropdown-divider", 4, "ngIf"], [1, "row", "row-all"], ["class", "form-check form-check-inline", 4, "ngIf"], ["class", "float-right form-check-label", 3, "click", 4, "ngIf"], [1, "form-check", "form-check-inline"], ["type", "checkbox", 1, "form-check-input", 3, "ngModel", "indeterminate", "ngModelChange"], [1, "float-right", "form-check-label", 3, "click"], ["aria-hidden", "true", 3, "title", "ngSwitch"], ["width", "1em", "height", "1em", "viewBox", "0 0 16 16", "class", "bi bi-arrows-angle-expand", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 4, "ngSwitchCase"], ["width", "1em", "height", "1em", "viewBox", "0 0 16 16", "class", "bi bi-arrows-angle-contract", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 4, "ngSwitchCase"], ["width", "1em", "height", "1em", "viewBox", "0 0 16 16", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 1, "bi", "bi-arrows-angle-expand"], ["fill-rule", "evenodd", "d", "M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z"], ["fill-rule", "evenodd", "d", "M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z"], ["fill-rule", "evenodd", "d", "M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z"], ["width", "1em", "height", "1em", "viewBox", "0 0 16 16", "fill", "currentColor", "xmlns", "http://www.w3.org/2000/svg", 1, "bi", "bi-arrows-angle-contract"], ["fill-rule", "evenodd", "d", "M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z"], ["fill-rule", "evenodd", "d", "M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z"], ["fill-rule", "evenodd", "d", "M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z"], [1, "dropdown-divider"], [1, "treeview-container"], [3, "config", "item", "template", "checkedChange", 4, "ngFor", "ngForOf"], [3, "config", "item", "template", "checkedChange"], [1, "treeview-text"]], template: function TreeviewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
370
|
+
i0.ɵɵtemplate(0, TreeviewComponent_ng_template_0_Template, 6, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
371
|
+
i0.ɵɵtemplate(2, TreeviewComponent_ng_template_2_Template, 2, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
372
|
+
i0.ɵɵelementStart(4, "div", 2);
|
|
373
|
+
i0.ɵɵtemplate(5, TreeviewComponent_ng_template_5_Template, 0, 0, "ng-template", 3);
|
|
374
|
+
i0.ɵɵelementEnd();
|
|
375
|
+
i0.ɵɵelementStart(6, "div", 4);
|
|
376
|
+
i0.ɵɵtemplate(7, TreeviewComponent_div_7_Template, 2, 3, "div", 5);
|
|
377
|
+
i0.ɵɵtemplate(8, TreeviewComponent_div_8_Template, 2, 1, "div", 6);
|
|
378
|
+
i0.ɵɵelementEnd();
|
|
379
|
+
} if (rf & 2) {
|
|
380
|
+
const _r2 = i0.ɵɵreference(3);
|
|
381
|
+
i0.ɵɵadvance(5);
|
|
382
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx.headerTemplate || _r2)("ngTemplateOutletContext", ctx.headerTemplateContext);
|
|
383
|
+
i0.ɵɵadvance(1);
|
|
384
|
+
i0.ɵɵproperty("ngSwitch", ctx.hasFilterItems);
|
|
385
|
+
i0.ɵɵadvance(1);
|
|
386
|
+
i0.ɵɵproperty("ngSwitchCase", true);
|
|
387
|
+
i0.ɵɵadvance(1);
|
|
388
|
+
i0.ɵɵproperty("ngSwitchCase", false);
|
|
389
|
+
} }, dependencies: [i4.DefaultValueAccessor, i4.CheckboxControlValueAccessor, i4.NgControlStatus, i4.NgModel, i5.NgForOf, i5.NgIf, i5.NgTemplateOutlet, i5.NgSwitch, i5.NgSwitchCase, i6.TreeviewItemComponent], styles: ["[_nghost-%COMP%] .treeview-header[_ngcontent-%COMP%] .row-filter[_ngcontent-%COMP%]{margin-bottom:.5rem}[_nghost-%COMP%] .treeview-header[_ngcontent-%COMP%] .row-all[_ngcontent-%COMP%] .bi[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] .treeview-container[_ngcontent-%COMP%] .row-item[_ngcontent-%COMP%]{margin-bottom:.3rem;flex-wrap:nowrap}[_nghost-%COMP%] .treeview-container[_ngcontent-%COMP%] .row-item[_ngcontent-%COMP%] .bi[_ngcontent-%COMP%]{cursor:pointer;margin-right:.3rem}.treeview-container[_ngcontent-%COMP%]{overflow-y:auto;padding-right:.3rem}.treeview-text[_ngcontent-%COMP%]{padding:.3rem 0;white-space:nowrap}"] }); }
|
|
198
390
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItdHJlZXZpZXcvY29tcG9uZW50cy90cmVldmlldy90cmVldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10cmVldmlldy9jb21wb25lbnRzL3RyZWV2aWV3L3RyZWV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLFdBQVcsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQUUxRSxNQUFNLGtCQUFtQixTQUFRLFlBQVk7SUFFekMsWUFBWSxJQUFrQjtRQUMxQixLQUFLLENBQUM7WUFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxF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QUU7WUFDdkMsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO2dCQUN0QixXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQzthQUNwQztpQkFBTSxJQUFJLFdBQVcsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUMzQyxXQUFXLEdBQUcsU0FBUyxDQUFDO2dCQUN4QixNQUFNO2FBQ1Q7U0FDSjtRQUVELElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtZQUN0QixXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzVCLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTtnQkFDdkIsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDdkIsTUFBTTthQUNUO1NBQ0o7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLGVBQWUsQ0FBQztJQUM5QyxDQUFDO2tJQXBMUSxpQkFBaUI7c0hBQWpCLGlCQUFpQixvUUNqRDlCLHl0TkFzSUE7OzRGRHJGYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0ksY0FBYztrS0FLZixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCwgaW5jbHVkZXMgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVHJlZXZpZXdJMThuIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWV2aWV3LWkxOG4nO1xuaW1wb3J0IHsgVHJlZXZpZXdJdGVtLCBUcmVldmlld1NlbGVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1pdGVtJztcbmltcG9ydCB7IFRyZWV2aWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWV2aWV3LWNvbmZpZyc7XG5pbXBvcnQgeyBUcmVldmlld0hlYWRlclRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1oZWFkZXItdGVtcGxhdGUtY29udGV4dCc7XG5pbXBvcnQgeyBUcmVldmlld0l0ZW1UZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJlZXZpZXctaXRlbS10ZW1wbGF0ZS1jb250ZXh0JztcbmltcG9ydCB7IFRyZWV2aWV3SGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycy90cmVldmlldy1oZWxwZXInO1xuaW1wb3J0IHsgVHJlZXZpZXdFdmVudFBhcnNlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdHJlZXZpZXctZXZlbnQtcGFyc2VyJztcblxuY2xhc3MgRmlsdGVyVHJlZXZpZXdJdGVtIGV4dGVuZHMgVHJlZXZpZXdJdGVtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZkl0ZW06IFRyZWV2aWV3SXRlbTtcbiAgICBjb25zdHJ1Y3RvcihpdGVtOiBUcmVldmlld0l0ZW0pIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGl0ZW0uY2hlY2tlZCxcbiAgICAgICAgICAgIGNvbGxhcHNlZDogaXRlbS5jb2xsYXBzZWQsXG4gICAgICAgICAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlbixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVmSXRlbSA9IGl0ZW07XG4gICAgfVxuXG4gICAgdXBkYXRlUmVmQ2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgRmlsdGVyVHJlZXZpZXdJdGVtKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQudXBkYXRlUmVmQ2hlY2tlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgcmVmQ2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcbiAgICAgICAgaWYgKHJlZkNoZWNrZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVmQ2hpbGQgb2YgdGhpcy5yZWZJdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWZDaGlsZC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZkNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmSXRlbS5jaGVja2VkID0gcmVmQ2hlY2tlZDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LXRyZWV2aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdHJlZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RyZWV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRyZWV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUcmVldmlld0hlYWRlclRlbXBsYXRlQ29udGV4dD47XG4gICAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUcmVldmlld0l0ZW1UZW1wbGF0ZUNvbnRleHQ+O1xuICAgIEBJbnB1dCgpIGl0ZW1zOiBUcmVldmlld0l0ZW1bXTtcbiAgICBASW5wdXQoKSBjb25maWc6IFRyZWV2aWV3Q29uZmlnO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gICAgQE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIGhlYWRlclRlbXBsYXRlQ29udGV4dDogVHJlZXZpZXdIZWFkZXJUZW1wbGF0ZUNvbnRleHQ7XG4gICAgYWxsSXRlbTogVHJlZXZpZXdJdGVtO1xuICAgIGZpbHRlclRleHQgPSAnJztcbiAgICBmaWx0ZXJJdGVtczogVHJlZXZpZXdJdGVtW107XG4gICAgc2VsZWN0aW9uOiBUcmVldmlld1NlbGVjdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgaTE4bjogVHJlZXZpZXdJMThuLFxuICAgICAgICBwcml2YXRlIGRlZmF1bHRDb25maWc6IFRyZWV2aWV3Q29uZmlnLFxuICAgICAgICBwcml2YXRlIGV2ZW50UGFyc2VyOiBUcmVldmlld0V2ZW50UGFyc2VyLFxuICAgICkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZGVmYXVsdENvbmZpZztcbiAgICAgICAgdGhpcy5hbGxJdGVtID0gbmV3IFRyZWV2aWV3SXRlbSh7IHRleHQ6ICdBbGwnLCB2YWx1ZTogdW5kZWZpbmVkIH0pO1xuICAgIH1cblxuICAgIGdldCBoYXNGaWx0ZXJJdGVtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFpc05pbCh0aGlzLmZpbHRlckl0ZW1zKSAmJiB0aGlzLmZpbHRlckl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0IG1heEhlaWdodCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5jb25maWcubWF4SGVpZ2h0fWA7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlSGVhZGVyVGVtcGxhdGVDb250ZXh0KCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW1zU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5pdGVtcztcbiAgICAgICAgaWYgKCFpc05pbChpdGVtc1NpbXBsZUNoYW5nZSkgJiYgIWlzTmlsKHRoaXMuaXRlbXMpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckl0ZW1zKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlZE9mQWxsKCk7XG4gICAgICAgICAgICB0aGlzLnJhaXNlU2VsZWN0ZWRDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQWxsQ29sbGFwc2VFeHBhbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsSXRlbS5jb2xsYXBzZWQgPSAhdGhpcy5hbGxJdGVtLmNvbGxhcHNlZDtcbiAgICAgICAgdGhpcy5maWx0ZXJJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnNldENvbGxhcHNlZFJlY3Vyc2l2ZSh0aGlzLmFsbEl0ZW0uY29sbGFwc2VkKSk7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJUZXh0Q2hhbmdlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlclRleHQgPSB0ZXh0O1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRleHQpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckl0ZW1zKCk7XG4gICAgfVxuXG4gICAgb25BbGxDaGVja2VkQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjaGVja2VkID0gdGhpcy5hbGxJdGVtLmNoZWNrZWQ7XG4gICAgICAgIHRoaXMuZmlsdGVySXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5zZXRDaGVja2VkUmVjdXJzaXZlKGNoZWNrZWQpO1xuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWx0ZXJUcmVldmlld0l0ZW0pIHtcbiAgICAgICAgICAgICAgICBpdGVtLnVwZGF0ZVJlZkNoZWNrZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yYWlzZVNlbGVjdGVkQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2hlY2tlZENoYW5nZShpdGVtOiBUcmVldmlld0l0ZW0sIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWx0ZXJUcmVldmlld0l0ZW0pIHtcbiAgICAgICAgICAgIGl0ZW0udXBkYXRlUmVmQ2hlY2tlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVDaGVja2VkT2ZBbGwoKTtcbiAgICAgICAgdGhpcy5yYWlzZVNlbGVjdGVkQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcmFpc2VTZWxlY3RlZENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVNlbGVjdGlvbigpO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmV2ZW50UGFyc2VyLmdldFNlbGVjdGVkQ2hhbmdlKHRoaXMpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhlYWRlclRlbXBsYXRlQ29udGV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZUNvbnRleHQgPSB7XG4gICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgaXRlbTogdGhpcy5hbGxJdGVtLFxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlOiAoKSA9PiB0aGlzLm9uQWxsQ2hlY2tlZENoYW5nZSgpLFxuICAgICAgICAgICAgb25Db2xsYXBzZUV4cGFuZDogKCkgPT4gdGhpcy5vbkFsbENvbGxhcHNlRXhwYW5kKCksXG4gICAgICAgICAgICBvbkZpbHRlclRleHRDaGFuZ2U6ICh0ZXh0KSA9PiB0aGlzLm9uRmlsdGVyVGV4dENoYW5nZSh0ZXh0KSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBsZXQgY2hlY2tlZEl0ZW1zOiBUcmVldmlld0l0ZW1bXSA9IFtdO1xuICAgICAgICBsZXQgdW5jaGVja2VkSXRlbXM6IFRyZWV2aWV3SXRlbVtdID0gW107XG4gICAgICAgIGlmICghaXNOaWwodGhpcy5pdGVtcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IFRyZWV2aWV3SGVscGVyLmNvbmNhdFNlbGVjdGlvbih0aGlzLml0ZW1zLCBjaGVja2VkSXRlbXMsIHVuY2hlY2tlZEl0ZW1zKTtcbiAgICAgICAgICAgIGNoZWNrZWRJdGVtcyA9IHNlbGVjdGlvbi5jaGVja2VkO1xuICAgICAgICAgICAgdW5jaGVja2VkSXRlbXMgPSBzZWxlY3Rpb24udW5jaGVja2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICBjaGVja2VkSXRlbXMsXG4gICAgICAgICAgICB1bmNoZWNrZWRJdGVtcyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUZpbHRlckl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXJUZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVySXRlbXM6IFRyZWV2aWV3SXRlbVtdID0gW107XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJUZXh0ID0gdGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdJdGVtID0gdGhpcy5maWx0ZXJJdGVtKGl0ZW0sIGZpbHRlclRleHQpO1xuICAgICAgICAgICAgICAgIGlmICghaXNOaWwobmV3SXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVySXRlbXMucHVzaChuZXdJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySXRlbXMgPSBmaWx0ZXJJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVDaGVja2VkT2ZBbGwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckl0ZW0oaXRlbTogVHJlZXZpZXdJdGVtLCBmaWx0ZXJUZXh0OiBzdHJpbmcpOiBUcmVldmlld0l0ZW0ge1xuICAgICAgICBjb25zdCBpc01hdGNoID0gaW5jbHVkZXMoaXRlbS50ZXh0LnRvTG93ZXJDYXNlKCksIGZpbHRlclRleHQpO1xuICAgICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWlzTmlsKGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW46IFRyZWV2aWV3SXRlbVtdID0gW107XG4gICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdDaGlsZCA9IHRoaXMuZmlsdGVySXRlbShjaGlsZCwgZmlsdGVyVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNOaWwobmV3Q2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW0gPSBuZXcgRmlsdGVyVHJlZXZpZXdJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBuZXdJdGVtLmNvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBuZXdJdGVtLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdJdGVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDaGVja2VkT2ZBbGwoKTogdm9pZCB7XG4gICAgICAgIGxldCBpdGVtQ2hlY2tlZDogYm9vbGVhbiA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZmlsdGVySXRlbSBvZiB0aGlzLmZpbHRlckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbUNoZWNrZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpdGVtQ2hlY2tlZCA9IGZpbHRlckl0ZW0uY2hlY2tlZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbUNoZWNrZWQgIT09IGZpbHRlckl0ZW0uY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGl0ZW1DaGVja2VkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1DaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICBpdGVtQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbGxJdGVtLmNoZWNrZWQgPSBpdGVtQ2hlY2tlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvbGxhcHNlZE9mQWxsKCk6IHZvaWQge1xuICAgICAgICBsZXQgaGFzSXRlbUV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgZmlsdGVySXRlbSBvZiB0aGlzLmZpbHRlckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoIWZpbHRlckl0ZW0uY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAgICAgaGFzSXRlbUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxsSXRlbS5jb2xsYXBzZWQgPSAhaGFzSXRlbUV4cGFuZGVkO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtb25Db2xsYXBzZUV4cGFuZD1cIm9uQ29sbGFwc2VFeHBhbmRcIiBsZXQtb25DaGVja2VkQ2hhbmdlPVwib25DaGVja2VkQ2hhbmdlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0taW5saW5lIHJvdy1pdGVtXCI+XG4gICAgICAgIDxpICpuZ0lmPVwiaXRlbS5jaGlsZHJlblwiIChjbGljayk9XCJvbkNvbGxhcHNlRXhwYW5kKClcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdTd2l0Y2hdPVwiaXRlbS5jb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIwLjhyZW1cIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjAuOHJlbVwiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiaSBiaS1jYXJldC1yaWdodC1maWxsXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi4xNCA4Ljc1M2wtNS40ODIgNC43OTZjLS42NDYuNTY2LTEuNjU4LjEwNi0xLjY1OC0uNzUzVjMuMjA0YTEgMSAwIDAgMSAxLjY1OS0uNzUzbDUuNDggNC43OTZhMSAxIDAgMCAxIDAgMS41MDZ6XCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIwLjhyZW1cIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjAuOHJlbVwiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiaSBiaS1jYXJldC1kb3duLWZpbGxcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMjQ3IDExLjE0TDIuNDUxIDUuNjU4QzEuODg1IDUuMDEzIDIuMzQ1IDQgMy4yMDQgNGg5LjU5MmExIDEgMCAwIDEgLjc1MyAxLjY1OWwtNC43OTYgNS40OGExIDEgMCAwIDEtMS41MDYgMHpcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvaT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2VkQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpdGVtLmluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIChjbGljayk9XCJpdGVtLmNoZWNrZWQgPSAhaXRlbS5jaGVja2VkOyBvbkNoZWNrZWRDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI2RlZmF1bHRIZWFkZXJUZW1wbGF0ZVxuICAgIGxldC1jb25maWc9XCJjb25maWdcIlxuICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgbGV0LW9uQ29sbGFwc2VFeHBhbmQ9XCJvbkNvbGxhcHNlRXhwYW5kXCJcbiAgICBsZXQtb25DaGVja2VkQ2hhbmdlPVwib25DaGVja2VkQ2hhbmdlXCJcbiAgICBsZXQtb25GaWx0ZXJUZXh0Q2hhbmdlPVwib25GaWx0ZXJUZXh0Q2hhbmdlXCI+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy5oYXNGaWx0ZXJcIiBjbGFzcz1cInJvdyByb3ctZmlsdGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG4uZ2V0RmlsdGVyUGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlclRleHRDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJoYXNGaWx0ZXJJdGVtc1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmhhc0FsbENoZWNrQm94IHx8IGNvbmZpZy5oYXNDb2xsYXBzZUV4cGFuZFwiIGNsYXNzPVwicm93IHJvdy1hbGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZVwiICpuZ0lmPVwiY29uZmlnLmhhc0FsbENoZWNrQm94XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrZWRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpdGVtLmluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgKGNsaWNrKT1cIml0ZW0uY2hlY2tlZCA9ICFpdGVtLmNoZWNrZWQ7IG9uQ2hlY2tlZENoYW5nZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLmdldEFsbENoZWNrYm94VGV4dCgpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiY29uZmlnLmhhc0NvbGxhcHNlRXhwYW5kXCIgY2xhc3M9XCJmbG9hdC1yaWdodCBmb3JtLWNoZWNrLWxhYmVsXCIgKGNsaWNrKT1cIm9uQ29sbGFwc2VFeHBhbmQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBbdGl0bGVdPVwiaTE4bi5nZXRUb29sdGlwQ29sbGFwc2VFeHBhbmRUZXh0KGl0ZW0uY29sbGFwc2VkKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtuZ1N3aXRjaF09XCJpdGVtLmNvbGxhcHNlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWFycm93cy1hbmdsZS1leHBhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTAuMDM2YS41LjUgMCAwIDEgLjUuNXYzLjVoMy41YS41LjUgMCAwIDEgMCAxaC00YS41LjUgMCAwIDEtLjUtLjV2LTRhLjUuNSAwIDAgMSAuNS0uNXpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMzU0IDkuNjQ2YS41LjUgMCAwIDEgMCAuNzA4bC00LjUgNC41YS41LjUgMCAwIDEtLjcwOC0uNzA4bDQuNS00LjVhLjUuNSAwIDAgMSAuNzA4IDB6bTguNS04LjVhLjUuNSAwIDAgMSAwIC43MDhsLTQuNSA0LjVhLjUuNSAwIDAgMS0uNzA4LS43MDhsNC41LTQuNWEuNS41IDAgMCAxIC43MDggMHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjAzNiAxLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgLjUuNXY0YS41LjUgMCAxIDEtMSAwVjJoLTMuNWEuNS41IDAgMCAxLS41LS41elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktYXJyb3dzLWFuZ2xlLWNvbnRyYWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS41IDIuMDM2YS41LjUgMCAwIDEgLjUuNXYzLjVoMy41YS41LjUgMCAwIDEgMCAxaC00YS41LjUgMCAwIDEtLjUtLjV2LTRhLjUuNSAwIDAgMSAuNS0uNXpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjM1NCAxLjY0NmEuNS41IDAgMCAxIDAgLjcwOGwtNC41IDQuNWEuNS41IDAgMSAxLS43MDgtLjcwOGw0LjUtNC41YS41LjUgMCAwIDEgLjcwOCAwem0tNy41IDcuNWEuNS41IDAgMCAxIDAgLjcwOGwtNC41IDQuNWEuNS41IDAgMCAxLS43MDgtLjcwOGw0LjUtNC41YS41LjUgMCAwIDEgLjcwOCAwelwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wMzYgOS41YS41LjUgMCAwIDEgLjUtLjVoNGEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLTEgMFYxMGgtMy41YS41LjUgMCAwIDEtLjUtLjV6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZy5oYXNEaXZpZGVyXCIgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPGRpdiBjbGFzcz1cInRyZWV2aWV3LWhlYWRlclwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZSB8fCBkZWZhdWx0SGVhZGVyVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiaGVhZGVyVGVtcGxhdGVDb250ZXh0XCI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuPGRpdiBbbmdTd2l0Y2hdPVwiaGFzRmlsdGVySXRlbXNcIj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCIgY2xhc3M9XCJ0cmVldmlldy1jb250YWluZXJcIiBbc3R5bGUubWF4LWhlaWdodC5weF09XCJtYXhIZWlnaHRcIj5cbiAgICAgICAgPG5neC10cmVldmlldy1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJJdGVtc1wiXG4gICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGUgfHwgZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJvbkl0ZW1DaGVja2VkQ2hhbmdlKGl0ZW0sICRldmVudClcIj5cbiAgICAgICAgPC9uZ3gtdHJlZXZpZXctaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiIGNsYXNzPVwidHJlZXZpZXctdGV4dFwiPlxuICAgICAgICB7eyBpMThuLmdldEZpbHRlck5vSXRlbXNGb3VuZFRleHQoKSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
391
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TreeviewComponent, [{
|
|
392
|
+
type: Component,
|
|
393
|
+
args: [{ selector: 'ngx-treeview', template: "<ng-template #defaultItemTemplate let-item=\"item\" let-onCollapseExpand=\"onCollapseExpand\" let-onCheckedChange=\"onCheckedChange\">\n <div class=\"form-inline row-item\">\n <i *ngIf=\"item.children\" (click)=\"onCollapseExpand()\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg\n *ngSwitchCase=\"true\"\n width=\"0.8rem\"\n height=\"0.8rem\"\n viewBox=\"0 0 16 16\"\n class=\"bi bi-caret-right-fill\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.14 8.753l-5.482 4.796c-.646.566-1.658.106-1.658-.753V3.204a1 1 0 0 1 1.659-.753l5.48 4.796a1 1 0 0 1 0 1.506z\" />\n </svg>\n <svg\n *ngSwitchCase=\"false\"\n width=\"0.8rem\"\n height=\"0.8rem\"\n viewBox=\"0 0 16 16\"\n class=\"bi bi-caret-down-fill\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n </svg>\n </i>\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n [(ngModel)]=\"item.checked\"\n (ngModelChange)=\"onCheckedChange()\"\n [disabled]=\"item.disabled\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{ item.text }}\n </label>\n </div>\n </div>\n</ng-template>\n<ng-template\n #defaultHeaderTemplate\n let-config=\"config\"\n let-item=\"item\"\n let-onCollapseExpand=\"onCollapseExpand\"\n let-onCheckedChange=\"onCheckedChange\"\n let-onFilterTextChange=\"onFilterTextChange\">\n <div *ngIf=\"config.hasFilter\" class=\"row row-filter\">\n <div class=\"col-12\">\n <input\n class=\"form-control\"\n type=\"text\"\n [placeholder]=\"i18n.getFilterPlaceholder()\"\n [(ngModel)]=\"filterText\"\n (ngModelChange)=\"onFilterTextChange($event)\" />\n </div>\n </div>\n <div *ngIf=\"hasFilterItems\">\n <div *ngIf=\"config.hasAllCheckBox || config.hasCollapseExpand\" class=\"row row-all\">\n <div class=\"col-12\">\n <div class=\"form-check form-check-inline\" *ngIf=\"config.hasAllCheckBox\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n [(ngModel)]=\"item.checked\"\n (ngModelChange)=\"onCheckedChange()\"\n [indeterminate]=\"item.indeterminate\" />\n <label class=\"form-check-label\" (click)=\"item.checked = !item.checked; onCheckedChange()\">\n {{ i18n.getAllCheckboxText() }}\n </label>\n </div>\n <label *ngIf=\"config.hasCollapseExpand\" class=\"float-right form-check-label\" (click)=\"onCollapseExpand()\">\n <i [title]=\"i18n.getTooltipCollapseExpandText(item.collapsed)\" aria-hidden=\"true\" [ngSwitch]=\"item.collapsed\">\n <svg\n *ngSwitchCase=\"true\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 16 16\"\n class=\"bi bi-arrows-angle-expand\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n d=\"M1.5 10.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path\n fill-rule=\"evenodd\"\n d=\"M6.354 9.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm8.5-8.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path\n fill-rule=\"evenodd\"\n d=\"M10.036 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 1 1-1 0V2h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n <svg\n *ngSwitchCase=\"false\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 16 16\"\n class=\"bi bi-arrows-angle-contract\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n d=\"M9.5 2.036a.5.5 0 0 1 .5.5v3.5h3.5a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5z\" />\n <path\n fill-rule=\"evenodd\"\n d=\"M14.354 1.646a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 1 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0zm-7.5 7.5a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708l4.5-4.5a.5.5 0 0 1 .708 0z\" />\n <path\n fill-rule=\"evenodd\"\n d=\"M2.036 9.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V10h-3.5a.5.5 0 0 1-.5-.5z\" />\n </svg>\n </i>\n </label>\n </div>\n </div>\n <div *ngIf=\"config.hasDivider\" class=\"dropdown-divider\"></div>\n </div>\n</ng-template>\n<div class=\"treeview-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate || defaultHeaderTemplate\" [ngTemplateOutletContext]=\"headerTemplateContext\">\n </ng-template>\n</div>\n<div [ngSwitch]=\"hasFilterItems\">\n <div *ngSwitchCase=\"true\" class=\"treeview-container\" [style.max-height.px]=\"maxHeight\">\n <ngx-treeview-item\n *ngFor=\"let item of filterItems\"\n [config]=\"config\"\n [item]=\"item\"\n [template]=\"itemTemplate || defaultItemTemplate\"\n (checkedChange)=\"onItemCheckedChange(item, $event)\">\n </ngx-treeview-item>\n </div>\n <div *ngSwitchCase=\"false\" class=\"treeview-text\">\n {{ i18n.getFilterNoItemsFoundText() }}\n </div>\n</div>\n", styles: [":host .treeview-header .row-filter{margin-bottom:.5rem}:host .treeview-header .row-all .bi{cursor:pointer}:host .treeview-container .row-item{margin-bottom:.3rem;flex-wrap:nowrap}:host .treeview-container .row-item .bi{cursor:pointer;margin-right:.3rem}.treeview-container{overflow-y:auto;padding-right:.3rem}.treeview-text{padding:.3rem 0;white-space:nowrap}\n"] }]
|
|
394
|
+
}], function () { return [{ type: i1.TreeviewI18n }, { type: i2.TreeviewConfig }, { type: i3.TreeviewEventParser }]; }, { headerTemplate: [{
|
|
395
|
+
type: Input
|
|
396
|
+
}], itemTemplate: [{
|
|
397
|
+
type: Input
|
|
398
|
+
}], items: [{
|
|
399
|
+
type: Input
|
|
400
|
+
}], config: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], selectedChange: [{
|
|
403
|
+
type: Output
|
|
404
|
+
}], filterChange: [{
|
|
405
|
+
type: Output
|
|
406
|
+
}] }); })();
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItdHJlZXZpZXcvY29tcG9uZW50cy90cmVldmlldy90cmVldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10cmVldmlldy9jb21wb25lbnRzL3RyZWV2aWV3L3RyZWV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLFdBQVcsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7SUNMOUQsbUJBT3VDO0lBUHZDLCtCQU91QztJQUNuQywyQkFDNEg7SUFDaEksaUJBQU07OztJQUNOLG1CQU91QztJQVB2QywrQkFPdUM7SUFDbkMsMkJBQ3lIO0lBQzdILGlCQUFNOzs7O0lBdEJWLDZCQUFxRztJQUE1RSxvTUFBUyxlQUFBLHFCQUFrQixDQUFBLElBQUM7SUFDakQsMEZBVU07SUFDTiwwRkFVTTtJQUNWLGlCQUFJOzs7SUF2QnFFLDRDQUEyQjtJQUUzRixlQUFrQjtJQUFsQixtQ0FB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bnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgVGVtcGxhdGVSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwsIGluY2x1ZGVzIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFRyZWV2aWV3STE4biB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1pMThuJztcbmltcG9ydCB7IFRyZWV2aWV3SXRlbSwgVHJlZXZpZXdTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJlZXZpZXctaXRlbSc7XG5pbXBvcnQgeyBUcmVldmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1jb25maWcnO1xuaW1wb3J0IHsgVHJlZXZpZXdIZWFkZXJUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJlZXZpZXctaGVhZGVyLXRlbXBsYXRlLWNvbnRleHQnO1xuaW1wb3J0IHsgVHJlZXZpZXdJdGVtVGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWV2aWV3LWl0ZW0tdGVtcGxhdGUtY29udGV4dCc7XG5pbXBvcnQgeyBUcmVldmlld0hlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvdHJlZXZpZXctaGVscGVyJztcbmltcG9ydCB7IFRyZWV2aWV3RXZlbnRQYXJzZXIgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3RyZWV2aWV3LWV2ZW50LXBhcnNlcic7XG5cbmNsYXNzIEZpbHRlclRyZWV2aWV3SXRlbSBleHRlbmRzIFRyZWV2aWV3SXRlbSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZWZJdGVtOiBUcmVldmlld0l0ZW07XG4gICAgY29uc3RydWN0b3IoaXRlbTogVHJlZXZpZXdJdGVtKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWQsXG4gICAgICAgICAgICBjaGVja2VkOiBpdGVtLmNoZWNrZWQsXG4gICAgICAgICAgICBjb2xsYXBzZWQ6IGl0ZW0uY29sbGFwc2VkLFxuICAgICAgICAgICAgY2hpbGRyZW46IGl0ZW0uY2hpbGRyZW4sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZkl0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIHVwZGF0ZVJlZkNoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEZpbHRlclRyZWV2aWV3SXRlbSkge1xuICAgICAgICAgICAgICAgIGNoaWxkLnVwZGF0ZVJlZkNoZWNrZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHJlZkNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgIGlmIChyZWZDaGVja2VkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlZkNoaWxkIG9mIHRoaXMucmVmSXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIGlmICghcmVmQ2hpbGQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICByZWZDaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZkl0ZW0uY2hlY2tlZCA9IHJlZkNoZWNrZWQ7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC10cmVldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90cmVldmlldy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUcmVldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8VHJlZXZpZXdIZWFkZXJUZW1wbGF0ZUNvbnRleHQ+O1xuICAgIEBJbnB1dCgpIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8VHJlZXZpZXdJdGVtVGVtcGxhdGVDb250ZXh0PjtcbiAgICBASW5wdXQoKSBpdGVtczogVHJlZXZpZXdJdGVtW107XG4gICAgQElucHV0KCkgY29uZmlnOiBUcmVldmlld0NvbmZpZztcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBoZWFkZXJUZW1wbGF0ZUNvbnRleHQ6IFRyZWV2aWV3SGVhZGVyVGVtcGxhdGVDb250ZXh0O1xuICAgIGFsbEl0ZW06IFRyZWV2aWV3SXRlbTtcbiAgICBmaWx0ZXJUZXh0ID0gJyc7XG4gICAgZmlsdGVySXRlbXM6IFRyZWV2aWV3SXRlbVtdO1xuICAgIHNlbGVjdGlvbjogVHJlZXZpZXdTZWxlY3Rpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGkxOG46IFRyZWV2aWV3STE4bixcbiAgICAgICAgcHJpdmF0ZSBkZWZhdWx0Q29uZmlnOiBUcmVldmlld0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSBldmVudFBhcnNlcjogVHJlZXZpZXdFdmVudFBhcnNlcixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmRlZmF1bHRDb25maWc7XG4gICAgICAgIHRoaXMuYWxsSXRlbSA9IG5ldyBUcmVldmlld0l0ZW0oeyB0ZXh0OiAnQWxsJywgdmFsdWU6IHVuZGVmaW5lZCB9KTtcbiAgICB9XG5cbiAgICBnZXQgaGFzRmlsdGVySXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhaXNOaWwodGhpcy5maWx0ZXJJdGVtcykgJiYgdGhpcy5maWx0ZXJJdGVtcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGdldCBtYXhIZWlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuY29uZmlnLm1heEhlaWdodH1gO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZUhlYWRlclRlbXBsYXRlQ29udGV4dCgpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtc1NpbXBsZUNoYW5nZSA9IGNoYW5nZXMuaXRlbXM7XG4gICAgICAgIGlmICghaXNOaWwoaXRlbXNTaW1wbGVDaGFuZ2UpICYmICFpc05pbCh0aGlzLml0ZW1zKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJJdGVtcygpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xsYXBzZWRPZkFsbCgpO1xuICAgICAgICAgICAgdGhpcy5yYWlzZVNlbGVjdGVkQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFsbENvbGxhcHNlRXhwYW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFsbEl0ZW0uY29sbGFwc2VkID0gIXRoaXMuYWxsSXRlbS5jb2xsYXBzZWQ7XG4gICAgICAgIHRoaXMuZmlsdGVySXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5zZXRDb2xsYXBzZWRSZWN1cnNpdmUodGhpcy5hbGxJdGVtLmNvbGxhcHNlZCkpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyVGV4dENoYW5nZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJUZXh0ID0gdGV4dDtcbiAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0ZXh0KTtcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJJdGVtcygpO1xuICAgIH1cblxuICAgIG9uQWxsQ2hlY2tlZENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hlY2tlZCA9IHRoaXMuYWxsSXRlbS5jaGVja2VkO1xuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0Q2hlY2tlZFJlY3Vyc2l2ZShjaGVja2VkKTtcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgRmlsdGVyVHJlZXZpZXdJdGVtKSB7XG4gICAgICAgICAgICAgICAgaXRlbS51cGRhdGVSZWZDaGVja2VkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmFpc2VTZWxlY3RlZENoYW5nZSgpO1xuICAgIH1cblxuICAgIG9uSXRlbUNoZWNrZWRDaGFuZ2UoaXRlbTogVHJlZXZpZXdJdGVtLCBjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgRmlsdGVyVHJlZXZpZXdJdGVtKSB7XG4gICAgICAgICAgICBpdGVtLnVwZGF0ZVJlZkNoZWNrZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlQ2hlY2tlZE9mQWxsKCk7XG4gICAgICAgIHRoaXMucmFpc2VTZWxlY3RlZENoYW5nZSgpO1xuICAgIH1cblxuICAgIHJhaXNlU2VsZWN0ZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5ldmVudFBhcnNlci5nZXRTZWxlY3RlZENoYW5nZSh0aGlzKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodmFsdWVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVIZWFkZXJUZW1wbGF0ZUNvbnRleHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGVhZGVyVGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgICAgICAgIGl0ZW06IHRoaXMuYWxsSXRlbSxcbiAgICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZTogKCkgPT4gdGhpcy5vbkFsbENoZWNrZWRDaGFuZ2UoKSxcbiAgICAgICAgICAgIG9uQ29sbGFwc2VFeHBhbmQ6ICgpID0+IHRoaXMub25BbGxDb2xsYXBzZUV4cGFuZCgpLFxuICAgICAgICAgICAgb25GaWx0ZXJUZXh0Q2hhbmdlOiAodGV4dCkgPT4gdGhpcy5vbkZpbHRlclRleHRDaGFuZ2UodGV4dCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgbGV0IGNoZWNrZWRJdGVtczogVHJlZXZpZXdJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IHVuY2hlY2tlZEl0ZW1zOiBUcmVldmlld0l0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAoIWlzTmlsKHRoaXMuaXRlbXMpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBUcmVldmlld0hlbHBlci5jb25jYXRTZWxlY3Rpb24odGhpcy5pdGVtcywgY2hlY2tlZEl0ZW1zLCB1bmNoZWNrZWRJdGVtcyk7XG4gICAgICAgICAgICBjaGVja2VkSXRlbXMgPSBzZWxlY3Rpb24uY2hlY2tlZDtcbiAgICAgICAgICAgIHVuY2hlY2tlZEl0ZW1zID0gc2VsZWN0aW9uLnVuY2hlY2tlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uID0ge1xuICAgICAgICAgICAgY2hlY2tlZEl0ZW1zLFxuICAgICAgICAgICAgdW5jaGVja2VkSXRlbXMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyVGV4dCAhPT0gJycpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckl0ZW1zOiBUcmVldmlld0l0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyVGV4dCA9IHRoaXMuZmlsdGVyVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbSA9IHRoaXMuZmlsdGVySXRlbShpdGVtLCBmaWx0ZXJUZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKG5ld0l0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckl0ZW1zID0gZmlsdGVySXRlbXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlQ2hlY2tlZE9mQWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJJdGVtKGl0ZW06IFRyZWV2aWV3SXRlbSwgZmlsdGVyVGV4dDogc3RyaW5nKTogVHJlZXZpZXdJdGVtIHtcbiAgICAgICAgY29uc3QgaXNNYXRjaCA9IGluY2x1ZGVzKGl0ZW0udGV4dC50b0xvd2VyQ2FzZSgpLCBmaWx0ZXJUZXh0KTtcbiAgICAgICAgaWYgKGlzTWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFpc05pbChpdGVtLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuOiBUcmVldmlld0l0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q2hpbGQgPSB0aGlzLmZpbHRlckl0ZW0oY2hpbGQsIGZpbHRlclRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKG5ld0NoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChuZXdDaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdJdGVtID0gbmV3IEZpbHRlclRyZWV2aWV3SXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgbmV3SXRlbS5jb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbmV3SXRlbS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3SXRlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2hlY2tlZE9mQWxsKCk6IHZvaWQge1xuICAgICAgICBsZXQgaXRlbUNoZWNrZWQ6IGJvb2xlYW4gPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlckl0ZW0gb2YgdGhpcy5maWx0ZXJJdGVtcykge1xuICAgICAgICAgICAgaWYgKGl0ZW1DaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaXRlbUNoZWNrZWQgPSBmaWx0ZXJJdGVtLmNoZWNrZWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1DaGVja2VkICE9PSBmaWx0ZXJJdGVtLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpdGVtQ2hlY2tlZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtQ2hlY2tlZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaXRlbUNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWxsSXRlbS5jaGVja2VkID0gaXRlbUNoZWNrZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xsYXBzZWRPZkFsbCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGhhc0l0ZW1FeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbHRlckl0ZW0gb2YgdGhpcy5maWx0ZXJJdGVtcykge1xuICAgICAgICAgICAgaWYgKCFmaWx0ZXJJdGVtLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgIGhhc0l0ZW1FeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFsbEl0ZW0uY29sbGFwc2VkID0gIWhhc0l0ZW1FeHBhbmRlZDtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2RlZmF1bHRJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LW9uQ29sbGFwc2VFeHBhbmQ9XCJvbkNvbGxhcHNlRXhwYW5kXCIgbGV0LW9uQ2hlY2tlZENoYW5nZT1cIm9uQ2hlY2tlZENoYW5nZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWlubGluZSByb3ctaXRlbVwiPlxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uY2hpbGRyZW5cIiAoY2xpY2spPVwib25Db2xsYXBzZUV4cGFuZCgpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgW25nU3dpdGNoXT1cIml0ZW0uY29sbGFwc2VkXCI+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMC44cmVtXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIwLjhyZW1cIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQtcmlnaHQtZmlsbFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuMTQgOC43NTNsLTUuNDgyIDQuNzk2Yy0uNjQ2LjU2Ni0xLjY1OC4xMDYtMS42NTgtLjc1M1YzLjIwNGExIDEgMCAwIDEgMS42NTktLjc1M2w1LjQ4IDQuNzk2YTEgMSAwIDAgMSAwIDEuNTA2elwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMC44cmVtXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIwLjhyZW1cIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktY2FyZXQtZG93bi1maWxsXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk03LjI0NyAxMS4xNEwyLjQ1MSA1LjY1OEMxLjg4NSA1LjAxMyAyLjM0NSA0IDMuMjA0IDRoOS41OTJhMSAxIDAgMCAxIC43NTMgMS42NTlsLTQuNzk2IDUuNDhhMSAxIDAgMCAxLTEuNTA2IDB6XCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2k+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tlZENoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXRlbS5pbmRldGVybWluYXRlXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiAoY2xpY2spPVwiaXRlbS5jaGVja2VkID0gIWl0ZW0uY2hlY2tlZDsgb25DaGVja2VkQ2hhbmdlKClcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZVxuICAgICNkZWZhdWx0SGVhZGVyVGVtcGxhdGVcbiAgICBsZXQtY29uZmlnPVwiY29uZmlnXCJcbiAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgIGxldC1vbkNvbGxhcHNlRXhwYW5kPVwib25Db2xsYXBzZUV4cGFuZFwiXG4gICAgbGV0LW9uQ2hlY2tlZENoYW5nZT1cIm9uQ2hlY2tlZENoYW5nZVwiXG4gICAgbGV0LW9uRmlsdGVyVGV4dENoYW5nZT1cIm9uRmlsdGVyVGV4dENoYW5nZVwiPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcuaGFzRmlsdGVyXCIgY2xhc3M9XCJyb3cgcm93LWZpbHRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpMThuLmdldEZpbHRlclBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyVGV4dFwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWx0ZXJUZXh0Q2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzRmlsdGVySXRlbXNcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZy5oYXNBbGxDaGVja0JveCB8fCBjb25maWcuaGFzQ29sbGFwc2VFeHBhbmRcIiBjbGFzcz1cInJvdyByb3ctYWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIiAqbmdJZj1cImNvbmZpZy5oYXNBbGxDaGVja0JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2VkQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXRlbS5pbmRldGVybWluYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIChjbGljayk9XCJpdGVtLmNoZWNrZWQgPSAhaXRlbS5jaGVja2VkOyBvbkNoZWNrZWRDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5nZXRBbGxDaGVja2JveFRleHQoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImNvbmZpZy5oYXNDb2xsYXBzZUV4cGFuZFwiIGNsYXNzPVwiZmxvYXQtcmlnaHQgZm9ybS1jaGVjay1sYWJlbFwiIChjbGljayk9XCJvbkNvbGxhcHNlRXhwYW5kKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgW3RpdGxlXT1cImkxOG4uZ2V0VG9vbHRpcENvbGxhcHNlRXhwYW5kVGV4dChpdGVtLmNvbGxhcHNlZClcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdTd2l0Y2hdPVwiaXRlbS5jb2xsYXBzZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiaSBiaS1hcnJvd3MtYW5nbGUtZXhwYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDEwLjAzNmEuNS41IDAgMCAxIC41LjV2My41aDMuNWEuNS41IDAgMCAxIDAgMWgtNGEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgLjUtLjV6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjM1NCA5LjY0NmEuNS41IDAgMCAxIDAgLjcwOGwtNC41IDQuNWEuNS41IDAgMCAxLS43MDgtLjcwOGw0LjUtNC41YS41LjUgMCAwIDEgLjcwOCAwem04LjUtOC41YS41LjUgMCAwIDEgMCAuNzA4bC00LjUgNC41YS41LjUgMCAwIDEtLjcwOC0uNzA4bDQuNS00LjVhLjUuNSAwIDAgMSAuNzA4IDB6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4wMzYgMS41YS41LjUgMCAwIDEgLjUtLjVoNGEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMSAxLTEgMFYyaC0zLjVhLjUuNSAwIDAgMS0uNS0uNXpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWFycm93cy1hbmdsZS1jb250cmFjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuNSAyLjAzNmEuNS41IDAgMCAxIC41LjV2My41aDMuNWEuNS41IDAgMCAxIDAgMWgtNGEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgLjUtLjV6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4zNTQgMS42NDZhLjUuNSAwIDAgMSAwIC43MDhsLTQuNSA0LjVhLjUuNSAwIDEgMS0uNzA4LS43MDhsNC41LTQuNWEuNS41IDAgMCAxIC43MDggMHptLTcuNSA3LjVhLjUuNSAwIDAgMSAwIC43MDhsLTQuNSA0LjVhLjUuNSAwIDAgMS0uNzA4LS43MDhsNC41LTQuNWEuNS41IDAgMCAxIC43MDggMHpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMDM2IDkuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAuNS41djRhLjUuNSAwIDAgMS0xIDBWMTBoLTMuNWEuNS41IDAgMCAxLS41LS41elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuaGFzRGl2aWRlclwiIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJ0cmVldmlldy1oZWFkZXJcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyVGVtcGxhdGUgfHwgZGVmYXVsdEhlYWRlclRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImhlYWRlclRlbXBsYXRlQ29udGV4dFwiPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbjxkaXYgW25nU3dpdGNoXT1cImhhc0ZpbHRlckl0ZW1zXCI+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIGNsYXNzPVwidHJlZXZpZXctY29udGFpbmVyXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwibWF4SGVpZ2h0XCI+XG4gICAgICAgIDxuZ3gtdHJlZXZpZXctaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVySXRlbXNcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwib25JdGVtQ2hlY2tlZENoYW5nZShpdGVtLCAkZXZlbnQpXCI+XG4gICAgICAgIDwvbmd4LXRyZWV2aWV3LWl0ZW0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cInRyZWV2aWV3LXRleHRcIj5cbiAgICAgICAge3sgaTE4bi5nZXRGaWx0ZXJOb0l0ZW1zRm91bmRUZXh0KCkgfX1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -5,6 +5,39 @@ import { TreeviewConfig } from '../../models/treeview-config';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "../../models/treeview-config";
|
|
7
7
|
import * as i2 from "@angular/common";
|
|
8
|
+
function TreeviewItemComponent_div_0_ng_template_1_Template(rf, ctx) { }
|
|
9
|
+
function TreeviewItemComponent_div_0_div_2_ngx_treeview_item_1_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementStart(0, "ngx-treeview-item", 5);
|
|
12
|
+
i0.ɵɵlistener("checkedChange", function TreeviewItemComponent_div_0_div_2_ngx_treeview_item_1_Template_ngx_treeview_item_checkedChange_0_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r6); const child_r4 = restoredCtx.$implicit; const ctx_r5 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r5.onChildCheckedChange(child_r4, $event)); });
|
|
13
|
+
i0.ɵɵelementEnd();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
const child_r4 = ctx.$implicit;
|
|
16
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
17
|
+
i0.ɵɵproperty("config", ctx_r3.config)("item", child_r4)("template", ctx_r3.template);
|
|
18
|
+
} }
|
|
19
|
+
function TreeviewItemComponent_div_0_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelementStart(0, "div");
|
|
21
|
+
i0.ɵɵtemplate(1, TreeviewItemComponent_div_0_div_2_ngx_treeview_item_1_Template, 1, 3, "ngx-treeview-item", 4);
|
|
22
|
+
i0.ɵɵelementEnd();
|
|
23
|
+
} if (rf & 2) {
|
|
24
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
25
|
+
i0.ɵɵadvance(1);
|
|
26
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.item.children);
|
|
27
|
+
} }
|
|
28
|
+
const _c0 = function (a0, a1, a2) { return { item: a0, onCollapseExpand: a1, onCheckedChange: a2 }; };
|
|
29
|
+
function TreeviewItemComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
31
|
+
i0.ɵɵtemplate(1, TreeviewItemComponent_div_0_ng_template_1_Template, 0, 0, "ng-template", 2);
|
|
32
|
+
i0.ɵɵtemplate(2, TreeviewItemComponent_div_0_div_2_Template, 2, 1, "div", 3);
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
36
|
+
i0.ɵɵadvance(1);
|
|
37
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.template)("ngTemplateOutletContext", i0.ɵɵpureFunction3(3, _c0, ctx_r0.item, ctx_r0.onCollapseExpand, ctx_r0.onCheckedChange));
|
|
38
|
+
i0.ɵɵadvance(1);
|
|
39
|
+
i0.ɵɵproperty("ngIf", !ctx_r0.item.collapsed);
|
|
40
|
+
} }
|
|
8
41
|
export class TreeviewItemComponent {
|
|
9
42
|
constructor(defaultConfig) {
|
|
10
43
|
this.defaultConfig = defaultConfig;
|
|
@@ -42,19 +75,23 @@ export class TreeviewItemComponent {
|
|
|
42
75
|
}
|
|
43
76
|
this.checkedChange.emit(checked);
|
|
44
77
|
}
|
|
45
|
-
/** @nocollapse */ static { this.ɵfac =
|
|
46
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵ
|
|
78
|
+
/** @nocollapse */ static { this.ɵfac = function TreeviewItemComponent_Factory(t) { return new (t || TreeviewItemComponent)(i0.ɵɵdirectiveInject(i1.TreeviewConfig)); }; }
|
|
79
|
+
/** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TreeviewItemComponent, selectors: [["ngx-treeview-item"]], inputs: { config: "config", template: "template", item: "item" }, outputs: { checkedChange: "checkedChange" }, decls: 1, vars: 1, consts: [["class", "treeview-item", 4, "ngIf"], [1, "treeview-item"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [4, "ngIf"], [3, "config", "item", "template", "checkedChange", 4, "ngFor", "ngForOf"], [3, "config", "item", "template", "checkedChange"]], template: function TreeviewItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
i0.ɵɵtemplate(0, TreeviewItemComponent_div_0_Template, 3, 7, "div", 0);
|
|
81
|
+
} if (rf & 2) {
|
|
82
|
+
i0.ɵɵproperty("ngIf", ctx.item);
|
|
83
|
+
} }, dependencies: [i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, TreeviewItemComponent], styles: ["[_nghost-%COMP%]{display:block}[_nghost-%COMP%] .treeview-item[_ngcontent-%COMP%]{white-space:nowrap}[_nghost-%COMP%] .treeview-item[_ngcontent-%COMP%] .treeview-item[_ngcontent-%COMP%]{margin-left:2rem}"] }); }
|
|
47
84
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TreeviewItemComponent, [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{ selector: 'ngx-treeview-item', template: "<div *ngIf=\"item\" class=\"treeview-item\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ item: item, onCollapseExpand: onCollapseExpand, onCheckedChange: onCheckedChange }\">\n </ng-template>\n <div *ngIf=\"!item.collapsed\">\n <ngx-treeview-item\n [config]=\"config\"\n *ngFor=\"let child of item.children\"\n [item]=\"child\"\n [template]=\"template\"\n (checkedChange)=\"onChildCheckedChange(child, $event)\">\n </ngx-treeview-item>\n </div>\n</div>\n", styles: [":host{display:block}:host .treeview-item{white-space:nowrap}:host .treeview-item .treeview-item{margin-left:2rem}\n"] }]
|
|
88
|
+
}], function () { return [{ type: i1.TreeviewConfig }]; }, { config: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], template: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], item: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], checkedChange: [{
|
|
95
|
+
type: Output
|
|
96
|
+
}] }); })();
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXctaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10cmVldmlldy9jb21wb25lbnRzL3RyZWV2aWV3LWl0ZW0vdHJlZXZpZXctaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10cmVldmlldy9jb21wb25lbnRzL3RyZWV2aWV3LWl0ZW0vdHJlZXZpZXctaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7SUNHdEQsNENBSzBEO0lBQXRELDBSQUFpQixlQUFBLDZDQUFtQyxDQUFBLElBQUM7SUFDekQsaUJBQW9COzs7O0lBTGhCLHNDQUFpQixrQkFBQSw2QkFBQTs7O0lBRnpCLDJCQUE2QjtJQUN6Qiw4R0FNb0I7SUFDeEIsaUJBQU07OztJQUxvQixlQUFnQjtJQUFoQiw4Q0FBZ0I7Ozs7SUFSOUMsOEJBQXdDO0lBQ3BDLDRGQUdjO0lBQ2QsNEVBUU07SUFDVixpQkFBTTs7O0lBWkUsZUFBNkI7SUFBN0Isa0RBQTZCLHFIQUFBO0lBRzNCLGVBQXFCO0lBQXJCLDZDQUFxQjs7QURNL0IsTUFBTSxPQUFPLHFCQUFxQjtJQU05QixZQUFvQixhQUE2QjtRQUE3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFGdkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBTXRELHFCQUFnQixHQUFHLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQy9DLENBQUMsQ0FBQztRQUVGLG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQ25CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDN0U7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFiRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQWNELG9CQUFvQixDQUFDLEtBQW1CLEVBQUUsT0FBZ0I7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUU7WUFDdEMsSUFBSSxXQUFXLEdBQVksSUFBSSxDQUFDO1lBQ2hDLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hDLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtvQkFDdEIsV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7aUJBQ25DO3FCQUFNLElBQUksV0FBVyxLQUFLLFNBQVMsQ0FBQyxPQUFPLEVBQUU7b0JBQzFDLFdBQVcsR0FBRyxTQUFTLENBQUM7b0JBQ3hCLE1BQU07aUJBQ1Q7YUFDSjtZQUVELElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtnQkFDdEIsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUN2QjtZQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUM7YUFDbkM7U0FDSjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7eUdBNUNRLHFCQUFxQjttR0FBckIscUJBQXFCO1lDWGxDLHNFQWNNOztZQWRBLCtCQUFVO3NFRFdILHFCQUFxQjs7dUZBQXJCLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNJLG1CQUFtQjtpRUFLcEIsTUFBTTtrQkFBZCxLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLElBQUk7a0JBQVosS0FBSztZQUNJLGFBQWE7a0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFRyZWV2aWV3SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy90cmVldmlldy1pdGVtJztcbmltcG9ydCB7IFRyZWV2aWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyZWV2aWV3LWNvbmZpZyc7XG5pbXBvcnQgeyBUcmVldmlld0l0ZW1UZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJlZXZpZXctaXRlbS10ZW1wbGF0ZS1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtdHJlZXZpZXctaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWV2aWV3LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RyZWV2aWV3LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZXZpZXdJdGVtQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjb25maWc6IFRyZWV2aWV3Q29uZmlnO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUcmVldmlld0l0ZW1UZW1wbGF0ZUNvbnRleHQ+O1xuICAgIEBJbnB1dCgpIGl0ZW06IFRyZWV2aWV3SXRlbTtcbiAgICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVmYXVsdENvbmZpZzogVHJlZXZpZXdDb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmRlZmF1bHRDb25maWc7XG4gICAgfVxuXG4gICAgb25Db2xsYXBzZUV4cGFuZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtLmNvbGxhcHNlZCA9ICF0aGlzLml0ZW0uY29sbGFwc2VkO1xuICAgIH07XG5cbiAgICBvbkNoZWNrZWRDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoZWNrZWQgPSB0aGlzLml0ZW0uY2hlY2tlZDtcbiAgICAgICAgaWYgKCFpc05pbCh0aGlzLml0ZW0uY2hpbGRyZW4pICYmICF0aGlzLmNvbmZpZy5kZWNvdXBsZUNoaWxkRnJvbVBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5pdGVtLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiBjaGlsZC5zZXRDaGVja2VkUmVjdXJzaXZlKGNoZWNrZWQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdChjaGVja2VkKTtcbiAgICB9O1xuXG4gICAgb25DaGlsZENoZWNrZWRDaGFuZ2UoY2hpbGQ6IFRyZWV2aWV3SXRlbSwgY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLmRlY291cGxlQ2hpbGRGcm9tUGFyZW50KSB7XG4gICAgICAgICAgICBsZXQgaXRlbUNoZWNrZWQ6IGJvb2xlYW4gPSBudWxsO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZEl0ZW0gb2YgdGhpcy5pdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1DaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1DaGVja2VkID0gY2hpbGRJdGVtLmNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtQ2hlY2tlZCAhPT0gY2hpbGRJdGVtLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUNoZWNrZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW1DaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaXRlbUNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbS5jaGVja2VkICE9PSBpdGVtQ2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbS5jaGVja2VkID0gaXRlbUNoZWNrZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdChjaGVja2VkKTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiaXRlbVwiIGNsYXNzPVwidHJlZXZpZXctaXRlbVwiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0sIG9uQ29sbGFwc2VFeHBhbmQ6IG9uQ29sbGFwc2VFeHBhbmQsIG9uQ2hlY2tlZENoYW5nZTogb25DaGVja2VkQ2hhbmdlIH1cIj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCIhaXRlbS5jb2xsYXBzZWRcIj5cbiAgICAgICAgPG5neC10cmVldmlldy1pdGVtXG4gICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiXG4gICAgICAgICAgICBbaXRlbV09XCJjaGlsZFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwidGVtcGxhdGVcIlxuICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwib25DaGlsZENoZWNrZWRDaGFuZ2UoY2hpbGQsICRldmVudClcIj5cbiAgICAgICAgPC9uZ3gtdHJlZXZpZXctaXRlbT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|