@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/constants/autocomplete.const.d.ts +4 -0
- package/core/constants/context-selector.const.d.ts +1 -0
- package/core/constants/gantt.const.d.ts +7 -0
- package/core/constants/hyperlink.const.d.ts +1 -0
- package/core/constants/inline-edit.const.d.ts +4 -0
- package/core/constants/kanban.const.d.ts +2 -0
- package/core/constants/pin-code-field.const.d.ts +5 -0
- package/core/constants/rating-scale.const.d.ts +1 -0
- package/core/constants/spotlight.const.d.ts +8 -0
- package/core/constants/star-rating.const.d.ts +4 -0
- package/core/constants/stepper.const.d.ts +1 -0
- package/core/constants/tiered-menu.const.d.ts +3 -0
- package/core/types/autocomplete.type.d.ts +9 -0
- package/core/types/chat.type.d.ts +12 -0
- package/core/types/checkbox-list.type.d.ts +12 -0
- package/core/types/gantt.type.d.ts +22 -0
- package/core/types/grid-menu.type.d.ts +13 -0
- package/core/types/hyperlink.type.d.ts +1 -0
- package/core/types/image-cropper.type.d.ts +20 -0
- package/core/types/inline-edit.type.d.ts +26 -0
- package/core/types/kanban.type.d.ts +36 -0
- package/core/types/panel.type.d.ts +16 -0
- package/core/types/profile-picture-picker.type.d.ts +9 -0
- package/core/types/rating-scale.type.d.ts +5 -0
- package/core/types/select-button.type.d.ts +1 -0
- package/core/types/spotlight.type.d.ts +34 -0
- package/core/types/star-rating.type.d.ts +1 -0
- package/core/types/stepper.type.d.ts +20 -0
- package/core/types/table-column.type.d.ts +3 -1
- package/core/types/table-options.type.d.ts +8 -2
- package/core/types/table.type.d.ts +1 -1
- package/core/types/tiered-menu.type.d.ts +16 -0
- package/core/types/tree.type.d.ts +25 -0
- package/core/types/workspace-switch.type.d.ts +6 -0
- package/core/utils/body-scroll.util.d.ts +2 -0
- package/core/utils/roving-focus.util.d.ts +2 -0
- package/core/utils/selection.util.d.ts +3 -0
- package/core/utils/tree.util.d.ts +4 -0
- package/esm2022/core/constants/autocomplete.const.mjs +5 -0
- package/esm2022/core/constants/context-selector.const.mjs +2 -0
- package/esm2022/core/constants/gantt.const.mjs +7 -0
- package/esm2022/core/constants/hyperlink.const.mjs +2 -1
- package/esm2022/core/constants/inline-edit.const.mjs +5 -0
- package/esm2022/core/constants/kanban.const.mjs +3 -0
- package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
- package/esm2022/core/constants/rating-scale.const.mjs +2 -0
- package/esm2022/core/constants/spotlight.const.mjs +9 -0
- package/esm2022/core/constants/star-rating.const.mjs +5 -0
- package/esm2022/core/constants/stepper.const.mjs +2 -0
- package/esm2022/core/constants/table.const.mjs +2 -2
- package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
- package/esm2022/core/types/autocomplete.type.mjs +2 -0
- package/esm2022/core/types/chat.type.mjs +2 -0
- package/esm2022/core/types/checkbox-list.type.mjs +2 -0
- package/esm2022/core/types/gantt.type.mjs +2 -0
- package/esm2022/core/types/grid-menu.type.mjs +2 -0
- package/esm2022/core/types/hyperlink.type.mjs +1 -1
- package/esm2022/core/types/image-cropper.type.mjs +2 -0
- package/esm2022/core/types/inline-edit.type.mjs +2 -0
- package/esm2022/core/types/kanban.type.mjs +2 -0
- package/esm2022/core/types/panel.type.mjs +9 -0
- package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
- package/esm2022/core/types/rating-scale.type.mjs +2 -0
- package/esm2022/core/types/select-button.type.mjs +1 -1
- package/esm2022/core/types/spotlight.type.mjs +2 -0
- package/esm2022/core/types/star-rating.type.mjs +2 -0
- package/esm2022/core/types/stepper.type.mjs +7 -0
- package/esm2022/core/types/table-column.type.mjs +1 -1
- package/esm2022/core/types/table-options.type.mjs +1 -1
- package/esm2022/core/types/table.type.mjs +1 -1
- package/esm2022/core/types/tiered-menu.type.mjs +2 -0
- package/esm2022/core/types/tree.type.mjs +2 -0
- package/esm2022/core/types/workspace-switch.type.mjs +2 -0
- package/esm2022/core/utils/body-scroll.util.mjs +19 -0
- package/esm2022/core/utils/combobox.util.mjs +3 -2
- package/esm2022/core/utils/roving-focus.util.mjs +20 -0
- package/esm2022/core/utils/selection.util.mjs +13 -0
- package/esm2022/core/utils/string.util.mjs +8 -3
- package/esm2022/core/utils/tree.util.mjs +23 -0
- package/esm2022/features/accordion/accordion.component.mjs +2 -2
- package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
- package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
- package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
- package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2022/features/card-list/card/card.component.mjs +63 -99
- package/esm2022/features/chat/chat.component.mjs +126 -0
- package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
- package/esm2022/features/combobox/combobox.component.mjs +20 -8
- package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
- package/esm2022/features/filters/filters.component.mjs +1 -1
- package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
- package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
- package/esm2022/features/gantt/gantt.component.mjs +89 -0
- package/esm2022/features/gantt/gantt.engine.mjs +662 -0
- package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
- package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
- package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
- package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
- package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
- package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
- package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
- package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
- package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
- package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
- package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
- package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
- package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
- package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
- package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
- package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
- package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
- package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
- package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
- package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
- package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
- package/esm2022/features/kanban/kanban.component.mjs +198 -0
- package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
- package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
- package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
- package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
- package/esm2022/features/paginator/paginator.component.mjs +8 -3
- package/esm2022/features/panel/panel.component.mjs +43 -11
- package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
- package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
- package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
- package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
- package/esm2022/features/select-button/select-button.component.mjs +7 -4
- package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
- package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
- package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
- package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
- package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
- package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
- package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
- package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
- package/esm2022/features/stepper/stepper.component.mjs +86 -0
- package/esm2022/features/switch/switch.component.mjs +12 -8
- package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
- package/esm2022/features/tab/tab.component.mjs +4 -4
- package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
- package/esm2022/features/table/table.component.mjs +220 -29
- package/esm2022/features/table/utils/table-data.util.mjs +71 -8
- package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
- package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
- package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
- package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
- package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
- package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
- package/esm2022/features/tree/tree.component.mjs +211 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
- package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
- package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
- package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
- package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
- package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
- package/esm2022/locales/en.json +351 -3
- package/esm2022/locales/es-CO.json +351 -3
- package/esm2022/locales/pt.json +351 -3
- package/esm2022/providers/features.provider.mjs +40 -4
- package/esm2022/public-api.mjs +56 -3
- package/features/accordion/accordion.component.d.ts +1 -1
- package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
- package/features/autocomplete/autocomplete.component.d.ts +102 -0
- package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
- package/features/card-list/card/card.component.d.ts +14 -34
- package/features/chat/chat.component.d.ts +31 -0
- package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
- package/features/combobox/combobox.component.d.ts +2 -1
- package/features/context-selector/context-selector.component.d.ts +37 -0
- package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
- package/features/gantt/gantt-date.utils.d.ts +36 -0
- package/features/gantt/gantt.component.d.ts +24 -0
- package/features/gantt/gantt.engine.d.ts +52 -0
- package/features/grid-menu/grid-menu.component.d.ts +29 -0
- package/features/hyperlink/hyperlink.component.d.ts +2 -1
- package/features/image-cropper/image-cropper.component.d.ts +43 -0
- package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
- package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
- package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
- package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
- package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
- package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
- package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
- package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
- package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
- package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
- package/features/inline-edit/inline-edit.component.d.ts +13 -0
- package/features/interactive-content/interactive-content.directive.d.ts +31 -0
- package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
- package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
- package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
- package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
- package/features/kanban/kanban.component.d.ts +32 -0
- package/features/kanban/services/kanban-event.service.d.ts +15 -0
- package/features/loading-state/loading-state.component.d.ts +0 -2
- package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
- package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
- package/features/panel/panel.component.d.ts +12 -3
- package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
- package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
- package/features/rating-scale/rating-scale.component.d.ts +24 -0
- package/features/select-button/select-button.component.d.ts +2 -1
- package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
- package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
- package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
- package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
- package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
- package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
- package/features/spotlight/spotlight.component.d.ts +59 -0
- package/features/star-rating/star-rating.component.d.ts +26 -0
- package/features/stepper/stepper.component.d.ts +23 -0
- package/features/switch/switch.component.d.ts +2 -1
- package/features/tab/tab.component.d.ts +1 -1
- package/features/table/components/table-cell-content.component.d.ts +4 -3
- package/features/table/table.component.d.ts +40 -5
- package/features/table/utils/table-data.util.d.ts +1 -0
- package/features/table/utils/table-layout.util.d.ts +1 -0
- package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
- package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
- package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
- package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
- package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
- package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
- package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
- package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
- package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
- package/features/tree/tree.component.d.ts +37 -0
- package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
- package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
- package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
- package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
- package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
- package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
- package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
- package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
- package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
- package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
- package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +8 -8
- package/public-api.d.ts +72 -2
- package/src/locales/en.json +353 -15
- package/src/locales/es-CO.json +352 -14
- package/src/locales/pt.json +352 -14
- package/styles/sdc-global-variables.scss +1 -1
- package/styles.css +1 -1
- /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { animate, query, stagger, style, transition, trigger } from '@angular/animations';
|
|
3
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, forwardRef, inject } from '@angular/core';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
export class TreeNodeItemComponent {
|
|
9
|
+
cdr = inject(ChangeDetectorRef);
|
|
10
|
+
translate = inject(TranslateService);
|
|
11
|
+
ariaLevel = 1;
|
|
12
|
+
showCheckbox = false;
|
|
13
|
+
treeNodeItem;
|
|
14
|
+
treeNodeItemClicked = new EventEmitter();
|
|
15
|
+
treeNodeEdit = new EventEmitter();
|
|
16
|
+
nodeExpanded = new EventEmitter();
|
|
17
|
+
nodeCollapsed = new EventEmitter();
|
|
18
|
+
input;
|
|
19
|
+
get hasChildren() {
|
|
20
|
+
return !!this.treeNodeItem?.children?.length;
|
|
21
|
+
}
|
|
22
|
+
get editable() {
|
|
23
|
+
return this.treeNodeItem?.editable ?? false;
|
|
24
|
+
}
|
|
25
|
+
get checkboxAriaLabel() {
|
|
26
|
+
return `${this.translate.instant('platform.datacore.tree.select')} ${this.treeNodeItem.label}`;
|
|
27
|
+
}
|
|
28
|
+
get expandAriaLabel() {
|
|
29
|
+
return this.translate.instant('platform.datacore.tree.expand');
|
|
30
|
+
}
|
|
31
|
+
get collapseAriaLabel() {
|
|
32
|
+
return this.translate.instant('platform.datacore.tree.collapse');
|
|
33
|
+
}
|
|
34
|
+
get editInputAriaLabel() {
|
|
35
|
+
return this.translate.instant('platform.datacore.tree.edit_name');
|
|
36
|
+
}
|
|
37
|
+
get editButtonAriaLabel() {
|
|
38
|
+
return this.translate.instant('platform.datacore.tree.edit');
|
|
39
|
+
}
|
|
40
|
+
expandNode() {
|
|
41
|
+
if (this.hasChildren && !this.treeNodeItem.isExpanded) {
|
|
42
|
+
this.toggleExpanded(this.treeNodeItem);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
collapseNode() {
|
|
46
|
+
if (this.hasChildren && this.treeNodeItem.isExpanded) {
|
|
47
|
+
this.toggleExpanded(this.treeNodeItem);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
handleCheckboxChange(event, node) {
|
|
51
|
+
event.stopPropagation();
|
|
52
|
+
this.treeNodeItemClicked.emit({ item: node, event });
|
|
53
|
+
}
|
|
54
|
+
onCheckboxKeydown(event, node) {
|
|
55
|
+
if (event.key !== 'Enter' && event.key !== ' ') {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
event.preventDefault();
|
|
59
|
+
event.stopPropagation();
|
|
60
|
+
this.treeNodeItemClicked.emit({ item: node, event });
|
|
61
|
+
}
|
|
62
|
+
handleTreeNodeItemClick(event, treeNodeItem) {
|
|
63
|
+
this.treeNodeItemClicked.emit({ item: treeNodeItem ?? this.treeNodeItem, event });
|
|
64
|
+
}
|
|
65
|
+
handleTreeNodeItemKeyboardActivate(event) {
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
this.handleTreeNodeItemClick(event);
|
|
68
|
+
}
|
|
69
|
+
toggleExpanded(treeNodeItem) {
|
|
70
|
+
treeNodeItem.isExpanded = !treeNodeItem.isExpanded;
|
|
71
|
+
if (treeNodeItem.isExpanded) {
|
|
72
|
+
this.nodeExpanded.emit(treeNodeItem);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.nodeCollapsed.emit(treeNodeItem);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
toggleEditing(event) {
|
|
79
|
+
event.stopPropagation();
|
|
80
|
+
this.treeNodeItem.isEditing = !this.treeNodeItem.isEditing;
|
|
81
|
+
this.treeNodeItem.editNewValue = this.treeNodeItem.label;
|
|
82
|
+
this.cdr.detectChanges();
|
|
83
|
+
this.input?.nativeElement.focus();
|
|
84
|
+
}
|
|
85
|
+
cancelEdit(event) {
|
|
86
|
+
event.stopPropagation();
|
|
87
|
+
this.treeNodeItem.isEditing = false;
|
|
88
|
+
this.treeNodeItem.editNewValue = '';
|
|
89
|
+
this.treeNodeItem.editPreviousValue = '';
|
|
90
|
+
this.cdr.detectChanges();
|
|
91
|
+
}
|
|
92
|
+
saveEdit(event) {
|
|
93
|
+
event.stopPropagation();
|
|
94
|
+
this.treeNodeItem.isEditing = false;
|
|
95
|
+
if (!this.treeNodeItem.editNewValue) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
this.treeNodeItem.editPreviousValue = this.treeNodeItem.label;
|
|
99
|
+
this.treeNodeItem.label = this.treeNodeItem.editNewValue;
|
|
100
|
+
const revertAction = () => {
|
|
101
|
+
this.treeNodeItem.label = this.treeNodeItem.editPreviousValue ?? this.treeNodeItem.label;
|
|
102
|
+
this.treeNodeItem.isEditing = false;
|
|
103
|
+
this.cdr.detectChanges();
|
|
104
|
+
};
|
|
105
|
+
this.treeNodeEdit.emit({
|
|
106
|
+
revertAction,
|
|
107
|
+
item: this.treeNodeItem,
|
|
108
|
+
newValue: this.treeNodeItem.editNewValue,
|
|
109
|
+
previousValue: this.treeNodeItem.editPreviousValue ?? ''
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeNodeItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TreeNodeItemComponent, isStandalone: true, selector: "sdc-tree-node-item", inputs: { ariaLevel: "ariaLevel", showCheckbox: "showCheckbox", treeNodeItem: "treeNodeItem" }, outputs: { treeNodeItemClicked: "treeNodeItemClicked", treeNodeEdit: "treeNodeEdit", nodeExpanded: "nodeExpanded", nodeCollapsed: "nodeCollapsed" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (treeNodeItem) {\n<div\n class=\"sdc-tree-node-item\"\n role=\"treeitem\"\n tabindex=\"0\"\n [class.sdc-tree-node-item--selected]=\"treeNodeItem.checked\"\n [class.sdc-tree-node-item--selectable]=\"treeNodeItem.checked === true || treeNodeItem.checked === null\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true ? 'true' : 'false'\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel\"\n (keydown.enter)=\"handleTreeNodeItemKeyboardActivate($event)\"\n (keydown.space)=\"handleTreeNodeItemKeyboardActivate($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n>\n @if (hasChildren) {\n <button\n type=\"button\"\n class=\"sdc-tree-node-item__arrow\"\n (click)=\"$event.stopPropagation(); toggleExpanded(treeNodeItem)\"\n [attr.aria-label]=\"treeNodeItem.isExpanded ? collapseAriaLabel : expandAriaLabel\"\n >\n @if (!treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n }\n @if (treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n }\n </button>\n }\n\n <div\n class=\"sdc-tree-node-item__content\"\n (click)=\"handleTreeNodeItemClick($event)\"\n (keydown.enter)=\"handleTreeNodeItemKeyboardActivate($event)\"\n (keydown.space)=\"handleTreeNodeItemKeyboardActivate($event)\"\n >\n @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n <span class=\"sdc-tree-node-item__icon\">\n @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n <i [class]=\"treeNodeItem.icon\"></i>\n }\n @if (treeNodeItem.isEditing) {\n <button\n type=\"button\"\n class=\"sdc-tree-node-item__edit-icon\"\n (click)=\"saveEdit($event)\"\n >\n <i class=\"fas fa-edit\"></i>\n </button>\n }\n </span>\n }\n\n @if (showCheckbox && !treeNodeItem.isEditing) {\n <span class=\"sdc-tree-node-item__checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-label]=\"checkboxAriaLabel\"\n tabindex=\"0\"\n (click)=\"handleCheckboxChange($event, treeNodeItem)\"\n (keydown)=\"onCheckboxKeydown($event, treeNodeItem)\"\n />\n </span>\n }\n\n <span class=\"sdc-tree-node-item__label\">\n @if (treeNodeItem.isEditing) {\n <input\n #input\n type=\"text\"\n class=\"sdc-tree-node-item__input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n [attr.aria-label]=\"editInputAriaLabel\"\n aria-live=\"polite\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n } @else {\n {{ treeNodeItem.label }}\n }\n </span>\n\n @if (editable) {\n <button\n type=\"button\"\n class=\"sdc-tree-node-item__editable\"\n [attr.aria-label]=\"editButtonAriaLabel\"\n (click)=\"toggleEditing($event)\"\n >\n <i class=\"fas fa-pencil-alt\"></i>\n </button>\n }\n </div>\n</div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n<div\n @fadeExpand\n class=\"sdc-tree-node-item__children\"\n @childrenAnimation\n>\n @for (child of treeNodeItem.children; track child.id) {\n <sdc-tree-node-item\n class=\"sdc-tree-node-item__child\"\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel + 1\"\n (treeNodeItemClicked)=\"treeNodeItemClicked.emit($event)\"\n (treeNodeEdit)=\"treeNodeEdit.emit($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n ></sdc-tree-node-item>\n }\n</div>\n}\n", styles: [".sdc-tree-node-item{display:flex;width:100%;cursor:pointer}.sdc-tree-node-item__arrow{display:inline-flex;align-items:center;justify-content:center;padding:.1875rem .5625rem;border:0;background:transparent;cursor:pointer}.sdc-tree-node-item__content{display:flex;flex:1;align-items:center;padding:.1875rem 0}.sdc-tree-node-item__content:hover{background:#f1f7f8}.sdc-tree-node-item__icon,.sdc-tree-node-item__checkbox{display:inline-flex;align-items:center;padding-right:.5625rem}.sdc-tree-node-item__label{display:flex;flex:1;color:#212533;font-size:.875rem;line-height:1.5}.sdc-tree-node-item__editable{display:inline-flex;align-items:center;justify-content:center;padding:.5625rem;border:0;background:transparent;cursor:pointer}.sdc-tree-node-item__input{width:100%}.sdc-tree-node-item--selectable .sdc-tree-node-item__label{font-weight:700}.sdc-tree-node-item--selected .sdc-tree-node-item__content{background:#d5e8ec}.sdc-tree-node-item__children{display:flex;flex-direction:column;gap:.3125rem;overflow:hidden;padding-left:2.2em}.sdc-tree-node-item__child:first-child{padding-top:.3125rem}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => TreeNodeItemComponent), selector: "sdc-tree-node-item", inputs: ["ariaLevel", "showCheckbox", "treeNodeItem"], outputs: ["treeNodeItemClicked", "treeNodeEdit", "nodeExpanded", "nodeCollapsed"] }, { kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "ngmodule", type: i0.forwardRef(() => FormsModule) }, { kind: "directive", type: i0.forwardRef(() => i1.DefaultValueAccessor), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i0.forwardRef(() => i1.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i1.NgModel), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
|
|
114
|
+
trigger('fadeExpand', [
|
|
115
|
+
transition(':enter', [
|
|
116
|
+
style({ height: '0px', opacity: 0, overflow: 'hidden' }),
|
|
117
|
+
animate('200ms ease-out', style({ height: '*', opacity: 1 }))
|
|
118
|
+
]),
|
|
119
|
+
transition(':leave', [animate('150ms ease-in', style({ height: '0px', opacity: 0 }))])
|
|
120
|
+
]),
|
|
121
|
+
trigger('childrenAnimation', [
|
|
122
|
+
transition(':enter', [
|
|
123
|
+
query(':enter', [
|
|
124
|
+
style({ opacity: 0, transform: 'translateY(-10px)' }),
|
|
125
|
+
stagger(60, [animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))])
|
|
126
|
+
], { optional: true })
|
|
127
|
+
])
|
|
128
|
+
])
|
|
129
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
130
|
+
}
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeNodeItemComponent, decorators: [{
|
|
132
|
+
type: Component,
|
|
133
|
+
args: [{ selector: 'sdc-tree-node-item', standalone: true, imports: [CommonModule, FormsModule, forwardRef(() => TreeNodeItemComponent)], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, animations: [
|
|
134
|
+
trigger('fadeExpand', [
|
|
135
|
+
transition(':enter', [
|
|
136
|
+
style({ height: '0px', opacity: 0, overflow: 'hidden' }),
|
|
137
|
+
animate('200ms ease-out', style({ height: '*', opacity: 1 }))
|
|
138
|
+
]),
|
|
139
|
+
transition(':leave', [animate('150ms ease-in', style({ height: '0px', opacity: 0 }))])
|
|
140
|
+
]),
|
|
141
|
+
trigger('childrenAnimation', [
|
|
142
|
+
transition(':enter', [
|
|
143
|
+
query(':enter', [
|
|
144
|
+
style({ opacity: 0, transform: 'translateY(-10px)' }),
|
|
145
|
+
stagger(60, [animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))])
|
|
146
|
+
], { optional: true })
|
|
147
|
+
])
|
|
148
|
+
])
|
|
149
|
+
], template: "@if (treeNodeItem) {\n<div\n class=\"sdc-tree-node-item\"\n role=\"treeitem\"\n tabindex=\"0\"\n [class.sdc-tree-node-item--selected]=\"treeNodeItem.checked\"\n [class.sdc-tree-node-item--selectable]=\"treeNodeItem.checked === true || treeNodeItem.checked === null\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true ? 'true' : 'false'\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel\"\n (keydown.enter)=\"handleTreeNodeItemKeyboardActivate($event)\"\n (keydown.space)=\"handleTreeNodeItemKeyboardActivate($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n>\n @if (hasChildren) {\n <button\n type=\"button\"\n class=\"sdc-tree-node-item__arrow\"\n (click)=\"$event.stopPropagation(); toggleExpanded(treeNodeItem)\"\n [attr.aria-label]=\"treeNodeItem.isExpanded ? collapseAriaLabel : expandAriaLabel\"\n >\n @if (!treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n }\n @if (treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n }\n </button>\n }\n\n <div\n class=\"sdc-tree-node-item__content\"\n (click)=\"handleTreeNodeItemClick($event)\"\n (keydown.enter)=\"handleTreeNodeItemKeyboardActivate($event)\"\n (keydown.space)=\"handleTreeNodeItemKeyboardActivate($event)\"\n >\n @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n <span class=\"sdc-tree-node-item__icon\">\n @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n <i [class]=\"treeNodeItem.icon\"></i>\n }\n @if (treeNodeItem.isEditing) {\n <button\n type=\"button\"\n class=\"sdc-tree-node-item__edit-icon\"\n (click)=\"saveEdit($event)\"\n >\n <i class=\"fas fa-edit\"></i>\n </button>\n }\n </span>\n }\n\n @if (showCheckbox && !treeNodeItem.isEditing) {\n <span class=\"sdc-tree-node-item__checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-label]=\"checkboxAriaLabel\"\n tabindex=\"0\"\n (click)=\"handleCheckboxChange($event, treeNodeItem)\"\n (keydown)=\"onCheckboxKeydown($event, treeNodeItem)\"\n />\n </span>\n }\n\n <span class=\"sdc-tree-node-item__label\">\n @if (treeNodeItem.isEditing) {\n <input\n #input\n type=\"text\"\n class=\"sdc-tree-node-item__input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n [attr.aria-label]=\"editInputAriaLabel\"\n aria-live=\"polite\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n } @else {\n {{ treeNodeItem.label }}\n }\n </span>\n\n @if (editable) {\n <button\n type=\"button\"\n class=\"sdc-tree-node-item__editable\"\n [attr.aria-label]=\"editButtonAriaLabel\"\n (click)=\"toggleEditing($event)\"\n >\n <i class=\"fas fa-pencil-alt\"></i>\n </button>\n }\n </div>\n</div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n<div\n @fadeExpand\n class=\"sdc-tree-node-item__children\"\n @childrenAnimation\n>\n @for (child of treeNodeItem.children; track child.id) {\n <sdc-tree-node-item\n class=\"sdc-tree-node-item__child\"\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel + 1\"\n (treeNodeItemClicked)=\"treeNodeItemClicked.emit($event)\"\n (treeNodeEdit)=\"treeNodeEdit.emit($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n ></sdc-tree-node-item>\n }\n</div>\n}\n", styles: [".sdc-tree-node-item{display:flex;width:100%;cursor:pointer}.sdc-tree-node-item__arrow{display:inline-flex;align-items:center;justify-content:center;padding:.1875rem .5625rem;border:0;background:transparent;cursor:pointer}.sdc-tree-node-item__content{display:flex;flex:1;align-items:center;padding:.1875rem 0}.sdc-tree-node-item__content:hover{background:#f1f7f8}.sdc-tree-node-item__icon,.sdc-tree-node-item__checkbox{display:inline-flex;align-items:center;padding-right:.5625rem}.sdc-tree-node-item__label{display:flex;flex:1;color:#212533;font-size:.875rem;line-height:1.5}.sdc-tree-node-item__editable{display:inline-flex;align-items:center;justify-content:center;padding:.5625rem;border:0;background:transparent;cursor:pointer}.sdc-tree-node-item__input{width:100%}.sdc-tree-node-item--selectable .sdc-tree-node-item__label{font-weight:700}.sdc-tree-node-item--selected .sdc-tree-node-item__content{background:#d5e8ec}.sdc-tree-node-item__children{display:flex;flex-direction:column;gap:.3125rem;overflow:hidden;padding-left:2.2em}.sdc-tree-node-item__child:first-child{padding-top:.3125rem}\n"] }]
|
|
150
|
+
}], propDecorators: { ariaLevel: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], showCheckbox: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}], treeNodeItem: [{
|
|
155
|
+
type: Input,
|
|
156
|
+
args: [{ required: true }]
|
|
157
|
+
}], treeNodeItemClicked: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], treeNodeEdit: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}], nodeExpanded: [{
|
|
162
|
+
type: Output
|
|
163
|
+
}], nodeCollapsed: [{
|
|
164
|
+
type: Output
|
|
165
|
+
}], input: [{
|
|
166
|
+
type: ViewChild,
|
|
167
|
+
args: ['input', { read: ElementRef }]
|
|
168
|
+
}] } });
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90cmVlL2NvbXBvbmVudHMvdHJlZS1ub2RlLWl0ZW0vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90cmVlL2NvbXBvbmVudHMvdHJlZS1ub2RlLWl0ZW0vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBa0N2RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2YsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU3QyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNILFlBQVksQ0FBd0I7SUFFckQsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQWdELENBQUM7SUFDdkYsWUFB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Qzs2QkFDOUQsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDdkYsQ0FBQzt3QkFDRixPQUFPLENBQUMsbUJBQW1CLEVBQUU7NEJBQzNCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FDSCxRQUFRLEVBQ1I7b0NBQ0UsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztvQ0FDckQsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQ0FDNUYsRUFDRCxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FDbkI7NkJBQ0YsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzhCQU1RLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDcUIsWUFBWTtzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWYsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUU2QyxLQUFLO3NCQUF4RCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYW5pbWF0ZSwgcXVlcnksIHN0YWdnZXIsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbFRyZWVOb2RlSXRlbSwgVHJlZU5vZGVFZGl0IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS90eXBlcy90cmVlLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtdHJlZS1ub2RlLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBUcmVlTm9kZUl0ZW1Db21wb25lbnQpXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtbm9kZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZmFkZUV4cGFuZCcsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvcGFjaXR5OiAwLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW2FuaW1hdGUoJzE1MG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAgfSkpXSlcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdjaGlsZHJlbkFuaW1hdGlvbicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgcXVlcnkoXG4gICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSksXG4gICAgICAgICAgICBzdGFnZ2VyKDYwLCBbYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKV0pXG4gICAgICAgICAgXSxcbiAgICAgICAgICB7IG9wdGlvbmFsOiB0cnVlIH1cbiAgICAgICAgKVxuICAgICAgXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVOb2RlSXRlbUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgQElucHV0KCkgYXJpYUxldmVsID0gMTtcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ID0gZmFsc2U7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRyZWVOb2RlSXRlbSE6IEludGVybmFsVHJlZU5vZGVJdGVtO1xuXG4gIEBPdXRwdXQoKSB0cmVlTm9kZUl0ZW1DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtOyBldmVudDogRXZlbnQgfT4oKTtcbiAgQE91dHB1dCgpIHRyZWVOb2RlRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8VHJlZU5vZGVFZGl0PigpO1xuICBAT3V0cHV0KCkgbm9kZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJbnRlcm5hbFRyZWVOb2RlSXRlbT4oKTtcbiAgQE91dHB1dCgpIG5vZGVDb2xsYXBzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEludGVybmFsVHJlZU5vZGVJdGVtPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByb3RlY3RlZCBpbnB1dD86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgcHJvdGVjdGVkIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRyZWVOb2RlSXRlbT8uY2hpbGRyZW4/Lmxlbmd0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHJlZU5vZGVJdGVtPy5lZGl0YWJsZSA/PyBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY2hlY2tib3hBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZGF0YWNvcmUudHJlZS5zZWxlY3QnKX0gJHt0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbH1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBleHBhbmRBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZGF0YWNvcmUudHJlZS5leHBhbmQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY29sbGFwc2VBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZGF0YWNvcmUudHJlZS5jb2xsYXBzZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBlZGl0SW5wdXRBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZGF0YWNvcmUudHJlZS5lZGl0X25hbWUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZWRpdEJ1dHRvbkFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5kYXRhY29yZS50cmVlLmVkaXQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleHBhbmROb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLnRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKHRoaXMudHJlZU5vZGVJdGVtKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY29sbGFwc2VOb2RlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmIHRoaXMudHJlZU5vZGVJdGVtLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQodGhpcy50cmVlTm9kZUl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDaGVja2JveENoYW5nZShldmVudDogRXZlbnQsIG5vZGU6IEludGVybmFsVHJlZU5vZGVJdGVtKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy50cmVlTm9kZUl0ZW1DbGlja2VkLmVtaXQoeyBpdGVtOiBub2RlLCBldmVudCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoZWNrYm94S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgbm9kZTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmIGV2ZW50LmtleSAhPT0gJyAnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdCh7IGl0ZW06IG5vZGUsIGV2ZW50IH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVRyZWVOb2RlSXRlbUNsaWNrKGV2ZW50OiBFdmVudCwgdHJlZU5vZGVJdGVtPzogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdCh7IGl0ZW06IHRyZWVOb2RlSXRlbSA/PyB0aGlzLnRyZWVOb2RlSXRlbSwgZXZlbnQgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVHJlZU5vZGVJdGVtS2V5Ym9hcmRBY3RpdmF0ZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaGFuZGxlVHJlZU5vZGVJdGVtQ2xpY2soZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUV4cGFuZGVkKHRyZWVOb2RlSXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pOiB2b2lkIHtcbiAgICB0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCA9ICF0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZDtcblxuICAgIGlmICh0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy5ub2RlRXhwYW5kZWQuZW1pdCh0cmVlTm9kZUl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vZGVDb2xsYXBzZWQuZW1pdCh0cmVlTm9kZUl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVFZGl0aW5nKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZyA9ICF0aGlzLnRyZWVOb2RlSXRlbS5pc0VkaXRpbmc7XG4gICAgdGhpcy50cmVlTm9kZUl0ZW0uZWRpdE5ld1ZhbHVlID0gdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYW5jZWxFZGl0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZSA9ICcnO1xuICAgIHRoaXMudHJlZU5vZGVJdGVtLmVkaXRQcmV2aW91c1ZhbHVlID0gJyc7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVFZGl0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSA9IHRoaXMudHJlZU5vZGVJdGVtLmxhYmVsO1xuICAgIHRoaXMudHJlZU5vZGVJdGVtLmxhYmVsID0gdGhpcy50cmVlTm9kZUl0ZW0uZWRpdE5ld1ZhbHVlO1xuXG4gICAgY29uc3QgcmV2ZXJ0QWN0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWwgPSB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSA/PyB0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbDtcbiAgICAgIHRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICB0aGlzLnRyZWVOb2RlRWRpdC5lbWl0KHtcbiAgICAgIHJldmVydEFjdGlvbixcbiAgICAgIGl0ZW06IHRoaXMudHJlZU5vZGVJdGVtLFxuICAgICAgbmV3VmFsdWU6IHRoaXMudHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMudHJlZU5vZGVJdGVtLmVkaXRQcmV2aW91c1ZhbHVlID8/ICcnXG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAodHJlZU5vZGVJdGVtKSB7XG48ZGl2XG4gIGNsYXNzPVwic2RjLXRyZWUtbm9kZS1pdGVtXCJcbiAgcm9sZT1cInRyZWVpdGVtXCJcbiAgdGFiaW5kZXg9XCIwXCJcbiAgW2NsYXNzLnNkYy10cmVlLW5vZGUtaXRlbS0tc2VsZWN0ZWRdPVwidHJlZU5vZGVJdGVtLmNoZWNrZWRcIlxuICBbY2xhc3Muc2RjLXRyZWUtbm9kZS1pdGVtLS1zZWxlY3RhYmxlXT1cInRyZWVOb2RlSXRlbS5jaGVja2VkID09PSB0cnVlIHx8IHRyZWVOb2RlSXRlbS5jaGVja2VkID09PSBudWxsXCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJoYXNDaGlsZHJlbiA/IHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkIDogbnVsbFwiXG4gIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJlZU5vZGVJdGVtLmNoZWNrZWQgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmVlTm9kZUl0ZW0ubGFiZWxcIlxuICBbYXR0ci5hcmlhLWxldmVsXT1cImFyaWFMZXZlbFwiXG4gIChrZXlkb3duLmVudGVyKT1cImhhbmRsZVRyZWVOb2RlSXRlbUtleWJvYXJkQWN0aXZhdGUoJGV2ZW50KVwiXG4gIChrZXlkb3duLnNwYWNlKT1cImhhbmRsZVRyZWVOb2RlSXRlbUtleWJvYXJkQWN0aXZhdGUoJGV2ZW50KVwiXG4gIChrZXlkb3duLmFycm93UmlnaHQpPVwiZXhwYW5kTm9kZSgpXCJcbiAgKGtleWRvd24uYXJyb3dMZWZ0KT1cImNvbGxhcHNlTm9kZSgpXCJcbj5cbiAgQGlmIChoYXNDaGlsZHJlbikge1xuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJzZGMtdHJlZS1ub2RlLWl0ZW1fX2Fycm93XCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVFeHBhbmRlZCh0cmVlTm9kZUl0ZW0pXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkID8gY29sbGFwc2VBcmlhTGFiZWwgOiBleHBhbmRBcmlhTGFiZWxcIlxuICA+XG4gICAgQGlmICghdHJlZU5vZGVJdGVtLmlzRXhwYW5kZWQpIHtcbiAgICA8aSBbY2xhc3NdPVwidHJlZU5vZGVJdGVtLmNvbGxhcHNlZEljb24gfHwgJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0J1wiPjwvaT5cbiAgICB9XG4gICAgQGlmICh0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgIDxpIFtjbGFzc109XCJ0cmVlTm9kZUl0ZW0uZXhwYW5kZWRJY29uIHx8ICdmYXMgZmEtY2hldnJvbi1kb3duJ1wiPjwvaT5cbiAgICB9XG4gIDwvYnV0dG9uPlxuICB9XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2RjLXRyZWUtbm9kZS1pdGVtX19jb250ZW50XCJcbiAgICAoY2xpY2spPVwiaGFuZGxlVHJlZU5vZGVJdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlVHJlZU5vZGVJdGVtS2V5Ym9hcmRBY3RpdmF0ZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bi5zcGFjZSk9XCJoYW5kbGVUcmVlTm9kZUl0ZW1LZXlib2FyZEFjdGl2YXRlKCRldmVudClcIlxuICA+XG4gICAgQGlmICh0cmVlTm9kZUl0ZW0uaWNvbiB8fCB0cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtdHJlZS1ub2RlLWl0ZW1fX2ljb25cIj5cbiAgICAgIEBpZiAodHJlZU5vZGVJdGVtLmljb24gJiYgIXRyZWVOb2RlSXRlbS5pc0VkaXRpbmcpIHtcbiAgICAgIDxpIFtjbGFzc109XCJ0cmVlTm9kZUl0ZW0uaWNvblwiPjwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAodHJlZU5vZGVJdGVtLmlzRWRpdGluZykge1xuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtdHJlZS1ub2RlLWl0ZW1fX2VkaXQtaWNvblwiXG4gICAgICAgIChjbGljayk9XCJzYXZlRWRpdCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZWRpdFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgICB9XG5cbiAgICBAaWYgKHNob3dDaGVja2JveCAmJiAhdHJlZU5vZGVJdGVtLmlzRWRpdGluZykge1xuICAgIDxzcGFuIGNsYXNzPVwic2RjLXRyZWUtbm9kZS1pdGVtX19jaGVja2JveFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIFtjaGVja2VkXT1cInRyZWVOb2RlSXRlbS5jaGVja2VkID09PSB0cnVlXCJcbiAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwidHJlZU5vZGVJdGVtLmNoZWNrZWQgPT09IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNoZWNrYm94QXJpYUxhYmVsXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNoZWNrYm94Q2hhbmdlKCRldmVudCwgdHJlZU5vZGVJdGVtKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uQ2hlY2tib3hLZXlkb3duKCRldmVudCwgdHJlZU5vZGVJdGVtKVwiXG4gICAgICAvPlxuICAgIDwvc3Bhbj5cbiAgICB9XG5cbiAgICA8c3BhbiBjbGFzcz1cInNkYy10cmVlLW5vZGUtaXRlbV9fbGFiZWxcIj5cbiAgICAgIEBpZiAodHJlZU5vZGVJdGVtLmlzRWRpdGluZykge1xuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwic2RjLXRyZWUtbm9kZS1pdGVtX19pbnB1dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZWRpdElucHV0QXJpYUxhYmVsXCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUVkaXQoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjYW5jZWxFZGl0KCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgIHt7IHRyZWVOb2RlSXRlbS5sYWJlbCB9fVxuICAgICAgfVxuICAgIDwvc3Bhbj5cblxuICAgIEBpZiAoZWRpdGFibGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLXRyZWUtbm9kZS1pdGVtX19lZGl0YWJsZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImVkaXRCdXR0b25BcmlhTGFiZWxcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUVkaXRpbmcoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGVuY2lsLWFsdFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG59XG5cbkBpZiAoaGFzQ2hpbGRyZW4gJiYgdHJlZU5vZGVJdGVtLmlzRXhwYW5kZWQpIHtcbjxkaXZcbiAgQGZhZGVFeHBhbmRcbiAgY2xhc3M9XCJzZGMtdHJlZS1ub2RlLWl0ZW1fX2NoaWxkcmVuXCJcbiAgQGNoaWxkcmVuQW5pbWF0aW9uXG4+XG4gIEBmb3IgKGNoaWxkIG9mIHRyZWVOb2RlSXRlbS5jaGlsZHJlbjsgdHJhY2sgY2hpbGQuaWQpIHtcbiAgPHNkYy10cmVlLW5vZGUtaXRlbVxuICAgIGNsYXNzPVwic2RjLXRyZWUtbm9kZS1pdGVtX19jaGlsZFwiXG4gICAgW3Nob3dDaGVja2JveF09XCJzaG93Q2hlY2tib3hcIlxuICAgIFt0cmVlTm9kZUl0ZW1dPVwiY2hpbGRcIlxuICAgIFthcmlhTGV2ZWxdPVwiYXJpYUxldmVsICsgMVwiXG4gICAgKHRyZWVOb2RlSXRlbUNsaWNrZWQpPVwidHJlZU5vZGVJdGVtQ2xpY2tlZC5lbWl0KCRldmVudClcIlxuICAgICh0cmVlTm9kZUVkaXQpPVwidHJlZU5vZGVFZGl0LmVtaXQoJGV2ZW50KVwiXG4gICAgKG5vZGVFeHBhbmRlZCk9XCJub2RlRXhwYW5kZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAobm9kZUNvbGxhcHNlZCk9XCJub2RlQ29sbGFwc2VkLmVtaXQoJGV2ZW50KVwiXG4gID48L3NkYy10cmVlLW5vZGUtaXRlbT5cbiAgfVxuPC9kaXY+XG59XG4iXX0=
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { LoadingStateDirective } from '../../core/directives/loading-state.directive';
|
|
4
|
+
import { flattenTree } from '../../core/utils/tree.util';
|
|
5
|
+
import { TreeNodeItemComponent } from './components/tree-node-item/tree-node-item.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class TreeComponent {
|
|
8
|
+
treeData = [];
|
|
9
|
+
loading = false;
|
|
10
|
+
selectionMode = 'single';
|
|
11
|
+
showCheckbox = false;
|
|
12
|
+
allExpanded = false;
|
|
13
|
+
_selected = [];
|
|
14
|
+
get selected() {
|
|
15
|
+
return this._selected;
|
|
16
|
+
}
|
|
17
|
+
set selected(value) {
|
|
18
|
+
this._selected = this.normalizeTreeSelection(value);
|
|
19
|
+
}
|
|
20
|
+
selectedChange = new EventEmitter();
|
|
21
|
+
treeNodeItemClicked = new EventEmitter();
|
|
22
|
+
treeNodeEdit = new EventEmitter();
|
|
23
|
+
nodeExpanded = new EventEmitter();
|
|
24
|
+
nodeCollapsed = new EventEmitter();
|
|
25
|
+
ngOnChanges(changes) {
|
|
26
|
+
if (changes['selected'] && this.selected.length) {
|
|
27
|
+
this.syncSelectedChanges();
|
|
28
|
+
}
|
|
29
|
+
if (changes['treeData'] && this.treeData.length && this.allExpanded) {
|
|
30
|
+
this.expandAll();
|
|
31
|
+
}
|
|
32
|
+
if (changes['allExpanded'] && !changes['allExpanded'].firstChange) {
|
|
33
|
+
if (this.allExpanded) {
|
|
34
|
+
this.expandAll();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this.collapseAll();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
onTreeNodeItemClicked({ item }) {
|
|
42
|
+
const parsedItem = this.parseInternalTreeNodeItem(item);
|
|
43
|
+
this.treeNodeItemClicked.emit(parsedItem);
|
|
44
|
+
this.toggleChecked(item);
|
|
45
|
+
}
|
|
46
|
+
onTreeNodeEdit(payload) {
|
|
47
|
+
this.treeNodeEdit.emit({
|
|
48
|
+
...payload,
|
|
49
|
+
item: this.parseInternalTreeNodeItem(payload.item)
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
onNodeExpanded(item) {
|
|
53
|
+
this.nodeExpanded.emit(this.parseInternalTreeNodeItem(item));
|
|
54
|
+
}
|
|
55
|
+
onNodeCollapsed(item) {
|
|
56
|
+
this.nodeCollapsed.emit(this.parseInternalTreeNodeItem(item));
|
|
57
|
+
}
|
|
58
|
+
toggleChecked(treeNodeItem) {
|
|
59
|
+
if (!this.multiple) {
|
|
60
|
+
flattenTree(this.treeData).forEach((item) => {
|
|
61
|
+
item.checked = false;
|
|
62
|
+
});
|
|
63
|
+
treeNodeItem.checked = true;
|
|
64
|
+
this.selected = [treeNodeItem];
|
|
65
|
+
this.emitSelection();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
treeNodeItem.checked = treeNodeItem.checked !== true;
|
|
69
|
+
this.syncChildrenCheckedState(treeNodeItem);
|
|
70
|
+
this.emitSelection();
|
|
71
|
+
}
|
|
72
|
+
syncChildrenCheckedState(selectedTreeNode) {
|
|
73
|
+
const parentChecked = selectedTreeNode.checked;
|
|
74
|
+
if (selectedTreeNode.children) {
|
|
75
|
+
selectedTreeNode.children.forEach((item) => {
|
|
76
|
+
item.checked = parentChecked;
|
|
77
|
+
flattenTree(item.children ?? []).forEach((child) => {
|
|
78
|
+
child.checked = parentChecked;
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// no children to update
|
|
84
|
+
}
|
|
85
|
+
const updateCheckedStateRecursively = (node) => {
|
|
86
|
+
if (!node.children?.length) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
node.children.forEach(updateCheckedStateRecursively);
|
|
90
|
+
const allChildrenChecked = node.children.every((child) => child.checked === true);
|
|
91
|
+
const someChildrenChecked = node.children.some((child) => child.checked === true || child.checked === null);
|
|
92
|
+
const allChildrenUnchecked = node.children.every((child) => child.checked === false || child.checked === undefined);
|
|
93
|
+
if (allChildrenChecked) {
|
|
94
|
+
node.checked = true;
|
|
95
|
+
}
|
|
96
|
+
else if (someChildrenChecked) {
|
|
97
|
+
node.checked = null;
|
|
98
|
+
}
|
|
99
|
+
else if (allChildrenUnchecked) {
|
|
100
|
+
node.checked = false;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
node.checked = false;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
this.treeData.forEach(updateCheckedStateRecursively);
|
|
107
|
+
}
|
|
108
|
+
emitSelection() {
|
|
109
|
+
const selected = this.selectedElements;
|
|
110
|
+
this.selected = [...selected];
|
|
111
|
+
this.selectedChange.emit(this.multiple ? selected : selected[0]);
|
|
112
|
+
}
|
|
113
|
+
syncSelectedChanges() {
|
|
114
|
+
const flattened = flattenTree(this.treeData);
|
|
115
|
+
flattened.forEach((node) => {
|
|
116
|
+
node.checked = false;
|
|
117
|
+
});
|
|
118
|
+
this.selected.forEach((selectedItem) => {
|
|
119
|
+
const item = flattened.find((node) => node.id === selectedItem.id);
|
|
120
|
+
if (item) {
|
|
121
|
+
item.checked = true;
|
|
122
|
+
if (item.children && this.multiple) {
|
|
123
|
+
item.children.forEach((child) => {
|
|
124
|
+
child.checked = true;
|
|
125
|
+
flattenTree(child.children ?? []).forEach((descendant) => {
|
|
126
|
+
descendant.checked = true;
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
if (this.multiple) {
|
|
133
|
+
this.treeData.forEach((node) => this.syncChildrenCheckedState(node));
|
|
134
|
+
}
|
|
135
|
+
this.emitSelection();
|
|
136
|
+
}
|
|
137
|
+
collapseAll() {
|
|
138
|
+
flattenTree(this.treeData).forEach((item) => {
|
|
139
|
+
item.isExpanded = false;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
expandAll() {
|
|
143
|
+
flattenTree(this.treeData).forEach((item) => {
|
|
144
|
+
item.isExpanded = true;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
normalizeTreeSelection(value) {
|
|
148
|
+
if (!value) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
return Array.isArray(value) ? value : [value];
|
|
152
|
+
}
|
|
153
|
+
parseInternalTreeNodeItem(internalTreeNodeItem) {
|
|
154
|
+
return {
|
|
155
|
+
id: internalTreeNodeItem.id,
|
|
156
|
+
label: internalTreeNodeItem.label,
|
|
157
|
+
icon: internalTreeNodeItem.icon,
|
|
158
|
+
checked: internalTreeNodeItem.checked,
|
|
159
|
+
isExpanded: internalTreeNodeItem.isExpanded,
|
|
160
|
+
payload: internalTreeNodeItem.payload,
|
|
161
|
+
editable: internalTreeNodeItem.editable,
|
|
162
|
+
leaf: internalTreeNodeItem.leaf,
|
|
163
|
+
expandedIcon: internalTreeNodeItem.expandedIcon,
|
|
164
|
+
collapsedIcon: internalTreeNodeItem.collapsedIcon,
|
|
165
|
+
children: internalTreeNodeItem.children?.map((child) => this.parseInternalTreeNodeItem(child))
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
get selectedElements() {
|
|
169
|
+
return flattenTree(this.treeData).filter((item) => {
|
|
170
|
+
if (item.checked !== true) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
if (!this.multiple) {
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
return item.leaf === true || !item.children?.length;
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
get multiple() {
|
|
180
|
+
return this.selectionMode === 'multiple';
|
|
181
|
+
}
|
|
182
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TreeComponent, isStandalone: true, selector: "sdc-tree", inputs: { treeData: "treeData", loading: "loading", selectionMode: "selectionMode", showCheckbox: "showCheckbox", allExpanded: "allExpanded", selected: "selected" }, outputs: { selectedChange: "selectedChange", treeNodeItemClicked: "treeNodeItemClicked", treeNodeEdit: "treeNodeEdit", nodeExpanded: "nodeExpanded", nodeCollapsed: "nodeCollapsed" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sdc-tree\"\n *sdcLoadingState=\"loading\"\n>\n @for (item of treeData; track item.id) {\n <sdc-tree-node-item\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"item\"\n (nodeExpanded)=\"onNodeExpanded($event)\"\n (nodeCollapsed)=\"onNodeCollapsed($event)\"\n (treeNodeEdit)=\"onTreeNodeEdit($event)\"\n (treeNodeItemClicked)=\"onTreeNodeItemClicked($event)\"\n ></sdc-tree-node-item>\n }\n</div>\n", styles: [".sdc-tree{display:flex;flex-direction:column;gap:.3125rem;margin:.9375rem;padding:.9375rem;border:1px solid #ddd;border-radius:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LoadingStateDirective, selector: "[sdcLoadingState]", inputs: ["sdcLoadingState"] }, { kind: "component", type: TreeNodeItemComponent, selector: "sdc-tree-node-item", inputs: ["ariaLevel", "showCheckbox", "treeNodeItem"], outputs: ["treeNodeItemClicked", "treeNodeEdit", "nodeExpanded", "nodeCollapsed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
184
|
+
}
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeComponent, decorators: [{
|
|
186
|
+
type: Component,
|
|
187
|
+
args: [{ selector: 'sdc-tree', standalone: true, imports: [CommonModule, LoadingStateDirective, TreeNodeItemComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"sdc-tree\"\n *sdcLoadingState=\"loading\"\n>\n @for (item of treeData; track item.id) {\n <sdc-tree-node-item\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"item\"\n (nodeExpanded)=\"onNodeExpanded($event)\"\n (nodeCollapsed)=\"onNodeCollapsed($event)\"\n (treeNodeEdit)=\"onTreeNodeEdit($event)\"\n (treeNodeItemClicked)=\"onTreeNodeItemClicked($event)\"\n ></sdc-tree-node-item>\n }\n</div>\n", styles: [".sdc-tree{display:flex;flex-direction:column;gap:.3125rem;margin:.9375rem;padding:.9375rem;border:1px solid #ddd;border-radius:.25rem}\n"] }]
|
|
188
|
+
}], propDecorators: { treeData: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], loading: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], selectionMode: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], showCheckbox: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], allExpanded: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], selected: [{
|
|
199
|
+
type: Input
|
|
200
|
+
}], selectedChange: [{
|
|
201
|
+
type: Output
|
|
202
|
+
}], treeNodeItemClicked: [{
|
|
203
|
+
type: Output
|
|
204
|
+
}], treeNodeEdit: [{
|
|
205
|
+
type: Output
|
|
206
|
+
}], nodeExpanded: [{
|
|
207
|
+
type: Output
|
|
208
|
+
}], nodeCollapsed: [{
|
|
209
|
+
type: Output
|
|
210
|
+
}] } });
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RyZWUvdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RyZWUvdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBT3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFXN0YsTUFBTSxPQUFPLGFBQWE7SUFDZixRQUFRLEdBQW1CLEVBQUUsQ0FBQztJQUM5QixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGFBQWEsR0FBc0IsUUFBUSxDQUFDO0lBQzVDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUVyQixTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUV2QyxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWdEO1FBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFUyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWlDLENBQUM7SUFDbkUsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7SUFDdkQsWUFB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QUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBWSxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxVQUFVLENBQUM7SUFDM0MsQ0FBQzt3R0F0TlUsYUFBYTs0RkFBYixhQUFhLHNiQy9CMUIseWJBZUEsaU1EVVksWUFBWSwrQkFBRSxxQkFBcUIsMkZBQUUscUJBQXFCOzs0RkFNekQsYUFBYTtrQkFUekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDLG1CQUdwRCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxRQUFROzhCQUdoQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFLRixRQUFRO3NCQURYLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMb2FkaW5nU3RhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9jb3JlL2RpcmVjdGl2ZXMvbG9hZGluZy1zdGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHR5cGUge1xuICBJbnRlcm5hbFRyZWVOb2RlSXRlbSxcbiAgVHJlZU5vZGVFZGl0LFxuICBUcmVlTm9kZUl0ZW0sXG4gIFRyZWVTZWxlY3Rpb25Nb2RlXG59IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvdHJlZS50eXBlJztcbmltcG9ydCB7IGZsYXR0ZW5UcmVlIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy90cmVlLnV0aWwnO1xuaW1wb3J0IHsgVHJlZU5vZGVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUtbm9kZS1pdGVtL3RyZWUtbm9kZS1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy10cmVlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9hZGluZ1N0YXRlRGlyZWN0aXZlLCBUcmVlTm9kZUl0ZW1Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB0cmVlRGF0YTogVHJlZU5vZGVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBUcmVlU2VsZWN0aW9uTW9kZSA9ICdzaW5nbGUnO1xuICBASW5wdXQoKSBzaG93Q2hlY2tib3ggPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsRXhwYW5kZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9zZWxlY3RlZDogVHJlZU5vZGVJdGVtW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWQoKTogVHJlZU5vZGVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IFRyZWVOb2RlSXRlbVtdIHwgVHJlZU5vZGVJdGVtIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLm5vcm1hbGl6ZVRyZWVTZWxlY3Rpb24odmFsdWUpO1xuICB9XG5cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUl0ZW1bXSB8IFRyZWVOb2RlSXRlbT4oKTtcbiAgQE91dHB1dCgpIHRyZWVOb2RlSXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRyZWVOb2RlSXRlbT4oKTtcbiAgQE91dHB1dCgpIHRyZWVOb2RlRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8VHJlZU5vZGVFZGl0PigpO1xuICBAT3V0cHV0KCkgbm9kZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBub2RlQ29sbGFwc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUl0ZW0+KCk7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZCddICYmIHRoaXMuc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN5bmNTZWxlY3RlZENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sndHJlZURhdGEnXSAmJiB0aGlzLnRyZWVEYXRhLmxlbmd0aCAmJiB0aGlzLmFsbEV4cGFuZGVkKSB7XG4gICAgICB0aGlzLmV4cGFuZEFsbCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydhbGxFeHBhbmRlZCddICYmICFjaGFuZ2VzWydhbGxFeHBhbmRlZCddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICBpZiAodGhpcy5hbGxFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLmV4cGFuZEFsbCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZUFsbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvblRyZWVOb2RlSXRlbUNsaWNrZWQoe1xuICAgIGl0ZW1cbiAgfToge1xuICAgIGl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgcGFyc2VkSXRlbSA9IHRoaXMucGFyc2VJbnRlcm5hbFRyZWVOb2RlSXRlbShpdGVtKTtcbiAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdChwYXJzZWRJdGVtKTtcbiAgICB0aGlzLnRvZ2dsZUNoZWNrZWQoaXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25UcmVlTm9kZUVkaXQocGF5bG9hZDogVHJlZU5vZGVFZGl0KTogdm9pZCB7XG4gICAgdGhpcy50cmVlTm9kZUVkaXQuZW1pdCh7XG4gICAgICAuLi5wYXlsb2FkLFxuICAgICAgaXRlbTogdGhpcy5wYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKHBheWxvYWQuaXRlbSlcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk5vZGVFeHBhbmRlZChpdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSk6IHZvaWQge1xuICAgIHRoaXMubm9kZUV4cGFuZGVkLmVtaXQodGhpcy5wYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKGl0ZW0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbk5vZGVDb2xsYXBzZWQoaXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLm5vZGVDb2xsYXBzZWQuZW1pdCh0aGlzLnBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0oaXRlbSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDaGVja2VkKHRyZWVOb2RlSXRlbTogVHJlZU5vZGVJdGVtKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICBmbGF0dGVuVHJlZSh0aGlzLnRyZWVEYXRhKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0cmVlTm9kZUl0ZW0uY2hlY2tlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gW3RyZWVOb2RlSXRlbV07XG4gICAgICB0aGlzLmVtaXRTZWxlY3Rpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cmVlTm9kZUl0ZW0uY2hlY2tlZCA9IHRyZWVOb2RlSXRlbS5jaGVja2VkICE9PSB0cnVlO1xuICAgIHRoaXMuc3luY0NoaWxkcmVuQ2hlY2tlZFN0YXRlKHRyZWVOb2RlSXRlbSk7XG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDaGlsZHJlbkNoZWNrZWRTdGF0ZShzZWxlY3RlZFRyZWVOb2RlOiBUcmVlTm9kZUl0ZW0pOiB2b2lkIHtcbiAgICBjb25zdCBwYXJlbnRDaGVja2VkID0gc2VsZWN0ZWRUcmVlTm9kZS5jaGVja2VkO1xuXG4gICAgaWYgKHNlbGVjdGVkVHJlZU5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHNlbGVjdGVkVHJlZU5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmNoZWNrZWQgPSBwYXJlbnRDaGVja2VkO1xuICAgICAgICBmbGF0dGVuVHJlZShpdGVtLmNoaWxkcmVuID8/IFtdKS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgIGNoaWxkLmNoZWNrZWQgPSBwYXJlbnRDaGVja2VkO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBubyBjaGlsZHJlbiB0byB1cGRhdGVcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVDaGVja2VkU3RhdGVSZWN1cnNpdmVseSA9IChub2RlOiBUcmVlTm9kZUl0ZW0pOiB2b2lkID0+IHtcbiAgICAgIGlmICghbm9kZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKHVwZGF0ZUNoZWNrZWRTdGF0ZVJlY3Vyc2l2ZWx5KTtcblxuICAgICAgY29uc3QgYWxsQ2hpbGRyZW5DaGVja2VkID0gbm9kZS5jaGlsZHJlbi5ldmVyeSgoY2hpbGQpID0+IGNoaWxkLmNoZWNrZWQgPT09IHRydWUpO1xuICAgICAgY29uc3Qgc29tZUNoaWxkcmVuQ2hlY2tlZCA9IG5vZGUuY2hpbGRyZW4uc29tZShcbiAgICAgICAgKGNoaWxkKSA9PiBjaGlsZC5jaGVja2VkID09PSB0cnVlIHx8IGNoaWxkLmNoZWNrZWQgPT09IG51bGxcbiAgICAgICk7XG4gICAgICBjb25zdCBhbGxDaGlsZHJlblVuY2hlY2tlZCA9IG5vZGUuY2hpbGRyZW4uZXZlcnkoXG4gICAgICAgIChjaGlsZCkgPT4gY2hpbGQuY2hlY2tlZCA9PT0gZmFsc2UgfHwgY2hpbGQuY2hlY2tlZCA9PT0gdW5kZWZpbmVkXG4gICAgICApO1xuXG4gICAgICBpZiAoYWxsQ2hpbGRyZW5DaGVja2VkKSB7XG4gICAgICAgIG5vZGUuY2hlY2tlZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHNvbWVDaGlsZHJlbkNoZWNrZWQpIHtcbiAgICAgICAgbm9kZS5jaGVja2VkID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoYWxsQ2hpbGRyZW5VbmNoZWNrZWQpIHtcbiAgICAgICAgbm9kZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy50cmVlRGF0YS5mb3JFYWNoKHVwZGF0ZUNoZWNrZWRTdGF0ZVJlY3Vyc2l2ZWx5KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50cztcbiAgICB0aGlzLnNlbGVjdGVkID0gWy4uLnNlbGVjdGVkXTtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5tdWx0aXBsZSA/IHNlbGVjdGVkIDogc2VsZWN0ZWRbMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jU2VsZWN0ZWRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZsYXR0ZW5lZCA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpO1xuICAgIGZsYXR0ZW5lZC5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBub2RlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWQuZm9yRWFjaCgoc2VsZWN0ZWRJdGVtKSA9PiB7XG4gICAgICBjb25zdCBpdGVtID0gZmxhdHRlbmVkLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IHNlbGVjdGVkSXRlbS5pZCk7XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIGl0ZW0uY2hlY2tlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGNoaWxkLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgZmxhdHRlblRyZWUoY2hpbGQuY2hpbGRyZW4gPz8gW10pLmZvckVhY2goKGRlc2NlbmRhbnQpID0+IHtcbiAgICAgICAgICAgICAgZGVzY2VuZGFudC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy50cmVlRGF0YS5mb3JFYWNoKChub2RlKSA9PiB0aGlzLnN5bmNDaGlsZHJlbkNoZWNrZWRTdGF0ZShub2RlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlQWxsKCk6IHZvaWQge1xuICAgIGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmRBbGwoKTogdm9pZCB7XG4gICAgZmxhdHRlblRyZWUodGhpcy50cmVlRGF0YSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVHJlZVNlbGVjdGlvbih2YWx1ZTogVHJlZU5vZGVJdGVtW10gfCBUcmVlTm9kZUl0ZW0gfCB1bmRlZmluZWQpOiBUcmVlTm9kZUl0ZW1bXSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gIH1cblxuICBwcml2YXRlIHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW08VCA9IHVua25vd24+KFxuICAgIGludGVybmFsVHJlZU5vZGVJdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbTxUPlxuICApOiBUcmVlTm9kZUl0ZW08VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogaW50ZXJuYWxUcmVlTm9kZUl0ZW0uaWQsXG4gICAgICBsYWJlbDogaW50ZXJuYWxUcmVlTm9kZUl0ZW0ubGFiZWwsXG4gICAgICBpY29uOiBpbnRlcm5hbFRyZWVOb2RlSXRlbS5pY29uLFxuICAgICAgY2hlY2tlZDogaW50ZXJuYWxUcmVlTm9kZUl0ZW0uY2hlY2tlZCxcbiAgICAgIGlzRXhwYW5kZWQ6IGludGVybmFsVHJlZU5vZGVJdGVtLmlzRXhwYW5kZWQsXG4gICAgICBwYXlsb2FkOiBpbnRlcm5hbFRyZWVOb2RlSXRlbS5wYXlsb2FkLFxuICAgICAgZWRpdGFibGU6IGludGVybmFsVHJlZU5vZGVJdGVtLmVkaXRhYmxlLFxuICAgICAgbGVhZjogaW50ZXJuYWxUcmVlTm9kZUl0ZW0ubGVhZixcbiAgICAgIGV4cGFuZGVkSWNvbjogaW50ZXJuYWxUcmVlTm9kZUl0ZW0uZXhwYW5kZWRJY29uLFxuICAgICAgY29sbGFwc2VkSWNvbjogaW50ZXJuYWxUcmVlTm9kZUl0ZW0uY29sbGFwc2VkSWNvbixcbiAgICAgIGNoaWxkcmVuOiBpbnRlcm5hbFRyZWVOb2RlSXRlbS5jaGlsZHJlbj8ubWFwKChjaGlsZCkgPT4gdGhpcy5wYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKGNoaWxkKSlcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc2VsZWN0ZWRFbGVtZW50cygpOiBUcmVlTm9kZUl0ZW1bXSB7XG4gICAgcmV0dXJuIGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uY2hlY2tlZCAhPT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW0ubGVhZiA9PT0gdHJ1ZSB8fCAhaXRlbS5jaGlsZHJlbj8ubGVuZ3RoO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJztcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNkYy10cmVlXCJcbiAgKnNkY0xvYWRpbmdTdGF0ZT1cImxvYWRpbmdcIlxuPlxuICBAZm9yIChpdGVtIG9mIHRyZWVEYXRhOyB0cmFjayBpdGVtLmlkKSB7XG4gIDxzZGMtdHJlZS1ub2RlLWl0ZW1cbiAgICBbc2hvd0NoZWNrYm94XT1cInNob3dDaGVja2JveFwiXG4gICAgW3RyZWVOb2RlSXRlbV09XCJpdGVtXCJcbiAgICAobm9kZUV4cGFuZGVkKT1cIm9uTm9kZUV4cGFuZGVkKCRldmVudClcIlxuICAgIChub2RlQ29sbGFwc2VkKT1cIm9uTm9kZUNvbGxhcHNlZCgkZXZlbnQpXCJcbiAgICAodHJlZU5vZGVFZGl0KT1cIm9uVHJlZU5vZGVFZGl0KCRldmVudClcIlxuICAgICh0cmVlTm9kZUl0ZW1DbGlja2VkKT1cIm9uVHJlZU5vZGVJdGVtQ2xpY2tlZCgkZXZlbnQpXCJcbiAgPjwvc2RjLXRyZWUtbm9kZS1pdGVtPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class VisualSqlEditorFieldModalComponent {
|
|
4
|
+
visible = false;
|
|
5
|
+
step = "select";
|
|
6
|
+
drafts = [];
|
|
7
|
+
functionEditColumn = null;
|
|
8
|
+
functionDraft = { functionName: "" };
|
|
9
|
+
visibleChange = new EventEmitter();
|
|
10
|
+
closed = new EventEmitter();
|
|
11
|
+
stepChange = new EventEmitter();
|
|
12
|
+
draftsChange = new EventEmitter();
|
|
13
|
+
saved = new EventEmitter();
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorFieldModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: VisualSqlEditorFieldModalComponent, isStandalone: true, selector: "sdc-vse-field-modal", inputs: { visible: "visible", step: "step", drafts: "drafts", functionEditColumn: "functionEditColumn", functionDraft: "functionDraft" }, outputs: { visibleChange: "visibleChange", closed: "closed", stepChange: "stepChange", draftsChange: "draftsChange", saved: "saved" }, ngImport: i0, template: "<ng-container><!-- field modal stub --></ng-container>\n", styles: [""] });
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorFieldModalComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: "sdc-vse-field-modal", standalone: true, imports: [], template: "<ng-container><!-- field modal stub --></ng-container>\n" }]
|
|
20
|
+
}], propDecorators: { visible: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], step: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], drafts: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], functionEditColumn: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], functionDraft: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], visibleChange: [{
|
|
31
|
+
type: Output
|
|
32
|
+
}], closed: [{
|
|
33
|
+
type: Output
|
|
34
|
+
}], stepChange: [{
|
|
35
|
+
type: Output
|
|
36
|
+
}], draftsChange: [{
|
|
37
|
+
type: Output
|
|
38
|
+
}], saved: [{
|
|
39
|
+
type: Output
|
|
40
|
+
}] } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3ItZmllbGQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy92aXN1YWwtc3FsLWVkaXRvci9jb21wb25lbnRzL3Zpc3VhbC1zcWwtZWRpdG9yLWZpZWxkLW1vZGFsL3Zpc3VhbC1zcWwtZWRpdG9yLWZpZWxkLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvY29tcG9uZW50cy92aXN1YWwtc3FsLWVkaXRvci1maWVsZC1tb2RhbC92aXN1YWwtc3FsLWVkaXRvci1maWVsZC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVd2RSxNQUFNLE9BQU8sa0NBQWtDO0lBQ2xDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsSUFBSSxHQUFtQixRQUFRLENBQUM7SUFDaEMsTUFBTSxHQUE4QixFQUFFLENBQUM7SUFDdkMsa0JBQWtCLEdBQWtCLElBQUksQ0FBQztJQUN6QyxhQUFhLEdBQW9DLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRTVELGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQzVDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2xDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUNoRCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFDN0QsS0FBSyxHQUFHLElBQUksWUFBWSxFQUE2QixDQUFDO3dHQVhoRSxrQ0FBa0M7NEZBQWxDLGtDQUFrQyxnV0NYL0MsMERBQ0E7OzRGRFVhLGtDQUFrQztrQkFQOUMsU0FBUzsrQkFDSSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLEVBQUU7OEJBS0YsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRWEsYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxNQUFNO3NCQUF4QixNQUFNO2dCQUNZLFVBQVU7c0JBQTVCLE1BQU07Z0JBQ1ksWUFBWTtzQkFBOUIsTUFBTTtnQkFDWSxLQUFLO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBEeW5hbWljVmlld0J1aWxkZXJGaWVsZCwgRHluYW1pY1ZpZXdCdWlsZGVyRmllbGRGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL3R5cGVzL2R5bmFtaWMtdmlldy1idWlsZGVyLnR5cGVcIjtcbmltcG9ydCB0eXBlIHsgRmllbGRNb2RhbFN0ZXAgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdmlzdWFsLXNxbC1lZGl0b3IudHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwic2RjLXZzZS1maWVsZC1tb2RhbFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW10sXG4gICAgdGVtcGxhdGVVcmw6IFwiLi92aXN1YWwtc3FsLWVkaXRvci1maWVsZC1tb2RhbC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi92aXN1YWwtc3FsLWVkaXRvci1maWVsZC1tb2RhbC5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzdWFsU3FsRWRpdG9yRmllbGRNb2RhbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHN0ZXA6IEZpZWxkTW9kYWxTdGVwID0gXCJzZWxlY3RcIjtcbiAgICBASW5wdXQoKSBkcmFmdHM6IER5bmFtaWNWaWV3QnVpbGRlckZpZWxkW10gPSBbXTtcbiAgICBASW5wdXQoKSBmdW5jdGlvbkVkaXRDb2x1bW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGZ1bmN0aW9uRHJhZnQ6IER5bmFtaWNWaWV3QnVpbGRlckZpZWxkRnVuY3Rpb24gPSB7IGZ1bmN0aW9uTmFtZTogXCJcIiB9O1xuXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmllbGRNb2RhbFN0ZXA+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGRyYWZ0c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY1ZpZXdCdWlsZGVyRmllbGRbXT4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNWaWV3QnVpbGRlckZpZWxkW10+KCk7XG59XG4iLCI8bmctY29udGFpbmVyPjwhLS0gZmllbGQgbW9kYWwgc3R1YiAtLT48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class VisualSqlEditorFilterModalComponent {
|
|
4
|
+
visible = false;
|
|
5
|
+
editIndex = null;
|
|
6
|
+
step = "select";
|
|
7
|
+
mode = "condition";
|
|
8
|
+
draft = {};
|
|
9
|
+
visibleChange = new EventEmitter();
|
|
10
|
+
closed = new EventEmitter();
|
|
11
|
+
stepChange = new EventEmitter();
|
|
12
|
+
saved = new EventEmitter();
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorFilterModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: VisualSqlEditorFilterModalComponent, isStandalone: true, selector: "sdc-vse-filter-modal", inputs: { visible: "visible", editIndex: "editIndex", step: "step", mode: "mode", draft: "draft" }, outputs: { visibleChange: "visibleChange", closed: "closed", stepChange: "stepChange", saved: "saved" }, ngImport: i0, template: "<ng-container><!-- filter modal stub --></ng-container>\n", styles: [""] });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorFilterModalComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: "sdc-vse-filter-modal", standalone: true, imports: [], template: "<ng-container><!-- filter modal stub --></ng-container>\n" }]
|
|
19
|
+
}], propDecorators: { visible: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], editIndex: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], step: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], mode: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], draft: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], visibleChange: [{
|
|
30
|
+
type: Output
|
|
31
|
+
}], closed: [{
|
|
32
|
+
type: Output
|
|
33
|
+
}], stepChange: [{
|
|
34
|
+
type: Output
|
|
35
|
+
}], saved: [{
|
|
36
|
+
type: Output
|
|
37
|
+
}] } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3ItZmlsdGVyLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvY29tcG9uZW50cy92aXN1YWwtc3FsLWVkaXRvci1maWx0ZXItbW9kYWwvdmlzdWFsLXNxbC1lZGl0b3ItZmlsdGVyLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvY29tcG9uZW50cy92aXN1YWwtc3FsLWVkaXRvci1maWx0ZXItbW9kYWwvdmlzdWFsLXNxbC1lZGl0b3ItZmlsdGVyLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBV3ZFLE1BQU0sT0FBTyxtQ0FBbUM7SUFDbkMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixTQUFTLEdBQWtCLElBQUksQ0FBQztJQUNoQyxJQUFJLEdBQW9CLFFBQVEsQ0FBQztJQUNqQyxJQUFJLEdBQW9CLFdBQVcsQ0FBQztJQUNwQyxLQUFLLEdBQXNDLEVBQUUsQ0FBQztJQUVwQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUM1QyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNsQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFDakQsS0FBSyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO3dHQVYvRCxtQ0FBbUM7NEZBQW5DLG1DQUFtQyw2UkNYaEQsMkRBQ0E7OzRGRFVhLG1DQUFtQztrQkFQL0MsU0FBUzsrQkFDSSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLEVBQUU7OEJBS0YsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWEsYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxNQUFNO3NCQUF4QixNQUFNO2dCQUNZLFVBQVU7c0JBQTVCLE1BQU07Z0JBQ1ksS0FBSztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgRHluYW1pY1ZpZXdCdWlsZGVyRmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvcmUvdHlwZXMvZHluYW1pYy12aWV3LWJ1aWxkZXIudHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJNb2RhbE1vZGUsIEZpbHRlck1vZGFsU3RlcCB9IGZyb20gXCIuLi8uLi90eXBlcy92aXN1YWwtc3FsLWVkaXRvci50eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzZGMtdnNlLWZpbHRlci1tb2RhbFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW10sXG4gICAgdGVtcGxhdGVVcmw6IFwiLi92aXN1YWwtc3FsLWVkaXRvci1maWx0ZXItbW9kYWwuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vdmlzdWFsLXNxbC1lZGl0b3ItZmlsdGVyLW1vZGFsLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBWaXN1YWxTcWxFZGl0b3JGaWx0ZXJNb2RhbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdmlzaWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGVkaXRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgc3RlcDogRmlsdGVyTW9kYWxTdGVwID0gXCJzZWxlY3RcIjtcbiAgICBASW5wdXQoKSBtb2RlOiBGaWx0ZXJNb2RhbE1vZGUgPSBcImNvbmRpdGlvblwiO1xuICAgIEBJbnB1dCgpIGRyYWZ0OiBQYXJ0aWFsPER5bmFtaWNWaWV3QnVpbGRlckZpbHRlcj4gPSB7fTtcblxuICAgIEBPdXRwdXQoKSByZWFkb25seSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlck1vZGFsU3RlcD4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNWaWV3QnVpbGRlckZpbHRlcj4oKTtcbn1cbiIsIjxuZy1jb250YWluZXI+PCEtLSBmaWx0ZXIgbW9kYWwgc3R1YiAtLT48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class VisualSqlEditorJoinModalComponent {
|
|
4
|
+
visible = false;
|
|
5
|
+
editIndex = null;
|
|
6
|
+
draft = { sourceColumn: "", targetColumn: "", operator: "" };
|
|
7
|
+
visibleChange = new EventEmitter();
|
|
8
|
+
closed = new EventEmitter();
|
|
9
|
+
saved = new EventEmitter();
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorJoinModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: VisualSqlEditorJoinModalComponent, isStandalone: true, selector: "sdc-vse-join-modal", inputs: { visible: "visible", editIndex: "editIndex", draft: "draft" }, outputs: { visibleChange: "visibleChange", closed: "closed", saved: "saved" }, ngImport: i0, template: "<ng-container><!-- join modal stub --></ng-container>\n", styles: [""] });
|
|
12
|
+
}
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: VisualSqlEditorJoinModalComponent, decorators: [{
|
|
14
|
+
type: Component,
|
|
15
|
+
args: [{ selector: "sdc-vse-join-modal", standalone: true, imports: [], template: "<ng-container><!-- join modal stub --></ng-container>\n" }]
|
|
16
|
+
}], propDecorators: { visible: [{
|
|
17
|
+
type: Input
|
|
18
|
+
}], editIndex: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}], draft: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], visibleChange: [{
|
|
23
|
+
type: Output
|
|
24
|
+
}], closed: [{
|
|
25
|
+
type: Output
|
|
26
|
+
}], saved: [{
|
|
27
|
+
type: Output
|
|
28
|
+
}] } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLXNxbC1lZGl0b3Itam9pbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Zpc3VhbC1zcWwtZWRpdG9yL2NvbXBvbmVudHMvdmlzdWFsLXNxbC1lZGl0b3Itam9pbi1tb2RhbC92aXN1YWwtc3FsLWVkaXRvci1qb2luLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdmlzdWFsLXNxbC1lZGl0b3IvY29tcG9uZW50cy92aXN1YWwtc3FsLWVkaXRvci1qb2luLW1vZGFsL3Zpc3VhbC1zcWwtZWRpdG9yLWpvaW4tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVdkUsTUFBTSxPQUFPLGlDQUFpQztJQUNqQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQ2hDLEtBQUssR0FBMkIsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRTNFLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQzVDLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2xDLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQzt3R0FQN0QsaUNBQWlDOzRGQUFqQyxpQ0FBaUMscU9DVjlDLHlEQUNBOzs0RkRTYSxpQ0FBaUM7a0JBUDdDLFNBQVM7K0JBQ0ksb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxFQUFFOzhCQUtGLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFYSxhQUFhO3NCQUEvQixNQUFNO2dCQUNZLE1BQU07c0JBQXhCLE1BQU07Z0JBQ1ksS0FBSztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgRHluYW1pY1ZpZXdCdWlsZGVySm9pbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9jb3JlL3R5cGVzL2R5bmFtaWMtdmlldy1idWlsZGVyLnR5cGVcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwic2RjLXZzZS1qb2luLW1vZGFsXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXSxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3Zpc3VhbC1zcWwtZWRpdG9yLWpvaW4tbW9kYWwuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vdmlzdWFsLXNxbC1lZGl0b3Itam9pbi1tb2RhbC5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzdWFsU3FsRWRpdG9ySm9pbk1vZGFsQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSB2aXNpYmxlID0gZmFsc2U7XG4gICAgQElucHV0KCkgZWRpdEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBkcmFmdDogRHluYW1pY1ZpZXdCdWlsZGVySm9pbiA9IHsgc291cmNlQ29sdW1uOiBcIlwiLCB0YXJnZXRDb2x1bW46IFwiXCIsIG9wZXJhdG9yOiBcIlwiIH07XG5cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBzYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY1ZpZXdCdWlsZGVySm9pbj4oKTtcbn1cbiIsIjxuZy1jb250YWluZXI+PCEtLSBqb2luIG1vZGFsIHN0dWIgLS0+PC9uZy1jb250YWluZXI+XG4iXX0=
|